{"version":3,"sources":["jsdelivr-header.js","/npm/react-card-editor@0.0.10/dist/card-editor.js"],"names":[],"mappings":"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G,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,KAAM,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,KAAM,GAAI,MAAO,GAAI,KAAM,GAAI,GAAI,EAAG,IAAK,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,EAAG,EAAG,IAAK,GAAI,GAA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,eAAgB,OAAQ,uBAAwB,OAAQ,gBAE5D,MAAO,IAAM,EAAe,UAAY,EAAe,yDACvD,KAAM,sBACP,CACC,MAAO,uBACP,MAAO,cACR,CACC,MAAO,mBACP,MAAO,qvDACR,CACC,MAAO,uBACP,MAAO,+lBACR,CACC,MAAO,mBACP,MAAO,y2DACR,CACC,MAAO,aACP,MAAO,GACR,CACC,MAAO,GACP,MAAO,QACP,KAAM,aAGd,MAAS,CACL,EAAyB,aAAa,aACtC,EAAS,SACT,CACI,MAAO,gBACP,MAAO,MACP,KAAM,SACP,CACC,MAAO,OACP,MAAO,UACP,KAAM,SACP,CACC,MAAO,QACP,MAAO,GACP,KAAM,aAGd,MAAS,CACL,CACI,MAAO,0BACP,MAAO,6CACR,CACC,MAAO,gBACP,MAAO,cACP,KAAM,YACP,CACC,MAAO,UACP,MAAO,iDACR,CACC,MAAO,2BACP,MAAO,iDACR,CACC,MAAO,8BACP,MAAO,MACR,CACC,MAAO,2BACP,MAAO,QACP,KAAM,yBACP,CACC,MAAO,QACP,MAAO,IACP,KAAM,YACP,CACC,aAAc,kBAGtB,sBAAyB,CACrB,CACI,MAAO,oCACP,MAAO,6CACR,CACC,MAAO,2BACP,MAAO,IACP,KAAM,SACP,CACC,MAAO,2BACP,MAAO,KACR,CACC,MAAO,QACP,MAAO,IACP,KAAM,YACP,CACC,aAAc,kCAGtB,mBAAsB,CAClB,CACI,MAAO,qBACP,MAAO,GACR,CACC,MAAO,uBACP,MAAO,SACR,CACC,MAAO,uBACP,MAAO,KACR,CACC,MAAO,QACP,MAAO,GACP,KAAM,aAGd,SAAY,CACR,CACI,MAAO,2BACP,MAAO,GACR,CACC,MAAO,SACP,MAAO,QACP,gBAAgB,GACjB,CACC,MAAO,SACP,MAAO,MACP,KAAM,YACP,CACC,aAAc,WAGtB,QAAW,CACP,CACI,MAAO,2BACP,MAAO,GACR,CACC,MAAO,SACP,MAAO,QACP,gBAAgB,GACjB,CACC,MAAO,SACP,MAAO,MACP,KAAM,YACP,CACC,aAAc,YAIrB,GAAY,EAAQ,QACrB,KAAK,OAAO,SAAS,QAAQ,CACzB,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ACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,IACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,KACpB,EAAoB,K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MAAO,UACR,CACC,MAAO,UACP,MAAO,WAGf,SAAU,CAAC,CACH,MAAO,OACP,MAAO,QACR,CACC,MAAO,CACH,eAAgB,uBAAwB,uBAAwB,OAChE,mBAAoB,OACpB,eAAgB,OAAQ,uBAAwB,OAAQ,gBAE5D,MAAO,IAAM,EAAe,UAAY,EAAe,yDACvD,KAAM,sBACP,CACC,MAAO,uBACP,MAAO,cACR,CACC,MAAO,mBACP,MAAO,qvDACR,CACC,MAAO,uBACP,MAAO,+lBACR,CACC,MAAO,mBACP,MAAO,y2DACR,CACC,MAAO,aACP,MAAO,GACR,CACC,MAAO,GACP,MAAO,QACP,KAAM,aAGd,MAAS,CACL,EAAyB,aAAa,aACtC,EAAS,SACT,CACI,MAAO,gBACP,MAAO,MACP,KAAM,SACP,CACC,MAAO,OACP,MAAO,UACP,KAAM,SACP,CACC,MAAO,QACP,MAAO,GACP,KAAM,aAGd,MAAS,CACL,CACI,MAAO,0BACP,MAAO,6CACR,CACC,MAAO,gBACP,MAAO,cACP,KAAM,YACP,CACC,MAAO,UACP,MAAO,iDACR,CACC,MAAO,2BACP,MAAO,iDACR,CACC,MAAO,8BACP,MAAO,MACR,CACC,MAAO,2BACP,MAAO,QACP,KAAM,yBACP,CACC,MAAO,QACP,MAAO,IACP,KAAM,YACP,CACC,aAAc,kBAGtB,sBAAyB,CACrB,CACI,MAAO,oCACP,MAAO,6CACR,CACC,MAAO,2BACP,MAAO,IACP,KAAM,SACP,CACC,MAAO,2BACP,MAAO,KACR,CACC,MAAO,QACP,MAAO,IACP,KAAM,YACP,CACC,aAAc,kCAGtB,mBAAsB,CAClB,CACI,MAAO,qBACP,MAAO,GACR,CACC,MAAO,uBACP,MAAO,SACR,CACC,MAAO,uBACP,MAAO,KACR,CACC,MAAO,QACP,MAAO,GACP,KAAM,aAGd,SAAY,CACR,CACI,MAAO,2BACP,MAAO,GACR,CACC,MAAO,SACP,MAAO,QACP,gBAAgB,GACjB,CACC,MAAO,SACP,MAAO,MACP,KAAM,YACP,CACC,aAAc,WAGtB,QAAW,CACP,CACI,MAAO,2BACP,MAAO,GACR,CACC,MAA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AW,UAAW,SAAU,SAAU,SAAU,SAAU,SAAU,UAAW,UAAW,WAAY,SAAU,SAAU,OAAQ,OAAQ,OAAQ,SAAU,SAAU,SAAU,UAAW,UAAW,QAAS,QAAS,SAAU,QAAS,QAAS,UAAW,QAAS,OAAQ,UAAW,UAAW,SAAU,QAAS,OAAQ,OAAQ,QAAS,SAAU,QAAS,QAAS,SAAU,OAAQ,UAAW,UAAW,UAAW,QAAS,QAAS,OAAQ,SAAU,SAAU,SAAU,UAAW,UAAW,UAAW,SAAU,SAAU,UAAW,UAAW,SAAU,QAAS,QAAS,WAAY,WAAY,SAAU,OAAQ,OAAQ,OAAQ,OAAQ,QAAS,QAAS,QAAS,SAAU,QAAS,UAAW,UAAW,UAAW,UAAW,SAAU,SAAU,SAAU,MAAO,MAAO,QAAS,QAAS,UAAW,UAAW,UAAW,UAAW,SAAU,SAAU,SAAU,UAAW,UAAW,SAAU,SAAU,OAAQ,QAAS,QAAS,UAAW,QAAS,QAAS,QAAS,SAAU,SAAU,UAAW,UAAW,QAAS,SAAU,QAAS,QAAS,SAAU,SAAU,MAAO,UAAW,UAAW,OAAQ,OAAQ,UAAW,SAAU,MAAO,QAAS,SAAU,SAAU,UAAW,SAAU,MAAO,MAAO,SAAU,QAAS,SAAU,MAAO,MAAO,OAAQ,SAAU,QAAS,UAAW,UAAW,MAAO,MAAO,UAAW,UAAW,SAAU,SAAU,SAAU,SAAU,UAAW,UAAW,SAAU,SAAU,SAAU,WAAY,WAAY,SAAU,MAAO,QAAS,QAAS,UAAW,UAAW,UAAW,UAAW,UAAW,QAAS,QAAS,QAAS,QAAS,UAAW,QAAS,OAAQ,OAAQ,MAAO,MAAO,OAAQ,UAAW,SAAU,SAAU,SAAU,QAAS,QAAS,OAAQ,OAAQ,QAAS,SAAU,QAAS,SAAU,QAAS,QAAS,SAAU,SAAU,QAAS,OAAQ,UAAW,OAAQ,OAAQ,OAAQ,UAAW,SAAU,SAAU,UAAW,UAAW,QAAS,QAAS,OAAQ,SAAU,SAAU,UAAW,OAAQ,UAAW,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QAAS,QAAS,QAAS,SAAU,OAAQ,OAAQ,UAAW,SAAU,SAAU,YAAa,UAAW,SAAU,SAAU,SAAU,SAAU,SAAU,UAAW,UAAW,QAAS,QAAS,SAAU,SAAU,UAAW,UAAW,OAAQ,SAAU,WAAY,WAAY,QAAS,QAAS,UA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","file":"/npm/react-card-editor@0.0.10/dist/card-editor.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/react-card-editor@0.0.10/dist/card-editor.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"react-card-editor.js\", [\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"react-card-editor.js\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"react-card-editor.js\"] = factory(root[\"react\"], root[\"react-dom\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__19__) {\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, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\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/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 698);\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/**\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 (false) { var throwOnDirectAccess, ReactIs; } 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 = __webpack_require__(1311)();\n}\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n/**\n * @module zrender/core/util\n */\n// 用于处理merge时无法遍历Date等对象的问题\nvar BUILTIN_OBJECT = {\n  '[object Function]': 1,\n  '[object RegExp]': 1,\n  '[object Date]': 1,\n  '[object Error]': 1,\n  '[object CanvasGradient]': 1,\n  '[object CanvasPattern]': 1,\n  // For node-canvas\n  '[object Image]': 1,\n  '[object Canvas]': 1\n};\nvar TYPED_ARRAY = {\n  '[object Int8Array]': 1,\n  '[object Uint8Array]': 1,\n  '[object Uint8ClampedArray]': 1,\n  '[object Int16Array]': 1,\n  '[object Uint16Array]': 1,\n  '[object Int32Array]': 1,\n  '[object Uint32Array]': 1,\n  '[object Float32Array]': 1,\n  '[object Float64Array]': 1\n};\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar nativeReduce = arrayProto.reduce; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n  // Clear ctx instance for different environment\n  if (name === 'createCanvas') {\n    _ctx = null;\n  }\n\n  methods[name] = fn;\n}\n/**\n * Those data types can be cloned:\n *     Plain object, Array, TypedArray, number, string, null, undefined.\n * Those data types will be assgined using the orginal data:\n *     BUILTIN_OBJECT\n * Instance of user defined class will be cloned to a plain object, without\n * properties in prototype.\n * Other data types is not supported (not sure what will happen).\n *\n * Caution: do not support clone Date, for performance consideration.\n * (There might be a large number of date in `series.data`).\n * So date should not be modified in and out of echarts.\n *\n * @param {*} source\n * @return {*} new\n */\n\n\nfunction clone(source) {\n  if (source == null || typeof source !== 'object') {\n    return source;\n  }\n\n  var result = source;\n  var typeStr = objToString.call(source);\n\n  if (typeStr === '[object Array]') {\n    if (!isPrimitive(source)) {\n      result = [];\n\n      for (var i = 0, len = source.length; i < len; i++) {\n        result[i] = clone(source[i]);\n      }\n    }\n  } else if (TYPED_ARRAY[typeStr]) {\n    if (!isPrimitive(source)) {\n      var Ctor = source.constructor;\n\n      if (source.constructor.from) {\n        result = Ctor.from(source);\n      } else {\n        result = new Ctor(source.length);\n\n        for (var i = 0, len = source.length; i < len; i++) {\n          result[i] = clone(source[i]);\n        }\n      }\n    }\n  } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n    result = {};\n\n    for (var key in source) {\n      if (source.hasOwnProperty(key)) {\n        result[key] = clone(source[key]);\n      }\n    }\n  }\n\n  return result;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overwrite=false]\n */\n\n\nfunction merge(target, source, overwrite) {\n  // We should escapse that source is string\n  // and enter for ... in ...\n  if (!isObject(source) || !isObject(target)) {\n    return overwrite ? clone(source) : target;\n  }\n\n  for (var key in source) {\n    if (source.hasOwnProperty(key)) {\n      var targetProp = target[key];\n      var sourceProp = source[key];\n\n      if (isObject(sourceProp) && isObject(targetProp) && !isArray(sourceProp) && !isArray(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) {\n        // 如果需要递归覆盖，就递归调用merge\n        merge(targetProp, sourceProp, overwrite);\n      } else if (overwrite || !(key in target)) {\n        // 否则只处理overwrite为true，或者在目标对象中没有此属性的情况\n        // NOTE，在 target[key] 不存在的时候也是直接覆盖\n        target[key] = clone(source[key], true);\n      }\n    }\n  }\n\n  return target;\n}\n/**\n * @param {Array} targetAndSources The first item is target, and the rests are source.\n * @param {boolean} [overwrite=false]\n * @return {*} target\n */\n\n\nfunction mergeAll(targetAndSources, overwrite) {\n  var result = targetAndSources[0];\n\n  for (var i = 1, len = targetAndSources.length; i < len; i++) {\n    result = merge(result, targetAndSources[i], overwrite);\n  }\n\n  return result;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @memberOf module:zrender/core/util\n */\n\n\nfunction extend(target, source) {\n  for (var key in source) {\n    if (source.hasOwnProperty(key)) {\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overlay=false]\n * @memberOf module:zrender/core/util\n */\n\n\nfunction defaults(target, source, overlay) {\n  for (var key in source) {\n    if (source.hasOwnProperty(key) && (overlay ? source[key] != null : target[key] == null)) {\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nvar createCanvas = function () {\n  return methods.createCanvas();\n};\n\nmethods.createCanvas = function () {\n  return document.createElement('canvas');\n}; // FIXME\n\n\nvar _ctx;\n\nfunction getContext() {\n  if (!_ctx) {\n    // Use util.createCanvas instead of createCanvas\n    // because createCanvas may be overwritten in different environment\n    _ctx = createCanvas().getContext('2d');\n  }\n\n  return _ctx;\n}\n/**\n * 查询数组中元素的index\n * @memberOf module:zrender/core/util\n */\n\n\nfunction indexOf(array, value) {\n  if (array) {\n    if (array.indexOf) {\n      return array.indexOf(value);\n    }\n\n    for (var i = 0, len = array.length; i < len; i++) {\n      if (array[i] === value) {\n        return i;\n      }\n    }\n  }\n\n  return -1;\n}\n/**\n * 构造类继承关系\n *\n * @memberOf module:zrender/core/util\n * @param {Function} clazz 源类\n * @param {Function} baseClazz 基类\n */\n\n\nfunction inherits(clazz, baseClazz) {\n  var clazzPrototype = clazz.prototype;\n\n  function F() {}\n\n  F.prototype = baseClazz.prototype;\n  clazz.prototype = new F();\n\n  for (var prop in clazzPrototype) {\n    if (clazzPrototype.hasOwnProperty(prop)) {\n      clazz.prototype[prop] = clazzPrototype[prop];\n    }\n  }\n\n  clazz.prototype.constructor = clazz;\n  clazz.superClass = baseClazz;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Object|Function} target\n * @param {Object|Function} sorce\n * @param {boolean} overlay\n */\n\n\nfunction mixin(target, source, overlay) {\n  target = 'prototype' in target ? target.prototype : target;\n  source = 'prototype' in source ? source.prototype : source;\n  defaults(target, source, overlay);\n}\n/**\n * Consider typed array.\n * @param {Array|TypedArray} data\n */\n\n\nfunction isArrayLike(data) {\n  if (!data) {\n    return;\n  }\n\n  if (typeof data === 'string') {\n    return false;\n  }\n\n  return typeof data.length === 'number';\n}\n/**\n * 数组或对象遍历\n * @memberOf module:zrender/core/util\n * @param {Object|Array} obj\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\nfunction each(obj, cb, context) {\n  if (!(obj && cb)) {\n    return;\n  }\n\n  if (obj.forEach && obj.forEach === nativeForEach) {\n    obj.forEach(cb, context);\n  } else if (obj.length === +obj.length) {\n    for (var i = 0, len = obj.length; i < len; i++) {\n      cb.call(context, obj[i], i, obj);\n    }\n  } else {\n    for (var key in obj) {\n      if (obj.hasOwnProperty(key)) {\n        cb.call(context, obj[key], key, obj);\n      }\n    }\n  }\n}\n/**\n * 数组映射\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction map(obj, cb, context) {\n  if (!(obj && cb)) {\n    return;\n  }\n\n  if (obj.map && obj.map === nativeMap) {\n    return obj.map(cb, context);\n  } else {\n    var result = [];\n\n    for (var i = 0, len = obj.length; i < len; i++) {\n      result.push(cb.call(context, obj[i], i, obj));\n    }\n\n    return result;\n  }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {Object} [memo]\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction reduce(obj, cb, memo, context) {\n  if (!(obj && cb)) {\n    return;\n  }\n\n  if (obj.reduce && obj.reduce === nativeReduce) {\n    return obj.reduce(cb, memo, context);\n  } else {\n    for (var i = 0, len = obj.length; i < len; i++) {\n      memo = cb.call(context, memo, obj[i], i, obj);\n    }\n\n    return memo;\n  }\n}\n/**\n * 数组过滤\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction filter(obj, cb, context) {\n  if (!(obj && cb)) {\n    return;\n  }\n\n  if (obj.filter && obj.filter === nativeFilter) {\n    return obj.filter(cb, context);\n  } else {\n    var result = [];\n\n    for (var i = 0, len = obj.length; i < len; i++) {\n      if (cb.call(context, obj[i], i, obj)) {\n        result.push(obj[i]);\n      }\n    }\n\n    return result;\n  }\n}\n/**\n * 数组项查找\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {*}\n */\n\n\nfunction find(obj, cb, context) {\n  if (!(obj && cb)) {\n    return;\n  }\n\n  for (var i = 0, len = obj.length; i < len; i++) {\n    if (cb.call(context, obj[i], i, obj)) {\n      return obj[i];\n    }\n  }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @param {*} context\n * @return {Function}\n */\n\n\nfunction bind(func, context) {\n  var args = nativeSlice.call(arguments, 2);\n  return function () {\n    return func.apply(context, args.concat(nativeSlice.call(arguments)));\n  };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @return {Function}\n */\n\n\nfunction curry(func) {\n  var args = nativeSlice.call(arguments, 1);\n  return function () {\n    return func.apply(this, args.concat(nativeSlice.call(arguments)));\n  };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isArray(value) {\n  return objToString.call(value) === '[object Array]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isFunction(value) {\n  return typeof value === 'function';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isString(value) {\n  return objToString.call(value) === '[object String]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isObject(value) {\n  // Avoid a V8 JIT bug in Chrome 19-20.\n  // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n  var type = typeof value;\n  return type === 'function' || !!value && type === 'object';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isBuiltInObject(value) {\n  return !!BUILTIN_OBJECT[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isTypedArray(value) {\n  return !!TYPED_ARRAY[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isDom(value) {\n  return typeof value === 'object' && typeof value.nodeType === 'number' && typeof value.ownerDocument === 'object';\n}\n/**\n * Whether is exactly NaN. Notice isNaN('a') returns true.\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction eqNaN(value) {\n  /* eslint-disable-next-line no-self-compare */\n  return value !== value;\n}\n/**\n * If value1 is not null, then return value1, otherwise judget rest of values.\n * Low performance.\n * @memberOf module:zrender/core/util\n * @return {*} Final value\n */\n\n\nfunction retrieve(values) {\n  for (var i = 0, len = arguments.length; i < len; i++) {\n    if (arguments[i] != null) {\n      return arguments[i];\n    }\n  }\n}\n\nfunction retrieve2(value0, value1) {\n  return value0 != null ? value0 : value1;\n}\n\nfunction retrieve3(value0, value1, value2) {\n  return value0 != null ? value0 : value1 != null ? value1 : value2;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} arr\n * @param {number} startIndex\n * @param {number} endIndex\n * @return {Array}\n */\n\n\nfunction slice() {\n  return Function.call.apply(nativeSlice, arguments);\n}\n/**\n * Normalize css liked array configuration\n * e.g.\n *  3 => [3, 3, 3, 3]\n *  [4, 2] => [4, 2, 4, 2]\n *  [4, 3, 2] => [4, 3, 2, 3]\n * @param {number|Array.<number>} val\n * @return {Array.<number>}\n */\n\n\nfunction normalizeCssArray(val) {\n  if (typeof val === 'number') {\n    return [val, val, val, val];\n  }\n\n  var len = val.length;\n\n  if (len === 2) {\n    // vertical | horizontal\n    return [val[0], val[1], val[0], val[1]];\n  } else if (len === 3) {\n    // top | horizontal | bottom\n    return [val[0], val[1], val[2], val[1]];\n  }\n\n  return val;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {boolean} condition\n * @param {string} message\n */\n\n\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message);\n  }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {string} str string to be trimed\n * @return {string} trimed string\n */\n\n\nfunction trim(str) {\n  if (str == null) {\n    return null;\n  } else if (typeof str.trim === 'function') {\n    return str.trim();\n  } else {\n    return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n  }\n}\n\nvar primitiveKey = '__ec_primitive__';\n/**\n * Set an object as primitive to be ignored traversing children in clone or merge\n */\n\nfunction setAsPrimitive(obj) {\n  obj[primitiveKey] = true;\n}\n\nfunction isPrimitive(obj) {\n  return obj[primitiveKey];\n}\n/**\n * @constructor\n * @param {Object} obj Only apply `ownProperty`.\n */\n\n\nfunction HashMap(obj) {\n  var isArr = isArray(obj); // Key should not be set on this, otherwise\n  // methods get/set/... may be overrided.\n\n  this.data = {};\n  var thisMap = this;\n  obj instanceof HashMap ? obj.each(visit) : obj && each(obj, visit);\n\n  function visit(value, key) {\n    isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n  }\n}\n\nHashMap.prototype = {\n  constructor: HashMap,\n  // Do not provide `has` method to avoid defining what is `has`.\n  // (We usually treat `null` and `undefined` as the same, different\n  // from ES6 Map).\n  get: function (key) {\n    return this.data.hasOwnProperty(key) ? this.data[key] : null;\n  },\n  set: function (key, value) {\n    // Comparing with invocation chaining, `return value` is more commonly\n    // used in this case: `var someVal = map.set('a', genVal());`\n    return this.data[key] = value;\n  },\n  // Although util.each can be performed on this hashMap directly, user\n  // should not use the exposed keys, who are prefixed.\n  each: function (cb, context) {\n    context !== void 0 && (cb = bind(cb, context));\n    /* eslint-disable guard-for-in */\n\n    for (var key in this.data) {\n      this.data.hasOwnProperty(key) && cb(this.data[key], key);\n    }\n    /* eslint-enable guard-for-in */\n\n  },\n  // Do not use this method if performance sensitive.\n  removeKey: function (key) {\n    delete this.data[key];\n  }\n};\n\nfunction createHashMap(obj) {\n  return new HashMap(obj);\n}\n\nfunction concatArray(a, b) {\n  var newArray = new a.constructor(a.length + b.length);\n\n  for (var i = 0; i < a.length; i++) {\n    newArray[i] = a[i];\n  }\n\n  var offset = a.length;\n\n  for (i = 0; i < b.length; i++) {\n    newArray[i + offset] = b[i];\n  }\n\n  return newArray;\n}\n\nfunction noop() {}\n\nexports.$override = $override;\nexports.clone = clone;\nexports.merge = merge;\nexports.mergeAll = mergeAll;\nexports.extend = extend;\nexports.defaults = defaults;\nexports.createCanvas = createCanvas;\nexports.getContext = getContext;\nexports.indexOf = indexOf;\nexports.inherits = inherits;\nexports.mixin = mixin;\nexports.isArrayLike = isArrayLike;\nexports.each = each;\nexports.map = map;\nexports.reduce = reduce;\nexports.filter = filter;\nexports.find = find;\nexports.bind = bind;\nexports.curry = curry;\nexports.isArray = isArray;\nexports.isFunction = isFunction;\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isBuiltInObject = isBuiltInObject;\nexports.isTypedArray = isTypedArray;\nexports.isDom = isDom;\nexports.eqNaN = eqNaN;\nexports.retrieve = retrieve;\nexports.retrieve2 = retrieve2;\nexports.retrieve3 = retrieve3;\nexports.slice = slice;\nexports.normalizeCssArray = normalizeCssArray;\nexports.assert = assert;\nexports.trim = trim;\nexports.setAsPrimitive = setAsPrimitive;\nexports.isPrimitive = isPrimitive;\nexports.createHashMap = createHashMap;\nexports.concatArray = concatArray;\nexports.noop = noop;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar getOwnPropertyDescriptor = __webpack_require__(85).f;\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar defineBuiltIn = __webpack_require__(62);\nvar defineGlobalProperty = __webpack_require__(357);\nvar copyConstructorProperties = __webpack_require__(281);\nvar isForced = __webpack_require__(231);\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 = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = (global[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\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _assign = __webpack_require__(1313);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || 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/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* build: `node build.js modules=ALL exclude=gestures,accessors,erasing requirejs minifier=uglifyjs` */\n/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */\n\nvar fabric = fabric || { version: '4.6.0' };\nif (true) {\n  exports.fabric = fabric;\n}\n/* _AMD_START_ */\nelse {}\n/* _AMD_END_ */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n  if (document instanceof (typeof HTMLDocument !== 'undefined' ? HTMLDocument : Document)) {\n    fabric.document = document;\n  }\n  else {\n    fabric.document = document.implementation.createHTMLDocument('');\n  }\n  fabric.window = window;\n}\nelse {\n  // assume we're running under node.js when document/window are not present\n  var jsdom = __webpack_require__(953);\n  var virtualWindow = new jsdom.JSDOM(\n    decodeURIComponent('%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E'),\n    {\n      features: {\n        FetchExternalResources: ['img']\n      },\n      resources: 'usable'\n    }).window;\n  fabric.document = virtualWindow.document;\n  fabric.jsdomImplForWrapper = __webpack_require__(954).implForWrapper;\n  fabric.nodeCanvas = __webpack_require__(955).Canvas;\n  fabric.window = virtualWindow;\n  DOMParser = fabric.window.DOMParser;\n}\n\n/**\n * True when in environment that supports touch events\n * @type boolean\n */\nfabric.isTouchSupported = 'ontouchstart' in fabric.window || 'ontouchstart' in fabric.document ||\n  (fabric.window && fabric.window.navigator && fabric.window.navigator.maxTouchPoints > 0);\n\n/**\n * True when in environment that's probably Node.js\n * @type boolean\n */\nfabric.isLikelyNode = typeof Buffer !== 'undefined' &&\n                      typeof window === 'undefined';\n\n/* _FROM_SVG_START_ */\n/**\n * Attributes parsed from all SVG elements\n * @type array\n */\nfabric.SHARED_ATTRIBUTES = [\n  'display',\n  'transform',\n  'fill', 'fill-opacity', 'fill-rule',\n  'opacity',\n  'stroke', 'stroke-dasharray', 'stroke-linecap', 'stroke-dashoffset',\n  'stroke-linejoin', 'stroke-miterlimit',\n  'stroke-opacity', 'stroke-width',\n  'id', 'paint-order', 'vector-effect',\n  'instantiated_by_use', 'clip-path',\n];\n/* _FROM_SVG_END_ */\n\n/**\n * Pixel per Inch as a default value set to 96. Can be changed for more realistic conversion.\n */\nfabric.DPI = 96;\nfabric.reNum = '(?:[-+]?(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:[eE][-+]?\\\\d+)?)';\nfabric.commaWsp = '(?:\\\\s+,?\\\\s*|,\\\\s*)';\nfabric.rePathCommand = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:[eE][-+]?\\d+)?)/ig;\nfabric.reNonWord = /[ \\n\\.,;!\\?\\-]/;\nfabric.fontPaths = { };\nfabric.iMatrix = [1, 0, 0, 1, 0, 0];\nfabric.svgNS = 'http://www.w3.org/2000/svg';\n\n/**\n * Pixel limit for cache canvases. 1Mpx , 4Mpx should be fine.\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.perfLimitSizeTotal = 2097152;\n\n/**\n * Pixel limit for cache canvases width or height. IE fixes the maximum at 5000\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.maxCacheSideLimit = 4096;\n\n/**\n * Lowest pixel limit for cache canvases, set at 256PX\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.minCacheSideLimit = 256;\n\n/**\n * Cache Object for widths of chars in text rendering.\n */\nfabric.charWidthsCache = { };\n\n/**\n * if webgl is enabled and available, textureSize will determine the size\n * of the canvas backend\n * @since 2.0.0\n * @type Number\n * @default\n */\nfabric.textureSize = 2048;\n\n/**\n * When 'true', style information is not retained when copy/pasting text, making\n * pasted text use destination style.\n * Defaults to 'false'.\n * @type Boolean\n * @default\n */\nfabric.disableStyleCopyPaste = false;\n\n/**\n * Enable webgl for filtering picture is available\n * A filtering backend will be initialized, this will both take memory and\n * time since a default 2048x2048 canvas will be created for the gl context\n * @since 2.0.0\n * @type Boolean\n * @default\n */\nfabric.enableGLFiltering = true;\n\n/**\n * Device Pixel Ratio\n * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html\n */\nfabric.devicePixelRatio = fabric.window.devicePixelRatio ||\n                          fabric.window.webkitDevicePixelRatio ||\n                          fabric.window.mozDevicePixelRatio ||\n                          1;\n/**\n * Browser-specific constant to adjust CanvasRenderingContext2D.shadowBlur value,\n * which is unitless and not rendered equally across browsers.\n *\n * Values that work quite well (as of October 2017) are:\n * - Chrome: 1.5\n * - Edge: 1.75\n * - Firefox: 0.9\n * - Safari: 0.95\n *\n * @since 2.0.0\n * @type Number\n * @default 1\n */\nfabric.browserShadowBlurConstant = 1;\n\n/**\n * This object contains the result of arc to bezier conversion for faster retrieving if the same arc needs to be converted again.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.arcToSegmentsCache = { };\n\n/**\n * This object keeps the results of the boundsOfCurve calculation mapped by the joined arguments necessary to calculate it.\n * It does speed up calculation, if you parse and add always the same paths, but in case of heavy usage of freedrawing\n * you do not get any speed benefit and you get a big object in memory.\n * The object was a private variable before, while now is appended to the lib so that you have access to it and you\n * can eventually clear it.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.boundsOfCurveCache = { };\n\n/**\n * If disabled boundsOfCurveCache is not used. For apps that make heavy usage of pencil drawing probably disabling it is better\n * @default true\n */\nfabric.cachesBoundsOfCurve = true;\n\n/**\n * Skip performance testing of setupGLContext and force the use of putImageData that seems to be the one that works best on\n * Chrome + old hardware. if your users are experiencing empty images after filtering you may try to force this to true\n * this has to be set before instantiating the filtering backend ( before filtering the first image )\n * @type Boolean\n * @default false\n */\nfabric.forceGLPutImageData = false;\n\nfabric.initFilterBackend = function() {\n  if (fabric.enableGLFiltering && fabric.isWebglSupported && fabric.isWebglSupported(fabric.textureSize)) {\n    console.log('max texture size: ' + fabric.maxTextureSize);\n    return (new fabric.WebglFilterBackend({ tileSize: fabric.textureSize }));\n  }\n  else if (fabric.Canvas2dFilterBackend) {\n    return (new fabric.Canvas2dFilterBackend());\n  }\n};\n\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n  // ensure globality even if entire library were function wrapped (as in Meteor.js packaging system)\n  window.fabric = fabric;\n}\n\n\n(function() {\n\n  /**\n   * @private\n   * @param {String} eventName\n   * @param {Function} handler\n   */\n  function _removeEventListener(eventName, handler) {\n    if (!this.__eventListeners[eventName]) {\n      return;\n    }\n    var eventListener = this.__eventListeners[eventName];\n    if (handler) {\n      eventListener[eventListener.indexOf(handler)] = false;\n    }\n    else {\n      fabric.util.array.fill(eventListener, false);\n    }\n  }\n\n  /**\n   * Observes specified event\n   * @memberOf fabric.Observable\n   * @alias on\n   * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n   * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n   * @return {Self} thisArg\n   * @chainable\n   */\n  function on(eventName, handler) {\n    if (!this.__eventListeners) {\n      this.__eventListeners = { };\n    }\n    // one object with key/value pairs was passed\n    if (arguments.length === 1) {\n      for (var prop in eventName) {\n        this.on(prop, eventName[prop]);\n      }\n    }\n    else {\n      if (!this.__eventListeners[eventName]) {\n        this.__eventListeners[eventName] = [];\n      }\n      this.__eventListeners[eventName].push(handler);\n    }\n    return this;\n  }\n\n  function _once(eventName, handler) {\n    var _handler = function () {\n      handler.apply(this, arguments);\n      this.off(eventName, _handler);\n    }.bind(this);\n    this.on(eventName, _handler);\n  }\n\n  function once(eventName, handler) {\n    // one object with key/value pairs was passed\n    if (arguments.length === 1) {\n      for (var prop in eventName) {\n        _once.call(this, prop, eventName[prop]);\n      }\n    }\n    else {\n      _once.call(this, eventName, handler);\n    }\n    return this;\n  }\n\n  /**\n   * Stops event observing for a particular event handler. Calling this method\n   * without arguments removes all handlers for all events\n   * @memberOf fabric.Observable\n   * @alias off\n   * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n   * @param {Function} handler Function to be deleted from EventListeners\n   * @return {Self} thisArg\n   * @chainable\n   */\n  function off(eventName, handler) {\n    if (!this.__eventListeners) {\n      return this;\n    }\n\n    // remove all key/value pairs (event name -> event handler)\n    if (arguments.length === 0) {\n      for (eventName in this.__eventListeners) {\n        _removeEventListener.call(this, eventName);\n      }\n    }\n    // one object with key/value pairs was passed\n    else if (arguments.length === 1 && typeof arguments[0] === 'object') {\n      for (var prop in eventName) {\n        _removeEventListener.call(this, prop, eventName[prop]);\n      }\n    }\n    else {\n      _removeEventListener.call(this, eventName, handler);\n    }\n    return this;\n  }\n\n  /**\n   * Fires event with an optional options object\n   * @memberOf fabric.Observable\n   * @param {String} eventName Event name to fire\n   * @param {Object} [options] Options object\n   * @return {Self} thisArg\n   * @chainable\n   */\n  function fire(eventName, options) {\n    if (!this.__eventListeners) {\n      return this;\n    }\n\n    var listenersForEvent = this.__eventListeners[eventName];\n    if (!listenersForEvent) {\n      return this;\n    }\n\n    for (var i = 0, len = listenersForEvent.length; i < len; i++) {\n      listenersForEvent[i] && listenersForEvent[i].call(this, options || { });\n    }\n    this.__eventListeners[eventName] = listenersForEvent.filter(function(value) {\n      return value !== false;\n    });\n    return this;\n  }\n\n  /**\n   * @namespace fabric.Observable\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n   * @see {@link http://fabricjs.com/events|Events demo}\n   */\n  fabric.Observable = {\n    fire: fire,\n    on: on,\n    once: once,\n    off: off,\n  };\n})();\n\n\n/**\n * @namespace fabric.Collection\n */\nfabric.Collection = {\n\n  _objects: [],\n\n  /**\n   * Adds objects to collection, Canvas or Group, then renders canvas\n   * (if `renderOnAddRemove` is not `false`).\n   * in case of Group no changes to bounding box are made.\n   * Objects should be instances of (or inherit from) fabric.Object\n   * Use of this function is highly discouraged for groups.\n   * you can add a bunch of objects with the add method but then you NEED\n   * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n   * @param {...fabric.Object} object Zero or more fabric instances\n   * @return {Self} thisArg\n   * @chainable\n   */\n  add: function () {\n    this._objects.push.apply(this._objects, arguments);\n    if (this._onObjectAdded) {\n      for (var i = 0, length = arguments.length; i < length; i++) {\n        this._onObjectAdded(arguments[i]);\n      }\n    }\n    this.renderOnAddRemove && this.requestRenderAll();\n    return this;\n  },\n\n  /**\n   * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`)\n   * An object should be an instance of (or inherit from) fabric.Object\n   * Use of this function is highly discouraged for groups.\n   * you can add a bunch of objects with the insertAt method but then you NEED\n   * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n   * @param {Object} object Object to insert\n   * @param {Number} index Index to insert object at\n   * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs\n   * @return {Self} thisArg\n   * @chainable\n   */\n  insertAt: function (object, index, nonSplicing) {\n    var objects = this._objects;\n    if (nonSplicing) {\n      objects[index] = object;\n    }\n    else {\n      objects.splice(index, 0, object);\n    }\n    this._onObjectAdded && this._onObjectAdded(object);\n    this.renderOnAddRemove && this.requestRenderAll();\n    return this;\n  },\n\n  /**\n   * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`)\n   * @param {...fabric.Object} object Zero or more fabric instances\n   * @return {Self} thisArg\n   * @chainable\n   */\n  remove: function() {\n    var objects = this._objects,\n        index, somethingRemoved = false;\n\n    for (var i = 0, length = arguments.length; i < length; i++) {\n      index = objects.indexOf(arguments[i]);\n\n      // only call onObjectRemoved if an object was actually removed\n      if (index !== -1) {\n        somethingRemoved = true;\n        objects.splice(index, 1);\n        this._onObjectRemoved && this._onObjectRemoved(arguments[i]);\n      }\n    }\n\n    this.renderOnAddRemove && somethingRemoved && this.requestRenderAll();\n    return this;\n  },\n\n  /**\n   * Executes given function for each object in this group\n   * @param {Function} callback\n   *                   Callback invoked with current object as first argument,\n   *                   index - as second and an array of all objects - as third.\n   *                   Callback is invoked in a context of Global Object (e.g. `window`)\n   *                   when no `context` argument is given\n   *\n   * @param {Object} context Context (aka thisObject)\n   * @return {Self} thisArg\n   * @chainable\n   */\n  forEachObject: function(callback, context) {\n    var objects = this.getObjects();\n    for (var i = 0, len = objects.length; i < len; i++) {\n      callback.call(context, objects[i], i, objects);\n    }\n    return this;\n  },\n\n  /**\n   * Returns an array of children objects of this instance\n   * Type parameter introduced in 1.3.10\n   * since 2.3.5 this method return always a COPY of the array;\n   * @param {String} [type] When specified, only objects of this type are returned\n   * @return {Array}\n   */\n  getObjects: function(type) {\n    if (typeof type === 'undefined') {\n      return this._objects.concat();\n    }\n    return this._objects.filter(function(o) {\n      return o.type === type;\n    });\n  },\n\n  /**\n   * Returns object at specified index\n   * @param {Number} index\n   * @return {Self} thisArg\n   */\n  item: function (index) {\n    return this._objects[index];\n  },\n\n  /**\n   * Returns true if collection contains no objects\n   * @return {Boolean} true if collection is empty\n   */\n  isEmpty: function () {\n    return this._objects.length === 0;\n  },\n\n  /**\n   * Returns a size of a collection (i.e: length of an array containing its objects)\n   * @return {Number} Collection size\n   */\n  size: function() {\n    return this._objects.length;\n  },\n\n  /**\n   * Returns true if collection contains an object\n   * @param {Object} object Object to check against\n   * @param {Boolean} [deep=false] `true` to check all descendants, `false` to check only `_objects`\n   * @return {Boolean} `true` if collection contains an object\n   */\n  contains: function (object, deep) {\n    if (this._objects.indexOf(object) > -1) {\n      return true;\n    }\n    else if (deep) {\n      return this._objects.some(function (obj) {\n        return typeof obj.contains === 'function' && obj.contains(object, true);\n      });\n    }\n    return false;\n  },\n\n  /**\n   * Returns number representation of a collection complexity\n   * @return {Number} complexity\n   */\n  complexity: function () {\n    return this._objects.reduce(function (memo, current) {\n      memo += current.complexity ? current.complexity() : 0;\n      return memo;\n    }, 0);\n  }\n};\n\n\n/**\n * @namespace fabric.CommonMethods\n */\nfabric.CommonMethods = {\n\n  /**\n   * Sets object's properties from options\n   * @param {Object} [options] Options object\n   */\n  _setOptions: function(options) {\n    for (var prop in options) {\n      this.set(prop, options[prop]);\n    }\n  },\n\n  /**\n   * @private\n   * @param {Object} [filler] Options object\n   * @param {String} [property] property to set the Gradient to\n   */\n  _initGradient: function(filler, property) {\n    if (filler && filler.colorStops && !(filler instanceof fabric.Gradient)) {\n      this.set(property, new fabric.Gradient(filler));\n    }\n  },\n\n  /**\n   * @private\n   * @param {Object} [filler] Options object\n   * @param {String} [property] property to set the Pattern to\n   * @param {Function} [callback] callback to invoke after pattern load\n   */\n  _initPattern: function(filler, property, callback) {\n    if (filler && filler.source && !(filler instanceof fabric.Pattern)) {\n      this.set(property, new fabric.Pattern(filler, callback));\n    }\n    else {\n      callback && callback();\n    }\n  },\n\n  /**\n   * @private\n   */\n  _setObject: function(obj) {\n    for (var prop in obj) {\n      this._set(prop, obj[prop]);\n    }\n  },\n\n  /**\n   * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n   * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n   * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n   * @return {fabric.Object} thisArg\n   * @chainable\n   */\n  set: function(key, value) {\n    if (typeof key === 'object') {\n      this._setObject(key);\n    }\n    else {\n      this._set(key, value);\n    }\n    return this;\n  },\n\n  _set: function(key, value) {\n    this[key] = value;\n  },\n\n  /**\n   * Toggles specified property from `true` to `false` or from `false` to `true`\n   * @param {String} property Property to toggle\n   * @return {fabric.Object} thisArg\n   * @chainable\n   */\n  toggle: function(property) {\n    var value = this.get(property);\n    if (typeof value === 'boolean') {\n      this.set(property, !value);\n    }\n    return this;\n  },\n\n  /**\n   * Basic getter\n   * @param {String} property Property name\n   * @return {*} value of a property\n   */\n  get: function(property) {\n    return this[property];\n  }\n};\n\n\n(function(global) {\n\n  var sqrt = Math.sqrt,\n      atan2 = Math.atan2,\n      pow = Math.pow,\n      PiBy180 = Math.PI / 180,\n      PiBy2 = Math.PI / 2;\n\n  /**\n   * @namespace fabric.util\n   */\n  fabric.util = {\n\n    /**\n     * Calculate the cos of an angle, avoiding returning floats for known results\n     * @static\n     * @memberOf fabric.util\n     * @param {Number} angle the angle in radians or in degree\n     * @return {Number}\n     */\n    cos: function(angle) {\n      if (angle === 0) { return 1; }\n      if (angle < 0) {\n        // cos(a) = cos(-a)\n        angle = -angle;\n      }\n      var angleSlice = angle / PiBy2;\n      switch (angleSlice) {\n        case 1: case 3: return 0;\n        case 2: return -1;\n      }\n      return Math.cos(angle);\n    },\n\n    /**\n     * Calculate the sin of an angle, avoiding returning floats for known results\n     * @static\n     * @memberOf fabric.util\n     * @param {Number} angle the angle in radians or in degree\n     * @return {Number}\n     */\n    sin: function(angle) {\n      if (angle === 0) { return 0; }\n      var angleSlice = angle / PiBy2, sign = 1;\n      if (angle < 0) {\n        // sin(-a) = -sin(a)\n        sign = -1;\n      }\n      switch (angleSlice) {\n        case 1: return sign;\n        case 2: return 0;\n        case 3: return -sign;\n      }\n      return Math.sin(angle);\n    },\n\n    /**\n     * Removes value from an array.\n     * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf`\n     * @static\n     * @memberOf fabric.util\n     * @param {Array} array\n     * @param {*} value\n     * @return {Array} original array\n     */\n    removeFromArray: function(array, value) {\n      var idx = array.indexOf(value);\n      if (idx !== -1) {\n        array.splice(idx, 1);\n      }\n      return array;\n    },\n\n    /**\n     * Returns random number between 2 specified ones.\n     * @static\n     * @memberOf fabric.util\n     * @param {Number} min lower limit\n     * @param {Number} max upper limit\n     * @return {Number} random value (between min and max)\n     */\n    getRandomInt: function(min, max) {\n      return Math.floor(Math.random() * (max - min + 1)) + min;\n    },\n\n    /**\n     * Transforms degrees to radians.\n     * @static\n     * @memberOf fabric.util\n     * @param {Number} degrees value in degrees\n     * @return {Number} value in radians\n     */\n    degreesToRadians: function(degrees) {\n      return degrees * PiBy180;\n    },\n\n    /**\n     * Transforms radians to degrees.\n     * @static\n     * @memberOf fabric.util\n     * @param {Number} radians value in radians\n     * @return {Number} value in degrees\n     */\n    radiansToDegrees: function(radians) {\n      return radians / PiBy180;\n    },\n\n    /**\n     * Rotates `point` around `origin` with `radians`\n     * @static\n     * @memberOf fabric.util\n     * @param {fabric.Point} point The point to rotate\n     * @param {fabric.Point} origin The origin of the rotation\n     * @param {Number} radians The radians of the angle for the rotation\n     * @return {fabric.Point} The new rotated point\n     */\n    rotatePoint: function(point, origin, radians) {\n      var newPoint = new fabric.Point(point.x - origin.x, point.y - origin.y),\n          v = fabric.util.rotateVector(newPoint, radians);\n      return new fabric.Point(v.x, v.y).addEquals(origin);\n    },\n\n    /**\n     * Rotates `vector` with `radians`\n     * @static\n     * @memberOf fabric.util\n     * @param {Object} vector The vector to rotate (x and y)\n     * @param {Number} radians The radians of the angle for the rotation\n     * @return {Object} The new rotated point\n     */\n    rotateVector: function(vector, radians) {\n      var sin = fabric.util.sin(radians),\n          cos = fabric.util.cos(radians),\n          rx = vector.x * cos - vector.y * sin,\n          ry = vector.x * sin + vector.y * cos;\n      return {\n        x: rx,\n        y: ry\n      };\n    },\n\n    /**\n     * Apply transform t to point p\n     * @static\n     * @memberOf fabric.util\n     * @param  {fabric.Point} p The point to transform\n     * @param  {Array} t The transform\n     * @param  {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n     * @return {fabric.Point} The transformed point\n     */\n    transformPoint: function(p, t, ignoreOffset) {\n      if (ignoreOffset) {\n        return new fabric.Point(\n          t[0] * p.x + t[2] * p.y,\n          t[1] * p.x + t[3] * p.y\n        );\n      }\n      return new fabric.Point(\n        t[0] * p.x + t[2] * p.y + t[4],\n        t[1] * p.x + t[3] * p.y + t[5]\n      );\n    },\n\n    /**\n     * Returns coordinates of points's bounding rectangle (left, top, width, height)\n     * @param {Array} points 4 points array\n     * @param {Array} [transform] an array of 6 numbers representing a 2x3 transform matrix\n     * @return {Object} Object with left, top, width, height properties\n     */\n    makeBoundingBoxFromPoints: function(points, transform) {\n      if (transform) {\n        for (var i = 0; i < points.length; i++) {\n          points[i] = fabric.util.transformPoint(points[i], transform);\n        }\n      }\n      var xPoints = [points[0].x, points[1].x, points[2].x, points[3].x],\n          minX = fabric.util.array.min(xPoints),\n          maxX = fabric.util.array.max(xPoints),\n          width = maxX - minX,\n          yPoints = [points[0].y, points[1].y, points[2].y, points[3].y],\n          minY = fabric.util.array.min(yPoints),\n          maxY = fabric.util.array.max(yPoints),\n          height = maxY - minY;\n\n      return {\n        left: minX,\n        top: minY,\n        width: width,\n        height: height\n      };\n    },\n\n    /**\n     * Invert transformation t\n     * @static\n     * @memberOf fabric.util\n     * @param {Array} t The transform\n     * @return {Array} The inverted transform\n     */\n    invertTransform: function(t) {\n      var a = 1 / (t[0] * t[3] - t[1] * t[2]),\n          r = [a * t[3], -a * t[1], -a * t[2], a * t[0]],\n          o = fabric.util.transformPoint({ x: t[4], y: t[5] }, r, true);\n      r[4] = -o.x;\n      r[5] = -o.y;\n      return r;\n    },\n\n    /**\n     * A wrapper around Number#toFixed, which contrary to native method returns number, not string.\n     * @static\n     * @memberOf fabric.util\n     * @param {Number|String} number number to operate on\n     * @param {Number} fractionDigits number of fraction digits to \"leave\"\n     * @return {Number}\n     */\n    toFixed: function(number, fractionDigits) {\n      return parseFloat(Number(number).toFixed(fractionDigits));\n    },\n\n    /**\n     * Converts from attribute value to pixel value if applicable.\n     * Returns converted pixels or original value not converted.\n     * @param {Number|String} value number to operate on\n     * @param {Number} fontSize\n     * @return {Number|String}\n     */\n    parseUnit: function(value, fontSize) {\n      var unit = /\\D{0,2}$/.exec(value),\n          number = parseFloat(value);\n      if (!fontSize) {\n        fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n      }\n      switch (unit[0]) {\n        case 'mm':\n          return number * fabric.DPI / 25.4;\n\n        case 'cm':\n          return number * fabric.DPI / 2.54;\n\n        case 'in':\n          return number * fabric.DPI;\n\n        case 'pt':\n          return number * fabric.DPI / 72; // or * 4 / 3\n\n        case 'pc':\n          return number * fabric.DPI / 72 * 12; // or * 16\n\n        case 'em':\n          return number * fontSize;\n\n        default:\n          return number;\n      }\n    },\n\n    /**\n     * Function which always returns `false`.\n     * @static\n     * @memberOf fabric.util\n     * @return {Boolean}\n     */\n    falseFunction: function() {\n      return false;\n    },\n\n    /**\n     * Returns klass \"Class\" object of given namespace\n     * @memberOf fabric.util\n     * @param {String} type Type of object (eg. 'circle')\n     * @param {String} namespace Namespace to get klass \"Class\" object from\n     * @return {Object} klass \"Class\"\n     */\n    getKlass: function(type, namespace) {\n      // capitalize first letter only\n      type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1));\n      return fabric.util.resolveNamespace(namespace)[type];\n    },\n\n    /**\n     * Returns array of attributes for given svg that fabric parses\n     * @memberOf fabric.util\n     * @param {String} type Type of svg element (eg. 'circle')\n     * @return {Array} string names of supported attributes\n     */\n    getSvgAttributes: function(type) {\n      var attributes = [\n        'instantiated_by_use',\n        'style',\n        'id',\n        'class'\n      ];\n      switch (type) {\n        case 'linearGradient':\n          attributes = attributes.concat(['x1', 'y1', 'x2', 'y2', 'gradientUnits', 'gradientTransform']);\n          break;\n        case 'radialGradient':\n          attributes = attributes.concat(['gradientUnits', 'gradientTransform', 'cx', 'cy', 'r', 'fx', 'fy', 'fr']);\n          break;\n        case 'stop':\n          attributes = attributes.concat(['offset', 'stop-color', 'stop-opacity']);\n          break;\n      }\n      return attributes;\n    },\n\n    /**\n     * Returns object of given namespace\n     * @memberOf fabric.util\n     * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric'\n     * @return {Object} Object for given namespace (default fabric)\n     */\n    resolveNamespace: function(namespace) {\n      if (!namespace) {\n        return fabric;\n      }\n\n      var parts = namespace.split('.'),\n          len = parts.length, i,\n          obj = global || fabric.window;\n\n      for (i = 0; i < len; ++i) {\n        obj = obj[parts[i]];\n      }\n\n      return obj;\n    },\n\n    /**\n     * Loads image element from given url and passes it to a callback\n     * @memberOf fabric.util\n     * @param {String} url URL representing an image\n     * @param {Function} callback Callback; invoked with loaded image\n     * @param {*} [context] Context to invoke callback in\n     * @param {Object} [crossOrigin] crossOrigin value to set image element to\n     */\n    loadImage: function(url, callback, context, crossOrigin) {\n      if (!url) {\n        callback && callback.call(context, url);\n        return;\n      }\n\n      var img = fabric.util.createImage();\n\n      /** @ignore */\n      var onLoadCallback = function () {\n        callback && callback.call(context, img, false);\n        img = img.onload = img.onerror = null;\n      };\n\n      img.onload = onLoadCallback;\n      /** @ignore */\n      img.onerror = function() {\n        fabric.log('Error loading ' + img.src);\n        callback && callback.call(context, null, true);\n        img = img.onload = img.onerror = null;\n      };\n\n      // data-urls appear to be buggy with crossOrigin\n      // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767\n      // see https://code.google.com/p/chromium/issues/detail?id=315152\n      //     https://bugzilla.mozilla.org/show_bug.cgi?id=935069\n      // crossOrigin null is the same as not set.\n      if (url.indexOf('data') !== 0 &&\n        crossOrigin !== undefined &&\n        crossOrigin !== null) {\n        img.crossOrigin = crossOrigin;\n      }\n\n      // IE10 / IE11-Fix: SVG contents from data: URI\n      // will only be available if the IMG is present\n      // in the DOM (and visible)\n      if (url.substring(0,14) === 'data:image/svg') {\n        img.onload = null;\n        fabric.util.loadImageInDom(img, onLoadCallback);\n      }\n\n      img.src = url;\n    },\n\n    /**\n     * Attaches SVG image with data: URL to the dom\n     * @memberOf fabric.util\n     * @param {Object} img Image object with data:image/svg src\n     * @param {Function} callback Callback; invoked with loaded image\n     * @return {Object} DOM element (div containing the SVG image)\n     */\n    loadImageInDom: function(img, onLoadCallback) {\n      var div = fabric.document.createElement('div');\n      div.style.width = div.style.height = '1px';\n      div.style.left = div.style.top = '-100%';\n      div.style.position = 'absolute';\n      div.appendChild(img);\n      fabric.document.querySelector('body').appendChild(div);\n      /**\n       * Wrap in function to:\n       *   1. Call existing callback\n       *   2. Cleanup DOM\n       */\n      img.onload = function () {\n        onLoadCallback();\n        div.parentNode.removeChild(div);\n        div = null;\n      };\n    },\n\n    /**\n     * Creates corresponding fabric instances from their object representations\n     * @static\n     * @memberOf fabric.util\n     * @param {Array} objects Objects to enliven\n     * @param {Function} callback Callback to invoke when all objects are created\n     * @param {String} namespace Namespace to get klass \"Class\" object from\n     * @param {Function} reviver Method for further parsing of object elements,\n     * called after each fabric object created.\n     */\n    enlivenObjects: function(objects, callback, namespace, reviver) {\n      objects = objects || [];\n\n      var enlivenedObjects = [],\n          numLoadedObjects = 0,\n          numTotalObjects = objects.length;\n\n      function onLoaded() {\n        if (++numLoadedObjects === numTotalObjects) {\n          callback && callback(enlivenedObjects.filter(function(obj) {\n            // filter out undefined objects (objects that gave error)\n            return obj;\n          }));\n        }\n      }\n\n      if (!numTotalObjects) {\n        callback && callback(enlivenedObjects);\n        return;\n      }\n\n      objects.forEach(function (o, index) {\n        // if sparse array\n        if (!o || !o.type) {\n          onLoaded();\n          return;\n        }\n        var klass = fabric.util.getKlass(o.type, namespace);\n        klass.fromObject(o, function (obj, error) {\n          error || (enlivenedObjects[index] = obj);\n          reviver && reviver(o, obj, error);\n          onLoaded();\n        });\n      });\n    },\n\n    /**\n     * Create and wait for loading of patterns\n     * @static\n     * @memberOf fabric.util\n     * @param {Array} patterns Objects to enliven\n     * @param {Function} callback Callback to invoke when all objects are created\n     * called after each fabric object created.\n     */\n    enlivenPatterns: function(patterns, callback) {\n      patterns = patterns || [];\n\n      function onLoaded() {\n        if (++numLoadedPatterns === numPatterns) {\n          callback && callback(enlivenedPatterns);\n        }\n      }\n\n      var enlivenedPatterns = [],\n          numLoadedPatterns = 0,\n          numPatterns = patterns.length;\n\n      if (!numPatterns) {\n        callback && callback(enlivenedPatterns);\n        return;\n      }\n\n      patterns.forEach(function (p, index) {\n        if (p && p.source) {\n          new fabric.Pattern(p, function(pattern) {\n            enlivenedPatterns[index] = pattern;\n            onLoaded();\n          });\n        }\n        else {\n          enlivenedPatterns[index] = p;\n          onLoaded();\n        }\n      });\n    },\n\n    /**\n     * Groups SVG elements (usually those retrieved from SVG document)\n     * @static\n     * @memberOf fabric.util\n     * @param {Array} elements SVG elements to group\n     * @param {Object} [options] Options object\n     * @param {String} path Value to set sourcePath to\n     * @return {fabric.Object|fabric.Group}\n     */\n    groupSVGElements: function(elements, options, path) {\n      var object;\n      if (elements && elements.length === 1) {\n        return elements[0];\n      }\n      if (options) {\n        if (options.width && options.height) {\n          options.centerPoint = {\n            x: options.width / 2,\n            y: options.height / 2\n          };\n        }\n        else {\n          delete options.width;\n          delete options.height;\n        }\n      }\n      object = new fabric.Group(elements, options);\n      if (typeof path !== 'undefined') {\n        object.sourcePath = path;\n      }\n      return object;\n    },\n\n    /**\n     * Populates an object with properties of another object\n     * @static\n     * @memberOf fabric.util\n     * @param {Object} source Source object\n     * @param {Object} destination Destination object\n     * @return {Array} properties Properties names to include\n     */\n    populateWithProperties: function(source, destination, properties) {\n      if (properties && Object.prototype.toString.call(properties) === '[object Array]') {\n        for (var i = 0, len = properties.length; i < len; i++) {\n          if (properties[i] in source) {\n            destination[properties[i]] = source[properties[i]];\n          }\n        }\n      }\n    },\n\n    /**\n     * WARNING: THIS WAS TO SUPPORT OLD BROWSERS. deprecated.\n     * WILL BE REMOVED IN FABRIC 5.0\n     * Draws a dashed line between two points\n     *\n     * This method is used to draw dashed line around selection area.\n     * See <a href=\"http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas\">dotted stroke in canvas</a>\n     *\n     * @param {CanvasRenderingContext2D} ctx context\n     * @param {Number} x  start x coordinate\n     * @param {Number} y start y coordinate\n     * @param {Number} x2 end x coordinate\n     * @param {Number} y2 end y coordinate\n     * @param {Array} da dash array pattern\n     * @deprecated\n     */\n    drawDashedLine: function(ctx, x, y, x2, y2, da) {\n      var dx = x2 - x,\n          dy = y2 - y,\n          len = sqrt(dx * dx + dy * dy),\n          rot = atan2(dy, dx),\n          dc = da.length,\n          di = 0,\n          draw = true;\n\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.moveTo(0, 0);\n      ctx.rotate(rot);\n\n      x = 0;\n      while (len > x) {\n        x += da[di++ % dc];\n        if (x > len) {\n          x = len;\n        }\n        ctx[draw ? 'lineTo' : 'moveTo'](x, 0);\n        draw = !draw;\n      }\n\n      ctx.restore();\n    },\n\n    /**\n     * Creates canvas element\n     * @static\n     * @memberOf fabric.util\n     * @return {CanvasElement} initialized canvas element\n     */\n    createCanvasElement: function() {\n      return fabric.document.createElement('canvas');\n    },\n\n    /**\n     * Creates a canvas element that is a copy of another and is also painted\n     * @param {CanvasElement} canvas to copy size and content of\n     * @static\n     * @memberOf fabric.util\n     * @return {CanvasElement} initialized canvas element\n     */\n    copyCanvasElement: function(canvas) {\n      var newCanvas = fabric.util.createCanvasElement();\n      newCanvas.width = canvas.width;\n      newCanvas.height = canvas.height;\n      newCanvas.getContext('2d').drawImage(canvas, 0, 0);\n      return newCanvas;\n    },\n\n    /**\n     * since 2.6.0 moved from canvas instance to utility.\n     * @param {CanvasElement} canvasEl to copy size and content of\n     * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too\n     * @param {Number} quality <= 1 and > 0\n     * @static\n     * @memberOf fabric.util\n     * @return {String} data url\n     */\n    toDataURL: function(canvasEl, format, quality) {\n      return canvasEl.toDataURL('image/' + format, quality);\n    },\n\n    /**\n     * Creates image element (works on client and node)\n     * @static\n     * @memberOf fabric.util\n     * @return {HTMLImageElement} HTML image element\n     */\n    createImage: function() {\n      return fabric.document.createElement('img');\n    },\n\n    /**\n     * Multiply matrix A by matrix B to nest transformations\n     * @static\n     * @memberOf fabric.util\n     * @param  {Array} a First transformMatrix\n     * @param  {Array} b Second transformMatrix\n     * @param  {Boolean} is2x2 flag to multiply matrices as 2x2 matrices\n     * @return {Array} The product of the two transform matrices\n     */\n    multiplyTransformMatrices: function(a, b, is2x2) {\n      // Matrix multiply a * b\n      return [\n        a[0] * b[0] + a[2] * b[1],\n        a[1] * b[0] + a[3] * b[1],\n        a[0] * b[2] + a[2] * b[3],\n        a[1] * b[2] + a[3] * b[3],\n        is2x2 ? 0 : a[0] * b[4] + a[2] * b[5] + a[4],\n        is2x2 ? 0 : a[1] * b[4] + a[3] * b[5] + a[5]\n      ];\n    },\n\n    /**\n     * Decomposes standard 2x3 matrix into transform components\n     * @static\n     * @memberOf fabric.util\n     * @param  {Array} a transformMatrix\n     * @return {Object} Components of transform\n     */\n    qrDecompose: function(a) {\n      var angle = atan2(a[1], a[0]),\n          denom = pow(a[0], 2) + pow(a[1], 2),\n          scaleX = sqrt(denom),\n          scaleY = (a[0] * a[3] - a[2] * a[1]) / scaleX,\n          skewX = atan2(a[0] * a[2] + a[1] * a [3], denom);\n      return {\n        angle: angle / PiBy180,\n        scaleX: scaleX,\n        scaleY: scaleY,\n        skewX: skewX / PiBy180,\n        skewY: 0,\n        translateX: a[4],\n        translateY: a[5]\n      };\n    },\n\n    /**\n     * Returns a transform matrix starting from an object of the same kind of\n     * the one returned from qrDecompose, useful also if you want to calculate some\n     * transformations from an object that is not enlived yet\n     * @static\n     * @memberOf fabric.util\n     * @param  {Object} options\n     * @param  {Number} [options.angle] angle in degrees\n     * @return {Number[]} transform matrix\n     */\n    calcRotateMatrix: function(options) {\n      if (!options.angle) {\n        return fabric.iMatrix.concat();\n      }\n      var theta = fabric.util.degreesToRadians(options.angle),\n          cos = fabric.util.cos(theta),\n          sin = fabric.util.sin(theta);\n      return [cos, sin, -sin, cos, 0, 0];\n    },\n\n    /**\n     * Returns a transform matrix starting from an object of the same kind of\n     * the one returned from qrDecompose, useful also if you want to calculate some\n     * transformations from an object that is not enlived yet.\n     * is called DimensionsTransformMatrix because those properties are the one that influence\n     * the size of the resulting box of the object.\n     * @static\n     * @memberOf fabric.util\n     * @param  {Object} options\n     * @param  {Number} [options.scaleX]\n     * @param  {Number} [options.scaleY]\n     * @param  {Boolean} [options.flipX]\n     * @param  {Boolean} [options.flipY]\n     * @param  {Number} [options.skewX]\n     * @param  {Number} [options.skewX]\n     * @return {Number[]} transform matrix\n     */\n    calcDimensionsMatrix: function(options) {\n      var scaleX = typeof options.scaleX === 'undefined' ? 1 : options.scaleX,\n          scaleY = typeof options.scaleY === 'undefined' ? 1 : options.scaleY,\n          scaleMatrix = [\n            options.flipX ? -scaleX : scaleX,\n            0,\n            0,\n            options.flipY ? -scaleY : scaleY,\n            0,\n            0],\n          multiply = fabric.util.multiplyTransformMatrices,\n          degreesToRadians = fabric.util.degreesToRadians;\n      if (options.skewX) {\n        scaleMatrix = multiply(\n          scaleMatrix,\n          [1, 0, Math.tan(degreesToRadians(options.skewX)), 1],\n          true);\n      }\n      if (options.skewY) {\n        scaleMatrix = multiply(\n          scaleMatrix,\n          [1, Math.tan(degreesToRadians(options.skewY)), 0, 1],\n          true);\n      }\n      return scaleMatrix;\n    },\n\n    /**\n     * Returns a transform matrix starting from an object of the same kind of\n     * the one returned from qrDecompose, useful also if you want to calculate some\n     * transformations from an object that is not enlived yet\n     * @static\n     * @memberOf fabric.util\n     * @param  {Object} options\n     * @param  {Number} [options.angle]\n     * @param  {Number} [options.scaleX]\n     * @param  {Number} [options.scaleY]\n     * @param  {Boolean} [options.flipX]\n     * @param  {Boolean} [options.flipY]\n     * @param  {Number} [options.skewX]\n     * @param  {Number} [options.skewX]\n     * @param  {Number} [options.translateX]\n     * @param  {Number} [options.translateY]\n     * @return {Number[]} transform matrix\n     */\n    composeMatrix: function(options) {\n      var matrix = [1, 0, 0, 1, options.translateX || 0, options.translateY || 0],\n          multiply = fabric.util.multiplyTransformMatrices;\n      if (options.angle) {\n        matrix = multiply(matrix, fabric.util.calcRotateMatrix(options));\n      }\n      if (options.scaleX !== 1 || options.scaleY !== 1 ||\n          options.skewX || options.skewY || options.flipX || options.flipY) {\n        matrix = multiply(matrix, fabric.util.calcDimensionsMatrix(options));\n      }\n      return matrix;\n    },\n\n    /**\n     * reset an object transform state to neutral. Top and left are not accounted for\n     * @static\n     * @memberOf fabric.util\n     * @param  {fabric.Object} target object to transform\n     */\n    resetObjectTransform: function (target) {\n      target.scaleX = 1;\n      target.scaleY = 1;\n      target.skewX = 0;\n      target.skewY = 0;\n      target.flipX = false;\n      target.flipY = false;\n      target.rotate(0);\n    },\n\n    /**\n     * Extract Object transform values\n     * @static\n     * @memberOf fabric.util\n     * @param  {fabric.Object} target object to read from\n     * @return {Object} Components of transform\n     */\n    saveObjectTransform: function (target) {\n      return {\n        scaleX: target.scaleX,\n        scaleY: target.scaleY,\n        skewX: target.skewX,\n        skewY: target.skewY,\n        angle: target.angle,\n        left: target.left,\n        flipX: target.flipX,\n        flipY: target.flipY,\n        top: target.top\n      };\n    },\n\n    /**\n     * Returns true if context has transparent pixel\n     * at specified location (taking tolerance into account)\n     * @param {CanvasRenderingContext2D} ctx context\n     * @param {Number} x x coordinate\n     * @param {Number} y y coordinate\n     * @param {Number} tolerance Tolerance\n     */\n    isTransparent: function(ctx, x, y, tolerance) {\n\n      // If tolerance is > 0 adjust start coords to take into account.\n      // If moves off Canvas fix to 0\n      if (tolerance > 0) {\n        if (x > tolerance) {\n          x -= tolerance;\n        }\n        else {\n          x = 0;\n        }\n        if (y > tolerance) {\n          y -= tolerance;\n        }\n        else {\n          y = 0;\n        }\n      }\n\n      var _isTransparent = true, i, temp,\n          imageData = ctx.getImageData(x, y, (tolerance * 2) || 1, (tolerance * 2) || 1),\n          l = imageData.data.length;\n\n      // Split image data - for tolerance > 1, pixelDataSize = 4;\n      for (i = 3; i < l; i += 4) {\n        temp = imageData.data[i];\n        _isTransparent = temp <= 0;\n        if (_isTransparent === false) {\n          break; // Stop if colour found\n        }\n      }\n\n      imageData = null;\n\n      return _isTransparent;\n    },\n\n    /**\n     * Parse preserveAspectRatio attribute from element\n     * @param {string} attribute to be parsed\n     * @return {Object} an object containing align and meetOrSlice attribute\n     */\n    parsePreserveAspectRatioAttribute: function(attribute) {\n      var meetOrSlice = 'meet', alignX = 'Mid', alignY = 'Mid',\n          aspectRatioAttrs = attribute.split(' '), align;\n\n      if (aspectRatioAttrs && aspectRatioAttrs.length) {\n        meetOrSlice = aspectRatioAttrs.pop();\n        if (meetOrSlice !== 'meet' && meetOrSlice !== 'slice') {\n          align = meetOrSlice;\n          meetOrSlice = 'meet';\n        }\n        else if (aspectRatioAttrs.length) {\n          align = aspectRatioAttrs.pop();\n        }\n      }\n      //divide align in alignX and alignY\n      alignX = align !== 'none' ? align.slice(1, 4) : 'none';\n      alignY = align !== 'none' ? align.slice(5, 8) : 'none';\n      return {\n        meetOrSlice: meetOrSlice,\n        alignX: alignX,\n        alignY: alignY\n      };\n    },\n\n    /**\n     * Clear char widths cache for the given font family or all the cache if no\n     * fontFamily is specified.\n     * Use it if you know you are loading fonts in a lazy way and you are not waiting\n     * for custom fonts to load properly when adding text objects to the canvas.\n     * If a text object is added when its own font is not loaded yet, you will get wrong\n     * measurement and so wrong bounding boxes.\n     * After the font cache is cleared, either change the textObject text content or call\n     * initDimensions() to trigger a recalculation\n     * @memberOf fabric.util\n     * @param {String} [fontFamily] font family to clear\n     */\n    clearFabricFontCache: function(fontFamily) {\n      fontFamily = (fontFamily || '').toLowerCase();\n      if (!fontFamily) {\n        fabric.charWidthsCache = { };\n      }\n      else if (fabric.charWidthsCache[fontFamily]) {\n        delete fabric.charWidthsCache[fontFamily];\n      }\n    },\n\n    /**\n     * Given current aspect ratio, determines the max width and height that can\n     * respect the total allowed area for the cache.\n     * @memberOf fabric.util\n     * @param {Number} ar aspect ratio\n     * @param {Number} maximumArea Maximum area you want to achieve\n     * @return {Object.x} Limited dimensions by X\n     * @return {Object.y} Limited dimensions by Y\n     */\n    limitDimsByArea: function(ar, maximumArea) {\n      var roughWidth = Math.sqrt(maximumArea * ar),\n          perfLimitSizeY = Math.floor(maximumArea / roughWidth);\n      return { x: Math.floor(roughWidth), y: perfLimitSizeY };\n    },\n\n    capValue: function(min, value, max) {\n      return Math.max(min, Math.min(value, max));\n    },\n\n    /**\n     * Finds the scale for the object source to fit inside the object destination,\n     * keeping aspect ratio intact.\n     * respect the total allowed area for the cache.\n     * @memberOf fabric.util\n     * @param {Object | fabric.Object} source\n     * @param {Number} source.height natural unscaled height of the object\n     * @param {Number} source.width natural unscaled width of the object\n     * @param {Object | fabric.Object} destination\n     * @param {Number} destination.height natural unscaled height of the object\n     * @param {Number} destination.width natural unscaled width of the object\n     * @return {Number} scale factor to apply to source to fit into destination\n     */\n    findScaleToFit: function(source, destination) {\n      return Math.min(destination.width / source.width, destination.height / source.height);\n    },\n\n    /**\n     * Finds the scale for the object source to cover entirely the object destination,\n     * keeping aspect ratio intact.\n     * respect the total allowed area for the cache.\n     * @memberOf fabric.util\n     * @param {Object | fabric.Object} source\n     * @param {Number} source.height natural unscaled height of the object\n     * @param {Number} source.width natural unscaled width of the object\n     * @param {Object | fabric.Object} destination\n     * @param {Number} destination.height natural unscaled height of the object\n     * @param {Number} destination.width natural unscaled width of the object\n     * @return {Number} scale factor to apply to source to cover destination\n     */\n    findScaleToCover: function(source, destination) {\n      return Math.max(destination.width / source.width, destination.height / source.height);\n    },\n\n    /**\n     * given an array of 6 number returns something like `\"matrix(...numbers)\"`\n     * @memberOf fabric.util\n     * @param {Array} transform an array with 6 numbers\n     * @return {String} transform matrix for svg\n     * @return {Object.y} Limited dimensions by Y\n     */\n    matrixToSVG: function(transform) {\n      return 'matrix(' + transform.map(function(value) {\n        return fabric.util.toFixed(value, fabric.Object.NUM_FRACTION_DIGITS);\n      }).join(' ') + ')';\n    },\n\n    /**\n     * given an object and a transform, apply the inverse transform to the object,\n     * this is equivalent to remove from that object that transformation, so that\n     * added in a space with the removed transform, the object will be the same as before.\n     * Removing from an object a transform that scale by 2 is like scaling it by 1/2.\n     * Removing from an object a transfrom that rotate by 30deg is like rotating by 30deg\n     * in the opposite direction.\n     * This util is used to add objects inside transformed groups or nested groups.\n     * @memberOf fabric.util\n     * @param {fabric.Object} object the object you want to transform\n     * @param {Array} transform the destination transform\n     */\n    removeTransformFromObject: function(object, transform) {\n      var inverted = fabric.util.invertTransform(transform),\n          finalTransform = fabric.util.multiplyTransformMatrices(inverted, object.calcOwnMatrix());\n      fabric.util.applyTransformToObject(object, finalTransform);\n    },\n\n    /**\n     * given an object and a transform, apply the transform to the object.\n     * this is equivalent to change the space where the object is drawn.\n     * Adding to an object a transform that scale by 2 is like scaling it by 2.\n     * This is used when removing an object from an active selection for example.\n     * @memberOf fabric.util\n     * @param {fabric.Object} object the object you want to transform\n     * @param {Array} transform the destination transform\n     */\n    addTransformToObject: function(object, transform) {\n      fabric.util.applyTransformToObject(\n        object,\n        fabric.util.multiplyTransformMatrices(transform, object.calcOwnMatrix())\n      );\n    },\n\n    /**\n     * discard an object transform state and apply the one from the matrix.\n     * @memberOf fabric.util\n     * @param {fabric.Object} object the object you want to transform\n     * @param {Array} transform the destination transform\n     */\n    applyTransformToObject: function(object, transform) {\n      var options = fabric.util.qrDecompose(transform),\n          center = new fabric.Point(options.translateX, options.translateY);\n      object.flipX = false;\n      object.flipY = false;\n      object.set('scaleX', options.scaleX);\n      object.set('scaleY', options.scaleY);\n      object.skewX = options.skewX;\n      object.skewY = options.skewY;\n      object.angle = options.angle;\n      object.setPositionByOrigin(center, 'center', 'center');\n    },\n\n    /**\n     * given a width and height, return the size of the bounding box\n     * that can contains the box with width/height with applied transform\n     * described in options.\n     * Use to calculate the boxes around objects for controls.\n     * @memberOf fabric.util\n     * @param {Number} width\n     * @param {Number} height\n     * @param {Object} options\n     * @param {Number} options.scaleX\n     * @param {Number} options.scaleY\n     * @param {Number} options.skewX\n     * @param {Number} options.skewY\n     * @return {Object.x} width of containing\n     * @return {Object.y} height of containing\n     */\n    sizeAfterTransform: function(width, height, options) {\n      var dimX = width / 2, dimY = height / 2,\n          points = [\n            {\n              x: -dimX,\n              y: -dimY\n            },\n            {\n              x: dimX,\n              y: -dimY\n            },\n            {\n              x: -dimX,\n              y: dimY\n            },\n            {\n              x: dimX,\n              y: dimY\n            }],\n          transformMatrix = fabric.util.calcDimensionsMatrix(options),\n          bbox = fabric.util.makeBoundingBoxFromPoints(points, transformMatrix);\n      return {\n        x: bbox.width,\n        y: bbox.height,\n      };\n    }\n  };\n})( true ? exports : undefined);\n\n\n(function() {\n  var _join = Array.prototype.join,\n      commandLengths = {\n        m: 2,\n        l: 2,\n        h: 1,\n        v: 1,\n        c: 6,\n        s: 4,\n        q: 4,\n        t: 2,\n        a: 7\n      },\n      repeatedCommands = {\n        m: 'l',\n        M: 'L'\n      };\n  function segmentToBezier(th2, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY) {\n    var costh2 = fabric.util.cos(th2),\n        sinth2 = fabric.util.sin(th2),\n        costh3 = fabric.util.cos(th3),\n        sinth3 = fabric.util.sin(th3),\n        toX = cosTh * rx * costh3 - sinTh * ry * sinth3 + cx1,\n        toY = sinTh * rx * costh3 + cosTh * ry * sinth3 + cy1,\n        cp1X = fromX + mT * ( -cosTh * rx * sinth2 - sinTh * ry * costh2),\n        cp1Y = fromY + mT * ( -sinTh * rx * sinth2 + cosTh * ry * costh2),\n        cp2X = toX + mT * ( cosTh * rx * sinth3 + sinTh * ry * costh3),\n        cp2Y = toY + mT * ( sinTh * rx * sinth3 - cosTh * ry * costh3);\n\n    return ['C',\n      cp1X, cp1Y,\n      cp2X, cp2Y,\n      toX, toY\n    ];\n  }\n\n  /* Adapted from http://dxr.mozilla.org/mozilla-central/source/content/svg/content/src/nsSVGPathDataParser.cpp\n   * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here\n   * http://mozilla.org/MPL/2.0/\n   */\n  function arcToSegments(toX, toY, rx, ry, large, sweep, rotateX) {\n    var PI = Math.PI, th = rotateX * PI / 180,\n        sinTh = fabric.util.sin(th),\n        cosTh = fabric.util.cos(th),\n        fromX = 0, fromY = 0;\n\n    rx = Math.abs(rx);\n    ry = Math.abs(ry);\n\n    var px = -cosTh * toX * 0.5 - sinTh * toY * 0.5,\n        py = -cosTh * toY * 0.5 + sinTh * toX * 0.5,\n        rx2 = rx * rx, ry2 = ry * ry, py2 = py * py, px2 = px * px,\n        pl = rx2 * ry2 - rx2 * py2 - ry2 * px2,\n        root = 0;\n\n    if (pl < 0) {\n      var s = Math.sqrt(1 - pl / (rx2 * ry2));\n      rx *= s;\n      ry *= s;\n    }\n    else {\n      root = (large === sweep ? -1.0 : 1.0) *\n              Math.sqrt( pl / (rx2 * py2 + ry2 * px2));\n    }\n\n    var cx = root * rx * py / ry,\n        cy = -root * ry * px / rx,\n        cx1 = cosTh * cx - sinTh * cy + toX * 0.5,\n        cy1 = sinTh * cx + cosTh * cy + toY * 0.5,\n        mTheta = calcVectorAngle(1, 0, (px - cx) / rx, (py - cy) / ry),\n        dtheta = calcVectorAngle((px - cx) / rx, (py - cy) / ry, (-px - cx) / rx, (-py - cy) / ry);\n\n    if (sweep === 0 && dtheta > 0) {\n      dtheta -= 2 * PI;\n    }\n    else if (sweep === 1 && dtheta < 0) {\n      dtheta += 2 * PI;\n    }\n\n    // Convert into cubic bezier segments <= 90deg\n    var segments = Math.ceil(Math.abs(dtheta / PI * 2)),\n        result = [], mDelta = dtheta / segments,\n        mT = 8 / 3 * Math.sin(mDelta / 4) * Math.sin(mDelta / 4) / Math.sin(mDelta / 2),\n        th3 = mTheta + mDelta;\n\n    for (var i = 0; i < segments; i++) {\n      result[i] = segmentToBezier(mTheta, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY);\n      fromX = result[i][5];\n      fromY = result[i][6];\n      mTheta = th3;\n      th3 += mDelta;\n    }\n    return result;\n  }\n\n  /*\n   * Private\n   */\n  function calcVectorAngle(ux, uy, vx, vy) {\n    var ta = Math.atan2(uy, ux),\n        tb = Math.atan2(vy, vx);\n    if (tb >= ta) {\n      return tb - ta;\n    }\n    else {\n      return 2 * Math.PI - (ta - tb);\n    }\n  }\n\n  /**\n   * Calculate bounding box of a beziercurve\n   * @param {Number} x0 starting point\n   * @param {Number} y0\n   * @param {Number} x1 first control point\n   * @param {Number} y1\n   * @param {Number} x2 secondo control point\n   * @param {Number} y2\n   * @param {Number} x3 end of bezier\n   * @param {Number} y3\n   */\n  // taken from http://jsbin.com/ivomiq/56/edit  no credits available for that.\n  // TODO: can we normalize this with the starting points set at 0 and then translated the bbox?\n  function getBoundsOfCurve(x0, y0, x1, y1, x2, y2, x3, y3) {\n    var argsString;\n    if (fabric.cachesBoundsOfCurve) {\n      argsString = _join.call(arguments);\n      if (fabric.boundsOfCurveCache[argsString]) {\n        return fabric.boundsOfCurveCache[argsString];\n      }\n    }\n\n    var sqrt = Math.sqrt,\n        min = Math.min, max = Math.max,\n        abs = Math.abs, tvalues = [],\n        bounds = [[], []],\n        a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n    b = 6 * x0 - 12 * x1 + 6 * x2;\n    a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n    c = 3 * x1 - 3 * x0;\n\n    for (var i = 0; i < 2; ++i) {\n      if (i > 0) {\n        b = 6 * y0 - 12 * y1 + 6 * y2;\n        a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n        c = 3 * y1 - 3 * y0;\n      }\n\n      if (abs(a) < 1e-12) {\n        if (abs(b) < 1e-12) {\n          continue;\n        }\n        t = -c / b;\n        if (0 < t && t < 1) {\n          tvalues.push(t);\n        }\n        continue;\n      }\n      b2ac = b * b - 4 * c * a;\n      if (b2ac < 0) {\n        continue;\n      }\n      sqrtb2ac = sqrt(b2ac);\n      t1 = (-b + sqrtb2ac) / (2 * a);\n      if (0 < t1 && t1 < 1) {\n        tvalues.push(t1);\n      }\n      t2 = (-b - sqrtb2ac) / (2 * a);\n      if (0 < t2 && t2 < 1) {\n        tvalues.push(t2);\n      }\n    }\n\n    var x, y, j = tvalues.length, jlen = j, mt;\n    while (j--) {\n      t = tvalues[j];\n      mt = 1 - t;\n      x = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3);\n      bounds[0][j] = x;\n\n      y = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3);\n      bounds[1][j] = y;\n    }\n\n    bounds[0][jlen] = x0;\n    bounds[1][jlen] = y0;\n    bounds[0][jlen + 1] = x3;\n    bounds[1][jlen + 1] = y3;\n    var result = [\n      {\n        x: min.apply(null, bounds[0]),\n        y: min.apply(null, bounds[1])\n      },\n      {\n        x: max.apply(null, bounds[0]),\n        y: max.apply(null, bounds[1])\n      }\n    ];\n    if (fabric.cachesBoundsOfCurve) {\n      fabric.boundsOfCurveCache[argsString] = result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts arc to a bunch of bezier curves\n   * @param {Number} fx starting point x\n   * @param {Number} fy starting point y\n   * @param {Array} coords Arc command\n   */\n  function fromArcToBeziers(fx, fy, coords) {\n    var rx = coords[1],\n        ry = coords[2],\n        rot = coords[3],\n        large = coords[4],\n        sweep = coords[5],\n        tx = coords[6],\n        ty = coords[7],\n        segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n    for (var i = 0, len = segsNorm.length; i < len; i++) {\n      segsNorm[i][1] += fx;\n      segsNorm[i][2] += fy;\n      segsNorm[i][3] += fx;\n      segsNorm[i][4] += fy;\n      segsNorm[i][5] += fx;\n      segsNorm[i][6] += fy;\n    }\n    return segsNorm;\n  };\n\n  /**\n   * This function take a parsed SVG path and make it simpler for fabricJS logic.\n   * simplification consist of: only UPPERCASE absolute commands ( relative converted to absolute )\n   * S converted in C, T converted in Q, A converted in C.\n   * @param {Array} path the array of commands of a parsed svg path for fabric.Path\n   * @return {Array} the simplified array of commands of a parsed svg path for fabric.Path\n   */\n  function makePathSimpler(path) {\n    // x and y represent the last point of the path. the previous command point.\n    // we add them to each relative command to make it an absolute comment.\n    // we also swap the v V h H with L, because are easier to transform.\n    var x = 0, y = 0, len = path.length,\n        // x1 and y1 represent the last point of the subpath. the subpath is started with\n        // m or M command. When a z or Z command is drawn, x and y need to be resetted to\n        // the last x1 and y1.\n        x1 = 0, y1 = 0, current, i, converted,\n        // previous will host the letter of the previous command, to handle S and T.\n        // controlX and controlY will host the previous reflected control point\n        destinationPath = [], previous, controlX, controlY;\n    for (i = 0; i < len; ++i) {\n      converted = false;\n      current = path[i].slice(0);\n      switch (current[0]) { // first letter\n        case 'l': // lineto, relative\n          current[0] = 'L';\n          current[1] += x;\n          current[2] += y;\n          // falls through\n        case 'L':\n          x = current[1];\n          y = current[2];\n          break;\n        case 'h': // horizontal lineto, relative\n          current[1] += x;\n          // falls through\n        case 'H':\n          current[0] = 'L';\n          current[2] = y;\n          x = current[1];\n          break;\n        case 'v': // vertical lineto, relative\n          current[1] += y;\n          // falls through\n        case 'V':\n          current[0] = 'L';\n          y = current[1];\n          current[1] = x;\n          current[2] = y;\n          break;\n        case 'm': // moveTo, relative\n          current[0] = 'M';\n          current[1] += x;\n          current[2] += y;\n          // falls through\n        case 'M':\n          x = current[1];\n          y = current[2];\n          x1 = current[1];\n          y1 = current[2];\n          break;\n        case 'c': // bezierCurveTo, relative\n          current[0] = 'C';\n          current[1] += x;\n          current[2] += y;\n          current[3] += x;\n          current[4] += y;\n          current[5] += x;\n          current[6] += y;\n          // falls through\n        case 'C':\n          controlX = current[3];\n          controlY = current[4];\n          x = current[5];\n          y = current[6];\n          break;\n        case 's': // shorthand cubic bezierCurveTo, relative\n          current[0] = 'S';\n          current[1] += x;\n          current[2] += y;\n          current[3] += x;\n          current[4] += y;\n          // falls through\n        case 'S':\n          // would be sScC but since we are swapping sSc for C, we check just that.\n          if (previous === 'C') {\n            // calculate reflection of previous control points\n            controlX = 2 * x - controlX;\n            controlY = 2 * y - controlY;\n          }\n          else {\n            // If there is no previous command or if the previous command was not a C, c, S, or s,\n            // the control point is coincident with the current point\n            controlX = x;\n            controlY = y;\n          }\n          x = current[3];\n          y = current[4];\n          current[0] = 'C';\n          current[5] = current[3];\n          current[6] = current[4];\n          current[3] = current[1];\n          current[4] = current[2];\n          current[1] = controlX;\n          current[2] = controlY;\n          // current[3] and current[4] are NOW the second control point.\n          // we keep it for the next reflection.\n          controlX = current[3];\n          controlY = current[4];\n          break;\n        case 'q': // quadraticCurveTo, relative\n          current[0] = 'Q';\n          current[1] += x;\n          current[2] += y;\n          current[3] += x;\n          current[4] += y;\n          // falls through\n        case 'Q':\n          controlX = current[1];\n          controlY = current[2];\n          x = current[3];\n          y = current[4];\n          break;\n        case 't': // shorthand quadraticCurveTo, relative\n          current[0] = 'T';\n          current[1] += x;\n          current[2] += y;\n          // falls through\n        case 'T':\n          if (previous === 'Q') {\n            // calculate reflection of previous control point\n            controlX = 2 * x - controlX;\n            controlY = 2 * y - controlY;\n          }\n          else {\n            // If there is no previous command or if the previous command was not a Q, q, T or t,\n            // assume the control point is coincident with the current point\n            controlX = x;\n            controlY = y;\n          }\n          current[0] = 'Q';\n          x = current[1];\n          y = current[2];\n          current[1] = controlX;\n          current[2] = controlY;\n          current[3] = x;\n          current[4] = y;\n          break;\n        case 'a':\n          current[0] = 'A';\n          current[6] += x;\n          current[7] += y;\n          // falls through\n        case 'A':\n          converted = true;\n          destinationPath = destinationPath.concat(fromArcToBeziers(x, y, current));\n          x = current[6];\n          y = current[7];\n          break;\n        case 'z':\n        case 'Z':\n          x = x1;\n          y = y1;\n          break;\n        default:\n      }\n      if (!converted) {\n        destinationPath.push(current);\n      }\n      previous = current[0];\n    }\n    return destinationPath;\n  };\n\n  /**\n   * Calc length from point x1,y1 to x2,y2\n   * @param {Number} x1 starting point x\n   * @param {Number} y1 starting point y\n   * @param {Number} x2 starting point x\n   * @param {Number} y2 starting point y\n   * @return {Number} length of segment\n   */\n  function calcLineLength(x1, y1, x2, y2) {\n    return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n  }\n\n  // functions for the Cubic beizer\n  // taken from: https://github.com/konvajs/konva/blob/7.0.5/src/shapes/Path.ts#L350\n  function CB1(t) {\n    return t * t * t;\n  }\n  function CB2(t) {\n    return 3 * t * t * (1 - t);\n  }\n  function CB3(t) {\n    return 3 * t * (1 - t) * (1 - t);\n  }\n  function CB4(t) {\n    return (1 - t) * (1 - t) * (1 - t);\n  }\n\n  function getPointOnCubicBezierIterator(p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n    return function(pct) {\n      var c1 = CB1(pct), c2 = CB2(pct), c3 = CB3(pct), c4 = CB4(pct);\n      return {\n        x: p4x * c1 + p3x * c2 + p2x * c3 + p1x * c4,\n        y: p4y * c1 + p3y * c2 + p2y * c3 + p1y * c4\n      };\n    };\n  }\n\n  function getTangentCubicIterator(p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n    return function (pct) {\n      var invT = 1 - pct,\n          tangentX = (3 * invT * invT * (p2x - p1x)) + (6 * invT * pct * (p3x - p2x)) +\n          (3 * pct * pct * (p4x - p3x)),\n          tangentY = (3 * invT * invT * (p2y - p1y)) + (6 * invT * pct * (p3y - p2y)) +\n          (3 * pct * pct * (p4y - p3y));\n      return Math.atan2(tangentY, tangentX);\n    };\n  }\n\n  function QB1(t) {\n    return t * t;\n  }\n\n  function QB2(t) {\n    return 2 * t * (1 - t);\n  }\n\n  function QB3(t) {\n    return (1 - t) * (1 - t);\n  }\n\n  function getPointOnQuadraticBezierIterator(p1x, p1y, p2x, p2y, p3x, p3y) {\n    return function(pct) {\n      var c1 = QB1(pct), c2 = QB2(pct), c3 = QB3(pct);\n      return {\n        x: p3x * c1 + p2x * c2 + p1x * c3,\n        y: p3y * c1 + p2y * c2 + p1y * c3\n      };\n    };\n  }\n\n  function getTangentQuadraticIterator(p1x, p1y, p2x, p2y, p3x, p3y) {\n    return function (pct) {\n      var invT = 1 - pct,\n          tangentX = (2 * invT * (p2x - p1x)) + (2 * pct * (p3x - p2x)),\n          tangentY = (2 * invT * (p2y - p1y)) + (2 * pct * (p3y - p2y));\n      return Math.atan2(tangentY, tangentX);\n    };\n  }\n\n\n  // this will run over a path segment ( a cubic or quadratic segment) and approximate it\n  // with 100 segemnts. This will good enough to calculate the length of the curve\n  function pathIterator(iterator, x1, y1) {\n    var tempP = { x: x1, y: y1 }, p, tmpLen = 0, perc;\n    for (perc = 1; perc <= 100; perc += 1) {\n      p = iterator(perc / 100);\n      tmpLen += calcLineLength(tempP.x, tempP.y, p.x, p.y);\n      tempP = p;\n    }\n    return tmpLen;\n  }\n\n  /**\n   * Given a pathInfo, and a distance in pixels, find the percentage from 0 to 1\n   * that correspond to that pixels run over the path.\n   * The percentage will be then used to find the correct point on the canvas for the path.\n   * @param {Array} segInfo fabricJS collection of information on a parsed path\n   * @param {Number} distance from starting point, in pixels.\n   * @return {Object} info object with x and y ( the point on canvas ) and angle, the tangent on that point;\n   */\n  function findPercentageForDistance(segInfo, distance) {\n    var perc = 0, tmpLen = 0, iterator = segInfo.iterator, tempP = { x: segInfo.x, y: segInfo.y },\n        p, nextLen, nextStep = 0.01, angleFinder = segInfo.angleFinder, lastPerc;\n    // nextStep > 0.0001 covers 0.00015625 that 1/64th of 1/100\n    // the path\n    while (tmpLen < distance && perc <= 1 && nextStep > 0.0001) {\n      p = iterator(perc);\n      lastPerc = perc;\n      nextLen = calcLineLength(tempP.x, tempP.y, p.x, p.y);\n      // compare tmpLen each cycle with distance, decide next perc to test.\n      if ((nextLen + tmpLen) > distance) {\n        // we discard this step and we make smaller steps.\n        nextStep /= 2;\n        perc -= nextStep;\n      }\n      else {\n        tempP = p;\n        perc += nextStep;\n        tmpLen += nextLen;\n      }\n    }\n    p.angle = angleFinder(lastPerc);\n    return p;\n  }\n\n  /**\n   * Run over a parsed and simplifed path and extrac some informations.\n   * informations are length of each command and starting point\n   * @param {Array} path fabricJS parsed path commands\n   * @return {Array} path commands informations\n   */\n  function getPathSegmentsInfo(path) {\n    var totalLength = 0, len = path.length, current,\n        //x2 and y2 are the coords of segment start\n        //x1 and y1 are the coords of the current point\n        x1 = 0, y1 = 0, x2 = 0, y2 = 0, info = [], iterator, tempInfo, angleFinder;\n    for (var i = 0; i < len; i++) {\n      current = path[i];\n      tempInfo = {\n        x: x1,\n        y: y1,\n        command: current[0],\n      };\n      switch (current[0]) { //first letter\n        case 'M':\n          tempInfo.length = 0;\n          x2 = x1 = current[1];\n          y2 = y1 = current[2];\n          break;\n        case 'L':\n          tempInfo.length = calcLineLength(x1, y1, current[1], current[2]);\n          x1 = current[1];\n          y1 = current[2];\n          break;\n        case 'C':\n          iterator = getPointOnCubicBezierIterator(\n            x1,\n            y1,\n            current[1],\n            current[2],\n            current[3],\n            current[4],\n            current[5],\n            current[6]\n          );\n          angleFinder = getTangentCubicIterator(\n            x1,\n            y1,\n            current[1],\n            current[2],\n            current[3],\n            current[4],\n            current[5],\n            current[6]\n          );\n          tempInfo.iterator = iterator;\n          tempInfo.angleFinder = angleFinder;\n          tempInfo.length = pathIterator(iterator, x1, y1);\n          x1 = current[5];\n          y1 = current[6];\n          break;\n        case 'Q':\n          iterator = getPointOnQuadraticBezierIterator(\n            x1,\n            y1,\n            current[1],\n            current[2],\n            current[3],\n            current[4]\n          );\n          angleFinder = getTangentQuadraticIterator(\n            x1,\n            y1,\n            current[1],\n            current[2],\n            current[3],\n            current[4]\n          );\n          tempInfo.iterator = iterator;\n          tempInfo.angleFinder = angleFinder;\n          tempInfo.length = pathIterator(iterator, x1, y1);\n          x1 = current[3];\n          y1 = current[4];\n          break;\n        case 'Z':\n        case 'z':\n          // we add those in order to ease calculations later\n          tempInfo.destX = x2;\n          tempInfo.destY = y2;\n          tempInfo.length = calcLineLength(x1, y1, x2, y2);\n          x1 = x2;\n          y1 = y2;\n          break;\n      }\n      totalLength += tempInfo.length;\n      info.push(tempInfo);\n    }\n    info.push({ length: totalLength, x: x1, y: y1 });\n    return info;\n  }\n\n  function getPointOnPath(path, distance, infos) {\n    if (!infos) {\n      infos = getPathSegmentsInfo(path);\n    }\n    var i = 0;\n    while ((distance - infos[i].length > 0) && i < (infos.length - 2)) {\n      distance -= infos[i].length;\n      i++;\n    }\n    // var distance = infos[infos.length - 1] * perc;\n    var segInfo = infos[i], segPercent = distance / segInfo.length,\n        command = segInfo.command, segment = path[i], info;\n\n    switch (command) {\n      case 'M':\n        return { x: segInfo.x, y: segInfo.y, angle: 0 };\n      case 'Z':\n      case 'z':\n        info = new fabric.Point(segInfo.x, segInfo.y).lerp(\n          new fabric.Point(segInfo.destX, segInfo.destY),\n          segPercent\n        );\n        info.angle = Math.atan2(segInfo.destY - segInfo.y, segInfo.destX - segInfo.x);\n        return info;\n      case 'L':\n        info = new fabric.Point(segInfo.x, segInfo.y).lerp(\n          new fabric.Point(segment[1], segment[2]),\n          segPercent\n        );\n        info.angle = Math.atan2(segment[2] - segInfo.y, segment[1] - segInfo.x);\n        return info;\n      case 'C':\n        return findPercentageForDistance(segInfo, distance);\n      case 'Q':\n        return findPercentageForDistance(segInfo, distance);\n    }\n  }\n\n  /**\n   *\n   * @param {string} pathString\n   * @return {(string|number)[][]} An array of SVG path commands\n   * @example <caption>Usage</caption>\n   * parsePath('M 3 4 Q 3 5 2 1 4 0 Q 9 12 2 1 4 0') === [\n   *   ['M', 3, 4],\n   *   ['Q', 3, 5, 2, 1, 4, 0],\n   *   ['Q', 9, 12, 2, 1, 4, 0],\n   * ];\n   *\n   */\n  function parsePath(pathString) {\n    var result = [],\n        coords = [],\n        currentPath,\n        parsed,\n        re = fabric.rePathCommand,\n        rNumber = '[-+]?(?:\\\\d*\\\\.\\\\d+|\\\\d+\\\\.?)(?:[eE][-+]?\\\\d+)?\\\\s*',\n        rNumberCommaWsp = '(' + rNumber + ')' + fabric.commaWsp,\n        rFlagCommaWsp = '([01])' + fabric.commaWsp + '?',\n        rArcSeq = rNumberCommaWsp + '?' + rNumberCommaWsp + '?' + rNumberCommaWsp + rFlagCommaWsp + rFlagCommaWsp +\n          rNumberCommaWsp + '?(' + rNumber + ')',\n        regArcArgumentSequence = new RegExp(rArcSeq, 'g'),\n        match,\n        coordsStr,\n        // one of commands (m,M,l,L,q,Q,c,C,etc.) followed by non-command characters (i.e. command values)\n        path;\n    if (!pathString || !pathString.match) {\n      return result;\n    }\n    path = pathString.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi);\n\n    for (var i = 0, coordsParsed, len = path.length; i < len; i++) {\n      currentPath = path[i];\n\n      coordsStr = currentPath.slice(1).trim();\n      coords.length = 0;\n\n      var command = currentPath.charAt(0);\n      coordsParsed = [command];\n\n      if (command.toLowerCase() === 'a') {\n        // arcs have special flags that apparently don't require spaces so handle special\n        for (var args; (args = regArcArgumentSequence.exec(coordsStr));) {\n          for (var j = 1; j < args.length; j++) {\n            coords.push(args[j]);\n          }\n        }\n      }\n      else {\n        while ((match = re.exec(coordsStr))) {\n          coords.push(match[0]);\n        }\n      }\n\n      for (var j = 0, jlen = coords.length; j < jlen; j++) {\n        parsed = parseFloat(coords[j]);\n        if (!isNaN(parsed)) {\n          coordsParsed.push(parsed);\n        }\n      }\n\n      var commandLength = commandLengths[command.toLowerCase()],\n          repeatedCommand = repeatedCommands[command] || command;\n\n      if (coordsParsed.length - 1 > commandLength) {\n        for (var k = 1, klen = coordsParsed.length; k < klen; k += commandLength) {\n          result.push([command].concat(coordsParsed.slice(k, k + commandLength)));\n          command = repeatedCommand;\n        }\n      }\n      else {\n        result.push(coordsParsed);\n      }\n    }\n\n    return result;\n  };\n\n  /**\n   *\n   * Converts points to a smooth SVG path\n   * @param {{ x: number,y: number }[]} points Array of points\n   * @param {number} [correction] Apply a correction to the path (usually we use `width / 1000`). If value is undefined 0 is used as the correction value.\n   * @return {(string|number)[][]} An array of SVG path commands\n   */\n  function getSmoothPathFromPoints(points, correction) {\n    var path = [], i,\n        p1 = new fabric.Point(points[0].x, points[0].y),\n        p2 = new fabric.Point(points[1].x, points[1].y),\n        len = points.length, multSignX = 1, multSignY = 0, manyPoints = len > 2;\n    correction = correction || 0;\n\n    if (manyPoints) {\n      multSignX = points[2].x < p2.x ? -1 : points[2].x === p2.x ? 0 : 1;\n      multSignY = points[2].y < p2.y ? -1 : points[2].y === p2.y ? 0 : 1;\n    }\n    path.push(['M', p1.x - multSignX * correction, p1.y - multSignY * correction]);\n    for (i = 1; i < len; i++) {\n      if (!p1.eq(p2)) {\n        var midPoint = p1.midPointFrom(p2);\n        // p1 is our bezier control point\n        // midpoint is our endpoint\n        // start point is p(i-1) value.\n        path.push(['Q', p1.x, p1.y, midPoint.x, midPoint.y]);\n      }\n      p1 = points[i];\n      if ((i + 1) < points.length) {\n        p2 = points[i + 1];\n      }\n    }\n    if (manyPoints) {\n      multSignX = p1.x > points[i - 2].x ? 1 : p1.x === points[i - 2].x ? 0 : -1;\n      multSignY = p1.y > points[i - 2].y ? 1 : p1.y === points[i - 2].y ? 0 : -1;\n    }\n    path.push(['L', p1.x + multSignX * correction, p1.y + multSignY * correction]);\n    return path;\n  }\n  /**\n   * Transform a path by transforming each segment.\n   * it has to be a simplified path or it won't work.\n   * WARNING: this depends from pathOffset for correct operation\n   * @param {Array} path fabricJS parsed and simplified path commands\n   * @param {Array} transform matrix that represent the transformation\n   * @param {Object} [pathOffset] the fabric.Path pathOffset\n   * @param {Number} pathOffset.x\n   * @param {Number} pathOffset.y\n   * @returns {Array} the transformed path\n   */\n  function transformPath(path, transform, pathOffset) {\n    if (pathOffset) {\n      transform = fabric.util.multiplyTransformMatrices(\n        transform,\n        [1, 0, 0, 1, -pathOffset.x, -pathOffset.y]\n      );\n    }\n    return path.map(function(pathSegment) {\n      var newSegment = pathSegment.slice(0), point = {};\n      for (var i = 1; i < pathSegment.length - 1; i += 2) {\n        point.x = pathSegment[i];\n        point.y = pathSegment[i + 1];\n        point = fabric.util.transformPoint(point, transform);\n        newSegment[i] = point.x;\n        newSegment[i + 1] = point.y;\n      }\n      return newSegment;\n    });\n  }\n\n  /**\n   * Calculate bounding box of a elliptic-arc\n   * @deprecated\n   * @param {Number} fx start point of arc\n   * @param {Number} fy\n   * @param {Number} rx horizontal radius\n   * @param {Number} ry vertical radius\n   * @param {Number} rot angle of horizontal axis\n   * @param {Number} large 1 or 0, whatever the arc is the big or the small on the 2 points\n   * @param {Number} sweep 1 or 0, 1 clockwise or counterclockwise direction\n   * @param {Number} tx end point of arc\n   * @param {Number} ty\n   */\n  function getBoundsOfArc(fx, fy, rx, ry, rot, large, sweep, tx, ty) {\n\n    var fromX = 0, fromY = 0, bound, bounds = [],\n        segs = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n    for (var i = 0, len = segs.length; i < len; i++) {\n      bound = getBoundsOfCurve(fromX, fromY, segs[i][1], segs[i][2], segs[i][3], segs[i][4], segs[i][5], segs[i][6]);\n      bounds.push({ x: bound[0].x + fx, y: bound[0].y + fy });\n      bounds.push({ x: bound[1].x + fx, y: bound[1].y + fy });\n      fromX = segs[i][5];\n      fromY = segs[i][6];\n    }\n    return bounds;\n  };\n\n  /**\n   * Draws arc\n   * @deprecated\n   * @param {CanvasRenderingContext2D} ctx\n   * @param {Number} fx\n   * @param {Number} fy\n   * @param {Array} coords coords of the arc, without the front 'A/a'\n   */\n  function drawArc(ctx, fx, fy, coords) {\n    coords = coords.slice(0).unshift('X'); // command A or a does not matter\n    var beziers = fromArcToBeziers(fx, fy, coords);\n    beziers.forEach(function(bezier) {\n      ctx.bezierCurveTo.apply(ctx, bezier.slice(1));\n    });\n  };\n\n  /**\n   * Join path commands to go back to svg format\n   * @param {Array} pathData fabricJS parsed path commands\n   * @return {String} joined path 'M 0 0 L 20 30'\n   */\n  fabric.util.joinPath = function(pathData) {\n    return pathData.map(function (segment) { return segment.join(' '); }).join(' ');\n  };\n  fabric.util.parsePath = parsePath;\n  fabric.util.makePathSimpler = makePathSimpler;\n  fabric.util.getSmoothPathFromPoints = getSmoothPathFromPoints;\n  fabric.util.getPathSegmentsInfo = getPathSegmentsInfo;\n  fabric.util.getBoundsOfCurve = getBoundsOfCurve;\n  fabric.util.getPointOnPath = getPointOnPath;\n  fabric.util.transformPath = transformPath;\n  /**\n   * Typo of `fromArcToBeziers` kept for not breaking the api once corrected.\n   * Will be removed in fabric 5.0\n   * @deprecated\n   */\n  fabric.util.fromArcToBeizers = fromArcToBeziers;\n  // kept because we do not want to make breaking changes.\n  // but useless and deprecated.\n  fabric.util.getBoundsOfArc = getBoundsOfArc;\n  fabric.util.drawArc = drawArc;\n})();\n\n\n(function() {\n\n  var slice = Array.prototype.slice;\n\n  /**\n   * Invokes method on all items in a given array\n   * @memberOf fabric.util.array\n   * @param {Array} array Array to iterate over\n   * @param {String} method Name of a method to invoke\n   * @return {Array}\n   */\n  function invoke(array, method) {\n    var args = slice.call(arguments, 2), result = [];\n    for (var i = 0, len = array.length; i < len; i++) {\n      result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]);\n    }\n    return result;\n  }\n\n  /**\n   * Finds maximum value in array (not necessarily \"first\" one)\n   * @memberOf fabric.util.array\n   * @param {Array} array Array to iterate over\n   * @param {String} byProperty\n   * @return {*}\n   */\n  function max(array, byProperty) {\n    return find(array, byProperty, function(value1, value2) {\n      return value1 >= value2;\n    });\n  }\n\n  /**\n   * Finds minimum value in array (not necessarily \"first\" one)\n   * @memberOf fabric.util.array\n   * @param {Array} array Array to iterate over\n   * @param {String} byProperty\n   * @return {*}\n   */\n  function min(array, byProperty) {\n    return find(array, byProperty, function(value1, value2) {\n      return value1 < value2;\n    });\n  }\n\n  /**\n   * @private\n   */\n  function fill(array, value) {\n    var k = array.length;\n    while (k--) {\n      array[k] = value;\n    }\n    return array;\n  }\n\n  /**\n   * @private\n   */\n  function find(array, byProperty, condition) {\n    if (!array || array.length === 0) {\n      return;\n    }\n\n    var i = array.length - 1,\n        result = byProperty ? array[i][byProperty] : array[i];\n    if (byProperty) {\n      while (i--) {\n        if (condition(array[i][byProperty], result)) {\n          result = array[i][byProperty];\n        }\n      }\n    }\n    else {\n      while (i--) {\n        if (condition(array[i], result)) {\n          result = array[i];\n        }\n      }\n    }\n    return result;\n  }\n\n  /**\n   * @namespace fabric.util.array\n   */\n  fabric.util.array = {\n    fill: fill,\n    invoke: invoke,\n    min: min,\n    max: max\n  };\n\n})();\n\n\n(function() {\n  /**\n   * Copies all enumerable properties of one js object to another\n   * this does not and cannot compete with generic utils.\n   * Does not clone or extend fabric.Object subclasses.\n   * This is mostly for internal use and has extra handling for fabricJS objects\n   * it skips the canvas and group properties in deep cloning.\n   * @memberOf fabric.util.object\n   * @param {Object} destination Where to copy to\n   * @param {Object} source Where to copy from\n   * @param {Boolean} [deep] Whether to extend nested objects\n   * @return {Object}\n   */\n\n  function extend(destination, source, deep) {\n    // JScript DontEnum bug is not taken care of\n    // the deep clone is for internal use, is not meant to avoid\n    // javascript traps or cloning html element or self referenced objects.\n    if (deep) {\n      if (!fabric.isLikelyNode && source instanceof Element) {\n        // avoid cloning deep images, canvases,\n        destination = source;\n      }\n      else if (source instanceof Array) {\n        destination = [];\n        for (var i = 0, len = source.length; i < len; i++) {\n          destination[i] = extend({ }, source[i], deep);\n        }\n      }\n      else if (source && typeof source === 'object') {\n        for (var property in source) {\n          if (property === 'canvas' || property === 'group') {\n            // we do not want to clone this props at all.\n            // we want to keep the keys in the copy\n            destination[property] = null;\n          }\n          else if (source.hasOwnProperty(property)) {\n            destination[property] = extend({ }, source[property], deep);\n          }\n        }\n      }\n      else {\n        // this sounds odd for an extend but is ok for recursive use\n        destination = source;\n      }\n    }\n    else {\n      for (var property in source) {\n        destination[property] = source[property];\n      }\n    }\n    return destination;\n  }\n\n  /**\n   * Creates an empty object and copies all enumerable properties of another object to it\n   * This method is mostly for internal use, and not intended for duplicating shapes in canvas. \n   * @memberOf fabric.util.object\n   * @param {Object} object Object to clone\n   * @param {Boolean} [deep] Whether to clone nested objects\n   * @return {Object}\n   */\n\n  //TODO: this function return an empty object if you try to clone null\n  function clone(object, deep) {\n    return extend({ }, object, deep);\n  }\n\n  /** @namespace fabric.util.object */\n  fabric.util.object = {\n    extend: extend,\n    clone: clone\n  };\n  fabric.util.object.extend(fabric.util, fabric.Observable);\n})();\n\n\n(function() {\n\n  /**\n   * Camelizes a string\n   * @memberOf fabric.util.string\n   * @param {String} string String to camelize\n   * @return {String} Camelized version of a string\n   */\n  function camelize(string) {\n    return string.replace(/-+(.)?/g, function(match, character) {\n      return character ? character.toUpperCase() : '';\n    });\n  }\n\n  /**\n   * Capitalizes a string\n   * @memberOf fabric.util.string\n   * @param {String} string String to capitalize\n   * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized\n   * and other letters stay untouched, if false first letter is capitalized\n   * and other letters are converted to lowercase.\n   * @return {String} Capitalized version of a string\n   */\n  function capitalize(string, firstLetterOnly) {\n    return string.charAt(0).toUpperCase() +\n      (firstLetterOnly ? string.slice(1) : string.slice(1).toLowerCase());\n  }\n\n  /**\n   * Escapes XML in a string\n   * @memberOf fabric.util.string\n   * @param {String} string String to escape\n   * @return {String} Escaped version of a string\n   */\n  function escapeXml(string) {\n    return string.replace(/&/g, '&amp;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&apos;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;');\n  }\n\n  /**\n   * Divide a string in the user perceived single units\n   * @memberOf fabric.util.string\n   * @param {String} textstring String to escape\n   * @return {Array} array containing the graphemes\n   */\n  function graphemeSplit(textstring) {\n    var i = 0, chr, graphemes = [];\n    for (i = 0, chr; i < textstring.length; i++) {\n      if ((chr = getWholeChar(textstring, i)) === false) {\n        continue;\n      }\n      graphemes.push(chr);\n    }\n    return graphemes;\n  }\n\n  // taken from mdn in the charAt doc page.\n  function getWholeChar(str, i) {\n    var code = str.charCodeAt(i);\n\n    if (isNaN(code)) {\n      return ''; // Position not found\n    }\n    if (code < 0xD800 || code > 0xDFFF) {\n      return str.charAt(i);\n    }\n\n    // High surrogate (could change last hex to 0xDB7F to treat high private\n    // surrogates as single characters)\n    if (0xD800 <= code && code <= 0xDBFF) {\n      if (str.length <= (i + 1)) {\n        throw 'High surrogate without following low surrogate';\n      }\n      var next = str.charCodeAt(i + 1);\n      if (0xDC00 > next || next > 0xDFFF) {\n        throw 'High surrogate without following low surrogate';\n      }\n      return str.charAt(i) + str.charAt(i + 1);\n    }\n    // Low surrogate (0xDC00 <= code && code <= 0xDFFF)\n    if (i === 0) {\n      throw 'Low surrogate without preceding high surrogate';\n    }\n    var prev = str.charCodeAt(i - 1);\n\n    // (could change last hex to 0xDB7F to treat high private\n    // surrogates as single characters)\n    if (0xD800 > prev || prev > 0xDBFF) {\n      throw 'Low surrogate without preceding high surrogate';\n    }\n    // We can pass over low surrogates now as the second component\n    // in a pair which we have already processed\n    return false;\n  }\n\n\n  /**\n   * String utilities\n   * @namespace fabric.util.string\n   */\n  fabric.util.string = {\n    camelize: camelize,\n    capitalize: capitalize,\n    escapeXml: escapeXml,\n    graphemeSplit: graphemeSplit\n  };\n})();\n\n\n(function() {\n\n  var slice = Array.prototype.slice, emptyFunction = function() { },\n\n      IS_DONTENUM_BUGGY = (function() {\n        for (var p in { toString: 1 }) {\n          if (p === 'toString') {\n            return false;\n          }\n        }\n        return true;\n      })(),\n\n      /** @ignore */\n      addMethods = function(klass, source, parent) {\n        for (var property in source) {\n\n          if (property in klass.prototype &&\n              typeof klass.prototype[property] === 'function' &&\n              (source[property] + '').indexOf('callSuper') > -1) {\n\n            klass.prototype[property] = (function(property) {\n              return function() {\n\n                var superclass = this.constructor.superclass;\n                this.constructor.superclass = parent;\n                var returnValue = source[property].apply(this, arguments);\n                this.constructor.superclass = superclass;\n\n                if (property !== 'initialize') {\n                  return returnValue;\n                }\n              };\n            })(property);\n          }\n          else {\n            klass.prototype[property] = source[property];\n          }\n\n          if (IS_DONTENUM_BUGGY) {\n            if (source.toString !== Object.prototype.toString) {\n              klass.prototype.toString = source.toString;\n            }\n            if (source.valueOf !== Object.prototype.valueOf) {\n              klass.prototype.valueOf = source.valueOf;\n            }\n          }\n        }\n      };\n\n  function Subclass() { }\n\n  function callSuper(methodName) {\n    var parentMethod = null,\n        _this = this;\n\n    // climb prototype chain to find method not equal to callee's method\n    while (_this.constructor.superclass) {\n      var superClassMethod = _this.constructor.superclass.prototype[methodName];\n      if (_this[methodName] !== superClassMethod) {\n        parentMethod = superClassMethod;\n        break;\n      }\n      // eslint-disable-next-line\n      _this = _this.constructor.superclass.prototype;\n    }\n\n    if (!parentMethod) {\n      return console.log('tried to callSuper ' + methodName + ', method not found in prototype chain', this);\n    }\n\n    return (arguments.length > 1)\n      ? parentMethod.apply(this, slice.call(arguments, 1))\n      : parentMethod.call(this);\n  }\n\n  /**\n   * Helper for creation of \"classes\".\n   * @memberOf fabric.util\n   * @param {Function} [parent] optional \"Class\" to inherit from\n   * @param {Object} [properties] Properties shared by all instances of this class\n   *                  (be careful modifying objects defined here as this would affect all instances)\n   */\n  function createClass() {\n    var parent = null,\n        properties = slice.call(arguments, 0);\n\n    if (typeof properties[0] === 'function') {\n      parent = properties.shift();\n    }\n    function klass() {\n      this.initialize.apply(this, arguments);\n    }\n\n    klass.superclass = parent;\n    klass.subclasses = [];\n\n    if (parent) {\n      Subclass.prototype = parent.prototype;\n      klass.prototype = new Subclass();\n      parent.subclasses.push(klass);\n    }\n    for (var i = 0, length = properties.length; i < length; i++) {\n      addMethods(klass, properties[i], parent);\n    }\n    if (!klass.prototype.initialize) {\n      klass.prototype.initialize = emptyFunction;\n    }\n    klass.prototype.constructor = klass;\n    klass.prototype.callSuper = callSuper;\n    return klass;\n  }\n\n  fabric.util.createClass = createClass;\n})();\n\n\n(function () {\n  // since ie11 can use addEventListener but they do not support options, i need to check\n  var couldUseAttachEvent = !!fabric.document.createElement('div').attachEvent,\n      touchEvents = ['touchstart', 'touchmove', 'touchend'];\n  /**\n   * Adds an event listener to an element\n   * @function\n   * @memberOf fabric.util\n   * @param {HTMLElement} element\n   * @param {String} eventName\n   * @param {Function} handler\n   */\n  fabric.util.addListener = function(element, eventName, handler, options) {\n    element && element.addEventListener(eventName, handler, couldUseAttachEvent ? false : options);\n  };\n\n  /**\n   * Removes an event listener from an element\n   * @function\n   * @memberOf fabric.util\n   * @param {HTMLElement} element\n   * @param {String} eventName\n   * @param {Function} handler\n   */\n  fabric.util.removeListener = function(element, eventName, handler, options) {\n    element && element.removeEventListener(eventName, handler, couldUseAttachEvent ? false : options);\n  };\n\n  function getTouchInfo(event) {\n    var touchProp = event.changedTouches;\n    if (touchProp && touchProp[0]) {\n      return touchProp[0];\n    }\n    return event;\n  }\n\n  fabric.util.getPointer = function(event) {\n    var element = event.target,\n        scroll = fabric.util.getScrollLeftTop(element),\n        _evt = getTouchInfo(event);\n    return {\n      x: _evt.clientX + scroll.left,\n      y: _evt.clientY + scroll.top\n    };\n  };\n\n  fabric.util.isTouchEvent = function(event) {\n    return touchEvents.indexOf(event.type) > -1 || event.pointerType === 'touch';\n  };\n})();\n\n\n(function () {\n\n  /**\n   * Cross-browser wrapper for setting element's style\n   * @memberOf fabric.util\n   * @param {HTMLElement} element\n   * @param {Object} styles\n   * @return {HTMLElement} Element that was passed as a first argument\n   */\n  function setStyle(element, styles) {\n    var elementStyle = element.style;\n    if (!elementStyle) {\n      return element;\n    }\n    if (typeof styles === 'string') {\n      element.style.cssText += ';' + styles;\n      return styles.indexOf('opacity') > -1\n        ? setOpacity(element, styles.match(/opacity:\\s*(\\d?\\.?\\d*)/)[1])\n        : element;\n    }\n    for (var property in styles) {\n      if (property === 'opacity') {\n        setOpacity(element, styles[property]);\n      }\n      else {\n        var normalizedProperty = (property === 'float' || property === 'cssFloat')\n          ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat')\n          : property;\n        elementStyle[normalizedProperty] = styles[property];\n      }\n    }\n    return element;\n  }\n\n  var parseEl = fabric.document.createElement('div'),\n      supportsOpacity = typeof parseEl.style.opacity === 'string',\n      supportsFilters = typeof parseEl.style.filter === 'string',\n      reOpacity = /alpha\\s*\\(\\s*opacity\\s*=\\s*([^\\)]+)\\)/,\n\n      /** @ignore */\n      setOpacity = function (element) { return element; };\n\n  if (supportsOpacity) {\n    /** @ignore */\n    setOpacity = function(element, value) {\n      element.style.opacity = value;\n      return element;\n    };\n  }\n  else if (supportsFilters) {\n    /** @ignore */\n    setOpacity = function(element, value) {\n      var es = element.style;\n      if (element.currentStyle && !element.currentStyle.hasLayout) {\n        es.zoom = 1;\n      }\n      if (reOpacity.test(es.filter)) {\n        value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')');\n        es.filter = es.filter.replace(reOpacity, value);\n      }\n      else {\n        es.filter += ' alpha(opacity=' + (value * 100) + ')';\n      }\n      return element;\n    };\n  }\n\n  fabric.util.setStyle = setStyle;\n\n})();\n\n\n(function() {\n\n  var _slice = Array.prototype.slice;\n\n  /**\n   * Takes id and returns an element with that id (if one exists in a document)\n   * @memberOf fabric.util\n   * @param {String|HTMLElement} id\n   * @return {HTMLElement|null}\n   */\n  function getById(id) {\n    return typeof id === 'string' ? fabric.document.getElementById(id) : id;\n  }\n\n  var sliceCanConvertNodelists,\n      /**\n       * Converts an array-like object (e.g. arguments or NodeList) to an array\n       * @memberOf fabric.util\n       * @param {Object} arrayLike\n       * @return {Array}\n       */\n      toArray = function(arrayLike) {\n        return _slice.call(arrayLike, 0);\n      };\n\n  try {\n    sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array;\n  }\n  catch (err) { }\n\n  if (!sliceCanConvertNodelists) {\n    toArray = function(arrayLike) {\n      var arr = new Array(arrayLike.length), i = arrayLike.length;\n      while (i--) {\n        arr[i] = arrayLike[i];\n      }\n      return arr;\n    };\n  }\n\n  /**\n   * Creates specified element with specified attributes\n   * @memberOf fabric.util\n   * @param {String} tagName Type of an element to create\n   * @param {Object} [attributes] Attributes to set on an element\n   * @return {HTMLElement} Newly created element\n   */\n  function makeElement(tagName, attributes) {\n    var el = fabric.document.createElement(tagName);\n    for (var prop in attributes) {\n      if (prop === 'class') {\n        el.className = attributes[prop];\n      }\n      else if (prop === 'for') {\n        el.htmlFor = attributes[prop];\n      }\n      else {\n        el.setAttribute(prop, attributes[prop]);\n      }\n    }\n    return el;\n  }\n\n  /**\n   * Adds class to an element\n   * @memberOf fabric.util\n   * @param {HTMLElement} element Element to add class to\n   * @param {String} className Class to add to an element\n   */\n  function addClass(element, className) {\n    if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) {\n      element.className += (element.className ? ' ' : '') + className;\n    }\n  }\n\n  /**\n   * Wraps element with another element\n   * @memberOf fabric.util\n   * @param {HTMLElement} element Element to wrap\n   * @param {HTMLElement|String} wrapper Element to wrap with\n   * @param {Object} [attributes] Attributes to set on a wrapper\n   * @return {HTMLElement} wrapper\n   */\n  function wrapElement(element, wrapper, attributes) {\n    if (typeof wrapper === 'string') {\n      wrapper = makeElement(wrapper, attributes);\n    }\n    if (element.parentNode) {\n      element.parentNode.replaceChild(wrapper, element);\n    }\n    wrapper.appendChild(element);\n    return wrapper;\n  }\n\n  /**\n   * Returns element scroll offsets\n   * @memberOf fabric.util\n   * @param {HTMLElement} element Element to operate on\n   * @return {Object} Object with left/top values\n   */\n  function getScrollLeftTop(element) {\n\n    var left = 0,\n        top = 0,\n        docElement = fabric.document.documentElement,\n        body = fabric.document.body || {\n          scrollLeft: 0, scrollTop: 0\n        };\n\n    // While loop checks (and then sets element to) .parentNode OR .host\n    //  to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n    //  but the .parentNode of a root ShadowDOM node will always be null, instead\n    //  it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n    while (element && (element.parentNode || element.host)) {\n\n      // Set element to element parent, or 'host' in case of ShadowDOM\n      element = element.parentNode || element.host;\n\n      if (element === fabric.document) {\n        left = body.scrollLeft || docElement.scrollLeft || 0;\n        top = body.scrollTop ||  docElement.scrollTop || 0;\n      }\n      else {\n        left += element.scrollLeft || 0;\n        top += element.scrollTop || 0;\n      }\n\n      if (element.nodeType === 1 && element.style.position === 'fixed') {\n        break;\n      }\n    }\n\n    return { left: left, top: top };\n  }\n\n  /**\n   * Returns offset for a given element\n   * @function\n   * @memberOf fabric.util\n   * @param {HTMLElement} element Element to get offset for\n   * @return {Object} Object with \"left\" and \"top\" properties\n   */\n  function getElementOffset(element) {\n    var docElem,\n        doc = element && element.ownerDocument,\n        box = { left: 0, top: 0 },\n        offset = { left: 0, top: 0 },\n        scrollLeftTop,\n        offsetAttributes = {\n          borderLeftWidth: 'left',\n          borderTopWidth:  'top',\n          paddingLeft:     'left',\n          paddingTop:      'top'\n        };\n\n    if (!doc) {\n      return offset;\n    }\n\n    for (var attr in offsetAttributes) {\n      offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0;\n    }\n\n    docElem = doc.documentElement;\n    if ( typeof element.getBoundingClientRect !== 'undefined' ) {\n      box = element.getBoundingClientRect();\n    }\n\n    scrollLeftTop = getScrollLeftTop(element);\n\n    return {\n      left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n      top: box.top + scrollLeftTop.top - (docElem.clientTop || 0)  + offset.top\n    };\n  }\n\n  /**\n   * Returns style attribute value of a given element\n   * @memberOf fabric.util\n   * @param {HTMLElement} element Element to get style attribute for\n   * @param {String} attr Style attribute to get for element\n   * @return {String} Style attribute value of the given element.\n   */\n  var getElementStyle;\n  if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) {\n    getElementStyle = function(element, attr) {\n      var style = fabric.document.defaultView.getComputedStyle(element, null);\n      return style ? style[attr] : undefined;\n    };\n  }\n  else {\n    getElementStyle = function(element, attr) {\n      var value = element.style[attr];\n      if (!value && element.currentStyle) {\n        value = element.currentStyle[attr];\n      }\n      return value;\n    };\n  }\n\n  (function () {\n    var style = fabric.document.documentElement.style,\n        selectProp = 'userSelect' in style\n          ? 'userSelect'\n          : 'MozUserSelect' in style\n            ? 'MozUserSelect'\n            : 'WebkitUserSelect' in style\n              ? 'WebkitUserSelect'\n              : 'KhtmlUserSelect' in style\n                ? 'KhtmlUserSelect'\n                : '';\n\n    /**\n     * Makes element unselectable\n     * @memberOf fabric.util\n     * @param {HTMLElement} element Element to make unselectable\n     * @return {HTMLElement} Element that was passed in\n     */\n    function makeElementUnselectable(element) {\n      if (typeof element.onselectstart !== 'undefined') {\n        element.onselectstart = fabric.util.falseFunction;\n      }\n      if (selectProp) {\n        element.style[selectProp] = 'none';\n      }\n      else if (typeof element.unselectable === 'string') {\n        element.unselectable = 'on';\n      }\n      return element;\n    }\n\n    /**\n     * Makes element selectable\n     * @memberOf fabric.util\n     * @param {HTMLElement} element Element to make selectable\n     * @return {HTMLElement} Element that was passed in\n     */\n    function makeElementSelectable(element) {\n      if (typeof element.onselectstart !== 'undefined') {\n        element.onselectstart = null;\n      }\n      if (selectProp) {\n        element.style[selectProp] = '';\n      }\n      else if (typeof element.unselectable === 'string') {\n        element.unselectable = '';\n      }\n      return element;\n    }\n\n    fabric.util.makeElementUnselectable = makeElementUnselectable;\n    fabric.util.makeElementSelectable = makeElementSelectable;\n  })();\n\n  function getNodeCanvas(element) {\n    var impl = fabric.jsdomImplForWrapper(element);\n    return impl._canvas || impl._image;\n  };\n\n  function cleanUpJsdomNode(element) {\n    if (!fabric.isLikelyNode) {\n      return;\n    }\n    var impl = fabric.jsdomImplForWrapper(element);\n    if (impl) {\n      impl._image = null;\n      impl._canvas = null;\n      // unsure if necessary\n      impl._currentSrc = null;\n      impl._attributes = null;\n      impl._classList = null;\n    }\n  }\n\n  function setImageSmoothing(ctx, value) {\n    ctx.imageSmoothingEnabled = ctx.imageSmoothingEnabled || ctx.webkitImageSmoothingEnabled\n      || ctx.mozImageSmoothingEnabled || ctx.msImageSmoothingEnabled || ctx.oImageSmoothingEnabled;\n    ctx.imageSmoothingEnabled = value;\n  }\n\n  /**\n   * setImageSmoothing sets the context imageSmoothingEnabled property.\n   * Used by canvas and by ImageObject.\n   * @memberOf fabric.util\n   * @since 4.0.0\n   * @param {HTMLRenderingContext2D} ctx to set on\n   * @param {Boolean} value true or false\n   */\n  fabric.util.setImageSmoothing = setImageSmoothing;\n  fabric.util.getById = getById;\n  fabric.util.toArray = toArray;\n  fabric.util.addClass = addClass;\n  fabric.util.makeElement = makeElement;\n  fabric.util.wrapElement = wrapElement;\n  fabric.util.getScrollLeftTop = getScrollLeftTop;\n  fabric.util.getElementOffset = getElementOffset;\n  fabric.util.getNodeCanvas = getNodeCanvas;\n  fabric.util.cleanUpJsdomNode = cleanUpJsdomNode;\n\n})();\n\n\n(function() {\n\n  function addParamToUrl(url, param) {\n    return url + (/\\?/.test(url) ? '&' : '?') + param;\n  }\n\n  function emptyFn() { }\n\n  /**\n   * Cross-browser abstraction for sending XMLHttpRequest\n   * @memberOf fabric.util\n   * @param {String} url URL to send XMLHttpRequest to\n   * @param {Object} [options] Options object\n   * @param {String} [options.method=\"GET\"]\n   * @param {String} [options.parameters] parameters to append to url in GET or in body\n   * @param {String} [options.body] body to send with POST or PUT request\n   * @param {Function} options.onComplete Callback to invoke when request is completed\n   * @return {XMLHttpRequest} request\n   */\n  function request(url, options) {\n    options || (options = { });\n\n    var method = options.method ? options.method.toUpperCase() : 'GET',\n        onComplete = options.onComplete || function() { },\n        xhr = new fabric.window.XMLHttpRequest(),\n        body = options.body || options.parameters;\n\n    /** @ignore */\n    xhr.onreadystatechange = function() {\n      if (xhr.readyState === 4) {\n        onComplete(xhr);\n        xhr.onreadystatechange = emptyFn;\n      }\n    };\n\n    if (method === 'GET') {\n      body = null;\n      if (typeof options.parameters === 'string') {\n        url = addParamToUrl(url, options.parameters);\n      }\n    }\n\n    xhr.open(method, url, true);\n\n    if (method === 'POST' || method === 'PUT') {\n      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n    }\n\n    xhr.send(body);\n    return xhr;\n  }\n\n  fabric.util.request = request;\n})();\n\n\n/**\n * Wrapper around `console.log` (when available)\n * @param {*} [values] Values to log\n */\nfabric.log = console.log;\n\n/**\n * Wrapper around `console.warn` (when available)\n * @param {*} [values] Values to log as a warning\n */\nfabric.warn = console.warn;\n\n\n(function() {\n\n  function noop() {\n    return false;\n  }\n\n  function defaultEasing(t, b, c, d) {\n    return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n  }\n\n  /**\n   * Changes value from one to another within certain period of time, invoking callbacks as value is being changed.\n   * @memberOf fabric.util\n   * @param {Object} [options] Animation options\n   * @param {Function} [options.onChange] Callback; invoked on every value change\n   * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n   * @param {Number} [options.startValue=0] Starting value\n   * @param {Number} [options.endValue=100] Ending value\n   * @param {Number} [options.byValue=100] Value to modify the property by\n   * @param {Function} [options.easing] Easing function\n   * @param {Number} [options.duration=500] Duration of change (in ms)\n   * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called.\n   * @returns {Function} abort function\n   */\n  function animate(options) {\n    var cancel = false;\n    requestAnimFrame(function(timestamp) {\n      options || (options = { });\n\n      var start = timestamp || +new Date(),\n          duration = options.duration || 500,\n          finish = start + duration, time,\n          onChange = options.onChange || noop,\n          abort = options.abort || noop,\n          onComplete = options.onComplete || noop,\n          easing = options.easing || defaultEasing,\n          startValue = 'startValue' in options ? options.startValue : 0,\n          endValue = 'endValue' in options ? options.endValue : 100,\n          byValue = options.byValue || endValue - startValue;\n\n      options.onStart && options.onStart();\n\n      (function tick(ticktime) {\n        // TODO: move abort call after calculation\n        // and pass (current,valuePerc, timePerc) as arguments\n        time = ticktime || +new Date();\n        var currentTime = time > finish ? duration : (time - start),\n            timePerc = currentTime / duration,\n            current = easing(currentTime, startValue, byValue, duration),\n            valuePerc = Math.abs((current - startValue) / byValue);\n        if (cancel) {\n          return;\n        }\n        if (abort(current, valuePerc, timePerc)) {\n          // remove this in 4.0\n          // does to even make sense to abort and run onComplete?\n          onComplete(endValue, 1, 1);\n          return;\n        }\n        if (time > finish) {\n          onChange(endValue, 1, 1);\n          onComplete(endValue, 1, 1);\n          return;\n        }\n        else {\n          onChange(current, valuePerc, timePerc);\n          requestAnimFrame(tick);\n        }\n      })(start);\n    });\n    return function() {\n      cancel = true;\n    };\n  }\n\n  var _requestAnimFrame = fabric.window.requestAnimationFrame       ||\n                          fabric.window.webkitRequestAnimationFrame ||\n                          fabric.window.mozRequestAnimationFrame    ||\n                          fabric.window.oRequestAnimationFrame      ||\n                          fabric.window.msRequestAnimationFrame     ||\n                          function(callback) {\n                            return fabric.window.setTimeout(callback, 1000 / 60);\n                          };\n\n  var _cancelAnimFrame = fabric.window.cancelAnimationFrame || fabric.window.clearTimeout;\n\n  /**\n   * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n   * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method\n   * @memberOf fabric.util\n   * @param {Function} callback Callback to invoke\n   * @param {DOMElement} element optional Element to associate with animation\n   */\n  function requestAnimFrame() {\n    return _requestAnimFrame.apply(fabric.window, arguments);\n  }\n\n  function cancelAnimFrame() {\n    return _cancelAnimFrame.apply(fabric.window, arguments);\n  }\n\n  fabric.util.animate = animate;\n  fabric.util.requestAnimFrame = requestAnimFrame;\n  fabric.util.cancelAnimFrame = cancelAnimFrame;\n})();\n\n\n(function() {\n  // Calculate an in-between color. Returns a \"rgba()\" string.\n  // Credit: Edwin Martin <edwin@bitstorm.org>\n  //         http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js\n  function calculateColor(begin, end, pos) {\n    var color = 'rgba('\n        + parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ','\n        + parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ','\n        + parseInt((begin[2] + pos * (end[2] - begin[2])), 10);\n\n    color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1);\n    color += ')';\n    return color;\n  }\n\n  /**\n   * Changes the color from one to another within certain period of time, invoking callbacks as value is being changed.\n   * @memberOf fabric.util\n   * @param {String} fromColor The starting color in hex or rgb(a) format.\n   * @param {String} toColor The starting color in hex or rgb(a) format.\n   * @param {Number} [duration] Duration of change (in ms).\n   * @param {Object} [options] Animation options\n   * @param {Function} [options.onChange] Callback; invoked on every value change\n   * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n   * @param {Function} [options.colorEasing] Easing function. Note that this function only take two arguments (currentTime, duration). Thus the regular animation easing functions cannot be used.\n   * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called.\n   * @returns {Function} abort function\n   */\n  function animateColor(fromColor, toColor, duration, options) {\n    var startColor = new fabric.Color(fromColor).getSource(),\n        endColor = new fabric.Color(toColor).getSource(),\n        originalOnComplete = options.onComplete,\n        originalOnChange = options.onChange;\n    options = options || {};\n\n    return fabric.util.animate(fabric.util.object.extend(options, {\n      duration: duration || 500,\n      startValue: startColor,\n      endValue: endColor,\n      byValue: endColor,\n      easing: function (currentTime, startValue, byValue, duration) {\n        var posValue = options.colorEasing\n          ? options.colorEasing(currentTime, duration)\n          : 1 - Math.cos(currentTime / duration * (Math.PI / 2));\n        return calculateColor(startValue, byValue, posValue);\n      },\n      // has to take in account for color restoring;\n      onComplete: function(current, valuePerc, timePerc) {\n        if (originalOnComplete) {\n          return originalOnComplete(\n            calculateColor(endColor, endColor, 0),\n            valuePerc,\n            timePerc\n          );\n        }\n      },\n      onChange: function(current, valuePerc, timePerc) {\n        if (originalOnChange) {\n          if (Array.isArray(current)) {\n            return originalOnChange(\n              calculateColor(current, current, 0),\n              valuePerc,\n              timePerc\n            );\n          }\n          originalOnChange(current, valuePerc, timePerc);\n        }\n      }\n    }));\n  }\n\n  fabric.util.animateColor = animateColor;\n\n})();\n\n\n(function() {\n\n  function normalize(a, c, p, s) {\n    if (a < Math.abs(c)) {\n      a = c;\n      s = p / 4;\n    }\n    else {\n      //handle the 0/0 case:\n      if (c === 0 && a === 0) {\n        s = p / (2 * Math.PI) * Math.asin(1);\n      }\n      else {\n        s = p / (2 * Math.PI) * Math.asin(c / a);\n      }\n    }\n    return { a: a, c: c, p: p, s: s };\n  }\n\n  function elastic(opts, t, d) {\n    return opts.a *\n      Math.pow(2, 10 * (t -= 1)) *\n      Math.sin( (t * d - opts.s) * (2 * Math.PI) / opts.p );\n  }\n\n  /**\n   * Cubic easing out\n   * @memberOf fabric.util.ease\n   */\n  function easeOutCubic(t, b, c, d) {\n    return c * ((t = t / d - 1) * t * t + 1) + b;\n  }\n\n  /**\n   * Cubic easing in and out\n   * @memberOf fabric.util.ease\n   */\n  function easeInOutCubic(t, b, c, d) {\n    t /= d / 2;\n    if (t < 1) {\n      return c / 2 * t * t * t + b;\n    }\n    return c / 2 * ((t -= 2) * t * t + 2) + b;\n  }\n\n  /**\n   * Quartic easing in\n   * @memberOf fabric.util.ease\n   */\n  function easeInQuart(t, b, c, d) {\n    return c * (t /= d) * t * t * t + b;\n  }\n\n  /**\n   * Quartic easing out\n   * @memberOf fabric.util.ease\n   */\n  function easeOutQuart(t, b, c, d) {\n    return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n  }\n\n  /**\n   * Quartic easing in and out\n   * @memberOf fabric.util.ease\n   */\n  function easeInOutQuart(t, b, c, d) {\n    t /= d / 2;\n    if (t < 1) {\n      return c / 2 * t * t * t * t + b;\n    }\n    return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n  }\n\n  /**\n   * Quintic easing in\n   * @memberOf fabric.util.ease\n   */\n  function easeInQuint(t, b, c, d) {\n    return c * (t /= d) * t * t * t * t + b;\n  }\n\n  /**\n   * Quintic easing out\n   * @memberOf fabric.util.ease\n   */\n  function easeOutQuint(t, b, c, d) {\n    return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n  }\n\n  /**\n   * Quintic easing in and out\n   * @memberOf fabric.util.ease\n   */\n  function easeInOutQuint(t, b, c, d) {\n    t /= d / 2;\n    if (t < 1) {\n      return c / 2 * t * t * t * t * t + b;\n    }\n    return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n  }\n\n  /**\n   * Sinusoidal easing in\n   * @memberOf fabric.util.ease\n   */\n  function easeInSine(t, b, c, d) {\n    return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n  }\n\n  /**\n   * Sinusoidal easing out\n   * @memberOf fabric.util.ease\n   */\n  function easeOutSine(t, b, c, d) {\n    return c * Math.sin(t / d * (Math.PI / 2)) + b;\n  }\n\n  /**\n   * Sinusoidal easing in and out\n   * @memberOf fabric.util.ease\n   */\n  function easeInOutSine(t, b, c, d) {\n    return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n  }\n\n  /**\n   * Exponential easing in\n   * @memberOf fabric.util.ease\n   */\n  function easeInExpo(t, b, c, d) {\n    return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;\n  }\n\n  /**\n   * Exponential easing out\n   * @memberOf fabric.util.ease\n   */\n  function easeOutExpo(t, b, c, d) {\n    return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n  }\n\n  /**\n   * Exponential easing in and out\n   * @memberOf fabric.util.ease\n   */\n  function easeInOutExpo(t, b, c, d) {\n    if (t === 0) {\n      return b;\n    }\n    if (t === d) {\n      return b + c;\n    }\n    t /= d / 2;\n    if (t < 1) {\n      return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n    }\n    return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n  }\n\n  /**\n   * Circular easing in\n   * @memberOf fabric.util.ease\n   */\n  function easeInCirc(t, b, c, d) {\n    return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n  }\n\n  /**\n   * Circular easing out\n   * @memberOf fabric.util.ease\n   */\n  function easeOutCirc(t, b, c, d) {\n    return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n  }\n\n  /**\n   * Circular easing in and out\n   * @memberOf fabric.util.ease\n   */\n  function easeInOutCirc(t, b, c, d) {\n    t /= d / 2;\n    if (t < 1) {\n      return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n    }\n    return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n  }\n\n  /**\n   * Elastic easing in\n   * @memberOf fabric.util.ease\n   */\n  function easeInElastic(t, b, c, d) {\n    var s = 1.70158, p = 0, a = c;\n    if (t === 0) {\n      return b;\n    }\n    t /= d;\n    if (t === 1) {\n      return b + c;\n    }\n    if (!p) {\n      p = d * 0.3;\n    }\n    var opts = normalize(a, c, p, s);\n    return -elastic(opts, t, d) + b;\n  }\n\n  /**\n   * Elastic easing out\n   * @memberOf fabric.util.ease\n   */\n  function easeOutElastic(t, b, c, d) {\n    var s = 1.70158, p = 0, a = c;\n    if (t === 0) {\n      return b;\n    }\n    t /= d;\n    if (t === 1) {\n      return b + c;\n    }\n    if (!p) {\n      p = d * 0.3;\n    }\n    var opts = normalize(a, c, p, s);\n    return opts.a * Math.pow(2, -10 * t) * Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) + opts.c + b;\n  }\n\n  /**\n   * Elastic easing in and out\n   * @memberOf fabric.util.ease\n   */\n  function easeInOutElastic(t, b, c, d) {\n    var s = 1.70158, p = 0, a = c;\n    if (t === 0) {\n      return b;\n    }\n    t /= d / 2;\n    if (t === 2) {\n      return b + c;\n    }\n    if (!p) {\n      p = d * (0.3 * 1.5);\n    }\n    var opts = normalize(a, c, p, s);\n    if (t < 1) {\n      return -0.5 * elastic(opts, t, d) + b;\n    }\n    return opts.a * Math.pow(2, -10 * (t -= 1)) *\n      Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) * 0.5 + opts.c + b;\n  }\n\n  /**\n   * Backwards easing in\n   * @memberOf fabric.util.ease\n   */\n  function easeInBack(t, b, c, d, s) {\n    if (s === undefined) {\n      s = 1.70158;\n    }\n    return c * (t /= d) * t * ((s + 1) * t - s) + b;\n  }\n\n  /**\n   * Backwards easing out\n   * @memberOf fabric.util.ease\n   */\n  function easeOutBack(t, b, c, d, s) {\n    if (s === undefined) {\n      s = 1.70158;\n    }\n    return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n  }\n\n  /**\n   * Backwards easing in and out\n   * @memberOf fabric.util.ease\n   */\n  function easeInOutBack(t, b, c, d, s) {\n    if (s === undefined) {\n      s = 1.70158;\n    }\n    t /= d / 2;\n    if (t < 1) {\n      return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;\n    }\n    return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;\n  }\n\n  /**\n   * Bouncing easing in\n   * @memberOf fabric.util.ease\n   */\n  function easeInBounce(t, b, c, d) {\n    return c - easeOutBounce (d - t, 0, c, d) + b;\n  }\n\n  /**\n   * Bouncing easing out\n   * @memberOf fabric.util.ease\n   */\n  function easeOutBounce(t, b, c, d) {\n    if ((t /= d) < (1 / 2.75)) {\n      return c * (7.5625 * t * t) + b;\n    }\n    else if (t < (2 / 2.75)) {\n      return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b;\n    }\n    else if (t < (2.5 / 2.75)) {\n      return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b;\n    }\n    else {\n      return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b;\n    }\n  }\n\n  /**\n   * Bouncing easing in and out\n   * @memberOf fabric.util.ease\n   */\n  function easeInOutBounce(t, b, c, d) {\n    if (t < d / 2) {\n      return easeInBounce (t * 2, 0, c, d) * 0.5 + b;\n    }\n    return easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n  }\n\n  /**\n   * Easing functions\n   * See <a href=\"http://gizma.com/easing/\">Easing Equations by Robert Penner</a>\n   * @namespace fabric.util.ease\n   */\n  fabric.util.ease = {\n\n    /**\n     * Quadratic easing in\n     * @memberOf fabric.util.ease\n     */\n    easeInQuad: function(t, b, c, d) {\n      return c * (t /= d) * t + b;\n    },\n\n    /**\n     * Quadratic easing out\n     * @memberOf fabric.util.ease\n     */\n    easeOutQuad: function(t, b, c, d) {\n      return -c * (t /= d) * (t - 2) + b;\n    },\n\n    /**\n     * Quadratic easing in and out\n     * @memberOf fabric.util.ease\n     */\n    easeInOutQuad: function(t, b, c, d) {\n      t /= (d / 2);\n      if (t < 1) {\n        return c / 2 * t * t + b;\n      }\n      return -c / 2 * ((--t) * (t - 2) - 1) + b;\n    },\n\n    /**\n     * Cubic easing in\n     * @memberOf fabric.util.ease\n     */\n    easeInCubic: function(t, b, c, d) {\n      return c * (t /= d) * t * t + b;\n    },\n\n    easeOutCubic: easeOutCubic,\n    easeInOutCubic: easeInOutCubic,\n    easeInQuart: easeInQuart,\n    easeOutQuart: easeOutQuart,\n    easeInOutQuart: easeInOutQuart,\n    easeInQuint: easeInQuint,\n    easeOutQuint: easeOutQuint,\n    easeInOutQuint: easeInOutQuint,\n    easeInSine: easeInSine,\n    easeOutSine: easeOutSine,\n    easeInOutSine: easeInOutSine,\n    easeInExpo: easeInExpo,\n    easeOutExpo: easeOutExpo,\n    easeInOutExpo: easeInOutExpo,\n    easeInCirc: easeInCirc,\n    easeOutCirc: easeOutCirc,\n    easeInOutCirc: easeInOutCirc,\n    easeInElastic: easeInElastic,\n    easeOutElastic: easeOutElastic,\n    easeInOutElastic: easeInOutElastic,\n    easeInBack: easeInBack,\n    easeOutBack: easeOutBack,\n    easeInOutBack: easeInOutBack,\n    easeInBounce: easeInBounce,\n    easeOutBounce: easeOutBounce,\n    easeInOutBounce: easeInOutBounce\n  };\n\n})();\n\n\n(function(global) {\n\n  'use strict';\n\n  /**\n   * @name fabric\n   * @namespace\n   */\n\n  var fabric = global.fabric || (global.fabric = { }),\n      extend = fabric.util.object.extend,\n      clone = fabric.util.object.clone,\n      toFixed = fabric.util.toFixed,\n      parseUnit = fabric.util.parseUnit,\n      multiplyTransformMatrices = fabric.util.multiplyTransformMatrices,\n\n      svgValidTagNames = ['path', 'circle', 'polygon', 'polyline', 'ellipse', 'rect', 'line',\n        'image', 'text'],\n      svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n      svgInvalidAncestors = ['pattern', 'defs', 'symbol', 'metadata', 'clipPath', 'mask', 'desc'],\n      svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'],\n\n      attributesMap = {\n        cx:                   'left',\n        x:                    'left',\n        r:                    'radius',\n        cy:                   'top',\n        y:                    'top',\n        display:              'visible',\n        visibility:           'visible',\n        transform:            'transformMatrix',\n        'fill-opacity':       'fillOpacity',\n        'fill-rule':          'fillRule',\n        'font-family':        'fontFamily',\n        'font-size':          'fontSize',\n        'font-style':         'fontStyle',\n        'font-weight':        'fontWeight',\n        'letter-spacing':     'charSpacing',\n        'paint-order':        'paintFirst',\n        'stroke-dasharray':   'strokeDashArray',\n        'stroke-dashoffset':  'strokeDashOffset',\n        'stroke-linecap':     'strokeLineCap',\n        'stroke-linejoin':    'strokeLineJoin',\n        'stroke-miterlimit':  'strokeMiterLimit',\n        'stroke-opacity':     'strokeOpacity',\n        'stroke-width':       'strokeWidth',\n        'text-decoration':    'textDecoration',\n        'text-anchor':        'textAnchor',\n        opacity:              'opacity',\n        'clip-path':          'clipPath',\n        'clip-rule':          'clipRule',\n        'vector-effect':      'strokeUniform',\n        'image-rendering':    'imageSmoothing',\n      },\n\n      colorAttributes = {\n        stroke: 'strokeOpacity',\n        fill:   'fillOpacity'\n      },\n\n      fSize = 'font-size', cPath = 'clip-path';\n\n  fabric.svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n  fabric.svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n  fabric.svgInvalidAncestorsRegEx = getSvgRegex(svgInvalidAncestors);\n  fabric.svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n  fabric.cssRules = { };\n  fabric.gradientDefs = { };\n  fabric.clipPaths = { };\n\n  function normalizeAttr(attr) {\n    // transform attribute names\n    if (attr in attributesMap) {\n      return attributesMap[attr];\n    }\n    return attr;\n  }\n\n  function normalizeValue(attr, value, parentAttributes, fontSize) {\n    var isArray = Object.prototype.toString.call(value) === '[object Array]',\n        parsed;\n\n    if ((attr === 'fill' || attr === 'stroke') && value === 'none') {\n      value = '';\n    }\n    else if (attr === 'strokeUniform') {\n      return (value === 'non-scaling-stroke');\n    }\n    else if (attr === 'strokeDashArray') {\n      if (value === 'none') {\n        value = null;\n      }\n      else {\n        value = value.replace(/,/g, ' ').split(/\\s+/).map(parseFloat);\n      }\n    }\n    else if (attr === 'transformMatrix') {\n      if (parentAttributes && parentAttributes.transformMatrix) {\n        value = multiplyTransformMatrices(\n          parentAttributes.transformMatrix, fabric.parseTransformAttribute(value));\n      }\n      else {\n        value = fabric.parseTransformAttribute(value);\n      }\n    }\n    else if (attr === 'visible') {\n      value = value !== 'none' && value !== 'hidden';\n      // display=none on parent element always takes precedence over child element\n      if (parentAttributes && parentAttributes.visible === false) {\n        value = false;\n      }\n    }\n    else if (attr === 'opacity') {\n      value = parseFloat(value);\n      if (parentAttributes && typeof parentAttributes.opacity !== 'undefined') {\n        value *= parentAttributes.opacity;\n      }\n    }\n    else if (attr === 'textAnchor' /* text-anchor */) {\n      value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center';\n    }\n    else if (attr === 'charSpacing') {\n      // parseUnit returns px and we convert it to em\n      parsed = parseUnit(value, fontSize) / fontSize * 1000;\n    }\n    else if (attr === 'paintFirst') {\n      var fillIndex = value.indexOf('fill');\n      var strokeIndex = value.indexOf('stroke');\n      var value = 'fill';\n      if (fillIndex > -1 && strokeIndex > -1 && strokeIndex < fillIndex) {\n        value = 'stroke';\n      }\n      else if (fillIndex === -1 && strokeIndex > -1) {\n        value = 'stroke';\n      }\n    }\n    else if (attr === 'href' || attr === 'xlink:href' || attr === 'font') {\n      return value;\n    }\n    else if (attr === 'imageSmoothing') {\n      return (value === 'optimizeQuality');\n    }\n    else {\n      parsed = isArray ? value.map(parseUnit) : parseUnit(value, fontSize);\n    }\n\n    return (!isArray && isNaN(parsed) ? value : parsed);\n  }\n\n  /**\n    * @private\n    */\n  function getSvgRegex(arr) {\n    return new RegExp('^(' + arr.join('|') + ')\\\\b', 'i');\n  }\n\n  /**\n   * @private\n   * @param {Object} attributes Array of attributes to parse\n   */\n  function _setStrokeFillOpacity(attributes) {\n    for (var attr in colorAttributes) {\n\n      if (typeof attributes[colorAttributes[attr]] === 'undefined' || attributes[attr] === '') {\n        continue;\n      }\n\n      if (typeof attributes[attr] === 'undefined') {\n        if (!fabric.Object.prototype[attr]) {\n          continue;\n        }\n        attributes[attr] = fabric.Object.prototype[attr];\n      }\n\n      if (attributes[attr].indexOf('url(') === 0) {\n        continue;\n      }\n\n      var color = new fabric.Color(attributes[attr]);\n      attributes[attr] = color.setAlpha(toFixed(color.getAlpha() * attributes[colorAttributes[attr]], 2)).toRgba();\n    }\n    return attributes;\n  }\n\n  /**\n   * @private\n   */\n  function _getMultipleNodes(doc, nodeNames) {\n    var nodeName, nodeArray = [], nodeList, i, len;\n    for (i = 0, len = nodeNames.length; i < len; i++) {\n      nodeName = nodeNames[i];\n      nodeList = doc.getElementsByTagName(nodeName);\n      nodeArray = nodeArray.concat(Array.prototype.slice.call(nodeList));\n    }\n    return nodeArray;\n  }\n\n  /**\n   * Parses \"transform\" attribute, returning an array of values\n   * @static\n   * @function\n   * @memberOf fabric\n   * @param {String} attributeValue String containing attribute value\n   * @return {Array} Array of 6 elements representing transformation matrix\n   */\n  fabric.parseTransformAttribute = (function() {\n    function rotateMatrix(matrix, args) {\n      var cos = fabric.util.cos(args[0]), sin = fabric.util.sin(args[0]),\n          x = 0, y = 0;\n      if (args.length === 3) {\n        x = args[1];\n        y = args[2];\n      }\n\n      matrix[0] = cos;\n      matrix[1] = sin;\n      matrix[2] = -sin;\n      matrix[3] = cos;\n      matrix[4] = x - (cos * x - sin * y);\n      matrix[5] = y - (sin * x + cos * y);\n    }\n\n    function scaleMatrix(matrix, args) {\n      var multiplierX = args[0],\n          multiplierY = (args.length === 2) ? args[1] : args[0];\n\n      matrix[0] = multiplierX;\n      matrix[3] = multiplierY;\n    }\n\n    function skewMatrix(matrix, args, pos) {\n      matrix[pos] = Math.tan(fabric.util.degreesToRadians(args[0]));\n    }\n\n    function translateMatrix(matrix, args) {\n      matrix[4] = args[0];\n      if (args.length === 2) {\n        matrix[5] = args[1];\n      }\n    }\n\n    // identity matrix\n    var iMatrix = fabric.iMatrix,\n\n        // == begin transform regexp\n        number = fabric.reNum,\n\n        commaWsp = fabric.commaWsp,\n\n        skewX = '(?:(skewX)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n        skewY = '(?:(skewY)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n        rotate = '(?:(rotate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n                    commaWsp + '(' + number + ')' +\n                    commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n        scale = '(?:(scale)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n                    commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n        translate = '(?:(translate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n                    commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n        matrix = '(?:(matrix)\\\\s*\\\\(\\\\s*' +\n                  '(' + number + ')' + commaWsp +\n                  '(' + number + ')' + commaWsp +\n                  '(' + number + ')' + commaWsp +\n                  '(' + number + ')' + commaWsp +\n                  '(' + number + ')' + commaWsp +\n                  '(' + number + ')' +\n                  '\\\\s*\\\\))',\n\n        transform = '(?:' +\n                    matrix + '|' +\n                    translate + '|' +\n                    scale + '|' +\n                    rotate + '|' +\n                    skewX + '|' +\n                    skewY +\n                    ')',\n\n        transforms = '(?:' + transform + '(?:' + commaWsp + '*' + transform + ')*' + ')',\n\n        transformList = '^\\\\s*(?:' + transforms + '?)\\\\s*$',\n\n        // http://www.w3.org/TR/SVG/coords.html#TransformAttribute\n        reTransformList = new RegExp(transformList),\n        // == end transform regexp\n\n        reTransform = new RegExp(transform, 'g');\n\n    return function(attributeValue) {\n\n      // start with identity matrix\n      var matrix = iMatrix.concat(),\n          matrices = [];\n\n      // return if no argument was given or\n      // an argument does not match transform attribute regexp\n      if (!attributeValue || (attributeValue && !reTransformList.test(attributeValue))) {\n        return matrix;\n      }\n\n      attributeValue.replace(reTransform, function(match) {\n\n        var m = new RegExp(transform).exec(match).filter(function (match) {\n              // match !== '' && match != null\n              return (!!match);\n            }),\n            operation = m[1],\n            args = m.slice(2).map(parseFloat);\n\n        switch (operation) {\n          case 'translate':\n            translateMatrix(matrix, args);\n            break;\n          case 'rotate':\n            args[0] = fabric.util.degreesToRadians(args[0]);\n            rotateMatrix(matrix, args);\n            break;\n          case 'scale':\n            scaleMatrix(matrix, args);\n            break;\n          case 'skewX':\n            skewMatrix(matrix, args, 2);\n            break;\n          case 'skewY':\n            skewMatrix(matrix, args, 1);\n            break;\n          case 'matrix':\n            matrix = args;\n            break;\n        }\n\n        // snapshot current matrix into matrices array\n        matrices.push(matrix.concat());\n        // reset\n        matrix = iMatrix.concat();\n      });\n\n      var combinedMatrix = matrices[0];\n      while (matrices.length > 1) {\n        matrices.shift();\n        combinedMatrix = fabric.util.multiplyTransformMatrices(combinedMatrix, matrices[0]);\n      }\n      return combinedMatrix;\n    };\n  })();\n\n  /**\n   * @private\n   */\n  function parseStyleString(style, oStyle) {\n    var attr, value;\n    style.replace(/;\\s*$/, '').split(';').forEach(function (chunk) {\n      var pair = chunk.split(':');\n\n      attr = pair[0].trim().toLowerCase();\n      value =  pair[1].trim();\n\n      oStyle[attr] = value;\n    });\n  }\n\n  /**\n   * @private\n   */\n  function parseStyleObject(style, oStyle) {\n    var attr, value;\n    for (var prop in style) {\n      if (typeof style[prop] === 'undefined') {\n        continue;\n      }\n\n      attr = prop.toLowerCase();\n      value = style[prop];\n\n      oStyle[attr] = value;\n    }\n  }\n\n  /**\n   * @private\n   */\n  function getGlobalStylesForElement(element, svgUid) {\n    var styles = { };\n    for (var rule in fabric.cssRules[svgUid]) {\n      if (elementMatchesRule(element, rule.split(' '))) {\n        for (var property in fabric.cssRules[svgUid][rule]) {\n          styles[property] = fabric.cssRules[svgUid][rule][property];\n        }\n      }\n    }\n    return styles;\n  }\n\n  /**\n   * @private\n   */\n  function elementMatchesRule(element, selectors) {\n    var firstMatching, parentMatching = true;\n    //start from rightmost selector.\n    firstMatching = selectorMatches(element, selectors.pop());\n    if (firstMatching && selectors.length) {\n      parentMatching = doesSomeParentMatch(element, selectors);\n    }\n    return firstMatching && parentMatching && (selectors.length === 0);\n  }\n\n  function doesSomeParentMatch(element, selectors) {\n    var selector, parentMatching = true;\n    while (element.parentNode && element.parentNode.nodeType === 1 && selectors.length) {\n      if (parentMatching) {\n        selector = selectors.pop();\n      }\n      element = element.parentNode;\n      parentMatching = selectorMatches(element, selector);\n    }\n    return selectors.length === 0;\n  }\n\n  /**\n   * @private\n   */\n  function selectorMatches(element, selector) {\n    var nodeName = element.nodeName,\n        classNames = element.getAttribute('class'),\n        id = element.getAttribute('id'), matcher, i;\n    // i check if a selector matches slicing away part from it.\n    // if i get empty string i should match\n    matcher = new RegExp('^' + nodeName, 'i');\n    selector = selector.replace(matcher, '');\n    if (id && selector.length) {\n      matcher = new RegExp('#' + id + '(?![a-zA-Z\\\\-]+)', 'i');\n      selector = selector.replace(matcher, '');\n    }\n    if (classNames && selector.length) {\n      classNames = classNames.split(' ');\n      for (i = classNames.length; i--;) {\n        matcher = new RegExp('\\\\.' + classNames[i] + '(?![a-zA-Z\\\\-]+)', 'i');\n        selector = selector.replace(matcher, '');\n      }\n    }\n    return selector.length === 0;\n  }\n\n  /**\n   * @private\n   * to support IE8 missing getElementById on SVGdocument and on node xmlDOM\n   */\n  function elementById(doc, id) {\n    var el;\n    doc.getElementById && (el = doc.getElementById(id));\n    if (el) {\n      return el;\n    }\n    var node, i, len, nodelist = doc.getElementsByTagName('*');\n    for (i = 0, len = nodelist.length; i < len; i++) {\n      node = nodelist[i];\n      if (id === node.getAttribute('id')) {\n        return node;\n      }\n    }\n  }\n\n  /**\n   * @private\n   */\n  function parseUseDirectives(doc) {\n    var nodelist = _getMultipleNodes(doc, ['use', 'svg:use']), i = 0;\n    while (nodelist.length && i < nodelist.length) {\n      var el = nodelist[i],\n          xlinkAttribute = el.getAttribute('xlink:href') || el.getAttribute('href');\n\n      if (xlinkAttribute === null) {\n        return;\n      }\n\n      var xlink = xlinkAttribute.substr(1),\n          x = el.getAttribute('x') || 0,\n          y = el.getAttribute('y') || 0,\n          el2 = elementById(doc, xlink).cloneNode(true),\n          currentTrans = (el2.getAttribute('transform') || '') + ' translate(' + x + ', ' + y + ')',\n          parentNode,\n          oldLength = nodelist.length, attr,\n          j,\n          attrs,\n          len,\n          namespace = fabric.svgNS;\n\n      applyViewboxTransform(el2);\n      if (/^svg$/i.test(el2.nodeName)) {\n        var el3 = el2.ownerDocument.createElementNS(namespace, 'g');\n        for (j = 0, attrs = el2.attributes, len = attrs.length; j < len; j++) {\n          attr = attrs.item(j);\n          el3.setAttributeNS(namespace, attr.nodeName, attr.nodeValue);\n        }\n        // el2.firstChild != null\n        while (el2.firstChild) {\n          el3.appendChild(el2.firstChild);\n        }\n        el2 = el3;\n      }\n\n      for (j = 0, attrs = el.attributes, len = attrs.length; j < len; j++) {\n        attr = attrs.item(j);\n        if (attr.nodeName === 'x' || attr.nodeName === 'y' ||\n          attr.nodeName === 'xlink:href' || attr.nodeName === 'href') {\n          continue;\n        }\n\n        if (attr.nodeName === 'transform') {\n          currentTrans = attr.nodeValue + ' ' + currentTrans;\n        }\n        else {\n          el2.setAttribute(attr.nodeName, attr.nodeValue);\n        }\n      }\n\n      el2.setAttribute('transform', currentTrans);\n      el2.setAttribute('instantiated_by_use', '1');\n      el2.removeAttribute('id');\n      parentNode = el.parentNode;\n      parentNode.replaceChild(el2, el);\n      // some browsers do not shorten nodelist after replaceChild (IE8)\n      if (nodelist.length === oldLength) {\n        i++;\n      }\n    }\n  }\n\n  // http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n  // matches, e.g.: +14.56e-12, etc.\n  var reViewBoxAttrValue = new RegExp(\n    '^' +\n    '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n    '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n    '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n    '\\\\s*(' + fabric.reNum + '+)\\\\s*' +\n    '$'\n  );\n\n  /**\n   * Add a <g> element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n   */\n  function applyViewboxTransform(element) {\n    if (!fabric.svgViewBoxElementsRegEx.test(element.nodeName)) {\n      return {};\n    }\n    var viewBoxAttr = element.getAttribute('viewBox'),\n        scaleX = 1,\n        scaleY = 1,\n        minX = 0,\n        minY = 0,\n        viewBoxWidth, viewBoxHeight, matrix, el,\n        widthAttr = element.getAttribute('width'),\n        heightAttr = element.getAttribute('height'),\n        x = element.getAttribute('x') || 0,\n        y = element.getAttribute('y') || 0,\n        preserveAspectRatio = element.getAttribute('preserveAspectRatio') || '',\n        missingViewBox = (!viewBoxAttr || !(viewBoxAttr = viewBoxAttr.match(reViewBoxAttrValue))),\n        missingDimAttr = (!widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%'),\n        toBeParsed = missingViewBox && missingDimAttr,\n        parsedDim = { }, translateMatrix = '', widthDiff = 0, heightDiff = 0;\n\n    parsedDim.width = 0;\n    parsedDim.height = 0;\n    parsedDim.toBeParsed = toBeParsed;\n\n    if (missingViewBox) {\n      if (((x || y) && element.parentNode && element.parentNode.nodeName !== '#document')) {\n        translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') ';\n        matrix = (element.getAttribute('transform') || '') + translateMatrix;\n        element.setAttribute('transform', matrix);\n        element.removeAttribute('x');\n        element.removeAttribute('y');\n      }\n    }\n\n    if (toBeParsed) {\n      return parsedDim;\n    }\n\n    if (missingViewBox) {\n      parsedDim.width = parseUnit(widthAttr);\n      parsedDim.height = parseUnit(heightAttr);\n      // set a transform for elements that have x y and are inner(only) SVGs\n      return parsedDim;\n    }\n    minX = -parseFloat(viewBoxAttr[1]);\n    minY = -parseFloat(viewBoxAttr[2]);\n    viewBoxWidth = parseFloat(viewBoxAttr[3]);\n    viewBoxHeight = parseFloat(viewBoxAttr[4]);\n    parsedDim.minX = minX;\n    parsedDim.minY = minY;\n    parsedDim.viewBoxWidth = viewBoxWidth;\n    parsedDim.viewBoxHeight = viewBoxHeight;\n    if (!missingDimAttr) {\n      parsedDim.width = parseUnit(widthAttr);\n      parsedDim.height = parseUnit(heightAttr);\n      scaleX = parsedDim.width / viewBoxWidth;\n      scaleY = parsedDim.height / viewBoxHeight;\n    }\n    else {\n      parsedDim.width = viewBoxWidth;\n      parsedDim.height = viewBoxHeight;\n    }\n\n    // default is to preserve aspect ratio\n    preserveAspectRatio = fabric.util.parsePreserveAspectRatioAttribute(preserveAspectRatio);\n    if (preserveAspectRatio.alignX !== 'none') {\n      //translate all container for the effect of Mid, Min, Max\n      if (preserveAspectRatio.meetOrSlice === 'meet') {\n        scaleY = scaleX = (scaleX > scaleY ? scaleY : scaleX);\n        // calculate additional translation to move the viewbox\n      }\n      if (preserveAspectRatio.meetOrSlice === 'slice') {\n        scaleY = scaleX = (scaleX > scaleY ? scaleX : scaleY);\n        // calculate additional translation to move the viewbox\n      }\n      widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n      heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n      if (preserveAspectRatio.alignX === 'Mid') {\n        widthDiff /= 2;\n      }\n      if (preserveAspectRatio.alignY === 'Mid') {\n        heightDiff /= 2;\n      }\n      if (preserveAspectRatio.alignX === 'Min') {\n        widthDiff = 0;\n      }\n      if (preserveAspectRatio.alignY === 'Min') {\n        heightDiff = 0;\n      }\n    }\n\n    if (scaleX === 1 && scaleY === 1 && minX === 0 && minY === 0 && x === 0 && y === 0) {\n      return parsedDim;\n    }\n    if ((x || y) && element.parentNode.nodeName !== '#document') {\n      translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') ';\n    }\n\n    matrix = translateMatrix + ' matrix(' + scaleX +\n                  ' 0' +\n                  ' 0 ' +\n                  scaleY + ' ' +\n                  (minX * scaleX + widthDiff) + ' ' +\n                  (minY * scaleY + heightDiff) + ') ';\n    // seems unused.\n    // parsedDim.viewboxTransform = fabric.parseTransformAttribute(matrix);\n    if (element.nodeName === 'svg') {\n      el = element.ownerDocument.createElementNS(fabric.svgNS, 'g');\n      // element.firstChild != null\n      while (element.firstChild) {\n        el.appendChild(element.firstChild);\n      }\n      element.appendChild(el);\n    }\n    else {\n      el = element;\n      el.removeAttribute('x');\n      el.removeAttribute('y');\n      matrix = el.getAttribute('transform') + matrix;\n    }\n    el.setAttribute('transform', matrix);\n    return parsedDim;\n  }\n\n  function hasAncestorWithNodeName(element, nodeName) {\n    while (element && (element = element.parentNode)) {\n      if (element.nodeName && nodeName.test(element.nodeName.replace('svg:', ''))\n        && !element.getAttribute('instantiated_by_use')) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Parses an SVG document, converts it to an array of corresponding fabric.* instances and passes them to a callback\n   * @static\n   * @function\n   * @memberOf fabric\n   * @param {SVGDocument} doc SVG document to parse\n   * @param {Function} callback Callback to call when parsing is finished;\n   * It's being passed an array of elements (parsed from a document).\n   * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n   * @param {Object} [parsingOptions] options for parsing document\n   * @param {String} [parsingOptions.crossOrigin] crossOrigin settings\n   */\n  fabric.parseSVGDocument = function(doc, callback, reviver, parsingOptions) {\n    if (!doc) {\n      return;\n    }\n\n    parseUseDirectives(doc);\n\n    var svgUid =  fabric.Object.__uid++, i, len,\n        options = applyViewboxTransform(doc),\n        descendants = fabric.util.toArray(doc.getElementsByTagName('*'));\n    options.crossOrigin = parsingOptions && parsingOptions.crossOrigin;\n    options.svgUid = svgUid;\n\n    if (descendants.length === 0 && fabric.isLikelyNode) {\n      // we're likely in node, where \"o3-xml\" library fails to gEBTN(\"*\")\n      // https://github.com/ajaxorg/node-o3-xml/issues/21\n      descendants = doc.selectNodes('//*[name(.)!=\"svg\"]');\n      var arr = [];\n      for (i = 0, len = descendants.length; i < len; i++) {\n        arr[i] = descendants[i];\n      }\n      descendants = arr;\n    }\n\n    var elements = descendants.filter(function(el) {\n      applyViewboxTransform(el);\n      return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')) &&\n            !hasAncestorWithNodeName(el, fabric.svgInvalidAncestorsRegEx); // http://www.w3.org/TR/SVG/struct.html#DefsElement\n    });\n    if (!elements || (elements && !elements.length)) {\n      callback && callback([], {});\n      return;\n    }\n    var clipPaths = { };\n    descendants.filter(function(el) {\n      return el.nodeName.replace('svg:', '') === 'clipPath';\n    }).forEach(function(el) {\n      var id = el.getAttribute('id');\n      clipPaths[id] = fabric.util.toArray(el.getElementsByTagName('*')).filter(function(el) {\n        return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', ''));\n      });\n    });\n    fabric.gradientDefs[svgUid] = fabric.getGradientDefs(doc);\n    fabric.cssRules[svgUid] = fabric.getCSSRules(doc);\n    fabric.clipPaths[svgUid] = clipPaths;\n    // Precedence of rules:   style > class > attribute\n    fabric.parseElements(elements, function(instances, elements) {\n      if (callback) {\n        callback(instances, options, elements, descendants);\n        delete fabric.gradientDefs[svgUid];\n        delete fabric.cssRules[svgUid];\n        delete fabric.clipPaths[svgUid];\n      }\n    }, clone(options), reviver, parsingOptions);\n  };\n\n  function recursivelyParseGradientsXlink(doc, gradient) {\n    var gradientsAttrs = ['gradientTransform', 'x1', 'x2', 'y1', 'y2', 'gradientUnits', 'cx', 'cy', 'r', 'fx', 'fy'],\n        xlinkAttr = 'xlink:href',\n        xLink = gradient.getAttribute(xlinkAttr).substr(1),\n        referencedGradient = elementById(doc, xLink);\n    if (referencedGradient && referencedGradient.getAttribute(xlinkAttr)) {\n      recursivelyParseGradientsXlink(doc, referencedGradient);\n    }\n    gradientsAttrs.forEach(function(attr) {\n      if (referencedGradient && !gradient.hasAttribute(attr) && referencedGradient.hasAttribute(attr)) {\n        gradient.setAttribute(attr, referencedGradient.getAttribute(attr));\n      }\n    });\n    if (!gradient.children.length) {\n      var referenceClone = referencedGradient.cloneNode(true);\n      while (referenceClone.firstChild) {\n        gradient.appendChild(referenceClone.firstChild);\n      }\n    }\n    gradient.removeAttribute(xlinkAttr);\n  }\n\n  var reFontDeclaration = new RegExp(\n    '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n    '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n      fabric.reNum +\n    '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' + fabric.reNum + '))?\\\\s+(.*)');\n\n  extend(fabric, {\n    /**\n     * Parses a short font declaration, building adding its properties to a style object\n     * @static\n     * @function\n     * @memberOf fabric\n     * @param {String} value font declaration\n     * @param {Object} oStyle definition\n     */\n    parseFontDeclaration: function(value, oStyle) {\n      var match = value.match(reFontDeclaration);\n\n      if (!match) {\n        return;\n      }\n      var fontStyle = match[1],\n          // font variant is not used\n          // fontVariant = match[2],\n          fontWeight = match[3],\n          fontSize = match[4],\n          lineHeight = match[5],\n          fontFamily = match[6];\n\n      if (fontStyle) {\n        oStyle.fontStyle = fontStyle;\n      }\n      if (fontWeight) {\n        oStyle.fontWeight = isNaN(parseFloat(fontWeight)) ? fontWeight : parseFloat(fontWeight);\n      }\n      if (fontSize) {\n        oStyle.fontSize = parseUnit(fontSize);\n      }\n      if (fontFamily) {\n        oStyle.fontFamily = fontFamily;\n      }\n      if (lineHeight) {\n        oStyle.lineHeight = lineHeight === 'normal' ? 1 : lineHeight;\n      }\n    },\n\n    /**\n     * Parses an SVG document, returning all of the gradient declarations found in it\n     * @static\n     * @function\n     * @memberOf fabric\n     * @param {SVGDocument} doc SVG document to parse\n     * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element\n     */\n    getGradientDefs: function(doc) {\n      var tagArray = [\n            'linearGradient',\n            'radialGradient',\n            'svg:linearGradient',\n            'svg:radialGradient'],\n          elList = _getMultipleNodes(doc, tagArray),\n          el, j = 0, gradientDefs = { };\n      j = elList.length;\n      while (j--) {\n        el = elList[j];\n        if (el.getAttribute('xlink:href')) {\n          recursivelyParseGradientsXlink(doc, el);\n        }\n        gradientDefs[el.getAttribute('id')] = el;\n      }\n      return gradientDefs;\n    },\n\n    /**\n     * Returns an object of attributes' name/value, given element and an array of attribute names;\n     * Parses parent \"g\" nodes recursively upwards.\n     * @static\n     * @memberOf fabric\n     * @param {DOMElement} element Element to parse\n     * @param {Array} attributes Array of attributes to parse\n     * @return {Object} object containing parsed attributes' names/values\n     */\n    parseAttributes: function(element, attributes, svgUid) {\n\n      if (!element) {\n        return;\n      }\n\n      var value,\n          parentAttributes = { },\n          fontSize, parentFontSize;\n\n      if (typeof svgUid === 'undefined') {\n        svgUid = element.getAttribute('svgUid');\n      }\n      // if there's a parent container (`g` or `a` or `symbol` node), parse its attributes recursively upwards\n      if (element.parentNode && fabric.svgValidParentsRegEx.test(element.parentNode.nodeName)) {\n        parentAttributes = fabric.parseAttributes(element.parentNode, attributes, svgUid);\n      }\n\n      var ownAttributes = attributes.reduce(function(memo, attr) {\n        value = element.getAttribute(attr);\n        if (value) { // eslint-disable-line\n          memo[attr] = value;\n        }\n        return memo;\n      }, { });\n      // add values parsed from style, which take precedence over attributes\n      // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes)\n      var cssAttrs = extend(\n        getGlobalStylesForElement(element, svgUid),\n        fabric.parseStyleAttribute(element)\n      );\n      ownAttributes = extend(\n        ownAttributes,\n        cssAttrs\n      );\n      if (cssAttrs[cPath]) {\n        element.setAttribute(cPath, cssAttrs[cPath]);\n      }\n      fontSize = parentFontSize = parentAttributes.fontSize || fabric.Text.DEFAULT_SVG_FONT_SIZE;\n      if (ownAttributes[fSize]) {\n        // looks like the minimum should be 9px when dealing with ems. this is what looks like in browsers.\n        ownAttributes[fSize] = fontSize = parseUnit(ownAttributes[fSize], parentFontSize);\n      }\n\n      var normalizedAttr, normalizedValue, normalizedStyle = {};\n      for (var attr in ownAttributes) {\n        normalizedAttr = normalizeAttr(attr);\n        normalizedValue = normalizeValue(normalizedAttr, ownAttributes[attr], parentAttributes, fontSize);\n        normalizedStyle[normalizedAttr] = normalizedValue;\n      }\n      if (normalizedStyle && normalizedStyle.font) {\n        fabric.parseFontDeclaration(normalizedStyle.font, normalizedStyle);\n      }\n      var mergedAttrs = extend(parentAttributes, normalizedStyle);\n      return fabric.svgValidParentsRegEx.test(element.nodeName) ? mergedAttrs : _setStrokeFillOpacity(mergedAttrs);\n    },\n\n    /**\n     * Transforms an array of svg elements to corresponding fabric.* instances\n     * @static\n     * @memberOf fabric\n     * @param {Array} elements Array of elements to parse\n     * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements)\n     * @param {Object} [options] Options object\n     * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n     */\n    parseElements: function(elements, callback, options, reviver, parsingOptions) {\n      new fabric.ElementsParser(elements, callback, options, reviver, parsingOptions).parse();\n    },\n\n    /**\n     * Parses \"style\" attribute, retuning an object with values\n     * @static\n     * @memberOf fabric\n     * @param {SVGElement} element Element to parse\n     * @return {Object} Objects with values parsed from style attribute of an element\n     */\n    parseStyleAttribute: function(element) {\n      var oStyle = { },\n          style = element.getAttribute('style');\n\n      if (!style) {\n        return oStyle;\n      }\n\n      if (typeof style === 'string') {\n        parseStyleString(style, oStyle);\n      }\n      else {\n        parseStyleObject(style, oStyle);\n      }\n\n      return oStyle;\n    },\n\n    /**\n     * Parses \"points\" attribute, returning an array of values\n     * @static\n     * @memberOf fabric\n     * @param {String} points points attribute string\n     * @return {Array} array of points\n     */\n    parsePointsAttribute: function(points) {\n\n      // points attribute is required and must not be empty\n      if (!points) {\n        return null;\n      }\n\n      // replace commas with whitespace and remove bookending whitespace\n      points = points.replace(/,/g, ' ').trim();\n\n      points = points.split(/\\s+/);\n      var parsedPoints = [], i, len;\n\n      for (i = 0, len = points.length; i < len; i += 2) {\n        parsedPoints.push({\n          x: parseFloat(points[i]),\n          y: parseFloat(points[i + 1])\n        });\n      }\n\n      // odd number of points is an error\n      // if (parsedPoints.length % 2 !== 0) {\n      //   return null;\n      // }\n\n      return parsedPoints;\n    },\n\n    /**\n     * Returns CSS rules for a given SVG document\n     * @static\n     * @function\n     * @memberOf fabric\n     * @param {SVGDocument} doc SVG document to parse\n     * @return {Object} CSS rules of this document\n     */\n    getCSSRules: function(doc) {\n      var styles = doc.getElementsByTagName('style'), i, len,\n          allRules = { }, rules;\n\n      // very crude parsing of style contents\n      for (i = 0, len = styles.length; i < len; i++) {\n        var styleContents = styles[i].textContent;\n\n        // remove comments\n        styleContents = styleContents.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '');\n        if (styleContents.trim() === '') {\n          continue;\n        }\n        rules = styleContents.match(/[^{]*\\{[\\s\\S]*?\\}/g);\n        rules = rules.map(function(rule) { return rule.trim(); });\n        // eslint-disable-next-line no-loop-func\n        rules.forEach(function(rule) {\n\n          var match = rule.match(/([\\s\\S]*?)\\s*\\{([^}]*)\\}/),\n              ruleObj = { }, declaration = match[2].trim(),\n              propertyValuePairs = declaration.replace(/;$/, '').split(/\\s*;\\s*/);\n\n          for (i = 0, len = propertyValuePairs.length; i < len; i++) {\n            var pair = propertyValuePairs[i].split(/\\s*:\\s*/),\n                property = pair[0],\n                value = pair[1];\n            ruleObj[property] = value;\n          }\n          rule = match[1];\n          rule.split(',').forEach(function(_rule) {\n            _rule = _rule.replace(/^svg/i, '').trim();\n            if (_rule === '') {\n              return;\n            }\n            if (allRules[_rule]) {\n              fabric.util.object.extend(allRules[_rule], ruleObj);\n            }\n            else {\n              allRules[_rule] = fabric.util.object.clone(ruleObj);\n            }\n          });\n        });\n      }\n      return allRules;\n    },\n\n    /**\n     * Takes url corresponding to an SVG document, and parses it into a set of fabric objects.\n     * Note that SVG is fetched via XMLHttpRequest, so it needs to conform to SOP (Same Origin Policy)\n     * @memberOf fabric\n     * @param {String} url\n     * @param {Function} callback\n     * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n     * @param {Object} [options] Object containing options for parsing\n     * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n     */\n    loadSVGFromURL: function(url, callback, reviver, options) {\n\n      url = url.replace(/^\\n\\s*/, '').trim();\n      new fabric.util.request(url, {\n        method: 'get',\n        onComplete: onComplete\n      });\n\n      function onComplete(r) {\n\n        var xml = r.responseXML;\n        if (!xml || !xml.documentElement) {\n          callback && callback(null);\n          return false;\n        }\n\n        fabric.parseSVGDocument(xml.documentElement, function (results, _options, elements, allElements) {\n          callback && callback(results, _options, elements, allElements);\n        }, reviver, options);\n      }\n    },\n\n    /**\n     * Takes string corresponding to an SVG document, and parses it into a set of fabric objects\n     * @memberOf fabric\n     * @param {String} string\n     * @param {Function} callback\n     * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n     * @param {Object} [options] Object containing options for parsing\n     * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n     */\n    loadSVGFromString: function(string, callback, reviver, options) {\n      var parser = new fabric.window.DOMParser(),\n          doc = parser.parseFromString(string.trim(), 'text/xml');\n      fabric.parseSVGDocument(doc.documentElement, function (results, _options, elements, allElements) {\n        callback(results, _options, elements, allElements);\n      }, reviver, options);\n    }\n  });\n\n})( true ? exports : undefined);\n\n\nfabric.ElementsParser = function(elements, callback, options, reviver, parsingOptions, doc) {\n  this.elements = elements;\n  this.callback = callback;\n  this.options = options;\n  this.reviver = reviver;\n  this.svgUid = (options && options.svgUid) || 0;\n  this.parsingOptions = parsingOptions;\n  this.regexUrl = /^url\\(['\"]?#([^'\"]+)['\"]?\\)/g;\n  this.doc = doc;\n};\n\n(function(proto) {\n  proto.parse = function() {\n    this.instances = new Array(this.elements.length);\n    this.numElements = this.elements.length;\n    this.createObjects();\n  };\n\n  proto.createObjects = function() {\n    var _this = this;\n    this.elements.forEach(function(element, i) {\n      element.setAttribute('svgUid', _this.svgUid);\n      _this.createObject(element, i);\n    });\n  };\n\n  proto.findTag = function(el) {\n    return fabric[fabric.util.string.capitalize(el.tagName.replace('svg:', ''))];\n  };\n\n  proto.createObject = function(el, index) {\n    var klass = this.findTag(el);\n    if (klass && klass.fromElement) {\n      try {\n        klass.fromElement(el, this.createCallback(index, el), this.options);\n      }\n      catch (err) {\n        fabric.log(err);\n      }\n    }\n    else {\n      this.checkIfDone();\n    }\n  };\n\n  proto.createCallback = function(index, el) {\n    var _this = this;\n    return function(obj) {\n      var _options;\n      _this.resolveGradient(obj, el, 'fill');\n      _this.resolveGradient(obj, el, 'stroke');\n      if (obj instanceof fabric.Image && obj._originalElement) {\n        _options = obj.parsePreserveAspectRatioAttribute(el);\n      }\n      obj._removeTransformMatrix(_options);\n      _this.resolveClipPath(obj, el);\n      _this.reviver && _this.reviver(el, obj);\n      _this.instances[index] = obj;\n      _this.checkIfDone();\n    };\n  };\n\n  proto.extractPropertyDefinition = function(obj, property, storage) {\n    var value = obj[property], regex = this.regexUrl;\n    if (!regex.test(value)) {\n      return;\n    }\n    regex.lastIndex = 0;\n    var id = regex.exec(value)[1];\n    regex.lastIndex = 0;\n    return fabric[storage][this.svgUid][id];\n  };\n\n  proto.resolveGradient = function(obj, el, property) {\n    var gradientDef = this.extractPropertyDefinition(obj, property, 'gradientDefs');\n    if (gradientDef) {\n      var opacityAttr = el.getAttribute(property + '-opacity');\n      var gradient = fabric.Gradient.fromElement(gradientDef, obj, opacityAttr, this.options);\n      obj.set(property, gradient);\n    }\n  };\n\n  proto.createClipPathCallback = function(obj, container) {\n    return function(_newObj) {\n      _newObj._removeTransformMatrix();\n      _newObj.fillRule = _newObj.clipRule;\n      container.push(_newObj);\n    };\n  };\n\n  proto.resolveClipPath = function(obj, usingElement) {\n    var clipPath = this.extractPropertyDefinition(obj, 'clipPath', 'clipPaths'),\n        element, klass, objTransformInv, container, gTransform, options;\n    if (clipPath) {\n      container = [];\n      objTransformInv = fabric.util.invertTransform(obj.calcTransformMatrix());\n      // move the clipPath tag as sibling to the real element that is using it\n      var clipPathTag = clipPath[0].parentNode;\n      var clipPathOwner = usingElement;\n      while (clipPathOwner.parentNode && clipPathOwner.getAttribute('clip-path') !== obj.clipPath) {\n        clipPathOwner = clipPathOwner.parentNode;\n      }\n      clipPathOwner.parentNode.appendChild(clipPathTag);\n      for (var i = 0; i < clipPath.length; i++) {\n        element = clipPath[i];\n        klass = this.findTag(element);\n        klass.fromElement(\n          element,\n          this.createClipPathCallback(obj, container),\n          this.options\n        );\n      }\n      if (container.length === 1) {\n        clipPath = container[0];\n      }\n      else {\n        clipPath = new fabric.Group(container);\n      }\n      gTransform = fabric.util.multiplyTransformMatrices(\n        objTransformInv,\n        clipPath.calcTransformMatrix()\n      );\n      if (clipPath.clipPath) {\n        this.resolveClipPath(clipPath, clipPathOwner);\n      }\n      var options = fabric.util.qrDecompose(gTransform);\n      clipPath.flipX = false;\n      clipPath.flipY = false;\n      clipPath.set('scaleX', options.scaleX);\n      clipPath.set('scaleY', options.scaleY);\n      clipPath.angle = options.angle;\n      clipPath.skewX = options.skewX;\n      clipPath.skewY = 0;\n      clipPath.setPositionByOrigin({ x: options.translateX, y: options.translateY }, 'center', 'center');\n      obj.clipPath = clipPath;\n    }\n    else {\n      // if clip-path does not resolve to any element, delete the property.\n      delete obj.clipPath;\n    }\n  };\n\n  proto.checkIfDone = function() {\n    if (--this.numElements === 0) {\n      this.instances = this.instances.filter(function(el) {\n        // eslint-disable-next-line no-eq-null, eqeqeq\n        return el != null;\n      });\n      this.callback(this.instances, this.elements);\n    }\n  };\n})(fabric.ElementsParser.prototype);\n\n\n(function(global) {\n\n  'use strict';\n\n  /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n\n  var fabric = global.fabric || (global.fabric = { });\n\n  if (fabric.Point) {\n    fabric.warn('fabric.Point is already defined');\n    return;\n  }\n\n  fabric.Point = Point;\n\n  /**\n   * Point class\n   * @class fabric.Point\n   * @memberOf fabric\n   * @constructor\n   * @param {Number} x\n   * @param {Number} y\n   * @return {fabric.Point} thisArg\n   */\n  function Point(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  Point.prototype = /** @lends fabric.Point.prototype */ {\n\n    type: 'point',\n\n    constructor: Point,\n\n    /**\n     * Adds another point to this one and returns another one\n     * @param {fabric.Point} that\n     * @return {fabric.Point} new Point instance with added values\n     */\n    add: function (that) {\n      return new Point(this.x + that.x, this.y + that.y);\n    },\n\n    /**\n     * Adds another point to this one\n     * @param {fabric.Point} that\n     * @return {fabric.Point} thisArg\n     * @chainable\n     */\n    addEquals: function (that) {\n      this.x += that.x;\n      this.y += that.y;\n      return this;\n    },\n\n    /**\n     * Adds value to this point and returns a new one\n     * @param {Number} scalar\n     * @return {fabric.Point} new Point with added value\n     */\n    scalarAdd: function (scalar) {\n      return new Point(this.x + scalar, this.y + scalar);\n    },\n\n    /**\n     * Adds value to this point\n     * @param {Number} scalar\n     * @return {fabric.Point} thisArg\n     * @chainable\n     */\n    scalarAddEquals: function (scalar) {\n      this.x += scalar;\n      this.y += scalar;\n      return this;\n    },\n\n    /**\n     * Subtracts another point from this point and returns a new one\n     * @param {fabric.Point} that\n     * @return {fabric.Point} new Point object with subtracted values\n     */\n    subtract: function (that) {\n      return new Point(this.x - that.x, this.y - that.y);\n    },\n\n    /**\n     * Subtracts another point from this point\n     * @param {fabric.Point} that\n     * @return {fabric.Point} thisArg\n     * @chainable\n     */\n    subtractEquals: function (that) {\n      this.x -= that.x;\n      this.y -= that.y;\n      return this;\n    },\n\n    /**\n     * Subtracts value from this point and returns a new one\n     * @param {Number} scalar\n     * @return {fabric.Point}\n     */\n    scalarSubtract: function (scalar) {\n      return new Point(this.x - scalar, this.y - scalar);\n    },\n\n    /**\n     * Subtracts value from this point\n     * @param {Number} scalar\n     * @return {fabric.Point} thisArg\n     * @chainable\n     */\n    scalarSubtractEquals: function (scalar) {\n      this.x -= scalar;\n      this.y -= scalar;\n      return this;\n    },\n\n    /**\n     * Multiplies this point by a value and returns a new one\n     * TODO: rename in scalarMultiply in 2.0\n     * @param {Number} scalar\n     * @return {fabric.Point}\n     */\n    multiply: function (scalar) {\n      return new Point(this.x * scalar, this.y * scalar);\n    },\n\n    /**\n     * Multiplies this point by a value\n     * TODO: rename in scalarMultiplyEquals in 2.0\n     * @param {Number} scalar\n     * @return {fabric.Point} thisArg\n     * @chainable\n     */\n    multiplyEquals: function (scalar) {\n      this.x *= scalar;\n      this.y *= scalar;\n      return this;\n    },\n\n    /**\n     * Divides this point by a value and returns a new one\n     * TODO: rename in scalarDivide in 2.0\n     * @param {Number} scalar\n     * @return {fabric.Point}\n     */\n    divide: function (scalar) {\n      return new Point(this.x / scalar, this.y / scalar);\n    },\n\n    /**\n     * Divides this point by a value\n     * TODO: rename in scalarDivideEquals in 2.0\n     * @param {Number} scalar\n     * @return {fabric.Point} thisArg\n     * @chainable\n     */\n    divideEquals: function (scalar) {\n      this.x /= scalar;\n      this.y /= scalar;\n      return this;\n    },\n\n    /**\n     * Returns true if this point is equal to another one\n     * @param {fabric.Point} that\n     * @return {Boolean}\n     */\n    eq: function (that) {\n      return (this.x === that.x && this.y === that.y);\n    },\n\n    /**\n     * Returns true if this point is less than another one\n     * @param {fabric.Point} that\n     * @return {Boolean}\n     */\n    lt: function (that) {\n      return (this.x < that.x && this.y < that.y);\n    },\n\n    /**\n     * Returns true if this point is less than or equal to another one\n     * @param {fabric.Point} that\n     * @return {Boolean}\n     */\n    lte: function (that) {\n      return (this.x <= that.x && this.y <= that.y);\n    },\n\n    /**\n\n     * Returns true if this point is greater another one\n     * @param {fabric.Point} that\n     * @return {Boolean}\n     */\n    gt: function (that) {\n      return (this.x > that.x && this.y > that.y);\n    },\n\n    /**\n     * Returns true if this point is greater than or equal to another one\n     * @param {fabric.Point} that\n     * @return {Boolean}\n     */\n    gte: function (that) {\n      return (this.x >= that.x && this.y >= that.y);\n    },\n\n    /**\n     * Returns new point which is the result of linear interpolation with this one and another one\n     * @param {fabric.Point} that\n     * @param {Number} t , position of interpolation, between 0 and 1 default 0.5\n     * @return {fabric.Point}\n     */\n    lerp: function (that, t) {\n      if (typeof t === 'undefined') {\n        t = 0.5;\n      }\n      t = Math.max(Math.min(1, t), 0);\n      return new Point(this.x + (that.x - this.x) * t, this.y + (that.y - this.y) * t);\n    },\n\n    /**\n     * Returns distance from this point and another one\n     * @param {fabric.Point} that\n     * @return {Number}\n     */\n    distanceFrom: function (that) {\n      var dx = this.x - that.x,\n          dy = this.y - that.y;\n      return Math.sqrt(dx * dx + dy * dy);\n    },\n\n    /**\n     * Returns the point between this point and another one\n     * @param {fabric.Point} that\n     * @return {fabric.Point}\n     */\n    midPointFrom: function (that) {\n      return this.lerp(that);\n    },\n\n    /**\n     * Returns a new point which is the min of this and another one\n     * @param {fabric.Point} that\n     * @return {fabric.Point}\n     */\n    min: function (that) {\n      return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y));\n    },\n\n    /**\n     * Returns a new point which is the max of this and another one\n     * @param {fabric.Point} that\n     * @return {fabric.Point}\n     */\n    max: function (that) {\n      return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y));\n    },\n\n    /**\n     * Returns string representation of this point\n     * @return {String}\n     */\n    toString: function () {\n      return this.x + ',' + this.y;\n    },\n\n    /**\n     * Sets x/y of this point\n     * @param {Number} x\n     * @param {Number} y\n     * @chainable\n     */\n    setXY: function (x, y) {\n      this.x = x;\n      this.y = y;\n      return this;\n    },\n\n    /**\n     * Sets x of this point\n     * @param {Number} x\n     * @chainable\n     */\n    setX: function (x) {\n      this.x = x;\n      return this;\n    },\n\n    /**\n     * Sets y of this point\n     * @param {Number} y\n     * @chainable\n     */\n    setY: function (y) {\n      this.y = y;\n      return this;\n    },\n\n    /**\n     * Sets x/y of this point from another point\n     * @param {fabric.Point} that\n     * @chainable\n     */\n    setFromPoint: function (that) {\n      this.x = that.x;\n      this.y = that.y;\n      return this;\n    },\n\n    /**\n     * Swaps x/y of this point and another point\n     * @param {fabric.Point} that\n     */\n    swap: function (that) {\n      var x = this.x,\n          y = this.y;\n      this.x = that.x;\n      this.y = that.y;\n      that.x = x;\n      that.y = y;\n    },\n\n    /**\n     * return a cloned instance of the point\n     * @return {fabric.Point}\n     */\n    clone: function () {\n      return new Point(this.x, this.y);\n    }\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n  var fabric = global.fabric || (global.fabric = { });\n\n  if (fabric.Intersection) {\n    fabric.warn('fabric.Intersection is already defined');\n    return;\n  }\n\n  /**\n   * Intersection class\n   * @class fabric.Intersection\n   * @memberOf fabric\n   * @constructor\n   */\n  function Intersection(status) {\n    this.status = status;\n    this.points = [];\n  }\n\n  fabric.Intersection = Intersection;\n\n  fabric.Intersection.prototype = /** @lends fabric.Intersection.prototype */ {\n\n    constructor: Intersection,\n\n    /**\n     * Appends a point to intersection\n     * @param {fabric.Point} point\n     * @return {fabric.Intersection} thisArg\n     * @chainable\n     */\n    appendPoint: function (point) {\n      this.points.push(point);\n      return this;\n    },\n\n    /**\n     * Appends points to intersection\n     * @param {Array} points\n     * @return {fabric.Intersection} thisArg\n     * @chainable\n     */\n    appendPoints: function (points) {\n      this.points = this.points.concat(points);\n      return this;\n    }\n  };\n\n  /**\n   * Checks if one line intersects another\n   * TODO: rename in intersectSegmentSegment\n   * @static\n   * @param {fabric.Point} a1\n   * @param {fabric.Point} a2\n   * @param {fabric.Point} b1\n   * @param {fabric.Point} b2\n   * @return {fabric.Intersection}\n   */\n  fabric.Intersection.intersectLineLine = function (a1, a2, b1, b2) {\n    var result,\n        uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x),\n        ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x),\n        uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n    if (uB !== 0) {\n      var ua = uaT / uB,\n          ub = ubT / uB;\n      if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n        result = new Intersection('Intersection');\n        result.appendPoint(new fabric.Point(a1.x + ua * (a2.x - a1.x), a1.y + ua * (a2.y - a1.y)));\n      }\n      else {\n        result = new Intersection();\n      }\n    }\n    else {\n      if (uaT === 0 || ubT === 0) {\n        result = new Intersection('Coincident');\n      }\n      else {\n        result = new Intersection('Parallel');\n      }\n    }\n    return result;\n  };\n\n  /**\n   * Checks if line intersects polygon\n   * TODO: rename in intersectSegmentPolygon\n   * fix detection of coincident\n   * @static\n   * @param {fabric.Point} a1\n   * @param {fabric.Point} a2\n   * @param {Array} points\n   * @return {fabric.Intersection}\n   */\n  fabric.Intersection.intersectLinePolygon = function(a1, a2, points) {\n    var result = new Intersection(),\n        length = points.length,\n        b1, b2, inter, i;\n\n    for (i = 0; i < length; i++) {\n      b1 = points[i];\n      b2 = points[(i + 1) % length];\n      inter = Intersection.intersectLineLine(a1, a2, b1, b2);\n\n      result.appendPoints(inter.points);\n    }\n    if (result.points.length > 0) {\n      result.status = 'Intersection';\n    }\n    return result;\n  };\n\n  /**\n   * Checks if polygon intersects another polygon\n   * @static\n   * @param {Array} points1\n   * @param {Array} points2\n   * @return {fabric.Intersection}\n   */\n  fabric.Intersection.intersectPolygonPolygon = function (points1, points2) {\n    var result = new Intersection(),\n        length = points1.length, i;\n\n    for (i = 0; i < length; i++) {\n      var a1 = points1[i],\n          a2 = points1[(i + 1) % length],\n          inter = Intersection.intersectLinePolygon(a1, a2, points2);\n\n      result.appendPoints(inter.points);\n    }\n    if (result.points.length > 0) {\n      result.status = 'Intersection';\n    }\n    return result;\n  };\n\n  /**\n   * Checks if polygon intersects rectangle\n   * @static\n   * @param {Array} points\n   * @param {fabric.Point} r1\n   * @param {fabric.Point} r2\n   * @return {fabric.Intersection}\n   */\n  fabric.Intersection.intersectPolygonRectangle = function (points, r1, r2) {\n    var min = r1.min(r2),\n        max = r1.max(r2),\n        topRight = new fabric.Point(max.x, min.y),\n        bottomLeft = new fabric.Point(min.x, max.y),\n        inter1 = Intersection.intersectLinePolygon(min, topRight, points),\n        inter2 = Intersection.intersectLinePolygon(topRight, max, points),\n        inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points),\n        inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points),\n        result = new Intersection();\n\n    result.appendPoints(inter1.points);\n    result.appendPoints(inter2.points);\n    result.appendPoints(inter3.points);\n    result.appendPoints(inter4.points);\n\n    if (result.points.length > 0) {\n      result.status = 'Intersection';\n    }\n    return result;\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { });\n\n  if (fabric.Color) {\n    fabric.warn('fabric.Color is already defined.');\n    return;\n  }\n\n  /**\n   * Color class\n   * The purpose of {@link fabric.Color} is to abstract and encapsulate common color operations;\n   * {@link fabric.Color} is a constructor and creates instances of {@link fabric.Color} objects.\n   *\n   * @class fabric.Color\n   * @param {String} color optional in hex or rgb(a) or hsl format or from known color list\n   * @return {fabric.Color} thisArg\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#colors}\n   */\n  function Color(color) {\n    if (!color) {\n      this.setSource([0, 0, 0, 1]);\n    }\n    else {\n      this._tryParsingColor(color);\n    }\n  }\n\n  fabric.Color = Color;\n\n  fabric.Color.prototype = /** @lends fabric.Color.prototype */ {\n\n    /**\n     * @private\n     * @param {String|Array} color Color value to parse\n     */\n    _tryParsingColor: function(color) {\n      var source;\n\n      if (color in Color.colorNameMap) {\n        color = Color.colorNameMap[color];\n      }\n\n      if (color === 'transparent') {\n        source = [255, 255, 255, 0];\n      }\n\n      if (!source) {\n        source = Color.sourceFromHex(color);\n      }\n      if (!source) {\n        source = Color.sourceFromRgb(color);\n      }\n      if (!source) {\n        source = Color.sourceFromHsl(color);\n      }\n      if (!source) {\n        //if color is not recognize let's make black as canvas does\n        source = [0, 0, 0, 1];\n      }\n      if (source) {\n        this.setSource(source);\n      }\n    },\n\n    /**\n     * Adapted from <a href=\"https://rawgithub.com/mjijackson/mjijackson.github.com/master/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript.html\">https://github.com/mjijackson</a>\n     * @private\n     * @param {Number} r Red color value\n     * @param {Number} g Green color value\n     * @param {Number} b Blue color value\n     * @return {Array} Hsl color\n     */\n    _rgbToHsl: function(r, g, b) {\n      r /= 255; g /= 255; b /= 255;\n\n      var h, s, l,\n          max = fabric.util.array.max([r, g, b]),\n          min = fabric.util.array.min([r, g, b]);\n\n      l = (max + min) / 2;\n\n      if (max === min) {\n        h = s = 0; // achromatic\n      }\n      else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch (max) {\n          case r:\n            h = (g - b) / d + (g < b ? 6 : 0);\n            break;\n          case g:\n            h = (b - r) / d + 2;\n            break;\n          case b:\n            h = (r - g) / d + 4;\n            break;\n        }\n        h /= 6;\n      }\n\n      return [\n        Math.round(h * 360),\n        Math.round(s * 100),\n        Math.round(l * 100)\n      ];\n    },\n\n    /**\n     * Returns source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n     * @return {Array}\n     */\n    getSource: function() {\n      return this._source;\n    },\n\n    /**\n     * Sets source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n     * @param {Array} source\n     */\n    setSource: function(source) {\n      this._source = source;\n    },\n\n    /**\n     * Returns color representation in RGB format\n     * @return {String} ex: rgb(0-255,0-255,0-255)\n     */\n    toRgb: function() {\n      var source = this.getSource();\n      return 'rgb(' + source[0] + ',' + source[1] + ',' + source[2] + ')';\n    },\n\n    /**\n     * Returns color representation in RGBA format\n     * @return {String} ex: rgba(0-255,0-255,0-255,0-1)\n     */\n    toRgba: function() {\n      var source = this.getSource();\n      return 'rgba(' + source[0] + ',' + source[1] + ',' + source[2] + ',' + source[3] + ')';\n    },\n\n    /**\n     * Returns color representation in HSL format\n     * @return {String} ex: hsl(0-360,0%-100%,0%-100%)\n     */\n    toHsl: function() {\n      var source = this.getSource(),\n          hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n      return 'hsl(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%)';\n    },\n\n    /**\n     * Returns color representation in HSLA format\n     * @return {String} ex: hsla(0-360,0%-100%,0%-100%,0-1)\n     */\n    toHsla: function() {\n      var source = this.getSource(),\n          hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n      return 'hsla(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%,' + source[3] + ')';\n    },\n\n    /**\n     * Returns color representation in HEX format\n     * @return {String} ex: FF5555\n     */\n    toHex: function() {\n      var source = this.getSource(), r, g, b;\n\n      r = source[0].toString(16);\n      r = (r.length === 1) ? ('0' + r) : r;\n\n      g = source[1].toString(16);\n      g = (g.length === 1) ? ('0' + g) : g;\n\n      b = source[2].toString(16);\n      b = (b.length === 1) ? ('0' + b) : b;\n\n      return r.toUpperCase() + g.toUpperCase() + b.toUpperCase();\n    },\n\n    /**\n     * Returns color representation in HEXA format\n     * @return {String} ex: FF5555CC\n     */\n    toHexa: function() {\n      var source = this.getSource(), a;\n\n      a = Math.round(source[3] * 255);\n      a = a.toString(16);\n      a = (a.length === 1) ? ('0' + a) : a;\n\n      return this.toHex() + a.toUpperCase();\n    },\n\n    /**\n     * Gets value of alpha channel for this color\n     * @return {Number} 0-1\n     */\n    getAlpha: function() {\n      return this.getSource()[3];\n    },\n\n    /**\n     * Sets value of alpha channel for this color\n     * @param {Number} alpha Alpha value 0-1\n     * @return {fabric.Color} thisArg\n     */\n    setAlpha: function(alpha) {\n      var source = this.getSource();\n      source[3] = alpha;\n      this.setSource(source);\n      return this;\n    },\n\n    /**\n     * Transforms color to its grayscale representation\n     * @return {fabric.Color} thisArg\n     */\n    toGrayscale: function() {\n      var source = this.getSource(),\n          average = parseInt((source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), 10),\n          currentAlpha = source[3];\n      this.setSource([average, average, average, currentAlpha]);\n      return this;\n    },\n\n    /**\n     * Transforms color to its black and white representation\n     * @param {Number} threshold\n     * @return {fabric.Color} thisArg\n     */\n    toBlackWhite: function(threshold) {\n      var source = this.getSource(),\n          average = (source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0),\n          currentAlpha = source[3];\n\n      threshold = threshold || 127;\n\n      average = (Number(average) < Number(threshold)) ? 0 : 255;\n      this.setSource([average, average, average, currentAlpha]);\n      return this;\n    },\n\n    /**\n     * Overlays color with another color\n     * @param {String|fabric.Color} otherColor\n     * @return {fabric.Color} thisArg\n     */\n    overlayWith: function(otherColor) {\n      if (!(otherColor instanceof Color)) {\n        otherColor = new Color(otherColor);\n      }\n\n      var result = [],\n          alpha = this.getAlpha(),\n          otherAlpha = 0.5,\n          source = this.getSource(),\n          otherSource = otherColor.getSource(), i;\n\n      for (i = 0; i < 3; i++) {\n        result.push(Math.round((source[i] * (1 - otherAlpha)) + (otherSource[i] * otherAlpha)));\n      }\n\n      result[3] = alpha;\n      this.setSource(result);\n      return this;\n    }\n  };\n\n  /**\n   * Regex matching color in RGB or RGBA formats (ex: rgb(0, 0, 0), rgba(255, 100, 10, 0.5), rgba( 255 , 100 , 10 , 0.5 ), rgb(1,1,1), rgba(100%, 60%, 10%, 0.5))\n   * @static\n   * @field\n   * @memberOf fabric.Color\n   */\n  // eslint-disable-next-line max-len\n  fabric.Color.reRGBa = /^rgba?\\(\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*(?:\\s*,\\s*((?:\\d*\\.?\\d+)?)\\s*)?\\)$/i;\n\n  /**\n   * Regex matching color in HSL or HSLA formats (ex: hsl(200, 80%, 10%), hsla(300, 50%, 80%, 0.5), hsla( 300 , 50% , 80% , 0.5 ))\n   * @static\n   * @field\n   * @memberOf fabric.Color\n   */\n  fabric.Color.reHSLa = /^hsla?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3}\\%)\\s*,\\s*(\\d{1,3}\\%)\\s*(?:\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$/i;\n\n  /**\n   * Regex matching color in HEX format (ex: #FF5544CC, #FF5555, 010155, aff)\n   * @static\n   * @field\n   * @memberOf fabric.Color\n   */\n  fabric.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\n  /**\n   * Map of the 148 color names with HEX code\n   * @static\n   * @field\n   * @memberOf fabric.Color\n   * @see: https://www.w3.org/TR/css3-color/#svg-color\n   */\n  fabric.Color.colorNameMap = {\n    aliceblue:            '#F0F8FF',\n    antiquewhite:         '#FAEBD7',\n    aqua:                 '#00FFFF',\n    aquamarine:           '#7FFFD4',\n    azure:                '#F0FFFF',\n    beige:                '#F5F5DC',\n    bisque:               '#FFE4C4',\n    black:                '#000000',\n    blanchedalmond:       '#FFEBCD',\n    blue:                 '#0000FF',\n    blueviolet:           '#8A2BE2',\n    brown:                '#A52A2A',\n    burlywood:            '#DEB887',\n    cadetblue:            '#5F9EA0',\n    chartreuse:           '#7FFF00',\n    chocolate:            '#D2691E',\n    coral:                '#FF7F50',\n    cornflowerblue:       '#6495ED',\n    cornsilk:             '#FFF8DC',\n    crimson:              '#DC143C',\n    cyan:                 '#00FFFF',\n    darkblue:             '#00008B',\n    darkcyan:             '#008B8B',\n    darkgoldenrod:        '#B8860B',\n    darkgray:             '#A9A9A9',\n    darkgrey:             '#A9A9A9',\n    darkgreen:            '#006400',\n    darkkhaki:            '#BDB76B',\n    darkmagenta:          '#8B008B',\n    darkolivegreen:       '#556B2F',\n    darkorange:           '#FF8C00',\n    darkorchid:           '#9932CC',\n    darkred:              '#8B0000',\n    darksalmon:           '#E9967A',\n    darkseagreen:         '#8FBC8F',\n    darkslateblue:        '#483D8B',\n    darkslategray:        '#2F4F4F',\n    darkslategrey:        '#2F4F4F',\n    darkturquoise:        '#00CED1',\n    darkviolet:           '#9400D3',\n    deeppink:             '#FF1493',\n    deepskyblue:          '#00BFFF',\n    dimgray:              '#696969',\n    dimgrey:              '#696969',\n    dodgerblue:           '#1E90FF',\n    firebrick:            '#B22222',\n    floralwhite:          '#FFFAF0',\n    forestgreen:          '#228B22',\n    fuchsia:              '#FF00FF',\n    gainsboro:            '#DCDCDC',\n    ghostwhite:           '#F8F8FF',\n    gold:                 '#FFD700',\n    goldenrod:            '#DAA520',\n    gray:                 '#808080',\n    grey:                 '#808080',\n    green:                '#008000',\n    greenyellow:          '#ADFF2F',\n    honeydew:             '#F0FFF0',\n    hotpink:              '#FF69B4',\n    indianred:            '#CD5C5C',\n    indigo:               '#4B0082',\n    ivory:                '#FFFFF0',\n    khaki:                '#F0E68C',\n    lavender:             '#E6E6FA',\n    lavenderblush:        '#FFF0F5',\n    lawngreen:            '#7CFC00',\n    lemonchiffon:         '#FFFACD',\n    lightblue:            '#ADD8E6',\n    lightcoral:           '#F08080',\n    lightcyan:            '#E0FFFF',\n    lightgoldenrodyellow: '#FAFAD2',\n    lightgray:            '#D3D3D3',\n    lightgrey:            '#D3D3D3',\n    lightgreen:           '#90EE90',\n    lightpink:            '#FFB6C1',\n    lightsalmon:          '#FFA07A',\n    lightseagreen:        '#20B2AA',\n    lightskyblue:         '#87CEFA',\n    lightslategray:       '#778899',\n    lightslategrey:       '#778899',\n    lightsteelblue:       '#B0C4DE',\n    lightyellow:          '#FFFFE0',\n    lime:                 '#00FF00',\n    limegreen:            '#32CD32',\n    linen:                '#FAF0E6',\n    magenta:              '#FF00FF',\n    maroon:               '#800000',\n    mediumaquamarine:     '#66CDAA',\n    mediumblue:           '#0000CD',\n    mediumorchid:         '#BA55D3',\n    mediumpurple:         '#9370DB',\n    mediumseagreen:       '#3CB371',\n    mediumslateblue:      '#7B68EE',\n    mediumspringgreen:    '#00FA9A',\n    mediumturquoise:      '#48D1CC',\n    mediumvioletred:      '#C71585',\n    midnightblue:         '#191970',\n    mintcream:            '#F5FFFA',\n    mistyrose:            '#FFE4E1',\n    moccasin:             '#FFE4B5',\n    navajowhite:          '#FFDEAD',\n    navy:                 '#000080',\n    oldlace:              '#FDF5E6',\n    olive:                '#808000',\n    olivedrab:            '#6B8E23',\n    orange:               '#FFA500',\n    orangered:            '#FF4500',\n    orchid:               '#DA70D6',\n    palegoldenrod:        '#EEE8AA',\n    palegreen:            '#98FB98',\n    paleturquoise:        '#AFEEEE',\n    palevioletred:        '#DB7093',\n    papayawhip:           '#FFEFD5',\n    peachpuff:            '#FFDAB9',\n    peru:                 '#CD853F',\n    pink:                 '#FFC0CB',\n    plum:                 '#DDA0DD',\n    powderblue:           '#B0E0E6',\n    purple:               '#800080',\n    rebeccapurple:        '#663399',\n    red:                  '#FF0000',\n    rosybrown:            '#BC8F8F',\n    royalblue:            '#4169E1',\n    saddlebrown:          '#8B4513',\n    salmon:               '#FA8072',\n    sandybrown:           '#F4A460',\n    seagreen:             '#2E8B57',\n    seashell:             '#FFF5EE',\n    sienna:               '#A0522D',\n    silver:               '#C0C0C0',\n    skyblue:              '#87CEEB',\n    slateblue:            '#6A5ACD',\n    slategray:            '#708090',\n    slategrey:            '#708090',\n    snow:                 '#FFFAFA',\n    springgreen:          '#00FF7F',\n    steelblue:            '#4682B4',\n    tan:                  '#D2B48C',\n    teal:                 '#008080',\n    thistle:              '#D8BFD8',\n    tomato:               '#FF6347',\n    turquoise:            '#40E0D0',\n    violet:               '#EE82EE',\n    wheat:                '#F5DEB3',\n    white:                '#FFFFFF',\n    whitesmoke:           '#F5F5F5',\n    yellow:               '#FFFF00',\n    yellowgreen:          '#9ACD32'\n  };\n\n  /**\n   * @private\n   * @param {Number} p\n   * @param {Number} q\n   * @param {Number} t\n   * @return {Number}\n   */\n  function hue2rgb(p, q, t) {\n    if (t < 0) {\n      t += 1;\n    }\n    if (t > 1) {\n      t -= 1;\n    }\n    if (t < 1 / 6) {\n      return p + (q - p) * 6 * t;\n    }\n    if (t < 1 / 2) {\n      return q;\n    }\n    if (t < 2 / 3) {\n      return p + (q - p) * (2 / 3 - t) * 6;\n    }\n    return p;\n  }\n\n  /**\n   * Returns new color object, when given a color in RGB format\n   * @memberOf fabric.Color\n   * @param {String} color Color value ex: rgb(0-255,0-255,0-255)\n   * @return {fabric.Color}\n   */\n  fabric.Color.fromRgb = function(color) {\n    return Color.fromSource(Color.sourceFromRgb(color));\n  };\n\n  /**\n   * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in RGB or RGBA format\n   * @memberOf fabric.Color\n   * @param {String} color Color value ex: rgb(0-255,0-255,0-255), rgb(0%-100%,0%-100%,0%-100%)\n   * @return {Array} source\n   */\n  fabric.Color.sourceFromRgb = function(color) {\n    var match = color.match(Color.reRGBa);\n    if (match) {\n      var r = parseInt(match[1], 10) / (/%$/.test(match[1]) ? 100 : 1) * (/%$/.test(match[1]) ? 255 : 1),\n          g = parseInt(match[2], 10) / (/%$/.test(match[2]) ? 100 : 1) * (/%$/.test(match[2]) ? 255 : 1),\n          b = parseInt(match[3], 10) / (/%$/.test(match[3]) ? 100 : 1) * (/%$/.test(match[3]) ? 255 : 1);\n\n      return [\n        parseInt(r, 10),\n        parseInt(g, 10),\n        parseInt(b, 10),\n        match[4] ? parseFloat(match[4]) : 1\n      ];\n    }\n  };\n\n  /**\n   * Returns new color object, when given a color in RGBA format\n   * @static\n   * @function\n   * @memberOf fabric.Color\n   * @param {String} color\n   * @return {fabric.Color}\n   */\n  fabric.Color.fromRgba = Color.fromRgb;\n\n  /**\n   * Returns new color object, when given a color in HSL format\n   * @param {String} color Color value ex: hsl(0-260,0%-100%,0%-100%)\n   * @memberOf fabric.Color\n   * @return {fabric.Color}\n   */\n  fabric.Color.fromHsl = function(color) {\n    return Color.fromSource(Color.sourceFromHsl(color));\n  };\n\n  /**\n   * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HSL or HSLA format.\n   * Adapted from <a href=\"https://rawgithub.com/mjijackson/mjijackson.github.com/master/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript.html\">https://github.com/mjijackson</a>\n   * @memberOf fabric.Color\n   * @param {String} color Color value ex: hsl(0-360,0%-100%,0%-100%) or hsla(0-360,0%-100%,0%-100%, 0-1)\n   * @return {Array} source\n   * @see http://http://www.w3.org/TR/css3-color/#hsl-color\n   */\n  fabric.Color.sourceFromHsl = function(color) {\n    var match = color.match(Color.reHSLa);\n    if (!match) {\n      return;\n    }\n\n    var h = (((parseFloat(match[1]) % 360) + 360) % 360) / 360,\n        s = parseFloat(match[2]) / (/%$/.test(match[2]) ? 100 : 1),\n        l = parseFloat(match[3]) / (/%$/.test(match[3]) ? 100 : 1),\n        r, g, b;\n\n    if (s === 0) {\n      r = g = b = l;\n    }\n    else {\n      var q = l <= 0.5 ? l * (s + 1) : l + s - l * s,\n          p = l * 2 - q;\n\n      r = hue2rgb(p, q, h + 1 / 3);\n      g = hue2rgb(p, q, h);\n      b = hue2rgb(p, q, h - 1 / 3);\n    }\n\n    return [\n      Math.round(r * 255),\n      Math.round(g * 255),\n      Math.round(b * 255),\n      match[4] ? parseFloat(match[4]) : 1\n    ];\n  };\n\n  /**\n   * Returns new color object, when given a color in HSLA format\n   * @static\n   * @function\n   * @memberOf fabric.Color\n   * @param {String} color\n   * @return {fabric.Color}\n   */\n  fabric.Color.fromHsla = Color.fromHsl;\n\n  /**\n   * Returns new color object, when given a color in HEX format\n   * @static\n   * @memberOf fabric.Color\n   * @param {String} color Color value ex: FF5555\n   * @return {fabric.Color}\n   */\n  fabric.Color.fromHex = function(color) {\n    return Color.fromSource(Color.sourceFromHex(color));\n  };\n\n  /**\n   * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HEX format\n   * @static\n   * @memberOf fabric.Color\n   * @param {String} color ex: FF5555 or FF5544CC (RGBa)\n   * @return {Array} source\n   */\n  fabric.Color.sourceFromHex = function(color) {\n    if (color.match(Color.reHex)) {\n      var value = color.slice(color.indexOf('#') + 1),\n          isShortNotation = (value.length === 3 || value.length === 4),\n          isRGBa = (value.length === 8 || value.length === 4),\n          r = isShortNotation ? (value.charAt(0) + value.charAt(0)) : value.substring(0, 2),\n          g = isShortNotation ? (value.charAt(1) + value.charAt(1)) : value.substring(2, 4),\n          b = isShortNotation ? (value.charAt(2) + value.charAt(2)) : value.substring(4, 6),\n          a = isRGBa ? (isShortNotation ? (value.charAt(3) + value.charAt(3)) : value.substring(6, 8)) : 'FF';\n\n      return [\n        parseInt(r, 16),\n        parseInt(g, 16),\n        parseInt(b, 16),\n        parseFloat((parseInt(a, 16) / 255).toFixed(2))\n      ];\n    }\n  };\n\n  /**\n   * Returns new color object, when given color in array representation (ex: [200, 100, 100, 0.5])\n   * @static\n   * @memberOf fabric.Color\n   * @param {Array} source\n   * @return {fabric.Color}\n   */\n  fabric.Color.fromSource = function(source) {\n    var oColor = new Color();\n    oColor.setSource(source);\n    return oColor;\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      scaleMap = ['e', 'se', 's', 'sw', 'w', 'nw', 'n', 'ne', 'e'],\n      skewMap = ['ns', 'nesw', 'ew', 'nwse'],\n      controls = {},\n      LEFT = 'left', TOP = 'top', RIGHT = 'right', BOTTOM = 'bottom', CENTER = 'center',\n      opposite = {\n        top: BOTTOM,\n        bottom: TOP,\n        left: RIGHT,\n        right: LEFT,\n        center: CENTER,\n      }, radiansToDegrees = fabric.util.radiansToDegrees,\n      sign = (Math.sign || function(x) { return ((x > 0) - (x < 0)) || +x; });\n\n  /**\n   * Combine control position and object angle to find the control direction compared\n   * to the object center.\n   * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls\n   * @param {fabric.Control} control the control class\n   * @return {Number} 0 - 7 a quadrant number\n   */\n  function findCornerQuadrant(fabricObject, control) {\n    var cornerAngle = fabricObject.angle + radiansToDegrees(Math.atan2(control.y, control.x)) + 360;\n    return Math.round((cornerAngle % 360) / 45);\n  }\n\n  function fireEvent(eventName, options) {\n    var target = options.transform.target,\n        canvas = target.canvas,\n        canvasOptions = fabric.util.object.clone(options);\n    canvasOptions.target = target;\n    canvas && canvas.fire('object:' + eventName, canvasOptions);\n    target.fire(eventName, options);\n  }\n\n  /**\n   * Inspect event and fabricObject properties to understand if the scaling action\n   * @param {Event} eventData from the user action\n   * @param {fabric.Object} fabricObject the fabric object about to scale\n   * @return {Boolean} true if scale is proportional\n   */\n  function scaleIsProportional(eventData, fabricObject) {\n    var canvas = fabricObject.canvas, uniScaleKey = canvas.uniScaleKey,\n        uniformIsToggled = eventData[uniScaleKey];\n    return (canvas.uniformScaling && !uniformIsToggled) ||\n    (!canvas.uniformScaling && uniformIsToggled);\n  }\n\n  /**\n   * Checks if transform is centered\n   * @param {Object} transform transform data\n   * @return {Boolean} true if transform is centered\n   */\n  function isTransformCentered(transform) {\n    return transform.originX === CENTER && transform.originY === CENTER;\n  }\n\n  /**\n   * Inspect fabricObject to understand if the current scaling action is allowed\n   * @param {fabric.Object} fabricObject the fabric object about to scale\n   * @param {String} by 'x' or 'y' or ''\n   * @param {Boolean} scaleProportionally true if we are trying to scale proportionally\n   * @return {Boolean} true if scaling is not allowed at current conditions\n   */\n  function scalingIsForbidden(fabricObject, by, scaleProportionally) {\n    var lockX = fabricObject.lockScalingX, lockY = fabricObject.lockScalingY;\n    if (lockX && lockY) {\n      return true;\n    }\n    if (!by && (lockX || lockY) && scaleProportionally) {\n      return true;\n    }\n    if (lockX && by === 'x') {\n      return true;\n    }\n    if (lockY && by === 'y') {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * return the correct cursor style for the scale action\n   * @param {Event} eventData the javascript event that is causing the scale\n   * @param {fabric.Control} control the control that is interested in the action\n   * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n   * @return {String} a valid css string for the cursor\n   */\n  function scaleCursorStyleHandler(eventData, control, fabricObject) {\n    var notAllowed = 'not-allowed',\n        scaleProportionally = scaleIsProportional(eventData, fabricObject),\n        by = '';\n    if (control.x !== 0 && control.y === 0) {\n      by = 'x';\n    }\n    else if (control.x === 0 && control.y !== 0) {\n      by = 'y';\n    }\n    if (scalingIsForbidden(fabricObject, by, scaleProportionally)) {\n      return notAllowed;\n    }\n    var n = findCornerQuadrant(fabricObject, control);\n    return scaleMap[n] + '-resize';\n  }\n\n  /**\n   * return the correct cursor style for the skew action\n   * @param {Event} eventData the javascript event that is causing the scale\n   * @param {fabric.Control} control the control that is interested in the action\n   * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n   * @return {String} a valid css string for the cursor\n   */\n  function skewCursorStyleHandler(eventData, control, fabricObject) {\n    var notAllowed = 'not-allowed';\n    if (control.x !== 0 && fabricObject.lockSkewingY) {\n      return notAllowed;\n    }\n    if (control.y !== 0 && fabricObject.lockSkewingX) {\n      return notAllowed;\n    }\n    var n = findCornerQuadrant(fabricObject, control) % 4;\n    return skewMap[n] + '-resize';\n  }\n\n  /**\n   * Combine skew and scale style handlers to cover fabric standard use case\n   * @param {Event} eventData the javascript event that is causing the scale\n   * @param {fabric.Control} control the control that is interested in the action\n   * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n   * @return {String} a valid css string for the cursor\n   */\n  function scaleSkewCursorStyleHandler(eventData, control, fabricObject) {\n    if (eventData[fabricObject.canvas.altActionKey]) {\n      return controls.skewCursorStyleHandler(eventData, control, fabricObject);\n    }\n    return controls.scaleCursorStyleHandler(eventData, control, fabricObject);\n  }\n\n  /**\n   * Inspect event, control and fabricObject to return the correct action name\n   * @param {Event} eventData the javascript event that is causing the scale\n   * @param {fabric.Control} control the control that is interested in the action\n   * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n   * @return {String} an action name\n   */\n  function scaleOrSkewActionName(eventData, control, fabricObject) {\n    var isAlternative = eventData[fabricObject.canvas.altActionKey];\n    if (control.x === 0) {\n      // then is scaleY or skewX\n      return isAlternative ? 'skewX' : 'scaleY';\n    }\n    if (control.y === 0) {\n      // then is scaleY or skewX\n      return isAlternative ? 'skewY' : 'scaleX';\n    }\n  }\n\n  /**\n   * Find the correct style for the control that is used for rotation.\n   * this function is very simple and it just take care of not-allowed or standard cursor\n   * @param {Event} eventData the javascript event that is causing the scale\n   * @param {fabric.Control} control the control that is interested in the action\n   * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n   * @return {String} a valid css string for the cursor\n   */\n  function rotationStyleHandler(eventData, control, fabricObject) {\n    if (fabricObject.lockRotation) {\n      return 'not-allowed';\n    }\n    return control.cursorStyle;\n  }\n\n  function commonEventInfo(eventData, transform, x, y) {\n    return {\n      e: eventData,\n      transform: transform,\n      pointer: {\n        x: x,\n        y: y,\n      }\n    };\n  }\n\n  /**\n   * Wrap an action handler with saving/restoring object position on the transform.\n   * this is the code that permits to objects to keep their position while transforming.\n   * @param {Function} actionHandler the function to wrap\n   * @return {Function} a function with an action handler signature\n   */\n  function wrapWithFixedAnchor(actionHandler) {\n    return function(eventData, transform, x, y) {\n      var target = transform.target, centerPoint = target.getCenterPoint(),\n          constraint = target.translateToOriginPoint(centerPoint, transform.originX, transform.originY),\n          actionPerformed = actionHandler(eventData, transform, x, y);\n      target.setPositionByOrigin(constraint, transform.originX, transform.originY);\n      return actionPerformed;\n    };\n  }\n\n  /**\n   * Wrap an action handler with firing an event if the action is performed\n   * @param {Function} actionHandler the function to wrap\n   * @return {Function} a function with an action handler signature\n   */\n  function wrapWithFireEvent(eventName, actionHandler) {\n    return function(eventData, transform, x, y) {\n      var actionPerformed = actionHandler(eventData, transform, x, y);\n      if (actionPerformed) {\n        fireEvent(eventName, commonEventInfo(eventData, transform, x, y));\n      }\n      return actionPerformed;\n    };\n  }\n\n  /**\n   * Transforms a point described by x and y in a distance from the top left corner of the object\n   * bounding box.\n   * @param {Object} transform\n   * @param {String} originX\n   * @param {String} originY\n   * @param {number} x\n   * @param {number} y\n   * @return {Fabric.Point} the normalized point\n   */\n  function getLocalPoint(transform, originX, originY, x, y) {\n    var target = transform.target,\n        control = target.controls[transform.corner],\n        zoom = target.canvas.getZoom(),\n        padding = target.padding / zoom,\n        localPoint = target.toLocalPoint(new fabric.Point(x, y), originX, originY);\n    if (localPoint.x >= padding) {\n      localPoint.x -= padding;\n    }\n    if (localPoint.x <= -padding) {\n      localPoint.x += padding;\n    }\n    if (localPoint.y >= padding) {\n      localPoint.y -= padding;\n    }\n    if (localPoint.y <= padding) {\n      localPoint.y += padding;\n    }\n    localPoint.x -= control.offsetX;\n    localPoint.y -= control.offsetY;\n    return localPoint;\n  }\n\n  /**\n   * Detect if the fabric object is flipped on one side.\n   * @param {fabric.Object} target\n   * @return {Boolean} true if one flip, but not two.\n   */\n  function targetHasOneFlip(target) {\n    return target.flipX !== target.flipY;\n  }\n\n  /**\n   * Utility function to compensate the scale factor when skew is applied on both axes\n   * @private\n   */\n  function compensateScaleForSkew(target, oppositeSkew, scaleToCompensate, axis, reference) {\n    if (target[oppositeSkew] !== 0) {\n      var newDim = target._getTransformedDimensions()[axis];\n      var newValue = reference / newDim * target[scaleToCompensate];\n      target.set(scaleToCompensate, newValue);\n    }\n  }\n\n  /**\n   * Action handler for skewing on the X axis\n   * @private\n   */\n  function skewObjectX(eventData, transform, x, y) {\n    var target = transform.target,\n        // find how big the object would be, if there was no skewX. takes in account scaling\n        dimNoSkew = target._getTransformedDimensions(0, target.skewY),\n        localPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y),\n        // the mouse is in the center of the object, and we want it to stay there.\n        // so the object will grow twice as much as the mouse.\n        // this makes the skew growth to localPoint * 2 - dimNoSkew.\n        totalSkewSize = Math.abs(localPoint.x * 2) - dimNoSkew.x,\n        currentSkew = target.skewX, newSkew;\n    if (totalSkewSize < 2) {\n      // let's make it easy to go back to position 0.\n      newSkew = 0;\n    }\n    else {\n      newSkew = radiansToDegrees(\n        Math.atan2((totalSkewSize / target.scaleX), (dimNoSkew.y / target.scaleY))\n      );\n      // now we have to find the sign of the skew.\n      // it mostly depend on the origin of transformation.\n      if (transform.originX === LEFT && transform.originY === BOTTOM) {\n        newSkew = -newSkew;\n      }\n      if (transform.originX === RIGHT && transform.originY === TOP) {\n        newSkew = -newSkew;\n      }\n      if (targetHasOneFlip(target)) {\n        newSkew = -newSkew;\n      }\n    }\n    var hasSkewed = currentSkew !== newSkew;\n    if (hasSkewed) {\n      var dimBeforeSkewing = target._getTransformedDimensions().y;\n      target.set('skewX', newSkew);\n      compensateScaleForSkew(target, 'skewY', 'scaleY', 'y', dimBeforeSkewing);\n    }\n    return hasSkewed;\n  }\n\n  /**\n   * Action handler for skewing on the Y axis\n   * @private\n   */\n  function skewObjectY(eventData, transform, x, y) {\n    var target = transform.target,\n        // find how big the object would be, if there was no skewX. takes in account scaling\n        dimNoSkew = target._getTransformedDimensions(target.skewX, 0),\n        localPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y),\n        // the mouse is in the center of the object, and we want it to stay there.\n        // so the object will grow twice as much as the mouse.\n        // this makes the skew growth to localPoint * 2 - dimNoSkew.\n        totalSkewSize = Math.abs(localPoint.y * 2) - dimNoSkew.y,\n        currentSkew = target.skewY, newSkew;\n    if (totalSkewSize < 2) {\n      // let's make it easy to go back to position 0.\n      newSkew = 0;\n    }\n    else {\n      newSkew = radiansToDegrees(\n        Math.atan2((totalSkewSize / target.scaleY), (dimNoSkew.x / target.scaleX))\n      );\n      // now we have to find the sign of the skew.\n      // it mostly depend on the origin of transformation.\n      if (transform.originX === LEFT && transform.originY === BOTTOM) {\n        newSkew = -newSkew;\n      }\n      if (transform.originX === RIGHT && transform.originY === TOP) {\n        newSkew = -newSkew;\n      }\n      if (targetHasOneFlip(target)) {\n        newSkew = -newSkew;\n      }\n    }\n    var hasSkewed = currentSkew !== newSkew;\n    if (hasSkewed) {\n      var dimBeforeSkewing = target._getTransformedDimensions().x;\n      target.set('skewY', newSkew);\n      compensateScaleForSkew(target, 'skewX', 'scaleX', 'x', dimBeforeSkewing);\n    }\n    return hasSkewed;\n  }\n\n  /**\n   * Wrapped Action handler for skewing on the Y axis, takes care of the\n   * skew direction and determine the correct transform origin for the anchor point\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @return {Boolean} true if some change happened\n   */\n  function skewHandlerX(eventData, transform, x, y) {\n    // step1 figure out and change transform origin.\n    // if skewX > 0 and originY bottom we anchor on right\n    // if skewX > 0 and originY top we anchor on left\n    // if skewX < 0 and originY bottom we anchor on left\n    // if skewX < 0 and originY top we anchor on right\n    // if skewX is 0, we look for mouse position to understand where are we going.\n    var target = transform.target, currentSkew = target.skewX, originX, originY = transform.originY;\n    if (target.lockSkewingX) {\n      return false;\n    }\n    if (currentSkew === 0) {\n      var localPointFromCenter = getLocalPoint(transform, CENTER, CENTER, x, y);\n      if (localPointFromCenter.x > 0) {\n        // we are pulling right, anchor left;\n        originX = LEFT;\n      }\n      else {\n        // we are pulling right, anchor right\n        originX = RIGHT;\n      }\n    }\n    else {\n      if (currentSkew > 0) {\n        originX = originY === TOP ? LEFT : RIGHT;\n      }\n      if (currentSkew < 0) {\n        originX = originY === TOP ? RIGHT : LEFT;\n      }\n      // is the object flipped on one side only? swap the origin.\n      if (targetHasOneFlip(target)) {\n        originX = originX === LEFT ? RIGHT : LEFT;\n      }\n    }\n\n    // once we have the origin, we find the anchor point\n    transform.originX = originX;\n    var finalHandler = wrapWithFireEvent('skewing', wrapWithFixedAnchor(skewObjectX));\n    return finalHandler(eventData, transform, x, y);\n  }\n\n  /**\n   * Wrapped Action handler for skewing on the Y axis, takes care of the\n   * skew direction and determine the correct transform origin for the anchor point\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @return {Boolean} true if some change happened\n   */\n  function skewHandlerY(eventData, transform, x, y) {\n    // step1 figure out and change transform origin.\n    // if skewY > 0 and originX left we anchor on top\n    // if skewY > 0 and originX right we anchor on bottom\n    // if skewY < 0 and originX left we anchor on bottom\n    // if skewY < 0 and originX right we anchor on top\n    // if skewY is 0, we look for mouse position to understand where are we going.\n    var target = transform.target, currentSkew = target.skewY, originY, originX = transform.originX;\n    if (target.lockSkewingY) {\n      return false;\n    }\n    if (currentSkew === 0) {\n      var localPointFromCenter = getLocalPoint(transform, CENTER, CENTER, x, y);\n      if (localPointFromCenter.y > 0) {\n        // we are pulling down, anchor up;\n        originY = TOP;\n      }\n      else {\n        // we are pulling up, anchor down\n        originY = BOTTOM;\n      }\n    }\n    else {\n      if (currentSkew > 0) {\n        originY = originX === LEFT ? TOP : BOTTOM;\n      }\n      if (currentSkew < 0) {\n        originY = originX === LEFT ? BOTTOM : TOP;\n      }\n      // is the object flipped on one side only? swap the origin.\n      if (targetHasOneFlip(target)) {\n        originY = originY === TOP ? BOTTOM : TOP;\n      }\n    }\n\n    // once we have the origin, we find the anchor point\n    transform.originY = originY;\n    var finalHandler = wrapWithFireEvent('skewing', wrapWithFixedAnchor(skewObjectY));\n    return finalHandler(eventData, transform, x, y);\n  }\n\n  /**\n   * Action handler for rotation and snapping, without anchor point.\n   * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @return {Boolean} true if some change happened\n   * @private\n   */\n  function rotationWithSnapping(eventData, transform, x, y) {\n    var t = transform,\n        target = t.target,\n        pivotPoint = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY);\n\n    if (target.lockRotation) {\n      return false;\n    }\n\n    var lastAngle = Math.atan2(t.ey - pivotPoint.y, t.ex - pivotPoint.x),\n        curAngle = Math.atan2(y - pivotPoint.y, x - pivotPoint.x),\n        angle = radiansToDegrees(curAngle - lastAngle + t.theta),\n        hasRotated = true;\n\n    if (target.snapAngle > 0) {\n      var snapAngle  = target.snapAngle,\n          snapThreshold  = target.snapThreshold || snapAngle,\n          rightAngleLocked = Math.ceil(angle / snapAngle) * snapAngle,\n          leftAngleLocked = Math.floor(angle / snapAngle) * snapAngle;\n\n      if (Math.abs(angle - leftAngleLocked) < snapThreshold) {\n        angle = leftAngleLocked;\n      }\n      else if (Math.abs(angle - rightAngleLocked) < snapThreshold) {\n        angle = rightAngleLocked;\n      }\n    }\n\n    // normalize angle to positive value\n    if (angle < 0) {\n      angle = 360 + angle;\n    }\n    angle %= 360;\n\n    hasRotated = target.angle !== angle;\n    target.angle = angle;\n    return hasRotated;\n  }\n\n  /**\n   * Basic scaling logic, reused with different constrain for scaling X,Y, freely or equally.\n   * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @param {Object} options additional information for scaling\n   * @param {String} options.by 'x', 'y', 'equally' or '' to indicate type of scaling\n   * @return {Boolean} true if some change happened\n   * @private\n   */\n  function scaleObject(eventData, transform, x, y, options) {\n    options = options || {};\n    var target = transform.target,\n        lockScalingX = target.lockScalingX, lockScalingY = target.lockScalingY,\n        by = options.by, newPoint, scaleX, scaleY, dim,\n        scaleProportionally = scaleIsProportional(eventData, target),\n        forbidScaling = scalingIsForbidden(target, by, scaleProportionally),\n        signX, signY, gestureScale = transform.gestureScale;\n\n    if (forbidScaling) {\n      return false;\n    }\n    if (gestureScale) {\n      scaleX = transform.scaleX * gestureScale;\n      scaleY = transform.scaleY * gestureScale;\n    }\n    else {\n      newPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y);\n      // use of sign: We use sign to detect change of direction of an action. sign usually change when\n      // we cross the origin point with the mouse. So a scale flip for example. There is an issue when scaling\n      // by center and scaling using one middle control ( default: mr, mt, ml, mb), the mouse movement can easily\n      // cross many time the origin point and flip the object. so we need a way to filter out the noise.\n      // This ternary here should be ok to filter out X scaling when we want Y only and vice versa.\n      signX = by !== 'y' ? sign(newPoint.x) : 1;\n      signY = by !== 'x' ? sign(newPoint.y) : 1;\n      if (!transform.signX) {\n        transform.signX = signX;\n      }\n      if (!transform.signY) {\n        transform.signY = signY;\n      }\n\n      if (target.lockScalingFlip &&\n        (transform.signX !== signX || transform.signY !== signY)\n      ) {\n        return false;\n      }\n\n      dim = target._getTransformedDimensions();\n      // missing detection of flip and logic to switch the origin\n      if (scaleProportionally && !by) {\n        // uniform scaling\n        var distance = Math.abs(newPoint.x) + Math.abs(newPoint.y),\n            original = transform.original,\n            originalDistance = Math.abs(dim.x * original.scaleX / target.scaleX) +\n              Math.abs(dim.y * original.scaleY / target.scaleY),\n            scale = distance / originalDistance;\n        scaleX = original.scaleX * scale;\n        scaleY = original.scaleY * scale;\n      }\n      else {\n        scaleX = Math.abs(newPoint.x * target.scaleX / dim.x);\n        scaleY = Math.abs(newPoint.y * target.scaleY / dim.y);\n      }\n      // if we are scaling by center, we need to double the scale\n      if (isTransformCentered(transform)) {\n        scaleX *= 2;\n        scaleY *= 2;\n      }\n      if (transform.signX !== signX && by !== 'y') {\n        transform.originX = opposite[transform.originX];\n        scaleX *= -1;\n        transform.signX = signX;\n      }\n      if (transform.signY !== signY && by !== 'x') {\n        transform.originY = opposite[transform.originY];\n        scaleY *= -1;\n        transform.signY = signY;\n      }\n    }\n    // minScale is taken are in the setter.\n    var oldScaleX = target.scaleX, oldScaleY = target.scaleY;\n    if (!by) {\n      !lockScalingX && target.set('scaleX', scaleX);\n      !lockScalingY && target.set('scaleY', scaleY);\n    }\n    else {\n      // forbidden cases already handled on top here.\n      by === 'x' && target.set('scaleX', scaleX);\n      by === 'y' && target.set('scaleY', scaleY);\n    }\n    return oldScaleX !== target.scaleX || oldScaleY !== target.scaleY;\n  }\n\n  /**\n   * Generic scaling logic, to scale from corners either equally or freely.\n   * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @return {Boolean} true if some change happened\n   */\n  function scaleObjectFromCorner(eventData, transform, x, y) {\n    return scaleObject(eventData, transform, x, y);\n  }\n\n  /**\n   * Scaling logic for the X axis.\n   * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @return {Boolean} true if some change happened\n   */\n  function scaleObjectX(eventData, transform, x, y) {\n    return scaleObject(eventData, transform, x, y , { by: 'x' });\n  }\n\n  /**\n   * Scaling logic for the Y axis.\n   * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @return {Boolean} true if some change happened\n   */\n  function scaleObjectY(eventData, transform, x, y) {\n    return scaleObject(eventData, transform, x, y , { by: 'y' });\n  }\n\n  /**\n   * Composed action handler to either scale Y or skew X\n   * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @return {Boolean} true if some change happened\n   */\n  function scalingYOrSkewingX(eventData, transform, x, y) {\n    // ok some safety needed here.\n    if (eventData[transform.target.canvas.altActionKey]) {\n      return controls.skewHandlerX(eventData, transform, x, y);\n    }\n    return controls.scalingY(eventData, transform, x, y);\n  }\n\n  /**\n   * Composed action handler to either scale X or skew Y\n   * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @return {Boolean} true if some change happened\n   */\n  function scalingXOrSkewingY(eventData, transform, x, y) {\n    // ok some safety needed here.\n    if (eventData[transform.target.canvas.altActionKey]) {\n      return controls.skewHandlerY(eventData, transform, x, y);\n    }\n    return controls.scalingX(eventData, transform, x, y);\n  }\n\n  /**\n   * Action handler to change textbox width\n   * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @return {Boolean} true if some change happened\n   */\n  function changeWidth(eventData, transform, x, y) {\n    var target = transform.target, localPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y),\n        strokePadding = target.strokeWidth / (target.strokeUniform ? target.scaleX : 1),\n        multiplier = isTransformCentered(transform) ? 2 : 1,\n        oldWidth = target.width,\n        newWidth = Math.abs(localPoint.x * multiplier / target.scaleX) - strokePadding;\n    target.set('width', Math.max(newWidth, 0));\n    return oldWidth !== newWidth;\n  }\n\n  /**\n   * Action handler\n   * @private\n   * @param {Event} eventData javascript event that is doing the transform\n   * @param {Object} transform javascript object containing a series of information around the current transform\n   * @param {number} x current mouse x position, canvas normalized\n   * @param {number} y current mouse y position, canvas normalized\n   * @return {Boolean} true if the translation occurred\n   */\n  function dragHandler(eventData, transform, x, y) {\n    var target = transform.target,\n        newLeft = x - transform.offsetX,\n        newTop = y - transform.offsetY,\n        moveX = !target.get('lockMovementX') && target.left !== newLeft,\n        moveY = !target.get('lockMovementY') && target.top !== newTop;\n    moveX && target.set('left', newLeft);\n    moveY && target.set('top', newTop);\n    if (moveX || moveY) {\n      fireEvent('moving', commonEventInfo(eventData, transform, x, y));\n    }\n    return moveX || moveY;\n  }\n\n  controls.scaleCursorStyleHandler = scaleCursorStyleHandler;\n  controls.skewCursorStyleHandler = skewCursorStyleHandler;\n  controls.scaleSkewCursorStyleHandler = scaleSkewCursorStyleHandler;\n  controls.rotationWithSnapping = wrapWithFireEvent('rotating', wrapWithFixedAnchor(rotationWithSnapping));\n  controls.scalingEqually = wrapWithFireEvent('scaling', wrapWithFixedAnchor( scaleObjectFromCorner));\n  controls.scalingX = wrapWithFireEvent('scaling', wrapWithFixedAnchor(scaleObjectX));\n  controls.scalingY = wrapWithFireEvent('scaling', wrapWithFixedAnchor(scaleObjectY));\n  controls.scalingYOrSkewingX = scalingYOrSkewingX;\n  controls.scalingXOrSkewingY = scalingXOrSkewingY;\n  controls.changeWidth = wrapWithFireEvent('resizing', wrapWithFixedAnchor(changeWidth));\n  controls.skewHandlerX = skewHandlerX;\n  controls.skewHandlerY = skewHandlerY;\n  controls.dragHandler = dragHandler;\n  controls.scaleOrSkewActionName = scaleOrSkewActionName;\n  controls.rotationStyleHandler = rotationStyleHandler;\n  controls.fireEvent = fireEvent;\n  controls.wrapWithFixedAnchor = wrapWithFixedAnchor;\n  controls.wrapWithFireEvent = wrapWithFireEvent;\n  controls.getLocalPoint = getLocalPoint;\n  fabric.controlsUtils = controls;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      degreesToRadians = fabric.util.degreesToRadians,\n      controls = fabric.controlsUtils;\n\n  /**\n   * Render a round control, as per fabric features.\n   * This function is written to respect object properties like transparentCorners, cornerSize\n   * cornerColor, cornerStrokeColor\n   * plus the addition of offsetY and offsetX.\n   * @param {CanvasRenderingContext2D} ctx context to render on\n   * @param {Number} left x coordinate where the control center should be\n   * @param {Number} top y coordinate where the control center should be\n   * @param {Object} styleOverride override for fabric.Object controls style\n   * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls\n   */\n  function renderCircleControl (ctx, left, top, styleOverride, fabricObject) {\n    styleOverride = styleOverride || {};\n    var xSize = this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,\n        ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,\n        transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?\n          styleOverride.transparentCorners : fabricObject.transparentCorners,\n        methodName = transparentCorners ? 'stroke' : 'fill',\n        stroke = !transparentCorners && (styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor),\n        myLeft = left,\n        myTop = top, size;\n    ctx.save();\n    ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor;\n    ctx.strokeStyle = styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor;\n    // as soon as fabric react v5, remove ie11, use proper ellipse code.\n    if (xSize > ySize) {\n      size = xSize;\n      ctx.scale(1.0, ySize / xSize);\n      myTop = top * xSize / ySize;\n    }\n    else if (ySize > xSize) {\n      size = ySize;\n      ctx.scale(xSize / ySize, 1.0);\n      myLeft = left * ySize / xSize;\n    }\n    else {\n      size = xSize;\n    }\n    // this is still wrong\n    ctx.lineWidth = 1;\n    ctx.beginPath();\n    ctx.arc(myLeft, myTop, size / 2, 0, 2 * Math.PI, false);\n    ctx[methodName]();\n    if (stroke) {\n      ctx.stroke();\n    }\n    ctx.restore();\n  }\n\n  /**\n   * Render a square control, as per fabric features.\n   * This function is written to respect object properties like transparentCorners, cornerSize\n   * cornerColor, cornerStrokeColor\n   * plus the addition of offsetY and offsetX.\n   * @param {CanvasRenderingContext2D} ctx context to render on\n   * @param {Number} left x coordinate where the control center should be\n   * @param {Number} top y coordinate where the control center should be\n   * @param {Object} styleOverride override for fabric.Object controls style\n   * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls\n   */\n  function renderSquareControl(ctx, left, top, styleOverride, fabricObject) {\n    styleOverride = styleOverride || {};\n    var xSize = this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,\n        ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,\n        transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?\n          styleOverride.transparentCorners : fabricObject.transparentCorners,\n        methodName = transparentCorners ? 'stroke' : 'fill',\n        stroke = !transparentCorners && (\n          styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor\n        ), xSizeBy2 = xSize / 2, ySizeBy2 = ySize / 2;\n    ctx.save();\n    ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor;\n    ctx.strokeStyle = styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor;\n    // this is still wrong\n    ctx.lineWidth = 1;\n    ctx.translate(left, top);\n    ctx.rotate(degreesToRadians(fabricObject.angle));\n    // this does not work, and fixed with ( && ) does not make sense.\n    // to have real transparent corners we need the controls on upperCanvas\n    // transparentCorners || ctx.clearRect(-xSizeBy2, -ySizeBy2, xSize, ySize);\n    ctx[methodName + 'Rect'](-xSizeBy2, -ySizeBy2, xSize, ySize);\n    if (stroke) {\n      ctx.strokeRect(-xSizeBy2, -ySizeBy2, xSize, ySize);\n    }\n    ctx.restore();\n  }\n\n  controls.renderCircleControl = renderCircleControl;\n  controls.renderSquareControl = renderSquareControl;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { });\n\n  function Control(options) {\n    for (var i in options) {\n      this[i] = options[i];\n    }\n  }\n\n  fabric.Control = Control;\n\n  fabric.Control.prototype = /** @lends fabric.Control.prototype */ {\n\n    /**\n     * keep track of control visibility.\n     * mainly for backward compatibility.\n     * if you do not want to see a control, you can remove it\n     * from the controlset.\n     * @type {Boolean}\n     * @default true\n     */\n    visible: true,\n\n    /**\n     * Name of the action that the control will likely execute.\n     * This is optional. FabricJS uses to identify what the user is doing for some\n     * extra optimizations. If you are writing a custom control and you want to know\n     * somewhere else in the code what is going on, you can use this string here.\n     * you can also provide a custom getActionName if your control run multiple actions\n     * depending on some external state.\n     * default to scale since is the most common, used on 4 corners by default\n     * @type {String}\n     * @default 'scale'\n     */\n    actionName: 'scale',\n\n    /**\n     * Drawing angle of the control.\n     * NOT used for now, but name marked as needed for internal logic\n     * example: to reuse the same drawing function for different rotated controls\n     * @type {Number}\n     * @default 0\n     */\n    angle: 0,\n\n    /**\n     * Relative position of the control. X\n     * 0,0 is the center of the Object, while -0.5 (left) or 0.5 (right) are the extremities\n     * of the bounding box.\n     * @type {Number}\n     * @default 0\n     */\n    x: 0,\n\n    /**\n     * Relative position of the control. Y\n     * 0,0 is the center of the Object, while -0.5 (top) or 0.5 (bottom) are the extremities\n     * of the bounding box.\n     * @type {Number}\n     * @default 0\n     */\n    y: 0,\n\n    /**\n     * Horizontal offset of the control from the defined position. In pixels\n     * Positive offset moves the control to the right, negative to the left.\n     * It used when you want to have position of control that does not scale with\n     * the bounding box. Example: rotation control is placed at x:0, y: 0.5 on\n     * the boundindbox, with an offset of 30 pixels vertically. Those 30 pixels will\n     * stay 30 pixels no matter how the object is big. Another example is having 2\n     * controls in the corner, that stay in the same position when the object scale.\n     * of the bounding box.\n     * @type {Number}\n     * @default 0\n     */\n    offsetX: 0,\n\n    /**\n     * Vertical offset of the control from the defined position. In pixels\n     * Positive offset moves the control to the bottom, negative to the top.\n     * @type {Number}\n     * @default 0\n     */\n    offsetY: 0,\n\n    /**\n     * Sets the length of the control. If null, defaults to object's cornerSize.\n     * Expects both sizeX and sizeY to be set when set.\n     * @type {?Number}\n     * @default null\n     */\n    sizeX: null,\n\n    /**\n     * Sets the height of the control. If null, defaults to object's cornerSize.\n     * Expects both sizeX and sizeY to be set when set.\n     * @type {?Number}\n     * @default null\n     */\n    sizeY: null,\n\n    /**\n     * Sets the length of the touch area of the control. If null, defaults to object's touchCornerSize.\n     * Expects both touchSizeX and touchSizeY to be set when set.\n     * @type {?Number}\n     * @default null\n     */\n    touchSizeX: null,\n\n    /**\n     * Sets the height of the touch area of the control. If null, defaults to object's touchCornerSize.\n     * Expects both touchSizeX and touchSizeY to be set when set.\n     * @type {?Number}\n     * @default null\n     */\n    touchSizeY: null,\n\n    /**\n     * Css cursor style to display when the control is hovered.\n     * if the method `cursorStyleHandler` is provided, this property is ignored.\n     * @type {String}\n     * @default 'crosshair'\n     */\n    cursorStyle: 'crosshair',\n\n    /**\n     * If controls has an offsetY or offsetX, draw a line that connects\n     * the control to the bounding box\n     * @type {Boolean}\n     * @default false\n     */\n    withConnection: false,\n\n    /**\n     * The control actionHandler, provide one to handle action ( control being moved )\n     * @param {Event} eventData the native mouse event\n     * @param {Object} transformData properties of the current transform\n     * @param {Number} x x position of the cursor\n     * @param {Number} y y position of the cursor\n     * @return {Boolean} true if the action/event modified the object\n     */\n    actionHandler: function(/* eventData, transformData, x, y */) { },\n\n    /**\n     * The control handler for mouse down, provide one to handle mouse down on control\n     * @param {Event} eventData the native mouse event\n     * @param {Object} transformData properties of the current transform\n     * @param {Number} x x position of the cursor\n     * @param {Number} y y position of the cursor\n     * @return {Boolean} true if the action/event modified the object\n     */\n    mouseDownHandler: function(/* eventData, transformData, x, y */) { },\n\n    /**\n     * The control mouseUpHandler, provide one to handle an effect on mouse up.\n     * @param {Event} eventData the native mouse event\n     * @param {Object} transformData properties of the current transform\n     * @param {Number} x x position of the cursor\n     * @param {Number} y y position of the cursor\n     * @return {Boolean} true if the action/event modified the object\n     */\n    mouseUpHandler: function(/* eventData, transformData, x, y */) { },\n\n    /**\n     * Returns control actionHandler\n     * @param {Event} eventData the native mouse event\n     * @param {fabric.Object} fabricObject on which the control is displayed\n     * @param {fabric.Control} control control for which the action handler is being asked\n     * @return {Function} the action handler\n     */\n    getActionHandler: function(/* eventData, fabricObject, control */) {\n      return this.actionHandler;\n    },\n\n    /**\n     * Returns control mouseDown handler\n     * @param {Event} eventData the native mouse event\n     * @param {fabric.Object} fabricObject on which the control is displayed\n     * @param {fabric.Control} control control for which the action handler is being asked\n     * @return {Function} the action handler\n     */\n    getMouseDownHandler: function(/* eventData, fabricObject, control */) {\n      return this.mouseDownHandler;\n    },\n\n    /**\n     * Returns control mouseUp handler\n     * @param {Event} eventData the native mouse event\n     * @param {fabric.Object} fabricObject on which the control is displayed\n     * @param {fabric.Control} control control for which the action handler is being asked\n     * @return {Function} the action handler\n     */\n    getMouseUpHandler: function(/* eventData, fabricObject, control */) {\n      return this.mouseUpHandler;\n    },\n\n    /**\n     * Returns control cursorStyle for css using cursorStyle. If you need a more elaborate\n     * function you can pass one in the constructor\n     * the cursorStyle property\n     * @param {Event} eventData the native mouse event\n     * @param {fabric.Control} control the current control ( likely this)\n     * @param {fabric.Object} object on which the control is displayed\n     * @return {String}\n     */\n    cursorStyleHandler: function(eventData, control /* fabricObject */) {\n      return control.cursorStyle;\n    },\n\n    /**\n     * Returns the action name. The basic implementation just return the actionName property.\n     * @param {Event} eventData the native mouse event\n     * @param {fabric.Control} control the current control ( likely this)\n     * @param {fabric.Object} object on which the control is displayed\n     * @return {String}\n     */\n    getActionName: function(eventData, control /* fabricObject */) {\n      return control.actionName;\n    },\n\n    /**\n     * Returns controls visibility\n     * @param {fabric.Object} object on which the control is displayed\n     * @param {String} controlKey key where the control is memorized on the\n     * @return {Boolean}\n     */\n    getVisibility: function(fabricObject, controlKey) {\n      var objectVisibility = fabricObject._controlsVisibility;\n      if (objectVisibility && typeof objectVisibility[controlKey] !== 'undefined') {\n        return objectVisibility[controlKey];\n      }\n      return this.visible;\n    },\n\n    /**\n     * Sets controls visibility\n     * @param {Boolean} visibility for the object\n     * @return {Void}\n     */\n    setVisibility: function(visibility /* name, fabricObject */) {\n      this.visible = visibility;\n    },\n\n\n    positionHandler: function(dim, finalMatrix /*, fabricObject, currentControl */) {\n      var point = fabric.util.transformPoint({\n        x: this.x * dim.x + this.offsetX,\n        y: this.y * dim.y + this.offsetY }, finalMatrix);\n      return point;\n    },\n\n    /**\n     * Returns the coords for this control based on object values.\n     * @param {Number} objectAngle angle from the fabric object holding the control\n     * @param {Number} objectCornerSize cornerSize from the fabric object holding the control (or touchCornerSize if\n     *   isTouch is true)\n     * @param {Number} centerX x coordinate where the control center should be\n     * @param {Number} centerY y coordinate where the control center should be\n     * @param {boolean} isTouch true if touch corner, false if normal corner\n     */\n    calcCornerCoords: function(objectAngle, objectCornerSize, centerX, centerY, isTouch) {\n      var cosHalfOffset,\n          sinHalfOffset,\n          cosHalfOffsetComp,\n          sinHalfOffsetComp,\n          xSize = (isTouch) ? this.touchSizeX : this.sizeX,\n          ySize = (isTouch) ? this.touchSizeY : this.sizeY;\n      if (xSize && ySize && xSize !== ySize) {\n        // handle rectangular corners\n        var controlTriangleAngle = Math.atan2(ySize, xSize);\n        var cornerHypotenuse = Math.sqrt(xSize * xSize + ySize * ySize) / 2;\n        var newTheta = controlTriangleAngle - fabric.util.degreesToRadians(objectAngle);\n        var newThetaComp = Math.PI / 2 - controlTriangleAngle - fabric.util.degreesToRadians(objectAngle);\n        cosHalfOffset = cornerHypotenuse * fabric.util.cos(newTheta);\n        sinHalfOffset = cornerHypotenuse * fabric.util.sin(newTheta);\n        // use complementary angle for two corners\n        cosHalfOffsetComp = cornerHypotenuse * fabric.util.cos(newThetaComp);\n        sinHalfOffsetComp = cornerHypotenuse * fabric.util.sin(newThetaComp);\n      }\n      else {\n        // handle square corners\n        // use default object corner size unless size is defined\n        var cornerSize = (xSize && ySize) ? xSize : objectCornerSize;\n        /* 0.7071067812 stands for sqrt(2)/2 */\n        cornerHypotenuse = cornerSize * 0.7071067812;\n        // complementary angles are equal since they're both 45 degrees\n        var newTheta = fabric.util.degreesToRadians(45 - objectAngle);\n        cosHalfOffset = cosHalfOffsetComp = cornerHypotenuse * fabric.util.cos(newTheta);\n        sinHalfOffset = sinHalfOffsetComp = cornerHypotenuse * fabric.util.sin(newTheta);\n      }\n\n      return {\n        tl: {\n          x: centerX - sinHalfOffsetComp,\n          y: centerY - cosHalfOffsetComp,\n        },\n        tr: {\n          x: centerX + cosHalfOffset,\n          y: centerY - sinHalfOffset,\n        },\n        bl: {\n          x: centerX - cosHalfOffset,\n          y: centerY + sinHalfOffset,\n        },\n        br: {\n          x: centerX + sinHalfOffsetComp,\n          y: centerY + cosHalfOffsetComp,\n        },\n      };\n    },\n\n    /**\n    * Render function for the control.\n    * When this function runs the context is unscaled. unrotate. Just retina scaled.\n    * all the functions will have to translate to the point left,top before starting Drawing\n    * if they want to draw a control where the position is detected.\n    * left and top are the result of the positionHandler function\n    * @param {RenderingContext2D} ctx the context where the control will be drawn\n    * @param {Number} left position of the canvas where we are about to render the control.\n    * @param {Number} top position of the canvas where we are about to render the control.\n    * @param {Object} styleOverride\n    * @param {fabric.Object} fabricObject the object where the control is about to be rendered\n    */\n    render: function(ctx, left, top, styleOverride, fabricObject) {\n      styleOverride = styleOverride || {};\n      switch (styleOverride.cornerStyle || fabricObject.cornerStyle) {\n        case 'circle':\n          fabric.controlsUtils.renderCircleControl.call(this, ctx, left, top, styleOverride, fabricObject);\n          break;\n        default:\n          fabric.controlsUtils.renderSquareControl.call(this, ctx, left, top, styleOverride, fabricObject);\n      }\n    },\n  };\n\n})( true ? exports : undefined);\n\n\n(function() {\n\n  /* _FROM_SVG_START_ */\n  function getColorStop(el, multiplier) {\n    var style = el.getAttribute('style'),\n        offset = el.getAttribute('offset') || 0,\n        color, colorAlpha, opacity, i;\n\n    // convert percents to absolute values\n    offset = parseFloat(offset) / (/%$/.test(offset) ? 100 : 1);\n    offset = offset < 0 ? 0 : offset > 1 ? 1 : offset;\n    if (style) {\n      var keyValuePairs = style.split(/\\s*;\\s*/);\n\n      if (keyValuePairs[keyValuePairs.length - 1] === '') {\n        keyValuePairs.pop();\n      }\n\n      for (i = keyValuePairs.length; i--; ) {\n\n        var split = keyValuePairs[i].split(/\\s*:\\s*/),\n            key = split[0].trim(),\n            value = split[1].trim();\n\n        if (key === 'stop-color') {\n          color = value;\n        }\n        else if (key === 'stop-opacity') {\n          opacity = value;\n        }\n      }\n    }\n\n    if (!color) {\n      color = el.getAttribute('stop-color') || 'rgb(0,0,0)';\n    }\n    if (!opacity) {\n      opacity = el.getAttribute('stop-opacity');\n    }\n\n    color = new fabric.Color(color);\n    colorAlpha = color.getAlpha();\n    opacity = isNaN(parseFloat(opacity)) ? 1 : parseFloat(opacity);\n    opacity *= colorAlpha * multiplier;\n\n    return {\n      offset: offset,\n      color: color.toRgb(),\n      opacity: opacity\n    };\n  }\n\n  function getLinearCoords(el) {\n    return {\n      x1: el.getAttribute('x1') || 0,\n      y1: el.getAttribute('y1') || 0,\n      x2: el.getAttribute('x2') || '100%',\n      y2: el.getAttribute('y2') || 0\n    };\n  }\n\n  function getRadialCoords(el) {\n    return {\n      x1: el.getAttribute('fx') || el.getAttribute('cx') || '50%',\n      y1: el.getAttribute('fy') || el.getAttribute('cy') || '50%',\n      r1: 0,\n      x2: el.getAttribute('cx') || '50%',\n      y2: el.getAttribute('cy') || '50%',\n      r2: el.getAttribute('r') || '50%'\n    };\n  }\n  /* _FROM_SVG_END_ */\n\n  var clone = fabric.util.object.clone;\n\n  /**\n   * Gradient class\n   * @class fabric.Gradient\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients}\n   * @see {@link fabric.Gradient#initialize} for constructor definition\n   */\n  fabric.Gradient = fabric.util.createClass(/** @lends fabric.Gradient.prototype */ {\n\n    /**\n     * Horizontal offset for aligning gradients coming from SVG when outside pathgroups\n     * @type Number\n     * @default 0\n     */\n    offsetX: 0,\n\n    /**\n     * Vertical offset for aligning gradients coming from SVG when outside pathgroups\n     * @type Number\n     * @default 0\n     */\n    offsetY: 0,\n\n    /**\n     * A transform matrix to apply to the gradient before painting.\n     * Imported from svg gradients, is not applied with the current transform in the center.\n     * Before this transform is applied, the origin point is at the top left corner of the object\n     * plus the addition of offsetY and offsetX.\n     * @type Number[]\n     * @default null\n     */\n    gradientTransform: null,\n\n    /**\n     * coordinates units for coords.\n     * If `pixels`, the number of coords are in the same unit of width / height.\n     * If set as `percentage` the coords are still a number, but 1 means 100% of width\n     * for the X and 100% of the height for the y. It can be bigger than 1 and negative.\n     * allowed values pixels or percentage.\n     * @type String\n     * @default 'pixels'\n     */\n    gradientUnits: 'pixels',\n\n    /**\n     * Gradient type linear or radial\n     * @type String\n     * @default 'pixels'\n     */\n    type: 'linear',\n\n    /**\n     * Constructor\n     * @param {Object} options Options object with type, coords, gradientUnits and colorStops\n     * @param {Object} [options.type] gradient type linear or radial\n     * @param {Object} [options.gradientUnits] gradient units\n     * @param {Object} [options.offsetX] SVG import compatibility\n     * @param {Object} [options.offsetY] SVG import compatibility\n     * @param {Object[]} options.colorStops contains the colorstops.\n     * @param {Object} options.coords contains the coords of the gradient\n     * @param {Number} [options.coords.x1] X coordiante of the first point for linear or of the focal point for radial\n     * @param {Number} [options.coords.y1] Y coordiante of the first point for linear or of the focal point for radial\n     * @param {Number} [options.coords.x2] X coordiante of the second point for linear or of the center point for radial\n     * @param {Number} [options.coords.y2] Y coordiante of the second point for linear or of the center point for radial\n     * @param {Number} [options.coords.r1] only for radial gradient, radius of the inner circle\n     * @param {Number} [options.coords.r2] only for radial gradient, radius of the external circle\n     * @return {fabric.Gradient} thisArg\n     */\n    initialize: function(options) {\n      options || (options = { });\n      options.coords || (options.coords = { });\n\n      var coords, _this = this;\n\n      // sets everything, then coords and colorstops get sets again\n      Object.keys(options).forEach(function(option) {\n        _this[option] = options[option];\n      });\n\n      if (this.id) {\n        this.id += '_' + fabric.Object.__uid++;\n      }\n      else {\n        this.id = fabric.Object.__uid++;\n      }\n\n      coords = {\n        x1: options.coords.x1 || 0,\n        y1: options.coords.y1 || 0,\n        x2: options.coords.x2 || 0,\n        y2: options.coords.y2 || 0\n      };\n\n      if (this.type === 'radial') {\n        coords.r1 = options.coords.r1 || 0;\n        coords.r2 = options.coords.r2 || 0;\n      }\n\n      this.coords = coords;\n      this.colorStops = options.colorStops.slice();\n    },\n\n    /**\n     * Adds another colorStop\n     * @param {Object} colorStop Object with offset and color\n     * @return {fabric.Gradient} thisArg\n     */\n    addColorStop: function(colorStops) {\n      for (var position in colorStops) {\n        var color = new fabric.Color(colorStops[position]);\n        this.colorStops.push({\n          offset: parseFloat(position),\n          color: color.toRgb(),\n          opacity: color.getAlpha()\n        });\n      }\n      return this;\n    },\n\n    /**\n     * Returns object representation of a gradient\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object}\n     */\n    toObject: function(propertiesToInclude) {\n      var object = {\n        type: this.type,\n        coords: this.coords,\n        colorStops: this.colorStops,\n        offsetX: this.offsetX,\n        offsetY: this.offsetY,\n        gradientUnits: this.gradientUnits,\n        gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform\n      };\n      fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n      return object;\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns SVG representation of an gradient\n     * @param {Object} object Object to create a gradient for\n     * @return {String} SVG representation of an gradient (linear/radial)\n     */\n    toSVG: function(object, options) {\n      var coords = clone(this.coords, true), i, len, options = options || {},\n          markup, commonAttributes, colorStops = clone(this.colorStops, true),\n          needsSwap = coords.r1 > coords.r2,\n          transform = this.gradientTransform ? this.gradientTransform.concat() : fabric.iMatrix.concat(),\n          offsetX = -this.offsetX, offsetY = -this.offsetY,\n          withViewport = !!options.additionalTransform,\n          gradientUnits = this.gradientUnits === 'pixels' ? 'userSpaceOnUse' : 'objectBoundingBox';\n      // colorStops must be sorted ascending\n      colorStops.sort(function(a, b) {\n        return a.offset - b.offset;\n      });\n\n      if (gradientUnits === 'objectBoundingBox') {\n        offsetX /= object.width;\n        offsetY /= object.height;\n      }\n      else {\n        offsetX += object.width / 2;\n        offsetY += object.height / 2;\n      }\n      if (object.type === 'path' && this.gradientUnits !== 'percentage') {\n        offsetX -= object.pathOffset.x;\n        offsetY -= object.pathOffset.y;\n      }\n\n\n      transform[4] -= offsetX;\n      transform[5] -= offsetY;\n\n      commonAttributes = 'id=\"SVGID_' + this.id +\n                     '\" gradientUnits=\"' + gradientUnits + '\"';\n      commonAttributes += ' gradientTransform=\"' + (withViewport ?\n        options.additionalTransform + ' ' : '') + fabric.util.matrixToSVG(transform) + '\" ';\n\n      if (this.type === 'linear') {\n        markup = [\n          '<linearGradient ',\n          commonAttributes,\n          ' x1=\"', coords.x1,\n          '\" y1=\"', coords.y1,\n          '\" x2=\"', coords.x2,\n          '\" y2=\"', coords.y2,\n          '\">\\n'\n        ];\n      }\n      else if (this.type === 'radial') {\n        // svg radial gradient has just 1 radius. the biggest.\n        markup = [\n          '<radialGradient ',\n          commonAttributes,\n          ' cx=\"', needsSwap ? coords.x1 : coords.x2,\n          '\" cy=\"', needsSwap ? coords.y1 : coords.y2,\n          '\" r=\"', needsSwap ? coords.r1 : coords.r2,\n          '\" fx=\"', needsSwap ? coords.x2 : coords.x1,\n          '\" fy=\"', needsSwap ? coords.y2 : coords.y1,\n          '\">\\n'\n        ];\n      }\n\n      if (this.type === 'radial') {\n        if (needsSwap) {\n          // svg goes from internal to external radius. if radius are inverted, swap color stops.\n          colorStops = colorStops.concat();\n          colorStops.reverse();\n          for (i = 0, len = colorStops.length; i < len; i++) {\n            colorStops[i].offset = 1 - colorStops[i].offset;\n          }\n        }\n        var minRadius = Math.min(coords.r1, coords.r2);\n        if (minRadius > 0) {\n          // i have to shift all colorStops and add new one in 0.\n          var maxRadius = Math.max(coords.r1, coords.r2),\n              percentageShift = minRadius / maxRadius;\n          for (i = 0, len = colorStops.length; i < len; i++) {\n            colorStops[i].offset += percentageShift * (1 - colorStops[i].offset);\n          }\n        }\n      }\n\n      for (i = 0, len = colorStops.length; i < len; i++) {\n        var colorStop = colorStops[i];\n        markup.push(\n          '<stop ',\n          'offset=\"', (colorStop.offset * 100) + '%',\n          '\" style=\"stop-color:', colorStop.color,\n          (typeof colorStop.opacity !== 'undefined' ? ';stop-opacity: ' + colorStop.opacity : ';'),\n          '\"/>\\n'\n        );\n      }\n\n      markup.push((this.type === 'linear' ? '</linearGradient>\\n' : '</radialGradient>\\n'));\n\n      return markup.join('');\n    },\n    /* _TO_SVG_END_ */\n\n    /**\n     * Returns an instance of CanvasGradient\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @return {CanvasGradient}\n     */\n    toLive: function(ctx) {\n      var gradient, coords = fabric.util.object.clone(this.coords), i, len;\n\n      if (!this.type) {\n        return;\n      }\n\n      if (this.type === 'linear') {\n        gradient = ctx.createLinearGradient(\n          coords.x1, coords.y1, coords.x2, coords.y2);\n      }\n      else if (this.type === 'radial') {\n        gradient = ctx.createRadialGradient(\n          coords.x1, coords.y1, coords.r1, coords.x2, coords.y2, coords.r2);\n      }\n\n      for (i = 0, len = this.colorStops.length; i < len; i++) {\n        var color = this.colorStops[i].color,\n            opacity = this.colorStops[i].opacity,\n            offset = this.colorStops[i].offset;\n\n        if (typeof opacity !== 'undefined') {\n          color = new fabric.Color(color).setAlpha(opacity).toRgba();\n        }\n        gradient.addColorStop(offset, color);\n      }\n\n      return gradient;\n    }\n  });\n\n  fabric.util.object.extend(fabric.Gradient, {\n\n    /* _FROM_SVG_START_ */\n    /**\n     * Returns {@link fabric.Gradient} instance from an SVG element\n     * @static\n     * @memberOf fabric.Gradient\n     * @param {SVGGradientElement} el SVG gradient element\n     * @param {fabric.Object} instance\n     * @param {String} opacityAttr A fill-opacity or stroke-opacity attribute to multiply to each stop's opacity.\n     * @param {Object} svgOptions an object containing the size of the SVG in order to parse correctly gradients\n     * that uses gradientUnits as 'userSpaceOnUse' and percentages.\n     * @param {Object.number} viewBoxWidth width part of the viewBox attribute on svg\n     * @param {Object.number} viewBoxHeight height part of the viewBox attribute on svg\n     * @param {Object.number} width width part of the svg tag if viewBox is not specified\n     * @param {Object.number} height height part of the svg tag if viewBox is not specified\n     * @return {fabric.Gradient} Gradient instance\n     * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement\n     * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement\n     */\n    fromElement: function(el, instance, opacityAttr, svgOptions) {\n      /**\n       *  @example:\n       *\n       *  <linearGradient id=\"linearGrad1\">\n       *    <stop offset=\"0%\" stop-color=\"white\"/>\n       *    <stop offset=\"100%\" stop-color=\"black\"/>\n       *  </linearGradient>\n       *\n       *  OR\n       *\n       *  <linearGradient id=\"linearGrad2\">\n       *    <stop offset=\"0\" style=\"stop-color:rgb(255,255,255)\"/>\n       *    <stop offset=\"1\" style=\"stop-color:rgb(0,0,0)\"/>\n       *  </linearGradient>\n       *\n       *  OR\n       *\n       *  <radialGradient id=\"radialGrad1\">\n       *    <stop offset=\"0%\" stop-color=\"white\" stop-opacity=\"1\" />\n       *    <stop offset=\"50%\" stop-color=\"black\" stop-opacity=\"0.5\" />\n       *    <stop offset=\"100%\" stop-color=\"white\" stop-opacity=\"1\" />\n       *  </radialGradient>\n       *\n       *  OR\n       *\n       *  <radialGradient id=\"radialGrad2\">\n       *    <stop offset=\"0\" stop-color=\"rgb(255,255,255)\" />\n       *    <stop offset=\"0.5\" stop-color=\"rgb(0,0,0)\" />\n       *    <stop offset=\"1\" stop-color=\"rgb(255,255,255)\" />\n       *  </radialGradient>\n       *\n       */\n\n      var multiplier = parseFloat(opacityAttr) / (/%$/.test(opacityAttr) ? 100 : 1);\n      multiplier = multiplier < 0 ? 0 : multiplier > 1 ? 1 : multiplier;\n      if (isNaN(multiplier)) {\n        multiplier = 1;\n      }\n\n      var colorStopEls = el.getElementsByTagName('stop'),\n          type,\n          gradientUnits = el.getAttribute('gradientUnits') === 'userSpaceOnUse' ?\n            'pixels' : 'percentage',\n          gradientTransform = el.getAttribute('gradientTransform') || '',\n          colorStops = [],\n          coords, i, offsetX = 0, offsetY = 0,\n          transformMatrix;\n      if (el.nodeName === 'linearGradient' || el.nodeName === 'LINEARGRADIENT') {\n        type = 'linear';\n        coords = getLinearCoords(el);\n      }\n      else {\n        type = 'radial';\n        coords = getRadialCoords(el);\n      }\n\n      for (i = colorStopEls.length; i--; ) {\n        colorStops.push(getColorStop(colorStopEls[i], multiplier));\n      }\n\n      transformMatrix = fabric.parseTransformAttribute(gradientTransform);\n\n      __convertPercentUnitsToValues(instance, coords, svgOptions, gradientUnits);\n\n      if (gradientUnits === 'pixels') {\n        offsetX = -instance.left;\n        offsetY = -instance.top;\n      }\n\n      var gradient = new fabric.Gradient({\n        id: el.getAttribute('id'),\n        type: type,\n        coords: coords,\n        colorStops: colorStops,\n        gradientUnits: gradientUnits,\n        gradientTransform: transformMatrix,\n        offsetX: offsetX,\n        offsetY: offsetY,\n      });\n\n      return gradient;\n    }\n    /* _FROM_SVG_END_ */\n  });\n\n  /**\n   * @private\n   */\n  function __convertPercentUnitsToValues(instance, options, svgOptions, gradientUnits) {\n    var propValue, finalValue;\n    Object.keys(options).forEach(function(prop) {\n      propValue = options[prop];\n      if (propValue === 'Infinity') {\n        finalValue = 1;\n      }\n      else if (propValue === '-Infinity') {\n        finalValue = 0;\n      }\n      else {\n        finalValue = parseFloat(options[prop], 10);\n        if (typeof propValue === 'string' && /^(\\d+\\.\\d+)%|(\\d+)%$/.test(propValue)) {\n          finalValue *= 0.01;\n          if (gradientUnits === 'pixels') {\n            // then we need to fix those percentages here in svg parsing\n            if (prop === 'x1' || prop === 'x2' || prop === 'r2') {\n              finalValue *= svgOptions.viewBoxWidth || svgOptions.width;\n            }\n            if (prop === 'y1' || prop === 'y2') {\n              finalValue *= svgOptions.viewBoxHeight || svgOptions.height;\n            }\n          }\n        }\n      }\n      options[prop] = finalValue;\n    });\n  }\n})();\n\n\n(function() {\n\n  'use strict';\n\n  var toFixed = fabric.util.toFixed;\n\n  /**\n   * Pattern class\n   * @class fabric.Pattern\n   * @see {@link http://fabricjs.com/patterns|Pattern demo}\n   * @see {@link http://fabricjs.com/dynamic-patterns|DynamicPattern demo}\n   * @see {@link fabric.Pattern#initialize} for constructor definition\n   */\n\n\n  fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ {\n\n    /**\n     * Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat)\n     * @type String\n     * @default\n     */\n    repeat: 'repeat',\n\n    /**\n     * Pattern horizontal offset from object's left/top corner\n     * @type Number\n     * @default\n     */\n    offsetX: 0,\n\n    /**\n     * Pattern vertical offset from object's left/top corner\n     * @type Number\n     * @default\n     */\n    offsetY: 0,\n\n    /**\n     * crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n     * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n     * @type String\n     * @default\n     */\n    crossOrigin: '',\n\n    /**\n     * transform matrix to change the pattern, imported from svgs.\n     * @type Array\n     * @default\n     */\n    patternTransform: null,\n\n    /**\n     * Constructor\n     * @param {Object} [options] Options object\n     * @param {Function} [callback] function to invoke after callback init.\n     * @return {fabric.Pattern} thisArg\n     */\n    initialize: function(options, callback) {\n      options || (options = { });\n\n      this.id = fabric.Object.__uid++;\n      this.setOptions(options);\n      if (!options.source || (options.source && typeof options.source !== 'string')) {\n        callback && callback(this);\n        return;\n      }\n      else {\n        // img src string\n        var _this = this;\n        this.source = fabric.util.createImage();\n        fabric.util.loadImage(options.source, function(img, isError) {\n          _this.source = img;\n          callback && callback(_this, isError);\n        }, null, this.crossOrigin);\n      }\n    },\n\n    /**\n     * Returns object representation of a pattern\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} Object representation of a pattern instance\n     */\n    toObject: function(propertiesToInclude) {\n      var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n          source, object;\n\n      // <img> element\n      if (typeof this.source.src === 'string') {\n        source = this.source.src;\n      }\n      // <canvas> element\n      else if (typeof this.source === 'object' && this.source.toDataURL) {\n        source = this.source.toDataURL();\n      }\n\n      object = {\n        type: 'pattern',\n        source: source,\n        repeat: this.repeat,\n        crossOrigin: this.crossOrigin,\n        offsetX: toFixed(this.offsetX, NUM_FRACTION_DIGITS),\n        offsetY: toFixed(this.offsetY, NUM_FRACTION_DIGITS),\n        patternTransform: this.patternTransform ? this.patternTransform.concat() : null\n      };\n      fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n      return object;\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns SVG representation of a pattern\n     * @param {fabric.Object} object\n     * @return {String} SVG representation of a pattern\n     */\n    toSVG: function(object) {\n      var patternSource = typeof this.source === 'function' ? this.source() : this.source,\n          patternWidth = patternSource.width / object.width,\n          patternHeight = patternSource.height / object.height,\n          patternOffsetX = this.offsetX / object.width,\n          patternOffsetY = this.offsetY / object.height,\n          patternImgSrc = '';\n      if (this.repeat === 'repeat-x' || this.repeat === 'no-repeat') {\n        patternHeight = 1;\n        if (patternOffsetY) {\n          patternHeight += Math.abs(patternOffsetY);\n        }\n      }\n      if (this.repeat === 'repeat-y' || this.repeat === 'no-repeat') {\n        patternWidth = 1;\n        if (patternOffsetX) {\n          patternWidth += Math.abs(patternOffsetX);\n        }\n\n      }\n      if (patternSource.src) {\n        patternImgSrc = patternSource.src;\n      }\n      else if (patternSource.toDataURL) {\n        patternImgSrc = patternSource.toDataURL();\n      }\n\n      return '<pattern id=\"SVGID_' + this.id +\n                    '\" x=\"' + patternOffsetX +\n                    '\" y=\"' + patternOffsetY +\n                    '\" width=\"' + patternWidth +\n                    '\" height=\"' + patternHeight + '\">\\n' +\n               '<image x=\"0\" y=\"0\"' +\n                      ' width=\"' + patternSource.width +\n                      '\" height=\"' + patternSource.height +\n                      '\" xlink:href=\"' + patternImgSrc +\n               '\"></image>\\n' +\n             '</pattern>\\n';\n    },\n    /* _TO_SVG_END_ */\n\n    setOptions: function(options) {\n      for (var prop in options) {\n        this[prop] = options[prop];\n      }\n    },\n\n    /**\n     * Returns an instance of CanvasPattern\n     * @param {CanvasRenderingContext2D} ctx Context to create pattern\n     * @return {CanvasPattern}\n     */\n    toLive: function(ctx) {\n      var source = this.source;\n      // if the image failed to load, return, and allow rest to continue loading\n      if (!source) {\n        return '';\n      }\n\n      // if an image\n      if (typeof source.src !== 'undefined') {\n        if (!source.complete) {\n          return '';\n        }\n        if (source.naturalWidth === 0 || source.naturalHeight === 0) {\n          return '';\n        }\n      }\n      return ctx.createPattern(source, this.repeat);\n    }\n  });\n})();\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      toFixed = fabric.util.toFixed;\n\n  if (fabric.Shadow) {\n    fabric.warn('fabric.Shadow is already defined.');\n    return;\n  }\n\n  /**\n   * Shadow class\n   * @class fabric.Shadow\n   * @see {@link http://fabricjs.com/shadows|Shadow demo}\n   * @see {@link fabric.Shadow#initialize} for constructor definition\n   */\n  fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ {\n\n    /**\n     * Shadow color\n     * @type String\n     * @default\n     */\n    color: 'rgb(0,0,0)',\n\n    /**\n     * Shadow blur\n     * @type Number\n     */\n    blur: 0,\n\n    /**\n     * Shadow horizontal offset\n     * @type Number\n     * @default\n     */\n    offsetX: 0,\n\n    /**\n     * Shadow vertical offset\n     * @type Number\n     * @default\n     */\n    offsetY: 0,\n\n    /**\n     * Whether the shadow should affect stroke operations\n     * @type Boolean\n     * @default\n     */\n    affectStroke: false,\n\n    /**\n     * Indicates whether toObject should include default values\n     * @type Boolean\n     * @default\n     */\n    includeDefaultValues: true,\n\n    /**\n     * When `false`, the shadow will scale with the object.\n     * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale.\n     * default to false\n     * @type Boolean\n     * @default\n     */\n    nonScaling: false,\n\n    /**\n     * Constructor\n     * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n     * @return {fabric.Shadow} thisArg\n     */\n    initialize: function(options) {\n\n      if (typeof options === 'string') {\n        options = this._parseShadow(options);\n      }\n\n      for (var prop in options) {\n        this[prop] = options[prop];\n      }\n\n      this.id = fabric.Object.__uid++;\n    },\n\n    /**\n     * @private\n     * @param {String} shadow Shadow value to parse\n     * @return {Object} Shadow object with color, offsetX, offsetY and blur\n     */\n    _parseShadow: function(shadow) {\n      var shadowStr = shadow.trim(),\n          offsetsAndBlur = fabric.Shadow.reOffsetsAndBlur.exec(shadowStr) || [],\n          color = shadowStr.replace(fabric.Shadow.reOffsetsAndBlur, '') || 'rgb(0,0,0)';\n\n      return {\n        color: color.trim(),\n        offsetX: parseFloat(offsetsAndBlur[1], 10) || 0,\n        offsetY: parseFloat(offsetsAndBlur[2], 10) || 0,\n        blur: parseFloat(offsetsAndBlur[3], 10) || 0\n      };\n    },\n\n    /**\n     * Returns a string representation of an instance\n     * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n     * @return {String} Returns CSS3 text-shadow declaration\n     */\n    toString: function() {\n      return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns SVG representation of a shadow\n     * @param {fabric.Object} object\n     * @return {String} SVG representation of a shadow\n     */\n    toSVG: function(object) {\n      var fBoxX = 40, fBoxY = 40, NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n          offset = fabric.util.rotateVector(\n            { x: this.offsetX, y: this.offsetY },\n            fabric.util.degreesToRadians(-object.angle)),\n          BLUR_BOX = 20, color = new fabric.Color(this.color);\n\n      if (object.width && object.height) {\n        //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n        // we add some extra space to filter box to contain the blur ( 20 )\n        fBoxX = toFixed((Math.abs(offset.x) + this.blur) / object.width, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX;\n        fBoxY = toFixed((Math.abs(offset.y) + this.blur) / object.height, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX;\n      }\n      if (object.flipX) {\n        offset.x *= -1;\n      }\n      if (object.flipY) {\n        offset.y *= -1;\n      }\n\n      return (\n        '<filter id=\"SVGID_' + this.id + '\" y=\"-' + fBoxY + '%\" height=\"' + (100 + 2 * fBoxY) + '%\" ' +\n          'x=\"-' + fBoxX + '%\" width=\"' + (100 + 2 * fBoxX) + '%\" ' + '>\\n' +\n          '\\t<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"' +\n            toFixed(this.blur ? this.blur / 2 : 0, NUM_FRACTION_DIGITS) + '\"></feGaussianBlur>\\n' +\n          '\\t<feOffset dx=\"' + toFixed(offset.x, NUM_FRACTION_DIGITS) +\n          '\" dy=\"' + toFixed(offset.y, NUM_FRACTION_DIGITS) + '\" result=\"oBlur\" ></feOffset>\\n' +\n          '\\t<feFlood flood-color=\"' + color.toRgb() + '\" flood-opacity=\"' + color.getAlpha() + '\"/>\\n' +\n          '\\t<feComposite in2=\"oBlur\" operator=\"in\" />\\n' +\n          '\\t<feMerge>\\n' +\n            '\\t\\t<feMergeNode></feMergeNode>\\n' +\n            '\\t\\t<feMergeNode in=\"SourceGraphic\"></feMergeNode>\\n' +\n          '\\t</feMerge>\\n' +\n        '</filter>\\n');\n    },\n    /* _TO_SVG_END_ */\n\n    /**\n     * Returns object representation of a shadow\n     * @return {Object} Object representation of a shadow instance\n     */\n    toObject: function() {\n      if (this.includeDefaultValues) {\n        return {\n          color: this.color,\n          blur: this.blur,\n          offsetX: this.offsetX,\n          offsetY: this.offsetY,\n          affectStroke: this.affectStroke,\n          nonScaling: this.nonScaling\n        };\n      }\n      var obj = { }, proto = fabric.Shadow.prototype;\n\n      ['color', 'blur', 'offsetX', 'offsetY', 'affectStroke', 'nonScaling'].forEach(function(prop) {\n        if (this[prop] !== proto[prop]) {\n          obj[prop] = this[prop];\n        }\n      }, this);\n\n      return obj;\n    }\n  });\n\n  /**\n   * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n   * @static\n   * @field\n   * @memberOf fabric.Shadow\n   */\n  // eslint-disable-next-line max-len\n  fabric.Shadow.reOffsetsAndBlur = /(?:\\s|^)(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?(\\d+(?:\\.\\d*)?(?:px)?)?(?:\\s?|$)(?:$|\\s)/;\n\n})( true ? exports : undefined);\n\n\n(function () {\n\n  'use strict';\n\n  if (fabric.StaticCanvas) {\n    fabric.warn('fabric.StaticCanvas is already defined.');\n    return;\n  }\n\n  // aliases for faster resolution\n  var extend = fabric.util.object.extend,\n      getElementOffset = fabric.util.getElementOffset,\n      removeFromArray = fabric.util.removeFromArray,\n      toFixed = fabric.util.toFixed,\n      transformPoint = fabric.util.transformPoint,\n      invertTransform = fabric.util.invertTransform,\n      getNodeCanvas = fabric.util.getNodeCanvas,\n      createCanvasElement = fabric.util.createCanvasElement,\n\n      CANVAS_INIT_ERROR = new Error('Could not initialize `canvas` element');\n\n  /**\n   * Static canvas class\n   * @class fabric.StaticCanvas\n   * @mixes fabric.Collection\n   * @mixes fabric.Observable\n   * @see {@link http://fabricjs.com/static_canvas|StaticCanvas demo}\n   * @see {@link fabric.StaticCanvas#initialize} for constructor definition\n   * @fires before:render\n   * @fires after:render\n   * @fires canvas:cleared\n   * @fires object:added\n   * @fires object:removed\n   */\n  fabric.StaticCanvas = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.StaticCanvas.prototype */ {\n\n    /**\n     * Constructor\n     * @param {HTMLElement | String} el &lt;canvas> element to initialize instance on\n     * @param {Object} [options] Options object\n     * @return {Object} thisArg\n     */\n    initialize: function(el, options) {\n      options || (options = { });\n      this.renderAndResetBound = this.renderAndReset.bind(this);\n      this.requestRenderAllBound = this.requestRenderAll.bind(this);\n      this._initStatic(el, options);\n    },\n\n    /**\n     * Background color of canvas instance.\n     * Should be set via {@link fabric.StaticCanvas#setBackgroundColor}.\n     * @type {(String|fabric.Pattern)}\n     * @default\n     */\n    backgroundColor: '',\n\n    /**\n     * Background image of canvas instance.\n     * since 2.4.0 image caching is active, please when putting an image as background, add to the\n     * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n     * vale. As an alternative you can disable image objectCaching\n     * @type fabric.Image\n     * @default\n     */\n    backgroundImage: null,\n\n    /**\n     * Overlay color of canvas instance.\n     * Should be set via {@link fabric.StaticCanvas#setOverlayColor}\n     * @since 1.3.9\n     * @type {(String|fabric.Pattern)}\n     * @default\n     */\n    overlayColor: '',\n\n    /**\n     * Overlay image of canvas instance.\n     * since 2.4.0 image caching is active, please when putting an image as overlay, add to the\n     * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n     * vale. As an alternative you can disable image objectCaching\n     * @type fabric.Image\n     * @default\n     */\n    overlayImage: null,\n\n    /**\n     * Indicates whether toObject/toDatalessObject should include default values\n     * if set to false, takes precedence over the object value.\n     * @type Boolean\n     * @default\n     */\n    includeDefaultValues: true,\n\n    /**\n     * Indicates whether objects' state should be saved\n     * @type Boolean\n     * @default\n     */\n    stateful: false,\n\n    /**\n     * Indicates whether {@link fabric.Collection.add}, {@link fabric.Collection.insertAt} and {@link fabric.Collection.remove},\n     * {@link fabric.StaticCanvas.moveTo}, {@link fabric.StaticCanvas.clear} and many more, should also re-render canvas.\n     * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once\n     * since the renders are quequed and executed one per frame.\n     * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() )\n     * Left default to true to do not break documentation and old app, fiddles.\n     * @type Boolean\n     * @default\n     */\n    renderOnAddRemove: true,\n\n    /**\n     * Indicates whether object controls (borders/controls) are rendered above overlay image\n     * @type Boolean\n     * @default\n     */\n    controlsAboveOverlay: false,\n\n    /**\n     * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas\n     * @type Boolean\n     * @default\n     */\n    allowTouchScrolling: false,\n\n    /**\n     * Indicates whether this canvas will use image smoothing, this is on by default in browsers\n     * @type Boolean\n     * @default\n     */\n    imageSmoothingEnabled: true,\n\n    /**\n     * The transformation (in the format of Canvas transform) which focuses the viewport\n     * @type Array\n     * @default\n     */\n    viewportTransform: fabric.iMatrix.concat(),\n\n    /**\n     * if set to false background image is not affected by viewport transform\n     * @since 1.6.3\n     * @type Boolean\n     * @default\n     */\n    backgroundVpt: true,\n\n    /**\n     * if set to false overlya image is not affected by viewport transform\n     * @since 1.6.3\n     * @type Boolean\n     * @default\n     */\n    overlayVpt: true,\n\n    /**\n     * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens\n     * @type Boolean\n     * @default\n     */\n    enableRetinaScaling: true,\n\n    /**\n     * Describe canvas element extension over design\n     * properties are tl,tr,bl,br.\n     * if canvas is not zoomed/panned those points are the four corner of canvas\n     * if canvas is viewportTransformed you those points indicate the extension\n     * of canvas element in plain untrasformed coordinates\n     * The coordinates get updated with @method calcViewportBoundaries.\n     * @memberOf fabric.StaticCanvas.prototype\n     */\n    vptCoords: { },\n\n    /**\n     * Based on vptCoords and object.aCoords, skip rendering of objects that\n     * are not included in current viewport.\n     * May greatly help in applications with crowded canvas and use of zoom/pan\n     * If One of the corner of the bounding box of the object is on the canvas\n     * the objects get rendered.\n     * @memberOf fabric.StaticCanvas.prototype\n     * @type Boolean\n     * @default\n     */\n    skipOffscreen: true,\n\n    /**\n     * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n     * the clipPath object gets used when the canvas has rendered, and the context is placed in the\n     * top left corner of the canvas.\n     * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true\n     * @type fabric.Object\n     */\n    clipPath: undefined,\n\n    /**\n     * @private\n     * @param {HTMLElement | String} el &lt;canvas> element to initialize instance on\n     * @param {Object} [options] Options object\n     */\n    _initStatic: function(el, options) {\n      var cb = this.requestRenderAllBound;\n      this._objects = [];\n      this._createLowerCanvas(el);\n      this._initOptions(options);\n      // only initialize retina scaling once\n      if (!this.interactive) {\n        this._initRetinaScaling();\n      }\n\n      if (options.overlayImage) {\n        this.setOverlayImage(options.overlayImage, cb);\n      }\n      if (options.backgroundImage) {\n        this.setBackgroundImage(options.backgroundImage, cb);\n      }\n      if (options.backgroundColor) {\n        this.setBackgroundColor(options.backgroundColor, cb);\n      }\n      if (options.overlayColor) {\n        this.setOverlayColor(options.overlayColor, cb);\n      }\n      this.calcOffset();\n    },\n\n    /**\n     * @private\n     */\n    _isRetinaScaling: function() {\n      return (fabric.devicePixelRatio !== 1 && this.enableRetinaScaling);\n    },\n\n    /**\n     * @private\n     * @return {Number} retinaScaling if applied, otherwise 1;\n     */\n    getRetinaScaling: function() {\n      return this._isRetinaScaling() ? fabric.devicePixelRatio : 1;\n    },\n\n    /**\n     * @private\n     */\n    _initRetinaScaling: function() {\n      if (!this._isRetinaScaling()) {\n        return;\n      }\n      var scaleRatio = fabric.devicePixelRatio;\n      this.__initRetinaScaling(scaleRatio, this.lowerCanvasEl, this.contextContainer);\n      if (this.upperCanvasEl) {\n        this.__initRetinaScaling(scaleRatio, this.upperCanvasEl, this.contextTop);\n      }\n    },\n\n    __initRetinaScaling: function(scaleRatio, canvas, context) {\n      canvas.setAttribute('width', this.width * scaleRatio);\n      canvas.setAttribute('height', this.height * scaleRatio);\n      context.scale(scaleRatio, scaleRatio);\n    },\n\n\n    /**\n     * Calculates canvas element offset relative to the document\n     * This method is also attached as \"resize\" event handler of window\n     * @return {fabric.Canvas} instance\n     * @chainable\n     */\n    calcOffset: function () {\n      this._offset = getElementOffset(this.lowerCanvasEl);\n      return this;\n    },\n\n    /**\n     * Sets {@link fabric.StaticCanvas#overlayImage|overlay image} for this canvas\n     * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set overlay to\n     * @param {Function} callback callback to invoke when image is loaded and set as an overlay\n     * @param {Object} [options] Optional options to set for the {@link fabric.Image|overlay image}.\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     * @see {@link http://jsfiddle.net/fabricjs/MnzHT/|jsFiddle demo}\n     * @example <caption>Normal overlayImage with left/top = 0</caption>\n     * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n     *   // Needed to position overlayImage at 0/0\n     *   originX: 'left',\n     *   originY: 'top'\n     * });\n     * @example <caption>overlayImage with different properties</caption>\n     * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n     *   opacity: 0.5,\n     *   angle: 45,\n     *   left: 400,\n     *   top: 400,\n     *   originX: 'left',\n     *   originY: 'top'\n     * });\n     * @example <caption>Stretched overlayImage #1 - width/height correspond to canvas width/height</caption>\n     * fabric.Image.fromURL('http://fabricjs.com/assets/jail_cell_bars.png', function(img, isError) {\n     *    img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'});\n     *    canvas.setOverlayImage(img, canvas.renderAll.bind(canvas));\n     * });\n     * @example <caption>Stretched overlayImage #2 - width/height correspond to canvas width/height</caption>\n     * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n     *   width: canvas.width,\n     *   height: canvas.height,\n     *   // Needed to position overlayImage at 0/0\n     *   originX: 'left',\n     *   originY: 'top'\n     * });\n     * @example <caption>overlayImage loaded from cross-origin</caption>\n     * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n     *   opacity: 0.5,\n     *   angle: 45,\n     *   left: 400,\n     *   top: 400,\n     *   originX: 'left',\n     *   originY: 'top',\n     *   crossOrigin: 'anonymous'\n     * });\n     */\n    setOverlayImage: function (image, callback, options) {\n      return this.__setBgOverlayImage('overlayImage', image, callback, options);\n    },\n\n    /**\n     * Sets {@link fabric.StaticCanvas#backgroundImage|background image} for this canvas\n     * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set background to\n     * @param {Function} callback Callback to invoke when image is loaded and set as background\n     * @param {Object} [options] Optional options to set for the {@link fabric.Image|background image}.\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     * @see {@link http://jsfiddle.net/djnr8o7a/28/|jsFiddle demo}\n     * @example <caption>Normal backgroundImage with left/top = 0</caption>\n     * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n     *   // Needed to position backgroundImage at 0/0\n     *   originX: 'left',\n     *   originY: 'top'\n     * });\n     * @example <caption>backgroundImage with different properties</caption>\n     * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n     *   opacity: 0.5,\n     *   angle: 45,\n     *   left: 400,\n     *   top: 400,\n     *   originX: 'left',\n     *   originY: 'top'\n     * });\n     * @example <caption>Stretched backgroundImage #1 - width/height correspond to canvas width/height</caption>\n     * fabric.Image.fromURL('http://fabricjs.com/assets/honey_im_subtle.png', function(img, isError) {\n     *    img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'});\n     *    canvas.setBackgroundImage(img, canvas.renderAll.bind(canvas));\n     * });\n     * @example <caption>Stretched backgroundImage #2 - width/height correspond to canvas width/height</caption>\n     * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n     *   width: canvas.width,\n     *   height: canvas.height,\n     *   // Needed to position backgroundImage at 0/0\n     *   originX: 'left',\n     *   originY: 'top'\n     * });\n     * @example <caption>backgroundImage loaded from cross-origin</caption>\n     * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n     *   opacity: 0.5,\n     *   angle: 45,\n     *   left: 400,\n     *   top: 400,\n     *   originX: 'left',\n     *   originY: 'top',\n     *   crossOrigin: 'anonymous'\n     * });\n     */\n    // TODO: fix stretched examples\n    setBackgroundImage: function (image, callback, options) {\n      return this.__setBgOverlayImage('backgroundImage', image, callback, options);\n    },\n\n    /**\n     * Sets {@link fabric.StaticCanvas#overlayColor|foreground color} for this canvas\n     * @param {(String|fabric.Pattern)} overlayColor Color or pattern to set foreground color to\n     * @param {Function} callback Callback to invoke when foreground color is set\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     * @see {@link http://jsfiddle.net/fabricjs/pB55h/|jsFiddle demo}\n     * @example <caption>Normal overlayColor - color value</caption>\n     * canvas.setOverlayColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas));\n     * @example <caption>fabric.Pattern used as overlayColor</caption>\n     * canvas.setOverlayColor({\n     *   source: 'http://fabricjs.com/assets/escheresque_ste.png'\n     * }, canvas.renderAll.bind(canvas));\n     * @example <caption>fabric.Pattern used as overlayColor with repeat and offset</caption>\n     * canvas.setOverlayColor({\n     *   source: 'http://fabricjs.com/assets/escheresque_ste.png',\n     *   repeat: 'repeat',\n     *   offsetX: 200,\n     *   offsetY: 100\n     * }, canvas.renderAll.bind(canvas));\n     */\n    setOverlayColor: function(overlayColor, callback) {\n      return this.__setBgOverlayColor('overlayColor', overlayColor, callback);\n    },\n\n    /**\n     * Sets {@link fabric.StaticCanvas#backgroundColor|background color} for this canvas\n     * @param {(String|fabric.Pattern)} backgroundColor Color or pattern to set background color to\n     * @param {Function} callback Callback to invoke when background color is set\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     * @see {@link http://jsfiddle.net/fabricjs/hXzvk/|jsFiddle demo}\n     * @example <caption>Normal backgroundColor - color value</caption>\n     * canvas.setBackgroundColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas));\n     * @example <caption>fabric.Pattern used as backgroundColor</caption>\n     * canvas.setBackgroundColor({\n     *   source: 'http://fabricjs.com/assets/escheresque_ste.png'\n     * }, canvas.renderAll.bind(canvas));\n     * @example <caption>fabric.Pattern used as backgroundColor with repeat and offset</caption>\n     * canvas.setBackgroundColor({\n     *   source: 'http://fabricjs.com/assets/escheresque_ste.png',\n     *   repeat: 'repeat',\n     *   offsetX: 200,\n     *   offsetY: 100\n     * }, canvas.renderAll.bind(canvas));\n     */\n    setBackgroundColor: function(backgroundColor, callback) {\n      return this.__setBgOverlayColor('backgroundColor', backgroundColor, callback);\n    },\n\n    /**\n     * @private\n     * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundImage|backgroundImage}\n     * or {@link fabric.StaticCanvas#overlayImage|overlayImage})\n     * @param {(fabric.Image|String|null)} image fabric.Image instance, URL of an image or null to set background or overlay to\n     * @param {Function} callback Callback to invoke when image is loaded and set as background or overlay. The first argument is the created image, the second argument is a flag indicating whether an error occurred or not.\n     * @param {Object} [options] Optional options to set for the {@link fabric.Image|image}.\n     */\n    __setBgOverlayImage: function(property, image, callback, options) {\n      if (typeof image === 'string') {\n        fabric.util.loadImage(image, function(img, isError) {\n          if (img) {\n            var instance = new fabric.Image(img, options);\n            this[property] = instance;\n            instance.canvas = this;\n          }\n          callback && callback(img, isError);\n        }, this, options && options.crossOrigin);\n      }\n      else {\n        options && image.setOptions(options);\n        this[property] = image;\n        image && (image.canvas = this);\n        callback && callback(image, false);\n      }\n\n      return this;\n    },\n\n    /**\n     * @private\n     * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundColor|backgroundColor}\n     * or {@link fabric.StaticCanvas#overlayColor|overlayColor})\n     * @param {(Object|String|null)} color Object with pattern information, color value or null\n     * @param {Function} [callback] Callback is invoked when color is set\n     */\n    __setBgOverlayColor: function(property, color, callback) {\n      this[property] = color;\n      this._initGradient(color, property);\n      this._initPattern(color, property, callback);\n      return this;\n    },\n\n    /**\n     * @private\n     */\n    _createCanvasElement: function() {\n      var element = createCanvasElement();\n      if (!element) {\n        throw CANVAS_INIT_ERROR;\n      }\n      if (!element.style) {\n        element.style = { };\n      }\n      if (typeof element.getContext === 'undefined') {\n        throw CANVAS_INIT_ERROR;\n      }\n      return element;\n    },\n\n    /**\n     * @private\n     * @param {Object} [options] Options object\n     */\n    _initOptions: function (options) {\n      var lowerCanvasEl = this.lowerCanvasEl;\n      this._setOptions(options);\n\n      this.width = this.width || parseInt(lowerCanvasEl.width, 10) || 0;\n      this.height = this.height || parseInt(lowerCanvasEl.height, 10) || 0;\n\n      if (!this.lowerCanvasEl.style) {\n        return;\n      }\n\n      lowerCanvasEl.width = this.width;\n      lowerCanvasEl.height = this.height;\n\n      lowerCanvasEl.style.width = this.width + 'px';\n      lowerCanvasEl.style.height = this.height + 'px';\n\n      this.viewportTransform = this.viewportTransform.slice();\n    },\n\n    /**\n     * Creates a bottom canvas\n     * @private\n     * @param {HTMLElement} [canvasEl]\n     */\n    _createLowerCanvas: function (canvasEl) {\n      // canvasEl === 'HTMLCanvasElement' does not work on jsdom/node\n      if (canvasEl && canvasEl.getContext) {\n        this.lowerCanvasEl = canvasEl;\n      }\n      else {\n        this.lowerCanvasEl = fabric.util.getById(canvasEl) || this._createCanvasElement();\n      }\n\n      fabric.util.addClass(this.lowerCanvasEl, 'lower-canvas');\n      this._originalCanvasStyle = this.lowerCanvasEl.style;\n      if (this.interactive) {\n        this._applyCanvasStyle(this.lowerCanvasEl);\n      }\n\n      this.contextContainer = this.lowerCanvasEl.getContext('2d');\n    },\n\n    /**\n     * Returns canvas width (in px)\n     * @return {Number}\n     */\n    getWidth: function () {\n      return this.width;\n    },\n\n    /**\n     * Returns canvas height (in px)\n     * @return {Number}\n     */\n    getHeight: function () {\n      return this.height;\n    },\n\n    /**\n     * Sets width of this canvas instance\n     * @param {Number|String} value                         Value to set width to\n     * @param {Object}        [options]                     Options object\n     * @param {Boolean}       [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n     * @param {Boolean}       [options.cssOnly=false]       Set the given dimensions only as css dimensions\n     * @return {fabric.Canvas} instance\n     * @chainable true\n     */\n    setWidth: function (value, options) {\n      return this.setDimensions({ width: value }, options);\n    },\n\n    /**\n     * Sets height of this canvas instance\n     * @param {Number|String} value                         Value to set height to\n     * @param {Object}        [options]                     Options object\n     * @param {Boolean}       [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n     * @param {Boolean}       [options.cssOnly=false]       Set the given dimensions only as css dimensions\n     * @return {fabric.Canvas} instance\n     * @chainable true\n     */\n    setHeight: function (value, options) {\n      return this.setDimensions({ height: value }, options);\n    },\n\n    /**\n     * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em)\n     * @param {Object}        dimensions                    Object with width/height properties\n     * @param {Number|String} [dimensions.width]            Width of canvas element\n     * @param {Number|String} [dimensions.height]           Height of canvas element\n     * @param {Object}        [options]                     Options object\n     * @param {Boolean}       [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n     * @param {Boolean}       [options.cssOnly=false]       Set the given dimensions only as css dimensions\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    setDimensions: function (dimensions, options) {\n      var cssValue;\n\n      options = options || {};\n\n      for (var prop in dimensions) {\n        cssValue = dimensions[prop];\n\n        if (!options.cssOnly) {\n          this._setBackstoreDimension(prop, dimensions[prop]);\n          cssValue += 'px';\n          this.hasLostContext = true;\n        }\n\n        if (!options.backstoreOnly) {\n          this._setCssDimension(prop, cssValue);\n        }\n      }\n      if (this._isCurrentlyDrawing) {\n        this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles();\n      }\n      this._initRetinaScaling();\n      this.calcOffset();\n\n      if (!options.cssOnly) {\n        this.requestRenderAll();\n      }\n\n      return this;\n    },\n\n    /**\n     * Helper for setting width/height\n     * @private\n     * @param {String} prop property (width|height)\n     * @param {Number} value value to set property to\n     * @return {fabric.Canvas} instance\n     * @chainable true\n     */\n    _setBackstoreDimension: function (prop, value) {\n      this.lowerCanvasEl[prop] = value;\n\n      if (this.upperCanvasEl) {\n        this.upperCanvasEl[prop] = value;\n      }\n\n      if (this.cacheCanvasEl) {\n        this.cacheCanvasEl[prop] = value;\n      }\n\n      this[prop] = value;\n\n      return this;\n    },\n\n    /**\n     * Helper for setting css width/height\n     * @private\n     * @param {String} prop property (width|height)\n     * @param {String} value value to set property to\n     * @return {fabric.Canvas} instance\n     * @chainable true\n     */\n    _setCssDimension: function (prop, value) {\n      this.lowerCanvasEl.style[prop] = value;\n\n      if (this.upperCanvasEl) {\n        this.upperCanvasEl.style[prop] = value;\n      }\n\n      if (this.wrapperEl) {\n        this.wrapperEl.style[prop] = value;\n      }\n\n      return this;\n    },\n\n    /**\n     * Returns canvas zoom level\n     * @return {Number}\n     */\n    getZoom: function () {\n      return this.viewportTransform[0];\n    },\n\n    /**\n     * Sets viewport transform of this canvas instance\n     * @param {Array} vpt the transform in the form of context.transform\n     * @return {fabric.Canvas} instance\n     * @chainable true\n     */\n    setViewportTransform: function (vpt) {\n      var activeObject = this._activeObject,\n          backgroundObject = this.backgroundImage,\n          overlayObject = this.overlayImage,\n          object, i, len;\n      this.viewportTransform = vpt;\n      for (i = 0, len = this._objects.length; i < len; i++) {\n        object = this._objects[i];\n        object.group || object.setCoords(true);\n      }\n      if (activeObject) {\n        activeObject.setCoords();\n      }\n      if (backgroundObject) {\n        backgroundObject.setCoords(true);\n      }\n      if (overlayObject) {\n        overlayObject.setCoords(true);\n      }\n      this.calcViewportBoundaries();\n      this.renderOnAddRemove && this.requestRenderAll();\n      return this;\n    },\n\n    /**\n     * Sets zoom level of this canvas instance, the zoom centered around point\n     * meaning that following zoom to point with the same point will have the visual\n     * effect of the zoom originating from that point. The point won't move.\n     * It has nothing to do with canvas center or visual center of the viewport.\n     * @param {fabric.Point} point to zoom with respect to\n     * @param {Number} value to set zoom to, less than 1 zooms out\n     * @return {fabric.Canvas} instance\n     * @chainable true\n     */\n    zoomToPoint: function (point, value) {\n      // TODO: just change the scale, preserve other transformations\n      var before = point, vpt = this.viewportTransform.slice(0);\n      point = transformPoint(point, invertTransform(this.viewportTransform));\n      vpt[0] = value;\n      vpt[3] = value;\n      var after = transformPoint(point, vpt);\n      vpt[4] += before.x - after.x;\n      vpt[5] += before.y - after.y;\n      return this.setViewportTransform(vpt);\n    },\n\n    /**\n     * Sets zoom level of this canvas instance\n     * @param {Number} value to set zoom to, less than 1 zooms out\n     * @return {fabric.Canvas} instance\n     * @chainable true\n     */\n    setZoom: function (value) {\n      this.zoomToPoint(new fabric.Point(0, 0), value);\n      return this;\n    },\n\n    /**\n     * Pan viewport so as to place point at top left corner of canvas\n     * @param {fabric.Point} point to move to\n     * @return {fabric.Canvas} instance\n     * @chainable true\n     */\n    absolutePan: function (point) {\n      var vpt = this.viewportTransform.slice(0);\n      vpt[4] = -point.x;\n      vpt[5] = -point.y;\n      return this.setViewportTransform(vpt);\n    },\n\n    /**\n     * Pans viewpoint relatively\n     * @param {fabric.Point} point (position vector) to move by\n     * @return {fabric.Canvas} instance\n     * @chainable true\n     */\n    relativePan: function (point) {\n      return this.absolutePan(new fabric.Point(\n        -point.x - this.viewportTransform[4],\n        -point.y - this.viewportTransform[5]\n      ));\n    },\n\n    /**\n     * Returns &lt;canvas> element corresponding to this instance\n     * @return {HTMLCanvasElement}\n     */\n    getElement: function () {\n      return this.lowerCanvasEl;\n    },\n\n    /**\n     * @private\n     * @param {fabric.Object} obj Object that was added\n     */\n    _onObjectAdded: function(obj) {\n      this.stateful && obj.setupState();\n      obj._set('canvas', this);\n      obj.setCoords();\n      this.fire('object:added', { target: obj });\n      obj.fire('added');\n    },\n\n    /**\n     * @private\n     * @param {fabric.Object} obj Object that was removed\n     */\n    _onObjectRemoved: function(obj) {\n      this.fire('object:removed', { target: obj });\n      obj.fire('removed');\n      delete obj.canvas;\n    },\n\n    /**\n     * Clears specified context of canvas element\n     * @param {CanvasRenderingContext2D} ctx Context to clear\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    clearContext: function(ctx) {\n      ctx.clearRect(0, 0, this.width, this.height);\n      return this;\n    },\n\n    /**\n     * Returns context of canvas where objects are drawn\n     * @return {CanvasRenderingContext2D}\n     */\n    getContext: function () {\n      return this.contextContainer;\n    },\n\n    /**\n     * Clears all contexts (background, main, top) of an instance\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    clear: function () {\n      this.remove.apply(this, this.getObjects());\n      this.backgroundImage = null;\n      this.overlayImage = null;\n      this.backgroundColor = '';\n      this.overlayColor = '';\n      if (this._hasITextHandlers) {\n        this.off('mouse:up', this._mouseUpITextHandler);\n        this._iTextInstances = null;\n        this._hasITextHandlers = false;\n      }\n      this.clearContext(this.contextContainer);\n      this.fire('canvas:cleared');\n      this.renderOnAddRemove && this.requestRenderAll();\n      return this;\n    },\n\n    /**\n     * Renders the canvas\n     * @return {fabric.Canvas} instance\n     * @chainable\n     */\n    renderAll: function () {\n      var canvasToDrawOn = this.contextContainer;\n      this.renderCanvas(canvasToDrawOn, this._objects);\n      return this;\n    },\n\n    /**\n     * Function created to be instance bound at initialization\n     * used in requestAnimationFrame rendering\n     * Let the fabricJS call it. If you call it manually you could have more\n     * animationFrame stacking on to of each other\n     * for an imperative rendering, use canvas.renderAll\n     * @private\n     * @return {fabric.Canvas} instance\n     * @chainable\n     */\n    renderAndReset: function() {\n      this.isRendering = 0;\n      this.renderAll();\n    },\n\n    /**\n     * Append a renderAll request to next animation frame.\n     * unless one is already in progress, in that case nothing is done\n     * a boolean flag will avoid appending more.\n     * @return {fabric.Canvas} instance\n     * @chainable\n     */\n    requestRenderAll: function () {\n      if (!this.isRendering) {\n        this.isRendering = fabric.util.requestAnimFrame(this.renderAndResetBound);\n      }\n      return this;\n    },\n\n    /**\n     * Calculate the position of the 4 corner of canvas with current viewportTransform.\n     * helps to determinate when an object is in the current rendering viewport using\n     * object absolute coordinates ( aCoords )\n     * @return {Object} points.tl\n     * @chainable\n     */\n    calcViewportBoundaries: function() {\n      var points = { }, width = this.width, height = this.height,\n          iVpt = invertTransform(this.viewportTransform);\n      points.tl = transformPoint({ x: 0, y: 0 }, iVpt);\n      points.br = transformPoint({ x: width, y: height }, iVpt);\n      points.tr = new fabric.Point(points.br.x, points.tl.y);\n      points.bl = new fabric.Point(points.tl.x, points.br.y);\n      this.vptCoords = points;\n      return points;\n    },\n\n    cancelRequestedRender: function() {\n      if (this.isRendering) {\n        fabric.util.cancelAnimFrame(this.isRendering);\n        this.isRendering = 0;\n      }\n    },\n\n    /**\n     * Renders background, objects, overlay and controls.\n     * @param {CanvasRenderingContext2D} ctx\n     * @param {Array} objects to render\n     * @return {fabric.Canvas} instance\n     * @chainable\n     */\n    renderCanvas: function(ctx, objects) {\n      var v = this.viewportTransform, path = this.clipPath;\n      this.cancelRequestedRender();\n      this.calcViewportBoundaries();\n      this.clearContext(ctx);\n      fabric.util.setImageSmoothing(ctx, this.imageSmoothingEnabled);\n      this.fire('before:render', { ctx: ctx, });\n      this._renderBackground(ctx);\n\n      ctx.save();\n      //apply viewport transform once for all rendering process\n      ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n      this._renderObjects(ctx, objects);\n      ctx.restore();\n      if (!this.controlsAboveOverlay && this.interactive) {\n        this.drawControls(ctx);\n      }\n      if (path) {\n        path.canvas = this;\n        // needed to setup a couple of variables\n        path.shouldCache();\n        path._transformDone = true;\n        path.renderCache({ forClipping: true });\n        this.drawClipPathOnCanvas(ctx);\n      }\n      this._renderOverlay(ctx);\n      if (this.controlsAboveOverlay && this.interactive) {\n        this.drawControls(ctx);\n      }\n      this.fire('after:render', { ctx: ctx, });\n    },\n\n    /**\n     * Paint the cached clipPath on the lowerCanvasEl\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    drawClipPathOnCanvas: function(ctx) {\n      var v = this.viewportTransform, path = this.clipPath;\n      ctx.save();\n      ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n      // DEBUG: uncomment this line, comment the following\n      // ctx.globalAlpha = 0.4;\n      ctx.globalCompositeOperation = 'destination-in';\n      path.transform(ctx);\n      ctx.scale(1 / path.zoomX, 1 / path.zoomY);\n      ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY);\n      ctx.restore();\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {Array} objects to render\n     */\n    _renderObjects: function(ctx, objects) {\n      var i, len;\n      for (i = 0, len = objects.length; i < len; ++i) {\n        objects[i] && objects[i].render(ctx);\n      }\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {string} property 'background' or 'overlay'\n     */\n    _renderBackgroundOrOverlay: function(ctx, property) {\n      var fill = this[property + 'Color'], object = this[property + 'Image'],\n          v = this.viewportTransform, needsVpt = this[property + 'Vpt'];\n      if (!fill && !object) {\n        return;\n      }\n      if (fill) {\n        ctx.save();\n        ctx.beginPath();\n        ctx.moveTo(0, 0);\n        ctx.lineTo(this.width, 0);\n        ctx.lineTo(this.width, this.height);\n        ctx.lineTo(0, this.height);\n        ctx.closePath();\n        ctx.fillStyle = fill.toLive\n          ? fill.toLive(ctx, this)\n          : fill;\n        if (needsVpt) {\n          ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n        }\n        ctx.transform(1, 0, 0, 1, fill.offsetX || 0, fill.offsetY || 0);\n        var m = fill.gradientTransform || fill.patternTransform;\n        m && ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n        ctx.fill();\n        ctx.restore();\n      }\n      if (object) {\n        ctx.save();\n        if (needsVpt) {\n          ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n        }\n        object.render(ctx);\n        ctx.restore();\n      }\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderBackground: function(ctx) {\n      this._renderBackgroundOrOverlay(ctx, 'background');\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderOverlay: function(ctx) {\n      this._renderBackgroundOrOverlay(ctx, 'overlay');\n    },\n\n    /**\n     * Returns coordinates of a center of canvas.\n     * Returned value is an object with top and left properties\n     * @return {Object} object with \"top\" and \"left\" number values\n     */\n    getCenter: function () {\n      return {\n        top: this.height / 2,\n        left: this.width / 2\n      };\n    },\n\n    /**\n     * Centers object horizontally in the canvas\n     * @param {fabric.Object} object Object to center horizontally\n     * @return {fabric.Canvas} thisArg\n     */\n    centerObjectH: function (object) {\n      return this._centerObject(object, new fabric.Point(this.getCenter().left, object.getCenterPoint().y));\n    },\n\n    /**\n     * Centers object vertically in the canvas\n     * @param {fabric.Object} object Object to center vertically\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    centerObjectV: function (object) {\n      return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, this.getCenter().top));\n    },\n\n    /**\n     * Centers object vertically and horizontally in the canvas\n     * @param {fabric.Object} object Object to center vertically and horizontally\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    centerObject: function(object) {\n      var center = this.getCenter();\n\n      return this._centerObject(object, new fabric.Point(center.left, center.top));\n    },\n\n    /**\n     * Centers object vertically and horizontally in the viewport\n     * @param {fabric.Object} object Object to center vertically and horizontally\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    viewportCenterObject: function(object) {\n      var vpCenter = this.getVpCenter();\n\n      return this._centerObject(object, vpCenter);\n    },\n\n    /**\n     * Centers object horizontally in the viewport, object.top is unchanged\n     * @param {fabric.Object} object Object to center vertically and horizontally\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    viewportCenterObjectH: function(object) {\n      var vpCenter = this.getVpCenter();\n      this._centerObject(object, new fabric.Point(vpCenter.x, object.getCenterPoint().y));\n      return this;\n    },\n\n    /**\n     * Centers object Vertically in the viewport, object.top is unchanged\n     * @param {fabric.Object} object Object to center vertically and horizontally\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    viewportCenterObjectV: function(object) {\n      var vpCenter = this.getVpCenter();\n\n      return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, vpCenter.y));\n    },\n\n    /**\n     * Calculate the point in canvas that correspond to the center of actual viewport.\n     * @return {fabric.Point} vpCenter, viewport center\n     * @chainable\n     */\n    getVpCenter: function() {\n      var center = this.getCenter(),\n          iVpt = invertTransform(this.viewportTransform);\n      return transformPoint({ x: center.left, y: center.top }, iVpt);\n    },\n\n    /**\n     * @private\n     * @param {fabric.Object} object Object to center\n     * @param {fabric.Point} center Center point\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    _centerObject: function(object, center) {\n      object.setPositionByOrigin(center, 'center', 'center');\n      object.setCoords();\n      this.renderOnAddRemove && this.requestRenderAll();\n      return this;\n    },\n\n    /**\n     * Returns dataless JSON representation of canvas\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {String} json string\n     */\n    toDatalessJSON: function (propertiesToInclude) {\n      return this.toDatalessObject(propertiesToInclude);\n    },\n\n    /**\n     * Returns object representation of canvas\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toObject: function (propertiesToInclude) {\n      return this._toObjectMethod('toObject', propertiesToInclude);\n    },\n\n    /**\n     * Returns dataless object representation of canvas\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toDatalessObject: function (propertiesToInclude) {\n      return this._toObjectMethod('toDatalessObject', propertiesToInclude);\n    },\n\n    /**\n     * @private\n     */\n    _toObjectMethod: function (methodName, propertiesToInclude) {\n\n      var clipPath = this.clipPath, data = {\n        version: fabric.version,\n        objects: this._toObjects(methodName, propertiesToInclude),\n      };\n      if (clipPath && !clipPath.excludeFromExport) {\n        data.clipPath = this._toObject(this.clipPath, methodName, propertiesToInclude);\n      }\n      extend(data, this.__serializeBgOverlay(methodName, propertiesToInclude));\n\n      fabric.util.populateWithProperties(this, data, propertiesToInclude);\n\n      return data;\n    },\n\n    /**\n     * @private\n     */\n    _toObjects: function(methodName, propertiesToInclude) {\n      return this._objects.filter(function(object) {\n        return !object.excludeFromExport;\n      }).map(function(instance) {\n        return this._toObject(instance, methodName, propertiesToInclude);\n      }, this);\n    },\n\n    /**\n     * @private\n     */\n    _toObject: function(instance, methodName, propertiesToInclude) {\n      var originalValue;\n\n      if (!this.includeDefaultValues) {\n        originalValue = instance.includeDefaultValues;\n        instance.includeDefaultValues = false;\n      }\n\n      var object = instance[methodName](propertiesToInclude);\n      if (!this.includeDefaultValues) {\n        instance.includeDefaultValues = originalValue;\n      }\n      return object;\n    },\n\n    /**\n     * @private\n     */\n    __serializeBgOverlay: function(methodName, propertiesToInclude) {\n      var data = {}, bgImage = this.backgroundImage, overlayImage = this.overlayImage,\n          bgColor = this.backgroundColor, overlayColor = this.overlayColor;\n\n      if (bgColor && bgColor.toObject) {\n        if (!bgColor.excludeFromExport) {\n          data.background = bgColor.toObject(propertiesToInclude);\n        }\n      }\n      else if (bgColor) {\n        data.background = bgColor;\n      }\n\n      if (overlayColor && overlayColor.toObject) {\n        if (!overlayColor.excludeFromExport) {\n          data.overlay = overlayColor.toObject(propertiesToInclude);\n        }\n      }\n      else if (overlayColor) {\n        data.overlay = overlayColor;\n      }\n\n      if (bgImage && !bgImage.excludeFromExport) {\n        data.backgroundImage = this._toObject(bgImage, methodName, propertiesToInclude);\n      }\n      if (overlayImage && !overlayImage.excludeFromExport) {\n        data.overlayImage = this._toObject(overlayImage, methodName, propertiesToInclude);\n      }\n\n      return data;\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true,\n     * a zoomed canvas will then produce zoomed SVG output.\n     * @type Boolean\n     * @default\n     */\n    svgViewportTransformation: true,\n\n    /**\n     * Returns SVG representation of canvas\n     * @function\n     * @param {Object} [options] Options object for SVG output\n     * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included\n     * @param {Object} [options.viewBox] SVG viewbox object\n     * @param {Number} [options.viewBox.x] x-coordinate of viewbox\n     * @param {Number} [options.viewBox.y] y-coordinate of viewbox\n     * @param {Number} [options.viewBox.width] Width of viewbox\n     * @param {Number} [options.viewBox.height] Height of viewbox\n     * @param {String} [options.encoding=UTF-8] Encoding of SVG output\n     * @param {String} [options.width] desired width of svg with or without units\n     * @param {String} [options.height] desired height of svg with or without units\n     * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation.\n     * @return {String} SVG string\n     * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n     * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo}\n     * @example <caption>Normal SVG output</caption>\n     * var svg = canvas.toSVG();\n     * @example <caption>SVG output without preamble (without &lt;?xml ../>)</caption>\n     * var svg = canvas.toSVG({suppressPreamble: true});\n     * @example <caption>SVG output with viewBox attribute</caption>\n     * var svg = canvas.toSVG({\n     *   viewBox: {\n     *     x: 100,\n     *     y: 100,\n     *     width: 200,\n     *     height: 300\n     *   }\n     * });\n     * @example <caption>SVG output with different encoding (default: UTF-8)</caption>\n     * var svg = canvas.toSVG({encoding: 'ISO-8859-1'});\n     * @example <caption>Modify SVG output with reviver function</caption>\n     * var svg = canvas.toSVG(null, function(svg) {\n     *   return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', '');\n     * });\n     */\n    toSVG: function(options, reviver) {\n      options || (options = { });\n      options.reviver = reviver;\n      var markup = [];\n\n      this._setSVGPreamble(markup, options);\n      this._setSVGHeader(markup, options);\n      if (this.clipPath) {\n        markup.push('<g clip-path=\"url(#' + this.clipPath.clipPathId + ')\" >\\n');\n      }\n      this._setSVGBgOverlayColor(markup, 'background');\n      this._setSVGBgOverlayImage(markup, 'backgroundImage', reviver);\n      this._setSVGObjects(markup, reviver);\n      if (this.clipPath) {\n        markup.push('</g>\\n');\n      }\n      this._setSVGBgOverlayColor(markup, 'overlay');\n      this._setSVGBgOverlayImage(markup, 'overlayImage', reviver);\n\n      markup.push('</svg>');\n\n      return markup.join('');\n    },\n\n    /**\n     * @private\n     */\n    _setSVGPreamble: function(markup, options) {\n      if (options.suppressPreamble) {\n        return;\n      }\n      markup.push(\n        '<?xml version=\"1.0\" encoding=\"', (options.encoding || 'UTF-8'), '\" standalone=\"no\" ?>\\n',\n        '<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" ',\n        '\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\\n'\n      );\n    },\n\n    /**\n     * @private\n     */\n    _setSVGHeader: function(markup, options) {\n      var width = options.width || this.width,\n          height = options.height || this.height,\n          vpt, viewBox = 'viewBox=\"0 0 ' + this.width + ' ' + this.height + '\" ',\n          NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n      if (options.viewBox) {\n        viewBox = 'viewBox=\"' +\n                options.viewBox.x + ' ' +\n                options.viewBox.y + ' ' +\n                options.viewBox.width + ' ' +\n                options.viewBox.height + '\" ';\n      }\n      else {\n        if (this.svgViewportTransformation) {\n          vpt = this.viewportTransform;\n          viewBox = 'viewBox=\"' +\n                  toFixed(-vpt[4] / vpt[0], NUM_FRACTION_DIGITS) + ' ' +\n                  toFixed(-vpt[5] / vpt[3], NUM_FRACTION_DIGITS) + ' ' +\n                  toFixed(this.width / vpt[0], NUM_FRACTION_DIGITS) + ' ' +\n                  toFixed(this.height / vpt[3], NUM_FRACTION_DIGITS) + '\" ';\n        }\n      }\n\n      markup.push(\n        '<svg ',\n        'xmlns=\"http://www.w3.org/2000/svg\" ',\n        'xmlns:xlink=\"http://www.w3.org/1999/xlink\" ',\n        'version=\"1.1\" ',\n        'width=\"', width, '\" ',\n        'height=\"', height, '\" ',\n        viewBox,\n        'xml:space=\"preserve\">\\n',\n        '<desc>Created with Fabric.js ', fabric.version, '</desc>\\n',\n        '<defs>\\n',\n        this.createSVGFontFacesMarkup(),\n        this.createSVGRefElementsMarkup(),\n        this.createSVGClipPathMarkup(options),\n        '</defs>\\n'\n      );\n    },\n\n    createSVGClipPathMarkup: function(options) {\n      var clipPath = this.clipPath;\n      if (clipPath) {\n        clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++;\n        return  '<clipPath id=\"' + clipPath.clipPathId + '\" >\\n' +\n          this.clipPath.toClipPathSVG(options.reviver) +\n          '</clipPath>\\n';\n      }\n      return '';\n    },\n\n    /**\n     * Creates markup containing SVG referenced elements like patterns, gradients etc.\n     * @return {String}\n     */\n    createSVGRefElementsMarkup: function() {\n      var _this = this,\n          markup = ['background', 'overlay'].map(function(prop) {\n            var fill = _this[prop + 'Color'];\n            if (fill && fill.toLive) {\n              var shouldTransform = _this[prop + 'Vpt'], vpt = _this.viewportTransform,\n                  object = {\n                    width: _this.width / (shouldTransform ? vpt[0] : 1),\n                    height: _this.height / (shouldTransform ? vpt[3] : 1)\n                  };\n              return fill.toSVG(\n                object,\n                { additionalTransform: shouldTransform ? fabric.util.matrixToSVG(vpt) : '' }\n              );\n            }\n          });\n      return markup.join('');\n    },\n\n    /**\n     * Creates markup containing SVG font faces,\n     * font URLs for font faces must be collected by developers\n     * and are not extracted from the DOM by fabricjs\n     * @param {Array} objects Array of fabric objects\n     * @return {String}\n     */\n    createSVGFontFacesMarkup: function() {\n      var markup = '', fontList = { }, obj, fontFamily,\n          style, row, rowIndex, _char, charIndex, i, len,\n          fontPaths = fabric.fontPaths, objects = [];\n\n      this._objects.forEach(function add(object) {\n        objects.push(object);\n        if (object._objects) {\n          object._objects.forEach(add);\n        }\n      });\n\n      for (i = 0, len = objects.length; i < len; i++) {\n        obj = objects[i];\n        fontFamily = obj.fontFamily;\n        if (obj.type.indexOf('text') === -1 || fontList[fontFamily] || !fontPaths[fontFamily]) {\n          continue;\n        }\n        fontList[fontFamily] = true;\n        if (!obj.styles) {\n          continue;\n        }\n        style = obj.styles;\n        for (rowIndex in style) {\n          row = style[rowIndex];\n          for (charIndex in row) {\n            _char = row[charIndex];\n            fontFamily = _char.fontFamily;\n            if (!fontList[fontFamily] && fontPaths[fontFamily]) {\n              fontList[fontFamily] = true;\n            }\n          }\n        }\n      }\n\n      for (var j in fontList) {\n        markup += [\n          '\\t\\t@font-face {\\n',\n          '\\t\\t\\tfont-family: \\'', j, '\\';\\n',\n          '\\t\\t\\tsrc: url(\\'', fontPaths[j], '\\');\\n',\n          '\\t\\t}\\n'\n        ].join('');\n      }\n\n      if (markup) {\n        markup = [\n          '\\t<style type=\"text/css\">',\n          '<![CDATA[\\n',\n          markup,\n          ']]>',\n          '</style>\\n'\n        ].join('');\n      }\n\n      return markup;\n    },\n\n    /**\n     * @private\n     */\n    _setSVGObjects: function(markup, reviver) {\n      var instance, i, len, objects = this._objects;\n      for (i = 0, len = objects.length; i < len; i++) {\n        instance = objects[i];\n        if (instance.excludeFromExport) {\n          continue;\n        }\n        this._setSVGObject(markup, instance, reviver);\n      }\n    },\n\n    /**\n     * @private\n     */\n    _setSVGObject: function(markup, instance, reviver) {\n      markup.push(instance.toSVG(reviver));\n    },\n\n    /**\n     * @private\n     */\n    _setSVGBgOverlayImage: function(markup, property, reviver) {\n      if (this[property] && !this[property].excludeFromExport && this[property].toSVG) {\n        markup.push(this[property].toSVG(reviver));\n      }\n    },\n\n    /**\n     * @private\n     */\n    _setSVGBgOverlayColor: function(markup, property) {\n      var filler = this[property + 'Color'], vpt = this.viewportTransform, finalWidth = this.width,\n          finalHeight = this.height;\n      if (!filler) {\n        return;\n      }\n      if (filler.toLive) {\n        var repeat = filler.repeat, iVpt = fabric.util.invertTransform(vpt), shouldInvert = this[property + 'Vpt'],\n            additionalTransform = shouldInvert ? fabric.util.matrixToSVG(iVpt) : '';\n        markup.push(\n          '<rect transform=\"' + additionalTransform + ' translate(', finalWidth / 2, ',', finalHeight / 2, ')\"',\n          ' x=\"', filler.offsetX - finalWidth / 2,\n          '\" y=\"', filler.offsetY - finalHeight / 2, '\" ',\n          'width=\"',\n          (repeat === 'repeat-y' || repeat === 'no-repeat'\n            ? filler.source.width\n            : finalWidth ),\n          '\" height=\"',\n          (repeat === 'repeat-x' || repeat === 'no-repeat'\n            ? filler.source.height\n            : finalHeight),\n          '\" fill=\"url(#SVGID_' + filler.id + ')\"',\n          '></rect>\\n'\n        );\n      }\n      else {\n        markup.push(\n          '<rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" ',\n          'fill=\"', filler, '\"',\n          '></rect>\\n'\n        );\n      }\n    },\n    /* _TO_SVG_END_ */\n\n    /**\n     * Moves an object or the objects of a multiple selection\n     * to the bottom of the stack of drawn objects\n     * @param {fabric.Object} object Object to send to back\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    sendToBack: function (object) {\n      if (!object) {\n        return this;\n      }\n      var activeSelection = this._activeObject,\n          i, obj, objs;\n      if (object === activeSelection && object.type === 'activeSelection') {\n        objs = activeSelection._objects;\n        for (i = objs.length; i--;) {\n          obj = objs[i];\n          removeFromArray(this._objects, obj);\n          this._objects.unshift(obj);\n        }\n      }\n      else {\n        removeFromArray(this._objects, object);\n        this._objects.unshift(object);\n      }\n      this.renderOnAddRemove && this.requestRenderAll();\n      return this;\n    },\n\n    /**\n     * Moves an object or the objects of a multiple selection\n     * to the top of the stack of drawn objects\n     * @param {fabric.Object} object Object to send\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    bringToFront: function (object) {\n      if (!object) {\n        return this;\n      }\n      var activeSelection = this._activeObject,\n          i, obj, objs;\n      if (object === activeSelection && object.type === 'activeSelection') {\n        objs = activeSelection._objects;\n        for (i = 0; i < objs.length; i++) {\n          obj = objs[i];\n          removeFromArray(this._objects, obj);\n          this._objects.push(obj);\n        }\n      }\n      else {\n        removeFromArray(this._objects, object);\n        this._objects.push(object);\n      }\n      this.renderOnAddRemove && this.requestRenderAll();\n      return this;\n    },\n\n    /**\n     * Moves an object or a selection down in stack of drawn objects\n     * An optional parameter, intersecting allows to move the object in behind\n     * the first intersecting object. Where intersection is calculated with\n     * bounding box. If no intersection is found, there will not be change in the\n     * stack.\n     * @param {fabric.Object} object Object to send\n     * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    sendBackwards: function (object, intersecting) {\n      if (!object) {\n        return this;\n      }\n      var activeSelection = this._activeObject,\n          i, obj, idx, newIdx, objs, objsMoved = 0;\n\n      if (object === activeSelection && object.type === 'activeSelection') {\n        objs = activeSelection._objects;\n        for (i = 0; i < objs.length; i++) {\n          obj = objs[i];\n          idx = this._objects.indexOf(obj);\n          if (idx > 0 + objsMoved) {\n            newIdx = idx - 1;\n            removeFromArray(this._objects, obj);\n            this._objects.splice(newIdx, 0, obj);\n          }\n          objsMoved++;\n        }\n      }\n      else {\n        idx = this._objects.indexOf(object);\n        if (idx !== 0) {\n          // if object is not on the bottom of stack\n          newIdx = this._findNewLowerIndex(object, idx, intersecting);\n          removeFromArray(this._objects, object);\n          this._objects.splice(newIdx, 0, object);\n        }\n      }\n      this.renderOnAddRemove && this.requestRenderAll();\n      return this;\n    },\n\n    /**\n     * @private\n     */\n    _findNewLowerIndex: function(object, idx, intersecting) {\n      var newIdx, i;\n\n      if (intersecting) {\n        newIdx = idx;\n\n        // traverse down the stack looking for the nearest intersecting object\n        for (i = idx - 1; i >= 0; --i) {\n\n          var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n                               object.isContainedWithinObject(this._objects[i]) ||\n                               this._objects[i].isContainedWithinObject(object);\n\n          if (isIntersecting) {\n            newIdx = i;\n            break;\n          }\n        }\n      }\n      else {\n        newIdx = idx - 1;\n      }\n\n      return newIdx;\n    },\n\n    /**\n     * Moves an object or a selection up in stack of drawn objects\n     * An optional parameter, intersecting allows to move the object in front\n     * of the first intersecting object. Where intersection is calculated with\n     * bounding box. If no intersection is found, there will not be change in the\n     * stack.\n     * @param {fabric.Object} object Object to send\n     * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    bringForward: function (object, intersecting) {\n      if (!object) {\n        return this;\n      }\n      var activeSelection = this._activeObject,\n          i, obj, idx, newIdx, objs, objsMoved = 0;\n\n      if (object === activeSelection && object.type === 'activeSelection') {\n        objs = activeSelection._objects;\n        for (i = objs.length; i--;) {\n          obj = objs[i];\n          idx = this._objects.indexOf(obj);\n          if (idx < this._objects.length - 1 - objsMoved) {\n            newIdx = idx + 1;\n            removeFromArray(this._objects, obj);\n            this._objects.splice(newIdx, 0, obj);\n          }\n          objsMoved++;\n        }\n      }\n      else {\n        idx = this._objects.indexOf(object);\n        if (idx !== this._objects.length - 1) {\n          // if object is not on top of stack (last item in an array)\n          newIdx = this._findNewUpperIndex(object, idx, intersecting);\n          removeFromArray(this._objects, object);\n          this._objects.splice(newIdx, 0, object);\n        }\n      }\n      this.renderOnAddRemove && this.requestRenderAll();\n      return this;\n    },\n\n    /**\n     * @private\n     */\n    _findNewUpperIndex: function(object, idx, intersecting) {\n      var newIdx, i, len;\n\n      if (intersecting) {\n        newIdx = idx;\n\n        // traverse up the stack looking for the nearest intersecting object\n        for (i = idx + 1, len = this._objects.length; i < len; ++i) {\n\n          var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n                               object.isContainedWithinObject(this._objects[i]) ||\n                               this._objects[i].isContainedWithinObject(object);\n\n          if (isIntersecting) {\n            newIdx = i;\n            break;\n          }\n        }\n      }\n      else {\n        newIdx = idx + 1;\n      }\n\n      return newIdx;\n    },\n\n    /**\n     * Moves an object to specified level in stack of drawn objects\n     * @param {fabric.Object} object Object to send\n     * @param {Number} index Position to move to\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    moveTo: function (object, index) {\n      removeFromArray(this._objects, object);\n      this._objects.splice(index, 0, object);\n      return this.renderOnAddRemove && this.requestRenderAll();\n    },\n\n    /**\n     * Clears a canvas element and dispose objects\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    dispose: function () {\n      // cancel eventually ongoing renders\n      if (this.isRendering) {\n        fabric.util.cancelAnimFrame(this.isRendering);\n        this.isRendering = 0;\n      }\n      this.forEachObject(function(object) {\n        object.dispose && object.dispose();\n      });\n      this._objects = [];\n      if (this.backgroundImage && this.backgroundImage.dispose) {\n        this.backgroundImage.dispose();\n      }\n      this.backgroundImage = null;\n      if (this.overlayImage && this.overlayImage.dispose) {\n        this.overlayImage.dispose();\n      }\n      this.overlayImage = null;\n      this._iTextInstances = null;\n      this.contextContainer = null;\n      // restore canvas style\n      this.lowerCanvasEl.classList.remove('lower-canvas');\n      this.lowerCanvasEl.style = this._originalCanvasStyle;\n      delete this._originalCanvasStyle;\n      // restore canvas size to original size in case retina scaling was applied\n      this.lowerCanvasEl.setAttribute('width', this.width);\n      this.lowerCanvasEl.setAttribute('height', this.height);\n      fabric.util.cleanUpJsdomNode(this.lowerCanvasEl);\n      this.lowerCanvasEl = undefined;\n      return this;\n    },\n\n    /**\n     * Returns a string representation of an instance\n     * @return {String} string representation of an instance\n     */\n    toString: function () {\n      return '#<fabric.Canvas (' + this.complexity() + '): ' +\n               '{ objects: ' + this._objects.length + ' }>';\n    }\n  });\n\n  extend(fabric.StaticCanvas.prototype, fabric.Observable);\n  extend(fabric.StaticCanvas.prototype, fabric.Collection);\n  extend(fabric.StaticCanvas.prototype, fabric.DataURLExporter);\n\n  extend(fabric.StaticCanvas, /** @lends fabric.StaticCanvas */ {\n\n    /**\n     * @static\n     * @type String\n     * @default\n     */\n    EMPTY_JSON: '{\"objects\": [], \"background\": \"white\"}',\n\n    /**\n     * Provides a way to check support of some of the canvas methods\n     * (either those of HTMLCanvasElement itself, or rendering context)\n     *\n     * @param {String} methodName Method to check support for;\n     *                            Could be one of \"setLineDash\"\n     * @return {Boolean | null} `true` if method is supported (or at least exists),\n     *                          `null` if canvas element or context can not be initialized\n     */\n    supports: function (methodName) {\n      var el = createCanvasElement();\n\n      if (!el || !el.getContext) {\n        return null;\n      }\n\n      var ctx = el.getContext('2d');\n      if (!ctx) {\n        return null;\n      }\n\n      switch (methodName) {\n\n        case 'setLineDash':\n          return typeof ctx.setLineDash !== 'undefined';\n\n        default:\n          return null;\n      }\n    }\n  });\n\n  /**\n   * Returns Object representation of canvas\n   * this alias is provided because if you call JSON.stringify on an instance,\n   * the toJSON object will be invoked if it exists.\n   * Having a toJSON method means you can do JSON.stringify(myCanvas)\n   * @function\n   * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n   * @return {Object} JSON compatible object\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n   * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo}\n   * @example <caption>JSON without additional properties</caption>\n   * var json = canvas.toJSON();\n   * @example <caption>JSON with additional properties included</caption>\n   * var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY']);\n   * @example <caption>JSON without default values</caption>\n   * canvas.includeDefaultValues = false;\n   * var json = canvas.toJSON();\n   */\n  fabric.StaticCanvas.prototype.toJSON = fabric.StaticCanvas.prototype.toObject;\n\n  if (fabric.isLikelyNode) {\n    fabric.StaticCanvas.prototype.createPNGStream = function() {\n      var impl = getNodeCanvas(this.lowerCanvasEl);\n      return impl && impl.createPNGStream();\n    };\n    fabric.StaticCanvas.prototype.createJPEGStream = function(opts) {\n      var impl = getNodeCanvas(this.lowerCanvasEl);\n      return impl && impl.createJPEGStream(opts);\n    };\n  }\n})();\n\n\n/**\n * BaseBrush class\n * @class fabric.BaseBrush\n * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo}\n */\nfabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype */ {\n\n  /**\n   * Color of a brush\n   * @type String\n   * @default\n   */\n  color: 'rgb(0, 0, 0)',\n\n  /**\n   * Width of a brush, has to be a Number, no string literals\n   * @type Number\n   * @default\n   */\n  width: 1,\n\n  /**\n   * Shadow object representing shadow of this shape.\n   * <b>Backwards incompatibility note:</b> This property replaces \"shadowColor\" (String), \"shadowOffsetX\" (Number),\n   * \"shadowOffsetY\" (Number) and \"shadowBlur\" (Number) since v1.2.12\n   * @type fabric.Shadow\n   * @default\n   */\n  shadow: null,\n\n  /**\n   * Line endings style of a brush (one of \"butt\", \"round\", \"square\")\n   * @type String\n   * @default\n   */\n  strokeLineCap: 'round',\n\n  /**\n   * Corner style of a brush (one of \"bevel\", \"round\", \"miter\")\n   * @type String\n   * @default\n   */\n  strokeLineJoin: 'round',\n\n  /**\n   * Maximum miter length (used for strokeLineJoin = \"miter\") of a brush's\n   * @type Number\n   * @default\n   */\n  strokeMiterLimit:         10,\n\n  /**\n   * Stroke Dash Array.\n   * @type Array\n   * @default\n   */\n  strokeDashArray: null,\n\n  /**\n   * When `true`, the free drawing is limited to the whiteboard size. Default to false.\n   * @type Boolean\n   * @default false\n  */\n\n  limitedToCanvasSize: false,\n\n\n  /**\n   * Sets brush styles\n   * @private\n   */\n  _setBrushStyles: function() {\n    var ctx = this.canvas.contextTop;\n    ctx.strokeStyle = this.color;\n    ctx.lineWidth = this.width;\n    ctx.lineCap = this.strokeLineCap;\n    ctx.miterLimit = this.strokeMiterLimit;\n    ctx.lineJoin = this.strokeLineJoin;\n    ctx.setLineDash(this.strokeDashArray || []);\n  },\n\n  /**\n   * Sets the transformation on given context\n   * @param {RenderingContext2d} ctx context to render on\n   * @private\n   */\n  _saveAndTransform: function(ctx) {\n    var v = this.canvas.viewportTransform;\n    ctx.save();\n    ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n  },\n\n  /**\n   * Sets brush shadow styles\n   * @private\n   */\n  _setShadow: function() {\n    if (!this.shadow) {\n      return;\n    }\n\n    var canvas = this.canvas,\n        shadow = this.shadow,\n        ctx = canvas.contextTop,\n        zoom = canvas.getZoom();\n    if (canvas && canvas._isRetinaScaling()) {\n      zoom *= fabric.devicePixelRatio;\n    }\n\n    ctx.shadowColor = shadow.color;\n    ctx.shadowBlur = shadow.blur * zoom;\n    ctx.shadowOffsetX = shadow.offsetX * zoom;\n    ctx.shadowOffsetY = shadow.offsetY * zoom;\n  },\n\n  needsFullRender: function() {\n    var color = new fabric.Color(this.color);\n    return color.getAlpha() < 1 || !!this.shadow;\n  },\n\n  /**\n   * Removes brush shadow styles\n   * @private\n   */\n  _resetShadow: function() {\n    var ctx = this.canvas.contextTop;\n\n    ctx.shadowColor = '';\n    ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n  },\n\n  /**\n   * Check is pointer is outside canvas boundaries\n   * @param {Object} pointer\n   * @private\n  */\n  _isOutSideCanvas: function(pointer) {\n    return pointer.x < 0 || pointer.x > this.canvas.getWidth() || pointer.y < 0 || pointer.y > this.canvas.getHeight();\n  }\n});\n\n\n(function() {\n  /**\n   * PencilBrush class\n   * @class fabric.PencilBrush\n   * @extends fabric.BaseBrush\n   */\n  fabric.PencilBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.PencilBrush.prototype */ {\n\n    /**\n     * Discard points that are less than `decimate` pixel distant from each other\n     * @type Number\n     * @default 0.4\n     */\n    decimate: 0.4,\n\n    /**\n     * Constructor\n     * @param {fabric.Canvas} canvas\n     * @return {fabric.PencilBrush} Instance of a pencil brush\n     */\n    initialize: function(canvas) {\n      this.canvas = canvas;\n      this._points = [];\n    },\n\n    /**\n     * Invoked inside on mouse down and mouse move\n     * @param {Object} pointer\n     */\n    _drawSegment: function (ctx, p1, p2) {\n      var midPoint = p1.midPointFrom(p2);\n      ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n      return midPoint;\n    },\n\n    /**\n     * Invoked on mouse down\n     * @param {Object} pointer\n     */\n    onMouseDown: function(pointer, options) {\n      if (!this.canvas._isMainEvent(options.e)) {\n        return;\n      }\n      this._prepareForDrawing(pointer);\n      // capture coordinates immediately\n      // this allows to draw dots (when movement never occurs)\n      this._captureDrawingPath(pointer);\n      this._render();\n    },\n\n    /**\n     * Invoked on mouse move\n     * @param {Object} pointer\n     */\n    onMouseMove: function(pointer, options) {\n      if (!this.canvas._isMainEvent(options.e)) {\n        return;\n      }\n      if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n        return;\n      }\n      if (this._captureDrawingPath(pointer) && this._points.length > 1) {\n        if (this.needsFullRender()) {\n          // redraw curve\n          // clear top canvas\n          this.canvas.clearContext(this.canvas.contextTop);\n          this._render();\n        }\n        else {\n          var points = this._points, length = points.length, ctx = this.canvas.contextTop;\n          // draw the curve update\n          this._saveAndTransform(ctx);\n          if (this.oldEnd) {\n            ctx.beginPath();\n            ctx.moveTo(this.oldEnd.x, this.oldEnd.y);\n          }\n          this.oldEnd = this._drawSegment(ctx, points[length - 2], points[length - 1], true);\n          ctx.stroke();\n          ctx.restore();\n        }\n      }\n    },\n\n    /**\n     * Invoked on mouse up\n     */\n    onMouseUp: function(options) {\n      if (!this.canvas._isMainEvent(options.e)) {\n        return true;\n      }\n      this.oldEnd = undefined;\n      this._finalizeAndAddPath();\n      return false;\n    },\n\n    /**\n     * @private\n     * @param {Object} pointer Actual mouse position related to the canvas.\n     */\n    _prepareForDrawing: function(pointer) {\n\n      var p = new fabric.Point(pointer.x, pointer.y);\n\n      this._reset();\n      this._addPoint(p);\n      this.canvas.contextTop.moveTo(p.x, p.y);\n    },\n\n    /**\n     * @private\n     * @param {fabric.Point} point Point to be added to points array\n     */\n    _addPoint: function(point) {\n      if (this._points.length > 1 && point.eq(this._points[this._points.length - 1])) {\n        return false;\n      }\n      this._points.push(point);\n      return true;\n    },\n\n    /**\n     * Clear points array and set contextTop canvas style.\n     * @private\n     */\n    _reset: function() {\n      this._points = [];\n      this._setBrushStyles();\n      this._setShadow();\n    },\n\n    /**\n     * @private\n     * @param {Object} pointer Actual mouse position related to the canvas.\n     */\n    _captureDrawingPath: function(pointer) {\n      var pointerPoint = new fabric.Point(pointer.x, pointer.y);\n      return this._addPoint(pointerPoint);\n    },\n\n    /**\n     * Draw a smooth path on the topCanvas using quadraticCurveTo\n     * @private\n     */\n    _render: function() {\n      var ctx  = this.canvas.contextTop, i, len,\n          p1 = this._points[0],\n          p2 = this._points[1];\n\n      this._saveAndTransform(ctx);\n      ctx.beginPath();\n      //if we only have 2 points in the path and they are the same\n      //it means that the user only clicked the canvas without moving the mouse\n      //then we should be drawing a dot. A path isn't drawn between two identical dots\n      //that's why we set them apart a bit\n      if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) {\n        var width = this.width / 1000;\n        p1 = new fabric.Point(p1.x, p1.y);\n        p2 = new fabric.Point(p2.x, p2.y);\n        p1.x -= width;\n        p2.x += width;\n      }\n      ctx.moveTo(p1.x, p1.y);\n\n      for (i = 1, len = this._points.length; i < len; i++) {\n        // we pick the point between pi + 1 & pi + 2 as the\n        // end point and p1 as our control point.\n        this._drawSegment(ctx, p1, p2);\n        p1 = this._points[i];\n        p2 = this._points[i + 1];\n      }\n      // Draw last line as a straight line while\n      // we wait for the next point to be able to calculate\n      // the bezier control point\n      ctx.lineTo(p1.x, p1.y);\n      ctx.stroke();\n      ctx.restore();\n    },\n\n    /**\n     * Converts points to SVG path\n     * @param {Array} points Array of points\n     * @return {(string|number)[][]} SVG path commands\n     */\n    convertPointsToSVGPath: function (points) {\n      var correction = this.width / 1000;\n      return fabric.util.getSmoothPathFromPoints(points, correction);\n    },\n\n    /**\n     * @private\n     * @param {(string|number)[][]} pathData SVG path commands\n     * @returns {boolean}\n     */\n    _isEmptySVGPath: function (pathData) {\n      var pathString = fabric.util.joinPath(pathData);\n      return pathString === 'M 0 0 Q 0 0 0 0 L 0 0';\n    },\n\n    /**\n     * Creates fabric.Path object to add on canvas\n     * @param {(string|number)[][]} pathData Path data\n     * @return {fabric.Path} Path to add on canvas\n     */\n    createPath: function(pathData) {\n      var path = new fabric.Path(pathData, {\n        fill: null,\n        stroke: this.color,\n        strokeWidth: this.width,\n        strokeLineCap: this.strokeLineCap,\n        strokeMiterLimit: this.strokeMiterLimit,\n        strokeLineJoin: this.strokeLineJoin,\n        strokeDashArray: this.strokeDashArray,\n      });\n      if (this.shadow) {\n        this.shadow.affectStroke = true;\n        path.shadow = new fabric.Shadow(this.shadow);\n      }\n\n      return path;\n    },\n\n    /**\n     * Decimate points array with the decimate value\n     */\n    decimatePoints: function(points, distance) {\n      if (points.length <= 2) {\n        return points;\n      }\n      var zoom = this.canvas.getZoom(), adjustedDistance = Math.pow(distance / zoom, 2),\n          i, l = points.length - 1, lastPoint = points[0], newPoints = [lastPoint],\n          cDistance;\n      for (i = 1; i < l - 1; i++) {\n        cDistance = Math.pow(lastPoint.x - points[i].x, 2) + Math.pow(lastPoint.y - points[i].y, 2);\n        if (cDistance >= adjustedDistance) {\n          lastPoint = points[i];\n          newPoints.push(lastPoint);\n        }\n      }\n      /**\n       * Add the last point from the original line to the end of the array.\n       * This ensures decimate doesn't delete the last point on the line, and ensures the line is > 1 point.\n       */\n      newPoints.push(points[l]);\n      return newPoints;\n    },\n\n    /**\n     * On mouseup after drawing the path on contextTop canvas\n     * we use the points captured to create an new fabric path object\n     * and add it to the fabric canvas.\n     */\n    _finalizeAndAddPath: function() {\n      var ctx = this.canvas.contextTop;\n      ctx.closePath();\n      if (this.decimate) {\n        this._points = this.decimatePoints(this._points, this.decimate);\n      }\n      var pathData = this.convertPointsToSVGPath(this._points);\n      if (this._isEmptySVGPath(pathData)) {\n        // do not create 0 width/height paths, as they are\n        // rendered inconsistently across browsers\n        // Firefox 4, for example, renders a dot,\n        // whereas Chrome 10 renders nothing\n        this.canvas.requestRenderAll();\n        return;\n      }\n\n      var path = this.createPath(pathData);\n      this.canvas.clearContext(this.canvas.contextTop);\n      this.canvas.fire('before:path:created', { path: path });\n      this.canvas.add(path);\n      this.canvas.requestRenderAll();\n      path.setCoords();\n      this._resetShadow();\n\n\n      // fire event 'path' created\n      this.canvas.fire('path:created', { path: path });\n    }\n  });\n})();\n\n\n/**\n * CircleBrush class\n * @class fabric.CircleBrush\n */\nfabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.CircleBrush.prototype */ {\n\n  /**\n   * Width of a brush\n   * @type Number\n   * @default\n   */\n  width: 10,\n\n  /**\n   * Constructor\n   * @param {fabric.Canvas} canvas\n   * @return {fabric.CircleBrush} Instance of a circle brush\n   */\n  initialize: function(canvas) {\n    this.canvas = canvas;\n    this.points = [];\n  },\n\n  /**\n   * Invoked inside on mouse down and mouse move\n   * @param {Object} pointer\n   */\n  drawDot: function(pointer) {\n    var point = this.addPoint(pointer),\n        ctx = this.canvas.contextTop;\n    this._saveAndTransform(ctx);\n    this.dot(ctx, point);\n    ctx.restore();\n  },\n\n  dot: function(ctx, point) {\n    ctx.fillStyle = point.fill;\n    ctx.beginPath();\n    ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n    ctx.closePath();\n    ctx.fill();\n  },\n\n  /**\n   * Invoked on mouse down\n   */\n  onMouseDown: function(pointer) {\n    this.points.length = 0;\n    this.canvas.clearContext(this.canvas.contextTop);\n    this._setShadow();\n    this.drawDot(pointer);\n  },\n\n  /**\n   * Render the full state of the brush\n   * @private\n   */\n  _render: function() {\n    var ctx  = this.canvas.contextTop, i, len,\n        points = this.points;\n    this._saveAndTransform(ctx);\n    for (i = 0, len = points.length; i < len; i++) {\n      this.dot(ctx, points[i]);\n    }\n    ctx.restore();\n  },\n\n  /**\n   * Invoked on mouse move\n   * @param {Object} pointer\n   */\n  onMouseMove: function(pointer) {\n    if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n      return;\n    }\n    if (this.needsFullRender()) {\n      this.canvas.clearContext(this.canvas.contextTop);\n      this.addPoint(pointer);\n      this._render();\n    }\n    else {\n      this.drawDot(pointer);\n    }\n  },\n\n  /**\n   * Invoked on mouse up\n   */\n  onMouseUp: function() {\n    var originalRenderOnAddRemove = this.canvas.renderOnAddRemove, i, len;\n    this.canvas.renderOnAddRemove = false;\n\n    var circles = [];\n\n    for (i = 0, len = this.points.length; i < len; i++) {\n      var point = this.points[i],\n          circle = new fabric.Circle({\n            radius: point.radius,\n            left: point.x,\n            top: point.y,\n            originX: 'center',\n            originY: 'center',\n            fill: point.fill\n          });\n\n      this.shadow && (circle.shadow = new fabric.Shadow(this.shadow));\n\n      circles.push(circle);\n    }\n    var group = new fabric.Group(circles);\n    group.canvas = this.canvas;\n\n    this.canvas.fire('before:path:created', { path: group });\n    this.canvas.add(group);\n    this.canvas.fire('path:created', { path: group });\n\n    this.canvas.clearContext(this.canvas.contextTop);\n    this._resetShadow();\n    this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n    this.canvas.requestRenderAll();\n  },\n\n  /**\n   * @param {Object} pointer\n   * @return {fabric.Point} Just added pointer point\n   */\n  addPoint: function(pointer) {\n    var pointerPoint = new fabric.Point(pointer.x, pointer.y),\n\n        circleRadius = fabric.util.getRandomInt(\n          Math.max(0, this.width - 20), this.width + 20) / 2,\n\n        circleColor = new fabric.Color(this.color)\n          .setAlpha(fabric.util.getRandomInt(0, 100) / 100)\n          .toRgba();\n\n    pointerPoint.radius = circleRadius;\n    pointerPoint.fill = circleColor;\n\n    this.points.push(pointerPoint);\n\n    return pointerPoint;\n  }\n});\n\n\n/**\n * SprayBrush class\n * @class fabric.SprayBrush\n */\nfabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric.SprayBrush.prototype */ {\n\n  /**\n   * Width of a spray\n   * @type Number\n   * @default\n   */\n  width:              10,\n\n  /**\n   * Density of a spray (number of dots per chunk)\n   * @type Number\n   * @default\n   */\n  density:            20,\n\n  /**\n   * Width of spray dots\n   * @type Number\n   * @default\n   */\n  dotWidth:           1,\n\n  /**\n   * Width variance of spray dots\n   * @type Number\n   * @default\n   */\n  dotWidthVariance:   1,\n\n  /**\n   * Whether opacity of a dot should be random\n   * @type Boolean\n   * @default\n   */\n  randomOpacity:        false,\n\n  /**\n   * Whether overlapping dots (rectangles) should be removed (for performance reasons)\n   * @type Boolean\n   * @default\n   */\n  optimizeOverlapping:  true,\n\n  /**\n   * Constructor\n   * @param {fabric.Canvas} canvas\n   * @return {fabric.SprayBrush} Instance of a spray brush\n   */\n  initialize: function(canvas) {\n    this.canvas = canvas;\n    this.sprayChunks = [];\n  },\n\n  /**\n   * Invoked on mouse down\n   * @param {Object} pointer\n   */\n  onMouseDown: function(pointer) {\n    this.sprayChunks.length = 0;\n    this.canvas.clearContext(this.canvas.contextTop);\n    this._setShadow();\n\n    this.addSprayChunk(pointer);\n    this.render(this.sprayChunkPoints);\n  },\n\n  /**\n   * Invoked on mouse move\n   * @param {Object} pointer\n   */\n  onMouseMove: function(pointer) {\n    if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n      return;\n    }\n    this.addSprayChunk(pointer);\n    this.render(this.sprayChunkPoints);\n  },\n\n  /**\n   * Invoked on mouse up\n   */\n  onMouseUp: function() {\n    var originalRenderOnAddRemove = this.canvas.renderOnAddRemove;\n    this.canvas.renderOnAddRemove = false;\n\n    var rects = [];\n\n    for (var i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n      var sprayChunk = this.sprayChunks[i];\n\n      for (var j = 0, jlen = sprayChunk.length; j < jlen; j++) {\n\n        var rect = new fabric.Rect({\n          width: sprayChunk[j].width,\n          height: sprayChunk[j].width,\n          left: sprayChunk[j].x + 1,\n          top: sprayChunk[j].y + 1,\n          originX: 'center',\n          originY: 'center',\n          fill: this.color\n        });\n        rects.push(rect);\n      }\n    }\n\n    if (this.optimizeOverlapping) {\n      rects = this._getOptimizedRects(rects);\n    }\n\n    var group = new fabric.Group(rects);\n    this.shadow && group.set('shadow', new fabric.Shadow(this.shadow));\n    this.canvas.fire('before:path:created', { path: group });\n    this.canvas.add(group);\n    this.canvas.fire('path:created', { path: group });\n\n    this.canvas.clearContext(this.canvas.contextTop);\n    this._resetShadow();\n    this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n    this.canvas.requestRenderAll();\n  },\n\n  /**\n   * @private\n   * @param {Array} rects\n   */\n  _getOptimizedRects: function(rects) {\n\n    // avoid creating duplicate rects at the same coordinates\n    var uniqueRects = { }, key, i, len;\n\n    for (i = 0, len = rects.length; i < len; i++) {\n      key = rects[i].left + '' + rects[i].top;\n      if (!uniqueRects[key]) {\n        uniqueRects[key] = rects[i];\n      }\n    }\n    var uniqueRectsArray = [];\n    for (key in uniqueRects) {\n      uniqueRectsArray.push(uniqueRects[key]);\n    }\n\n    return uniqueRectsArray;\n  },\n\n  /**\n   * Render new chunk of spray brush\n   */\n  render: function(sprayChunk) {\n    var ctx = this.canvas.contextTop, i, len;\n    ctx.fillStyle = this.color;\n\n    this._saveAndTransform(ctx);\n\n    for (i = 0, len = sprayChunk.length; i < len; i++) {\n      var point = sprayChunk[i];\n      if (typeof point.opacity !== 'undefined') {\n        ctx.globalAlpha = point.opacity;\n      }\n      ctx.fillRect(point.x, point.y, point.width, point.width);\n    }\n    ctx.restore();\n  },\n\n  /**\n   * Render all spray chunks\n   */\n  _render: function() {\n    var ctx = this.canvas.contextTop, i, ilen;\n    ctx.fillStyle = this.color;\n\n    this._saveAndTransform(ctx);\n\n    for (i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n      this.render(this.sprayChunks[i]);\n    }\n    ctx.restore();\n  },\n\n  /**\n   * @param {Object} pointer\n   */\n  addSprayChunk: function(pointer) {\n    this.sprayChunkPoints = [];\n\n    var x, y, width, radius = this.width / 2, i;\n\n    for (i = 0; i < this.density; i++) {\n\n      x = fabric.util.getRandomInt(pointer.x - radius, pointer.x + radius);\n      y = fabric.util.getRandomInt(pointer.y - radius, pointer.y + radius);\n\n      if (this.dotWidthVariance) {\n        width = fabric.util.getRandomInt(\n          // bottom clamp width to 1\n          Math.max(1, this.dotWidth - this.dotWidthVariance),\n          this.dotWidth + this.dotWidthVariance);\n      }\n      else {\n        width = this.dotWidth;\n      }\n\n      var point = new fabric.Point(x, y);\n      point.width = width;\n\n      if (this.randomOpacity) {\n        point.opacity = fabric.util.getRandomInt(0, 100) / 100;\n      }\n\n      this.sprayChunkPoints.push(point);\n    }\n\n    this.sprayChunks.push(this.sprayChunkPoints);\n  }\n});\n\n\n/**\n * PatternBrush class\n * @class fabric.PatternBrush\n * @extends fabric.BaseBrush\n */\nfabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fabric.PatternBrush.prototype */ {\n\n  getPatternSrc: function() {\n\n    var dotWidth = 20,\n        dotDistance = 5,\n        patternCanvas = fabric.util.createCanvasElement(),\n        patternCtx = patternCanvas.getContext('2d');\n\n    patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n\n    patternCtx.fillStyle = this.color;\n    patternCtx.beginPath();\n    patternCtx.arc(dotWidth / 2, dotWidth / 2, dotWidth / 2, 0, Math.PI * 2, false);\n    patternCtx.closePath();\n    patternCtx.fill();\n\n    return patternCanvas;\n  },\n\n  getPatternSrcFunction: function() {\n    return String(this.getPatternSrc).replace('this.color', '\"' + this.color + '\"');\n  },\n\n  /**\n   * Creates \"pattern\" instance property\n   */\n  getPattern: function() {\n    return this.canvas.contextTop.createPattern(this.source || this.getPatternSrc(), 'repeat');\n  },\n\n  /**\n   * Sets brush styles\n   */\n  _setBrushStyles: function() {\n    this.callSuper('_setBrushStyles');\n    this.canvas.contextTop.strokeStyle = this.getPattern();\n  },\n\n  /**\n   * Creates path\n   */\n  createPath: function(pathData) {\n    var path = this.callSuper('createPath', pathData),\n        topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n    path.stroke = new fabric.Pattern({\n      source: this.source || this.getPatternSrcFunction(),\n      offsetX: -topLeft.x,\n      offsetY: -topLeft.y\n    });\n    return path;\n  }\n});\n\n\n(function() {\n\n  var getPointer = fabric.util.getPointer,\n      degreesToRadians = fabric.util.degreesToRadians,\n      isTouchEvent = fabric.util.isTouchEvent;\n\n  /**\n   * Canvas class\n   * @class fabric.Canvas\n   * @extends fabric.StaticCanvas\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas}\n   * @see {@link fabric.Canvas#initialize} for constructor definition\n   *\n   * @fires object:modified at the end of a transform or any change when statefull is true\n   * @fires object:rotating while an object is being rotated from the control\n   * @fires object:scaling while an object is being scaled by controls\n   * @fires object:moving while an object is being dragged\n   * @fires object:skewing while an object is being skewed from the controls\n   *\n   * @fires before:transform before a transform is is started\n   * @fires before:selection:cleared\n   * @fires selection:cleared\n   * @fires selection:updated\n   * @fires selection:created\n   *\n   * @fires path:created after a drawing operation ends and the path is added\n   * @fires mouse:down\n   * @fires mouse:move\n   * @fires mouse:up\n   * @fires mouse:down:before  on mouse down, before the inner fabric logic runs\n   * @fires mouse:move:before on mouse move, before the inner fabric logic runs\n   * @fires mouse:up:before on mouse up, before the inner fabric logic runs\n   * @fires mouse:over\n   * @fires mouse:out\n   * @fires mouse:dblclick whenever a native dbl click event fires on the canvas.\n   *\n   * @fires dragover\n   * @fires dragenter\n   * @fires dragleave\n   * @fires drop\n   * @fires after:render at the end of the render process, receives the context in the callback\n   * @fires before:render at start the render process, receives the context in the callback\n   *\n   * the following events are deprecated:\n   * @fires object:rotated at the end of a rotation transform\n   * @fires object:scaled at the end of a scale transform\n   * @fires object:moved at the end of translation transform\n   * @fires object:skewed at the end of a skew transform\n   */\n  fabric.Canvas = fabric.util.createClass(fabric.StaticCanvas, /** @lends fabric.Canvas.prototype */ {\n\n    /**\n     * Constructor\n     * @param {HTMLElement | String} el &lt;canvas> element to initialize instance on\n     * @param {Object} [options] Options object\n     * @return {Object} thisArg\n     */\n    initialize: function(el, options) {\n      options || (options = { });\n      this.renderAndResetBound = this.renderAndReset.bind(this);\n      this.requestRenderAllBound = this.requestRenderAll.bind(this);\n      this._initStatic(el, options);\n      this._initInteractive();\n      this._createCacheCanvas();\n    },\n\n    /**\n     * When true, objects can be transformed by one side (unproportionally)\n     * when dragged on the corners that normally would not do that.\n     * @type Boolean\n     * @default\n     * @since fabric 4.0 // changed name and default value\n     */\n    uniformScaling:      true,\n\n    /**\n     * Indicates which key switches uniform scaling.\n     * values: 'altKey', 'shiftKey', 'ctrlKey'.\n     * If `null` or 'none' or any other string that is not a modifier key\n     * feature is disabled.\n     * totally wrong named. this sounds like `uniform scaling`\n     * if Canvas.uniformScaling is true, pressing this will set it to false\n     * and viceversa.\n     * @since 1.6.2\n     * @type String\n     * @default\n     */\n    uniScaleKey:           'shiftKey',\n\n    /**\n     * When true, objects use center point as the origin of scale transformation.\n     * <b>Backwards incompatibility note:</b> This property replaces \"centerTransform\" (Boolean).\n     * @since 1.3.4\n     * @type Boolean\n     * @default\n     */\n    centeredScaling:        false,\n\n    /**\n     * When true, objects use center point as the origin of rotate transformation.\n     * <b>Backwards incompatibility note:</b> This property replaces \"centerTransform\" (Boolean).\n     * @since 1.3.4\n     * @type Boolean\n     * @default\n     */\n    centeredRotation:       false,\n\n    /**\n     * Indicates which key enable centered Transform\n     * values: 'altKey', 'shiftKey', 'ctrlKey'.\n     * If `null` or 'none' or any other string that is not a modifier key\n     * feature is disabled feature disabled.\n     * @since 1.6.2\n     * @type String\n     * @default\n     */\n    centeredKey:           'altKey',\n\n    /**\n     * Indicates which key enable alternate action on corner\n     * values: 'altKey', 'shiftKey', 'ctrlKey'.\n     * If `null` or 'none' or any other string that is not a modifier key\n     * feature is disabled feature disabled.\n     * @since 1.6.2\n     * @type String\n     * @default\n     */\n    altActionKey:           'shiftKey',\n\n    /**\n     * Indicates that canvas is interactive. This property should not be changed.\n     * @type Boolean\n     * @default\n     */\n    interactive:            true,\n\n    /**\n     * Indicates whether group selection should be enabled\n     * @type Boolean\n     * @default\n     */\n    selection:              true,\n\n    /**\n     * Indicates which key or keys enable multiple click selection\n     * Pass value as a string or array of strings\n     * values: 'altKey', 'shiftKey', 'ctrlKey'.\n     * If `null` or empty or containing any other string that is not a modifier key\n     * feature is disabled.\n     * @since 1.6.2\n     * @type String|Array\n     * @default\n     */\n    selectionKey:           'shiftKey',\n\n    /**\n     * Indicates which key enable alternative selection\n     * in case of target overlapping with active object\n     * values: 'altKey', 'shiftKey', 'ctrlKey'.\n     * For a series of reason that come from the general expectations on how\n     * things should work, this feature works only for preserveObjectStacking true.\n     * If `null` or 'none' or any other string that is not a modifier key\n     * feature is disabled.\n     * @since 1.6.5\n     * @type null|String\n     * @default\n     */\n    altSelectionKey:           null,\n\n    /**\n     * Color of selection\n     * @type String\n     * @default\n     */\n    selectionColor:         'rgba(100, 100, 255, 0.3)', // blue\n\n    /**\n     * Default dash array pattern\n     * If not empty the selection border is dashed\n     * @type Array\n     */\n    selectionDashArray:     [],\n\n    /**\n     * Color of the border of selection (usually slightly darker than color of selection itself)\n     * @type String\n     * @default\n     */\n    selectionBorderColor:   'rgba(255, 255, 255, 0.3)',\n\n    /**\n     * Width of a line used in object/group selection\n     * @type Number\n     * @default\n     */\n    selectionLineWidth:     1,\n\n    /**\n     * Select only shapes that are fully contained in the dragged selection rectangle.\n     * @type Boolean\n     * @default\n     */\n    selectionFullyContained: false,\n\n    /**\n     * Default cursor value used when hovering over an object on canvas\n     * @type String\n     * @default\n     */\n    hoverCursor:            'move',\n\n    /**\n     * Default cursor value used when moving an object on canvas\n     * @type String\n     * @default\n     */\n    moveCursor:             'move',\n\n    /**\n     * Default cursor value used for the entire canvas\n     * @type String\n     * @default\n     */\n    defaultCursor:          'default',\n\n    /**\n     * Cursor value used during free drawing\n     * @type String\n     * @default\n     */\n    freeDrawingCursor:      'crosshair',\n\n    /**\n     * Cursor value used for rotation point\n     * @type String\n     * @default\n     */\n    rotationCursor:         'crosshair',\n\n    /**\n     * Cursor value used for disabled elements ( corners with disabled action )\n     * @type String\n     * @since 2.0.0\n     * @default\n     */\n    notAllowedCursor:         'not-allowed',\n\n    /**\n     * Default element class that's given to wrapper (div) element of canvas\n     * @type String\n     * @default\n     */\n    containerClass:         'canvas-container',\n\n    /**\n     * When true, object detection happens on per-pixel basis rather than on per-bounding-box\n     * @type Boolean\n     * @default\n     */\n    perPixelTargetFind:     false,\n\n    /**\n     * Number of pixels around target pixel to tolerate (consider active) during object detection\n     * @type Number\n     * @default\n     */\n    targetFindTolerance:    0,\n\n    /**\n     * When true, target detection is skipped. Target detection will return always undefined.\n     * click selection won't work anymore, events will fire with no targets.\n     * if something is selected before setting it to true, it will be deselected at the first click.\n     * area selection will still work. check the `selection` property too.\n     * if you deactivate both, you should look into staticCanvas.\n     * @type Boolean\n     * @default\n     */\n    skipTargetFind:         false,\n\n    /**\n     * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing.\n     * After mousedown, mousemove creates a shape,\n     * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas.\n     * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing}\n     * @type Boolean\n     * @default\n     */\n    isDrawingMode:          false,\n\n    /**\n     * Indicates whether objects should remain in current stack position when selected.\n     * When false objects are brought to top and rendered as part of the selection group\n     * @type Boolean\n     * @default\n     */\n    preserveObjectStacking: false,\n\n    /**\n     * Indicates the angle that an object will lock to while rotating.\n     * @type Number\n     * @since 1.6.7\n     * @default\n     */\n    snapAngle: 0,\n\n    /**\n     * Indicates the distance from the snapAngle the rotation will lock to the snapAngle.\n     * When `null`, the snapThreshold will default to the snapAngle.\n     * @type null|Number\n     * @since 1.6.7\n     * @default\n     */\n    snapThreshold: null,\n\n    /**\n     * Indicates if the right click on canvas can output the context menu or not\n     * @type Boolean\n     * @since 1.6.5\n     * @default\n     */\n    stopContextMenu: false,\n\n    /**\n     * Indicates if the canvas can fire right click events\n     * @type Boolean\n     * @since 1.6.5\n     * @default\n     */\n    fireRightClick: false,\n\n    /**\n     * Indicates if the canvas can fire middle click events\n     * @type Boolean\n     * @since 1.7.8\n     * @default\n     */\n    fireMiddleClick: false,\n\n    /**\n     * Keep track of the subTargets for Mouse Events\n     * @type fabric.Object[]\n     */\n    targets: [],\n\n    /**\n     * Keep track of the hovered target\n     * @type fabric.Object\n     * @private\n     */\n    _hoveredTarget: null,\n\n    /**\n     * hold the list of nested targets hovered\n     * @type fabric.Object[]\n     * @private\n     */\n    _hoveredTargets: [],\n\n    /**\n     * @private\n     */\n    _initInteractive: function() {\n      this._currentTransform = null;\n      this._groupSelector = null;\n      this._initWrapperElement();\n      this._createUpperCanvas();\n      this._initEventListeners();\n\n      this._initRetinaScaling();\n\n      this.freeDrawingBrush = fabric.PencilBrush && new fabric.PencilBrush(this);\n\n      this.calcOffset();\n    },\n\n    /**\n     * Divides objects in two groups, one to render immediately\n     * and one to render as activeGroup.\n     * @return {Array} objects to render immediately and pushes the other in the activeGroup.\n     */\n    _chooseObjectsToRender: function() {\n      var activeObjects = this.getActiveObjects(),\n          object, objsToRender, activeGroupObjects;\n\n      if (activeObjects.length > 0 && !this.preserveObjectStacking) {\n        objsToRender = [];\n        activeGroupObjects = [];\n        for (var i = 0, length = this._objects.length; i < length; i++) {\n          object = this._objects[i];\n          if (activeObjects.indexOf(object) === -1 ) {\n            objsToRender.push(object);\n          }\n          else {\n            activeGroupObjects.push(object);\n          }\n        }\n        if (activeObjects.length > 1) {\n          this._activeObject._objects = activeGroupObjects;\n        }\n        objsToRender.push.apply(objsToRender, activeGroupObjects);\n      }\n      else {\n        objsToRender = this._objects;\n      }\n      return objsToRender;\n    },\n\n    /**\n     * Renders both the top canvas and the secondary container canvas.\n     * @return {fabric.Canvas} instance\n     * @chainable\n     */\n    renderAll: function () {\n      if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) {\n        this.clearContext(this.contextTop);\n        this.contextTopDirty = false;\n      }\n      if (this.hasLostContext) {\n        this.renderTopLayer(this.contextTop);\n      }\n      var canvasToDrawOn = this.contextContainer;\n      this.renderCanvas(canvasToDrawOn, this._chooseObjectsToRender());\n      return this;\n    },\n\n    renderTopLayer: function(ctx) {\n      ctx.save();\n      if (this.isDrawingMode && this._isCurrentlyDrawing) {\n        this.freeDrawingBrush && this.freeDrawingBrush._render();\n        this.contextTopDirty = true;\n      }\n      // we render the top context - last object\n      if (this.selection && this._groupSelector) {\n        this._drawSelection(ctx);\n        this.contextTopDirty = true;\n      }\n      ctx.restore();\n    },\n\n    /**\n     * Method to render only the top canvas.\n     * Also used to render the group selection box.\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    renderTop: function () {\n      var ctx = this.contextTop;\n      this.clearContext(ctx);\n      this.renderTopLayer(ctx);\n      this.fire('after:render');\n      return this;\n    },\n\n    /**\n     * @private\n     */\n    _normalizePointer: function (object, pointer) {\n      var m = object.calcTransformMatrix(),\n          invertedM = fabric.util.invertTransform(m),\n          vptPointer = this.restorePointerVpt(pointer);\n      return fabric.util.transformPoint(vptPointer, invertedM);\n    },\n\n    /**\n     * Returns true if object is transparent at a certain location\n     * @param {fabric.Object} target Object to check\n     * @param {Number} x Left coordinate\n     * @param {Number} y Top coordinate\n     * @return {Boolean}\n     */\n    isTargetTransparent: function (target, x, y) {\n      // in case the target is the activeObject, we cannot execute this optimization\n      // because we need to draw controls too.\n      if (target.shouldCache() && target._cacheCanvas && target !== this._activeObject) {\n        var normalizedPointer = this._normalizePointer(target, {x: x, y: y}),\n            targetRelativeX = Math.max(target.cacheTranslationX + (normalizedPointer.x * target.zoomX), 0),\n            targetRelativeY = Math.max(target.cacheTranslationY + (normalizedPointer.y * target.zoomY), 0);\n\n        var isTransparent = fabric.util.isTransparent(\n          target._cacheContext, Math.round(targetRelativeX), Math.round(targetRelativeY), this.targetFindTolerance);\n\n        return isTransparent;\n      }\n\n      var ctx = this.contextCache,\n          originalColor = target.selectionBackgroundColor, v = this.viewportTransform;\n\n      target.selectionBackgroundColor = '';\n\n      this.clearContext(ctx);\n\n      ctx.save();\n      ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n      target.render(ctx);\n      ctx.restore();\n\n      target.selectionBackgroundColor = originalColor;\n\n      var isTransparent = fabric.util.isTransparent(\n        ctx, x, y, this.targetFindTolerance);\n\n      return isTransparent;\n    },\n\n    /**\n     * takes an event and determines if selection key has been pressed\n     * @private\n     * @param {Event} e Event object\n     */\n    _isSelectionKeyPressed: function(e) {\n      var selectionKeyPressed = false;\n\n      if (Object.prototype.toString.call(this.selectionKey) === '[object Array]') {\n        selectionKeyPressed = !!this.selectionKey.find(function(key) { return e[key] === true; });\n      }\n      else {\n        selectionKeyPressed = e[this.selectionKey];\n      }\n\n      return selectionKeyPressed;\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object\n     * @param {fabric.Object} target\n     */\n    _shouldClearSelection: function (e, target) {\n      var activeObjects = this.getActiveObjects(),\n          activeObject = this._activeObject;\n\n      return (\n        !target\n        ||\n        (target &&\n          activeObject &&\n          activeObjects.length > 1 &&\n          activeObjects.indexOf(target) === -1 &&\n          activeObject !== target &&\n          !this._isSelectionKeyPressed(e))\n        ||\n        (target && !target.evented)\n        ||\n        (target &&\n          !target.selectable &&\n          activeObject &&\n          activeObject !== target)\n      );\n    },\n\n    /**\n     * centeredScaling from object can't override centeredScaling from canvas.\n     * this should be fixed, since object setting should take precedence over canvas.\n     * also this should be something that will be migrated in the control properties.\n     * as ability to define the origin of the transformation that the control provide.\n     * @private\n     * @param {fabric.Object} target\n     * @param {String} action\n     * @param {Boolean} altKey\n     */\n    _shouldCenterTransform: function (target, action, altKey) {\n      if (!target) {\n        return;\n      }\n\n      var centerTransform;\n\n      if (action === 'scale' || action === 'scaleX' || action === 'scaleY' || action === 'resizing') {\n        centerTransform = this.centeredScaling || target.centeredScaling;\n      }\n      else if (action === 'rotate') {\n        centerTransform = this.centeredRotation || target.centeredRotation;\n      }\n\n      return centerTransform ? !altKey : altKey;\n    },\n\n    /**\n     * should disappear before release 4.0\n     * @private\n     */\n    _getOriginFromCorner: function(target, corner) {\n      var origin = {\n        x: target.originX,\n        y: target.originY\n      };\n\n      if (corner === 'ml' || corner === 'tl' || corner === 'bl') {\n        origin.x = 'right';\n      }\n      else if (corner === 'mr' || corner === 'tr' || corner === 'br') {\n        origin.x = 'left';\n      }\n\n      if (corner === 'tl' || corner === 'mt' || corner === 'tr') {\n        origin.y = 'bottom';\n      }\n      else if (corner === 'bl' || corner === 'mb' || corner === 'br') {\n        origin.y = 'top';\n      }\n      return origin;\n    },\n\n    /**\n     * @private\n     * @param {Boolean} alreadySelected true if target is already selected\n     * @param {String} corner a string representing the corner ml, mr, tl ...\n     * @param {Event} e Event object\n     * @param {fabric.Object} [target] inserted back to help overriding. Unused\n     */\n    _getActionFromCorner: function(alreadySelected, corner, e, target) {\n      if (!corner || !alreadySelected) {\n        return 'drag';\n      }\n      var control = target.controls[corner];\n      return control.getActionName(e, control, target);\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object\n     * @param {fabric.Object} target\n     */\n    _setupCurrentTransform: function (e, target, alreadySelected) {\n      if (!target) {\n        return;\n      }\n\n      var pointer = this.getPointer(e), corner = target.__corner,\n          control = target.controls[corner],\n          actionHandler = (alreadySelected && corner) ?\n            control.getActionHandler(e, target, control) : fabric.controlsUtils.dragHandler,\n          action = this._getActionFromCorner(alreadySelected, corner, e, target),\n          origin = this._getOriginFromCorner(target, corner),\n          altKey = e[this.centeredKey],\n          transform = {\n            target: target,\n            action: action,\n            actionHandler: actionHandler,\n            corner: corner,\n            scaleX: target.scaleX,\n            scaleY: target.scaleY,\n            skewX: target.skewX,\n            skewY: target.skewY,\n            // used by transation\n            offsetX: pointer.x - target.left,\n            offsetY: pointer.y - target.top,\n            originX: origin.x,\n            originY: origin.y,\n            ex: pointer.x,\n            ey: pointer.y,\n            lastX: pointer.x,\n            lastY: pointer.y,\n            // unsure they are useful anymore.\n            // left: target.left,\n            // top: target.top,\n            theta: degreesToRadians(target.angle),\n            // end of unsure\n            width: target.width * target.scaleX,\n            shiftKey: e.shiftKey,\n            altKey: altKey,\n            original: fabric.util.saveObjectTransform(target),\n          };\n\n      if (this._shouldCenterTransform(target, action, altKey)) {\n        transform.originX = 'center';\n        transform.originY = 'center';\n      }\n      transform.original.originX = origin.x;\n      transform.original.originY = origin.y;\n      this._currentTransform = transform;\n      this._beforeTransform(e);\n    },\n\n    /**\n     * Set the cursor type of the canvas element\n     * @param {String} value Cursor type of the canvas element.\n     * @see http://www.w3.org/TR/css3-ui/#cursor\n     */\n    setCursor: function (value) {\n      this.upperCanvasEl.style.cursor = value;\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx to draw the selection on\n     */\n    _drawSelection: function (ctx) {\n      var selector = this._groupSelector,\n          viewportStart = new fabric.Point(selector.ex, selector.ey),\n          start = fabric.util.transformPoint(viewportStart, this.viewportTransform),\n          viewportExtent = new fabric.Point(selector.ex + selector.left, selector.ey + selector.top),\n          extent = fabric.util.transformPoint(viewportExtent, this.viewportTransform),\n          minX = Math.min(start.x, extent.x),\n          minY = Math.min(start.y, extent.y),\n          maxX = Math.max(start.x, extent.x),\n          maxY = Math.max(start.y, extent.y),\n          strokeOffset = this.selectionLineWidth / 2;\n\n      if (this.selectionColor) {\n        ctx.fillStyle = this.selectionColor;\n        ctx.fillRect(minX, minY, maxX - minX, maxY - minY);\n      }\n\n      if (!this.selectionLineWidth || !this.selectionBorderColor) {\n        return;\n      }\n      ctx.lineWidth = this.selectionLineWidth;\n      ctx.strokeStyle = this.selectionBorderColor;\n\n      minX += strokeOffset;\n      minY += strokeOffset;\n      maxX -= strokeOffset;\n      maxY -= strokeOffset;\n      // selection border\n      fabric.Object.prototype._setLineDash.call(this, ctx, this.selectionDashArray);\n      ctx.strokeRect(minX, minY, maxX - minX, maxY - minY);\n    },\n\n    /**\n     * Method that determines what object we are clicking on\n     * the skipGroup parameter is for internal use, is needed for shift+click action\n     * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target\n     * or the outside part of the corner.\n     * @param {Event} e mouse event\n     * @param {Boolean} skipGroup when true, activeGroup is skipped and only objects are traversed through\n     * @return {fabric.Object} the target found\n     */\n    findTarget: function (e, skipGroup) {\n      if (this.skipTargetFind) {\n        return;\n      }\n\n      var ignoreZoom = true,\n          pointer = this.getPointer(e, ignoreZoom),\n          activeObject = this._activeObject,\n          aObjects = this.getActiveObjects(),\n          activeTarget, activeTargetSubs,\n          isTouch = isTouchEvent(e),\n          shouldLookForActive = (aObjects.length > 1 && !skipGroup) || aObjects.length === 1;\n\n      // first check current group (if one exists)\n      // active group does not check sub targets like normal groups.\n      // if active group just exits.\n      this.targets = [];\n\n      // if we hit the corner of an activeObject, let's return that.\n      if (shouldLookForActive && activeObject._findTargetCorner(pointer, isTouch)) {\n        return activeObject;\n      }\n      if (aObjects.length > 1 && !skipGroup && activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n        return activeObject;\n      }\n      if (aObjects.length === 1 &&\n        activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n        if (!this.preserveObjectStacking) {\n          return activeObject;\n        }\n        else {\n          activeTarget = activeObject;\n          activeTargetSubs = this.targets;\n          this.targets = [];\n        }\n      }\n      var target = this._searchPossibleTargets(this._objects, pointer);\n      if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) {\n        target = activeTarget;\n        this.targets = activeTargetSubs;\n      }\n      return target;\n    },\n\n    /**\n     * Checks point is inside the object.\n     * @param {Object} [pointer] x,y object of point coordinates we want to check.\n     * @param {fabric.Object} obj Object to test against\n     * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target.\n     * @return {Boolean} true if point is contained within an area of given object\n     * @private\n     */\n    _checkTarget: function(pointer, obj, globalPointer) {\n      if (obj &&\n          obj.visible &&\n          obj.evented &&\n          // http://www.geog.ubc.ca/courses/klink/gis.notes/ncgia/u32.html\n          // http://idav.ucdavis.edu/~okreylos/TAship/Spring2000/PointInPolygon.html\n          obj.containsPoint(pointer)\n      ) {\n        if ((this.perPixelTargetFind || obj.perPixelTargetFind) && !obj.isEditing) {\n          var isTransparent = this.isTargetTransparent(obj, globalPointer.x, globalPointer.y);\n          if (!isTransparent) {\n            return true;\n          }\n        }\n        else {\n          return true;\n        }\n      }\n    },\n\n    /**\n     * Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted\n     * @param {Array} [objects] objects array to look into\n     * @param {Object} [pointer] x,y object of point coordinates we want to check.\n     * @return {fabric.Object} object that contains pointer\n     * @private\n     */\n    _searchPossibleTargets: function(objects, pointer) {\n      // Cache all targets where their bounding box contains point.\n      var target, i = objects.length, subTarget;\n      // Do not check for currently grouped objects, since we check the parent group itself.\n      // until we call this function specifically to search inside the activeGroup\n      while (i--) {\n        var objToCheck = objects[i];\n        var pointerToUse = objToCheck.group ?\n          this._normalizePointer(objToCheck.group, pointer) : pointer;\n        if (this._checkTarget(pointerToUse, objToCheck, pointer)) {\n          target = objects[i];\n          if (target.subTargetCheck && target instanceof fabric.Group) {\n            subTarget = this._searchPossibleTargets(target._objects, pointer);\n            subTarget && this.targets.push(subTarget);\n          }\n          break;\n        }\n      }\n      return target;\n    },\n\n    /**\n     * Returns pointer coordinates without the effect of the viewport\n     * @param {Object} pointer with \"x\" and \"y\" number values\n     * @return {Object} object with \"x\" and \"y\" number values\n     */\n    restorePointerVpt: function(pointer) {\n      return fabric.util.transformPoint(\n        pointer,\n        fabric.util.invertTransform(this.viewportTransform)\n      );\n    },\n\n    /**\n     * Returns pointer coordinates relative to canvas.\n     * Can return coordinates with or without viewportTransform.\n     * ignoreZoom false gives back coordinates that represent\n     * the point clicked on canvas element.\n     * ignoreZoom true gives back coordinates after being processed\n     * by the viewportTransform ( sort of coordinates of what is displayed\n     * on the canvas where you are clicking.\n     * ignoreZoom true = HTMLElement coordinates relative to top,left\n     * ignoreZoom false, default = fabric space coordinates, the same used for shape position\n     * To interact with your shapes top and left you want to use ignoreZoom true\n     * most of the time, while ignoreZoom false will give you coordinates\n     * compatible with the object.oCoords system.\n     * of the time.\n     * @param {Event} e\n     * @param {Boolean} ignoreZoom\n     * @return {Object} object with \"x\" and \"y\" number values\n     */\n    getPointer: function (e, ignoreZoom) {\n      // return cached values if we are in the event processing chain\n      if (this._absolutePointer && !ignoreZoom) {\n        return this._absolutePointer;\n      }\n      if (this._pointer && ignoreZoom) {\n        return this._pointer;\n      }\n\n      var pointer = getPointer(e),\n          upperCanvasEl = this.upperCanvasEl,\n          bounds = upperCanvasEl.getBoundingClientRect(),\n          boundsWidth = bounds.width || 0,\n          boundsHeight = bounds.height || 0,\n          cssScale;\n\n      if (!boundsWidth || !boundsHeight ) {\n        if ('top' in bounds && 'bottom' in bounds) {\n          boundsHeight = Math.abs( bounds.top - bounds.bottom );\n        }\n        if ('right' in bounds && 'left' in bounds) {\n          boundsWidth = Math.abs( bounds.right - bounds.left );\n        }\n      }\n\n      this.calcOffset();\n      pointer.x = pointer.x - this._offset.left;\n      pointer.y = pointer.y - this._offset.top;\n      if (!ignoreZoom) {\n        pointer = this.restorePointerVpt(pointer);\n      }\n\n      var retinaScaling = this.getRetinaScaling();\n      if (retinaScaling !== 1) {\n        pointer.x /= retinaScaling;\n        pointer.y /= retinaScaling;\n      }\n\n      if (boundsWidth === 0 || boundsHeight === 0) {\n        // If bounds are not available (i.e. not visible), do not apply scale.\n        cssScale = { width: 1, height: 1 };\n      }\n      else {\n        cssScale = {\n          width: upperCanvasEl.width / boundsWidth,\n          height: upperCanvasEl.height / boundsHeight\n        };\n      }\n\n      return {\n        x: pointer.x * cssScale.width,\n        y: pointer.y * cssScale.height\n      };\n    },\n\n    /**\n     * @private\n     * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized\n     */\n    _createUpperCanvas: function () {\n      var lowerCanvasClass = this.lowerCanvasEl.className.replace(/\\s*lower-canvas\\s*/, ''),\n          lowerCanvasEl = this.lowerCanvasEl, upperCanvasEl = this.upperCanvasEl;\n\n      // there is no need to create a new upperCanvas element if we have already one.\n      if (upperCanvasEl) {\n        upperCanvasEl.className = '';\n      }\n      else {\n        upperCanvasEl = this._createCanvasElement();\n        this.upperCanvasEl = upperCanvasEl;\n      }\n      fabric.util.addClass(upperCanvasEl, 'upper-canvas ' + lowerCanvasClass);\n\n      this.wrapperEl.appendChild(upperCanvasEl);\n\n      this._copyCanvasStyle(lowerCanvasEl, upperCanvasEl);\n      this._applyCanvasStyle(upperCanvasEl);\n      this.contextTop = upperCanvasEl.getContext('2d');\n    },\n\n    /**\n     * @private\n     */\n    _createCacheCanvas: function () {\n      this.cacheCanvasEl = this._createCanvasElement();\n      this.cacheCanvasEl.setAttribute('width', this.width);\n      this.cacheCanvasEl.setAttribute('height', this.height);\n      this.contextCache = this.cacheCanvasEl.getContext('2d');\n    },\n\n    /**\n     * @private\n     */\n    _initWrapperElement: function () {\n      this.wrapperEl = fabric.util.wrapElement(this.lowerCanvasEl, 'div', {\n        'class': this.containerClass\n      });\n      fabric.util.setStyle(this.wrapperEl, {\n        width: this.width + 'px',\n        height: this.height + 'px',\n        position: 'relative'\n      });\n      fabric.util.makeElementUnselectable(this.wrapperEl);\n    },\n\n    /**\n     * @private\n     * @param {HTMLElement} element canvas element to apply styles on\n     */\n    _applyCanvasStyle: function (element) {\n      var width = this.width || element.width,\n          height = this.height || element.height;\n\n      fabric.util.setStyle(element, {\n        position: 'absolute',\n        width: width + 'px',\n        height: height + 'px',\n        left: 0,\n        top: 0,\n        'touch-action': this.allowTouchScrolling ? 'manipulation' : 'none',\n        '-ms-touch-action': this.allowTouchScrolling ? 'manipulation' : 'none'\n      });\n      element.width = width;\n      element.height = height;\n      fabric.util.makeElementUnselectable(element);\n    },\n\n    /**\n     * Copy the entire inline style from one element (fromEl) to another (toEl)\n     * @private\n     * @param {Element} fromEl Element style is copied from\n     * @param {Element} toEl Element copied style is applied to\n     */\n    _copyCanvasStyle: function (fromEl, toEl) {\n      toEl.style.cssText = fromEl.style.cssText;\n    },\n\n    /**\n     * Returns context of canvas where object selection is drawn\n     * @return {CanvasRenderingContext2D}\n     */\n    getSelectionContext: function() {\n      return this.contextTop;\n    },\n\n    /**\n     * Returns &lt;canvas> element on which object selection is drawn\n     * @return {HTMLCanvasElement}\n     */\n    getSelectionElement: function () {\n      return this.upperCanvasEl;\n    },\n\n    /**\n     * Returns currently active object\n     * @return {fabric.Object} active object\n     */\n    getActiveObject: function () {\n      return this._activeObject;\n    },\n\n    /**\n     * Returns an array with the current selected objects\n     * @return {fabric.Object} active object\n     */\n    getActiveObjects: function () {\n      var active = this._activeObject;\n      if (active) {\n        if (active.type === 'activeSelection' && active._objects) {\n          return active._objects.slice(0);\n        }\n        else {\n          return [active];\n        }\n      }\n      return [];\n    },\n\n    /**\n     * @private\n     * @param {fabric.Object} obj Object that was removed\n     */\n    _onObjectRemoved: function(obj) {\n      // removing active object should fire \"selection:cleared\" events\n      if (obj === this._activeObject) {\n        this.fire('before:selection:cleared', { target: obj });\n        this._discardActiveObject();\n        this.fire('selection:cleared', { target: obj });\n        obj.fire('deselected');\n      }\n      if (obj === this._hoveredTarget){\n        this._hoveredTarget = null;\n        this._hoveredTargets = [];\n      }\n      this.callSuper('_onObjectRemoved', obj);\n    },\n\n    /**\n     * @private\n     * Compares the old activeObject with the current one and fires correct events\n     * @param {fabric.Object} obj old activeObject\n     */\n    _fireSelectionEvents: function(oldObjects, e) {\n      var somethingChanged = false, objects = this.getActiveObjects(),\n          added = [], removed = [];\n      oldObjects.forEach(function(oldObject) {\n        if (objects.indexOf(oldObject) === -1) {\n          somethingChanged = true;\n          oldObject.fire('deselected', {\n            e: e,\n            target: oldObject\n          });\n          removed.push(oldObject);\n        }\n      });\n      objects.forEach(function(object) {\n        if (oldObjects.indexOf(object) === -1) {\n          somethingChanged = true;\n          object.fire('selected', {\n            e: e,\n            target: object\n          });\n          added.push(object);\n        }\n      });\n      if (oldObjects.length > 0 && objects.length > 0) {\n        somethingChanged && this.fire('selection:updated', {\n          e: e,\n          selected: added,\n          deselected: removed,\n          // added for backward compatibility\n          // deprecated\n          updated: added[0] || removed[0],\n          target: this._activeObject,\n        });\n      }\n      else if (objects.length > 0) {\n        this.fire('selection:created', {\n          e: e,\n          selected: added,\n          target: this._activeObject,\n        });\n      }\n      else if (oldObjects.length > 0) {\n        this.fire('selection:cleared', {\n          e: e,\n          deselected: removed,\n        });\n      }\n    },\n\n    /**\n     * Sets given object as the only active object on canvas\n     * @param {fabric.Object} object Object to set as an active one\n     * @param {Event} [e] Event (passed along when firing \"object:selected\")\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    setActiveObject: function (object, e) {\n      var currentActives = this.getActiveObjects();\n      this._setActiveObject(object, e);\n      this._fireSelectionEvents(currentActives, e);\n      return this;\n    },\n\n    /**\n     * This is a private method for now.\n     * This is supposed to be equivalent to setActiveObject but without firing\n     * any event. There is commitment to have this stay this way.\n     * This is the functional part of setActiveObject.\n     * @private\n     * @param {Object} object to set as active\n     * @param {Event} [e] Event (passed along when firing \"object:selected\")\n     * @return {Boolean} true if the selection happened\n     */\n    _setActiveObject: function(object, e) {\n      if (this._activeObject === object) {\n        return false;\n      }\n      if (!this._discardActiveObject(e, object)) {\n        return false;\n      }\n      if (object.onSelect({ e: e })) {\n        return false;\n      }\n      this._activeObject = object;\n      return true;\n    },\n\n    /**\n     * This is a private method for now.\n     * This is supposed to be equivalent to discardActiveObject but without firing\n     * any events. There is commitment to have this stay this way.\n     * This is the functional part of discardActiveObject.\n     * @param {Event} [e] Event (passed along when firing \"object:deselected\")\n     * @param {Object} object to set as active\n     * @return {Boolean} true if the selection happened\n     * @private\n     */\n    _discardActiveObject: function(e, object) {\n      var obj = this._activeObject;\n      if (obj) {\n        // onDeselect return TRUE to cancel selection;\n        if (obj.onDeselect({ e: e, object: object })) {\n          return false;\n        }\n        this._activeObject = null;\n      }\n      return true;\n    },\n\n    /**\n     * Discards currently active object and fire events. If the function is called by fabric\n     * as a consequence of a mouse event, the event is passed as a parameter and\n     * sent to the fire function for the custom events. When used as a method the\n     * e param does not have any application.\n     * @param {event} e\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    discardActiveObject: function (e) {\n      var currentActives = this.getActiveObjects(), activeObject = this.getActiveObject();\n      if (currentActives.length) {\n        this.fire('before:selection:cleared', { target: activeObject, e: e });\n      }\n      this._discardActiveObject(e);\n      this._fireSelectionEvents(currentActives, e);\n      return this;\n    },\n\n    /**\n     * Clears a canvas element and removes all event listeners\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    dispose: function () {\n      var wrapper = this.wrapperEl;\n      this.removeListeners();\n      wrapper.removeChild(this.upperCanvasEl);\n      wrapper.removeChild(this.lowerCanvasEl);\n      this.contextCache = null;\n      this.contextTop = null;\n      ['upperCanvasEl', 'cacheCanvasEl'].forEach((function(element) {\n        fabric.util.cleanUpJsdomNode(this[element]);\n        this[element] = undefined;\n      }).bind(this));\n      if (wrapper.parentNode) {\n        wrapper.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl);\n      }\n      delete this.wrapperEl;\n      fabric.StaticCanvas.prototype.dispose.call(this);\n      return this;\n    },\n\n    /**\n     * Clears all contexts (background, main, top) of an instance\n     * @return {fabric.Canvas} thisArg\n     * @chainable\n     */\n    clear: function () {\n      // this.discardActiveGroup();\n      this.discardActiveObject();\n      this.clearContext(this.contextTop);\n      return this.callSuper('clear');\n    },\n\n    /**\n     * Draws objects' controls (borders/controls)\n     * @param {CanvasRenderingContext2D} ctx Context to render controls on\n     */\n    drawControls: function(ctx) {\n      var activeObject = this._activeObject;\n\n      if (activeObject) {\n        activeObject._renderControls(ctx);\n      }\n    },\n\n    /**\n     * @private\n     */\n    _toObject: function(instance, methodName, propertiesToInclude) {\n      //If the object is part of the current selection group, it should\n      //be transformed appropriately\n      //i.e. it should be serialised as it would appear if the selection group\n      //were to be destroyed.\n      var originalProperties = this._realizeGroupTransformOnObject(instance),\n          object = this.callSuper('_toObject', instance, methodName, propertiesToInclude);\n      //Undo the damage we did by changing all of its properties\n      this._unwindGroupTransformOnObject(instance, originalProperties);\n      return object;\n    },\n\n    /**\n     * Realises an object's group transformation on it\n     * @private\n     * @param {fabric.Object} [instance] the object to transform (gets mutated)\n     * @returns the original values of instance which were changed\n     */\n    _realizeGroupTransformOnObject: function(instance) {\n      if (instance.group && instance.group.type === 'activeSelection' && this._activeObject === instance.group) {\n        var layoutProps = ['angle', 'flipX', 'flipY', 'left', 'scaleX', 'scaleY', 'skewX', 'skewY', 'top'];\n        //Copy all the positionally relevant properties across now\n        var originalValues = {};\n        layoutProps.forEach(function(prop) {\n          originalValues[prop] = instance[prop];\n        });\n        fabric.util.addTransformToObject(instance, this._activeObject.calcOwnMatrix());\n        return originalValues;\n      }\n      else {\n        return null;\n      }\n    },\n\n    /**\n     * Restores the changed properties of instance\n     * @private\n     * @param {fabric.Object} [instance] the object to un-transform (gets mutated)\n     * @param {Object} [originalValues] the original values of instance, as returned by _realizeGroupTransformOnObject\n     */\n    _unwindGroupTransformOnObject: function(instance, originalValues) {\n      if (originalValues) {\n        instance.set(originalValues);\n      }\n    },\n\n    /**\n     * @private\n     */\n    _setSVGObject: function(markup, instance, reviver) {\n      //If the object is in a selection group, simulate what would happen to that\n      //object when the group is deselected\n      var originalProperties = this._realizeGroupTransformOnObject(instance);\n      this.callSuper('_setSVGObject', markup, instance, reviver);\n      this._unwindGroupTransformOnObject(instance, originalProperties);\n    },\n\n    setViewportTransform: function (vpt) {\n      if (this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing) {\n        this._activeObject.clearContextTop();\n      }\n      fabric.StaticCanvas.prototype.setViewportTransform.call(this, vpt);\n    }\n  });\n\n  // copying static properties manually to work around Opera's bug,\n  // where \"prototype\" property is enumerable and overrides existing prototype\n  for (var prop in fabric.StaticCanvas) {\n    if (prop !== 'prototype') {\n      fabric.Canvas[prop] = fabric.StaticCanvas[prop];\n    }\n  }\n})();\n\n\n(function() {\n\n  var addListener = fabric.util.addListener,\n      removeListener = fabric.util.removeListener,\n      RIGHT_CLICK = 3, MIDDLE_CLICK = 2, LEFT_CLICK = 1,\n      addEventOptions = { passive: false };\n\n  function checkClick(e, value) {\n    return e.button && (e.button === value - 1);\n  }\n\n  fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n    /**\n     * Contains the id of the touch event that owns the fabric transform\n     * @type Number\n     * @private\n     */\n    mainTouchId: null,\n\n    /**\n     * Adds mouse listeners to canvas\n     * @private\n     */\n    _initEventListeners: function () {\n      // in case we initialized the class twice. This should not happen normally\n      // but in some kind of applications where the canvas element may be changed\n      // this is a workaround to having double listeners.\n      this.removeListeners();\n      this._bindEvents();\n      this.addOrRemove(addListener, 'add');\n    },\n\n    /**\n     * return an event prefix pointer or mouse.\n     * @private\n     */\n    _getEventPrefix: function () {\n      return this.enablePointerEvents ? 'pointer' : 'mouse';\n    },\n\n    addOrRemove: function(functor, eventjsFunctor) {\n      var canvasElement = this.upperCanvasEl,\n          eventTypePrefix = this._getEventPrefix();\n      functor(fabric.window, 'resize', this._onResize);\n      functor(canvasElement, eventTypePrefix + 'down', this._onMouseDown);\n      functor(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n      functor(canvasElement, eventTypePrefix + 'out', this._onMouseOut);\n      functor(canvasElement, eventTypePrefix + 'enter', this._onMouseEnter);\n      functor(canvasElement, 'wheel', this._onMouseWheel);\n      functor(canvasElement, 'contextmenu', this._onContextMenu);\n      functor(canvasElement, 'dblclick', this._onDoubleClick);\n      functor(canvasElement, 'dragover', this._onDragOver);\n      functor(canvasElement, 'dragenter', this._onDragEnter);\n      functor(canvasElement, 'dragleave', this._onDragLeave);\n      functor(canvasElement, 'drop', this._onDrop);\n      if (!this.enablePointerEvents) {\n        functor(canvasElement, 'touchstart', this._onTouchStart, addEventOptions);\n      }\n      if (typeof eventjs !== 'undefined' && eventjsFunctor in eventjs) {\n        eventjs[eventjsFunctor](canvasElement, 'gesture', this._onGesture);\n        eventjs[eventjsFunctor](canvasElement, 'drag', this._onDrag);\n        eventjs[eventjsFunctor](canvasElement, 'orientation', this._onOrientationChange);\n        eventjs[eventjsFunctor](canvasElement, 'shake', this._onShake);\n        eventjs[eventjsFunctor](canvasElement, 'longpress', this._onLongPress);\n      }\n    },\n\n    /**\n     * Removes all event listeners\n     */\n    removeListeners: function() {\n      this.addOrRemove(removeListener, 'remove');\n      // if you dispose on a mouseDown, before mouse up, you need to clean document to...\n      var eventTypePrefix = this._getEventPrefix();\n      removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n      removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n      removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n      removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n    },\n\n    /**\n     * @private\n     */\n    _bindEvents: function() {\n      if (this.eventsBound) {\n        // for any reason we pass here twice we do not want to bind events twice.\n        return;\n      }\n      this._onMouseDown = this._onMouseDown.bind(this);\n      this._onTouchStart = this._onTouchStart.bind(this);\n      this._onMouseMove = this._onMouseMove.bind(this);\n      this._onMouseUp = this._onMouseUp.bind(this);\n      this._onTouchEnd = this._onTouchEnd.bind(this);\n      this._onResize = this._onResize.bind(this);\n      this._onGesture = this._onGesture.bind(this);\n      this._onDrag = this._onDrag.bind(this);\n      this._onShake = this._onShake.bind(this);\n      this._onLongPress = this._onLongPress.bind(this);\n      this._onOrientationChange = this._onOrientationChange.bind(this);\n      this._onMouseWheel = this._onMouseWheel.bind(this);\n      this._onMouseOut = this._onMouseOut.bind(this);\n      this._onMouseEnter = this._onMouseEnter.bind(this);\n      this._onContextMenu = this._onContextMenu.bind(this);\n      this._onDoubleClick = this._onDoubleClick.bind(this);\n      this._onDragOver = this._onDragOver.bind(this);\n      this._onDragEnter = this._simpleEventHandler.bind(this, 'dragenter');\n      this._onDragLeave = this._simpleEventHandler.bind(this, 'dragleave');\n      this._onDrop = this._simpleEventHandler.bind(this, 'drop');\n      this.eventsBound = true;\n    },\n\n    /**\n     * @private\n     * @param {Event} [e] Event object fired on Event.js gesture\n     * @param {Event} [self] Inner Event object\n     */\n    _onGesture: function(e, self) {\n      this.__onTransformGesture && this.__onTransformGesture(e, self);\n    },\n\n    /**\n     * @private\n     * @param {Event} [e] Event object fired on Event.js drag\n     * @param {Event} [self] Inner Event object\n     */\n    _onDrag: function(e, self) {\n      this.__onDrag && this.__onDrag(e, self);\n    },\n\n    /**\n     * @private\n     * @param {Event} [e] Event object fired on wheel event\n     */\n    _onMouseWheel: function(e) {\n      this.__onMouseWheel(e);\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mousedown\n     */\n    _onMouseOut: function(e) {\n      var target = this._hoveredTarget;\n      this.fire('mouse:out', { target: target, e: e });\n      this._hoveredTarget = null;\n      target && target.fire('mouseout', { e: e });\n\n      var _this = this;\n      this._hoveredTargets.forEach(function(_target){\n        _this.fire('mouse:out', { target: target, e: e });\n        _target && target.fire('mouseout', { e: e });\n      });\n      this._hoveredTargets = [];\n\n      if (this._iTextInstances) {\n        this._iTextInstances.forEach(function(obj) {\n          if (obj.isEditing) {\n            obj.hiddenTextarea.focus();\n          }\n        });\n      }\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mouseenter\n     */\n    _onMouseEnter: function(e) {\n      // This find target and consequent 'mouse:over' is used to\n      // clear old instances on hovered target.\n      // calling findTarget has the side effect of killing target.__corner.\n      // as a short term fix we are not firing this if we are currently transforming.\n      // as a long term fix we need to separate the action of finding a target with the\n      // side effects we added to it.\n      if (!this._currentTransform && !this.findTarget(e)) {\n        this.fire('mouse:over', { target: null, e: e });\n        this._hoveredTarget = null;\n        this._hoveredTargets = [];\n      }\n    },\n\n    /**\n     * @private\n     * @param {Event} [e] Event object fired on Event.js orientation change\n     * @param {Event} [self] Inner Event object\n     */\n    _onOrientationChange: function(e, self) {\n      this.__onOrientationChange && this.__onOrientationChange(e, self);\n    },\n\n    /**\n     * @private\n     * @param {Event} [e] Event object fired on Event.js shake\n     * @param {Event} [self] Inner Event object\n     */\n    _onShake: function(e, self) {\n      this.__onShake && this.__onShake(e, self);\n    },\n\n    /**\n     * @private\n     * @param {Event} [e] Event object fired on Event.js shake\n     * @param {Event} [self] Inner Event object\n     */\n    _onLongPress: function(e, self) {\n      this.__onLongPress && this.__onLongPress(e, self);\n    },\n\n    /**\n     * prevent default to allow drop event to be fired\n     * @private\n     * @param {Event} [e] Event object fired on Event.js shake\n     */\n    _onDragOver: function(e) {\n      e.preventDefault();\n      var target = this._simpleEventHandler('dragover', e);\n      this._fireEnterLeaveEvents(target, e);\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mousedown\n     */\n    _onContextMenu: function (e) {\n      if (this.stopContextMenu) {\n        e.stopPropagation();\n        e.preventDefault();\n      }\n      return false;\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mousedown\n     */\n    _onDoubleClick: function (e) {\n      this._cacheTransformEventData(e);\n      this._handleEvent(e, 'dblclick');\n      this._resetTransformEventData(e);\n    },\n\n    /**\n     * Return a the id of an event.\n     * returns either the pointerId or the identifier or 0 for the mouse event\n     * @private\n     * @param {Event} evt Event object\n     */\n    getPointerId: function(evt) {\n      var changedTouches = evt.changedTouches;\n\n      if (changedTouches) {\n        return changedTouches[0] && changedTouches[0].identifier;\n      }\n\n      if (this.enablePointerEvents) {\n        return evt.pointerId;\n      }\n\n      return -1;\n    },\n\n    /**\n     * Determines if an event has the id of the event that is considered main\n     * @private\n     * @param {evt} event Event object\n     */\n    _isMainEvent: function(evt) {\n      if (evt.isPrimary === true) {\n        return true;\n      }\n      if (evt.isPrimary === false) {\n        return false;\n      }\n      if (evt.type === 'touchend' && evt.touches.length === 0) {\n        return true;\n      }\n      if (evt.changedTouches) {\n        return evt.changedTouches[0].identifier === this.mainTouchId;\n      }\n      return true;\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mousedown\n     */\n    _onTouchStart: function(e) {\n      e.preventDefault();\n      if (this.mainTouchId === null) {\n        this.mainTouchId = this.getPointerId(e);\n      }\n      this.__onMouseDown(e);\n      this._resetTransformEventData();\n      var canvasElement = this.upperCanvasEl,\n          eventTypePrefix = this._getEventPrefix();\n      addListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n      addListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n      // Unbind mousedown to prevent double triggers from touch devices\n      removeListener(canvasElement, eventTypePrefix + 'down', this._onMouseDown);\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mousedown\n     */\n    _onMouseDown: function (e) {\n      this.__onMouseDown(e);\n      this._resetTransformEventData();\n      var canvasElement = this.upperCanvasEl,\n          eventTypePrefix = this._getEventPrefix();\n      removeListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n      addListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n      addListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mousedown\n     */\n    _onTouchEnd: function(e) {\n      if (e.touches.length > 0) {\n        // if there are still touches stop here\n        return;\n      }\n      this.__onMouseUp(e);\n      this._resetTransformEventData();\n      this.mainTouchId = null;\n      var eventTypePrefix = this._getEventPrefix();\n      removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n      removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n      var _this = this;\n      if (this._willAddMouseDown) {\n        clearTimeout(this._willAddMouseDown);\n      }\n      this._willAddMouseDown = setTimeout(function() {\n        // Wait 400ms before rebinding mousedown to prevent double triggers\n        // from touch devices\n        addListener(_this.upperCanvasEl, eventTypePrefix + 'down', _this._onMouseDown);\n        _this._willAddMouseDown = 0;\n      }, 400);\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mouseup\n     */\n    _onMouseUp: function (e) {\n      this.__onMouseUp(e);\n      this._resetTransformEventData();\n      var canvasElement = this.upperCanvasEl,\n          eventTypePrefix = this._getEventPrefix();\n      if (this._isMainEvent(e)) {\n        removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n        removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n        addListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n      }\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mousemove\n     */\n    _onMouseMove: function (e) {\n      !this.allowTouchScrolling && e.preventDefault && e.preventDefault();\n      this.__onMouseMove(e);\n    },\n\n    /**\n     * @private\n     */\n    _onResize: function () {\n      this.calcOffset();\n    },\n\n    /**\n     * Decides whether the canvas should be redrawn in mouseup and mousedown events.\n     * @private\n     * @param {Object} target\n     */\n    _shouldRender: function(target) {\n      var activeObject = this._activeObject;\n\n      if (\n        !!activeObject !== !!target ||\n        (activeObject && target && (activeObject !== target))\n      ) {\n        // this covers: switch of target, from target to no target, selection of target\n        // multiSelection with key and mouse\n        return true;\n      }\n      else if (activeObject && activeObject.isEditing) {\n        // if we mouse up/down over a editing textbox a cursor change,\n        // there is no need to re render\n        return false;\n      }\n      return false;\n    },\n\n    /**\n     * Method that defines the actions when mouse is released on canvas.\n     * The method resets the currentTransform parameters, store the image corner\n     * position in the image object and render the canvas on top.\n     * @private\n     * @param {Event} e Event object fired on mouseup\n     */\n    __onMouseUp: function (e) {\n      var target, transform = this._currentTransform,\n          groupSelector = this._groupSelector, shouldRender = false,\n          isClick = (!groupSelector || (groupSelector.left === 0 && groupSelector.top === 0));\n      this._cacheTransformEventData(e);\n      target = this._target;\n      this._handleEvent(e, 'up:before');\n      // if right/middle click just fire events and return\n      // target undefined will make the _handleEvent search the target\n      if (checkClick(e, RIGHT_CLICK)) {\n        if (this.fireRightClick) {\n          this._handleEvent(e, 'up', RIGHT_CLICK, isClick);\n        }\n        return;\n      }\n\n      if (checkClick(e, MIDDLE_CLICK)) {\n        if (this.fireMiddleClick) {\n          this._handleEvent(e, 'up', MIDDLE_CLICK, isClick);\n        }\n        this._resetTransformEventData();\n        return;\n      }\n\n      if (this.isDrawingMode && this._isCurrentlyDrawing) {\n        this._onMouseUpInDrawingMode(e);\n        return;\n      }\n\n      if (!this._isMainEvent(e)) {\n        return;\n      }\n      if (transform) {\n        this._finalizeCurrentTransform(e);\n        shouldRender = transform.actionPerformed;\n      }\n      if (!isClick) {\n        var targetWasActive = target === this._activeObject;\n        this._maybeGroupObjects(e);\n        if (!shouldRender) {\n          shouldRender = (\n            this._shouldRender(target) ||\n            (!targetWasActive && target === this._activeObject)\n          );\n        }\n      }\n      if (target) {\n        if (target.selectable && target !== this._activeObject && target.activeOn === 'up') {\n          this.setActiveObject(target, e);\n          shouldRender = true;\n        }\n        else {\n          var corner = target._findTargetCorner(\n            this.getPointer(e, true),\n            fabric.util.isTouchEvent(e)\n          );\n          var control = target.controls[corner],\n              mouseUpHandler = control && control.getMouseUpHandler(e, target, control);\n          if (mouseUpHandler) {\n            var pointer = this.getPointer(e);\n            mouseUpHandler(e, transform, pointer.x, pointer.y);\n          }\n        }\n        target.isMoving = false;\n      }\n      this._setCursorFromEvent(e, target);\n      this._handleEvent(e, 'up', LEFT_CLICK, isClick);\n      this._groupSelector = null;\n      this._currentTransform = null;\n      // reset the target information about which corner is selected\n      target && (target.__corner = 0);\n      if (shouldRender) {\n        this.requestRenderAll();\n      }\n      else if (!isClick) {\n        this.renderTop();\n      }\n    },\n\n    /**\n     * @private\n     * Handle event firing for target and subtargets\n     * @param {Event} e event from mouse\n     * @param {String} eventType event to fire (up, down or move)\n     * @return {Fabric.Object} target return the the target found, for internal reasons.\n     */\n    _simpleEventHandler: function(eventType, e) {\n      var target = this.findTarget(e),\n          targets = this.targets,\n          options = {\n            e: e,\n            target: target,\n            subTargets: targets,\n          };\n      this.fire(eventType, options);\n      target && target.fire(eventType, options);\n      if (!targets) {\n        return target;\n      }\n      for (var i = 0; i < targets.length; i++) {\n        targets[i].fire(eventType, options);\n      }\n      return target;\n    },\n\n    /**\n     * @private\n     * Handle event firing for target and subtargets\n     * @param {Event} e event from mouse\n     * @param {String} eventType event to fire (up, down or move)\n     * @param {fabric.Object} targetObj receiving event\n     * @param {Number} [button] button used in the event 1 = left, 2 = middle, 3 = right\n     * @param {Boolean} isClick for left button only, indicates that the mouse up happened without move.\n     */\n    _handleEvent: function(e, eventType, button, isClick) {\n      var target = this._target,\n          targets = this.targets || [],\n          options = {\n            e: e,\n            target: target,\n            subTargets: targets,\n            button: button || LEFT_CLICK,\n            isClick: isClick || false,\n            pointer: this._pointer,\n            absolutePointer: this._absolutePointer,\n            transform: this._currentTransform\n          };\n      if (eventType === 'up') {\n        options.currentTarget = this.findTarget(e);\n        options.currentSubTargets = this.targets;\n      }\n      this.fire('mouse:' + eventType, options);\n      target && target.fire('mouse' + eventType, options);\n      for (var i = 0; i < targets.length; i++) {\n        targets[i].fire('mouse' + eventType, options);\n      }\n    },\n\n    /**\n     * @private\n     * @param {Event} e send the mouse event that generate the finalize down, so it can be used in the event\n     */\n    _finalizeCurrentTransform: function(e) {\n\n      var transform = this._currentTransform,\n          target = transform.target,\n          eventName,\n          options = {\n            e: e,\n            target: target,\n            transform: transform,\n            action: transform.action,\n          };\n\n      if (target._scaling) {\n        target._scaling = false;\n      }\n\n      target.setCoords();\n\n      if (transform.actionPerformed || (this.stateful && target.hasStateChanged())) {\n        if (transform.actionPerformed) {\n          // this is not friendly to the new control api.\n          // is deprecated.\n          eventName = this._addEventOptions(options, transform);\n          this._fire(eventName, options);\n        }\n        this._fire('modified', options);\n      }\n    },\n\n    /**\n     * Mutate option object in order to add by property and give back the event name.\n     * @private\n     * @deprecated since 4.2.0\n     * @param {Object} options to mutate\n     * @param {Object} transform to inspect action from\n     */\n    _addEventOptions: function(options, transform) {\n      // we can probably add more details at low cost\n      // scale change, rotation changes, translation changes\n      var eventName, by;\n      switch (transform.action) {\n        case 'scaleX':\n          eventName = 'scaled';\n          by = 'x';\n          break;\n        case 'scaleY':\n          eventName = 'scaled';\n          by = 'y';\n          break;\n        case 'skewX':\n          eventName = 'skewed';\n          by = 'x';\n          break;\n        case 'skewY':\n          eventName = 'skewed';\n          by = 'y';\n          break;\n        case 'scale':\n          eventName = 'scaled';\n          by = 'equally';\n          break;\n        case 'rotate':\n          eventName = 'rotated';\n          break;\n        case 'drag':\n          eventName = 'moved';\n          break;\n      }\n      options.by = by;\n      return eventName;\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mousedown\n     */\n    _onMouseDownInDrawingMode: function(e) {\n      this._isCurrentlyDrawing = true;\n      if (this.getActiveObject()) {\n        this.discardActiveObject(e).requestRenderAll();\n      }\n      var pointer = this.getPointer(e);\n      this.freeDrawingBrush.onMouseDown(pointer, { e: e, pointer: pointer });\n      this._handleEvent(e, 'down');\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mousemove\n     */\n    _onMouseMoveInDrawingMode: function(e) {\n      if (this._isCurrentlyDrawing) {\n        var pointer = this.getPointer(e);\n        this.freeDrawingBrush.onMouseMove(pointer, { e: e, pointer: pointer });\n      }\n      this.setCursor(this.freeDrawingCursor);\n      this._handleEvent(e, 'move');\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object fired on mouseup\n     */\n    _onMouseUpInDrawingMode: function(e) {\n      var pointer = this.getPointer(e);\n      this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({ e: e, pointer: pointer });\n      this._handleEvent(e, 'up');\n    },\n\n    /**\n     * Method that defines the actions when mouse is clicked on canvas.\n     * The method inits the currentTransform parameters and renders all the\n     * canvas so the current image can be placed on the top canvas and the rest\n     * in on the container one.\n     * @private\n     * @param {Event} e Event object fired on mousedown\n     */\n    __onMouseDown: function (e) {\n      this._cacheTransformEventData(e);\n      this._handleEvent(e, 'down:before');\n      var target = this._target;\n      // if right click just fire events\n      if (checkClick(e, RIGHT_CLICK)) {\n        if (this.fireRightClick) {\n          this._handleEvent(e, 'down', RIGHT_CLICK);\n        }\n        return;\n      }\n\n      if (checkClick(e, MIDDLE_CLICK)) {\n        if (this.fireMiddleClick) {\n          this._handleEvent(e, 'down', MIDDLE_CLICK);\n        }\n        return;\n      }\n\n      if (this.isDrawingMode) {\n        this._onMouseDownInDrawingMode(e);\n        return;\n      }\n\n      if (!this._isMainEvent(e)) {\n        return;\n      }\n\n      // ignore if some object is being transformed at this moment\n      if (this._currentTransform) {\n        return;\n      }\n\n      var pointer = this._pointer;\n      // save pointer for check in __onMouseUp event\n      this._previousPointer = pointer;\n      var shouldRender = this._shouldRender(target),\n          shouldGroup = this._shouldGroup(e, target);\n      if (this._shouldClearSelection(e, target)) {\n        this.discardActiveObject(e);\n      }\n      else if (shouldGroup) {\n        this._handleGrouping(e, target);\n        target = this._activeObject;\n      }\n\n      if (this.selection && (!target ||\n        (!target.selectable && !target.isEditing && target !== this._activeObject))) {\n        this._groupSelector = {\n          ex: this._absolutePointer.x,\n          ey: this._absolutePointer.y,\n          top: 0,\n          left: 0\n        };\n      }\n\n      if (target) {\n        var alreadySelected = target === this._activeObject;\n        if (target.selectable && target.activeOn === 'down') {\n          this.setActiveObject(target, e);\n        }\n        var corner = target._findTargetCorner(\n          this.getPointer(e, true),\n          fabric.util.isTouchEvent(e)\n        );\n        target.__corner = corner;\n        if (target === this._activeObject && (corner || !shouldGroup)) {\n          this._setupCurrentTransform(e, target, alreadySelected);\n          var control = target.controls[corner],\n              pointer = this.getPointer(e),\n              mouseDownHandler = control && control.getMouseDownHandler(e, target, control);\n          if (mouseDownHandler) {\n            mouseDownHandler(e, this._currentTransform, pointer.x, pointer.y);\n          }\n        }\n      }\n      this._handleEvent(e, 'down');\n      // we must renderAll so that we update the visuals\n      (shouldRender || shouldGroup) && this.requestRenderAll();\n    },\n\n    /**\n     * reset cache form common information needed during event processing\n     * @private\n     */\n    _resetTransformEventData: function() {\n      this._target = null;\n      this._pointer = null;\n      this._absolutePointer = null;\n    },\n\n    /**\n     * Cache common information needed during event processing\n     * @private\n     * @param {Event} e Event object fired on event\n     */\n    _cacheTransformEventData: function(e) {\n      // reset in order to avoid stale caching\n      this._resetTransformEventData();\n      this._pointer = this.getPointer(e, true);\n      this._absolutePointer = this.restorePointerVpt(this._pointer);\n      this._target = this._currentTransform ? this._currentTransform.target : this.findTarget(e) || null;\n    },\n\n    /**\n     * @private\n     */\n    _beforeTransform: function(e) {\n      var t = this._currentTransform;\n      this.stateful && t.target.saveState();\n      this.fire('before:transform', {\n        e: e,\n        transform: t,\n      });\n    },\n\n    /**\n     * Method that defines the actions when mouse is hovering the canvas.\n     * The currentTransform parameter will define whether the user is rotating/scaling/translating\n     * an image or neither of them (only hovering). A group selection is also possible and would cancel\n     * all any other type of action.\n     * In case of an image transformation only the top canvas will be rendered.\n     * @private\n     * @param {Event} e Event object fired on mousemove\n     */\n    __onMouseMove: function (e) {\n      this._handleEvent(e, 'move:before');\n      this._cacheTransformEventData(e);\n      var target, pointer;\n\n      if (this.isDrawingMode) {\n        this._onMouseMoveInDrawingMode(e);\n        return;\n      }\n\n      if (!this._isMainEvent(e)) {\n        return;\n      }\n\n      var groupSelector = this._groupSelector;\n\n      // We initially clicked in an empty area, so we draw a box for multiple selection\n      if (groupSelector) {\n        pointer = this._absolutePointer;\n\n        groupSelector.left = pointer.x - groupSelector.ex;\n        groupSelector.top = pointer.y - groupSelector.ey;\n\n        this.renderTop();\n      }\n      else if (!this._currentTransform) {\n        target = this.findTarget(e) || null;\n        this._setCursorFromEvent(e, target);\n        this._fireOverOutEvents(target, e);\n      }\n      else {\n        this._transformObject(e);\n      }\n      this._handleEvent(e, 'move');\n      this._resetTransformEventData();\n    },\n\n    /**\n     * Manage the mouseout, mouseover events for the fabric object on the canvas\n     * @param {Fabric.Object} target the target where the target from the mousemove event\n     * @param {Event} e Event object fired on mousemove\n     * @private\n     */\n    _fireOverOutEvents: function(target, e) {\n      var _hoveredTarget = this._hoveredTarget,\n          _hoveredTargets = this._hoveredTargets, targets = this.targets,\n          length = Math.max(_hoveredTargets.length, targets.length);\n\n      this.fireSyntheticInOutEvents(target, e, {\n        oldTarget: _hoveredTarget,\n        evtOut: 'mouseout',\n        canvasEvtOut: 'mouse:out',\n        evtIn: 'mouseover',\n        canvasEvtIn: 'mouse:over',\n      });\n      for (var i = 0; i < length; i++){\n        this.fireSyntheticInOutEvents(targets[i], e, {\n          oldTarget: _hoveredTargets[i],\n          evtOut: 'mouseout',\n          evtIn: 'mouseover',\n        });\n      }\n      this._hoveredTarget = target;\n      this._hoveredTargets = this.targets.concat();\n    },\n\n    /**\n     * Manage the dragEnter, dragLeave events for the fabric objects on the canvas\n     * @param {Fabric.Object} target the target where the target from the onDrag event\n     * @param {Event} e Event object fired on ondrag\n     * @private\n     */\n    _fireEnterLeaveEvents: function(target, e) {\n      var _draggedoverTarget = this._draggedoverTarget,\n          _hoveredTargets = this._hoveredTargets, targets = this.targets,\n          length = Math.max(_hoveredTargets.length, targets.length);\n\n      this.fireSyntheticInOutEvents(target, e, {\n        oldTarget: _draggedoverTarget,\n        evtOut: 'dragleave',\n        evtIn: 'dragenter',\n      });\n      for (var i = 0; i < length; i++) {\n        this.fireSyntheticInOutEvents(targets[i], e, {\n          oldTarget: _hoveredTargets[i],\n          evtOut: 'dragleave',\n          evtIn: 'dragenter',\n        });\n      }\n      this._draggedoverTarget = target;\n    },\n\n    /**\n     * Manage the synthetic in/out events for the fabric objects on the canvas\n     * @param {Fabric.Object} target the target where the target from the supported events\n     * @param {Event} e Event object fired\n     * @param {Object} config configuration for the function to work\n     * @param {String} config.targetName property on the canvas where the old target is stored\n     * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out\n     * @param {String} config.evtOut name of the event to fire for out\n     * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in\n     * @param {String} config.evtIn name of the event to fire for in\n     * @private\n     */\n    fireSyntheticInOutEvents: function(target, e, config) {\n      var inOpt, outOpt, oldTarget = config.oldTarget, outFires, inFires,\n          targetChanged = oldTarget !== target, canvasEvtIn = config.canvasEvtIn, canvasEvtOut = config.canvasEvtOut;\n      if (targetChanged) {\n        inOpt = { e: e, target: target, previousTarget: oldTarget };\n        outOpt = { e: e, target: oldTarget, nextTarget: target };\n      }\n      inFires = target && targetChanged;\n      outFires = oldTarget && targetChanged;\n      if (outFires) {\n        canvasEvtOut && this.fire(canvasEvtOut, outOpt);\n        oldTarget.fire(config.evtOut, outOpt);\n      }\n      if (inFires) {\n        canvasEvtIn && this.fire(canvasEvtIn, inOpt);\n        target.fire(config.evtIn, inOpt);\n      }\n    },\n\n    /**\n     * Method that defines actions when an Event Mouse Wheel\n     * @param {Event} e Event object fired on mouseup\n     */\n    __onMouseWheel: function(e) {\n      this._cacheTransformEventData(e);\n      this._handleEvent(e, 'wheel');\n      this._resetTransformEventData();\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event fired on mousemove\n     */\n    _transformObject: function(e) {\n      var pointer = this.getPointer(e),\n          transform = this._currentTransform;\n\n      transform.reset = false;\n      transform.shiftKey = e.shiftKey;\n      transform.altKey = e[this.centeredKey];\n\n      this._performTransformAction(e, transform, pointer);\n      transform.actionPerformed && this.requestRenderAll();\n    },\n\n    /**\n     * @private\n     */\n    _performTransformAction: function(e, transform, pointer) {\n      var x = pointer.x,\n          y = pointer.y,\n          action = transform.action,\n          actionPerformed = false,\n          actionHandler = transform.actionHandler;\n          // this object could be created from the function in the control handlers\n\n\n      if (actionHandler) {\n        actionPerformed = actionHandler(e, transform, x, y);\n      }\n      if (action === 'drag' && actionPerformed) {\n        transform.target.isMoving = true;\n        this.setCursor(transform.target.moveCursor || this.moveCursor);\n      }\n      transform.actionPerformed = transform.actionPerformed || actionPerformed;\n    },\n\n    /**\n     * @private\n     */\n    _fire: fabric.controlsUtils.fireEvent,\n\n    /**\n     * Sets the cursor depending on where the canvas is being hovered.\n     * Note: very buggy in Opera\n     * @param {Event} e Event object\n     * @param {Object} target Object that the mouse is hovering, if so.\n     */\n    _setCursorFromEvent: function (e, target) {\n      if (!target) {\n        this.setCursor(this.defaultCursor);\n        return false;\n      }\n      var hoverCursor = target.hoverCursor || this.hoverCursor,\n          activeSelection = this._activeObject && this._activeObject.type === 'activeSelection' ?\n            this._activeObject : null,\n          // only show proper corner when group selection is not active\n          corner = (!activeSelection || !activeSelection.contains(target))\n          // here we call findTargetCorner always with undefined for the touch parameter.\n          // we assume that if you are using a cursor you do not need to interact with\n          // the bigger touch area.\n                    && target._findTargetCorner(this.getPointer(e, true));\n\n      if (!corner) {\n        if (target.subTargetCheck){\n          // hoverCursor should come from top-most subTarget,\n          // so we walk the array backwards\n          this.targets.concat().reverse().map(function(_target){\n            hoverCursor = _target.hoverCursor || hoverCursor;\n          });\n        }\n        this.setCursor(hoverCursor);\n      }\n      else {\n        this.setCursor(this.getCornerCursor(corner, target, e));\n      }\n    },\n\n    /**\n     * @private\n     */\n    getCornerCursor: function(corner, target, e) {\n      var control = target.controls[corner];\n      return control.cursorStyleHandler(e, control, target);\n    }\n  });\n})();\n\n\n(function() {\n\n  var min = Math.min,\n      max = Math.max;\n\n  fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n    /**\n     * @private\n     * @param {Event} e Event object\n     * @param {fabric.Object} target\n     * @return {Boolean}\n     */\n    _shouldGroup: function(e, target) {\n      var activeObject = this._activeObject;\n      return activeObject && this._isSelectionKeyPressed(e) && target && target.selectable && this.selection &&\n            (activeObject !== target || activeObject.type === 'activeSelection') && !target.onSelect({ e: e });\n    },\n\n    /**\n     * @private\n     * @param {Event} e Event object\n     * @param {fabric.Object} target\n     */\n    _handleGrouping: function (e, target) {\n      var activeObject = this._activeObject;\n      // avoid multi select when shift click on a corner\n      if (activeObject.__corner) {\n        return;\n      }\n      if (target === activeObject) {\n        // if it's a group, find target again, using activeGroup objects\n        target = this.findTarget(e, true);\n        // if even object is not found or we are on activeObjectCorner, bail out\n        if (!target || !target.selectable) {\n          return;\n        }\n      }\n      if (activeObject && activeObject.type === 'activeSelection') {\n        this._updateActiveSelection(target, e);\n      }\n      else {\n        this._createActiveSelection(target, e);\n      }\n    },\n\n    /**\n     * @private\n     */\n    _updateActiveSelection: function(target, e) {\n      var activeSelection = this._activeObject,\n          currentActiveObjects = activeSelection._objects.slice(0);\n      if (activeSelection.contains(target)) {\n        activeSelection.removeWithUpdate(target);\n        this._hoveredTarget = target;\n        this._hoveredTargets = this.targets.concat();\n        if (activeSelection.size() === 1) {\n          // activate last remaining object\n          this._setActiveObject(activeSelection.item(0), e);\n        }\n      }\n      else {\n        activeSelection.addWithUpdate(target);\n        this._hoveredTarget = activeSelection;\n        this._hoveredTargets = this.targets.concat();\n      }\n      this._fireSelectionEvents(currentActiveObjects, e);\n    },\n\n    /**\n     * @private\n     */\n    _createActiveSelection: function(target, e) {\n      var currentActives = this.getActiveObjects(), group = this._createGroup(target);\n      this._hoveredTarget = group;\n      // ISSUE 4115: should we consider subTargets here?\n      // this._hoveredTargets = [];\n      // this._hoveredTargets = this.targets.concat();\n      this._setActiveObject(group, e);\n      this._fireSelectionEvents(currentActives, e);\n    },\n\n    /**\n     * @private\n     * @param {Object} target\n     */\n    _createGroup: function(target) {\n      var objects = this._objects,\n          isActiveLower = objects.indexOf(this._activeObject) < objects.indexOf(target),\n          groupObjects = isActiveLower\n            ? [this._activeObject, target]\n            : [target, this._activeObject];\n      this._activeObject.isEditing && this._activeObject.exitEditing();\n      return new fabric.ActiveSelection(groupObjects, {\n        canvas: this\n      });\n    },\n\n    /**\n     * @private\n     * @param {Event} e mouse event\n     */\n    _groupSelectedObjects: function (e) {\n\n      var group = this._collectObjects(e),\n          aGroup;\n\n      // do not create group for 1 element only\n      if (group.length === 1) {\n        this.setActiveObject(group[0], e);\n      }\n      else if (group.length > 1) {\n        aGroup = new fabric.ActiveSelection(group.reverse(), {\n          canvas: this\n        });\n        this.setActiveObject(aGroup, e);\n      }\n    },\n\n    /**\n     * @private\n     */\n    _collectObjects: function(e) {\n      var group = [],\n          currentObject,\n          x1 = this._groupSelector.ex,\n          y1 = this._groupSelector.ey,\n          x2 = x1 + this._groupSelector.left,\n          y2 = y1 + this._groupSelector.top,\n          selectionX1Y1 = new fabric.Point(min(x1, x2), min(y1, y2)),\n          selectionX2Y2 = new fabric.Point(max(x1, x2), max(y1, y2)),\n          allowIntersect = !this.selectionFullyContained,\n          isClick = x1 === x2 && y1 === y2;\n      // we iterate reverse order to collect top first in case of click.\n      for (var i = this._objects.length; i--; ) {\n        currentObject = this._objects[i];\n\n        if (!currentObject || !currentObject.selectable || !currentObject.visible) {\n          continue;\n        }\n\n        if ((allowIntersect && currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2, true)) ||\n            currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2, true) ||\n            (allowIntersect && currentObject.containsPoint(selectionX1Y1, null, true)) ||\n            (allowIntersect && currentObject.containsPoint(selectionX2Y2, null, true))\n        ) {\n          group.push(currentObject);\n          // only add one object if it's a click\n          if (isClick) {\n            break;\n          }\n        }\n      }\n\n      if (group.length > 1) {\n        group = group.filter(function(object) {\n          return !object.onSelect({ e: e });\n        });\n      }\n\n      return group;\n    },\n\n    /**\n     * @private\n     */\n    _maybeGroupObjects: function(e) {\n      if (this.selection && this._groupSelector) {\n        this._groupSelectedObjects(e);\n      }\n      this.setCursor(this.defaultCursor);\n      // clear selection and current transformation\n      this._groupSelector = null;\n    }\n  });\n\n})();\n\n\n(function () {\n  fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n    /**\n     * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately\n     * @param {Object} [options] Options object\n     * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n     * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n     * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent\n     * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n     * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n     * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n     * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n     * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0\n     * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n     * @see {@link http://jsfiddle.net/fabricjs/NfZVb/|jsFiddle demo}\n     * @example <caption>Generate jpeg dataURL with lower quality</caption>\n     * var dataURL = canvas.toDataURL({\n     *   format: 'jpeg',\n     *   quality: 0.8\n     * });\n     * @example <caption>Generate cropped png dataURL (clipping of canvas)</caption>\n     * var dataURL = canvas.toDataURL({\n     *   format: 'png',\n     *   left: 100,\n     *   top: 100,\n     *   width: 200,\n     *   height: 200\n     * });\n     * @example <caption>Generate double scaled png dataURL</caption>\n     * var dataURL = canvas.toDataURL({\n     *   format: 'png',\n     *   multiplier: 2\n     * });\n     */\n    toDataURL: function (options) {\n      options || (options = { });\n\n      var format = options.format || 'png',\n          quality = options.quality || 1,\n          multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? this.getRetinaScaling() : 1),\n          canvasEl = this.toCanvasElement(multiplier, options);\n      return fabric.util.toDataURL(canvasEl, format, quality);\n    },\n\n    /**\n     * Create a new HTMLCanvas element painted with the current canvas content.\n     * No need to resize the actual one or repaint it.\n     * Will transfer object ownership to a new canvas, paint it, and set everything back.\n     * This is an intermediary step used to get to a dataUrl but also it is useful to\n     * create quick image copies of a canvas without passing for the dataUrl string\n     * @param {Number} [multiplier] a zoom factor.\n     * @param {Object} [cropping] Cropping informations\n     * @param {Number} [cropping.left] Cropping left offset.\n     * @param {Number} [cropping.top] Cropping top offset.\n     * @param {Number} [cropping.width] Cropping width.\n     * @param {Number} [cropping.height] Cropping height.\n     */\n    toCanvasElement: function(multiplier, cropping) {\n      multiplier = multiplier || 1;\n      cropping = cropping || { };\n      var scaledWidth = (cropping.width || this.width) * multiplier,\n          scaledHeight = (cropping.height || this.height) * multiplier,\n          zoom = this.getZoom(),\n          originalWidth = this.width,\n          originalHeight = this.height,\n          newZoom = zoom * multiplier,\n          vp = this.viewportTransform,\n          translateX = (vp[4] - (cropping.left || 0)) * multiplier,\n          translateY = (vp[5] - (cropping.top || 0)) * multiplier,\n          originalInteractive = this.interactive,\n          newVp = [newZoom, 0, 0, newZoom, translateX, translateY],\n          originalRetina = this.enableRetinaScaling,\n          canvasEl = fabric.util.createCanvasElement(),\n          originalContextTop = this.contextTop;\n      canvasEl.width = scaledWidth;\n      canvasEl.height = scaledHeight;\n      this.contextTop = null;\n      this.enableRetinaScaling = false;\n      this.interactive = false;\n      this.viewportTransform = newVp;\n      this.width = scaledWidth;\n      this.height = scaledHeight;\n      this.calcViewportBoundaries();\n      this.renderCanvas(canvasEl.getContext('2d'), this._objects);\n      this.viewportTransform = vp;\n      this.width = originalWidth;\n      this.height = originalHeight;\n      this.calcViewportBoundaries();\n      this.interactive = originalInteractive;\n      this.enableRetinaScaling = originalRetina;\n      this.contextTop = originalContextTop;\n      return canvasEl;\n    },\n  });\n\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n  /**\n   * Populates canvas with data from the specified JSON.\n   * JSON format must conform to the one of {@link fabric.Canvas#toJSON}\n   * @param {String|Object} json JSON string or object\n   * @param {Function} callback Callback, invoked when json is parsed\n   *                            and corresponding objects (e.g: {@link fabric.Image})\n   *                            are initialized\n   * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n   * @return {fabric.Canvas} instance\n   * @chainable\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}\n   * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo}\n   * @example <caption>loadFromJSON</caption>\n   * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));\n   * @example <caption>loadFromJSON with reviver</caption>\n   * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) {\n   *   // `o` = json object\n   *   // `object` = fabric.Object instance\n   *   // ... do some stuff ...\n   * });\n   */\n  loadFromJSON: function (json, callback, reviver) {\n    if (!json) {\n      return;\n    }\n\n    // serialize if it wasn't already\n    var serialized = (typeof json === 'string')\n      ? JSON.parse(json)\n      : fabric.util.object.clone(json);\n\n    var _this = this,\n        clipPath = serialized.clipPath,\n        renderOnAddRemove = this.renderOnAddRemove;\n\n    this.renderOnAddRemove = false;\n\n    delete serialized.clipPath;\n\n    this._enlivenObjects(serialized.objects, function (enlivenedObjects) {\n      _this.clear();\n      _this._setBgOverlay(serialized, function () {\n        if (clipPath) {\n          _this._enlivenObjects([clipPath], function (enlivenedCanvasClip) {\n            _this.clipPath = enlivenedCanvasClip[0];\n            _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback);\n          });\n        }\n        else {\n          _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback);\n        }\n      });\n    }, reviver);\n    return this;\n  },\n\n  /**\n   * @private\n   * @param {Object} serialized Object with background and overlay information\n   * @param {Array} restored canvas objects\n   * @param {Function} cached renderOnAddRemove callback\n   * @param {Function} callback Invoked after all background and overlay images/patterns loaded\n   */\n  __setupCanvas: function(serialized, enlivenedObjects, renderOnAddRemove, callback) {\n    var _this = this;\n    enlivenedObjects.forEach(function(obj, index) {\n      // we splice the array just in case some custom classes restored from JSON\n      // will add more object to canvas at canvas init.\n      _this.insertAt(obj, index);\n    });\n    this.renderOnAddRemove = renderOnAddRemove;\n    // remove parts i cannot set as options\n    delete serialized.objects;\n    delete serialized.backgroundImage;\n    delete serialized.overlayImage;\n    delete serialized.background;\n    delete serialized.overlay;\n    // this._initOptions does too many things to just\n    // call it. Normally loading an Object from JSON\n    // create the Object instance. Here the Canvas is\n    // already an instance and we are just loading things over it\n    this._setOptions(serialized);\n    this.renderAll();\n    callback && callback();\n  },\n\n  /**\n   * @private\n   * @param {Object} serialized Object with background and overlay information\n   * @param {Function} callback Invoked after all background and overlay images/patterns loaded\n   */\n  _setBgOverlay: function(serialized, callback) {\n    var loaded = {\n      backgroundColor: false,\n      overlayColor: false,\n      backgroundImage: false,\n      overlayImage: false\n    };\n\n    if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) {\n      callback && callback();\n      return;\n    }\n\n    var cbIfLoaded = function () {\n      if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) {\n        callback && callback();\n      }\n    };\n\n    this.__setBgOverlay('backgroundImage', serialized.backgroundImage, loaded, cbIfLoaded);\n    this.__setBgOverlay('overlayImage', serialized.overlayImage, loaded, cbIfLoaded);\n    this.__setBgOverlay('backgroundColor', serialized.background, loaded, cbIfLoaded);\n    this.__setBgOverlay('overlayColor', serialized.overlay, loaded, cbIfLoaded);\n  },\n\n  /**\n   * @private\n   * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor)\n   * @param {(Object|String)} value Value to set\n   * @param {Object} loaded Set loaded property to true if property is set\n   * @param {Object} callback Callback function to invoke after property is set\n   */\n  __setBgOverlay: function(property, value, loaded, callback) {\n    var _this = this;\n\n    if (!value) {\n      loaded[property] = true;\n      callback && callback();\n      return;\n    }\n\n    if (property === 'backgroundImage' || property === 'overlayImage') {\n      fabric.util.enlivenObjects([value], function(enlivedObject){\n        _this[property] = enlivedObject[0];\n        loaded[property] = true;\n        callback && callback();\n      });\n    }\n    else {\n      this['set' + fabric.util.string.capitalize(property, true)](value, function() {\n        loaded[property] = true;\n        callback && callback();\n      });\n    }\n  },\n\n  /**\n   * @private\n   * @param {Array} objects\n   * @param {Function} callback\n   * @param {Function} [reviver]\n   */\n  _enlivenObjects: function (objects, callback, reviver) {\n    if (!objects || objects.length === 0) {\n      callback && callback([]);\n      return;\n    }\n\n    fabric.util.enlivenObjects(objects, function(enlivenedObjects) {\n      callback && callback(enlivenedObjects);\n    }, null, reviver);\n  },\n\n  /**\n   * @private\n   * @param {String} format\n   * @param {Function} callback\n   */\n  _toDataURL: function (format, callback) {\n    this.clone(function (clone) {\n      callback(clone.toDataURL(format));\n    });\n  },\n\n  /**\n   * @private\n   * @param {String} format\n   * @param {Number} multiplier\n   * @param {Function} callback\n   */\n  _toDataURLWithMultiplier: function (format, multiplier, callback) {\n    this.clone(function (clone) {\n      callback(clone.toDataURLWithMultiplier(format, multiplier));\n    });\n  },\n\n  /**\n   * Clones canvas instance\n   * @param {Object} [callback] Receives cloned instance as a first argument\n   * @param {Array} [properties] Array of properties to include in the cloned canvas and children\n   */\n  clone: function (callback, properties) {\n    var data = JSON.stringify(this.toJSON(properties));\n    this.cloneWithoutData(function(clone) {\n      clone.loadFromJSON(data, function() {\n        callback && callback(clone);\n      });\n    });\n  },\n\n  /**\n   * Clones canvas instance without cloning existing data.\n   * This essentially copies canvas dimensions, clipping properties, etc.\n   * but leaves data empty (so that you can populate it with your own)\n   * @param {Object} [callback] Receives cloned instance as a first argument\n   */\n  cloneWithoutData: function(callback) {\n    var el = fabric.util.createCanvasElement();\n\n    el.width = this.width;\n    el.height = this.height;\n\n    var clone = new fabric.Canvas(el);\n    if (this.backgroundImage) {\n      clone.setBackgroundImage(this.backgroundImage.src, function() {\n        clone.renderAll();\n        callback && callback(clone);\n      });\n      clone.backgroundImageOpacity = this.backgroundImageOpacity;\n      clone.backgroundImageStretch = this.backgroundImageStretch;\n    }\n    else {\n      callback && callback(clone);\n    }\n  }\n});\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      extend = fabric.util.object.extend,\n      clone = fabric.util.object.clone,\n      toFixed = fabric.util.toFixed,\n      capitalize = fabric.util.string.capitalize,\n      degreesToRadians = fabric.util.degreesToRadians,\n      objectCaching = !fabric.isLikelyNode,\n      ALIASING_LIMIT = 2;\n\n  if (fabric.Object) {\n    return;\n  }\n\n  /**\n   * Root object class from which all 2d shape classes inherit from\n   * @class fabric.Object\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#objects}\n   * @see {@link fabric.Object#initialize} for constructor definition\n   *\n   * @fires added\n   * @fires removed\n   *\n   * @fires selected\n   * @fires deselected\n   * @fires modified\n   * @fires modified\n   * @fires moved\n   * @fires scaled\n   * @fires rotated\n   * @fires skewed\n   *\n   * @fires rotating\n   * @fires scaling\n   * @fires moving\n   * @fires skewing\n   *\n   * @fires mousedown\n   * @fires mouseup\n   * @fires mouseover\n   * @fires mouseout\n   * @fires mousewheel\n   * @fires mousedblclick\n   *\n   * @fires dragover\n   * @fires dragenter\n   * @fires dragleave\n   * @fires drop\n   */\n  fabric.Object = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.Object.prototype */ {\n\n    /**\n     * Type of an object (rect, circle, path, etc.).\n     * Note that this property is meant to be read-only and not meant to be modified.\n     * If you modify, certain parts of Fabric (such as JSON loading) won't work correctly.\n     * @type String\n     * @default\n     */\n    type:                     'object',\n\n    /**\n     * Horizontal origin of transformation of an object (one of \"left\", \"right\", \"center\")\n     * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n     * @type String\n     * @default\n     */\n    originX:                  'left',\n\n    /**\n     * Vertical origin of transformation of an object (one of \"top\", \"bottom\", \"center\")\n     * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n     * @type String\n     * @default\n     */\n    originY:                  'top',\n\n    /**\n     * Top position of an object. Note that by default it's relative to object top. You can change this by setting originY={top/center/bottom}\n     * @type Number\n     * @default\n     */\n    top:                      0,\n\n    /**\n     * Left position of an object. Note that by default it's relative to object left. You can change this by setting originX={left/center/right}\n     * @type Number\n     * @default\n     */\n    left:                     0,\n\n    /**\n     * Object width\n     * @type Number\n     * @default\n     */\n    width:                    0,\n\n    /**\n     * Object height\n     * @type Number\n     * @default\n     */\n    height:                   0,\n\n    /**\n     * Object scale factor (horizontal)\n     * @type Number\n     * @default\n     */\n    scaleX:                   1,\n\n    /**\n     * Object scale factor (vertical)\n     * @type Number\n     * @default\n     */\n    scaleY:                   1,\n\n    /**\n     * When true, an object is rendered as flipped horizontally\n     * @type Boolean\n     * @default\n     */\n    flipX:                    false,\n\n    /**\n     * When true, an object is rendered as flipped vertically\n     * @type Boolean\n     * @default\n     */\n    flipY:                    false,\n\n    /**\n     * Opacity of an object\n     * @type Number\n     * @default\n     */\n    opacity:                  1,\n\n    /**\n     * Angle of rotation of an object (in degrees)\n     * @type Number\n     * @default\n     */\n    angle:                    0,\n\n    /**\n     * Angle of skew on x axes of an object (in degrees)\n     * @type Number\n     * @default\n     */\n    skewX:                    0,\n\n    /**\n     * Angle of skew on y axes of an object (in degrees)\n     * @type Number\n     * @default\n     */\n    skewY:                    0,\n\n    /**\n     * Size of object's controlling corners (in pixels)\n     * @type Number\n     * @default\n     */\n    cornerSize:               13,\n\n    /**\n     * Size of object's controlling corners when touch interaction is detected\n     * @type Number\n     * @default\n     */\n    touchCornerSize:               24,\n\n    /**\n     * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill)\n     * @type Boolean\n     * @default\n     */\n    transparentCorners:       true,\n\n    /**\n     * Default cursor value used when hovering over this object on canvas\n     * @type String\n     * @default\n     */\n    hoverCursor:              null,\n\n    /**\n     * Default cursor value used when moving this object on canvas\n     * @type String\n     * @default\n     */\n    moveCursor:               null,\n\n    /**\n     * Padding between object and its controlling borders (in pixels)\n     * @type Number\n     * @default\n     */\n    padding:                  0,\n\n    /**\n     * Color of controlling borders of an object (when it's active)\n     * @type String\n     * @default\n     */\n    borderColor:              'rgb(178,204,255)',\n\n    /**\n     * Array specifying dash pattern of an object's borders (hasBorder must be true)\n     * @since 1.6.2\n     * @type Array\n     */\n    borderDashArray:          null,\n\n    /**\n     * Color of controlling corners of an object (when it's active)\n     * @type String\n     * @default\n     */\n    cornerColor:              'rgb(178,204,255)',\n\n    /**\n     * Color of controlling corners of an object (when it's active and transparentCorners false)\n     * @since 1.6.2\n     * @type String\n     * @default\n     */\n    cornerStrokeColor:        null,\n\n    /**\n     * Specify style of control, 'rect' or 'circle'\n     * @since 1.6.2\n     * @type String\n     */\n    cornerStyle:          'rect',\n\n    /**\n     * Array specifying dash pattern of an object's control (hasBorder must be true)\n     * @since 1.6.2\n     * @type Array\n     */\n    cornerDashArray:          null,\n\n    /**\n     * When true, this object will use center point as the origin of transformation\n     * when being scaled via the controls.\n     * <b>Backwards incompatibility note:</b> This property replaces \"centerTransform\" (Boolean).\n     * @since 1.3.4\n     * @type Boolean\n     * @default\n     */\n    centeredScaling:          false,\n\n    /**\n     * When true, this object will use center point as the origin of transformation\n     * when being rotated via the controls.\n     * <b>Backwards incompatibility note:</b> This property replaces \"centerTransform\" (Boolean).\n     * @since 1.3.4\n     * @type Boolean\n     * @default\n     */\n    centeredRotation:         true,\n\n    /**\n     * Color of object's fill\n     * takes css colors https://www.w3.org/TR/css-color-3/\n     * @type String\n     * @default\n     */\n    fill:                     'rgb(0,0,0)',\n\n    /**\n     * Fill rule used to fill an object\n     * accepted values are nonzero, evenodd\n     * <b>Backwards incompatibility note:</b> This property was used for setting globalCompositeOperation until v1.4.12 (use `fabric.Object#globalCompositeOperation` instead)\n     * @type String\n     * @default\n     */\n    fillRule:                 'nonzero',\n\n    /**\n     * Composite rule used for canvas globalCompositeOperation\n     * @type String\n     * @default\n     */\n    globalCompositeOperation: 'source-over',\n\n    /**\n     * Background color of an object.\n     * takes css colors https://www.w3.org/TR/css-color-3/\n     * @type String\n     * @default\n     */\n    backgroundColor:          '',\n\n    /**\n     * Selection Background color of an object. colored layer behind the object when it is active.\n     * does not mix good with globalCompositeOperation methods.\n     * @type String\n     * @default\n     */\n    selectionBackgroundColor:          '',\n\n    /**\n     * When defined, an object is rendered via stroke and this property specifies its color\n     * takes css colors https://www.w3.org/TR/css-color-3/\n     * @type String\n     * @default\n     */\n    stroke:                   null,\n\n    /**\n     * Width of a stroke used to render this object\n     * @type Number\n     * @default\n     */\n    strokeWidth:              1,\n\n    /**\n     * Array specifying dash pattern of an object's stroke (stroke must be defined)\n     * @type Array\n     */\n    strokeDashArray:          null,\n\n    /**\n     * Line offset of an object's stroke\n     * @type Number\n     * @default\n     */\n    strokeDashOffset: 0,\n\n    /**\n     * Line endings style of an object's stroke (one of \"butt\", \"round\", \"square\")\n     * @type String\n     * @default\n     */\n    strokeLineCap:            'butt',\n\n    /**\n     * Corner style of an object's stroke (one of \"bevel\", \"round\", \"miter\")\n     * @type String\n     * @default\n     */\n    strokeLineJoin:           'miter',\n\n    /**\n     * Maximum miter length (used for strokeLineJoin = \"miter\") of an object's stroke\n     * @type Number\n     * @default\n     */\n    strokeMiterLimit:         4,\n\n    /**\n     * Shadow object representing shadow of this shape\n     * @type fabric.Shadow\n     * @default\n     */\n    shadow:                   null,\n\n    /**\n     * Opacity of object's controlling borders when object is active and moving\n     * @type Number\n     * @default\n     */\n    borderOpacityWhenMoving:  0.4,\n\n    /**\n     * Scale factor of object's controlling borders\n     * bigger number will make a thicker border\n     * border is 1, so this is basically a border thickness\n     * since there is no way to change the border itself.\n     * @type Number\n     * @default\n     */\n    borderScaleFactor:        1,\n\n    /**\n     * Minimum allowed scale value of an object\n     * @type Number\n     * @default\n     */\n    minScaleLimit:            0,\n\n    /**\n     * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection).\n     * But events still fire on it.\n     * @type Boolean\n     * @default\n     */\n    selectable:               true,\n\n    /**\n     * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4\n     * @type Boolean\n     * @default\n     */\n    evented:                  true,\n\n    /**\n     * When set to `false`, an object is not rendered on canvas\n     * @type Boolean\n     * @default\n     */\n    visible:                  true,\n\n    /**\n     * When set to `false`, object's controls are not displayed and can not be used to manipulate object\n     * @type Boolean\n     * @default\n     */\n    hasControls:              true,\n\n    /**\n     * When set to `false`, object's controlling borders are not rendered\n     * @type Boolean\n     * @default\n     */\n    hasBorders:               true,\n\n    /**\n     * When set to `true`, objects are \"found\" on canvas on per-pixel basis rather than according to bounding box\n     * @type Boolean\n     * @default\n     */\n    perPixelTargetFind:       false,\n\n    /**\n     * When `false`, default object's values are not included in its serialization\n     * @type Boolean\n     * @default\n     */\n    includeDefaultValues:     true,\n\n    /**\n     * When `true`, object horizontal movement is locked\n     * @type Boolean\n     * @default\n     */\n    lockMovementX:            false,\n\n    /**\n     * When `true`, object vertical movement is locked\n     * @type Boolean\n     * @default\n     */\n    lockMovementY:            false,\n\n    /**\n     * When `true`, object rotation is locked\n     * @type Boolean\n     * @default\n     */\n    lockRotation:             false,\n\n    /**\n     * When `true`, object horizontal scaling is locked\n     * @type Boolean\n     * @default\n     */\n    lockScalingX:             false,\n\n    /**\n     * When `true`, object vertical scaling is locked\n     * @type Boolean\n     * @default\n     */\n    lockScalingY:             false,\n\n    /**\n     * When `true`, object horizontal skewing is locked\n     * @type Boolean\n     * @default\n     */\n    lockSkewingX:             false,\n\n    /**\n     * When `true`, object vertical skewing is locked\n     * @type Boolean\n     * @default\n     */\n    lockSkewingY:             false,\n\n    /**\n     * When `true`, object cannot be flipped by scaling into negative values\n     * @type Boolean\n     * @default\n     */\n    lockScalingFlip:          false,\n\n    /**\n     * When `true`, object is not exported in OBJECT/JSON\n     * @since 1.6.3\n     * @type Boolean\n     * @default\n     */\n    excludeFromExport:        false,\n\n    /**\n     * When `true`, object is cached on an additional canvas.\n     * When `false`, object is not cached unless necessary ( clipPath )\n     * default to true\n     * @since 1.7.0\n     * @type Boolean\n     * @default true\n     */\n    objectCaching:            objectCaching,\n\n    /**\n     * When `true`, object properties are checked for cache invalidation. In some particular\n     * situation you may want this to be disabled ( spray brush, very big, groups)\n     * or if your application does not allow you to modify properties for groups child you want\n     * to disable it for groups.\n     * default to false\n     * since 1.7.0\n     * @type Boolean\n     * @default false\n     */\n    statefullCache:            false,\n\n    /**\n     * When `true`, cache does not get updated during scaling. The picture will get blocky if scaled\n     * too much and will be redrawn with correct details at the end of scaling.\n     * this setting is performance and application dependant.\n     * default to true\n     * since 1.7.0\n     * @type Boolean\n     * @default true\n     */\n    noScaleCache:              true,\n\n    /**\n     * When `false`, the stoke width will scale with the object.\n     * When `true`, the stroke will always match the exact pixel size entered for stroke width.\n     * default to false\n     * @since 2.6.0\n     * @type Boolean\n     * @default false\n     * @type Boolean\n     * @default false\n     */\n    strokeUniform:              false,\n\n    /**\n     * When set to `true`, object's cache will be rerendered next render call.\n     * since 1.7.0\n     * @type Boolean\n     * @default true\n     */\n    dirty:                true,\n\n    /**\n     * keeps the value of the last hovered corner during mouse move.\n     * 0 is no corner, or 'mt', 'ml', 'mtr' etc..\n     * It should be private, but there is no harm in using it as\n     * a read-only property.\n     * @type number|string|any\n     * @default 0\n     */\n    __corner: 0,\n\n    /**\n     * Determines if the fill or the stroke is drawn first (one of \"fill\" or \"stroke\")\n     * @type String\n     * @default\n     */\n    paintFirst:           'fill',\n\n    /**\n     * When 'down', object is set to active on mousedown/touchstart\n     * When 'up', object is set to active on mouseup/touchend\n     * Experimental. Let's see if this breaks anything before supporting officially\n     * @private\n     * since 4.4.0\n     * @type String\n     * @default 'down'\n     */\n    activeOn:           'down',\n\n    /**\n     * List of properties to consider when checking if state\n     * of an object is changed (fabric.Object#hasStateChanged)\n     * as well as for history (undo/redo) purposes\n     * @type Array\n     */\n    stateProperties: (\n      'top left width height scaleX scaleY flipX flipY originX originY transformMatrix ' +\n      'stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit ' +\n      'angle opacity fill globalCompositeOperation shadow visible backgroundColor ' +\n      'skewX skewY fillRule paintFirst clipPath strokeUniform'\n    ).split(' '),\n\n    /**\n     * List of properties to consider when checking if cache needs refresh\n     * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single\n     * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty\n     * and refreshed at the next render\n     * @type Array\n     */\n    cacheProperties: (\n      'fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform' +\n      ' strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath'\n    ).split(' '),\n\n    /**\n     * List of properties to consider for animating colors.\n     * @type Array\n     */\n    colorProperties: (\n      'fill stroke backgroundColor'\n    ).split(' '),\n\n    /**\n     * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n     * the clipPath object gets used when the object has rendered, and the context is placed in the center\n     * of the object cacheCanvas.\n     * If you want 0,0 of a clipPath to align with an object center, use clipPath.originX/Y to 'center'\n     * @type fabric.Object\n     */\n    clipPath: undefined,\n\n    /**\n     * Meaningful ONLY when the object is used as clipPath.\n     * if true, the clipPath will make the object clip to the outside of the clipPath\n     * since 2.4.0\n     * @type boolean\n     * @default false\n     */\n    inverted: false,\n\n    /**\n     * Meaningful ONLY when the object is used as clipPath.\n     * if true, the clipPath will have its top and left relative to canvas, and will\n     * not be influenced by the object transform. This will make the clipPath relative\n     * to the canvas, but clipping just a particular object.\n     * WARNING this is beta, this feature may change or be renamed.\n     * since 2.4.0\n     * @type boolean\n     * @default false\n     */\n    absolutePositioned: false,\n\n    /**\n     * Constructor\n     * @param {Object} [options] Options object\n     */\n    initialize: function(options) {\n      if (options) {\n        this.setOptions(options);\n      }\n    },\n\n    /**\n     * Create a the canvas used to keep the cached copy of the object\n     * @private\n     */\n    _createCacheCanvas: function() {\n      this._cacheProperties = {};\n      this._cacheCanvas = fabric.util.createCanvasElement();\n      this._cacheContext = this._cacheCanvas.getContext('2d');\n      this._updateCacheCanvas();\n      // if canvas gets created, is empty, so dirty.\n      this.dirty = true;\n    },\n\n    /**\n     * Limit the cache dimensions so that X * Y do not cross fabric.perfLimitSizeTotal\n     * and each side do not cross fabric.cacheSideLimit\n     * those numbers are configurable so that you can get as much detail as you want\n     * making bargain with performances.\n     * @param {Object} dims\n     * @param {Object} dims.width width of canvas\n     * @param {Object} dims.height height of canvas\n     * @param {Object} dims.zoomX zoomX zoom value to unscale the canvas before drawing cache\n     * @param {Object} dims.zoomY zoomY zoom value to unscale the canvas before drawing cache\n     * @return {Object}.width width of canvas\n     * @return {Object}.height height of canvas\n     * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n     * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n     */\n    _limitCacheSize: function(dims) {\n      var perfLimitSizeTotal = fabric.perfLimitSizeTotal,\n          width = dims.width, height = dims.height,\n          max = fabric.maxCacheSideLimit, min = fabric.minCacheSideLimit;\n      if (width <= max && height <= max && width * height <= perfLimitSizeTotal) {\n        if (width < min) {\n          dims.width = min;\n        }\n        if (height < min) {\n          dims.height = min;\n        }\n        return dims;\n      }\n      var ar = width / height, limitedDims = fabric.util.limitDimsByArea(ar, perfLimitSizeTotal),\n          capValue = fabric.util.capValue,\n          x = capValue(min, limitedDims.x, max),\n          y = capValue(min, limitedDims.y, max);\n      if (width > x) {\n        dims.zoomX /= width / x;\n        dims.width = x;\n        dims.capped = true;\n      }\n      if (height > y) {\n        dims.zoomY /= height / y;\n        dims.height = y;\n        dims.capped = true;\n      }\n      return dims;\n    },\n\n    /**\n     * Return the dimension and the zoom level needed to create a cache canvas\n     * big enough to host the object to be cached.\n     * @private\n     * @return {Object}.x width of object to be cached\n     * @return {Object}.y height of object to be cached\n     * @return {Object}.width width of canvas\n     * @return {Object}.height height of canvas\n     * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n     * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n     */\n    _getCacheCanvasDimensions: function() {\n      var objectScale = this.getTotalObjectScaling(),\n          // caculate dimensions without skewing\n          dim = this._getTransformedDimensions(0, 0),\n          neededX = dim.x * objectScale.scaleX / this.scaleX,\n          neededY = dim.y * objectScale.scaleY / this.scaleY;\n      return {\n        // for sure this ALIASING_LIMIT is slightly creating problem\n        // in situation in which the cache canvas gets an upper limit\n        // also objectScale contains already scaleX and scaleY\n        width: neededX + ALIASING_LIMIT,\n        height: neededY + ALIASING_LIMIT,\n        zoomX: objectScale.scaleX,\n        zoomY: objectScale.scaleY,\n        x: neededX,\n        y: neededY\n      };\n    },\n\n    /**\n     * Update width and height of the canvas for cache\n     * returns true or false if canvas needed resize.\n     * @private\n     * @return {Boolean} true if the canvas has been resized\n     */\n    _updateCacheCanvas: function() {\n      var targetCanvas = this.canvas;\n      if (this.noScaleCache && targetCanvas && targetCanvas._currentTransform) {\n        var target = targetCanvas._currentTransform.target,\n            action = targetCanvas._currentTransform.action;\n        if (this === target && action.slice && action.slice(0, 5) === 'scale') {\n          return false;\n        }\n      }\n      var canvas = this._cacheCanvas,\n          dims = this._limitCacheSize(this._getCacheCanvasDimensions()),\n          minCacheSize = fabric.minCacheSideLimit,\n          width = dims.width, height = dims.height, drawingWidth, drawingHeight,\n          zoomX = dims.zoomX, zoomY = dims.zoomY,\n          dimensionsChanged = width !== this.cacheWidth || height !== this.cacheHeight,\n          zoomChanged = this.zoomX !== zoomX || this.zoomY !== zoomY,\n          shouldRedraw = dimensionsChanged || zoomChanged,\n          additionalWidth = 0, additionalHeight = 0, shouldResizeCanvas = false;\n      if (dimensionsChanged) {\n        var canvasWidth = this._cacheCanvas.width,\n            canvasHeight = this._cacheCanvas.height,\n            sizeGrowing = width > canvasWidth || height > canvasHeight,\n            sizeShrinking = (width < canvasWidth * 0.9 || height < canvasHeight * 0.9) &&\n              canvasWidth > minCacheSize && canvasHeight > minCacheSize;\n        shouldResizeCanvas = sizeGrowing || sizeShrinking;\n        if (sizeGrowing && !dims.capped && (width > minCacheSize || height > minCacheSize)) {\n          additionalWidth = width * 0.1;\n          additionalHeight = height * 0.1;\n        }\n      }\n      if (this instanceof fabric.Text && this.path) {\n        shouldRedraw = true;\n        shouldResizeCanvas = true;\n        additionalWidth += this.getHeightOfLine(0) * this.zoomX;\n        additionalHeight += this.getHeightOfLine(0) * this.zoomY;\n      }\n      if (shouldRedraw) {\n        if (shouldResizeCanvas) {\n          canvas.width = Math.ceil(width + additionalWidth);\n          canvas.height = Math.ceil(height + additionalHeight);\n        }\n        else {\n          this._cacheContext.setTransform(1, 0, 0, 1, 0, 0);\n          this._cacheContext.clearRect(0, 0, canvas.width, canvas.height);\n        }\n        drawingWidth = dims.x / 2;\n        drawingHeight = dims.y / 2;\n        this.cacheTranslationX = Math.round(canvas.width / 2 - drawingWidth) + drawingWidth;\n        this.cacheTranslationY = Math.round(canvas.height / 2 - drawingHeight) + drawingHeight;\n        this.cacheWidth = width;\n        this.cacheHeight = height;\n        this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY);\n        this._cacheContext.scale(zoomX, zoomY);\n        this.zoomX = zoomX;\n        this.zoomY = zoomY;\n        return true;\n      }\n      return false;\n    },\n\n    /**\n     * Sets object's properties from options\n     * @param {Object} [options] Options object\n     */\n    setOptions: function(options) {\n      this._setOptions(options);\n      this._initGradient(options.fill, 'fill');\n      this._initGradient(options.stroke, 'stroke');\n      this._initPattern(options.fill, 'fill');\n      this._initPattern(options.stroke, 'stroke');\n    },\n\n    /**\n     * Transforms context when rendering an object\n     * @param {CanvasRenderingContext2D} ctx Context\n     */\n    transform: function(ctx) {\n      var needFullTransform = (this.group && !this.group._transformDone) ||\n         (this.group && this.canvas && ctx === this.canvas.contextTop);\n      var m = this.calcTransformMatrix(!needFullTransform);\n      ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n    },\n\n    /**\n     * Returns an object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} Object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n\n          object = {\n            type:                     this.type,\n            version:                  fabric.version,\n            originX:                  this.originX,\n            originY:                  this.originY,\n            left:                     toFixed(this.left, NUM_FRACTION_DIGITS),\n            top:                      toFixed(this.top, NUM_FRACTION_DIGITS),\n            width:                    toFixed(this.width, NUM_FRACTION_DIGITS),\n            height:                   toFixed(this.height, NUM_FRACTION_DIGITS),\n            fill:                     (this.fill && this.fill.toObject) ? this.fill.toObject() : this.fill,\n            stroke:                   (this.stroke && this.stroke.toObject) ? this.stroke.toObject() : this.stroke,\n            strokeWidth:              toFixed(this.strokeWidth, NUM_FRACTION_DIGITS),\n            strokeDashArray:          this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray,\n            strokeLineCap:            this.strokeLineCap,\n            strokeDashOffset:         this.strokeDashOffset,\n            strokeLineJoin:           this.strokeLineJoin,\n            strokeUniform:            this.strokeUniform,\n            strokeMiterLimit:         toFixed(this.strokeMiterLimit, NUM_FRACTION_DIGITS),\n            scaleX:                   toFixed(this.scaleX, NUM_FRACTION_DIGITS),\n            scaleY:                   toFixed(this.scaleY, NUM_FRACTION_DIGITS),\n            angle:                    toFixed(this.angle, NUM_FRACTION_DIGITS),\n            flipX:                    this.flipX,\n            flipY:                    this.flipY,\n            opacity:                  toFixed(this.opacity, NUM_FRACTION_DIGITS),\n            shadow:                   (this.shadow && this.shadow.toObject) ? this.shadow.toObject() : this.shadow,\n            visible:                  this.visible,\n            backgroundColor:          this.backgroundColor,\n            fillRule:                 this.fillRule,\n            paintFirst:               this.paintFirst,\n            globalCompositeOperation: this.globalCompositeOperation,\n            skewX:                    toFixed(this.skewX, NUM_FRACTION_DIGITS),\n            skewY:                    toFixed(this.skewY, NUM_FRACTION_DIGITS),\n          };\n\n      if (this.clipPath && !this.clipPath.excludeFromExport) {\n        object.clipPath = this.clipPath.toObject(propertiesToInclude);\n        object.clipPath.inverted = this.clipPath.inverted;\n        object.clipPath.absolutePositioned = this.clipPath.absolutePositioned;\n      }\n\n      fabric.util.populateWithProperties(this, object, propertiesToInclude);\n      if (!this.includeDefaultValues) {\n        object = this._removeDefaultValues(object);\n      }\n\n      return object;\n    },\n\n    /**\n     * Returns (dataless) object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} Object representation of an instance\n     */\n    toDatalessObject: function(propertiesToInclude) {\n      // will be overwritten by subclasses\n      return this.toObject(propertiesToInclude);\n    },\n\n    /**\n     * @private\n     * @param {Object} object\n     */\n    _removeDefaultValues: function(object) {\n      var prototype = fabric.util.getKlass(object.type).prototype,\n          stateProperties = prototype.stateProperties;\n      stateProperties.forEach(function(prop) {\n        if (prop === 'left' || prop === 'top') {\n          return;\n        }\n        if (object[prop] === prototype[prop]) {\n          delete object[prop];\n        }\n        var isArray = Object.prototype.toString.call(object[prop]) === '[object Array]' &&\n                      Object.prototype.toString.call(prototype[prop]) === '[object Array]';\n\n        // basically a check for [] === []\n        if (isArray && object[prop].length === 0 && prototype[prop].length === 0) {\n          delete object[prop];\n        }\n      });\n\n      return object;\n    },\n\n    /**\n     * Returns a string representation of an instance\n     * @return {String}\n     */\n    toString: function() {\n      return '#<fabric.' + capitalize(this.type) + '>';\n    },\n\n    /**\n     * Return the object scale factor counting also the group scaling\n     * @return {Object} object with scaleX and scaleY properties\n     */\n    getObjectScaling: function() {\n      // if the object is a top level one, on the canvas, we go for simple aritmetic\n      // otherwise the complex method with angles will return approximations and decimals\n      // and will likely kill the cache when not needed\n      // https://github.com/fabricjs/fabric.js/issues/7157\n      if (!this.group) {\n        return {\n          scaleX: this.scaleX,\n          scaleY: this.scaleY,\n        };\n      }\n      // if we are inside a group total zoom calculation is complex, we defer to generic matrices\n      var options = fabric.util.qrDecompose(this.calcTransformMatrix());\n      return { scaleX: Math.abs(options.scaleX), scaleY: Math.abs(options.scaleY) };\n    },\n\n    /**\n     * Return the object scale factor counting also the group scaling, zoom and retina\n     * @return {Object} object with scaleX and scaleY properties\n     */\n    getTotalObjectScaling: function() {\n      var scale = this.getObjectScaling(), scaleX = scale.scaleX, scaleY = scale.scaleY;\n      if (this.canvas) {\n        var zoom = this.canvas.getZoom();\n        var retina = this.canvas.getRetinaScaling();\n        scaleX *= zoom * retina;\n        scaleY *= zoom * retina;\n      }\n      return { scaleX: scaleX, scaleY: scaleY };\n    },\n\n    /**\n     * Return the object opacity counting also the group property\n     * @return {Number}\n     */\n    getObjectOpacity: function() {\n      var opacity = this.opacity;\n      if (this.group) {\n        opacity *= this.group.getObjectOpacity();\n      }\n      return opacity;\n    },\n\n    /**\n     * @private\n     * @param {String} key\n     * @param {*} value\n     * @return {fabric.Object} thisArg\n     */\n    _set: function(key, value) {\n      var shouldConstrainValue = (key === 'scaleX' || key === 'scaleY'),\n          isChanged = this[key] !== value, groupNeedsUpdate = false;\n\n      if (shouldConstrainValue) {\n        value = this._constrainScale(value);\n      }\n      if (key === 'scaleX' && value < 0) {\n        this.flipX = !this.flipX;\n        value *= -1;\n      }\n      else if (key === 'scaleY' && value < 0) {\n        this.flipY = !this.flipY;\n        value *= -1;\n      }\n      else if (key === 'shadow' && value && !(value instanceof fabric.Shadow)) {\n        value = new fabric.Shadow(value);\n      }\n      else if (key === 'dirty' && this.group) {\n        this.group.set('dirty', value);\n      }\n\n      this[key] = value;\n\n      if (isChanged) {\n        groupNeedsUpdate = this.group && this.group.isOnACache();\n        if (this.cacheProperties.indexOf(key) > -1) {\n          this.dirty = true;\n          groupNeedsUpdate && this.group.set('dirty', true);\n        }\n        else if (groupNeedsUpdate && this.stateProperties.indexOf(key) > -1) {\n          this.group.set('dirty', true);\n        }\n      }\n      return this;\n    },\n\n    /**\n     * This callback function is called by the parent group of an object every\n     * time a non-delegated property changes on the group. It is passed the key\n     * and value as parameters. Not adding in this function's signature to avoid\n     * Travis build error about unused variables.\n     */\n    setOnGroup: function() {\n      // implemented by sub-classes, as needed.\n    },\n\n    /**\n     * Retrieves viewportTransform from Object's canvas if possible\n     * @method getViewportTransform\n     * @memberOf fabric.Object.prototype\n     * @return {Array}\n     */\n    getViewportTransform: function() {\n      if (this.canvas && this.canvas.viewportTransform) {\n        return this.canvas.viewportTransform;\n      }\n      return fabric.iMatrix.concat();\n    },\n\n    /*\n     * @private\n     * return if the object would be visible in rendering\n     * @memberOf fabric.Object.prototype\n     * @return {Boolean}\n     */\n    isNotVisible: function() {\n      return this.opacity === 0 ||\n        (!this.width && !this.height && this.strokeWidth === 0) ||\n        !this.visible;\n    },\n\n    /**\n     * Renders an object on a specified context\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    render: function(ctx) {\n      // do not render if width/height are zeros or object is not visible\n      if (this.isNotVisible()) {\n        return;\n      }\n      if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n        return;\n      }\n      ctx.save();\n      this._setupCompositeOperation(ctx);\n      this.drawSelectionBackground(ctx);\n      this.transform(ctx);\n      this._setOpacity(ctx);\n      this._setShadow(ctx, this);\n      if (this.shouldCache()) {\n        this.renderCache();\n        this.drawCacheOnCanvas(ctx);\n      }\n      else {\n        this._removeCacheCanvas();\n        this.dirty = false;\n        this.drawObject(ctx);\n        if (this.objectCaching && this.statefullCache) {\n          this.saveState({ propertySet: 'cacheProperties' });\n        }\n      }\n      ctx.restore();\n    },\n\n    renderCache: function(options) {\n      options = options || {};\n      if (!this._cacheCanvas) {\n        this._createCacheCanvas();\n      }\n      if (this.isCacheDirty()) {\n        this.statefullCache && this.saveState({ propertySet: 'cacheProperties' });\n        this.drawObject(this._cacheContext, options.forClipping);\n        this.dirty = false;\n      }\n    },\n\n    /**\n     * Remove cacheCanvas and its dimensions from the objects\n     */\n    _removeCacheCanvas: function() {\n      this._cacheCanvas = null;\n      this.cacheWidth = 0;\n      this.cacheHeight = 0;\n    },\n\n    /**\n     * return true if the object will draw a stroke\n     * Does not consider text styles. This is just a shortcut used at rendering time\n     * We want it to be an approximation and be fast.\n     * wrote to avoid extra caching, it has to return true when stroke happens,\n     * can guess when it will not happen at 100% chance, does not matter if it misses\n     * some use case where the stroke is invisible.\n     * @since 3.0.0\n     * @returns Boolean\n     */\n    hasStroke: function() {\n      return this.stroke && this.stroke !== 'transparent' && this.strokeWidth !== 0;\n    },\n\n    /**\n     * return true if the object will draw a fill\n     * Does not consider text styles. This is just a shortcut used at rendering time\n     * We want it to be an approximation and be fast.\n     * wrote to avoid extra caching, it has to return true when fill happens,\n     * can guess when it will not happen at 100% chance, does not matter if it misses\n     * some use case where the fill is invisible.\n     * @since 3.0.0\n     * @returns Boolean\n     */\n    hasFill: function() {\n      return this.fill && this.fill !== 'transparent';\n    },\n\n    /**\n     * When set to `true`, force the object to have its own cache, even if it is inside a group\n     * it may be needed when your object behave in a particular way on the cache and always needs\n     * its own isolated canvas to render correctly.\n     * Created to be overridden\n     * since 1.7.12\n     * @returns Boolean\n     */\n    needsItsOwnCache: function() {\n      if (this.paintFirst === 'stroke' &&\n        this.hasFill() && this.hasStroke() && typeof this.shadow === 'object') {\n        return true;\n      }\n      if (this.clipPath) {\n        return true;\n      }\n      return false;\n    },\n\n    /**\n     * Decide if the object should cache or not. Create its own cache level\n     * objectCaching is a global flag, wins over everything\n     * needsItsOwnCache should be used when the object drawing method requires\n     * a cache step. None of the fabric classes requires it.\n     * Generally you do not cache objects in groups because the group outside is cached.\n     * Read as: cache if is needed, or if the feature is enabled but we are not already caching.\n     * @return {Boolean}\n     */\n    shouldCache: function() {\n      this.ownCaching = this.needsItsOwnCache() || (\n        this.objectCaching &&\n        (!this.group || !this.group.isOnACache())\n      );\n      return this.ownCaching;\n    },\n\n    /**\n     * Check if this object or a child object will cast a shadow\n     * used by Group.shouldCache to know if child has a shadow recursively\n     * @return {Boolean}\n     */\n    willDrawShadow: function() {\n      return !!this.shadow && (this.shadow.offsetX !== 0 || this.shadow.offsetY !== 0);\n    },\n\n    /**\n     * Execute the drawing operation for an object clipPath\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    drawClipPathOnCache: function(ctx) {\n      var path = this.clipPath;\n      ctx.save();\n      // DEBUG: uncomment this line, comment the following\n      // ctx.globalAlpha = 0.4\n      if (path.inverted) {\n        ctx.globalCompositeOperation = 'destination-out';\n      }\n      else {\n        ctx.globalCompositeOperation = 'destination-in';\n      }\n      //ctx.scale(1 / 2, 1 / 2);\n      if (path.absolutePositioned) {\n        var m = fabric.util.invertTransform(this.calcTransformMatrix());\n        ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n      }\n      path.transform(ctx);\n      ctx.scale(1 / path.zoomX, 1 / path.zoomY);\n      ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY);\n      ctx.restore();\n    },\n\n    /**\n     * Execute the drawing operation for an object on a specified context\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    drawObject: function(ctx, forClipping) {\n      var originalFill = this.fill, originalStroke = this.stroke;\n      if (forClipping) {\n        this.fill = 'black';\n        this.stroke = '';\n        this._setClippingProperties(ctx);\n      }\n      else {\n        this._renderBackground(ctx);\n      }\n      this._render(ctx);\n      this._drawClipPath(ctx);\n      this.fill = originalFill;\n      this.stroke = originalStroke;\n    },\n\n    _drawClipPath: function(ctx) {\n      var path = this.clipPath;\n      if (!path) { return; }\n      // needed to setup a couple of variables\n      // path canvas gets overridden with this one.\n      // TODO find a better solution?\n      path.canvas = this.canvas;\n      path.shouldCache();\n      path._transformDone = true;\n      path.renderCache({ forClipping: true });\n      this.drawClipPathOnCache(ctx);\n    },\n\n    /**\n     * Paint the cached copy of the object on the target context.\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    drawCacheOnCanvas: function(ctx) {\n      ctx.scale(1 / this.zoomX, 1 / this.zoomY);\n      ctx.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY);\n    },\n\n    /**\n     * Check if cache is dirty\n     * @param {Boolean} skipCanvas skip canvas checks because this object is painted\n     * on parent canvas.\n     */\n    isCacheDirty: function(skipCanvas) {\n      if (this.isNotVisible()) {\n        return false;\n      }\n      if (this._cacheCanvas && !skipCanvas && this._updateCacheCanvas()) {\n        // in this case the context is already cleared.\n        return true;\n      }\n      else {\n        if (this.dirty ||\n          (this.clipPath && this.clipPath.absolutePositioned) ||\n          (this.statefullCache && this.hasStateChanged('cacheProperties'))\n        ) {\n          if (this._cacheCanvas && !skipCanvas) {\n            var width = this.cacheWidth / this.zoomX;\n            var height = this.cacheHeight / this.zoomY;\n            this._cacheContext.clearRect(-width / 2, -height / 2, width, height);\n          }\n          return true;\n        }\n      }\n      return false;\n    },\n\n    /**\n     * Draws a background for the object big as its untransformed dimensions\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderBackground: function(ctx) {\n      if (!this.backgroundColor) {\n        return;\n      }\n      var dim = this._getNonTransformedDimensions();\n      ctx.fillStyle = this.backgroundColor;\n\n      ctx.fillRect(\n        -dim.x / 2,\n        -dim.y / 2,\n        dim.x,\n        dim.y\n      );\n      // if there is background color no other shadows\n      // should be casted\n      this._removeShadow(ctx);\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _setOpacity: function(ctx) {\n      if (this.group && !this.group._transformDone) {\n        ctx.globalAlpha = this.getObjectOpacity();\n      }\n      else {\n        ctx.globalAlpha *= this.opacity;\n      }\n    },\n\n    _setStrokeStyles: function(ctx, decl) {\n      var stroke = decl.stroke;\n      if (stroke) {\n        ctx.lineWidth = decl.strokeWidth;\n        ctx.lineCap = decl.strokeLineCap;\n        ctx.lineDashOffset = decl.strokeDashOffset;\n        ctx.lineJoin = decl.strokeLineJoin;\n        ctx.miterLimit = decl.strokeMiterLimit;\n        if (stroke.toLive) {\n          if (stroke.gradientUnits === 'percentage' || stroke.gradientTransform || stroke.patternTransform) {\n            // need to transform gradient in a pattern.\n            // this is a slow process. If you are hitting this codepath, and the object\n            // is not using caching, you should consider switching it on.\n            // we need a canvas as big as the current object caching canvas.\n            this._applyPatternForTransformedGradient(ctx, stroke);\n          }\n          else {\n            // is a simple gradient or pattern\n            ctx.strokeStyle = stroke.toLive(ctx, this);\n            this._applyPatternGradientTransform(ctx, stroke);\n          }\n        }\n        else {\n          // is a color\n          ctx.strokeStyle = decl.stroke;\n        }\n      }\n    },\n\n    _setFillStyles: function(ctx, decl) {\n      var fill = decl.fill;\n      if (fill) {\n        if (fill.toLive) {\n          ctx.fillStyle = fill.toLive(ctx, this);\n          this._applyPatternGradientTransform(ctx, decl.fill);\n        }\n        else {\n          ctx.fillStyle = fill;\n        }\n      }\n    },\n\n    _setClippingProperties: function(ctx) {\n      ctx.globalAlpha = 1;\n      ctx.strokeStyle = 'transparent';\n      ctx.fillStyle = '#000000';\n    },\n\n    /**\n     * @private\n     * Sets line dash\n     * @param {CanvasRenderingContext2D} ctx Context to set the dash line on\n     * @param {Array} dashArray array representing dashes\n     */\n    _setLineDash: function(ctx, dashArray) {\n      if (!dashArray || dashArray.length === 0) {\n        return;\n      }\n      // Spec requires the concatenation of two copies the dash list when the number of elements is odd\n      if (1 & dashArray.length) {\n        dashArray.push.apply(dashArray, dashArray);\n      }\n      ctx.setLineDash(dashArray);\n    },\n\n    /**\n     * Renders controls and borders for the object\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {Object} [styleOverride] properties to override the object style\n     */\n    _renderControls: function(ctx, styleOverride) {\n      var vpt = this.getViewportTransform(),\n          matrix = this.calcTransformMatrix(),\n          options, drawBorders, drawControls;\n      styleOverride = styleOverride || { };\n      drawBorders = typeof styleOverride.hasBorders !== 'undefined' ? styleOverride.hasBorders : this.hasBorders;\n      drawControls = typeof styleOverride.hasControls !== 'undefined' ? styleOverride.hasControls : this.hasControls;\n      matrix = fabric.util.multiplyTransformMatrices(vpt, matrix);\n      options = fabric.util.qrDecompose(matrix);\n      ctx.save();\n      ctx.translate(options.translateX, options.translateY);\n      ctx.lineWidth = 1 * this.borderScaleFactor;\n      if (!this.group) {\n        ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n      }\n      ctx.rotate(degreesToRadians(options.angle));\n      if (styleOverride.forActiveSelection || this.group) {\n        drawBorders && this.drawBordersInGroup(ctx, options, styleOverride);\n      }\n      else {\n        drawBorders && this.drawBorders(ctx, styleOverride);\n      }\n      drawControls && this.drawControls(ctx, styleOverride);\n      ctx.restore();\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _setShadow: function(ctx) {\n      if (!this.shadow) {\n        return;\n      }\n\n      var shadow = this.shadow, canvas = this.canvas, scaling,\n          multX = (canvas && canvas.viewportTransform[0]) || 1,\n          multY = (canvas && canvas.viewportTransform[3]) || 1;\n      if (shadow.nonScaling) {\n        scaling = { scaleX: 1, scaleY: 1 };\n      }\n      else {\n        scaling = this.getObjectScaling();\n      }\n      if (canvas && canvas._isRetinaScaling()) {\n        multX *= fabric.devicePixelRatio;\n        multY *= fabric.devicePixelRatio;\n      }\n      ctx.shadowColor = shadow.color;\n      ctx.shadowBlur = shadow.blur * fabric.browserShadowBlurConstant *\n        (multX + multY) * (scaling.scaleX + scaling.scaleY) / 4;\n      ctx.shadowOffsetX = shadow.offsetX * multX * scaling.scaleX;\n      ctx.shadowOffsetY = shadow.offsetY * multY * scaling.scaleY;\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _removeShadow: function(ctx) {\n      if (!this.shadow) {\n        return;\n      }\n\n      ctx.shadowColor = '';\n      ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {Object} filler fabric.Pattern or fabric.Gradient\n     * @return {Object} offset.offsetX offset for text rendering\n     * @return {Object} offset.offsetY offset for text rendering\n     */\n    _applyPatternGradientTransform: function(ctx, filler) {\n      if (!filler || !filler.toLive) {\n        return { offsetX: 0, offsetY: 0 };\n      }\n      var t = filler.gradientTransform || filler.patternTransform;\n      var offsetX = -this.width / 2 + filler.offsetX || 0,\n          offsetY = -this.height / 2 + filler.offsetY || 0;\n\n      if (filler.gradientUnits === 'percentage') {\n        ctx.transform(this.width, 0, 0, this.height, offsetX, offsetY);\n      }\n      else {\n        ctx.transform(1, 0, 0, 1, offsetX, offsetY);\n      }\n      if (t) {\n        ctx.transform(t[0], t[1], t[2], t[3], t[4], t[5]);\n      }\n      return { offsetX: offsetX, offsetY: offsetY };\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderPaintInOrder: function(ctx) {\n      if (this.paintFirst === 'stroke') {\n        this._renderStroke(ctx);\n        this._renderFill(ctx);\n      }\n      else {\n        this._renderFill(ctx);\n        this._renderStroke(ctx);\n      }\n    },\n\n    /**\n     * @private\n     * function that actually render something on the context.\n     * empty here to allow Obects to work on tests to benchmark fabric functionalites\n     * not related to rendering\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _render: function(/* ctx */) {\n\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderFill: function(ctx) {\n      if (!this.fill) {\n        return;\n      }\n\n      ctx.save();\n      this._setFillStyles(ctx, this);\n      if (this.fillRule === 'evenodd') {\n        ctx.fill('evenodd');\n      }\n      else {\n        ctx.fill();\n      }\n      ctx.restore();\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderStroke: function(ctx) {\n      if (!this.stroke || this.strokeWidth === 0) {\n        return;\n      }\n\n      if (this.shadow && !this.shadow.affectStroke) {\n        this._removeShadow(ctx);\n      }\n\n      ctx.save();\n      if (this.strokeUniform && this.group) {\n        var scaling = this.getObjectScaling();\n        ctx.scale(1 / scaling.scaleX, 1 / scaling.scaleY);\n      }\n      else if (this.strokeUniform) {\n        ctx.scale(1 / this.scaleX, 1 / this.scaleY);\n      }\n      this._setLineDash(ctx, this.strokeDashArray);\n      this._setStrokeStyles(ctx, this);\n      ctx.stroke();\n      ctx.restore();\n    },\n\n    /**\n     * This function try to patch the missing gradientTransform on canvas gradients.\n     * transforming a context to transform the gradient, is going to transform the stroke too.\n     * we want to transform the gradient but not the stroke operation, so we create\n     * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\n     * this method has drwabacks: is slow, is in low resolution, needs a patch for when the size\n     * is limited.\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {fabric.Gradient} filler a fabric gradient instance\n     */\n    _applyPatternForTransformedGradient: function(ctx, filler) {\n      var dims = this._limitCacheSize(this._getCacheCanvasDimensions()),\n          pCanvas = fabric.util.createCanvasElement(), pCtx, retinaScaling = this.canvas.getRetinaScaling(),\n          width = dims.x / this.scaleX / retinaScaling, height = dims.y / this.scaleY / retinaScaling;\n      pCanvas.width = width;\n      pCanvas.height = height;\n      pCtx = pCanvas.getContext('2d');\n      pCtx.beginPath(); pCtx.moveTo(0, 0); pCtx.lineTo(width, 0); pCtx.lineTo(width, height);\n      pCtx.lineTo(0, height); pCtx.closePath();\n      pCtx.translate(width / 2, height / 2);\n      pCtx.scale(\n        dims.zoomX / this.scaleX / retinaScaling,\n        dims.zoomY / this.scaleY / retinaScaling\n      );\n      this._applyPatternGradientTransform(pCtx, filler);\n      pCtx.fillStyle = filler.toLive(ctx);\n      pCtx.fill();\n      ctx.translate(-this.width / 2 - this.strokeWidth / 2, -this.height / 2 - this.strokeWidth / 2);\n      ctx.scale(\n        retinaScaling * this.scaleX / dims.zoomX,\n        retinaScaling * this.scaleY / dims.zoomY\n      );\n      ctx.strokeStyle = pCtx.createPattern(pCanvas, 'no-repeat');\n    },\n\n    /**\n     * This function is an helper for svg import. it returns the center of the object in the svg\n     * untransformed coordinates\n     * @private\n     * @return {Object} center point from element coordinates\n     */\n    _findCenterFromElement: function() {\n      return { x: this.left + this.width / 2, y: this.top + this.height / 2 };\n    },\n\n    /**\n     * This function is an helper for svg import. it decompose the transformMatrix\n     * and assign properties to object.\n     * untransformed coordinates\n     * @private\n     * @chainable\n     */\n    _assignTransformMatrixProps: function() {\n      if (this.transformMatrix) {\n        var options = fabric.util.qrDecompose(this.transformMatrix);\n        this.flipX = false;\n        this.flipY = false;\n        this.set('scaleX', options.scaleX);\n        this.set('scaleY', options.scaleY);\n        this.angle = options.angle;\n        this.skewX = options.skewX;\n        this.skewY = 0;\n      }\n    },\n\n    /**\n     * This function is an helper for svg import. it removes the transform matrix\n     * and set to object properties that fabricjs can handle\n     * @private\n     * @param {Object} preserveAspectRatioOptions\n     * @return {thisArg}\n     */\n    _removeTransformMatrix: function(preserveAspectRatioOptions) {\n      var center = this._findCenterFromElement();\n      if (this.transformMatrix) {\n        this._assignTransformMatrixProps();\n        center = fabric.util.transformPoint(center, this.transformMatrix);\n      }\n      this.transformMatrix = null;\n      if (preserveAspectRatioOptions) {\n        this.scaleX *= preserveAspectRatioOptions.scaleX;\n        this.scaleY *= preserveAspectRatioOptions.scaleY;\n        this.cropX = preserveAspectRatioOptions.cropX;\n        this.cropY = preserveAspectRatioOptions.cropY;\n        center.x += preserveAspectRatioOptions.offsetLeft;\n        center.y += preserveAspectRatioOptions.offsetTop;\n        this.width = preserveAspectRatioOptions.width;\n        this.height = preserveAspectRatioOptions.height;\n      }\n      this.setPositionByOrigin(center, 'center', 'center');\n    },\n\n    /**\n     * Clones an instance, using a callback method will work for every object.\n     * @param {Function} callback Callback is invoked with a clone as a first argument\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     */\n    clone: function(callback, propertiesToInclude) {\n      var objectForm = this.toObject(propertiesToInclude);\n      if (this.constructor.fromObject) {\n        this.constructor.fromObject(objectForm, callback);\n      }\n      else {\n        fabric.Object._fromObject('Object', objectForm, callback);\n      }\n    },\n\n    /**\n     * Creates an instance of fabric.Image out of an object\n     * makes use of toCanvasElement.\n     * Once this method was based on toDataUrl and loadImage, so it also had a quality\n     * and format option. toCanvasElement is faster and produce no loss of quality.\n     * If you need to get a real Jpeg or Png from an object, using toDataURL is the right way to do it.\n     * toCanvasElement and then toBlob from the obtained canvas is also a good option.\n     * This method is sync now, but still support the callback because we did not want to break.\n     * When fabricJS 5.0 will be planned, this will probably be changed to not have a callback.\n     * @param {Function} callback callback, invoked with an instance as a first argument\n     * @param {Object} [options] for clone as image, passed to toDataURL\n     * @param {Number} [options.multiplier=1] Multiplier to scale by\n     * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n     * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n     * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n     * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n     * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n     * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n     * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n     * @return {fabric.Object} thisArg\n     */\n    cloneAsImage: function(callback, options) {\n      var canvasEl = this.toCanvasElement(options);\n      if (callback) {\n        callback(new fabric.Image(canvasEl));\n      }\n      return this;\n    },\n\n    /**\n     * Converts an object into a HTMLCanvas element\n     * @param {Object} options Options object\n     * @param {Number} [options.multiplier=1] Multiplier to scale by\n     * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n     * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n     * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n     * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n     * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n     * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n     * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n     * @return {HTMLCanvasElement} Returns DOM element <canvas> with the fabric.Object\n     */\n    toCanvasElement: function(options) {\n      options || (options = { });\n\n      var utils = fabric.util, origParams = utils.saveObjectTransform(this),\n          originalGroup = this.group,\n          originalShadow = this.shadow, abs = Math.abs,\n          multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? fabric.devicePixelRatio : 1);\n      delete this.group;\n      if (options.withoutTransform) {\n        utils.resetObjectTransform(this);\n      }\n      if (options.withoutShadow) {\n        this.shadow = null;\n      }\n\n      var el = fabric.util.createCanvasElement(),\n          // skip canvas zoom and calculate with setCoords now.\n          boundingRect = this.getBoundingRect(true, true),\n          shadow = this.shadow, scaling,\n          shadowOffset = { x: 0, y: 0 }, shadowBlur,\n          width, height;\n\n      if (shadow) {\n        shadowBlur = shadow.blur;\n        if (shadow.nonScaling) {\n          scaling = { scaleX: 1, scaleY: 1 };\n        }\n        else {\n          scaling = this.getObjectScaling();\n        }\n        // consider non scaling shadow.\n        shadowOffset.x = 2 * Math.round(abs(shadow.offsetX) + shadowBlur) * (abs(scaling.scaleX));\n        shadowOffset.y = 2 * Math.round(abs(shadow.offsetY) + shadowBlur) * (abs(scaling.scaleY));\n      }\n      width = boundingRect.width + shadowOffset.x;\n      height = boundingRect.height + shadowOffset.y;\n      // if the current width/height is not an integer\n      // we need to make it so.\n      el.width = Math.ceil(width);\n      el.height = Math.ceil(height);\n      var canvas = new fabric.StaticCanvas(el, {\n        enableRetinaScaling: false,\n        renderOnAddRemove: false,\n        skipOffscreen: false,\n      });\n      if (options.format === 'jpeg') {\n        canvas.backgroundColor = '#fff';\n      }\n      this.setPositionByOrigin(new fabric.Point(canvas.width / 2, canvas.height / 2), 'center', 'center');\n\n      var originalCanvas = this.canvas;\n      canvas.add(this);\n      var canvasEl = canvas.toCanvasElement(multiplier || 1, options);\n      this.shadow = originalShadow;\n      this.set('canvas', originalCanvas);\n      if (originalGroup) {\n        this.group = originalGroup;\n      }\n      this.set(origParams).setCoords();\n      // canvas.dispose will call image.dispose that will nullify the elements\n      // since this canvas is a simple element for the process, we remove references\n      // to objects in this way in order to avoid object trashing.\n      canvas._objects = [];\n      canvas.dispose();\n      canvas = null;\n\n      return canvasEl;\n    },\n\n    /**\n     * Converts an object into a data-url-like string\n     * @param {Object} options Options object\n     * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n     * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n     * @param {Number} [options.multiplier=1] Multiplier to scale by\n     * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n     * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n     * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n     * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n     * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n     * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n     * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n     * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n     */\n    toDataURL: function(options) {\n      options || (options = { });\n      return fabric.util.toDataURL(this.toCanvasElement(options), options.format || 'png', options.quality || 1);\n    },\n\n    /**\n     * Returns true if specified type is identical to the type of an instance\n     * @param {String} type Type to check against\n     * @return {Boolean}\n     */\n    isType: function(type) {\n      return this.type === type;\n    },\n\n    /**\n     * Returns complexity of an instance\n     * @return {Number} complexity of this instance (is 1 unless subclassed)\n     */\n    complexity: function() {\n      return 1;\n    },\n\n    /**\n     * Returns a JSON representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} JSON\n     */\n    toJSON: function(propertiesToInclude) {\n      // delegate, not alias\n      return this.toObject(propertiesToInclude);\n    },\n\n    /**\n     * Sets \"angle\" of an instance with centered rotation\n     * @param {Number} angle Angle value (in degrees)\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    rotate: function(angle) {\n      var shouldCenterOrigin = (this.originX !== 'center' || this.originY !== 'center') && this.centeredRotation;\n\n      if (shouldCenterOrigin) {\n        this._setOriginToCenter();\n      }\n\n      this.set('angle', angle);\n\n      if (shouldCenterOrigin) {\n        this._resetOrigin();\n      }\n\n      return this;\n    },\n\n    /**\n     * Centers object horizontally on canvas to which it was added last.\n     * You might need to call `setCoords` on an object after centering, to update controls area.\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    centerH: function () {\n      this.canvas && this.canvas.centerObjectH(this);\n      return this;\n    },\n\n    /**\n     * Centers object horizontally on current viewport of canvas to which it was added last.\n     * You might need to call `setCoords` on an object after centering, to update controls area.\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    viewportCenterH: function () {\n      this.canvas && this.canvas.viewportCenterObjectH(this);\n      return this;\n    },\n\n    /**\n     * Centers object vertically on canvas to which it was added last.\n     * You might need to call `setCoords` on an object after centering, to update controls area.\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    centerV: function () {\n      this.canvas && this.canvas.centerObjectV(this);\n      return this;\n    },\n\n    /**\n     * Centers object vertically on current viewport of canvas to which it was added last.\n     * You might need to call `setCoords` on an object after centering, to update controls area.\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    viewportCenterV: function () {\n      this.canvas && this.canvas.viewportCenterObjectV(this);\n      return this;\n    },\n\n    /**\n     * Centers object vertically and horizontally on canvas to which is was added last\n     * You might need to call `setCoords` on an object after centering, to update controls area.\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    center: function () {\n      this.canvas && this.canvas.centerObject(this);\n      return this;\n    },\n\n    /**\n     * Centers object on current viewport of canvas to which it was added last.\n     * You might need to call `setCoords` on an object after centering, to update controls area.\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    viewportCenter: function () {\n      this.canvas && this.canvas.viewportCenterObject(this);\n      return this;\n    },\n\n    /**\n     * Returns coordinates of a pointer relative to an object\n     * @param {Event} e Event to operate upon\n     * @param {Object} [pointer] Pointer to operate upon (instead of event)\n     * @return {Object} Coordinates of a pointer (x, y)\n     */\n    getLocalPointer: function(e, pointer) {\n      pointer = pointer || this.canvas.getPointer(e);\n      var pClicked = new fabric.Point(pointer.x, pointer.y),\n          objectLeftTop = this._getLeftTopCoords();\n      if (this.angle) {\n        pClicked = fabric.util.rotatePoint(\n          pClicked, objectLeftTop, degreesToRadians(-this.angle));\n      }\n      return {\n        x: pClicked.x - objectLeftTop.x,\n        y: pClicked.y - objectLeftTop.y\n      };\n    },\n\n    /**\n     * Sets canvas globalCompositeOperation for specific object\n     * custom composition operation for the particular object can be specified using globalCompositeOperation property\n     * @param {CanvasRenderingContext2D} ctx Rendering canvas context\n     */\n    _setupCompositeOperation: function (ctx) {\n      if (this.globalCompositeOperation) {\n        ctx.globalCompositeOperation = this.globalCompositeOperation;\n      }\n    }\n  });\n\n  fabric.util.createAccessors && fabric.util.createAccessors(fabric.Object);\n\n  extend(fabric.Object.prototype, fabric.Observable);\n\n  /**\n   * Defines the number of fraction digits to use when serializing object values.\n   * You can use it to increase/decrease precision of such values like left, top, scaleX, scaleY, etc.\n   * @static\n   * @memberOf fabric.Object\n   * @constant\n   * @type Number\n   */\n  fabric.Object.NUM_FRACTION_DIGITS = 2;\n\n  fabric.Object._fromObject = function(className, object, callback, extraParam) {\n    var klass = fabric[className];\n    object = clone(object, true);\n    fabric.util.enlivenPatterns([object.fill, object.stroke], function(patterns) {\n      if (typeof patterns[0] !== 'undefined') {\n        object.fill = patterns[0];\n      }\n      if (typeof patterns[1] !== 'undefined') {\n        object.stroke = patterns[1];\n      }\n      fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) {\n        object.clipPath = enlivedProps[0];\n        var instance = extraParam ? new klass(object[extraParam], object) : new klass(object);\n        callback && callback(instance);\n      });\n    });\n  };\n\n  /**\n   * Unique id used internally when creating SVG elements\n   * @static\n   * @memberOf fabric.Object\n   * @type Number\n   */\n  fabric.Object.__uid = 0;\n})( true ? exports : undefined);\n\n\n(function() {\n\n  var degreesToRadians = fabric.util.degreesToRadians,\n      originXOffset = {\n        left: -0.5,\n        center: 0,\n        right: 0.5\n      },\n      originYOffset = {\n        top: -0.5,\n        center: 0,\n        bottom: 0.5\n      };\n\n  fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n    /**\n     * Translates the coordinates from a set of origin to another (based on the object's dimensions)\n     * @param {fabric.Point} point The point which corresponds to the originX and originY params\n     * @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right'\n     * @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom'\n     * @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right'\n     * @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom'\n     * @return {fabric.Point}\n     */\n    translateToGivenOrigin: function(point, fromOriginX, fromOriginY, toOriginX, toOriginY) {\n      var x = point.x,\n          y = point.y,\n          offsetX, offsetY, dim;\n\n      if (typeof fromOriginX === 'string') {\n        fromOriginX = originXOffset[fromOriginX];\n      }\n      else {\n        fromOriginX -= 0.5;\n      }\n\n      if (typeof toOriginX === 'string') {\n        toOriginX = originXOffset[toOriginX];\n      }\n      else {\n        toOriginX -= 0.5;\n      }\n\n      offsetX = toOriginX - fromOriginX;\n\n      if (typeof fromOriginY === 'string') {\n        fromOriginY = originYOffset[fromOriginY];\n      }\n      else {\n        fromOriginY -= 0.5;\n      }\n\n      if (typeof toOriginY === 'string') {\n        toOriginY = originYOffset[toOriginY];\n      }\n      else {\n        toOriginY -= 0.5;\n      }\n\n      offsetY = toOriginY - fromOriginY;\n\n      if (offsetX || offsetY) {\n        dim = this._getTransformedDimensions();\n        x = point.x + offsetX * dim.x;\n        y = point.y + offsetY * dim.y;\n      }\n\n      return new fabric.Point(x, y);\n    },\n\n    /**\n     * Translates the coordinates from origin to center coordinates (based on the object's dimensions)\n     * @param {fabric.Point} point The point which corresponds to the originX and originY params\n     * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n     * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n     * @return {fabric.Point}\n     */\n    translateToCenterPoint: function(point, originX, originY) {\n      var p = this.translateToGivenOrigin(point, originX, originY, 'center', 'center');\n      if (this.angle) {\n        return fabric.util.rotatePoint(p, point, degreesToRadians(this.angle));\n      }\n      return p;\n    },\n\n    /**\n     * Translates the coordinates from center to origin coordinates (based on the object's dimensions)\n     * @param {fabric.Point} center The point which corresponds to center of the object\n     * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n     * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n     * @return {fabric.Point}\n     */\n    translateToOriginPoint: function(center, originX, originY) {\n      var p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n      if (this.angle) {\n        return fabric.util.rotatePoint(p, center, degreesToRadians(this.angle));\n      }\n      return p;\n    },\n\n    /**\n     * Returns the real center coordinates of the object\n     * @return {fabric.Point}\n     */\n    getCenterPoint: function() {\n      var leftTop = new fabric.Point(this.left, this.top);\n      return this.translateToCenterPoint(leftTop, this.originX, this.originY);\n    },\n\n    /**\n     * Returns the coordinates of the object based on center coordinates\n     * @param {fabric.Point} point The point which corresponds to the originX and originY params\n     * @return {fabric.Point}\n     */\n    // getOriginPoint: function(center) {\n    //   return this.translateToOriginPoint(center, this.originX, this.originY);\n    // },\n\n    /**\n     * Returns the coordinates of the object as if it has a different origin\n     * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n     * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n     * @return {fabric.Point}\n     */\n    getPointByOrigin: function(originX, originY) {\n      var center = this.getCenterPoint();\n      return this.translateToOriginPoint(center, originX, originY);\n    },\n\n    /**\n     * Returns the point in local coordinates\n     * @param {fabric.Point} point The point relative to the global coordinate system\n     * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n     * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n     * @return {fabric.Point}\n     */\n    toLocalPoint: function(point, originX, originY) {\n      var center = this.getCenterPoint(),\n          p, p2;\n\n      if (typeof originX !== 'undefined' && typeof originY !== 'undefined' ) {\n        p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n      }\n      else {\n        p = new fabric.Point(this.left, this.top);\n      }\n\n      p2 = new fabric.Point(point.x, point.y);\n      if (this.angle) {\n        p2 = fabric.util.rotatePoint(p2, center, -degreesToRadians(this.angle));\n      }\n      return p2.subtractEquals(p);\n    },\n\n    /**\n     * Returns the point in global coordinates\n     * @param {fabric.Point} The point relative to the local coordinate system\n     * @return {fabric.Point}\n     */\n    // toGlobalPoint: function(point) {\n    //   return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top));\n    // },\n\n    /**\n     * Sets the position of the object taking into consideration the object's origin\n     * @param {fabric.Point} pos The new position of the object\n     * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n     * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n     * @return {void}\n     */\n    setPositionByOrigin: function(pos, originX, originY) {\n      var center = this.translateToCenterPoint(pos, originX, originY),\n          position = this.translateToOriginPoint(center, this.originX, this.originY);\n      this.set('left', position.x);\n      this.set('top', position.y);\n    },\n\n    /**\n     * @param {String} to One of 'left', 'center', 'right'\n     */\n    adjustPosition: function(to) {\n      var angle = degreesToRadians(this.angle),\n          hypotFull = this.getScaledWidth(),\n          xFull = fabric.util.cos(angle) * hypotFull,\n          yFull = fabric.util.sin(angle) * hypotFull,\n          offsetFrom, offsetTo;\n\n      //TODO: this function does not consider mixed situation like top, center.\n      if (typeof this.originX === 'string') {\n        offsetFrom = originXOffset[this.originX];\n      }\n      else {\n        offsetFrom = this.originX - 0.5;\n      }\n      if (typeof to === 'string') {\n        offsetTo = originXOffset[to];\n      }\n      else {\n        offsetTo = to - 0.5;\n      }\n      this.left += xFull * (offsetTo - offsetFrom);\n      this.top += yFull * (offsetTo - offsetFrom);\n      this.setCoords();\n      this.originX = to;\n    },\n\n    /**\n     * Sets the origin/position of the object to it's center point\n     * @private\n     * @return {void}\n     */\n    _setOriginToCenter: function() {\n      this._originalOriginX = this.originX;\n      this._originalOriginY = this.originY;\n\n      var center = this.getCenterPoint();\n\n      this.originX = 'center';\n      this.originY = 'center';\n\n      this.left = center.x;\n      this.top = center.y;\n    },\n\n    /**\n     * Resets the origin/position of the object to it's original origin\n     * @private\n     * @return {void}\n     */\n    _resetOrigin: function() {\n      var originPoint = this.translateToOriginPoint(\n        this.getCenterPoint(),\n        this._originalOriginX,\n        this._originalOriginY);\n\n      this.originX = this._originalOriginX;\n      this.originY = this._originalOriginY;\n\n      this.left = originPoint.x;\n      this.top = originPoint.y;\n\n      this._originalOriginX = null;\n      this._originalOriginY = null;\n    },\n\n    /**\n     * @private\n     */\n    _getLeftTopCoords: function() {\n      return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top');\n    },\n  });\n\n})();\n\n\n(function() {\n\n  function arrayFromCoords(coords) {\n    return [\n      new fabric.Point(coords.tl.x, coords.tl.y),\n      new fabric.Point(coords.tr.x, coords.tr.y),\n      new fabric.Point(coords.br.x, coords.br.y),\n      new fabric.Point(coords.bl.x, coords.bl.y)\n    ];\n  }\n\n  var util = fabric.util,\n      degreesToRadians = util.degreesToRadians,\n      multiplyMatrices = util.multiplyTransformMatrices,\n      transformPoint = util.transformPoint;\n\n  util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n    /**\n     * Describe object's corner position in canvas element coordinates.\n     * properties are depending on control keys and padding the main controls.\n     * each property is an object with x, y and corner.\n     * The `corner` property contains in a similar manner the 4 points of the\n     * interactive area of the corner.\n     * The coordinates depends from the controls positionHandler and are used\n     * to draw and locate controls\n     * @memberOf fabric.Object.prototype\n     */\n    oCoords: null,\n\n    /**\n     * Describe object's corner position in canvas object absolute coordinates\n     * properties are tl,tr,bl,br and describe the four main corner.\n     * each property is an object with x, y, instance of Fabric.Point.\n     * The coordinates depends from this properties: width, height, scaleX, scaleY\n     * skewX, skewY, angle, strokeWidth, top, left.\n     * Those coordinates are useful to understand where an object is. They get updated\n     * with oCoords but they do not need to be updated when zoom or panning change.\n     * The coordinates get updated with @method setCoords.\n     * You can calculate them without updating with @method calcACoords();\n     * @memberOf fabric.Object.prototype\n     */\n    aCoords: null,\n\n    /**\n     * Describe object's corner position in canvas element coordinates.\n     * includes padding. Used of object detection.\n     * set and refreshed with setCoords and calcCoords.\n     * @memberOf fabric.Object.prototype\n     */\n    lineCoords: null,\n\n    /**\n     * storage for object transform matrix\n     */\n    ownMatrixCache: null,\n\n    /**\n     * storage for object full transform matrix\n     */\n    matrixCache: null,\n\n    /**\n     * custom controls interface\n     * controls are added by default_controls.js\n     */\n    controls: { },\n\n    /**\n     * return correct set of coordinates for intersection\n     * this will return either aCoords or lineCoords.\n     * @param {Boolean} absolute will return aCoords if true or lineCoords\n     * @return {Object} {tl, tr, br, bl} points\n     */\n    _getCoords: function(absolute, calculate) {\n      if (calculate) {\n        return (absolute ? this.calcACoords() : this.calcLineCoords());\n      }\n      if (!this.aCoords || !this.lineCoords) {\n        this.setCoords(true);\n      }\n      return (absolute ? this.aCoords : this.lineCoords);\n    },\n\n    /**\n     * return correct set of coordinates for intersection\n     * this will return either aCoords or lineCoords.\n     * The coords are returned in an array.\n     * @return {Array} [tl, tr, br, bl] of points\n     */\n    getCoords: function(absolute, calculate) {\n      return arrayFromCoords(this._getCoords(absolute, calculate));\n    },\n\n    /**\n     * Checks if object intersects with an area formed by 2 points\n     * @param {Object} pointTL top-left point of area\n     * @param {Object} pointBR bottom-right point of area\n     * @param {Boolean} [absolute] use coordinates without viewportTransform\n     * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n     * @return {Boolean} true if object intersects with an area formed by 2 points\n     */\n    intersectsWithRect: function(pointTL, pointBR, absolute, calculate) {\n      var coords = this.getCoords(absolute, calculate),\n          intersection = fabric.Intersection.intersectPolygonRectangle(\n            coords,\n            pointTL,\n            pointBR\n          );\n      return intersection.status === 'Intersection';\n    },\n\n    /**\n     * Checks if object intersects with another object\n     * @param {Object} other Object to test\n     * @param {Boolean} [absolute] use coordinates without viewportTransform\n     * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n     * @return {Boolean} true if object intersects with another object\n     */\n    intersectsWithObject: function(other, absolute, calculate) {\n      var intersection = fabric.Intersection.intersectPolygonPolygon(\n        this.getCoords(absolute, calculate),\n        other.getCoords(absolute, calculate)\n      );\n\n      return intersection.status === 'Intersection'\n        || other.isContainedWithinObject(this, absolute, calculate)\n        || this.isContainedWithinObject(other, absolute, calculate);\n    },\n\n    /**\n     * Checks if object is fully contained within area of another object\n     * @param {Object} other Object to test\n     * @param {Boolean} [absolute] use coordinates without viewportTransform\n     * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n     * @return {Boolean} true if object is fully contained within area of another object\n     */\n    isContainedWithinObject: function(other, absolute, calculate) {\n      var points = this.getCoords(absolute, calculate),\n          otherCoords = absolute ? other.aCoords : other.lineCoords,\n          i = 0, lines = other._getImageLines(otherCoords);\n      for (; i < 4; i++) {\n        if (!other.containsPoint(points[i], lines)) {\n          return false;\n        }\n      }\n      return true;\n    },\n\n    /**\n     * Checks if object is fully contained within area formed by 2 points\n     * @param {Object} pointTL top-left point of area\n     * @param {Object} pointBR bottom-right point of area\n     * @param {Boolean} [absolute] use coordinates without viewportTransform\n     * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n     * @return {Boolean} true if object is fully contained within area formed by 2 points\n     */\n    isContainedWithinRect: function(pointTL, pointBR, absolute, calculate) {\n      var boundingRect = this.getBoundingRect(absolute, calculate);\n\n      return (\n        boundingRect.left >= pointTL.x &&\n        boundingRect.left + boundingRect.width <= pointBR.x &&\n        boundingRect.top >= pointTL.y &&\n        boundingRect.top + boundingRect.height <= pointBR.y\n      );\n    },\n\n    /**\n     * Checks if point is inside the object\n     * @param {fabric.Point} point Point to check against\n     * @param {Object} [lines] object returned from @method _getImageLines\n     * @param {Boolean} [absolute] use coordinates without viewportTransform\n     * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n     * @return {Boolean} true if point is inside the object\n     */\n    containsPoint: function(point, lines, absolute, calculate) {\n      var coords = this._getCoords(absolute, calculate),\n          lines = lines || this._getImageLines(coords),\n          xPoints = this._findCrossPoints(point, lines);\n      // if xPoints is odd then point is inside the object\n      return (xPoints !== 0 && xPoints % 2 === 1);\n    },\n\n    /**\n     * Checks if object is contained within the canvas with current viewportTransform\n     * the check is done stopping at first point that appears on screen\n     * @param {Boolean} [calculate] use coordinates of current position instead of .aCoords\n     * @return {Boolean} true if object is fully or partially contained within canvas\n     */\n    isOnScreen: function(calculate) {\n      if (!this.canvas) {\n        return false;\n      }\n      var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n      var points = this.getCoords(true, calculate);\n      // if some point is on screen, the object is on screen.\n      if (points.some(function(point) {\n        return point.x <= pointBR.x && point.x >= pointTL.x &&\n        point.y <= pointBR.y && point.y >= pointTL.y;\n      })) {\n        return true;\n      }\n      // no points on screen, check intersection with absolute coordinates\n      if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n        return true;\n      }\n      return this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n    },\n\n    /**\n     * Checks if the object contains the midpoint between canvas extremities\n     * Does not make sense outside the context of isOnScreen and isPartiallyOnScreen\n     * @private\n     * @param {Fabric.Point} pointTL Top Left point\n     * @param {Fabric.Point} pointBR Top Right point\n     * @param {Boolean} calculate use coordinates of current position instead of .oCoords\n     * @return {Boolean} true if the object contains the point\n     */\n    _containsCenterOfCanvas: function(pointTL, pointBR, calculate) {\n      // worst case scenario the object is so big that contains the screen\n      var centerPoint = { x: (pointTL.x + pointBR.x) / 2, y: (pointTL.y + pointBR.y) / 2 };\n      if (this.containsPoint(centerPoint, null, true, calculate)) {\n        return true;\n      }\n      return false;\n    },\n\n    /**\n     * Checks if object is partially contained within the canvas with current viewportTransform\n     * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n     * @return {Boolean} true if object is partially contained within canvas\n     */\n    isPartiallyOnScreen: function(calculate) {\n      if (!this.canvas) {\n        return false;\n      }\n      var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n      if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n        return true;\n      }\n      var allPointsAreOutside = this.getCoords(true, calculate).every(function(point) {\n        return (point.x >= pointBR.x || point.x <= pointTL.x) &&\n        (point.y >= pointBR.y || point.y <= pointTL.y);\n      });\n      return allPointsAreOutside && this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n    },\n\n    /**\n     * Method that returns an object with the object edges in it, given the coordinates of the corners\n     * @private\n     * @param {Object} oCoords Coordinates of the object corners\n     */\n    _getImageLines: function(oCoords) {\n\n      var lines = {\n        topline: {\n          o: oCoords.tl,\n          d: oCoords.tr\n        },\n        rightline: {\n          o: oCoords.tr,\n          d: oCoords.br\n        },\n        bottomline: {\n          o: oCoords.br,\n          d: oCoords.bl\n        },\n        leftline: {\n          o: oCoords.bl,\n          d: oCoords.tl\n        }\n      };\n\n      // // debugging\n      // if (this.canvas.contextTop) {\n      //   this.canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);\n      //   this.canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);\n      //\n      //   this.canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);\n      //   this.canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);\n      //\n      //   this.canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);\n      //   this.canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);\n      //\n      //   this.canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);\n      //   this.canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);\n      // }\n\n      return lines;\n    },\n\n    /**\n     * Helper method to determine how many cross points are between the 4 object edges\n     * and the horizontal line determined by a point on canvas\n     * @private\n     * @param {fabric.Point} point Point to check\n     * @param {Object} lines Coordinates of the object being evaluated\n     */\n    // remove yi, not used but left code here just in case.\n    _findCrossPoints: function(point, lines) {\n      var b1, b2, a1, a2, xi, // yi,\n          xcount = 0,\n          iLine;\n\n      for (var lineKey in lines) {\n        iLine = lines[lineKey];\n        // optimisation 1: line below point. no cross\n        if ((iLine.o.y < point.y) && (iLine.d.y < point.y)) {\n          continue;\n        }\n        // optimisation 2: line above point. no cross\n        if ((iLine.o.y >= point.y) && (iLine.d.y >= point.y)) {\n          continue;\n        }\n        // optimisation 3: vertical line case\n        if ((iLine.o.x === iLine.d.x) && (iLine.o.x >= point.x)) {\n          xi = iLine.o.x;\n          // yi = point.y;\n        }\n        // calculate the intersection point\n        else {\n          b1 = 0;\n          b2 = (iLine.d.y - iLine.o.y) / (iLine.d.x - iLine.o.x);\n          a1 = point.y - b1 * point.x;\n          a2 = iLine.o.y - b2 * iLine.o.x;\n\n          xi = -(a1 - a2) / (b1 - b2);\n          // yi = a1 + b1 * xi;\n        }\n        // dont count xi < point.x cases\n        if (xi >= point.x) {\n          xcount += 1;\n        }\n        // optimisation 4: specific for square images\n        if (xcount === 2) {\n          break;\n        }\n      }\n      return xcount;\n    },\n\n    /**\n     * Returns coordinates of object's bounding rectangle (left, top, width, height)\n     * the box is intended as aligned to axis of canvas.\n     * @param {Boolean} [absolute] use coordinates without viewportTransform\n     * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords / .aCoords\n     * @return {Object} Object with left, top, width, height properties\n     */\n    getBoundingRect: function(absolute, calculate) {\n      var coords = this.getCoords(absolute, calculate);\n      return util.makeBoundingBoxFromPoints(coords);\n    },\n\n    /**\n     * Returns width of an object's bounding box counting transformations\n     * before 2.0 it was named getWidth();\n     * @return {Number} width value\n     */\n    getScaledWidth: function() {\n      return this._getTransformedDimensions().x;\n    },\n\n    /**\n     * Returns height of an object bounding box counting transformations\n     * before 2.0 it was named getHeight();\n     * @return {Number} height value\n     */\n    getScaledHeight: function() {\n      return this._getTransformedDimensions().y;\n    },\n\n    /**\n     * Makes sure the scale is valid and modifies it if necessary\n     * @private\n     * @param {Number} value\n     * @return {Number}\n     */\n    _constrainScale: function(value) {\n      if (Math.abs(value) < this.minScaleLimit) {\n        if (value < 0) {\n          return -this.minScaleLimit;\n        }\n        else {\n          return this.minScaleLimit;\n        }\n      }\n      else if (value === 0) {\n        return 0.0001;\n      }\n      return value;\n    },\n\n    /**\n     * Scales an object (equally by x and y)\n     * @param {Number} value Scale factor\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    scale: function(value) {\n      this._set('scaleX', value);\n      this._set('scaleY', value);\n      return this.setCoords();\n    },\n\n    /**\n     * Scales an object to a given width, with respect to bounding box (scaling by x/y equally)\n     * @param {Number} value New width value\n     * @param {Boolean} absolute ignore viewport\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    scaleToWidth: function(value, absolute) {\n      // adjust to bounding rect factor so that rotated shapes would fit as well\n      var boundingRectFactor = this.getBoundingRect(absolute).width / this.getScaledWidth();\n      return this.scale(value / this.width / boundingRectFactor);\n    },\n\n    /**\n     * Scales an object to a given height, with respect to bounding box (scaling by x/y equally)\n     * @param {Number} value New height value\n     * @param {Boolean} absolute ignore viewport\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    scaleToHeight: function(value, absolute) {\n      // adjust to bounding rect factor so that rotated shapes would fit as well\n      var boundingRectFactor = this.getBoundingRect(absolute).height / this.getScaledHeight();\n      return this.scale(value / this.height / boundingRectFactor);\n    },\n\n    /**\n     * Calculates and returns the .coords of an object.\n     * unused by the library, only for the end dev.\n     * @return {Object} Object with tl, tr, br, bl ....\n     * @chainable\n     * @deprecated\n     */\n    calcCoords: function(absolute) {\n      // this is a compatibility function to avoid removing calcCoords now.\n      if (absolute) {\n        return this.calcACoords();\n      }\n      return this.calcOCoords();\n    },\n\n    calcLineCoords: function() {\n      var vpt = this.getViewportTransform(),\n          padding = this.padding, angle = degreesToRadians(this.angle),\n          cos = util.cos(angle), sin = util.sin(angle),\n          cosP = cos * padding, sinP = sin * padding, cosPSinP = cosP + sinP,\n          cosPMinusSinP = cosP - sinP, aCoords = this.calcACoords();\n\n      var lineCoords = {\n        tl: transformPoint(aCoords.tl, vpt),\n        tr: transformPoint(aCoords.tr, vpt),\n        bl: transformPoint(aCoords.bl, vpt),\n        br: transformPoint(aCoords.br, vpt),\n      };\n\n      if (padding) {\n        lineCoords.tl.x -= cosPMinusSinP;\n        lineCoords.tl.y -= cosPSinP;\n        lineCoords.tr.x += cosPSinP;\n        lineCoords.tr.y -= cosPMinusSinP;\n        lineCoords.bl.x -= cosPSinP;\n        lineCoords.bl.y += cosPMinusSinP;\n        lineCoords.br.x += cosPMinusSinP;\n        lineCoords.br.y += cosPSinP;\n      }\n\n      return lineCoords;\n    },\n\n    calcOCoords: function() {\n      var rotateMatrix = this._calcRotateMatrix(),\n          translateMatrix = this._calcTranslateMatrix(),\n          vpt = this.getViewportTransform(),\n          startMatrix = multiplyMatrices(vpt, translateMatrix),\n          finalMatrix = multiplyMatrices(startMatrix, rotateMatrix),\n          finalMatrix = multiplyMatrices(finalMatrix, [1 / vpt[0], 0, 0, 1 / vpt[3], 0, 0]),\n          dim = this._calculateCurrentDimensions(),\n          coords = {};\n      this.forEachControl(function(control, key, fabricObject) {\n        coords[key] = control.positionHandler(dim, finalMatrix, fabricObject);\n      });\n\n      // debug code\n      // var canvas = this.canvas;\n      // setTimeout(function() {\n      //   canvas.contextTop.clearRect(0, 0, 700, 700);\n      //   canvas.contextTop.fillStyle = 'green';\n      //   Object.keys(coords).forEach(function(key) {\n      //     var control = coords[key];\n      //     canvas.contextTop.fillRect(control.x, control.y, 3, 3);\n      //   });\n      // }, 50);\n      return coords;\n    },\n\n    calcACoords: function() {\n      var rotateMatrix = this._calcRotateMatrix(),\n          translateMatrix = this._calcTranslateMatrix(),\n          finalMatrix = multiplyMatrices(translateMatrix, rotateMatrix),\n          dim = this._getTransformedDimensions(),\n          w = dim.x / 2, h = dim.y / 2;\n      return {\n        // corners\n        tl: transformPoint({ x: -w, y: -h }, finalMatrix),\n        tr: transformPoint({ x: w, y: -h }, finalMatrix),\n        bl: transformPoint({ x: -w, y: h }, finalMatrix),\n        br: transformPoint({ x: w, y: h }, finalMatrix)\n      };\n    },\n\n    /**\n     * Sets corner and controls position coordinates based on current angle, width and height, left and top.\n     * oCoords are used to find the corners\n     * aCoords are used to quickly find an object on the canvas\n     * lineCoords are used to quickly find object during pointer events.\n     * See {@link https://github.com/kangax/fabric.js/wiki/When-to-call-setCoords|When-to-call-setCoords}\n     * @param {Boolean} [skipCorners] skip calculation of oCoords.\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    setCoords: function(skipCorners) {\n      this.aCoords = this.calcACoords();\n      // in case we are in a group, for how the inner group target check works,\n      // lineCoords are exactly aCoords. Since the vpt gets absorbed by the normalized pointer.\n      this.lineCoords = this.group ? this.aCoords : this.calcLineCoords();\n      if (skipCorners) {\n        return this;\n      }\n      // set coordinates of the draggable boxes in the corners used to scale/rotate the image\n      this.oCoords = this.calcOCoords();\n      this._setCornerCoords && this._setCornerCoords();\n      return this;\n    },\n\n    /**\n     * calculate rotation matrix of an object\n     * @return {Array} rotation matrix for the object\n     */\n    _calcRotateMatrix: function() {\n      return util.calcRotateMatrix(this);\n    },\n\n    /**\n     * calculate the translation matrix for an object transform\n     * @return {Array} rotation matrix for the object\n     */\n    _calcTranslateMatrix: function() {\n      var center = this.getCenterPoint();\n      return [1, 0, 0, 1, center.x, center.y];\n    },\n\n    transformMatrixKey: function(skipGroup) {\n      var sep = '_', prefix = '';\n      if (!skipGroup && this.group) {\n        prefix = this.group.transformMatrixKey(skipGroup) + sep;\n      };\n      return prefix + this.top + sep + this.left + sep + this.scaleX + sep + this.scaleY +\n        sep + this.skewX + sep + this.skewY + sep + this.angle + sep + this.originX + sep + this.originY +\n        sep + this.width + sep + this.height + sep + this.strokeWidth + this.flipX + this.flipY;\n    },\n\n    /**\n     * calculate transform matrix that represents the current transformations from the\n     * object's properties.\n     * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations\n     * There are some situation in which this is useful to avoid the fake rotation.\n     * @return {Array} transform matrix for the object\n     */\n    calcTransformMatrix: function(skipGroup) {\n      var matrix = this.calcOwnMatrix();\n      if (skipGroup || !this.group) {\n        return matrix;\n      }\n      var key = this.transformMatrixKey(skipGroup), cache = this.matrixCache || (this.matrixCache = {});\n      if (cache.key === key) {\n        return cache.value;\n      }\n      if (this.group) {\n        matrix = multiplyMatrices(this.group.calcTransformMatrix(false), matrix);\n      }\n      cache.key = key;\n      cache.value = matrix;\n      return matrix;\n    },\n\n    /**\n     * calculate transform matrix that represents the current transformations from the\n     * object's properties, this matrix does not include the group transformation\n     * @return {Array} transform matrix for the object\n     */\n    calcOwnMatrix: function() {\n      var key = this.transformMatrixKey(true), cache = this.ownMatrixCache || (this.ownMatrixCache = {});\n      if (cache.key === key) {\n        return cache.value;\n      }\n      var tMatrix = this._calcTranslateMatrix(),\n          options = {\n            angle: this.angle,\n            translateX: tMatrix[4],\n            translateY: tMatrix[5],\n            scaleX: this.scaleX,\n            scaleY: this.scaleY,\n            skewX: this.skewX,\n            skewY: this.skewY,\n            flipX: this.flipX,\n            flipY: this.flipY,\n          };\n      cache.key = key;\n      cache.value = util.composeMatrix(options);\n      return cache.value;\n    },\n\n    /*\n     * Calculate object dimensions from its properties\n     * @private\n     * @deprecated since 3.4.0, please use fabric.util._calcDimensionsTransformMatrix\n     * not including or including flipX, flipY to emulate the flipping boolean\n     * @return {Object} .x width dimension\n     * @return {Object} .y height dimension\n     */\n    _calcDimensionsTransformMatrix: function(skewX, skewY, flipping) {\n      return util.calcDimensionsMatrix({\n        skewX: skewX,\n        skewY: skewY,\n        scaleX: this.scaleX * (flipping && this.flipX ? -1 : 1),\n        scaleY: this.scaleY * (flipping && this.flipY ? -1 : 1)\n      });\n    },\n\n    /*\n     * Calculate object dimensions from its properties\n     * @private\n     * @return {Object} .x width dimension\n     * @return {Object} .y height dimension\n     */\n    _getNonTransformedDimensions: function() {\n      var strokeWidth = this.strokeWidth,\n          w = this.width + strokeWidth,\n          h = this.height + strokeWidth;\n      return { x: w, y: h };\n    },\n\n    /*\n     * Calculate object bounding box dimensions from its properties scale, skew.\n     * @param {Number} skewX, a value to override current skewX\n     * @param {Number} skewY, a value to override current skewY\n     * @private\n     * @return {Object} .x width dimension\n     * @return {Object} .y height dimension\n     */\n    _getTransformedDimensions: function(skewX, skewY) {\n      if (typeof skewX === 'undefined') {\n        skewX = this.skewX;\n      }\n      if (typeof skewY === 'undefined') {\n        skewY = this.skewY;\n      }\n      var dimensions, dimX, dimY,\n          noSkew = skewX === 0 && skewY === 0;\n\n      if (this.strokeUniform) {\n        dimX = this.width;\n        dimY = this.height;\n      }\n      else {\n        dimensions = this._getNonTransformedDimensions();\n        dimX = dimensions.x;\n        dimY = dimensions.y;\n      }\n      if (noSkew) {\n        return this._finalizeDimensions(dimX * this.scaleX, dimY * this.scaleY);\n      }\n      var bbox = util.sizeAfterTransform(dimX, dimY, {\n        scaleX: this.scaleX,\n        scaleY: this.scaleY,\n        skewX: skewX,\n        skewY: skewY,\n      });\n      return this._finalizeDimensions(bbox.x, bbox.y);\n    },\n\n    /*\n     * Calculate object bounding box dimensions from its properties scale, skew.\n     * @param Number width width of the bbox\n     * @param Number height height of the bbox\n     * @private\n     * @return {Object} .x finalized width dimension\n     * @return {Object} .y finalized height dimension\n     */\n    _finalizeDimensions: function(width, height) {\n      return this.strokeUniform ?\n        { x: width + this.strokeWidth, y: height + this.strokeWidth }\n        :\n        { x: width, y: height };\n    },\n\n    /*\n     * Calculate object dimensions for controls box, including padding and canvas zoom.\n     * and active selection\n     * private\n     */\n    _calculateCurrentDimensions: function()  {\n      var vpt = this.getViewportTransform(),\n          dim = this._getTransformedDimensions(),\n          p = transformPoint(dim, vpt, true);\n      return p.scalarAdd(2 * this.padding);\n    },\n  });\n})();\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n  /**\n   * Moves an object to the bottom of the stack of drawn objects\n   * @return {fabric.Object} thisArg\n   * @chainable\n   */\n  sendToBack: function() {\n    if (this.group) {\n      fabric.StaticCanvas.prototype.sendToBack.call(this.group, this);\n    }\n    else if (this.canvas) {\n      this.canvas.sendToBack(this);\n    }\n    return this;\n  },\n\n  /**\n   * Moves an object to the top of the stack of drawn objects\n   * @return {fabric.Object} thisArg\n   * @chainable\n   */\n  bringToFront: function() {\n    if (this.group) {\n      fabric.StaticCanvas.prototype.bringToFront.call(this.group, this);\n    }\n    else if (this.canvas) {\n      this.canvas.bringToFront(this);\n    }\n    return this;\n  },\n\n  /**\n   * Moves an object down in stack of drawn objects\n   * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n   * @return {fabric.Object} thisArg\n   * @chainable\n   */\n  sendBackwards: function(intersecting) {\n    if (this.group) {\n      fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting);\n    }\n    else if (this.canvas) {\n      this.canvas.sendBackwards(this, intersecting);\n    }\n    return this;\n  },\n\n  /**\n   * Moves an object up in stack of drawn objects\n   * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n   * @return {fabric.Object} thisArg\n   * @chainable\n   */\n  bringForward: function(intersecting) {\n    if (this.group) {\n      fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting);\n    }\n    else if (this.canvas) {\n      this.canvas.bringForward(this, intersecting);\n    }\n    return this;\n  },\n\n  /**\n   * Moves an object to specified level in stack of drawn objects\n   * @param {Number} index New position of object\n   * @return {fabric.Object} thisArg\n   * @chainable\n   */\n  moveTo: function(index) {\n    if (this.group && this.group.type !== 'activeSelection') {\n      fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index);\n    }\n    else if (this.canvas) {\n      this.canvas.moveTo(this, index);\n    }\n    return this;\n  }\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n  function getSvgColorString(prop, value) {\n    if (!value) {\n      return prop + ': none; ';\n    }\n    else if (value.toLive) {\n      return prop + ': url(#SVGID_' + value.id + '); ';\n    }\n    else {\n      var color = new fabric.Color(value),\n          str = prop + ': ' + color.toRgb() + '; ',\n          opacity = color.getAlpha();\n      if (opacity !== 1) {\n        //change the color in rgb + opacity\n        str += prop + '-opacity: ' + opacity.toString() + '; ';\n      }\n      return str;\n    }\n  }\n\n  var toFixed = fabric.util.toFixed;\n\n  fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n    /**\n     * Returns styles-string for svg-export\n     * @param {Boolean} skipShadow a boolean to skip shadow filter output\n     * @return {String}\n     */\n    getSvgStyles: function(skipShadow) {\n\n      var fillRule = this.fillRule ? this.fillRule : 'nonzero',\n          strokeWidth = this.strokeWidth ? this.strokeWidth : '0',\n          strokeDashArray = this.strokeDashArray ? this.strokeDashArray.join(' ') : 'none',\n          strokeDashOffset = this.strokeDashOffset ? this.strokeDashOffset : '0',\n          strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt',\n          strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter',\n          strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4',\n          opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1',\n          visibility = this.visible ? '' : ' visibility: hidden;',\n          filter = skipShadow ? '' : this.getSvgFilter(),\n          fill = getSvgColorString('fill', this.fill),\n          stroke = getSvgColorString('stroke', this.stroke);\n\n      return [\n        stroke,\n        'stroke-width: ', strokeWidth, '; ',\n        'stroke-dasharray: ', strokeDashArray, '; ',\n        'stroke-linecap: ', strokeLineCap, '; ',\n        'stroke-dashoffset: ', strokeDashOffset, '; ',\n        'stroke-linejoin: ', strokeLineJoin, '; ',\n        'stroke-miterlimit: ', strokeMiterLimit, '; ',\n        fill,\n        'fill-rule: ', fillRule, '; ',\n        'opacity: ', opacity, ';',\n        filter,\n        visibility\n      ].join('');\n    },\n\n    /**\n     * Returns styles-string for svg-export\n     * @param {Object} style the object from which to retrieve style properties\n     * @param {Boolean} useWhiteSpace a boolean to include an additional attribute in the style.\n     * @return {String}\n     */\n    getSvgSpanStyles: function(style, useWhiteSpace) {\n      var term = '; ';\n      var fontFamily = style.fontFamily ?\n        'font-family: ' + (((style.fontFamily.indexOf('\\'') === -1 && style.fontFamily.indexOf('\"') === -1) ?\n          '\\'' + style.fontFamily  + '\\'' : style.fontFamily)) + term : '';\n      var strokeWidth = style.strokeWidth ? 'stroke-width: ' + style.strokeWidth + term : '',\n          fontFamily = fontFamily,\n          fontSize = style.fontSize ? 'font-size: ' + style.fontSize + 'px' + term : '',\n          fontStyle = style.fontStyle ? 'font-style: ' + style.fontStyle + term : '',\n          fontWeight = style.fontWeight ? 'font-weight: ' + style.fontWeight + term : '',\n          fill = style.fill ? getSvgColorString('fill', style.fill) : '',\n          stroke = style.stroke ? getSvgColorString('stroke', style.stroke) : '',\n          textDecoration = this.getSvgTextDecoration(style),\n          deltaY = style.deltaY ? 'baseline-shift: ' + (-style.deltaY) + '; ' : '';\n      if (textDecoration) {\n        textDecoration = 'text-decoration: ' + textDecoration + term;\n      }\n\n      return [\n        stroke,\n        strokeWidth,\n        fontFamily,\n        fontSize,\n        fontStyle,\n        fontWeight,\n        textDecoration,\n        fill,\n        deltaY,\n        useWhiteSpace ? 'white-space: pre; ' : ''\n      ].join('');\n    },\n\n    /**\n     * Returns text-decoration property for svg-export\n     * @param {Object} style the object from which to retrieve style properties\n     * @return {String}\n     */\n    getSvgTextDecoration: function(style) {\n      return ['overline', 'underline', 'line-through'].filter(function(decoration) {\n        return style[decoration.replace('-', '')];\n      }).join(' ');\n    },\n\n    /**\n     * Returns filter for svg shadow\n     * @return {String}\n     */\n    getSvgFilter: function() {\n      return this.shadow ? 'filter: url(#SVGID_' + this.shadow.id + ');' : '';\n    },\n\n    /**\n     * Returns id attribute for svg output\n     * @return {String}\n     */\n    getSvgCommons: function() {\n      return [\n        this.id ? 'id=\"' + this.id + '\" ' : '',\n        this.clipPath ? 'clip-path=\"url(#' + this.clipPath.clipPathId + ')\" ' : '',\n      ].join('');\n    },\n\n    /**\n     * Returns transform-string for svg-export\n     * @param {Boolean} use the full transform or the single object one.\n     * @return {String}\n     */\n    getSvgTransform: function(full, additionalTransform) {\n      var transform = full ? this.calcTransformMatrix() : this.calcOwnMatrix(),\n          svgTransform = 'transform=\"' + fabric.util.matrixToSVG(transform);\n      return svgTransform +\n        (additionalTransform || '') + '\" ';\n    },\n\n    _setSVGBg: function(textBgRects) {\n      if (this.backgroundColor) {\n        var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n        textBgRects.push(\n          '\\t\\t<rect ',\n          this._getFillAttributes(this.backgroundColor),\n          ' x=\"',\n          toFixed(-this.width / 2, NUM_FRACTION_DIGITS),\n          '\" y=\"',\n          toFixed(-this.height / 2, NUM_FRACTION_DIGITS),\n          '\" width=\"',\n          toFixed(this.width, NUM_FRACTION_DIGITS),\n          '\" height=\"',\n          toFixed(this.height, NUM_FRACTION_DIGITS),\n          '\"></rect>\\n');\n      }\n    },\n\n    /**\n     * Returns svg representation of an instance\n     * @param {Function} [reviver] Method for further parsing of svg representation.\n     * @return {String} svg representation of an instance\n     */\n    toSVG: function(reviver) {\n      return this._createBaseSVGMarkup(this._toSVG(reviver), { reviver: reviver });\n    },\n\n    /**\n     * Returns svg clipPath representation of an instance\n     * @param {Function} [reviver] Method for further parsing of svg representation.\n     * @return {String} svg representation of an instance\n     */\n    toClipPathSVG: function(reviver) {\n      return '\\t' + this._createBaseClipPathSVGMarkup(this._toSVG(reviver), { reviver: reviver });\n    },\n\n    /**\n     * @private\n     */\n    _createBaseClipPathSVGMarkup: function(objectMarkup, options) {\n      options = options || {};\n      var reviver = options.reviver,\n          additionalTransform = options.additionalTransform || '',\n          commonPieces = [\n            this.getSvgTransform(true, additionalTransform),\n            this.getSvgCommons(),\n          ].join(''),\n          // insert commons in the markup, style and svgCommons\n          index = objectMarkup.indexOf('COMMON_PARTS');\n      objectMarkup[index] = commonPieces;\n      return reviver ? reviver(objectMarkup.join('')) : objectMarkup.join('');\n    },\n\n    /**\n     * @private\n     */\n    _createBaseSVGMarkup: function(objectMarkup, options) {\n      options = options || {};\n      var noStyle = options.noStyle,\n          reviver = options.reviver,\n          styleInfo = noStyle ? '' : 'style=\"' + this.getSvgStyles() + '\" ',\n          shadowInfo = options.withShadow ? 'style=\"' + this.getSvgFilter() + '\" ' : '',\n          clipPath = this.clipPath,\n          vectorEffect = this.strokeUniform ? 'vector-effect=\"non-scaling-stroke\" ' : '',\n          absoluteClipPath = clipPath && clipPath.absolutePositioned,\n          stroke = this.stroke, fill = this.fill, shadow = this.shadow,\n          commonPieces, markup = [], clipPathMarkup,\n          // insert commons in the markup, style and svgCommons\n          index = objectMarkup.indexOf('COMMON_PARTS'),\n          additionalTransform = options.additionalTransform;\n      if (clipPath) {\n        clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++;\n        clipPathMarkup = '<clipPath id=\"' + clipPath.clipPathId + '\" >\\n' +\n          clipPath.toClipPathSVG(reviver) +\n          '</clipPath>\\n';\n      }\n      if (absoluteClipPath) {\n        markup.push(\n          '<g ', shadowInfo, this.getSvgCommons(), ' >\\n'\n        );\n      }\n      markup.push(\n        '<g ',\n        this.getSvgTransform(false),\n        !absoluteClipPath ? shadowInfo + this.getSvgCommons() : '',\n        ' >\\n'\n      );\n      commonPieces = [\n        styleInfo,\n        vectorEffect,\n        noStyle ? '' : this.addPaintOrder(), ' ',\n        additionalTransform ? 'transform=\"' + additionalTransform + '\" ' : '',\n      ].join('');\n      objectMarkup[index] = commonPieces;\n      if (fill && fill.toLive) {\n        markup.push(fill.toSVG(this));\n      }\n      if (stroke && stroke.toLive) {\n        markup.push(stroke.toSVG(this));\n      }\n      if (shadow) {\n        markup.push(shadow.toSVG(this));\n      }\n      if (clipPath) {\n        markup.push(clipPathMarkup);\n      }\n      markup.push(objectMarkup.join(''));\n      markup.push('</g>\\n');\n      absoluteClipPath && markup.push('</g>\\n');\n      return reviver ? reviver(markup.join('')) : markup.join('');\n    },\n\n    addPaintOrder: function() {\n      return this.paintFirst !== 'fill' ? ' paint-order=\"' + this.paintFirst + '\" ' : '';\n    }\n  });\n})();\n/* _TO_SVG_END_ */\n\n\n(function() {\n\n  var extend = fabric.util.object.extend,\n      originalSet = 'stateProperties';\n\n  /*\n    Depends on `stateProperties`\n  */\n  function saveProps(origin, destination, props) {\n    var tmpObj = { }, deep = true;\n    props.forEach(function(prop) {\n      tmpObj[prop] = origin[prop];\n    });\n\n    extend(origin[destination], tmpObj, deep);\n  }\n\n  function _isEqual(origValue, currentValue, firstPass) {\n    if (origValue === currentValue) {\n      // if the objects are identical, return\n      return true;\n    }\n    else if (Array.isArray(origValue)) {\n      if (!Array.isArray(currentValue) || origValue.length !== currentValue.length) {\n        return false;\n      }\n      for (var i = 0, len = origValue.length; i < len; i++) {\n        if (!_isEqual(origValue[i], currentValue[i])) {\n          return false;\n        }\n      }\n      return true;\n    }\n    else if (origValue && typeof origValue === 'object') {\n      var keys = Object.keys(origValue), key;\n      if (!currentValue ||\n          typeof currentValue !== 'object' ||\n          (!firstPass && keys.length !== Object.keys(currentValue).length)\n      ) {\n        return false;\n      }\n      for (var i = 0, len = keys.length; i < len; i++) {\n        key = keys[i];\n        // since clipPath is in the statefull cache list and the clipPath objects\n        // would be iterated as an object, this would lead to possible infinite recursion\n        // we do not want to compare those.\n        if (key === 'canvas' || key === 'group') {\n          continue;\n        }\n        if (!_isEqual(origValue[key], currentValue[key])) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n\n\n  fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n    /**\n     * Returns true if object state (one of its state properties) was changed\n     * @param {String} [propertySet] optional name for the set of property we want to save\n     * @return {Boolean} true if instance' state has changed since `{@link fabric.Object#saveState}` was called\n     */\n    hasStateChanged: function(propertySet) {\n      propertySet = propertySet || originalSet;\n      var dashedPropertySet = '_' + propertySet;\n      if (Object.keys(this[dashedPropertySet]).length < this[propertySet].length) {\n        return true;\n      }\n      return !_isEqual(this[dashedPropertySet], this, true);\n    },\n\n    /**\n     * Saves state of an object\n     * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n     * @return {fabric.Object} thisArg\n     */\n    saveState: function(options) {\n      var propertySet = options && options.propertySet || originalSet,\n          destination = '_' + propertySet;\n      if (!this[destination]) {\n        return this.setupState(options);\n      }\n      saveProps(this, destination, this[propertySet]);\n      if (options && options.stateProperties) {\n        saveProps(this, destination, options.stateProperties);\n      }\n      return this;\n    },\n\n    /**\n     * Setups state of an object\n     * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n     * @return {fabric.Object} thisArg\n     */\n    setupState: function(options) {\n      options = options || { };\n      var propertySet = options.propertySet || originalSet;\n      options.propertySet = propertySet;\n      this['_' + propertySet] = { };\n      this.saveState(options);\n      return this;\n    }\n  });\n})();\n\n\n(function() {\n\n  var degreesToRadians = fabric.util.degreesToRadians;\n\n  fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n    /**\n     * Determines which corner has been clicked\n     * @private\n     * @param {Object} pointer The pointer indicating the mouse position\n     * @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found\n     */\n    _findTargetCorner: function(pointer, forTouch) {\n      // objects in group, anykind, are not self modificable,\n      // must not return an hovered corner.\n      if (!this.hasControls || this.group || (!this.canvas || this.canvas._activeObject !== this)) {\n        return false;\n      }\n\n      var ex = pointer.x,\n          ey = pointer.y,\n          xPoints,\n          lines, keys = Object.keys(this.oCoords),\n          j = keys.length - 1, i;\n      this.__corner = 0;\n\n      // cycle in reverse order so we pick first the one on top\n      for (; j >= 0; j--) {\n        i = keys[j];\n        if (!this.isControlVisible(i)) {\n          continue;\n        }\n\n        lines = this._getImageLines(forTouch ? this.oCoords[i].touchCorner : this.oCoords[i].corner);\n        // // debugging\n        //\n        // this.canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);\n        // this.canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);\n        //\n        // this.canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);\n        // this.canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);\n        //\n        // this.canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);\n        // this.canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);\n        //\n        // this.canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);\n        // this.canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);\n\n        xPoints = this._findCrossPoints({ x: ex, y: ey }, lines);\n        if (xPoints !== 0 && xPoints % 2 === 1) {\n          this.__corner = i;\n          return i;\n        }\n      }\n      return false;\n    },\n\n    /**\n     * Calls a function for each control. The function gets called,\n     * with the control, the object that is calling the iterator and the control's key\n     * @param {Function} fn function to iterate over the controls over\n     */\n    forEachControl: function(fn) {\n      for (var i in this.controls) {\n        fn(this.controls[i], i, this);\n      };\n    },\n\n    /**\n     * Sets the coordinates of the draggable boxes in the corners of\n     * the image used to scale/rotate it.\n     * note: if we would switch to ROUND corner area, all of this would disappear.\n     * everything would resolve to a single point and a pythagorean theorem for the distance\n     * @private\n     */\n    _setCornerCoords: function() {\n      var coords = this.oCoords;\n\n      for (var control in coords) {\n        var controlObject = this.controls[control];\n        coords[control].corner = controlObject.calcCornerCoords(\n          this.angle, this.cornerSize, coords[control].x, coords[control].y, false);\n        coords[control].touchCorner = controlObject.calcCornerCoords(\n          this.angle, this.touchCornerSize, coords[control].x, coords[control].y, true);\n      }\n    },\n\n    /**\n     * Draws a colored layer behind the object, inside its selection borders.\n     * Requires public options: padding, selectionBackgroundColor\n     * this function is called when the context is transformed\n     * has checks to be skipped when the object is on a staticCanvas\n     * @param {CanvasRenderingContext2D} ctx Context to draw on\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    drawSelectionBackground: function(ctx) {\n      if (!this.selectionBackgroundColor ||\n        (this.canvas && !this.canvas.interactive) ||\n        (this.canvas && this.canvas._activeObject !== this)\n      ) {\n        return this;\n      }\n      ctx.save();\n      var center = this.getCenterPoint(), wh = this._calculateCurrentDimensions(),\n          vpt = this.canvas.viewportTransform;\n      ctx.translate(center.x, center.y);\n      ctx.scale(1 / vpt[0], 1 / vpt[3]);\n      ctx.rotate(degreesToRadians(this.angle));\n      ctx.fillStyle = this.selectionBackgroundColor;\n      ctx.fillRect(-wh.x / 2, -wh.y / 2, wh.x, wh.y);\n      ctx.restore();\n      return this;\n    },\n\n    /**\n     * Draws borders of an object's bounding box.\n     * Requires public properties: width, height\n     * Requires public options: padding, borderColor\n     * @param {CanvasRenderingContext2D} ctx Context to draw on\n     * @param {Object} styleOverride object to override the object style\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    drawBorders: function(ctx, styleOverride) {\n      styleOverride = styleOverride || {};\n      var wh = this._calculateCurrentDimensions(),\n          strokeWidth = this.borderScaleFactor,\n          width = wh.x + strokeWidth,\n          height = wh.y + strokeWidth,\n          hasControls = typeof styleOverride.hasControls !== 'undefined' ?\n            styleOverride.hasControls : this.hasControls,\n          shouldStroke = false;\n\n      ctx.save();\n      ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n      this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray);\n\n      ctx.strokeRect(\n        -width / 2,\n        -height / 2,\n        width,\n        height\n      );\n\n      if (hasControls) {\n        ctx.beginPath();\n        this.forEachControl(function(control, key, fabricObject) {\n          // in this moment, the ctx is centered on the object.\n          // width and height of the above function are the size of the bbox.\n          if (control.withConnection && control.getVisibility(fabricObject, key)) {\n            // reset movement for each control\n            shouldStroke = true;\n            ctx.moveTo(control.x * width, control.y * height);\n            ctx.lineTo(\n              control.x * width + control.offsetX,\n              control.y * height + control.offsetY\n            );\n          }\n        });\n        if (shouldStroke) {\n          ctx.stroke();\n        }\n      }\n      ctx.restore();\n      return this;\n    },\n\n    /**\n     * Draws borders of an object's bounding box when it is inside a group.\n     * Requires public properties: width, height\n     * Requires public options: padding, borderColor\n     * @param {CanvasRenderingContext2D} ctx Context to draw on\n     * @param {object} options object representing current object parameters\n     * @param {Object} styleOverride object to override the object style\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    drawBordersInGroup: function(ctx, options, styleOverride) {\n      styleOverride = styleOverride || {};\n      var bbox = fabric.util.sizeAfterTransform(this.width, this.height, options),\n          strokeWidth = this.strokeWidth,\n          strokeUniform = this.strokeUniform,\n          borderScaleFactor = this.borderScaleFactor,\n          width =\n            bbox.x + strokeWidth * (strokeUniform ? this.canvas.getZoom() : options.scaleX) + borderScaleFactor,\n          height =\n            bbox.y + strokeWidth * (strokeUniform ? this.canvas.getZoom() : options.scaleY) + borderScaleFactor;\n      ctx.save();\n      this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray);\n      ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n      ctx.strokeRect(\n        -width / 2,\n        -height / 2,\n        width,\n        height\n      );\n\n      ctx.restore();\n      return this;\n    },\n\n    /**\n     * Draws corners of an object's bounding box.\n     * Requires public properties: width, height\n     * Requires public options: cornerSize, padding\n     * @param {CanvasRenderingContext2D} ctx Context to draw on\n     * @param {Object} styleOverride object to override the object style\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    drawControls: function(ctx, styleOverride) {\n      styleOverride = styleOverride || {};\n      ctx.save();\n      var retinaScaling = this.canvas.getRetinaScaling(), matrix, p;\n      ctx.setTransform(retinaScaling, 0, 0, retinaScaling, 0, 0);\n      ctx.strokeStyle = ctx.fillStyle = styleOverride.cornerColor || this.cornerColor;\n      if (!this.transparentCorners) {\n        ctx.strokeStyle = styleOverride.cornerStrokeColor || this.cornerStrokeColor;\n      }\n      this._setLineDash(ctx, styleOverride.cornerDashArray || this.cornerDashArray);\n      this.setCoords();\n      if (this.group) {\n        // fabricJS does not really support drawing controls inside groups,\n        // this piece of code here helps having at least the control in places.\n        // If an application needs to show some objects as selected because of some UI state\n        // can still call Object._renderControls() on any object they desire, independently of groups.\n        // using no padding, circular controls and hiding the rotating cursor is higly suggested,\n        matrix = this.group.calcTransformMatrix();\n      }\n      this.forEachControl(function(control, key, fabricObject) {\n        p = fabricObject.oCoords[key];\n        if (control.getVisibility(fabricObject, key)) {\n          if (matrix) {\n            p = fabric.util.transformPoint(p, matrix);\n          }\n          control.render(ctx, p.x, p.y, styleOverride, fabricObject);\n        }\n      });\n      ctx.restore();\n\n      return this;\n    },\n\n    /**\n     * Returns true if the specified control is visible, false otherwise.\n     * @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n     * @returns {Boolean} true if the specified control is visible, false otherwise\n     */\n    isControlVisible: function(controlKey) {\n      return this.controls[controlKey] && this.controls[controlKey].getVisibility(this, controlKey);\n    },\n\n    /**\n     * Sets the visibility of the specified control.\n     * @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n     * @param {Boolean} visible true to set the specified control visible, false otherwise\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    setControlVisible: function(controlKey, visible) {\n      if (!this._controlsVisibility) {\n        this._controlsVisibility = {};\n      }\n      this._controlsVisibility[controlKey] = visible;\n      return this;\n    },\n\n    /**\n     * Sets the visibility state of object controls.\n     * @param {Object} [options] Options object\n     * @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it\n     * @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it\n     * @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it\n     * @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it\n     * @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it\n     * @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it\n     * @param {Boolean} [options.tl] true to enable the top-left control, false to disable it\n     * @param {Boolean} [options.tr] true to enable the top-right control, false to disable it\n     * @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    setControlsVisibility: function(options) {\n      options || (options = { });\n\n      for (var p in options) {\n        this.setControlVisible(p, options[p]);\n      }\n      return this;\n    },\n\n\n    /**\n     * This callback function is called every time _discardActiveObject or _setActiveObject\n     * try to to deselect this object. If the function returns true, the process is cancelled\n     * @param {Object} [options] options sent from the upper functions\n     * @param {Event} [options.e] event if the process is generated by an event\n     */\n    onDeselect: function() {\n      // implemented by sub-classes, as needed.\n    },\n\n\n    /**\n     * This callback function is called every time _discardActiveObject or _setActiveObject\n     * try to to select this object. If the function returns true, the process is cancelled\n     * @param {Object} [options] options sent from the upper functions\n     * @param {Event} [options.e] event if the process is generated by an event\n     */\n    onSelect: function() {\n      // implemented by sub-classes, as needed.\n    }\n  });\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n  /**\n   * Animation duration (in ms) for fx* methods\n   * @type Number\n   * @default\n   */\n  FX_DURATION: 500,\n\n  /**\n   * Centers object horizontally with animation.\n   * @param {fabric.Object} object Object to center\n   * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n   * @param {Function} [callbacks.onComplete] Invoked on completion\n   * @param {Function} [callbacks.onChange] Invoked on every step of animation\n   * @return {fabric.Canvas} thisArg\n   * @chainable\n   */\n  fxCenterObjectH: function (object, callbacks) {\n    callbacks = callbacks || { };\n\n    var empty = function() { },\n        onComplete = callbacks.onComplete || empty,\n        onChange = callbacks.onChange || empty,\n        _this = this;\n\n    fabric.util.animate({\n      startValue: object.left,\n      endValue: this.getCenter().left,\n      duration: this.FX_DURATION,\n      onChange: function(value) {\n        object.set('left', value);\n        _this.requestRenderAll();\n        onChange();\n      },\n      onComplete: function() {\n        object.setCoords();\n        onComplete();\n      }\n    });\n\n    return this;\n  },\n\n  /**\n   * Centers object vertically with animation.\n   * @param {fabric.Object} object Object to center\n   * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n   * @param {Function} [callbacks.onComplete] Invoked on completion\n   * @param {Function} [callbacks.onChange] Invoked on every step of animation\n   * @return {fabric.Canvas} thisArg\n   * @chainable\n   */\n  fxCenterObjectV: function (object, callbacks) {\n    callbacks = callbacks || { };\n\n    var empty = function() { },\n        onComplete = callbacks.onComplete || empty,\n        onChange = callbacks.onChange || empty,\n        _this = this;\n\n    fabric.util.animate({\n      startValue: object.top,\n      endValue: this.getCenter().top,\n      duration: this.FX_DURATION,\n      onChange: function(value) {\n        object.set('top', value);\n        _this.requestRenderAll();\n        onChange();\n      },\n      onComplete: function() {\n        object.setCoords();\n        onComplete();\n      }\n    });\n\n    return this;\n  },\n\n  /**\n   * Same as `fabric.Canvas#remove` but animated\n   * @param {fabric.Object} object Object to remove\n   * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n   * @param {Function} [callbacks.onComplete] Invoked on completion\n   * @param {Function} [callbacks.onChange] Invoked on every step of animation\n   * @return {fabric.Canvas} thisArg\n   * @chainable\n   */\n  fxRemove: function (object, callbacks) {\n    callbacks = callbacks || { };\n\n    var empty = function() { },\n        onComplete = callbacks.onComplete || empty,\n        onChange = callbacks.onChange || empty,\n        _this = this;\n\n    fabric.util.animate({\n      startValue: object.opacity,\n      endValue: 0,\n      duration: this.FX_DURATION,\n      onChange: function(value) {\n        object.set('opacity', value);\n        _this.requestRenderAll();\n        onChange();\n      },\n      onComplete: function () {\n        _this.remove(object);\n        onComplete();\n      }\n    });\n\n    return this;\n  }\n});\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n  /**\n   * Animates object's properties\n   * @param {String|Object} property Property to animate (if string) or properties to animate (if object)\n   * @param {Number|Object} value Value to animate property to (if string was given first) or options object\n   * @return {fabric.Object} thisArg\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#animation}\n   * @chainable\n   *\n   * As object — multiple properties\n   *\n   * object.animate({ left: ..., top: ... });\n   * object.animate({ left: ..., top: ... }, { duration: ... });\n   *\n   * As string — one property\n   *\n   * object.animate('left', ...);\n   * object.animate('left', { duration: ... });\n   *\n   */\n  animate: function() {\n    if (arguments[0] && typeof arguments[0] === 'object') {\n      var propsToAnimate = [], prop, skipCallbacks;\n      for (prop in arguments[0]) {\n        propsToAnimate.push(prop);\n      }\n      for (var i = 0, len = propsToAnimate.length; i < len; i++) {\n        prop = propsToAnimate[i];\n        skipCallbacks = i !== len - 1;\n        this._animate(prop, arguments[0][prop], arguments[1], skipCallbacks);\n      }\n    }\n    else {\n      this._animate.apply(this, arguments);\n    }\n    return this;\n  },\n\n  /**\n   * @private\n   * @param {String} property Property to animate\n   * @param {String} to Value to animate to\n   * @param {Object} [options] Options object\n   * @param {Boolean} [skipCallbacks] When true, callbacks like onchange and oncomplete are not invoked\n   */\n  _animate: function(property, to, options, skipCallbacks) {\n    var _this = this, propPair;\n\n    to = to.toString();\n\n    if (!options) {\n      options = { };\n    }\n    else {\n      options = fabric.util.object.clone(options);\n    }\n\n    if (~property.indexOf('.')) {\n      propPair = property.split('.');\n    }\n\n    var propIsColor =\n      _this.colorProperties.indexOf(property) > -1 ||\n      (propPair && _this.colorProperties.indexOf(propPair[1]) > -1);\n\n    var currentValue = propPair\n      ? this.get(propPair[0])[propPair[1]]\n      : this.get(property);\n\n    if (!('from' in options)) {\n      options.from = currentValue;\n    }\n\n    if (!propIsColor) {\n      if (~to.indexOf('=')) {\n        to = currentValue + parseFloat(to.replace('=', ''));\n      }\n      else {\n        to = parseFloat(to);\n      }\n    }\n\n    var _options = {\n      startValue: options.from,\n      endValue: to,\n      byValue: options.by,\n      easing: options.easing,\n      duration: options.duration,\n      abort: options.abort && function(value, valueProgress, timeProgress) {\n        return options.abort.call(_this, value, valueProgress, timeProgress);\n      },\n      onChange: function (value, valueProgress, timeProgress) {\n        if (propPair) {\n          _this[propPair[0]][propPair[1]] = value;\n        }\n        else {\n          _this.set(property, value);\n        }\n        if (skipCallbacks) {\n          return;\n        }\n        options.onChange && options.onChange(value, valueProgress, timeProgress);\n      },\n      onComplete: function (value, valueProgress, timeProgress) {\n        if (skipCallbacks) {\n          return;\n        }\n\n        _this.setCoords();\n        options.onComplete && options.onComplete(value, valueProgress, timeProgress);\n      }\n    };\n\n    if (propIsColor) {\n      return fabric.util.animateColor(_options.startValue, _options.endValue, _options.duration, _options);\n    }\n    else {\n      return fabric.util.animate(_options);\n    }\n  }\n});\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      extend = fabric.util.object.extend,\n      clone = fabric.util.object.clone,\n      coordProps = { x1: 1, x2: 1, y1: 1, y2: 1 };\n\n  if (fabric.Line) {\n    fabric.warn('fabric.Line is already defined');\n    return;\n  }\n\n  /**\n   * Line class\n   * @class fabric.Line\n   * @extends fabric.Object\n   * @see {@link fabric.Line#initialize} for constructor definition\n   */\n  fabric.Line = fabric.util.createClass(fabric.Object, /** @lends fabric.Line.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'line',\n\n    /**\n     * x value or first line edge\n     * @type Number\n     * @default\n     */\n    x1: 0,\n\n    /**\n     * y value or first line edge\n     * @type Number\n     * @default\n     */\n    y1: 0,\n\n    /**\n     * x value or second line edge\n     * @type Number\n     * @default\n     */\n    x2: 0,\n\n    /**\n     * y value or second line edge\n     * @type Number\n     * @default\n     */\n    y2: 0,\n\n    cacheProperties: fabric.Object.prototype.cacheProperties.concat('x1', 'x2', 'y1', 'y2'),\n\n    /**\n     * Constructor\n     * @param {Array} [points] Array of points\n     * @param {Object} [options] Options object\n     * @return {fabric.Line} thisArg\n     */\n    initialize: function(points, options) {\n      if (!points) {\n        points = [0, 0, 0, 0];\n      }\n\n      this.callSuper('initialize', options);\n\n      this.set('x1', points[0]);\n      this.set('y1', points[1]);\n      this.set('x2', points[2]);\n      this.set('y2', points[3]);\n\n      this._setWidthHeight(options);\n    },\n\n    /**\n     * @private\n     * @param {Object} [options] Options\n     */\n    _setWidthHeight: function(options) {\n      options || (options = { });\n\n      this.width = Math.abs(this.x2 - this.x1);\n      this.height = Math.abs(this.y2 - this.y1);\n\n      this.left = 'left' in options\n        ? options.left\n        : this._getLeftToOriginX();\n\n      this.top = 'top' in options\n        ? options.top\n        : this._getTopToOriginY();\n    },\n\n    /**\n     * @private\n     * @param {String} key\n     * @param {*} value\n     */\n    _set: function(key, value) {\n      this.callSuper('_set', key, value);\n      if (typeof coordProps[key] !== 'undefined') {\n        this._setWidthHeight();\n      }\n      return this;\n    },\n\n    /**\n     * @private\n     * @return {Number} leftToOriginX Distance from left edge of canvas to originX of Line.\n     */\n    _getLeftToOriginX: makeEdgeToOriginGetter(\n      { // property names\n        origin: 'originX',\n        axis1: 'x1',\n        axis2: 'x2',\n        dimension: 'width'\n      },\n      { // possible values of origin\n        nearest: 'left',\n        center: 'center',\n        farthest: 'right'\n      }\n    ),\n\n    /**\n     * @private\n     * @return {Number} topToOriginY Distance from top edge of canvas to originY of Line.\n     */\n    _getTopToOriginY: makeEdgeToOriginGetter(\n      { // property names\n        origin: 'originY',\n        axis1: 'y1',\n        axis2: 'y2',\n        dimension: 'height'\n      },\n      { // possible values of origin\n        nearest: 'top',\n        center: 'center',\n        farthest: 'bottom'\n      }\n    ),\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _render: function(ctx) {\n      ctx.beginPath();\n\n\n      var p = this.calcLinePoints();\n      ctx.moveTo(p.x1, p.y1);\n      ctx.lineTo(p.x2, p.y2);\n\n      ctx.lineWidth = this.strokeWidth;\n\n      // TODO: test this\n      // make sure setting \"fill\" changes color of a line\n      // (by copying fillStyle to strokeStyle, since line is stroked, not filled)\n      var origStrokeStyle = ctx.strokeStyle;\n      ctx.strokeStyle = this.stroke || ctx.fillStyle;\n      this.stroke && this._renderStroke(ctx);\n      ctx.strokeStyle = origStrokeStyle;\n    },\n\n    /**\n     * This function is an helper for svg import. it returns the center of the object in the svg\n     * untransformed coordinates\n     * @private\n     * @return {Object} center point from element coordinates\n     */\n    _findCenterFromElement: function() {\n      return {\n        x: (this.x1 + this.x2) / 2,\n        y: (this.y1 + this.y2) / 2,\n      };\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @method toObject\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      return extend(this.callSuper('toObject', propertiesToInclude), this.calcLinePoints());\n    },\n\n    /*\n     * Calculate object dimensions from its properties\n     * @private\n     */\n    _getNonTransformedDimensions: function() {\n      var dim = this.callSuper('_getNonTransformedDimensions');\n      if (this.strokeLineCap === 'butt') {\n        if (this.width === 0) {\n          dim.y -= this.strokeWidth;\n        }\n        if (this.height === 0) {\n          dim.x -= this.strokeWidth;\n        }\n      }\n      return dim;\n    },\n\n    /**\n     * Recalculates line points given width and height\n     * @private\n     */\n    calcLinePoints: function() {\n      var xMult = this.x1 <= this.x2 ? -1 : 1,\n          yMult = this.y1 <= this.y2 ? -1 : 1,\n          x1 = (xMult * this.width * 0.5),\n          y1 = (yMult * this.height * 0.5),\n          x2 = (xMult * this.width * -0.5),\n          y2 = (yMult * this.height * -0.5);\n\n      return {\n        x1: x1,\n        x2: x2,\n        y1: y1,\n        y2: y2\n      };\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns svg representation of an instance\n     * @return {Array} an array of strings with the specific svg representation\n     * of the instance\n     */\n    _toSVG: function() {\n      var p = this.calcLinePoints();\n      return [\n        '<line ', 'COMMON_PARTS',\n        'x1=\"', p.x1,\n        '\" y1=\"', p.y1,\n        '\" x2=\"', p.x2,\n        '\" y2=\"', p.y2,\n        '\" />\\n'\n      ];\n    },\n    /* _TO_SVG_END_ */\n  });\n\n  /* _FROM_SVG_START_ */\n  /**\n   * List of attribute names to account for when parsing SVG element (used by {@link fabric.Line.fromElement})\n   * @static\n   * @memberOf fabric.Line\n   * @see http://www.w3.org/TR/SVG/shapes.html#LineElement\n   */\n  fabric.Line.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x1 y1 x2 y2'.split(' '));\n\n  /**\n   * Returns fabric.Line instance from an SVG element\n   * @static\n   * @memberOf fabric.Line\n   * @param {SVGElement} element Element to parse\n   * @param {Object} [options] Options object\n   * @param {Function} [callback] callback function invoked after parsing\n   */\n  fabric.Line.fromElement = function(element, callback, options) {\n    options = options || { };\n    var parsedAttributes = fabric.parseAttributes(element, fabric.Line.ATTRIBUTE_NAMES),\n        points = [\n          parsedAttributes.x1 || 0,\n          parsedAttributes.y1 || 0,\n          parsedAttributes.x2 || 0,\n          parsedAttributes.y2 || 0\n        ];\n    callback(new fabric.Line(points, extend(parsedAttributes, options)));\n  };\n  /* _FROM_SVG_END_ */\n\n  /**\n   * Returns fabric.Line instance from an object representation\n   * @static\n   * @memberOf fabric.Line\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] invoked with new instance as first argument\n   */\n  fabric.Line.fromObject = function(object, callback) {\n    function _callback(instance) {\n      delete instance.points;\n      callback && callback(instance);\n    };\n    var options = clone(object, true);\n    options.points = [object.x1, object.y1, object.x2, object.y2];\n    fabric.Object._fromObject('Line', options, _callback, 'points');\n  };\n\n  /**\n   * Produces a function that calculates distance from canvas edge to Line origin.\n   */\n  function makeEdgeToOriginGetter(propertyNames, originValues) {\n    var origin = propertyNames.origin,\n        axis1 = propertyNames.axis1,\n        axis2 = propertyNames.axis2,\n        dimension = propertyNames.dimension,\n        nearest = originValues.nearest,\n        center = originValues.center,\n        farthest = originValues.farthest;\n\n    return function() {\n      switch (this.get(origin)) {\n        case nearest:\n          return Math.min(this.get(axis1), this.get(axis2));\n        case center:\n          return Math.min(this.get(axis1), this.get(axis2)) + (0.5 * this.get(dimension));\n        case farthest:\n          return Math.max(this.get(axis1), this.get(axis2));\n      }\n    };\n\n  }\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      pi = Math.PI;\n\n  if (fabric.Circle) {\n    fabric.warn('fabric.Circle is already defined.');\n    return;\n  }\n\n  /**\n   * Circle class\n   * @class fabric.Circle\n   * @extends fabric.Object\n   * @see {@link fabric.Circle#initialize} for constructor definition\n   */\n  fabric.Circle = fabric.util.createClass(fabric.Object, /** @lends fabric.Circle.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'circle',\n\n    /**\n     * Radius of this circle\n     * @type Number\n     * @default\n     */\n    radius: 0,\n\n    /**\n     * Start angle of the circle, moving clockwise\n     * deprecated type, this should be in degree, this was an oversight.\n     * probably will change to degrees in next major version\n     * @type Number\n     * @default 0\n     */\n    startAngle: 0,\n\n    /**\n     * End angle of the circle\n     * deprecated type, this should be in degree, this was an oversight.\n     * probably will change to degrees in next major version\n     * @type Number\n     * @default 2Pi\n     */\n    endAngle: pi * 2,\n\n    cacheProperties: fabric.Object.prototype.cacheProperties.concat('radius', 'startAngle', 'endAngle'),\n\n    /**\n     * @private\n     * @param {String} key\n     * @param {*} value\n     * @return {fabric.Circle} thisArg\n     */\n    _set: function(key, value) {\n      this.callSuper('_set', key, value);\n\n      if (key === 'radius') {\n        this.setRadius(value);\n      }\n\n      return this;\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      return this.callSuper('toObject', ['radius', 'startAngle', 'endAngle'].concat(propertiesToInclude));\n    },\n\n    /* _TO_SVG_START_ */\n\n    /**\n     * Returns svg representation of an instance\n     * @return {Array} an array of strings with the specific svg representation\n     * of the instance\n     */\n    _toSVG: function() {\n      var svgString, x = 0, y = 0,\n          angle = (this.endAngle - this.startAngle) % ( 2 * pi);\n\n      if (angle === 0) {\n        svgString = [\n          '<circle ', 'COMMON_PARTS',\n          'cx=\"' + x + '\" cy=\"' + y + '\" ',\n          'r=\"', this.radius,\n          '\" />\\n'\n        ];\n      }\n      else {\n        var startX = fabric.util.cos(this.startAngle) * this.radius,\n            startY = fabric.util.sin(this.startAngle) * this.radius,\n            endX = fabric.util.cos(this.endAngle) * this.radius,\n            endY = fabric.util.sin(this.endAngle) * this.radius,\n            largeFlag = angle > pi ? '1' : '0';\n        svgString = [\n          '<path d=\"M ' + startX + ' ' + startY,\n          ' A ' + this.radius + ' ' + this.radius,\n          ' 0 ', +largeFlag + ' 1', ' ' + endX + ' ' + endY,\n          '\" ', 'COMMON_PARTS', ' />\\n'\n        ];\n      }\n      return svgString;\n    },\n    /* _TO_SVG_END_ */\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx context to render on\n     */\n    _render: function(ctx) {\n      ctx.beginPath();\n      ctx.arc(\n        0,\n        0,\n        this.radius,\n        this.startAngle,\n        this.endAngle, false);\n      this._renderPaintInOrder(ctx);\n    },\n\n    /**\n     * Returns horizontal radius of an object (according to how an object is scaled)\n     * @return {Number}\n     */\n    getRadiusX: function() {\n      return this.get('radius') * this.get('scaleX');\n    },\n\n    /**\n     * Returns vertical radius of an object (according to how an object is scaled)\n     * @return {Number}\n     */\n    getRadiusY: function() {\n      return this.get('radius') * this.get('scaleY');\n    },\n\n    /**\n     * Sets radius of an object (and updates width accordingly)\n     * @return {fabric.Circle} thisArg\n     */\n    setRadius: function(value) {\n      this.radius = value;\n      return this.set('width', value * 2).set('height', value * 2);\n    },\n  });\n\n  /* _FROM_SVG_START_ */\n  /**\n   * List of attribute names to account for when parsing SVG element (used by {@link fabric.Circle.fromElement})\n   * @static\n   * @memberOf fabric.Circle\n   * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement\n   */\n  fabric.Circle.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' '));\n\n  /**\n   * Returns {@link fabric.Circle} instance from an SVG element\n   * @static\n   * @memberOf fabric.Circle\n   * @param {SVGElement} element Element to parse\n   * @param {Function} [callback] Options callback invoked after parsing is finished\n   * @param {Object} [options] Options object\n   * @throws {Error} If value of `r` attribute is missing or invalid\n   */\n  fabric.Circle.fromElement = function(element, callback) {\n    var parsedAttributes = fabric.parseAttributes(element, fabric.Circle.ATTRIBUTE_NAMES);\n\n    if (!isValidRadius(parsedAttributes)) {\n      throw new Error('value of `r` attribute is required and can not be negative');\n    }\n\n    parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.radius;\n    parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.radius;\n    callback(new fabric.Circle(parsedAttributes));\n  };\n\n  /**\n   * @private\n   */\n  function isValidRadius(attributes) {\n    return (('radius' in attributes) && (attributes.radius >= 0));\n  }\n  /* _FROM_SVG_END_ */\n\n  /**\n   * Returns {@link fabric.Circle} instance from an object representation\n   * @static\n   * @memberOf fabric.Circle\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] invoked with new instance as first argument\n   * @return {void}\n   */\n  fabric.Circle.fromObject = function(object, callback) {\n    fabric.Object._fromObject('Circle', object, callback);\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { });\n\n  if (fabric.Triangle) {\n    fabric.warn('fabric.Triangle is already defined');\n    return;\n  }\n\n  /**\n   * Triangle class\n   * @class fabric.Triangle\n   * @extends fabric.Object\n   * @return {fabric.Triangle} thisArg\n   * @see {@link fabric.Triangle#initialize} for constructor definition\n   */\n  fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'triangle',\n\n    /**\n     * Width is set to 100 to compensate the old initialize code that was setting it to 100\n     * @type Number\n     * @default\n     */\n    width: 100,\n\n    /**\n     * Height is set to 100 to compensate the old initialize code that was setting it to 100\n     * @type Number\n     * @default\n     */\n    height: 100,\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _render: function(ctx) {\n      var widthBy2 = this.width / 2,\n          heightBy2 = this.height / 2;\n\n      ctx.beginPath();\n      ctx.moveTo(-widthBy2, heightBy2);\n      ctx.lineTo(0, -heightBy2);\n      ctx.lineTo(widthBy2, heightBy2);\n      ctx.closePath();\n\n      this._renderPaintInOrder(ctx);\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns svg representation of an instance\n     * @return {Array} an array of strings with the specific svg representation\n     * of the instance\n     */\n    _toSVG: function() {\n      var widthBy2 = this.width / 2,\n          heightBy2 = this.height / 2,\n          points = [\n            -widthBy2 + ' ' + heightBy2,\n            '0 ' + -heightBy2,\n            widthBy2 + ' ' + heightBy2\n          ].join(',');\n      return [\n        '<polygon ', 'COMMON_PARTS',\n        'points=\"', points,\n        '\" />'\n      ];\n    },\n    /* _TO_SVG_END_ */\n  });\n\n  /**\n   * Returns {@link fabric.Triangle} instance from an object representation\n   * @static\n   * @memberOf fabric.Triangle\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] invoked with new instance as first argument\n   */\n  fabric.Triangle.fromObject = function(object, callback) {\n    return fabric.Object._fromObject('Triangle', object, callback);\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      piBy2   = Math.PI * 2;\n\n  if (fabric.Ellipse) {\n    fabric.warn('fabric.Ellipse is already defined.');\n    return;\n  }\n\n  /**\n   * Ellipse class\n   * @class fabric.Ellipse\n   * @extends fabric.Object\n   * @return {fabric.Ellipse} thisArg\n   * @see {@link fabric.Ellipse#initialize} for constructor definition\n   */\n  fabric.Ellipse = fabric.util.createClass(fabric.Object, /** @lends fabric.Ellipse.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'ellipse',\n\n    /**\n     * Horizontal radius\n     * @type Number\n     * @default\n     */\n    rx:   0,\n\n    /**\n     * Vertical radius\n     * @type Number\n     * @default\n     */\n    ry:   0,\n\n    cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n    /**\n     * Constructor\n     * @param {Object} [options] Options object\n     * @return {fabric.Ellipse} thisArg\n     */\n    initialize: function(options) {\n      this.callSuper('initialize', options);\n      this.set('rx', options && options.rx || 0);\n      this.set('ry', options && options.ry || 0);\n    },\n\n    /**\n     * @private\n     * @param {String} key\n     * @param {*} value\n     * @return {fabric.Ellipse} thisArg\n     */\n    _set: function(key, value) {\n      this.callSuper('_set', key, value);\n      switch (key) {\n\n        case 'rx':\n          this.rx = value;\n          this.set('width', value * 2);\n          break;\n\n        case 'ry':\n          this.ry = value;\n          this.set('height', value * 2);\n          break;\n\n      }\n      return this;\n    },\n\n    /**\n     * Returns horizontal radius of an object (according to how an object is scaled)\n     * @return {Number}\n     */\n    getRx: function() {\n      return this.get('rx') * this.get('scaleX');\n    },\n\n    /**\n     * Returns Vertical radius of an object (according to how an object is scaled)\n     * @return {Number}\n     */\n    getRy: function() {\n      return this.get('ry') * this.get('scaleY');\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns svg representation of an instance\n     * @return {Array} an array of strings with the specific svg representation\n     * of the instance\n     */\n    _toSVG: function() {\n      return [\n        '<ellipse ', 'COMMON_PARTS',\n        'cx=\"0\" cy=\"0\" ',\n        'rx=\"', this.rx,\n        '\" ry=\"', this.ry,\n        '\" />\\n'\n      ];\n    },\n    /* _TO_SVG_END_ */\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx context to render on\n     */\n    _render: function(ctx) {\n      ctx.beginPath();\n      ctx.save();\n      ctx.transform(1, 0, 0, this.ry / this.rx, 0, 0);\n      ctx.arc(\n        0,\n        0,\n        this.rx,\n        0,\n        piBy2,\n        false);\n      ctx.restore();\n      this._renderPaintInOrder(ctx);\n    },\n  });\n\n  /* _FROM_SVG_START_ */\n  /**\n   * List of attribute names to account for when parsing SVG element (used by {@link fabric.Ellipse.fromElement})\n   * @static\n   * @memberOf fabric.Ellipse\n   * @see http://www.w3.org/TR/SVG/shapes.html#EllipseElement\n   */\n  fabric.Ellipse.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy rx ry'.split(' '));\n\n  /**\n   * Returns {@link fabric.Ellipse} instance from an SVG element\n   * @static\n   * @memberOf fabric.Ellipse\n   * @param {SVGElement} element Element to parse\n   * @param {Function} [callback] Options callback invoked after parsing is finished\n   * @return {fabric.Ellipse}\n   */\n  fabric.Ellipse.fromElement = function(element, callback) {\n\n    var parsedAttributes = fabric.parseAttributes(element, fabric.Ellipse.ATTRIBUTE_NAMES);\n\n    parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.rx;\n    parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.ry;\n    callback(new fabric.Ellipse(parsedAttributes));\n  };\n  /* _FROM_SVG_END_ */\n\n  /**\n   * Returns {@link fabric.Ellipse} instance from an object representation\n   * @static\n   * @memberOf fabric.Ellipse\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] invoked with new instance as first argument\n   * @return {void}\n   */\n  fabric.Ellipse.fromObject = function(object, callback) {\n    fabric.Object._fromObject('Ellipse', object, callback);\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      extend = fabric.util.object.extend;\n\n  if (fabric.Rect) {\n    fabric.warn('fabric.Rect is already defined');\n    return;\n  }\n\n  /**\n   * Rectangle class\n   * @class fabric.Rect\n   * @extends fabric.Object\n   * @return {fabric.Rect} thisArg\n   * @see {@link fabric.Rect#initialize} for constructor definition\n   */\n  fabric.Rect = fabric.util.createClass(fabric.Object, /** @lends fabric.Rect.prototype */ {\n\n    /**\n     * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged})\n     * as well as for history (undo/redo) purposes\n     * @type Array\n     */\n    stateProperties: fabric.Object.prototype.stateProperties.concat('rx', 'ry'),\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'rect',\n\n    /**\n     * Horizontal border radius\n     * @type Number\n     * @default\n     */\n    rx:   0,\n\n    /**\n     * Vertical border radius\n     * @type Number\n     * @default\n     */\n    ry:   0,\n\n    cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n    /**\n     * Constructor\n     * @param {Object} [options] Options object\n     * @return {Object} thisArg\n     */\n    initialize: function(options) {\n      this.callSuper('initialize', options);\n      this._initRxRy();\n    },\n\n    /**\n     * Initializes rx/ry attributes\n     * @private\n     */\n    _initRxRy: function() {\n      if (this.rx && !this.ry) {\n        this.ry = this.rx;\n      }\n      else if (this.ry && !this.rx) {\n        this.rx = this.ry;\n      }\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _render: function(ctx) {\n\n      // 1x1 case (used in spray brush) optimization was removed because\n      // with caching and higher zoom level this makes more damage than help\n\n      var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0,\n          ry = this.ry ? Math.min(this.ry, this.height / 2) : 0,\n          w = this.width,\n          h = this.height,\n          x = -this.width / 2,\n          y = -this.height / 2,\n          isRounded = rx !== 0 || ry !== 0,\n          /* \"magic number\" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */\n          k = 1 - 0.5522847498;\n      ctx.beginPath();\n\n      ctx.moveTo(x + rx, y);\n\n      ctx.lineTo(x + w - rx, y);\n      isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry);\n\n      ctx.lineTo(x + w, y + h - ry);\n      isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h);\n\n      ctx.lineTo(x + rx, y + h);\n      isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry);\n\n      ctx.lineTo(x, y + ry);\n      isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y);\n\n      ctx.closePath();\n\n      this._renderPaintInOrder(ctx);\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns svg representation of an instance\n     * @return {Array} an array of strings with the specific svg representation\n     * of the instance\n     */\n    _toSVG: function() {\n      var x = -this.width / 2, y = -this.height / 2;\n      return [\n        '<rect ', 'COMMON_PARTS',\n        'x=\"', x, '\" y=\"', y,\n        '\" rx=\"', this.rx, '\" ry=\"', this.ry,\n        '\" width=\"', this.width, '\" height=\"', this.height,\n        '\" />\\n'\n      ];\n    },\n    /* _TO_SVG_END_ */\n  });\n\n  /* _FROM_SVG_START_ */\n  /**\n   * List of attribute names to account for when parsing SVG element (used by `fabric.Rect.fromElement`)\n   * @static\n   * @memberOf fabric.Rect\n   * @see: http://www.w3.org/TR/SVG/shapes.html#RectElement\n   */\n  fabric.Rect.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x y rx ry width height'.split(' '));\n\n  /**\n   * Returns {@link fabric.Rect} instance from an SVG element\n   * @static\n   * @memberOf fabric.Rect\n   * @param {SVGElement} element Element to parse\n   * @param {Function} callback callback function invoked after parsing\n   * @param {Object} [options] Options object\n   */\n  fabric.Rect.fromElement = function(element, callback, options) {\n    if (!element) {\n      return callback(null);\n    }\n    options = options || { };\n\n    var parsedAttributes = fabric.parseAttributes(element, fabric.Rect.ATTRIBUTE_NAMES);\n    parsedAttributes.left = parsedAttributes.left || 0;\n    parsedAttributes.top  = parsedAttributes.top  || 0;\n    parsedAttributes.height  = parsedAttributes.height || 0;\n    parsedAttributes.width  = parsedAttributes.width || 0;\n    var rect = new fabric.Rect(extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n    rect.visible = rect.visible && rect.width > 0 && rect.height > 0;\n    callback(rect);\n  };\n  /* _FROM_SVG_END_ */\n\n  /**\n   * Returns {@link fabric.Rect} instance from an object representation\n   * @static\n   * @memberOf fabric.Rect\n   * @param {Object} object Object to create an instance from\n   * @param {Function} [callback] Callback to invoke when an fabric.Rect instance is created\n   */\n  fabric.Rect.fromObject = function(object, callback) {\n    return fabric.Object._fromObject('Rect', object, callback);\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      extend = fabric.util.object.extend,\n      min = fabric.util.array.min,\n      max = fabric.util.array.max,\n      toFixed = fabric.util.toFixed;\n\n  if (fabric.Polyline) {\n    fabric.warn('fabric.Polyline is already defined');\n    return;\n  }\n\n  /**\n   * Polyline class\n   * @class fabric.Polyline\n   * @extends fabric.Object\n   * @see {@link fabric.Polyline#initialize} for constructor definition\n   */\n  fabric.Polyline = fabric.util.createClass(fabric.Object, /** @lends fabric.Polyline.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'polyline',\n\n    /**\n     * Points array\n     * @type Array\n     * @default\n     */\n    points: null,\n\n    cacheProperties: fabric.Object.prototype.cacheProperties.concat('points'),\n\n    /**\n     * Constructor\n     * @param {Array} points Array of points (where each point is an object with x and y)\n     * @param {Object} [options] Options object\n     * @return {fabric.Polyline} thisArg\n     * @example\n     * var poly = new fabric.Polyline([\n     *     { x: 10, y: 10 },\n     *     { x: 50, y: 30 },\n     *     { x: 40, y: 70 },\n     *     { x: 60, y: 50 },\n     *     { x: 100, y: 150 },\n     *     { x: 40, y: 100 }\n     *   ], {\n     *   stroke: 'red',\n     *   left: 100,\n     *   top: 100\n     * });\n     */\n    initialize: function(points, options) {\n      options = options || {};\n      this.points = points || [];\n      this.callSuper('initialize', options);\n      this._setPositionDimensions(options);\n    },\n\n    _setPositionDimensions: function(options) {\n      var calcDim = this._calcDimensions(options), correctLeftTop;\n      this.width = calcDim.width;\n      this.height = calcDim.height;\n      if (!options.fromSVG) {\n        correctLeftTop = this.translateToGivenOrigin(\n          { x: calcDim.left - this.strokeWidth / 2, y: calcDim.top - this.strokeWidth / 2 },\n          'left',\n          'top',\n          this.originX,\n          this.originY\n        );\n      }\n      if (typeof options.left === 'undefined') {\n        this.left = options.fromSVG ? calcDim.left : correctLeftTop.x;\n      }\n      if (typeof options.top === 'undefined') {\n        this.top = options.fromSVG ? calcDim.top : correctLeftTop.y;\n      }\n      this.pathOffset = {\n        x: calcDim.left + this.width / 2,\n        y: calcDim.top + this.height / 2\n      };\n    },\n\n    /**\n     * Calculate the polygon min and max point from points array,\n     * returning an object with left, top, width, height to measure the\n     * polygon size\n     * @return {Object} object.left X coordinate of the polygon leftmost point\n     * @return {Object} object.top Y coordinate of the polygon topmost point\n     * @return {Object} object.width distance between X coordinates of the polygon leftmost and rightmost point\n     * @return {Object} object.height distance between Y coordinates of the polygon topmost and bottommost point\n     * @private\n     */\n    _calcDimensions: function() {\n\n      var points = this.points,\n          minX = min(points, 'x') || 0,\n          minY = min(points, 'y') || 0,\n          maxX = max(points, 'x') || 0,\n          maxY = max(points, 'y') || 0,\n          width = (maxX - minX),\n          height = (maxY - minY);\n\n      return {\n        left: minX,\n        top: minY,\n        width: width,\n        height: height\n      };\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} Object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      return extend(this.callSuper('toObject', propertiesToInclude), {\n        points: this.points.concat()\n      });\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns svg representation of an instance\n     * @return {Array} an array of strings with the specific svg representation\n     * of the instance\n     */\n    _toSVG: function() {\n      var points = [], diffX = this.pathOffset.x, diffY = this.pathOffset.y,\n          NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n      for (var i = 0, len = this.points.length; i < len; i++) {\n        points.push(\n          toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), ',',\n          toFixed(this.points[i].y - diffY, NUM_FRACTION_DIGITS), ' '\n        );\n      }\n      return [\n        '<' + this.type + ' ', 'COMMON_PARTS',\n        'points=\"', points.join(''),\n        '\" />\\n'\n      ];\n    },\n    /* _TO_SVG_END_ */\n\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    commonRender: function(ctx) {\n      var point, len = this.points.length,\n          x = this.pathOffset.x,\n          y = this.pathOffset.y;\n\n      if (!len || isNaN(this.points[len - 1].y)) {\n        // do not draw if no points or odd points\n        // NaN comes from parseFloat of a empty string in parser\n        return false;\n      }\n      ctx.beginPath();\n      ctx.moveTo(this.points[0].x - x, this.points[0].y - y);\n      for (var i = 0; i < len; i++) {\n        point = this.points[i];\n        ctx.lineTo(point.x - x, point.y - y);\n      }\n      return true;\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _render: function(ctx) {\n      if (!this.commonRender(ctx)) {\n        return;\n      }\n      this._renderPaintInOrder(ctx);\n    },\n\n    /**\n     * Returns complexity of an instance\n     * @return {Number} complexity of this instance\n     */\n    complexity: function() {\n      return this.get('points').length;\n    }\n  });\n\n  /* _FROM_SVG_START_ */\n  /**\n   * List of attribute names to account for when parsing SVG element (used by {@link fabric.Polyline.fromElement})\n   * @static\n   * @memberOf fabric.Polyline\n   * @see: http://www.w3.org/TR/SVG/shapes.html#PolylineElement\n   */\n  fabric.Polyline.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n  /**\n   * Returns fabric.Polyline instance from an SVG element\n   * @static\n   * @memberOf fabric.Polyline\n   * @param {SVGElement} element Element to parser\n   * @param {Function} callback callback function invoked after parsing\n   * @param {Object} [options] Options object\n   */\n  fabric.Polyline.fromElementGenerator = function(_class) {\n    return function(element, callback, options) {\n      if (!element) {\n        return callback(null);\n      }\n      options || (options = { });\n\n      var points = fabric.parsePointsAttribute(element.getAttribute('points')),\n          parsedAttributes = fabric.parseAttributes(element, fabric[_class].ATTRIBUTE_NAMES);\n      parsedAttributes.fromSVG = true;\n      callback(new fabric[_class](points, extend(parsedAttributes, options)));\n    };\n  };\n\n  fabric.Polyline.fromElement = fabric.Polyline.fromElementGenerator('Polyline');\n\n  /* _FROM_SVG_END_ */\n\n  /**\n   * Returns fabric.Polyline instance from an object representation\n   * @static\n   * @memberOf fabric.Polyline\n   * @param {Object} object Object to create an instance from\n   * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n   */\n  fabric.Polyline.fromObject = function(object, callback) {\n    return fabric.Object._fromObject('Polyline', object, callback, 'points');\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { });\n\n  if (fabric.Polygon) {\n    fabric.warn('fabric.Polygon is already defined');\n    return;\n  }\n\n  /**\n   * Polygon class\n   * @class fabric.Polygon\n   * @extends fabric.Polyline\n   * @see {@link fabric.Polygon#initialize} for constructor definition\n   */\n  fabric.Polygon = fabric.util.createClass(fabric.Polyline, /** @lends fabric.Polygon.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'polygon',\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _render: function(ctx) {\n      if (!this.commonRender(ctx)) {\n        return;\n      }\n      ctx.closePath();\n      this._renderPaintInOrder(ctx);\n    },\n\n  });\n\n  /* _FROM_SVG_START_ */\n  /**\n   * List of attribute names to account for when parsing SVG element (used by `fabric.Polygon.fromElement`)\n   * @static\n   * @memberOf fabric.Polygon\n   * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement\n   */\n  fabric.Polygon.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n  /**\n   * Returns {@link fabric.Polygon} instance from an SVG element\n   * @static\n   * @memberOf fabric.Polygon\n   * @param {SVGElement} element Element to parse\n   * @param {Function} callback callback function invoked after parsing\n   * @param {Object} [options] Options object\n   */\n  fabric.Polygon.fromElement = fabric.Polyline.fromElementGenerator('Polygon');\n  /* _FROM_SVG_END_ */\n\n  /**\n   * Returns fabric.Polygon instance from an object representation\n   * @static\n   * @memberOf fabric.Polygon\n   * @param {Object} object Object to create an instance from\n   * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n   * @return {void}\n   */\n  fabric.Polygon.fromObject = function(object, callback) {\n    fabric.Object._fromObject('Polygon', object, callback, 'points');\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      min = fabric.util.array.min,\n      max = fabric.util.array.max,\n      extend = fabric.util.object.extend,\n      _toString = Object.prototype.toString,\n      toFixed = fabric.util.toFixed;\n\n  if (fabric.Path) {\n    fabric.warn('fabric.Path is already defined');\n    return;\n  }\n\n  /**\n   * Path class\n   * @class fabric.Path\n   * @extends fabric.Object\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#path_and_pathgroup}\n   * @see {@link fabric.Path#initialize} for constructor definition\n   */\n  fabric.Path = fabric.util.createClass(fabric.Object, /** @lends fabric.Path.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'path',\n\n    /**\n     * Array of path points\n     * @type Array\n     * @default\n     */\n    path: null,\n\n    cacheProperties: fabric.Object.prototype.cacheProperties.concat('path', 'fillRule'),\n\n    stateProperties: fabric.Object.prototype.stateProperties.concat('path'),\n\n    /**\n     * Constructor\n     * @param {Array|String} path Path data (sequence of coordinates and corresponding \"command\" tokens)\n     * @param {Object} [options] Options object\n     * @return {fabric.Path} thisArg\n     */\n    initialize: function(path, options) {\n      options = options || { };\n      this.callSuper('initialize', options);\n      if (!path) {\n        path = [];\n      }\n\n      var fromArray = _toString.call(path) === '[object Array]';\n\n      this.path = fabric.util.makePathSimpler(\n        fromArray ? path : fabric.util.parsePath(path)\n      );\n\n      if (!this.path) {\n        return;\n      }\n      fabric.Polyline.prototype._setPositionDimensions.call(this, options);\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx context to render path on\n     */\n    _renderPathCommands: function(ctx) {\n      var current, // current instruction\n          subpathStartX = 0,\n          subpathStartY = 0,\n          x = 0, // current x\n          y = 0, // current y\n          controlX = 0, // current control point x\n          controlY = 0, // current control point y\n          l = -this.pathOffset.x,\n          t = -this.pathOffset.y;\n\n      ctx.beginPath();\n\n      for (var i = 0, len = this.path.length; i < len; ++i) {\n\n        current = this.path[i];\n\n        switch (current[0]) { // first letter\n\n          case 'L': // lineto, absolute\n            x = current[1];\n            y = current[2];\n            ctx.lineTo(x + l, y + t);\n            break;\n\n          case 'M': // moveTo, absolute\n            x = current[1];\n            y = current[2];\n            subpathStartX = x;\n            subpathStartY = y;\n            ctx.moveTo(x + l, y + t);\n            break;\n\n          case 'C': // bezierCurveTo, absolute\n            x = current[5];\n            y = current[6];\n            controlX = current[3];\n            controlY = current[4];\n            ctx.bezierCurveTo(\n              current[1] + l,\n              current[2] + t,\n              controlX + l,\n              controlY + t,\n              x + l,\n              y + t\n            );\n            break;\n\n          case 'Q': // quadraticCurveTo, absolute\n            ctx.quadraticCurveTo(\n              current[1] + l,\n              current[2] + t,\n              current[3] + l,\n              current[4] + t\n            );\n            x = current[3];\n            y = current[4];\n            controlX = current[1];\n            controlY = current[2];\n            break;\n\n          case 'z':\n          case 'Z':\n            x = subpathStartX;\n            y = subpathStartY;\n            ctx.closePath();\n            break;\n        }\n      }\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx context to render path on\n     */\n    _render: function(ctx) {\n      this._renderPathCommands(ctx);\n      this._renderPaintInOrder(ctx);\n    },\n\n    /**\n     * Returns string representation of an instance\n     * @return {String} string representation of an instance\n     */\n    toString: function() {\n      return '#<fabric.Path (' + this.complexity() +\n        '): { \"top\": ' + this.top + ', \"left\": ' + this.left + ' }>';\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      return extend(this.callSuper('toObject', propertiesToInclude), {\n        path: this.path.map(function(item) { return item.slice(); }),\n      });\n    },\n\n    /**\n     * Returns dataless object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toDatalessObject: function(propertiesToInclude) {\n      var o = this.toObject(['sourcePath'].concat(propertiesToInclude));\n      if (o.sourcePath) {\n        delete o.path;\n      }\n      return o;\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns svg representation of an instance\n     * @return {Array} an array of strings with the specific svg representation\n     * of the instance\n     */\n    _toSVG: function() {\n      var path = fabric.util.joinPath(this.path);\n      return [\n        '<path ', 'COMMON_PARTS',\n        'd=\"', path,\n        '\" stroke-linecap=\"round\" ',\n        '/>\\n'\n      ];\n    },\n\n    _getOffsetTransform: function() {\n      var digits = fabric.Object.NUM_FRACTION_DIGITS;\n      return ' translate(' + toFixed(-this.pathOffset.x, digits) + ', ' +\n          toFixed(-this.pathOffset.y, digits) + ')';\n    },\n\n    /**\n     * Returns svg clipPath representation of an instance\n     * @param {Function} [reviver] Method for further parsing of svg representation.\n     * @return {String} svg representation of an instance\n     */\n    toClipPathSVG: function(reviver) {\n      var additionalTransform = this._getOffsetTransform();\n      return '\\t' + this._createBaseClipPathSVGMarkup(\n        this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform }\n      );\n    },\n\n    /**\n     * Returns svg representation of an instance\n     * @param {Function} [reviver] Method for further parsing of svg representation.\n     * @return {String} svg representation of an instance\n     */\n    toSVG: function(reviver) {\n      var additionalTransform = this._getOffsetTransform();\n      return this._createBaseSVGMarkup(this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform  });\n    },\n    /* _TO_SVG_END_ */\n\n    /**\n     * Returns number representation of an instance complexity\n     * @return {Number} complexity of this instance\n     */\n    complexity: function() {\n      return this.path.length;\n    },\n\n    /**\n     * @private\n     */\n    _calcDimensions: function() {\n\n      var aX = [],\n          aY = [],\n          current, // current instruction\n          subpathStartX = 0,\n          subpathStartY = 0,\n          x = 0, // current x\n          y = 0, // current y\n          bounds;\n\n      for (var i = 0, len = this.path.length; i < len; ++i) {\n\n        current = this.path[i];\n\n        switch (current[0]) { // first letter\n\n          case 'L': // lineto, absolute\n            x = current[1];\n            y = current[2];\n            bounds = [];\n            break;\n\n          case 'M': // moveTo, absolute\n            x = current[1];\n            y = current[2];\n            subpathStartX = x;\n            subpathStartY = y;\n            bounds = [];\n            break;\n\n          case 'C': // bezierCurveTo, absolute\n            bounds = fabric.util.getBoundsOfCurve(x, y,\n              current[1],\n              current[2],\n              current[3],\n              current[4],\n              current[5],\n              current[6]\n            );\n            x = current[5];\n            y = current[6];\n            break;\n\n          case 'Q': // quadraticCurveTo, absolute\n            bounds = fabric.util.getBoundsOfCurve(x, y,\n              current[1],\n              current[2],\n              current[1],\n              current[2],\n              current[3],\n              current[4]\n            );\n            x = current[3];\n            y = current[4];\n            break;\n\n          case 'z':\n          case 'Z':\n            x = subpathStartX;\n            y = subpathStartY;\n            break;\n        }\n        bounds.forEach(function (point) {\n          aX.push(point.x);\n          aY.push(point.y);\n        });\n        aX.push(x);\n        aY.push(y);\n      }\n\n      var minX = min(aX) || 0,\n          minY = min(aY) || 0,\n          maxX = max(aX) || 0,\n          maxY = max(aY) || 0,\n          deltaX = maxX - minX,\n          deltaY = maxY - minY;\n\n      return {\n        left: minX,\n        top: minY,\n        width: deltaX,\n        height: deltaY\n      };\n    }\n  });\n\n  /**\n   * Creates an instance of fabric.Path from an object\n   * @static\n   * @memberOf fabric.Path\n   * @param {Object} object\n   * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n   */\n  fabric.Path.fromObject = function(object, callback) {\n    if (typeof object.sourcePath === 'string') {\n      var pathUrl = object.sourcePath;\n      fabric.loadSVGFromURL(pathUrl, function (elements) {\n        var path = elements[0];\n        path.setOptions(object);\n        callback && callback(path);\n      });\n    }\n    else {\n      fabric.Object._fromObject('Path', object, callback, 'path');\n    }\n  };\n\n  /* _FROM_SVG_START_ */\n  /**\n   * List of attribute names to account for when parsing SVG element (used by `fabric.Path.fromElement`)\n   * @static\n   * @memberOf fabric.Path\n   * @see http://www.w3.org/TR/SVG/paths.html#PathElement\n   */\n  fabric.Path.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(['d']);\n\n  /**\n   * Creates an instance of fabric.Path from an SVG <path> element\n   * @static\n   * @memberOf fabric.Path\n   * @param {SVGElement} element to parse\n   * @param {Function} callback Callback to invoke when an fabric.Path instance is created\n   * @param {Object} [options] Options object\n   * @param {Function} [callback] Options callback invoked after parsing is finished\n   */\n  fabric.Path.fromElement = function(element, callback, options) {\n    var parsedAttributes = fabric.parseAttributes(element, fabric.Path.ATTRIBUTE_NAMES);\n    parsedAttributes.fromSVG = true;\n    callback(new fabric.Path(parsedAttributes.d, extend(parsedAttributes, options)));\n  };\n  /* _FROM_SVG_END_ */\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      min = fabric.util.array.min,\n      max = fabric.util.array.max;\n\n  if (fabric.Group) {\n    return;\n  }\n\n  /**\n   * Group class\n   * @class fabric.Group\n   * @extends fabric.Object\n   * @mixes fabric.Collection\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n   * @see {@link fabric.Group#initialize} for constructor definition\n   */\n  fabric.Group = fabric.util.createClass(fabric.Object, fabric.Collection, /** @lends fabric.Group.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'group',\n\n    /**\n     * Width of stroke\n     * @type Number\n     * @default\n     */\n    strokeWidth: 0,\n\n    /**\n     * Indicates if click, mouseover, mouseout events & hoverCursor should also check for subtargets\n     * @type Boolean\n     * @default\n     */\n    subTargetCheck: false,\n\n    /**\n     * Groups are container, do not render anything on theyr own, ence no cache properties\n     * @type Array\n     * @default\n     */\n    cacheProperties: [],\n\n    /**\n     * setOnGroup is a method used for TextBox that is no more used since 2.0.0 The behavior is still\n     * available setting this boolean to true.\n     * @type Boolean\n     * @since 2.0.0\n     * @default\n     */\n    useSetOnGroup: false,\n\n    /**\n     * Constructor\n     * @param {Object} objects Group objects\n     * @param {Object} [options] Options object\n     * @param {Boolean} [isAlreadyGrouped] if true, objects have been grouped already.\n     * @return {Object} thisArg\n     */\n    initialize: function(objects, options, isAlreadyGrouped) {\n      options = options || {};\n      this._objects = [];\n      // if objects enclosed in a group have been grouped already,\n      // we cannot change properties of objects.\n      // Thus we need to set options to group without objects,\n      isAlreadyGrouped && this.callSuper('initialize', options);\n      this._objects = objects || [];\n      for (var i = this._objects.length; i--; ) {\n        this._objects[i].group = this;\n      }\n\n      if (!isAlreadyGrouped) {\n        var center = options && options.centerPoint;\n        // we want to set origins before calculating the bounding box.\n        // so that the topleft can be set with that in mind.\n        // if specific top and left are passed, are overwritten later\n        // with the callSuper('initialize', options)\n        if (options.originX !== undefined) {\n          this.originX = options.originX;\n        }\n        if (options.originY !== undefined) {\n          this.originY = options.originY;\n        }\n        // if coming from svg i do not want to calc bounds.\n        // i assume width and height are passed along options\n        center || this._calcBounds();\n        this._updateObjectsCoords(center);\n        delete options.centerPoint;\n        this.callSuper('initialize', options);\n      }\n      else {\n        this._updateObjectsACoords();\n      }\n\n      this.setCoords();\n    },\n\n    /**\n     * @private\n     */\n    _updateObjectsACoords: function() {\n      var skipControls = true;\n      for (var i = this._objects.length; i--; ){\n        this._objects[i].setCoords(skipControls);\n      }\n    },\n\n    /**\n     * @private\n     * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change\n     */\n    _updateObjectsCoords: function(center) {\n      var center = center || this.getCenterPoint();\n      for (var i = this._objects.length; i--; ){\n        this._updateObjectCoords(this._objects[i], center);\n      }\n    },\n\n    /**\n     * @private\n     * @param {Object} object\n     * @param {fabric.Point} center, current center of group.\n     */\n    _updateObjectCoords: function(object, center) {\n      var objectLeft = object.left,\n          objectTop = object.top,\n          skipControls = true;\n\n      object.set({\n        left: objectLeft - center.x,\n        top: objectTop - center.y\n      });\n      object.group = this;\n      object.setCoords(skipControls);\n    },\n\n    /**\n     * Returns string represenation of a group\n     * @return {String}\n     */\n    toString: function() {\n      return '#<fabric.Group: (' + this.complexity() + ')>';\n    },\n\n    /**\n     * Adds an object to a group; Then recalculates group's dimension, position.\n     * @param {Object} object\n     * @return {fabric.Group} thisArg\n     * @chainable\n     */\n    addWithUpdate: function(object) {\n      var nested = !!this.group;\n      this._restoreObjectsState();\n      fabric.util.resetObjectTransform(this);\n      if (object) {\n        if (nested) {\n          // if this group is inside another group, we need to pre transform the object\n          fabric.util.removeTransformFromObject(object, this.group.calcTransformMatrix());\n        }\n        this._objects.push(object);\n        object.group = this;\n        object._set('canvas', this.canvas);\n      }\n      this._calcBounds();\n      this._updateObjectsCoords();\n      this.dirty = true;\n      if (nested) {\n        this.group.addWithUpdate();\n      }\n      else {\n        this.setCoords();\n      }\n      return this;\n    },\n\n    /**\n     * Removes an object from a group; Then recalculates group's dimension, position.\n     * @param {Object} object\n     * @return {fabric.Group} thisArg\n     * @chainable\n     */\n    removeWithUpdate: function(object) {\n      this._restoreObjectsState();\n      fabric.util.resetObjectTransform(this);\n\n      this.remove(object);\n      this._calcBounds();\n      this._updateObjectsCoords();\n      this.setCoords();\n      this.dirty = true;\n      return this;\n    },\n\n    /**\n     * @private\n     */\n    _onObjectAdded: function(object) {\n      this.dirty = true;\n      object.group = this;\n      object._set('canvas', this.canvas);\n    },\n\n    /**\n     * @private\n     */\n    _onObjectRemoved: function(object) {\n      this.dirty = true;\n      delete object.group;\n    },\n\n    /**\n     * @private\n     */\n    _set: function(key, value) {\n      var i = this._objects.length;\n      if (this.useSetOnGroup) {\n        while (i--) {\n          this._objects[i].setOnGroup(key, value);\n        }\n      }\n      if (key === 'canvas') {\n        while (i--) {\n          this._objects[i]._set(key, value);\n        }\n      }\n      fabric.Object.prototype._set.call(this, key, value);\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      var _includeDefaultValues = this.includeDefaultValues;\n      var objsToObject = this._objects\n        .filter(function (obj) {\n          return !obj.excludeFromExport;\n        })\n        .map(function (obj) {\n          var originalDefaults = obj.includeDefaultValues;\n          obj.includeDefaultValues = _includeDefaultValues;\n          var _obj = obj.toObject(propertiesToInclude);\n          obj.includeDefaultValues = originalDefaults;\n          return _obj;\n        });\n      var obj = fabric.Object.prototype.toObject.call(this, propertiesToInclude);\n      obj.objects = objsToObject;\n      return obj;\n    },\n\n    /**\n     * Returns object representation of an instance, in dataless mode.\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toDatalessObject: function(propertiesToInclude) {\n      var objsToObject, sourcePath = this.sourcePath;\n      if (sourcePath) {\n        objsToObject = sourcePath;\n      }\n      else {\n        var _includeDefaultValues = this.includeDefaultValues;\n        objsToObject = this._objects.map(function(obj) {\n          var originalDefaults = obj.includeDefaultValues;\n          obj.includeDefaultValues = _includeDefaultValues;\n          var _obj = obj.toDatalessObject(propertiesToInclude);\n          obj.includeDefaultValues = originalDefaults;\n          return _obj;\n        });\n      }\n      var obj = fabric.Object.prototype.toDatalessObject.call(this, propertiesToInclude);\n      obj.objects = objsToObject;\n      return obj;\n    },\n\n    /**\n     * Renders instance on a given context\n     * @param {CanvasRenderingContext2D} ctx context to render instance on\n     */\n    render: function(ctx) {\n      this._transformDone = true;\n      this.callSuper('render', ctx);\n      this._transformDone = false;\n    },\n\n    /**\n     * Decide if the object should cache or not. Create its own cache level\n     * needsItsOwnCache should be used when the object drawing method requires\n     * a cache step. None of the fabric classes requires it.\n     * Generally you do not cache objects in groups because the group is already cached.\n     * @return {Boolean}\n     */\n    shouldCache: function() {\n      var ownCache = fabric.Object.prototype.shouldCache.call(this);\n      if (ownCache) {\n        for (var i = 0, len = this._objects.length; i < len; i++) {\n          if (this._objects[i].willDrawShadow()) {\n            this.ownCaching = false;\n            return false;\n          }\n        }\n      }\n      return ownCache;\n    },\n\n    /**\n     * Check if this object or a child object will cast a shadow\n     * @return {Boolean}\n     */\n    willDrawShadow: function() {\n      if (fabric.Object.prototype.willDrawShadow.call(this)) {\n        return true;\n      }\n      for (var i = 0, len = this._objects.length; i < len; i++) {\n        if (this._objects[i].willDrawShadow()) {\n          return true;\n        }\n      }\n      return false;\n    },\n\n    /**\n     * Check if this group or its parent group are caching, recursively up\n     * @return {Boolean}\n     */\n    isOnACache: function() {\n      return this.ownCaching || (this.group && this.group.isOnACache());\n    },\n\n    /**\n     * Execute the drawing operation for an object on a specified context\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    drawObject: function(ctx) {\n      for (var i = 0, len = this._objects.length; i < len; i++) {\n        this._objects[i].render(ctx);\n      }\n      this._drawClipPath(ctx);\n    },\n\n    /**\n     * Check if cache is dirty\n     */\n    isCacheDirty: function(skipCanvas) {\n      if (this.callSuper('isCacheDirty', skipCanvas)) {\n        return true;\n      }\n      if (!this.statefullCache) {\n        return false;\n      }\n      for (var i = 0, len = this._objects.length; i < len; i++) {\n        if (this._objects[i].isCacheDirty(true)) {\n          if (this._cacheCanvas) {\n            // if this group has not a cache canvas there is nothing to clean\n            var x = this.cacheWidth / this.zoomX, y = this.cacheHeight / this.zoomY;\n            this._cacheContext.clearRect(-x / 2, -y / 2, x, y);\n          }\n          return true;\n        }\n      }\n      return false;\n    },\n\n    /**\n     * Restores original state of each of group objects (original state is that which was before group was created).\n     * if the nested boolean is true, the original state will be restored just for the\n     * first group and not for all the group chain\n     * @private\n     * @param {Boolean} nested tell the function to restore object state up to the parent group and not more\n     * @return {fabric.Group} thisArg\n     * @chainable\n     */\n    _restoreObjectsState: function() {\n      var groupMatrix = this.calcOwnMatrix();\n      this._objects.forEach(function(object) {\n        // instead of using _this = this;\n        fabric.util.addTransformToObject(object, groupMatrix);\n        delete object.group;\n        object.setCoords();\n      });\n      return this;\n    },\n\n    /**\n     * Realises the transform from this group onto the supplied object\n     * i.e. it tells you what would happen if the supplied object was in\n     * the group, and then the group was destroyed. It mutates the supplied\n     * object.\n     * Warning: this method is not useful anymore, it has been kept to no break the api.\n     * is not used in the fabricJS codebase\n     * this method will be reduced to using the utility.\n     * @private\n     * @deprecated\n     * @param {fabric.Object} object\n     * @param {Array} parentMatrix parent transformation\n     * @return {fabric.Object} transformedObject\n     */\n    realizeTransform: function(object, parentMatrix) {\n      fabric.util.addTransformToObject(object, parentMatrix);\n      return object;\n    },\n\n    /**\n     * Destroys a group (restoring state of its objects)\n     * @return {fabric.Group} thisArg\n     * @chainable\n     */\n    destroy: function() {\n      // when group is destroyed objects needs to get a repaint to be eventually\n      // displayed on canvas.\n      this._objects.forEach(function(object) {\n        object.set('dirty', true);\n      });\n      return this._restoreObjectsState();\n    },\n\n    /**\n     * make a group an active selection, remove the group from canvas\n     * the group has to be on canvas for this to work.\n     * @return {fabric.ActiveSelection} thisArg\n     * @chainable\n     */\n    toActiveSelection: function() {\n      if (!this.canvas) {\n        return;\n      }\n      var objects = this._objects, canvas = this.canvas;\n      this._objects = [];\n      var options = this.toObject();\n      delete options.objects;\n      var activeSelection = new fabric.ActiveSelection([]);\n      activeSelection.set(options);\n      activeSelection.type = 'activeSelection';\n      canvas.remove(this);\n      objects.forEach(function(object) {\n        object.group = activeSelection;\n        object.dirty = true;\n        canvas.add(object);\n      });\n      activeSelection.canvas = canvas;\n      activeSelection._objects = objects;\n      canvas._activeObject = activeSelection;\n      activeSelection.setCoords();\n      return activeSelection;\n    },\n\n    /**\n     * Destroys a group (restoring state of its objects)\n     * @return {fabric.Group} thisArg\n     * @chainable\n     */\n    ungroupOnCanvas: function() {\n      return this._restoreObjectsState();\n    },\n\n    /**\n     * Sets coordinates of all objects inside group\n     * @return {fabric.Group} thisArg\n     * @chainable\n     */\n    setObjectsCoords: function() {\n      var skipControls = true;\n      this.forEachObject(function(object) {\n        object.setCoords(skipControls);\n      });\n      return this;\n    },\n\n    /**\n     * @private\n     */\n    _calcBounds: function(onlyWidthHeight) {\n      var aX = [],\n          aY = [],\n          o, prop, coords,\n          props = ['tr', 'br', 'bl', 'tl'],\n          i = 0, iLen = this._objects.length,\n          j, jLen = props.length;\n\n      for ( ; i < iLen; ++i) {\n        o = this._objects[i];\n        coords = o.calcACoords();\n        for (j = 0; j < jLen; j++) {\n          prop = props[j];\n          aX.push(coords[prop].x);\n          aY.push(coords[prop].y);\n        }\n        o.aCoords = coords;\n      }\n\n      this._getBounds(aX, aY, onlyWidthHeight);\n    },\n\n    /**\n     * @private\n     */\n    _getBounds: function(aX, aY, onlyWidthHeight) {\n      var minXY = new fabric.Point(min(aX), min(aY)),\n          maxXY = new fabric.Point(max(aX), max(aY)),\n          top = minXY.y || 0, left = minXY.x || 0,\n          width = (maxXY.x - minXY.x) || 0,\n          height = (maxXY.y - minXY.y) || 0;\n      this.width = width;\n      this.height = height;\n      if (!onlyWidthHeight) {\n        // the bounding box always finds the topleft most corner.\n        // whatever is the group origin, we set up here the left/top position.\n        this.setPositionByOrigin({ x: left, y: top }, 'left', 'top');\n      }\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns svg representation of an instance\n     * @param {Function} [reviver] Method for further parsing of svg representation.\n     * @return {String} svg representation of an instance\n     */\n    _toSVG: function(reviver) {\n      var svgString = ['<g ', 'COMMON_PARTS', ' >\\n'];\n\n      for (var i = 0, len = this._objects.length; i < len; i++) {\n        svgString.push('\\t\\t', this._objects[i].toSVG(reviver));\n      }\n      svgString.push('</g>\\n');\n      return svgString;\n    },\n\n    /**\n     * Returns styles-string for svg-export, specific version for group\n     * @return {String}\n     */\n    getSvgStyles: function() {\n      var opacity = typeof this.opacity !== 'undefined' && this.opacity !== 1 ?\n            'opacity: ' + this.opacity + ';' : '',\n          visibility = this.visible ? '' : ' visibility: hidden;';\n      return [\n        opacity,\n        this.getSvgFilter(),\n        visibility\n      ].join('');\n    },\n\n    /**\n     * Returns svg clipPath representation of an instance\n     * @param {Function} [reviver] Method for further parsing of svg representation.\n     * @return {String} svg representation of an instance\n     */\n    toClipPathSVG: function(reviver) {\n      var svgString = [];\n\n      for (var i = 0, len = this._objects.length; i < len; i++) {\n        svgString.push('\\t', this._objects[i].toClipPathSVG(reviver));\n      }\n\n      return this._createBaseClipPathSVGMarkup(svgString, { reviver: reviver });\n    },\n    /* _TO_SVG_END_ */\n  });\n\n  /**\n   * Returns {@link fabric.Group} instance from an object representation\n   * @static\n   * @memberOf fabric.Group\n   * @param {Object} object Object to create a group from\n   * @param {Function} [callback] Callback to invoke when an group instance is created\n   */\n  fabric.Group.fromObject = function(object, callback) {\n    var objects = object.objects,\n        options = fabric.util.object.clone(object, true);\n    delete options.objects;\n    if (typeof objects === 'string') {\n      // it has to be an url or something went wrong.\n      fabric.loadSVGFromURL(objects, function (elements) {\n        var group = fabric.util.groupSVGElements(elements, object, objects);\n        group.set(options);\n        callback && callback(group);\n      });\n      return;\n    }\n    fabric.util.enlivenObjects(objects, function(enlivenedObjects) {\n      fabric.util.enlivenObjects([object.clipPath], function(enlivedClipPath) {\n        var options = fabric.util.object.clone(object, true);\n        options.clipPath = enlivedClipPath[0];\n        delete options.objects;\n        callback && callback(new fabric.Group(enlivenedObjects, options, true));\n      });\n    });\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { });\n\n  if (fabric.ActiveSelection) {\n    return;\n  }\n\n  /**\n   * Group class\n   * @class fabric.ActiveSelection\n   * @extends fabric.Group\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n   * @see {@link fabric.ActiveSelection#initialize} for constructor definition\n   */\n  fabric.ActiveSelection = fabric.util.createClass(fabric.Group, /** @lends fabric.ActiveSelection.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'activeSelection',\n\n    /**\n     * Constructor\n     * @param {Object} objects ActiveSelection objects\n     * @param {Object} [options] Options object\n     * @return {Object} thisArg\n     */\n    initialize: function(objects, options) {\n      options = options || {};\n      this._objects = objects || [];\n      for (var i = this._objects.length; i--; ) {\n        this._objects[i].group = this;\n      }\n\n      if (options.originX) {\n        this.originX = options.originX;\n      }\n      if (options.originY) {\n        this.originY = options.originY;\n      }\n      this._calcBounds();\n      this._updateObjectsCoords();\n      fabric.Object.prototype.initialize.call(this, options);\n      this.setCoords();\n    },\n\n    /**\n     * Change te activeSelection to a normal group,\n     * High level function that automatically adds it to canvas as\n     * active object. no events fired.\n     * @since 2.0.0\n     * @return {fabric.Group}\n     */\n    toGroup: function() {\n      var objects = this._objects.concat();\n      this._objects = [];\n      var options = fabric.Object.prototype.toObject.call(this);\n      var newGroup = new fabric.Group([]);\n      delete options.type;\n      newGroup.set(options);\n      objects.forEach(function(object) {\n        object.canvas.remove(object);\n        object.group = newGroup;\n      });\n      newGroup._objects = objects;\n      if (!this.canvas) {\n        return newGroup;\n      }\n      var canvas = this.canvas;\n      canvas.add(newGroup);\n      canvas._activeObject = newGroup;\n      newGroup.setCoords();\n      return newGroup;\n    },\n\n    /**\n     * If returns true, deselection is cancelled.\n     * @since 2.0.0\n     * @return {Boolean} [cancel]\n     */\n    onDeselect: function() {\n      this.destroy();\n      return false;\n    },\n\n    /**\n     * Returns string representation of a group\n     * @return {String}\n     */\n    toString: function() {\n      return '#<fabric.ActiveSelection: (' + this.complexity() + ')>';\n    },\n\n    /**\n     * Decide if the object should cache or not. Create its own cache level\n     * objectCaching is a global flag, wins over everything\n     * needsItsOwnCache should be used when the object drawing method requires\n     * a cache step. None of the fabric classes requires it.\n     * Generally you do not cache objects in groups because the group outside is cached.\n     * @return {Boolean}\n     */\n    shouldCache: function() {\n      return false;\n    },\n\n    /**\n     * Check if this group or its parent group are caching, recursively up\n     * @return {Boolean}\n     */\n    isOnACache: function() {\n      return false;\n    },\n\n    /**\n     * Renders controls and borders for the object\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {Object} [styleOverride] properties to override the object style\n     * @param {Object} [childrenOverride] properties to override the children overrides\n     */\n    _renderControls: function(ctx, styleOverride, childrenOverride) {\n      ctx.save();\n      ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n      this.callSuper('_renderControls', ctx, styleOverride);\n      childrenOverride = childrenOverride || { };\n      if (typeof childrenOverride.hasControls === 'undefined') {\n        childrenOverride.hasControls = false;\n      }\n      childrenOverride.forActiveSelection = true;\n      for (var i = 0, len = this._objects.length; i < len; i++) {\n        this._objects[i]._renderControls(ctx, childrenOverride);\n      }\n      ctx.restore();\n    },\n  });\n\n  /**\n   * Returns {@link fabric.ActiveSelection} instance from an object representation\n   * @static\n   * @memberOf fabric.ActiveSelection\n   * @param {Object} object Object to create a group from\n   * @param {Function} [callback] Callback to invoke when an ActiveSelection instance is created\n   */\n  fabric.ActiveSelection.fromObject = function(object, callback) {\n    fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) {\n      delete object.objects;\n      callback && callback(new fabric.ActiveSelection(enlivenedObjects, object, true));\n    });\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var extend = fabric.util.object.extend;\n\n  if (!global.fabric) {\n    global.fabric = { };\n  }\n\n  if (global.fabric.Image) {\n    fabric.warn('fabric.Image is already defined.');\n    return;\n  }\n\n  /**\n   * Image class\n   * @class fabric.Image\n   * @extends fabric.Object\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#images}\n   * @see {@link fabric.Image#initialize} for constructor definition\n   */\n  fabric.Image = fabric.util.createClass(fabric.Object, /** @lends fabric.Image.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'image',\n\n    /**\n     * Width of a stroke.\n     * For image quality a stroke multiple of 2 gives better results.\n     * @type Number\n     * @default\n     */\n    strokeWidth: 0,\n\n    /**\n     * When calling {@link fabric.Image.getSrc}, return value from element src with `element.getAttribute('src')`.\n     * This allows for relative urls as image src.\n     * @since 2.7.0\n     * @type Boolean\n     * @default\n     */\n    srcFromAttribute: false,\n\n    /**\n     * private\n     * contains last value of scaleX to detect\n     * if the Image got resized after the last Render\n     * @type Number\n     */\n    _lastScaleX: 1,\n\n    /**\n     * private\n     * contains last value of scaleY to detect\n     * if the Image got resized after the last Render\n     * @type Number\n     */\n    _lastScaleY: 1,\n\n    /**\n     * private\n     * contains last value of scaling applied by the apply filter chain\n     * @type Number\n     */\n    _filterScalingX: 1,\n\n    /**\n     * private\n     * contains last value of scaling applied by the apply filter chain\n     * @type Number\n     */\n    _filterScalingY: 1,\n\n    /**\n     * minimum scale factor under which any resizeFilter is triggered to resize the image\n     * 0 will disable the automatic resize. 1 will trigger automatically always.\n     * number bigger than 1 are not implemented yet.\n     * @type Number\n     */\n    minimumScaleTrigger: 0.5,\n\n    /**\n     * List of properties to consider when checking if\n     * state of an object is changed ({@link fabric.Object#hasStateChanged})\n     * as well as for history (undo/redo) purposes\n     * @type Array\n     */\n    stateProperties: fabric.Object.prototype.stateProperties.concat('cropX', 'cropY'),\n\n    /**\n     * List of properties to consider when checking if cache needs refresh\n     * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single\n     * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty\n     * and refreshed at the next render\n     * @type Array\n     */\n    cacheProperties: fabric.Object.prototype.cacheProperties.concat('cropX', 'cropY'),\n\n    /**\n     * key used to retrieve the texture representing this image\n     * @since 2.0.0\n     * @type String\n     * @default\n     */\n    cacheKey: '',\n\n    /**\n     * Image crop in pixels from original image size.\n     * @since 2.0.0\n     * @type Number\n     * @default\n     */\n    cropX: 0,\n\n    /**\n     * Image crop in pixels from original image size.\n     * @since 2.0.0\n     * @type Number\n     * @default\n     */\n    cropY: 0,\n\n    /**\n     * Indicates whether this canvas will use image smoothing when painting this image.\n     * Also influence if the cacheCanvas for this image uses imageSmoothing\n     * @since 4.0.0-beta.11\n     * @type Boolean\n     * @default\n     */\n    imageSmoothing: true,\n\n    /**\n     * Constructor\n     * Image can be initialized with any canvas drawable or a string.\n     * The string should be a url and will be loaded as an image.\n     * Canvas and Image element work out of the box, while videos require extra code to work.\n     * Please check video element events for seeking.\n     * @param {HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | String} element Image element\n     * @param {Object} [options] Options object\n     * @param {function} [callback] callback function to call after eventual filters applied.\n     * @return {fabric.Image} thisArg\n     */\n    initialize: function(element, options) {\n      options || (options = { });\n      this.filters = [];\n      this.cacheKey = 'texture' + fabric.Object.__uid++;\n      this.callSuper('initialize', options);\n      this._initElement(element, options);\n    },\n\n    /**\n     * Returns image element which this instance if based on\n     * @return {HTMLImageElement} Image element\n     */\n    getElement: function() {\n      return this._element || {};\n    },\n\n    /**\n     * Sets image element for this instance to a specified one.\n     * If filters defined they are applied to new image.\n     * You might need to call `canvas.renderAll` and `object.setCoords` after replacing, to render new image and update controls area.\n     * @param {HTMLImageElement} element\n     * @param {Object} [options] Options object\n     * @return {fabric.Image} thisArg\n     * @chainable\n     */\n    setElement: function(element, options) {\n      this.removeTexture(this.cacheKey);\n      this.removeTexture(this.cacheKey + '_filtered');\n      this._element = element;\n      this._originalElement = element;\n      this._initConfig(options);\n      if (this.filters.length !== 0) {\n        this.applyFilters();\n      }\n      // resizeFilters work on the already filtered copy.\n      // we need to apply resizeFilters AFTER normal filters.\n      // applyResizeFilters is run more often than normal filters\n      // and is triggered by user interactions rather than dev code\n      if (this.resizeFilter) {\n        this.applyResizeFilters();\n      }\n      return this;\n    },\n\n    /**\n     * Delete a single texture if in webgl mode\n     */\n    removeTexture: function(key) {\n      var backend = fabric.filterBackend;\n      if (backend && backend.evictCachesForKey) {\n        backend.evictCachesForKey(key);\n      }\n    },\n\n    /**\n     * Delete textures, reference to elements and eventually JSDOM cleanup\n     */\n    dispose: function() {\n      this.removeTexture(this.cacheKey);\n      this.removeTexture(this.cacheKey + '_filtered');\n      this._cacheContext = undefined;\n      ['_originalElement', '_element', '_filteredEl', '_cacheCanvas'].forEach((function(element) {\n        fabric.util.cleanUpJsdomNode(this[element]);\n        this[element] = undefined;\n      }).bind(this));\n    },\n\n    /**\n     * Get the crossOrigin value (of the corresponding image element)\n     */\n    getCrossOrigin: function() {\n      return this._originalElement && (this._originalElement.crossOrigin || null);\n    },\n\n    /**\n     * Returns original size of an image\n     * @return {Object} Object with \"width\" and \"height\" properties\n     */\n    getOriginalSize: function() {\n      var element = this.getElement();\n      return {\n        width: element.naturalWidth || element.width,\n        height: element.naturalHeight || element.height\n      };\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _stroke: function(ctx) {\n      if (!this.stroke || this.strokeWidth === 0) {\n        return;\n      }\n      var w = this.width / 2, h = this.height / 2;\n      ctx.beginPath();\n      ctx.moveTo(-w, -h);\n      ctx.lineTo(w, -h);\n      ctx.lineTo(w, h);\n      ctx.lineTo(-w, h);\n      ctx.lineTo(-w, -h);\n      ctx.closePath();\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} Object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      var filters = [];\n\n      this.filters.forEach(function(filterObj) {\n        if (filterObj) {\n          filters.push(filterObj.toObject());\n        }\n      });\n      var object = extend(\n        this.callSuper(\n          'toObject',\n          ['cropX', 'cropY'].concat(propertiesToInclude)\n        ), {\n          src: this.getSrc(),\n          crossOrigin: this.getCrossOrigin(),\n          filters: filters,\n        });\n      if (this.resizeFilter) {\n        object.resizeFilter = this.resizeFilter.toObject();\n      }\n      return object;\n    },\n\n    /**\n     * Returns true if an image has crop applied, inspecting values of cropX,cropY,width,height.\n     * @return {Boolean}\n     */\n    hasCrop: function() {\n      return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height;\n    },\n\n    /* _TO_SVG_START_ */\n    /**\n     * Returns svg representation of an instance\n     * @return {Array} an array of strings with the specific svg representation\n     * of the instance\n     */\n    _toSVG: function() {\n      var svgString = [], imageMarkup = [], strokeSvg, element = this._element,\n          x = -this.width / 2, y = -this.height / 2, clipPath = '', imageRendering = '';\n      if (!element) {\n        return [];\n      }\n      if (this.hasCrop()) {\n        var clipPathId = fabric.Object.__uid++;\n        svgString.push(\n          '<clipPath id=\"imageCrop_' + clipPathId + '\">\\n',\n          '\\t<rect x=\"' + x + '\" y=\"' + y + '\" width=\"' + this.width + '\" height=\"' + this.height + '\" />\\n',\n          '</clipPath>\\n'\n        );\n        clipPath = ' clip-path=\"url(#imageCrop_' + clipPathId + ')\" ';\n      }\n      if (!this.imageSmoothing) {\n        imageRendering = '\" image-rendering=\"optimizeSpeed';\n      }\n      imageMarkup.push('\\t<image ', 'COMMON_PARTS', 'xlink:href=\"', this.getSvgSrc(true),\n        '\" x=\"', x - this.cropX, '\" y=\"', y - this.cropY,\n        // we're essentially moving origin of transformation from top/left corner to the center of the shape\n        // by wrapping it in container <g> element with actual transformation, then offsetting object to the top/left\n        // so that object's center aligns with container's left/top\n        '\" width=\"', element.width || element.naturalWidth,\n        '\" height=\"', element.height || element.height,\n        imageRendering,\n        '\"', clipPath,\n        '></image>\\n');\n\n      if (this.stroke || this.strokeDashArray) {\n        var origFill = this.fill;\n        this.fill = null;\n        strokeSvg = [\n          '\\t<rect ',\n          'x=\"', x, '\" y=\"', y,\n          '\" width=\"', this.width, '\" height=\"', this.height,\n          '\" style=\"', this.getSvgStyles(),\n          '\"/>\\n'\n        ];\n        this.fill = origFill;\n      }\n      if (this.paintFirst !== 'fill') {\n        svgString = svgString.concat(strokeSvg, imageMarkup);\n      }\n      else {\n        svgString = svgString.concat(imageMarkup, strokeSvg);\n      }\n      return svgString;\n    },\n    /* _TO_SVG_END_ */\n\n    /**\n     * Returns source of an image\n     * @param {Boolean} filtered indicates if the src is needed for svg\n     * @return {String} Source of an image\n     */\n    getSrc: function(filtered) {\n      var element = filtered ? this._element : this._originalElement;\n      if (element) {\n        if (element.toDataURL) {\n          return element.toDataURL();\n        }\n\n        if (this.srcFromAttribute) {\n          return element.getAttribute('src');\n        }\n        else {\n          return element.src;\n        }\n      }\n      else {\n        return this.src || '';\n      }\n    },\n\n    /**\n     * Sets source of an image\n     * @param {String} src Source string (URL)\n     * @param {Function} [callback] Callback is invoked when image has been loaded (and all filters have been applied)\n     * @param {Object} [options] Options object\n     * @param {String} [options.crossOrigin] crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n     * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n     * @return {fabric.Image} thisArg\n     * @chainable\n     */\n    setSrc: function(src, callback, options) {\n      fabric.util.loadImage(src, function(img, isError) {\n        this.setElement(img, options);\n        this._setWidthHeight();\n        callback && callback(this, isError);\n      }, this, options && options.crossOrigin);\n      return this;\n    },\n\n    /**\n     * Returns string representation of an instance\n     * @return {String} String representation of an instance\n     */\n    toString: function() {\n      return '#<fabric.Image: { src: \"' + this.getSrc() + '\" }>';\n    },\n\n    applyResizeFilters: function() {\n      var filter = this.resizeFilter,\n          minimumScale = this.minimumScaleTrigger,\n          objectScale = this.getTotalObjectScaling(),\n          scaleX = objectScale.scaleX,\n          scaleY = objectScale.scaleY,\n          elementToFilter = this._filteredEl || this._originalElement;\n      if (this.group) {\n        this.set('dirty', true);\n      }\n      if (!filter || (scaleX > minimumScale && scaleY > minimumScale)) {\n        this._element = elementToFilter;\n        this._filterScalingX = 1;\n        this._filterScalingY = 1;\n        this._lastScaleX = scaleX;\n        this._lastScaleY = scaleY;\n        return;\n      }\n      if (!fabric.filterBackend) {\n        fabric.filterBackend = fabric.initFilterBackend();\n      }\n      var canvasEl = fabric.util.createCanvasElement(),\n          cacheKey = this._filteredEl ? (this.cacheKey + '_filtered') : this.cacheKey,\n          sourceWidth = elementToFilter.width, sourceHeight = elementToFilter.height;\n      canvasEl.width = sourceWidth;\n      canvasEl.height = sourceHeight;\n      this._element = canvasEl;\n      this._lastScaleX = filter.scaleX = scaleX;\n      this._lastScaleY = filter.scaleY = scaleY;\n      fabric.filterBackend.applyFilters(\n        [filter], elementToFilter, sourceWidth, sourceHeight, this._element, cacheKey);\n      this._filterScalingX = canvasEl.width / this._originalElement.width;\n      this._filterScalingY = canvasEl.height / this._originalElement.height;\n    },\n\n    /**\n     * Applies filters assigned to this image (from \"filters\" array) or from filter param\n     * @method applyFilters\n     * @param {Array} filters to be applied\n     * @param {Boolean} forResizing specify if the filter operation is a resize operation\n     * @return {thisArg} return the fabric.Image object\n     * @chainable\n     */\n    applyFilters: function(filters) {\n\n      filters = filters || this.filters || [];\n      filters = filters.filter(function(filter) { return filter && !filter.isNeutralState(); });\n      this.set('dirty', true);\n\n      // needs to clear out or WEBGL will not resize correctly\n      this.removeTexture(this.cacheKey + '_filtered');\n\n      if (filters.length === 0) {\n        this._element = this._originalElement;\n        this._filteredEl = null;\n        this._filterScalingX = 1;\n        this._filterScalingY = 1;\n        return this;\n      }\n\n      var imgElement = this._originalElement,\n          sourceWidth = imgElement.naturalWidth || imgElement.width,\n          sourceHeight = imgElement.naturalHeight || imgElement.height;\n\n      if (this._element === this._originalElement) {\n        // if the element is the same we need to create a new element\n        var canvasEl = fabric.util.createCanvasElement();\n        canvasEl.width = sourceWidth;\n        canvasEl.height = sourceHeight;\n        this._element = canvasEl;\n        this._filteredEl = canvasEl;\n      }\n      else {\n        // clear the existing element to get new filter data\n        // also dereference the eventual resized _element\n        this._element = this._filteredEl;\n        this._filteredEl.getContext('2d').clearRect(0, 0, sourceWidth, sourceHeight);\n        // we also need to resize again at next renderAll, so remove saved _lastScaleX/Y\n        this._lastScaleX = 1;\n        this._lastScaleY = 1;\n      }\n      if (!fabric.filterBackend) {\n        fabric.filterBackend = fabric.initFilterBackend();\n      }\n      fabric.filterBackend.applyFilters(\n        filters, this._originalElement, sourceWidth, sourceHeight, this._element, this.cacheKey);\n      if (this._originalElement.width !== this._element.width ||\n        this._originalElement.height !== this._element.height) {\n        this._filterScalingX = this._element.width / this._originalElement.width;\n        this._filterScalingY = this._element.height / this._originalElement.height;\n      }\n      return this;\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _render: function(ctx) {\n      fabric.util.setImageSmoothing(ctx, this.imageSmoothing);\n      if (this.isMoving !== true && this.resizeFilter && this._needsResize()) {\n        this.applyResizeFilters();\n      }\n      this._stroke(ctx);\n      this._renderPaintInOrder(ctx);\n    },\n\n    /**\n     * Paint the cached copy of the object on the target context.\n     * it will set the imageSmoothing for the draw operation\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    drawCacheOnCanvas: function(ctx) {\n      fabric.util.setImageSmoothing(ctx, this.imageSmoothing);\n      fabric.Object.prototype.drawCacheOnCanvas.call(this, ctx);\n    },\n\n    /**\n     * Decide if the object should cache or not. Create its own cache level\n     * needsItsOwnCache should be used when the object drawing method requires\n     * a cache step. None of the fabric classes requires it.\n     * Generally you do not cache objects in groups because the group outside is cached.\n     * This is the special image version where we would like to avoid caching where possible.\n     * Essentially images do not benefit from caching. They may require caching, and in that\n     * case we do it. Also caching an image usually ends in a loss of details.\n     * A full performance audit should be done.\n     * @return {Boolean}\n     */\n    shouldCache: function() {\n      return this.needsItsOwnCache();\n    },\n\n    _renderFill: function(ctx) {\n      var elementToDraw = this._element;\n      if (!elementToDraw) {\n        return;\n      }\n      var scaleX = this._filterScalingX, scaleY = this._filterScalingY,\n          w = this.width, h = this.height, min = Math.min, max = Math.max,\n          // crop values cannot be lesser than 0.\n          cropX = max(this.cropX, 0), cropY = max(this.cropY, 0),\n          elWidth = elementToDraw.naturalWidth || elementToDraw.width,\n          elHeight = elementToDraw.naturalHeight || elementToDraw.height,\n          sX = cropX * scaleX,\n          sY = cropY * scaleY,\n          // the width height cannot exceed element width/height, starting from the crop offset.\n          sW = min(w * scaleX, elWidth - sX),\n          sH = min(h * scaleY, elHeight - sY),\n          x = -w / 2, y = -h / 2,\n          maxDestW = min(w, elWidth / scaleX - cropX),\n          maxDestH = min(h, elHeight / scaleY - cropY);\n\n      elementToDraw && ctx.drawImage(elementToDraw, sX, sY, sW, sH, x, y, maxDestW, maxDestH);\n    },\n\n    /**\n     * needed to check if image needs resize\n     * @private\n     */\n    _needsResize: function() {\n      var scale = this.getTotalObjectScaling();\n      return (scale.scaleX !== this._lastScaleX || scale.scaleY !== this._lastScaleY);\n    },\n\n    /**\n     * @private\n     */\n    _resetWidthHeight: function() {\n      this.set(this.getOriginalSize());\n    },\n\n    /**\n     * The Image class's initialization method. This method is automatically\n     * called by the constructor.\n     * @private\n     * @param {HTMLImageElement|String} element The element representing the image\n     * @param {Object} [options] Options object\n     */\n    _initElement: function(element, options) {\n      this.setElement(fabric.util.getById(element), options);\n      fabric.util.addClass(this.getElement(), fabric.Image.CSS_CANVAS);\n    },\n\n    /**\n     * @private\n     * @param {Object} [options] Options object\n     */\n    _initConfig: function(options) {\n      options || (options = { });\n      this.setOptions(options);\n      this._setWidthHeight(options);\n    },\n\n    /**\n     * @private\n     * @param {Array} filters to be initialized\n     * @param {Function} callback Callback to invoke when all fabric.Image.filters instances are created\n     */\n    _initFilters: function(filters, callback) {\n      if (filters && filters.length) {\n        fabric.util.enlivenObjects(filters, function(enlivenedObjects) {\n          callback && callback(enlivenedObjects);\n        }, 'fabric.Image.filters');\n      }\n      else {\n        callback && callback();\n      }\n    },\n\n    /**\n     * @private\n     * Set the width and the height of the image object, using the element or the\n     * options.\n     * @param {Object} [options] Object with width/height properties\n     */\n    _setWidthHeight: function(options) {\n      options || (options = { });\n      var el = this.getElement();\n      this.width = options.width || el.naturalWidth || el.width || 0;\n      this.height = options.height || el.naturalHeight || el.height || 0;\n    },\n\n    /**\n     * Calculate offset for center and scale factor for the image in order to respect\n     * the preserveAspectRatio attribute\n     * @private\n     * @return {Object}\n     */\n    parsePreserveAspectRatioAttribute: function() {\n      var pAR = fabric.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ''),\n          rWidth = this._element.width, rHeight = this._element.height,\n          scaleX = 1, scaleY = 1, offsetLeft = 0, offsetTop = 0, cropX = 0, cropY = 0,\n          offset, pWidth = this.width, pHeight = this.height, parsedAttributes = { width: pWidth, height: pHeight };\n      if (pAR && (pAR.alignX !== 'none' || pAR.alignY !== 'none')) {\n        if (pAR.meetOrSlice === 'meet') {\n          scaleX = scaleY = fabric.util.findScaleToFit(this._element, parsedAttributes);\n          offset = (pWidth - rWidth * scaleX) / 2;\n          if (pAR.alignX === 'Min') {\n            offsetLeft = -offset;\n          }\n          if (pAR.alignX === 'Max') {\n            offsetLeft = offset;\n          }\n          offset = (pHeight - rHeight * scaleY) / 2;\n          if (pAR.alignY === 'Min') {\n            offsetTop = -offset;\n          }\n          if (pAR.alignY === 'Max') {\n            offsetTop = offset;\n          }\n        }\n        if (pAR.meetOrSlice === 'slice') {\n          scaleX = scaleY = fabric.util.findScaleToCover(this._element, parsedAttributes);\n          offset = rWidth - pWidth / scaleX;\n          if (pAR.alignX === 'Mid') {\n            cropX = offset / 2;\n          }\n          if (pAR.alignX === 'Max') {\n            cropX = offset;\n          }\n          offset = rHeight - pHeight / scaleY;\n          if (pAR.alignY === 'Mid') {\n            cropY = offset / 2;\n          }\n          if (pAR.alignY === 'Max') {\n            cropY = offset;\n          }\n          rWidth = pWidth / scaleX;\n          rHeight = pHeight / scaleY;\n        }\n      }\n      else {\n        scaleX = pWidth / rWidth;\n        scaleY = pHeight / rHeight;\n      }\n      return {\n        width: rWidth,\n        height: rHeight,\n        scaleX: scaleX,\n        scaleY: scaleY,\n        offsetLeft: offsetLeft,\n        offsetTop: offsetTop,\n        cropX: cropX,\n        cropY: cropY\n      };\n    }\n  });\n\n  /**\n   * Default CSS class name for canvas\n   * @static\n   * @type String\n   * @default\n   */\n  fabric.Image.CSS_CANVAS = 'canvas-img';\n\n  /**\n   * Alias for getSrc\n   * @static\n   */\n  fabric.Image.prototype.getSvgSrc = fabric.Image.prototype.getSrc;\n\n  /**\n   * Creates an instance of fabric.Image from its object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {Function} callback Callback to invoke when an image instance is created\n   */\n  fabric.Image.fromObject = function(_object, callback) {\n    var object = fabric.util.object.clone(_object);\n    fabric.util.loadImage(object.src, function(img, isError) {\n      if (isError) {\n        callback && callback(null, true);\n        return;\n      }\n      fabric.Image.prototype._initFilters.call(object, object.filters, function(filters) {\n        object.filters = filters || [];\n        fabric.Image.prototype._initFilters.call(object, [object.resizeFilter], function(resizeFilters) {\n          object.resizeFilter = resizeFilters[0];\n          fabric.util.enlivenObjects([object.clipPath], function(enlivedProps) {\n            object.clipPath = enlivedProps[0];\n            var image = new fabric.Image(img, object);\n            callback(image, false);\n          });\n        });\n      });\n    }, null, object.crossOrigin);\n  };\n\n  /**\n   * Creates an instance of fabric.Image from an URL string\n   * @static\n   * @param {String} url URL to create an image from\n   * @param {Function} [callback] Callback to invoke when image is created (newly created image is passed as a first argument). Second argument is a boolean indicating if an error occurred or not.\n   * @param {Object} [imgOptions] Options object\n   */\n  fabric.Image.fromURL = function(url, callback, imgOptions) {\n    fabric.util.loadImage(url, function(img, isError) {\n      callback && callback(new fabric.Image(img, imgOptions), isError);\n    }, null, imgOptions && imgOptions.crossOrigin);\n  };\n\n  /* _FROM_SVG_START_ */\n  /**\n   * List of attribute names to account for when parsing SVG element (used by {@link fabric.Image.fromElement})\n   * @static\n   * @see {@link http://www.w3.org/TR/SVG/struct.html#ImageElement}\n   */\n  fabric.Image.ATTRIBUTE_NAMES =\n    fabric.SHARED_ATTRIBUTES.concat(\n      'x y width height preserveAspectRatio xlink:href crossOrigin image-rendering'.split(' ')\n    );\n\n  /**\n   * Returns {@link fabric.Image} instance from an SVG element\n   * @static\n   * @param {SVGElement} element Element to parse\n   * @param {Object} [options] Options object\n   * @param {Function} callback Callback to execute when fabric.Image object is created\n   * @return {fabric.Image} Instance of fabric.Image\n   */\n  fabric.Image.fromElement = function(element, callback, options) {\n    var parsedAttributes = fabric.parseAttributes(element, fabric.Image.ATTRIBUTE_NAMES);\n    fabric.Image.fromURL(parsedAttributes['xlink:href'], callback,\n      extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n  };\n  /* _FROM_SVG_END_ */\n\n})( true ? exports : undefined);\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n  /**\n   * @private\n   * @return {Number} angle value\n   */\n  _getAngleValueForStraighten: function() {\n    var angle = this.angle % 360;\n    if (angle > 0) {\n      return Math.round((angle - 1) / 90) * 90;\n    }\n    return Math.round(angle / 90) * 90;\n  },\n\n  /**\n   * Straightens an object (rotating it from current angle to one of 0, 90, 180, 270, etc. depending on which is closer)\n   * @return {fabric.Object} thisArg\n   * @chainable\n   */\n  straighten: function() {\n    this.rotate(this._getAngleValueForStraighten());\n    return this;\n  },\n\n  /**\n   * Same as {@link fabric.Object.prototype.straighten} but with animation\n   * @param {Object} callbacks Object with callback functions\n   * @param {Function} [callbacks.onComplete] Invoked on completion\n   * @param {Function} [callbacks.onChange] Invoked on every step of animation\n   * @return {fabric.Object} thisArg\n   * @chainable\n   */\n  fxStraighten: function(callbacks) {\n    callbacks = callbacks || { };\n\n    var empty = function() { },\n        onComplete = callbacks.onComplete || empty,\n        onChange = callbacks.onChange || empty,\n        _this = this;\n\n    fabric.util.animate({\n      startValue: this.get('angle'),\n      endValue: this._getAngleValueForStraighten(),\n      duration: this.FX_DURATION,\n      onChange: function(value) {\n        _this.rotate(value);\n        onChange();\n      },\n      onComplete: function() {\n        _this.setCoords();\n        onComplete();\n      },\n    });\n\n    return this;\n  }\n});\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n  /**\n   * Straightens object, then rerenders canvas\n   * @param {fabric.Object} object Object to straighten\n   * @return {fabric.Canvas} thisArg\n   * @chainable\n   */\n  straightenObject: function (object) {\n    object.straighten();\n    this.requestRenderAll();\n    return this;\n  },\n\n  /**\n   * Same as {@link fabric.Canvas.prototype.straightenObject}, but animated\n   * @param {fabric.Object} object Object to straighten\n   * @return {fabric.Canvas} thisArg\n   * @chainable\n   */\n  fxStraightenObject: function (object) {\n    object.fxStraighten({\n      onChange: this.requestRenderAllBound\n    });\n    return this;\n  }\n});\n\n\n(function() {\n\n  'use strict';\n\n  /**\n   * Tests if webgl supports certain precision\n   * @param {WebGL} Canvas WebGL context to test on\n   * @param {String} Precision to test can be any of following: 'lowp', 'mediump', 'highp'\n   * @returns {Boolean} Whether the user's browser WebGL supports given precision.\n   */\n  function testPrecision(gl, precision){\n    var fragmentSource = 'precision ' + precision + ' float;\\nvoid main(){}';\n    var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n    gl.shaderSource(fragmentShader, fragmentSource);\n    gl.compileShader(fragmentShader);\n    if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Indicate whether this filtering backend is supported by the user's browser.\n   * @param {Number} tileSize check if the tileSize is supported\n   * @returns {Boolean} Whether the user's browser supports WebGL.\n   */\n  fabric.isWebglSupported = function(tileSize) {\n    if (fabric.isLikelyNode) {\n      return false;\n    }\n    tileSize = tileSize || fabric.WebglFilterBackend.prototype.tileSize;\n    var canvas = document.createElement('canvas');\n    var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n    var isSupported = false;\n    // eslint-disable-next-line\n    if (gl) {\n      fabric.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n      isSupported = fabric.maxTextureSize >= tileSize;\n      var precisions = ['highp', 'mediump', 'lowp'];\n      for (var i = 0; i < 3; i++){\n        if (testPrecision(gl, precisions[i])){\n          fabric.webGlPrecision = precisions[i];\n          break;\n        };\n      }\n    }\n    this.isSupported = isSupported;\n    return isSupported;\n  };\n\n  fabric.WebglFilterBackend = WebglFilterBackend;\n\n  /**\n   * WebGL filter backend.\n   */\n  function WebglFilterBackend(options) {\n    if (options && options.tileSize) {\n      this.tileSize = options.tileSize;\n    }\n    this.setupGLContext(this.tileSize, this.tileSize);\n    this.captureGPUInfo();\n  };\n\n  WebglFilterBackend.prototype = /** @lends fabric.WebglFilterBackend.prototype */ {\n\n    tileSize: 2048,\n\n    /**\n     * Experimental. This object is a sort of repository of help layers used to avoid\n     * of recreating them during frequent filtering. If you are previewing a filter with\n     * a slider you probably do not want to create help layers every filter step.\n     * in this object there will be appended some canvases, created once, resized sometimes\n     * cleared never. Clearing is left to the developer.\n     **/\n    resources: {\n\n    },\n\n    /**\n     * Setup a WebGL context suitable for filtering, and bind any needed event handlers.\n     */\n    setupGLContext: function(width, height) {\n      this.dispose();\n      this.createWebGLCanvas(width, height);\n      // eslint-disable-next-line\n      this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]);\n      this.chooseFastestCopyGLTo2DMethod(width, height);\n    },\n\n    /**\n     * Pick a method to copy data from GL context to 2d canvas.  In some browsers using\n     * putImageData is faster than drawImage for that specific operation.\n     */\n    chooseFastestCopyGLTo2DMethod: function(width, height) {\n      var canMeasurePerf = typeof window.performance !== 'undefined', canUseImageData;\n      try {\n        new ImageData(1, 1);\n        canUseImageData = true;\n      }\n      catch (e) {\n        canUseImageData = false;\n      }\n      // eslint-disable-next-line no-undef\n      var canUseArrayBuffer = typeof ArrayBuffer !== 'undefined';\n      // eslint-disable-next-line no-undef\n      var canUseUint8Clamped = typeof Uint8ClampedArray !== 'undefined';\n\n      if (!(canMeasurePerf && canUseImageData && canUseArrayBuffer && canUseUint8Clamped)) {\n        return;\n      }\n\n      var targetCanvas = fabric.util.createCanvasElement();\n      // eslint-disable-next-line no-undef\n      var imageBuffer = new ArrayBuffer(width * height * 4);\n      if (fabric.forceGLPutImageData) {\n        this.imageBuffer = imageBuffer;\n        this.copyGLTo2D = copyGLTo2DPutImageData;\n        return;\n      }\n      var testContext = {\n        imageBuffer: imageBuffer,\n        destinationWidth: width,\n        destinationHeight: height,\n        targetCanvas: targetCanvas\n      };\n      var startTime, drawImageTime, putImageDataTime;\n      targetCanvas.width = width;\n      targetCanvas.height = height;\n\n      startTime = window.performance.now();\n      copyGLTo2DDrawImage.call(testContext, this.gl, testContext);\n      drawImageTime = window.performance.now() - startTime;\n\n      startTime = window.performance.now();\n      copyGLTo2DPutImageData.call(testContext, this.gl, testContext);\n      putImageDataTime = window.performance.now() - startTime;\n\n      if (drawImageTime > putImageDataTime) {\n        this.imageBuffer = imageBuffer;\n        this.copyGLTo2D = copyGLTo2DPutImageData;\n      }\n      else {\n        this.copyGLTo2D = copyGLTo2DDrawImage;\n      }\n    },\n\n    /**\n     * Create a canvas element and associated WebGL context and attaches them as\n     * class properties to the GLFilterBackend class.\n     */\n    createWebGLCanvas: function(width, height) {\n      var canvas = fabric.util.createCanvasElement();\n      canvas.width = width;\n      canvas.height = height;\n      var glOptions = {\n            alpha: true,\n            premultipliedAlpha: false,\n            depth: false,\n            stencil: false,\n            antialias: false\n          },\n          gl = canvas.getContext('webgl', glOptions);\n      if (!gl) {\n        gl = canvas.getContext('experimental-webgl', glOptions);\n      }\n      if (!gl) {\n        return;\n      }\n      gl.clearColor(0, 0, 0, 0);\n      // this canvas can fire webglcontextlost and webglcontextrestored\n      this.canvas = canvas;\n      this.gl = gl;\n    },\n\n    /**\n     * Attempts to apply the requested filters to the source provided, drawing the filtered output\n     * to the provided target canvas.\n     *\n     * @param {Array} filters The filters to apply.\n     * @param {HTMLImageElement|HTMLCanvasElement} source The source to be filtered.\n     * @param {Number} width The width of the source input.\n     * @param {Number} height The height of the source input.\n     * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n     * @param {String|undefined} cacheKey A key used to cache resources related to the source. If\n     * omitted, caching will be skipped.\n     */\n    applyFilters: function(filters, source, width, height, targetCanvas, cacheKey) {\n      var gl = this.gl;\n      var cachedTexture;\n      if (cacheKey) {\n        cachedTexture = this.getCachedTexture(cacheKey, source);\n      }\n      var pipelineState = {\n        originalWidth: source.width || source.originalWidth,\n        originalHeight: source.height || source.originalHeight,\n        sourceWidth: width,\n        sourceHeight: height,\n        destinationWidth: width,\n        destinationHeight: height,\n        context: gl,\n        sourceTexture: this.createTexture(gl, width, height, !cachedTexture && source),\n        targetTexture: this.createTexture(gl, width, height),\n        originalTexture: cachedTexture ||\n          this.createTexture(gl, width, height, !cachedTexture && source),\n        passes: filters.length,\n        webgl: true,\n        aPosition: this.aPosition,\n        programCache: this.programCache,\n        pass: 0,\n        filterBackend: this,\n        targetCanvas: targetCanvas\n      };\n      var tempFbo = gl.createFramebuffer();\n      gl.bindFramebuffer(gl.FRAMEBUFFER, tempFbo);\n      filters.forEach(function(filter) { filter && filter.applyTo(pipelineState); });\n      resizeCanvasIfNeeded(pipelineState);\n      this.copyGLTo2D(gl, pipelineState);\n      gl.bindTexture(gl.TEXTURE_2D, null);\n      gl.deleteTexture(pipelineState.sourceTexture);\n      gl.deleteTexture(pipelineState.targetTexture);\n      gl.deleteFramebuffer(tempFbo);\n      targetCanvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0);\n      return pipelineState;\n    },\n\n    /**\n     * Detach event listeners, remove references, and clean up caches.\n     */\n    dispose: function() {\n      if (this.canvas) {\n        this.canvas = null;\n        this.gl = null;\n      }\n      this.clearWebGLCaches();\n    },\n\n    /**\n     * Wipe out WebGL-related caches.\n     */\n    clearWebGLCaches: function() {\n      this.programCache = {};\n      this.textureCache = {};\n    },\n\n    /**\n     * Create a WebGL texture object.\n     *\n     * Accepts specific dimensions to initialize the texture to or a source image.\n     *\n     * @param {WebGLRenderingContext} gl The GL context to use for creating the texture.\n     * @param {Number} width The width to initialize the texture at.\n     * @param {Number} height The height to initialize the texture.\n     * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source for the texture data.\n     * @returns {WebGLTexture}\n     */\n    createTexture: function(gl, width, height, textureImageSource) {\n      var texture = gl.createTexture();\n      gl.bindTexture(gl.TEXTURE_2D, texture);\n      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n      gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\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      if (textureImageSource) {\n        gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureImageSource);\n      }\n      else {\n        gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n      }\n      return texture;\n    },\n\n    /**\n     * Can be optionally used to get a texture from the cache array\n     *\n     * If an existing texture is not found, a new texture is created and cached.\n     *\n     * @param {String} uniqueId A cache key to use to find an existing texture.\n     * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source to use to create the\n     * texture cache entry if one does not already exist.\n     */\n    getCachedTexture: function(uniqueId, textureImageSource) {\n      if (this.textureCache[uniqueId]) {\n        return this.textureCache[uniqueId];\n      }\n      else {\n        var texture = this.createTexture(\n          this.gl, textureImageSource.width, textureImageSource.height, textureImageSource);\n        this.textureCache[uniqueId] = texture;\n        return texture;\n      }\n    },\n\n    /**\n     * Clear out cached resources related to a source image that has been\n     * filtered previously.\n     *\n     * @param {String} cacheKey The cache key provided when the source image was filtered.\n     */\n    evictCachesForKey: function(cacheKey) {\n      if (this.textureCache[cacheKey]) {\n        this.gl.deleteTexture(this.textureCache[cacheKey]);\n        delete this.textureCache[cacheKey];\n      }\n    },\n\n    copyGLTo2D: copyGLTo2DDrawImage,\n\n    /**\n     * Attempt to extract GPU information strings from a WebGL context.\n     *\n     * Useful information when debugging or blacklisting specific GPUs.\n     *\n     * @returns {Object} A GPU info object with renderer and vendor strings.\n     */\n    captureGPUInfo: function() {\n      if (this.gpuInfo) {\n        return this.gpuInfo;\n      }\n      var gl = this.gl, gpuInfo = { renderer: '', vendor: '' };\n      if (!gl) {\n        return gpuInfo;\n      }\n      var ext = gl.getExtension('WEBGL_debug_renderer_info');\n      if (ext) {\n        var renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);\n        var vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);\n        if (renderer) {\n          gpuInfo.renderer = renderer.toLowerCase();\n        }\n        if (vendor) {\n          gpuInfo.vendor = vendor.toLowerCase();\n        }\n      }\n      this.gpuInfo = gpuInfo;\n      return gpuInfo;\n    },\n  };\n})();\n\nfunction resizeCanvasIfNeeded(pipelineState) {\n  var targetCanvas = pipelineState.targetCanvas,\n      width = targetCanvas.width, height = targetCanvas.height,\n      dWidth = pipelineState.destinationWidth,\n      dHeight = pipelineState.destinationHeight;\n\n  if (width !== dWidth || height !== dHeight) {\n    targetCanvas.width = dWidth;\n    targetCanvas.height = dHeight;\n  }\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas.\n *\n * The WebGL canvas is assumed to be upside down, with the top-left pixel of the\n * desired output image appearing in the bottom-left corner of the WebGL canvas.\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DDrawImage(gl, pipelineState) {\n  var glCanvas = gl.canvas, targetCanvas = pipelineState.targetCanvas,\n      ctx = targetCanvas.getContext('2d');\n  ctx.translate(0, targetCanvas.height); // move it down again\n  ctx.scale(1, -1); // vertical flip\n  // where is my image on the big glcanvas?\n  var sourceY = glCanvas.height - targetCanvas.height;\n  ctx.drawImage(glCanvas, 0, sourceY, targetCanvas.width, targetCanvas.height, 0, 0,\n    targetCanvas.width, targetCanvas.height);\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas using 2d canvas' putImageData\n * API. Measurably faster than using ctx.drawImage in Firefox (version 54 on OSX Sierra).\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DPutImageData(gl, pipelineState) {\n  var targetCanvas = pipelineState.targetCanvas, ctx = targetCanvas.getContext('2d'),\n      dWidth = pipelineState.destinationWidth,\n      dHeight = pipelineState.destinationHeight,\n      numBytes = dWidth * dHeight * 4;\n\n  // eslint-disable-next-line no-undef\n  var u8 = new Uint8Array(this.imageBuffer, 0, numBytes);\n  // eslint-disable-next-line no-undef\n  var u8Clamped = new Uint8ClampedArray(this.imageBuffer, 0, numBytes);\n\n  gl.readPixels(0, 0, dWidth, dHeight, gl.RGBA, gl.UNSIGNED_BYTE, u8);\n  var imgData = new ImageData(u8Clamped, dWidth, dHeight);\n  ctx.putImageData(imgData, 0, 0);\n}\n\n\n(function() {\n\n  'use strict';\n\n  var noop = function() {};\n\n  fabric.Canvas2dFilterBackend = Canvas2dFilterBackend;\n\n  /**\n   * Canvas 2D filter backend.\n   */\n  function Canvas2dFilterBackend() {};\n\n  Canvas2dFilterBackend.prototype = /** @lends fabric.Canvas2dFilterBackend.prototype */ {\n    evictCachesForKey: noop,\n    dispose: noop,\n    clearWebGLCaches: noop,\n\n    /**\n     * Experimental. This object is a sort of repository of help layers used to avoid\n     * of recreating them during frequent filtering. If you are previewing a filter with\n     * a slider you probably do not want to create help layers every filter step.\n     * in this object there will be appended some canvases, created once, resized sometimes\n     * cleared never. Clearing is left to the developer.\n     **/\n    resources: {\n\n    },\n\n    /**\n     * Apply a set of filters against a source image and draw the filtered output\n     * to the provided destination canvas.\n     *\n     * @param {EnhancedFilter} filters The filter to apply.\n     * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.\n     * @param {Number} sourceWidth The width of the source input.\n     * @param {Number} sourceHeight The height of the source input.\n     * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n     */\n    applyFilters: function(filters, sourceElement, sourceWidth, sourceHeight, targetCanvas) {\n      var ctx = targetCanvas.getContext('2d');\n      ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);\n      var imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n      var originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n      var pipelineState = {\n        sourceWidth: sourceWidth,\n        sourceHeight: sourceHeight,\n        imageData: imageData,\n        originalEl: sourceElement,\n        originalImageData: originalImageData,\n        canvasEl: targetCanvas,\n        ctx: ctx,\n        filterBackend: this,\n      };\n      filters.forEach(function(filter) { filter.applyTo(pipelineState); });\n      if (pipelineState.imageData.width !== sourceWidth || pipelineState.imageData.height !== sourceHeight) {\n        targetCanvas.width = pipelineState.imageData.width;\n        targetCanvas.height = pipelineState.imageData.height;\n      }\n      ctx.putImageData(pipelineState.imageData, 0, 0);\n      return pipelineState;\n    },\n\n  };\n})();\n\n\n/**\n * @namespace fabric.Image.filters\n * @memberOf fabric.Image\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#image_filters}\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n */\nfabric.Image = fabric.Image || { };\nfabric.Image.filters = fabric.Image.filters || { };\n\n/**\n * Root filter class from which all filter classes inherit from\n * @class fabric.Image.filters.BaseFilter\n * @memberOf fabric.Image.filters\n */\nfabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Image.filters.BaseFilter.prototype */ {\n\n  /**\n   * Filter type\n   * @param {String} type\n   * @default\n   */\n  type: 'BaseFilter',\n\n  /**\n   * Array of attributes to send with buffers. do not modify\n   * @private\n   */\n\n  vertexSource: 'attribute vec2 aPosition;\\n' +\n    'varying vec2 vTexCoord;\\n' +\n    'void main() {\\n' +\n      'vTexCoord = aPosition;\\n' +\n      'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n    '}',\n\n  fragmentSource: 'precision highp float;\\n' +\n    'varying vec2 vTexCoord;\\n' +\n    'uniform sampler2D uTexture;\\n' +\n    'void main() {\\n' +\n      'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n    '}',\n\n  /**\n   * Constructor\n   * @param {Object} [options] Options object\n   */\n  initialize: function(options) {\n    if (options) {\n      this.setOptions(options);\n    }\n  },\n\n  /**\n   * Sets filter's properties from options\n   * @param {Object} [options] Options object\n   */\n  setOptions: function(options) {\n    for (var prop in options) {\n      this[prop] = options[prop];\n    }\n  },\n\n  /**\n   * Compile this filter's shader program.\n   *\n   * @param {WebGLRenderingContext} gl The GL canvas context to use for shader compilation.\n   * @param {String} fragmentSource fragmentShader source for compilation\n   * @param {String} vertexSource vertexShader source for compilation\n   */\n  createProgram: function(gl, fragmentSource, vertexSource) {\n    fragmentSource = fragmentSource || this.fragmentSource;\n    vertexSource = vertexSource || this.vertexSource;\n    if (fabric.webGlPrecision !== 'highp'){\n      fragmentSource = fragmentSource.replace(\n        /precision highp float/g,\n        'precision ' + fabric.webGlPrecision + ' float'\n      );\n    }\n    var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n    gl.shaderSource(vertexShader, vertexSource);\n    gl.compileShader(vertexShader);\n    if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n      throw new Error(\n        // eslint-disable-next-line prefer-template\n        'Vertex shader compile error for ' + this.type + ': ' +\n        gl.getShaderInfoLog(vertexShader)\n      );\n    }\n\n    var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n    gl.shaderSource(fragmentShader, fragmentSource);\n    gl.compileShader(fragmentShader);\n    if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n      throw new Error(\n        // eslint-disable-next-line prefer-template\n        'Fragment shader compile error for ' + this.type + ': ' +\n        gl.getShaderInfoLog(fragmentShader)\n      );\n    }\n\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(\n        // eslint-disable-next-line prefer-template\n        'Shader link error for \"${this.type}\" ' +\n        gl.getProgramInfoLog(program)\n      );\n    }\n\n    var attributeLocations = this.getAttributeLocations(gl, program);\n    var uniformLocations = this.getUniformLocations(gl, program) || { };\n    uniformLocations.uStepW = gl.getUniformLocation(program, 'uStepW');\n    uniformLocations.uStepH = gl.getUniformLocation(program, 'uStepH');\n    return {\n      program: program,\n      attributeLocations: attributeLocations,\n      uniformLocations: uniformLocations\n    };\n  },\n\n  /**\n   * Return a map of attribute names to WebGLAttributeLocation objects.\n   *\n   * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n   * @param {WebGLShaderProgram} program The shader program from which to take attribute locations.\n   * @returns {Object} A map of attribute names to attribute locations.\n   */\n  getAttributeLocations: function(gl, program) {\n    return {\n      aPosition: gl.getAttribLocation(program, 'aPosition'),\n    };\n  },\n\n  /**\n   * Return a map of uniform names to WebGLUniformLocation objects.\n   *\n   * Intended to be overridden by subclasses.\n   *\n   * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n   * @param {WebGLShaderProgram} program The shader program from which to take uniform locations.\n   * @returns {Object} A map of uniform names to uniform locations.\n   */\n  getUniformLocations: function (/* gl, program */) {\n    // in case i do not need any special uniform i need to return an empty object\n    return { };\n  },\n\n  /**\n   * Send attribute data from this filter to its shader program on the GPU.\n   *\n   * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n   * @param {Object} attributeLocations A map of shader attribute names to their locations.\n   */\n  sendAttributeData: function(gl, attributeLocations, aPositionData) {\n    var attributeLocation = attributeLocations.aPosition;\n    var buffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n    gl.enableVertexAttribArray(attributeLocation);\n    gl.vertexAttribPointer(attributeLocation, 2, gl.FLOAT, false, 0, 0);\n    gl.bufferData(gl.ARRAY_BUFFER, aPositionData, gl.STATIC_DRAW);\n  },\n\n  _setupFrameBuffer: function(options) {\n    var gl = options.context, width, height;\n    if (options.passes > 1) {\n      width = options.destinationWidth;\n      height = options.destinationHeight;\n      if (options.sourceWidth !== width || options.sourceHeight !== height) {\n        gl.deleteTexture(options.targetTexture);\n        options.targetTexture = options.filterBackend.createTexture(gl, width, height);\n      }\n      gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D,\n        options.targetTexture, 0);\n    }\n    else {\n      // draw last filter on canvas and not to framebuffer.\n      gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n      gl.finish();\n    }\n  },\n\n  _swapTextures: function(options) {\n    options.passes--;\n    options.pass++;\n    var temp = options.targetTexture;\n    options.targetTexture = options.sourceTexture;\n    options.sourceTexture = temp;\n  },\n\n  /**\n   * Generic isNeutral implementation for one parameter based filters.\n   * Used only in image applyFilters to discard filters that will not have an effect\n   * on the image\n   * Other filters may need their own version ( ColorMatrix, HueRotation, gamma, ComposedFilter )\n   * @param {Object} options\n   **/\n  isNeutralState: function(/* options */) {\n    var main = this.mainParameter,\n        _class = fabric.Image.filters[this.type].prototype;\n    if (main) {\n      if (Array.isArray(_class[main])) {\n        for (var i = _class[main].length; i--;) {\n          if (this[main][i] !== _class[main][i]) {\n            return false;\n          }\n        }\n        return true;\n      }\n      else {\n        return _class[main] === this[main];\n      }\n    }\n    else {\n      return false;\n    }\n  },\n\n  /**\n   * Apply this filter to the input image data provided.\n   *\n   * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n   *\n   * @param {Object} options\n   * @param {Number} options.passes The number of filters remaining to be executed\n   * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n   * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n   * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n   * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n   * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n   */\n  applyTo: function(options) {\n    if (options.webgl) {\n      this._setupFrameBuffer(options);\n      this.applyToWebGL(options);\n      this._swapTextures(options);\n    }\n    else {\n      this.applyTo2d(options);\n    }\n  },\n\n  /**\n   * Retrieves the cached shader.\n   * @param {Object} options\n   * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n   * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n   */\n  retrieveShader: function(options) {\n    if (!options.programCache.hasOwnProperty(this.type)) {\n      options.programCache[this.type] = this.createProgram(options.context);\n    }\n    return options.programCache[this.type];\n  },\n\n  /**\n   * Apply this filter using webgl.\n   *\n   * @param {Object} options\n   * @param {Number} options.passes The number of filters remaining to be executed\n   * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n   * @param {WebGLTexture} options.originalTexture The texture of the original input image.\n   * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n   * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n   * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n   * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n   */\n  applyToWebGL: function(options) {\n    var gl = options.context;\n    var shader = this.retrieveShader(options);\n    if (options.pass === 0 && options.originalTexture) {\n      gl.bindTexture(gl.TEXTURE_2D, options.originalTexture);\n    }\n    else {\n      gl.bindTexture(gl.TEXTURE_2D, options.sourceTexture);\n    }\n    gl.useProgram(shader.program);\n    this.sendAttributeData(gl, shader.attributeLocations, options.aPosition);\n\n    gl.uniform1f(shader.uniformLocations.uStepW, 1 / options.sourceWidth);\n    gl.uniform1f(shader.uniformLocations.uStepH, 1 / options.sourceHeight);\n\n    this.sendUniformData(gl, shader.uniformLocations);\n    gl.viewport(0, 0, options.destinationWidth, options.destinationHeight);\n    gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n  },\n\n  bindAdditionalTexture: function(gl, texture, textureUnit) {\n    gl.activeTexture(textureUnit);\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n    // reset active texture to 0 as usual\n    gl.activeTexture(gl.TEXTURE0);\n  },\n\n  unbindAdditionalTexture: function(gl, textureUnit) {\n    gl.activeTexture(textureUnit);\n    gl.bindTexture(gl.TEXTURE_2D, null);\n    gl.activeTexture(gl.TEXTURE0);\n  },\n\n  getMainParameter: function() {\n    return this[this.mainParameter];\n  },\n\n  setMainParameter: function(value) {\n    this[this.mainParameter] = value;\n  },\n\n  /**\n   * Send uniform data from this filter to its shader program on the GPU.\n   *\n   * Intended to be overridden by subclasses.\n   *\n   * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n   * @param {Object} uniformLocations A map of shader uniform names to their locations.\n   */\n  sendUniformData: function(/* gl, uniformLocations */) {\n    // Intentionally left blank.  Override me in subclasses.\n  },\n\n  /**\n   * If needed by a 2d filter, this functions can create an helper canvas to be used\n   * remember that options.targetCanvas is available for use till end of chain.\n   */\n  createHelpLayer: function(options) {\n    if (!options.helpLayer) {\n      var helpLayer = document.createElement('canvas');\n      helpLayer.width = options.sourceWidth;\n      helpLayer.height = options.sourceHeight;\n      options.helpLayer = helpLayer;\n    }\n  },\n\n  /**\n   * Returns object representation of an instance\n   * @return {Object} Object representation of an instance\n   */\n  toObject: function() {\n    var object = { type: this.type }, mainP = this.mainParameter;\n    if (mainP) {\n      object[mainP] = this[mainP];\n    }\n    return object;\n  },\n\n  /**\n   * Returns a JSON representation of an instance\n   * @return {Object} JSON\n   */\n  toJSON: function() {\n    // delegate, not alias\n    return this.toObject();\n  }\n});\n\nfabric.Image.filters.BaseFilter.fromObject = function(object, callback) {\n  var filter = new fabric.Image.filters[object.type](object);\n  callback && callback(filter);\n  return filter;\n};\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Color Matrix filter class\n   * @class fabric.Image.filters.ColorMatrix\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.ColorMatrix#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @see {@Link http://www.webwasp.co.uk/tutorials/219/Color_Matrix_Filter.php}\n   * @see {@Link http://phoboslab.org/log/2013/11/fast-image-filters-with-webgl}\n   * @example <caption>Kodachrome filter</caption>\n   * var filter = new fabric.Image.filters.ColorMatrix({\n   *  matrix: [\n       1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n       -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n       -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n       0, 0, 0, 1, 0\n      ]\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   */\n  filters.ColorMatrix = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.ColorMatrix.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'ColorMatrix',\n\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'uniform mat4 uColorMatrix;\\n' +\n      'uniform vec4 uConstants;\\n' +\n      'void main() {\\n' +\n        'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n        'color *= uColorMatrix;\\n' +\n        'color += uConstants;\\n' +\n        'gl_FragColor = color;\\n' +\n      '}',\n\n    /**\n     * Colormatrix for pixels.\n     * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n     * outside the -1, 1 range.\n     * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n     * @param {Array} matrix array of 20 numbers.\n     * @default\n     */\n    matrix: [\n      1, 0, 0, 0, 0,\n      0, 1, 0, 0, 0,\n      0, 0, 1, 0, 0,\n      0, 0, 0, 1, 0\n    ],\n\n    mainParameter: 'matrix',\n\n    /**\n     * Lock the colormatrix on the color part, skipping alpha, manly for non webgl scenario\n     * to save some calculation\n     */\n    colorsOnly: true,\n\n    /**\n     * Constructor\n     * @param {Object} [options] Options object\n     */\n    initialize: function(options) {\n      this.callSuper('initialize', options);\n      // create a new array instead mutating the prototype with push\n      this.matrix = this.matrix.slice(0);\n    },\n\n    /**\n     * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8Array to be filtered.\n     */\n    applyTo2d: function(options) {\n      var imageData = options.imageData,\n          data = imageData.data,\n          iLen = data.length,\n          m = this.matrix,\n          r, g, b, a, i, colorsOnly = this.colorsOnly;\n\n      for (i = 0; i < iLen; i += 4) {\n        r = data[i];\n        g = data[i + 1];\n        b = data[i + 2];\n        if (colorsOnly) {\n          data[i] = r * m[0] + g * m[1] + b * m[2] + m[4] * 255;\n          data[i + 1] = r * m[5] + g * m[6] + b * m[7] + m[9] * 255;\n          data[i + 2] = r * m[10] + g * m[11] + b * m[12] + m[14] * 255;\n        }\n        else {\n          a = data[i + 3];\n          data[i] = r * m[0] + g * m[1] + b * m[2] + a * m[3] + m[4] * 255;\n          data[i + 1] = r * m[5] + g * m[6] + b * m[7] + a * m[8] + m[9] * 255;\n          data[i + 2] = r * m[10] + g * m[11] + b * m[12] + a * m[13] + m[14] * 255;\n          data[i + 3] = r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255;\n        }\n      }\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uColorMatrix: gl.getUniformLocation(program, 'uColorMatrix'),\n        uConstants: gl.getUniformLocation(program, 'uConstants'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      var m = this.matrix,\n          matrix = [\n            m[0], m[1], m[2], m[3],\n            m[5], m[6], m[7], m[8],\n            m[10], m[11], m[12], m[13],\n            m[15], m[16], m[17], m[18]\n          ],\n          constants = [m[4], m[9], m[14], m[19]];\n      gl.uniformMatrix4fv(uniformLocations.uColorMatrix, false, matrix);\n      gl.uniform4fv(uniformLocations.uConstants, constants);\n    },\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] function to invoke after filter creation\n   * @return {fabric.Image.filters.ColorMatrix} Instance of fabric.Image.filters.ColorMatrix\n   */\n  fabric.Image.filters.ColorMatrix.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Brightness filter class\n   * @class fabric.Image.filters.Brightness\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.Brightness#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Brightness({\n   *   brightness: 0.05\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   */\n  filters.Brightness = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Brightness.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Brightness',\n\n    /**\n     * Fragment source for the brightness program\n     */\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform float uBrightness;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'void main() {\\n' +\n        'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n        'color.rgb += uBrightness;\\n' +\n        'gl_FragColor = color;\\n' +\n      '}',\n\n    /**\n     * Brightness value, from -1 to 1.\n     * translated to -255 to 255 for 2d\n     * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n     * @param {Number} brightness\n     * @default\n     */\n    brightness: 0,\n\n    /**\n     * Describe the property that is the filter parameter\n     * @param {String} m\n     * @default\n     */\n    mainParameter: 'brightness',\n\n    /**\n    * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n    *\n    * @param {Object} options\n    * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n    */\n    applyTo2d: function(options) {\n      if (this.brightness === 0) {\n        return;\n      }\n      var imageData = options.imageData,\n          data = imageData.data, i, len = data.length,\n          brightness = Math.round(this.brightness * 255);\n      for (i = 0; i < len; i += 4) {\n        data[i] = data[i] + brightness;\n        data[i + 1] = data[i + 1] + brightness;\n        data[i + 2] = data[i + 2] + brightness;\n      }\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uBrightness: gl.getUniformLocation(program, 'uBrightness'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      gl.uniform1f(uniformLocations.uBrightness, this.brightness);\n    },\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Brightness} Instance of fabric.Image.filters.Brightness\n   */\n  fabric.Image.filters.Brightness.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      extend = fabric.util.object.extend,\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Adapted from <a href=\"http://www.html5rocks.com/en/tutorials/canvas/imagefilters/\">html5rocks article</a>\n   * @class fabric.Image.filters.Convolute\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.Convolute#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example <caption>Sharpen filter</caption>\n   * var filter = new fabric.Image.filters.Convolute({\n   *   matrix: [ 0, -1,  0,\n   *            -1,  5, -1,\n   *             0, -1,  0 ]\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   * canvas.renderAll();\n   * @example <caption>Blur filter</caption>\n   * var filter = new fabric.Image.filters.Convolute({\n   *   matrix: [ 1/9, 1/9, 1/9,\n   *             1/9, 1/9, 1/9,\n   *             1/9, 1/9, 1/9 ]\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   * canvas.renderAll();\n   * @example <caption>Emboss filter</caption>\n   * var filter = new fabric.Image.filters.Convolute({\n   *   matrix: [ 1,   1,  1,\n   *             1, 0.7, -1,\n   *            -1,  -1, -1 ]\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   * canvas.renderAll();\n   * @example <caption>Emboss filter with opaqueness</caption>\n   * var filter = new fabric.Image.filters.Convolute({\n   *   opaque: true,\n   *   matrix: [ 1,   1,  1,\n   *             1, 0.7, -1,\n   *            -1,  -1, -1 ]\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   * canvas.renderAll();\n   */\n  filters.Convolute = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Convolute.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Convolute',\n\n    /*\n     * Opaque value (true/false)\n     */\n    opaque: false,\n\n    /*\n     * matrix for the filter, max 9x9\n     */\n    matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],\n\n    /**\n     * Fragment source for the brightness program\n     */\n    fragmentSource: {\n      Convolute_3_1: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform float uMatrix[9];\\n' +\n        'uniform float uStepW;\\n' +\n        'uniform float uStepH;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 color = vec4(0, 0, 0, 0);\\n' +\n          'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n            'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n              'vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\\n' +\n              'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\\n' +\n            '}\\n' +\n          '}\\n' +\n          'gl_FragColor = color;\\n' +\n        '}',\n      Convolute_3_0: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform float uMatrix[9];\\n' +\n        'uniform float uStepW;\\n' +\n        'uniform float uStepH;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 color = vec4(0, 0, 0, 1);\\n' +\n          'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n            'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n              'vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\\n' +\n              'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\\n' +\n            '}\\n' +\n          '}\\n' +\n          'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n          'gl_FragColor = color;\\n' +\n          'gl_FragColor.a = alpha;\\n' +\n        '}',\n      Convolute_5_1: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform float uMatrix[25];\\n' +\n        'uniform float uStepW;\\n' +\n        'uniform float uStepH;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 color = vec4(0, 0, 0, 0);\\n' +\n          'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n            'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n              'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n              'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\\n' +\n            '}\\n' +\n          '}\\n' +\n          'gl_FragColor = color;\\n' +\n        '}',\n      Convolute_5_0: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform float uMatrix[25];\\n' +\n        'uniform float uStepW;\\n' +\n        'uniform float uStepH;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 color = vec4(0, 0, 0, 1);\\n' +\n          'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n            'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n              'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n              'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\\n' +\n            '}\\n' +\n          '}\\n' +\n          'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n          'gl_FragColor = color;\\n' +\n          'gl_FragColor.a = alpha;\\n' +\n        '}',\n      Convolute_7_1: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform float uMatrix[49];\\n' +\n        'uniform float uStepW;\\n' +\n        'uniform float uStepH;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 color = vec4(0, 0, 0, 0);\\n' +\n          'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n            'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n              'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n              'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\\n' +\n            '}\\n' +\n          '}\\n' +\n          'gl_FragColor = color;\\n' +\n        '}',\n      Convolute_7_0: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform float uMatrix[49];\\n' +\n        'uniform float uStepW;\\n' +\n        'uniform float uStepH;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 color = vec4(0, 0, 0, 1);\\n' +\n          'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n            'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n              'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n              'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\\n' +\n            '}\\n' +\n          '}\\n' +\n          'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n          'gl_FragColor = color;\\n' +\n          'gl_FragColor.a = alpha;\\n' +\n        '}',\n      Convolute_9_1: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform float uMatrix[81];\\n' +\n        'uniform float uStepW;\\n' +\n        'uniform float uStepH;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 color = vec4(0, 0, 0, 0);\\n' +\n          'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n            'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n              'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n              'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\\n' +\n            '}\\n' +\n          '}\\n' +\n          'gl_FragColor = color;\\n' +\n        '}',\n      Convolute_9_0: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform float uMatrix[81];\\n' +\n        'uniform float uStepW;\\n' +\n        'uniform float uStepH;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 color = vec4(0, 0, 0, 1);\\n' +\n          'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n            'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n              'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n              'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\\n' +\n            '}\\n' +\n          '}\\n' +\n          'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n          'gl_FragColor = color;\\n' +\n          'gl_FragColor.a = alpha;\\n' +\n        '}',\n    },\n\n    /**\n     * Constructor\n     * @memberOf fabric.Image.filters.Convolute.prototype\n     * @param {Object} [options] Options object\n     * @param {Boolean} [options.opaque=false] Opaque value (true/false)\n     * @param {Array} [options.matrix] Filter matrix\n     */\n\n\n    /**\n    * Retrieves the cached shader.\n    * @param {Object} options\n    * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n    * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n    */\n    retrieveShader: function(options) {\n      var size = Math.sqrt(this.matrix.length);\n      var cacheKey = this.type + '_' + size + '_' + (this.opaque ? 1 : 0);\n      var shaderSource = this.fragmentSource[cacheKey];\n      if (!options.programCache.hasOwnProperty(cacheKey)) {\n        options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n      }\n      return options.programCache[cacheKey];\n    },\n\n    /**\n     * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n     */\n    applyTo2d: function(options) {\n      var imageData = options.imageData,\n          data = imageData.data,\n          weights = this.matrix,\n          side = Math.round(Math.sqrt(weights.length)),\n          halfSide = Math.floor(side / 2),\n          sw = imageData.width,\n          sh = imageData.height,\n          output = options.ctx.createImageData(sw, sh),\n          dst = output.data,\n          // go through the destination image pixels\n          alphaFac = this.opaque ? 1 : 0,\n          r, g, b, a, dstOff,\n          scx, scy, srcOff, wt,\n          x, y, cx, cy;\n\n      for (y = 0; y < sh; y++) {\n        for (x = 0; x < sw; x++) {\n          dstOff = (y * sw + x) * 4;\n          // calculate the weighed sum of the source image pixels that\n          // fall under the convolution matrix\n          r = 0; g = 0; b = 0; a = 0;\n\n          for (cy = 0; cy < side; cy++) {\n            for (cx = 0; cx < side; cx++) {\n              scy = y + cy - halfSide;\n              scx = x + cx - halfSide;\n\n              // eslint-disable-next-line max-depth\n              if (scy < 0 || scy >= sh || scx < 0 || scx >= sw) {\n                continue;\n              }\n\n              srcOff = (scy * sw + scx) * 4;\n              wt = weights[cy * side + cx];\n\n              r += data[srcOff] * wt;\n              g += data[srcOff + 1] * wt;\n              b += data[srcOff + 2] * wt;\n              // eslint-disable-next-line max-depth\n              if (!alphaFac) {\n                a += data[srcOff + 3] * wt;\n              }\n            }\n          }\n          dst[dstOff] = r;\n          dst[dstOff + 1] = g;\n          dst[dstOff + 2] = b;\n          if (!alphaFac) {\n            dst[dstOff + 3] = a;\n          }\n          else {\n            dst[dstOff + 3] = data[dstOff + 3];\n          }\n        }\n      }\n      options.imageData = output;\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uMatrix: gl.getUniformLocation(program, 'uMatrix'),\n        uOpaque: gl.getUniformLocation(program, 'uOpaque'),\n        uHalfSize: gl.getUniformLocation(program, 'uHalfSize'),\n        uSize: gl.getUniformLocation(program, 'uSize'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      gl.uniform1fv(uniformLocations.uMatrix, this.matrix);\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @return {Object} Object representation of an instance\n     */\n    toObject: function() {\n      return extend(this.callSuper('toObject'), {\n        opaque: this.opaque,\n        matrix: this.matrix\n      });\n    }\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Convolute} Instance of fabric.Image.filters.Convolute\n   */\n  fabric.Image.filters.Convolute.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Grayscale image filter class\n   * @class fabric.Image.filters.Grayscale\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Grayscale();\n   * object.filters.push(filter);\n   * object.applyFilters();\n   */\n  filters.Grayscale = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Grayscale.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Grayscale',\n\n    fragmentSource: {\n      average: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n          'float average = (color.r + color.b + color.g) / 3.0;\\n' +\n          'gl_FragColor = vec4(average, average, average, color.a);\\n' +\n        '}',\n      lightness: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform int uMode;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n          'float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\\n' +\n          'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n        '}',\n      luminosity: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform int uMode;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n          'float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\\n' +\n          'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n        '}',\n    },\n\n\n    /**\n     * Grayscale mode, between 'average', 'lightness', 'luminosity'\n     * @param {String} type\n     * @default\n     */\n    mode: 'average',\n\n    mainParameter: 'mode',\n\n    /**\n     * Apply the Grayscale operation to a Uint8Array representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8Array to be filtered.\n     */\n    applyTo2d: function(options) {\n      var imageData = options.imageData,\n          data = imageData.data, i,\n          len = data.length, value,\n          mode = this.mode;\n      for (i = 0; i < len; i += 4) {\n        if (mode === 'average') {\n          value = (data[i] + data[i + 1] + data[i + 2]) / 3;\n        }\n        else if (mode === 'lightness') {\n          value = (Math.min(data[i], data[i + 1], data[i + 2]) +\n            Math.max(data[i], data[i + 1], data[i + 2])) / 2;\n        }\n        else if (mode === 'luminosity') {\n          value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2];\n        }\n        data[i] = value;\n        data[i + 1] = value;\n        data[i + 2] = value;\n      }\n    },\n\n    /**\n     * Retrieves the cached shader.\n     * @param {Object} options\n     * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n     * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n     */\n    retrieveShader: function(options) {\n      var cacheKey = this.type + '_' + this.mode;\n      if (!options.programCache.hasOwnProperty(cacheKey)) {\n        var shaderSource = this.fragmentSource[this.mode];\n        options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n      }\n      return options.programCache[cacheKey];\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uMode: gl.getUniformLocation(program, 'uMode'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      // default average mode.\n      var mode = 1;\n      gl.uniform1i(uniformLocations.uMode, mode);\n    },\n\n    /**\n     * Grayscale filter isNeutralState implementation\n     * The filter is never neutral\n     * on the image\n     **/\n    isNeutralState: function() {\n      return false;\n    },\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Grayscale} Instance of fabric.Image.filters.Grayscale\n   */\n  fabric.Image.filters.Grayscale.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Invert filter class\n   * @class fabric.Image.filters.Invert\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Invert();\n   * object.filters.push(filter);\n   * object.applyFilters(canvas.renderAll.bind(canvas));\n   */\n  filters.Invert = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Invert.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Invert',\n\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform int uInvert;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'void main() {\\n' +\n        'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n        'if (uInvert == 1) {\\n' +\n          'gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\\n' +\n        '} else {\\n' +\n          'gl_FragColor = color;\\n' +\n        '}\\n' +\n      '}',\n\n    /**\n     * Filter invert. if false, does nothing\n     * @param {Boolean} invert\n     * @default\n     */\n    invert: true,\n\n    mainParameter: 'invert',\n\n    /**\n     * Apply the Invert operation to a Uint8Array representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8Array to be filtered.\n     */\n    applyTo2d: function(options) {\n      var imageData = options.imageData,\n          data = imageData.data, i,\n          len = data.length;\n      for (i = 0; i < len; i += 4) {\n        data[i] = 255 - data[i];\n        data[i + 1] = 255 - data[i + 1];\n        data[i + 2] = 255 - data[i + 2];\n      }\n    },\n\n    /**\n     * Invert filter isNeutralState implementation\n     * Used only in image applyFilters to discard filters that will not have an effect\n     * on the image\n     * @param {Object} options\n     **/\n    isNeutralState: function() {\n      return !this.invert;\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uInvert: gl.getUniformLocation(program, 'uInvert'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      gl.uniform1i(uniformLocations.uInvert, this.invert);\n    },\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Invert} Instance of fabric.Image.filters.Invert\n   */\n  fabric.Image.filters.Invert.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      extend = fabric.util.object.extend,\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Noise filter class\n   * @class fabric.Image.filters.Noise\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.Noise#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Noise({\n   *   noise: 700\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   * canvas.renderAll();\n   */\n  filters.Noise = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Noise.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Noise',\n\n    /**\n     * Fragment source for the noise program\n     */\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform float uStepH;\\n' +\n      'uniform float uNoise;\\n' +\n      'uniform float uSeed;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'float rand(vec2 co, float seed, float vScale) {\\n' +\n        'return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\\n' +\n      '}\\n' +\n      'void main() {\\n' +\n        'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n        'color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\\n' +\n        'gl_FragColor = color;\\n' +\n      '}',\n\n    /**\n     * Describe the property that is the filter parameter\n     * @param {String} m\n     * @default\n     */\n    mainParameter: 'noise',\n\n    /**\n     * Noise value, from\n     * @param {Number} noise\n     * @default\n     */\n    noise: 0,\n\n    /**\n     * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n     */\n    applyTo2d: function(options) {\n      if (this.noise === 0) {\n        return;\n      }\n      var imageData = options.imageData,\n          data = imageData.data, i, len = data.length,\n          noise = this.noise, rand;\n\n      for (i = 0, len = data.length; i < len; i += 4) {\n\n        rand = (0.5 - Math.random()) * noise;\n\n        data[i] += rand;\n        data[i + 1] += rand;\n        data[i + 2] += rand;\n      }\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uNoise: gl.getUniformLocation(program, 'uNoise'),\n        uSeed: gl.getUniformLocation(program, 'uSeed'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      gl.uniform1f(uniformLocations.uNoise, this.noise / 255);\n      gl.uniform1f(uniformLocations.uSeed, Math.random());\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @return {Object} Object representation of an instance\n     */\n    toObject: function() {\n      return extend(this.callSuper('toObject'), {\n        noise: this.noise\n      });\n    }\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {Function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Noise} Instance of fabric.Image.filters.Noise\n   */\n  fabric.Image.filters.Noise.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Pixelate filter class\n   * @class fabric.Image.filters.Pixelate\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.Pixelate#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Pixelate({\n   *   blocksize: 8\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   */\n  filters.Pixelate = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Pixelate.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Pixelate',\n\n    blocksize: 4,\n\n    mainParameter: 'blocksize',\n\n    /**\n     * Fragment source for the Pixelate program\n     */\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform float uBlocksize;\\n' +\n      'uniform float uStepW;\\n' +\n      'uniform float uStepH;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'void main() {\\n' +\n        'float blockW = uBlocksize * uStepW;\\n' +\n        'float blockH = uBlocksize * uStepW;\\n' +\n        'int posX = int(vTexCoord.x / blockW);\\n' +\n        'int posY = int(vTexCoord.y / blockH);\\n' +\n        'float fposX = float(posX);\\n' +\n        'float fposY = float(posY);\\n' +\n        'vec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\\n' +\n        'vec4 color = texture2D(uTexture, squareCoords);\\n' +\n        'gl_FragColor = color;\\n' +\n      '}',\n\n    /**\n     * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n     */\n    applyTo2d: function(options) {\n      var imageData = options.imageData,\n          data = imageData.data,\n          iLen = imageData.height,\n          jLen = imageData.width,\n          index, i, j, r, g, b, a,\n          _i, _j, _iLen, _jLen;\n\n      for (i = 0; i < iLen; i += this.blocksize) {\n        for (j = 0; j < jLen; j += this.blocksize) {\n\n          index = (i * 4) * jLen + (j * 4);\n\n          r = data[index];\n          g = data[index + 1];\n          b = data[index + 2];\n          a = data[index + 3];\n\n          _iLen = Math.min(i + this.blocksize, iLen);\n          _jLen = Math.min(j + this.blocksize, jLen);\n          for (_i = i; _i < _iLen; _i++) {\n            for (_j = j; _j < _jLen; _j++) {\n              index = (_i * 4) * jLen + (_j * 4);\n              data[index] = r;\n              data[index + 1] = g;\n              data[index + 2] = b;\n              data[index + 3] = a;\n            }\n          }\n        }\n      }\n    },\n\n    /**\n     * Indicate when the filter is not gonna apply changes to the image\n     **/\n    isNeutralState: function() {\n      return this.blocksize === 1;\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uBlocksize: gl.getUniformLocation(program, 'uBlocksize'),\n        uStepW: gl.getUniformLocation(program, 'uStepW'),\n        uStepH: gl.getUniformLocation(program, 'uStepH'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n    },\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {Function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Pixelate} Instance of fabric.Image.filters.Pixelate\n   */\n  fabric.Image.filters.Pixelate.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      extend = fabric.util.object.extend,\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Remove white filter class\n   * @class fabric.Image.filters.RemoveColor\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.RemoveColor#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.RemoveColor({\n   *   threshold: 0.2,\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   * canvas.renderAll();\n   */\n  filters.RemoveColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.RemoveColor.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'RemoveColor',\n\n    /**\n     * Color to remove, in any format understood by fabric.Color.\n     * @param {String} type\n     * @default\n     */\n    color: '#FFFFFF',\n\n    /**\n     * Fragment source for the brightness program\n     */\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform vec4 uLow;\\n' +\n      'uniform vec4 uHigh;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'void main() {\\n' +\n        'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n        'if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\\n' +\n          'gl_FragColor.a = 0.0;\\n' +\n        '}\\n' +\n      '}',\n\n    /**\n     * distance to actual color, as value up or down from each r,g,b\n     * between 0 and 1\n     **/\n    distance: 0.02,\n\n    /**\n     * For color to remove inside distance, use alpha channel for a smoother deletion\n     * NOT IMPLEMENTED YET\n     **/\n    useAlpha: false,\n\n    /**\n     * Constructor\n     * @memberOf fabric.Image.filters.RemoveWhite.prototype\n     * @param {Object} [options] Options object\n     * @param {Number} [options.color=#RRGGBB] Threshold value\n     * @param {Number} [options.distance=10] Distance value\n     */\n\n    /**\n     * Applies filter to canvas element\n     * @param {Object} canvasEl Canvas element to apply filter to\n     */\n    applyTo2d: function(options) {\n      var imageData = options.imageData,\n          data = imageData.data, i,\n          distance = this.distance * 255,\n          r, g, b,\n          source = new fabric.Color(this.color).getSource(),\n          lowC = [\n            source[0] - distance,\n            source[1] - distance,\n            source[2] - distance,\n          ],\n          highC = [\n            source[0] + distance,\n            source[1] + distance,\n            source[2] + distance,\n          ];\n\n\n      for (i = 0; i < data.length; i += 4) {\n        r = data[i];\n        g = data[i + 1];\n        b = data[i + 2];\n\n        if (r > lowC[0] &&\n            g > lowC[1] &&\n            b > lowC[2] &&\n            r < highC[0] &&\n            g < highC[1] &&\n            b < highC[2]) {\n          data[i + 3] = 0;\n        }\n      }\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uLow: gl.getUniformLocation(program, 'uLow'),\n        uHigh: gl.getUniformLocation(program, 'uHigh'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      var source = new fabric.Color(this.color).getSource(),\n          distance = parseFloat(this.distance),\n          lowC = [\n            0 + source[0] / 255 - distance,\n            0 + source[1] / 255 - distance,\n            0 + source[2] / 255 - distance,\n            1\n          ],\n          highC = [\n            source[0] / 255 + distance,\n            source[1] / 255 + distance,\n            source[2] / 255 + distance,\n            1\n          ];\n      gl.uniform4fv(uniformLocations.uLow, lowC);\n      gl.uniform4fv(uniformLocations.uHigh, highC);\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @return {Object} Object representation of an instance\n     */\n    toObject: function() {\n      return extend(this.callSuper('toObject'), {\n        color: this.color,\n        distance: this.distance\n      });\n    }\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {Function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.RemoveColor} Instance of fabric.Image.filters.RemoveWhite\n   */\n  fabric.Image.filters.RemoveColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  var matrices = {\n    Brownie: [\n      0.59970,0.34553,-0.27082,0,0.186,\n      -0.03770,0.86095,0.15059,0,-0.1449,\n      0.24113,-0.07441,0.44972,0,-0.02965,\n      0,0,0,1,0\n    ],\n    Vintage: [\n      0.62793,0.32021,-0.03965,0,0.03784,\n      0.02578,0.64411,0.03259,0,0.02926,\n      0.04660,-0.08512,0.52416,0,0.02023,\n      0,0,0,1,0\n    ],\n    Kodachrome: [\n      1.12855,-0.39673,-0.03992,0,0.24991,\n      -0.16404,1.08352,-0.05498,0,0.09698,\n      -0.16786,-0.56034,1.60148,0,0.13972,\n      0,0,0,1,0\n    ],\n    Technicolor: [\n      1.91252,-0.85453,-0.09155,0,0.04624,\n      -0.30878,1.76589,-0.10601,0,-0.27589,\n      -0.23110,-0.75018,1.84759,0,0.12137,\n      0,0,0,1,0\n    ],\n    Polaroid: [\n      1.438,-0.062,-0.062,0,0,\n      -0.122,1.378,-0.122,0,0,\n      -0.016,-0.016,1.483,0,0,\n      0,0,0,1,0\n    ],\n    Sepia: [\n      0.393, 0.769, 0.189, 0, 0,\n      0.349, 0.686, 0.168, 0, 0,\n      0.272, 0.534, 0.131, 0, 0,\n      0, 0, 0, 1, 0\n    ],\n    BlackWhite: [\n      1.5, 1.5, 1.5, 0, -1,\n      1.5, 1.5, 1.5, 0, -1,\n      1.5, 1.5, 1.5, 0, -1,\n      0, 0, 0, 1, 0,\n    ]\n  };\n\n  for (var key in matrices) {\n    filters[key] = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.Sepia.prototype */ {\n\n      /**\n       * Filter type\n       * @param {String} type\n       * @default\n       */\n      type: key,\n\n      /**\n       * Colormatrix for the effect\n       * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n       * outside the -1, 1 range.\n       * @param {Array} matrix array of 20 numbers.\n       * @default\n       */\n      matrix: matrices[key],\n\n      /**\n       * Lock the matrix export for this kind of static, parameter less filters.\n       */\n      mainParameter: false,\n      /**\n       * Lock the colormatrix on the color part, skipping alpha\n       */\n      colorsOnly: true,\n\n    });\n    fabric.Image.filters[key].fromObject = fabric.Image.filters.BaseFilter.fromObject;\n  }\n})( true ? exports : undefined);\n\n\n(function(global) {\n  'use strict';\n\n  var fabric = global.fabric,\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Color Blend filter class\n   * @class fabric.Image.filter.BlendColor\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @example\n   * var filter = new fabric.Image.filters.BlendColor({\n   *  color: '#000',\n   *  mode: 'multiply'\n   * });\n   *\n   * var filter = new fabric.Image.filters.BlendImage({\n   *  image: fabricImageObject,\n   *  mode: 'multiply',\n   *  alpha: 0.5\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   * canvas.renderAll();\n   */\n\n  filters.BlendColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blend.prototype */ {\n    type: 'BlendColor',\n\n    /**\n     * Color to make the blend operation with. default to a reddish color since black or white\n     * gives always strong result.\n     **/\n    color: '#F95C63',\n\n    /**\n     * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n     * darken, lighten, overlay, exclusion, tint.\n     **/\n    mode: 'multiply',\n\n    /**\n     * alpha value. represent the strength of the blend color operation.\n     **/\n    alpha: 1,\n\n    /**\n     * Fragment source for the Multiply program\n     */\n    fragmentSource: {\n      multiply: 'gl_FragColor.rgb *= uColor.rgb;\\n',\n      screen: 'gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\\n',\n      add: 'gl_FragColor.rgb += uColor.rgb;\\n',\n      diff: 'gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\\n',\n      subtract: 'gl_FragColor.rgb -= uColor.rgb;\\n',\n      lighten: 'gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\\n',\n      darken: 'gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\\n',\n      exclusion: 'gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\\n',\n      overlay: 'if (uColor.r < 0.5) {\\n' +\n          'gl_FragColor.r *= 2.0 * uColor.r;\\n' +\n        '} else {\\n' +\n          'gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\\n' +\n        '}\\n' +\n        'if (uColor.g < 0.5) {\\n' +\n          'gl_FragColor.g *= 2.0 * uColor.g;\\n' +\n        '} else {\\n' +\n          'gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\\n' +\n        '}\\n' +\n        'if (uColor.b < 0.5) {\\n' +\n          'gl_FragColor.b *= 2.0 * uColor.b;\\n' +\n        '} else {\\n' +\n          'gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\\n' +\n        '}\\n',\n      tint: 'gl_FragColor.rgb *= (1.0 - uColor.a);\\n' +\n        'gl_FragColor.rgb += uColor.rgb;\\n',\n    },\n\n    /**\n     * build the fragment source for the filters, joining the common part with\n     * the specific one.\n     * @param {String} mode the mode of the filter, a key of this.fragmentSource\n     * @return {String} the source to be compiled\n     * @private\n     */\n    buildSource: function(mode) {\n      return 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform vec4 uColor;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'void main() {\\n' +\n          'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n          'gl_FragColor = color;\\n' +\n          'if (color.a > 0.0) {\\n' +\n            this.fragmentSource[mode] +\n          '}\\n' +\n        '}';\n    },\n\n    /**\n     * Retrieves the cached shader.\n     * @param {Object} options\n     * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n     * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n     */\n    retrieveShader: function(options) {\n      var cacheKey = this.type + '_' + this.mode, shaderSource;\n      if (!options.programCache.hasOwnProperty(cacheKey)) {\n        shaderSource = this.buildSource(this.mode);\n        options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n      }\n      return options.programCache[cacheKey];\n    },\n\n    /**\n     * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n     */\n    applyTo2d: function(options) {\n      var imageData = options.imageData,\n          data = imageData.data, iLen = data.length,\n          tr, tg, tb,\n          r, g, b,\n          source, alpha1 = 1 - this.alpha;\n\n      source = new fabric.Color(this.color).getSource();\n      tr = source[0] * this.alpha;\n      tg = source[1] * this.alpha;\n      tb = source[2] * this.alpha;\n\n      for (var i = 0; i < iLen; i += 4) {\n\n        r = data[i];\n        g = data[i + 1];\n        b = data[i + 2];\n\n        switch (this.mode) {\n          case 'multiply':\n            data[i] = r * tr / 255;\n            data[i + 1] = g * tg / 255;\n            data[i + 2] = b * tb / 255;\n            break;\n          case 'screen':\n            data[i] = 255 - (255 - r) * (255 - tr) / 255;\n            data[i + 1] = 255 - (255 - g) * (255 - tg) / 255;\n            data[i + 2] = 255 - (255 - b) * (255 - tb) / 255;\n            break;\n          case 'add':\n            data[i] = r + tr;\n            data[i + 1] = g + tg;\n            data[i + 2] = b + tb;\n            break;\n          case 'diff':\n          case 'difference':\n            data[i] = Math.abs(r - tr);\n            data[i + 1] = Math.abs(g - tg);\n            data[i + 2] = Math.abs(b - tb);\n            break;\n          case 'subtract':\n            data[i] = r - tr;\n            data[i + 1] = g - tg;\n            data[i + 2] = b - tb;\n            break;\n          case 'darken':\n            data[i] = Math.min(r, tr);\n            data[i + 1] = Math.min(g, tg);\n            data[i + 2] = Math.min(b, tb);\n            break;\n          case 'lighten':\n            data[i] = Math.max(r, tr);\n            data[i + 1] = Math.max(g, tg);\n            data[i + 2] = Math.max(b, tb);\n            break;\n          case 'overlay':\n            data[i] = tr < 128 ? (2 * r * tr / 255) : (255 - 2 * (255 - r) * (255 - tr) / 255);\n            data[i + 1] = tg < 128 ? (2 * g * tg / 255) : (255 - 2 * (255 - g) * (255 - tg) / 255);\n            data[i + 2] = tb < 128 ? (2 * b * tb / 255) : (255 - 2 * (255 - b) * (255 - tb) / 255);\n            break;\n          case 'exclusion':\n            data[i] = tr + r - ((2 * tr * r) / 255);\n            data[i + 1] = tg + g - ((2 * tg * g) / 255);\n            data[i + 2] = tb + b - ((2 * tb * b) / 255);\n            break;\n          case 'tint':\n            data[i] = tr + r * alpha1;\n            data[i + 1] = tg + g * alpha1;\n            data[i + 2] = tb + b * alpha1;\n        }\n      }\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uColor: gl.getUniformLocation(program, 'uColor'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      var source = new fabric.Color(this.color).getSource();\n      source[0] = this.alpha * source[0] / 255;\n      source[1] = this.alpha * source[1] / 255;\n      source[2] = this.alpha * source[2] / 255;\n      source[3] = this.alpha;\n      gl.uniform4fv(uniformLocations.uColor, source);\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @return {Object} Object representation of an instance\n     */\n    toObject: function() {\n      return {\n        type: this.type,\n        color: this.color,\n        mode: this.mode,\n        alpha: this.alpha\n      };\n    }\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.BlendColor} Instance of fabric.Image.filters.BlendColor\n   */\n  fabric.Image.filters.BlendColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n  'use strict';\n\n  var fabric = global.fabric,\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Image Blend filter class\n   * @class fabric.Image.filter.BlendImage\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @example\n   * var filter = new fabric.Image.filters.BlendColor({\n   *  color: '#000',\n   *  mode: 'multiply'\n   * });\n   *\n   * var filter = new fabric.Image.filters.BlendImage({\n   *  image: fabricImageObject,\n   *  mode: 'multiply',\n   *  alpha: 0.5\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   * canvas.renderAll();\n   */\n\n  filters.BlendImage = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.BlendImage.prototype */ {\n    type: 'BlendImage',\n\n    /**\n     * Color to make the blend operation with. default to a reddish color since black or white\n     * gives always strong result.\n     **/\n    image: null,\n\n    /**\n     * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n     * darken, lighten, overlay, exclusion, tint.\n     **/\n    mode: 'multiply',\n\n    /**\n     * alpha value. represent the strength of the blend image operation.\n     * not implemented.\n     **/\n    alpha: 1,\n\n    vertexSource: 'attribute vec2 aPosition;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'varying vec2 vTexCoord2;\\n' +\n      'uniform mat3 uTransformMatrix;\\n' +\n      'void main() {\\n' +\n        'vTexCoord = aPosition;\\n' +\n        'vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\\n' +\n        'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n      '}',\n\n    /**\n     * Fragment source for the Multiply program\n     */\n    fragmentSource: {\n      multiply: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform sampler2D uImage;\\n' +\n        'uniform vec4 uColor;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'varying vec2 vTexCoord2;\\n' +\n        'void main() {\\n' +\n          'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n          'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n          'color.rgba *= color2.rgba;\\n' +\n          'gl_FragColor = color;\\n' +\n        '}',\n      mask: 'precision highp float;\\n' +\n        'uniform sampler2D uTexture;\\n' +\n        'uniform sampler2D uImage;\\n' +\n        'uniform vec4 uColor;\\n' +\n        'varying vec2 vTexCoord;\\n' +\n        'varying vec2 vTexCoord2;\\n' +\n        'void main() {\\n' +\n          'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n          'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n          'color.a = color2.a;\\n' +\n          'gl_FragColor = color;\\n' +\n        '}',\n    },\n\n    /**\n     * Retrieves the cached shader.\n     * @param {Object} options\n     * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n     * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n     */\n    retrieveShader: function(options) {\n      var cacheKey = this.type + '_' + this.mode;\n      var shaderSource = this.fragmentSource[this.mode];\n      if (!options.programCache.hasOwnProperty(cacheKey)) {\n        options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n      }\n      return options.programCache[cacheKey];\n    },\n\n    applyToWebGL: function(options) {\n      // load texture to blend.\n      var gl = options.context,\n          texture = this.createTexture(options.filterBackend, this.image);\n      this.bindAdditionalTexture(gl, texture, gl.TEXTURE1);\n      this.callSuper('applyToWebGL', options);\n      this.unbindAdditionalTexture(gl, gl.TEXTURE1);\n    },\n\n    createTexture: function(backend, image) {\n      return backend.getCachedTexture(image.cacheKey, image._element);\n    },\n\n    /**\n     * Calculate a transformMatrix to adapt the image to blend over\n     * @param {Object} options\n     * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n     * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n     */\n    calculateMatrix: function() {\n      var image = this.image,\n          width = image._element.width,\n          height = image._element.height;\n      return [\n        1 / image.scaleX, 0, 0,\n        0, 1 / image.scaleY, 0,\n        -image.left / width, -image.top / height, 1\n      ];\n    },\n\n    /**\n     * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n     */\n    applyTo2d: function(options) {\n      var imageData = options.imageData,\n          resources = options.filterBackend.resources,\n          data = imageData.data, iLen = data.length,\n          width = imageData.width,\n          height = imageData.height,\n          tr, tg, tb, ta,\n          r, g, b, a,\n          canvas1, context, image = this.image, blendData;\n\n      if (!resources.blendImage) {\n        resources.blendImage = fabric.util.createCanvasElement();\n      }\n      canvas1 = resources.blendImage;\n      context = canvas1.getContext('2d');\n      if (canvas1.width !== width || canvas1.height !== height) {\n        canvas1.width = width;\n        canvas1.height = height;\n      }\n      else {\n        context.clearRect(0, 0, width, height);\n      }\n      context.setTransform(image.scaleX, 0, 0, image.scaleY, image.left, image.top);\n      context.drawImage(image._element, 0, 0, width, height);\n      blendData = context.getImageData(0, 0, width, height).data;\n      for (var i = 0; i < iLen; i += 4) {\n\n        r = data[i];\n        g = data[i + 1];\n        b = data[i + 2];\n        a = data[i + 3];\n\n        tr = blendData[i];\n        tg = blendData[i + 1];\n        tb = blendData[i + 2];\n        ta = blendData[i + 3];\n\n        switch (this.mode) {\n          case 'multiply':\n            data[i] = r * tr / 255;\n            data[i + 1] = g * tg / 255;\n            data[i + 2] = b * tb / 255;\n            data[i + 3] = a * ta / 255;\n            break;\n          case 'mask':\n            data[i + 3] = ta;\n            break;\n        }\n      }\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uTransformMatrix: gl.getUniformLocation(program, 'uTransformMatrix'),\n        uImage: gl.getUniformLocation(program, 'uImage'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      var matrix = this.calculateMatrix();\n      gl.uniform1i(uniformLocations.uImage, 1); // texture unit 1.\n      gl.uniformMatrix3fv(uniformLocations.uTransformMatrix, false, matrix);\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @return {Object} Object representation of an instance\n     */\n    toObject: function() {\n      return {\n        type: this.type,\n        image: this.image && this.image.toObject(),\n        mode: this.mode,\n        alpha: this.alpha\n      };\n    }\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {function} callback to be invoked after filter creation\n   * @return {fabric.Image.filters.BlendImage} Instance of fabric.Image.filters.BlendImage\n   */\n  fabric.Image.filters.BlendImage.fromObject = function(object, callback) {\n    fabric.Image.fromObject(object.image, function(image) {\n      var options = fabric.util.object.clone(object);\n      options.image = image;\n      callback(new fabric.Image.filters.BlendImage(options));\n    });\n  };\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }), pow = Math.pow, floor = Math.floor,\n      sqrt = Math.sqrt, abs = Math.abs, round = Math.round, sin = Math.sin,\n      ceil = Math.ceil,\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Resize image filter class\n   * @class fabric.Image.filters.Resize\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Resize();\n   * object.filters.push(filter);\n   * object.applyFilters(canvas.renderAll.bind(canvas));\n   */\n  filters.Resize = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Resize.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Resize',\n\n    /**\n     * Resize type\n     * for webgl resizeType is just lanczos, for canvas2d can be:\n     * bilinear, hermite, sliceHack, lanczos.\n     * @param {String} resizeType\n     * @default\n     */\n    resizeType: 'hermite',\n\n    /**\n     * Scale factor for resizing, x axis\n     * @param {Number} scaleX\n     * @default\n     */\n    scaleX: 1,\n\n    /**\n     * Scale factor for resizing, y axis\n     * @param {Number} scaleY\n     * @default\n     */\n    scaleY: 1,\n\n    /**\n     * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos\n     * @param {Number} lanczosLobes\n     * @default\n     */\n    lanczosLobes: 3,\n\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uDelta: gl.getUniformLocation(program, 'uDelta'),\n        uTaps: gl.getUniformLocation(program, 'uTaps'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      gl.uniform2fv(uniformLocations.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]);\n      gl.uniform1fv(uniformLocations.uTaps, this.taps);\n    },\n\n    /**\n     * Retrieves the cached shader.\n     * @param {Object} options\n     * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n     * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n     */\n    retrieveShader: function(options) {\n      var filterWindow = this.getFilterWindow(), cacheKey = this.type + '_' + filterWindow;\n      if (!options.programCache.hasOwnProperty(cacheKey)) {\n        var fragmentShader = this.generateShader(filterWindow);\n        options.programCache[cacheKey] = this.createProgram(options.context, fragmentShader);\n      }\n      return options.programCache[cacheKey];\n    },\n\n    getFilterWindow: function() {\n      var scale = this.tempScale;\n      return Math.ceil(this.lanczosLobes / scale);\n    },\n\n    getTaps: function() {\n      var lobeFunction = this.lanczosCreate(this.lanczosLobes), scale = this.tempScale,\n          filterWindow = this.getFilterWindow(), taps = new Array(filterWindow);\n      for (var i = 1; i <= filterWindow; i++) {\n        taps[i - 1] = lobeFunction(i * scale);\n      }\n      return taps;\n    },\n\n    /**\n     * Generate vertex and shader sources from the necessary steps numbers\n     * @param {Number} filterWindow\n     */\n    generateShader: function(filterWindow) {\n      var offsets = new Array(filterWindow),\n          fragmentShader = this.fragmentSourceTOP, filterWindow;\n\n      for (var i = 1; i <= filterWindow; i++) {\n        offsets[i - 1] = i + '.0 * uDelta';\n      }\n\n      fragmentShader += 'uniform float uTaps[' + filterWindow + '];\\n';\n      fragmentShader += 'void main() {\\n';\n      fragmentShader += '  vec4 color = texture2D(uTexture, vTexCoord);\\n';\n      fragmentShader += '  float sum = 1.0;\\n';\n\n      offsets.forEach(function(offset, i) {\n        fragmentShader += '  color += texture2D(uTexture, vTexCoord + ' + offset + ') * uTaps[' + i + '];\\n';\n        fragmentShader += '  color += texture2D(uTexture, vTexCoord - ' + offset + ') * uTaps[' + i + '];\\n';\n        fragmentShader += '  sum += 2.0 * uTaps[' + i + '];\\n';\n      });\n      fragmentShader += '  gl_FragColor = color / sum;\\n';\n      fragmentShader += '}';\n      return fragmentShader;\n    },\n\n    fragmentSourceTOP: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform vec2 uDelta;\\n' +\n      'varying vec2 vTexCoord;\\n',\n\n    /**\n     * Apply the resize filter to the image\n     * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n     *\n     * @param {Object} options\n     * @param {Number} options.passes The number of filters remaining to be executed\n     * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n     * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n     * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n     * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n     * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n     */\n    applyTo: function(options) {\n      if (options.webgl) {\n        options.passes++;\n        this.width = options.sourceWidth;\n        this.horizontal = true;\n        this.dW = Math.round(this.width * this.scaleX);\n        this.dH = options.sourceHeight;\n        this.tempScale = this.dW / this.width;\n        this.taps = this.getTaps();\n        options.destinationWidth = this.dW;\n        this._setupFrameBuffer(options);\n        this.applyToWebGL(options);\n        this._swapTextures(options);\n        options.sourceWidth = options.destinationWidth;\n\n        this.height = options.sourceHeight;\n        this.horizontal = false;\n        this.dH = Math.round(this.height * this.scaleY);\n        this.tempScale = this.dH / this.height;\n        this.taps = this.getTaps();\n        options.destinationHeight = this.dH;\n        this._setupFrameBuffer(options);\n        this.applyToWebGL(options);\n        this._swapTextures(options);\n        options.sourceHeight = options.destinationHeight;\n      }\n      else {\n        this.applyTo2d(options);\n      }\n    },\n\n    isNeutralState: function() {\n      return this.scaleX === 1 && this.scaleY === 1;\n    },\n\n    lanczosCreate: function(lobes) {\n      return function(x) {\n        if (x >= lobes || x <= -lobes) {\n          return 0.0;\n        }\n        if (x < 1.19209290E-07 && x > -1.19209290E-07) {\n          return 1.0;\n        }\n        x *= Math.PI;\n        var xx = x / lobes;\n        return (sin(x) / x) * sin(xx) / xx;\n      };\n    },\n\n    /**\n     * Applies filter to canvas element\n     * @memberOf fabric.Image.filters.Resize.prototype\n     * @param {Object} canvasEl Canvas element to apply filter to\n     * @param {Number} scaleX\n     * @param {Number} scaleY\n     */\n    applyTo2d: function(options) {\n      var imageData = options.imageData,\n          scaleX = this.scaleX,\n          scaleY = this.scaleY;\n\n      this.rcpScaleX = 1 / scaleX;\n      this.rcpScaleY = 1 / scaleY;\n\n      var oW = imageData.width, oH = imageData.height,\n          dW = round(oW * scaleX), dH = round(oH * scaleY),\n          newData;\n\n      if (this.resizeType === 'sliceHack') {\n        newData = this.sliceByTwo(options, oW, oH, dW, dH);\n      }\n      else if (this.resizeType === 'hermite') {\n        newData = this.hermiteFastResize(options, oW, oH, dW, dH);\n      }\n      else if (this.resizeType === 'bilinear') {\n        newData = this.bilinearFiltering(options, oW, oH, dW, dH);\n      }\n      else if (this.resizeType === 'lanczos') {\n        newData = this.lanczosResize(options, oW, oH, dW, dH);\n      }\n      options.imageData = newData;\n    },\n\n    /**\n     * Filter sliceByTwo\n     * @param {Object} canvasEl Canvas element to apply filter to\n     * @param {Number} oW Original Width\n     * @param {Number} oH Original Height\n     * @param {Number} dW Destination Width\n     * @param {Number} dH Destination Height\n     * @returns {ImageData}\n     */\n    sliceByTwo: function(options, oW, oH, dW, dH) {\n      var imageData = options.imageData,\n          mult = 0.5, doneW = false, doneH = false, stepW = oW * mult,\n          stepH = oH * mult, resources = fabric.filterBackend.resources,\n          tmpCanvas, ctx, sX = 0, sY = 0, dX = oW, dY = 0;\n      if (!resources.sliceByTwo) {\n        resources.sliceByTwo = document.createElement('canvas');\n      }\n      tmpCanvas = resources.sliceByTwo;\n      if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {\n        tmpCanvas.width = oW * 1.5;\n        tmpCanvas.height = oH;\n      }\n      ctx = tmpCanvas.getContext('2d');\n      ctx.clearRect(0, 0, oW * 1.5, oH);\n      ctx.putImageData(imageData, 0, 0);\n\n      dW = floor(dW);\n      dH = floor(dH);\n\n      while (!doneW || !doneH) {\n        oW = stepW;\n        oH = stepH;\n        if (dW < floor(stepW * mult)) {\n          stepW = floor(stepW * mult);\n        }\n        else {\n          stepW = dW;\n          doneW = true;\n        }\n        if (dH < floor(stepH * mult)) {\n          stepH = floor(stepH * mult);\n        }\n        else {\n          stepH = dH;\n          doneH = true;\n        }\n        ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);\n        sX = dX;\n        sY = dY;\n        dY += stepH;\n      }\n      return ctx.getImageData(sX, sY, dW, dH);\n    },\n\n    /**\n     * Filter lanczosResize\n     * @param {Object} canvasEl Canvas element to apply filter to\n     * @param {Number} oW Original Width\n     * @param {Number} oH Original Height\n     * @param {Number} dW Destination Width\n     * @param {Number} dH Destination Height\n     * @returns {ImageData}\n     */\n    lanczosResize: function(options, oW, oH, dW, dH) {\n\n      function process(u) {\n        var v, i, weight, idx, a, red, green,\n            blue, alpha, fX, fY;\n        center.x = (u + 0.5) * ratioX;\n        icenter.x = floor(center.x);\n        for (v = 0; v < dH; v++) {\n          center.y = (v + 0.5) * ratioY;\n          icenter.y = floor(center.y);\n          a = 0; red = 0; green = 0; blue = 0; alpha = 0;\n          for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {\n            if (i < 0 || i >= oW) {\n              continue;\n            }\n            fX = floor(1000 * abs(i - center.x));\n            if (!cacheLanc[fX]) {\n              cacheLanc[fX] = { };\n            }\n            for (var j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {\n              if (j < 0 || j >= oH) {\n                continue;\n              }\n              fY = floor(1000 * abs(j - center.y));\n              if (!cacheLanc[fX][fY]) {\n                cacheLanc[fX][fY] = lanczos(sqrt(pow(fX * rcpRatioX, 2) + pow(fY * rcpRatioY, 2)) / 1000);\n              }\n              weight = cacheLanc[fX][fY];\n              if (weight > 0) {\n                idx = (j * oW + i) * 4;\n                a += weight;\n                red += weight * srcData[idx];\n                green += weight * srcData[idx + 1];\n                blue += weight * srcData[idx + 2];\n                alpha += weight * srcData[idx + 3];\n              }\n            }\n          }\n          idx = (v * dW + u) * 4;\n          destData[idx] = red / a;\n          destData[idx + 1] = green / a;\n          destData[idx + 2] = blue / a;\n          destData[idx + 3] = alpha / a;\n        }\n\n        if (++u < dW) {\n          return process(u);\n        }\n        else {\n          return destImg;\n        }\n      }\n\n      var srcData = options.imageData.data,\n          destImg = options.ctx.createImageData(dW, dH),\n          destData = destImg.data,\n          lanczos = this.lanczosCreate(this.lanczosLobes),\n          ratioX = this.rcpScaleX, ratioY = this.rcpScaleY,\n          rcpRatioX = 2 / this.rcpScaleX, rcpRatioY = 2 / this.rcpScaleY,\n          range2X = ceil(ratioX * this.lanczosLobes / 2),\n          range2Y = ceil(ratioY * this.lanczosLobes / 2),\n          cacheLanc = { }, center = { }, icenter = { };\n\n      return process(0);\n    },\n\n    /**\n     * bilinearFiltering\n     * @param {Object} canvasEl Canvas element to apply filter to\n     * @param {Number} oW Original Width\n     * @param {Number} oH Original Height\n     * @param {Number} dW Destination Width\n     * @param {Number} dH Destination Height\n     * @returns {ImageData}\n     */\n    bilinearFiltering: function(options, oW, oH, dW, dH) {\n      var a, b, c, d, x, y, i, j, xDiff, yDiff, chnl,\n          color, offset = 0, origPix, ratioX = this.rcpScaleX,\n          ratioY = this.rcpScaleY,\n          w4 = 4 * (oW - 1), img = options.imageData,\n          pixels = img.data, destImage = options.ctx.createImageData(dW, dH),\n          destPixels = destImage.data;\n      for (i = 0; i < dH; i++) {\n        for (j = 0; j < dW; j++) {\n          x = floor(ratioX * j);\n          y = floor(ratioY * i);\n          xDiff = ratioX * j - x;\n          yDiff = ratioY * i - y;\n          origPix = 4 * (y * oW + x);\n\n          for (chnl = 0; chnl < 4; chnl++) {\n            a = pixels[origPix + chnl];\n            b = pixels[origPix + 4 + chnl];\n            c = pixels[origPix + w4 + chnl];\n            d = pixels[origPix + w4 + 4 + chnl];\n            color = a * (1 - xDiff) * (1 - yDiff) + b * xDiff * (1 - yDiff) +\n                    c * yDiff * (1 - xDiff) + d * xDiff * yDiff;\n            destPixels[offset++] = color;\n          }\n        }\n      }\n      return destImage;\n    },\n\n    /**\n     * hermiteFastResize\n     * @param {Object} canvasEl Canvas element to apply filter to\n     * @param {Number} oW Original Width\n     * @param {Number} oH Original Height\n     * @param {Number} dW Destination Width\n     * @param {Number} dH Destination Height\n     * @returns {ImageData}\n     */\n    hermiteFastResize: function(options, oW, oH, dW, dH) {\n      var ratioW = this.rcpScaleX, ratioH = this.rcpScaleY,\n          ratioWHalf = ceil(ratioW / 2),\n          ratioHHalf = ceil(ratioH / 2),\n          img = options.imageData, data = img.data,\n          img2 = options.ctx.createImageData(dW, dH), data2 = img2.data;\n      for (var j = 0; j < dH; j++) {\n        for (var i = 0; i < dW; i++) {\n          var x2 = (i + j * dW) * 4, weight = 0, weights = 0, weightsAlpha = 0,\n              gxR = 0, gxG = 0, gxB = 0, gxA = 0, centerY = (j + 0.5) * ratioH;\n          for (var yy = floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {\n            var dy = abs(centerY - (yy + 0.5)) / ratioHHalf,\n                centerX = (i + 0.5) * ratioW, w0 = dy * dy;\n            for (var xx = floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {\n              var dx = abs(centerX - (xx + 0.5)) / ratioWHalf,\n                  w = sqrt(w0 + dx * dx);\n              /* eslint-disable max-depth */\n              if (w > 1 && w < -1) {\n                continue;\n              }\n              //hermite filter\n              weight = 2 * w * w * w - 3 * w * w + 1;\n              if (weight > 0) {\n                dx = 4 * (xx + yy * oW);\n                //alpha\n                gxA += weight * data[dx + 3];\n                weightsAlpha += weight;\n                //colors\n                if (data[dx + 3] < 255) {\n                  weight = weight * data[dx + 3] / 250;\n                }\n                gxR += weight * data[dx];\n                gxG += weight * data[dx + 1];\n                gxB += weight * data[dx + 2];\n                weights += weight;\n              }\n              /* eslint-enable max-depth */\n            }\n          }\n          data2[x2] = gxR / weights;\n          data2[x2 + 1] = gxG / weights;\n          data2[x2 + 2] = gxB / weights;\n          data2[x2 + 3] = gxA / weightsAlpha;\n        }\n      }\n      return img2;\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @return {Object} Object representation of an instance\n     */\n    toObject: function() {\n      return {\n        type: this.type,\n        scaleX: this.scaleX,\n        scaleY: this.scaleY,\n        resizeType: this.resizeType,\n        lanczosLobes: this.lanczosLobes\n      };\n    }\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {Function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Resize} Instance of fabric.Image.filters.Resize\n   */\n  fabric.Image.filters.Resize.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Contrast filter class\n   * @class fabric.Image.filters.Contrast\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.Contrast#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Contrast({\n   *   contrast: 0.25\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   */\n  filters.Contrast = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Contrast.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Contrast',\n\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform float uContrast;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'void main() {\\n' +\n        'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n        'float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\\n' +\n        'color.rgb = contrastF * (color.rgb - 0.5) + 0.5;\\n' +\n        'gl_FragColor = color;\\n' +\n      '}',\n\n    /**\n     * contrast value, range from -1 to 1.\n     * @param {Number} contrast\n     * @default 0\n     */\n    contrast: 0,\n\n    mainParameter: 'contrast',\n\n    /**\n     * Constructor\n     * @memberOf fabric.Image.filters.Contrast.prototype\n     * @param {Object} [options] Options object\n     * @param {Number} [options.contrast=0] Value to contrast the image up (-1...1)\n     */\n\n    /**\n      * Apply the Contrast operation to a Uint8Array representing the pixels of an image.\n      *\n      * @param {Object} options\n      * @param {ImageData} options.imageData The Uint8Array to be filtered.\n      */\n    applyTo2d: function(options) {\n      if (this.contrast === 0) {\n        return;\n      }\n      var imageData = options.imageData, i, len,\n          data = imageData.data, len = data.length,\n          contrast = Math.floor(this.contrast * 255),\n          contrastF = 259 * (contrast + 255) / (255 * (259 - contrast));\n\n      for (i = 0; i < len; i += 4) {\n        data[i] = contrastF * (data[i] - 128) + 128;\n        data[i + 1] = contrastF * (data[i + 1] - 128) + 128;\n        data[i + 2] = contrastF * (data[i + 2] - 128) + 128;\n      }\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uContrast: gl.getUniformLocation(program, 'uContrast'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      gl.uniform1f(uniformLocations.uContrast, this.contrast);\n    },\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Contrast} Instance of fabric.Image.filters.Contrast\n   */\n  fabric.Image.filters.Contrast.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Saturate filter class\n   * @class fabric.Image.filters.Saturation\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.Saturation#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Saturation({\n   *   saturation: 1\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   */\n  filters.Saturation = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Saturation.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Saturation',\n\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform float uSaturation;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'void main() {\\n' +\n        'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n        'float rgMax = max(color.r, color.g);\\n' +\n        'float rgbMax = max(rgMax, color.b);\\n' +\n        'color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\\n' +\n        'color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\\n' +\n        'color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\\n' +\n        'gl_FragColor = color;\\n' +\n      '}',\n\n    /**\n     * Saturation value, from -1 to 1.\n     * Increases/decreases the color saturation.\n     * A value of 0 has no effect.\n     * \n     * @param {Number} saturation\n     * @default\n     */\n    saturation: 0,\n\n    mainParameter: 'saturation',\n\n    /**\n     * Constructor\n     * @memberOf fabric.Image.filters.Saturate.prototype\n     * @param {Object} [options] Options object\n     * @param {Number} [options.saturate=0] Value to saturate the image (-1...1)\n     */\n\n    /**\n     * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n     */\n    applyTo2d: function(options) {\n      if (this.saturation === 0) {\n        return;\n      }\n      var imageData = options.imageData,\n          data = imageData.data, len = data.length,\n          adjust = -this.saturation, i, max;\n\n      for (i = 0; i < len; i += 4) {\n        max = Math.max(data[i], data[i + 1], data[i + 2]);\n        data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;\n        data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;\n        data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;\n      }\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uSaturation: gl.getUniformLocation(program, 'uSaturation'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      gl.uniform1f(uniformLocations.uSaturation, -this.saturation);\n    },\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {Function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Saturation} Instance of fabric.Image.filters.Saturate\n   */\n  fabric.Image.filters.Saturation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Vibrance filter class\n   * @class fabric.Image.filters.Vibrance\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.Vibrance#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Vibrance({\n   *   vibrance: 1\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   */\n  filters.Vibrance = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Vibrance.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Vibrance',\n\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform float uVibrance;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'void main() {\\n' +\n        'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n        'float max = max(color.r, max(color.g, color.b));\\n' +\n        'float avg = (color.r + color.g + color.b) / 3.0;\\n' +\n        'float amt = (abs(max - avg) * 2.0) * uVibrance;\\n' +\n        'color.r += max != color.r ? (max - color.r) * amt : 0.00;\\n' +\n        'color.g += max != color.g ? (max - color.g) * amt : 0.00;\\n' +\n        'color.b += max != color.b ? (max - color.b) * amt : 0.00;\\n' +\n        'gl_FragColor = color;\\n' +\n      '}',\n\n    /**\n     * Vibrance value, from -1 to 1.\n     * Increases/decreases the saturation of more muted colors with less effect on saturated colors.\n     * A value of 0 has no effect.\n     * \n     * @param {Number} vibrance\n     * @default\n     */\n    vibrance: 0,\n\n    mainParameter: 'vibrance',\n\n    /**\n     * Constructor\n     * @memberOf fabric.Image.filters.Vibrance.prototype\n     * @param {Object} [options] Options object\n     * @param {Number} [options.vibrance=0] Vibrance value for the image (between -1 and 1)\n     */\n\n    /**\n     * Apply the Vibrance operation to a Uint8ClampedArray representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n     */\n    applyTo2d: function(options) {\n      if (this.vibrance === 0) {\n        return;\n      }\n      var imageData = options.imageData,\n          data = imageData.data, len = data.length,\n          adjust = -this.vibrance, i, max, avg, amt;\n\n      for (i = 0; i < len; i += 4) {\n        max = Math.max(data[i], data[i + 1], data[i + 2]);\n        avg = (data[i] + data[i + 1] + data[i + 2]) / 3;\n        amt = ((Math.abs(max - avg) * 2 / 255) * adjust);\n        data[i] += max !== data[i] ? (max - data[i]) * amt : 0;\n        data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * amt : 0;\n        data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * amt : 0;\n      }\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uVibrance: gl.getUniformLocation(program, 'uVibrance'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      gl.uniform1f(uniformLocations.uVibrance, -this.vibrance);\n    },\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {Function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Vibrance} Instance of fabric.Image.filters.Vibrance\n   */\n  fabric.Image.filters.Vibrance.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Blur filter class\n   * @class fabric.Image.filters.Blur\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.Blur#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Blur({\n   *   blur: 0.5\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   * canvas.renderAll();\n   */\n  filters.Blur = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blur.prototype */ {\n\n    type: 'Blur',\n\n    /*\n'gl_FragColor = vec4(0.0);',\n'gl_FragColor += texture2D(texture, vTexCoord + -7 * uDelta)*0.0044299121055113265;',\n'gl_FragColor += texture2D(texture, vTexCoord + -6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + -5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + -4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + -3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + -2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + -1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord              )*0.159576912161;',\n'gl_FragColor += texture2D(texture, vTexCoord + 1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord + 2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + 3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + 4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + 5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + 6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + 7 * uDelta)*0.0044299121055113265;',\n*/\n\n    /* eslint-disable max-len */\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform vec2 uDelta;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'const float nSamples = 15.0;\\n' +\n      'vec3 v3offset = vec3(12.9898, 78.233, 151.7182);\\n' +\n      'float random(vec3 scale) {\\n' +\n        /* use the fragment position for a different seed per-pixel */\n        'return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\\n' +\n      '}\\n' +\n      'void main() {\\n' +\n        'vec4 color = vec4(0.0);\\n' +\n        'float total = 0.0;\\n' +\n        'float offset = random(v3offset);\\n' +\n        'for (float t = -nSamples; t <= nSamples; t++) {\\n' +\n          'float percent = (t + offset - 0.5) / nSamples;\\n' +\n          'float weight = 1.0 - abs(percent);\\n' +\n          'color += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\\n' +\n          'total += weight;\\n' +\n        '}\\n' +\n        'gl_FragColor = color / total;\\n' +\n      '}',\n    /* eslint-enable max-len */\n\n    /**\n     * blur value, in percentage of image dimensions.\n     * specific to keep the image blur constant at different resolutions\n     * range between 0 and 1.\n     */\n    blur: 0,\n\n    mainParameter: 'blur',\n\n    applyTo: function(options) {\n      if (options.webgl) {\n        // this aspectRatio is used to give the same blur to vertical and horizontal\n        this.aspectRatio = options.sourceWidth / options.sourceHeight;\n        options.passes++;\n        this._setupFrameBuffer(options);\n        this.horizontal = true;\n        this.applyToWebGL(options);\n        this._swapTextures(options);\n        this._setupFrameBuffer(options);\n        this.horizontal = false;\n        this.applyToWebGL(options);\n        this._swapTextures(options);\n      }\n      else {\n        this.applyTo2d(options);\n      }\n    },\n\n    applyTo2d: function(options) {\n      // paint canvasEl with current image data.\n      //options.ctx.putImageData(options.imageData, 0, 0);\n      options.imageData = this.simpleBlur(options);\n    },\n\n    simpleBlur: function(options) {\n      var resources = options.filterBackend.resources, canvas1, canvas2,\n          width = options.imageData.width,\n          height = options.imageData.height;\n\n      if (!resources.blurLayer1) {\n        resources.blurLayer1 = fabric.util.createCanvasElement();\n        resources.blurLayer2 = fabric.util.createCanvasElement();\n      }\n      canvas1 = resources.blurLayer1;\n      canvas2 = resources.blurLayer2;\n      if (canvas1.width !== width || canvas1.height !== height) {\n        canvas2.width = canvas1.width = width;\n        canvas2.height = canvas1.height = height;\n      }\n      var ctx1 = canvas1.getContext('2d'),\n          ctx2 = canvas2.getContext('2d'),\n          nSamples = 15,\n          random, percent, j, i,\n          blur = this.blur * 0.06 * 0.5;\n\n      // load first canvas\n      ctx1.putImageData(options.imageData, 0, 0);\n      ctx2.clearRect(0, 0, width, height);\n\n      for (i = -nSamples; i <= nSamples; i++) {\n        random = (Math.random() - 0.5) / 4;\n        percent = i / nSamples;\n        j = blur * percent * width + random;\n        ctx2.globalAlpha = 1 - Math.abs(percent);\n        ctx2.drawImage(canvas1, j, random);\n        ctx1.drawImage(canvas2, 0, 0);\n        ctx2.globalAlpha = 1;\n        ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n      }\n      for (i = -nSamples; i <= nSamples; i++) {\n        random = (Math.random() - 0.5) / 4;\n        percent = i / nSamples;\n        j = blur * percent * height + random;\n        ctx2.globalAlpha = 1 - Math.abs(percent);\n        ctx2.drawImage(canvas1, random, j);\n        ctx1.drawImage(canvas2, 0, 0);\n        ctx2.globalAlpha = 1;\n        ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n      }\n      options.ctx.drawImage(canvas1, 0, 0);\n      var newImageData = options.ctx.getImageData(0, 0, canvas1.width, canvas1.height);\n      ctx1.globalAlpha = 1;\n      ctx1.clearRect(0, 0, canvas1.width, canvas1.height);\n      return newImageData;\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        delta: gl.getUniformLocation(program, 'uDelta'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      var delta = this.chooseRightDelta();\n      gl.uniform2fv(uniformLocations.delta, delta);\n    },\n\n    /**\n     * choose right value of image percentage to blur with\n     * @returns {Array} a numeric array with delta values\n     */\n    chooseRightDelta: function() {\n      var blurScale = 1, delta = [0, 0], blur;\n      if (this.horizontal) {\n        if (this.aspectRatio > 1) {\n          // image is wide, i want to shrink radius horizontal\n          blurScale = 1 / this.aspectRatio;\n        }\n      }\n      else {\n        if (this.aspectRatio < 1) {\n          // image is tall, i want to shrink radius vertical\n          blurScale = this.aspectRatio;\n        }\n      }\n      blur = blurScale * this.blur * 0.12;\n      if (this.horizontal) {\n        delta[0] = blur;\n      }\n      else {\n        delta[1] = blur;\n      }\n      return delta;\n    },\n  });\n\n  /**\n   * Deserialize a JSON definition of a BlurFilter into a concrete instance.\n   */\n  filters.Blur.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * Gamma filter class\n   * @class fabric.Image.filters.Gamma\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.Gamma#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.Gamma({\n   *   gamma: [1, 0.5, 2.1]\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   */\n  filters.Gamma = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Gamma.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'Gamma',\n\n    fragmentSource: 'precision highp float;\\n' +\n      'uniform sampler2D uTexture;\\n' +\n      'uniform vec3 uGamma;\\n' +\n      'varying vec2 vTexCoord;\\n' +\n      'void main() {\\n' +\n        'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n        'vec3 correction = (1.0 / uGamma);\\n' +\n        'color.r = pow(color.r, correction.r);\\n' +\n        'color.g = pow(color.g, correction.g);\\n' +\n        'color.b = pow(color.b, correction.b);\\n' +\n        'gl_FragColor = color;\\n' +\n        'gl_FragColor.rgb *= color.a;\\n' +\n      '}',\n\n    /**\n     * Gamma array value, from 0.01 to 2.2.\n     * @param {Array} gamma\n     * @default\n     */\n    gamma: [1, 1, 1],\n\n    /**\n     * Describe the property that is the filter parameter\n     * @param {String} m\n     * @default\n     */\n    mainParameter: 'gamma',\n\n    /**\n     * Constructor\n     * @param {Object} [options] Options object\n     */\n    initialize: function(options) {\n      this.gamma = [1, 1, 1];\n      filters.BaseFilter.prototype.initialize.call(this, options);\n    },\n\n    /**\n     * Apply the Gamma operation to a Uint8Array representing the pixels of an image.\n     *\n     * @param {Object} options\n     * @param {ImageData} options.imageData The Uint8Array to be filtered.\n     */\n    applyTo2d: function(options) {\n      var imageData = options.imageData, data = imageData.data,\n          gamma = this.gamma, len = data.length,\n          rInv = 1 / gamma[0], gInv = 1 / gamma[1],\n          bInv = 1 / gamma[2], i;\n\n      if (!this.rVals) {\n        // eslint-disable-next-line\n        this.rVals = new Uint8Array(256);\n        // eslint-disable-next-line\n        this.gVals = new Uint8Array(256);\n        // eslint-disable-next-line\n        this.bVals = new Uint8Array(256);\n      }\n\n      // This is an optimization - pre-compute a look-up table for each color channel\n      // instead of performing these pow calls for each pixel in the image.\n      for (i = 0, len = 256; i < len; i++) {\n        this.rVals[i] = Math.pow(i / 255, rInv) * 255;\n        this.gVals[i] = Math.pow(i / 255, gInv) * 255;\n        this.bVals[i] = Math.pow(i / 255, bInv) * 255;\n      }\n      for (i = 0, len = data.length; i < len; i += 4) {\n        data[i] = this.rVals[data[i]];\n        data[i + 1] = this.gVals[data[i + 1]];\n        data[i + 2] = this.bVals[data[i + 2]];\n      }\n    },\n\n    /**\n     * Return WebGL uniform locations for this filter's shader.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {WebGLShaderProgram} program This filter's compiled shader program.\n     */\n    getUniformLocations: function(gl, program) {\n      return {\n        uGamma: gl.getUniformLocation(program, 'uGamma'),\n      };\n    },\n\n    /**\n     * Send data from this filter to its shader program's uniforms.\n     *\n     * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n     * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n     */\n    sendUniformData: function(gl, uniformLocations) {\n      gl.uniform3fv(uniformLocations.uGamma, this.gamma);\n    },\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.Gamma} Instance of fabric.Image.filters.Gamma\n   */\n  fabric.Image.filters.Gamma.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * A container class that knows how to apply a sequence of filters to an input image.\n   */\n  filters.Composed = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Composed.prototype */ {\n\n    type: 'Composed',\n\n    /**\n     * A non sparse array of filters to apply\n     */\n    subFilters: [],\n\n    /**\n     * Constructor\n     * @param {Object} [options] Options object\n     */\n    initialize: function(options) {\n      this.callSuper('initialize', options);\n      // create a new array instead mutating the prototype with push\n      this.subFilters = this.subFilters.slice(0);\n    },\n\n    /**\n     * Apply this container's filters to the input image provided.\n     *\n     * @param {Object} options\n     * @param {Number} options.passes The number of filters remaining to be applied.\n     */\n    applyTo: function(options) {\n      options.passes += this.subFilters.length - 1;\n      this.subFilters.forEach(function(filter) {\n        filter.applyTo(options);\n      });\n    },\n\n    /**\n     * Serialize this filter into JSON.\n     *\n     * @returns {Object} A JSON representation of this filter.\n     */\n    toObject: function() {\n      return fabric.util.object.extend(this.callSuper('toObject'), {\n        subFilters: this.subFilters.map(function(filter) { return filter.toObject(); }),\n      });\n    },\n\n    isNeutralState: function() {\n      return !this.subFilters.some(function(filter) { return !filter.isNeutralState(); });\n    }\n  });\n\n  /**\n   * Deserialize a JSON definition of a ComposedFilter into a concrete instance.\n   */\n  fabric.Image.filters.Composed.fromObject = function(object, callback) {\n    var filters = object.subFilters || [],\n        subFilters = filters.map(function(filter) {\n          return new fabric.Image.filters[filter.type](filter);\n        }),\n        instance = new fabric.Image.filters.Composed({ subFilters: subFilters });\n    callback && callback(instance);\n    return instance;\n  };\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric  = global.fabric || (global.fabric = { }),\n      filters = fabric.Image.filters,\n      createClass = fabric.util.createClass;\n\n  /**\n   * HueRotation filter class\n   * @class fabric.Image.filters.HueRotation\n   * @memberOf fabric.Image.filters\n   * @extends fabric.Image.filters.BaseFilter\n   * @see {@link fabric.Image.filters.HueRotation#initialize} for constructor definition\n   * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n   * @example\n   * var filter = new fabric.Image.filters.HueRotation({\n   *   rotation: -0.5\n   * });\n   * object.filters.push(filter);\n   * object.applyFilters();\n   */\n  filters.HueRotation = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.HueRotation.prototype */ {\n\n    /**\n     * Filter type\n     * @param {String} type\n     * @default\n     */\n    type: 'HueRotation',\n\n    /**\n     * HueRotation value, from -1 to 1.\n     * the unit is radians\n     * @param {Number} myParameter\n     * @default\n     */\n    rotation: 0,\n\n    /**\n     * Describe the property that is the filter parameter\n     * @param {String} m\n     * @default\n     */\n    mainParameter: 'rotation',\n\n    calculateMatrix: function() {\n      var rad = this.rotation * Math.PI, cos = fabric.util.cos(rad), sin = fabric.util.sin(rad),\n          aThird = 1 / 3, aThirdSqtSin = Math.sqrt(aThird) * sin, OneMinusCos = 1 - cos;\n      this.matrix = [\n        1, 0, 0, 0, 0,\n        0, 1, 0, 0, 0,\n        0, 0, 1, 0, 0,\n        0, 0, 0, 1, 0\n      ];\n      this.matrix[0] = cos + OneMinusCos / 3;\n      this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin;\n      this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin;\n      this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin;\n      this.matrix[6] = cos + aThird * OneMinusCos;\n      this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin;\n      this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin;\n      this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin;\n      this.matrix[12] = cos + aThird * OneMinusCos;\n    },\n\n    /**\n     * HueRotation isNeutralState implementation\n     * Used only in image applyFilters to discard filters that will not have an effect\n     * on the image\n     * @param {Object} options\n     **/\n    isNeutralState: function(options) {\n      this.calculateMatrix();\n      return filters.BaseFilter.prototype.isNeutralState.call(this, options);\n    },\n\n    /**\n     * Apply this filter to the input image data provided.\n     *\n     * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n     *\n     * @param {Object} options\n     * @param {Number} options.passes The number of filters remaining to be executed\n     * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n     * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n     * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n     * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n     * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n     */\n    applyTo: function(options) {\n      this.calculateMatrix();\n      filters.BaseFilter.prototype.applyTo.call(this, options);\n    },\n\n  });\n\n  /**\n   * Returns filter instance from an object representation\n   * @static\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] to be invoked after filter creation\n   * @return {fabric.Image.filters.HueRotation} Instance of fabric.Image.filters.HueRotation\n   */\n  fabric.Image.filters.HueRotation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})( true ? exports : undefined);\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = { }),\n      clone = fabric.util.object.clone;\n\n  if (fabric.Text) {\n    fabric.warn('fabric.Text is already defined');\n    return;\n  }\n\n  var additionalProps =\n    ('fontFamily fontWeight fontSize text underline overline linethrough' +\n    ' textAlign fontStyle lineHeight textBackgroundColor charSpacing styles' +\n    ' direction path pathStartOffset pathSide').split(' ');\n\n  /**\n   * Text class\n   * @class fabric.Text\n   * @extends fabric.Object\n   * @return {fabric.Text} thisArg\n   * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text}\n   * @see {@link fabric.Text#initialize} for constructor definition\n   */\n  fabric.Text = fabric.util.createClass(fabric.Object, /** @lends fabric.Text.prototype */ {\n\n    /**\n     * Properties which when set cause object to change dimensions\n     * @type Array\n     * @private\n     */\n    _dimensionAffectingProps: [\n      'fontSize',\n      'fontWeight',\n      'fontFamily',\n      'fontStyle',\n      'lineHeight',\n      'text',\n      'charSpacing',\n      'textAlign',\n      'styles',\n      'path',\n      'pathStartOffset',\n      'pathSide'\n    ],\n\n    /**\n     * @private\n     */\n    _reNewline: /\\r?\\n/,\n\n    /**\n     * Use this regular expression to filter for whitespaces that is not a new line.\n     * Mostly used when text is 'justify' aligned.\n     * @private\n     */\n    _reSpacesAndTabs: /[ \\t\\r]/g,\n\n    /**\n     * Use this regular expression to filter for whitespace that is not a new line.\n     * Mostly used when text is 'justify' aligned.\n     * @private\n     */\n    _reSpaceAndTab: /[ \\t\\r]/,\n\n    /**\n     * Use this regular expression to filter consecutive groups of non spaces.\n     * Mostly used when text is 'justify' aligned.\n     * @private\n     */\n    _reWords: /\\S+/g,\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type:                 'text',\n\n    /**\n     * Font size (in pixels)\n     * @type Number\n     * @default\n     */\n    fontSize:             40,\n\n    /**\n     * Font weight (e.g. bold, normal, 400, 600, 800)\n     * @type {(Number|String)}\n     * @default\n     */\n    fontWeight:           'normal',\n\n    /**\n     * Font family\n     * @type String\n     * @default\n     */\n    fontFamily:           'Times New Roman',\n\n    /**\n     * Text decoration underline.\n     * @type Boolean\n     * @default\n     */\n    underline:       false,\n\n    /**\n     * Text decoration overline.\n     * @type Boolean\n     * @default\n     */\n    overline:       false,\n\n    /**\n     * Text decoration linethrough.\n     * @type Boolean\n     * @default\n     */\n    linethrough:       false,\n\n    /**\n     * Text alignment. Possible values: \"left\", \"center\", \"right\", \"justify\",\n     * \"justify-left\", \"justify-center\" or \"justify-right\".\n     * @type String\n     * @default\n     */\n    textAlign:            'left',\n\n    /**\n     * Font style . Possible values: \"\", \"normal\", \"italic\" or \"oblique\".\n     * @type String\n     * @default\n     */\n    fontStyle:            'normal',\n\n    /**\n     * Line height\n     * @type Number\n     * @default\n     */\n    lineHeight:           1.16,\n\n    /**\n     * Superscript schema object (minimum overlap)\n     * @type {Object}\n     * @default\n     */\n    superscript: {\n      size:      0.60, // fontSize factor\n      baseline: -0.35  // baseline-shift factor (upwards)\n    },\n\n    /**\n     * Subscript schema object (minimum overlap)\n     * @type {Object}\n     * @default\n     */\n    subscript: {\n      size:      0.60, // fontSize factor\n      baseline:  0.11  // baseline-shift factor (downwards)\n    },\n\n    /**\n     * Background color of text lines\n     * @type String\n     * @default\n     */\n    textBackgroundColor:  '',\n\n    /**\n     * List of properties to consider when checking if\n     * state of an object is changed ({@link fabric.Object#hasStateChanged})\n     * as well as for history (undo/redo) purposes\n     * @type Array\n     */\n    stateProperties: fabric.Object.prototype.stateProperties.concat(additionalProps),\n\n    /**\n     * List of properties to consider when checking if cache needs refresh\n     * @type Array\n     */\n    cacheProperties: fabric.Object.prototype.cacheProperties.concat(additionalProps),\n\n    /**\n     * When defined, an object is rendered via stroke and this property specifies its color.\n     * <b>Backwards incompatibility note:</b> This property was named \"strokeStyle\" until v1.1.6\n     * @type String\n     * @default\n     */\n    stroke:               null,\n\n    /**\n     * Shadow object representing shadow of this shape.\n     * <b>Backwards incompatibility note:</b> This property was named \"textShadow\" (String) until v1.2.11\n     * @type fabric.Shadow\n     * @default\n     */\n    shadow:               null,\n\n    /**\n     * fabric.Path that the text should follow.\n     * since 4.6.0 the path will be drawn automatically.\n     * if you want to make the path visible, give it a stroke and strokeWidth or fill value\n     * if you want it to be hidden, assign visible = false to the path.\n     * This feature is in BETA, and SVG import/export is not yet supported.\n     * @type fabric.Path\n     * @example\n     * var textPath = new fabric.Text('Text on a path', {\n     *     top: 150,\n     *     left: 150,\n     *     textAlign: 'center',\n     *     charSpacing: -50,\n     *     path: new fabric.Path('M 0 0 C 50 -100 150 -100 200 0', {\n     *         strokeWidth: 1,\n     *         visible: false\n     *     }),\n     *     pathSide: 'left',\n     *     pathStartOffset: 0\n     * });\n     * @default\n     */\n    path:               null,\n\n    /**\n     * Offset amount for text path starting position\n     * Only used when text has a path\n     * @type Number\n     * @default\n     */\n    pathStartOffset:               0,\n\n    /**\n     * Which side of the path the text should be drawn on.\n     * Only used when text has a path\n     * @type {String} 'left|right'\n     * @default\n     */\n    pathSide:               'left',\n\n    /**\n     * @private\n     */\n    _fontSizeFraction: 0.222,\n\n    /**\n     * @private\n     */\n    offsets: {\n      underline: 0.10,\n      linethrough: -0.315,\n      overline: -0.88\n    },\n\n    /**\n     * Text Line proportion to font Size (in pixels)\n     * @type Number\n     * @default\n     */\n    _fontSizeMult:             1.13,\n\n    /**\n     * additional space between characters\n     * expressed in thousands of em unit\n     * @type Number\n     * @default\n     */\n    charSpacing:             0,\n\n    /**\n     * Object containing character styles - top-level properties -> line numbers,\n     * 2nd-level properties - character numbers\n     * @type Object\n     * @default\n     */\n    styles: null,\n\n    /**\n     * Reference to a context to measure text char or couple of chars\n     * the cacheContext of the canvas will be used or a freshly created one if the object is not on canvas\n     * once created it will be referenced on fabric._measuringContext to avoid creating a canvas for every\n     * text object created.\n     * @type {CanvasRenderingContext2D}\n     * @default\n     */\n    _measuringContext: null,\n\n    /**\n     * Baseline shift, styles only, keep at 0 for the main text object\n     * @type {Number}\n     * @default\n     */\n    deltaY: 0,\n\n    /**\n     * WARNING: EXPERIMENTAL. NOT SUPPORTED YET\n     * determine the direction of the text.\n     * This has to be set manually together with textAlign and originX for proper\n     * experience.\n     * some interesting link for the future\n     * https://www.w3.org/International/questions/qa-bidi-unicode-controls\n     * @since 4.5.0\n     * @type {String} 'ltr|rtl'\n     * @default\n     */\n    direction: 'ltr',\n\n    /**\n     * Array of properties that define a style unit (of 'styles').\n     * @type {Array}\n     * @default\n     */\n    _styleProperties: [\n      'stroke',\n      'strokeWidth',\n      'fill',\n      'fontFamily',\n      'fontSize',\n      'fontWeight',\n      'fontStyle',\n      'underline',\n      'overline',\n      'linethrough',\n      'deltaY',\n      'textBackgroundColor',\n    ],\n\n    /**\n     * contains characters bounding boxes\n     */\n    __charBounds: [],\n\n    /**\n     * use this size when measuring text. To avoid IE11 rounding errors\n     * @type {Number}\n     * @default\n     * @readonly\n     * @private\n     */\n    CACHE_FONT_SIZE: 400,\n\n    /**\n     * contains the min text width to avoid getting 0\n     * @type {Number}\n     * @default\n     */\n    MIN_TEXT_WIDTH: 2,\n\n    /**\n     * Constructor\n     * @param {String} text Text string\n     * @param {Object} [options] Options object\n     * @return {fabric.Text} thisArg\n     */\n    initialize: function(text, options) {\n      this.styles = options ? (options.styles || { }) : { };\n      this.text = text;\n      this.__skipDimension = true;\n      this.callSuper('initialize', options);\n      if (this.path) {\n        this.setPathInfo();\n      }\n      this.__skipDimension = false;\n      this.initDimensions();\n      this.setCoords();\n      this.setupState({ propertySet: '_dimensionAffectingProps' });\n    },\n\n    /**\n     * If text has a path, it will add the extra information needed\n     * for path and text calculations\n     * @return {fabric.Text} thisArg\n     */\n    setPathInfo: function() {\n      var path = this.path;\n      if (path) {\n        path.segmentsInfo = fabric.util.getPathSegmentsInfo(path.path);\n      }\n    },\n\n    /**\n     * Return a context for measurement of text string.\n     * if created it gets stored for reuse\n     * @param {String} text Text string\n     * @param {Object} [options] Options object\n     * @return {fabric.Text} thisArg\n     */\n    getMeasuringContext: function() {\n      // if we did not return we have to measure something.\n      if (!fabric._measuringContext) {\n        fabric._measuringContext = this.canvas && this.canvas.contextCache ||\n          fabric.util.createCanvasElement().getContext('2d');\n      }\n      return fabric._measuringContext;\n    },\n\n    /**\n     * @private\n     * Divides text into lines of text and lines of graphemes.\n     */\n    _splitText: function() {\n      var newLines = this._splitTextIntoLines(this.text);\n      this.textLines = newLines.lines;\n      this._textLines = newLines.graphemeLines;\n      this._unwrappedTextLines = newLines._unwrappedLines;\n      this._text = newLines.graphemeText;\n      return newLines;\n    },\n\n    /**\n     * Initialize or update text dimensions.\n     * Updates this.width and this.height with the proper values.\n     * Does not return dimensions.\n     */\n    initDimensions: function() {\n      if (this.__skipDimension) {\n        return;\n      }\n      this._splitText();\n      this._clearCache();\n      if (this.path) {\n        this.width = this.path.width;\n        this.height = this.path.height;\n      }\n      else {\n        this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH;\n        this.height = this.calcTextHeight();\n      }\n      if (this.textAlign.indexOf('justify') !== -1) {\n        // once text is measured we need to make space fatter to make justified text.\n        this.enlargeSpaces();\n      }\n      this.saveState({ propertySet: '_dimensionAffectingProps' });\n    },\n\n    /**\n     * Enlarge space boxes and shift the others\n     */\n    enlargeSpaces: function() {\n      var diffSpace, currentLineWidth, numberOfSpaces, accumulatedSpace, line, charBound, spaces;\n      for (var i = 0, len = this._textLines.length; i < len; i++) {\n        if (this.textAlign !== 'justify' && (i === len - 1 || this.isEndOfWrapping(i))) {\n          continue;\n        }\n        accumulatedSpace = 0;\n        line = this._textLines[i];\n        currentLineWidth = this.getLineWidth(i);\n        if (currentLineWidth < this.width && (spaces = this.textLines[i].match(this._reSpacesAndTabs))) {\n          numberOfSpaces = spaces.length;\n          diffSpace = (this.width - currentLineWidth) / numberOfSpaces;\n          for (var j = 0, jlen = line.length; j <= jlen; j++) {\n            charBound = this.__charBounds[i][j];\n            if (this._reSpaceAndTab.test(line[j])) {\n              charBound.width += diffSpace;\n              charBound.kernedWidth += diffSpace;\n              charBound.left += accumulatedSpace;\n              accumulatedSpace += diffSpace;\n            }\n            else {\n              charBound.left += accumulatedSpace;\n            }\n          }\n        }\n      }\n    },\n\n    /**\n     * Detect if the text line is ended with an hard break\n     * text and itext do not have wrapping, return false\n     * @return {Boolean}\n     */\n    isEndOfWrapping: function(lineIndex) {\n      return lineIndex === this._textLines.length - 1;\n    },\n\n    /**\n     * Detect if a line has a linebreak and so we need to account for it when moving\n     * and counting style.\n     * It return always for text and Itext.\n     * @return Number\n     */\n    missingNewlineOffset: function() {\n      return 1;\n    },\n\n    /**\n     * Returns string representation of an instance\n     * @return {String} String representation of text object\n     */\n    toString: function() {\n      return '#<fabric.Text (' + this.complexity() +\n        '): { \"text\": \"' + this.text + '\", \"fontFamily\": \"' + this.fontFamily + '\" }>';\n    },\n\n    /**\n     * Return the dimension and the zoom level needed to create a cache canvas\n     * big enough to host the object to be cached.\n     * @private\n     * @param {Object} dim.x width of object to be cached\n     * @param {Object} dim.y height of object to be cached\n     * @return {Object}.width width of canvas\n     * @return {Object}.height height of canvas\n     * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n     * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n     */\n    _getCacheCanvasDimensions: function() {\n      var dims = this.callSuper('_getCacheCanvasDimensions');\n      var fontSize = this.fontSize;\n      dims.width += fontSize * dims.zoomX;\n      dims.height += fontSize * dims.zoomY;\n      return dims;\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _render: function(ctx) {\n      var path = this.path;\n      path && !path.isNotVisible() && path._render(ctx);\n      this._setTextStyles(ctx);\n      this._renderTextLinesBackground(ctx);\n      this._renderTextDecoration(ctx, 'underline');\n      this._renderText(ctx);\n      this._renderTextDecoration(ctx, 'overline');\n      this._renderTextDecoration(ctx, 'linethrough');\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderText: function(ctx) {\n      if (this.paintFirst === 'stroke') {\n        this._renderTextStroke(ctx);\n        this._renderTextFill(ctx);\n      }\n      else {\n        this._renderTextFill(ctx);\n        this._renderTextStroke(ctx);\n      }\n    },\n\n    /**\n     * Set the font parameter of the context with the object properties or with charStyle\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {Object} [charStyle] object with font style properties\n     * @param {String} [charStyle.fontFamily] Font Family\n     * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )\n     * @param {String} [charStyle.fontWeight] Font weight\n     * @param {String} [charStyle.fontStyle] Font style (italic|normal)\n     */\n    _setTextStyles: function(ctx, charStyle, forMeasuring) {\n      ctx.textBaseline = 'alphabetic';\n      ctx.font = this._getFontDeclaration(charStyle, forMeasuring);\n    },\n\n    /**\n     * calculate and return the text Width measuring each line.\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @return {Number} Maximum width of fabric.Text object\n     */\n    calcTextWidth: function() {\n      var maxWidth = this.getLineWidth(0);\n\n      for (var i = 1, len = this._textLines.length; i < len; i++) {\n        var currentLineWidth = this.getLineWidth(i);\n        if (currentLineWidth > maxWidth) {\n          maxWidth = currentLineWidth;\n        }\n      }\n      return maxWidth;\n    },\n\n    /**\n     * @private\n     * @param {String} method Method name (\"fillText\" or \"strokeText\")\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {String} line Text to render\n     * @param {Number} left Left position of text\n     * @param {Number} top Top position of text\n     * @param {Number} lineIndex Index of a line in a text\n     */\n    _renderTextLine: function(method, ctx, line, left, top, lineIndex) {\n      this._renderChars(method, ctx, line, left, top, lineIndex);\n    },\n\n    /**\n     * Renders the text background for lines, taking care of style\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderTextLinesBackground: function(ctx) {\n      if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) {\n        return;\n      }\n      var heightOfLine,\n          lineLeftOffset, originalFill = ctx.fillStyle,\n          line, lastColor,\n          leftOffset = this._getLeftOffset(),\n          lineTopOffset = this._getTopOffset(),\n          boxStart = 0, boxWidth = 0, charBox, currentColor, path = this.path,\n          drawStart;\n\n      for (var i = 0, len = this._textLines.length; i < len; i++) {\n        heightOfLine = this.getHeightOfLine(i);\n        if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor', i)) {\n          lineTopOffset += heightOfLine;\n          continue;\n        }\n        line = this._textLines[i];\n        lineLeftOffset = this._getLineLeftOffset(i);\n        boxWidth = 0;\n        boxStart = 0;\n        lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n        for (var j = 0, jlen = line.length; j < jlen; j++) {\n          charBox = this.__charBounds[i][j];\n          currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n          if (path) {\n            ctx.save();\n            ctx.translate(charBox.renderLeft, charBox.renderTop);\n            ctx.rotate(charBox.angle);\n            ctx.fillStyle = currentColor;\n            currentColor && ctx.fillRect(\n              -charBox.width / 2,\n              -heightOfLine / this.lineHeight * (1 - this._fontSizeFraction),\n              charBox.width,\n              heightOfLine / this.lineHeight\n            );\n            ctx.restore();\n          }\n          else if (currentColor !== lastColor) {\n            drawStart = leftOffset + lineLeftOffset + boxStart;\n            if (this.direction === 'rtl') {\n              drawStart = this.width - drawStart - boxWidth;\n            }\n            ctx.fillStyle = lastColor;\n            lastColor && ctx.fillRect(\n              drawStart,\n              lineTopOffset,\n              boxWidth,\n              heightOfLine / this.lineHeight\n            );\n            boxStart = charBox.left;\n            boxWidth = charBox.width;\n            lastColor = currentColor;\n          }\n          else {\n            boxWidth += charBox.kernedWidth;\n          }\n        }\n        if (currentColor && !path) {\n          drawStart = leftOffset + lineLeftOffset + boxStart;\n          if (this.direction === 'rtl') {\n            drawStart = this.width - drawStart - boxWidth;\n          }\n          ctx.fillStyle = currentColor;\n          ctx.fillRect(\n            drawStart,\n            lineTopOffset,\n            boxWidth,\n            heightOfLine / this.lineHeight\n          );\n        }\n        lineTopOffset += heightOfLine;\n      }\n      ctx.fillStyle = originalFill;\n      // if there is text background color no\n      // other shadows should be casted\n      this._removeShadow(ctx);\n    },\n\n    /**\n     * @private\n     * @param {Object} decl style declaration for cache\n     * @param {String} decl.fontFamily fontFamily\n     * @param {String} decl.fontStyle fontStyle\n     * @param {String} decl.fontWeight fontWeight\n     * @return {Object} reference to cache\n     */\n    getFontCache: function(decl) {\n      var fontFamily = decl.fontFamily.toLowerCase();\n      if (!fabric.charWidthsCache[fontFamily]) {\n        fabric.charWidthsCache[fontFamily] = { };\n      }\n      var cache = fabric.charWidthsCache[fontFamily],\n          cacheProp = decl.fontStyle.toLowerCase() + '_' + (decl.fontWeight + '').toLowerCase();\n      if (!cache[cacheProp]) {\n        cache[cacheProp] = { };\n      }\n      return cache[cacheProp];\n    },\n\n    /**\n     * measure and return the width of a single character.\n     * possibly overridden to accommodate different measure logic or\n     * to hook some external lib for character measurement\n     * @private\n     * @param {String} _char, char to be measured\n     * @param {Object} charStyle style of char to be measured\n     * @param {String} [previousChar] previous char\n     * @param {Object} [prevCharStyle] style of previous char\n     */\n    _measureChar: function(_char, charStyle, previousChar, prevCharStyle) {\n      // first i try to return from cache\n      var fontCache = this.getFontCache(charStyle), fontDeclaration = this._getFontDeclaration(charStyle),\n          previousFontDeclaration = this._getFontDeclaration(prevCharStyle), couple = previousChar + _char,\n          stylesAreEqual = fontDeclaration === previousFontDeclaration, width, coupleWidth, previousWidth,\n          fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE, kernedWidth;\n\n      if (previousChar && fontCache[previousChar] !== undefined) {\n        previousWidth = fontCache[previousChar];\n      }\n      if (fontCache[_char] !== undefined) {\n        kernedWidth = width = fontCache[_char];\n      }\n      if (stylesAreEqual && fontCache[couple] !== undefined) {\n        coupleWidth = fontCache[couple];\n        kernedWidth = coupleWidth - previousWidth;\n      }\n      if (width === undefined || previousWidth === undefined || coupleWidth === undefined) {\n        var ctx = this.getMeasuringContext();\n        // send a TRUE to specify measuring font size CACHE_FONT_SIZE\n        this._setTextStyles(ctx, charStyle, true);\n      }\n      if (width === undefined) {\n        kernedWidth = width = ctx.measureText(_char).width;\n        fontCache[_char] = width;\n      }\n      if (previousWidth === undefined && stylesAreEqual && previousChar) {\n        previousWidth = ctx.measureText(previousChar).width;\n        fontCache[previousChar] = previousWidth;\n      }\n      if (stylesAreEqual && coupleWidth === undefined) {\n        // we can measure the kerning couple and subtract the width of the previous character\n        coupleWidth = ctx.measureText(couple).width;\n        fontCache[couple] = coupleWidth;\n        kernedWidth = coupleWidth - previousWidth;\n      }\n      return { width: width * fontMultiplier, kernedWidth: kernedWidth * fontMultiplier };\n    },\n\n    /**\n     * Computes height of character at given position\n     * @param {Number} line the line index number\n     * @param {Number} _char the character index number\n     * @return {Number} fontSize of the character\n     */\n    getHeightOfChar: function(line, _char) {\n      return this.getValueOfPropertyAt(line, _char, 'fontSize');\n    },\n\n    /**\n     * measure a text line measuring all characters.\n     * @param {Number} lineIndex line number\n     * @return {Number} Line width\n     */\n    measureLine: function(lineIndex) {\n      var lineInfo = this._measureLine(lineIndex);\n      if (this.charSpacing !== 0) {\n        lineInfo.width -= this._getWidthOfCharSpacing();\n      }\n      if (lineInfo.width < 0) {\n        lineInfo.width = 0;\n      }\n      return lineInfo;\n    },\n\n    /**\n     * measure every grapheme of a line, populating __charBounds\n     * @param {Number} lineIndex\n     * @return {Object} object.width total width of characters\n     * @return {Object} object.widthOfSpaces length of chars that match this._reSpacesAndTabs\n     */\n    _measureLine: function(lineIndex) {\n      var width = 0, i, grapheme, line = this._textLines[lineIndex], prevGrapheme,\n          graphemeInfo, numOfSpaces = 0, lineBounds = new Array(line.length),\n          positionInPath = 0, startingPoint, totalPathLength, path = this.path,\n          reverse = this.pathSide === 'right';\n\n      this.__charBounds[lineIndex] = lineBounds;\n      for (i = 0; i < line.length; i++) {\n        grapheme = line[i];\n        graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme);\n        lineBounds[i] = graphemeInfo;\n        width += graphemeInfo.kernedWidth;\n        prevGrapheme = grapheme;\n      }\n      // this latest bound box represent the last character of the line\n      // to simplify cursor handling in interactive mode.\n      lineBounds[i] = {\n        left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0,\n        width: 0,\n        kernedWidth: 0,\n        height: this.fontSize\n      };\n      if (path) {\n        totalPathLength = path.segmentsInfo[path.segmentsInfo.length - 1].length;\n        startingPoint = fabric.util.getPointOnPath(path.path, 0, path.segmentsInfo);\n        startingPoint.x += path.pathOffset.x;\n        startingPoint.y += path.pathOffset.y;\n        switch (this.textAlign) {\n          case 'left':\n            positionInPath = reverse ? (totalPathLength - width) : 0;\n            break;\n          case 'center':\n            positionInPath = (totalPathLength - width) / 2;\n            break;\n          case 'right':\n            positionInPath = reverse ? 0 : (totalPathLength - width);\n            break;\n          //todo - add support for justify\n        }\n        positionInPath += this.pathStartOffset * (reverse ? -1 : 1);\n        for (i = reverse ? line.length - 1 : 0;\n          reverse ? i >= 0 : i < line.length;\n          reverse ? i-- : i++) {\n          graphemeInfo = lineBounds[i];\n          if (positionInPath > totalPathLength) {\n            positionInPath %= totalPathLength;\n          }\n          else if (positionInPath < 0) {\n            positionInPath += totalPathLength;\n          }\n          // it would probably much faster to send all the grapheme position for a line\n          // and calculate path position/angle at once.\n          this._setGraphemeOnPath(positionInPath, graphemeInfo, startingPoint);\n          positionInPath += graphemeInfo.kernedWidth;\n        }\n      }\n      return { width: width, numOfSpaces: numOfSpaces };\n    },\n\n    /**\n     * Calculate the angle  and the left,top position of the char that follow a path.\n     * It appends it to graphemeInfo to be reused later at rendering\n     * @private\n     * @param {Number} positionInPath to be measured\n     * @param {Object} graphemeInfo current grapheme box information\n     * @param {Object} startingPoint position of the point\n     */\n    _setGraphemeOnPath: function(positionInPath, graphemeInfo, startingPoint) {\n      var centerPosition = positionInPath + graphemeInfo.kernedWidth / 2,\n          path = this.path;\n\n      // we are at currentPositionOnPath. we want to know what point on the path is.\n      var info = fabric.util.getPointOnPath(path.path, centerPosition, path.segmentsInfo);\n      graphemeInfo.renderLeft = info.x - startingPoint.x;\n      graphemeInfo.renderTop = info.y - startingPoint.y;\n      graphemeInfo.angle = info.angle + (this.pathSide ===  'right' ? Math.PI : 0);\n    },\n\n    /**\n     * Measure and return the info of a single grapheme.\n     * needs the the info of previous graphemes already filled\n     * @private\n     * @param {String} grapheme to be measured\n     * @param {Number} lineIndex index of the line where the char is\n     * @param {Number} charIndex position in the line\n     * @param {String} [prevGrapheme] character preceding the one to be measured\n     */\n    _getGraphemeBox: function(grapheme, lineIndex, charIndex, prevGrapheme, skipLeft) {\n      var style = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n          prevStyle = prevGrapheme ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1) : { },\n          info = this._measureChar(grapheme, style, prevGrapheme, prevStyle),\n          kernedWidth = info.kernedWidth,\n          width = info.width, charSpacing;\n\n      if (this.charSpacing !== 0) {\n        charSpacing = this._getWidthOfCharSpacing();\n        width += charSpacing;\n        kernedWidth += charSpacing;\n      }\n\n      var box = {\n        width: width,\n        left: 0,\n        height: style.fontSize,\n        kernedWidth: kernedWidth,\n        deltaY: style.deltaY,\n      };\n      if (charIndex > 0 && !skipLeft) {\n        var previousBox = this.__charBounds[lineIndex][charIndex - 1];\n        box.left = previousBox.left + previousBox.width + info.kernedWidth - info.width;\n      }\n      return box;\n    },\n\n    /**\n     * Calculate height of line at 'lineIndex'\n     * @param {Number} lineIndex index of line to calculate\n     * @return {Number}\n     */\n    getHeightOfLine: function(lineIndex) {\n      if (this.__lineHeights[lineIndex]) {\n        return this.__lineHeights[lineIndex];\n      }\n\n      var line = this._textLines[lineIndex],\n          // char 0 is measured before the line cycle because it nneds to char\n          // emptylines\n          maxHeight = this.getHeightOfChar(lineIndex, 0);\n      for (var i = 1, len = line.length; i < len; i++) {\n        maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight);\n      }\n\n      return this.__lineHeights[lineIndex] = maxHeight * this.lineHeight * this._fontSizeMult;\n    },\n\n    /**\n     * Calculate text box height\n     */\n    calcTextHeight: function() {\n      var lineHeight, height = 0;\n      for (var i = 0, len = this._textLines.length; i < len; i++) {\n        lineHeight = this.getHeightOfLine(i);\n        height += (i === len - 1 ? lineHeight / this.lineHeight : lineHeight);\n      }\n      return height;\n    },\n\n    /**\n     * @private\n     * @return {Number} Left offset\n     */\n    _getLeftOffset: function() {\n      return this.direction === 'ltr' ? -this.width / 2 : this.width / 2;\n    },\n\n    /**\n     * @private\n     * @return {Number} Top offset\n     */\n    _getTopOffset: function() {\n      return -this.height / 2;\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {String} method Method name (\"fillText\" or \"strokeText\")\n     */\n    _renderTextCommon: function(ctx, method) {\n      ctx.save();\n      var lineHeights = 0, left = this._getLeftOffset(), top = this._getTopOffset();\n      for (var i = 0, len = this._textLines.length; i < len; i++) {\n        var heightOfLine = this.getHeightOfLine(i),\n            maxHeight = heightOfLine / this.lineHeight,\n            leftOffset = this._getLineLeftOffset(i);\n        this._renderTextLine(\n          method,\n          ctx,\n          this._textLines[i],\n          left + leftOffset,\n          top + lineHeights + maxHeight,\n          i\n        );\n        lineHeights += heightOfLine;\n      }\n      ctx.restore();\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderTextFill: function(ctx) {\n      if (!this.fill && !this.styleHas('fill')) {\n        return;\n      }\n\n      this._renderTextCommon(ctx, 'fillText');\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderTextStroke: function(ctx) {\n      if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) {\n        return;\n      }\n\n      if (this.shadow && !this.shadow.affectStroke) {\n        this._removeShadow(ctx);\n      }\n\n      ctx.save();\n      this._setLineDash(ctx, this.strokeDashArray);\n      ctx.beginPath();\n      this._renderTextCommon(ctx, 'strokeText');\n      ctx.closePath();\n      ctx.restore();\n    },\n\n    /**\n     * @private\n     * @param {String} method fillText or strokeText.\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {Array} line Content of the line, splitted in an array by grapheme\n     * @param {Number} left\n     * @param {Number} top\n     * @param {Number} lineIndex\n     */\n    _renderChars: function(method, ctx, line, left, top, lineIndex) {\n      // set proper line offset\n      var lineHeight = this.getHeightOfLine(lineIndex),\n          isJustify = this.textAlign.indexOf('justify') !== -1,\n          actualStyle,\n          nextStyle,\n          charsToRender = '',\n          charBox,\n          boxWidth = 0,\n          timeToRender,\n          path = this.path,\n          shortCut = !isJustify && this.charSpacing === 0 && this.isEmptyStyles(lineIndex) && !path,\n          isLtr = this.direction === 'ltr', sign = this.direction === 'ltr' ? 1 : -1,\n          drawingLeft;\n\n      ctx.save();\n      top -= lineHeight * this._fontSizeFraction / this.lineHeight;\n      if (shortCut) {\n        // render all the line in one pass without checking\n        // drawingLeft = isLtr ? left : left - this.getLineWidth(lineIndex);\n        ctx.canvas.setAttribute('dir', isLtr ? 'ltr' : 'rtl');\n        ctx.direction = isLtr ? 'ltr' : 'rtl';\n        ctx.textAlign = isLtr ? 'left' : 'right';\n        this._renderChar(method, ctx, lineIndex, 0, line.join(''), left, top, lineHeight);\n        ctx.restore();\n        return;\n      }\n      for (var i = 0, len = line.length - 1; i <= len; i++) {\n        timeToRender = i === len || this.charSpacing || path;\n        charsToRender += line[i];\n        charBox = this.__charBounds[lineIndex][i];\n        if (boxWidth === 0) {\n          left += sign * (charBox.kernedWidth - charBox.width);\n          boxWidth += charBox.width;\n        }\n        else {\n          boxWidth += charBox.kernedWidth;\n        }\n        if (isJustify && !timeToRender) {\n          if (this._reSpaceAndTab.test(line[i])) {\n            timeToRender = true;\n          }\n        }\n        if (!timeToRender) {\n          // if we have charSpacing, we render char by char\n          actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n          nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n          timeToRender = this._hasStyleChanged(actualStyle, nextStyle);\n        }\n        if (timeToRender) {\n          if (path) {\n            ctx.save();\n            ctx.translate(charBox.renderLeft, charBox.renderTop);\n            ctx.rotate(charBox.angle);\n            this._renderChar(method, ctx, lineIndex, i, charsToRender, -boxWidth / 2, 0, lineHeight);\n            ctx.restore();\n          }\n          else {\n            drawingLeft = left;\n            ctx.canvas.setAttribute('dir', isLtr ? 'ltr' : 'rtl');\n            ctx.direction = isLtr ? 'ltr' : 'rtl';\n            ctx.textAlign = isLtr ? 'left' : 'right';\n            this._renderChar(method, ctx, lineIndex, i, charsToRender, drawingLeft, top, lineHeight);\n          }\n          charsToRender = '';\n          actualStyle = nextStyle;\n          left += sign * boxWidth;\n          boxWidth = 0;\n        }\n      }\n      ctx.restore();\n    },\n\n    /**\n     * This function try to patch the missing gradientTransform on canvas gradients.\n     * transforming a context to transform the gradient, is going to transform the stroke too.\n     * we want to transform the gradient but not the stroke operation, so we create\n     * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\n     * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size\n     * is limited.\n     * @private\n     * @param {fabric.Gradient} filler a fabric gradient instance\n     * @return {CanvasPattern} a pattern to use as fill/stroke style\n     */\n    _applyPatternGradientTransformText: function(filler) {\n      var pCanvas = fabric.util.createCanvasElement(), pCtx,\n          // TODO: verify compatibility with strokeUniform\n          width = this.width + this.strokeWidth, height = this.height + this.strokeWidth;\n      pCanvas.width = width;\n      pCanvas.height = height;\n      pCtx = pCanvas.getContext('2d');\n      pCtx.beginPath(); pCtx.moveTo(0, 0); pCtx.lineTo(width, 0); pCtx.lineTo(width, height);\n      pCtx.lineTo(0, height); pCtx.closePath();\n      pCtx.translate(width / 2, height / 2);\n      pCtx.fillStyle = filler.toLive(pCtx);\n      this._applyPatternGradientTransform(pCtx, filler);\n      pCtx.fill();\n      return pCtx.createPattern(pCanvas, 'no-repeat');\n    },\n\n    handleFiller: function(ctx, property, filler) {\n      var offsetX, offsetY;\n      if (filler.toLive) {\n        if (filler.gradientUnits === 'percentage' || filler.gradientTransform || filler.patternTransform) {\n          // need to transform gradient in a pattern.\n          // this is a slow process. If you are hitting this codepath, and the object\n          // is not using caching, you should consider switching it on.\n          // we need a canvas as big as the current object caching canvas.\n          offsetX = -this.width / 2;\n          offsetY = -this.height / 2;\n          ctx.translate(offsetX, offsetY);\n          ctx[property] = this._applyPatternGradientTransformText(filler);\n          return { offsetX: offsetX, offsetY: offsetY };\n        }\n        else {\n          // is a simple gradient or pattern\n          ctx[property] = filler.toLive(ctx, this);\n          return this._applyPatternGradientTransform(ctx, filler);\n        }\n      }\n      else {\n        // is a color\n        ctx[property] = filler;\n      }\n      return { offsetX: 0, offsetY: 0 };\n    },\n\n    _setStrokeStyles: function(ctx, decl) {\n      ctx.lineWidth = decl.strokeWidth;\n      ctx.lineCap = this.strokeLineCap;\n      ctx.lineDashOffset = this.strokeDashOffset;\n      ctx.lineJoin = this.strokeLineJoin;\n      ctx.miterLimit = this.strokeMiterLimit;\n      return this.handleFiller(ctx, 'strokeStyle', decl.stroke);\n    },\n\n    _setFillStyles: function(ctx, decl) {\n      return this.handleFiller(ctx, 'fillStyle', decl.fill);\n    },\n\n    /**\n     * @private\n     * @param {String} method\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     * @param {Number} lineIndex\n     * @param {Number} charIndex\n     * @param {String} _char\n     * @param {Number} left Left coordinate\n     * @param {Number} top Top coordinate\n     * @param {Number} lineHeight Height of the line\n     */\n    _renderChar: function(method, ctx, lineIndex, charIndex, _char, left, top) {\n      var decl = this._getStyleDeclaration(lineIndex, charIndex),\n          fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n          shouldFill = method === 'fillText' && fullDecl.fill,\n          shouldStroke = method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth,\n          fillOffsets, strokeOffsets;\n\n      if (!shouldStroke && !shouldFill) {\n        return;\n      }\n      ctx.save();\n\n      shouldFill && (fillOffsets = this._setFillStyles(ctx, fullDecl));\n      shouldStroke && (strokeOffsets = this._setStrokeStyles(ctx, fullDecl));\n\n      ctx.font = this._getFontDeclaration(fullDecl);\n\n\n      if (decl && decl.textBackgroundColor) {\n        this._removeShadow(ctx);\n      }\n      if (decl && decl.deltaY) {\n        top += decl.deltaY;\n      }\n      shouldFill && ctx.fillText(_char, left - fillOffsets.offsetX, top - fillOffsets.offsetY);\n      shouldStroke && ctx.strokeText(_char, left - strokeOffsets.offsetX, top - strokeOffsets.offsetY);\n      ctx.restore();\n    },\n\n    /**\n     * Turns the character into a 'superior figure' (i.e. 'superscript')\n     * @param {Number} start selection start\n     * @param {Number} end selection end\n     * @returns {fabric.Text} thisArg\n     * @chainable\n     */\n    setSuperscript: function(start, end) {\n      return this._setScript(start, end, this.superscript);\n    },\n\n    /**\n     * Turns the character into an 'inferior figure' (i.e. 'subscript')\n     * @param {Number} start selection start\n     * @param {Number} end selection end\n     * @returns {fabric.Text} thisArg\n     * @chainable\n     */\n    setSubscript: function(start, end) {\n      return this._setScript(start, end, this.subscript);\n    },\n\n    /**\n     * Applies 'schema' at given position\n     * @private\n     * @param {Number} start selection start\n     * @param {Number} end selection end\n     * @param {Number} schema\n     * @returns {fabric.Text} thisArg\n     * @chainable\n     */\n    _setScript: function(start, end, schema) {\n      var loc = this.get2DCursorLocation(start, true),\n          fontSize = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'fontSize'),\n          dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'),\n          style = { fontSize: fontSize * schema.size, deltaY: dy + fontSize * schema.baseline };\n      this.setSelectionStyles(style, start, end);\n      return this;\n    },\n\n    /**\n     * @private\n     * @param {Object} prevStyle\n     * @param {Object} thisStyle\n     */\n    _hasStyleChanged: function(prevStyle, thisStyle) {\n      return prevStyle.fill !== thisStyle.fill ||\n              prevStyle.stroke !== thisStyle.stroke ||\n              prevStyle.strokeWidth !== thisStyle.strokeWidth ||\n              prevStyle.fontSize !== thisStyle.fontSize ||\n              prevStyle.fontFamily !== thisStyle.fontFamily ||\n              prevStyle.fontWeight !== thisStyle.fontWeight ||\n              prevStyle.fontStyle !== thisStyle.fontStyle ||\n              prevStyle.deltaY !== thisStyle.deltaY;\n    },\n\n    /**\n     * @private\n     * @param {Object} prevStyle\n     * @param {Object} thisStyle\n     */\n    _hasStyleChangedForSvg: function(prevStyle, thisStyle) {\n      return this._hasStyleChanged(prevStyle, thisStyle) ||\n        prevStyle.overline !== thisStyle.overline ||\n        prevStyle.underline !== thisStyle.underline ||\n        prevStyle.linethrough !== thisStyle.linethrough;\n    },\n\n    /**\n     * @private\n     * @param {Number} lineIndex index text line\n     * @return {Number} Line left offset\n     */\n    _getLineLeftOffset: function(lineIndex) {\n      var lineWidth = this.getLineWidth(lineIndex),\n          lineDiff = this.width - lineWidth, textAlign = this.textAlign, direction = this.direction,\n          isEndOfWrapping, leftOffset = 0, isEndOfWrapping = this.isEndOfWrapping(lineIndex);\n      if (textAlign === 'justify'\n        || (textAlign === 'justify-center' && !isEndOfWrapping)\n        || (textAlign === 'justify-right' && !isEndOfWrapping)\n        || (textAlign === 'justify-left' && !isEndOfWrapping)\n      ) {\n        return 0;\n      }\n      if (textAlign === 'center') {\n        leftOffset = lineDiff / 2;\n      }\n      if (textAlign === 'right') {\n        leftOffset = lineDiff;\n      }\n      if (textAlign === 'justify-center') {\n        leftOffset = lineDiff / 2;\n      }\n      if (textAlign === 'justify-right') {\n        leftOffset = lineDiff;\n      }\n      if (direction === 'rtl') {\n        leftOffset -= lineDiff;\n      }\n      return leftOffset;\n    },\n\n    /**\n     * @private\n     */\n    _clearCache: function() {\n      this.__lineWidths = [];\n      this.__lineHeights = [];\n      this.__charBounds = [];\n    },\n\n    /**\n     * @private\n     */\n    _shouldClearDimensionCache: function() {\n      var shouldClear = this._forceClearCache;\n      shouldClear || (shouldClear = this.hasStateChanged('_dimensionAffectingProps'));\n      if (shouldClear) {\n        this.dirty = true;\n        this._forceClearCache = false;\n      }\n      return shouldClear;\n    },\n\n    /**\n     * Measure a single line given its index. Used to calculate the initial\n     * text bounding box. The values are calculated and stored in __lineWidths cache.\n     * @private\n     * @param {Number} lineIndex line number\n     * @return {Number} Line width\n     */\n    getLineWidth: function(lineIndex) {\n      if (this.__lineWidths[lineIndex]) {\n        return this.__lineWidths[lineIndex];\n      }\n\n      var width, line = this._textLines[lineIndex], lineInfo;\n\n      if (line === '') {\n        width = 0;\n      }\n      else {\n        lineInfo = this.measureLine(lineIndex);\n        width = lineInfo.width;\n      }\n      this.__lineWidths[lineIndex] = width;\n      return width;\n    },\n\n    _getWidthOfCharSpacing: function() {\n      if (this.charSpacing !== 0) {\n        return this.fontSize * this.charSpacing / 1000;\n      }\n      return 0;\n    },\n\n    /**\n     * Retrieves the value of property at given character position\n     * @param {Number} lineIndex the line number\n     * @param {Number} charIndex the character number\n     * @param {String} property the property name\n     * @returns the value of 'property'\n     */\n    getValueOfPropertyAt: function(lineIndex, charIndex, property) {\n      var charStyle = this._getStyleDeclaration(lineIndex, charIndex);\n      if (charStyle && typeof charStyle[property] !== 'undefined') {\n        return charStyle[property];\n      }\n      return this[property];\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _renderTextDecoration: function(ctx, type) {\n      if (!this[type] && !this.styleHas(type)) {\n        return;\n      }\n      var heightOfLine, size, _size,\n          lineLeftOffset, dy, _dy,\n          line, lastDecoration,\n          leftOffset = this._getLeftOffset(),\n          topOffset = this._getTopOffset(), top,\n          boxStart, boxWidth, charBox, currentDecoration,\n          maxHeight, currentFill, lastFill, path = this.path,\n          charSpacing = this._getWidthOfCharSpacing(),\n          offsetY = this.offsets[type];\n\n      for (var i = 0, len = this._textLines.length; i < len; i++) {\n        heightOfLine = this.getHeightOfLine(i);\n        if (!this[type] && !this.styleHas(type, i)) {\n          topOffset += heightOfLine;\n          continue;\n        }\n        line = this._textLines[i];\n        maxHeight = heightOfLine / this.lineHeight;\n        lineLeftOffset = this._getLineLeftOffset(i);\n        boxStart = 0;\n        boxWidth = 0;\n        lastDecoration = this.getValueOfPropertyAt(i, 0, type);\n        lastFill = this.getValueOfPropertyAt(i, 0, 'fill');\n        top = topOffset + maxHeight * (1 - this._fontSizeFraction);\n        size = this.getHeightOfChar(i, 0);\n        dy = this.getValueOfPropertyAt(i, 0, 'deltaY');\n        for (var j = 0, jlen = line.length; j < jlen; j++) {\n          charBox = this.__charBounds[i][j];\n          currentDecoration = this.getValueOfPropertyAt(i, j, type);\n          currentFill = this.getValueOfPropertyAt(i, j, 'fill');\n          _size = this.getHeightOfChar(i, j);\n          _dy = this.getValueOfPropertyAt(i, j, 'deltaY');\n          if (path && currentDecoration && currentFill) {\n            ctx.save();\n            ctx.fillStyle = lastFill;\n            ctx.translate(charBox.renderLeft, charBox.renderTop);\n            ctx.rotate(charBox.angle);\n            ctx.fillRect(\n              -charBox.kernedWidth / 2,\n              offsetY * _size + _dy,\n              charBox.kernedWidth,\n              this.fontSize / 15\n            );\n            ctx.restore();\n          }\n          else if (\n            (currentDecoration !== lastDecoration || currentFill !== lastFill || _size !== size || _dy !== dy)\n            && boxWidth > 0\n          ) {\n            var drawStart = leftOffset + lineLeftOffset + boxStart;\n            if (this.direction === 'rtl') {\n              drawStart = this.width - drawStart - boxWidth;\n            }\n            if (lastDecoration && lastFill) {\n              ctx.fillStyle = lastFill;\n              ctx.fillRect(\n                drawStart,\n                top + offsetY * size + dy,\n                boxWidth,\n                this.fontSize / 15\n              );\n            }\n            boxStart = charBox.left;\n            boxWidth = charBox.width;\n            lastDecoration = currentDecoration;\n            lastFill = currentFill;\n            size = _size;\n            dy = _dy;\n          }\n          else {\n            boxWidth += charBox.kernedWidth;\n          }\n        }\n        var drawStart = leftOffset + lineLeftOffset + boxStart;\n        if (this.direction === 'rtl') {\n          drawStart = this.width - drawStart - boxWidth;\n        }\n        ctx.fillStyle = currentFill;\n        currentDecoration && currentFill && ctx.fillRect(\n          drawStart,\n          top + offsetY * size + dy,\n          boxWidth - charSpacing,\n          this.fontSize / 15\n        );\n        topOffset += heightOfLine;\n      }\n      // if there is text background color no\n      // other shadows should be casted\n      this._removeShadow(ctx);\n    },\n\n    /**\n     * return font declaration string for canvas context\n     * @param {Object} [styleObject] object\n     * @returns {String} font declaration formatted for canvas context.\n     */\n    _getFontDeclaration: function(styleObject, forMeasuring) {\n      var style = styleObject || this, family = this.fontFamily,\n          fontIsGeneric = fabric.Text.genericFonts.indexOf(family.toLowerCase()) > -1;\n      var fontFamily = family === undefined ||\n      family.indexOf('\\'') > -1 || family.indexOf(',') > -1 ||\n      family.indexOf('\"') > -1 || fontIsGeneric\n        ? style.fontFamily : '\"' + style.fontFamily + '\"';\n      return [\n        // node-canvas needs \"weight style\", while browsers need \"style weight\"\n        // verify if this can be fixed in JSDOM\n        (fabric.isLikelyNode ? style.fontWeight : style.fontStyle),\n        (fabric.isLikelyNode ? style.fontStyle : style.fontWeight),\n        forMeasuring ? this.CACHE_FONT_SIZE + 'px' : style.fontSize + 'px',\n        fontFamily\n      ].join(' ');\n    },\n\n    /**\n     * Renders text instance on a specified context\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    render: function(ctx) {\n      // do not render if object is not visible\n      if (!this.visible) {\n        return;\n      }\n      if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n        return;\n      }\n      if (this._shouldClearDimensionCache()) {\n        this.initDimensions();\n      }\n      this.callSuper('render', ctx);\n    },\n\n    /**\n     * Returns the text as an array of lines.\n     * @param {String} text text to split\n     * @returns {Array} Lines in the text\n     */\n    _splitTextIntoLines: function(text) {\n      var lines = text.split(this._reNewline),\n          newLines = new Array(lines.length),\n          newLine = ['\\n'],\n          newText = [];\n      for (var i = 0; i < lines.length; i++) {\n        newLines[i] = fabric.util.string.graphemeSplit(lines[i]);\n        newText = newText.concat(newLines[i], newLine);\n      }\n      newText.pop();\n      return { _unwrappedLines: newLines, lines: lines, graphemeText: newText, graphemeLines: newLines };\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} Object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      var allProperties = additionalProps.concat(propertiesToInclude);\n      var obj = this.callSuper('toObject', allProperties);\n      // styles will be overridden with a properly cloned structure\n      obj.styles = clone(this.styles, true);\n      if (obj.path) {\n        obj.path = this.path.toObject();\n      }\n      return obj;\n    },\n\n    /**\n     * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n     * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n     * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n     * @return {fabric.Object} thisArg\n     * @chainable\n     */\n    set: function(key, value) {\n      this.callSuper('set', key, value);\n      var needsDims = false;\n      var isAddingPath = false;\n      if (typeof key === 'object') {\n        for (var _key in key) {\n          if (_key === 'path') {\n            this.setPathInfo();\n          }\n          needsDims = needsDims || this._dimensionAffectingProps.indexOf(_key) !== -1;\n          isAddingPath = isAddingPath || _key === 'path';\n        }\n      }\n      else {\n        needsDims = this._dimensionAffectingProps.indexOf(key) !== -1;\n        isAddingPath = key === 'path';\n      }\n      if (isAddingPath) {\n        this.setPathInfo();\n      }\n      if (needsDims) {\n        this.initDimensions();\n        this.setCoords();\n      }\n      return this;\n    },\n\n    /**\n     * Returns complexity of an instance\n     * @return {Number} complexity\n     */\n    complexity: function() {\n      return 1;\n    }\n  });\n\n  /* _FROM_SVG_START_ */\n  /**\n   * List of attribute names to account for when parsing SVG element (used by {@link fabric.Text.fromElement})\n   * @static\n   * @memberOf fabric.Text\n   * @see: http://www.w3.org/TR/SVG/text.html#TextElement\n   */\n  fabric.Text.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(\n    'x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor'.split(' '));\n\n  /**\n   * Default SVG font size\n   * @static\n   * @memberOf fabric.Text\n   */\n  fabric.Text.DEFAULT_SVG_FONT_SIZE = 16;\n\n  /**\n   * Returns fabric.Text instance from an SVG element (<b>not yet implemented</b>)\n   * @static\n   * @memberOf fabric.Text\n   * @param {SVGElement} element Element to parse\n   * @param {Function} callback callback function invoked after parsing\n   * @param {Object} [options] Options object\n   */\n  fabric.Text.fromElement = function(element, callback, options) {\n    if (!element) {\n      return callback(null);\n    }\n\n    var parsedAttributes = fabric.parseAttributes(element, fabric.Text.ATTRIBUTE_NAMES),\n        parsedAnchor = parsedAttributes.textAnchor || 'left';\n    options = fabric.util.object.extend((options ? clone(options) : { }), parsedAttributes);\n\n    options.top = options.top || 0;\n    options.left = options.left || 0;\n    if (parsedAttributes.textDecoration) {\n      var textDecoration = parsedAttributes.textDecoration;\n      if (textDecoration.indexOf('underline') !== -1) {\n        options.underline = true;\n      }\n      if (textDecoration.indexOf('overline') !== -1) {\n        options.overline = true;\n      }\n      if (textDecoration.indexOf('line-through') !== -1) {\n        options.linethrough = true;\n      }\n      delete options.textDecoration;\n    }\n    if ('dx' in parsedAttributes) {\n      options.left += parsedAttributes.dx;\n    }\n    if ('dy' in parsedAttributes) {\n      options.top += parsedAttributes.dy;\n    }\n    if (!('fontSize' in options)) {\n      options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n    }\n\n    var textContent = '';\n\n    // The XML is not properly parsed in IE9 so a workaround to get\n    // textContent is through firstChild.data. Another workaround would be\n    // to convert XML loaded from a file to be converted using DOMParser (same way loadSVGFromString() does)\n    if (!('textContent' in element)) {\n      if ('firstChild' in element && element.firstChild !== null) {\n        if ('data' in element.firstChild && element.firstChild.data !== null) {\n          textContent = element.firstChild.data;\n        }\n      }\n    }\n    else {\n      textContent = element.textContent;\n    }\n\n    textContent = textContent.replace(/^\\s+|\\s+$|\\n+/g, '').replace(/\\s+/g, ' ');\n    var originalStrokeWidth = options.strokeWidth;\n    options.strokeWidth = 0;\n\n    var text = new fabric.Text(textContent, options),\n        textHeightScaleFactor = text.getScaledHeight() / text.height,\n        lineHeightDiff = (text.height + text.strokeWidth) * text.lineHeight - text.height,\n        scaledDiff = lineHeightDiff * textHeightScaleFactor,\n        textHeight = text.getScaledHeight() + scaledDiff,\n        offX = 0;\n    /*\n      Adjust positioning:\n        x/y attributes in SVG correspond to the bottom-left corner of text bounding box\n        fabric output by default at top, left.\n    */\n    if (parsedAnchor === 'center') {\n      offX = text.getScaledWidth() / 2;\n    }\n    if (parsedAnchor === 'right') {\n      offX = text.getScaledWidth();\n    }\n    text.set({\n      left: text.left - offX,\n      top: text.top - (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) / text.lineHeight,\n      strokeWidth: typeof originalStrokeWidth !== 'undefined' ? originalStrokeWidth : 1,\n    });\n    callback(text);\n  };\n  /* _FROM_SVG_END_ */\n\n  /**\n   * Returns fabric.Text instance from an object representation\n   * @static\n   * @memberOf fabric.Text\n   * @param {Object} object plain js Object to create an instance from\n   * @param {Function} [callback] Callback to invoke when an fabric.Text instance is created\n   */\n  fabric.Text.fromObject = function(object, callback) {\n    var objectCopy = clone(object), path = object.path;\n    delete objectCopy.path;\n    return fabric.Object._fromObject('Text', objectCopy, function(textInstance) {\n      if (path) {\n        fabric.Object._fromObject('Path', path, function(pathInstance) {\n          textInstance.set('path', pathInstance);\n          callback(textInstance);\n        }, 'path');\n      }\n      else {\n        callback(textInstance);\n      }\n    }, 'text');\n  };\n\n  fabric.Text.genericFonts = ['sans-serif', 'serif', 'cursive', 'fantasy', 'monospace'];\n\n  fabric.util.createAccessors && fabric.util.createAccessors(fabric.Text);\n\n})( true ? exports : undefined);\n\n\n(function() {\n  fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n    /**\n     * Returns true if object has no styling or no styling in a line\n     * @param {Number} lineIndex , lineIndex is on wrapped lines.\n     * @return {Boolean}\n     */\n    isEmptyStyles: function(lineIndex) {\n      if (!this.styles) {\n        return true;\n      }\n      if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n        return true;\n      }\n      var obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n      for (var p1 in obj) {\n        for (var p2 in obj[p1]) {\n          // eslint-disable-next-line no-unused-vars\n          for (var p3 in obj[p1][p2]) {\n            return false;\n          }\n        }\n      }\n      return true;\n    },\n\n    /**\n     * Returns true if object has a style property or has it ina specified line\n     * This function is used to detect if a text will use a particular property or not.\n     * @param {String} property to check for\n     * @param {Number} lineIndex to check the style on\n     * @return {Boolean}\n     */\n    styleHas: function(property, lineIndex) {\n      if (!this.styles || !property || property === '') {\n        return false;\n      }\n      if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n        return false;\n      }\n      var obj = typeof lineIndex === 'undefined' ? this.styles : { 0: this.styles[lineIndex] };\n      // eslint-disable-next-line\n      for (var p1 in obj) {\n        // eslint-disable-next-line\n        for (var p2 in obj[p1]) {\n          if (typeof obj[p1][p2][property] !== 'undefined') {\n            return true;\n          }\n        }\n      }\n      return false;\n    },\n\n    /**\n     * Check if characters in a text have a value for a property\n     * whose value matches the textbox's value for that property.  If so,\n     * the character-level property is deleted.  If the character\n     * has no other properties, then it is also deleted.  Finally,\n     * if the line containing that character has no other characters\n     * then it also is deleted.\n     *\n     * @param {string} property The property to compare between characters and text.\n     */\n    cleanStyle: function(property) {\n      if (!this.styles || !property || property === '') {\n        return false;\n      }\n      var obj = this.styles, stylesCount = 0, letterCount, stylePropertyValue,\n          allStyleObjectPropertiesMatch = true, graphemeCount = 0, styleObject;\n      // eslint-disable-next-line\n      for (var p1 in obj) {\n        letterCount = 0;\n        // eslint-disable-next-line\n        for (var p2 in obj[p1]) {\n          var styleObject = obj[p1][p2],\n              stylePropertyHasBeenSet = styleObject.hasOwnProperty(property);\n\n          stylesCount++;\n\n          if (stylePropertyHasBeenSet) {\n            if (!stylePropertyValue) {\n              stylePropertyValue = styleObject[property];\n            }\n            else if (styleObject[property] !== stylePropertyValue) {\n              allStyleObjectPropertiesMatch = false;\n            }\n\n            if (styleObject[property] === this[property]) {\n              delete styleObject[property];\n            }\n          }\n          else {\n            allStyleObjectPropertiesMatch = false;\n          }\n\n          if (Object.keys(styleObject).length !== 0) {\n            letterCount++;\n          }\n          else {\n            delete obj[p1][p2];\n          }\n        }\n\n        if (letterCount === 0) {\n          delete obj[p1];\n        }\n      }\n      // if every grapheme has the same style set then\n      // delete those styles and set it on the parent\n      for (var i = 0; i < this._textLines.length; i++) {\n        graphemeCount += this._textLines[i].length;\n      }\n      if (allStyleObjectPropertiesMatch && stylesCount === graphemeCount) {\n        this[property] = stylePropertyValue;\n        this.removeStyle(property);\n      }\n    },\n\n    /**\n     * Remove a style property or properties from all individual character styles\n     * in a text object.  Deletes the character style object if it contains no other style\n     * props.  Deletes a line style object if it contains no other character styles.\n     *\n     * @param {String} props The property to remove from character styles.\n     */\n    removeStyle: function(property) {\n      if (!this.styles || !property || property === '') {\n        return;\n      }\n      var obj = this.styles, line, lineNum, charNum;\n      for (lineNum in obj) {\n        line = obj[lineNum];\n        for (charNum in line) {\n          delete line[charNum][property];\n          if (Object.keys(line[charNum]).length === 0) {\n            delete line[charNum];\n          }\n        }\n        if (Object.keys(line).length === 0) {\n          delete obj[lineNum];\n        }\n      }\n    },\n\n    /**\n     * @private\n     */\n    _extendStyles: function(index, styles) {\n      var loc = this.get2DCursorLocation(index);\n\n      if (!this._getLineStyle(loc.lineIndex)) {\n        this._setLineStyle(loc.lineIndex);\n      }\n\n      if (!this._getStyleDeclaration(loc.lineIndex, loc.charIndex)) {\n        this._setStyleDeclaration(loc.lineIndex, loc.charIndex, {});\n      }\n\n      fabric.util.object.extend(this._getStyleDeclaration(loc.lineIndex, loc.charIndex), styles);\n    },\n\n    /**\n     * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start)\n     * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used.\n     * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.\n     */\n    get2DCursorLocation: function(selectionStart, skipWrapping) {\n      if (typeof selectionStart === 'undefined') {\n        selectionStart = this.selectionStart;\n      }\n      var lines = skipWrapping ? this._unwrappedTextLines : this._textLines,\n          len = lines.length;\n      for (var i = 0; i < len; i++) {\n        if (selectionStart <= lines[i].length) {\n          return {\n            lineIndex: i,\n            charIndex: selectionStart\n          };\n        }\n        selectionStart -= lines[i].length + this.missingNewlineOffset(i);\n      }\n      return {\n        lineIndex: i - 1,\n        charIndex: lines[i - 1].length < selectionStart ? lines[i - 1].length : selectionStart\n      };\n    },\n\n    /**\n     * Gets style of a current selection/cursor (at the start position)\n     * if startIndex or endIndex are not provided, selectionStart or selectionEnd will be used.\n     * @param {Number} [startIndex] Start index to get styles at\n     * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n     * @param {Boolean} [complete] get full style or not\n     * @return {Array} styles an array with one, zero or more Style objects\n     */\n    getSelectionStyles: function(startIndex, endIndex, complete) {\n      if (typeof startIndex === 'undefined') {\n        startIndex = this.selectionStart || 0;\n      }\n      if (typeof endIndex === 'undefined') {\n        endIndex = this.selectionEnd || startIndex;\n      }\n      var styles = [];\n      for (var i = startIndex; i < endIndex; i++) {\n        styles.push(this.getStyleAtPosition(i, complete));\n      }\n      return styles;\n    },\n\n    /**\n     * Gets style of a current selection/cursor position\n     * @param {Number} position  to get styles at\n     * @param {Boolean} [complete] full style if true\n     * @return {Object} style Style object at a specified index\n     * @private\n     */\n    getStyleAtPosition: function(position, complete) {\n      var loc = this.get2DCursorLocation(position),\n          style = complete ? this.getCompleteStyleDeclaration(loc.lineIndex, loc.charIndex) :\n            this._getStyleDeclaration(loc.lineIndex, loc.charIndex);\n      return style || {};\n    },\n\n    /**\n     * Sets style of a current selection, if no selection exist, do not set anything.\n     * @param {Object} [styles] Styles object\n     * @param {Number} [startIndex] Start index to get styles at\n     * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n     * @return {fabric.IText} thisArg\n     * @chainable\n     */\n    setSelectionStyles: function(styles, startIndex, endIndex) {\n      if (typeof startIndex === 'undefined') {\n        startIndex = this.selectionStart || 0;\n      }\n      if (typeof endIndex === 'undefined') {\n        endIndex = this.selectionEnd || startIndex;\n      }\n      for (var i = startIndex; i < endIndex; i++) {\n        this._extendStyles(i, styles);\n      }\n      /* not included in _extendStyles to avoid clearing cache more than once */\n      this._forceClearCache = true;\n      return this;\n    },\n\n    /**\n     * get the reference, not a clone, of the style object for a given character\n     * @param {Number} lineIndex\n     * @param {Number} charIndex\n     * @return {Object} style object\n     */\n    _getStyleDeclaration: function(lineIndex, charIndex) {\n      var lineStyle = this.styles && this.styles[lineIndex];\n      if (!lineStyle) {\n        return null;\n      }\n      return lineStyle[charIndex];\n    },\n\n    /**\n     * return a new object that contains all the style property for a character\n     * the object returned is newly created\n     * @param {Number} lineIndex of the line where the character is\n     * @param {Number} charIndex position of the character on the line\n     * @return {Object} style object\n     */\n    getCompleteStyleDeclaration: function(lineIndex, charIndex) {\n      var style = this._getStyleDeclaration(lineIndex, charIndex) || { },\n          styleObject = { }, prop;\n      for (var i = 0; i < this._styleProperties.length; i++) {\n        prop = this._styleProperties[i];\n        styleObject[prop] = typeof style[prop] === 'undefined' ? this[prop] : style[prop];\n      }\n      return styleObject;\n    },\n\n    /**\n     * @param {Number} lineIndex\n     * @param {Number} charIndex\n     * @param {Object} style\n     * @private\n     */\n    _setStyleDeclaration: function(lineIndex, charIndex, style) {\n      this.styles[lineIndex][charIndex] = style;\n    },\n\n    /**\n     *\n     * @param {Number} lineIndex\n     * @param {Number} charIndex\n     * @private\n     */\n    _deleteStyleDeclaration: function(lineIndex, charIndex) {\n      delete this.styles[lineIndex][charIndex];\n    },\n\n    /**\n     * @param {Number} lineIndex\n     * @return {Boolean} if the line exists or not\n     * @private\n     */\n    _getLineStyle: function(lineIndex) {\n      return !!this.styles[lineIndex];\n    },\n\n    /**\n     * Set the line style to an empty object so that is initialized\n     * @param {Number} lineIndex\n     * @private\n     */\n    _setLineStyle: function(lineIndex) {\n      this.styles[lineIndex] = {};\n    },\n\n    /**\n     * @param {Number} lineIndex\n     * @private\n     */\n    _deleteLineStyle: function(lineIndex) {\n      delete this.styles[lineIndex];\n    }\n  });\n})();\n\n\n(function() {\n\n  function parseDecoration(object) {\n    if (object.textDecoration) {\n      object.textDecoration.indexOf('underline') > -1 && (object.underline = true);\n      object.textDecoration.indexOf('line-through') > -1 && (object.linethrough = true);\n      object.textDecoration.indexOf('overline') > -1 && (object.overline = true);\n      delete object.textDecoration;\n    }\n  }\n\n  /**\n   * IText class (introduced in <b>v1.4</b>) Events are also fired with \"text:\"\n   * prefix when observing canvas.\n   * @class fabric.IText\n   * @extends fabric.Text\n   * @mixes fabric.Observable\n   *\n   * @fires changed\n   * @fires selection:changed\n   * @fires editing:entered\n   * @fires editing:exited\n   *\n   * @return {fabric.IText} thisArg\n   * @see {@link fabric.IText#initialize} for constructor definition\n   *\n   * <p>Supported key combinations:</p>\n   * <pre>\n   *   Move cursor:                    left, right, up, down\n   *   Select character:               shift + left, shift + right\n   *   Select text vertically:         shift + up, shift + down\n   *   Move cursor by word:            alt + left, alt + right\n   *   Select words:                   shift + alt + left, shift + alt + right\n   *   Move cursor to line start/end:  cmd + left, cmd + right or home, end\n   *   Select till start/end of line:  cmd + shift + left, cmd + shift + right or shift + home, shift + end\n   *   Jump to start/end of text:      cmd + up, cmd + down\n   *   Select till start/end of text:  cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown\n   *   Delete character:               backspace\n   *   Delete word:                    alt + backspace\n   *   Delete line:                    cmd + backspace\n   *   Forward delete:                 delete\n   *   Copy text:                      ctrl/cmd + c\n   *   Paste text:                     ctrl/cmd + v\n   *   Cut text:                       ctrl/cmd + x\n   *   Select entire text:             ctrl/cmd + a\n   *   Quit editing                    tab or esc\n   * </pre>\n   *\n   * <p>Supported mouse/touch combination</p>\n   * <pre>\n   *   Position cursor:                click/touch\n   *   Create selection:               click/touch & drag\n   *   Create selection:               click & shift + click\n   *   Select word:                    double click\n   *   Select line:                    triple click\n   * </pre>\n   */\n  fabric.IText = fabric.util.createClass(fabric.Text, fabric.Observable, /** @lends fabric.IText.prototype */ {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'i-text',\n\n    /**\n     * Index where text selection starts (or where cursor is when there is no selection)\n     * @type Number\n     * @default\n     */\n    selectionStart: 0,\n\n    /**\n     * Index where text selection ends\n     * @type Number\n     * @default\n     */\n    selectionEnd: 0,\n\n    /**\n     * Color of text selection\n     * @type String\n     * @default\n     */\n    selectionColor: 'rgba(17,119,255,0.3)',\n\n    /**\n     * Indicates whether text is in editing mode\n     * @type Boolean\n     * @default\n     */\n    isEditing: false,\n\n    /**\n     * Indicates whether a text can be edited\n     * @type Boolean\n     * @default\n     */\n    editable: true,\n\n    /**\n     * Border color of text object while it's in editing mode\n     * @type String\n     * @default\n     */\n    editingBorderColor: 'rgba(102,153,255,0.25)',\n\n    /**\n     * Width of cursor (in px)\n     * @type Number\n     * @default\n     */\n    cursorWidth: 2,\n\n    /**\n     * Color of text cursor color in editing mode.\n     * if not set (default) will take color from the text.\n     * if set to a color value that fabric can understand, it will\n     * be used instead of the color of the text at the current position.\n     * @type String\n     * @default\n     */\n    cursorColor: '',\n\n    /**\n     * Delay between cursor blink (in ms)\n     * @type Number\n     * @default\n     */\n    cursorDelay: 1000,\n\n    /**\n     * Duration of cursor fadein (in ms)\n     * @type Number\n     * @default\n     */\n    cursorDuration: 600,\n\n    /**\n     * Indicates whether internal text char widths can be cached\n     * @type Boolean\n     * @default\n     */\n    caching: true,\n\n    /**\n     * DOM container to append the hiddenTextarea.\n     * An alternative to attaching to the document.body.\n     * Useful to reduce laggish redraw of the full document.body tree and\n     * also with modals event capturing that won't let the textarea take focus.\n     * @type HTMLElement\n     * @default\n     */\n    hiddenTextareaContainer: null,\n\n    /**\n     * @private\n     */\n    _reSpace: /\\s|\\n/,\n\n    /**\n     * @private\n     */\n    _currentCursorOpacity: 0,\n\n    /**\n     * @private\n     */\n    _selectionDirection: null,\n\n    /**\n     * @private\n     */\n    _abortCursorAnimation: false,\n\n    /**\n     * @private\n     */\n    __widthOfSpace: [],\n\n    /**\n     * Helps determining when the text is in composition, so that the cursor\n     * rendering is altered.\n     */\n    inCompositionMode: false,\n\n    /**\n     * Constructor\n     * @param {String} text Text string\n     * @param {Object} [options] Options object\n     * @return {fabric.IText} thisArg\n     */\n    initialize: function(text, options) {\n      this.callSuper('initialize', text, options);\n      this.initBehavior();\n    },\n\n    /**\n     * Sets selection start (left boundary of a selection)\n     * @param {Number} index Index to set selection start to\n     */\n    setSelectionStart: function(index) {\n      index = Math.max(index, 0);\n      this._updateAndFire('selectionStart', index);\n    },\n\n    /**\n     * Sets selection end (right boundary of a selection)\n     * @param {Number} index Index to set selection end to\n     */\n    setSelectionEnd: function(index) {\n      index = Math.min(index, this.text.length);\n      this._updateAndFire('selectionEnd', index);\n    },\n\n    /**\n     * @private\n     * @param {String} property 'selectionStart' or 'selectionEnd'\n     * @param {Number} index new position of property\n     */\n    _updateAndFire: function(property, index) {\n      if (this[property] !== index) {\n        this._fireSelectionChanged();\n        this[property] = index;\n      }\n      this._updateTextarea();\n    },\n\n    /**\n     * Fires the even of selection changed\n     * @private\n     */\n    _fireSelectionChanged: function() {\n      this.fire('selection:changed');\n      this.canvas && this.canvas.fire('text:selection:changed', { target: this });\n    },\n\n    /**\n     * Initialize text dimensions. Render all text on given context\n     * or on a offscreen canvas to get the text width with measureText.\n     * Updates this.width and this.height with the proper values.\n     * Does not return dimensions.\n     * @private\n     */\n    initDimensions: function() {\n      this.isEditing && this.initDelayedCursor();\n      this.clearContextTop();\n      this.callSuper('initDimensions');\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    render: function(ctx) {\n      this.clearContextTop();\n      this.callSuper('render', ctx);\n      // clear the cursorOffsetCache, so we ensure to calculate once per renderCursor\n      // the correct position but not at every cursor animation.\n      this.cursorOffsetCache = { };\n      this.renderCursorOrSelection();\n    },\n\n    /**\n     * @private\n     * @param {CanvasRenderingContext2D} ctx Context to render on\n     */\n    _render: function(ctx) {\n      this.callSuper('_render', ctx);\n    },\n\n    /**\n     * Prepare and clean the contextTop\n     */\n    clearContextTop: function(skipRestore) {\n      if (!this.isEditing || !this.canvas || !this.canvas.contextTop) {\n        return;\n      }\n      var ctx = this.canvas.contextTop, v = this.canvas.viewportTransform;\n      ctx.save();\n      ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n      this.transform(ctx);\n      this._clearTextArea(ctx);\n      skipRestore || ctx.restore();\n    },\n    /**\n     * Renders cursor or selection (depending on what exists)\n     * it does on the contextTop. If contextTop is not available, do nothing.\n     */\n    renderCursorOrSelection: function() {\n      if (!this.isEditing || !this.canvas || !this.canvas.contextTop) {\n        return;\n      }\n      var boundaries = this._getCursorBoundaries(),\n          ctx = this.canvas.contextTop;\n      this.clearContextTop(true);\n      if (this.selectionStart === this.selectionEnd) {\n        this.renderCursor(boundaries, ctx);\n      }\n      else {\n        this.renderSelection(boundaries, ctx);\n      }\n      ctx.restore();\n    },\n\n    _clearTextArea: function(ctx) {\n      // we add 4 pixel, to be sure to do not leave any pixel out\n      var width = this.width + 4, height = this.height + 4;\n      ctx.clearRect(-width / 2, -height / 2, width, height);\n    },\n\n    /**\n     * Returns cursor boundaries (left, top, leftOffset, topOffset)\n     * @private\n     * @param {Array} chars Array of characters\n     * @param {String} typeOfBoundaries\n     */\n    _getCursorBoundaries: function(position) {\n\n      // left/top are left/top of entire text box\n      // leftOffset/topOffset are offset from that left/top point of a text box\n\n      if (typeof position === 'undefined') {\n        position = this.selectionStart;\n      }\n\n      var left = this._getLeftOffset(),\n          top = this._getTopOffset(),\n          offsets = this._getCursorBoundariesOffsets(position);\n      return {\n        left: left,\n        top: top,\n        leftOffset: offsets.left,\n        topOffset: offsets.top\n      };\n    },\n\n    /**\n     * @private\n     */\n    _getCursorBoundariesOffsets: function(position) {\n      if (this.cursorOffsetCache && 'top' in this.cursorOffsetCache) {\n        return this.cursorOffsetCache;\n      }\n      var lineLeftOffset,\n          lineIndex,\n          charIndex,\n          topOffset = 0,\n          leftOffset = 0,\n          boundaries,\n          cursorPosition = this.get2DCursorLocation(position);\n      charIndex = cursorPosition.charIndex;\n      lineIndex = cursorPosition.lineIndex;\n      for (var i = 0; i < lineIndex; i++) {\n        topOffset += this.getHeightOfLine(i);\n      }\n      lineLeftOffset = this._getLineLeftOffset(lineIndex);\n      var bound = this.__charBounds[lineIndex][charIndex];\n      bound && (leftOffset = bound.left);\n      if (this.charSpacing !== 0 && charIndex === this._textLines[lineIndex].length) {\n        leftOffset -= this._getWidthOfCharSpacing();\n      }\n      boundaries = {\n        top: topOffset,\n        left: lineLeftOffset + (leftOffset > 0 ? leftOffset : 0),\n      };\n      if (this.direction === 'rtl') {\n        boundaries.left *= -1;\n      }\n      this.cursorOffsetCache = boundaries;\n      return this.cursorOffsetCache;\n    },\n\n    /**\n     * Renders cursor\n     * @param {Object} boundaries\n     * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n     */\n    renderCursor: function(boundaries, ctx) {\n      var cursorLocation = this.get2DCursorLocation(),\n          lineIndex = cursorLocation.lineIndex,\n          charIndex = cursorLocation.charIndex > 0 ? cursorLocation.charIndex - 1 : 0,\n          charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize'),\n          multiplier = this.scaleX * this.canvas.getZoom(),\n          cursorWidth = this.cursorWidth / multiplier,\n          topOffset = boundaries.topOffset,\n          dy = this.getValueOfPropertyAt(lineIndex, charIndex, 'deltaY');\n      topOffset += (1 - this._fontSizeFraction) * this.getHeightOfLine(lineIndex) / this.lineHeight\n        - charHeight * (1 - this._fontSizeFraction);\n\n      if (this.inCompositionMode) {\n        this.renderSelection(boundaries, ctx);\n      }\n      ctx.fillStyle = this.cursorColor || this.getValueOfPropertyAt(lineIndex, charIndex, 'fill');\n      ctx.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity;\n      ctx.fillRect(\n        boundaries.left + boundaries.leftOffset - cursorWidth / 2,\n        topOffset + boundaries.top + dy,\n        cursorWidth,\n        charHeight);\n    },\n\n    /**\n     * Renders text selection\n     * @param {Object} boundaries Object with left/top/leftOffset/topOffset\n     * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n     */\n    renderSelection: function(boundaries, ctx) {\n\n      var selectionStart = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart,\n          selectionEnd = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd,\n          isJustify = this.textAlign.indexOf('justify') !== -1,\n          start = this.get2DCursorLocation(selectionStart),\n          end = this.get2DCursorLocation(selectionEnd),\n          startLine = start.lineIndex,\n          endLine = end.lineIndex,\n          startChar = start.charIndex < 0 ? 0 : start.charIndex,\n          endChar = end.charIndex < 0 ? 0 : end.charIndex;\n\n      for (var i = startLine; i <= endLine; i++) {\n        var lineOffset = this._getLineLeftOffset(i) || 0,\n            lineHeight = this.getHeightOfLine(i),\n            realLineHeight = 0, boxStart = 0, boxEnd = 0;\n\n        if (i === startLine) {\n          boxStart = this.__charBounds[startLine][startChar].left;\n        }\n        if (i >= startLine && i < endLine) {\n          boxEnd = isJustify && !this.isEndOfWrapping(i) ? this.width : this.getLineWidth(i) || 5; // WTF is this 5?\n        }\n        else if (i === endLine) {\n          if (endChar === 0) {\n            boxEnd = this.__charBounds[endLine][endChar].left;\n          }\n          else {\n            var charSpacing = this._getWidthOfCharSpacing();\n            boxEnd = this.__charBounds[endLine][endChar - 1].left\n              + this.__charBounds[endLine][endChar - 1].width - charSpacing;\n          }\n        }\n        realLineHeight = lineHeight;\n        if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) {\n          lineHeight /= this.lineHeight;\n        }\n        var drawStart = boundaries.left + lineOffset + boxStart,\n            drawWidth = boxEnd - boxStart,\n            drawHeight = lineHeight, extraTop = 0;\n        if (this.inCompositionMode) {\n          ctx.fillStyle = this.compositionColor || 'black';\n          drawHeight = 1;\n          extraTop = lineHeight;\n        }\n        else {\n          ctx.fillStyle = this.selectionColor;\n        }\n        if (this.direction === 'rtl') {\n          drawStart = this.width - drawStart - drawWidth;\n        }\n        ctx.fillRect(\n          drawStart,\n          boundaries.top + boundaries.topOffset + extraTop,\n          drawWidth,\n          drawHeight);\n        boundaries.topOffset += realLineHeight;\n      }\n    },\n\n    /**\n     * High level function to know the height of the cursor.\n     * the currentChar is the one that precedes the cursor\n     * Returns fontSize of char at the current cursor\n     * Unused from the library, is for the end user\n     * @return {Number} Character font size\n     */\n    getCurrentCharFontSize: function() {\n      var cp = this._getCurrentCharIndex();\n      return this.getValueOfPropertyAt(cp.l, cp.c, 'fontSize');\n    },\n\n    /**\n     * High level function to know the color of the cursor.\n     * the currentChar is the one that precedes the cursor\n     * Returns color (fill) of char at the current cursor\n     * if the text object has a pattern or gradient for filler, it will return that.\n     * Unused by the library, is for the end user\n     * @return {String | fabric.Gradient | fabric.Pattern} Character color (fill)\n     */\n    getCurrentCharColor: function() {\n      var cp = this._getCurrentCharIndex();\n      return this.getValueOfPropertyAt(cp.l, cp.c, 'fill');\n    },\n\n    /**\n     * Returns the cursor position for the getCurrent.. functions\n     * @private\n     */\n    _getCurrentCharIndex: function() {\n      var cursorPosition = this.get2DCursorLocation(this.selectionStart, true),\n          charIndex = cursorPosition.charIndex > 0 ? cursorPosition.charIndex - 1 : 0;\n      return { l: cursorPosition.lineIndex, c: charIndex };\n    }\n  });\n\n  /**\n   * Returns fabric.IText instance from an object representation\n   * @static\n   * @memberOf fabric.IText\n   * @param {Object} object Object to create an instance from\n   * @param {function} [callback] invoked with new instance as argument\n   */\n  fabric.IText.fromObject = function(object, callback) {\n    parseDecoration(object);\n    if (object.styles) {\n      for (var i in object.styles) {\n        for (var j in object.styles[i]) {\n          parseDecoration(object.styles[i][j]);\n        }\n      }\n    }\n    fabric.Object._fromObject('IText', object, callback, 'text');\n  };\n})();\n\n\n(function() {\n\n  var clone = fabric.util.object.clone;\n\n  fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n    /**\n     * Initializes all the interactive behavior of IText\n     */\n    initBehavior: function() {\n      this.initAddedHandler();\n      this.initRemovedHandler();\n      this.initCursorSelectionHandlers();\n      this.initDoubleClickSimulation();\n      this.mouseMoveHandler = this.mouseMoveHandler.bind(this);\n    },\n\n    onDeselect: function() {\n      this.isEditing && this.exitEditing();\n      this.selected = false;\n    },\n\n    /**\n     * Initializes \"added\" event handler\n     */\n    initAddedHandler: function() {\n      var _this = this;\n      this.on('added', function() {\n        var canvas = _this.canvas;\n        if (canvas) {\n          if (!canvas._hasITextHandlers) {\n            canvas._hasITextHandlers = true;\n            _this._initCanvasHandlers(canvas);\n          }\n          canvas._iTextInstances = canvas._iTextInstances || [];\n          canvas._iTextInstances.push(_this);\n        }\n      });\n    },\n\n    initRemovedHandler: function() {\n      var _this = this;\n      this.on('removed', function() {\n        var canvas = _this.canvas;\n        if (canvas) {\n          canvas._iTextInstances = canvas._iTextInstances || [];\n          fabric.util.removeFromArray(canvas._iTextInstances, _this);\n          if (canvas._iTextInstances.length === 0) {\n            canvas._hasITextHandlers = false;\n            _this._removeCanvasHandlers(canvas);\n          }\n        }\n      });\n    },\n\n    /**\n     * register canvas event to manage exiting on other instances\n     * @private\n     */\n    _initCanvasHandlers: function(canvas) {\n      canvas._mouseUpITextHandler = function() {\n        if (canvas._iTextInstances) {\n          canvas._iTextInstances.forEach(function(obj) {\n            obj.__isMousedown = false;\n          });\n        }\n      };\n      canvas.on('mouse:up', canvas._mouseUpITextHandler);\n    },\n\n    /**\n     * remove canvas event to manage exiting on other instances\n     * @private\n     */\n    _removeCanvasHandlers: function(canvas) {\n      canvas.off('mouse:up', canvas._mouseUpITextHandler);\n    },\n\n    /**\n     * @private\n     */\n    _tick: function() {\n      this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, '_onTickComplete');\n    },\n\n    /**\n     * @private\n     */\n    _animateCursor: function(obj, targetOpacity, duration, completeMethod) {\n\n      var tickState;\n\n      tickState = {\n        isAborted: false,\n        abort: function() {\n          this.isAborted = true;\n        },\n      };\n\n      obj.animate('_currentCursorOpacity', targetOpacity, {\n        duration: duration,\n        onComplete: function() {\n          if (!tickState.isAborted) {\n            obj[completeMethod]();\n          }\n        },\n        onChange: function() {\n          // we do not want to animate a selection, only cursor\n          if (obj.canvas && obj.selectionStart === obj.selectionEnd) {\n            obj.renderCursorOrSelection();\n          }\n        },\n        abort: function() {\n          return tickState.isAborted;\n        }\n      });\n      return tickState;\n    },\n\n    /**\n     * @private\n     */\n    _onTickComplete: function() {\n\n      var _this = this;\n\n      if (this._cursorTimeout1) {\n        clearTimeout(this._cursorTimeout1);\n      }\n      this._cursorTimeout1 = setTimeout(function() {\n        _this._currentTickCompleteState = _this._animateCursor(_this, 0, this.cursorDuration / 2, '_tick');\n      }, 100);\n    },\n\n    /**\n     * Initializes delayed cursor\n     */\n    initDelayedCursor: function(restart) {\n      var _this = this,\n          delay = restart ? 0 : this.cursorDelay;\n\n      this.abortCursorAnimation();\n      this._currentCursorOpacity = 1;\n      this._cursorTimeout2 = setTimeout(function() {\n        _this._tick();\n      }, delay);\n    },\n\n    /**\n     * Aborts cursor animation and clears all timeouts\n     */\n    abortCursorAnimation: function() {\n      var shouldClear = this._currentTickState || this._currentTickCompleteState,\n          canvas = this.canvas;\n      this._currentTickState && this._currentTickState.abort();\n      this._currentTickCompleteState && this._currentTickCompleteState.abort();\n\n      clearTimeout(this._cursorTimeout1);\n      clearTimeout(this._cursorTimeout2);\n\n      this._currentCursorOpacity = 0;\n      // to clear just itext area we need to transform the context\n      // it may not be worth it\n      if (shouldClear && canvas) {\n        canvas.clearContext(canvas.contextTop || canvas.contextContainer);\n      }\n\n    },\n\n    /**\n     * Selects entire text\n     * @return {fabric.IText} thisArg\n     * @chainable\n     */\n    selectAll: function() {\n      this.selectionStart = 0;\n      this.selectionEnd = this._text.length;\n      this._fireSelectionChanged();\n      this._updateTextarea();\n      return this;\n    },\n\n    /**\n     * Returns selected text\n     * @return {String}\n     */\n    getSelectedText: function() {\n      return this._text.slice(this.selectionStart, this.selectionEnd).join('');\n    },\n\n    /**\n     * Find new selection index representing start of current word according to current selection index\n     * @param {Number} startFrom Current selection index\n     * @return {Number} New selection index\n     */\n    findWordBoundaryLeft: function(startFrom) {\n      var offset = 0, index = startFrom - 1;\n\n      // remove space before cursor first\n      if (this._reSpace.test(this._text[index])) {\n        while (this._reSpace.test(this._text[index])) {\n          offset++;\n          index--;\n        }\n      }\n      while (/\\S/.test(this._text[index]) && index > -1) {\n        offset++;\n        index--;\n      }\n\n      return startFrom - offset;\n    },\n\n    /**\n     * Find new selection index representing end of current word according to current selection index\n     * @param {Number} startFrom Current selection index\n     * @return {Number} New selection index\n     */\n    findWordBoundaryRight: function(startFrom) {\n      var offset = 0, index = startFrom;\n\n      // remove space after cursor first\n      if (this._reSpace.test(this._text[index])) {\n        while (this._reSpace.test(this._text[index])) {\n          offset++;\n          index++;\n        }\n      }\n      while (/\\S/.test(this._text[index]) && index < this._text.length) {\n        offset++;\n        index++;\n      }\n\n      return startFrom + offset;\n    },\n\n    /**\n     * Find new selection index representing start of current line according to current selection index\n     * @param {Number} startFrom Current selection index\n     * @return {Number} New selection index\n     */\n    findLineBoundaryLeft: function(startFrom) {\n      var offset = 0, index = startFrom - 1;\n\n      while (!/\\n/.test(this._text[index]) && index > -1) {\n        offset++;\n        index--;\n      }\n\n      return startFrom - offset;\n    },\n\n    /**\n     * Find new selection index representing end of current line according to current selection index\n     * @param {Number} startFrom Current selection index\n     * @return {Number} New selection index\n     */\n    findLineBoundaryRight: function(startFrom) {\n      var offset = 0, index = startFrom;\n\n      while (!/\\n/.test(this._text[index]) && index < this._text.length) {\n        offset++;\n        index++;\n      }\n\n      return startFrom + offset;\n    },\n\n    /**\n     * Finds index corresponding to beginning or end of a word\n     * @param {Number} selectionStart Index of a character\n     * @param {Number} direction 1 or -1\n     * @return {Number} Index of the beginning or end of a word\n     */\n    searchWordBoundary: function(selectionStart, direction) {\n      var text = this._text,\n          index     = this._reSpace.test(text[selectionStart]) ? selectionStart - 1 : selectionStart,\n          _char     = text[index],\n          // wrong\n          reNonWord = fabric.reNonWord;\n\n      while (!reNonWord.test(_char) && index > 0 && index < text.length) {\n        index += direction;\n        _char = text[index];\n      }\n      if (reNonWord.test(_char)) {\n        index += direction === 1 ? 0 : 1;\n      }\n      return index;\n    },\n\n    /**\n     * Selects a word based on the index\n     * @param {Number} selectionStart Index of a character\n     */\n    selectWord: function(selectionStart) {\n      selectionStart = selectionStart || this.selectionStart;\n      var newSelectionStart = this.searchWordBoundary(selectionStart, -1), /* search backwards */\n          newSelectionEnd = this.searchWordBoundary(selectionStart, 1); /* search forward */\n\n      this.selectionStart = newSelectionStart;\n      this.selectionEnd = newSelectionEnd;\n      this._fireSelectionChanged();\n      this._updateTextarea();\n      this.renderCursorOrSelection();\n    },\n\n    /**\n     * Selects a line based on the index\n     * @param {Number} selectionStart Index of a character\n     * @return {fabric.IText} thisArg\n     * @chainable\n     */\n    selectLine: function(selectionStart) {\n      selectionStart = selectionStart || this.selectionStart;\n      var newSelectionStart = this.findLineBoundaryLeft(selectionStart),\n          newSelectionEnd = this.findLineBoundaryRight(selectionStart);\n\n      this.selectionStart = newSelectionStart;\n      this.selectionEnd = newSelectionEnd;\n      this._fireSelectionChanged();\n      this._updateTextarea();\n      return this;\n    },\n\n    /**\n     * Enters editing state\n     * @return {fabric.IText} thisArg\n     * @chainable\n     */\n    enterEditing: function(e) {\n      if (this.isEditing || !this.editable) {\n        return;\n      }\n\n      if (this.canvas) {\n        this.canvas.calcOffset();\n        this.exitEditingOnOthers(this.canvas);\n      }\n\n      this.isEditing = true;\n\n      this.initHiddenTextarea(e);\n      this.hiddenTextarea.focus();\n      this.hiddenTextarea.value = this.text;\n      this._updateTextarea();\n      this._saveEditingProps();\n      this._setEditingProps();\n      this._textBeforeEdit = this.text;\n\n      this._tick();\n      this.fire('editing:entered');\n      this._fireSelectionChanged();\n      if (!this.canvas) {\n        return this;\n      }\n      this.canvas.fire('text:editing:entered', { target: this });\n      this.initMouseMoveHandler();\n      this.canvas.requestRenderAll();\n      return this;\n    },\n\n    exitEditingOnOthers: function(canvas) {\n      if (canvas._iTextInstances) {\n        canvas._iTextInstances.forEach(function(obj) {\n          obj.selected = false;\n          if (obj.isEditing) {\n            obj.exitEditing();\n          }\n        });\n      }\n    },\n\n    /**\n     * Initializes \"mousemove\" event handler\n     */\n    initMouseMoveHandler: function() {\n      this.canvas.on('mouse:move', this.mouseMoveHandler);\n    },\n\n    /**\n     * @private\n     */\n    mouseMoveHandler: function(options) {\n      if (!this.__isMousedown || !this.isEditing) {\n        return;\n      }\n\n      var newSelectionStart = this.getSelectionStartFromPointer(options.e),\n          currentStart = this.selectionStart,\n          currentEnd = this.selectionEnd;\n      if (\n        (newSelectionStart !== this.__selectionStartOnMouseDown || currentStart === currentEnd)\n        &&\n        (currentStart === newSelectionStart || currentEnd === newSelectionStart)\n      ) {\n        return;\n      }\n      if (newSelectionStart > this.__selectionStartOnMouseDown) {\n        this.selectionStart = this.__selectionStartOnMouseDown;\n        this.selectionEnd = newSelectionStart;\n      }\n      else {\n        this.selectionStart = newSelectionStart;\n        this.selectionEnd = this.__selectionStartOnMouseDown;\n      }\n      if (this.selectionStart !== currentStart || this.selectionEnd !== currentEnd) {\n        this.restartCursorIfNeeded();\n        this._fireSelectionChanged();\n        this._updateTextarea();\n        this.renderCursorOrSelection();\n      }\n    },\n\n    /**\n     * @private\n     */\n    _setEditingProps: function() {\n      this.hoverCursor = 'text';\n\n      if (this.canvas) {\n        this.canvas.defaultCursor = this.canvas.moveCursor = 'text';\n      }\n\n      this.borderColor = this.editingBorderColor;\n      this.hasControls = this.selectable = false;\n      this.lockMovementX = this.lockMovementY = true;\n    },\n\n    /**\n     * convert from textarea to grapheme indexes\n     */\n    fromStringToGraphemeSelection: function(start, end, text) {\n      var smallerTextStart = text.slice(0, start),\n          graphemeStart = fabric.util.string.graphemeSplit(smallerTextStart).length;\n      if (start === end) {\n        return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n      }\n      var smallerTextEnd = text.slice(start, end),\n          graphemeEnd = fabric.util.string.graphemeSplit(smallerTextEnd).length;\n      return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n    },\n\n    /**\n     * convert from fabric to textarea values\n     */\n    fromGraphemeToStringSelection: function(start, end, _text) {\n      var smallerTextStart = _text.slice(0, start),\n          graphemeStart = smallerTextStart.join('').length;\n      if (start === end) {\n        return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n      }\n      var smallerTextEnd = _text.slice(start, end),\n          graphemeEnd = smallerTextEnd.join('').length;\n      return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n    },\n\n    /**\n     * @private\n     */\n    _updateTextarea: function() {\n      this.cursorOffsetCache = { };\n      if (!this.hiddenTextarea) {\n        return;\n      }\n      if (!this.inCompositionMode) {\n        var newSelection = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text);\n        this.hiddenTextarea.selectionStart = newSelection.selectionStart;\n        this.hiddenTextarea.selectionEnd = newSelection.selectionEnd;\n      }\n      this.updateTextareaPosition();\n    },\n\n    /**\n     * @private\n     */\n    updateFromTextArea: function() {\n      if (!this.hiddenTextarea) {\n        return;\n      }\n      this.cursorOffsetCache = { };\n      this.text = this.hiddenTextarea.value;\n      if (this._shouldClearDimensionCache()) {\n        this.initDimensions();\n        this.setCoords();\n      }\n      var newSelection = this.fromStringToGraphemeSelection(\n        this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value);\n      this.selectionEnd = this.selectionStart = newSelection.selectionEnd;\n      if (!this.inCompositionMode) {\n        this.selectionStart = newSelection.selectionStart;\n      }\n      this.updateTextareaPosition();\n    },\n\n    /**\n     * @private\n     */\n    updateTextareaPosition: function() {\n      if (this.selectionStart === this.selectionEnd) {\n        var style = this._calcTextareaPosition();\n        this.hiddenTextarea.style.left = style.left;\n        this.hiddenTextarea.style.top = style.top;\n      }\n    },\n\n    /**\n     * @private\n     * @return {Object} style contains style for hiddenTextarea\n     */\n    _calcTextareaPosition: function() {\n      if (!this.canvas) {\n        return { x: 1, y: 1 };\n      }\n      var desiredPosition = this.inCompositionMode ? this.compositionStart : this.selectionStart,\n          boundaries = this._getCursorBoundaries(desiredPosition),\n          cursorLocation = this.get2DCursorLocation(desiredPosition),\n          lineIndex = cursorLocation.lineIndex,\n          charIndex = cursorLocation.charIndex,\n          charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize') * this.lineHeight,\n          leftOffset = boundaries.leftOffset,\n          m = this.calcTransformMatrix(),\n          p = {\n            x: boundaries.left + leftOffset,\n            y: boundaries.top + boundaries.topOffset + charHeight\n          },\n          retinaScaling = this.canvas.getRetinaScaling(),\n          upperCanvas = this.canvas.upperCanvasEl,\n          upperCanvasWidth = upperCanvas.width / retinaScaling,\n          upperCanvasHeight = upperCanvas.height / retinaScaling,\n          maxWidth = upperCanvasWidth - charHeight,\n          maxHeight = upperCanvasHeight - charHeight,\n          scaleX = upperCanvas.clientWidth / upperCanvasWidth,\n          scaleY = upperCanvas.clientHeight / upperCanvasHeight;\n\n      p = fabric.util.transformPoint(p, m);\n      p = fabric.util.transformPoint(p, this.canvas.viewportTransform);\n      p.x *= scaleX;\n      p.y *= scaleY;\n      if (p.x < 0) {\n        p.x = 0;\n      }\n      if (p.x > maxWidth) {\n        p.x = maxWidth;\n      }\n      if (p.y < 0) {\n        p.y = 0;\n      }\n      if (p.y > maxHeight) {\n        p.y = maxHeight;\n      }\n\n      // add canvas offset on document\n      p.x += this.canvas._offset.left;\n      p.y += this.canvas._offset.top;\n\n      return { left: p.x + 'px', top: p.y + 'px', fontSize: charHeight + 'px', charHeight: charHeight };\n    },\n\n    /**\n     * @private\n     */\n    _saveEditingProps: function() {\n      this._savedProps = {\n        hasControls: this.hasControls,\n        borderColor: this.borderColor,\n        lockMovementX: this.lockMovementX,\n        lockMovementY: this.lockMovementY,\n        hoverCursor: this.hoverCursor,\n        selectable: this.selectable,\n        defaultCursor: this.canvas && this.canvas.defaultCursor,\n        moveCursor: this.canvas && this.canvas.moveCursor\n      };\n    },\n\n    /**\n     * @private\n     */\n    _restoreEditingProps: function() {\n      if (!this._savedProps) {\n        return;\n      }\n\n      this.hoverCursor = this._savedProps.hoverCursor;\n      this.hasControls = this._savedProps.hasControls;\n      this.borderColor = this._savedProps.borderColor;\n      this.selectable = this._savedProps.selectable;\n      this.lockMovementX = this._savedProps.lockMovementX;\n      this.lockMovementY = this._savedProps.lockMovementY;\n\n      if (this.canvas) {\n        this.canvas.defaultCursor = this._savedProps.defaultCursor;\n        this.canvas.moveCursor = this._savedProps.moveCursor;\n      }\n    },\n\n    /**\n     * Exits from editing state\n     * @return {fabric.IText} thisArg\n     * @chainable\n     */\n    exitEditing: function() {\n      var isTextChanged = (this._textBeforeEdit !== this.text);\n      var hiddenTextarea = this.hiddenTextarea;\n      this.selected = false;\n      this.isEditing = false;\n\n      this.selectionEnd = this.selectionStart;\n\n      if (hiddenTextarea) {\n        hiddenTextarea.blur && hiddenTextarea.blur();\n        hiddenTextarea.parentNode && hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n      }\n      this.hiddenTextarea = null;\n      this.abortCursorAnimation();\n      this._restoreEditingProps();\n      this._currentCursorOpacity = 0;\n      if (this._shouldClearDimensionCache()) {\n        this.initDimensions();\n        this.setCoords();\n      }\n      this.fire('editing:exited');\n      isTextChanged && this.fire('modified');\n      if (this.canvas) {\n        this.canvas.off('mouse:move', this.mouseMoveHandler);\n        this.canvas.fire('text:editing:exited', { target: this });\n        isTextChanged && this.canvas.fire('object:modified', { target: this });\n      }\n      return this;\n    },\n\n    /**\n     * @private\n     */\n    _removeExtraneousStyles: function() {\n      for (var prop in this.styles) {\n        if (!this._textLines[prop]) {\n          delete this.styles[prop];\n        }\n      }\n    },\n\n    /**\n     * remove and reflow a style block from start to end.\n     * @param {Number} start linear start position for removal (included in removal)\n     * @param {Number} end linear end position for removal ( excluded from removal )\n     */\n    removeStyleFromTo: function(start, end) {\n      var cursorStart = this.get2DCursorLocation(start, true),\n          cursorEnd = this.get2DCursorLocation(end, true),\n          lineStart = cursorStart.lineIndex,\n          charStart = cursorStart.charIndex,\n          lineEnd = cursorEnd.lineIndex,\n          charEnd = cursorEnd.charIndex,\n          i, styleObj;\n      if (lineStart !== lineEnd) {\n        // step1 remove the trailing of lineStart\n        if (this.styles[lineStart]) {\n          for (i = charStart; i < this._unwrappedTextLines[lineStart].length; i++) {\n            delete this.styles[lineStart][i];\n          }\n        }\n        // step2 move the trailing of lineEnd to lineStart if needed\n        if (this.styles[lineEnd]) {\n          for (i = charEnd; i < this._unwrappedTextLines[lineEnd].length; i++) {\n            styleObj = this.styles[lineEnd][i];\n            if (styleObj) {\n              this.styles[lineStart] || (this.styles[lineStart] = { });\n              this.styles[lineStart][charStart + i - charEnd] = styleObj;\n            }\n          }\n        }\n        // step3 detects lines will be completely removed.\n        for (i = lineStart + 1; i <= lineEnd; i++) {\n          delete this.styles[i];\n        }\n        // step4 shift remaining lines.\n        this.shiftLineStyles(lineEnd, lineStart - lineEnd);\n      }\n      else {\n        // remove and shift left on the same line\n        if (this.styles[lineStart]) {\n          styleObj = this.styles[lineStart];\n          var diff = charEnd - charStart, numericChar, _char;\n          for (i = charStart; i < charEnd; i++) {\n            delete styleObj[i];\n          }\n          for (_char in this.styles[lineStart]) {\n            numericChar = parseInt(_char, 10);\n            if (numericChar >= charEnd) {\n              styleObj[numericChar - diff] = styleObj[_char];\n              delete styleObj[_char];\n            }\n          }\n        }\n      }\n    },\n\n    /**\n     * Shifts line styles up or down\n     * @param {Number} lineIndex Index of a line\n     * @param {Number} offset Can any number?\n     */\n    shiftLineStyles: function(lineIndex, offset) {\n      // shift all line styles by offset upward or downward\n      // do not clone deep. we need new array, not new style objects\n      var clonedStyles = clone(this.styles);\n      for (var line in this.styles) {\n        var numericLine = parseInt(line, 10);\n        if (numericLine > lineIndex) {\n          this.styles[numericLine + offset] = clonedStyles[numericLine];\n          if (!clonedStyles[numericLine - offset]) {\n            delete this.styles[numericLine];\n          }\n        }\n      }\n    },\n\n    restartCursorIfNeeded: function() {\n      if (!this._currentTickState || this._currentTickState.isAborted\n        || !this._currentTickCompleteState || this._currentTickCompleteState.isAborted\n      ) {\n        this.initDelayedCursor();\n      }\n    },\n\n    /**\n     * Handle insertion of more consecutive style lines for when one or more\n     * newlines gets added to the text. Since current style needs to be shifted\n     * first we shift the current style of the number lines needed, then we add\n     * new lines from the last to the first.\n     * @param {Number} lineIndex Index of a line\n     * @param {Number} charIndex Index of a char\n     * @param {Number} qty number of lines to add\n     * @param {Array} copiedStyle Array of objects styles\n     */\n    insertNewlineStyleObject: function(lineIndex, charIndex, qty, copiedStyle) {\n      var currentCharStyle,\n          newLineStyles = {},\n          somethingAdded = false,\n          isEndOfLine = this._unwrappedTextLines[lineIndex].length === charIndex;\n\n      qty || (qty = 1);\n      this.shiftLineStyles(lineIndex, qty);\n      if (this.styles[lineIndex]) {\n        currentCharStyle = this.styles[lineIndex][charIndex === 0 ? charIndex : charIndex - 1];\n      }\n      // we clone styles of all chars\n      // after cursor onto the current line\n      for (var index in this.styles[lineIndex]) {\n        var numIndex = parseInt(index, 10);\n        if (numIndex >= charIndex) {\n          somethingAdded = true;\n          newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index];\n          // remove lines from the previous line since they're on a new line now\n          if (!(isEndOfLine && charIndex === 0)) {\n            delete this.styles[lineIndex][index];\n          }\n        }\n      }\n      var styleCarriedOver = false;\n      if (somethingAdded && !isEndOfLine) {\n        // if is end of line, the extra style we copied\n        // is probably not something we want\n        this.styles[lineIndex + qty] = newLineStyles;\n        styleCarriedOver = true;\n      }\n      if (styleCarriedOver) {\n        // skip the last line of since we already prepared it.\n        qty--;\n      }\n      // for the all the lines or all the other lines\n      // we clone current char style onto the next (otherwise empty) line\n      while (qty > 0) {\n        if (copiedStyle && copiedStyle[qty - 1]) {\n          this.styles[lineIndex + qty] = { 0: clone(copiedStyle[qty - 1]) };\n        }\n        else if (currentCharStyle) {\n          this.styles[lineIndex + qty] = { 0: clone(currentCharStyle) };\n        }\n        else {\n          delete this.styles[lineIndex + qty];\n        }\n        qty--;\n      }\n      this._forceClearCache = true;\n    },\n\n    /**\n     * Inserts style object for a given line/char index\n     * @param {Number} lineIndex Index of a line\n     * @param {Number} charIndex Index of a char\n     * @param {Number} quantity number Style object to insert, if given\n     * @param {Array} copiedStyle array of style objects\n     */\n    insertCharStyleObject: function(lineIndex, charIndex, quantity, copiedStyle) {\n      if (!this.styles) {\n        this.styles = {};\n      }\n      var currentLineStyles       = this.styles[lineIndex],\n          currentLineStylesCloned = currentLineStyles ? clone(currentLineStyles) : {};\n\n      quantity || (quantity = 1);\n      // shift all char styles by quantity forward\n      // 0,1,2,3 -> (charIndex=2) -> 0,1,3,4 -> (insert 2) -> 0,1,2,3,4\n      for (var index in currentLineStylesCloned) {\n        var numericIndex = parseInt(index, 10);\n        if (numericIndex >= charIndex) {\n          currentLineStyles[numericIndex + quantity] = currentLineStylesCloned[numericIndex];\n          // only delete the style if there was nothing moved there\n          if (!currentLineStylesCloned[numericIndex - quantity]) {\n            delete currentLineStyles[numericIndex];\n          }\n        }\n      }\n      this._forceClearCache = true;\n      if (copiedStyle) {\n        while (quantity--) {\n          if (!Object.keys(copiedStyle[quantity]).length) {\n            continue;\n          }\n          if (!this.styles[lineIndex]) {\n            this.styles[lineIndex] = {};\n          }\n          this.styles[lineIndex][charIndex + quantity] = clone(copiedStyle[quantity]);\n        }\n        return;\n      }\n      if (!currentLineStyles) {\n        return;\n      }\n      var newStyle = currentLineStyles[charIndex ? charIndex - 1 : 1];\n      while (newStyle && quantity--) {\n        this.styles[lineIndex][charIndex + quantity] = clone(newStyle);\n      }\n    },\n\n    /**\n     * Inserts style object(s)\n     * @param {Array} insertedText Characters at the location where style is inserted\n     * @param {Number} start cursor index for inserting style\n     * @param {Array} [copiedStyle] array of style objects to insert.\n     */\n    insertNewStyleBlock: function(insertedText, start, copiedStyle) {\n      var cursorLoc = this.get2DCursorLocation(start, true),\n          addedLines = [0], linesLength = 0;\n      // get an array of how many char per lines are being added.\n      for (var i = 0; i < insertedText.length; i++) {\n        if (insertedText[i] === '\\n') {\n          linesLength++;\n          addedLines[linesLength] = 0;\n        }\n        else {\n          addedLines[linesLength]++;\n        }\n      }\n      // for the first line copy the style from the current char position.\n      if (addedLines[0] > 0) {\n        this.insertCharStyleObject(cursorLoc.lineIndex, cursorLoc.charIndex, addedLines[0], copiedStyle);\n        copiedStyle = copiedStyle && copiedStyle.slice(addedLines[0] + 1);\n      }\n      linesLength && this.insertNewlineStyleObject(\n        cursorLoc.lineIndex, cursorLoc.charIndex + addedLines[0], linesLength);\n      for (var i = 1; i < linesLength; i++) {\n        if (addedLines[i] > 0) {\n          this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n        }\n        else if (copiedStyle) {\n          this.styles[cursorLoc.lineIndex + i][0] = copiedStyle[0];\n        }\n        copiedStyle = copiedStyle && copiedStyle.slice(addedLines[i] + 1);\n      }\n      // we use i outside the loop to get it like linesLength\n      if (addedLines[i] > 0) {\n        this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n      }\n    },\n\n    /**\n     * Set the selectionStart and selectionEnd according to the new position of cursor\n     * mimic the key - mouse navigation when shift is pressed.\n     */\n    setSelectionStartEndWithShift: function(start, end, newSelection) {\n      if (newSelection <= start) {\n        if (end === start) {\n          this._selectionDirection = 'left';\n        }\n        else if (this._selectionDirection === 'right') {\n          this._selectionDirection = 'left';\n          this.selectionEnd = start;\n        }\n        this.selectionStart = newSelection;\n      }\n      else if (newSelection > start && newSelection < end) {\n        if (this._selectionDirection === 'right') {\n          this.selectionEnd = newSelection;\n        }\n        else {\n          this.selectionStart = newSelection;\n        }\n      }\n      else {\n        // newSelection is > selection start and end\n        if (end === start) {\n          this._selectionDirection = 'right';\n        }\n        else if (this._selectionDirection === 'left') {\n          this._selectionDirection = 'right';\n          this.selectionStart = end;\n        }\n        this.selectionEnd = newSelection;\n      }\n    },\n\n    setSelectionInBoundaries: function() {\n      var length = this.text.length;\n      if (this.selectionStart > length) {\n        this.selectionStart = length;\n      }\n      else if (this.selectionStart < 0) {\n        this.selectionStart = 0;\n      }\n      if (this.selectionEnd > length) {\n        this.selectionEnd = length;\n      }\n      else if (this.selectionEnd < 0) {\n        this.selectionEnd = 0;\n      }\n    }\n  });\n})();\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n  /**\n   * Initializes \"dbclick\" event handler\n   */\n  initDoubleClickSimulation: function() {\n\n    // for double click\n    this.__lastClickTime = +new Date();\n\n    // for triple click\n    this.__lastLastClickTime = +new Date();\n\n    this.__lastPointer = { };\n\n    this.on('mousedown', this.onMouseDown);\n  },\n\n  /**\n   * Default event handler to simulate triple click\n   * @private\n   */\n  onMouseDown: function(options) {\n    if (!this.canvas) {\n      return;\n    }\n    this.__newClickTime = +new Date();\n    var newPointer = options.pointer;\n    if (this.isTripleClick(newPointer)) {\n      this.fire('tripleclick', options);\n      this._stopEvent(options.e);\n    }\n    this.__lastLastClickTime = this.__lastClickTime;\n    this.__lastClickTime = this.__newClickTime;\n    this.__lastPointer = newPointer;\n    this.__lastIsEditing = this.isEditing;\n    this.__lastSelected = this.selected;\n  },\n\n  isTripleClick: function(newPointer) {\n    return this.__newClickTime - this.__lastClickTime < 500 &&\n        this.__lastClickTime - this.__lastLastClickTime < 500 &&\n        this.__lastPointer.x === newPointer.x &&\n        this.__lastPointer.y === newPointer.y;\n  },\n\n  /**\n   * @private\n   */\n  _stopEvent: function(e) {\n    e.preventDefault && e.preventDefault();\n    e.stopPropagation && e.stopPropagation();\n  },\n\n  /**\n   * Initializes event handlers related to cursor or selection\n   */\n  initCursorSelectionHandlers: function() {\n    this.initMousedownHandler();\n    this.initMouseupHandler();\n    this.initClicks();\n  },\n\n  /**\n   * Default handler for double click, select a word\n   */\n  doubleClickHandler: function(options) {\n    if (!this.isEditing) {\n      return;\n    }\n    this.selectWord(this.getSelectionStartFromPointer(options.e));\n  },\n\n  /**\n   * Default handler for triple click, select a line\n   */\n  tripleClickHandler: function(options) {\n    if (!this.isEditing) {\n      return;\n    }\n    this.selectLine(this.getSelectionStartFromPointer(options.e));\n  },\n\n  /**\n   * Initializes double and triple click event handlers\n   */\n  initClicks: function() {\n    this.on('mousedblclick', this.doubleClickHandler);\n    this.on('tripleclick', this.tripleClickHandler);\n  },\n\n  /**\n   * Default event handler for the basic functionalities needed on _mouseDown\n   * can be overridden to do something different.\n   * Scope of this implementation is: find the click position, set selectionStart\n   * find selectionEnd, initialize the drawing of either cursor or selection area\n   * initializing a mousedDown on a text area will cancel fabricjs knowledge of\n   * current compositionMode. It will be set to false.\n   */\n  _mouseDownHandler: function(options) {\n    if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n      return;\n    }\n\n    this.__isMousedown = true;\n\n    if (this.selected) {\n      this.inCompositionMode = false;\n      this.setCursorByClick(options.e);\n    }\n\n    if (this.isEditing) {\n      this.__selectionStartOnMouseDown = this.selectionStart;\n      if (this.selectionStart === this.selectionEnd) {\n        this.abortCursorAnimation();\n      }\n      this.renderCursorOrSelection();\n    }\n  },\n\n  /**\n   * Default event handler for the basic functionalities needed on mousedown:before\n   * can be overridden to do something different.\n   * Scope of this implementation is: verify the object is already selected when mousing down\n   */\n  _mouseDownHandlerBefore: function(options) {\n    if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n      return;\n    }\n    // we want to avoid that an object that was selected and then becomes unselectable,\n    // may trigger editing mode in some way.\n    this.selected = this === this.canvas._activeObject;\n  },\n\n  /**\n   * Initializes \"mousedown\" event handler\n   */\n  initMousedownHandler: function() {\n    this.on('mousedown', this._mouseDownHandler);\n    this.on('mousedown:before', this._mouseDownHandlerBefore);\n  },\n\n  /**\n   * Initializes \"mouseup\" event handler\n   */\n  initMouseupHandler: function() {\n    this.on('mouseup', this.mouseUpHandler);\n  },\n\n  /**\n   * standard handler for mouse up, overridable\n   * @private\n   */\n  mouseUpHandler: function(options) {\n    this.__isMousedown = false;\n    if (!this.editable || this.group ||\n      (options.transform && options.transform.actionPerformed) ||\n      (options.e.button && options.e.button !== 1)) {\n      return;\n    }\n\n    if (this.canvas) {\n      var currentActive = this.canvas._activeObject;\n      if (currentActive && currentActive !== this) {\n        // avoid running this logic when there is an active object\n        // this because is possible with shift click and fast clicks,\n        // to rapidly deselect and reselect this object and trigger an enterEdit\n        return;\n      }\n    }\n\n    if (this.__lastSelected && !this.__corner) {\n      this.selected = false;\n      this.__lastSelected = false;\n      this.enterEditing(options.e);\n      if (this.selectionStart === this.selectionEnd) {\n        this.initDelayedCursor(true);\n      }\n      else {\n        this.renderCursorOrSelection();\n      }\n    }\n    else {\n      this.selected = true;\n    }\n  },\n\n  /**\n   * Changes cursor location in a text depending on passed pointer (x/y) object\n   * @param {Event} e Event object\n   */\n  setCursorByClick: function(e) {\n    var newSelection = this.getSelectionStartFromPointer(e),\n        start = this.selectionStart, end = this.selectionEnd;\n    if (e.shiftKey) {\n      this.setSelectionStartEndWithShift(start, end, newSelection);\n    }\n    else {\n      this.selectionStart = newSelection;\n      this.selectionEnd = newSelection;\n    }\n    if (this.isEditing) {\n      this._fireSelectionChanged();\n      this._updateTextarea();\n    }\n  },\n\n  /**\n   * Returns index of a character corresponding to where an object was clicked\n   * @param {Event} e Event object\n   * @return {Number} Index of a character\n   */\n  getSelectionStartFromPointer: function(e) {\n    var mouseOffset = this.getLocalPointer(e),\n        prevWidth = 0,\n        width = 0,\n        height = 0,\n        charIndex = 0,\n        lineIndex = 0,\n        lineLeftOffset,\n        line;\n    for (var i = 0, len = this._textLines.length; i < len; i++) {\n      if (height <= mouseOffset.y) {\n        height += this.getHeightOfLine(i) * this.scaleY;\n        lineIndex = i;\n        if (i > 0) {\n          charIndex += this._textLines[i - 1].length + this.missingNewlineOffset(i - 1);\n        }\n      }\n      else {\n        break;\n      }\n    }\n    lineLeftOffset = this._getLineLeftOffset(lineIndex);\n    width = lineLeftOffset * this.scaleX;\n    line = this._textLines[lineIndex];\n    // handling of RTL: in order to get things work correctly,\n    // we assume RTL writing is mirrored compared to LTR writing.\n    // so in position detection we mirror the X offset, and when is time\n    // of rendering it, we mirror it again.\n    if (this.direction === 'rtl') {\n      mouseOffset.x = this.width * this.scaleX - mouseOffset.x + width;\n    }\n    for (var j = 0, jlen = line.length; j < jlen; j++) {\n      prevWidth = width;\n      // i removed something about flipX here, check.\n      width += this.__charBounds[lineIndex][j].kernedWidth * this.scaleX;\n      if (width <= mouseOffset.x) {\n        charIndex++;\n      }\n      else {\n        break;\n      }\n    }\n    return this._getNewSelectionStartFromOffset(mouseOffset, prevWidth, width, charIndex, jlen);\n  },\n\n  /**\n   * @private\n   */\n  _getNewSelectionStartFromOffset: function(mouseOffset, prevWidth, width, index, jlen) {\n    // we need Math.abs because when width is after the last char, the offset is given as 1, while is 0\n    var distanceBtwLastCharAndCursor = mouseOffset.x - prevWidth,\n        distanceBtwNextCharAndCursor = width - mouseOffset.x,\n        offset = distanceBtwNextCharAndCursor > distanceBtwLastCharAndCursor ||\n          distanceBtwNextCharAndCursor < 0 ? 0 : 1,\n        newSelectionStart = index + offset;\n    // if object is horizontally flipped, mirror cursor location from the end\n    if (this.flipX) {\n      newSelectionStart = jlen - newSelectionStart;\n    }\n\n    if (newSelectionStart > this._text.length) {\n      newSelectionStart = this._text.length;\n    }\n\n    return newSelectionStart;\n  }\n});\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n  /**\n   * Initializes hidden textarea (needed to bring up keyboard in iOS)\n   */\n  initHiddenTextarea: function() {\n    this.hiddenTextarea = fabric.document.createElement('textarea');\n    this.hiddenTextarea.setAttribute('autocapitalize', 'off');\n    this.hiddenTextarea.setAttribute('autocorrect', 'off');\n    this.hiddenTextarea.setAttribute('autocomplete', 'off');\n    this.hiddenTextarea.setAttribute('spellcheck', 'false');\n    this.hiddenTextarea.setAttribute('data-fabric-hiddentextarea', '');\n    this.hiddenTextarea.setAttribute('wrap', 'off');\n    var style = this._calcTextareaPosition();\n    // line-height: 1px; was removed from the style to fix this:\n    // https://bugs.chromium.org/p/chromium/issues/detail?id=870966\n    this.hiddenTextarea.style.cssText = 'position: absolute; top: ' + style.top +\n    '; left: ' + style.left + '; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px;' +\n    ' paddingｰtop: ' + style.fontSize + ';';\n\n    if (this.hiddenTextareaContainer) {\n      this.hiddenTextareaContainer.appendChild(this.hiddenTextarea);\n    }\n    else {\n      fabric.document.body.appendChild(this.hiddenTextarea);\n    }\n\n    fabric.util.addListener(this.hiddenTextarea, 'keydown', this.onKeyDown.bind(this));\n    fabric.util.addListener(this.hiddenTextarea, 'keyup', this.onKeyUp.bind(this));\n    fabric.util.addListener(this.hiddenTextarea, 'input', this.onInput.bind(this));\n    fabric.util.addListener(this.hiddenTextarea, 'copy', this.copy.bind(this));\n    fabric.util.addListener(this.hiddenTextarea, 'cut', this.copy.bind(this));\n    fabric.util.addListener(this.hiddenTextarea, 'paste', this.paste.bind(this));\n    fabric.util.addListener(this.hiddenTextarea, 'compositionstart', this.onCompositionStart.bind(this));\n    fabric.util.addListener(this.hiddenTextarea, 'compositionupdate', this.onCompositionUpdate.bind(this));\n    fabric.util.addListener(this.hiddenTextarea, 'compositionend', this.onCompositionEnd.bind(this));\n\n    if (!this._clickHandlerInitialized && this.canvas) {\n      fabric.util.addListener(this.canvas.upperCanvasEl, 'click', this.onClick.bind(this));\n      this._clickHandlerInitialized = true;\n    }\n  },\n\n  /**\n   * For functionalities on keyDown\n   * Map a special key to a function of the instance/prototype\n   * If you need different behaviour for ESC or TAB or arrows, you have to change\n   * this map setting the name of a function that you build on the fabric.Itext or\n   * your prototype.\n   * the map change will affect all Instances unless you need for only some text Instances\n   * in that case you have to clone this object and assign your Instance.\n   * this.keysMap = fabric.util.object.clone(this.keysMap);\n   * The function must be in fabric.Itext.prototype.myFunction And will receive event as args[0]\n   */\n  keysMap: {\n    9:  'exitEditing',\n    27: 'exitEditing',\n    33: 'moveCursorUp',\n    34: 'moveCursorDown',\n    35: 'moveCursorRight',\n    36: 'moveCursorLeft',\n    37: 'moveCursorLeft',\n    38: 'moveCursorUp',\n    39: 'moveCursorRight',\n    40: 'moveCursorDown',\n  },\n\n  keysMapRtl: {\n    9:  'exitEditing',\n    27: 'exitEditing',\n    33: 'moveCursorUp',\n    34: 'moveCursorDown',\n    35: 'moveCursorLeft',\n    36: 'moveCursorRight',\n    37: 'moveCursorRight',\n    38: 'moveCursorUp',\n    39: 'moveCursorLeft',\n    40: 'moveCursorDown',\n  },\n\n  /**\n   * For functionalities on keyUp + ctrl || cmd\n   */\n  ctrlKeysMapUp: {\n    67: 'copy',\n    88: 'cut'\n  },\n\n  /**\n   * For functionalities on keyDown + ctrl || cmd\n   */\n  ctrlKeysMapDown: {\n    65: 'selectAll'\n  },\n\n  onClick: function() {\n    // No need to trigger click event here, focus is enough to have the keyboard appear on Android\n    this.hiddenTextarea && this.hiddenTextarea.focus();\n  },\n\n  /**\n   * Handles keydown event\n   * only used for arrows and combination of modifier keys.\n   * @param {Event} e Event object\n   */\n  onKeyDown: function(e) {\n    if (!this.isEditing) {\n      return;\n    }\n    var keyMap = this.direction === 'rtl' ? this.keysMapRtl : this.keysMap;\n    if (e.keyCode in keyMap) {\n      this[keyMap[e.keyCode]](e);\n    }\n    else if ((e.keyCode in this.ctrlKeysMapDown) && (e.ctrlKey || e.metaKey)) {\n      this[this.ctrlKeysMapDown[e.keyCode]](e);\n    }\n    else {\n      return;\n    }\n    e.stopImmediatePropagation();\n    e.preventDefault();\n    if (e.keyCode >= 33 && e.keyCode <= 40) {\n      // if i press an arrow key just update selection\n      this.inCompositionMode = false;\n      this.clearContextTop();\n      this.renderCursorOrSelection();\n    }\n    else {\n      this.canvas && this.canvas.requestRenderAll();\n    }\n  },\n\n  /**\n   * Handles keyup event\n   * We handle KeyUp because ie11 and edge have difficulties copy/pasting\n   * if a copy/cut event fired, keyup is dismissed\n   * @param {Event} e Event object\n   */\n  onKeyUp: function(e) {\n    if (!this.isEditing || this._copyDone || this.inCompositionMode) {\n      this._copyDone = false;\n      return;\n    }\n    if ((e.keyCode in this.ctrlKeysMapUp) && (e.ctrlKey || e.metaKey)) {\n      this[this.ctrlKeysMapUp[e.keyCode]](e);\n    }\n    else {\n      return;\n    }\n    e.stopImmediatePropagation();\n    e.preventDefault();\n    this.canvas && this.canvas.requestRenderAll();\n  },\n\n  /**\n   * Handles onInput event\n   * @param {Event} e Event object\n   */\n  onInput: function(e) {\n    var fromPaste = this.fromPaste;\n    this.fromPaste = false;\n    e && e.stopPropagation();\n    if (!this.isEditing) {\n      return;\n    }\n    // decisions about style changes.\n    var nextText = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,\n        charCount = this._text.length,\n        nextCharCount = nextText.length,\n        removedText, insertedText,\n        charDiff = nextCharCount - charCount,\n        selectionStart = this.selectionStart, selectionEnd = this.selectionEnd,\n        selection = selectionStart !== selectionEnd,\n        copiedStyle, removeFrom, removeTo;\n    if (this.hiddenTextarea.value === '') {\n      this.styles = { };\n      this.updateFromTextArea();\n      this.fire('changed');\n      if (this.canvas) {\n        this.canvas.fire('text:changed', { target: this });\n        this.canvas.requestRenderAll();\n      }\n      return;\n    }\n\n    var textareaSelection = this.fromStringToGraphemeSelection(\n      this.hiddenTextarea.selectionStart,\n      this.hiddenTextarea.selectionEnd,\n      this.hiddenTextarea.value\n    );\n    var backDelete = selectionStart > textareaSelection.selectionStart;\n\n    if (selection) {\n      removedText = this._text.slice(selectionStart, selectionEnd);\n      charDiff += selectionEnd - selectionStart;\n    }\n    else if (nextCharCount < charCount) {\n      if (backDelete) {\n        removedText = this._text.slice(selectionEnd + charDiff, selectionEnd);\n      }\n      else {\n        removedText = this._text.slice(selectionStart, selectionStart - charDiff);\n      }\n    }\n    insertedText = nextText.slice(textareaSelection.selectionEnd - charDiff, textareaSelection.selectionEnd);\n    if (removedText && removedText.length) {\n      if (insertedText.length) {\n        // let's copy some style before deleting.\n        // we want to copy the style before the cursor OR the style at the cursor if selection\n        // is bigger than 0.\n        copiedStyle = this.getSelectionStyles(selectionStart, selectionStart + 1, false);\n        // now duplicate the style one for each inserted text.\n        copiedStyle = insertedText.map(function() {\n          // this return an array of references, but that is fine since we are\n          // copying the style later.\n          return copiedStyle[0];\n        });\n      }\n      if (selection) {\n        removeFrom = selectionStart;\n        removeTo = selectionEnd;\n      }\n      else if (backDelete) {\n        // detect differences between forwardDelete and backDelete\n        removeFrom = selectionEnd - removedText.length;\n        removeTo = selectionEnd;\n      }\n      else {\n        removeFrom = selectionEnd;\n        removeTo = selectionEnd + removedText.length;\n      }\n      this.removeStyleFromTo(removeFrom, removeTo);\n    }\n    if (insertedText.length) {\n      if (fromPaste && insertedText.join('') === fabric.copiedText && !fabric.disableStyleCopyPaste) {\n        copiedStyle = fabric.copiedTextStyle;\n      }\n      this.insertNewStyleBlock(insertedText, selectionStart, copiedStyle);\n    }\n    this.updateFromTextArea();\n    this.fire('changed');\n    if (this.canvas) {\n      this.canvas.fire('text:changed', { target: this });\n      this.canvas.requestRenderAll();\n    }\n  },\n  /**\n   * Composition start\n   */\n  onCompositionStart: function() {\n    this.inCompositionMode = true;\n  },\n\n  /**\n   * Composition end\n   */\n  onCompositionEnd: function() {\n    this.inCompositionMode = false;\n  },\n\n  // /**\n  //  * Composition update\n  //  */\n  onCompositionUpdate: function(e) {\n    this.compositionStart = e.target.selectionStart;\n    this.compositionEnd = e.target.selectionEnd;\n    this.updateTextareaPosition();\n  },\n\n  /**\n   * Copies selected text\n   * @param {Event} e Event object\n   */\n  copy: function() {\n    if (this.selectionStart === this.selectionEnd) {\n      //do not cut-copy if no selection\n      return;\n    }\n\n    fabric.copiedText = this.getSelectedText();\n    if (!fabric.disableStyleCopyPaste) {\n      fabric.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, true);\n    }\n    else {\n      fabric.copiedTextStyle = null;\n    }\n    this._copyDone = true;\n  },\n\n  /**\n   * Pastes text\n   * @param {Event} e Event object\n   */\n  paste: function() {\n    this.fromPaste = true;\n  },\n\n  /**\n   * @private\n   * @param {Event} e Event object\n   * @return {Object} Clipboard data object\n   */\n  _getClipboardData: function(e) {\n    return (e && e.clipboardData) || fabric.window.clipboardData;\n  },\n\n  /**\n   * Finds the width in pixels before the cursor on the same line\n   * @private\n   * @param {Number} lineIndex\n   * @param {Number} charIndex\n   * @return {Number} widthBeforeCursor width before cursor\n   */\n  _getWidthBeforeCursor: function(lineIndex, charIndex) {\n    var widthBeforeCursor = this._getLineLeftOffset(lineIndex), bound;\n\n    if (charIndex > 0) {\n      bound = this.__charBounds[lineIndex][charIndex - 1];\n      widthBeforeCursor += bound.left + bound.width;\n    }\n    return widthBeforeCursor;\n  },\n\n  /**\n   * Gets start offset of a selection\n   * @param {Event} e Event object\n   * @param {Boolean} isRight\n   * @return {Number}\n   */\n  getDownCursorOffset: function(e, isRight) {\n    var selectionProp = this._getSelectionForOffset(e, isRight),\n        cursorLocation = this.get2DCursorLocation(selectionProp),\n        lineIndex = cursorLocation.lineIndex;\n    // if on last line, down cursor goes to end of line\n    if (lineIndex === this._textLines.length - 1 || e.metaKey || e.keyCode === 34) {\n      // move to the end of a text\n      return this._text.length - selectionProp;\n    }\n    var charIndex = cursorLocation.charIndex,\n        widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n        indexOnOtherLine = this._getIndexOnLine(lineIndex + 1, widthBeforeCursor),\n        textAfterCursor = this._textLines[lineIndex].slice(charIndex);\n    return textAfterCursor.length + indexOnOtherLine + 1 + this.missingNewlineOffset(lineIndex);\n  },\n\n  /**\n   * private\n   * Helps finding if the offset should be counted from Start or End\n   * @param {Event} e Event object\n   * @param {Boolean} isRight\n   * @return {Number}\n   */\n  _getSelectionForOffset: function(e, isRight) {\n    if (e.shiftKey && this.selectionStart !== this.selectionEnd && isRight) {\n      return this.selectionEnd;\n    }\n    else {\n      return this.selectionStart;\n    }\n  },\n\n  /**\n   * @param {Event} e Event object\n   * @param {Boolean} isRight\n   * @return {Number}\n   */\n  getUpCursorOffset: function(e, isRight) {\n    var selectionProp = this._getSelectionForOffset(e, isRight),\n        cursorLocation = this.get2DCursorLocation(selectionProp),\n        lineIndex = cursorLocation.lineIndex;\n    if (lineIndex === 0 || e.metaKey || e.keyCode === 33) {\n      // if on first line, up cursor goes to start of line\n      return -selectionProp;\n    }\n    var charIndex = cursorLocation.charIndex,\n        widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n        indexOnOtherLine = this._getIndexOnLine(lineIndex - 1, widthBeforeCursor),\n        textBeforeCursor = this._textLines[lineIndex].slice(0, charIndex),\n        missingNewlineOffset = this.missingNewlineOffset(lineIndex - 1);\n    // return a negative offset\n    return -this._textLines[lineIndex - 1].length\n     + indexOnOtherLine - textBeforeCursor.length + (1 - missingNewlineOffset);\n  },\n\n  /**\n   * for a given width it founds the matching character.\n   * @private\n   */\n  _getIndexOnLine: function(lineIndex, width) {\n\n    var line = this._textLines[lineIndex],\n        lineLeftOffset = this._getLineLeftOffset(lineIndex),\n        widthOfCharsOnLine = lineLeftOffset,\n        indexOnLine = 0, charWidth, foundMatch;\n\n    for (var j = 0, jlen = line.length; j < jlen; j++) {\n      charWidth = this.__charBounds[lineIndex][j].width;\n      widthOfCharsOnLine += charWidth;\n      if (widthOfCharsOnLine > width) {\n        foundMatch = true;\n        var leftEdge = widthOfCharsOnLine - charWidth,\n            rightEdge = widthOfCharsOnLine,\n            offsetFromLeftEdge = Math.abs(leftEdge - width),\n            offsetFromRightEdge = Math.abs(rightEdge - width);\n\n        indexOnLine = offsetFromRightEdge < offsetFromLeftEdge ? j : (j - 1);\n        break;\n      }\n    }\n\n    // reached end\n    if (!foundMatch) {\n      indexOnLine = line.length - 1;\n    }\n\n    return indexOnLine;\n  },\n\n\n  /**\n   * Moves cursor down\n   * @param {Event} e Event object\n   */\n  moveCursorDown: function(e) {\n    if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n      return;\n    }\n    this._moveCursorUpOrDown('Down', e);\n  },\n\n  /**\n   * Moves cursor up\n   * @param {Event} e Event object\n   */\n  moveCursorUp: function(e) {\n    if (this.selectionStart === 0 && this.selectionEnd === 0) {\n      return;\n    }\n    this._moveCursorUpOrDown('Up', e);\n  },\n\n  /**\n   * Moves cursor up or down, fires the events\n   * @param {String} direction 'Up' or 'Down'\n   * @param {Event} e Event object\n   */\n  _moveCursorUpOrDown: function(direction, e) {\n    // getUpCursorOffset\n    // getDownCursorOffset\n    var action = 'get' + direction + 'CursorOffset',\n        offset = this[action](e, this._selectionDirection === 'right');\n    if (e.shiftKey) {\n      this.moveCursorWithShift(offset);\n    }\n    else {\n      this.moveCursorWithoutShift(offset);\n    }\n    if (offset !== 0) {\n      this.setSelectionInBoundaries();\n      this.abortCursorAnimation();\n      this._currentCursorOpacity = 1;\n      this.initDelayedCursor();\n      this._fireSelectionChanged();\n      this._updateTextarea();\n    }\n  },\n\n  /**\n   * Moves cursor with shift\n   * @param {Number} offset\n   */\n  moveCursorWithShift: function(offset) {\n    var newSelection = this._selectionDirection === 'left'\n      ? this.selectionStart + offset\n      : this.selectionEnd + offset;\n    this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, newSelection);\n    return offset !== 0;\n  },\n\n  /**\n   * Moves cursor up without shift\n   * @param {Number} offset\n   */\n  moveCursorWithoutShift: function(offset) {\n    if (offset < 0) {\n      this.selectionStart += offset;\n      this.selectionEnd = this.selectionStart;\n    }\n    else {\n      this.selectionEnd += offset;\n      this.selectionStart = this.selectionEnd;\n    }\n    return offset !== 0;\n  },\n\n  /**\n   * Moves cursor left\n   * @param {Event} e Event object\n   */\n  moveCursorLeft: function(e) {\n    if (this.selectionStart === 0 && this.selectionEnd === 0) {\n      return;\n    }\n    this._moveCursorLeftOrRight('Left', e);\n  },\n\n  /**\n   * @private\n   * @return {Boolean} true if a change happened\n   */\n  _move: function(e, prop, direction) {\n    var newValue;\n    if (e.altKey) {\n      newValue = this['findWordBoundary' + direction](this[prop]);\n    }\n    else if (e.metaKey || e.keyCode === 35 ||  e.keyCode === 36 ) {\n      newValue = this['findLineBoundary' + direction](this[prop]);\n    }\n    else {\n      this[prop] += direction === 'Left' ? -1 : 1;\n      return true;\n    }\n    if (typeof newValue !== undefined && this[prop] !== newValue) {\n      this[prop] = newValue;\n      return true;\n    }\n  },\n\n  /**\n   * @private\n   */\n  _moveLeft: function(e, prop) {\n    return this._move(e, prop, 'Left');\n  },\n\n  /**\n   * @private\n   */\n  _moveRight: function(e, prop) {\n    return this._move(e, prop, 'Right');\n  },\n\n  /**\n   * Moves cursor left without keeping selection\n   * @param {Event} e\n   */\n  moveCursorLeftWithoutShift: function(e) {\n    var change = true;\n    this._selectionDirection = 'left';\n\n    // only move cursor when there is no selection,\n    // otherwise we discard it, and leave cursor on same place\n    if (this.selectionEnd === this.selectionStart && this.selectionStart !== 0) {\n      change = this._moveLeft(e, 'selectionStart');\n\n    }\n    this.selectionEnd = this.selectionStart;\n    return change;\n  },\n\n  /**\n   * Moves cursor left while keeping selection\n   * @param {Event} e\n   */\n  moveCursorLeftWithShift: function(e) {\n    if (this._selectionDirection === 'right' && this.selectionStart !== this.selectionEnd) {\n      return this._moveLeft(e, 'selectionEnd');\n    }\n    else if (this.selectionStart !== 0){\n      this._selectionDirection = 'left';\n      return this._moveLeft(e, 'selectionStart');\n    }\n  },\n\n  /**\n   * Moves cursor right\n   * @param {Event} e Event object\n   */\n  moveCursorRight: function(e) {\n    if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n      return;\n    }\n    this._moveCursorLeftOrRight('Right', e);\n  },\n\n  /**\n   * Moves cursor right or Left, fires event\n   * @param {String} direction 'Left', 'Right'\n   * @param {Event} e Event object\n   */\n  _moveCursorLeftOrRight: function(direction, e) {\n    var actionName = 'moveCursor' + direction + 'With';\n    this._currentCursorOpacity = 1;\n\n    if (e.shiftKey) {\n      actionName += 'Shift';\n    }\n    else {\n      actionName += 'outShift';\n    }\n    if (this[actionName](e)) {\n      this.abortCursorAnimation();\n      this.initDelayedCursor();\n      this._fireSelectionChanged();\n      this._updateTextarea();\n    }\n  },\n\n  /**\n   * Moves cursor right while keeping selection\n   * @param {Event} e\n   */\n  moveCursorRightWithShift: function(e) {\n    if (this._selectionDirection === 'left' && this.selectionStart !== this.selectionEnd) {\n      return this._moveRight(e, 'selectionStart');\n    }\n    else if (this.selectionEnd !== this._text.length) {\n      this._selectionDirection = 'right';\n      return this._moveRight(e, 'selectionEnd');\n    }\n  },\n\n  /**\n   * Moves cursor right without keeping selection\n   * @param {Event} e Event object\n   */\n  moveCursorRightWithoutShift: function(e) {\n    var changed = true;\n    this._selectionDirection = 'right';\n\n    if (this.selectionStart === this.selectionEnd) {\n      changed = this._moveRight(e, 'selectionStart');\n      this.selectionEnd = this.selectionStart;\n    }\n    else {\n      this.selectionStart = this.selectionEnd;\n    }\n    return changed;\n  },\n\n  /**\n   * Removes characters from start/end\n   * start/end ar per grapheme position in _text array.\n   *\n   * @param {Number} start\n   * @param {Number} end default to start + 1\n   */\n  removeChars: function(start, end) {\n    if (typeof end === 'undefined') {\n      end = start + 1;\n    }\n    this.removeStyleFromTo(start, end);\n    this._text.splice(start, end - start);\n    this.text = this._text.join('');\n    this.set('dirty', true);\n    if (this._shouldClearDimensionCache()) {\n      this.initDimensions();\n      this.setCoords();\n    }\n    this._removeExtraneousStyles();\n  },\n\n  /**\n   * insert characters at start position, before start position.\n   * start  equal 1 it means the text get inserted between actual grapheme 0 and 1\n   * if style array is provided, it must be as the same length of text in graphemes\n   * if end is provided and is bigger than start, old text is replaced.\n   * start/end ar per grapheme position in _text array.\n   *\n   * @param {String} text text to insert\n   * @param {Array} style array of style objects\n   * @param {Number} start\n   * @param {Number} end default to start + 1\n   */\n  insertChars: function(text, style, start, end) {\n    if (typeof end === 'undefined') {\n      end = start;\n    }\n    if (end > start) {\n      this.removeStyleFromTo(start, end);\n    }\n    var graphemes = fabric.util.string.graphemeSplit(text);\n    this.insertNewStyleBlock(graphemes, start, style);\n    this._text = [].concat(this._text.slice(0, start), graphemes, this._text.slice(end));\n    this.text = this._text.join('');\n    this.set('dirty', true);\n    if (this._shouldClearDimensionCache()) {\n      this.initDimensions();\n      this.setCoords();\n    }\n    this._removeExtraneousStyles();\n  },\n\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n  var toFixed = fabric.util.toFixed,\n      multipleSpacesRegex = /  +/g;\n\n  fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n\n    /**\n     * Returns SVG representation of an instance\n     * @param {Function} [reviver] Method for further parsing of svg representation.\n     * @return {String} svg representation of an instance\n     */\n    _toSVG: function() {\n      var offsets = this._getSVGLeftTopOffsets(),\n          textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft);\n      return this._wrapSVGTextAndBg(textAndBg);\n    },\n\n    /**\n     * Returns svg representation of an instance\n     * @param {Function} [reviver] Method for further parsing of svg representation.\n     * @return {String} svg representation of an instance\n     */\n    toSVG: function(reviver) {\n      return this._createBaseSVGMarkup(\n        this._toSVG(),\n        { reviver: reviver, noStyle: true, withShadow: true }\n      );\n    },\n\n    /**\n     * @private\n     */\n    _getSVGLeftTopOffsets: function() {\n      return {\n        textLeft: -this.width / 2,\n        textTop: -this.height / 2,\n        lineTop: this.getHeightOfLine(0)\n      };\n    },\n\n    /**\n     * @private\n     */\n    _wrapSVGTextAndBg: function(textAndBg) {\n      var noShadow = true,\n          textDecoration = this.getSvgTextDecoration(this);\n      return [\n        textAndBg.textBgRects.join(''),\n        '\\t\\t<text xml:space=\"preserve\" ',\n        (this.fontFamily ? 'font-family=\"' + this.fontFamily.replace(/\"/g, '\\'') + '\" ' : ''),\n        (this.fontSize ? 'font-size=\"' + this.fontSize + '\" ' : ''),\n        (this.fontStyle ? 'font-style=\"' + this.fontStyle + '\" ' : ''),\n        (this.fontWeight ? 'font-weight=\"' + this.fontWeight + '\" ' : ''),\n        (textDecoration ? 'text-decoration=\"' + textDecoration + '\" ' : ''),\n        'style=\"', this.getSvgStyles(noShadow), '\"', this.addPaintOrder(), ' >',\n        textAndBg.textSpans.join(''),\n        '</text>\\n'\n      ];\n    },\n\n    /**\n     * @private\n     * @param {Number} textTopOffset Text top offset\n     * @param {Number} textLeftOffset Text left offset\n     * @return {Object}\n     */\n    _getSVGTextAndBg: function(textTopOffset, textLeftOffset) {\n      var textSpans = [],\n          textBgRects = [],\n          height = textTopOffset, lineOffset;\n      // bounding-box background\n      this._setSVGBg(textBgRects);\n\n      // text and text-background\n      for (var i = 0, len = this._textLines.length; i < len; i++) {\n        lineOffset = this._getLineLeftOffset(i);\n        if (this.textBackgroundColor || this.styleHas('textBackgroundColor', i)) {\n          this._setSVGTextLineBg(textBgRects, i, textLeftOffset + lineOffset, height);\n        }\n        this._setSVGTextLineText(textSpans, i, textLeftOffset + lineOffset, height);\n        height += this.getHeightOfLine(i);\n      }\n\n      return {\n        textSpans: textSpans,\n        textBgRects: textBgRects\n      };\n    },\n\n    /**\n     * @private\n     */\n    _createTextCharSpan: function(_char, styleDecl, left, top) {\n      var shouldUseWhitespace = _char !== _char.trim() || _char.match(multipleSpacesRegex),\n          styleProps = this.getSvgSpanStyles(styleDecl, shouldUseWhitespace),\n          fillStyles = styleProps ? 'style=\"' + styleProps + '\"' : '',\n          dy = styleDecl.deltaY, dySpan = '',\n          NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n      if (dy) {\n        dySpan = ' dy=\"' + toFixed(dy, NUM_FRACTION_DIGITS) + '\" ';\n      }\n      return [\n        '<tspan x=\"', toFixed(left, NUM_FRACTION_DIGITS), '\" y=\"',\n        toFixed(top, NUM_FRACTION_DIGITS), '\" ', dySpan,\n        fillStyles, '>',\n        fabric.util.string.escapeXml(_char),\n        '</tspan>'\n      ].join('');\n    },\n\n    _setSVGTextLineText: function(textSpans, lineIndex, textLeftOffset, textTopOffset) {\n      // set proper line offset\n      var lineHeight = this.getHeightOfLine(lineIndex),\n          isJustify = this.textAlign.indexOf('justify') !== -1,\n          actualStyle,\n          nextStyle,\n          charsToRender = '',\n          charBox, style,\n          boxWidth = 0,\n          line = this._textLines[lineIndex],\n          timeToRender;\n\n      textTopOffset += lineHeight * (1 - this._fontSizeFraction) / this.lineHeight;\n      for (var i = 0, len = line.length - 1; i <= len; i++) {\n        timeToRender = i === len || this.charSpacing;\n        charsToRender += line[i];\n        charBox = this.__charBounds[lineIndex][i];\n        if (boxWidth === 0) {\n          textLeftOffset += charBox.kernedWidth - charBox.width;\n          boxWidth += charBox.width;\n        }\n        else {\n          boxWidth += charBox.kernedWidth;\n        }\n        if (isJustify && !timeToRender) {\n          if (this._reSpaceAndTab.test(line[i])) {\n            timeToRender = true;\n          }\n        }\n        if (!timeToRender) {\n          // if we have charSpacing, we render char by char\n          actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n          nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n          timeToRender = this._hasStyleChangedForSvg(actualStyle, nextStyle);\n        }\n        if (timeToRender) {\n          style = this._getStyleDeclaration(lineIndex, i) || { };\n          textSpans.push(this._createTextCharSpan(charsToRender, style, textLeftOffset, textTopOffset));\n          charsToRender = '';\n          actualStyle = nextStyle;\n          textLeftOffset += boxWidth;\n          boxWidth = 0;\n        }\n      }\n    },\n\n    _pushTextBgRect: function(textBgRects, color, left, top, width, height) {\n      var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n      textBgRects.push(\n        '\\t\\t<rect ',\n        this._getFillAttributes(color),\n        ' x=\"',\n        toFixed(left, NUM_FRACTION_DIGITS),\n        '\" y=\"',\n        toFixed(top, NUM_FRACTION_DIGITS),\n        '\" width=\"',\n        toFixed(width, NUM_FRACTION_DIGITS),\n        '\" height=\"',\n        toFixed(height, NUM_FRACTION_DIGITS),\n        '\"></rect>\\n');\n    },\n\n    _setSVGTextLineBg: function(textBgRects, i, leftOffset, textTopOffset) {\n      var line = this._textLines[i],\n          heightOfLine = this.getHeightOfLine(i) / this.lineHeight,\n          boxWidth = 0,\n          boxStart = 0,\n          charBox, currentColor,\n          lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n      for (var j = 0, jlen = line.length; j < jlen; j++) {\n        charBox = this.__charBounds[i][j];\n        currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n        if (currentColor !== lastColor) {\n          lastColor && this._pushTextBgRect(textBgRects, lastColor, leftOffset + boxStart,\n            textTopOffset, boxWidth, heightOfLine);\n          boxStart = charBox.left;\n          boxWidth = charBox.width;\n          lastColor = currentColor;\n        }\n        else {\n          boxWidth += charBox.kernedWidth;\n        }\n      }\n      currentColor && this._pushTextBgRect(textBgRects, currentColor, leftOffset + boxStart,\n        textTopOffset, boxWidth, heightOfLine);\n    },\n\n    /**\n     * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values\n     * we work around it by \"moving\" alpha channel into opacity attribute and setting fill's alpha to 1\n     *\n     * @private\n     * @param {*} value\n     * @return {String}\n     */\n    _getFillAttributes: function(value) {\n      var fillColor = (value && typeof value === 'string') ? new fabric.Color(value) : '';\n      if (!fillColor || !fillColor.getSource() || fillColor.getAlpha() === 1) {\n        return 'fill=\"' + value + '\"';\n      }\n      return 'opacity=\"' + fillColor.getAlpha() + '\" fill=\"' + fillColor.setAlpha(1).toRgb() + '\"';\n    },\n\n    /**\n     * @private\n     */\n    _getSVGLineTopOffset: function(lineIndex) {\n      var lineTopOffset = 0, lastHeight = 0;\n      for (var j = 0; j < lineIndex; j++) {\n        lineTopOffset += this.getHeightOfLine(j);\n      }\n      lastHeight = this.getHeightOfLine(j);\n      return {\n        lineTop: lineTopOffset,\n        offset: (this._fontSizeMult - this._fontSizeFraction) * lastHeight / (this.lineHeight * this._fontSizeMult)\n      };\n    },\n\n    /**\n     * Returns styles-string for svg-export\n     * @param {Boolean} skipShadow a boolean to skip shadow filter output\n     * @return {String}\n     */\n    getSvgStyles: function(skipShadow) {\n      var svgStyle = fabric.Object.prototype.getSvgStyles.call(this, skipShadow);\n      return svgStyle + ' white-space: pre;';\n    },\n  });\n})();\n/* _TO_SVG_END_ */\n\n\n(function(global) {\n\n  'use strict';\n\n  var fabric = global.fabric || (global.fabric = {});\n\n  /**\n   * Textbox class, based on IText, allows the user to resize the text rectangle\n   * and wraps lines automatically. Textboxes have their Y scaling locked, the\n   * user can only change width. Height is adjusted automatically based on the\n   * wrapping of lines.\n   * @class fabric.Textbox\n   * @extends fabric.IText\n   * @mixes fabric.Observable\n   * @return {fabric.Textbox} thisArg\n   * @see {@link fabric.Textbox#initialize} for constructor definition\n   */\n  fabric.Textbox = fabric.util.createClass(fabric.IText, fabric.Observable, {\n\n    /**\n     * Type of an object\n     * @type String\n     * @default\n     */\n    type: 'textbox',\n\n    /**\n     * Minimum width of textbox, in pixels.\n     * @type Number\n     * @default\n     */\n    minWidth: 20,\n\n    /**\n     * Minimum calculated width of a textbox, in pixels.\n     * fixed to 2 so that an empty textbox cannot go to 0\n     * and is still selectable without text.\n     * @type Number\n     * @default\n     */\n    dynamicMinWidth: 2,\n\n    /**\n     * Cached array of text wrapping.\n     * @type Array\n     */\n    __cachedLines: null,\n\n    /**\n     * Override standard Object class values\n     */\n    lockScalingFlip: true,\n\n    /**\n     * Override standard Object class values\n     * Textbox needs this on false\n     */\n    noScaleCache: false,\n\n    /**\n     * Properties which when set cause object to change dimensions\n     * @type Object\n     * @private\n     */\n    _dimensionAffectingProps: fabric.Text.prototype._dimensionAffectingProps.concat('width'),\n\n    /**\n     * Use this regular expression to split strings in breakable lines\n     * @private\n     */\n    _wordJoiners: /[ \\t\\r]/,\n\n    /**\n     * Use this boolean property in order to split strings that have no white space concept.\n     * this is a cheap way to help with chinese/japanese\n     * @type Boolean\n     * @since 2.6.0\n     */\n    splitByGrapheme: false,\n\n    /**\n     * Unlike superclass's version of this function, Textbox does not update\n     * its width.\n     * @private\n     * @override\n     */\n    initDimensions: function() {\n      if (this.__skipDimension) {\n        return;\n      }\n      this.isEditing && this.initDelayedCursor();\n      this.clearContextTop();\n      this._clearCache();\n      // clear dynamicMinWidth as it will be different after we re-wrap line\n      this.dynamicMinWidth = 0;\n      // wrap lines\n      this._styleMap = this._generateStyleMap(this._splitText());\n      // if after wrapping, the width is smaller than dynamicMinWidth, change the width and re-wrap\n      if (this.dynamicMinWidth > this.width) {\n        this._set('width', this.dynamicMinWidth);\n      }\n      if (this.textAlign.indexOf('justify') !== -1) {\n        // once text is measured we need to make space fatter to make justified text.\n        this.enlargeSpaces();\n      }\n      // clear cache and re-calculate height\n      this.height = this.calcTextHeight();\n      this.saveState({ propertySet: '_dimensionAffectingProps' });\n    },\n\n    /**\n     * Generate an object that translates the style object so that it is\n     * broken up by visual lines (new lines and automatic wrapping).\n     * The original text styles object is broken up by actual lines (new lines only),\n     * which is only sufficient for Text / IText\n     * @private\n     */\n    _generateStyleMap: function(textInfo) {\n      var realLineCount     = 0,\n          realLineCharCount = 0,\n          charCount         = 0,\n          map               = {};\n\n      for (var i = 0; i < textInfo.graphemeLines.length; i++) {\n        if (textInfo.graphemeText[charCount] === '\\n' && i > 0) {\n          realLineCharCount = 0;\n          charCount++;\n          realLineCount++;\n        }\n        else if (!this.splitByGrapheme && this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) && i > 0) {\n          // this case deals with space's that are removed from end of lines when wrapping\n          realLineCharCount++;\n          charCount++;\n        }\n\n        map[i] = { line: realLineCount, offset: realLineCharCount };\n\n        charCount += textInfo.graphemeLines[i].length;\n        realLineCharCount += textInfo.graphemeLines[i].length;\n      }\n\n      return map;\n    },\n\n    /**\n     * Returns true if object has a style property or has it on a specified line\n     * @param {Number} lineIndex\n     * @return {Boolean}\n     */\n    styleHas: function(property, lineIndex) {\n      if (this._styleMap && !this.isWrapping) {\n        var map = this._styleMap[lineIndex];\n        if (map) {\n          lineIndex = map.line;\n        }\n      }\n      return fabric.Text.prototype.styleHas.call(this, property, lineIndex);\n    },\n\n    /**\n     * Returns true if object has no styling or no styling in a line\n     * @param {Number} lineIndex , lineIndex is on wrapped lines.\n     * @return {Boolean}\n     */\n    isEmptyStyles: function(lineIndex) {\n      if (!this.styles) {\n        return true;\n      }\n      var offset = 0, nextLineIndex = lineIndex + 1, nextOffset, obj, shouldLimit = false,\n          map = this._styleMap[lineIndex], mapNextLine = this._styleMap[lineIndex + 1];\n      if (map) {\n        lineIndex = map.line;\n        offset = map.offset;\n      }\n      if (mapNextLine) {\n        nextLineIndex = mapNextLine.line;\n        shouldLimit = nextLineIndex === lineIndex;\n        nextOffset = mapNextLine.offset;\n      }\n      obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n      for (var p1 in obj) {\n        for (var p2 in obj[p1]) {\n          if (p2 >= offset && (!shouldLimit || p2 < nextOffset)) {\n            // eslint-disable-next-line no-unused-vars\n            for (var p3 in obj[p1][p2]) {\n              return false;\n            }\n          }\n        }\n      }\n      return true;\n    },\n\n    /**\n     * @param {Number} lineIndex\n     * @param {Number} charIndex\n     * @private\n     */\n    _getStyleDeclaration: function(lineIndex, charIndex) {\n      if (this._styleMap && !this.isWrapping) {\n        var map = this._styleMap[lineIndex];\n        if (!map) {\n          return null;\n        }\n        lineIndex = map.line;\n        charIndex = map.offset + charIndex;\n      }\n      return this.callSuper('_getStyleDeclaration', lineIndex, charIndex);\n    },\n\n    /**\n     * @param {Number} lineIndex\n     * @param {Number} charIndex\n     * @param {Object} style\n     * @private\n     */\n    _setStyleDeclaration: function(lineIndex, charIndex, style) {\n      var map = this._styleMap[lineIndex];\n      lineIndex = map.line;\n      charIndex = map.offset + charIndex;\n\n      this.styles[lineIndex][charIndex] = style;\n    },\n\n    /**\n     * @param {Number} lineIndex\n     * @param {Number} charIndex\n     * @private\n     */\n    _deleteStyleDeclaration: function(lineIndex, charIndex) {\n      var map = this._styleMap[lineIndex];\n      lineIndex = map.line;\n      charIndex = map.offset + charIndex;\n      delete this.styles[lineIndex][charIndex];\n    },\n\n    /**\n     * probably broken need a fix\n     * Returns the real style line that correspond to the wrapped lineIndex line\n     * Used just to verify if the line does exist or not.\n     * @param {Number} lineIndex\n     * @returns {Boolean} if the line exists or not\n     * @private\n     */\n    _getLineStyle: function(lineIndex) {\n      var map = this._styleMap[lineIndex];\n      return !!this.styles[map.line];\n    },\n\n    /**\n     * Set the line style to an empty object so that is initialized\n     * @param {Number} lineIndex\n     * @param {Object} style\n     * @private\n     */\n    _setLineStyle: function(lineIndex) {\n      var map = this._styleMap[lineIndex];\n      this.styles[map.line] = {};\n    },\n\n    /**\n     * Wraps text using the 'width' property of Textbox. First this function\n     * splits text on newlines, so we preserve newlines entered by the user.\n     * Then it wraps each line using the width of the Textbox by calling\n     * _wrapLine().\n     * @param {Array} lines The string array of text that is split into lines\n     * @param {Number} desiredWidth width you want to wrap to\n     * @returns {Array} Array of lines\n     */\n    _wrapText: function(lines, desiredWidth) {\n      var wrapped = [], i;\n      this.isWrapping = true;\n      for (i = 0; i < lines.length; i++) {\n        wrapped = wrapped.concat(this._wrapLine(lines[i], i, desiredWidth));\n      }\n      this.isWrapping = false;\n      return wrapped;\n    },\n\n    /**\n     * Helper function to measure a string of text, given its lineIndex and charIndex offset\n     * it gets called when charBounds are not available yet.\n     * @param {CanvasRenderingContext2D} ctx\n     * @param {String} text\n     * @param {number} lineIndex\n     * @param {number} charOffset\n     * @returns {number}\n     * @private\n     */\n    _measureWord: function(word, lineIndex, charOffset) {\n      var width = 0, prevGrapheme, skipLeft = true;\n      charOffset = charOffset || 0;\n      for (var i = 0, len = word.length; i < len; i++) {\n        var box = this._getGraphemeBox(word[i], lineIndex, i + charOffset, prevGrapheme, skipLeft);\n        width += box.kernedWidth;\n        prevGrapheme = word[i];\n      }\n      return width;\n    },\n\n    /**\n     * Wraps a line of text using the width of the Textbox and a context.\n     * @param {Array} line The grapheme array that represent the line\n     * @param {Number} lineIndex\n     * @param {Number} desiredWidth width you want to wrap the line to\n     * @param {Number} reservedSpace space to remove from wrapping for custom functionalities\n     * @returns {Array} Array of line(s) into which the given text is wrapped\n     * to.\n     */\n    _wrapLine: function(_line, lineIndex, desiredWidth, reservedSpace) {\n      var lineWidth = 0,\n          splitByGrapheme = this.splitByGrapheme,\n          graphemeLines = [],\n          line = [],\n          // spaces in different languages?\n          words = splitByGrapheme ? fabric.util.string.graphemeSplit(_line) : _line.split(this._wordJoiners),\n          word = '',\n          offset = 0,\n          infix = splitByGrapheme ? '' : ' ',\n          wordWidth = 0,\n          infixWidth = 0,\n          largestWordWidth = 0,\n          lineJustStarted = true,\n          additionalSpace = this._getWidthOfCharSpacing(),\n          reservedSpace = reservedSpace || 0;\n      // fix a difference between split and graphemeSplit\n      if (words.length === 0) {\n        words.push([]);\n      }\n      desiredWidth -= reservedSpace;\n      for (var i = 0; i < words.length; i++) {\n        // if using splitByGrapheme words are already in graphemes.\n        word = splitByGrapheme ? words[i] : fabric.util.string.graphemeSplit(words[i]);\n        wordWidth = this._measureWord(word, lineIndex, offset);\n        offset += word.length;\n\n        lineWidth += infixWidth + wordWidth - additionalSpace;\n        if (lineWidth > desiredWidth && !lineJustStarted) {\n          graphemeLines.push(line);\n          line = [];\n          lineWidth = wordWidth;\n          lineJustStarted = true;\n        }\n        else {\n          lineWidth += additionalSpace;\n        }\n\n        if (!lineJustStarted && !splitByGrapheme) {\n          line.push(infix);\n        }\n        line = line.concat(word);\n\n        infixWidth = splitByGrapheme ? 0 : this._measureWord([infix], lineIndex, offset);\n        offset++;\n        lineJustStarted = false;\n        // keep track of largest word\n        if (wordWidth > largestWordWidth) {\n          largestWordWidth = wordWidth;\n        }\n      }\n\n      i && graphemeLines.push(line);\n\n      if (largestWordWidth + reservedSpace > this.dynamicMinWidth) {\n        this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace;\n      }\n      return graphemeLines;\n    },\n\n    /**\n     * Detect if the text line is ended with an hard break\n     * text and itext do not have wrapping, return false\n     * @param {Number} lineIndex text to split\n     * @return {Boolean}\n     */\n    isEndOfWrapping: function(lineIndex) {\n      if (!this._styleMap[lineIndex + 1]) {\n        // is last line, return true;\n        return true;\n      }\n      if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) {\n        // this is last line before a line break, return true;\n        return true;\n      }\n      return false;\n    },\n\n    /**\n     * Detect if a line has a linebreak and so we need to account for it when moving\n     * and counting style.\n     * @return Number\n     */\n    missingNewlineOffset: function(lineIndex) {\n      if (this.splitByGrapheme) {\n        return this.isEndOfWrapping(lineIndex) ? 1 : 0;\n      }\n      return 1;\n    },\n\n    /**\n    * Gets lines of text to render in the Textbox. This function calculates\n    * text wrapping on the fly every time it is called.\n    * @param {String} text text to split\n    * @returns {Array} Array of lines in the Textbox.\n    * @override\n    */\n    _splitTextIntoLines: function(text) {\n      var newText = fabric.Text.prototype._splitTextIntoLines.call(this, text),\n          graphemeLines = this._wrapText(newText.lines, this.width),\n          lines = new Array(graphemeLines.length);\n      for (var i = 0; i < graphemeLines.length; i++) {\n        lines[i] = graphemeLines[i].join('');\n      }\n      newText.lines = lines;\n      newText.graphemeLines = graphemeLines;\n      return newText;\n    },\n\n    getMinWidth: function() {\n      return Math.max(this.minWidth, this.dynamicMinWidth);\n    },\n\n    _removeExtraneousStyles: function() {\n      var linesToKeep = {};\n      for (var prop in this._styleMap) {\n        if (this._textLines[prop]) {\n          linesToKeep[this._styleMap[prop].line] = 1;\n        }\n      }\n      for (var prop in this.styles) {\n        if (!linesToKeep[prop]) {\n          delete this.styles[prop];\n        }\n      }\n    },\n\n    /**\n     * Returns object representation of an instance\n     * @method toObject\n     * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n     * @return {Object} object representation of an instance\n     */\n    toObject: function(propertiesToInclude) {\n      return this.callSuper('toObject', ['minWidth', 'splitByGrapheme'].concat(propertiesToInclude));\n    }\n  });\n\n  /**\n   * Returns fabric.Textbox instance from an object representation\n   * @static\n   * @memberOf fabric.Textbox\n   * @param {Object} object Object to create an instance from\n   * @param {Function} [callback] Callback to invoke when an fabric.Textbox instance is created\n   */\n  fabric.Textbox.fromObject = function(object, callback) {\n    return fabric.Object._fromObject('Textbox', object, callback, 'text');\n  };\n})( true ? exports : undefined);\n\n\n(function() {\n\n  var controlsUtils = fabric.controlsUtils,\n      scaleSkewStyleHandler = controlsUtils.scaleSkewCursorStyleHandler,\n      scaleStyleHandler = controlsUtils.scaleCursorStyleHandler,\n      scalingEqually = controlsUtils.scalingEqually,\n      scalingYOrSkewingX = controlsUtils.scalingYOrSkewingX,\n      scalingXOrSkewingY = controlsUtils.scalingXOrSkewingY,\n      scaleOrSkewActionName = controlsUtils.scaleOrSkewActionName,\n      objectControls = fabric.Object.prototype.controls;\n\n  objectControls.ml = new fabric.Control({\n    x: -0.5,\n    y: 0,\n    cursorStyleHandler: scaleSkewStyleHandler,\n    actionHandler: scalingXOrSkewingY,\n    getActionName: scaleOrSkewActionName,\n  });\n\n  objectControls.mr = new fabric.Control({\n    x: 0.5,\n    y: 0,\n    cursorStyleHandler: scaleSkewStyleHandler,\n    actionHandler: scalingXOrSkewingY,\n    getActionName: scaleOrSkewActionName,\n  });\n\n  objectControls.mb = new fabric.Control({\n    x: 0,\n    y: 0.5,\n    cursorStyleHandler: scaleSkewStyleHandler,\n    actionHandler: scalingYOrSkewingX,\n    getActionName: scaleOrSkewActionName,\n  });\n\n  objectControls.mt = new fabric.Control({\n    x: 0,\n    y: -0.5,\n    cursorStyleHandler: scaleSkewStyleHandler,\n    actionHandler: scalingYOrSkewingX,\n    getActionName: scaleOrSkewActionName,\n  });\n\n  objectControls.tl = new fabric.Control({\n    x: -0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleStyleHandler,\n    actionHandler: scalingEqually\n  });\n\n  objectControls.tr = new fabric.Control({\n    x: 0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleStyleHandler,\n    actionHandler: scalingEqually\n  });\n\n  objectControls.bl = new fabric.Control({\n    x: -0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleStyleHandler,\n    actionHandler: scalingEqually\n  });\n\n  objectControls.br = new fabric.Control({\n    x: 0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleStyleHandler,\n    actionHandler: scalingEqually\n  });\n\n  objectControls.mtr = new fabric.Control({\n    x: 0,\n    y: -0.5,\n    actionHandler: controlsUtils.rotationWithSnapping,\n    cursorStyleHandler: controlsUtils.rotationStyleHandler,\n    offsetY: -40,\n    withConnection: true,\n    actionName: 'rotate',\n  });\n\n  if (fabric.Textbox) {\n    // this is breaking the prototype inheritance, no time / ideas to fix it.\n    // is important to document that if you want to have all objects to have a\n    // specific custom control, you have to add it to Object prototype and to Textbox\n    // prototype. The controls are shared as references. So changes to control `tr`\n    // can still apply to all objects if needed.\n    var textBoxControls = fabric.Textbox.prototype.controls = { };\n\n    textBoxControls.mtr = objectControls.mtr;\n    textBoxControls.tr = objectControls.tr;\n    textBoxControls.br = objectControls.br;\n    textBoxControls.tl = objectControls.tl;\n    textBoxControls.bl = objectControls.bl;\n    textBoxControls.mt = objectControls.mt;\n    textBoxControls.mb = objectControls.mb;\n\n    textBoxControls.mr = new fabric.Control({\n      x: 0.5,\n      y: 0,\n      actionHandler: controlsUtils.changeWidth,\n      cursorStyleHandler: scaleSkewStyleHandler,\n      actionName: 'resizing',\n    });\n\n    textBoxControls.ml = new fabric.Control({\n      x: -0.5,\n      y: 0,\n      actionHandler: controlsUtils.changeWidth,\n      cursorStyleHandler: scaleSkewStyleHandler,\n      actionName: 'resizing',\n    });\n  }\n})();\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(949).Buffer))\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n  Copyright (c) 2017 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) 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) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\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 ( true && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\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, descriptor.key, descriptor);\n  }\n}\n\nfunction _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}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nfunction _getPrototypeOf(o) {\n  module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(348);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(1340);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(1344);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(348);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n  }\n\n  subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrender = __webpack_require__(322);\n\nvar zrUtil = __webpack_require__(2);\n\nvar colorTool = __webpack_require__(130);\n\nvar env = __webpack_require__(66);\n\nvar timsort = __webpack_require__(400);\n\nvar Eventful = __webpack_require__(176);\n\nvar GlobalModel = __webpack_require__(556);\n\nvar ExtensionAPI = __webpack_require__(569);\n\nvar CoordinateSystemManager = __webpack_require__(121);\n\nvar OptionManager = __webpack_require__(1031);\n\nvar backwardCompat = __webpack_require__(1032);\n\nvar dataStack = __webpack_require__(1034);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar SeriesModel = __webpack_require__(75);\n\nvar ComponentView = __webpack_require__(328);\n\nvar ChartView = __webpack_require__(131);\n\nvar graphic = __webpack_require__(23);\n\nvar modelUtil = __webpack_require__(31);\n\nvar _throttle = __webpack_require__(153);\n\nvar throttle = _throttle.throttle;\n\nvar seriesColor = __webpack_require__(1035);\n\nvar aria = __webpack_require__(1036);\n\nvar loadingDefault = __webpack_require__(1037);\n\nvar Scheduler = __webpack_require__(1038);\n\nvar lightTheme = __webpack_require__(1039);\n\nvar darkTheme = __webpack_require__(1040);\n\n__webpack_require__(570);\n\nvar mapDataStorage = __webpack_require__(409);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar assert = zrUtil.assert;\nvar each = zrUtil.each;\nvar isFunction = zrUtil.isFunction;\nvar isObject = zrUtil.isObject;\nvar parseClassType = ComponentModel.parseClassType;\nvar version = '4.9.0';\nvar dependencies = {\n  zrender: '4.3.2'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800;\nvar PRIORITY_PROCESSOR_DATASTACK = 900;\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\nvar PRIORITY_VISUAL_LAYOUT = 1000;\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\nvar PRIORITY_VISUAL_GLOBAL = 2000;\nvar PRIORITY_VISUAL_CHART = 3000;\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 3500;\nvar PRIORITY_VISUAL_COMPONENT = 4000; // FIXME\n// necessary?\n\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY = {\n  PROCESSOR: {\n    FILTER: PRIORITY_PROCESSOR_FILTER,\n    SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\n    STATISTIC: PRIORITY_PROCESSOR_STATISTIC\n  },\n  VISUAL: {\n    LAYOUT: PRIORITY_VISUAL_LAYOUT,\n    PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\n    GLOBAL: PRIORITY_VISUAL_GLOBAL,\n    CHART: PRIORITY_VISUAL_CHART,\n    POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\n    COMPONENT: PRIORITY_VISUAL_COMPONENT,\n    BRUSH: PRIORITY_VISUAL_BRUSH\n  }\n}; // Main process have three entries: `setOption`, `dispatchAction` and `resize`,\n// where they must not be invoked nestedly, except the only case: invoke\n// dispatchAction with updateMethod \"none\" in main process.\n// This flag is used to carry out this rule.\n// All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]).\n\nvar IN_MAIN_PROCESS = '__flagInMainProcess';\nvar OPTION_UPDATED = '__optionUpdated';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\n\nfunction createRegisterEventWithLowercaseName(method, ignoreDisposed) {\n  return function (eventName, handler, context) {\n    if (!ignoreDisposed && this._disposed) {\n      disposedWarning(this.id);\n      return;\n    } // Event name is all lowercase\n\n\n    eventName = eventName && eventName.toLowerCase();\n    Eventful.prototype[method].call(this, eventName, handler, context);\n  };\n}\n/**\n * @module echarts~MessageCenter\n */\n\n\nfunction MessageCenter() {\n  Eventful.call(this);\n}\n\nMessageCenter.prototype.on = createRegisterEventWithLowercaseName('on', true);\nMessageCenter.prototype.off = createRegisterEventWithLowercaseName('off', true);\nMessageCenter.prototype.one = createRegisterEventWithLowercaseName('one', true);\nzrUtil.mixin(MessageCenter, Eventful);\n/**\n * @module echarts~ECharts\n */\n\nfunction ECharts(dom, theme, opts) {\n  opts = opts || {}; // Get theme by name\n\n  if (typeof theme === 'string') {\n    theme = themeStorage[theme];\n  }\n  /**\n   * @type {string}\n   */\n\n\n  this.id;\n  /**\n   * Group id\n   * @type {string}\n   */\n\n  this.group;\n  /**\n   * @type {HTMLElement}\n   * @private\n   */\n\n  this._dom = dom;\n  var defaultRenderer = 'canvas';\n\n  /**\n   * @type {module:zrender/ZRender}\n   * @private\n   */\n  var zr = this._zr = zrender.init(dom, {\n    renderer: opts.renderer || defaultRenderer,\n    devicePixelRatio: opts.devicePixelRatio,\n    width: opts.width,\n    height: opts.height\n  });\n  /**\n   * Expect 60 fps.\n   * @type {Function}\n   * @private\n   */\n\n  this._throttledZrFlush = throttle(zrUtil.bind(zr.flush, zr), 17);\n  var theme = zrUtil.clone(theme);\n  theme && backwardCompat(theme, true);\n  /**\n   * @type {Object}\n   * @private\n   */\n\n  this._theme = theme;\n  /**\n   * @type {Array.<module:echarts/view/Chart>}\n   * @private\n   */\n\n  this._chartsViews = [];\n  /**\n   * @type {Object.<string, module:echarts/view/Chart>}\n   * @private\n   */\n\n  this._chartsMap = {};\n  /**\n   * @type {Array.<module:echarts/view/Component>}\n   * @private\n   */\n\n  this._componentsViews = [];\n  /**\n   * @type {Object.<string, module:echarts/view/Component>}\n   * @private\n   */\n\n  this._componentsMap = {};\n  /**\n   * @type {module:echarts/CoordinateSystem}\n   * @private\n   */\n\n  this._coordSysMgr = new CoordinateSystemManager();\n  /**\n   * @type {module:echarts/ExtensionAPI}\n   * @private\n   */\n\n  var api = this._api = createExtensionAPI(this); // Sort on demand\n\n  function prioritySortFunc(a, b) {\n    return a.__prio - b.__prio;\n  }\n\n  timsort(visualFuncs, prioritySortFunc);\n  timsort(dataProcessorFuncs, prioritySortFunc);\n  /**\n   * @type {module:echarts/stream/Scheduler}\n   */\n\n  this._scheduler = new Scheduler(this, api, dataProcessorFuncs, visualFuncs);\n  Eventful.call(this, this._ecEventProcessor = new EventProcessor());\n  /**\n   * @type {module:echarts~MessageCenter}\n   * @private\n   */\n\n  this._messageCenter = new MessageCenter(); // Init mouse events\n\n  this._initEvents(); // In case some people write `window.onresize = chart.resize`\n\n\n  this.resize = zrUtil.bind(this.resize, this); // Can't dispatch action during rendering procedure\n\n  this._pendingActions = [];\n  zr.animation.on('frame', this._onframe, this);\n  bindRenderedEvent(zr, this); // ECharts instance can be used as value.\n\n  zrUtil.setAsPrimitive(this);\n}\n\nvar echartsProto = ECharts.prototype;\n\nechartsProto._onframe = function () {\n  if (this._disposed) {\n    return;\n  }\n\n  var scheduler = this._scheduler; // Lazy update\n\n  if (this[OPTION_UPDATED]) {\n    var silent = this[OPTION_UPDATED].silent;\n    this[IN_MAIN_PROCESS] = true;\n    prepare(this);\n    updateMethods.update.call(this);\n    this[IN_MAIN_PROCESS] = false;\n    this[OPTION_UPDATED] = false;\n    flushPendingActions.call(this, silent);\n    triggerUpdatedEvent.call(this, silent);\n  } // Avoid do both lazy update and progress in one frame.\n  else if (scheduler.unfinished) {\n      // Stream progress.\n      var remainTime = TEST_FRAME_REMAIN_TIME;\n      var ecModel = this._model;\n      var api = this._api;\n      scheduler.unfinished = false;\n\n      do {\n        var startTime = +new Date();\n        scheduler.performSeriesTasks(ecModel); // Currently dataProcessorFuncs do not check threshold.\n\n        scheduler.performDataProcessorTasks(ecModel);\n        updateStreamModes(this, ecModel); // Do not update coordinate system here. Because that coord system update in\n        // each frame is not a good user experience. So we follow the rule that\n        // the extent of the coordinate system is determin in the first frame (the\n        // frame is executed immedietely after task reset.\n        // this._coordSysMgr.update(ecModel, api);\n        // console.log('--- ec frame visual ---', remainTime);\n\n        scheduler.performVisualTasks(ecModel);\n        renderSeries(this, this._model, api, 'remain');\n        remainTime -= +new Date() - startTime;\n      } while (remainTime > 0 && scheduler.unfinished); // Call flush explicitly for trigger finished event.\n\n\n      if (!scheduler.unfinished) {\n        this._zr.flush();\n      } // Else, zr flushing be ensue within the same frame,\n      // because zr flushing is after onframe event.\n\n    }\n};\n/**\n * @return {HTMLElement}\n */\n\n\nechartsProto.getDom = function () {\n  return this._dom;\n};\n/**\n * @return {module:zrender~ZRender}\n */\n\n\nechartsProto.getZr = function () {\n  return this._zr;\n};\n/**\n * Usage:\n * chart.setOption(option, notMerge, lazyUpdate);\n * chart.setOption(option, {\n *     notMerge: ...,\n *     lazyUpdate: ...,\n *     silent: ...\n * });\n *\n * @param {Object} option\n * @param {Object|boolean} [opts] opts or notMerge.\n * @param {boolean} [opts.notMerge=false]\n * @param {boolean} [opts.lazyUpdate=false] Useful when setOption frequently.\n */\n\n\nechartsProto.setOption = function (option, notMerge, lazyUpdate) {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  var silent;\n\n  if (isObject(notMerge)) {\n    lazyUpdate = notMerge.lazyUpdate;\n    silent = notMerge.silent;\n    notMerge = notMerge.notMerge;\n  }\n\n  this[IN_MAIN_PROCESS] = true;\n\n  if (!this._model || notMerge) {\n    var optionManager = new OptionManager(this._api);\n    var theme = this._theme;\n    var ecModel = this._model = new GlobalModel();\n    ecModel.scheduler = this._scheduler;\n    ecModel.init(null, null, theme, optionManager);\n  }\n\n  this._model.setOption(option, optionPreprocessorFuncs);\n\n  if (lazyUpdate) {\n    this[OPTION_UPDATED] = {\n      silent: silent\n    };\n    this[IN_MAIN_PROCESS] = false;\n  } else {\n    prepare(this);\n    updateMethods.update.call(this); // Ensure zr refresh sychronously, and then pixel in canvas can be\n    // fetched after `setOption`.\n\n    this._zr.flush();\n\n    this[OPTION_UPDATED] = false;\n    this[IN_MAIN_PROCESS] = false;\n    flushPendingActions.call(this, silent);\n    triggerUpdatedEvent.call(this, silent);\n  }\n};\n/**\n * @DEPRECATED\n */\n\n\nechartsProto.setTheme = function () {\n  console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n};\n/**\n * @return {module:echarts/model/Global}\n */\n\n\nechartsProto.getModel = function () {\n  return this._model;\n};\n/**\n * @return {Object}\n */\n\n\nechartsProto.getOption = function () {\n  return this._model && this._model.getOption();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getWidth = function () {\n  return this._zr.getWidth();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getHeight = function () {\n  return this._zr.getHeight();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getDevicePixelRatio = function () {\n  return this._zr.painter.dpr || window.devicePixelRatio || 1;\n};\n/**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @return {string}\n */\n\n\nechartsProto.getRenderedCanvas = function (opts) {\n  if (!env.canvasSupported) {\n    return;\n  }\n\n  opts = opts || {};\n  opts.pixelRatio = opts.pixelRatio || 1;\n  opts.backgroundColor = opts.backgroundColor || this._model.get('backgroundColor');\n  var zr = this._zr; // var list = zr.storage.getDisplayList();\n  // Stop animations\n  // Never works before in init animation, so remove it.\n  // zrUtil.each(list, function (el) {\n  //     el.stopAnimation(true);\n  // });\n\n  return zr.painter.getRenderedCanvas(opts);\n};\n/**\n * Get svg data url\n * @return {string}\n */\n\n\nechartsProto.getSvgDataURL = function () {\n  if (!env.svgSupported) {\n    return;\n  }\n\n  var zr = this._zr;\n  var list = zr.storage.getDisplayList(); // Stop animations\n\n  zrUtil.each(list, function (el) {\n    el.stopAnimation(true);\n  });\n  return zr.painter.toDataURL();\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n * @param {string} [opts.excludeComponents]\n */\n\n\nechartsProto.getDataURL = function (opts) {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  opts = opts || {};\n  var excludeComponents = opts.excludeComponents;\n  var ecModel = this._model;\n  var excludesComponentViews = [];\n  var self = this;\n  each(excludeComponents, function (componentType) {\n    ecModel.eachComponent({\n      mainType: componentType\n    }, function (component) {\n      var view = self._componentsMap[component.__viewId];\n\n      if (!view.group.ignore) {\n        excludesComponentViews.push(view);\n        view.group.ignore = true;\n      }\n    });\n  });\n  var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataURL() : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n  each(excludesComponentViews, function (view) {\n    view.group.ignore = false;\n  });\n  return url;\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n */\n\n\nechartsProto.getConnectedDataURL = function (opts) {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  if (!env.canvasSupported) {\n    return;\n  }\n\n  var isSvg = opts.type === 'svg';\n  var groupId = this.group;\n  var mathMin = Math.min;\n  var mathMax = Math.max;\n  var MAX_NUMBER = Infinity;\n\n  if (connectedGroups[groupId]) {\n    var left = MAX_NUMBER;\n    var top = MAX_NUMBER;\n    var right = -MAX_NUMBER;\n    var bottom = -MAX_NUMBER;\n    var canvasList = [];\n    var dpr = opts && opts.pixelRatio || 1;\n    zrUtil.each(instances, function (chart, id) {\n      if (chart.group === groupId) {\n        var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.getRenderedCanvas(zrUtil.clone(opts));\n        var boundingRect = chart.getDom().getBoundingClientRect();\n        left = mathMin(boundingRect.left, left);\n        top = mathMin(boundingRect.top, top);\n        right = mathMax(boundingRect.right, right);\n        bottom = mathMax(boundingRect.bottom, bottom);\n        canvasList.push({\n          dom: canvas,\n          left: boundingRect.left,\n          top: boundingRect.top\n        });\n      }\n    });\n    left *= dpr;\n    top *= dpr;\n    right *= dpr;\n    bottom *= dpr;\n    var width = right - left;\n    var height = bottom - top;\n    var targetCanvas = zrUtil.createCanvas();\n    var zr = zrender.init(targetCanvas, {\n      renderer: isSvg ? 'svg' : 'canvas'\n    });\n    zr.resize({\n      width: width,\n      height: height\n    });\n\n    if (isSvg) {\n      var content = '';\n      each(canvasList, function (item) {\n        var x = item.left - left;\n        var y = item.top - top;\n        content += '<g transform=\"translate(' + x + ',' + y + ')\">' + item.dom + '</g>';\n      });\n      zr.painter.getSvgRoot().innerHTML = content;\n\n      if (opts.connectedBackgroundColor) {\n        zr.painter.setBackgroundColor(opts.connectedBackgroundColor);\n      }\n\n      zr.refreshImmediately();\n      return zr.painter.toDataURL();\n    } else {\n      // Background between the charts\n      if (opts.connectedBackgroundColor) {\n        zr.add(new graphic.Rect({\n          shape: {\n            x: 0,\n            y: 0,\n            width: width,\n            height: height\n          },\n          style: {\n            fill: opts.connectedBackgroundColor\n          }\n        }));\n      }\n\n      each(canvasList, function (item) {\n        var img = new graphic.Image({\n          style: {\n            x: item.left * dpr - left,\n            y: item.top * dpr - top,\n            image: item.dom\n          }\n        });\n        zr.add(img);\n      });\n      zr.refreshImmediately();\n      return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n    }\n  } else {\n    return this.getDataURL(opts);\n  }\n};\n/**\n * Convert from logical coordinate system to pixel coordinate system.\n * See CoordinateSystem#convertToPixel.\n * @param {string|Object} finder\n *        If string, e.g., 'geo', means {geoIndex: 0}.\n *        If Object, could contain some of these properties below:\n *        {\n *            seriesIndex / seriesId / seriesName,\n *            geoIndex / geoId, geoName,\n *            bmapIndex / bmapId / bmapName,\n *            xAxisIndex / xAxisId / xAxisName,\n *            yAxisIndex / yAxisId / yAxisName,\n *            gridIndex / gridId / gridName,\n *            ... (can be extended)\n *        }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\n\nechartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel');\n/**\n * Convert from pixel coordinate system to logical coordinate system.\n * See CoordinateSystem#convertFromPixel.\n * @param {string|Object} finder\n *        If string, e.g., 'geo', means {geoIndex: 0}.\n *        If Object, could contain some of these properties below:\n *        {\n *            seriesIndex / seriesId / seriesName,\n *            geoIndex / geoId / geoName,\n *            bmapIndex / bmapId / bmapName,\n *            xAxisIndex / xAxisId / xAxisName,\n *            yAxisIndex / yAxisId / yAxisName\n *            gridIndex / gridId / gridName,\n *            ... (can be extended)\n *        }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\nechartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel');\n\nfunction doConvertPixel(methodName, finder, value) {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  var ecModel = this._model;\n\n  var coordSysList = this._coordSysMgr.getCoordinateSystems();\n\n  var result;\n  finder = modelUtil.parseFinder(ecModel, finder);\n\n  for (var i = 0; i < coordSysList.length; i++) {\n    var coordSys = coordSysList[i];\n\n    if (coordSys[methodName] && (result = coordSys[methodName](ecModel, finder, value)) != null) {\n      return result;\n    }\n  }\n}\n/**\n * Is the specified coordinate systems or components contain the given pixel point.\n * @param {string|Object} finder\n *        If string, e.g., 'geo', means {geoIndex: 0}.\n *        If Object, could contain some of these properties below:\n *        {\n *            seriesIndex / seriesId / seriesName,\n *            geoIndex / geoId / geoName,\n *            bmapIndex / bmapId / bmapName,\n *            xAxisIndex / xAxisId / xAxisName,\n *            yAxisIndex / yAxisId / yAxisName,\n *            gridIndex / gridId / gridName,\n *            ... (can be extended)\n *        }\n * @param {Array|number} value\n * @return {boolean} result\n */\n\n\nechartsProto.containPixel = function (finder, value) {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  var ecModel = this._model;\n  var result;\n  finder = modelUtil.parseFinder(ecModel, finder);\n  zrUtil.each(finder, function (models, key) {\n    key.indexOf('Models') >= 0 && zrUtil.each(models, function (model) {\n      var coordSys = model.coordinateSystem;\n\n      if (coordSys && coordSys.containPoint) {\n        result |= !!coordSys.containPoint(value);\n      } else if (key === 'seriesModels') {\n        var view = this._chartsMap[model.__viewId];\n\n        if (view && view.containPoint) {\n          result |= view.containPoint(value, model);\n        } else {}\n      } else {}\n    }, this);\n  }, this);\n  return !!result;\n};\n/**\n * Get visual from series or data.\n * @param {string|Object} finder\n *        If string, e.g., 'series', means {seriesIndex: 0}.\n *        If Object, could contain some of these properties below:\n *        {\n *            seriesIndex / seriesId / seriesName,\n *            dataIndex / dataIndexInside\n *        }\n *        If dataIndex is not specified, series visual will be fetched,\n *        but not data item visual.\n *        If all of seriesIndex, seriesId, seriesName are not specified,\n *        visual will be fetched from first series.\n * @param {string} visualType 'color', 'symbol', 'symbolSize'\n */\n\n\nechartsProto.getVisual = function (finder, visualType) {\n  var ecModel = this._model;\n  finder = modelUtil.parseFinder(ecModel, finder, {\n    defaultMainType: 'series'\n  });\n  var seriesModel = finder.seriesModel;\n  var data = seriesModel.getData();\n  var dataIndexInside = finder.hasOwnProperty('dataIndexInside') ? finder.dataIndexInside : finder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(finder.dataIndex) : null;\n  return dataIndexInside != null ? data.getItemVisual(dataIndexInside, visualType) : data.getVisual(visualType);\n};\n/**\n * Get view of corresponding component model\n * @param  {module:echarts/model/Component} componentModel\n * @return {module:echarts/view/Component}\n */\n\n\nechartsProto.getViewOfComponentModel = function (componentModel) {\n  return this._componentsMap[componentModel.__viewId];\n};\n/**\n * Get view of corresponding series model\n * @param  {module:echarts/model/Series} seriesModel\n * @return {module:echarts/view/Chart}\n */\n\n\nechartsProto.getViewOfSeriesModel = function (seriesModel) {\n  return this._chartsMap[seriesModel.__viewId];\n};\n\nvar updateMethods = {\n  prepareAndUpdate: function (payload) {\n    prepare(this);\n    updateMethods.update.call(this, payload);\n  },\n\n  /**\n   * @param {Object} payload\n   * @private\n   */\n  update: function (payload) {\n    // console.profile && console.profile('update');\n    var ecModel = this._model;\n    var api = this._api;\n    var zr = this._zr;\n    var coordSysMgr = this._coordSysMgr;\n    var scheduler = this._scheduler; // update before setOption\n\n    if (!ecModel) {\n      return;\n    }\n\n    scheduler.restoreData(ecModel, payload);\n    scheduler.performSeriesTasks(ecModel); // TODO\n    // Save total ecModel here for undo/redo (after restoring data and before processing data).\n    // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.\n    // Create new coordinate system each update\n    // In LineView may save the old coordinate system and use it to get the orignal point\n\n    coordSysMgr.create(ecModel, api);\n    scheduler.performDataProcessorTasks(ecModel, payload); // Current stream render is not supported in data process. So we can update\n    // stream modes after data processing, where the filtered data is used to\n    // deteming whether use progressive rendering.\n\n    updateStreamModes(this, ecModel); // We update stream modes before coordinate system updated, then the modes info\n    // can be fetched when coord sys updating (consider the barGrid extent fix). But\n    // the drawback is the full coord info can not be fetched. Fortunately this full\n    // coord is not requied in stream mode updater currently.\n\n    coordSysMgr.update(ecModel, api);\n    clearColorPalette(ecModel);\n    scheduler.performVisualTasks(ecModel, payload);\n    render(this, ecModel, api, payload); // Set background\n\n    var backgroundColor = ecModel.get('backgroundColor') || 'transparent'; // In IE8\n\n    if (!env.canvasSupported) {\n      var colorArr = colorTool.parse(backgroundColor);\n      backgroundColor = colorTool.stringify(colorArr, 'rgb');\n\n      if (colorArr[3] === 0) {\n        backgroundColor = 'transparent';\n      }\n    } else {\n      zr.setBackgroundColor(backgroundColor);\n    }\n\n    performPostUpdateFuncs(ecModel, api); // console.profile && console.profileEnd('update');\n  },\n\n  /**\n   * @param {Object} payload\n   * @private\n   */\n  updateTransform: function (payload) {\n    var ecModel = this._model;\n    var ecIns = this;\n    var api = this._api; // update before setOption\n\n    if (!ecModel) {\n      return;\n    } // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n\n    var componentDirtyList = [];\n    ecModel.eachComponent(function (componentType, componentModel) {\n      var componentView = ecIns.getViewOfComponentModel(componentModel);\n\n      if (componentView && componentView.__alive) {\n        if (componentView.updateTransform) {\n          var result = componentView.updateTransform(componentModel, ecModel, api, payload);\n          result && result.update && componentDirtyList.push(componentView);\n        } else {\n          componentDirtyList.push(componentView);\n        }\n      }\n    });\n    var seriesDirtyMap = zrUtil.createHashMap();\n    ecModel.eachSeries(function (seriesModel) {\n      var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n      if (chartView.updateTransform) {\n        var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\n        result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\n      } else {\n        seriesDirtyMap.set(seriesModel.uid, 1);\n      }\n    });\n    clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n    // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n\n    this._scheduler.performVisualTasks(ecModel, payload, {\n      setDirty: true,\n      dirtyMap: seriesDirtyMap\n    }); // Currently, not call render of components. Geo render cost a lot.\n    // renderComponents(ecIns, ecModel, api, payload, componentDirtyList);\n\n\n    renderSeries(ecIns, ecModel, api, payload, seriesDirtyMap);\n    performPostUpdateFuncs(ecModel, this._api);\n  },\n\n  /**\n   * @param {Object} payload\n   * @private\n   */\n  updateView: function (payload) {\n    var ecModel = this._model; // update before setOption\n\n    if (!ecModel) {\n      return;\n    }\n\n    ChartView.markUpdateMethod(payload, 'updateView');\n    clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n    this._scheduler.performVisualTasks(ecModel, payload, {\n      setDirty: true\n    });\n\n    render(this, this._model, this._api, payload);\n    performPostUpdateFuncs(ecModel, this._api);\n  },\n\n  /**\n   * @param {Object} payload\n   * @private\n   */\n  updateVisual: function (payload) {\n    updateMethods.update.call(this, payload); // var ecModel = this._model;\n    // // update before setOption\n    // if (!ecModel) {\n    //     return;\n    // }\n    // ChartView.markUpdateMethod(payload, 'updateVisual');\n    // clearColorPalette(ecModel);\n    // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n    // this._scheduler.performVisualTasks(ecModel, payload, {visualType: 'visual', setDirty: true});\n    // render(this, this._model, this._api, payload);\n    // performPostUpdateFuncs(ecModel, this._api);\n  },\n\n  /**\n   * @param {Object} payload\n   * @private\n   */\n  updateLayout: function (payload) {\n    updateMethods.update.call(this, payload); // var ecModel = this._model;\n    // // update before setOption\n    // if (!ecModel) {\n    //     return;\n    // }\n    // ChartView.markUpdateMethod(payload, 'updateLayout');\n    // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n    // // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n    // this._scheduler.performVisualTasks(ecModel, payload, {setDirty: true});\n    // render(this, this._model, this._api, payload);\n    // performPostUpdateFuncs(ecModel, this._api);\n  }\n};\n\nfunction prepare(ecIns) {\n  var ecModel = ecIns._model;\n  var scheduler = ecIns._scheduler;\n  scheduler.restorePipelines(ecModel);\n  scheduler.prepareStageTasks();\n  prepareView(ecIns, 'component', ecModel, scheduler);\n  prepareView(ecIns, 'chart', ecModel, scheduler);\n  scheduler.plan();\n}\n/**\n * @private\n */\n\n\nfunction updateDirectly(ecIns, method, payload, mainType, subType) {\n  var ecModel = ecIns._model; // broadcast\n\n  if (!mainType) {\n    // FIXME\n    // Chart will not be update directly here, except set dirty.\n    // But there is no such scenario now.\n    each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);\n    return;\n  }\n\n  var query = {};\n  query[mainType + 'Id'] = payload[mainType + 'Id'];\n  query[mainType + 'Index'] = payload[mainType + 'Index'];\n  query[mainType + 'Name'] = payload[mainType + 'Name'];\n  var condition = {\n    mainType: mainType,\n    query: query\n  };\n  subType && (condition.subType = subType); // subType may be '' by parseClassType;\n\n  var excludeSeriesId = payload.excludeSeriesId;\n\n  if (excludeSeriesId != null) {\n    excludeSeriesId = zrUtil.createHashMap(modelUtil.normalizeToArray(excludeSeriesId));\n  } // If dispatchAction before setOption, do nothing.\n\n\n  ecModel && ecModel.eachComponent(condition, function (model) {\n    if (!excludeSeriesId || excludeSeriesId.get(model.id) == null) {\n      callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\n    }\n  }, ecIns);\n\n  function callView(view) {\n    view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\n  }\n}\n/**\n * Resize the chart\n * @param {Object} opts\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n * @param {boolean} [opts.silent=false]\n */\n\n\nechartsProto.resize = function (opts) {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  this._zr.resize(opts);\n\n  var ecModel = this._model; // Resize loading effect\n\n  this._loadingFX && this._loadingFX.resize();\n\n  if (!ecModel) {\n    return;\n  }\n\n  var optionChanged = ecModel.resetOption('media');\n  var silent = opts && opts.silent;\n  this[IN_MAIN_PROCESS] = true;\n  optionChanged && prepare(this);\n  updateMethods.update.call(this);\n  this[IN_MAIN_PROCESS] = false;\n  flushPendingActions.call(this, silent);\n  triggerUpdatedEvent.call(this, silent);\n};\n\nfunction updateStreamModes(ecIns, ecModel) {\n  var chartsMap = ecIns._chartsMap;\n  var scheduler = ecIns._scheduler;\n  ecModel.eachSeries(function (seriesModel) {\n    scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\n  });\n}\n/**\n * Show loading effect\n * @param  {string} [name='default']\n * @param  {Object} [cfg]\n */\n\n\nechartsProto.showLoading = function (name, cfg) {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  if (isObject(name)) {\n    cfg = name;\n    name = '';\n  }\n\n  name = name || 'default';\n  this.hideLoading();\n\n  if (!loadingEffects[name]) {\n    return;\n  }\n\n  var el = loadingEffects[name](this._api, cfg);\n  var zr = this._zr;\n  this._loadingFX = el;\n  zr.add(el);\n};\n/**\n * Hide loading effect\n */\n\n\nechartsProto.hideLoading = function () {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  this._loadingFX && this._zr.remove(this._loadingFX);\n  this._loadingFX = null;\n};\n/**\n * @param {Object} eventObj\n * @return {Object}\n */\n\n\nechartsProto.makeActionFromEvent = function (eventObj) {\n  var payload = zrUtil.extend({}, eventObj);\n  payload.type = eventActionMap[eventObj.type];\n  return payload;\n};\n/**\n * @pubilc\n * @param {Object} payload\n * @param {string} [payload.type] Action type\n * @param {Object|boolean} [opt] If pass boolean, means opt.silent\n * @param {boolean} [opt.silent=false] Whether trigger events.\n * @param {boolean} [opt.flush=undefined]\n *                  true: Flush immediately, and then pixel in canvas can be fetched\n *                      immediately. Caution: it might affect performance.\n *                  false: Not flush.\n *                  undefined: Auto decide whether perform flush.\n */\n\n\nechartsProto.dispatchAction = function (payload, opt) {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  if (!isObject(opt)) {\n    opt = {\n      silent: !!opt\n    };\n  }\n\n  if (!actions[payload.type]) {\n    return;\n  } // Avoid dispatch action before setOption. Especially in `connect`.\n\n\n  if (!this._model) {\n    return;\n  } // May dispatchAction in rendering procedure\n\n\n  if (this[IN_MAIN_PROCESS]) {\n    this._pendingActions.push(payload);\n\n    return;\n  }\n\n  doDispatchAction.call(this, payload, opt.silent);\n\n  if (opt.flush) {\n    this._zr.flush(true);\n  } else if (opt.flush !== false && env.browser.weChat) {\n    // In WeChat embeded browser, `requestAnimationFrame` and `setInterval`\n    // hang when sliding page (on touch event), which cause that zr does not\n    // refresh util user interaction finished, which is not expected.\n    // But `dispatchAction` may be called too frequently when pan on touch\n    // screen, which impacts performance if do not throttle them.\n    this._throttledZrFlush();\n  }\n\n  flushPendingActions.call(this, opt.silent);\n  triggerUpdatedEvent.call(this, opt.silent);\n};\n\nfunction doDispatchAction(payload, silent) {\n  var payloadType = payload.type;\n  var escapeConnect = payload.escapeConnect;\n  var actionWrap = actions[payloadType];\n  var actionInfo = actionWrap.actionInfo;\n  var cptType = (actionInfo.update || 'update').split(':');\n  var updateMethod = cptType.pop();\n  cptType = cptType[0] != null && parseClassType(cptType[0]);\n  this[IN_MAIN_PROCESS] = true;\n  var payloads = [payload];\n  var batched = false; // Batch action\n\n  if (payload.batch) {\n    batched = true;\n    payloads = zrUtil.map(payload.batch, function (item) {\n      item = zrUtil.defaults(zrUtil.extend({}, item), payload);\n      item.batch = null;\n      return item;\n    });\n  }\n\n  var eventObjBatch = [];\n  var eventObj;\n  var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';\n  each(payloads, function (batchItem) {\n    // Action can specify the event by return it.\n    eventObj = actionWrap.action(batchItem, this._model, this._api); // Emit event outside\n\n    eventObj = eventObj || zrUtil.extend({}, batchItem); // Convert type to eventType\n\n    eventObj.type = actionInfo.event || eventObj.type;\n    eventObjBatch.push(eventObj); // light update does not perform data process, layout and visual.\n\n    if (isHighDown) {\n      // method, payload, mainType, subType\n      updateDirectly(this, updateMethod, batchItem, 'series');\n    } else if (cptType) {\n      updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);\n    }\n  }, this);\n\n  if (updateMethod !== 'none' && !isHighDown && !cptType) {\n    // Still dirty\n    if (this[OPTION_UPDATED]) {\n      // FIXME Pass payload ?\n      prepare(this);\n      updateMethods.update.call(this, payload);\n      this[OPTION_UPDATED] = false;\n    } else {\n      updateMethods[updateMethod].call(this, payload);\n    }\n  } // Follow the rule of action batch\n\n\n  if (batched) {\n    eventObj = {\n      type: actionInfo.event || payloadType,\n      escapeConnect: escapeConnect,\n      batch: eventObjBatch\n    };\n  } else {\n    eventObj = eventObjBatch[0];\n  }\n\n  this[IN_MAIN_PROCESS] = false;\n  !silent && this._messageCenter.trigger(eventObj.type, eventObj);\n}\n\nfunction flushPendingActions(silent) {\n  var pendingActions = this._pendingActions;\n\n  while (pendingActions.length) {\n    var payload = pendingActions.shift();\n    doDispatchAction.call(this, payload, silent);\n  }\n}\n\nfunction triggerUpdatedEvent(silent) {\n  !silent && this.trigger('updated');\n}\n/**\n * Event `rendered` is triggered when zr\n * rendered. It is useful for realtime\n * snapshot (reflect animation).\n *\n * Event `finished` is triggered when:\n * (1) zrender rendering finished.\n * (2) initial animation finished.\n * (3) progressive rendering finished.\n * (4) no pending action.\n * (5) no delayed setOption needs to be processed.\n */\n\n\nfunction bindRenderedEvent(zr, ecIns) {\n  zr.on('rendered', function () {\n    ecIns.trigger('rendered'); // The `finished` event should not be triggered repeatly,\n    // so it should only be triggered when rendering indeed happend\n    // in zrender. (Consider the case that dipatchAction is keep\n    // triggering when mouse move).\n\n    if ( // Although zr is dirty if initial animation is not finished\n    // and this checking is called on frame, we also check\n    // animation finished for robustness.\n    zr.animation.isFinished() && !ecIns[OPTION_UPDATED] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n      ecIns.trigger('finished');\n    }\n  });\n}\n/**\n * @param {Object} params\n * @param {number} params.seriesIndex\n * @param {Array|TypedArray} params.data\n */\n\n\nechartsProto.appendData = function (params) {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  var seriesIndex = params.seriesIndex;\n  var ecModel = this.getModel();\n  var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n  seriesModel.appendData(params); // Note: `appendData` does not support that update extent of coordinate\n  // system, util some scenario require that. In the expected usage of\n  // `appendData`, the initial extent of coordinate system should better\n  // be fixed by axis `min`/`max` setting or initial data, otherwise if\n  // the extent changed while `appendData`, the location of the painted\n  // graphic elements have to be changed, which make the usage of\n  // `appendData` meaningless.\n\n  this._scheduler.unfinished = true;\n};\n/**\n * Register event\n * @method\n */\n\n\nechartsProto.on = createRegisterEventWithLowercaseName('on', false);\nechartsProto.off = createRegisterEventWithLowercaseName('off', false);\nechartsProto.one = createRegisterEventWithLowercaseName('one', false);\n/**\n * Prepare view instances of charts and components\n * @param  {module:echarts/model/Global} ecModel\n * @private\n */\n\nfunction prepareView(ecIns, type, ecModel, scheduler) {\n  var isComponent = type === 'component';\n  var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\n  var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\n  var zr = ecIns._zr;\n  var api = ecIns._api;\n\n  for (var i = 0; i < viewList.length; i++) {\n    viewList[i].__alive = false;\n  }\n\n  isComponent ? ecModel.eachComponent(function (componentType, model) {\n    componentType !== 'series' && doPrepare(model);\n  }) : ecModel.eachSeries(doPrepare);\n\n  function doPrepare(model) {\n    // Consider: id same and type changed.\n    var viewId = '_ec_' + model.id + '_' + model.type;\n    var view = viewMap[viewId];\n\n    if (!view) {\n      var classType = parseClassType(model.type);\n      var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : ChartView.getClass(classType.sub);\n      view = new Clazz();\n      view.init(ecModel, api);\n      viewMap[viewId] = view;\n      viewList.push(view);\n      zr.add(view.group);\n    }\n\n    model.__viewId = view.__id = viewId;\n    view.__alive = true;\n    view.__model = model;\n    view.group.__ecComponentInfo = {\n      mainType: model.mainType,\n      index: model.componentIndex\n    };\n    !isComponent && scheduler.prepareView(view, model, ecModel, api);\n  }\n\n  for (var i = 0; i < viewList.length;) {\n    var view = viewList[i];\n\n    if (!view.__alive) {\n      !isComponent && view.renderTask.dispose();\n      zr.remove(view.group);\n      view.dispose(ecModel, api);\n      viewList.splice(i, 1);\n      delete viewMap[view.__id];\n      view.__id = view.group.__ecComponentInfo = null;\n    } else {\n      i++;\n    }\n  }\n} // /**\n//  * Encode visual infomation from data after data processing\n//  *\n//  * @param {module:echarts/model/Global} ecModel\n//  * @param {object} layout\n//  * @param {boolean} [layoutFilter] `true`: only layout,\n//  *                                 `false`: only not layout,\n//  *                                 `null`/`undefined`: all.\n//  * @param {string} taskBaseTag\n//  * @private\n//  */\n// function startVisualEncoding(ecIns, ecModel, api, payload, layoutFilter) {\n//     each(visualFuncs, function (visual, index) {\n//         var isLayout = visual.isLayout;\n//         if (layoutFilter == null\n//             || (layoutFilter === false && !isLayout)\n//             || (layoutFilter === true && isLayout)\n//         ) {\n//             visual.func(ecModel, api, payload);\n//         }\n//     });\n// }\n\n\nfunction clearColorPalette(ecModel) {\n  ecModel.clearColorPalette();\n  ecModel.eachSeries(function (seriesModel) {\n    seriesModel.clearColorPalette();\n  });\n}\n\nfunction render(ecIns, ecModel, api, payload) {\n  renderComponents(ecIns, ecModel, api, payload);\n  each(ecIns._chartsViews, function (chart) {\n    chart.__alive = false;\n  });\n  renderSeries(ecIns, ecModel, api, payload); // Remove groups of unrendered charts\n\n  each(ecIns._chartsViews, function (chart) {\n    if (!chart.__alive) {\n      chart.remove(ecModel, api);\n    }\n  });\n}\n\nfunction renderComponents(ecIns, ecModel, api, payload, dirtyList) {\n  each(dirtyList || ecIns._componentsViews, function (componentView) {\n    var componentModel = componentView.__model;\n    componentView.render(componentModel, ecModel, api, payload);\n    updateZ(componentModel, componentView);\n  });\n}\n/**\n * Render each chart and component\n * @private\n */\n\n\nfunction renderSeries(ecIns, ecModel, api, payload, dirtyMap) {\n  // Render all charts\n  var scheduler = ecIns._scheduler;\n  var unfinished;\n  ecModel.eachSeries(function (seriesModel) {\n    var chartView = ecIns._chartsMap[seriesModel.__viewId];\n    chartView.__alive = true;\n    var renderTask = chartView.renderTask;\n    scheduler.updatePayload(renderTask, payload);\n\n    if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n      renderTask.dirty();\n    }\n\n    unfinished |= renderTask.perform(scheduler.getPerformArgs(renderTask));\n    chartView.group.silent = !!seriesModel.get('silent');\n    updateZ(seriesModel, chartView);\n    updateBlend(seriesModel, chartView);\n  });\n  scheduler.unfinished |= unfinished; // If use hover layer\n\n  updateHoverLayerStatus(ecIns, ecModel); // Add aria\n\n  aria(ecIns._zr.dom, ecModel);\n}\n\nfunction performPostUpdateFuncs(ecModel, api) {\n  each(postUpdateFuncs, function (func) {\n    func(ecModel, api);\n  });\n}\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n/**\n * @private\n */\n\nechartsProto._initEvents = function () {\n  each(MOUSE_EVENT_NAMES, function (eveName) {\n    var handler = function (e) {\n      var ecModel = this.getModel();\n      var el = e.target;\n      var params;\n      var isGlobalOut = eveName === 'globalout'; // no e.target when 'globalout'.\n\n      if (isGlobalOut) {\n        params = {};\n      } else if (el && el.dataIndex != null) {\n        var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);\n        params = dataModel && dataModel.getDataParams(el.dataIndex, el.dataType, el) || {};\n      } // If element has custom eventData of components\n      else if (el && el.eventData) {\n          params = zrUtil.extend({}, el.eventData);\n        } // Contract: if params prepared in mouse event,\n      // these properties must be specified:\n      // {\n      //    componentType: string (component main type)\n      //    componentIndex: number\n      // }\n      // Otherwise event query can not work.\n\n\n      if (params) {\n        var componentType = params.componentType;\n        var componentIndex = params.componentIndex; // Special handling for historic reason: when trigger by\n        // markLine/markPoint/markArea, the componentType is\n        // 'markLine'/'markPoint'/'markArea', but we should better\n        // enable them to be queried by seriesIndex, since their\n        // option is set in each series.\n\n        if (componentType === 'markLine' || componentType === 'markPoint' || componentType === 'markArea') {\n          componentType = 'series';\n          componentIndex = params.seriesIndex;\n        }\n\n        var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);\n        var view = model && this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\n        params.event = e;\n        params.type = eveName;\n        this._ecEventProcessor.eventInfo = {\n          targetEl: el,\n          packedEvent: params,\n          model: model,\n          view: view\n        };\n        this.trigger(eveName, params);\n      }\n    }; // Consider that some component (like tooltip, brush, ...)\n    // register zr event handler, but user event handler might\n    // do anything, such as call `setOption` or `dispatchAction`,\n    // which probably update any of the content and probably\n    // cause problem if it is called previous other inner handlers.\n\n\n    handler.zrEventfulCallAtLast = true;\n\n    this._zr.on(eveName, handler, this);\n  }, this);\n  each(eventActionMap, function (actionType, eventType) {\n    this._messageCenter.on(eventType, function (event) {\n      this.trigger(eventType, event);\n    }, this);\n  }, this);\n};\n/**\n * @return {boolean}\n */\n\n\nechartsProto.isDisposed = function () {\n  return this._disposed;\n};\n/**\n * Clear\n */\n\n\nechartsProto.clear = function () {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  this.setOption({\n    series: []\n  }, true);\n};\n/**\n * Dispose instance\n */\n\n\nechartsProto.dispose = function () {\n  if (this._disposed) {\n    disposedWarning(this.id);\n    return;\n  }\n\n  this._disposed = true;\n  modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n  var api = this._api;\n  var ecModel = this._model;\n  each(this._componentsViews, function (component) {\n    component.dispose(ecModel, api);\n  });\n  each(this._chartsViews, function (chart) {\n    chart.dispose(ecModel, api);\n  }); // Dispose after all views disposed\n\n  this._zr.dispose();\n\n  delete instances[this.id];\n};\n\nzrUtil.mixin(ECharts, Eventful);\n\nfunction disposedWarning(id) {}\n\nfunction updateHoverLayerStatus(ecIns, ecModel) {\n  var zr = ecIns._zr;\n  var storage = zr.storage;\n  var elCount = 0;\n  storage.traverse(function (el) {\n    elCount++;\n  });\n\n  if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) {\n    ecModel.eachSeries(function (seriesModel) {\n      if (seriesModel.preventUsingHoverLayer) {\n        return;\n      }\n\n      var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n      if (chartView.__alive) {\n        chartView.group.traverse(function (el) {\n          // Don't switch back.\n          el.useHoverLayer = true;\n        });\n      }\n    });\n  }\n}\n/**\n * Update chart progressive and blend.\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateBlend(seriesModel, chartView) {\n  var blendMode = seriesModel.get('blendMode') || null;\n  chartView.group.traverse(function (el) {\n    // FIXME marker and other components\n    if (!el.isGroup) {\n      // Only set if blendMode is changed. In case element is incremental and don't wan't to rerender.\n      if (el.style.blend !== blendMode) {\n        el.setStyle('blend', blendMode);\n      }\n    }\n\n    if (el.eachPendingDisplayable) {\n      el.eachPendingDisplayable(function (displayable) {\n        displayable.setStyle('blend', blendMode);\n      });\n    }\n  });\n}\n/**\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateZ(model, view) {\n  var z = model.get('z');\n  var zlevel = model.get('zlevel'); // Set z and zlevel\n\n  view.group.traverse(function (el) {\n    if (el.type !== 'group') {\n      z != null && (el.z = z);\n      zlevel != null && (el.zlevel = zlevel);\n    }\n  });\n}\n\nfunction createExtensionAPI(ecInstance) {\n  var coordSysMgr = ecInstance._coordSysMgr;\n  return zrUtil.extend(new ExtensionAPI(ecInstance), {\n    // Inject methods\n    getCoordinateSystems: zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr),\n    getComponentByElement: function (el) {\n      while (el) {\n        var modelInfo = el.__ecComponentInfo;\n\n        if (modelInfo != null) {\n          return ecInstance._model.getComponent(modelInfo.mainType, modelInfo.index);\n        }\n\n        el = el.parent;\n      }\n    }\n  });\n}\n/**\n * @class\n * Usage of query:\n * `chart.on('click', query, handler);`\n * The `query` can be:\n * + The component type query string, only `mainType` or `mainType.subType`,\n *   like: 'xAxis', 'series', 'xAxis.category' or 'series.line'.\n * + The component query object, like:\n *   `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`,\n *   `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`.\n * + The data query object, like:\n *   `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`.\n * + The other query object (cmponent customized query), like:\n *   `{element: 'some'}` (only available in custom series).\n *\n * Caveat: If a prop in the `query` object is `null/undefined`, it is the\n * same as there is no such prop in the `query` object.\n */\n\n\nfunction EventProcessor() {\n  // These info required: targetEl, packedEvent, model, view\n  this.eventInfo;\n}\n\nEventProcessor.prototype = {\n  constructor: EventProcessor,\n  normalizeQuery: function (query) {\n    var cptQuery = {};\n    var dataQuery = {};\n    var otherQuery = {}; // `query` is `mainType` or `mainType.subType` of component.\n\n    if (zrUtil.isString(query)) {\n      var condCptType = parseClassType(query); // `.main` and `.sub` may be ''.\n\n      cptQuery.mainType = condCptType.main || null;\n      cptQuery.subType = condCptType.sub || null;\n    } // `query` is an object, convert to {mainType, index, name, id}.\n    else {\n        // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved,\n        // can not be used in `compomentModel.filterForExposedEvent`.\n        var suffixes = ['Index', 'Name', 'Id'];\n        var dataKeys = {\n          name: 1,\n          dataIndex: 1,\n          dataType: 1\n        };\n        zrUtil.each(query, function (val, key) {\n          var reserved = false;\n\n          for (var i = 0; i < suffixes.length; i++) {\n            var propSuffix = suffixes[i];\n            var suffixPos = key.lastIndexOf(propSuffix);\n\n            if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\n              var mainType = key.slice(0, suffixPos); // Consider `dataIndex`.\n\n              if (mainType !== 'data') {\n                cptQuery.mainType = mainType;\n                cptQuery[propSuffix.toLowerCase()] = val;\n                reserved = true;\n              }\n            }\n          }\n\n          if (dataKeys.hasOwnProperty(key)) {\n            dataQuery[key] = val;\n            reserved = true;\n          }\n\n          if (!reserved) {\n            otherQuery[key] = val;\n          }\n        });\n      }\n\n    return {\n      cptQuery: cptQuery,\n      dataQuery: dataQuery,\n      otherQuery: otherQuery\n    };\n  },\n  filter: function (eventType, query, args) {\n    // They should be assigned before each trigger call.\n    var eventInfo = this.eventInfo;\n\n    if (!eventInfo) {\n      return true;\n    }\n\n    var targetEl = eventInfo.targetEl;\n    var packedEvent = eventInfo.packedEvent;\n    var model = eventInfo.model;\n    var view = eventInfo.view; // For event like 'globalout'.\n\n    if (!model || !view) {\n      return true;\n    }\n\n    var cptQuery = query.cptQuery;\n    var dataQuery = query.dataQuery;\n    return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\n\n    function check(query, host, prop, propOnHost) {\n      return query[prop] == null || host[propOnHost || prop] === query[prop];\n    }\n  },\n  afterTrigger: function () {\n    // Make sure the eventInfo wont be used in next trigger.\n    this.eventInfo = null;\n  }\n};\n/**\n * @type {Object} key: actionType.\n * @inner\n */\n\nvar actions = {};\n/**\n * Map eventType to actionType\n * @type {Object}\n */\n\nvar eventActionMap = {};\n/**\n * Data processor functions of each stage\n * @type {Array.<Object.<string, Function>>}\n * @inner\n */\n\nvar dataProcessorFuncs = [];\n/**\n * @type {Array.<Function>}\n * @inner\n */\n\nvar optionPreprocessorFuncs = [];\n/**\n * @type {Array.<Function>}\n * @inner\n */\n\nvar postUpdateFuncs = [];\n/**\n * Visual encoding functions of each stage\n * @type {Array.<Object.<string, Function>>}\n */\n\nvar visualFuncs = [];\n/**\n * Theme storage\n * @type {Object.<key, Object>}\n */\n\nvar themeStorage = {};\n/**\n * Loading effects\n */\n\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = new Date() - 0;\nvar groupIdBase = new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n\nfunction enableConnect(chart) {\n  var STATUS_PENDING = 0;\n  var STATUS_UPDATING = 1;\n  var STATUS_UPDATED = 2;\n  var STATUS_KEY = '__connectUpdateStatus';\n\n  function updateConnectedChartsStatus(charts, status) {\n    for (var i = 0; i < charts.length; i++) {\n      var otherChart = charts[i];\n      otherChart[STATUS_KEY] = status;\n    }\n  }\n\n  each(eventActionMap, function (actionType, eventType) {\n    chart._messageCenter.on(eventType, function (event) {\n      if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {\n        if (event && event.escapeConnect) {\n          return;\n        }\n\n        var action = chart.makeActionFromEvent(event);\n        var otherCharts = [];\n        each(instances, function (otherChart) {\n          if (otherChart !== chart && otherChart.group === chart.group) {\n            otherCharts.push(otherChart);\n          }\n        });\n        updateConnectedChartsStatus(otherCharts, STATUS_PENDING);\n        each(otherCharts, function (otherChart) {\n          if (otherChart[STATUS_KEY] !== STATUS_UPDATING) {\n            otherChart.dispatchAction(action);\n          }\n        });\n        updateConnectedChartsStatus(otherCharts, STATUS_UPDATED);\n      }\n    });\n  });\n}\n/**\n * @param {HTMLElement} dom\n * @param {Object} [theme]\n * @param {Object} opts\n * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default\n * @param {string} [opts.renderer] Can choose 'canvas' or 'svg' to render the chart.\n * @param {number} [opts.width] Use clientWidth of the input `dom` by default.\n *                              Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Use clientHeight of the input `dom` by default.\n *                               Can be 'auto' (the same as null/undefined)\n */\n\n\nfunction init(dom, theme, opts) {\n  var existInstance = getInstanceByDom(dom);\n\n  if (existInstance) {\n    return existInstance;\n  }\n\n  var chart = new ECharts(dom, theme, opts);\n  chart.id = 'ec_' + idBase++;\n  instances[chart.id] = chart;\n  modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n  enableConnect(chart);\n  return chart;\n}\n/**\n * @return {string|Array.<module:echarts~ECharts>} groupId\n */\n\n\nfunction connect(groupId) {\n  // Is array of charts\n  if (zrUtil.isArray(groupId)) {\n    var charts = groupId;\n    groupId = null; // If any chart has group\n\n    each(charts, function (chart) {\n      if (chart.group != null) {\n        groupId = chart.group;\n      }\n    });\n    groupId = groupId || 'g_' + groupIdBase++;\n    each(charts, function (chart) {\n      chart.group = groupId;\n    });\n  }\n\n  connectedGroups[groupId] = true;\n  return groupId;\n}\n/**\n * @DEPRECATED\n * @return {string} groupId\n */\n\n\nfunction disConnect(groupId) {\n  connectedGroups[groupId] = false;\n}\n/**\n * @return {string} groupId\n */\n\n\nvar disconnect = disConnect;\n/**\n * Dispose a chart instance\n * @param  {module:echarts~ECharts|HTMLDomElement|string} chart\n */\n\nfunction dispose(chart) {\n  if (typeof chart === 'string') {\n    chart = instances[chart];\n  } else if (!(chart instanceof ECharts)) {\n    // Try to treat as dom\n    chart = getInstanceByDom(chart);\n  }\n\n  if (chart instanceof ECharts && !chart.isDisposed()) {\n    chart.dispose();\n  }\n}\n/**\n * @param  {HTMLElement} dom\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceByDom(dom) {\n  return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\n/**\n * @param {string} key\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceById(key) {\n  return instances[key];\n}\n/**\n * Register theme\n */\n\n\nfunction registerTheme(name, theme) {\n  themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n * @param {Function} preprocessorFunc\n */\n\n\nfunction registerPreprocessor(preprocessorFunc) {\n  optionPreprocessorFuncs.push(preprocessorFunc);\n}\n/**\n * @param {number} [priority=1000]\n * @param {Object|Function} processor\n */\n\n\nfunction registerProcessor(priority, processor) {\n  normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_FILTER);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\n\nfunction registerPostUpdate(postUpdateFunc) {\n  postUpdateFuncs.push(postUpdateFunc);\n}\n/**\n * Usage:\n * registerAction('someAction', 'someEvent', function () { ... });\n * registerAction('someAction', function () { ... });\n * registerAction(\n *     {type: 'someAction', event: 'someEvent', update: 'updateView'},\n *     function () { ... }\n * );\n *\n * @param {(string|Object)} actionInfo\n * @param {string} actionInfo.type\n * @param {string} [actionInfo.event]\n * @param {string} [actionInfo.update]\n * @param {string} [eventName]\n * @param {Function} action\n */\n\n\nfunction registerAction(actionInfo, eventName, action) {\n  if (typeof eventName === 'function') {\n    action = eventName;\n    eventName = '';\n  }\n\n  var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = {\n    event: eventName\n  }][0]; // Event name is all lowercase\n\n  actionInfo.event = (actionInfo.event || actionType).toLowerCase();\n  eventName = actionInfo.event; // Validate action type and event name.\n\n  assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\n\n  if (!actions[actionType]) {\n    actions[actionType] = {\n      action: action,\n      actionInfo: actionInfo\n    };\n  }\n\n  eventActionMap[eventName] = actionType;\n}\n/**\n * @param {string} type\n * @param {*} CoordinateSystem\n */\n\n\nfunction registerCoordinateSystem(type, CoordinateSystem) {\n  CoordinateSystemManager.register(type, CoordinateSystem);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.<string|Object>}\n */\n\n\nfunction getCoordinateSystemDimensions(type) {\n  var coordSysCreator = CoordinateSystemManager.get(type);\n\n  if (coordSysCreator) {\n    return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n  }\n}\n/**\n * Layout is a special stage of visual encoding\n * Most visual encoding like color are common for different chart\n * But each chart has it's own layout algorithm\n *\n * @param {number} [priority=1000]\n * @param {Function} layoutTask\n */\n\n\nfunction registerLayout(priority, layoutTask) {\n  normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n/**\n * @param {number} [priority=3000]\n * @param {module:echarts/stream/Task} visualTask\n */\n\n\nfunction registerVisual(priority, visualTask) {\n  normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n/**\n * @param {Object|Function} fn: {seriesType, createOnAllSeries, performRawSeries, reset}\n */\n\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n  if (isFunction(priority) || isObject(priority)) {\n    fn = priority;\n    priority = defaultPriority;\n  }\n\n  var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n  stageHandler.__prio = priority;\n  stageHandler.__raw = fn;\n  targetList.push(stageHandler);\n  return stageHandler;\n}\n/**\n * @param {string} name\n */\n\n\nfunction registerLoading(name, loadingFx) {\n  loadingEffects[name] = loadingFx;\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentModel(opts\n/*, superClass*/\n) {\n  // var Clazz = ComponentModel;\n  // if (superClass) {\n  //     var classType = parseClassType(superClass);\n  //     Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n  // }\n  return ComponentModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentView(opts\n/*, superClass*/\n) {\n  // var Clazz = ComponentView;\n  // if (superClass) {\n  //     var classType = parseClassType(superClass);\n  //     Clazz = ComponentView.getClass(classType.main, classType.sub, true);\n  // }\n  return ComponentView.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendSeriesModel(opts\n/*, superClass*/\n) {\n  // var Clazz = SeriesModel;\n  // if (superClass) {\n  //     superClass = 'series.' + superClass.replace('series.', '');\n  //     var classType = parseClassType(superClass);\n  //     Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n  // }\n  return SeriesModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendChartView(opts\n/*, superClass*/\n) {\n  // var Clazz = ChartView;\n  // if (superClass) {\n  //     superClass = superClass.replace('series.', '');\n  //     var classType = parseClassType(superClass);\n  //     Clazz = ChartView.getClass(classType.main, true);\n  // }\n  return ChartView.extend(opts);\n}\n/**\n * ZRender need a canvas context to do measureText.\n * But in node environment canvas may be created by node-canvas.\n * So we need to specify how to create a canvas instead of using document.createElement('canvas')\n *\n * Be careful of using it in the browser.\n *\n * @param {Function} creator\n * @example\n *     var Canvas = require('canvas');\n *     var echarts = require('echarts');\n *     echarts.setCanvasCreator(function () {\n *         // Small size is enough.\n *         return new Canvas(32, 32);\n *     });\n */\n\n\nfunction setCanvasCreator(creator) {\n  zrUtil.$override('createCanvas', creator);\n}\n/**\n * @param {string} mapName\n * @param {Array.<Object>|Object|string} geoJson\n * @param {Object} [specialAreas]\n *\n * @example GeoJSON\n *     $.get('USA.json', function (geoJson) {\n *         echarts.registerMap('USA', geoJson);\n *         // Or\n *         echarts.registerMap('USA', {\n *             geoJson: geoJson,\n *             specialAreas: {}\n *         })\n *     });\n *\n *     $.get('airport.svg', function (svg) {\n *         echarts.registerMap('airport', {\n *             svg: svg\n *         }\n *     });\n *\n *     echarts.registerMap('eu', [\n *         {svg: eu-topographic.svg},\n *         {geoJSON: eu.json}\n *     ])\n */\n\n\nfunction registerMap(mapName, geoJson, specialAreas) {\n  mapDataStorage.registerMap(mapName, geoJson, specialAreas);\n}\n/**\n * @param {string} mapName\n * @return {Object}\n */\n\n\nfunction getMap(mapName) {\n  // For backward compatibility, only return the first one.\n  var records = mapDataStorage.retrieveMap(mapName);\n  return records && records[0] && {\n    geoJson: records[0].geoJSON,\n    specialAreas: records[0].specialAreas\n  };\n}\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesColor);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n  type: 'highlight',\n  event: 'highlight',\n  update: 'highlight'\n}, zrUtil.noop);\nregisterAction({\n  type: 'downplay',\n  event: 'downplay',\n  update: 'downplay'\n}, zrUtil.noop); // Default theme\n\nregisterTheme('light', lightTheme);\nregisterTheme('dark', darkTheme); // For backward compatibility, where the namespace `dataTool` will\n// be mounted on `echarts` is the extension `dataTool` is imported.\n\nvar dataTool = {};\nexports.version = version;\nexports.dependencies = dependencies;\nexports.PRIORITY = PRIORITY;\nexports.init = init;\nexports.connect = connect;\nexports.disConnect = disConnect;\nexports.disconnect = disconnect;\nexports.dispose = dispose;\nexports.getInstanceByDom = getInstanceByDom;\nexports.getInstanceById = getInstanceById;\nexports.registerTheme = registerTheme;\nexports.registerPreprocessor = registerPreprocessor;\nexports.registerProcessor = registerProcessor;\nexports.registerPostUpdate = registerPostUpdate;\nexports.registerAction = registerAction;\nexports.registerCoordinateSystem = registerCoordinateSystem;\nexports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\nexports.registerLayout = registerLayout;\nexports.registerVisual = registerVisual;\nexports.registerLoading = registerLoading;\nexports.extendComponentModel = extendComponentModel;\nexports.extendComponentView = extendComponentView;\nexports.extendSeriesModel = extendSeriesModel;\nexports.extendChartView = extendChartView;\nexports.setCanvasCreator = setCanvasCreator;\nexports.registerMap = registerMap;\nexports.getMap = getMap;\nexports.dataTool = dataTool;\nvar ___ec_export = __webpack_require__(572);\n(function () {\n    for (var key in ___ec_export) {\n        if (___ec_export.hasOwnProperty(key)) {\n            exports[key] = ___ec_export[key];\n        }\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.ReactCSS = exports.loop = exports.handleActive = exports.handleHover = exports.hover = undefined;\n\nvar _flattenNames = __webpack_require__(1543);\n\nvar _flattenNames2 = _interopRequireDefault(_flattenNames);\n\nvar _mergeClasses = __webpack_require__(1559);\n\nvar _mergeClasses2 = _interopRequireDefault(_mergeClasses);\n\nvar _autoprefix = __webpack_require__(1580);\n\nvar _autoprefix2 = _interopRequireDefault(_autoprefix);\n\nvar _hover2 = __webpack_require__(1581);\n\nvar _hover3 = _interopRequireDefault(_hover2);\n\nvar _active = __webpack_require__(1582);\n\nvar _active2 = _interopRequireDefault(_active);\n\nvar _loop2 = __webpack_require__(1583);\n\nvar _loop3 = _interopRequireDefault(_loop2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.hover = _hover3.default;\nexports.handleHover = _hover3.default;\nexports.handleActive = _active2.default;\nexports.loop = _loop3.default;\nvar ReactCSS = exports.ReactCSS = function ReactCSS(classes) {\n  for (var _len = arguments.length, activations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    activations[_key - 1] = arguments[_key];\n  }\n\n  var activeNames = (0, _flattenNames2.default)(activations);\n  var merged = (0, _mergeClasses2.default)(classes, activeNames);\n  return (0, _autoprefix2.default)(merged);\n};\n\nexports.default = ReactCSS;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(642);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n  if (key in obj) {\n    (0, _defineProperty2.default)(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar setPrototypeOf = __webpack_require__(941);\n\nfunction _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\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}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(347)[\"default\"];\n\nvar assertThisInitialized = __webpack_require__(942);\n\nfunction _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\n  return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__19__;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_BIND = __webpack_require__(228);\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n  return fn && uncurryThis(fn);\n} : function (fn) {\n  return fn && function () {\n    return call.apply(fn, arguments);\n  };\n};\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) 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) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif ( true && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(642);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  function 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      (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar pathTool = __webpack_require__(557);\n\nvar colorTool = __webpack_require__(130);\n\nvar matrix = __webpack_require__(89);\n\nvar vector = __webpack_require__(56);\n\nvar Path = __webpack_require__(63);\n\nvar Transformable = __webpack_require__(323);\n\nvar ZImage = __webpack_require__(211);\n\nexports.Image = ZImage;\n\nvar Group = __webpack_require__(177);\n\nexports.Group = Group;\n\nvar Text = __webpack_require__(178);\n\nexports.Text = Text;\n\nvar Circle = __webpack_require__(562);\n\nexports.Circle = Circle;\n\nvar Sector = __webpack_require__(1020);\n\nexports.Sector = Sector;\n\nvar Ring = __webpack_require__(1021);\n\nexports.Ring = Ring;\n\nvar Polygon = __webpack_require__(564);\n\nexports.Polygon = Polygon;\n\nvar Polyline = __webpack_require__(566);\n\nexports.Polyline = Polyline;\n\nvar Rect = __webpack_require__(403);\n\nexports.Rect = Rect;\n\nvar Line = __webpack_require__(567);\n\nexports.Line = Line;\n\nvar BezierCurve = __webpack_require__(1024);\n\nexports.BezierCurve = BezierCurve;\n\nvar Arc = __webpack_require__(1025);\n\nexports.Arc = Arc;\n\nvar CompoundPath = __webpack_require__(1026);\n\nexports.CompoundPath = CompoundPath;\n\nvar LinearGradient = __webpack_require__(405);\n\nexports.LinearGradient = LinearGradient;\n\nvar RadialGradient = __webpack_require__(1027);\n\nexports.RadialGradient = RadialGradient;\n\nvar BoundingRect = __webpack_require__(57);\n\nexports.BoundingRect = BoundingRect;\n\nvar IncrementalDisplayable = __webpack_require__(406);\n\nexports.IncrementalDisplayable = IncrementalDisplayable;\n\nvar subPixelOptimizeUtil = __webpack_require__(404);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar EMPTY_OBJ = {};\nvar Z2_EMPHASIS_LIFT = 1; // key: label model property nane, value: style property name.\n\nvar CACHED_LABEL_STYLE_PROPERTIES = {\n  color: 'textFill',\n  textBorderColor: 'textStroke',\n  textBorderWidth: 'textStrokeWidth'\n};\nvar EMPHASIS = 'emphasis';\nvar NORMAL = 'normal'; // Reserve 0 as default.\n\nvar _highlightNextDigit = 1;\nvar _highlightKeyMap = {};\nvar _customShapeMap = {};\n/**\n * Extend shape with parameters\n */\n\nfunction extendShape(opts) {\n  return Path.extend(opts);\n}\n/**\n * Extend path\n */\n\n\nfunction extendPath(pathData, opts) {\n  return pathTool.extendFromString(pathData, opts);\n}\n/**\n * Register a user defined shape.\n * The shape class can be fetched by `getShapeClass`\n * This method will overwrite the registered shapes, including\n * the registered built-in shapes, if using the same `name`.\n * The shape can be used in `custom series` and\n * `graphic component` by declaring `{type: name}`.\n *\n * @param {string} name\n * @param {Object} ShapeClass Can be generated by `extendShape`.\n */\n\n\nfunction registerShape(name, ShapeClass) {\n  _customShapeMap[name] = ShapeClass;\n}\n/**\n * Find shape class registered by `registerShape`. Usually used in\n * fetching user defined shape.\n *\n * [Caution]:\n * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared\n * to use user registered shapes.\n * Because the built-in shape (see `getBuiltInShape`) will be registered by\n * `registerShape` by default. That enables users to get both built-in\n * shapes as well as the shapes belonging to themsleves. But users can overwrite\n * the built-in shapes by using names like 'circle', 'rect' via calling\n * `registerShape`. So the echarts inner featrues should not fetch shapes from here\n * in case that it is overwritten by users, except that some features, like\n * `custom series`, `graphic component`, do it deliberately.\n *\n * (2) In the features like `custom series`, `graphic component`, the user input\n * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic\n * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names\n * are reserved names, that is, if some user register a shape named `'image'`,\n * the shape will not be used. If we intending to add some more reserved names\n * in feature, that might bring break changes (disable some existing user shape\n * names). But that case probably rearly happen. So we dont make more mechanism\n * to resolve this issue here.\n *\n * @param {string} name\n * @return {Object} The shape class. If not found, return nothing.\n */\n\n\nfunction getShapeClass(name) {\n  if (_customShapeMap.hasOwnProperty(name)) {\n    return _customShapeMap[name];\n  }\n}\n/**\n * Create a path element from path data string\n * @param {string} pathData\n * @param {Object} opts\n * @param {module:zrender/core/BoundingRect} rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makePath(pathData, opts, rect, layout) {\n  var path = pathTool.createFromString(pathData, opts);\n\n  if (rect) {\n    if (layout === 'center') {\n      rect = centerGraphic(rect, path.getBoundingRect());\n    }\n\n    resizePath(path, rect);\n  }\n\n  return path;\n}\n/**\n * Create a image element from image url\n * @param {string} imageUrl image url\n * @param {Object} opts options\n * @param {module:zrender/core/BoundingRect} rect constrain rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makeImage(imageUrl, rect, layout) {\n  var path = new ZImage({\n    style: {\n      image: imageUrl,\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    },\n    onload: function (img) {\n      if (layout === 'center') {\n        var boundingRect = {\n          width: img.width,\n          height: img.height\n        };\n        path.setStyle(centerGraphic(rect, boundingRect));\n      }\n    }\n  });\n  return path;\n}\n/**\n * Get position of centered element in bounding box.\n *\n * @param  {Object} rect         element local bounding box\n * @param  {Object} boundingRect constraint bounding box\n * @return {Object} element position containing x, y, width, and height\n */\n\n\nfunction centerGraphic(rect, boundingRect) {\n  // Set rect to center, keep width / height ratio.\n  var aspect = boundingRect.width / boundingRect.height;\n  var width = rect.height * aspect;\n  var height;\n\n  if (width <= rect.width) {\n    height = rect.height;\n  } else {\n    width = rect.width;\n    height = width / aspect;\n  }\n\n  var cx = rect.x + rect.width / 2;\n  var cy = rect.y + rect.height / 2;\n  return {\n    x: cx - width / 2,\n    y: cy - height / 2,\n    width: width,\n    height: height\n  };\n}\n\nvar mergePath = pathTool.mergePath;\n/**\n * Resize a path to fit the rect\n * @param {module:zrender/graphic/Path} path\n * @param {Object} rect\n */\n\nfunction resizePath(path, rect) {\n  if (!path.applyTransform) {\n    return;\n  }\n\n  var pathRect = path.getBoundingRect();\n  var m = pathRect.calculateTransform(rect);\n  path.applyTransform(m);\n}\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x1]\n * @param {number} [param.shape.y1]\n * @param {number} [param.shape.x2]\n * @param {number} [param.shape.y2]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeLine(param) {\n  subPixelOptimizeUtil.subPixelOptimizeLine(param.shape, param.shape, param.style);\n  return param;\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x]\n * @param {number} [param.shape.y]\n * @param {number} [param.shape.width]\n * @param {number} [param.shape.height]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeRect(param) {\n  subPixelOptimizeUtil.subPixelOptimizeRect(param.shape, param.shape, param.style);\n  return param;\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth Should be nonnegative integer.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nvar subPixelOptimize = subPixelOptimizeUtil.subPixelOptimize;\n\nfunction hasFillOrStroke(fillOrStroke) {\n  return fillOrStroke != null && fillOrStroke !== 'none';\n} // Most lifted color are duplicated.\n\n\nvar liftedColorMap = zrUtil.createHashMap();\nvar liftedColorCount = 0;\n\nfunction liftColor(color) {\n  if (typeof color !== 'string') {\n    return color;\n  }\n\n  var liftedColor = liftedColorMap.get(color);\n\n  if (!liftedColor) {\n    liftedColor = colorTool.lift(color, -0.1);\n\n    if (liftedColorCount < 10000) {\n      liftedColorMap.set(color, liftedColor);\n      liftedColorCount++;\n    }\n  }\n\n  return liftedColor;\n}\n\nfunction cacheElementStl(el) {\n  if (!el.__hoverStlDirty) {\n    return;\n  }\n\n  el.__hoverStlDirty = false;\n  var hoverStyle = el.__hoverStl;\n\n  if (!hoverStyle) {\n    el.__cachedNormalStl = el.__cachedNormalZ2 = null;\n    return;\n  }\n\n  var normalStyle = el.__cachedNormalStl = {};\n  el.__cachedNormalZ2 = el.z2;\n  var elStyle = el.style;\n\n  for (var name in hoverStyle) {\n    // See comment in `singleEnterEmphasis`.\n    if (hoverStyle[name] != null) {\n      normalStyle[name] = elStyle[name];\n    }\n  } // Always cache fill and stroke to normalStyle for lifting color.\n\n\n  normalStyle.fill = elStyle.fill;\n  normalStyle.stroke = elStyle.stroke;\n}\n\nfunction singleEnterEmphasis(el) {\n  var hoverStl = el.__hoverStl;\n\n  if (!hoverStl || el.__highlighted) {\n    return;\n  }\n\n  var zr = el.__zr;\n  var useHoverLayer = el.useHoverLayer && zr && zr.painter.type === 'canvas';\n  el.__highlighted = useHoverLayer ? 'layer' : 'plain';\n\n  if (el.isGroup || !zr && el.useHoverLayer) {\n    return;\n  }\n\n  var elTarget = el;\n  var targetStyle = el.style;\n\n  if (useHoverLayer) {\n    elTarget = zr.addHover(el);\n    targetStyle = elTarget.style;\n  }\n\n  rollbackDefaultTextStyle(targetStyle);\n\n  if (!useHoverLayer) {\n    cacheElementStl(elTarget);\n  } // styles can be:\n  // {\n  //    label: {\n  //        show: false,\n  //        position: 'outside',\n  //        fontSize: 18\n  //    },\n  //    emphasis: {\n  //        label: {\n  //            show: true\n  //        }\n  //    }\n  // },\n  // where properties of `emphasis` may not appear in `normal`. We previously use\n  // module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.\n  // But consider rich text and setOption in merge mode, it is impossible to cover\n  // all properties in merge. So we use merge mode when setting style here.\n  // But we choose the merge strategy that only properties that is not `null/undefined`.\n  // Because when making a textStyle (espacially rich text), it is not easy to distinguish\n  // `hasOwnProperty` and `null/undefined` in code, so we trade them as the same for simplicity.\n  // But this strategy brings a trouble that `null/undefined` can not be used to remove\n  // style any more in `emphasis`. Users can both set properties directly on normal and\n  // emphasis to avoid this issue, or we might support `'none'` for this case if required.\n\n\n  targetStyle.extendFrom(hoverStl);\n  setDefaultHoverFillStroke(targetStyle, hoverStl, 'fill');\n  setDefaultHoverFillStroke(targetStyle, hoverStl, 'stroke');\n  applyDefaultTextStyle(targetStyle);\n\n  if (!useHoverLayer) {\n    el.dirty(false);\n    el.z2 += Z2_EMPHASIS_LIFT;\n  }\n}\n\nfunction setDefaultHoverFillStroke(targetStyle, hoverStyle, prop) {\n  if (!hasFillOrStroke(hoverStyle[prop]) && hasFillOrStroke(targetStyle[prop])) {\n    targetStyle[prop] = liftColor(targetStyle[prop]);\n  }\n}\n\nfunction singleEnterNormal(el) {\n  var highlighted = el.__highlighted;\n\n  if (!highlighted) {\n    return;\n  }\n\n  el.__highlighted = false;\n\n  if (el.isGroup) {\n    return;\n  }\n\n  if (highlighted === 'layer') {\n    el.__zr && el.__zr.removeHover(el);\n  } else {\n    var style = el.style;\n    var normalStl = el.__cachedNormalStl;\n\n    if (normalStl) {\n      rollbackDefaultTextStyle(style);\n      el.setStyle(normalStl);\n      applyDefaultTextStyle(style);\n    } // `__cachedNormalZ2` will not be reset if calling `setElementHoverStyle`\n    // when `el` is on emphasis state. So here by comparing with 1, we try\n    // hard to make the bug case rare.\n\n\n    var normalZ2 = el.__cachedNormalZ2;\n\n    if (normalZ2 != null && el.z2 - normalZ2 === Z2_EMPHASIS_LIFT) {\n      el.z2 = normalZ2;\n    }\n  }\n}\n\nfunction traverseUpdate(el, updater, commonParam) {\n  // If root is group, also enter updater for `highDownOnUpdate`.\n  var fromState = NORMAL;\n  var toState = NORMAL;\n  var trigger; // See the rule of `highDownOnUpdate` on `graphic.setAsHighDownDispatcher`.\n\n  el.__highlighted && (fromState = EMPHASIS, trigger = true);\n  updater(el, commonParam);\n  el.__highlighted && (toState = EMPHASIS, trigger = true);\n  el.isGroup && el.traverse(function (child) {\n    !child.isGroup && updater(child, commonParam);\n  });\n  trigger && el.__highDownOnUpdate && el.__highDownOnUpdate(fromState, toState);\n}\n/**\n * Set hover style (namely \"emphasis style\") of element, based on the current\n * style of the given `el`.\n * This method should be called after all of the normal styles have been adopted\n * to the `el`. See the reason on `setHoverStyle`.\n *\n * @param {module:zrender/Element} el Should not be `zrender/container/Group`.\n * @param {Object} [el.hoverStyle] Can be set on el or its descendants,\n *        e.g., `el.hoverStyle = ...; graphic.setHoverStyle(el); `.\n *        Often used when item group has a label element and it's hoverStyle is different.\n * @param {Object|boolean} [hoverStl] The specified hover style.\n *        If set as `false`, disable the hover style.\n *        Similarly, The `el.hoverStyle` can alse be set\n *        as `false` to disable the hover style.\n *        Otherwise, use the default hover style if not provided.\n */\n\n\nfunction setElementHoverStyle(el, hoverStl) {\n  // For performance consideration, it might be better to make the \"hover style\" only the\n  // difference properties from the \"normal style\", but not a entire copy of all styles.\n  hoverStl = el.__hoverStl = hoverStl !== false && (el.hoverStyle || hoverStl || {});\n  el.__hoverStlDirty = true; // FIXME\n  // It is not completely right to save \"normal\"/\"emphasis\" flag on elements.\n  // It probably should be saved on `data` of series. Consider the cases:\n  // (1) A highlighted elements are moved out of the view port and re-enter\n  // again by dataZoom.\n  // (2) call `setOption` and replace elements totally when they are highlighted.\n\n  if (el.__highlighted) {\n    // Consider the case:\n    // The styles of a highlighted `el` is being updated. The new \"emphasis style\"\n    // should be adapted to the `el`. Notice here new \"normal styles\" should have\n    // been set outside and the cached \"normal style\" is out of date.\n    el.__cachedNormalStl = null; // Do not clear `__cachedNormalZ2` here, because setting `z2` is not a constraint\n    // of this method. In most cases, `z2` is not set and hover style should be able\n    // to rollback. Of course, that would bring bug, but only in a rare case, see\n    // `doSingleLeaveHover` for details.\n\n    singleEnterNormal(el);\n    singleEnterEmphasis(el);\n  }\n}\n\nfunction onElementMouseOver(e) {\n  !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n  && !this.__highByOuter && traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementMouseOut(e) {\n  !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n  && !this.__highByOuter && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction onElementEmphasisEvent(highlightDigit) {\n  this.__highByOuter |= 1 << (highlightDigit || 0);\n  traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementNormalEvent(highlightDigit) {\n  !(this.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction shouldSilent(el, e) {\n  return el.__highDownSilentOnTouch && e.zrByTouch;\n}\n/**\n * Set hover style (namely \"emphasis style\") of element,\n * based on the current style of the given `el`.\n *\n * (1)\n * **CONSTRAINTS** for this method:\n * <A> This method MUST be called after all of the normal styles having been adopted\n * to the `el`.\n * <B> The input `hoverStyle` (that is, \"emphasis style\") MUST be the subset of the\n * \"normal style\" having been set to the el.\n * <C> `color` MUST be one of the \"normal styles\" (because color might be lifted as\n * a default hover style).\n *\n * The reason: this method treat the current style of the `el` as the \"normal style\"\n * and cache them when enter/update the \"emphasis style\". Consider the case: the `el`\n * is in \"emphasis\" state and `setOption`/`dispatchAction` trigger the style updating\n * logic, where the el should shift from the original emphasis style to the new\n * \"emphasis style\" and should be able to \"downplay\" back to the new \"normal style\".\n *\n * Indeed, it is error-prone to make a interface has so many constraints, but I have\n * not found a better solution yet to fit the backward compatibility, performance and\n * the current programming style.\n *\n * (2)\n * Call the method for a \"root\" element once. Do not call it for each descendants.\n * If the descendants elemenets of a group has itself hover style different from the\n * root group, we can simply mount the style on `el.hoverStyle` for them, but should\n * not call this method for them.\n *\n * (3) These input parameters can be set directly on `el`:\n *\n * @param {module:zrender/Element} el\n * @param {Object} [el.hoverStyle] See `graphic.setElementHoverStyle`.\n * @param {boolean} [el.highDownSilentOnTouch=false] See `graphic.setAsHighDownDispatcher`.\n * @param {Function} [el.highDownOnUpdate] See `graphic.setAsHighDownDispatcher`.\n * @param {Object|boolean} [hoverStyle] See `graphic.setElementHoverStyle`.\n */\n\n\nfunction setHoverStyle(el, hoverStyle) {\n  setAsHighDownDispatcher(el, true);\n  traverseUpdate(el, setElementHoverStyle, hoverStyle);\n}\n/**\n * @param {module:zrender/Element} el\n * @param {Function} [el.highDownOnUpdate] Called when state updated.\n *        Since `setHoverStyle` has the constraint that it must be called after\n *        all of the normal style updated, `highDownOnUpdate` is not needed to\n *        trigger if both `fromState` and `toState` is 'normal', and needed to\n *        trigger if both `fromState` and `toState` is 'emphasis', which enables\n *        to sync outside style settings to \"emphasis\" state.\n *        @this {string} This dispatcher `el`.\n *        @param {string} fromState Can be \"normal\" or \"emphasis\".\n *               `fromState` might equal to `toState`,\n *               for example, when this method is called when `el` is\n *               on \"emphasis\" state.\n *        @param {string} toState Can be \"normal\" or \"emphasis\".\n *\n *        FIXME\n *        CAUTION: Do not expose `highDownOnUpdate` outside echarts.\n *        Because it is not a complete solution. The update\n *        listener should not have been mount in element,\n *        and the normal/emphasis state should not have\n *        mantained on elements.\n *\n * @param {boolean} [el.highDownSilentOnTouch=false]\n *        In touch device, mouseover event will be trigger on touchstart event\n *        (see module:zrender/dom/HandlerProxy). By this mechanism, we can\n *        conveniently use hoverStyle when tap on touch screen without additional\n *        code for compatibility.\n *        But if the chart/component has select feature, which usually also use\n *        hoverStyle, there might be conflict between 'select-highlight' and\n *        'hover-highlight' especially when roam is enabled (see geo for example).\n *        In this case, `highDownSilentOnTouch` should be used to disable\n *        hover-highlight on touch device.\n * @param {boolean} [asDispatcher=true] If `false`, do not set as \"highDownDispatcher\".\n */\n\n\nfunction setAsHighDownDispatcher(el, asDispatcher) {\n  var disable = asDispatcher === false; // Make `highDownSilentOnTouch` and `highDownOnUpdate` only work after\n  // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly.\n\n  el.__highDownSilentOnTouch = el.highDownSilentOnTouch;\n  el.__highDownOnUpdate = el.highDownOnUpdate; // Simple optimize, since this method might be\n  // called for each elements of a group in some cases.\n\n  if (!disable || el.__highDownDispatcher) {\n    var method = disable ? 'off' : 'on'; // Duplicated function will be auto-ignored, see Eventful.js.\n\n    el[method]('mouseover', onElementMouseOver)[method]('mouseout', onElementMouseOut); // Emphasis, normal can be triggered manually by API or other components like hover link.\n\n    el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent); // Also keep previous record.\n\n    el.__highByOuter = el.__highByOuter || 0;\n    el.__highDownDispatcher = !disable;\n  }\n}\n/**\n * @param {module:zrender/src/Element} el\n * @return {boolean}\n */\n\n\nfunction isHighDownDispatcher(el) {\n  return !!(el && el.__highDownDispatcher);\n}\n/**\n * Support hightlight/downplay record on each elements.\n * For the case: hover highlight/downplay (legend, visualMap, ...) and\n * user triggerred hightlight/downplay should not conflict.\n * Only all of the highlightDigit cleared, return to normal.\n * @param {string} highlightKey\n * @return {number} highlightDigit\n */\n\n\nfunction getHighlightDigit(highlightKey) {\n  var highlightDigit = _highlightKeyMap[highlightKey];\n\n  if (highlightDigit == null && _highlightNextDigit <= 32) {\n    highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\n  }\n\n  return highlightDigit;\n}\n/**\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} normalStyle\n * @param {Object} emphasisStyle\n * @param {module:echarts/model/Model} normalModel\n * @param {module:echarts/model/Model} emphasisModel\n * @param {Object} opt Check `opt` of `setTextStyleCommon` to find other props.\n * @param {string|Function} [opt.defaultText]\n * @param {module:echarts/model/Model} [opt.labelFetcher] Fetch text by\n *      `opt.labelFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDataIndex] Fetch text by\n *      `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {number} [opt.labelDimIndex] Fetch text by\n *      `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {string} [opt.labelProp] Fetch text by\n *      `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex, opt.labelProp)`\n * @param {Object} [normalSpecified]\n * @param {Object} [emphasisSpecified]\n */\n\n\nfunction setLabelStyle(normalStyle, emphasisStyle, normalModel, emphasisModel, opt, normalSpecified, emphasisSpecified) {\n  opt = opt || EMPTY_OBJ;\n  var labelFetcher = opt.labelFetcher;\n  var labelDataIndex = opt.labelDataIndex;\n  var labelDimIndex = opt.labelDimIndex;\n  var labelProp = opt.labelProp; // This scenario, `label.normal.show = true; label.emphasis.show = false`,\n  // is not supported util someone requests.\n\n  var showNormal = normalModel.getShallow('show');\n  var showEmphasis = emphasisModel.getShallow('show'); // Consider performance, only fetch label when necessary.\n  // If `normal.show` is `false` and `emphasis.show` is `true` and `emphasis.formatter` is not set,\n  // label should be displayed, where text is fetched by `normal.formatter` or `opt.defaultText`.\n\n  var baseText;\n\n  if (showNormal || showEmphasis) {\n    if (labelFetcher) {\n      baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, labelProp);\n    }\n\n    if (baseText == null) {\n      baseText = zrUtil.isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt) : opt.defaultText;\n    }\n  }\n\n  var normalStyleText = showNormal ? baseText : null;\n  var emphasisStyleText = showEmphasis ? zrUtil.retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, 'emphasis', null, labelDimIndex, labelProp) : null, baseText) : null; // Optimize: If style.text is null, text will not be drawn.\n\n  if (normalStyleText != null || emphasisStyleText != null) {\n    // Always set `textStyle` even if `normalStyle.text` is null, because default\n    // values have to be set on `normalStyle`.\n    // If we set default values on `emphasisStyle`, consider case:\n    // Firstly, `setOption(... label: {normal: {text: null}, emphasis: {show: true}} ...);`\n    // Secondly, `setOption(... label: {noraml: {show: true, text: 'abc', color: 'red'} ...);`\n    // Then the 'red' will not work on emphasis.\n    setTextStyle(normalStyle, normalModel, normalSpecified, opt);\n    setTextStyle(emphasisStyle, emphasisModel, emphasisSpecified, opt, true);\n  }\n\n  normalStyle.text = normalStyleText;\n  emphasisStyle.text = emphasisStyleText;\n}\n/**\n * Modify label style manually.\n * Only works after `setLabelStyle` and `setElementHoverStyle` called.\n *\n * @param {module:zrender/src/Element} el\n * @param {Object} [normalStyleProps] optional\n * @param {Object} [emphasisStyleProps] optional\n */\n\n\nfunction modifyLabelStyle(el, normalStyleProps, emphasisStyleProps) {\n  var elStyle = el.style;\n\n  if (normalStyleProps) {\n    rollbackDefaultTextStyle(elStyle);\n    el.setStyle(normalStyleProps);\n    applyDefaultTextStyle(elStyle);\n  }\n\n  elStyle = el.__hoverStl;\n\n  if (emphasisStyleProps && elStyle) {\n    rollbackDefaultTextStyle(elStyle);\n    zrUtil.extend(elStyle, emphasisStyleProps);\n    applyDefaultTextStyle(elStyle);\n  }\n}\n/**\n * Set basic textStyle properties.\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} textStyle\n * @param {module:echarts/model/Model} model\n * @param {Object} [specifiedTextStyle] Can be overrided by settings in model.\n * @param {Object} [opt] See `opt` of `setTextStyleCommon`.\n * @param {boolean} [isEmphasis]\n */\n\n\nfunction setTextStyle(textStyle, textStyleModel, specifiedTextStyle, opt, isEmphasis) {\n  setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis);\n  specifiedTextStyle && zrUtil.extend(textStyle, specifiedTextStyle); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n\n  return textStyle;\n}\n/**\n * Set text option in the style.\n * See more info in `setTextStyleCommon`.\n * @deprecated\n * @param {Object} textStyle\n * @param {module:echarts/model/Model} labelModel\n * @param {string|boolean} defaultColor Default text color.\n *        If set as false, it will be processed as a emphasis style.\n */\n\n\nfunction setText(textStyle, labelModel, defaultColor) {\n  var opt = {\n    isRectText: true\n  };\n  var isEmphasis;\n\n  if (defaultColor === false) {\n    isEmphasis = true;\n  } else {\n    // Support setting color as 'auto' to get visual color.\n    opt.autoColor = defaultColor;\n  }\n\n  setTextStyleCommon(textStyle, labelModel, opt, isEmphasis); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n}\n/**\n * The uniform entry of set text style, that is, retrieve style definitions\n * from `model` and set to `textStyle` object.\n *\n * Never in merge mode, but in overwrite mode, that is, all of the text style\n * properties will be set. (Consider the states of normal and emphasis and\n * default value can be adopted, merge would make the logic too complicated\n * to manage.)\n *\n * The `textStyle` object can either be a plain object or an instance of\n * `zrender/src/graphic/Style`, and either be the style of normal or emphasis.\n * After this mothod called, the `textStyle` object can then be used in\n * `el.setStyle(textStyle)` or `el.hoverStyle = textStyle`.\n *\n * Default value will be adopted and `insideRollbackOpt` will be created.\n * See `applyDefaultTextStyle` `rollbackDefaultTextStyle` for more details.\n *\n * opt: {\n *      disableBox: boolean, Whether diable drawing box of block (outer most).\n *      isRectText: boolean,\n *      autoColor: string, specify a color when color is 'auto',\n *              for textFill, textStroke, textBackgroundColor, and textBorderColor.\n *              If autoColor specified, it is used as default textFill.\n *      useInsideStyle:\n *              `true`: Use inside style (textFill, textStroke, textStrokeWidth)\n *                  if `textFill` is not specified.\n *              `false`: Do not use inside style.\n *              `null/undefined`: use inside style if `isRectText` is true and\n *                  `textFill` is not specified and textPosition contains `'inside'`.\n *      forceRich: boolean\n * }\n */\n\n\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) {\n  // Consider there will be abnormal when merge hover style to normal style if given default value.\n  opt = opt || EMPTY_OBJ;\n\n  if (opt.isRectText) {\n    var textPosition;\n\n    if (opt.getTextPosition) {\n      textPosition = opt.getTextPosition(textStyleModel, isEmphasis);\n    } else {\n      textPosition = textStyleModel.getShallow('position') || (isEmphasis ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used\n      // in bar series, and magric type should be considered.\n\n      textPosition === 'outside' && (textPosition = 'top');\n    }\n\n    textStyle.textPosition = textPosition;\n    textStyle.textOffset = textStyleModel.getShallow('offset');\n    var labelRotate = textStyleModel.getShallow('rotate');\n    labelRotate != null && (labelRotate *= Math.PI / 180);\n    textStyle.textRotation = labelRotate;\n    textStyle.textDistance = zrUtil.retrieve2(textStyleModel.getShallow('distance'), isEmphasis ? null : 5);\n  }\n\n  var ecModel = textStyleModel.ecModel;\n  var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:\n  // {\n  //     data: [{\n  //         value: 12,\n  //         label: {\n  //             rich: {\n  //                 // no 'a' here but using parent 'a'.\n  //             }\n  //         }\n  //     }],\n  //     rich: {\n  //         a: { ... }\n  //     }\n  // }\n\n  var richItemNames = getRichItemNames(textStyleModel);\n  var richResult;\n\n  if (richItemNames) {\n    richResult = {};\n\n    for (var name in richItemNames) {\n      if (richItemNames.hasOwnProperty(name)) {\n        // Cascade is supported in rich.\n        var richTextStyle = textStyleModel.getModel(['rich', name]); // In rich, never `disableBox`.\n        // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,\n        // the default color `'blue'` will not be adopted if no color declared in `rich`.\n        // That might confuses users. So probably we should put `textStyleModel` as the\n        // root ancestor of the `richTextStyle`. But that would be a break change.\n\n        setTokenTextStyle(richResult[name] = {}, richTextStyle, globalTextStyle, opt, isEmphasis);\n      }\n    }\n  }\n\n  textStyle.rich = richResult;\n  setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, true);\n\n  if (opt.forceRich && !opt.textStyle) {\n    opt.textStyle = {};\n  }\n\n  return textStyle;\n} // Consider case:\n// {\n//     data: [{\n//         value: 12,\n//         label: {\n//             rich: {\n//                 // no 'a' here but using parent 'a'.\n//             }\n//         }\n//     }],\n//     rich: {\n//         a: { ... }\n//     }\n// }\n\n\nfunction getRichItemNames(textStyleModel) {\n  // Use object to remove duplicated names.\n  var richItemNameMap;\n\n  while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n    var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n\n    if (rich) {\n      richItemNameMap = richItemNameMap || {};\n\n      for (var name in rich) {\n        if (rich.hasOwnProperty(name)) {\n          richItemNameMap[name] = 1;\n        }\n      }\n    }\n\n    textStyleModel = textStyleModel.parentModel;\n  }\n\n  return richItemNameMap;\n}\n\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, isBlock) {\n  // In merge mode, default value should not be given.\n  globalTextStyle = !isEmphasis && globalTextStyle || EMPTY_OBJ;\n  textStyle.textFill = getAutoColor(textStyleModel.getShallow('color'), opt) || globalTextStyle.color;\n  textStyle.textStroke = getAutoColor(textStyleModel.getShallow('textBorderColor'), opt) || globalTextStyle.textBorderColor;\n  textStyle.textStrokeWidth = zrUtil.retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n\n  if (!isEmphasis) {\n    if (isBlock) {\n      textStyle.insideRollbackOpt = opt;\n      applyDefaultTextStyle(textStyle);\n    } // Set default finally.\n\n\n    if (textStyle.textFill == null) {\n      textStyle.textFill = opt.autoColor;\n    }\n  } // Do not use `getFont` here, because merge should be supported, where\n  // part of these properties may be changed in emphasis style, and the\n  // others should remain their original value got from normal style.\n\n\n  textStyle.fontStyle = textStyleModel.getShallow('fontStyle') || globalTextStyle.fontStyle;\n  textStyle.fontWeight = textStyleModel.getShallow('fontWeight') || globalTextStyle.fontWeight;\n  textStyle.fontSize = textStyleModel.getShallow('fontSize') || globalTextStyle.fontSize;\n  textStyle.fontFamily = textStyleModel.getShallow('fontFamily') || globalTextStyle.fontFamily;\n  textStyle.textAlign = textStyleModel.getShallow('align');\n  textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign') || textStyleModel.getShallow('baseline');\n  textStyle.textLineHeight = textStyleModel.getShallow('lineHeight');\n  textStyle.textWidth = textStyleModel.getShallow('width');\n  textStyle.textHeight = textStyleModel.getShallow('height');\n  textStyle.textTag = textStyleModel.getShallow('tag');\n\n  if (!isBlock || !opt.disableBox) {\n    textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt);\n    textStyle.textPadding = textStyleModel.getShallow('padding');\n    textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt);\n    textStyle.textBorderWidth = textStyleModel.getShallow('borderWidth');\n    textStyle.textBorderRadius = textStyleModel.getShallow('borderRadius');\n    textStyle.textBoxShadowColor = textStyleModel.getShallow('shadowColor');\n    textStyle.textBoxShadowBlur = textStyleModel.getShallow('shadowBlur');\n    textStyle.textBoxShadowOffsetX = textStyleModel.getShallow('shadowOffsetX');\n    textStyle.textBoxShadowOffsetY = textStyleModel.getShallow('shadowOffsetY');\n  }\n\n  textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor') || globalTextStyle.textShadowColor;\n  textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur') || globalTextStyle.textShadowBlur;\n  textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX') || globalTextStyle.textShadowOffsetX;\n  textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY') || globalTextStyle.textShadowOffsetY;\n}\n\nfunction getAutoColor(color, opt) {\n  return color !== 'auto' ? color : opt && opt.autoColor ? opt.autoColor : null;\n}\n/**\n * Give some default value to the input `textStyle` object, based on the current settings\n * in this `textStyle` object.\n *\n * The Scenario:\n * when text position is `inside` and `textFill` is not specified, we show\n * text border by default for better view. But it should be considered that text position\n * might be changed when hovering or being emphasis, where the `insideRollback` is used to\n * restore the style.\n *\n * Usage (& NOTICE):\n * When a style object (eithor plain object or instance of `zrender/src/graphic/Style`) is\n * about to be modified on its text related properties, `rollbackDefaultTextStyle` should\n * be called before the modification and `applyDefaultTextStyle` should be called after that.\n * (For the case that all of the text related properties is reset, like `setTextStyleCommon`\n * does, `rollbackDefaultTextStyle` is not needed to be called).\n */\n\n\nfunction applyDefaultTextStyle(textStyle) {\n  var textPosition = textStyle.textPosition;\n  var opt = textStyle.insideRollbackOpt;\n  var insideRollback;\n\n  if (opt && textStyle.textFill == null) {\n    var autoColor = opt.autoColor;\n    var isRectText = opt.isRectText;\n    var useInsideStyle = opt.useInsideStyle;\n    var useInsideStyleCache = useInsideStyle !== false && (useInsideStyle === true || isRectText && textPosition // textPosition can be [10, 30]\n    && typeof textPosition === 'string' && textPosition.indexOf('inside') >= 0);\n    var useAutoColorCache = !useInsideStyleCache && autoColor != null; // All of the props declared in `CACHED_LABEL_STYLE_PROPERTIES` are to be cached.\n\n    if (useInsideStyleCache || useAutoColorCache) {\n      insideRollback = {\n        textFill: textStyle.textFill,\n        textStroke: textStyle.textStroke,\n        textStrokeWidth: textStyle.textStrokeWidth\n      };\n    }\n\n    if (useInsideStyleCache) {\n      textStyle.textFill = '#fff'; // Consider text with #fff overflow its container.\n\n      if (textStyle.textStroke == null) {\n        textStyle.textStroke = autoColor;\n        textStyle.textStrokeWidth == null && (textStyle.textStrokeWidth = 2);\n      }\n    }\n\n    if (useAutoColorCache) {\n      textStyle.textFill = autoColor;\n    }\n  } // Always set `insideRollback`, so that the previous one can be cleared.\n\n\n  textStyle.insideRollback = insideRollback;\n}\n/**\n * Consider the case: in a scatter,\n * label: {\n *     normal: {position: 'inside'},\n *     emphasis: {position: 'top'}\n * }\n * In the normal state, the `textFill` will be set as '#fff' for pretty view (see\n * `applyDefaultTextStyle`), but when switching to emphasis state, the `textFill`\n * should be retured to 'autoColor', but not keep '#fff'.\n */\n\n\nfunction rollbackDefaultTextStyle(style) {\n  var insideRollback = style.insideRollback;\n\n  if (insideRollback) {\n    // Reset all of the props in `CACHED_LABEL_STYLE_PROPERTIES`.\n    style.textFill = insideRollback.textFill;\n    style.textStroke = insideRollback.textStroke;\n    style.textStrokeWidth = insideRollback.textStrokeWidth;\n    style.insideRollback = null;\n  }\n}\n\nfunction getFont(opt, ecModel) {\n  var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\n  return zrUtil.trim([// FIXME in node-canvas fontWeight is before fontStyle\n  opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\n\nfunction animateOrSetProps(isUpdate, el, props, animatableModel, dataIndex, cb) {\n  if (typeof dataIndex === 'function') {\n    cb = dataIndex;\n    dataIndex = null;\n  } // Do not check 'animation' property directly here. Consider this case:\n  // animation model is an `itemModel`, whose does not have `isAnimationEnabled`\n  // but its parent model (`seriesModel`) does.\n\n\n  var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n\n  if (animationEnabled) {\n    var postfix = isUpdate ? 'Update' : '';\n    var duration = animatableModel.getShallow('animationDuration' + postfix);\n    var animationEasing = animatableModel.getShallow('animationEasing' + postfix);\n    var animationDelay = animatableModel.getShallow('animationDelay' + postfix);\n\n    if (typeof animationDelay === 'function') {\n      animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n    }\n\n    if (typeof duration === 'function') {\n      duration = duration(dataIndex);\n    }\n\n    duration > 0 ? el.animateTo(props, duration, animationDelay || 0, animationEasing, cb, !!cb) : (el.stopAnimation(), el.attr(props), cb && cb());\n  } else {\n    el.stopAnimation();\n    el.attr(props);\n    cb && cb();\n  }\n}\n/**\n * Update graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} [cb]\n * @example\n *     graphic.updateProps(el, {\n *         position: [100, 100]\n *     }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\n *     // Or\n *     graphic.updateProps(el, {\n *         position: [100, 100]\n *     }, seriesModel, function () { console.log('Animation done!'); });\n */\n\n\nfunction updateProps(el, props, animatableModel, dataIndex, cb) {\n  animateOrSetProps(true, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Init graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} cb\n */\n\n\nfunction initProps(el, props, animatableModel, dataIndex, cb) {\n  animateOrSetProps(false, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Get transform matrix of target (param target),\n * in coordinate of its ancestor (param ancestor)\n *\n * @param {module:zrender/mixin/Transformable} target\n * @param {module:zrender/mixin/Transformable} [ancestor]\n */\n\n\nfunction getTransform(target, ancestor) {\n  var mat = matrix.identity([]);\n\n  while (target && target !== ancestor) {\n    matrix.mul(mat, target.getLocalTransform(), mat);\n    target = target.parent;\n  }\n\n  return mat;\n}\n/**\n * Apply transform to an vertex.\n * @param {Array.<number>} target [x, y]\n * @param {Array.<number>|TypedArray.<number>|Object} transform Can be:\n *      + Transform matrix: like [1, 0, 0, 1, 0, 0]\n *      + {position, rotation, scale}, the same as `zrender/Transformable`.\n * @param {boolean=} invert Whether use invert matrix.\n * @return {Array.<number>} [x, y]\n */\n\n\nfunction applyTransform(target, transform, invert) {\n  if (transform && !zrUtil.isArrayLike(transform)) {\n    transform = Transformable.getLocalTransform(transform);\n  }\n\n  if (invert) {\n    transform = matrix.invert([], transform);\n  }\n\n  return vector.applyTransform([], target, transform);\n}\n/**\n * @param {string} direction 'left' 'right' 'top' 'bottom'\n * @param {Array.<number>} transform Transform matrix: like [1, 0, 0, 1, 0, 0]\n * @param {boolean=} invert Whether use invert matrix.\n * @return {string} Transformed direction. 'left' 'right' 'top' 'bottom'\n */\n\n\nfunction transformDirection(direction, transform, invert) {\n  // Pick a base, ensure that transform result will not be (0, 0).\n  var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n  var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n  var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n  vertex = applyTransform(vertex, transform, invert);\n  return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\n/**\n * Apply group transition animation from g1 to g2.\n * If no animatableModel, no animation.\n */\n\n\nfunction groupTransition(g1, g2, animatableModel, cb) {\n  if (!g1 || !g2) {\n    return;\n  }\n\n  function getElMap(g) {\n    var elMap = {};\n    g.traverse(function (el) {\n      if (!el.isGroup && el.anid) {\n        elMap[el.anid] = el;\n      }\n    });\n    return elMap;\n  }\n\n  function getAnimatableProps(el) {\n    var obj = {\n      position: vector.clone(el.position),\n      rotation: el.rotation\n    };\n\n    if (el.shape) {\n      obj.shape = zrUtil.extend({}, el.shape);\n    }\n\n    return obj;\n  }\n\n  var elMap1 = getElMap(g1);\n  g2.traverse(function (el) {\n    if (!el.isGroup && el.anid) {\n      var oldEl = elMap1[el.anid];\n\n      if (oldEl) {\n        var newProp = getAnimatableProps(el);\n        el.attr(getAnimatableProps(oldEl));\n        updateProps(el, newProp, animatableModel, el.dataIndex);\n      } // else {\n      //     if (el.previousProps) {\n      //         graphic.updateProps\n      //     }\n      // }\n\n    }\n  });\n}\n/**\n * @param {Array.<Array.<number>>} points Like: [[23, 44], [53, 66], ...]\n * @param {Object} rect {x, y, width, height}\n * @return {Array.<Array.<number>>} A new clipped points.\n */\n\n\nfunction clipPointsByRect(points, rect) {\n  // FIXME: this way migth be incorrect when grpahic clipped by a corner.\n  // and when element have border.\n  return zrUtil.map(points, function (point) {\n    var x = point[0];\n    x = mathMax(x, rect.x);\n    x = mathMin(x, rect.x + rect.width);\n    var y = point[1];\n    y = mathMax(y, rect.y);\n    y = mathMin(y, rect.y + rect.height);\n    return [x, y];\n  });\n}\n/**\n * @param {Object} targetRect {x, y, width, height}\n * @param {Object} rect {x, y, width, height}\n * @return {Object} A new clipped rect. If rect size are negative, return undefined.\n */\n\n\nfunction clipRectByRect(targetRect, rect) {\n  var x = mathMax(targetRect.x, rect.x);\n  var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n  var y = mathMax(targetRect.y, rect.y);\n  var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height); // If the total rect is cliped, nothing, including the border,\n  // should be painted. So return undefined.\n\n  if (x2 >= x && y2 >= y) {\n    return {\n      x: x,\n      y: y,\n      width: x2 - x,\n      height: y2 - y\n    };\n  }\n}\n/**\n * @param {string} iconStr Support 'image://' or 'path://' or direct svg path.\n * @param {Object} [opt] Properties of `module:zrender/Element`, except `style`.\n * @param {Object} [rect] {x, y, width, height}\n * @return {module:zrender/Element} Icon path or image element.\n */\n\n\nfunction createIcon(iconStr, opt, rect) {\n  opt = zrUtil.extend({\n    rectHover: true\n  }, opt);\n  var style = opt.style = {\n    strokeNoScale: true\n  };\n  rect = rect || {\n    x: -1,\n    y: -1,\n    width: 2,\n    height: 2\n  };\n\n  if (iconStr) {\n    return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), zrUtil.defaults(style, rect), new ZImage(opt)) : makePath(iconStr.replace('path://', ''), opt, rect, 'center');\n  }\n}\n/**\n * Return `true` if the given line (line `a`) and the given polygon\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {Array.<Array.<number>>} points Points of the polygon.\n * @return {boolean}\n */\n\n\nfunction linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\n  for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n    var p = points[i];\n\n    if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\n      return true;\n    }\n\n    p2 = p;\n  }\n}\n/**\n * Return `true` if the given two lines (line `a` and line `b`)\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {number} b1x\n * @param {number} b1y\n * @param {number} b2x\n * @param {number} b2y\n * @return {boolean}\n */\n\n\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n  // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`.\n  var mx = a2x - a1x;\n  var my = a2y - a1y;\n  var nx = b2x - b1x;\n  var ny = b2y - b1y; // `vec_m` and `vec_n` are parallel iff\n  //     exising `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.\n\n  var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n\n  if (nearZero(nmCrossProduct)) {\n    return false;\n  } // `vec_m` and `vec_n` are intersect iff\n  //     existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`,\n  //     such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)`\n  //           and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`.\n\n\n  var b1a1x = a1x - b1x;\n  var b1a1y = a1y - b1y;\n  var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\n\n  if (q < 0 || q > 1) {\n    return false;\n  }\n\n  var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n\n  if (p < 0 || p > 1) {\n    return false;\n  }\n\n  return true;\n}\n/**\n * Cross product of 2-dimension vector.\n */\n\n\nfunction crossProduct2d(x1, y1, x2, y2) {\n  return x1 * y2 - x2 * y1;\n}\n\nfunction nearZero(val) {\n  return val <= 1e-6 && val >= -1e-6;\n} // Register built-in shapes. These shapes might be overwirtten\n// by users, although we do not recommend that.\n\n\nregisterShape('circle', Circle);\nregisterShape('sector', Sector);\nregisterShape('ring', Ring);\nregisterShape('polygon', Polygon);\nregisterShape('polyline', Polyline);\nregisterShape('rect', Rect);\nregisterShape('line', Line);\nregisterShape('bezierCurve', BezierCurve);\nregisterShape('arc', Arc);\nexports.Z2_EMPHASIS_LIFT = Z2_EMPHASIS_LIFT;\nexports.CACHED_LABEL_STYLE_PROPERTIES = CACHED_LABEL_STYLE_PROPERTIES;\nexports.extendShape = extendShape;\nexports.extendPath = extendPath;\nexports.registerShape = registerShape;\nexports.getShapeClass = getShapeClass;\nexports.makePath = makePath;\nexports.makeImage = makeImage;\nexports.mergePath = mergePath;\nexports.resizePath = resizePath;\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;\nexports.setElementHoverStyle = setElementHoverStyle;\nexports.setHoverStyle = setHoverStyle;\nexports.setAsHighDownDispatcher = setAsHighDownDispatcher;\nexports.isHighDownDispatcher = isHighDownDispatcher;\nexports.getHighlightDigit = getHighlightDigit;\nexports.setLabelStyle = setLabelStyle;\nexports.modifyLabelStyle = modifyLabelStyle;\nexports.setTextStyle = setTextStyle;\nexports.setText = setText;\nexports.getFont = getFont;\nexports.updateProps = updateProps;\nexports.initProps = initProps;\nexports.getTransform = getTransform;\nexports.applyTransform = applyTransform;\nexports.transformDirection = transformDirection;\nexports.groupTransition = groupTransition;\nexports.clipPointsByRect = clipPointsByRect;\nexports.clipRectByRect = clipRectByRect;\nexports.createIcon = createIcon;\nexports.linePolygonIntersect = linePolygonIntersect;\nexports.lineLineIntersect = lineLineIntersect;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(362);\nvar defineBuiltIn = __webpack_require__(62);\nvar toString = __webpack_require__(812);\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\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var 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-x/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  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91)))\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The method \"quantile\" was copied from \"d3.js\".\n* (See more details in the comment of the method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* </licenses/LICENSE-d3>).\n*/\nvar RADIAN_EPSILON = 1e-4;\n\nfunction _trim(str) {\n  return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\n * Linear mapping a value from domain to range\n * @memberOf module:echarts/util/number\n * @param  {(number|Array.<number>)} val\n * @param  {Array.<number>} domain Domain extent domain[0] can be bigger than domain[1]\n * @param  {Array.<number>} range  Range extent range[0] can be bigger than range[1]\n * @param  {boolean} clamp\n * @return {(number|Array.<number>}\n */\n\n\nfunction linearMap(val, domain, range, clamp) {\n  var subDomain = domain[1] - domain[0];\n  var subRange = range[1] - range[0];\n\n  if (subDomain === 0) {\n    return subRange === 0 ? range[0] : (range[0] + range[1]) / 2;\n  } // Avoid accuracy problem in edge, such as\n  // 146.39 - 62.83 === 83.55999999999999.\n  // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n  // It is a little verbose for efficiency considering this method\n  // is a hotspot.\n\n\n  if (clamp) {\n    if (subDomain > 0) {\n      if (val <= domain[0]) {\n        return range[0];\n      } else if (val >= domain[1]) {\n        return range[1];\n      }\n    } else {\n      if (val >= domain[0]) {\n        return range[0];\n      } else if (val <= domain[1]) {\n        return range[1];\n      }\n    }\n  } else {\n    if (val === domain[0]) {\n      return range[0];\n    }\n\n    if (val === domain[1]) {\n      return range[1];\n    }\n  }\n\n  return (val - domain[0]) / subDomain * subRange + range[0];\n}\n/**\n * Convert a percent string to absolute number.\n * Returns NaN if percent is not a valid string or number\n * @memberOf module:echarts/util/number\n * @param {string|number} percent\n * @param {number} all\n * @return {number}\n */\n\n\nfunction parsePercent(percent, all) {\n  switch (percent) {\n    case 'center':\n    case 'middle':\n      percent = '50%';\n      break;\n\n    case 'left':\n    case 'top':\n      percent = '0%';\n      break;\n\n    case 'right':\n    case 'bottom':\n      percent = '100%';\n      break;\n  }\n\n  if (typeof percent === 'string') {\n    if (_trim(percent).match(/%$/)) {\n      return parseFloat(percent) / 100 * all;\n    }\n\n    return parseFloat(percent);\n  }\n\n  return percent == null ? NaN : +percent;\n}\n/**\n * (1) Fix rounding error of float numbers.\n * (2) Support return string to avoid scientific notation like '3.5e-7'.\n *\n * @param {number} x\n * @param {number} [precision]\n * @param {boolean} [returnStr]\n * @return {number|string}\n */\n\n\nfunction round(x, precision, returnStr) {\n  if (precision == null) {\n    precision = 10;\n  } // Avoid range error\n\n\n  precision = Math.min(Math.max(0, precision), 20);\n  x = (+x).toFixed(precision);\n  return returnStr ? x : +x;\n}\n/**\n * asc sort arr.\n * The input arr will be modified.\n *\n * @param {Array} arr\n * @return {Array} The input arr.\n */\n\n\nfunction asc(arr) {\n  arr.sort(function (a, b) {\n    return a - b;\n  });\n  return arr;\n}\n/**\n * Get precision\n * @param {number} val\n */\n\n\nfunction getPrecision(val) {\n  val = +val;\n\n  if (isNaN(val)) {\n    return 0;\n  } // It is much faster than methods converting number to string as follows\n  //      var tmp = val.toString();\n  //      return tmp.length - 1 - tmp.indexOf('.');\n  // especially when precision is low\n\n\n  var e = 1;\n  var count = 0;\n\n  while (Math.round(val * e) / e !== val) {\n    e *= 10;\n    count++;\n  }\n\n  return count;\n}\n/**\n * @param {string|number} val\n * @return {number}\n */\n\n\nfunction getPrecisionSafe(val) {\n  var str = val.toString(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n  var eIndex = str.indexOf('e');\n\n  if (eIndex > 0) {\n    var precision = +str.slice(eIndex + 1);\n    return precision < 0 ? -precision : 0;\n  } else {\n    var dotIndex = str.indexOf('.');\n    return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\n  }\n}\n/**\n * Minimal dicernible data precisioin according to a single pixel.\n *\n * @param {Array.<number>} dataExtent\n * @param {Array.<number>} pixelExtent\n * @return {number} precision\n */\n\n\nfunction getPixelPrecision(dataExtent, pixelExtent) {\n  var log = Math.log;\n  var LN10 = Math.LN10;\n  var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n  var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n  var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n  return !isFinite(precision) ? 20 : precision;\n}\n/**\n * Get a data of given precision, assuring the sum of percentages\n * in valueList is 1.\n * The largest remainer method is used.\n * https://en.wikipedia.org/wiki/Largest_remainder_method\n *\n * @param {Array.<number>} valueList a list of all data\n * @param {number} idx index of the data to be processed in valueList\n * @param {number} precision integer number showing digits of precision\n * @return {number} percent ranging from 0 to 100\n */\n\n\nfunction getPercentWithPrecision(valueList, idx, precision) {\n  if (!valueList[idx]) {\n    return 0;\n  }\n\n  var sum = zrUtil.reduce(valueList, function (acc, val) {\n    return acc + (isNaN(val) ? 0 : val);\n  }, 0);\n\n  if (sum === 0) {\n    return 0;\n  }\n\n  var digits = Math.pow(10, precision);\n  var votesPerQuota = zrUtil.map(valueList, function (val) {\n    return (isNaN(val) ? 0 : val) / sum * digits * 100;\n  });\n  var targetSeats = digits * 100;\n  var seats = zrUtil.map(votesPerQuota, function (votes) {\n    // Assign automatic seats.\n    return Math.floor(votes);\n  });\n  var currentSum = zrUtil.reduce(seats, function (acc, val) {\n    return acc + val;\n  }, 0);\n  var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n    return votes - seats[idx];\n  }); // Has remainding votes.\n\n  while (currentSum < targetSeats) {\n    // Find next largest remainder.\n    var max = Number.NEGATIVE_INFINITY;\n    var maxId = null;\n\n    for (var i = 0, len = remainder.length; i < len; ++i) {\n      if (remainder[i] > max) {\n        max = remainder[i];\n        maxId = i;\n      }\n    } // Add a vote to max remainder.\n\n\n    ++seats[maxId];\n    remainder[maxId] = 0;\n    ++currentSum;\n  }\n\n  return seats[idx] / digits;\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * To 0 - 2 * PI, considering negative radian.\n * @param {number} radian\n * @return {number}\n */\n\nfunction remRadian(radian) {\n  var pi2 = Math.PI * 2;\n  return (radian % pi2 + pi2) % pi2;\n}\n/**\n * @param {type} radian\n * @return {boolean}\n */\n\n\nfunction isRadianAroundZero(val) {\n  return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n/* eslint-disable */\n\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/* eslint-enable */\n\n/**\n * @param {string|Date|number} value These values can be accepted:\n *   + An instance of Date, represent a time in its own time zone.\n *   + Or string in a subset of ISO 8601, only including:\n *     + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\n *     + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\n *     + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\n *     all of which will be treated as local time if time zone is not specified\n *     (see <https://momentjs.com/>).\n *   + Or other string format, including (all of which will be treated as loacal time):\n *     '2012', '2012-3-1', '2012/3/1', '2012/03/01',\n *     '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\n *   + a timestamp, which represent a time in UTC.\n * @return {Date} date\n */\n\nfunction parseDate(value) {\n  if (value instanceof Date) {\n    return value;\n  } else if (typeof value === 'string') {\n    // Different browsers parse date in different way, so we parse it manually.\n    // Some other issues:\n    // new Date('1970-01-01') is UTC,\n    // new Date('1970/01/01') and new Date('1970-1-01') is local.\n    // See issue #3623\n    var match = TIME_REG.exec(value);\n\n    if (!match) {\n      // return Invalid Date.\n      return new Date(NaN);\n    } // Use local time when no timezone offset specifed.\n\n\n    if (!match[8]) {\n      // match[n] can only be string or undefined.\n      // But take care of '12' + 1 => '121'.\n      return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\n    } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n    // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n    // For example, system timezone is set as \"Time Zone: America/Toronto\",\n    // then these code will get different result:\n    // `new Date(1478411999999).getTimezoneOffset();  // get 240`\n    // `new Date(1478412000000).getTimezoneOffset();  // get 300`\n    // So we should not use `new Date`, but use `Date.UTC`.\n    else {\n        var hour = +match[4] || 0;\n\n        if (match[8].toUpperCase() !== 'Z') {\n          hour -= match[8].slice(0, 3);\n        }\n\n        return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\n      }\n  } else if (value == null) {\n    return new Date(NaN);\n  }\n\n  return new Date(Math.round(value));\n}\n/**\n * Quantity of a number. e.g. 0.1, 1, 10, 100\n *\n * @param  {number} val\n * @return {number}\n */\n\n\nfunction quantity(val) {\n  return Math.pow(10, quantityExponent(val));\n}\n/**\n * Exponent of the quantity of a number\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\n *\n * @param  {number} val non-negative value\n * @return {number}\n */\n\n\nfunction quantityExponent(val) {\n  if (val === 0) {\n    return 0;\n  }\n\n  var exp = Math.floor(Math.log(val) / Math.LN10);\n  /**\n   * exp is expected to be the rounded-down result of the base-10 log of val.\n   * But due to the precision loss with Math.log(val), we need to restore it\n   * using 10^exp to make sure we can get val back from exp. #11249\n   */\n\n  if (val / Math.pow(10, exp) >= 10) {\n    exp++;\n  }\n\n  return exp;\n}\n/**\n * find a “nice” number approximately equal to x. Round the number if round = true,\n * take ceiling if round = false. The primary observation is that the “nicest”\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\n *\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\n *\n * @param  {number} val Non-negative value.\n * @param  {boolean} round\n * @return {number}\n */\n\n\nfunction nice(val, round) {\n  var exponent = quantityExponent(val);\n  var exp10 = Math.pow(10, exponent);\n  var f = val / exp10; // 1 <= f < 10\n\n  var nf;\n\n  if (round) {\n    if (f < 1.5) {\n      nf = 1;\n    } else if (f < 2.5) {\n      nf = 2;\n    } else if (f < 4) {\n      nf = 3;\n    } else if (f < 7) {\n      nf = 5;\n    } else {\n      nf = 10;\n    }\n  } else {\n    if (f < 1) {\n      nf = 1;\n    } else if (f < 2) {\n      nf = 2;\n    } else if (f < 3) {\n      nf = 3;\n    } else if (f < 5) {\n      nf = 5;\n    } else {\n      nf = 10;\n    }\n  }\n\n  val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n  // 20 is the uppper bound of toFixed.\n\n  return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\n * This code was copied from \"d3.js\"\n * <https://github.com/d3/d3/blob/9cc9a875e636a1dcf36cc1e07bdf77e1ad6e2c74/src/arrays/quantile.js>.\n * See the license statement at the head of this file.\n * @param {Array.<number>} ascArr\n */\n\n\nfunction quantile(ascArr, p) {\n  var H = (ascArr.length - 1) * p + 1;\n  var h = Math.floor(H);\n  var v = +ascArr[h - 1];\n  var e = H - h;\n  return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\n * Order intervals asc, and split them when overlap.\n * expect(numberUtil.reformIntervals([\n *     {interval: [18, 62], close: [1, 1]},\n *     {interval: [-Infinity, -70], close: [0, 0]},\n *     {interval: [-70, -26], close: [1, 1]},\n *     {interval: [-26, 18], close: [1, 1]},\n *     {interval: [62, 150], close: [1, 1]},\n *     {interval: [106, 150], close: [1, 1]},\n *     {interval: [150, Infinity], close: [0, 0]}\n * ])).toEqual([\n *     {interval: [-Infinity, -70], close: [0, 0]},\n *     {interval: [-70, -26], close: [1, 1]},\n *     {interval: [-26, 18], close: [0, 1]},\n *     {interval: [18, 62], close: [0, 1]},\n *     {interval: [62, 150], close: [0, 1]},\n *     {interval: [150, Infinity], close: [0, 0]}\n * ]);\n * @param {Array.<Object>} list, where `close` mean open or close\n *        of the interval, and Infinity can be used.\n * @return {Array.<Object>} The origin list, which has been reformed.\n */\n\n\nfunction reformIntervals(list) {\n  list.sort(function (a, b) {\n    return littleThan(a, b, 0) ? -1 : 1;\n  });\n  var curr = -Infinity;\n  var currClose = 1;\n\n  for (var i = 0; i < list.length;) {\n    var interval = list[i].interval;\n    var close = list[i].close;\n\n    for (var lg = 0; lg < 2; lg++) {\n      if (interval[lg] <= curr) {\n        interval[lg] = curr;\n        close[lg] = !lg ? 1 - currClose : 1;\n      }\n\n      curr = interval[lg];\n      currClose = close[lg];\n    }\n\n    if (interval[0] === interval[1] && close[0] * close[1] !== 1) {\n      list.splice(i, 1);\n    } else {\n      i++;\n    }\n  }\n\n  return list;\n\n  function littleThan(a, b, lg) {\n    return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n  }\n}\n/**\n * parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n * ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n * subtraction forces infinities to NaN\n *\n * @param {*} v\n * @return {boolean}\n */\n\n\nfunction isNumeric(v) {\n  return v - parseFloat(v) >= 0;\n}\n\nexports.linearMap = linearMap;\nexports.parsePercent = parsePercent;\nexports.round = round;\nexports.asc = asc;\nexports.getPrecision = getPrecision;\nexports.getPrecisionSafe = getPrecisionSafe;\nexports.getPixelPrecision = getPixelPrecision;\nexports.getPercentWithPrecision = getPercentWithPrecision;\nexports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nexports.remRadian = remRadian;\nexports.isRadianAroundZero = isRadianAroundZero;\nexports.parseDate = parseDate;\nexports.quantity = quantity;\nexports.quantityExponent = quantityExponent;\nexports.nice = nice;\nexports.quantile = quantile;\nexports.reformIntervals = reformIntervals;\nexports.isNumeric = isNumeric;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyfill\", function() { return polyfill; });\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\nfunction componentWillMount() {\n  // Call this.constructor.gDSFP to support sub-classes.\n  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n  if (state !== null && state !== undefined) {\n    this.setState(state);\n  }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n  // Call this.constructor.gDSFP to support sub-classes.\n  // Use the setState() updater to ensure state isn't stale in certain edge cases.\n  function updater(prevState) {\n    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n    return state !== null && state !== undefined ? state : null;\n  }\n  // Binding \"this\" is important for shallow renderer support.\n  this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n  try {\n    var prevProps = this.props;\n    var prevState = this.state;\n    this.props = nextProps;\n    this.state = nextState;\n    this.__reactInternalSnapshotFlag = true;\n    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n      prevProps,\n      prevState\n    );\n  } finally {\n    this.props = prevProps;\n    this.state = prevState;\n  }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  }\n\n  if (\n    typeof Component.getDerivedStateFromProps !== 'function' &&\n    typeof prototype.getSnapshotBeforeUpdate !== 'function'\n  ) {\n    return Component;\n  }\n\n  // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n  // Error if any of these lifecycles are present,\n  // Because they would work differently between older and newer (16.3+) versions of React.\n  var foundWillMountName = null;\n  var foundWillReceivePropsName = null;\n  var foundWillUpdateName = null;\n  if (typeof prototype.componentWillMount === 'function') {\n    foundWillMountName = 'componentWillMount';\n  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n    foundWillMountName = 'UNSAFE_componentWillMount';\n  }\n  if (typeof prototype.componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'componentWillReceiveProps';\n  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n  }\n  if (typeof prototype.componentWillUpdate === 'function') {\n    foundWillUpdateName = 'componentWillUpdate';\n  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n    foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n  }\n  if (\n    foundWillMountName !== null ||\n    foundWillReceivePropsName !== null ||\n    foundWillUpdateName !== null\n  ) {\n    var componentName = Component.displayName || Component.name;\n    var newApiName =\n      typeof Component.getDerivedStateFromProps === 'function'\n        ? 'getDerivedStateFromProps()'\n        : 'getSnapshotBeforeUpdate()';\n\n    throw Error(\n      'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n        componentName +\n        ' uses ' +\n        newApiName +\n        ' but also contains the following legacy lifecycles:' +\n        (foundWillMountName !== null ? '\\n  ' + foundWillMountName : '') +\n        (foundWillReceivePropsName !== null\n          ? '\\n  ' + foundWillReceivePropsName\n          : '') +\n        (foundWillUpdateName !== null ? '\\n  ' + foundWillUpdateName : '') +\n        '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n        'https://fb.me/react-async-component-lifecycle-hooks'\n    );\n  }\n\n  // React <= 16.2 does not support static getDerivedStateFromProps.\n  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n  // Newer versions of React will ignore these lifecycles if gDSFP exists.\n  if (typeof Component.getDerivedStateFromProps === 'function') {\n    prototype.componentWillMount = componentWillMount;\n    prototype.componentWillReceiveProps = componentWillReceiveProps;\n  }\n\n  // React <= 16.2 does not support getSnapshotBeforeUpdate.\n  // As a workaround, use cWU to invoke the new lifecycle.\n  // Newer versions of React will ignore that lifecycle if gSBU exists.\n  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n    if (typeof prototype.componentDidUpdate !== 'function') {\n      throw new Error(\n        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n      );\n    }\n\n    prototype.componentWillUpdate = componentWillUpdate;\n\n    var componentDidUpdate = prototype.componentDidUpdate;\n\n    prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n      prevProps,\n      prevState,\n      maybeSnapshot\n    ) {\n      // 16.3+ will not execute our will-update method;\n      // It will pass a snapshot value to did-update though.\n      // Older versions will require our polyfilled will-update value.\n      // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n      // Because for <= 15.x versions this might be a \"prevContext\" object.\n      // We also can't just check \"__reactInternalSnapshot\",\n      // Because get-snapshot might return a falsy value.\n      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n      var snapshot = this.__reactInternalSnapshotFlag\n        ? this.__reactInternalSnapshot\n        : maybeSnapshot;\n\n      componentDidUpdate.call(this, prevProps, prevState, snapshot);\n    };\n  }\n\n  return Component;\n}\n\n\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\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\n  return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 29 */,\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar env = __webpack_require__(66);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar isArray = zrUtil.isArray;\n/**\n * Make the name displayable. But we should\n * make sure it is not duplicated with user\n * specified name, so use '\\0';\n */\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\n/**\n * If value is not array, then translate it to array.\n * @param  {*} value\n * @return {Array} [value] or value\n */\n\nfunction normalizeToArray(value) {\n  return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\n * Sync default option between normal and emphasis like `position` and `show`\n * In case some one will write code like\n *     label: {\n *          show: false,\n *          position: 'outside',\n *          fontSize: 18\n *     },\n *     emphasis: {\n *          label: { show: true }\n *     }\n * @param {Object} opt\n * @param {string} key\n * @param {Array.<string>} subOpts\n */\n\n\nfunction defaultEmphasis(opt, key, subOpts) {\n  // Caution: performance sensitive.\n  if (opt) {\n    opt[key] = opt[key] || {};\n    opt.emphasis = opt.emphasis || {};\n    opt.emphasis[key] = opt.emphasis[key] || {}; // Default emphasis option from normal\n\n    for (var i = 0, len = subOpts.length; i < len; i++) {\n      var subOptName = subOpts[i];\n\n      if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n        opt.emphasis[key][subOptName] = opt[key][subOptName];\n      }\n    }\n  }\n}\n\nvar TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n//     'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n//     'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n//     // FIXME: deprecated, check and remove it.\n//     'textStyle'\n// ]);\n\n/**\n * The method do not ensure performance.\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method retieves value from data.\n * @param {string|number|Date|Array|Object} dataItem\n * @return {number|string|Date|Array.<number|string|Date>}\n */\n\nfunction getDataItemValue(dataItem) {\n  return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method determine if dataItem has extra option besides value\n * @param {string|number|Date|Array|Object} dataItem\n */\n\n\nfunction isDataItemOption(dataItem) {\n  return isObject(dataItem) && !(dataItem instanceof Array); // // markLine data can be array\n  // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n/**\n * Mapping to exists for merge.\n *\n * @public\n * @param {Array.<Object>|Array.<module:echarts/model/Component>} exists\n * @param {Object|Array.<Object>} newCptOptions\n * @return {Array.<Object>} Result, like [{exist: ..., option: ...}, {}],\n *                          index of which is the same as exists.\n */\n\n\nfunction mappingToExists(exists, newCptOptions) {\n  // Mapping by the order by original option (but not order of\n  // new option) in merge mode. Because we should ensure\n  // some specified index (like xAxisIndex) is consistent with\n  // original option, which is easy to understand, espatially in\n  // media query. And in most case, merge option is used to\n  // update partial option but not be expected to change order.\n  newCptOptions = (newCptOptions || []).slice();\n  var result = zrUtil.map(exists || [], function (obj, index) {\n    return {\n      exist: obj\n    };\n  }); // Mapping by id or name if specified.\n\n  each(newCptOptions, function (cptOption, index) {\n    if (!isObject(cptOption)) {\n      return;\n    } // id has highest priority.\n\n\n    for (var i = 0; i < result.length; i++) {\n      if (!result[i].option // Consider name: two map to one.\n      && cptOption.id != null && result[i].exist.id === cptOption.id + '') {\n        result[i].option = cptOption;\n        newCptOptions[index] = null;\n        return;\n      }\n    }\n\n    for (var i = 0; i < result.length; i++) {\n      var exist = result[i].exist;\n\n      if (!result[i].option // Consider name: two map to one.\n      // Can not match when both ids exist but different.\n      && (exist.id == null || cptOption.id == null) && cptOption.name != null && !isIdInner(cptOption) && !isIdInner(exist) && exist.name === cptOption.name + '') {\n        result[i].option = cptOption;\n        newCptOptions[index] = null;\n        return;\n      }\n    }\n  }); // Otherwise mapping by index.\n\n  each(newCptOptions, function (cptOption, index) {\n    if (!isObject(cptOption)) {\n      return;\n    }\n\n    var i = 0;\n\n    for (; i < result.length; i++) {\n      var exist = result[i].exist;\n\n      if (!result[i].option // Existing model that already has id should be able to\n      // mapped to (because after mapping performed model may\n      // be assigned with a id, whish should not affect next\n      // mapping), except those has inner id.\n      && !isIdInner(exist) // Caution:\n      // Do not overwrite id. But name can be overwritten,\n      // because axis use name as 'show label text'.\n      // 'exist' always has id and name and we dont\n      // need to check it.\n      && cptOption.id == null) {\n        result[i].option = cptOption;\n        break;\n      }\n    }\n\n    if (i >= result.length) {\n      result.push({\n        option: cptOption\n      });\n    }\n  });\n  return result;\n}\n/**\n * Make id and name for mapping result (result of mappingToExists)\n * into `keyInfo` field.\n *\n * @public\n * @param {Array.<Object>} Result, like [{exist: ..., option: ...}, {}],\n *                          which order is the same as exists.\n * @return {Array.<Object>} The input.\n */\n\n\nfunction makeIdAndName(mapResult) {\n  // We use this id to hash component models and view instances\n  // in echarts. id can be specified by user, or auto generated.\n  // The id generation rule ensures new view instance are able\n  // to mapped to old instance when setOption are called in\n  // no-merge mode. So we generate model id by name and plus\n  // type in view id.\n  // name can be duplicated among components, which is convenient\n  // to specify multi components (like series) by one name.\n  // Ensure that each id is distinct.\n  var idMap = zrUtil.createHashMap();\n  each(mapResult, function (item, index) {\n    var existCpt = item.exist;\n    existCpt && idMap.set(existCpt.id, item);\n  });\n  each(mapResult, function (item, index) {\n    var opt = item.option;\n    zrUtil.assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n    opt && opt.id != null && idMap.set(opt.id, item);\n    !item.keyInfo && (item.keyInfo = {});\n  }); // Make name and id.\n\n  each(mapResult, function (item, index) {\n    var existCpt = item.exist;\n    var opt = item.option;\n    var keyInfo = item.keyInfo;\n\n    if (!isObject(opt)) {\n      return;\n    } // name can be overwitten. Consider case: axis.name = '20km'.\n    // But id generated by name will not be changed, which affect\n    // only in that case: setOption with 'not merge mode' and view\n    // instance will be recreated, which can be accepted.\n\n\n    keyInfo.name = opt.name != null ? opt.name + '' : existCpt ? existCpt.name // Avoid diffferent series has the same name,\n    // because name may be used like in color pallet.\n    : DUMMY_COMPONENT_NAME_PREFIX + index;\n\n    if (existCpt) {\n      keyInfo.id = existCpt.id;\n    } else if (opt.id != null) {\n      keyInfo.id = opt.id + '';\n    } else {\n      // Consider this situatoin:\n      //  optionA: [{name: 'a'}, {name: 'a'}, {..}]\n      //  optionB [{..}, {name: 'a'}, {name: 'a'}]\n      // Series with the same name between optionA and optionB\n      // should be mapped.\n      var idNum = 0;\n\n      do {\n        keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n      } while (idMap.get(keyInfo.id));\n    }\n\n    idMap.set(keyInfo.id, item);\n  });\n}\n\nfunction isNameSpecified(componentModel) {\n  var name = componentModel.name; // Is specified when `indexOf` get -1 or > 0.\n\n  return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\n}\n/**\n * @public\n * @param {Object} cptOption\n * @return {boolean}\n */\n\n\nfunction isIdInner(cptOption) {\n  return isObject(cptOption) && cptOption.id && (cptOption.id + '').indexOf('\\0_ec_\\0') === 0;\n}\n/**\n * A helper for removing duplicate items between batchA and batchB,\n * and in themselves, and categorize by series.\n *\n * @param {Array.<Object>} batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @param {Array.<Object>} batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @return {Array.<Array.<Object>, Array.<Object>>} result: [resultBatchA, resultBatchB]\n */\n\n\nfunction compressBatches(batchA, batchB) {\n  var mapA = {};\n  var mapB = {};\n  makeMap(batchA || [], mapA);\n  makeMap(batchB || [], mapB, mapA);\n  return [mapToArray(mapA), mapToArray(mapB)];\n\n  function makeMap(sourceBatch, map, otherMap) {\n    for (var i = 0, len = sourceBatch.length; i < len; i++) {\n      var seriesId = sourceBatch[i].seriesId;\n      var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n      var otherDataIndices = otherMap && otherMap[seriesId];\n\n      for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n        var dataIndex = dataIndices[j];\n\n        if (otherDataIndices && otherDataIndices[dataIndex]) {\n          otherDataIndices[dataIndex] = null;\n        } else {\n          (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n        }\n      }\n    }\n  }\n\n  function mapToArray(map, isData) {\n    var result = [];\n\n    for (var i in map) {\n      if (map.hasOwnProperty(i) && map[i] != null) {\n        if (isData) {\n          result.push(+i);\n        } else {\n          var dataIndices = mapToArray(map[i], true);\n          dataIndices.length && result.push({\n            seriesId: i,\n            dataIndex: dataIndices\n          });\n        }\n      }\n    }\n\n    return result;\n  }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name\n *                         each of which can be Array or primary type.\n * @return {number|Array.<number>} dataIndex If not found, return undefined/null.\n */\n\n\nfunction queryDataIndex(data, payload) {\n  if (payload.dataIndexInside != null) {\n    return payload.dataIndexInside;\n  } else if (payload.dataIndex != null) {\n    return zrUtil.isArray(payload.dataIndex) ? zrUtil.map(payload.dataIndex, function (value) {\n      return data.indexOfRawIndex(value);\n    }) : data.indexOfRawIndex(payload.dataIndex);\n  } else if (payload.name != null) {\n    return zrUtil.isArray(payload.name) ? zrUtil.map(payload.name, function (value) {\n      return data.indexOfName(value);\n    }) : data.indexOfName(payload.name);\n  }\n}\n/**\n * Enable property storage to any host object.\n * Notice: Serialization is not supported.\n *\n * For example:\n * var inner = zrUitl.makeInner();\n *\n * function some1(hostObj) {\n *      inner(hostObj).someProperty = 1212;\n *      ...\n * }\n * function some2() {\n *      var fields = inner(this);\n *      fields.someProperty1 = 1212;\n *      fields.someProperty2 = 'xx';\n *      ...\n * }\n *\n * @return {Function}\n */\n\n\nfunction makeInner() {\n  // Consider different scope by es module import.\n  var key = '__\\0ec_inner_' + innerUniqueIndex++ + '_' + Math.random().toFixed(5);\n  return function (hostObj) {\n    return hostObj[key] || (hostObj[key] = {});\n  };\n}\n\nvar innerUniqueIndex = 0;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {string|Object} finder\n *        If string, e.g., 'geo', means {geoIndex: 0}.\n *        If Object, could contain some of these properties below:\n *        {\n *            seriesIndex, seriesId, seriesName,\n *            geoIndex, geoId, geoName,\n *            bmapIndex, bmapId, bmapName,\n *            xAxisIndex, xAxisId, xAxisName,\n *            yAxisIndex, yAxisId, yAxisName,\n *            gridIndex, gridId, gridName,\n *            ... (can be extended)\n *        }\n *        Each properties can be number|string|Array.<number>|Array.<string>\n *        For example, a finder could be\n *        {\n *            seriesIndex: 3,\n *            geoId: ['aa', 'cc'],\n *            gridName: ['xx', 'rr']\n *        }\n *        xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)\n *        If nothing or null/undefined specified, return nothing.\n * @param {Object} [opt]\n * @param {string} [opt.defaultMainType]\n * @param {Array.<string>} [opt.includeMainTypes]\n * @return {Object} result like:\n *        {\n *            seriesModels: [seriesModel1, seriesModel2],\n *            seriesModel: seriesModel1, // The first model\n *            geoModels: [geoModel1, geoModel2],\n *            geoModel: geoModel1, // The first model\n *            ...\n *        }\n */\n\nfunction parseFinder(ecModel, finder, opt) {\n  if (zrUtil.isString(finder)) {\n    var obj = {};\n    obj[finder + 'Index'] = 0;\n    finder = obj;\n  }\n\n  var defaultMainType = opt && opt.defaultMainType;\n\n  if (defaultMainType && !has(finder, defaultMainType + 'Index') && !has(finder, defaultMainType + 'Id') && !has(finder, defaultMainType + 'Name')) {\n    finder[defaultMainType + 'Index'] = 0;\n  }\n\n  var result = {};\n  each(finder, function (value, key) {\n    var value = finder[key]; // Exclude 'dataIndex' and other illgal keys.\n\n    if (key === 'dataIndex' || key === 'dataIndexInside') {\n      result[key] = value;\n      return;\n    }\n\n    var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n    var mainType = parsedKey[1];\n    var queryType = (parsedKey[2] || '').toLowerCase();\n\n    if (!mainType || !queryType || value == null || queryType === 'index' && value === 'none' || opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0) {\n      return;\n    }\n\n    var queryParam = {\n      mainType: mainType\n    };\n\n    if (queryType !== 'index' || value !== 'all') {\n      queryParam[queryType] = value;\n    }\n\n    var models = ecModel.queryComponents(queryParam);\n    result[mainType + 'Models'] = models;\n    result[mainType + 'Model'] = models[0];\n  });\n  return result;\n}\n\nfunction has(obj, prop) {\n  return obj && obj.hasOwnProperty(prop);\n}\n\nfunction setAttribute(dom, key, value) {\n  dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\n\nfunction getAttribute(dom, key) {\n  return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\n\nfunction getTooltipRenderMode(renderModeOption) {\n  if (renderModeOption === 'auto') {\n    // Using html when `document` exists, use richText otherwise\n    return env.domSupported ? 'html' : 'richText';\n  } else {\n    return renderModeOption || 'html';\n  }\n}\n/**\n * Group a list by key.\n *\n * @param {Array} array\n * @param {Function} getKey\n *        param {*} Array item\n *        return {string} key\n * @return {Object} Result\n *        {Array}: keys,\n *        {module:zrender/core/util/HashMap} buckets: {key -> Array}\n */\n\n\nfunction groupData(array, getKey) {\n  var buckets = zrUtil.createHashMap();\n  var keys = [];\n  zrUtil.each(array, function (item) {\n    var key = getKey(item);\n    (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item);\n  });\n  return {\n    keys: keys,\n    buckets: buckets\n  };\n}\n\nexports.normalizeToArray = normalizeToArray;\nexports.defaultEmphasis = defaultEmphasis;\nexports.TEXT_STYLE_OPTIONS = TEXT_STYLE_OPTIONS;\nexports.getDataItemValue = getDataItemValue;\nexports.isDataItemOption = isDataItemOption;\nexports.mappingToExists = mappingToExists;\nexports.makeIdAndName = makeIdAndName;\nexports.isNameSpecified = isNameSpecified;\nexports.isIdInner = isIdInner;\nexports.compressBatches = compressBatches;\nexports.queryDataIndex = queryDataIndex;\nexports.makeInner = makeInner;\nexports.parseFinder = parseFinder;\nexports.setAttribute = setAttribute;\nexports.getAttribute = getAttribute;\nexports.getTooltipRenderMode = getTooltipRenderMode;\nexports.groupData = groupData;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\nvar KeyCode = {\n  /**\n   * MAC_ENTER\n   */\n  MAC_ENTER: 3,\n\n  /**\n   * BACKSPACE\n   */\n  BACKSPACE: 8,\n\n  /**\n   * TAB\n   */\n  TAB: 9,\n\n  /**\n   * NUMLOCK on FF/Safari Mac\n   */\n  NUM_CENTER: 12,\n\n  /**\n   * ENTER\n   */\n  ENTER: 13,\n\n  /**\n   * SHIFT\n   */\n  SHIFT: 16,\n\n  /**\n   * CTRL\n   */\n  CTRL: 17,\n\n  /**\n   * ALT\n   */\n  ALT: 18,\n\n  /**\n   * PAUSE\n   */\n  PAUSE: 19,\n\n  /**\n   * CAPS_LOCK\n   */\n  CAPS_LOCK: 20,\n\n  /**\n   * ESC\n   */\n  ESC: 27,\n\n  /**\n   * SPACE\n   */\n  SPACE: 32,\n\n  /**\n   * PAGE_UP\n   */\n  PAGE_UP: 33,\n\n  /**\n   * PAGE_DOWN\n   */\n  PAGE_DOWN: 34,\n\n  /**\n   * END\n   */\n  END: 35,\n\n  /**\n   * HOME\n   */\n  HOME: 36,\n\n  /**\n   * LEFT\n   */\n  LEFT: 37,\n\n  /**\n   * UP\n   */\n  UP: 38,\n\n  /**\n   * RIGHT\n   */\n  RIGHT: 39,\n\n  /**\n   * DOWN\n   */\n  DOWN: 40,\n\n  /**\n   * PRINT_SCREEN\n   */\n  PRINT_SCREEN: 44,\n\n  /**\n   * INSERT\n   */\n  INSERT: 45,\n\n  /**\n   * DELETE\n   */\n  DELETE: 46,\n\n  /**\n   * ZERO\n   */\n  ZERO: 48,\n\n  /**\n   * ONE\n   */\n  ONE: 49,\n\n  /**\n   * TWO\n   */\n  TWO: 50,\n\n  /**\n   * THREE\n   */\n  THREE: 51,\n\n  /**\n   * FOUR\n   */\n  FOUR: 52,\n\n  /**\n   * FIVE\n   */\n  FIVE: 53,\n\n  /**\n   * SIX\n   */\n  SIX: 54,\n\n  /**\n   * SEVEN\n   */\n  SEVEN: 55,\n\n  /**\n   * EIGHT\n   */\n  EIGHT: 56,\n\n  /**\n   * NINE\n   */\n  NINE: 57,\n\n  /**\n   * QUESTION_MARK\n   */\n  QUESTION_MARK: 63,\n\n  /**\n   * A\n   */\n  A: 65,\n\n  /**\n   * B\n   */\n  B: 66,\n\n  /**\n   * C\n   */\n  C: 67,\n\n  /**\n   * D\n   */\n  D: 68,\n\n  /**\n   * E\n   */\n  E: 69,\n\n  /**\n   * F\n   */\n  F: 70,\n\n  /**\n   * G\n   */\n  G: 71,\n\n  /**\n   * H\n   */\n  H: 72,\n\n  /**\n   * I\n   */\n  I: 73,\n\n  /**\n   * J\n   */\n  J: 74,\n\n  /**\n   * K\n   */\n  K: 75,\n\n  /**\n   * L\n   */\n  L: 76,\n\n  /**\n   * M\n   */\n  M: 77,\n\n  /**\n   * N\n   */\n  N: 78,\n\n  /**\n   * O\n   */\n  O: 79,\n\n  /**\n   * P\n   */\n  P: 80,\n\n  /**\n   * Q\n   */\n  Q: 81,\n\n  /**\n   * R\n   */\n  R: 82,\n\n  /**\n   * S\n   */\n  S: 83,\n\n  /**\n   * T\n   */\n  T: 84,\n\n  /**\n   * U\n   */\n  U: 85,\n\n  /**\n   * V\n   */\n  V: 86,\n\n  /**\n   * W\n   */\n  W: 87,\n\n  /**\n   * X\n   */\n  X: 88,\n\n  /**\n   * Y\n   */\n  Y: 89,\n\n  /**\n   * Z\n   */\n  Z: 90,\n\n  /**\n   * META\n   */\n  META: 91,\n\n  /**\n   * WIN_KEY_RIGHT\n   */\n  WIN_KEY_RIGHT: 92,\n\n  /**\n   * CONTEXT_MENU\n   */\n  CONTEXT_MENU: 93,\n\n  /**\n   * NUM_ZERO\n   */\n  NUM_ZERO: 96,\n\n  /**\n   * NUM_ONE\n   */\n  NUM_ONE: 97,\n\n  /**\n   * NUM_TWO\n   */\n  NUM_TWO: 98,\n\n  /**\n   * NUM_THREE\n   */\n  NUM_THREE: 99,\n\n  /**\n   * NUM_FOUR\n   */\n  NUM_FOUR: 100,\n\n  /**\n   * NUM_FIVE\n   */\n  NUM_FIVE: 101,\n\n  /**\n   * NUM_SIX\n   */\n  NUM_SIX: 102,\n\n  /**\n   * NUM_SEVEN\n   */\n  NUM_SEVEN: 103,\n\n  /**\n   * NUM_EIGHT\n   */\n  NUM_EIGHT: 104,\n\n  /**\n   * NUM_NINE\n   */\n  NUM_NINE: 105,\n\n  /**\n   * NUM_MULTIPLY\n   */\n  NUM_MULTIPLY: 106,\n\n  /**\n   * NUM_PLUS\n   */\n  NUM_PLUS: 107,\n\n  /**\n   * NUM_MINUS\n   */\n  NUM_MINUS: 109,\n\n  /**\n   * NUM_PERIOD\n   */\n  NUM_PERIOD: 110,\n\n  /**\n   * NUM_DIVISION\n   */\n  NUM_DIVISION: 111,\n\n  /**\n   * F1\n   */\n  F1: 112,\n\n  /**\n   * F2\n   */\n  F2: 113,\n\n  /**\n   * F3\n   */\n  F3: 114,\n\n  /**\n   * F4\n   */\n  F4: 115,\n\n  /**\n   * F5\n   */\n  F5: 116,\n\n  /**\n   * F6\n   */\n  F6: 117,\n\n  /**\n   * F7\n   */\n  F7: 118,\n\n  /**\n   * F8\n   */\n  F8: 119,\n\n  /**\n   * F9\n   */\n  F9: 120,\n\n  /**\n   * F10\n   */\n  F10: 121,\n\n  /**\n   * F11\n   */\n  F11: 122,\n\n  /**\n   * F12\n   */\n  F12: 123,\n\n  /**\n   * NUMLOCK\n   */\n  NUMLOCK: 144,\n\n  /**\n   * SEMICOLON\n   */\n  SEMICOLON: 186,\n\n  /**\n   * DASH\n   */\n  DASH: 189,\n\n  /**\n   * EQUALS\n   */\n  EQUALS: 187,\n\n  /**\n   * COMMA\n   */\n  COMMA: 188,\n\n  /**\n   * PERIOD\n   */\n  PERIOD: 190,\n\n  /**\n   * SLASH\n   */\n  SLASH: 191,\n\n  /**\n   * APOSTROPHE\n   */\n  APOSTROPHE: 192,\n\n  /**\n   * SINGLE_QUOTE\n   */\n  SINGLE_QUOTE: 222,\n\n  /**\n   * OPEN_SQUARE_BRACKET\n   */\n  OPEN_SQUARE_BRACKET: 219,\n\n  /**\n   * BACKSLASH\n   */\n  BACKSLASH: 220,\n\n  /**\n   * CLOSE_SQUARE_BRACKET\n   */\n  CLOSE_SQUARE_BRACKET: 221,\n\n  /**\n   * WIN_KEY\n   */\n  WIN_KEY: 224,\n\n  /**\n   * MAC_FF_META\n   */\n  MAC_FF_META: 224,\n\n  /**\n   * WIN_IME\n   */\n  WIN_IME: 229,\n  // ======================== Function ========================\n\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\n    if (e.altKey && !e.ctrlKey || e.metaKey || // Function keys don't generate text\n    keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n      return false;\n    } // The following keys are quite harmless, even in combination with\n    // CTRL, ALT or SHIFT.\n\n\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\n      default:\n        return true;\n    }\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\n    if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n      return true;\n    }\n\n    if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n      return true;\n    } // Safari sends zero key code for non-latin characters.\n\n\n    if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n      return true;\n    }\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\n      default:\n        return false;\n    }\n  }\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (KeyCode);\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar fails = __webpack_require__(16);\nvar isArray = __webpack_require__(149);\nvar isObject = __webpack_require__(39);\nvar toObject = __webpack_require__(47);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar doesNotExceedSafeInteger = __webpack_require__(238);\nvar createProperty = __webpack_require__(139);\nvar arraySpeciesCreate = __webpack_require__(234);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(239);\nvar wellKnownSymbol = __webpack_require__(41);\nvar V8_VERSION = __webpack_require__(134);\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 SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\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 || !SPECIES_SUPPORT;\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\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar getBuiltIn = __webpack_require__(59);\nvar apply = __webpack_require__(114);\nvar bind = __webpack_require__(497);\nvar aConstructor = __webpack_require__(376);\nvar anObject = __webpack_require__(35);\nvar isObject = __webpack_require__(39);\nvar create = __webpack_require__(101);\nvar fails = __webpack_require__(16);\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n  function F() { /* empty */ }\n  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n  nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n  construct: function construct(Target, args /* , newTarget */) {\n    aConstructor(Target);\n    anObject(args);\n    var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n    if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n    if (Target == newTarget) {\n      // w/o altered newTarget, optimization for 0-4 arguments\n      switch (args.length) {\n        case 0: return new Target();\n        case 1: return new Target(args[0]);\n        case 2: return new Target(args[0], args[1]);\n        case 3: return new Target(args[0], args[1], args[2]);\n        case 4: return new Target(args[0], args[1], args[2], args[3]);\n      }\n      // w/o altered newTarget, lot of arguments case\n      var $args = [null];\n      apply(push, $args, args);\n      return new (apply(bind, Target, $args))();\n    }\n    // with altered newTarget, not support built-in constructors\n    var proto = newTarget.prototype;\n    var instance = create(isObject(proto) ? proto : ObjectPrototype);\n    var result = apply(Target, instance, args);\n    return isObject(result) ? result : instance;\n  }\n});\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(39);\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 $TypeError($String(argument) + ' is not an object');\n};\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (1) The code `if (__DEV__) ...` can be removed by build tool.\n// (2) If intend to use `__DEV__`, this module should be imported. Use a global\n// variable `__DEV__` may cause that miss the declaration (see #6535), or the\n// declaration is behind of the using position (for example in `Model.extent`,\n// And tools like rollup can not analysis the dependency if not import).\nvar dev; // In browser\n\nif (typeof window !== 'undefined') {\n  dev = window.__DEV__;\n} // In node\nelse if (typeof global !== 'undefined') {\n    dev = global.__DEV__;\n  }\n\nif (typeof dev === 'undefined') {\n  dev = true;\n}\n\nvar __DEV__ = dev;\nexports.__DEV__ = __DEV__;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91)))\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\n//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\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  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A's keys different from B.\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || (ret === void 0 && valueA !== valueB)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_BIND = __webpack_require__(228);\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(43);\n\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar SPECIAL_DOCUMENT_ALL = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = SPECIAL_DOCUMENT_ALL ? function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar shared = __webpack_require__(196);\nvar hasOwn = __webpack_require__(44);\nvar uid = __webpack_require__(197);\nvar NATIVE_SYMBOL = __webpack_require__(195);\nvar USE_SYMBOL_AS_UID = __webpack_require__(465);\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(138);\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports) {\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\nvar toObject = __webpack_require__(47);\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(375);\nvar DESCRIPTORS = __webpack_require__(30);\nvar global = __webpack_require__(25);\nvar isCallable = __webpack_require__(43);\nvar isObject = __webpack_require__(39);\nvar hasOwn = __webpack_require__(44);\nvar classof = __webpack_require__(138);\nvar tryToString = __webpack_require__(169);\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar defineBuiltIn = __webpack_require__(62);\nvar defineProperty = __webpack_require__(48).f;\nvar isPrototypeOf = __webpack_require__(113);\nvar getPrototypeOf = __webpack_require__(115);\nvar setPrototypeOf = __webpack_require__(124);\nvar wellKnownSymbol = __webpack_require__(41);\nvar uid = __webpack_require__(197);\nvar InternalStateModule = __webpack_require__(73);\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n  Int8Array: 1,\n  Uint8Array: 1,\n  Uint8ClampedArray: 1,\n  Int16Array: 2,\n  Uint16Array: 2,\n  Int32Array: 4,\n  Uint32Array: 4,\n  Float32Array: 4,\n  Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n  BigInt64Array: 8,\n  BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return klass === 'DataView'\n    || hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n  var proto = getPrototypeOf(it);\n  if (!isObject(proto)) return;\n  var state = getInternalState(proto);\n  return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n  if (!isObject(it)) return false;\n  var klass = classof(it);\n  return hasOwn(TypedArrayConstructorsList, klass)\n    || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n  if (isTypedArray(it)) return it;\n  throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n  if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n  throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n  if (!DESCRIPTORS) return;\n  if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n    var TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n      delete TypedArrayConstructor.prototype[KEY];\n    } catch (error) {\n      // old WebKit bug - some methods are non-configurable\n      try {\n        TypedArrayConstructor.prototype[KEY] = property;\n      } catch (error2) { /* empty */ }\n    }\n  }\n  if (!TypedArrayPrototype[KEY] || forced) {\n    defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n      : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n  }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n  var ARRAY, TypedArrayConstructor;\n  if (!DESCRIPTORS) return;\n  if (setPrototypeOf) {\n    if (forced) for (ARRAY in TypedArrayConstructorsList) {\n      TypedArrayConstructor = global[ARRAY];\n      if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n        delete TypedArrayConstructor[KEY];\n      } catch (error) { /* empty */ }\n    }\n    if (!TypedArray[KEY] || forced) {\n      // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n      try {\n        return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n      } catch (error) { /* empty */ }\n    } else return;\n  }\n  for (ARRAY in TypedArrayConstructorsList) {\n    TypedArrayConstructor = global[ARRAY];\n    if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n      defineBuiltIn(TypedArrayConstructor, KEY, property);\n    }\n  }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n  else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n  Constructor = global[NAME];\n  Prototype = Constructor && Constructor.prototype;\n  if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n  // eslint-disable-next-line no-shadow -- safe\n  TypedArray = function TypedArray() {\n    throw TypeError('Incorrect invocation');\n  };\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n  }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n  TypedArrayPrototype = TypedArray.prototype;\n  if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n    if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n  }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n  setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n  TYPED_ARRAY_TAG_REQUIRED = true;\n  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n    return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n  } });\n  for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n    createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n  }\n}\n\nmodule.exports = {\n  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n  TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n  aTypedArray: aTypedArray,\n  aTypedArrayConstructor: aTypedArrayConstructor,\n  exportTypedArrayMethod: exportTypedArrayMethod,\n  exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n  getTypedArrayConstructor: getTypedArrayConstructor,\n  isView: isView,\n  isTypedArray: isTypedArray,\n  TypedArray: TypedArray,\n  TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\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__ = \"production\" !== '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\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(72);\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\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar IE8_DOM_DEFINE = __webpack_require__(467);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(468);\nvar anObject = __webpack_require__(35);\nvar toPropertyKey = __webpack_require__(147);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/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 $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\nvar formatUtil = __webpack_require__(50);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Layout helpers for each component positioning\nvar each = zrUtil.each;\n/**\n * @public\n */\n\nvar LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height'];\n/**\n * @public\n */\n\nvar HV_NAMES = [['width', 'left', 'right'], ['height', 'top', 'bottom']];\n\nfunction boxLayout(orient, group, gap, maxWidth, maxHeight) {\n  var x = 0;\n  var y = 0;\n\n  if (maxWidth == null) {\n    maxWidth = Infinity;\n  }\n\n  if (maxHeight == null) {\n    maxHeight = Infinity;\n  }\n\n  var currentLineMaxSize = 0;\n  group.eachChild(function (child, idx) {\n    var position = child.position;\n    var rect = child.getBoundingRect();\n    var nextChild = group.childAt(idx + 1);\n    var nextChildRect = nextChild && nextChild.getBoundingRect();\n    var nextX;\n    var nextY;\n\n    if (orient === 'horizontal') {\n      var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);\n      nextX = x + moveX; // Wrap when width exceeds maxWidth or meet a `newline` group\n      // FIXME compare before adding gap?\n\n      if (nextX > maxWidth || child.newline) {\n        x = 0;\n        nextX = moveX;\n        y += currentLineMaxSize + gap;\n        currentLineMaxSize = rect.height;\n      } else {\n        // FIXME: consider rect.y is not `0`?\n        currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\n      }\n    } else {\n      var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);\n      nextY = y + moveY; // Wrap when width exceeds maxHeight or meet a `newline` group\n\n      if (nextY > maxHeight || child.newline) {\n        x += currentLineMaxSize + gap;\n        y = 0;\n        nextY = moveY;\n        currentLineMaxSize = rect.width;\n      } else {\n        currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\n      }\n    }\n\n    if (child.newline) {\n      return;\n    }\n\n    position[0] = x;\n    position[1] = y;\n    orient === 'horizontal' ? x = nextX + gap : y = nextY + gap;\n  });\n}\n/**\n * VBox or HBox layouting\n * @param {string} orient\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\n\nvar box = boxLayout;\n/**\n * VBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar vbox = zrUtil.curry(boxLayout, 'vertical');\n/**\n * HBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar hbox = zrUtil.curry(boxLayout, 'horizontal');\n/**\n * If x or x2 is not specified or 'center' 'left' 'right',\n * the width would be as long as possible.\n * If y or y2 is not specified or 'middle' 'top' 'bottom',\n * the height would be as long as possible.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.x]\n * @param {number|string} [positionInfo.y]\n * @param {number|string} [positionInfo.x2]\n * @param {number|string} [positionInfo.y2]\n * @param {Object} containerRect {width, height}\n * @param {string|number} margin\n * @return {Object} {width, height}\n */\n\nfunction getAvailableSize(positionInfo, containerRect, margin) {\n  var containerWidth = containerRect.width;\n  var containerHeight = containerRect.height;\n  var x = parsePercent(positionInfo.x, containerWidth);\n  var y = parsePercent(positionInfo.y, containerHeight);\n  var x2 = parsePercent(positionInfo.x2, containerWidth);\n  var y2 = parsePercent(positionInfo.y2, containerHeight);\n  (isNaN(x) || isNaN(parseFloat(positionInfo.x))) && (x = 0);\n  (isNaN(x2) || isNaN(parseFloat(positionInfo.x2))) && (x2 = containerWidth);\n  (isNaN(y) || isNaN(parseFloat(positionInfo.y))) && (y = 0);\n  (isNaN(y2) || isNaN(parseFloat(positionInfo.y2))) && (y2 = containerHeight);\n  margin = formatUtil.normalizeCssArray(margin || 0);\n  return {\n    width: Math.max(x2 - x - margin[1] - margin[3], 0),\n    height: Math.max(y2 - y - margin[0] - margin[2], 0)\n  };\n}\n/**\n * Parse position info.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width]\n * @param {number|string} [positionInfo.height]\n * @param {number|string} [positionInfo.aspect] Aspect is width / height\n * @param {Object} containerRect\n * @param {string|number} [margin]\n *\n * @return {module:zrender/core/BoundingRect}\n */\n\n\nfunction getLayoutRect(positionInfo, containerRect, margin) {\n  margin = formatUtil.normalizeCssArray(margin || 0);\n  var containerWidth = containerRect.width;\n  var containerHeight = containerRect.height;\n  var left = parsePercent(positionInfo.left, containerWidth);\n  var top = parsePercent(positionInfo.top, containerHeight);\n  var right = parsePercent(positionInfo.right, containerWidth);\n  var bottom = parsePercent(positionInfo.bottom, containerHeight);\n  var width = parsePercent(positionInfo.width, containerWidth);\n  var height = parsePercent(positionInfo.height, containerHeight);\n  var verticalMargin = margin[2] + margin[0];\n  var horizontalMargin = margin[1] + margin[3];\n  var aspect = positionInfo.aspect; // If width is not specified, calculate width from left and right\n\n  if (isNaN(width)) {\n    width = containerWidth - right - horizontalMargin - left;\n  }\n\n  if (isNaN(height)) {\n    height = containerHeight - bottom - verticalMargin - top;\n  }\n\n  if (aspect != null) {\n    // If width and height are not given\n    // 1. Graph should not exceeds the container\n    // 2. Aspect must be keeped\n    // 3. Graph should take the space as more as possible\n    // FIXME\n    // Margin is not considered, because there is no case that both\n    // using margin and aspect so far.\n    if (isNaN(width) && isNaN(height)) {\n      if (aspect > containerWidth / containerHeight) {\n        width = containerWidth * 0.8;\n      } else {\n        height = containerHeight * 0.8;\n      }\n    } // Calculate width or height with given aspect\n\n\n    if (isNaN(width)) {\n      width = aspect * height;\n    }\n\n    if (isNaN(height)) {\n      height = width / aspect;\n    }\n  } // If left is not specified, calculate left from right and width\n\n\n  if (isNaN(left)) {\n    left = containerWidth - right - width - horizontalMargin;\n  }\n\n  if (isNaN(top)) {\n    top = containerHeight - bottom - height - verticalMargin;\n  } // Align left and top\n\n\n  switch (positionInfo.left || positionInfo.right) {\n    case 'center':\n      left = containerWidth / 2 - width / 2 - margin[3];\n      break;\n\n    case 'right':\n      left = containerWidth - width - horizontalMargin;\n      break;\n  }\n\n  switch (positionInfo.top || positionInfo.bottom) {\n    case 'middle':\n    case 'center':\n      top = containerHeight / 2 - height / 2 - margin[0];\n      break;\n\n    case 'bottom':\n      top = containerHeight - height - verticalMargin;\n      break;\n  } // If something is wrong and left, top, width, height are calculated as NaN\n\n\n  left = left || 0;\n  top = top || 0;\n\n  if (isNaN(width)) {\n    // Width may be NaN if only one value is given except width\n    width = containerWidth - horizontalMargin - left - (right || 0);\n  }\n\n  if (isNaN(height)) {\n    // Height may be NaN if only one value is given except height\n    height = containerHeight - verticalMargin - top - (bottom || 0);\n  }\n\n  var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\n  rect.margin = margin;\n  return rect;\n}\n/**\n * Position a zr element in viewport\n *  Group position is specified by either\n *  {left, top}, {right, bottom}\n *  If all properties exists, right and bottom will be igonred.\n *\n * Logic:\n *     1. Scale (against origin point in parent coord)\n *     2. Rotate (against origin point in parent coord)\n *     3. Traslate (with el.position by this method)\n * So this method only fixes the last step 'Traslate', which does not affect\n * scaling and rotating.\n *\n * If be called repeatly with the same input el, the same result will be gotten.\n *\n * @param {module:zrender/Element} el Should have `getBoundingRect` method.\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width] Only for opt.boundingModel: 'raw'\n * @param {number|string} [positionInfo.height] Only for opt.boundingModel: 'raw'\n * @param {Object} containerRect\n * @param {string|number} margin\n * @param {Object} [opt]\n * @param {Array.<number>} [opt.hv=[1,1]] Only horizontal or only vertical.\n * @param {Array.<number>} [opt.boundingMode='all']\n *        Specify how to calculate boundingRect when locating.\n *        'all': Position the boundingRect that is transformed and uioned\n *               both itself and its descendants.\n *               This mode simplies confine the elements in the bounding\n *               of their container (e.g., using 'right: 0').\n *        'raw': Position the boundingRect that is not transformed and only itself.\n *               This mode is useful when you want a element can overflow its\n *               container. (Consider a rotated circle needs to be located in a corner.)\n *               In this mode positionInfo.width/height can only be number.\n */\n\n\nfunction positionElement(el, positionInfo, containerRect, margin, opt) {\n  var h = !opt || !opt.hv || opt.hv[0];\n  var v = !opt || !opt.hv || opt.hv[1];\n  var boundingMode = opt && opt.boundingMode || 'all';\n\n  if (!h && !v) {\n    return;\n  }\n\n  var rect;\n\n  if (boundingMode === 'raw') {\n    rect = el.type === 'group' ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect();\n  } else {\n    rect = el.getBoundingRect();\n\n    if (el.needLocalTransform()) {\n      var transform = el.getLocalTransform(); // Notice: raw rect may be inner object of el,\n      // which should not be modified.\n\n      rect = rect.clone();\n      rect.applyTransform(transform);\n    }\n  } // The real width and height can not be specified but calculated by the given el.\n\n\n  positionInfo = getLayoutRect(zrUtil.defaults({\n    width: rect.width,\n    height: rect.height\n  }, positionInfo), containerRect, margin); // Because 'tranlate' is the last step in transform\n  // (see zrender/core/Transformable#getLocalTransform),\n  // we can just only modify el.position to get final result.\n\n  var elPos = el.position;\n  var dx = h ? positionInfo.x - rect.x : 0;\n  var dy = v ? positionInfo.y - rect.y : 0;\n  el.attr('position', boundingMode === 'raw' ? [dx, dy] : [elPos[0] + dx, elPos[1] + dy]);\n}\n/**\n * @param {Object} option Contains some of the properties in HV_NAMES.\n * @param {number} hvIdx 0: horizontal; 1: vertical.\n */\n\n\nfunction sizeCalculable(option, hvIdx) {\n  return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;\n}\n/**\n * Consider Case:\n * When defulat option has {left: 0, width: 100}, and we set {right: 0}\n * through setOption or media query, using normal zrUtil.merge will cause\n * {right: 0} does not take effect.\n *\n * @example\n * ComponentModel.extend({\n *     init: function () {\n *         ...\n *         var inputPositionParams = layout.getLayoutParams(option);\n *         this.mergeOption(inputPositionParams);\n *     },\n *     mergeOption: function (newOption) {\n *         newOption && zrUtil.merge(thisOption, newOption, true);\n *         layout.mergeLayoutParam(thisOption, newOption);\n *     }\n * });\n *\n * @param {Object} targetOption\n * @param {Object} newOption\n * @param {Object|string} [opt]\n * @param {boolean|Array.<boolean>} [opt.ignoreSize=false] Used for the components\n *  that width (or height) should not be calculated by left and right (or top and bottom).\n */\n\n\nfunction mergeLayoutParam(targetOption, newOption, opt) {\n  !zrUtil.isObject(opt) && (opt = {});\n  var ignoreSize = opt.ignoreSize;\n  !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\n  var hResult = merge(HV_NAMES[0], 0);\n  var vResult = merge(HV_NAMES[1], 1);\n  copy(HV_NAMES[0], targetOption, hResult);\n  copy(HV_NAMES[1], targetOption, vResult);\n\n  function merge(names, hvIdx) {\n    var newParams = {};\n    var newValueCount = 0;\n    var merged = {};\n    var mergedValueCount = 0;\n    var enoughParamNumber = 2;\n    each(names, function (name) {\n      merged[name] = targetOption[name];\n    });\n    each(names, function (name) {\n      // Consider case: newOption.width is null, which is\n      // set by user for removing width setting.\n      hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\n      hasValue(newParams, name) && newValueCount++;\n      hasValue(merged, name) && mergedValueCount++;\n    });\n\n    if (ignoreSize[hvIdx]) {\n      // Only one of left/right is premitted to exist.\n      if (hasValue(newOption, names[1])) {\n        merged[names[2]] = null;\n      } else if (hasValue(newOption, names[2])) {\n        merged[names[1]] = null;\n      }\n\n      return merged;\n    } // Case: newOption: {width: ..., right: ...},\n    // or targetOption: {right: ...} and newOption: {width: ...},\n    // There is no conflict when merged only has params count\n    // little than enoughParamNumber.\n\n\n    if (mergedValueCount === enoughParamNumber || !newValueCount) {\n      return merged;\n    } // Case: newOption: {width: ..., right: ...},\n    // Than we can make sure user only want those two, and ignore\n    // all origin params in targetOption.\n    else if (newValueCount >= enoughParamNumber) {\n        return newParams;\n      } else {\n        // Chose another param from targetOption by priority.\n        for (var i = 0; i < names.length; i++) {\n          var name = names[i];\n\n          if (!hasProp(newParams, name) && hasProp(targetOption, name)) {\n            newParams[name] = targetOption[name];\n            break;\n          }\n        }\n\n        return newParams;\n      }\n  }\n\n  function hasProp(obj, name) {\n    return obj.hasOwnProperty(name);\n  }\n\n  function hasValue(obj, name) {\n    return obj[name] != null && obj[name] !== 'auto';\n  }\n\n  function copy(names, target, source) {\n    each(names, function (name) {\n      target[name] = source[name];\n    });\n  }\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction getLayoutParams(source) {\n  return copyLayoutParams({}, source);\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction copyLayoutParams(target, source) {\n  source && target && each(LOCATION_PARAMS, function (name) {\n    source.hasOwnProperty(name) && (target[name] = source[name]);\n  });\n  return target;\n}\n\nexports.LOCATION_PARAMS = LOCATION_PARAMS;\nexports.HV_NAMES = HV_NAMES;\nexports.box = box;\nexports.vbox = vbox;\nexports.hbox = hbox;\nexports.getAvailableSize = getAvailableSize;\nexports.getLayoutRect = getLayoutRect;\nexports.positionElement = positionElement;\nexports.sizeCalculable = sizeCalculable;\nexports.mergeLayoutParam = mergeLayoutParam;\nexports.getLayoutParams = getLayoutParams;\nexports.copyLayoutParams = copyLayoutParams;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar textContain = __webpack_require__(108);\n\nvar numberUtil = __webpack_require__(26);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import Text from 'zrender/src/graphic/Text';\n\n/**\n * add commas after every three numbers\n * @param {string|number} x\n * @return {string}\n */\nfunction addCommas(x) {\n  if (isNaN(x)) {\n    return '-';\n  }\n\n  x = (x + '').split('.');\n  return x[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,') + (x.length > 1 ? '.' + x[1] : '');\n}\n/**\n * @param {string} str\n * @param {boolean} [upperCaseFirst=false]\n * @return {string} str\n */\n\n\nfunction toCamelCase(str, upperCaseFirst) {\n  str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\n    return group1.toUpperCase();\n  });\n\n  if (upperCaseFirst && str) {\n    str = str.charAt(0).toUpperCase() + str.slice(1);\n  }\n\n  return str;\n}\n\nvar normalizeCssArray = zrUtil.normalizeCssArray;\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  '\\'': '&#39;'\n};\n\nfunction encodeHTML(source) {\n  return source == null ? '' : (source + '').replace(replaceReg, function (str, c) {\n    return replaceMap[c];\n  });\n}\n\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\n\nvar wrapVar = function (varName, seriesIdx) {\n  return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\n};\n/**\n * Template formatter\n * @param {string} tpl\n * @param {Array.<Object>|Object} paramsList\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTpl(tpl, paramsList, encode) {\n  if (!zrUtil.isArray(paramsList)) {\n    paramsList = [paramsList];\n  }\n\n  var seriesLen = paramsList.length;\n\n  if (!seriesLen) {\n    return '';\n  }\n\n  var $vars = paramsList[0].$vars || [];\n\n  for (var i = 0; i < $vars.length; i++) {\n    var alias = TPL_VAR_ALIAS[i];\n    tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\n  }\n\n  for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\n    for (var k = 0; k < $vars.length; k++) {\n      var val = paramsList[seriesIdx][$vars[k]];\n      tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\n    }\n  }\n\n  return tpl;\n}\n/**\n * simple Template formatter\n *\n * @param {string} tpl\n * @param {Object} param\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTplSimple(tpl, param, encode) {\n  zrUtil.each(param, function (value, key) {\n    tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\n  });\n  return tpl;\n}\n/**\n * @param {Object|string} [opt] If string, means color.\n * @param {string} [opt.color]\n * @param {string} [opt.extraCssText]\n * @param {string} [opt.type='item'] 'item' or 'subItem'\n * @param {string} [opt.renderMode='html'] render mode of tooltip, 'html' or 'richText'\n * @param {string} [opt.markerId='X'] id name for marker. If only one marker is in a rich text, this can be omitted.\n * @return {string}\n */\n\n\nfunction getTooltipMarker(opt, extraCssText) {\n  opt = zrUtil.isString(opt) ? {\n    color: opt,\n    extraCssText: extraCssText\n  } : opt || {};\n  var color = opt.color;\n  var type = opt.type;\n  var extraCssText = opt.extraCssText;\n  var renderMode = opt.renderMode || 'html';\n  var markerId = opt.markerId || 'X';\n\n  if (!color) {\n    return '';\n  }\n\n  if (renderMode === 'html') {\n    return type === 'subItem' ? '<span style=\"display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;' + 'border-radius:4px;width:4px;height:4px;background-color:' + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>' : '<span style=\"display:inline-block;margin-right:5px;' + 'border-radius:10px;width:10px;height:10px;background-color:' + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>';\n  } else {\n    // Space for rich element marker\n    return {\n      renderMode: renderMode,\n      content: '{marker' + markerId + '|}  ',\n      style: {\n        color: color\n      }\n    };\n  }\n}\n\nfunction pad(str, len) {\n  str += '';\n  return '0000'.substr(0, len - str.length) + str;\n}\n/**\n * ISO Date format\n * @param {string} tpl\n * @param {number} value\n * @param {boolean} [isUTC=false] Default in local time.\n *           see `module:echarts/scale/Time`\n *           and `module:echarts/util/number#parseDate`.\n * @inner\n */\n\n\nfunction formatTime(tpl, value, isUTC) {\n  if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') {\n    tpl = 'MM-dd\\nyyyy';\n  }\n\n  var date = numberUtil.parseDate(value);\n  var utc = isUTC ? 'UTC' : '';\n  var y = date['get' + utc + 'FullYear']();\n  var M = date['get' + utc + 'Month']() + 1;\n  var d = date['get' + utc + 'Date']();\n  var h = date['get' + utc + 'Hours']();\n  var m = date['get' + utc + 'Minutes']();\n  var s = date['get' + utc + 'Seconds']();\n  var S = date['get' + utc + 'Milliseconds']();\n  tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', y % 100).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3));\n  return tpl;\n}\n/**\n * Capital first\n * @param {string} str\n * @return {string}\n */\n\n\nfunction capitalFirst(str) {\n  return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\n}\n\nvar truncateText = textContain.truncateText;\n/**\n * @public\n * @param {Object} opt\n * @param {string} opt.text\n * @param {string} opt.font\n * @param {string} [opt.textAlign='left']\n * @param {string} [opt.textVerticalAlign='top']\n * @param {Array.<number>} [opt.textPadding]\n * @param {number} [opt.textLineHeight]\n * @param {Object} [opt.rich]\n * @param {Object} [opt.truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\nfunction getTextBoundingRect(opt) {\n  return textContain.getBoundingRect(opt.text, opt.font, opt.textAlign, opt.textVerticalAlign, opt.textPadding, opt.textLineHeight, opt.rich, opt.truncate);\n}\n/**\n * @deprecated\n * the `textLineHeight` was added later.\n * For backward compatiblility, put it as the last parameter.\n * But deprecated this interface. Please use `getTextBoundingRect` instead.\n */\n\n\nfunction getTextRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate, textLineHeight) {\n  return textContain.getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate);\n}\n/**\n * open new tab\n * @param {string} link url\n * @param {string} target blank or self\n */\n\n\nfunction windowOpen(link, target) {\n  if (target === '_blank' || target === 'blank') {\n    var blank = window.open();\n    blank.opener = null;\n    blank.location = link;\n  } else {\n    window.open(link, target);\n  }\n}\n\nexports.addCommas = addCommas;\nexports.toCamelCase = toCamelCase;\nexports.normalizeCssArray = normalizeCssArray;\nexports.encodeHTML = encodeHTML;\nexports.formatTpl = formatTpl;\nexports.formatTplSimple = formatTplSimple;\nexports.getTooltipMarker = getTooltipMarker;\nexports.formatTime = formatTime;\nexports.capitalFirst = capitalFirst;\nexports.truncateText = truncateText;\nexports.getTextBoundingRect = getTextBoundingRect;\nexports.getTextRect = getTextRect;\nexports.windowOpen = windowOpen;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar forEach = __webpack_require__(487);\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar DOMIterables = __webpack_require__(526);\nvar DOMTokenListPrototype = __webpack_require__(527);\nvar forEach = __webpack_require__(487);\nvar createNonEnumerableProperty = __webpack_require__(94);\n\nvar handlePrototype = function (CollectionPrototype) {\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  if (DOMIterables[COLLECTION_NAME]) {\n    handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n  }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toLength = __webpack_require__(100);\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $filter = __webpack_require__(84).filter;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(239);\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\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar toObject = __webpack_require__(47);\nvar nativeKeys = __webpack_require__(232);\nvar fails = __webpack_require__(16);\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\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports) {\n\n/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * 创建一个向量\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @return {Vector2}\n */\n\nfunction create(x, y) {\n  var out = new ArrayCtor(2);\n\n  if (x == null) {\n    x = 0;\n  }\n\n  if (y == null) {\n    y = 0;\n  }\n\n  out[0] = x;\n  out[1] = y;\n  return out;\n}\n/**\n * 复制向量数据\n * @param {Vector2} out\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction copy(out, v) {\n  out[0] = v[0];\n  out[1] = v[1];\n  return out;\n}\n/**\n * 克隆一个向量\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction clone(v) {\n  var out = new ArrayCtor(2);\n  out[0] = v[0];\n  out[1] = v[1];\n  return out;\n}\n/**\n * 设置向量的两个项\n * @param {Vector2} out\n * @param {number} a\n * @param {number} b\n * @return {Vector2} 结果\n */\n\n\nfunction set(out, a, b) {\n  out[0] = a;\n  out[1] = b;\n  return out;\n}\n/**\n * 向量相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction add(out, v1, v2) {\n  out[0] = v1[0] + v2[0];\n  out[1] = v1[1] + v2[1];\n  return out;\n}\n/**\n * 向量缩放后相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} a\n */\n\n\nfunction scaleAndAdd(out, v1, v2, a) {\n  out[0] = v1[0] + v2[0] * a;\n  out[1] = v1[1] + v2[1] * a;\n  return out;\n}\n/**\n * 向量相减\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction sub(out, v1, v2) {\n  out[0] = v1[0] - v2[0];\n  out[1] = v1[1] - v2[1];\n  return out;\n}\n/**\n * 向量长度\n * @param {Vector2} v\n * @return {number}\n */\n\n\nfunction len(v) {\n  return Math.sqrt(lenSquare(v));\n}\n\nvar length = len; // jshint ignore:line\n\n/**\n * 向量长度平方\n * @param {Vector2} v\n * @return {number}\n */\n\nfunction lenSquare(v) {\n  return v[0] * v[0] + v[1] * v[1];\n}\n\nvar lengthSquare = lenSquare;\n/**\n * 向量乘法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\nfunction mul(out, v1, v2) {\n  out[0] = v1[0] * v2[0];\n  out[1] = v1[1] * v2[1];\n  return out;\n}\n/**\n * 向量除法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction div(out, v1, v2) {\n  out[0] = v1[0] / v2[0];\n  out[1] = v1[1] / v2[1];\n  return out;\n}\n/**\n * 向量点乘\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction dot(v1, v2) {\n  return v1[0] * v2[0] + v1[1] * v2[1];\n}\n/**\n * 向量缩放\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {number} s\n */\n\n\nfunction scale(out, v, s) {\n  out[0] = v[0] * s;\n  out[1] = v[1] * s;\n  return out;\n}\n/**\n * 向量归一化\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\n\nfunction normalize(out, v) {\n  var d = len(v);\n\n  if (d === 0) {\n    out[0] = 0;\n    out[1] = 0;\n  } else {\n    out[0] = v[0] / d;\n    out[1] = v[1] / d;\n  }\n\n  return out;\n}\n/**\n * 计算向量间距离\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction distance(v1, v2) {\n  return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\n\nvar dist = distance;\n/**\n * 向量距离平方\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\nfunction distanceSquare(v1, v2) {\n  return (v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\n\nvar distSquare = distanceSquare;\n/**\n * 求负向量\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\nfunction negate(out, v) {\n  out[0] = -v[0];\n  out[1] = -v[1];\n  return out;\n}\n/**\n * 插值两个点\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} t\n */\n\n\nfunction lerp(out, v1, v2, t) {\n  out[0] = v1[0] + t * (v2[0] - v1[0]);\n  out[1] = v1[1] + t * (v2[1] - v1[1]);\n  return out;\n}\n/**\n * 矩阵左乘向量\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {Vector2} m\n */\n\n\nfunction applyTransform(out, v, m) {\n  var x = v[0];\n  var y = v[1];\n  out[0] = m[0] * x + m[2] * y + m[4];\n  out[1] = m[1] * x + m[3] * y + m[5];\n  return out;\n}\n/**\n * 求两个向量最小值\n * @param  {Vector2} out\n * @param  {Vector2} v1\n * @param  {Vector2} v2\n */\n\n\nfunction min(out, v1, v2) {\n  out[0] = Math.min(v1[0], v2[0]);\n  out[1] = Math.min(v1[1], v2[1]);\n  return out;\n}\n/**\n * 求两个向量最大值\n * @param  {Vector2} out\n * @param  {Vector2} v1\n * @param  {Vector2} v2\n */\n\n\nfunction max(out, v1, v2) {\n  out[0] = Math.max(v1[0], v2[0]);\n  out[1] = Math.max(v1[1], v2[1]);\n  return out;\n}\n\nexports.create = create;\nexports.copy = copy;\nexports.clone = clone;\nexports.set = set;\nexports.add = add;\nexports.scaleAndAdd = scaleAndAdd;\nexports.sub = sub;\nexports.len = len;\nexports.length = length;\nexports.lenSquare = lenSquare;\nexports.lengthSquare = lengthSquare;\nexports.mul = mul;\nexports.div = div;\nexports.dot = dot;\nexports.scale = scale;\nexports.normalize = normalize;\nexports.distance = distance;\nexports.dist = dist;\nexports.distanceSquare = distanceSquare;\nexports.distSquare = distSquare;\nexports.negate = negate;\nexports.lerp = lerp;\nexports.applyTransform = applyTransform;\nexports.min = min;\nexports.max = max;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar vec2 = __webpack_require__(56);\n\nvar matrix = __webpack_require__(89);\n\n/**\n * @module echarts/core/BoundingRect\n */\nvar v2ApplyTransform = vec2.applyTransform;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\n/**\n * @alias module:echarts/core/BoundingRect\n */\n\nfunction BoundingRect(x, y, width, height) {\n  if (width < 0) {\n    x = x + width;\n    width = -width;\n  }\n\n  if (height < 0) {\n    y = y + height;\n    height = -height;\n  }\n  /**\n   * @type {number}\n   */\n\n\n  this.x = x;\n  /**\n   * @type {number}\n   */\n\n  this.y = y;\n  /**\n   * @type {number}\n   */\n\n  this.width = width;\n  /**\n   * @type {number}\n   */\n\n  this.height = height;\n}\n\nBoundingRect.prototype = {\n  constructor: BoundingRect,\n\n  /**\n   * @param {module:echarts/core/BoundingRect} other\n   */\n  union: function (other) {\n    var x = mathMin(other.x, this.x);\n    var y = mathMin(other.y, this.y);\n    this.width = mathMax(other.x + other.width, this.x + this.width) - x;\n    this.height = mathMax(other.y + other.height, this.y + this.height) - y;\n    this.x = x;\n    this.y = y;\n  },\n\n  /**\n   * @param {Array.<number>} m\n   * @methods\n   */\n  applyTransform: function () {\n    var lt = [];\n    var rb = [];\n    var lb = [];\n    var rt = [];\n    return function (m) {\n      // In case usage like this\n      // el.getBoundingRect().applyTransform(el.transform)\n      // And element has no transform\n      if (!m) {\n        return;\n      }\n\n      lt[0] = lb[0] = this.x;\n      lt[1] = rt[1] = this.y;\n      rb[0] = rt[0] = this.x + this.width;\n      rb[1] = lb[1] = this.y + this.height;\n      v2ApplyTransform(lt, lt, m);\n      v2ApplyTransform(rb, rb, m);\n      v2ApplyTransform(lb, lb, m);\n      v2ApplyTransform(rt, rt, m);\n      this.x = mathMin(lt[0], rb[0], lb[0], rt[0]);\n      this.y = mathMin(lt[1], rb[1], lb[1], rt[1]);\n      var maxX = mathMax(lt[0], rb[0], lb[0], rt[0]);\n      var maxY = mathMax(lt[1], rb[1], lb[1], rt[1]);\n      this.width = maxX - this.x;\n      this.height = maxY - this.y;\n    };\n  }(),\n\n  /**\n   * Calculate matrix of transforming from self to target rect\n   * @param  {module:zrender/core/BoundingRect} b\n   * @return {Array.<number>}\n   */\n  calculateTransform: function (b) {\n    var a = this;\n    var sx = b.width / a.width;\n    var sy = b.height / a.height;\n    var m = matrix.create(); // 矩阵右乘\n\n    matrix.translate(m, m, [-a.x, -a.y]);\n    matrix.scale(m, m, [sx, sy]);\n    matrix.translate(m, m, [b.x, b.y]);\n    return m;\n  },\n\n  /**\n   * @param {(module:echarts/core/BoundingRect|Object)} b\n   * @return {boolean}\n   */\n  intersect: function (b) {\n    if (!b) {\n      return false;\n    }\n\n    if (!(b instanceof BoundingRect)) {\n      // Normalize negative width/height.\n      b = BoundingRect.create(b);\n    }\n\n    var a = this;\n    var ax0 = a.x;\n    var ax1 = a.x + a.width;\n    var ay0 = a.y;\n    var ay1 = a.y + a.height;\n    var bx0 = b.x;\n    var bx1 = b.x + b.width;\n    var by0 = b.y;\n    var by1 = b.y + b.height;\n    return !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\n  },\n  contain: function (x, y) {\n    var rect = this;\n    return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height;\n  },\n\n  /**\n   * @return {module:echarts/core/BoundingRect}\n   */\n  clone: function () {\n    return new BoundingRect(this.x, this.y, this.width, this.height);\n  },\n\n  /**\n   * Copy from another rect\n   */\n  copy: function (other) {\n    this.x = other.x;\n    this.y = other.y;\n    this.width = other.width;\n    this.height = other.height;\n  },\n  plain: function () {\n    return {\n      x: this.x,\n      y: this.y,\n      width: this.width,\n      height: this.height\n    };\n  }\n};\n/**\n * @param {Object|module:zrender/core/BoundingRect} rect\n * @param {number} rect.x\n * @param {number} rect.y\n * @param {number} rect.width\n * @param {number} rect.height\n * @return {module:zrender/core/BoundingRect}\n */\n\nBoundingRect.create = function (rect) {\n  return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\n};\n\nvar _default = BoundingRect;\nmodule.exports = _default;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(106),\n    now = __webpack_require__(943),\n    toNumber = __webpack_require__(534);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar isCallable = __webpack_require__(43);\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/extends.js\nvar helpers_extends = __webpack_require__(4);\nvar extends_default = /*#__PURE__*/__webpack_require__.n(helpers_extends);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/defineProperty.js\nvar defineProperty = __webpack_require__(15);\nvar defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/classCallCheck.js\nvar classCallCheck = __webpack_require__(11);\nvar classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/createClass.js\nvar createClass = __webpack_require__(22);\nvar createClass_default = /*#__PURE__*/__webpack_require__.n(createClass);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\nvar possibleConstructorReturn = __webpack_require__(10);\nvar possibleConstructorReturn_default = /*#__PURE__*/__webpack_require__.n(possibleConstructorReturn);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/inherits.js\nvar inherits = __webpack_require__(12);\nvar inherits_default = /*#__PURE__*/__webpack_require__.n(inherits);\n\n// EXTERNAL MODULE: external \"react\"\nvar external_react_ = __webpack_require__(0);\nvar external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);\n\n// EXTERNAL MODULE: ./node_modules/prop-types/index.js\nvar prop_types = __webpack_require__(1);\nvar prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/unsafeLifecyclesPolyfill.js\nvar unsafeLifecyclesPolyfill = __webpack_require__(351);\n\n// CONCATENATED MODULE: ./node_modules/rc-animate/es/ChildrenUtils.js\n\n\nfunction toArrayChildren(children) {\n  var ret = [];\n  external_react_default.a.Children.forEach(children, function (child) {\n    ret.push(child);\n  });\n  return ret;\n}\n\nfunction findChildInChildrenByKey(children, key) {\n  var ret = null;\n  if (children) {\n    children.forEach(function (child) {\n      if (ret) {\n        return;\n      }\n      if (child && child.key === key) {\n        ret = child;\n      }\n    });\n  }\n  return ret;\n}\n\nfunction findShownChildInChildrenByKey(children, key, showProp) {\n  var ret = null;\n  if (children) {\n    children.forEach(function (child) {\n      if (child && child.key === key && child.props[showProp]) {\n        if (ret) {\n          throw new Error('two child with same key for <rc-animate> children');\n        }\n        ret = child;\n      }\n    });\n  }\n  return ret;\n}\n\nfunction findHiddenChildInChildrenByKey(children, key, showProp) {\n  var found = 0;\n  if (children) {\n    children.forEach(function (child) {\n      if (found) {\n        return;\n      }\n      found = child && child.key === key && !child.props[showProp];\n    });\n  }\n  return found;\n}\n\nfunction isSameChildren(c1, c2, showProp) {\n  var same = c1.length === c2.length;\n  if (same) {\n    c1.forEach(function (child, index) {\n      var child2 = c2[index];\n      if (child && child2) {\n        if (child && !child2 || !child && child2) {\n          same = false;\n        } else if (child.key !== child2.key) {\n          same = false;\n        } else if (showProp && child.props[showProp] !== child2.props[showProp]) {\n          same = false;\n        }\n      }\n    });\n  }\n  return same;\n}\n\nfunction mergeChildren(prev, next) {\n  var ret = [];\n\n  // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n  var nextChildrenPending = {};\n  var pendingChildren = [];\n  prev.forEach(function (child) {\n    if (child && findChildInChildrenByKey(next, child.key)) {\n      if (pendingChildren.length) {\n        nextChildrenPending[child.key] = pendingChildren;\n        pendingChildren = [];\n      }\n    } else {\n      pendingChildren.push(child);\n    }\n  });\n\n  next.forEach(function (child) {\n    if (child && Object.prototype.hasOwnProperty.call(nextChildrenPending, child.key)) {\n      ret = ret.concat(nextChildrenPending[child.key]);\n    }\n    ret.push(child);\n  });\n\n  ret = ret.concat(pendingChildren);\n\n  return ret;\n}\n// EXTERNAL MODULE: external \"react-dom\"\nvar external_react_dom_ = __webpack_require__(19);\nvar external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_);\n\n// EXTERNAL MODULE: ./node_modules/css-animation/es/index.js\nvar es = __webpack_require__(192);\n\n// CONCATENATED MODULE: ./node_modules/rc-animate/es/util/animate.js\nvar util = {\n  isAppearSupported: function isAppearSupported(props) {\n    return props.transitionName && props.transitionAppear || props.animation.appear;\n  },\n  isEnterSupported: function isEnterSupported(props) {\n    return props.transitionName && props.transitionEnter || props.animation.enter;\n  },\n  isLeaveSupported: function isLeaveSupported(props) {\n    return props.transitionName && props.transitionLeave || props.animation.leave;\n  },\n  allowAppearCallback: function allowAppearCallback(props) {\n    return props.transitionAppear || props.animation.appear;\n  },\n  allowEnterCallback: function allowEnterCallback(props) {\n    return props.transitionEnter || props.animation.enter;\n  },\n  allowLeaveCallback: function allowLeaveCallback(props) {\n    return props.transitionLeave || props.animation.leave;\n  }\n};\n/* harmony default export */ var animate = (util);\n// CONCATENATED MODULE: ./node_modules/rc-animate/es/AnimateChild.js\n\n\n\n\n\n\n\n\n\n\nvar transitionMap = {\n  enter: 'transitionEnter',\n  appear: 'transitionAppear',\n  leave: 'transitionLeave'\n};\n\nvar AnimateChild_AnimateChild = function (_React$Component) {\n  inherits_default()(AnimateChild, _React$Component);\n\n  function AnimateChild() {\n    classCallCheck_default()(this, AnimateChild);\n\n    return possibleConstructorReturn_default()(this, (AnimateChild.__proto__ || Object.getPrototypeOf(AnimateChild)).apply(this, arguments));\n  }\n\n  createClass_default()(AnimateChild, [{\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.stop();\n    }\n  }, {\n    key: 'componentWillEnter',\n    value: function componentWillEnter(done) {\n      if (animate.isEnterSupported(this.props)) {\n        this.transition('enter', done);\n      } else {\n        done();\n      }\n    }\n  }, {\n    key: 'componentWillAppear',\n    value: function componentWillAppear(done) {\n      if (animate.isAppearSupported(this.props)) {\n        this.transition('appear', done);\n      } else {\n        done();\n      }\n    }\n  }, {\n    key: 'componentWillLeave',\n    value: function componentWillLeave(done) {\n      if (animate.isLeaveSupported(this.props)) {\n        this.transition('leave', done);\n      } else {\n        // always sync, do not interupt with react component life cycle\n        // update hidden -> animate hidden ->\n        // didUpdate -> animate leave -> unmount (if animate is none)\n        done();\n      }\n    }\n  }, {\n    key: 'transition',\n    value: function transition(animationType, finishCallback) {\n      var _this2 = this;\n\n      var node = external_react_dom_default.a.findDOMNode(this);\n      var props = this.props;\n      var transitionName = props.transitionName;\n      var nameIsObj = typeof transitionName === 'object';\n      this.stop();\n      var end = function end() {\n        _this2.stopper = null;\n        finishCallback();\n      };\n      if ((es[\"b\" /* isCssAnimationSupported */] || !props.animation[animationType]) && transitionName && props[transitionMap[animationType]]) {\n        var name = nameIsObj ? transitionName[animationType] : transitionName + '-' + animationType;\n        var activeName = name + '-active';\n        if (nameIsObj && transitionName[animationType + 'Active']) {\n          activeName = transitionName[animationType + 'Active'];\n        }\n        this.stopper = Object(es[\"a\" /* default */])(node, {\n          name: name,\n          active: activeName\n        }, end);\n      } else {\n        this.stopper = props.animation[animationType](node, end);\n      }\n    }\n  }, {\n    key: 'stop',\n    value: function stop() {\n      var stopper = this.stopper;\n      if (stopper) {\n        this.stopper = null;\n        stopper.stop();\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n\n  return AnimateChild;\n}(external_react_default.a.Component);\n\nAnimateChild_AnimateChild.propTypes = {\n  children: prop_types_default.a.any,\n  animation: prop_types_default.a.any,\n  transitionName: prop_types_default.a.any\n};\n/* harmony default export */ var es_AnimateChild = (AnimateChild_AnimateChild);\n// CONCATENATED MODULE: ./node_modules/rc-animate/es/Animate.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar defaultKey = 'rc_animate_' + Date.now();\n\nfunction getChildrenFromProps(props) {\n  var children = props.children;\n  if (external_react_default.a.isValidElement(children)) {\n    if (!children.key) {\n      return external_react_default.a.cloneElement(children, {\n        key: defaultKey\n      });\n    }\n  }\n  return children;\n}\n\nfunction noop() {}\n\nvar Animate_Animate = function (_React$Component) {\n  inherits_default()(Animate, _React$Component);\n\n  // eslint-disable-line\n\n  function Animate(props) {\n    classCallCheck_default()(this, Animate);\n\n    var _this = possibleConstructorReturn_default()(this, (Animate.__proto__ || Object.getPrototypeOf(Animate)).call(this, props));\n\n    Animate_initialiseProps.call(_this);\n\n    _this.currentlyAnimatingKeys = {};\n    _this.keysToEnter = [];\n    _this.keysToLeave = [];\n\n    _this.state = {\n      children: toArrayChildren(getChildrenFromProps(props))\n    };\n\n    _this.childrenRefs = {};\n    return _this;\n  }\n\n  createClass_default()(Animate, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      var showProp = this.props.showProp;\n      var children = this.state.children;\n      if (showProp) {\n        children = children.filter(function (child) {\n          return !!child.props[showProp];\n        });\n      }\n      children.forEach(function (child) {\n        if (child) {\n          _this2.performAppear(child.key);\n        }\n      });\n    }\n  }, {\n    key: 'componentWillReceiveProps',\n    value: function componentWillReceiveProps(nextProps) {\n      var _this3 = this;\n\n      this.nextProps = nextProps;\n      var nextChildren = toArrayChildren(getChildrenFromProps(nextProps));\n      var props = this.props;\n      // exclusive needs immediate response\n      if (props.exclusive) {\n        Object.keys(this.currentlyAnimatingKeys).forEach(function (key) {\n          _this3.stop(key);\n        });\n      }\n      var showProp = props.showProp;\n      var currentlyAnimatingKeys = this.currentlyAnimatingKeys;\n      // last props children if exclusive\n      var currentChildren = props.exclusive ? toArrayChildren(getChildrenFromProps(props)) : this.state.children;\n      // in case destroy in showProp mode\n      var newChildren = [];\n      if (showProp) {\n        currentChildren.forEach(function (currentChild) {\n          var nextChild = currentChild && findChildInChildrenByKey(nextChildren, currentChild.key);\n          var newChild = void 0;\n          if ((!nextChild || !nextChild.props[showProp]) && currentChild.props[showProp]) {\n            newChild = external_react_default.a.cloneElement(nextChild || currentChild, defineProperty_default()({}, showProp, true));\n          } else {\n            newChild = nextChild;\n          }\n          if (newChild) {\n            newChildren.push(newChild);\n          }\n        });\n        nextChildren.forEach(function (nextChild) {\n          if (!nextChild || !findChildInChildrenByKey(currentChildren, nextChild.key)) {\n            newChildren.push(nextChild);\n          }\n        });\n      } else {\n        newChildren = mergeChildren(currentChildren, nextChildren);\n      }\n\n      // need render to avoid update\n      this.setState({\n        children: newChildren\n      });\n\n      nextChildren.forEach(function (child) {\n        var key = child && child.key;\n        if (child && currentlyAnimatingKeys[key]) {\n          return;\n        }\n        var hasPrev = child && findChildInChildrenByKey(currentChildren, key);\n        if (showProp) {\n          var showInNext = child.props[showProp];\n          if (hasPrev) {\n            var showInNow = findShownChildInChildrenByKey(currentChildren, key, showProp);\n            if (!showInNow && showInNext) {\n              _this3.keysToEnter.push(key);\n            }\n          } else if (showInNext) {\n            _this3.keysToEnter.push(key);\n          }\n        } else if (!hasPrev) {\n          _this3.keysToEnter.push(key);\n        }\n      });\n\n      currentChildren.forEach(function (child) {\n        var key = child && child.key;\n        if (child && currentlyAnimatingKeys[key]) {\n          return;\n        }\n        var hasNext = child && findChildInChildrenByKey(nextChildren, key);\n        if (showProp) {\n          var showInNow = child.props[showProp];\n          if (hasNext) {\n            var showInNext = findShownChildInChildrenByKey(nextChildren, key, showProp);\n            if (!showInNext && showInNow) {\n              _this3.keysToLeave.push(key);\n            }\n          } else if (showInNow) {\n            _this3.keysToLeave.push(key);\n          }\n        } else if (!hasNext) {\n          _this3.keysToLeave.push(key);\n        }\n      });\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate() {\n      var keysToEnter = this.keysToEnter;\n      this.keysToEnter = [];\n      keysToEnter.forEach(this.performEnter);\n      var keysToLeave = this.keysToLeave;\n      this.keysToLeave = [];\n      keysToLeave.forEach(this.performLeave);\n    }\n  }, {\n    key: 'isValidChildByKey',\n    value: function isValidChildByKey(currentChildren, key) {\n      var showProp = this.props.showProp;\n      if (showProp) {\n        return findShownChildInChildrenByKey(currentChildren, key, showProp);\n      }\n      return findChildInChildrenByKey(currentChildren, key);\n    }\n  }, {\n    key: 'stop',\n    value: function stop(key) {\n      delete this.currentlyAnimatingKeys[key];\n      var component = this.childrenRefs[key];\n      if (component) {\n        component.stop();\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this4 = this;\n\n      var props = this.props;\n      this.nextProps = props;\n      var stateChildren = this.state.children;\n      var children = null;\n      if (stateChildren) {\n        children = stateChildren.map(function (child) {\n          if (child === null || child === undefined) {\n            return child;\n          }\n          if (!child.key) {\n            throw new Error('must set key for <rc-animate> children');\n          }\n          return external_react_default.a.createElement(\n            es_AnimateChild,\n            {\n              key: child.key,\n              ref: function ref(node) {\n                _this4.childrenRefs[child.key] = node;\n              },\n              animation: props.animation,\n              transitionName: props.transitionName,\n              transitionEnter: props.transitionEnter,\n              transitionAppear: props.transitionAppear,\n              transitionLeave: props.transitionLeave\n            },\n            child\n          );\n        });\n      }\n      var Component = props.component;\n      if (Component) {\n        var passedProps = props;\n        if (typeof Component === 'string') {\n          passedProps = extends_default()({\n            className: props.className,\n            style: props.style\n          }, props.componentProps);\n        }\n        return external_react_default.a.createElement(\n          Component,\n          passedProps,\n          children\n        );\n      }\n      return children[0] || null;\n    }\n  }]);\n\n  return Animate;\n}(external_react_default.a.Component);\n\nAnimate_Animate.isAnimate = true;\nAnimate_Animate.propTypes = {\n  className: prop_types_default.a.string,\n  style: prop_types_default.a.object,\n  component: prop_types_default.a.any,\n  componentProps: prop_types_default.a.object,\n  animation: prop_types_default.a.object,\n  transitionName: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.object]),\n  transitionEnter: prop_types_default.a.bool,\n  transitionAppear: prop_types_default.a.bool,\n  exclusive: prop_types_default.a.bool,\n  transitionLeave: prop_types_default.a.bool,\n  onEnd: prop_types_default.a.func,\n  onEnter: prop_types_default.a.func,\n  onLeave: prop_types_default.a.func,\n  onAppear: prop_types_default.a.func,\n  showProp: prop_types_default.a.string,\n  children: prop_types_default.a.node\n};\nAnimate_Animate.defaultProps = {\n  animation: {},\n  component: 'span',\n  componentProps: {},\n  transitionEnter: true,\n  transitionLeave: true,\n  transitionAppear: false,\n  onEnd: noop,\n  onEnter: noop,\n  onLeave: noop,\n  onAppear: noop\n};\n\nvar Animate_initialiseProps = function _initialiseProps() {\n  var _this5 = this;\n\n  this.performEnter = function (key) {\n    // may already remove by exclusive\n    if (_this5.childrenRefs[key]) {\n      _this5.currentlyAnimatingKeys[key] = true;\n      _this5.childrenRefs[key].componentWillEnter(_this5.handleDoneAdding.bind(_this5, key, 'enter'));\n    }\n  };\n\n  this.performAppear = function (key) {\n    if (_this5.childrenRefs[key]) {\n      _this5.currentlyAnimatingKeys[key] = true;\n      _this5.childrenRefs[key].componentWillAppear(_this5.handleDoneAdding.bind(_this5, key, 'appear'));\n    }\n  };\n\n  this.handleDoneAdding = function (key, type) {\n    var props = _this5.props;\n    delete _this5.currentlyAnimatingKeys[key];\n    // if update on exclusive mode, skip check\n    if (props.exclusive && props !== _this5.nextProps) {\n      return;\n    }\n    var currentChildren = toArrayChildren(getChildrenFromProps(props));\n    if (!_this5.isValidChildByKey(currentChildren, key)) {\n      // exclusive will not need this\n      _this5.performLeave(key);\n    } else if (type === 'appear') {\n      if (animate.allowAppearCallback(props)) {\n        props.onAppear(key);\n        props.onEnd(key, true);\n      }\n    } else if (animate.allowEnterCallback(props)) {\n      props.onEnter(key);\n      props.onEnd(key, true);\n    }\n  };\n\n  this.performLeave = function (key) {\n    // may already remove by exclusive\n    if (_this5.childrenRefs[key]) {\n      _this5.currentlyAnimatingKeys[key] = true;\n      _this5.childrenRefs[key].componentWillLeave(_this5.handleDoneLeaving.bind(_this5, key));\n    }\n  };\n\n  this.handleDoneLeaving = function (key) {\n    var props = _this5.props;\n    delete _this5.currentlyAnimatingKeys[key];\n    // if update on exclusive mode, skip check\n    if (props.exclusive && props !== _this5.nextProps) {\n      return;\n    }\n    var currentChildren = toArrayChildren(getChildrenFromProps(props));\n    // in case state change is too fast\n    if (_this5.isValidChildByKey(currentChildren, key)) {\n      _this5.performEnter(key);\n    } else {\n      var end = function end() {\n        if (animate.allowLeaveCallback(props)) {\n          props.onLeave(key);\n          props.onEnd(key, false);\n        }\n      };\n      if (!isSameChildren(_this5.state.children, currentChildren, props.showProp)) {\n        _this5.setState({\n          children: currentChildren\n        }, end);\n      } else {\n        end();\n      }\n    }\n  };\n};\n\n/* harmony default export */ var es_Animate = __webpack_exports__[\"a\"] = (Object(unsafeLifecyclesPolyfill[\"a\" /* default */])(Animate_Animate));\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar objectWithoutPropertiesLoose = __webpack_require__(948);\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(43);\nvar definePropertyModule = __webpack_require__(48);\nvar makeBuiltIn = __webpack_require__(358);\nvar defineGlobalProperty = __webpack_require__(357);\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\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Displayable = __webpack_require__(254);\n\nvar zrUtil = __webpack_require__(2);\n\nvar PathProxy = __webpack_require__(213);\n\nvar pathContain = __webpack_require__(1016);\n\nvar Pattern = __webpack_require__(552);\n\nvar getCanvasPattern = Pattern.prototype.getCanvasPattern;\nvar abs = Math.abs;\nvar pathProxyForDraw = new PathProxy(true);\n/**\n * @alias module:zrender/graphic/Path\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\n\nfunction Path(opts) {\n  Displayable.call(this, opts);\n  /**\n   * @type {module:zrender/core/PathProxy}\n   * @readOnly\n   */\n\n  this.path = null;\n}\n\nPath.prototype = {\n  constructor: Path,\n  type: 'path',\n  __dirtyPath: true,\n  strokeContainThreshold: 5,\n  // This item default to be false. But in map series in echarts,\n  // in order to improve performance, it should be set to true,\n  // so the shorty segment won't draw.\n  segmentIgnoreThreshold: 0,\n\n  /**\n   * See `module:zrender/src/graphic/helper/subPixelOptimize`.\n   * @type {boolean}\n   */\n  subPixelOptimize: false,\n  brush: function (ctx, prevEl) {\n    var style = this.style;\n    var path = this.path || pathProxyForDraw;\n    var hasStroke = style.hasStroke();\n    var hasFill = style.hasFill();\n    var fill = style.fill;\n    var stroke = style.stroke;\n    var hasFillGradient = hasFill && !!fill.colorStops;\n    var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n    var hasFillPattern = hasFill && !!fill.image;\n    var hasStrokePattern = hasStroke && !!stroke.image;\n    style.bind(ctx, this, prevEl);\n    this.setTransform(ctx);\n\n    if (this.__dirty) {\n      var rect; // Update gradient because bounding rect may changed\n\n      if (hasFillGradient) {\n        rect = rect || this.getBoundingRect();\n        this._fillGradient = style.getGradient(ctx, fill, rect);\n      }\n\n      if (hasStrokeGradient) {\n        rect = rect || this.getBoundingRect();\n        this._strokeGradient = style.getGradient(ctx, stroke, rect);\n      }\n    } // Use the gradient or pattern\n\n\n    if (hasFillGradient) {\n      // PENDING If may have affect the state\n      ctx.fillStyle = this._fillGradient;\n    } else if (hasFillPattern) {\n      ctx.fillStyle = getCanvasPattern.call(fill, ctx);\n    }\n\n    if (hasStrokeGradient) {\n      ctx.strokeStyle = this._strokeGradient;\n    } else if (hasStrokePattern) {\n      ctx.strokeStyle = getCanvasPattern.call(stroke, ctx);\n    }\n\n    var lineDash = style.lineDash;\n    var lineDashOffset = style.lineDashOffset;\n    var ctxLineDash = !!ctx.setLineDash; // Update path sx, sy\n\n    var scale = this.getGlobalScale();\n    path.setScale(scale[0], scale[1], this.segmentIgnoreThreshold); // Proxy context\n    // Rebuild path in following 2 cases\n    // 1. Path is dirty\n    // 2. Path needs javascript implemented lineDash stroking.\n    //    In this case, lineDash information will not be saved in PathProxy\n\n    if (this.__dirtyPath || lineDash && !ctxLineDash && hasStroke) {\n      path.beginPath(ctx); // Setting line dash before build path\n\n      if (lineDash && !ctxLineDash) {\n        path.setLineDash(lineDash);\n        path.setLineDashOffset(lineDashOffset);\n      }\n\n      this.buildPath(path, this.shape, false); // Clear path dirty flag\n\n      if (this.path) {\n        this.__dirtyPath = false;\n      }\n    } else {\n      // Replay path building\n      ctx.beginPath();\n      this.path.rebuildPath(ctx);\n    }\n\n    if (hasFill) {\n      if (style.fillOpacity != null) {\n        var originalGlobalAlpha = ctx.globalAlpha;\n        ctx.globalAlpha = style.fillOpacity * style.opacity;\n        path.fill(ctx);\n        ctx.globalAlpha = originalGlobalAlpha;\n      } else {\n        path.fill(ctx);\n      }\n    }\n\n    if (lineDash && ctxLineDash) {\n      ctx.setLineDash(lineDash);\n      ctx.lineDashOffset = lineDashOffset;\n    }\n\n    if (hasStroke) {\n      if (style.strokeOpacity != null) {\n        var originalGlobalAlpha = ctx.globalAlpha;\n        ctx.globalAlpha = style.strokeOpacity * style.opacity;\n        path.stroke(ctx);\n        ctx.globalAlpha = originalGlobalAlpha;\n      } else {\n        path.stroke(ctx);\n      }\n    }\n\n    if (lineDash && ctxLineDash) {\n      // PENDING\n      // Remove lineDash\n      ctx.setLineDash([]);\n    } // Draw rect text\n\n\n    if (style.text != null) {\n      // Only restore transform when needs draw text.\n      this.restoreTransform(ctx);\n      this.drawRectText(ctx, this.getBoundingRect());\n    }\n  },\n  // When bundling path, some shape may decide if use moveTo to begin a new subpath or closePath\n  // Like in circle\n  buildPath: function (ctx, shapeCfg, inBundle) {},\n  createPathProxy: function () {\n    this.path = new PathProxy();\n  },\n  getBoundingRect: function () {\n    var rect = this._rect;\n    var style = this.style;\n    var needsUpdateRect = !rect;\n\n    if (needsUpdateRect) {\n      var path = this.path;\n\n      if (!path) {\n        // Create path on demand.\n        path = this.path = new PathProxy();\n      }\n\n      if (this.__dirtyPath) {\n        path.beginPath();\n        this.buildPath(path, this.shape, false);\n      }\n\n      rect = path.getBoundingRect();\n    }\n\n    this._rect = rect;\n\n    if (style.hasStroke()) {\n      // Needs update rect with stroke lineWidth when\n      // 1. Element changes scale or lineWidth\n      // 2. Shape is changed\n      var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\n\n      if (this.__dirty || needsUpdateRect) {\n        rectWithStroke.copy(rect); // FIXME Must after updateTransform\n\n        var w = style.lineWidth; // PENDING, Min line width is needed when line is horizontal or vertical\n\n        var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Only add extra hover lineWidth when there are no fill\n\n        if (!style.hasFill()) {\n          w = Math.max(w, this.strokeContainThreshold || 4);\n        } // Consider line width\n        // Line scale can't be 0;\n\n\n        if (lineScale > 1e-10) {\n          rectWithStroke.width += w / lineScale;\n          rectWithStroke.height += w / lineScale;\n          rectWithStroke.x -= w / lineScale / 2;\n          rectWithStroke.y -= w / lineScale / 2;\n        }\n      } // Return rect with stroke\n\n\n      return rectWithStroke;\n    }\n\n    return rect;\n  },\n  contain: function (x, y) {\n    var localPos = this.transformCoordToLocal(x, y);\n    var rect = this.getBoundingRect();\n    var style = this.style;\n    x = localPos[0];\n    y = localPos[1];\n\n    if (rect.contain(x, y)) {\n      var pathData = this.path.data;\n\n      if (style.hasStroke()) {\n        var lineWidth = style.lineWidth;\n        var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Line scale can't be 0;\n\n        if (lineScale > 1e-10) {\n          // Only add extra hover lineWidth when there are no fill\n          if (!style.hasFill()) {\n            lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n          }\n\n          if (pathContain.containStroke(pathData, lineWidth / lineScale, x, y)) {\n            return true;\n          }\n        }\n      }\n\n      if (style.hasFill()) {\n        return pathContain.contain(pathData, x, y);\n      }\n    }\n\n    return false;\n  },\n\n  /**\n   * @param  {boolean} dirtyPath\n   */\n  dirty: function (dirtyPath) {\n    if (dirtyPath == null) {\n      dirtyPath = true;\n    } // Only mark dirty, not mark clean\n\n\n    if (dirtyPath) {\n      this.__dirtyPath = dirtyPath;\n      this._rect = null;\n    }\n\n    this.__dirty = this.__dirtyText = true;\n    this.__zr && this.__zr.refresh(); // Used as a clipping path\n\n    if (this.__clipTarget) {\n      this.__clipTarget.dirty();\n    }\n  },\n\n  /**\n   * Alias for animate('shape')\n   * @param {boolean} loop\n   */\n  animateShape: function (loop) {\n    return this.animate('shape', loop);\n  },\n  // Overwrite attrKV\n  attrKV: function (key, value) {\n    // FIXME\n    if (key === 'shape') {\n      this.setShape(value);\n      this.__dirtyPath = true;\n      this._rect = null;\n    } else {\n      Displayable.prototype.attrKV.call(this, key, value);\n    }\n  },\n\n  /**\n   * @param {Object|string} key\n   * @param {*} value\n   */\n  setShape: function (key, value) {\n    var shape = this.shape; // Path from string may not have shape\n\n    if (shape) {\n      if (zrUtil.isObject(key)) {\n        for (var name in key) {\n          if (key.hasOwnProperty(name)) {\n            shape[name] = key[name];\n          }\n        }\n      } else {\n        shape[key] = value;\n      }\n\n      this.dirty(true);\n    }\n\n    return this;\n  },\n  getLineScale: function () {\n    var m = this.transform; // Get the line scale.\n    // Determinant of `m` means how much the area is enlarged by the\n    // transformation. So its square root can be used as a scale factor\n    // for width.\n\n    return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10 ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1])) : 1;\n  }\n};\n/**\n * 扩展一个 Path element, 比如星形，圆等。\n * Extend a path element\n * @param {Object} props\n * @param {string} props.type Path type\n * @param {Function} props.init Initialize\n * @param {Function} props.buildPath Overwrite buildPath method\n * @param {Object} [props.style] Extended default style config\n * @param {Object} [props.shape] Extended default shape config\n */\n\nPath.extend = function (defaults) {\n  var Sub = function (opts) {\n    Path.call(this, opts);\n\n    if (defaults.style) {\n      // Extend default style\n      this.style.extendFrom(defaults.style, false);\n    } // Extend default shape\n\n\n    var defaultShape = defaults.shape;\n\n    if (defaultShape) {\n      this.shape = this.shape || {};\n      var thisShape = this.shape;\n\n      for (var name in defaultShape) {\n        if (!thisShape.hasOwnProperty(name) && defaultShape.hasOwnProperty(name)) {\n          thisShape[name] = defaultShape[name];\n        }\n      }\n    }\n\n    defaults.init && defaults.init.call(this, opts);\n  };\n\n  zrUtil.inherits(Sub, Path); // FIXME 不能 extend position, rotation 等引用对象\n\n  for (var name in defaults) {\n    // Extending prototype values and methods\n    if (name !== 'style' && name !== 'shape') {\n      Sub.prototype[name] = defaults[name];\n    }\n  }\n\n  return Sub;\n};\n\nzrUtil.inherits(Path, Displayable);\nvar _default = Path;\nmodule.exports = _default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(353);\n\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_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"] || freeSelf || Function('return this')();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (root);\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.create = exports.connect = exports.Provider = undefined;\n\nvar _Provider2 = __webpack_require__(1357);\n\nvar _Provider3 = _interopRequireDefault(_Provider2);\n\nvar _connect2 = __webpack_require__(1358);\n\nvar _connect3 = _interopRequireDefault(_connect2);\n\nvar _create2 = __webpack_require__(1360);\n\nvar _create3 = _interopRequireDefault(_create2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Provider = _Provider3.default;\nexports.connect = _connect3.default;\nexports.create = _create3.default;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports) {\n\n/**\n * echarts设备环境识别\n *\n * @desc echarts基于Canvas，纯Javascript图表库，提供直观，生动，可交互，可个性化定制的数据统计图表。\n * @author firede[firede@firede.us]\n * @desc thanks zepto.\n */\n\n/* global wx */\nvar env = {};\n\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n  // In Weixin Application\n  env = {\n    browser: {},\n    os: {},\n    node: false,\n    wxa: true,\n    // Weixin Application\n    canvasSupported: true,\n    svgSupported: false,\n    touchEventsSupported: true,\n    domSupported: false\n  };\n} else if (typeof document === 'undefined' && typeof self !== 'undefined') {\n  // In worker\n  env = {\n    browser: {},\n    os: {},\n    node: false,\n    worker: true,\n    canvasSupported: true,\n    domSupported: false\n  };\n} else if (typeof navigator === 'undefined') {\n  // In node\n  env = {\n    browser: {},\n    os: {},\n    node: true,\n    worker: false,\n    // Assume canvas is supported\n    canvasSupported: true,\n    svgSupported: true,\n    domSupported: false\n  };\n} else {\n  env = detect(navigator.userAgent);\n}\n\nvar _default = env; // Zepto.js\n// (c) 2010-2013 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nfunction detect(ua) {\n  var os = {};\n  var browser = {}; // var webkit = ua.match(/Web[kK]it[\\/]{0,1}([\\d.]+)/);\n  // var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n  // var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  // var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  // var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n  // var webos = ua.match(/(webOS|hpwOS)[\\s\\/]([\\d.]+)/);\n  // var touchpad = webos && ua.match(/TouchPad/);\n  // var kindle = ua.match(/Kindle\\/([\\d.]+)/);\n  // var silk = ua.match(/Silk\\/([\\d._]+)/);\n  // var blackberry = ua.match(/(BlackBerry).*Version\\/([\\d.]+)/);\n  // var bb10 = ua.match(/(BB10).*Version\\/([\\d.]+)/);\n  // var rimtabletos = ua.match(/(RIM\\sTablet\\sOS)\\s([\\d.]+)/);\n  // var playbook = ua.match(/PlayBook/);\n  // var chrome = ua.match(/Chrome\\/([\\d.]+)/) || ua.match(/CriOS\\/([\\d.]+)/);\n\n  var firefox = ua.match(/Firefox\\/([\\d.]+)/); // var safari = webkit && ua.match(/Mobile\\//) && !chrome;\n  // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;\n\n  var ie = ua.match(/MSIE\\s([\\d.]+)/) // IE 11 Trident/7.0; rv:11.0\n  || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n  var edge = ua.match(/Edge\\/([\\d.]+)/); // IE 12 and 12+\n\n  var weChat = /micromessenger/i.test(ua); // Todo: clean this up with a better OS/browser seperation:\n  // - discern (more) between multiple browsers on android\n  // - decide if kindle fire in silk mode is android or not\n  // - Firefox on Android doesn't specify the Android version\n  // - possibly devide in os, device and browser hashes\n  // if (browser.webkit = !!webkit) browser.version = webkit[1];\n  // if (android) os.android = true, os.version = android[2];\n  // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');\n  // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');\n  // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n  // if (webos) os.webos = true, os.version = webos[2];\n  // if (touchpad) os.touchpad = true;\n  // if (blackberry) os.blackberry = true, os.version = blackberry[2];\n  // if (bb10) os.bb10 = true, os.version = bb10[2];\n  // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];\n  // if (playbook) browser.playbook = true;\n  // if (kindle) os.kindle = true, os.version = kindle[1];\n  // if (silk) browser.silk = true, browser.version = silk[1];\n  // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;\n  // if (chrome) browser.chrome = true, browser.version = chrome[1];\n\n  if (firefox) {\n    browser.firefox = true;\n    browser.version = firefox[1];\n  } // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;\n  // if (webview) browser.webview = true;\n\n\n  if (ie) {\n    browser.ie = true;\n    browser.version = ie[1];\n  }\n\n  if (edge) {\n    browser.edge = true;\n    browser.version = edge[1];\n  } // It is difficult to detect WeChat in Win Phone precisely, because ua can\n  // not be set on win phone. So we do not consider Win Phone.\n\n\n  if (weChat) {\n    browser.weChat = true;\n  } // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||\n  //     (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));\n  // os.phone  = !!(!os.tablet && !os.ipod && (android || iphone || webos ||\n  //     (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\\/([\\d.]+)/)) ||\n  //     (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));\n\n\n  return {\n    browser: browser,\n    os: os,\n    node: false,\n    // 原生canvas支持，改极端点了\n    // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9)\n    canvasSupported: !!document.createElement('canvas').getContext,\n    svgSupported: typeof SVGRect !== 'undefined',\n    // works on most browsers\n    // IE10/11 does not support touch event, and MS Edge supports them but not by\n    // default, so we dont check navigator.maxTouchPoints for them here.\n    touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge,\n    // <http://caniuse.com/#search=pointer%20event>.\n    pointerEventsSupported: // (1) Firefox supports pointer but not by default, only MS browsers are reliable on pointer\n    // events currently. So we dont use that on other browsers unless tested sufficiently.\n    // For example, in iOS 13 Mobile Chromium 78, if the touching behavior starts page\n    // scroll, the `pointermove` event can not be fired any more. That will break some\n    // features like \"pan horizontally to move something and pan vertically to page scroll\".\n    // The horizontal pan probably be interrupted by the casually triggered page scroll.\n    // (2) Although IE 10 supports pointer event, it use old style and is different from the\n    // standard. So we exclude that. (IE 10 is hardly used on touch device)\n    'onpointerdown' in window && (browser.edge || browser.ie && browser.version >= 11),\n    // passiveSupported: detectPassiveSupport()\n    domSupported: typeof document !== 'undefined'\n  };\n} // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n// function detectPassiveSupport() {\n//     // Test via a getter in the options object to see if the passive property is accessed\n//     var supportsPassive = false;\n//     try {\n//         var opts = Object.defineProperty({}, 'passive', {\n//             get: function() {\n//                 supportsPassive = true;\n//             }\n//         });\n//         window.addEventListener('testPassive', function() {}, opts);\n//     } catch (e) {\n//     }\n//     return supportsPassive;\n// }\n\n\nmodule.exports = _default;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar env = __webpack_require__(66);\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\n\nvar _clazz = __webpack_require__(143);\n\nvar enableClassExtend = _clazz.enableClassExtend;\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar lineStyleMixin = __webpack_require__(1013);\n\nvar areaStyleMixin = __webpack_require__(1014);\n\nvar textStyleMixin = __webpack_require__(1015);\n\nvar itemStyleMixin = __webpack_require__(1028);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/model/Model\n */\nvar mixin = zrUtil.mixin;\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Model\n * @constructor\n * @param {Object} [option]\n * @param {module:echarts/model/Model} [parentModel]\n * @param {module:echarts/model/Global} [ecModel]\n */\n\nfunction Model(option, parentModel, ecModel) {\n  /**\n   * @type {module:echarts/model/Model}\n   * @readOnly\n   */\n  this.parentModel = parentModel;\n  /**\n   * @type {module:echarts/model/Global}\n   * @readOnly\n   */\n\n  this.ecModel = ecModel;\n  /**\n   * @type {Object}\n   * @protected\n   */\n\n  this.option = option; // Simple optimization\n  // if (this.init) {\n  //     if (arguments.length <= 4) {\n  //         this.init(option, parentModel, ecModel, extraOpt);\n  //     }\n  //     else {\n  //         this.init.apply(this, arguments);\n  //     }\n  // }\n}\n\nModel.prototype = {\n  constructor: Model,\n\n  /**\n   * Model 的初始化函数\n   * @param {Object} option\n   */\n  init: null,\n\n  /**\n   * 从新的 Option merge\n   */\n  mergeOption: function (option) {\n    zrUtil.merge(this.option, option, true);\n  },\n\n  /**\n   * @param {string|Array.<string>} path\n   * @param {boolean} [ignoreParent=false]\n   * @return {*}\n   */\n  get: function (path, ignoreParent) {\n    if (path == null) {\n      return this.option;\n    }\n\n    return doGet(this.option, this.parsePath(path), !ignoreParent && getParent(this, path));\n  },\n\n  /**\n   * @param {string} key\n   * @param {boolean} [ignoreParent=false]\n   * @return {*}\n   */\n  getShallow: function (key, ignoreParent) {\n    var option = this.option;\n    var val = option == null ? option : option[key];\n    var parentModel = !ignoreParent && getParent(this, key);\n\n    if (val == null && parentModel) {\n      val = parentModel.getShallow(key);\n    }\n\n    return val;\n  },\n\n  /**\n   * @param {string|Array.<string>} [path]\n   * @param {module:echarts/model/Model} [parentModel]\n   * @return {module:echarts/model/Model}\n   */\n  getModel: function (path, parentModel) {\n    var obj = path == null ? this.option : doGet(this.option, path = this.parsePath(path));\n    var thisParentModel;\n    parentModel = parentModel || (thisParentModel = getParent(this, path)) && thisParentModel.getModel(path);\n    return new Model(obj, parentModel, this.ecModel);\n  },\n\n  /**\n   * If model has option\n   */\n  isEmpty: function () {\n    return this.option == null;\n  },\n  restoreData: function () {},\n  // Pending\n  clone: function () {\n    var Ctor = this.constructor;\n    return new Ctor(zrUtil.clone(this.option));\n  },\n  setReadOnly: function (properties) {// clazzUtil.setReadOnly(this, properties);\n  },\n  // If path is null/undefined, return null/undefined.\n  parsePath: function (path) {\n    if (typeof path === 'string') {\n      path = path.split('.');\n    }\n\n    return path;\n  },\n\n  /**\n   * @param {Function} getParentMethod\n   *        param {Array.<string>|string} path\n   *        return {module:echarts/model/Model}\n   */\n  customizeGetParent: function (getParentMethod) {\n    inner(this).getParent = getParentMethod;\n  },\n  isAnimationEnabled: function () {\n    if (!env.node) {\n      if (this.option.animation != null) {\n        return !!this.option.animation;\n      } else if (this.parentModel) {\n        return this.parentModel.isAnimationEnabled();\n      }\n    }\n  }\n};\n\nfunction doGet(obj, pathArr, parentModel) {\n  for (var i = 0; i < pathArr.length; i++) {\n    // Ignore empty\n    if (!pathArr[i]) {\n      continue;\n    } // obj could be number/string/... (like 0)\n\n\n    obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null;\n\n    if (obj == null) {\n      break;\n    }\n  }\n\n  if (obj == null && parentModel) {\n    obj = parentModel.get(pathArr);\n  }\n\n  return obj;\n} // `path` can be null/undefined\n\n\nfunction getParent(model, path) {\n  var getParentMethod = inner(model).getParent;\n  return getParentMethod ? getParentMethod.call(model, path) : model.parentModel;\n} // Enable Model.extend.\n\n\nenableClassExtend(Model);\nenableClassCheck(Model);\nmixin(Model, lineStyleMixin);\nmixin(Model, areaStyleMixin);\nmixin(Model, textStyleMixin);\nmixin(Model, itemStyleMixin);\nvar _default = Model;\nmodule.exports = _default;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO(Babel 8): Remove this file.\n\nvar runtime = __webpack_require__(957)();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 _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.convertFieldsError = convertFieldsError;\nexports.format = format;\nexports.isEmptyValue = isEmptyValue;\nexports.isEmptyObject = isEmptyObject;\nexports.asyncMap = asyncMap;\nexports.complementError = complementError;\nexports.deepMerge = deepMerge;\n/* eslint no-console:0 */\n\nvar formatRegExp = /%[sdj%]/g;\n\nvar warning = exports.warning = function warning() {};\n\n// don't print warning message when in production env or node runtime\nif (false) {}\n\nfunction convertFieldsError(errors) {\n  if (!errors || !errors.length) return null;\n  var fields = {};\n  errors.forEach(function (error) {\n    var field = error.field;\n    fields[field] = fields[field] || [];\n    fields[field].push(error);\n  });\n  return fields;\n}\n\nfunction format() {\n  for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  var i = 1;\n  var f = args[0];\n  var len = args.length;\n  if (typeof f === 'function') {\n    return f.apply(null, args.slice(1));\n  }\n  if (typeof f === 'string') {\n    var str = String(f).replace(formatRegExp, function (x) {\n      if (x === '%%') {\n        return '%';\n      }\n      if (i >= len) {\n        return x;\n      }\n      switch (x) {\n        case '%s':\n          return String(args[i++]);\n        case '%d':\n          return Number(args[i++]);\n        case '%j':\n          try {\n            return JSON.stringify(args[i++]);\n          } catch (_) {\n            return '[Circular]';\n          }\n          break;\n        default:\n          return x;\n      }\n    });\n    for (var arg = args[i]; i < len; arg = args[++i]) {\n      str += ' ' + arg;\n    }\n    return str;\n  }\n  return f;\n}\n\nfunction isNativeStringType(type) {\n  return type === 'string' || type === 'url' || type === 'hex' || type === 'email' || type === 'pattern';\n}\n\nfunction isEmptyValue(value, type) {\n  if (value === undefined || value === null) {\n    return true;\n  }\n  if (type === 'array' && Array.isArray(value) && !value.length) {\n    return true;\n  }\n  if (isNativeStringType(type) && typeof value === 'string' && !value) {\n    return true;\n  }\n  return false;\n}\n\nfunction isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\nfunction asyncParallelArray(arr, func, callback) {\n  var results = [];\n  var total = 0;\n  var arrLength = arr.length;\n\n  function count(errors) {\n    results.push.apply(results, errors);\n    total++;\n    if (total === arrLength) {\n      callback(results);\n    }\n  }\n\n  arr.forEach(function (a) {\n    func(a, count);\n  });\n}\n\nfunction asyncSerialArray(arr, func, callback) {\n  var index = 0;\n  var arrLength = arr.length;\n\n  function next(errors) {\n    if (errors && errors.length) {\n      callback(errors);\n      return;\n    }\n    var original = index;\n    index = index + 1;\n    if (original < arrLength) {\n      func(arr[original], next);\n    } else {\n      callback([]);\n    }\n  }\n\n  next([]);\n}\n\nfunction flattenObjArr(objArr) {\n  var ret = [];\n  Object.keys(objArr).forEach(function (k) {\n    ret.push.apply(ret, objArr[k]);\n  });\n  return ret;\n}\n\nfunction asyncMap(objArr, option, func, callback) {\n  if (option.first) {\n    var flattenArr = flattenObjArr(objArr);\n    return asyncSerialArray(flattenArr, func, callback);\n  }\n  var firstFields = option.firstFields || [];\n  if (firstFields === true) {\n    firstFields = Object.keys(objArr);\n  }\n  var objArrKeys = Object.keys(objArr);\n  var objArrLength = objArrKeys.length;\n  var total = 0;\n  var results = [];\n  var pending = new Promise(function (resolve, reject) {\n    var next = function next(errors) {\n      results.push.apply(results, errors);\n      total++;\n      if (total === objArrLength) {\n        callback(results);\n        return results.length ? reject({ errors: results, fields: convertFieldsError(results) }) : resolve();\n      }\n    };\n    objArrKeys.forEach(function (key) {\n      var arr = objArr[key];\n      if (firstFields.indexOf(key) !== -1) {\n        asyncSerialArray(arr, func, next);\n      } else {\n        asyncParallelArray(arr, func, next);\n      }\n    });\n  });\n  pending['catch'](function (e) {\n    return e;\n  });\n  return pending;\n}\n\nfunction complementError(rule) {\n  return function (oe) {\n    if (oe && oe.message) {\n      oe.field = oe.field || rule.fullField;\n      return oe;\n    }\n    return {\n      message: typeof oe === 'function' ? oe() : oe,\n      field: oe.field || rule.fullField\n    };\n  };\n}\n\nfunction deepMerge(target, source) {\n  if (source) {\n    for (var s in source) {\n      if (source.hasOwnProperty(s)) {\n        var value = source[s];\n        if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(target[s]) === 'object') {\n          target[s] = _extends({}, target[s], value);\n        } else {\n          target[s] = value;\n        }\n      }\n    }\n  }\n  return target;\n}\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(700);\n__webpack_require__(702);\n__webpack_require__(703);\n__webpack_require__(477);\n__webpack_require__(704);\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isNullOrUndefined = __webpack_require__(93);\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 $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(469);\nvar global = __webpack_require__(25);\nvar uncurryThis = __webpack_require__(20);\nvar isObject = __webpack_require__(39);\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar hasOwn = __webpack_require__(44);\nvar shared = __webpack_require__(356);\nvar sharedKey = __webpack_require__(280);\nvar hiddenKeys = __webpack_require__(229);\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.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 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  var wmget = uncurryThis(store.get);\n  var wmhas = uncurryThis(store.has);\n  var wmset = uncurryThis(store.set);\n  set = function (it, metadata) {\n    if (wmhas(store, it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw 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\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Model = __webpack_require__(67);\n\nvar componentUtil = __webpack_require__(256);\n\nvar _clazz = __webpack_require__(143);\n\nvar enableClassManagement = _clazz.enableClassManagement;\nvar parseClassType = _clazz.parseClassType;\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\n\nvar layout = __webpack_require__(49);\n\nvar boxLayoutMixin = __webpack_require__(1029);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Component model\n *\n * @module echarts/model/Component\n */\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Component\n * @constructor\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {module:echarts/model/Model} ecModel\n */\n\nvar ComponentModel = Model.extend({\n  type: 'component',\n\n  /**\n   * @readOnly\n   * @type {string}\n   */\n  id: '',\n\n  /**\n   * Because simplified concept is probably better, series.name (or component.name)\n   * has been having too many resposibilities:\n   * (1) Generating id (which requires name in option should not be modified).\n   * (2) As an index to mapping series when merging option or calling API (a name\n   * can refer to more then one components, which is convinient is some case).\n   * (3) Display.\n   * @readOnly\n   */\n  name: '',\n\n  /**\n   * @readOnly\n   * @type {string}\n   */\n  mainType: '',\n\n  /**\n   * @readOnly\n   * @type {string}\n   */\n  subType: '',\n\n  /**\n   * @readOnly\n   * @type {number}\n   */\n  componentIndex: 0,\n\n  /**\n   * @type {Object}\n   * @protected\n   */\n  defaultOption: null,\n\n  /**\n   * @type {module:echarts/model/Global}\n   * @readOnly\n   */\n  ecModel: null,\n\n  /**\n   * key: componentType\n   * value:  Component model list, can not be null.\n   * @type {Object.<string, Array.<module:echarts/model/Model>>}\n   * @readOnly\n   */\n  dependentModels: [],\n\n  /**\n   * @type {string}\n   * @readOnly\n   */\n  uid: null,\n\n  /**\n   * Support merge layout params.\n   * Only support 'box' now (left/right/top/bottom/width/height).\n   * @type {string|Object} Object can be {ignoreSize: true}\n   * @readOnly\n   */\n  layoutMode: null,\n  $constructor: function (option, parentModel, ecModel, extraOpt) {\n    Model.call(this, option, parentModel, ecModel, extraOpt);\n    this.uid = componentUtil.getUID('ec_cpt_model');\n  },\n  init: function (option, parentModel, ecModel, extraOpt) {\n    this.mergeDefaultAndTheme(option, ecModel);\n  },\n  mergeDefaultAndTheme: function (option, ecModel) {\n    var layoutMode = this.layoutMode;\n    var inputPositionParams = layoutMode ? layout.getLayoutParams(option) : {};\n    var themeModel = ecModel.getTheme();\n    zrUtil.merge(option, themeModel.get(this.mainType));\n    zrUtil.merge(option, this.getDefaultOption());\n\n    if (layoutMode) {\n      layout.mergeLayoutParam(option, inputPositionParams, layoutMode);\n    }\n  },\n  mergeOption: function (option, extraOpt) {\n    zrUtil.merge(this.option, option, true);\n    var layoutMode = this.layoutMode;\n\n    if (layoutMode) {\n      layout.mergeLayoutParam(this.option, option, layoutMode);\n    }\n  },\n  // Hooker after init or mergeOption\n  optionUpdated: function (newCptOption, isInit) {},\n  getDefaultOption: function () {\n    var fields = inner(this);\n\n    if (!fields.defaultOption) {\n      var optList = [];\n      var Class = this.constructor;\n\n      while (Class) {\n        var opt = Class.prototype.defaultOption;\n        opt && optList.push(opt);\n        Class = Class.superClass;\n      }\n\n      var defaultOption = {};\n\n      for (var i = optList.length - 1; i >= 0; i--) {\n        defaultOption = zrUtil.merge(defaultOption, optList[i], true);\n      }\n\n      fields.defaultOption = defaultOption;\n    }\n\n    return fields.defaultOption;\n  },\n  getReferringComponents: function (mainType) {\n    return this.ecModel.queryComponents({\n      mainType: mainType,\n      index: this.get(mainType + 'Index', true),\n      id: this.get(mainType + 'Id', true)\n    });\n  }\n}); // Reset ComponentModel.extend, add preConstruct.\n// clazzUtil.enableClassExtend(\n//     ComponentModel,\n//     function (option, parentModel, ecModel, extraOpt) {\n//         // Set dependentModels, componentIndex, name, id, mainType, subType.\n//         zrUtil.extend(this, extraOpt);\n//         this.uid = componentUtil.getUID('componentModel');\n//         // this.setReadOnly([\n//         //     'type', 'id', 'uid', 'name', 'mainType', 'subType',\n//         //     'dependentModels', 'componentIndex'\n//         // ]);\n//     }\n// );\n// Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nenableClassManagement(ComponentModel, {\n  registerWhenExtend: true\n});\ncomponentUtil.enableSubTypeDefaulter(ComponentModel); // Add capability of ComponentModel.topologicalTravel.\n\ncomponentUtil.enableTopologicalTravel(ComponentModel, getDependencies);\n\nfunction getDependencies(componentType) {\n  var deps = [];\n  zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (Clazz) {\n    deps = deps.concat(Clazz.prototype.dependencies || []);\n  }); // Ensure main type.\n\n  deps = zrUtil.map(deps, function (type) {\n    return parseClassType(type).main;\n  }); // Hack dataset for convenience.\n\n  if (componentType !== 'dataset' && zrUtil.indexOf(deps, 'dataset') <= 0) {\n    deps.unshift('dataset');\n  }\n\n  return deps;\n}\n\nzrUtil.mixin(ComponentModel, boxLayoutMixin);\nvar _default = ComponentModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\nvar env = __webpack_require__(66);\n\nvar _format = __webpack_require__(50);\n\nvar formatTime = _format.formatTime;\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\nvar getTooltipMarker = _format.getTooltipMarker;\n\nvar modelUtil = __webpack_require__(31);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar colorPaletteMixin = __webpack_require__(568);\n\nvar dataFormatMixin = __webpack_require__(407);\n\nvar _layout = __webpack_require__(49);\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar _task = __webpack_require__(408);\n\nvar createTask = _task.createTask;\n\nvar _sourceHelper = __webpack_require__(144);\n\nvar prepareSource = _sourceHelper.prepareSource;\nvar getSource = _sourceHelper.getSource;\n\nvar _dataProvider = __webpack_require__(179);\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar SeriesModel = ComponentModel.extend({\n  type: 'series.__base__',\n\n  /**\n   * @readOnly\n   */\n  seriesIndex: 0,\n  // coodinateSystem will be injected in the echarts/CoordinateSystem\n  coordinateSystem: null,\n\n  /**\n   * @type {Object}\n   * @protected\n   */\n  defaultOption: null,\n\n  /**\n   * legend visual provider to the legend component\n   * @type {Object}\n   */\n  // PENDING\n  legendVisualProvider: null,\n\n  /**\n   * Access path of color for visual\n   */\n  visualColorAccessPath: 'itemStyle.color',\n\n  /**\n   * Access path of borderColor for visual\n   */\n  visualBorderColorAccessPath: 'itemStyle.borderColor',\n\n  /**\n   * Support merge layout params.\n   * Only support 'box' now (left/right/top/bottom/width/height).\n   * @type {string|Object} Object can be {ignoreSize: true}\n   * @readOnly\n   */\n  layoutMode: null,\n  init: function (option, parentModel, ecModel, extraOpt) {\n    /**\n     * @type {number}\n     * @readOnly\n     */\n    this.seriesIndex = this.componentIndex;\n    this.dataTask = createTask({\n      count: dataTaskCount,\n      reset: dataTaskReset\n    });\n    this.dataTask.context = {\n      model: this\n    };\n    this.mergeDefaultAndTheme(option, ecModel);\n    prepareSource(this);\n    var data = this.getInitialData(option, ecModel);\n    wrapData(data, this);\n    this.dataTask.context.data = data;\n\n    /**\n     * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}\n     * @private\n     */\n    inner(this).dataBeforeProcessed = data; // If we reverse the order (make data firstly, and then make\n    // dataBeforeProcessed by cloneShallow), cloneShallow will\n    // cause data.graph.data !== data when using\n    // module:echarts/data/Graph or module:echarts/data/Tree.\n    // See module:echarts/data/helper/linkList\n    // Theoretically, it is unreasonable to call `seriesModel.getData()` in the model\n    // init or merge stage, because the data can be restored. So we do not `restoreData`\n    // and `setData` here, which forbids calling `seriesModel.getData()` in this stage.\n    // Call `seriesModel.getRawData()` instead.\n    // this.restoreData();\n\n    autoSeriesName(this);\n  },\n\n  /**\n   * Util for merge default and theme to option\n   * @param  {Object} option\n   * @param  {module:echarts/model/Global} ecModel\n   */\n  mergeDefaultAndTheme: function (option, ecModel) {\n    var layoutMode = this.layoutMode;\n    var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; // Backward compat: using subType on theme.\n    // But if name duplicate between series subType\n    // (for example: parallel) add component mainType,\n    // add suffix 'Series'.\n\n    var themeSubType = this.subType;\n\n    if (ComponentModel.hasClass(themeSubType)) {\n      themeSubType += 'Series';\n    }\n\n    zrUtil.merge(option, ecModel.getTheme().get(this.subType));\n    zrUtil.merge(option, this.getDefaultOption()); // Default label emphasis `show`\n\n    modelUtil.defaultEmphasis(option, 'label', ['show']);\n    this.fillDataTextStyle(option.data);\n\n    if (layoutMode) {\n      mergeLayoutParam(option, inputPositionParams, layoutMode);\n    }\n  },\n  mergeOption: function (newSeriesOption, ecModel) {\n    // this.settingTask.dirty();\n    newSeriesOption = zrUtil.merge(this.option, newSeriesOption, true);\n    this.fillDataTextStyle(newSeriesOption.data);\n    var layoutMode = this.layoutMode;\n\n    if (layoutMode) {\n      mergeLayoutParam(this.option, newSeriesOption, layoutMode);\n    }\n\n    prepareSource(this);\n    var data = this.getInitialData(newSeriesOption, ecModel);\n    wrapData(data, this);\n    this.dataTask.dirty();\n    this.dataTask.context.data = data;\n    inner(this).dataBeforeProcessed = data;\n    autoSeriesName(this);\n  },\n  fillDataTextStyle: function (data) {\n    // Default data label emphasis `show`\n    // FIXME Tree structure data ?\n    // FIXME Performance ?\n    if (data && !zrUtil.isTypedArray(data)) {\n      var props = ['show'];\n\n      for (var i = 0; i < data.length; i++) {\n        if (data[i] && data[i].label) {\n          modelUtil.defaultEmphasis(data[i], 'label', props);\n        }\n      }\n    }\n  },\n\n  /**\n   * Init a data structure from data related option in series\n   * Must be overwritten\n   */\n  getInitialData: function () {},\n\n  /**\n   * Append data to list\n   * @param {Object} params\n   * @param {Array|TypedArray} params.data\n   */\n  appendData: function (params) {\n    // FIXME ???\n    // (1) If data from dataset, forbidden append.\n    // (2) support append data of dataset.\n    var data = this.getRawData();\n    data.appendData(params.data);\n  },\n\n  /**\n   * Consider some method like `filter`, `map` need make new data,\n   * We should make sure that `seriesModel.getData()` get correct\n   * data in the stream procedure. So we fetch data from upstream\n   * each time `task.perform` called.\n   * @param {string} [dataType]\n   * @return {module:echarts/data/List}\n   */\n  getData: function (dataType) {\n    var task = getCurrentTask(this);\n\n    if (task) {\n      var data = task.context.data;\n      return dataType == null ? data : data.getLinkedData(dataType);\n    } else {\n      // When series is not alive (that may happen when click toolbox\n      // restore or setOption with not merge mode), series data may\n      // be still need to judge animation or something when graphic\n      // elements want to know whether fade out.\n      return inner(this).data;\n    }\n  },\n\n  /**\n   * @param {module:echarts/data/List} data\n   */\n  setData: function (data) {\n    var task = getCurrentTask(this);\n\n    if (task) {\n      var context = task.context; // Consider case: filter, data sample.\n\n      if (context.data !== data && task.modifyOutputEnd) {\n        task.setOutputEnd(data.count());\n      }\n\n      context.outputData = data; // Caution: setData should update context.data,\n      // Because getData may be called multiply in a\n      // single stage and expect to get the data just\n      // set. (For example, AxisProxy, x y both call\n      // getData and setDate sequentially).\n      // So the context.data should be fetched from\n      // upstream each time when a stage starts to be\n      // performed.\n\n      if (task !== this.dataTask) {\n        context.data = data;\n      }\n    }\n\n    inner(this).data = data;\n  },\n\n  /**\n   * @see {module:echarts/data/helper/sourceHelper#getSource}\n   * @return {module:echarts/data/Source} source\n   */\n  getSource: function () {\n    return getSource(this);\n  },\n\n  /**\n   * Get data before processed\n   * @return {module:echarts/data/List}\n   */\n  getRawData: function () {\n    return inner(this).dataBeforeProcessed;\n  },\n\n  /**\n   * Get base axis if has coordinate system and has axis.\n   * By default use coordSys.getBaseAxis();\n   * Can be overrided for some chart.\n   * @return {type} description\n   */\n  getBaseAxis: function () {\n    var coordSys = this.coordinateSystem;\n    return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\n  },\n  // FIXME\n\n  /**\n   * Default tooltip formatter\n   *\n   * @param {number} dataIndex\n   * @param {boolean} [multipleSeries=false]\n   * @param {number} [dataType]\n   * @param {string} [renderMode='html'] valid values: 'html' and 'richText'.\n   *                                     'html' is used for rendering tooltip in extra DOM form, and the result\n   *                                     string is used as DOM HTML content.\n   *                                     'richText' is used for rendering tooltip in rich text form, for those where\n   *                                     DOM operation is not supported.\n   * @return {Object} formatted tooltip with `html` and `markers`\n   */\n  formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n    var series = this;\n    renderMode = renderMode || 'html';\n    var newLine = renderMode === 'html' ? '<br/>' : '\\n';\n    var isRichText = renderMode === 'richText';\n    var markers = {};\n    var markerId = 0;\n\n    function formatArrayValue(value) {\n      // ??? TODO refactor these logic.\n      // check: category-no-encode-has-axis-data in dataset.html\n      var vertially = zrUtil.reduce(value, function (vertially, val, idx) {\n        var dimItem = data.getDimensionInfo(idx);\n        return vertially |= dimItem && dimItem.tooltip !== false && dimItem.displayName != null;\n      }, 0);\n      var result = [];\n      tooltipDims.length ? zrUtil.each(tooltipDims, function (dim) {\n        setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\n      }) // By default, all dims is used on tooltip.\n      : zrUtil.each(value, setEachItem);\n\n      function setEachItem(val, dim) {\n        var dimInfo = data.getDimensionInfo(dim); // If `dimInfo.tooltip` is not set, show tooltip.\n\n        if (!dimInfo || dimInfo.otherDims.tooltip === false) {\n          return;\n        }\n\n        var dimType = dimInfo.type;\n        var markName = 'sub' + series.seriesIndex + 'at' + markerId;\n        var dimHead = getTooltipMarker({\n          color: color,\n          type: 'subItem',\n          renderMode: renderMode,\n          markerId: markName\n        });\n        var dimHeadStr = typeof dimHead === 'string' ? dimHead : dimHead.content;\n        var valStr = (vertially ? dimHeadStr + encodeHTML(dimInfo.displayName || '-') + ': ' : '') + // FIXME should not format time for raw data?\n        encodeHTML(dimType === 'ordinal' ? val + '' : dimType === 'time' ? multipleSeries ? '' : formatTime('yyyy/MM/dd hh:mm:ss', val) : addCommas(val));\n        valStr && result.push(valStr);\n\n        if (isRichText) {\n          markers[markName] = color;\n          ++markerId;\n        }\n      }\n\n      var newLine = vertially ? isRichText ? '\\n' : '<br/>' : '';\n      var content = newLine + result.join(newLine || ', ');\n      return {\n        renderMode: renderMode,\n        content: content,\n        style: markers\n      };\n    }\n\n    function formatSingleValue(val) {\n      // return encodeHTML(addCommas(val));\n      return {\n        renderMode: renderMode,\n        content: encodeHTML(addCommas(val)),\n        style: markers\n      };\n    }\n\n    var data = this.getData();\n    var tooltipDims = data.mapDimension('defaultedTooltip', true);\n    var tooltipDimLen = tooltipDims.length;\n    var value = this.getRawValue(dataIndex);\n    var isValueArr = zrUtil.isArray(value);\n    var color = data.getItemVisual(dataIndex, 'color');\n\n    if (zrUtil.isObject(color) && color.colorStops) {\n      color = (color.colorStops[0] || {}).color;\n    }\n\n    color = color || 'transparent'; // Complicated rule for pretty tooltip.\n\n    var formattedValue = tooltipDimLen > 1 || isValueArr && !tooltipDimLen ? formatArrayValue(value) : tooltipDimLen ? formatSingleValue(retrieveRawValue(data, dataIndex, tooltipDims[0])) : formatSingleValue(isValueArr ? value[0] : value);\n    var content = formattedValue.content;\n    var markName = series.seriesIndex + 'at' + markerId;\n    var colorEl = getTooltipMarker({\n      color: color,\n      type: 'item',\n      renderMode: renderMode,\n      markerId: markName\n    });\n    markers[markName] = color;\n    ++markerId;\n    var name = data.getName(dataIndex);\n    var seriesName = this.name;\n\n    if (!modelUtil.isNameSpecified(this)) {\n      seriesName = '';\n    }\n\n    seriesName = seriesName ? encodeHTML(seriesName) + (!multipleSeries ? newLine : ': ') : '';\n    var colorStr = typeof colorEl === 'string' ? colorEl : colorEl.content;\n    var html = !multipleSeries ? seriesName + colorStr + (name ? encodeHTML(name) + ': ' + content : content) : colorStr + seriesName + content;\n    return {\n      html: html,\n      markers: markers\n    };\n  },\n\n  /**\n   * @return {boolean}\n   */\n  isAnimationEnabled: function () {\n    if (env.node) {\n      return false;\n    }\n\n    var animationEnabled = this.getShallow('animation');\n\n    if (animationEnabled) {\n      if (this.getData().count() > this.getShallow('animationThreshold')) {\n        animationEnabled = false;\n      }\n    }\n\n    return animationEnabled;\n  },\n  restoreData: function () {\n    this.dataTask.dirty();\n  },\n  getColorFromPalette: function (name, scope, requestColorNum) {\n    var ecModel = this.ecModel; // PENDING\n\n    var color = colorPaletteMixin.getColorFromPalette.call(this, name, scope, requestColorNum);\n\n    if (!color) {\n      color = ecModel.getColorFromPalette(name, scope, requestColorNum);\n    }\n\n    return color;\n  },\n\n  /**\n   * Use `data.mapDimension(coordDim, true)` instead.\n   * @deprecated\n   */\n  coordDimToDataDim: function (coordDim) {\n    return this.getRawData().mapDimension(coordDim, true);\n  },\n\n  /**\n   * Get progressive rendering count each step\n   * @return {number}\n   */\n  getProgressive: function () {\n    return this.get('progressive');\n  },\n\n  /**\n   * Get progressive rendering count each step\n   * @return {number}\n   */\n  getProgressiveThreshold: function () {\n    return this.get('progressiveThreshold');\n  },\n\n  /**\n   * Get data indices for show tooltip content. See tooltip.\n   * @abstract\n   * @param {Array.<string>|string} dim\n   * @param {Array.<number>} value\n   * @param {module:echarts/coord/single/SingleAxis} baseAxis\n   * @return {Object} {dataIndices, nestestValue}.\n   */\n  getAxisTooltipData: null,\n\n  /**\n   * See tooltip.\n   * @abstract\n   * @param {number} dataIndex\n   * @return {Array.<number>} Point of tooltip. null/undefined can be returned.\n   */\n  getTooltipPosition: null,\n\n  /**\n   * @see {module:echarts/stream/Scheduler}\n   */\n  pipeTask: null,\n\n  /**\n   * Convinient for override in extended class.\n   * @protected\n   * @type {Function}\n   */\n  preventIncremental: null,\n\n  /**\n   * @public\n   * @readOnly\n   * @type {Object}\n   */\n  pipelineContext: null\n});\nzrUtil.mixin(SeriesModel, dataFormatMixin);\nzrUtil.mixin(SeriesModel, colorPaletteMixin);\n/**\n * MUST be called after `prepareSource` called\n * Here we need to make auto series, especially for auto legend. But we\n * do not modify series.name in option to avoid side effects.\n */\n\nfunction autoSeriesName(seriesModel) {\n  // User specified name has higher priority, otherwise it may cause\n  // series can not be queried unexpectedly.\n  var name = seriesModel.name;\n\n  if (!modelUtil.isNameSpecified(seriesModel)) {\n    seriesModel.name = getSeriesAutoName(seriesModel) || name;\n  }\n}\n\nfunction getSeriesAutoName(seriesModel) {\n  var data = seriesModel.getRawData();\n  var dataDims = data.mapDimension('seriesName', true);\n  var nameArr = [];\n  zrUtil.each(dataDims, function (dataDim) {\n    var dimInfo = data.getDimensionInfo(dataDim);\n    dimInfo.displayName && nameArr.push(dimInfo.displayName);\n  });\n  return nameArr.join(' ');\n}\n\nfunction dataTaskCount(context) {\n  return context.model.getRawData().count();\n}\n\nfunction dataTaskReset(context) {\n  var seriesModel = context.model;\n  seriesModel.setData(seriesModel.getRawData().cloneShallow());\n  return dataTaskProgress;\n}\n\nfunction dataTaskProgress(param, context) {\n  // Avoid repead cloneShallow when data just created in reset.\n  if (context.outputData && param.end > context.outputData.count()) {\n    context.model.getRawData().cloneShallow(context.outputData);\n  }\n} // TODO refactor\n\n\nfunction wrapData(data, seriesModel) {\n  zrUtil.each(data.CHANGABLE_METHODS, function (methodName) {\n    data.wrapMethod(methodName, zrUtil.curry(onDataSelfChange, seriesModel));\n  });\n}\n\nfunction onDataSelfChange(seriesModel) {\n  var task = getCurrentTask(seriesModel);\n\n  if (task) {\n    // Consider case: filter, selectRange\n    task.setOutputEnd(this.count());\n  }\n}\n\nfunction getCurrentTask(seriesModel) {\n  var scheduler = (seriesModel.ecModel || {}).scheduler;\n  var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\n\n  if (pipeline) {\n    // When pipline finished, the currrentTask keep the last\n    // task (renderTask).\n    var task = pipeline.currentTask;\n\n    if (task) {\n      var agentStubMap = task.agentStubMap;\n\n      if (agentStubMap) {\n        task = agentStubMap.get(seriesModel.uid);\n      }\n    }\n\n    return task;\n  }\n}\n\nvar _default = SeriesModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return addEventListenerWrap; });\n/* harmony import */ var add_dom_event_listener__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(676);\n/* harmony import */ var add_dom_event_listener__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(add_dom_event_listener__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction addEventListenerWrap(target, eventType, cb, option) {\n  /* eslint camelcase: 2 */\n  var callback = react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.unstable_batchedUpdates ? function run(e) {\n    react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.unstable_batchedUpdates(cb, e);\n  } : cb;\n  return add_dom_event_listener__WEBPACK_IMPORTED_MODULE_0___default()(target, eventType, callback, option);\n}\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(43);\nvar tryToString = __webpack_require__(169);\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar trunc = __webpack_require__(471);\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\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar defineProperties = __webpack_require__(363).f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n  defineProperties: defineProperties\n});\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar defineProperty = __webpack_require__(48).f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n  defineProperty: defineProperty\n});\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar fails = __webpack_require__(16);\nvar toIndexedObject = __webpack_require__(92);\nvar nativeGetOwnPropertyDescriptor = __webpack_require__(85).f;\nvar DESCRIPTORS = __webpack_require__(30);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n    return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n  }\n});\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar ownKeys = __webpack_require__(360);\nvar toIndexedObject = __webpack_require__(92);\nvar getOwnPropertyDescriptorModule = __webpack_require__(85);\nvar createProperty = __webpack_require__(139);\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIndexedObject(object);\n    var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var index = 0;\n    var key, descriptor;\n    while (keys.length > index) {\n      descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n      if (descriptor !== undefined) createProperty(result, key, descriptor);\n    }\n    return result;\n  }\n});\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _from = __webpack_require__(1499);\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return (0, _from2.default)(arr);\n  }\n};\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(118);\nvar uncurryThis = __webpack_require__(20);\nvar IndexedObject = __webpack_require__(194);\nvar toObject = __webpack_require__(47);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar arraySpeciesCreate = __webpack_require__(234);\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 boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\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\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar call = __webpack_require__(38);\nvar propertyIsEnumerableModule = __webpack_require__(277);\nvar createPropertyDescriptor = __webpack_require__(112);\nvar toIndexedObject = __webpack_require__(92);\nvar toPropertyKey = __webpack_require__(147);\nvar hasOwn = __webpack_require__(44);\nvar IE8_DOM_DEFINE = __webpack_require__(467);\n\n// eslint-disable-next-line es-x/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\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ace_1 = __webpack_require__(1606);\nvar diff_1 = __webpack_require__(1607);\nexports.diff = diff_1.default;\nvar split_1 = __webpack_require__(669);\nexports.split = split_1.default;\nexports.default = ace_1.default;\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $map = __webpack_require__(84).map;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(239);\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\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar assign = __webpack_require__(505);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es-x/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\n});\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\n/**\n * 3x2矩阵操作类\n * @exports zrender/tool/matrix\n */\n\n/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * Create a identity matrix.\n * @return {Float32Array|Array.<number>}\n */\n\nfunction create() {\n  var out = new ArrayCtor(6);\n  identity(out);\n  return out;\n}\n/**\n * 设置矩阵为单位矩阵\n * @param {Float32Array|Array.<number>} out\n */\n\n\nfunction identity(out) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 1;\n  out[4] = 0;\n  out[5] = 0;\n  return out;\n}\n/**\n * 复制矩阵\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} m\n */\n\n\nfunction copy(out, m) {\n  out[0] = m[0];\n  out[1] = m[1];\n  out[2] = m[2];\n  out[3] = m[3];\n  out[4] = m[4];\n  out[5] = m[5];\n  return out;\n}\n/**\n * 矩阵相乘\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} m1\n * @param {Float32Array|Array.<number>} m2\n */\n\n\nfunction mul(out, m1, m2) {\n  // Consider matrix.mul(m, m2, m);\n  // where out is the same as m2.\n  // So use temp variable to escape error.\n  var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n  var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n  var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n  var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n  var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n  var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n  out[0] = out0;\n  out[1] = out1;\n  out[2] = out2;\n  out[3] = out3;\n  out[4] = out4;\n  out[5] = out5;\n  return out;\n}\n/**\n * 平移变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {Float32Array|Array.<number>} v\n */\n\n\nfunction translate(out, a, v) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4] + v[0];\n  out[5] = a[5] + v[1];\n  return out;\n}\n/**\n * 旋转变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {number} rad\n */\n\n\nfunction rotate(out, a, rad) {\n  var aa = a[0];\n  var ac = a[2];\n  var atx = a[4];\n  var ab = a[1];\n  var ad = a[3];\n  var aty = a[5];\n  var st = Math.sin(rad);\n  var ct = Math.cos(rad);\n  out[0] = aa * ct + ab * st;\n  out[1] = -aa * st + ab * ct;\n  out[2] = ac * ct + ad * st;\n  out[3] = -ac * st + ct * ad;\n  out[4] = ct * atx + st * aty;\n  out[5] = ct * aty - st * atx;\n  return out;\n}\n/**\n * 缩放变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {Float32Array|Array.<number>} v\n */\n\n\nfunction scale(out, a, v) {\n  var vx = v[0];\n  var vy = v[1];\n  out[0] = a[0] * vx;\n  out[1] = a[1] * vy;\n  out[2] = a[2] * vx;\n  out[3] = a[3] * vy;\n  out[4] = a[4] * vx;\n  out[5] = a[5] * vy;\n  return out;\n}\n/**\n * 求逆矩阵\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n */\n\n\nfunction invert(out, a) {\n  var aa = a[0];\n  var ac = a[2];\n  var atx = a[4];\n  var ab = a[1];\n  var ad = a[3];\n  var aty = a[5];\n  var det = aa * ad - ab * ac;\n\n  if (!det) {\n    return null;\n  }\n\n  det = 1.0 / det;\n  out[0] = ad * det;\n  out[1] = -ab * det;\n  out[2] = -ac * det;\n  out[3] = aa * det;\n  out[4] = (ac * aty - ad * atx) * det;\n  out[5] = (ab * atx - aa * aty) * det;\n  return out;\n}\n/**\n * Clone a new matrix.\n * @param {Float32Array|Array.<number>} a\n */\n\n\nfunction clone(a) {\n  var b = create();\n  copy(b, a);\n  return b;\n}\n\nexports.create = create;\nexports.identity = identity;\nexports.copy = copy;\nexports.mul = mul;\nexports.translate = translate;\nexports.rotate = rotate;\nexports.scale = scale;\nexports.invert = invert;\nexports.clone = clone;\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var now = __webpack_require__(1355)\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91)))\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(194);\nvar requireObjectCoercible = __webpack_require__(72);\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar definePropertyModule = __webpack_require__(48);\nvar createPropertyDescriptor = __webpack_require__(112);\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\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(474);\nvar hasOwn = __webpack_require__(44);\nvar wrappedWellKnownSymbolModule = __webpack_require__(473);\nvar defineProperty = __webpack_require__(48).f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar FUNCTION_NAME_EXISTS = __webpack_require__(198).EXISTS;\nvar uncurryThis = __webpack_require__(20);\nvar defineProperty = __webpack_require__(48).f;\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  defineProperty(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\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\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\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _required = __webpack_require__(647);\n\nvar _required2 = _interopRequireDefault(_required);\n\nvar _whitespace = __webpack_require__(1511);\n\nvar _whitespace2 = _interopRequireDefault(_whitespace);\n\nvar _type = __webpack_require__(1512);\n\nvar _type2 = _interopRequireDefault(_type);\n\nvar _range = __webpack_require__(1513);\n\nvar _range2 = _interopRequireDefault(_range);\n\nvar _enum = __webpack_require__(1514);\n\nvar _enum2 = _interopRequireDefault(_enum);\n\nvar _pattern = __webpack_require__(1515);\n\nvar _pattern2 = _interopRequireDefault(_pattern);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nexports['default'] = {\n  required: _required2['default'],\n  whitespace: _whitespace2['default'],\n  type: _type2['default'],\n  range: _range2['default'],\n  'enum': _enum2['default'],\n  pattern: _pattern2['default']\n};\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIntegerOrInfinity = __webpack_require__(78);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(35);\nvar definePropertiesModule = __webpack_require__(363);\nvar enumBugKeys = __webpack_require__(361);\nvar hiddenKeys = __webpack_require__(229);\nvar html = __webpack_require__(472);\nvar documentCreateElement = __webpack_require__(279);\nvar sharedKey = __webpack_require__(280);\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  activeXDocument = null; // avoid memory leak\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-x/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\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(48).f;\nvar hasOwn = __webpack_require__(44);\nvar wellKnownSymbol = __webpack_require__(41);\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\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar fill = __webpack_require__(369);\nvar addToUnscopables = __webpack_require__(119);\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\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\nvar requireObjectCoercible = __webpack_require__(72);\nvar toString = __webpack_require__(42);\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\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\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\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\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\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar BoundingRect = __webpack_require__(57);\n\nvar imageHelper = __webpack_require__(402);\n\nvar _util = __webpack_require__(2);\n\nvar getContext = _util.getContext;\nvar extend = _util.extend;\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar trim = _util.trim;\nvar textWidthCache = {};\nvar textWidthCacheCounter = 0;\nvar TEXT_CACHE_MAX = 5000;\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nvar DEFAULT_FONT = '12px sans-serif'; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n  methods[name] = fn;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {number} width\n */\n\n\nfunction getWidth(text, font) {\n  font = font || DEFAULT_FONT;\n  var key = text + ':' + font;\n\n  if (textWidthCache[key]) {\n    return textWidthCache[key];\n  }\n\n  var textLines = (text + '').split('\\n');\n  var width = 0;\n\n  for (var i = 0, l = textLines.length; i < l; i++) {\n    // textContain.measureText may be overrided in SVG or VML\n    width = Math.max(measureText(textLines[i], font).width, width);\n  }\n\n  if (textWidthCacheCounter > TEXT_CACHE_MAX) {\n    textWidthCacheCounter = 0;\n    textWidthCache = {};\n  }\n\n  textWidthCacheCounter++;\n  textWidthCache[key] = width;\n  return width;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {string} [textAlign='left']\n * @param {string} [textVerticalAlign='top']\n * @param {Array.<number>} [textPadding]\n * @param {Object} [rich]\n * @param {Object} [truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\n\nfunction getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) {\n  return rich ? getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) : getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, truncate);\n}\n\nfunction getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, truncate) {\n  var contentBlock = parsePlainText(text, font, textPadding, textLineHeight, truncate);\n  var outerWidth = getWidth(text, font);\n\n  if (textPadding) {\n    outerWidth += textPadding[1] + textPadding[3];\n  }\n\n  var outerHeight = contentBlock.outerHeight;\n  var x = adjustTextX(0, outerWidth, textAlign);\n  var y = adjustTextY(0, outerHeight, textVerticalAlign);\n  var rect = new BoundingRect(x, y, outerWidth, outerHeight);\n  rect.lineHeight = contentBlock.lineHeight;\n  return rect;\n}\n\nfunction getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) {\n  var contentBlock = parseRichText(text, {\n    rich: rich,\n    truncate: truncate,\n    font: font,\n    textAlign: textAlign,\n    textPadding: textPadding,\n    textLineHeight: textLineHeight\n  });\n  var outerWidth = contentBlock.outerWidth;\n  var outerHeight = contentBlock.outerHeight;\n  var x = adjustTextX(0, outerWidth, textAlign);\n  var y = adjustTextY(0, outerHeight, textVerticalAlign);\n  return new BoundingRect(x, y, outerWidth, outerHeight);\n}\n/**\n * @public\n * @param {number} x\n * @param {number} width\n * @param {string} [textAlign='left']\n * @return {number} Adjusted x.\n */\n\n\nfunction adjustTextX(x, width, textAlign) {\n  // FIXME Right to left language\n  if (textAlign === 'right') {\n    x -= width;\n  } else if (textAlign === 'center') {\n    x -= width / 2;\n  }\n\n  return x;\n}\n/**\n * @public\n * @param {number} y\n * @param {number} height\n * @param {string} [textVerticalAlign='top']\n * @return {number} Adjusted y.\n */\n\n\nfunction adjustTextY(y, height, textVerticalAlign) {\n  if (textVerticalAlign === 'middle') {\n    y -= height / 2;\n  } else if (textVerticalAlign === 'bottom') {\n    y -= height;\n  }\n\n  return y;\n}\n/**\n * Follow same interface to `Displayable.prototype.calculateTextPosition`.\n * @public\n * @param {Obejct} [out] Prepared out object. If not input, auto created in the method.\n * @param {module:zrender/graphic/Style} style where `textPosition` and `textDistance` are visited.\n * @param {Object} rect {x, y, width, height} Rect of the host elment, according to which the text positioned.\n * @return {Object} The input `out`. Set: {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction calculateTextPosition(out, style, rect) {\n  var textPosition = style.textPosition;\n  var distance = style.textDistance;\n  var x = rect.x;\n  var y = rect.y;\n  distance = distance || 0;\n  var height = rect.height;\n  var width = rect.width;\n  var halfHeight = height / 2;\n  var textAlign = 'left';\n  var textVerticalAlign = 'top';\n\n  switch (textPosition) {\n    case 'left':\n      x -= distance;\n      y += halfHeight;\n      textAlign = 'right';\n      textVerticalAlign = 'middle';\n      break;\n\n    case 'right':\n      x += distance + width;\n      y += halfHeight;\n      textVerticalAlign = 'middle';\n      break;\n\n    case 'top':\n      x += width / 2;\n      y -= distance;\n      textAlign = 'center';\n      textVerticalAlign = 'bottom';\n      break;\n\n    case 'bottom':\n      x += width / 2;\n      y += height + distance;\n      textAlign = 'center';\n      break;\n\n    case 'inside':\n      x += width / 2;\n      y += halfHeight;\n      textAlign = 'center';\n      textVerticalAlign = 'middle';\n      break;\n\n    case 'insideLeft':\n      x += distance;\n      y += halfHeight;\n      textVerticalAlign = 'middle';\n      break;\n\n    case 'insideRight':\n      x += width - distance;\n      y += halfHeight;\n      textAlign = 'right';\n      textVerticalAlign = 'middle';\n      break;\n\n    case 'insideTop':\n      x += width / 2;\n      y += distance;\n      textAlign = 'center';\n      break;\n\n    case 'insideBottom':\n      x += width / 2;\n      y += height - distance;\n      textAlign = 'center';\n      textVerticalAlign = 'bottom';\n      break;\n\n    case 'insideTopLeft':\n      x += distance;\n      y += distance;\n      break;\n\n    case 'insideTopRight':\n      x += width - distance;\n      y += distance;\n      textAlign = 'right';\n      break;\n\n    case 'insideBottomLeft':\n      x += distance;\n      y += height - distance;\n      textVerticalAlign = 'bottom';\n      break;\n\n    case 'insideBottomRight':\n      x += width - distance;\n      y += height - distance;\n      textAlign = 'right';\n      textVerticalAlign = 'bottom';\n      break;\n  }\n\n  out = out || {};\n  out.x = x;\n  out.y = y;\n  out.textAlign = textAlign;\n  out.textVerticalAlign = textVerticalAlign;\n  return out;\n}\n/**\n * To be removed. But still do not remove in case that some one has imported it.\n * @deprecated\n * @public\n * @param {stirng} textPosition\n * @param {Object} rect {x, y, width, height}\n * @param {number} distance\n * @return {Object} {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction adjustTextPositionOnRect(textPosition, rect, distance) {\n  var dummyStyle = {\n    textPosition: textPosition,\n    textDistance: distance\n  };\n  return calculateTextPosition({}, dummyStyle, rect);\n}\n/**\n * Show ellipsis if overflow.\n *\n * @public\n * @param  {string} text\n * @param  {string} containerWidth\n * @param  {string} font\n * @param  {number} [ellipsis='...']\n * @param  {Object} [options]\n * @param  {number} [options.maxIterations=3]\n * @param  {number} [options.minChar=0] If truncate result are less\n *                  then minChar, ellipsis will not show, which is\n *                  better for user hint in some cases.\n * @param  {number} [options.placeholder=''] When all truncated, use the placeholder.\n * @return {string}\n */\n\n\nfunction truncateText(text, containerWidth, font, ellipsis, options) {\n  if (!containerWidth) {\n    return '';\n  }\n\n  var textLines = (text + '').split('\\n');\n  options = prepareTruncateOptions(containerWidth, font, ellipsis, options); // FIXME\n  // It is not appropriate that every line has '...' when truncate multiple lines.\n\n  for (var i = 0, len = textLines.length; i < len; i++) {\n    textLines[i] = truncateSingleLine(textLines[i], options);\n  }\n\n  return textLines.join('\\n');\n}\n\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n  options = extend({}, options);\n  options.font = font;\n  var ellipsis = retrieve2(ellipsis, '...');\n  options.maxIterations = retrieve2(options.maxIterations, 2);\n  var minChar = options.minChar = retrieve2(options.minChar, 0); // FIXME\n  // Other languages?\n\n  options.cnCharWidth = getWidth('国', font); // FIXME\n  // Consider proportional font?\n\n  var ascCharWidth = options.ascCharWidth = getWidth('a', font);\n  options.placeholder = retrieve2(options.placeholder, ''); // Example 1: minChar: 3, text: 'asdfzxcv', truncate result: 'asdf', but not: 'a...'.\n  // Example 2: minChar: 3, text: '维度', truncate result: '维', but not: '...'.\n\n  var contentWidth = containerWidth = Math.max(0, containerWidth - 1); // Reserve some gap.\n\n  for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n    contentWidth -= ascCharWidth;\n  }\n\n  var ellipsisWidth = getWidth(ellipsis, font);\n\n  if (ellipsisWidth > contentWidth) {\n    ellipsis = '';\n    ellipsisWidth = 0;\n  }\n\n  contentWidth = containerWidth - ellipsisWidth;\n  options.ellipsis = ellipsis;\n  options.ellipsisWidth = ellipsisWidth;\n  options.contentWidth = contentWidth;\n  options.containerWidth = containerWidth;\n  return options;\n}\n\nfunction truncateSingleLine(textLine, options) {\n  var containerWidth = options.containerWidth;\n  var font = options.font;\n  var contentWidth = options.contentWidth;\n\n  if (!containerWidth) {\n    return '';\n  }\n\n  var lineWidth = getWidth(textLine, font);\n\n  if (lineWidth <= containerWidth) {\n    return textLine;\n  }\n\n  for (var j = 0;; j++) {\n    if (lineWidth <= contentWidth || j >= options.maxIterations) {\n      textLine += options.ellipsis;\n      break;\n    }\n\n    var subLength = j === 0 ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0;\n    textLine = textLine.substr(0, subLength);\n    lineWidth = getWidth(textLine, font);\n  }\n\n  if (textLine === '') {\n    textLine = options.placeholder;\n  }\n\n  return textLine;\n}\n\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\n  var width = 0;\n  var i = 0;\n\n  for (var len = text.length; i < len && width < contentWidth; i++) {\n    var charCode = text.charCodeAt(i);\n    width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth;\n  }\n\n  return i;\n}\n/**\n * @public\n * @param {string} font\n * @return {number} line height\n */\n\n\nfunction getLineHeight(font) {\n  // FIXME A rough approach.\n  return getWidth('国', font);\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {Object} width\n */\n\n\nfunction measureText(text, font) {\n  return methods.measureText(text, font);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nmethods.measureText = function (text, font) {\n  var ctx = getContext();\n  ctx.font = font || DEFAULT_FONT;\n  return ctx.measureText(text);\n};\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {Object} [truncate]\n * @return {Object} block: {lineHeight, lines, height, outerHeight, canCacheByTextString}\n *  Notice: for performance, do not calculate outerWidth util needed.\n *  `canCacheByTextString` means the result `lines` is only determined by the input `text`.\n *  Thus we can simply comparing the `input` text to determin whether the result changed,\n *  without travel the result `lines`.\n */\n\n\nfunction parsePlainText(text, font, padding, textLineHeight, truncate) {\n  text != null && (text += '');\n  var lineHeight = retrieve2(textLineHeight, getLineHeight(font));\n  var lines = text ? text.split('\\n') : [];\n  var height = lines.length * lineHeight;\n  var outerHeight = height;\n  var canCacheByTextString = true;\n\n  if (padding) {\n    outerHeight += padding[0] + padding[2];\n  }\n\n  if (text && truncate) {\n    canCacheByTextString = false;\n    var truncOuterHeight = truncate.outerHeight;\n    var truncOuterWidth = truncate.outerWidth;\n\n    if (truncOuterHeight != null && outerHeight > truncOuterHeight) {\n      text = '';\n      lines = [];\n    } else if (truncOuterWidth != null) {\n      var options = prepareTruncateOptions(truncOuterWidth - (padding ? padding[1] + padding[3] : 0), font, truncate.ellipsis, {\n        minChar: truncate.minChar,\n        placeholder: truncate.placeholder\n      }); // FIXME\n      // It is not appropriate that every line has '...' when truncate multiple lines.\n\n      for (var i = 0, len = lines.length; i < len; i++) {\n        lines[i] = truncateSingleLine(lines[i], options);\n      }\n    }\n  }\n\n  return {\n    lines: lines,\n    height: height,\n    outerHeight: outerHeight,\n    lineHeight: lineHeight,\n    canCacheByTextString: canCacheByTextString\n  };\n}\n/**\n * For example: 'some text {a|some text}other text{b|some text}xxx{c|}xxx'\n * Also consider 'bbbb{a|xxx\\nzzz}xxxx\\naaaa'.\n *\n * @public\n * @param {string} text\n * @param {Object} style\n * @return {Object} block\n * {\n *      width,\n *      height,\n *      lines: [{\n *          lineHeight,\n *          width,\n *          tokens: [[{\n *              styleName,\n *              text,\n *              width,      // include textPadding\n *              height,     // include textPadding\n *              textWidth, // pure text width\n *              textHeight, // pure text height\n *              lineHeihgt,\n *              font,\n *              textAlign,\n *              textVerticalAlign\n *          }], [...], ...]\n *      }, ...]\n * }\n * If styleName is undefined, it is plain text.\n */\n\n\nfunction parseRichText(text, style) {\n  var contentBlock = {\n    lines: [],\n    width: 0,\n    height: 0\n  };\n  text != null && (text += '');\n\n  if (!text) {\n    return contentBlock;\n  }\n\n  var lastIndex = STYLE_REG.lastIndex = 0;\n  var result;\n\n  while ((result = STYLE_REG.exec(text)) != null) {\n    var matchedIndex = result.index;\n\n    if (matchedIndex > lastIndex) {\n      pushTokens(contentBlock, text.substring(lastIndex, matchedIndex));\n    }\n\n    pushTokens(contentBlock, result[2], result[1]);\n    lastIndex = STYLE_REG.lastIndex;\n  }\n\n  if (lastIndex < text.length) {\n    pushTokens(contentBlock, text.substring(lastIndex, text.length));\n  }\n\n  var lines = contentBlock.lines;\n  var contentHeight = 0;\n  var contentWidth = 0; // For `textWidth: 100%`\n\n  var pendingList = [];\n  var stlPadding = style.textPadding;\n  var truncate = style.truncate;\n  var truncateWidth = truncate && truncate.outerWidth;\n  var truncateHeight = truncate && truncate.outerHeight;\n\n  if (stlPadding) {\n    truncateWidth != null && (truncateWidth -= stlPadding[1] + stlPadding[3]);\n    truncateHeight != null && (truncateHeight -= stlPadding[0] + stlPadding[2]);\n  } // Calculate layout info of tokens.\n\n\n  for (var i = 0; i < lines.length; i++) {\n    var line = lines[i];\n    var lineHeight = 0;\n    var lineWidth = 0;\n\n    for (var j = 0; j < line.tokens.length; j++) {\n      var token = line.tokens[j];\n      var tokenStyle = token.styleName && style.rich[token.styleName] || {}; // textPadding should not inherit from style.\n\n      var textPadding = token.textPadding = tokenStyle.textPadding; // textFont has been asigned to font by `normalizeStyle`.\n\n      var font = token.font = tokenStyle.font || style.font; // textHeight can be used when textVerticalAlign is specified in token.\n\n      var tokenHeight = token.textHeight = retrieve2( // textHeight should not be inherited, consider it can be specified\n      // as box height of the block.\n      tokenStyle.textHeight, getLineHeight(font));\n      textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n      token.height = tokenHeight;\n      token.lineHeight = retrieve3(tokenStyle.textLineHeight, style.textLineHeight, tokenHeight);\n      token.textAlign = tokenStyle && tokenStyle.textAlign || style.textAlign;\n      token.textVerticalAlign = tokenStyle && tokenStyle.textVerticalAlign || 'middle';\n\n      if (truncateHeight != null && contentHeight + token.lineHeight > truncateHeight) {\n        return {\n          lines: [],\n          width: 0,\n          height: 0\n        };\n      }\n\n      token.textWidth = getWidth(token.text, font);\n      var tokenWidth = tokenStyle.textWidth;\n      var tokenWidthNotSpecified = tokenWidth == null || tokenWidth === 'auto'; // Percent width, can be `100%`, can be used in drawing separate\n      // line when box width is needed to be auto.\n\n      if (typeof tokenWidth === 'string' && tokenWidth.charAt(tokenWidth.length - 1) === '%') {\n        token.percentWidth = tokenWidth;\n        pendingList.push(token);\n        tokenWidth = 0; // Do not truncate in this case, because there is no user case\n        // and it is too complicated.\n      } else {\n        if (tokenWidthNotSpecified) {\n          tokenWidth = token.textWidth; // FIXME: If image is not loaded and textWidth is not specified, calling\n          // `getBoundingRect()` will not get correct result.\n\n          var textBackgroundColor = tokenStyle.textBackgroundColor;\n          var bgImg = textBackgroundColor && textBackgroundColor.image; // Use cases:\n          // (1) If image is not loaded, it will be loaded at render phase and call\n          // `dirty()` and `textBackgroundColor.image` will be replaced with the loaded\n          // image, and then the right size will be calculated here at the next tick.\n          // See `graphic/helper/text.js`.\n          // (2) If image loaded, and `textBackgroundColor.image` is image src string,\n          // use `imageHelper.findExistImage` to find cached image.\n          // `imageHelper.findExistImage` will always be called here before\n          // `imageHelper.createOrUpdateImage` in `graphic/helper/text.js#renderRichText`\n          // which ensures that image will not be rendered before correct size calcualted.\n\n          if (bgImg) {\n            bgImg = imageHelper.findExistImage(bgImg);\n\n            if (imageHelper.isImageReady(bgImg)) {\n              tokenWidth = Math.max(tokenWidth, bgImg.width * tokenHeight / bgImg.height);\n            }\n          }\n        }\n\n        var paddingW = textPadding ? textPadding[1] + textPadding[3] : 0;\n        tokenWidth += paddingW;\n        var remianTruncWidth = truncateWidth != null ? truncateWidth - lineWidth : null;\n\n        if (remianTruncWidth != null && remianTruncWidth < tokenWidth) {\n          if (!tokenWidthNotSpecified || remianTruncWidth < paddingW) {\n            token.text = '';\n            token.textWidth = tokenWidth = 0;\n          } else {\n            token.text = truncateText(token.text, remianTruncWidth - paddingW, font, truncate.ellipsis, {\n              minChar: truncate.minChar\n            });\n            token.textWidth = getWidth(token.text, font);\n            tokenWidth = token.textWidth + paddingW;\n          }\n        }\n      }\n\n      lineWidth += token.width = tokenWidth;\n      tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n    }\n\n    line.width = lineWidth;\n    line.lineHeight = lineHeight;\n    contentHeight += lineHeight;\n    contentWidth = Math.max(contentWidth, lineWidth);\n  }\n\n  contentBlock.outerWidth = contentBlock.width = retrieve2(style.textWidth, contentWidth);\n  contentBlock.outerHeight = contentBlock.height = retrieve2(style.textHeight, contentHeight);\n\n  if (stlPadding) {\n    contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\n    contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\n  }\n\n  for (var i = 0; i < pendingList.length; i++) {\n    var token = pendingList[i];\n    var percentWidth = token.percentWidth; // Should not base on outerWidth, because token can not be placed out of padding.\n\n    token.width = parseInt(percentWidth, 10) / 100 * contentWidth;\n  }\n\n  return contentBlock;\n}\n\nfunction pushTokens(block, str, styleName) {\n  var isEmptyStr = str === '';\n  var strs = str.split('\\n');\n  var lines = block.lines;\n\n  for (var i = 0; i < strs.length; i++) {\n    var text = strs[i];\n    var token = {\n      styleName: styleName,\n      text: text,\n      isLineHolder: !text && !isEmptyStr\n    }; // The first token should be appended to the last line.\n\n    if (!i) {\n      var tokens = (lines[lines.length - 1] || (lines[0] = {\n        tokens: []\n      })).tokens; // Consider cases:\n      // (1) ''.split('\\n') => ['', '\\n', ''], the '' at the first item\n      // (which is a placeholder) should be replaced by new token.\n      // (2) A image backage, where token likes {a|}.\n      // (3) A redundant '' will affect textAlign in line.\n      // (4) tokens with the same tplName should not be merged, because\n      // they should be displayed in different box (with border and padding).\n\n      var tokensLen = tokens.length;\n      tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token : // Consider text is '', only insert when it is the \"lineHolder\" or\n      // \"emptyStr\". Otherwise a redundant '' will affect textAlign in line.\n      (text || !tokensLen || isEmptyStr) && tokens.push(token);\n    } // Other tokens always start a new line.\n    else {\n        // If there is '', insert it as a placeholder.\n        lines.push({\n          tokens: [token]\n        });\n      }\n  }\n}\n\nfunction makeFont(style) {\n  // FIXME in node-canvas fontWeight is before fontStyle\n  // Use `fontSize` `fontFamily` to check whether font properties are defined.\n  var font = (style.fontSize || style.fontFamily) && [style.fontStyle, style.fontWeight, (style.fontSize || 12) + 'px', // If font properties are defined, `fontFamily` should not be ignored.\n  style.fontFamily || 'sans-serif'].join(' ');\n  return font && trim(font) || style.textFont || style.font;\n}\n\nexports.DEFAULT_FONT = DEFAULT_FONT;\nexports.$override = $override;\nexports.getWidth = getWidth;\nexports.getBoundingRect = getBoundingRect;\nexports.adjustTextX = adjustTextX;\nexports.adjustTextY = adjustTextY;\nexports.calculateTextPosition = calculateTextPosition;\nexports.adjustTextPositionOnRect = adjustTextPositionOnRect;\nexports.truncateText = truncateText;\nexports.getLineHeight = getLineHeight;\nexports.measureText = measureText;\nexports.parsePlainText = parsePlainText;\nexports.parseRichText = parseRichText;\nexports.makeFont = makeFont;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports) {\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseSet = __webpack_require__(1530);\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\nmodule.exports = set;\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_BIND = __webpack_require__(228);\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hasOwn = __webpack_require__(44);\nvar isCallable = __webpack_require__(43);\nvar toObject = __webpack_require__(47);\nvar sharedKey = __webpack_require__(280);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(367);\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-x/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\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\nvar Model = __webpack_require__(67);\n\nvar DataDiffer = __webpack_require__(180);\n\nvar Source = __webpack_require__(257);\n\nvar _dataProvider = __webpack_require__(179);\n\nvar defaultDimValueGetters = _dataProvider.defaultDimValueGetters;\nvar DefaultDataProvider = _dataProvider.DefaultDataProvider;\n\nvar _dimensionHelper = __webpack_require__(259);\n\nvar summarizeDimensions = _dimensionHelper.summarizeDimensions;\n\nvar DataDimensionInfo = __webpack_require__(573);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float64Array, Int32Array, Uint32Array, Uint16Array */\n\n/**\n * List for data storage\n * @module echarts/data/List\n */\nvar isObject = zrUtil.isObject;\nvar UNDEFINED = 'undefined';\nvar INDEX_NOT_FOUND = -1; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird udpate animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar dataCtors = {\n  'float': typeof Float64Array === UNDEFINED ? Array : Float64Array,\n  'int': typeof Int32Array === UNDEFINED ? Array : Int32Array,\n  // Ordinal data type can be string or int\n  'ordinal': Array,\n  'number': Array,\n  'time': Array\n}; // Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is\n// different from the Ctor of typed array.\n\nvar CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\nvar CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\nvar CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\n\nfunction getIndicesCtor(list) {\n  // The possible max value in this._indicies is always this._rawCount despite of filtering.\n  return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\n}\n\nfunction cloneChunk(originalChunk) {\n  var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.\n\n  return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);\n}\n\nvar TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_rawData', '_chunkSize', '_chunkCount', '_dimValueGetter', '_count', '_rawCount', '_nameDimIdx', '_idDimIdx'];\nvar CLONE_PROPERTIES = ['_extent', '_approximateExtent', '_rawExtent'];\n\nfunction transferProperties(target, source) {\n  zrUtil.each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\n    if (source.hasOwnProperty(propName)) {\n      target[propName] = source[propName];\n    }\n  });\n  target.__wrappedMethods = source.__wrappedMethods;\n  zrUtil.each(CLONE_PROPERTIES, function (propName) {\n    target[propName] = zrUtil.clone(source[propName]);\n  });\n  target._calculationInfo = zrUtil.extend(source._calculationInfo);\n}\n/**\n * @constructor\n * @alias module:echarts/data/List\n *\n * @param {Array.<string|Object|module:data/DataDimensionInfo>} dimensions\n *      For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\n *      Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\n * @param {module:echarts/model/Model} hostModel\n */\n\n\nvar List = function (dimensions, hostModel) {\n  dimensions = dimensions || ['x', 'y'];\n  var dimensionInfos = {};\n  var dimensionNames = [];\n  var invertedIndicesMap = {};\n\n  for (var i = 0; i < dimensions.length; i++) {\n    // Use the original dimensions[i], where other flag props may exists.\n    var dimensionInfo = dimensions[i];\n\n    if (zrUtil.isString(dimensionInfo)) {\n      dimensionInfo = new DataDimensionInfo({\n        name: dimensionInfo\n      });\n    } else if (!(dimensionInfo instanceof DataDimensionInfo)) {\n      dimensionInfo = new DataDimensionInfo(dimensionInfo);\n    }\n\n    var dimensionName = dimensionInfo.name;\n    dimensionInfo.type = dimensionInfo.type || 'float';\n\n    if (!dimensionInfo.coordDim) {\n      dimensionInfo.coordDim = dimensionName;\n      dimensionInfo.coordDimIndex = 0;\n    }\n\n    dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n    dimensionNames.push(dimensionName);\n    dimensionInfos[dimensionName] = dimensionInfo;\n    dimensionInfo.index = i;\n\n    if (dimensionInfo.createInvertedIndices) {\n      invertedIndicesMap[dimensionName] = [];\n    }\n  }\n  /**\n   * @readOnly\n   * @type {Array.<string>}\n   */\n\n\n  this.dimensions = dimensionNames;\n  /**\n   * Infomation of each data dimension, like data type.\n   * @type {Object}\n   */\n\n  this._dimensionInfos = dimensionInfos;\n  /**\n   * @type {module:echarts/model/Model}\n   */\n\n  this.hostModel = hostModel;\n  /**\n   * @type {module:echarts/model/Model}\n   */\n\n  this.dataType;\n  /**\n   * Indices stores the indices of data subset after filtered.\n   * This data subset will be used in chart.\n   * @type {Array.<number>}\n   * @readOnly\n   */\n\n  this._indices = null;\n  this._count = 0;\n  this._rawCount = 0;\n  /**\n   * Data storage\n   * @type {Object.<key, Array.<TypedArray|Array>>}\n   * @private\n   */\n\n  this._storage = {};\n  /**\n   * @type {Array.<string>}\n   */\n\n  this._nameList = [];\n  /**\n   * @type {Array.<string>}\n   */\n\n  this._idList = [];\n  /**\n   * Models of data option is stored sparse for optimizing memory cost\n   * @type {Array.<module:echarts/model/Model>}\n   * @private\n   */\n\n  this._optionModels = [];\n  /**\n   * Global visual properties after visual coding\n   * @type {Object}\n   * @private\n   */\n\n  this._visual = {};\n  /**\n   * Globel layout properties.\n   * @type {Object}\n   * @private\n   */\n\n  this._layout = {};\n  /**\n   * Item visual properties after visual coding\n   * @type {Array.<Object>}\n   * @private\n   */\n\n  this._itemVisuals = [];\n  /**\n   * Key: visual type, Value: boolean\n   * @type {Object}\n   * @readOnly\n   */\n\n  this.hasItemVisual = {};\n  /**\n   * Item layout properties after layout\n   * @type {Array.<Object>}\n   * @private\n   */\n\n  this._itemLayouts = [];\n  /**\n   * Graphic elemnents\n   * @type {Array.<module:zrender/Element>}\n   * @private\n   */\n\n  this._graphicEls = [];\n  /**\n   * Max size of each chunk.\n   * @type {number}\n   * @private\n   */\n\n  this._chunkSize = 1e5;\n  /**\n   * @type {number}\n   * @private\n   */\n\n  this._chunkCount = 0;\n  /**\n   * @type {Array.<Array|Object>}\n   * @private\n   */\n\n  this._rawData;\n  /**\n   * Raw extent will not be cloned, but only transfered.\n   * It will not be calculated util needed.\n   * key: dim,\n   * value: {end: number, extent: Array.<number>}\n   * @type {Object}\n   * @private\n   */\n\n  this._rawExtent = {};\n  /**\n   * @type {Object}\n   * @private\n   */\n\n  this._extent = {};\n  /**\n   * key: dim\n   * value: extent\n   * @type {Object}\n   * @private\n   */\n\n  this._approximateExtent = {};\n  /**\n   * Cache summary info for fast visit. See \"dimensionHelper\".\n   * @type {Object}\n   * @private\n   */\n\n  this._dimensionsSummary = summarizeDimensions(this);\n  /**\n   * @type {Object.<Array|TypedArray>}\n   * @private\n   */\n\n  this._invertedIndicesMap = invertedIndicesMap;\n  /**\n   * @type {Object}\n   * @private\n   */\n\n  this._calculationInfo = {};\n  /**\n   * User output info of this data.\n   * DO NOT use it in other places!\n   *\n   * When preparing user params for user callbacks, we have\n   * to clone these inner data structures to prevent users\n   * from modifying them to effect built-in logic. And for\n   * performance consideration we make this `userOutput` to\n   * avoid clone them too many times.\n   *\n   * @type {Object}\n   * @readOnly\n   */\n\n  this.userOutput = this._dimensionsSummary.userOutput;\n};\n\nvar listProto = List.prototype;\nlistProto.type = 'list';\n/**\n * If each data item has it's own option\n * @type {boolean}\n */\n\nlistProto.hasItemOption = true;\n/**\n * The meanings of the input parameter `dim`:\n *\n * + If dim is a number (e.g., `1`), it means the index of the dimension.\n *   For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'.\n * + If dim is a number-like string (e.g., `\"1\"`):\n *     + If there is the same concrete dim name defined in `this.dimensions`, it means that concrete name.\n *     + If not, it will be converted to a number, which means the index of the dimension.\n *        (why? because of the backward compatbility. We have been tolerating number-like string in\n *        dimension setting, although now it seems that it is not a good idea.)\n *     For example, `visualMap[i].dimension: \"1\"` is the same meaning as `visualMap[i].dimension: 1`,\n *     if no dimension name is defined as `\"1\"`.\n * + If dim is a not-number-like string, it means the concrete dim name.\n *   For example, it can be be default name `\"x\"`, `\"y\"`, `\"z\"`, `\"lng\"`, `\"lat\"`, `\"angle\"`, `\"radius\"`,\n *   or customized in `dimensions` property of option like `\"age\"`.\n *\n * Get dimension name\n * @param {string|number} dim See above.\n * @return {string} Concrete dim name.\n */\n\nlistProto.getDimension = function (dim) {\n  if (typeof dim === 'number' // If being a number-like string but not being defined a dimension name.\n  || !isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim)) {\n    dim = this.dimensions[dim];\n  }\n\n  return dim;\n};\n/**\n * Get type and calculation info of particular dimension\n * @param {string|number} dim\n *        Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n *        Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n */\n\n\nlistProto.getDimensionInfo = function (dim) {\n  // Do not clone, because there may be categories in dimInfo.\n  return this._dimensionInfos[this.getDimension(dim)];\n};\n/**\n * @return {Array.<string>} concrete dimension name list on coord.\n */\n\n\nlistProto.getDimensionsOnCoord = function () {\n  return this._dimensionsSummary.dataDimsOnCoord.slice();\n};\n/**\n * @param {string} coordDim\n * @param {number} [idx] A coordDim may map to more than one data dim.\n *        If idx is `true`, return a array of all mapped dims.\n *        If idx is not specified, return the first dim not extra.\n * @return {string|Array.<string>} concrete data dim.\n *        If idx is number, and not found, return null/undefined.\n *        If idx is `true`, and not found, return empty array (always return array).\n */\n\n\nlistProto.mapDimension = function (coordDim, idx) {\n  var dimensionsSummary = this._dimensionsSummary;\n\n  if (idx == null) {\n    return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\n  }\n\n  var dims = dimensionsSummary.encode[coordDim];\n  return idx === true // always return array if idx is `true`\n  ? (dims || []).slice() : dims && dims[idx];\n};\n/**\n * Initialize from data\n * @param {Array.<Object|number|Array>} data source or data or data provider.\n * @param {Array.<string>} [nameLIst] The name of a datum is used on data diff and\n *        default label/tooltip.\n *        A name can be specified in encode.itemName,\n *        or dataItem.name (only for series option data),\n *        or provided in nameList from outside.\n * @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number\n */\n\n\nlistProto.initData = function (data, nameList, dimValueGetter) {\n  var notProvider = Source.isInstance(data) || zrUtil.isArrayLike(data);\n\n  if (notProvider) {\n    data = new DefaultDataProvider(data, this.dimensions.length);\n  }\n\n  this._rawData = data; // Clear\n\n  this._storage = {};\n  this._indices = null;\n  this._nameList = nameList || [];\n  this._idList = [];\n  this._nameRepeatCount = {};\n\n  if (!dimValueGetter) {\n    this.hasItemOption = false;\n  }\n  /**\n   * @readOnly\n   */\n\n\n  this.defaultDimValueGetter = defaultDimValueGetters[this._rawData.getSource().sourceFormat]; // Default dim value getter\n\n  this._dimValueGetter = dimValueGetter = dimValueGetter || this.defaultDimValueGetter;\n  this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows; // Reset raw extent.\n\n  this._rawExtent = {};\n\n  this._initDataFromProvider(0, data.count()); // If data has no item option.\n\n\n  if (data.pure) {\n    this.hasItemOption = false;\n  }\n};\n\nlistProto.getProvider = function () {\n  return this._rawData;\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n */\n\n\nlistProto.appendData = function (data) {\n  var rawData = this._rawData;\n  var start = this.count();\n  rawData.appendData(data);\n  var end = rawData.count();\n\n  if (!rawData.persistent) {\n    end += start;\n  }\n\n  this._initDataFromProvider(start, end);\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n * This method does not modify `rawData` (`dataProvider`), but only\n * add values to storage.\n *\n * The final count will be increased by `Math.max(values.length, names.length)`.\n *\n * @param {Array.<Array.<*>>} values That is the SourceType: 'arrayRows', like\n *        [\n *            [12, 33, 44],\n *            [NaN, 43, 1],\n *            ['-', 'asdf', 0]\n *        ]\n *        Each item is exaclty cooresponding to a dimension.\n * @param {Array.<string>} [names]\n */\n\n\nlistProto.appendValues = function (values, names) {\n  var chunkSize = this._chunkSize;\n  var storage = this._storage;\n  var dimensions = this.dimensions;\n  var dimLen = dimensions.length;\n  var rawExtent = this._rawExtent;\n  var start = this.count();\n  var end = start + Math.max(values.length, names ? names.length : 0);\n  var originalChunkCount = this._chunkCount;\n\n  for (var i = 0; i < dimLen; i++) {\n    var dim = dimensions[i];\n\n    if (!rawExtent[dim]) {\n      rawExtent[dim] = getInitialExtent();\n    }\n\n    if (!storage[dim]) {\n      storage[dim] = [];\n    }\n\n    prepareChunks(storage, this._dimensionInfos[dim], chunkSize, originalChunkCount, end);\n    this._chunkCount = storage[dim].length;\n  }\n\n  var emptyDataItem = new Array(dimLen);\n\n  for (var idx = start; idx < end; idx++) {\n    var sourceIdx = idx - start;\n    var chunkIndex = Math.floor(idx / chunkSize);\n    var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n    for (var k = 0; k < dimLen; k++) {\n      var dim = dimensions[k];\n\n      var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, k);\n\n      storage[dim][chunkIndex][chunkOffset] = val;\n      var dimRawExtent = rawExtent[dim];\n      val < dimRawExtent[0] && (dimRawExtent[0] = val);\n      val > dimRawExtent[1] && (dimRawExtent[1] = val);\n    }\n\n    if (names) {\n      this._nameList[idx] = names[sourceIdx];\n    }\n  }\n\n  this._rawCount = this._count = end; // Reset data extent\n\n  this._extent = {};\n  prepareInvertedIndex(this);\n};\n\nlistProto._initDataFromProvider = function (start, end) {\n  // Optimize.\n  if (start >= end) {\n    return;\n  }\n\n  var chunkSize = this._chunkSize;\n  var rawData = this._rawData;\n  var storage = this._storage;\n  var dimensions = this.dimensions;\n  var dimLen = dimensions.length;\n  var dimensionInfoMap = this._dimensionInfos;\n  var nameList = this._nameList;\n  var idList = this._idList;\n  var rawExtent = this._rawExtent;\n  var nameRepeatCount = this._nameRepeatCount = {};\n  var nameDimIdx;\n  var originalChunkCount = this._chunkCount;\n\n  for (var i = 0; i < dimLen; i++) {\n    var dim = dimensions[i];\n\n    if (!rawExtent[dim]) {\n      rawExtent[dim] = getInitialExtent();\n    }\n\n    var dimInfo = dimensionInfoMap[dim];\n\n    if (dimInfo.otherDims.itemName === 0) {\n      nameDimIdx = this._nameDimIdx = i;\n    }\n\n    if (dimInfo.otherDims.itemId === 0) {\n      this._idDimIdx = i;\n    }\n\n    if (!storage[dim]) {\n      storage[dim] = [];\n    }\n\n    prepareChunks(storage, dimInfo, chunkSize, originalChunkCount, end);\n    this._chunkCount = storage[dim].length;\n  }\n\n  var dataItem = new Array(dimLen);\n\n  for (var idx = start; idx < end; idx++) {\n    // NOTICE: Try not to write things into dataItem\n    dataItem = rawData.getItem(idx, dataItem); // Each data item is value\n    // [1, 2]\n    // 2\n    // Bar chart, line chart which uses category axis\n    // only gives the 'y' value. 'x' value is the indices of category\n    // Use a tempValue to normalize the value to be a (x, y) value\n\n    var chunkIndex = Math.floor(idx / chunkSize);\n    var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n    for (var k = 0; k < dimLen; k++) {\n      var dim = dimensions[k];\n      var dimStorage = storage[dim][chunkIndex]; // PENDING NULL is empty or zero\n\n      var val = this._dimValueGetter(dataItem, dim, idx, k);\n\n      dimStorage[chunkOffset] = val;\n      var dimRawExtent = rawExtent[dim];\n      val < dimRawExtent[0] && (dimRawExtent[0] = val);\n      val > dimRawExtent[1] && (dimRawExtent[1] = val);\n    } // ??? FIXME not check by pure but sourceFormat?\n    // TODO refactor these logic.\n\n\n    if (!rawData.pure) {\n      var name = nameList[idx];\n\n      if (dataItem && name == null) {\n        // If dataItem is {name: ...}, it has highest priority.\n        // That is appropriate for many common cases.\n        if (dataItem.name != null) {\n          // There is no other place to persistent dataItem.name,\n          // so save it to nameList.\n          nameList[idx] = name = dataItem.name;\n        } else if (nameDimIdx != null) {\n          var nameDim = dimensions[nameDimIdx];\n          var nameDimChunk = storage[nameDim][chunkIndex];\n\n          if (nameDimChunk) {\n            name = nameDimChunk[chunkOffset];\n            var ordinalMeta = dimensionInfoMap[nameDim].ordinalMeta;\n\n            if (ordinalMeta && ordinalMeta.categories.length) {\n              name = ordinalMeta.categories[name];\n            }\n          }\n        }\n      } // Try using the id in option\n      // id or name is used on dynamical data, mapping old and new items.\n\n\n      var id = dataItem == null ? null : dataItem.id;\n\n      if (id == null && name != null) {\n        // Use name as id and add counter to avoid same name\n        nameRepeatCount[name] = nameRepeatCount[name] || 0;\n        id = name;\n\n        if (nameRepeatCount[name] > 0) {\n          id += '__ec__' + nameRepeatCount[name];\n        }\n\n        nameRepeatCount[name]++;\n      }\n\n      id != null && (idList[idx] = id);\n    }\n  }\n\n  if (!rawData.persistent && rawData.clean) {\n    // Clean unused data if data source is typed array.\n    rawData.clean();\n  }\n\n  this._rawCount = this._count = end; // Reset data extent\n\n  this._extent = {};\n  prepareInvertedIndex(this);\n};\n\nfunction prepareChunks(storage, dimInfo, chunkSize, chunkCount, end) {\n  var DataCtor = dataCtors[dimInfo.type];\n  var lastChunkIndex = chunkCount - 1;\n  var dim = dimInfo.name;\n  var resizeChunkArray = storage[dim][lastChunkIndex];\n\n  if (resizeChunkArray && resizeChunkArray.length < chunkSize) {\n    var newStore = new DataCtor(Math.min(end - lastChunkIndex * chunkSize, chunkSize)); // The cost of the copy is probably inconsiderable\n    // within the initial chunkSize.\n\n    for (var j = 0; j < resizeChunkArray.length; j++) {\n      newStore[j] = resizeChunkArray[j];\n    }\n\n    storage[dim][lastChunkIndex] = newStore;\n  } // Create new chunks.\n\n\n  for (var k = chunkCount * chunkSize; k < end; k += chunkSize) {\n    storage[dim].push(new DataCtor(Math.min(end - k, chunkSize)));\n  }\n}\n\nfunction prepareInvertedIndex(list) {\n  var invertedIndicesMap = list._invertedIndicesMap;\n  zrUtil.each(invertedIndicesMap, function (invertedIndices, dim) {\n    var dimInfo = list._dimensionInfos[dim]; // Currently, only dimensions that has ordinalMeta can create inverted indices.\n\n    var ordinalMeta = dimInfo.ordinalMeta;\n\n    if (ordinalMeta) {\n      invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); // The default value of TypedArray is 0. To avoid miss\n      // mapping to 0, we should set it as INDEX_NOT_FOUND.\n\n      for (var i = 0; i < invertedIndices.length; i++) {\n        invertedIndices[i] = INDEX_NOT_FOUND;\n      }\n\n      for (var i = 0; i < list._count; i++) {\n        // Only support the case that all values are distinct.\n        invertedIndices[list.get(dim, i)] = i;\n      }\n    }\n  });\n}\n\nfunction getRawValueFromStore(list, dimIndex, rawIndex) {\n  var val;\n\n  if (dimIndex != null) {\n    var chunkSize = list._chunkSize;\n    var chunkIndex = Math.floor(rawIndex / chunkSize);\n    var chunkOffset = rawIndex % chunkSize;\n    var dim = list.dimensions[dimIndex];\n    var chunk = list._storage[dim][chunkIndex];\n\n    if (chunk) {\n      val = chunk[chunkOffset];\n      var ordinalMeta = list._dimensionInfos[dim].ordinalMeta;\n\n      if (ordinalMeta && ordinalMeta.categories.length) {\n        val = ordinalMeta.categories[val];\n      }\n    }\n  }\n\n  return val;\n}\n/**\n * @return {number}\n */\n\n\nlistProto.count = function () {\n  return this._count;\n};\n\nlistProto.getIndices = function () {\n  var newIndices;\n  var indices = this._indices;\n\n  if (indices) {\n    var Ctor = indices.constructor;\n    var thisCount = this._count; // `new Array(a, b, c)` is different from `new Uint32Array(a, b, c)`.\n\n    if (Ctor === Array) {\n      newIndices = new Ctor(thisCount);\n\n      for (var i = 0; i < thisCount; i++) {\n        newIndices[i] = indices[i];\n      }\n    } else {\n      newIndices = new Ctor(indices.buffer, 0, thisCount);\n    }\n  } else {\n    var Ctor = getIndicesCtor(this);\n    var newIndices = new Ctor(this.count());\n\n    for (var i = 0; i < newIndices.length; i++) {\n      newIndices[i] = i;\n    }\n  }\n\n  return newIndices;\n};\n/**\n * Get value. Return NaN if idx is out of range.\n * @param {string} dim Dim must be concrete name.\n * @param {number} idx\n * @param {boolean} stack\n * @return {number}\n */\n\n\nlistProto.get = function (dim, idx\n/*, stack */\n) {\n  if (!(idx >= 0 && idx < this._count)) {\n    return NaN;\n  }\n\n  var storage = this._storage;\n\n  if (!storage[dim]) {\n    // TODO Warn ?\n    return NaN;\n  }\n\n  idx = this.getRawIndex(idx);\n  var chunkIndex = Math.floor(idx / this._chunkSize);\n  var chunkOffset = idx % this._chunkSize;\n  var chunkStore = storage[dim][chunkIndex];\n  var value = chunkStore[chunkOffset]; // FIXME ordinal data type is not stackable\n  // if (stack) {\n  //     var dimensionInfo = this._dimensionInfos[dim];\n  //     if (dimensionInfo && dimensionInfo.stackable) {\n  //         var stackedOn = this.stackedOn;\n  //         while (stackedOn) {\n  //             // Get no stacked data of stacked on\n  //             var stackedValue = stackedOn.get(dim, idx);\n  //             // Considering positive stack, negative stack and empty data\n  //             if ((value >= 0 && stackedValue > 0)  // Positive stack\n  //                 || (value <= 0 && stackedValue < 0) // Negative stack\n  //             ) {\n  //                 value += stackedValue;\n  //             }\n  //             stackedOn = stackedOn.stackedOn;\n  //         }\n  //     }\n  // }\n\n  return value;\n};\n/**\n * @param {string} dim concrete dim\n * @param {number} rawIndex\n * @return {number|string}\n */\n\n\nlistProto.getByRawIndex = function (dim, rawIdx) {\n  if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\n    return NaN;\n  }\n\n  var dimStore = this._storage[dim];\n\n  if (!dimStore) {\n    // TODO Warn ?\n    return NaN;\n  }\n\n  var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n  var chunkOffset = rawIdx % this._chunkSize;\n  var chunkStore = dimStore[chunkIndex];\n  return chunkStore[chunkOffset];\n};\n/**\n * FIXME Use `get` on chrome maybe slow(in filterSelf and selectRange).\n * Hack a much simpler _getFast\n * @private\n */\n\n\nlistProto._getFast = function (dim, rawIdx) {\n  var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n  var chunkOffset = rawIdx % this._chunkSize;\n  var chunkStore = this._storage[dim][chunkIndex];\n  return chunkStore[chunkOffset];\n};\n/**\n * Get value for multi dimensions.\n * @param {Array.<string>} [dimensions] If ignored, using all dimensions.\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getValues = function (dimensions, idx\n/*, stack */\n) {\n  var values = [];\n\n  if (!zrUtil.isArray(dimensions)) {\n    // stack = idx;\n    idx = dimensions;\n    dimensions = this.dimensions;\n  }\n\n  for (var i = 0, len = dimensions.length; i < len; i++) {\n    values.push(this.get(dimensions[i], idx\n    /*, stack */\n    ));\n  }\n\n  return values;\n};\n/**\n * If value is NaN. Inlcuding '-'\n * Only check the coord dimensions.\n * @param {string} dim\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.hasValue = function (idx) {\n  var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\n\n  for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\n    // Ordinal type originally can be string or number.\n    // But when an ordinal type is used on coord, it can\n    // not be string but only number. So we can also use isNaN.\n    if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\n      return false;\n    }\n  }\n\n  return true;\n};\n/**\n * Get extent of data in one dimension\n * @param {string} dim\n * @param {boolean} stack\n */\n\n\nlistProto.getDataExtent = function (dim\n/*, stack */\n) {\n  // Make sure use concrete dim as cache name.\n  dim = this.getDimension(dim);\n  var dimData = this._storage[dim];\n  var initialExtent = getInitialExtent(); // stack = !!((stack || false) && this.getCalculationInfo(dim));\n\n  if (!dimData) {\n    return initialExtent;\n  } // Make more strict checkings to ensure hitting cache.\n\n\n  var currEnd = this.count(); // var cacheName = [dim, !!stack].join('_');\n  // var cacheName = dim;\n  // Consider the most cases when using data zoom, `getDataExtent`\n  // happened before filtering. We cache raw extent, which is not\n  // necessary to be cleared and recalculated when restore data.\n\n  var useRaw = !this._indices; // && !stack;\n\n  var dimExtent;\n\n  if (useRaw) {\n    return this._rawExtent[dim].slice();\n  }\n\n  dimExtent = this._extent[dim];\n\n  if (dimExtent) {\n    return dimExtent.slice();\n  }\n\n  dimExtent = initialExtent;\n  var min = dimExtent[0];\n  var max = dimExtent[1];\n\n  for (var i = 0; i < currEnd; i++) {\n    // var value = stack ? this.get(dim, i, true) : this._getFast(dim, this.getRawIndex(i));\n    var value = this._getFast(dim, this.getRawIndex(i));\n\n    value < min && (min = value);\n    value > max && (max = value);\n  }\n\n  dimExtent = [min, max];\n  this._extent[dim] = dimExtent;\n  return dimExtent;\n};\n/**\n * Optimize for the scenario that data is filtered by a given extent.\n * Consider that if data amount is more than hundreds of thousand,\n * extent calculation will cost more than 10ms and the cache will\n * be erased because of the filtering.\n */\n\n\nlistProto.getApproximateExtent = function (dim\n/*, stack */\n) {\n  dim = this.getDimension(dim);\n  return this._approximateExtent[dim] || this.getDataExtent(dim\n  /*, stack */\n  );\n};\n\nlistProto.setApproximateExtent = function (extent, dim\n/*, stack */\n) {\n  dim = this.getDimension(dim);\n  this._approximateExtent[dim] = extent.slice();\n};\n/**\n * @param {string} key\n * @return {*}\n */\n\n\nlistProto.getCalculationInfo = function (key) {\n  return this._calculationInfo[key];\n};\n/**\n * @param {string|Object} key or k-v object\n * @param {*} [value]\n */\n\n\nlistProto.setCalculationInfo = function (key, value) {\n  isObject(key) ? zrUtil.extend(this._calculationInfo, key) : this._calculationInfo[key] = value;\n};\n/**\n * Get sum of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getSum = function (dim\n/*, stack */\n) {\n  var dimData = this._storage[dim];\n  var sum = 0;\n\n  if (dimData) {\n    for (var i = 0, len = this.count(); i < len; i++) {\n      var value = this.get(dim, i\n      /*, stack */\n      );\n\n      if (!isNaN(value)) {\n        sum += value;\n      }\n    }\n  }\n\n  return sum;\n};\n/**\n * Get median of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getMedian = function (dim\n/*, stack */\n) {\n  var dimDataArray = []; // map all data of one dimension\n\n  this.each(dim, function (val, idx) {\n    if (!isNaN(val)) {\n      dimDataArray.push(val);\n    }\n  }); // TODO\n  // Use quick select?\n  // immutability & sort\n\n  var sortedDimDataArray = [].concat(dimDataArray).sort(function (a, b) {\n    return a - b;\n  });\n  var len = this.count(); // calculate median\n\n  return len === 0 ? 0 : len % 2 === 1 ? sortedDimDataArray[(len - 1) / 2] : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\n}; // /**\n//  * Retreive the index with given value\n//  * @param {string} dim Concrete dimension.\n//  * @param {number} value\n//  * @return {number}\n//  */\n// Currently incorrect: should return dataIndex but not rawIndex.\n// Do not fix it until this method is to be used somewhere.\n// FIXME Precision of float value\n// listProto.indexOf = function (dim, value) {\n//     var storage = this._storage;\n//     var dimData = storage[dim];\n//     var chunkSize = this._chunkSize;\n//     if (dimData) {\n//         for (var i = 0, len = this.count(); i < len; i++) {\n//             var chunkIndex = Math.floor(i / chunkSize);\n//             var chunkOffset = i % chunkSize;\n//             if (dimData[chunkIndex][chunkOffset] === value) {\n//                 return i;\n//             }\n//         }\n//     }\n//     return -1;\n// };\n\n/**\n * Only support the dimension which inverted index created.\n * Do not support other cases until required.\n * @param {string} concrete dim\n * @param {number|string} value\n * @return {number} rawIndex\n */\n\n\nlistProto.rawIndexOf = function (dim, value) {\n  var invertedIndices = dim && this._invertedIndicesMap[dim];\n  var rawIndex = invertedIndices[value];\n\n  if (rawIndex == null || isNaN(rawIndex)) {\n    return INDEX_NOT_FOUND;\n  }\n\n  return rawIndex;\n};\n/**\n * Retreive the index with given name\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfName = function (name) {\n  for (var i = 0, len = this.count(); i < len; i++) {\n    if (this.getName(i) === name) {\n      return i;\n    }\n  }\n\n  return -1;\n};\n/**\n * Retreive the index with given raw data index\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfRawIndex = function (rawIndex) {\n  if (rawIndex >= this._rawCount || rawIndex < 0) {\n    return -1;\n  }\n\n  if (!this._indices) {\n    return rawIndex;\n  } // Indices are ascending\n\n\n  var indices = this._indices; // If rawIndex === dataIndex\n\n  var rawDataIndex = indices[rawIndex];\n\n  if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\n    return rawIndex;\n  }\n\n  var left = 0;\n  var right = this._count - 1;\n\n  while (left <= right) {\n    var mid = (left + right) / 2 | 0;\n\n    if (indices[mid] < rawIndex) {\n      left = mid + 1;\n    } else if (indices[mid] > rawIndex) {\n      right = mid - 1;\n    } else {\n      return mid;\n    }\n  }\n\n  return -1;\n};\n/**\n * Retreive the index of nearest value\n * @param {string} dim\n * @param {number} value\n * @param {number} [maxDistance=Infinity]\n * @return {Array.<number>} If and only if multiple indices has\n *        the same value, they are put to the result.\n */\n\n\nlistProto.indicesOfNearest = function (dim, value, maxDistance) {\n  var storage = this._storage;\n  var dimData = storage[dim];\n  var nearestIndices = [];\n\n  if (!dimData) {\n    return nearestIndices;\n  }\n\n  if (maxDistance == null) {\n    maxDistance = Infinity;\n  }\n\n  var minDist = Infinity;\n  var minDiff = -1;\n  var nearestIndicesLen = 0; // Check the test case of `test/ut/spec/data/List.js`.\n\n  for (var i = 0, len = this.count(); i < len; i++) {\n    var diff = value - this.get(dim, i);\n    var dist = Math.abs(diff);\n\n    if (dist <= maxDistance) {\n      // When the `value` is at the middle of `this.get(dim, i)` and `this.get(dim, i+1)`,\n      // we'd better not push both of them to `nearestIndices`, otherwise it is easy to\n      // get more than one item in `nearestIndices` (more specifically, in `tooltip`).\n      // So we chose the one that `diff >= 0` in this csae.\n      // But if `this.get(dim, i)` and `this.get(dim, j)` get the same value, both of them\n      // should be push to `nearestIndices`.\n      if (dist < minDist || dist === minDist && diff >= 0 && minDiff < 0) {\n        minDist = dist;\n        minDiff = diff;\n        nearestIndicesLen = 0;\n      }\n\n      if (diff === minDiff) {\n        nearestIndices[nearestIndicesLen++] = i;\n      }\n    }\n  }\n\n  nearestIndices.length = nearestIndicesLen;\n  return nearestIndices;\n};\n/**\n * Get raw data index\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawIndex = getRawIndexWithoutIndices;\n\nfunction getRawIndexWithoutIndices(idx) {\n  return idx;\n}\n\nfunction getRawIndexWithIndices(idx) {\n  if (idx < this._count && idx >= 0) {\n    return this._indices[idx];\n  }\n\n  return -1;\n}\n/**\n * Get raw data item\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawDataItem = function (idx) {\n  if (!this._rawData.persistent) {\n    var val = [];\n\n    for (var i = 0; i < this.dimensions.length; i++) {\n      var dim = this.dimensions[i];\n      val.push(this.get(dim, idx));\n    }\n\n    return val;\n  } else {\n    return this._rawData.getItem(this.getRawIndex(idx));\n  }\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getName = function (idx) {\n  var rawIndex = this.getRawIndex(idx);\n  return this._nameList[rawIndex] || getRawValueFromStore(this, this._nameDimIdx, rawIndex) || '';\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getId = function (idx) {\n  return getId(this, this.getRawIndex(idx));\n};\n\nfunction getId(list, rawIndex) {\n  var id = list._idList[rawIndex];\n\n  if (id == null) {\n    id = getRawValueFromStore(list, list._idDimIdx, rawIndex);\n  }\n\n  if (id == null) {\n    // FIXME Check the usage in graph, should not use prefix.\n    id = ID_PREFIX + rawIndex;\n  }\n\n  return id;\n}\n\nfunction normalizeDimensions(dimensions) {\n  if (!zrUtil.isArray(dimensions)) {\n    dimensions = [dimensions];\n  }\n\n  return dimensions;\n}\n\nfunction validateDimensions(list, dims) {\n  for (var i = 0; i < dims.length; i++) {\n    // stroage may be empty when no data, so use\n    // dimensionInfos to check.\n    if (!list._dimensionInfos[dims[i]]) {\n      console.error('Unkown dimension ' + dims[i]);\n    }\n  }\n}\n/**\n * Data iteration\n * @param {string|Array.<string>}\n * @param {Function} cb\n * @param {*} [context=this]\n *\n * @example\n *  list.each('x', function (x, idx) {});\n *  list.each(['x', 'y'], function (x, y, idx) {});\n *  list.each(function (idx) {})\n */\n\n\nlistProto.each = function (dims, cb, context, contextCompat) {\n  'use strict';\n\n  if (!this._count) {\n    return;\n  }\n\n  if (typeof dims === 'function') {\n    contextCompat = context;\n    context = cb;\n    cb = dims;\n    dims = [];\n  } // contextCompat just for compat echarts3\n\n\n  context = context || contextCompat || this;\n  dims = zrUtil.map(normalizeDimensions(dims), this.getDimension, this);\n  var dimSize = dims.length;\n\n  for (var i = 0; i < this.count(); i++) {\n    // Simple optimization\n    switch (dimSize) {\n      case 0:\n        cb.call(context, i);\n        break;\n\n      case 1:\n        cb.call(context, this.get(dims[0], i), i);\n        break;\n\n      case 2:\n        cb.call(context, this.get(dims[0], i), this.get(dims[1], i), i);\n        break;\n\n      default:\n        var k = 0;\n        var value = [];\n\n        for (; k < dimSize; k++) {\n          value[k] = this.get(dims[k], i);\n        } // Index\n\n\n        value[k] = i;\n        cb.apply(context, value);\n    }\n  }\n};\n/**\n * Data filter\n * @param {string|Array.<string>}\n * @param {Function} cb\n * @param {*} [context=this]\n */\n\n\nlistProto.filterSelf = function (dimensions, cb, context, contextCompat) {\n  'use strict';\n\n  if (!this._count) {\n    return;\n  }\n\n  if (typeof dimensions === 'function') {\n    contextCompat = context;\n    context = cb;\n    cb = dimensions;\n    dimensions = [];\n  } // contextCompat just for compat echarts3\n\n\n  context = context || contextCompat || this;\n  dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n  var count = this.count();\n  var Ctor = getIndicesCtor(this);\n  var newIndices = new Ctor(count);\n  var value = [];\n  var dimSize = dimensions.length;\n  var offset = 0;\n  var dim0 = dimensions[0];\n\n  for (var i = 0; i < count; i++) {\n    var keep;\n    var rawIdx = this.getRawIndex(i); // Simple optimization\n\n    if (dimSize === 0) {\n      keep = cb.call(context, i);\n    } else if (dimSize === 1) {\n      var val = this._getFast(dim0, rawIdx);\n\n      keep = cb.call(context, val, i);\n    } else {\n      for (var k = 0; k < dimSize; k++) {\n        value[k] = this._getFast(dim0, rawIdx);\n      }\n\n      value[k] = i;\n      keep = cb.apply(context, value);\n    }\n\n    if (keep) {\n      newIndices[offset++] = rawIdx;\n    }\n  } // Set indices after filtered.\n\n\n  if (offset < count) {\n    this._indices = newIndices;\n  }\n\n  this._count = offset; // Reset data extent\n\n  this._extent = {};\n  this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n  return this;\n};\n/**\n * Select data in range. (For optimization of filter)\n * (Manually inline code, support 5 million data filtering in data zoom.)\n */\n\n\nlistProto.selectRange = function (range) {\n  'use strict';\n\n  if (!this._count) {\n    return;\n  }\n\n  var dimensions = [];\n\n  for (var dim in range) {\n    if (range.hasOwnProperty(dim)) {\n      dimensions.push(dim);\n    }\n  }\n\n  var dimSize = dimensions.length;\n\n  if (!dimSize) {\n    return;\n  }\n\n  var originalCount = this.count();\n  var Ctor = getIndicesCtor(this);\n  var newIndices = new Ctor(originalCount);\n  var offset = 0;\n  var dim0 = dimensions[0];\n  var min = range[dim0][0];\n  var max = range[dim0][1];\n  var quickFinished = false;\n\n  if (!this._indices) {\n    // Extreme optimization for common case. About 2x faster in chrome.\n    var idx = 0;\n\n    if (dimSize === 1) {\n      var dimStorage = this._storage[dimensions[0]];\n\n      for (var k = 0; k < this._chunkCount; k++) {\n        var chunkStorage = dimStorage[k];\n        var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n        for (var i = 0; i < len; i++) {\n          var val = chunkStorage[i]; // NaN will not be filtered. Consider the case, in line chart, empty\n          // value indicates the line should be broken. But for the case like\n          // scatter plot, a data item with empty value will not be rendered,\n          // but the axis extent may be effected if some other dim of the data\n          // item has value. Fortunately it is not a significant negative effect.\n\n          if (val >= min && val <= max || isNaN(val)) {\n            newIndices[offset++] = idx;\n          }\n\n          idx++;\n        }\n      }\n\n      quickFinished = true;\n    } else if (dimSize === 2) {\n      var dimStorage = this._storage[dim0];\n      var dimStorage2 = this._storage[dimensions[1]];\n      var min2 = range[dimensions[1]][0];\n      var max2 = range[dimensions[1]][1];\n\n      for (var k = 0; k < this._chunkCount; k++) {\n        var chunkStorage = dimStorage[k];\n        var chunkStorage2 = dimStorage2[k];\n        var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n        for (var i = 0; i < len; i++) {\n          var val = chunkStorage[i];\n          var val2 = chunkStorage2[i]; // Do not filter NaN, see comment above.\n\n          if ((val >= min && val <= max || isNaN(val)) && (val2 >= min2 && val2 <= max2 || isNaN(val2))) {\n            newIndices[offset++] = idx;\n          }\n\n          idx++;\n        }\n      }\n\n      quickFinished = true;\n    }\n  }\n\n  if (!quickFinished) {\n    if (dimSize === 1) {\n      for (var i = 0; i < originalCount; i++) {\n        var rawIndex = this.getRawIndex(i);\n\n        var val = this._getFast(dim0, rawIndex); // Do not filter NaN, see comment above.\n\n\n        if (val >= min && val <= max || isNaN(val)) {\n          newIndices[offset++] = rawIndex;\n        }\n      }\n    } else {\n      for (var i = 0; i < originalCount; i++) {\n        var keep = true;\n        var rawIndex = this.getRawIndex(i);\n\n        for (var k = 0; k < dimSize; k++) {\n          var dimk = dimensions[k];\n\n          var val = this._getFast(dim, rawIndex); // Do not filter NaN, see comment above.\n\n\n          if (val < range[dimk][0] || val > range[dimk][1]) {\n            keep = false;\n          }\n        }\n\n        if (keep) {\n          newIndices[offset++] = this.getRawIndex(i);\n        }\n      }\n    }\n  } // Set indices after filtered.\n\n\n  if (offset < originalCount) {\n    this._indices = newIndices;\n  }\n\n  this._count = offset; // Reset data extent\n\n  this._extent = {};\n  this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n  return this;\n};\n/**\n * Data mapping to a plain array\n * @param {string|Array.<string>} [dimensions]\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.mapArray = function (dimensions, cb, context, contextCompat) {\n  'use strict';\n\n  if (typeof dimensions === 'function') {\n    contextCompat = context;\n    context = cb;\n    cb = dimensions;\n    dimensions = [];\n  } // contextCompat just for compat echarts3\n\n\n  context = context || contextCompat || this;\n  var result = [];\n  this.each(dimensions, function () {\n    result.push(cb && cb.apply(this, arguments));\n  }, context);\n  return result;\n}; // Data in excludeDimensions is copied, otherwise transfered.\n\n\nfunction cloneListForMapAndSample(original, excludeDimensions) {\n  var allDimensions = original.dimensions;\n  var list = new List(zrUtil.map(allDimensions, original.getDimensionInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n  transferProperties(list, original);\n  var storage = list._storage = {};\n  var originalStorage = original._storage; // Init storage\n\n  for (var i = 0; i < allDimensions.length; i++) {\n    var dim = allDimensions[i];\n\n    if (originalStorage[dim]) {\n      // Notice that we do not reset invertedIndicesMap here, becuase\n      // there is no scenario of mapping or sampling ordinal dimension.\n      if (zrUtil.indexOf(excludeDimensions, dim) >= 0) {\n        storage[dim] = cloneDimStore(originalStorage[dim]);\n        list._rawExtent[dim] = getInitialExtent();\n        list._extent[dim] = null;\n      } else {\n        // Direct reference for other dimensions\n        storage[dim] = originalStorage[dim];\n      }\n    }\n  }\n\n  return list;\n}\n\nfunction cloneDimStore(originalDimStore) {\n  var newDimStore = new Array(originalDimStore.length);\n\n  for (var j = 0; j < originalDimStore.length; j++) {\n    newDimStore[j] = cloneChunk(originalDimStore[j]);\n  }\n\n  return newDimStore;\n}\n\nfunction getInitialExtent() {\n  return [Infinity, -Infinity];\n}\n/**\n * Data mapping to a new List with given dimensions\n * @param {string|Array.<string>} dimensions\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.map = function (dimensions, cb, context, contextCompat) {\n  'use strict'; // contextCompat just for compat echarts3\n\n  context = context || contextCompat || this;\n  dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n  var list = cloneListForMapAndSample(this, dimensions); // Following properties are all immutable.\n  // So we can reference to the same value\n\n  list._indices = this._indices;\n  list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n  var storage = list._storage;\n  var tmpRetValue = [];\n  var chunkSize = this._chunkSize;\n  var dimSize = dimensions.length;\n  var dataCount = this.count();\n  var values = [];\n  var rawExtent = list._rawExtent;\n\n  for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\n    for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\n      values[dimIndex] = this.get(dimensions[dimIndex], dataIndex\n      /*, stack */\n      );\n    }\n\n    values[dimSize] = dataIndex;\n    var retValue = cb && cb.apply(context, values);\n\n    if (retValue != null) {\n      // a number or string (in oridinal dimension)?\n      if (typeof retValue !== 'object') {\n        tmpRetValue[0] = retValue;\n        retValue = tmpRetValue;\n      }\n\n      var rawIndex = this.getRawIndex(dataIndex);\n      var chunkIndex = Math.floor(rawIndex / chunkSize);\n      var chunkOffset = rawIndex % chunkSize;\n\n      for (var i = 0; i < retValue.length; i++) {\n        var dim = dimensions[i];\n        var val = retValue[i];\n        var rawExtentOnDim = rawExtent[dim];\n        var dimStore = storage[dim];\n\n        if (dimStore) {\n          dimStore[chunkIndex][chunkOffset] = val;\n        }\n\n        if (val < rawExtentOnDim[0]) {\n          rawExtentOnDim[0] = val;\n        }\n\n        if (val > rawExtentOnDim[1]) {\n          rawExtentOnDim[1] = val;\n        }\n      }\n    }\n  }\n\n  return list;\n};\n/**\n * Large data down sampling on given dimension\n * @param {string} dimension\n * @param {number} rate\n * @param {Function} sampleValue\n * @param {Function} sampleIndex Sample index for name and id\n */\n\n\nlistProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n  var list = cloneListForMapAndSample(this, [dimension]);\n  var targetStorage = list._storage;\n  var frameValues = [];\n  var frameSize = Math.floor(1 / rate);\n  var dimStore = targetStorage[dimension];\n  var len = this.count();\n  var chunkSize = this._chunkSize;\n  var rawExtentOnDim = list._rawExtent[dimension];\n  var newIndices = new (getIndicesCtor(this))(len);\n  var offset = 0;\n\n  for (var i = 0; i < len; i += frameSize) {\n    // Last frame\n    if (frameSize > len - i) {\n      frameSize = len - i;\n      frameValues.length = frameSize;\n    }\n\n    for (var k = 0; k < frameSize; k++) {\n      var dataIdx = this.getRawIndex(i + k);\n      var originalChunkIndex = Math.floor(dataIdx / chunkSize);\n      var originalChunkOffset = dataIdx % chunkSize;\n      frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];\n    }\n\n    var value = sampleValue(frameValues);\n    var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\n    var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);\n    var sampleChunkOffset = sampleFrameIdx % chunkSize; // Only write value on the filtered data\n\n    dimStore[sampleChunkIndex][sampleChunkOffset] = value;\n\n    if (value < rawExtentOnDim[0]) {\n      rawExtentOnDim[0] = value;\n    }\n\n    if (value > rawExtentOnDim[1]) {\n      rawExtentOnDim[1] = value;\n    }\n\n    newIndices[offset++] = sampleFrameIdx;\n  }\n\n  list._count = offset;\n  list._indices = newIndices;\n  list.getRawIndex = getRawIndexWithIndices;\n  return list;\n};\n/**\n * Get model of one data item.\n *\n * @param {number} idx\n */\n// FIXME Model proxy ?\n\n\nlistProto.getItemModel = function (idx) {\n  var hostModel = this.hostModel;\n  return new Model(this.getRawDataItem(idx), hostModel, hostModel && hostModel.ecModel);\n};\n/**\n * Create a data differ\n * @param {module:echarts/data/List} otherList\n * @return {module:echarts/data/DataDiffer}\n */\n\n\nlistProto.diff = function (otherList) {\n  var thisList = this;\n  return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\n    return getId(otherList, idx);\n  }, function (idx) {\n    return getId(thisList, idx);\n  });\n};\n/**\n * Get visual property.\n * @param {string} key\n */\n\n\nlistProto.getVisual = function (key) {\n  var visual = this._visual;\n  return visual && visual[key];\n};\n/**\n * Set visual property\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n *  setVisual('color', color);\n *  setVisual({\n *      'color': color\n *  });\n */\n\n\nlistProto.setVisual = function (key, val) {\n  if (isObject(key)) {\n    for (var name in key) {\n      if (key.hasOwnProperty(name)) {\n        this.setVisual(name, key[name]);\n      }\n    }\n\n    return;\n  }\n\n  this._visual = this._visual || {};\n  this._visual[key] = val;\n};\n/**\n * Set layout property.\n * @param {string|Object} key\n * @param {*} [val]\n */\n\n\nlistProto.setLayout = function (key, val) {\n  if (isObject(key)) {\n    for (var name in key) {\n      if (key.hasOwnProperty(name)) {\n        this.setLayout(name, key[name]);\n      }\n    }\n\n    return;\n  }\n\n  this._layout[key] = val;\n};\n/**\n * Get layout property.\n * @param  {string} key.\n * @return {*}\n */\n\n\nlistProto.getLayout = function (key) {\n  return this._layout[key];\n};\n/**\n * Get layout of single data item\n * @param {number} idx\n */\n\n\nlistProto.getItemLayout = function (idx) {\n  return this._itemLayouts[idx];\n};\n/**\n * Set layout of single data item\n * @param {number} idx\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n\n\nlistProto.setItemLayout = function (idx, layout, merge) {\n  this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n};\n/**\n * Clear all layout of single data item\n */\n\n\nlistProto.clearItemLayouts = function () {\n  this._itemLayouts.length = 0;\n};\n/**\n * Get visual property of single data item\n * @param {number} idx\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n */\n\n\nlistProto.getItemVisual = function (idx, key, ignoreParent) {\n  var itemVisual = this._itemVisuals[idx];\n  var val = itemVisual && itemVisual[key];\n\n  if (val == null && !ignoreParent) {\n    // Use global visual property\n    return this.getVisual(key);\n  }\n\n  return val;\n};\n/**\n * Set visual property of single data item\n *\n * @param {number} idx\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n *  setItemVisual(0, 'color', color);\n *  setItemVisual(0, {\n *      'color': color\n *  });\n */\n\n\nlistProto.setItemVisual = function (idx, key, value) {\n  var itemVisual = this._itemVisuals[idx] || {};\n  var hasItemVisual = this.hasItemVisual;\n  this._itemVisuals[idx] = itemVisual;\n\n  if (isObject(key)) {\n    for (var name in key) {\n      if (key.hasOwnProperty(name)) {\n        itemVisual[name] = key[name];\n        hasItemVisual[name] = true;\n      }\n    }\n\n    return;\n  }\n\n  itemVisual[key] = value;\n  hasItemVisual[key] = true;\n};\n/**\n * Clear itemVisuals and list visual.\n */\n\n\nlistProto.clearAllVisual = function () {\n  this._visual = {};\n  this._itemVisuals = [];\n  this.hasItemVisual = {};\n};\n\nvar setItemDataAndSeriesIndex = function (child) {\n  child.seriesIndex = this.seriesIndex;\n  child.dataIndex = this.dataIndex;\n  child.dataType = this.dataType;\n};\n/**\n * Set graphic element relative to data. It can be set as null\n * @param {number} idx\n * @param {module:zrender/Element} [el]\n */\n\n\nlistProto.setItemGraphicEl = function (idx, el) {\n  var hostModel = this.hostModel;\n\n  if (el) {\n    // Add data index and series index for indexing the data by element\n    // Useful in tooltip\n    el.dataIndex = idx;\n    el.dataType = this.dataType;\n    el.seriesIndex = hostModel && hostModel.seriesIndex;\n\n    if (el.type === 'group') {\n      el.traverse(setItemDataAndSeriesIndex, el);\n    }\n  }\n\n  this._graphicEls[idx] = el;\n};\n/**\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n\n\nlistProto.getItemGraphicEl = function (idx) {\n  return this._graphicEls[idx];\n};\n/**\n * @param {Function} cb\n * @param {*} context\n */\n\n\nlistProto.eachItemGraphicEl = function (cb, context) {\n  zrUtil.each(this._graphicEls, function (el, idx) {\n    if (el) {\n      cb && cb.call(context, el, idx);\n    }\n  });\n};\n/**\n * Shallow clone a new list except visual and layout properties, and graph elements.\n * New list only change the indices.\n */\n\n\nlistProto.cloneShallow = function (list) {\n  if (!list) {\n    var dimensionInfoList = zrUtil.map(this.dimensions, this.getDimensionInfo, this);\n    list = new List(dimensionInfoList, this.hostModel);\n  } // FIXME\n\n\n  list._storage = this._storage;\n  transferProperties(list, this); // Clone will not change the data extent and indices\n\n  if (this._indices) {\n    var Ctor = this._indices.constructor;\n    list._indices = new Ctor(this._indices);\n  } else {\n    list._indices = null;\n  }\n\n  list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n  return list;\n};\n/**\n * Wrap some method to add more feature\n * @param {string} methodName\n * @param {Function} injectFunction\n */\n\n\nlistProto.wrapMethod = function (methodName, injectFunction) {\n  var originalMethod = this[methodName];\n\n  if (typeof originalMethod !== 'function') {\n    return;\n  }\n\n  this.__wrappedMethods = this.__wrappedMethods || [];\n\n  this.__wrappedMethods.push(methodName);\n\n  this[methodName] = function () {\n    var res = originalMethod.apply(this, arguments);\n    return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n  };\n}; // Methods that create a new list based on this list should be listed here.\n// Notice that those method should `RETURN` the new list.\n\n\nlistProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map']; // Methods that change indices of this list should be listed here.\n\nlistProto.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\nvar _default = List;\nmodule.exports = _default;\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar _text = __webpack_require__(108);\n\nvar calculateTextPosition = _text.calculateTextPosition;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Symbol factory\n\n/**\n * Triangle shape\n * @inner\n */\nvar Triangle = graphic.extendShape({\n  type: 'triangle',\n  shape: {\n    cx: 0,\n    cy: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (path, shape) {\n    var cx = shape.cx;\n    var cy = shape.cy;\n    var width = shape.width / 2;\n    var height = shape.height / 2;\n    path.moveTo(cx, cy - height);\n    path.lineTo(cx + width, cy + height);\n    path.lineTo(cx - width, cy + height);\n    path.closePath();\n  }\n});\n/**\n * Diamond shape\n * @inner\n */\n\nvar Diamond = graphic.extendShape({\n  type: 'diamond',\n  shape: {\n    cx: 0,\n    cy: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (path, shape) {\n    var cx = shape.cx;\n    var cy = shape.cy;\n    var width = shape.width / 2;\n    var height = shape.height / 2;\n    path.moveTo(cx, cy - height);\n    path.lineTo(cx + width, cy);\n    path.lineTo(cx, cy + height);\n    path.lineTo(cx - width, cy);\n    path.closePath();\n  }\n});\n/**\n * Pin shape\n * @inner\n */\n\nvar Pin = graphic.extendShape({\n  type: 'pin',\n  shape: {\n    // x, y on the cusp\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (path, shape) {\n    var x = shape.x;\n    var y = shape.y;\n    var w = shape.width / 5 * 3; // Height must be larger than width\n\n    var h = Math.max(w, shape.height);\n    var r = w / 2; // Dist on y with tangent point and circle center\n\n    var dy = r * r / (h - r);\n    var cy = y - h + r + dy;\n    var angle = Math.asin(dy / r); // Dist on x with tangent point and circle center\n\n    var dx = Math.cos(angle) * r;\n    var tanX = Math.sin(angle);\n    var tanY = Math.cos(angle);\n    var cpLen = r * 0.6;\n    var cpLen2 = r * 0.7;\n    path.moveTo(x - dx, cy + dy);\n    path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\n    path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\n    path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\n    path.closePath();\n  }\n});\n/**\n * Arrow shape\n * @inner\n */\n\nvar Arrow = graphic.extendShape({\n  type: 'arrow',\n  shape: {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (ctx, shape) {\n    var height = shape.height;\n    var width = shape.width;\n    var x = shape.x;\n    var y = shape.y;\n    var dx = width / 3 * 2;\n    ctx.moveTo(x, y);\n    ctx.lineTo(x + dx, y + height);\n    ctx.lineTo(x, y + height / 4 * 3);\n    ctx.lineTo(x - dx, y + height);\n    ctx.lineTo(x, y);\n    ctx.closePath();\n  }\n});\n/**\n * Map of path contructors\n * @type {Object.<string, module:zrender/graphic/Path>}\n */\n\nvar symbolCtors = {\n  line: graphic.Line,\n  rect: graphic.Rect,\n  roundRect: graphic.Rect,\n  square: graphic.Rect,\n  circle: graphic.Circle,\n  diamond: Diamond,\n  pin: Pin,\n  arrow: Arrow,\n  triangle: Triangle\n};\nvar symbolShapeMakers = {\n  line: function (x, y, w, h, shape) {\n    // FIXME\n    shape.x1 = x;\n    shape.y1 = y + h / 2;\n    shape.x2 = x + w;\n    shape.y2 = y + h / 2;\n  },\n  rect: function (x, y, w, h, shape) {\n    shape.x = x;\n    shape.y = y;\n    shape.width = w;\n    shape.height = h;\n  },\n  roundRect: function (x, y, w, h, shape) {\n    shape.x = x;\n    shape.y = y;\n    shape.width = w;\n    shape.height = h;\n    shape.r = Math.min(w, h) / 4;\n  },\n  square: function (x, y, w, h, shape) {\n    var size = Math.min(w, h);\n    shape.x = x;\n    shape.y = y;\n    shape.width = size;\n    shape.height = size;\n  },\n  circle: function (x, y, w, h, shape) {\n    // Put circle in the center of square\n    shape.cx = x + w / 2;\n    shape.cy = y + h / 2;\n    shape.r = Math.min(w, h) / 2;\n  },\n  diamond: function (x, y, w, h, shape) {\n    shape.cx = x + w / 2;\n    shape.cy = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  },\n  pin: function (x, y, w, h, shape) {\n    shape.x = x + w / 2;\n    shape.y = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  },\n  arrow: function (x, y, w, h, shape) {\n    shape.x = x + w / 2;\n    shape.y = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  },\n  triangle: function (x, y, w, h, shape) {\n    shape.cx = x + w / 2;\n    shape.cy = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  }\n};\nvar symbolBuildProxies = {};\nzrUtil.each(symbolCtors, function (Ctor, name) {\n  symbolBuildProxies[name] = new Ctor();\n});\nvar SymbolClz = graphic.extendShape({\n  type: 'symbol',\n  shape: {\n    symbolType: '',\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  calculateTextPosition: function (out, style, rect) {\n    var res = calculateTextPosition(out, style, rect);\n    var shape = this.shape;\n\n    if (shape && shape.symbolType === 'pin' && style.textPosition === 'inside') {\n      res.y = rect.y + rect.height * 0.4;\n    }\n\n    return res;\n  },\n  buildPath: function (ctx, shape, inBundle) {\n    var symbolType = shape.symbolType;\n\n    if (symbolType !== 'none') {\n      var proxySymbol = symbolBuildProxies[symbolType];\n\n      if (!proxySymbol) {\n        // Default rect\n        symbolType = 'rect';\n        proxySymbol = symbolBuildProxies[symbolType];\n      }\n\n      symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\n      proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\n    }\n  }\n}); // Provide setColor helper method to avoid determine if set the fill or stroke outside\n\nfunction symbolPathSetColor(color, innerColor) {\n  if (this.type !== 'image') {\n    var symbolStyle = this.style;\n    var symbolShape = this.shape;\n\n    if (symbolShape && symbolShape.symbolType === 'line') {\n      symbolStyle.stroke = color;\n    } else if (this.__isEmptyBrush) {\n      symbolStyle.stroke = color;\n      symbolStyle.fill = innerColor || '#fff';\n    } else {\n      // FIXME 判断图形默认是填充还是描边，使用 onlyStroke ?\n      symbolStyle.fill && (symbolStyle.fill = color);\n      symbolStyle.stroke && (symbolStyle.stroke = color);\n    }\n\n    this.dirty(false);\n  }\n}\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolType\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n * @param {boolean} [keepAspect=false] whether to keep the ratio of w/h,\n *                            for path and image only.\n */\n\n\nfunction createSymbol(symbolType, x, y, w, h, color, keepAspect) {\n  // TODO Support image object, DynamicImage.\n  var isEmpty = symbolType.indexOf('empty') === 0;\n\n  if (isEmpty) {\n    symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\n  }\n\n  var symbolPath;\n\n  if (symbolType.indexOf('image://') === 0) {\n    symbolPath = graphic.makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n  } else if (symbolType.indexOf('path://') === 0) {\n    symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n  } else {\n    symbolPath = new SymbolClz({\n      shape: {\n        symbolType: symbolType,\n        x: x,\n        y: y,\n        width: w,\n        height: h\n      }\n    });\n  }\n\n  symbolPath.__isEmptyBrush = isEmpty;\n  symbolPath.setColor = symbolPathSetColor;\n  symbolPath.setColor(color);\n  return symbolPath;\n}\n\nexports.createSymbol = createSymbol;\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\nvar aCallable = __webpack_require__(77);\nvar NATIVE_BIND = __webpack_require__(228);\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\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(41);\nvar create = __webpack_require__(101);\nvar defineProperty = __webpack_require__(48).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\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar freeGlobal = __webpack_require__(533);\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\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar coordinateSystemCreators = {};\n\nfunction CoordinateSystemManager() {\n  this._coordinateSystems = [];\n}\n\nCoordinateSystemManager.prototype = {\n  constructor: CoordinateSystemManager,\n  create: function (ecModel, api) {\n    var coordinateSystems = [];\n    zrUtil.each(coordinateSystemCreators, function (creater, type) {\n      var list = creater.create(ecModel, api);\n      coordinateSystems = coordinateSystems.concat(list || []);\n    });\n    this._coordinateSystems = coordinateSystems;\n  },\n  update: function (ecModel, api) {\n    zrUtil.each(this._coordinateSystems, function (coordSys) {\n      coordSys.update && coordSys.update(ecModel, api);\n    });\n  },\n  getCoordinateSystems: function () {\n    return this._coordinateSystems.slice();\n  }\n};\n\nCoordinateSystemManager.register = function (type, coordinateSystemCreator) {\n  coordinateSystemCreators[type] = coordinateSystemCreator;\n};\n\nCoordinateSystemManager.get = function (type) {\n  return coordinateSystemCreators[type];\n};\n\nvar _default = CoordinateSystemManager;\nmodule.exports = _default;\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\nvar OrdinalScale = __webpack_require__(1044);\n\nvar IntervalScale = __webpack_require__(330);\n\nvar Scale = __webpack_require__(329);\n\nvar numberUtil = __webpack_require__(26);\n\nvar _barGrid = __webpack_require__(331);\n\nvar prepareLayoutBarSeries = _barGrid.prepareLayoutBarSeries;\nvar makeColumnLayout = _barGrid.makeColumnLayout;\nvar retrieveColumnLayout = _barGrid.retrieveColumnLayout;\n\nvar BoundingRect = __webpack_require__(57);\n\n__webpack_require__(1045);\n\n__webpack_require__(577);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n */\nfunction getScaleExtent(scale, model) {\n  var scaleType = scale.type;\n  var min = model.getMin();\n  var max = model.getMax();\n  var originalExtent = scale.getExtent();\n  var axisDataLen;\n  var boundaryGap;\n  var span;\n\n  if (scaleType === 'ordinal') {\n    axisDataLen = model.getCategories().length;\n  } else {\n    boundaryGap = model.get('boundaryGap');\n\n    if (!zrUtil.isArray(boundaryGap)) {\n      boundaryGap = [boundaryGap || 0, boundaryGap || 0];\n    }\n\n    if (typeof boundaryGap[0] === 'boolean') {\n      boundaryGap = [0, 0];\n    }\n\n    boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);\n    boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);\n    span = originalExtent[1] - originalExtent[0] || Math.abs(originalExtent[0]);\n  } // Notice: When min/max is not set (that is, when there are null/undefined,\n  // which is the most common case), these cases should be ensured:\n  // (1) For 'ordinal', show all axis.data.\n  // (2) For others:\n  //      + `boundaryGap` is applied (if min/max set, boundaryGap is\n  //      disabled).\n  //      + If `needCrossZero`, min/max should be zero, otherwise, min/max should\n  //      be the result that originalExtent enlarged by boundaryGap.\n  // (3) If no data, it should be ensured that `scale.setBlank` is set.\n  // FIXME\n  // (1) When min/max is 'dataMin' or 'dataMax', should boundaryGap be able to used?\n  // (2) When `needCrossZero` and all data is positive/negative, should it be ensured\n  // that the results processed by boundaryGap are positive/negative?\n\n\n  if (min === 'dataMin') {\n    min = originalExtent[0];\n  } else if (typeof min === 'function') {\n    min = min({\n      min: originalExtent[0],\n      max: originalExtent[1]\n    });\n  }\n\n  if (max === 'dataMax') {\n    max = originalExtent[1];\n  } else if (typeof max === 'function') {\n    max = max({\n      min: originalExtent[0],\n      max: originalExtent[1]\n    });\n  }\n\n  var fixMin = min != null;\n  var fixMax = max != null;\n\n  if (min == null) {\n    min = scaleType === 'ordinal' ? axisDataLen ? 0 : NaN : originalExtent[0] - boundaryGap[0] * span;\n  }\n\n  if (max == null) {\n    max = scaleType === 'ordinal' ? axisDataLen ? axisDataLen - 1 : NaN : originalExtent[1] + boundaryGap[1] * span;\n  }\n\n  (min == null || !isFinite(min)) && (min = NaN);\n  (max == null || !isFinite(max)) && (max = NaN);\n  scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max) || scaleType === 'ordinal' && !scale.getOrdinalMeta().categories.length); // Evaluate if axis needs cross zero\n\n  if (model.getNeedCrossZero()) {\n    // Axis is over zero and min is not set\n    if (min > 0 && max > 0 && !fixMin) {\n      min = 0;\n    } // Axis is under zero and max is not set\n\n\n    if (min < 0 && max < 0 && !fixMax) {\n      max = 0;\n    }\n  } // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n  // is base axis\n  // FIXME\n  // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n  // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n  //     Should not depend on series type `bar`?\n  // (3) Fix that might overlap when using dataZoom.\n  // (4) Consider other chart types using `barGrid`?\n  // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n\n  var ecModel = model.ecModel;\n\n  if (ecModel && scaleType === 'time'\n  /*|| scaleType === 'interval' */\n  ) {\n    var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n    var isBaseAxisAndHasBarSeries;\n    zrUtil.each(barSeriesModels, function (seriesModel) {\n      isBaseAxisAndHasBarSeries |= seriesModel.getBaseAxis() === model.axis;\n    });\n\n    if (isBaseAxisAndHasBarSeries) {\n      // Calculate placement of bars on axis\n      var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n      var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n      min = adjustedScale.min;\n      max = adjustedScale.max;\n    }\n  }\n\n  return {\n    extent: [min, max],\n    // \"fix\" means \"fixed\", the value should not be\n    // changed in the subsequent steps.\n    fixMin: fixMin,\n    fixMax: fixMax\n  };\n}\n\nfunction adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\n  // Get Axis Length\n  var axisExtent = model.axis.getExtent();\n  var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n  var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n  if (barsOnCurrentAxis === undefined) {\n    return {\n      min: min,\n      max: max\n    };\n  }\n\n  var minOverflow = Infinity;\n  zrUtil.each(barsOnCurrentAxis, function (item) {\n    minOverflow = Math.min(item.offset, minOverflow);\n  });\n  var maxOverflow = -Infinity;\n  zrUtil.each(barsOnCurrentAxis, function (item) {\n    maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n  });\n  minOverflow = Math.abs(minOverflow);\n  maxOverflow = Math.abs(maxOverflow);\n  var totalOverFlow = minOverflow + maxOverflow; // Calulate required buffer based on old range and overflow\n\n  var oldRange = max - min;\n  var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n  var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n  max += overflowBuffer * (maxOverflow / totalOverFlow);\n  min -= overflowBuffer * (minOverflow / totalOverFlow);\n  return {\n    min: min,\n    max: max\n  };\n}\n\nfunction niceScaleExtent(scale, model) {\n  var extentInfo = getScaleExtent(scale, model);\n  var extent = extentInfo.extent;\n  var splitNumber = model.get('splitNumber');\n\n  if (scale.type === 'log') {\n    scale.base = model.get('logBase');\n  }\n\n  var scaleType = scale.type;\n  scale.setExtent(extent[0], extent[1]);\n  scale.niceExtent({\n    splitNumber: splitNumber,\n    fixMin: extentInfo.fixMin,\n    fixMax: extentInfo.fixMax,\n    minInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('minInterval') : null,\n    maxInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('maxInterval') : null\n  }); // If some one specified the min, max. And the default calculated interval\n  // is not good enough. He can specify the interval. It is often appeared\n  // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n  // to be 60.\n  // FIXME\n\n  var interval = model.get('interval');\n\n  if (interval != null) {\n    scale.setInterval && scale.setInterval(interval);\n  }\n}\n/**\n * @param {module:echarts/model/Model} model\n * @param {string} [axisType] Default retrieve from model.type\n * @return {module:echarts/scale/*}\n */\n\n\nfunction createScaleByModel(model, axisType) {\n  axisType = axisType || model.get('type');\n\n  if (axisType) {\n    switch (axisType) {\n      // Buildin scale\n      case 'category':\n        return new OrdinalScale(model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), [Infinity, -Infinity]);\n\n      case 'value':\n        return new IntervalScale();\n      // Extended scale, like time and log\n\n      default:\n        return (Scale.getClass(axisType) || IntervalScale).create(model);\n    }\n  }\n}\n/**\n * Check if the axis corss 0\n */\n\n\nfunction ifAxisCrossZero(axis) {\n  var dataExtent = axis.scale.getExtent();\n  var min = dataExtent[0];\n  var max = dataExtent[1];\n  return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {Function} Label formatter function.\n *         param: {number} tickValue,\n *         param: {number} idx, the index in all ticks.\n *                         If category axis, this param is not requied.\n *         return: {string} label string.\n */\n\n\nfunction makeLabelFormatter(axis) {\n  var labelFormatter = axis.getLabelModel().get('formatter');\n  var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n  if (typeof labelFormatter === 'string') {\n    labelFormatter = function (tpl) {\n      return function (val) {\n        // For category axis, get raw value; for numeric axis,\n        // get foramtted label like '1,333,444'.\n        val = axis.scale.getLabel(val);\n        return tpl.replace('{value}', val != null ? val : '');\n      };\n    }(labelFormatter); // Consider empty array\n\n\n    return labelFormatter;\n  } else if (typeof labelFormatter === 'function') {\n    return function (tickValue, idx) {\n      // The original intention of `idx` is \"the index of the tick in all ticks\".\n      // But the previous implementation of category axis do not consider the\n      // `axisLabel.interval`, which cause that, for example, the `interval` is\n      // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n      // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n      // the definition here for back compatibility.\n      if (categoryTickStart != null) {\n        idx = tickValue - categoryTickStart;\n      }\n\n      return labelFormatter(getAxisRawValue(axis, tickValue), idx);\n    };\n  } else {\n    return function (tick) {\n      return axis.scale.getLabel(tick);\n    };\n  }\n}\n\nfunction getAxisRawValue(axis, value) {\n  // In category axis with data zoom, tick is not the original\n  // index of axis.data. So tick should not be exposed to user\n  // in category axis.\n  return axis.type === 'category' ? axis.scale.getLabel(value) : value;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {module:zrender/core/BoundingRect} Be null/undefined if no labels.\n */\n\n\nfunction estimateLabelUnionRect(axis) {\n  var axisModel = axis.model;\n  var scale = axis.scale;\n\n  if (!axisModel.get('axisLabel.show') || scale.isBlank()) {\n    return;\n  }\n\n  var isCategory = axis.type === 'category';\n  var realNumberScaleTicks;\n  var tickCount;\n  var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n  if (isCategory) {\n    tickCount = scale.count();\n  } else {\n    realNumberScaleTicks = scale.getTicks();\n    tickCount = realNumberScaleTicks.length;\n  }\n\n  var axisLabelModel = axis.getLabelModel();\n  var labelFormatter = makeLabelFormatter(axis);\n  var rect;\n  var step = 1; // Simple optimization for large amount of labels\n\n  if (tickCount > 40) {\n    step = Math.ceil(tickCount / 40);\n  }\n\n  for (var i = 0; i < tickCount; i += step) {\n    var tickValue = realNumberScaleTicks ? realNumberScaleTicks[i] : categoryScaleExtent[0] + i;\n    var label = labelFormatter(tickValue);\n    var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n    var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n    rect ? rect.union(singleRect) : rect = singleRect;\n  }\n\n  return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n  var rotateRadians = rotate * Math.PI / 180;\n  var boundingBox = textRect.plain();\n  var beforeWidth = boundingBox.width;\n  var beforeHeight = boundingBox.height;\n  var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians));\n  var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians));\n  var rotatedRect = new BoundingRect(boundingBox.x, boundingBox.y, afterWidth, afterHeight);\n  return rotatedRect;\n}\n/**\n * @param {module:echarts/src/model/Model} model axisLabelModel or axisTickModel\n * @return {number|String} Can be null|'auto'|number|function\n */\n\n\nfunction getOptionCategoryInterval(model) {\n  var interval = model.get('interval');\n  return interval == null ? 'auto' : interval;\n}\n/**\n * Set `categoryInterval` as 0 implicitly indicates that\n * show all labels reguardless of overlap.\n * @param {Object} axis axisModel.axis\n * @return {boolean}\n */\n\n\nfunction shouldShowAllLabels(axis) {\n  return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\n\nexports.getScaleExtent = getScaleExtent;\nexports.niceScaleExtent = niceScaleExtent;\nexports.createScaleByModel = createScaleByModel;\nexports.ifAxisCrossZero = ifAxisCrossZero;\nexports.makeLabelFormatter = makeLabelFormatter;\nexports.getAxisRawValue = getAxisRawValue;\nexports.estimateLabelUnionRect = estimateLabelUnionRect;\nexports.getOptionCategoryInterval = getOptionCategoryInterval;\nexports.shouldShowAllLabels = shouldShowAllLabels;\n\n/***/ }),\n/* 123 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar START_EVENT_NAME_MAP = {\n  transitionstart: {\n    transition: 'transitionstart',\n    WebkitTransition: 'webkitTransitionStart',\n    MozTransition: 'mozTransitionStart',\n    OTransition: 'oTransitionStart',\n    msTransition: 'MSTransitionStart'\n  },\n\n  animationstart: {\n    animation: 'animationstart',\n    WebkitAnimation: 'webkitAnimationStart',\n    MozAnimation: 'mozAnimationStart',\n    OAnimation: 'oAnimationStart',\n    msAnimation: 'MSAnimationStart'\n  }\n};\n\nvar END_EVENT_NAME_MAP = {\n  transitionend: {\n    transition: 'transitionend',\n    WebkitTransition: 'webkitTransitionEnd',\n    MozTransition: 'mozTransitionEnd',\n    OTransition: 'oTransitionEnd',\n    msTransition: 'MSTransitionEnd'\n  },\n\n  animationend: {\n    animation: 'animationend',\n    WebkitAnimation: 'webkitAnimationEnd',\n    MozAnimation: 'mozAnimationEnd',\n    OAnimation: 'oAnimationEnd',\n    msAnimation: 'MSAnimationEnd'\n  }\n};\n\nvar startEvents = [];\nvar endEvents = [];\n\nfunction detectEvents() {\n  var testEl = document.createElement('div');\n  var style = testEl.style;\n\n  if (!('AnimationEvent' in window)) {\n    delete START_EVENT_NAME_MAP.animationstart.animation;\n    delete END_EVENT_NAME_MAP.animationend.animation;\n  }\n\n  if (!('TransitionEvent' in window)) {\n    delete START_EVENT_NAME_MAP.transitionstart.transition;\n    delete END_EVENT_NAME_MAP.transitionend.transition;\n  }\n\n  function process(EVENT_NAME_MAP, events) {\n    for (var baseEventName in EVENT_NAME_MAP) {\n      if (EVENT_NAME_MAP.hasOwnProperty(baseEventName)) {\n        var baseEvents = EVENT_NAME_MAP[baseEventName];\n        for (var styleName in baseEvents) {\n          if (styleName in style) {\n            events.push(baseEvents[styleName]);\n            break;\n          }\n        }\n      }\n    }\n  }\n\n  process(START_EVENT_NAME_MAP, startEvents);\n  process(END_EVENT_NAME_MAP, endEvents);\n}\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n  detectEvents();\n}\n\nfunction addEventListener(node, eventName, eventListener) {\n  node.addEventListener(eventName, eventListener, false);\n}\n\nfunction removeEventListener(node, eventName, eventListener) {\n  node.removeEventListener(eventName, eventListener, false);\n}\n\nvar TransitionEvents = {\n  // Start events\n  startEvents: startEvents,\n\n  addStartEventListener: function addStartEventListener(node, eventListener) {\n    if (startEvents.length === 0) {\n      window.setTimeout(eventListener, 0);\n      return;\n    }\n    startEvents.forEach(function (startEvent) {\n      addEventListener(node, startEvent, eventListener);\n    });\n  },\n  removeStartEventListener: function removeStartEventListener(node, eventListener) {\n    if (startEvents.length === 0) {\n      return;\n    }\n    startEvents.forEach(function (startEvent) {\n      removeEventListener(node, startEvent, eventListener);\n    });\n  },\n\n\n  // End events\n  endEvents: endEvents,\n\n  addEndEventListener: function addEndEventListener(node, eventListener) {\n    if (endEvents.length === 0) {\n      window.setTimeout(eventListener, 0);\n      return;\n    }\n    endEvents.forEach(function (endEvent) {\n      addEventListener(node, endEvent, eventListener);\n    });\n  },\n  removeEndEventListener: function removeEndEventListener(node, eventListener) {\n    if (endEvents.length === 0) {\n      return;\n    }\n    endEvents.forEach(function (endEvent) {\n      removeEventListener(node, endEvent, eventListener);\n    });\n  }\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (TransitionEvents);\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable no-proto -- safe */\nvar uncurryThis = __webpack_require__(20);\nvar anObject = __webpack_require__(35);\nvar aPossiblePrototype = __webpack_require__(479);\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-x/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    // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n    setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(118);\nvar call = __webpack_require__(38);\nvar anObject = __webpack_require__(35);\nvar tryToString = __webpack_require__(169);\nvar isArrayIteratorMethod = __webpack_require__(368);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar isPrototypeOf = __webpack_require__(113);\nvar getIterator = __webpack_require__(284);\nvar getIteratorMethod = __webpack_require__(237);\nvar iteratorClose = __webpack_require__(483);\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', condition);\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 $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\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $some = __webpack_require__(84).some;\nvar arrayMethodIsStrict = __webpack_require__(140);\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\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(113);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw $TypeError('Incorrect invocation');\n};\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports) {\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\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Eventful = __webpack_require__(176);\n\nexports.Dispatcher = Eventful;\n\nvar env = __webpack_require__(66);\n\nvar _dom = __webpack_require__(547);\n\nvar isCanvasEl = _dom.isCanvasEl;\nvar transformCoordWithViewport = _dom.transformCoordWithViewport;\n\n/**\n * Utilities for mouse or touch events.\n */\nvar isDomLevel2 = typeof window !== 'undefined' && !!window.addEventListener;\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar _calcOut = [];\n/**\n * Get the `zrX` and `zrY`, which are relative to the top-left of\n * the input `el`.\n * CSS transform (2D & 3D) is supported.\n *\n * The strategy to fetch the coords:\n * + If `calculate` is not set as `true`, users of this method should\n * ensure that `el` is the same or the same size & location as `e.target`.\n * Otherwise the result coords are probably not expected. Because we\n * firstly try to get coords from e.offsetX/e.offsetY.\n * + If `calculate` is set as `true`, the input `el` can be any element\n * and we force to calculate the coords based on `el`.\n * + The input `el` should be positionable (not position:static).\n *\n * The force `calculate` can be used in case like:\n * When mousemove event triggered on ec tooltip, `e.target` is not `el`(zr painter.dom).\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} e Mouse event or touch event.\n * @param {Object} out Get `out.zrX` and `out.zrY` as the result.\n * @param {boolean} [calculate=false] Whether to force calculate\n *        the coordinates but not use ones provided by browser.\n */\n\nfunction clientToLocal(el, e, out, calculate) {\n  out = out || {}; // According to the W3C Working Draft, offsetX and offsetY should be relative\n  // to the padding edge of the target element. The only browser using this convention\n  // is IE. Webkit uses the border edge, Opera uses the content edge, and FireFox does\n  // not support the properties.\n  // (see http://www.jacklmoore.com/notes/mouse-position/)\n  // In zr painter.dom, padding edge equals to border edge.\n\n  if (calculate || !env.canvasSupported) {\n    calculateZrXY(el, e, out);\n  } // Caution: In FireFox, layerX/layerY Mouse position relative to the closest positioned\n  // ancestor element, so we should make sure el is positioned (e.g., not position:static).\n  // BTW1, Webkit don't return the same results as FF in non-simple cases (like add\n  // zoom-factor, overflow / opacity layers, transforms ...)\n  // BTW2, (ev.offsetY || ev.pageY - $(ev.target).offset().top) is not correct in preserve-3d.\n  // <https://bugs.jquery.com/ticket/8523#comment:14>\n  // BTW3, In ff, offsetX/offsetY is always 0.\n  else if (env.browser.firefox && e.layerX != null && e.layerX !== e.offsetX) {\n      out.zrX = e.layerX;\n      out.zrY = e.layerY;\n    } // For IE6+, chrome, safari, opera. (When will ff support offsetX?)\n    else if (e.offsetX != null) {\n        out.zrX = e.offsetX;\n        out.zrY = e.offsetY;\n      } // For some other device, e.g., IOS safari.\n      else {\n          calculateZrXY(el, e, out);\n        }\n\n  return out;\n}\n\nfunction calculateZrXY(el, e, out) {\n  // BlackBerry 5, iOS 3 (original iPhone) don't have getBoundingRect.\n  if (env.domSupported && el.getBoundingClientRect) {\n    var ex = e.clientX;\n    var ey = e.clientY;\n\n    if (isCanvasEl(el)) {\n      // Original approach, which do not support CSS transform.\n      // marker can not be locationed in a canvas container\n      // (getBoundingClientRect is always 0). We do not support\n      // that input a pre-created canvas to zr while using css\n      // transform in iOS.\n      var box = el.getBoundingClientRect();\n      out.zrX = ex - box.left;\n      out.zrY = ey - box.top;\n      return;\n    } else {\n      if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\n        out.zrX = _calcOut[0];\n        out.zrY = _calcOut[1];\n        return;\n      }\n    }\n  }\n\n  out.zrX = out.zrY = 0;\n}\n/**\n * Find native event compat for legency IE.\n * Should be called at the begining of a native event listener.\n *\n * @param {Event} [e] Mouse event or touch event or pointer event.\n *        For lagency IE, we use `window.event` is used.\n * @return {Event} The native event.\n */\n\n\nfunction getNativeEvent(e) {\n  return e || window.event;\n}\n/**\n * Normalize the coordinates of the input event.\n *\n * Get the `e.zrX` and `e.zrY`, which are relative to the top-left of\n * the input `el`.\n * Get `e.zrDelta` if using mouse wheel.\n * Get `e.which`, see the comment inside this function.\n *\n * Do not calculate repeatly if `zrX` and `zrY` already exist.\n *\n * Notice: see comments in `clientToLocal`. check the relationship\n * between the result coords and the parameters `el` and `calculate`.\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} [e] See `getNativeEvent`.\n * @param {boolean} [calculate=false] Whether to force calculate\n *        the coordinates but not use ones provided by browser.\n * @return {UIEvent} The normalized native UIEvent.\n */\n\n\nfunction normalizeEvent(el, e, calculate) {\n  e = getNativeEvent(e);\n\n  if (e.zrX != null) {\n    return e;\n  }\n\n  var eventType = e.type;\n  var isTouch = eventType && eventType.indexOf('touch') >= 0;\n\n  if (!isTouch) {\n    clientToLocal(el, e, e, calculate);\n    e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;\n  } else {\n    var touch = eventType !== 'touchend' ? e.targetTouches[0] : e.changedTouches[0];\n    touch && clientToLocal(el, touch, e, calculate);\n  } // Add which for click: 1 === left; 2 === middle; 3 === right; otherwise: 0;\n  // See jQuery: https://github.com/jquery/jquery/blob/master/src/event.js\n  // If e.which has been defined, it may be readonly,\n  // see: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\n\n\n  var button = e.button;\n\n  if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n    e.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;\n  } // [Caution]: `e.which` from browser is not always reliable. For example,\n  // when press left button and `mousemove (pointermove)` in Edge, the `e.which`\n  // is 65536 and the `e.button` is -1. But the `mouseup (pointerup)` and\n  // `mousedown (pointerdown)` is the same as Chrome does.\n\n\n  return e;\n}\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Function} handler\n * @param {Object|boolean} opt If boolean, means `opt.capture`\n * @param {boolean} [opt.capture=false]\n * @param {boolean} [opt.passive=false]\n */\n\n\nfunction addEventListener(el, name, handler, opt) {\n  if (isDomLevel2) {\n    // Reproduct the console warning:\n    // [Violation] Added non-passive event listener to a scroll-blocking <some> event.\n    // Consider marking event handler as 'passive' to make the page more responsive.\n    // Just set console log level: verbose in chrome dev tool.\n    // then the warning log will be printed when addEventListener called.\n    // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n    // We have not yet found a neat way to using passive. Because in zrender the dom event\n    // listener delegate all of the upper events of element. Some of those events need\n    // to prevent default. For example, the feature `preventDefaultMouseMove` of echarts.\n    // Before passive can be adopted, these issues should be considered:\n    // (1) Whether and how a zrender user specifies an event listener passive. And by default,\n    // passive or not.\n    // (2) How to tread that some zrender event listener is passive, and some is not. If\n    // we use other way but not preventDefault of mousewheel and touchmove, browser\n    // compatibility should be handled.\n    // var opts = (env.passiveSupported && name === 'mousewheel')\n    //     ? {passive: true}\n    //     // By default, the third param of el.addEventListener is `capture: false`.\n    //     : void 0;\n    // el.addEventListener(name, handler /* , opts */);\n    el.addEventListener(name, handler, opt);\n  } else {\n    // For simplicity, do not implement `setCapture` for IE9-.\n    el.attachEvent('on' + name, handler);\n  }\n}\n/**\n * Parameter are the same as `addEventListener`.\n *\n * Notice that if a listener is registered twice, one with capture and one without,\n * remove each one separately. Removal of a capturing listener does not affect a\n * non-capturing version of the same listener, and vice versa.\n */\n\n\nfunction removeEventListener(el, name, handler, opt) {\n  if (isDomLevel2) {\n    el.removeEventListener(name, handler, opt);\n  } else {\n    el.detachEvent('on' + name, handler);\n  }\n}\n/**\n * preventDefault and stopPropagation.\n * Notice: do not use this method in zrender. It can only be\n * used by upper applications if necessary.\n *\n * @param {Event} e A mouse or touch event.\n */\n\n\nvar stop = isDomLevel2 ? function (e) {\n  e.preventDefault();\n  e.stopPropagation();\n  e.cancelBubble = true;\n} : function (e) {\n  e.returnValue = false;\n  e.cancelBubble = true;\n};\n/**\n * This method only works for mouseup and mousedown. The functionality is restricted\n * for fault tolerance, See the `e.which` compatibility above.\n *\n * @param {MouseEvent} e\n * @return {boolean}\n */\n\nfunction isMiddleOrRightButtonOnMouseUpDown(e) {\n  return e.which === 2 || e.which === 3;\n}\n/**\n * To be removed.\n * @deprecated\n */\n\n\nfunction notLeftMouse(e) {\n  // If e.which is undefined, considered as left mouse event.\n  return e.which > 1;\n} // For backward compatibility\n\n\nexports.clientToLocal = clientToLocal;\nexports.getNativeEvent = getNativeEvent;\nexports.normalizeEvent = normalizeEvent;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.stop = stop;\nexports.isMiddleOrRightButtonOnMouseUpDown = isMiddleOrRightButtonOnMouseUpDown;\nexports.notLeftMouse = notLeftMouse;\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar LRU = __webpack_require__(550);\n\nvar kCSSColorTable = {\n  'transparent': [0, 0, 0, 0],\n  'aliceblue': [240, 248, 255, 1],\n  'antiquewhite': [250, 235, 215, 1],\n  'aqua': [0, 255, 255, 1],\n  'aquamarine': [127, 255, 212, 1],\n  'azure': [240, 255, 255, 1],\n  'beige': [245, 245, 220, 1],\n  'bisque': [255, 228, 196, 1],\n  'black': [0, 0, 0, 1],\n  'blanchedalmond': [255, 235, 205, 1],\n  'blue': [0, 0, 255, 1],\n  'blueviolet': [138, 43, 226, 1],\n  'brown': [165, 42, 42, 1],\n  'burlywood': [222, 184, 135, 1],\n  'cadetblue': [95, 158, 160, 1],\n  'chartreuse': [127, 255, 0, 1],\n  'chocolate': [210, 105, 30, 1],\n  'coral': [255, 127, 80, 1],\n  'cornflowerblue': [100, 149, 237, 1],\n  'cornsilk': [255, 248, 220, 1],\n  'crimson': [220, 20, 60, 1],\n  'cyan': [0, 255, 255, 1],\n  'darkblue': [0, 0, 139, 1],\n  'darkcyan': [0, 139, 139, 1],\n  'darkgoldenrod': [184, 134, 11, 1],\n  'darkgray': [169, 169, 169, 1],\n  'darkgreen': [0, 100, 0, 1],\n  'darkgrey': [169, 169, 169, 1],\n  'darkkhaki': [189, 183, 107, 1],\n  'darkmagenta': [139, 0, 139, 1],\n  'darkolivegreen': [85, 107, 47, 1],\n  'darkorange': [255, 140, 0, 1],\n  'darkorchid': [153, 50, 204, 1],\n  'darkred': [139, 0, 0, 1],\n  'darksalmon': [233, 150, 122, 1],\n  'darkseagreen': [143, 188, 143, 1],\n  'darkslateblue': [72, 61, 139, 1],\n  'darkslategray': [47, 79, 79, 1],\n  'darkslategrey': [47, 79, 79, 1],\n  'darkturquoise': [0, 206, 209, 1],\n  'darkviolet': [148, 0, 211, 1],\n  'deeppink': [255, 20, 147, 1],\n  'deepskyblue': [0, 191, 255, 1],\n  'dimgray': [105, 105, 105, 1],\n  'dimgrey': [105, 105, 105, 1],\n  'dodgerblue': [30, 144, 255, 1],\n  'firebrick': [178, 34, 34, 1],\n  'floralwhite': [255, 250, 240, 1],\n  'forestgreen': [34, 139, 34, 1],\n  'fuchsia': [255, 0, 255, 1],\n  'gainsboro': [220, 220, 220, 1],\n  'ghostwhite': [248, 248, 255, 1],\n  'gold': [255, 215, 0, 1],\n  'goldenrod': [218, 165, 32, 1],\n  'gray': [128, 128, 128, 1],\n  'green': [0, 128, 0, 1],\n  'greenyellow': [173, 255, 47, 1],\n  'grey': [128, 128, 128, 1],\n  'honeydew': [240, 255, 240, 1],\n  'hotpink': [255, 105, 180, 1],\n  'indianred': [205, 92, 92, 1],\n  'indigo': [75, 0, 130, 1],\n  'ivory': [255, 255, 240, 1],\n  'khaki': [240, 230, 140, 1],\n  'lavender': [230, 230, 250, 1],\n  'lavenderblush': [255, 240, 245, 1],\n  'lawngreen': [124, 252, 0, 1],\n  'lemonchiffon': [255, 250, 205, 1],\n  'lightblue': [173, 216, 230, 1],\n  'lightcoral': [240, 128, 128, 1],\n  'lightcyan': [224, 255, 255, 1],\n  'lightgoldenrodyellow': [250, 250, 210, 1],\n  'lightgray': [211, 211, 211, 1],\n  'lightgreen': [144, 238, 144, 1],\n  'lightgrey': [211, 211, 211, 1],\n  'lightpink': [255, 182, 193, 1],\n  'lightsalmon': [255, 160, 122, 1],\n  'lightseagreen': [32, 178, 170, 1],\n  'lightskyblue': [135, 206, 250, 1],\n  'lightslategray': [119, 136, 153, 1],\n  'lightslategrey': [119, 136, 153, 1],\n  'lightsteelblue': [176, 196, 222, 1],\n  'lightyellow': [255, 255, 224, 1],\n  'lime': [0, 255, 0, 1],\n  'limegreen': [50, 205, 50, 1],\n  'linen': [250, 240, 230, 1],\n  'magenta': [255, 0, 255, 1],\n  'maroon': [128, 0, 0, 1],\n  'mediumaquamarine': [102, 205, 170, 1],\n  'mediumblue': [0, 0, 205, 1],\n  'mediumorchid': [186, 85, 211, 1],\n  'mediumpurple': [147, 112, 219, 1],\n  'mediumseagreen': [60, 179, 113, 1],\n  'mediumslateblue': [123, 104, 238, 1],\n  'mediumspringgreen': [0, 250, 154, 1],\n  'mediumturquoise': [72, 209, 204, 1],\n  'mediumvioletred': [199, 21, 133, 1],\n  'midnightblue': [25, 25, 112, 1],\n  'mintcream': [245, 255, 250, 1],\n  'mistyrose': [255, 228, 225, 1],\n  'moccasin': [255, 228, 181, 1],\n  'navajowhite': [255, 222, 173, 1],\n  'navy': [0, 0, 128, 1],\n  'oldlace': [253, 245, 230, 1],\n  'olive': [128, 128, 0, 1],\n  'olivedrab': [107, 142, 35, 1],\n  'orange': [255, 165, 0, 1],\n  'orangered': [255, 69, 0, 1],\n  'orchid': [218, 112, 214, 1],\n  'palegoldenrod': [238, 232, 170, 1],\n  'palegreen': [152, 251, 152, 1],\n  'paleturquoise': [175, 238, 238, 1],\n  'palevioletred': [219, 112, 147, 1],\n  'papayawhip': [255, 239, 213, 1],\n  'peachpuff': [255, 218, 185, 1],\n  'peru': [205, 133, 63, 1],\n  'pink': [255, 192, 203, 1],\n  'plum': [221, 160, 221, 1],\n  'powderblue': [176, 224, 230, 1],\n  'purple': [128, 0, 128, 1],\n  'red': [255, 0, 0, 1],\n  'rosybrown': [188, 143, 143, 1],\n  'royalblue': [65, 105, 225, 1],\n  'saddlebrown': [139, 69, 19, 1],\n  'salmon': [250, 128, 114, 1],\n  'sandybrown': [244, 164, 96, 1],\n  'seagreen': [46, 139, 87, 1],\n  'seashell': [255, 245, 238, 1],\n  'sienna': [160, 82, 45, 1],\n  'silver': [192, 192, 192, 1],\n  'skyblue': [135, 206, 235, 1],\n  'slateblue': [106, 90, 205, 1],\n  'slategray': [112, 128, 144, 1],\n  'slategrey': [112, 128, 144, 1],\n  'snow': [255, 250, 250, 1],\n  'springgreen': [0, 255, 127, 1],\n  'steelblue': [70, 130, 180, 1],\n  'tan': [210, 180, 140, 1],\n  'teal': [0, 128, 128, 1],\n  'thistle': [216, 191, 216, 1],\n  'tomato': [255, 99, 71, 1],\n  'turquoise': [64, 224, 208, 1],\n  'violet': [238, 130, 238, 1],\n  'wheat': [245, 222, 179, 1],\n  'white': [255, 255, 255, 1],\n  'whitesmoke': [245, 245, 245, 1],\n  'yellow': [255, 255, 0, 1],\n  'yellowgreen': [154, 205, 50, 1]\n};\n\nfunction clampCssByte(i) {\n  // Clamp to integer 0 .. 255.\n  i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n  return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clampCssAngle(i) {\n  // Clamp to integer 0 .. 360.\n  i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n  return i < 0 ? 0 : i > 360 ? 360 : i;\n}\n\nfunction clampCssFloat(f) {\n  // Clamp to float 0.0 .. 1.0.\n  return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parseCssInt(str) {\n  // int or percentage.\n  if (str.length && str.charAt(str.length - 1) === '%') {\n    return clampCssByte(parseFloat(str) / 100 * 255);\n  }\n\n  return clampCssByte(parseInt(str, 10));\n}\n\nfunction parseCssFloat(str) {\n  // float or percentage.\n  if (str.length && str.charAt(str.length - 1) === '%') {\n    return clampCssFloat(parseFloat(str) / 100);\n  }\n\n  return clampCssFloat(parseFloat(str));\n}\n\nfunction cssHueToRgb(m1, m2, h) {\n  if (h < 0) {\n    h += 1;\n  } else if (h > 1) {\n    h -= 1;\n  }\n\n  if (h * 6 < 1) {\n    return m1 + (m2 - m1) * h * 6;\n  }\n\n  if (h * 2 < 1) {\n    return m2;\n  }\n\n  if (h * 3 < 2) {\n    return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n  }\n\n  return m1;\n}\n\nfunction lerpNumber(a, b, p) {\n  return a + (b - a) * p;\n}\n\nfunction setRgba(out, r, g, b, a) {\n  out[0] = r;\n  out[1] = g;\n  out[2] = b;\n  out[3] = a;\n  return out;\n}\n\nfunction copyRgba(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  return out;\n}\n\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\n\nfunction putToCache(colorStr, rgbaArr) {\n  // Reuse removed array\n  if (lastRemovedArr) {\n    copyRgba(lastRemovedArr, rgbaArr);\n  }\n\n  lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice());\n}\n/**\n * @param {string} colorStr\n * @param {Array.<number>} out\n * @return {Array.<number>}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction parse(colorStr, rgbaArr) {\n  if (!colorStr) {\n    return;\n  }\n\n  rgbaArr = rgbaArr || [];\n  var cached = colorCache.get(colorStr);\n\n  if (cached) {\n    return copyRgba(rgbaArr, cached);\n  } // colorStr may be not string\n\n\n  colorStr = colorStr + ''; // Remove all whitespace, not compliant, but should just be more accepting.\n\n  var str = colorStr.replace(/ /g, '').toLowerCase(); // Color keywords (and transparent) lookup.\n\n  if (str in kCSSColorTable) {\n    copyRgba(rgbaArr, kCSSColorTable[str]);\n    putToCache(colorStr, rgbaArr);\n    return rgbaArr;\n  } // #abc and #abc123 syntax.\n\n\n  if (str.charAt(0) === '#') {\n    if (str.length === 4) {\n      var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n      if (!(iv >= 0 && iv <= 0xfff)) {\n        setRgba(rgbaArr, 0, 0, 0, 1);\n        return; // Covers NaN.\n      }\n\n      setRgba(rgbaArr, (iv & 0xf00) >> 4 | (iv & 0xf00) >> 8, iv & 0xf0 | (iv & 0xf0) >> 4, iv & 0xf | (iv & 0xf) << 4, 1);\n      putToCache(colorStr, rgbaArr);\n      return rgbaArr;\n    } else if (str.length === 7) {\n      var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n      if (!(iv >= 0 && iv <= 0xffffff)) {\n        setRgba(rgbaArr, 0, 0, 0, 1);\n        return; // Covers NaN.\n      }\n\n      setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, 1);\n      putToCache(colorStr, rgbaArr);\n      return rgbaArr;\n    }\n\n    return;\n  }\n\n  var op = str.indexOf('(');\n  var ep = str.indexOf(')');\n\n  if (op !== -1 && ep + 1 === str.length) {\n    var fname = str.substr(0, op);\n    var params = str.substr(op + 1, ep - (op + 1)).split(',');\n    var alpha = 1; // To allow case fallthrough.\n\n    switch (fname) {\n      case 'rgba':\n        if (params.length !== 4) {\n          setRgba(rgbaArr, 0, 0, 0, 1);\n          return;\n        }\n\n        alpha = parseCssFloat(params.pop());\n      // jshint ignore:line\n      // Fall through.\n\n      case 'rgb':\n        if (params.length !== 3) {\n          setRgba(rgbaArr, 0, 0, 0, 1);\n          return;\n        }\n\n        setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\n        putToCache(colorStr, rgbaArr);\n        return rgbaArr;\n\n      case 'hsla':\n        if (params.length !== 4) {\n          setRgba(rgbaArr, 0, 0, 0, 1);\n          return;\n        }\n\n        params[3] = parseCssFloat(params[3]);\n        hsla2rgba(params, rgbaArr);\n        putToCache(colorStr, rgbaArr);\n        return rgbaArr;\n\n      case 'hsl':\n        if (params.length !== 3) {\n          setRgba(rgbaArr, 0, 0, 0, 1);\n          return;\n        }\n\n        hsla2rgba(params, rgbaArr);\n        putToCache(colorStr, rgbaArr);\n        return rgbaArr;\n\n      default:\n        return;\n    }\n  }\n\n  setRgba(rgbaArr, 0, 0, 0, 1);\n  return;\n}\n/**\n * @param {Array.<number>} hsla\n * @param {Array.<number>} rgba\n * @return {Array.<number>} rgba\n */\n\n\nfunction hsla2rgba(hsla, rgba) {\n  var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360; // 0 .. 1\n  // NOTE(deanm): According to the CSS spec s/l should only be\n  // percentages, but we don't bother and let float or percentage.\n\n  var s = parseCssFloat(hsla[1]);\n  var l = parseCssFloat(hsla[2]);\n  var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n  var m1 = l * 2 - m2;\n  rgba = rgba || [];\n  setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n\n  if (hsla.length === 4) {\n    rgba[3] = hsla[3];\n  }\n\n  return rgba;\n}\n/**\n * @param {Array.<number>} rgba\n * @return {Array.<number>} hsla\n */\n\n\nfunction rgba2hsla(rgba) {\n  if (!rgba) {\n    return;\n  } // RGB from 0 to 255\n\n\n  var R = rgba[0] / 255;\n  var G = rgba[1] / 255;\n  var B = rgba[2] / 255;\n  var vMin = Math.min(R, G, B); // Min. value of RGB\n\n  var vMax = Math.max(R, G, B); // Max. value of RGB\n\n  var delta = vMax - vMin; // Delta RGB value\n\n  var L = (vMax + vMin) / 2;\n  var H;\n  var S; // HSL results from 0 to 1\n\n  if (delta === 0) {\n    H = 0;\n    S = 0;\n  } else {\n    if (L < 0.5) {\n      S = delta / (vMax + vMin);\n    } else {\n      S = delta / (2 - vMax - vMin);\n    }\n\n    var deltaR = ((vMax - R) / 6 + delta / 2) / delta;\n    var deltaG = ((vMax - G) / 6 + delta / 2) / delta;\n    var deltaB = ((vMax - B) / 6 + delta / 2) / delta;\n\n    if (R === vMax) {\n      H = deltaB - deltaG;\n    } else if (G === vMax) {\n      H = 1 / 3 + deltaR - deltaB;\n    } else if (B === vMax) {\n      H = 2 / 3 + deltaG - deltaR;\n    }\n\n    if (H < 0) {\n      H += 1;\n    }\n\n    if (H > 1) {\n      H -= 1;\n    }\n  }\n\n  var hsla = [H * 360, S, L];\n\n  if (rgba[3] != null) {\n    hsla.push(rgba[3]);\n  }\n\n  return hsla;\n}\n/**\n * @param {string} color\n * @param {number} level\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction lift(color, level) {\n  var colorArr = parse(color);\n\n  if (colorArr) {\n    for (var i = 0; i < 3; i++) {\n      if (level < 0) {\n        colorArr[i] = colorArr[i] * (1 - level) | 0;\n      } else {\n        colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0;\n      }\n\n      if (colorArr[i] > 255) {\n        colorArr[i] = 255;\n      } else if (color[i] < 0) {\n        colorArr[i] = 0;\n      }\n    }\n\n    return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n  }\n}\n/**\n * @param {string} color\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction toHex(color) {\n  var colorArr = parse(color);\n\n  if (colorArr) {\n    return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1);\n  }\n}\n/**\n * Map value to color. Faster than lerp methods because color is represented by rgba array.\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.<Array.<number>>} colors List of rgba color array\n * @param {Array.<number>} [out] Mapped gba color array\n * @return {Array.<number>} will be null/undefined if input illegal.\n */\n\n\nfunction fastLerp(normalizedValue, colors, out) {\n  if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n    return;\n  }\n\n  out = out || [];\n  var value = normalizedValue * (colors.length - 1);\n  var leftIndex = Math.floor(value);\n  var rightIndex = Math.ceil(value);\n  var leftColor = colors[leftIndex];\n  var rightColor = colors[rightIndex];\n  var dv = value - leftIndex;\n  out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n  out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n  out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n  out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n  return out;\n}\n/**\n * @deprecated\n */\n\n\nvar fastMapToColor = fastLerp;\n/**\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.<string>} colors Color list.\n * @param {boolean=} fullOutput Default false.\n * @return {(string|Object)} Result color. If fullOutput,\n *                           return {color: ..., leftIndex: ..., rightIndex: ..., value: ...},\n * @memberOf module:zrender/util/color\n */\n\nfunction lerp(normalizedValue, colors, fullOutput) {\n  if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n    return;\n  }\n\n  var value = normalizedValue * (colors.length - 1);\n  var leftIndex = Math.floor(value);\n  var rightIndex = Math.ceil(value);\n  var leftColor = parse(colors[leftIndex]);\n  var rightColor = parse(colors[rightIndex]);\n  var dv = value - leftIndex;\n  var color = stringify([clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)), clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)), clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)), clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))], 'rgba');\n  return fullOutput ? {\n    color: color,\n    leftIndex: leftIndex,\n    rightIndex: rightIndex,\n    value: value\n  } : color;\n}\n/**\n * @deprecated\n */\n\n\nvar mapToColor = lerp;\n/**\n * @param {string} color\n * @param {number=} h 0 ~ 360, ignore when null.\n * @param {number=} s 0 ~ 1, ignore when null.\n * @param {number=} l 0 ~ 1, ignore when null.\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\nfunction modifyHSL(color, h, s, l) {\n  color = parse(color);\n\n  if (color) {\n    color = rgba2hsla(color);\n    h != null && (color[0] = clampCssAngle(h));\n    s != null && (color[1] = parseCssFloat(s));\n    l != null && (color[2] = parseCssFloat(l));\n    return stringify(hsla2rgba(color), 'rgba');\n  }\n}\n/**\n * @param {string} color\n * @param {number=} alpha 0 ~ 1\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\n\nfunction modifyAlpha(color, alpha) {\n  color = parse(color);\n\n  if (color && alpha != null) {\n    color[3] = clampCssFloat(alpha);\n    return stringify(color, 'rgba');\n  }\n}\n/**\n * @param {Array.<number>} arrColor like [12,33,44,0.4]\n * @param {string} type 'rgba', 'hsva', ...\n * @return {string} Result color. (If input illegal, return undefined).\n */\n\n\nfunction stringify(arrColor, type) {\n  if (!arrColor || !arrColor.length) {\n    return;\n  }\n\n  var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n\n  if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n    colorStr += ',' + arrColor[3];\n  }\n\n  return type + '(' + colorStr + ')';\n}\n\nexports.parse = parse;\nexports.lift = lift;\nexports.toHex = toHex;\nexports.fastLerp = fastLerp;\nexports.fastMapToColor = fastMapToColor;\nexports.lerp = lerp;\nexports.mapToColor = mapToColor;\nexports.modifyHSL = modifyHSL;\nexports.modifyAlpha = modifyAlpha;\nexports.stringify = stringify;\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\n\nvar Group = __webpack_require__(177);\n\nvar componentUtil = __webpack_require__(256);\n\nvar clazzUtil = __webpack_require__(143);\n\nvar modelUtil = __webpack_require__(31);\n\nvar graphicUtil = __webpack_require__(23);\n\nvar _task = __webpack_require__(408);\n\nvar createTask = _task.createTask;\n\nvar createRenderPlanner = __webpack_require__(214);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar renderPlanner = createRenderPlanner();\n\nfunction Chart() {\n  /**\n   * @type {module:zrender/container/Group}\n   * @readOnly\n   */\n  this.group = new Group();\n  /**\n   * @type {string}\n   * @readOnly\n   */\n\n  this.uid = componentUtil.getUID('viewChart');\n  this.renderTask = createTask({\n    plan: renderTaskPlan,\n    reset: renderTaskReset\n  });\n  this.renderTask.context = {\n    view: this\n  };\n}\n\nChart.prototype = {\n  type: 'chart',\n\n  /**\n   * Init the chart.\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  init: function (ecModel, api) {},\n\n  /**\n   * Render the chart.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   */\n  render: function (seriesModel, ecModel, api, payload) {},\n\n  /**\n   * Highlight series or specified data item.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   */\n  highlight: function (seriesModel, ecModel, api, payload) {\n    toggleHighlight(seriesModel.getData(), payload, 'emphasis');\n  },\n\n  /**\n   * Downplay series or specified data item.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   */\n  downplay: function (seriesModel, ecModel, api, payload) {\n    toggleHighlight(seriesModel.getData(), payload, 'normal');\n  },\n\n  /**\n   * Remove self.\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  remove: function (ecModel, api) {\n    this.group.removeAll();\n  },\n\n  /**\n   * Dispose self.\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  dispose: function () {},\n\n  /**\n   * Rendering preparation in progressive mode.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   */\n  incrementalPrepareRender: null,\n\n  /**\n   * Render in progressive mode.\n   * @param  {Object} params See taskParams in `stream/task.js`\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   */\n  incrementalRender: null,\n\n  /**\n   * Update transform directly.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   * @return {Object} {update: true}\n   */\n  updateTransform: null,\n\n  /**\n   * The view contains the given point.\n   * @interface\n   * @param {Array.<number>} point\n   * @return {boolean}\n   */\n  // containPoint: function () {}\n\n  /**\n   * @param {string} eventType\n   * @param {Object} query\n   * @param {module:zrender/Element} targetEl\n   * @param {Object} packedEvent\n   * @return {boolen} Pass only when return `true`.\n   */\n  filterForExposedEvent: null\n};\nvar chartProto = Chart.prototype;\n\nchartProto.updateView = chartProto.updateLayout = chartProto.updateVisual = function (seriesModel, ecModel, api, payload) {\n  this.render(seriesModel, ecModel, api, payload);\n};\n/**\n * Set state of single element\n * @param {module:zrender/Element} el\n * @param {string} state 'normal'|'emphasis'\n * @param {number} highlightDigit\n */\n\n\nfunction elSetState(el, state, highlightDigit) {\n  if (el) {\n    el.trigger(state, highlightDigit);\n\n    if (el.isGroup // Simple optimize.\n    && !graphicUtil.isHighDownDispatcher(el)) {\n      for (var i = 0, len = el.childCount(); i < len; i++) {\n        elSetState(el.childAt(i), state, highlightDigit);\n      }\n    }\n  }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload\n * @param {string} state 'normal'|'emphasis'\n */\n\n\nfunction toggleHighlight(data, payload, state) {\n  var dataIndex = modelUtil.queryDataIndex(data, payload);\n  var highlightDigit = payload && payload.highlightKey != null ? graphicUtil.getHighlightDigit(payload.highlightKey) : null;\n\n  if (dataIndex != null) {\n    each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) {\n      elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\n    });\n  } else {\n    data.eachItemGraphicEl(function (el) {\n      elSetState(el, state, highlightDigit);\n    });\n  }\n} // Enable Chart.extend.\n\n\nclazzUtil.enableClassExtend(Chart, ['dispose']); // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Chart, {\n  registerWhenExtend: true\n});\n\nChart.markUpdateMethod = function (payload, methodName) {\n  inner(payload).updateMethod = methodName;\n};\n\nfunction renderTaskPlan(context) {\n  return renderPlanner(context.model);\n}\n\nfunction renderTaskReset(context) {\n  var seriesModel = context.model;\n  var ecModel = context.ecModel;\n  var api = context.api;\n  var payload = context.payload; // ???! remove updateView updateVisual\n\n  var progressiveRender = seriesModel.pipelineContext.progressiveRender;\n  var view = context.view;\n  var updateMethod = payload && inner(payload).updateMethod;\n  var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod // `appendData` is also supported when data amount\n  // is less than progressive threshold.\n  : 'render';\n\n  if (methodName !== 'render') {\n    view[methodName](seriesModel, ecModel, api, payload);\n  }\n\n  return progressMethodMap[methodName];\n}\n\nvar progressMethodMap = {\n  incrementalPrepareRender: {\n    progress: function (params, context) {\n      context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\n    }\n  },\n  render: {\n    // Put view.render in `progress` to support appendData. But in this case\n    // view.render should not be called in reset, otherwise it will be called\n    // twise. Use `forceFirstProgress` to make sure that view.render is called\n    // in any cases.\n    forceFirstProgress: true,\n    progress: function (params, context) {\n      context.view.render(context.model, context.ecModel, context.api, context.payload);\n    }\n  }\n};\nvar _default = Chart;\nmodule.exports = _default;\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\nvar isString = _util.isString;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Note that it is too complicated to support 3d stack by value\n * (have to create two-dimension inverted index), so in 3d case\n * we just support that stacked by index.\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Array.<string|Object>} dimensionInfoList The same as the input of <module:echarts/data/List>.\n *        The input dimensionInfoList will be modified.\n * @param {Object} [opt]\n * @param {boolean} [opt.stackedCoordDimension=''] Specify a coord dimension if needed.\n * @param {boolean} [opt.byIndex=false]\n * @return {Object} calculationInfo\n * {\n *     stackedDimension: string\n *     stackedByDimension: string\n *     isStackedByIndex: boolean\n *     stackedOverDimension: string\n *     stackResultDimension: string\n * }\n */\nfunction enableDataStack(seriesModel, dimensionInfoList, opt) {\n  opt = opt || {};\n  var byIndex = opt.byIndex;\n  var stackedCoordDimension = opt.stackedCoordDimension; // Compatibal: when `stack` is set as '', do not stack.\n\n  var mayStack = !!(seriesModel && seriesModel.get('stack'));\n  var stackedByDimInfo;\n  var stackedDimInfo;\n  var stackResultDimension;\n  var stackedOverDimension;\n  each(dimensionInfoList, function (dimensionInfo, index) {\n    if (isString(dimensionInfo)) {\n      dimensionInfoList[index] = dimensionInfo = {\n        name: dimensionInfo\n      };\n    }\n\n    if (mayStack && !dimensionInfo.isExtraCoord) {\n      // Find the first ordinal dimension as the stackedByDimInfo.\n      if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\n        stackedByDimInfo = dimensionInfo;\n      } // Find the first stackable dimension as the stackedDimInfo.\n\n\n      if (!stackedDimInfo && dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time' && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\n        stackedDimInfo = dimensionInfo;\n      }\n    }\n  });\n\n  if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\n    // Compatible with previous design, value axis (time axis) only stack by index.\n    // It may make sense if the user provides elaborately constructed data.\n    byIndex = true;\n  } // Add stack dimension, they can be both calculated by coordinate system in `unionExtent`.\n  // That put stack logic in List is for using conveniently in echarts extensions, but it\n  // might not be a good way.\n\n\n  if (stackedDimInfo) {\n    // Use a weird name that not duplicated with other names.\n    stackResultDimension = '__\\0ecstackresult';\n    stackedOverDimension = '__\\0ecstackedover'; // Create inverted index to fast query index by value.\n\n    if (stackedByDimInfo) {\n      stackedByDimInfo.createInvertedIndices = true;\n    }\n\n    var stackedDimCoordDim = stackedDimInfo.coordDim;\n    var stackedDimType = stackedDimInfo.type;\n    var stackedDimCoordIndex = 0;\n    each(dimensionInfoList, function (dimensionInfo) {\n      if (dimensionInfo.coordDim === stackedDimCoordDim) {\n        stackedDimCoordIndex++;\n      }\n    });\n    dimensionInfoList.push({\n      name: stackResultDimension,\n      coordDim: stackedDimCoordDim,\n      coordDimIndex: stackedDimCoordIndex,\n      type: stackedDimType,\n      isExtraCoord: true,\n      isCalculationCoord: true\n    });\n    stackedDimCoordIndex++;\n    dimensionInfoList.push({\n      name: stackedOverDimension,\n      // This dimension contains stack base (generally, 0), so do not set it as\n      // `stackedDimCoordDim` to avoid extent calculation, consider log scale.\n      coordDim: stackedOverDimension,\n      coordDimIndex: stackedDimCoordIndex,\n      type: stackedDimType,\n      isExtraCoord: true,\n      isCalculationCoord: true\n    });\n  }\n\n  return {\n    stackedDimension: stackedDimInfo && stackedDimInfo.name,\n    stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\n    isStackedByIndex: byIndex,\n    stackedOverDimension: stackedOverDimension,\n    stackResultDimension: stackResultDimension\n  };\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} stackedDim\n */\n\n\nfunction isDimensionStacked(data, stackedDim\n/*, stackedByDim*/\n) {\n  // Each single series only maps to one pair of axis. So we do not need to\n  // check stackByDim, whatever stacked by a dimension or stacked by index.\n  return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension'); // && (\n  //     stackedByDim != null\n  //         ? stackedByDim === data.getCalculationInfo('stackedByDimension')\n  //         : data.getCalculationInfo('isStackedByIndex')\n  // );\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} targetDim\n * @param {string} [stackedByDim] If not input this parameter, check whether\n *                                stacked by index.\n * @return {string} dimension\n */\n\n\nfunction getStackedDimension(data, targetDim) {\n  return isDimensionStacked(data, targetDim) ? data.getCalculationInfo('stackResultDimension') : targetDim;\n}\n\nexports.enableDataStack = enableDataStack;\nexports.isDimensionStacked = isDimensionStacked;\nexports.getStackedDimension = getStackedDimension;\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(442)('wks');\nvar uid = __webpack_require__(343);\nvar Symbol = __webpack_require__(159).Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar userAgent = __webpack_require__(135);\n\nvar process = global.process;\nvar Deno = global.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\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(59);\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aCallable = __webpack_require__(77);\nvar isNullOrUndefined = __webpack_require__(93);\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\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIntegerOrInfinity = __webpack_require__(78);\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\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(362);\nvar isCallable = __webpack_require__(43);\nvar classofRaw = __webpack_require__(99);\nvar wellKnownSymbol = __webpack_require__(41);\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\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPropertyKey = __webpack_require__(147);\nvar definePropertyModule = __webpack_require__(48);\nvar createPropertyDescriptor = __webpack_require__(112);\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(16);\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\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(99);\nvar global = __webpack_require__(25);\n\nmodule.exports = classof(global.process) == 'process';\n\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar call = __webpack_require__(38);\nvar DESCRIPTORS = __webpack_require__(30);\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(388);\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar ArrayBufferModule = __webpack_require__(293);\nvar anInstance = __webpack_require__(127);\nvar createPropertyDescriptor = __webpack_require__(112);\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar isIntegralNumber = __webpack_require__(380);\nvar toLength = __webpack_require__(100);\nvar toIndex = __webpack_require__(495);\nvar toOffset = __webpack_require__(522);\nvar toPropertyKey = __webpack_require__(147);\nvar hasOwn = __webpack_require__(44);\nvar classof = __webpack_require__(138);\nvar isObject = __webpack_require__(39);\nvar isSymbol = __webpack_require__(168);\nvar create = __webpack_require__(101);\nvar isPrototypeOf = __webpack_require__(113);\nvar setPrototypeOf = __webpack_require__(124);\nvar getOwnPropertyNames = __webpack_require__(148).f;\nvar typedArrayFrom = __webpack_require__(523);\nvar forEach = __webpack_require__(84).forEach;\nvar setSpecies = __webpack_require__(201);\nvar definePropertyModule = __webpack_require__(48);\nvar getOwnPropertyDescriptorModule = __webpack_require__(85);\nvar InternalStateModule = __webpack_require__(73);\nvar inheritIfRequired = __webpack_require__(200);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n  aTypedArrayConstructor(C);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\nvar addGetter = function (it, key) {\n  nativeDefineProperty(it, key, { get: function () {\n    return getInternalState(this)[key];\n  } });\n};\n\nvar isArrayBuffer = function (it) {\n  var klass;\n  return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n  return isTypedArray(target)\n    && !isSymbol(key)\n    && key in target\n    && isIntegralNumber(+key)\n    && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n  key = toPropertyKey(key);\n  return isTypedArrayIndex(target, key)\n    ? createPropertyDescriptor(2, target[key])\n    : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n  key = toPropertyKey(key);\n  if (isTypedArrayIndex(target, key)\n    && isObject(descriptor)\n    && hasOwn(descriptor, 'value')\n    && !hasOwn(descriptor, 'get')\n    && !hasOwn(descriptor, 'set')\n    // TODO: add validation descriptor w/o calling accessors\n    && !descriptor.configurable\n    && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n    && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n  ) {\n    target[key] = descriptor.value;\n    return target;\n  } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n  if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n    getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n    definePropertyModule.f = wrappedDefineProperty;\n    addGetter(TypedArrayPrototype, 'buffer');\n    addGetter(TypedArrayPrototype, 'byteOffset');\n    addGetter(TypedArrayPrototype, 'byteLength');\n    addGetter(TypedArrayPrototype, 'length');\n  }\n\n  $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n    getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n    defineProperty: wrappedDefineProperty\n  });\n\n  module.exports = function (TYPE, wrapper, CLAMPED) {\n    var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n    var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n    var GETTER = 'get' + TYPE;\n    var SETTER = 'set' + TYPE;\n    var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n    var TypedArrayConstructor = NativeTypedArrayConstructor;\n    var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n    var exported = {};\n\n    var getter = function (that, index) {\n      var data = getInternalState(that);\n      return data.view[GETTER](index * BYTES + data.byteOffset, true);\n    };\n\n    var setter = function (that, index, value) {\n      var data = getInternalState(that);\n      if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n      data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n    };\n\n    var addElement = function (that, index) {\n      nativeDefineProperty(that, index, {\n        get: function () {\n          return getter(this, index);\n        },\n        set: function (value) {\n          return setter(this, index, value);\n        },\n        enumerable: true\n      });\n    };\n\n    if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n      TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n        anInstance(that, TypedArrayConstructorPrototype);\n        var index = 0;\n        var byteOffset = 0;\n        var buffer, byteLength, length;\n        if (!isObject(data)) {\n          length = toIndex(data);\n          byteLength = length * BYTES;\n          buffer = new ArrayBuffer(byteLength);\n        } else if (isArrayBuffer(data)) {\n          buffer = data;\n          byteOffset = toOffset(offset, BYTES);\n          var $len = data.byteLength;\n          if ($length === undefined) {\n            if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n            byteLength = $len - byteOffset;\n            if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n          } else {\n            byteLength = toLength($length) * BYTES;\n            if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n          }\n          length = byteLength / BYTES;\n        } else if (isTypedArray(data)) {\n          return fromList(TypedArrayConstructor, data);\n        } else {\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }\n        setInternalState(that, {\n          buffer: buffer,\n          byteOffset: byteOffset,\n          byteLength: byteLength,\n          length: length,\n          view: new DataView(buffer)\n        });\n        while (index < length) addElement(that, index++);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n    } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n      TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n        anInstance(dummy, TypedArrayConstructorPrototype);\n        return inheritIfRequired(function () {\n          if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n          if (isArrayBuffer(data)) return $length !== undefined\n            ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n            : typedArrayOffset !== undefined\n              ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n              : new NativeTypedArrayConstructor(data);\n          if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n          return call(typedArrayFrom, TypedArrayConstructor, data);\n        }(), dummy, TypedArrayConstructor);\n      });\n\n      if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n      forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n        if (!(key in TypedArrayConstructor)) {\n          createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n        }\n      });\n      TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n    }\n\n    if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n    }\n\n    enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n    if (TYPED_ARRAY_TAG) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n    }\n\n    var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;\n\n    exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n    $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n      createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n      createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n    }\n\n    setSpecies(CONSTRUCTOR_NAME);\n  };\n} else module.exports = function () { /* empty */ };\n\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TYPE_DELIMITER = '.';\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\n/**\n * Notice, parseClassType('') should returns {main: '', sub: ''}\n * @public\n */\n\nfunction parseClassType(componentType) {\n  var ret = {\n    main: '',\n    sub: ''\n  };\n\n  if (componentType) {\n    componentType = componentType.split(TYPE_DELIMITER);\n    ret.main = componentType[0] || '';\n    ret.sub = componentType[1] || '';\n  }\n\n  return ret;\n}\n/**\n * @public\n */\n\n\nfunction checkClassType(componentType) {\n  zrUtil.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\n}\n/**\n * @public\n */\n\n\nfunction enableClassExtend(RootClass, mandatoryMethods) {\n  RootClass.$constructor = RootClass;\n\n  RootClass.extend = function (proto) {\n    var superClass = this;\n\n    var ExtendedClass = function () {\n      if (!proto.$constructor) {\n        superClass.apply(this, arguments);\n      } else {\n        proto.$constructor.apply(this, arguments);\n      }\n    };\n\n    zrUtil.extend(ExtendedClass.prototype, proto);\n    ExtendedClass.extend = this.extend;\n    ExtendedClass.superCall = superCall;\n    ExtendedClass.superApply = superApply;\n    zrUtil.inherits(ExtendedClass, this);\n    ExtendedClass.superClass = superClass;\n    return ExtendedClass;\n  };\n}\n\nvar classBase = 0;\n/**\n * Can not use instanceof, consider different scope by\n * cross domain or es module import in ec extensions.\n * Mount a method \"isInstance()\" to Clz.\n */\n\nfunction enableClassCheck(Clz) {\n  var classAttr = ['__\\0is_clz', classBase++, Math.random().toFixed(3)].join('_');\n  Clz.prototype[classAttr] = true;\n\n  Clz.isInstance = function (obj) {\n    return !!(obj && obj[classAttr]);\n  };\n} // superCall should have class info, which can not be fetch from 'this'.\n// Consider this case:\n// class A has method f,\n// class B inherits class A, overrides method f, f call superApply('f'),\n// class C inherits class B, do not overrides method f,\n// then when method of class C is called, dead loop occured.\n\n\nfunction superCall(context, methodName) {\n  var args = zrUtil.slice(arguments, 2);\n  return this.superClass.prototype[methodName].apply(context, args);\n}\n\nfunction superApply(context, methodName, args) {\n  return this.superClass.prototype[methodName].apply(context, args);\n}\n/**\n * @param {Object} entity\n * @param {Object} options\n * @param {boolean} [options.registerWhenExtend]\n * @public\n */\n\n\nfunction enableClassManagement(entity, options) {\n  options = options || {};\n  /**\n   * Component model classes\n   * key: componentType,\n   * value:\n   *     componentClass, when componentType is 'xxx'\n   *     or Object.<subKey, componentClass>, when componentType is 'xxx.yy'\n   * @type {Object}\n   */\n\n  var storage = {};\n\n  entity.registerClass = function (Clazz, componentType) {\n    if (componentType) {\n      checkClassType(componentType);\n      componentType = parseClassType(componentType);\n\n      if (!componentType.sub) {\n        storage[componentType.main] = Clazz;\n      } else if (componentType.sub !== IS_CONTAINER) {\n        var container = makeContainer(componentType);\n        container[componentType.sub] = Clazz;\n      }\n    }\n\n    return Clazz;\n  };\n\n  entity.getClass = function (componentMainType, subType, throwWhenNotFound) {\n    var Clazz = storage[componentMainType];\n\n    if (Clazz && Clazz[IS_CONTAINER]) {\n      Clazz = subType ? Clazz[subType] : null;\n    }\n\n    if (throwWhenNotFound && !Clazz) {\n      throw new Error(!subType ? componentMainType + '.' + 'type should be specified.' : 'Component ' + componentMainType + '.' + (subType || '') + ' not exists. Load it first.');\n    }\n\n    return Clazz;\n  };\n\n  entity.getClassesByMainType = function (componentType) {\n    componentType = parseClassType(componentType);\n    var result = [];\n    var obj = storage[componentType.main];\n\n    if (obj && obj[IS_CONTAINER]) {\n      zrUtil.each(obj, function (o, type) {\n        type !== IS_CONTAINER && result.push(o);\n      });\n    } else {\n      result.push(obj);\n    }\n\n    return result;\n  };\n\n  entity.hasClass = function (componentType) {\n    // Just consider componentType.main.\n    componentType = parseClassType(componentType);\n    return !!storage[componentType.main];\n  };\n  /**\n   * @return {Array.<string>} Like ['aa', 'bb'], but can not be ['aa.xx']\n   */\n\n\n  entity.getAllClassMainTypes = function () {\n    var types = [];\n    zrUtil.each(storage, function (obj, type) {\n      types.push(type);\n    });\n    return types;\n  };\n  /**\n   * If a main type is container and has sub types\n   * @param  {string}  mainType\n   * @return {boolean}\n   */\n\n\n  entity.hasSubTypes = function (componentType) {\n    componentType = parseClassType(componentType);\n    var obj = storage[componentType.main];\n    return obj && obj[IS_CONTAINER];\n  };\n\n  entity.parseClassType = parseClassType;\n\n  function makeContainer(componentType) {\n    var container = storage[componentType.main];\n\n    if (!container || !container[IS_CONTAINER]) {\n      container = storage[componentType.main] = {};\n      container[IS_CONTAINER] = true;\n    }\n\n    return container;\n  }\n\n  if (options.registerWhenExtend) {\n    var originalExtend = entity.extend;\n\n    if (originalExtend) {\n      entity.extend = function (proto) {\n        var ExtendedClass = originalExtend.call(this, proto);\n        return entity.registerClass(ExtendedClass, proto.type);\n      };\n    }\n  }\n\n  return entity;\n}\n/**\n * @param {string|Array.<string>} properties\n */\n\n\nfunction setReadOnly(obj, properties) {// FIXME It seems broken in IE8 simulation of IE11\n  // if (!zrUtil.isArray(properties)) {\n  //     properties = properties != null ? [properties] : [];\n  // }\n  // zrUtil.each(properties, function (prop) {\n  //     var value = obj[prop];\n  //     Object.defineProperty\n  //         && Object.defineProperty(obj, prop, {\n  //             value: value, writable: false\n  //         });\n  //     zrUtil.isArray(obj[prop])\n  //         && Object.freeze\n  //         && Object.freeze(obj[prop]);\n  // });\n}\n\nexports.parseClassType = parseClassType;\nexports.enableClassExtend = enableClassExtend;\nexports.enableClassCheck = enableClassCheck;\nexports.enableClassManagement = enableClassManagement;\nexports.setReadOnly = setReadOnly;\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\nvar getDataItemValue = _model.getDataItemValue;\n\nvar _util = __webpack_require__(2);\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\nvar isTypedArray = _util.isTypedArray;\nvar isArrayLike = _util.isArrayLike;\nvar extend = _util.extend;\nvar assert = _util.assert;\n\nvar Source = __webpack_require__(257);\n\nvar _sourceType = __webpack_require__(258);\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SERIES_LAYOUT_BY_ROW = _sourceType.SERIES_LAYOUT_BY_ROW;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// The result of `guessOrdinal`.\nvar BE_ORDINAL = {\n  Must: 1,\n  // Encounter string but not '-' and not number-like.\n  Might: 2,\n  // Encounter string but number-like.\n  Not: 3 // Other cases\n\n};\nvar inner = makeInner();\n/**\n * @see {module:echarts/data/Source}\n * @param {module:echarts/component/dataset/DatasetModel} datasetModel\n * @return {string} sourceFormat\n */\n\nfunction detectSourceFormat(datasetModel) {\n  var data = datasetModel.option.source;\n  var sourceFormat = SOURCE_FORMAT_UNKNOWN;\n\n  if (isTypedArray(data)) {\n    sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\n  } else if (isArray(data)) {\n    // FIXME Whether tolerate null in top level array?\n    if (data.length === 0) {\n      sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n    }\n\n    for (var i = 0, len = data.length; i < len; i++) {\n      var item = data[i];\n\n      if (item == null) {\n        continue;\n      } else if (isArray(item)) {\n        sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n        break;\n      } else if (isObject(item)) {\n        sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\n        break;\n      }\n    }\n  } else if (isObject(data)) {\n    for (var key in data) {\n      if (data.hasOwnProperty(key) && isArrayLike(data[key])) {\n        sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\n        break;\n      }\n    }\n  } else if (data != null) {\n    throw new Error('Invalid data');\n  }\n\n  inner(datasetModel).sourceFormat = sourceFormat;\n}\n/**\n * [Scenarios]:\n * (1) Provide source data directly:\n *     series: {\n *         encode: {...},\n *         dimensions: [...]\n *         seriesLayoutBy: 'row',\n *         data: [[...]]\n *     }\n * (2) Refer to datasetModel.\n *     series: [{\n *         encode: {...}\n *         // Ignore datasetIndex means `datasetIndex: 0`\n *         // and the dimensions defination in dataset is used\n *     }, {\n *         encode: {...},\n *         seriesLayoutBy: 'column',\n *         datasetIndex: 1\n *     }]\n *\n * Get data from series itself or datset.\n * @return {module:echarts/data/Source} source\n */\n\n\nfunction getSource(seriesModel) {\n  return inner(seriesModel).source;\n}\n/**\n * MUST be called before mergeOption of all series.\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction resetSourceDefaulter(ecModel) {\n  // `datasetMap` is used to make default encode.\n  inner(ecModel).datasetMap = createHashMap();\n}\n/**\n * [Caution]:\n * MUST be called after series option merged and\n * before \"series.getInitailData()\" called.\n *\n * [The rule of making default encode]:\n * Category axis (if exists) alway map to the first dimension.\n * Each other axis occupies a subsequent dimension.\n *\n * [Why make default encode]:\n * Simplify the typing of encode in option, avoiding the case like that:\n * series: [{encode: {x: 0, y: 1}}, {encode: {x: 0, y: 2}}, {encode: {x: 0, y: 3}}],\n * where the \"y\" have to be manually typed as \"1, 2, 3, ...\".\n *\n * @param {module:echarts/model/Series} seriesModel\n */\n\n\nfunction prepareSource(seriesModel) {\n  var seriesOption = seriesModel.option;\n  var data = seriesOption.data;\n  var sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\n  var fromDataset = false;\n  var seriesLayoutBy = seriesOption.seriesLayoutBy;\n  var sourceHeader = seriesOption.sourceHeader;\n  var dimensionsDefine = seriesOption.dimensions;\n  var datasetModel = getDatasetModel(seriesModel);\n\n  if (datasetModel) {\n    var datasetOption = datasetModel.option;\n    data = datasetOption.source;\n    sourceFormat = inner(datasetModel).sourceFormat;\n    fromDataset = true; // These settings from series has higher priority.\n\n    seriesLayoutBy = seriesLayoutBy || datasetOption.seriesLayoutBy;\n    sourceHeader == null && (sourceHeader = datasetOption.sourceHeader);\n    dimensionsDefine = dimensionsDefine || datasetOption.dimensions;\n  }\n\n  var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine);\n  inner(seriesModel).source = new Source({\n    data: data,\n    fromDataset: fromDataset,\n    seriesLayoutBy: seriesLayoutBy,\n    sourceFormat: sourceFormat,\n    dimensionsDefine: completeResult.dimensionsDefine,\n    startIndex: completeResult.startIndex,\n    dimensionsDetectCount: completeResult.dimensionsDetectCount,\n    // Note: dataset option does not have `encode`.\n    encodeDefine: seriesOption.encode\n  });\n} // return {startIndex, dimensionsDefine, dimensionsCount}\n\n\nfunction completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\n  if (!data) {\n    return {\n      dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine)\n    };\n  }\n\n  var dimensionsDetectCount;\n  var startIndex;\n\n  if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n    // Rule: Most of the first line are string: it is header.\n    // Caution: consider a line with 5 string and 1 number,\n    // it still can not be sure it is a head, because the\n    // 5 string may be 5 values of category columns.\n    if (sourceHeader === 'auto' || sourceHeader == null) {\n      arrayRowsTravelFirst(function (val) {\n        // '-' is regarded as null/undefined.\n        if (val != null && val !== '-') {\n          if (isString(val)) {\n            startIndex == null && (startIndex = 1);\n          } else {\n            startIndex = 0;\n          }\n        } // 10 is an experience number, avoid long loop.\n\n      }, seriesLayoutBy, data, 10);\n    } else {\n      startIndex = sourceHeader ? 1 : 0;\n    }\n\n    if (!dimensionsDefine && startIndex === 1) {\n      dimensionsDefine = [];\n      arrayRowsTravelFirst(function (val, index) {\n        dimensionsDefine[index] = val != null ? val : '';\n      }, seriesLayoutBy, data);\n    }\n\n    dimensionsDetectCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? data.length : data[0] ? data[0].length : null;\n  } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n    if (!dimensionsDefine) {\n      dimensionsDefine = objectRowsCollectDimensions(data);\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n    if (!dimensionsDefine) {\n      dimensionsDefine = [];\n      each(data, function (colArr, key) {\n        dimensionsDefine.push(key);\n      });\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n    var value0 = getDataItemValue(data[0]);\n    dimensionsDetectCount = isArray(value0) && value0.length || 1;\n  } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {}\n\n  return {\n    startIndex: startIndex,\n    dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),\n    dimensionsDetectCount: dimensionsDetectCount\n  };\n} // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],\n// which is reasonable. But dimension name is duplicated.\n// Returns undefined or an array contains only object without null/undefiend or string.\n\n\nfunction normalizeDimensionsDefine(dimensionsDefine) {\n  if (!dimensionsDefine) {\n    // The meaning of null/undefined is different from empty array.\n    return;\n  }\n\n  var nameMap = createHashMap();\n  return map(dimensionsDefine, function (item, index) {\n    item = extend({}, isObject(item) ? item : {\n      name: item\n    }); // User can set null in dimensions.\n    // We dont auto specify name, othewise a given name may\n    // cause it be refered unexpectedly.\n\n    if (item.name == null) {\n      return item;\n    } // Also consider number form like 2012.\n\n\n    item.name += ''; // User may also specify displayName.\n    // displayName will always exists except user not\n    // specified or dim name is not specified or detected.\n    // (A auto generated dim name will not be used as\n    // displayName).\n\n    if (item.displayName == null) {\n      item.displayName = item.name;\n    }\n\n    var exist = nameMap.get(item.name);\n\n    if (!exist) {\n      nameMap.set(item.name, {\n        count: 1\n      });\n    } else {\n      item.name += '-' + exist.count++;\n    }\n\n    return item;\n  });\n}\n\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\n  maxLoop == null && (maxLoop = Infinity);\n\n  if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n    for (var i = 0; i < data.length && i < maxLoop; i++) {\n      cb(data[i] ? data[i][0] : null, i);\n    }\n  } else {\n    var value0 = data[0] || [];\n\n    for (var i = 0; i < value0.length && i < maxLoop; i++) {\n      cb(value0[i], i);\n    }\n  }\n}\n\nfunction objectRowsCollectDimensions(data) {\n  var firstIndex = 0;\n  var obj;\n\n  while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line\n\n\n  if (obj) {\n    var dimensions = [];\n    each(obj, function (value, key) {\n      dimensions.push(key);\n    });\n    return dimensions;\n  }\n}\n/**\n * [The strategy of the arrengment of data dimensions for dataset]:\n * \"value way\": all axes are non-category axes. So series one by one take\n *     several (the number is coordSysDims.length) dimensions from dataset.\n *     The result of data arrengment of data dimensions like:\n *     | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |\n * \"category way\": at least one axis is category axis. So the the first data\n *     dimension is always mapped to the first category axis and shared by\n *     all of the series. The other data dimensions are taken by series like\n *     \"value way\" does.\n *     The result of data arrengment of data dimensions like:\n *     | ser_shared_x | ser0_y | ser1_y | ser2_y |\n *\n * @param {Array.<Object|string>} coordDimensions [{name: <string>, type: <string>, dimsDef: <Array>}, ...]\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\n  var encode = {};\n  var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n  if (!datasetModel || !coordDimensions) {\n    return encode;\n  }\n\n  var encodeItemName = [];\n  var encodeSeriesName = [];\n  var ecModel = seriesModel.ecModel;\n  var datasetMap = inner(ecModel).datasetMap;\n  var key = datasetModel.uid + '_' + source.seriesLayoutBy;\n  var baseCategoryDimIndex;\n  var categoryWayValueDimStart;\n  coordDimensions = coordDimensions.slice();\n  each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n    !isObject(coordDimInfo) && (coordDimensions[coordDimIdx] = {\n      name: coordDimInfo\n    });\n\n    if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\n      baseCategoryDimIndex = coordDimIdx;\n      categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimensions[coordDimIdx]);\n    }\n\n    encode[coordDimInfo.name] = [];\n  });\n  var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {\n    categoryWayDim: categoryWayValueDimStart,\n    valueWayDim: 0\n  }); // TODO\n  // Auto detect first time axis and do arrangement.\n\n  each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n    var coordDimName = coordDimInfo.name;\n    var count = getDataDimCountOnCoordDim(coordDimInfo); // In value way.\n\n    if (baseCategoryDimIndex == null) {\n      var start = datasetRecord.valueWayDim;\n      pushDim(encode[coordDimName], start, count);\n      pushDim(encodeSeriesName, start, count);\n      datasetRecord.valueWayDim += count; // ??? TODO give a better default series name rule?\n      // especially when encode x y specified.\n      // consider: when mutiple series share one dimension\n      // category axis, series name should better use\n      // the other dimsion name. On the other hand, use\n      // both dimensions name.\n    } // In category way, the first category axis.\n    else if (baseCategoryDimIndex === coordDimIdx) {\n        pushDim(encode[coordDimName], 0, count);\n        pushDim(encodeItemName, 0, count);\n      } // In category way, the other axis.\n      else {\n          var start = datasetRecord.categoryWayDim;\n          pushDim(encode[coordDimName], start, count);\n          pushDim(encodeSeriesName, start, count);\n          datasetRecord.categoryWayDim += count;\n        }\n  });\n\n  function pushDim(dimIdxArr, idxFrom, idxCount) {\n    for (var i = 0; i < idxCount; i++) {\n      dimIdxArr.push(idxFrom + i);\n    }\n  }\n\n  function getDataDimCountOnCoordDim(coordDimInfo) {\n    var dimsDef = coordDimInfo.dimsDef;\n    return dimsDef ? dimsDef.length : 1;\n  }\n\n  encodeItemName.length && (encode.itemName = encodeItemName);\n  encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\n  return encode;\n}\n/**\n * Work for data like [{name: ..., value: ...}, ...].\n *\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\n  var encode = {};\n  var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n  if (!datasetModel) {\n    return encode;\n  }\n\n  var sourceFormat = source.sourceFormat;\n  var dimensionsDefine = source.dimensionsDefine;\n  var potentialNameDimIndex;\n\n  if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n    each(dimensionsDefine, function (dim, idx) {\n      if ((isObject(dim) ? dim.name : dim) === 'name') {\n        potentialNameDimIndex = idx;\n      }\n    });\n  } // idxResult: {v, n}.\n\n\n  var idxResult = function () {\n    var idxRes0 = {};\n    var idxRes1 = {};\n    var guessRecords = []; // 5 is an experience value.\n\n    for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\n      var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\n      guessRecords.push(guessResult);\n      var isPureNumber = guessResult === BE_ORDINAL.Not; // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,\n      // and then find a name dim with the priority:\n      // \"BE_ORDINAL.Might|BE_ORDINAL.Must\" > \"other dim\" > \"the value dim itself\".\n\n      if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\n        idxRes0.v = i;\n      }\n\n      if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {\n        idxRes0.n = i;\n      }\n\n      if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\n        return idxRes0;\n      } // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not),\n      // find the first BE_ORDINAL.Might as the value dim,\n      // and then find a name dim with the priority:\n      // \"other dim\" > \"the value dim itself\".\n      // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be\n      // treated as number.\n\n\n      if (!isPureNumber) {\n        if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\n          idxRes1.v = i;\n        }\n\n        if (idxRes1.n == null || idxRes1.n === idxRes1.v) {\n          idxRes1.n = i;\n        }\n      }\n    }\n\n    function fulfilled(idxResult) {\n      return idxResult.v != null && idxResult.n != null;\n    }\n\n    return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\n  }();\n\n  if (idxResult) {\n    encode.value = idxResult.v; // `potentialNameDimIndex` has highest priority.\n\n    var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; // By default, label use itemName in charts.\n    // So we dont set encodeLabel here.\n\n    encode.itemName = [nameDimIndex];\n    encode.seriesName = [nameDimIndex];\n  }\n\n  return encode;\n}\n/**\n * If return null/undefined, indicate that should not use datasetModel.\n */\n\n\nfunction getDatasetModel(seriesModel) {\n  var option = seriesModel.option; // Caution: consider the scenario:\n  // A dataset is declared and a series is not expected to use the dataset,\n  // and at the beginning `setOption({series: { noData })` (just prepare other\n  // option but no data), then `setOption({series: {data: [...]}); In this case,\n  // the user should set an empty array to avoid that dataset is used by default.\n\n  var thisData = option.data;\n\n  if (!thisData) {\n    return seriesModel.ecModel.getComponent('dataset', option.datasetIndex || 0);\n  }\n}\n/**\n * The rule should not be complex, otherwise user might not\n * be able to known where the data is wrong.\n * The code is ugly, but how to make it neat?\n *\n * @param {module:echars/data/Source} source\n * @param {number} dimIndex\n * @return {BE_ORDINAL} guess result.\n */\n\n\nfunction guessOrdinal(source, dimIndex) {\n  return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\n} // dimIndex may be overflow source data.\n// return {BE_ORDINAL}\n\n\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\n  var result; // Experience value.\n\n  var maxLoop = 5;\n\n  if (isTypedArray(data)) {\n    return BE_ORDINAL.Not;\n  } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine\n  // always exists in source.\n\n\n  var dimName;\n  var dimType;\n\n  if (dimensionsDefine) {\n    var dimDefItem = dimensionsDefine[dimIndex];\n\n    if (isObject(dimDefItem)) {\n      dimName = dimDefItem.name;\n      dimType = dimDefItem.type;\n    } else if (isString(dimDefItem)) {\n      dimName = dimDefItem;\n    }\n  }\n\n  if (dimType != null) {\n    return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\n  }\n\n  if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n    if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n      var sample = data[dimIndex];\n\n      for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\n        if ((result = detectValue(sample[startIndex + i])) != null) {\n          return result;\n        }\n      }\n    } else {\n      for (var i = 0; i < data.length && i < maxLoop; i++) {\n        var row = data[startIndex + i];\n\n        if (row && (result = detectValue(row[dimIndex])) != null) {\n          return result;\n        }\n      }\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n    if (!dimName) {\n      return BE_ORDINAL.Not;\n    }\n\n    for (var i = 0; i < data.length && i < maxLoop; i++) {\n      var item = data[i];\n\n      if (item && (result = detectValue(item[dimName])) != null) {\n        return result;\n      }\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n    if (!dimName) {\n      return BE_ORDINAL.Not;\n    }\n\n    var sample = data[dimName];\n\n    if (!sample || isTypedArray(sample)) {\n      return BE_ORDINAL.Not;\n    }\n\n    for (var i = 0; i < sample.length && i < maxLoop; i++) {\n      if ((result = detectValue(sample[i])) != null) {\n        return result;\n      }\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n    for (var i = 0; i < data.length && i < maxLoop; i++) {\n      var item = data[i];\n      var val = getDataItemValue(item);\n\n      if (!isArray(val)) {\n        return BE_ORDINAL.Not;\n      }\n\n      if ((result = detectValue(val[dimIndex])) != null) {\n        return result;\n      }\n    }\n  }\n\n  function detectValue(val) {\n    var beStr = isString(val); // Consider usage convenience, '1', '2' will be treated as \"number\".\n    // `isFinit('')` get `true`.\n\n    if (val != null && isFinite(val) && val !== '') {\n      return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\n    } else if (beStr && val !== '-') {\n      return BE_ORDINAL.Must;\n    }\n  }\n\n  return BE_ORDINAL.Not;\n}\n\nexports.BE_ORDINAL = BE_ORDINAL;\nexports.detectSourceFormat = detectSourceFormat;\nexports.getSource = getSource;\nexports.resetSourceDefaulter = resetSourceDefaulter;\nexports.prepareSource = prepareSource;\nexports.makeSeriesEncodeForAxisCoordSys = makeSeriesEncodeForAxisCoordSys;\nexports.makeSeriesEncodeForNameBased = makeSeriesEncodeForNameBased;\nexports.guessOrdinal = guessOrdinal;\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar List = __webpack_require__(116);\n\nvar createDimensions = __webpack_require__(215);\n\nvar _sourceType = __webpack_require__(258);\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\n\nvar _dimensionHelper = __webpack_require__(259);\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _model = __webpack_require__(31);\n\nvar getDataItemValue = _model.getDataItemValue;\n\nvar CoordinateSystem = __webpack_require__(121);\n\nvar _referHelper = __webpack_require__(1043);\n\nvar getCoordSysInfoBySeries = _referHelper.getCoordSysInfoBySeries;\n\nvar Source = __webpack_require__(257);\n\nvar _dataStackHelper = __webpack_require__(132);\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\n\nvar _sourceHelper = __webpack_require__(144);\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/Source|Array} source Or raw data.\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object} [opt]\n * @param {string} [opt.generateCoord]\n * @param {boolean} [opt.useEncodeDefaulter]\n */\nfunction createListFromArray(source, seriesModel, opt) {\n  opt = opt || {};\n\n  if (!Source.isInstance(source)) {\n    source = Source.seriesDataToSource(source);\n  }\n\n  var coordSysName = seriesModel.get('coordinateSystem');\n  var registeredCoordSys = CoordinateSystem.get(coordSysName);\n  var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n  var coordSysDimDefs;\n\n  if (coordSysInfo) {\n    coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n      var dimInfo = {\n        name: dim\n      };\n      var axisModel = coordSysInfo.axisMap.get(dim);\n\n      if (axisModel) {\n        var axisType = axisModel.get('type');\n        dimInfo.type = getDimensionTypeByAxis(axisType); // dimInfo.stackable = isStackable(axisType);\n      }\n\n      return dimInfo;\n    });\n  }\n\n  if (!coordSysDimDefs) {\n    // Get dimensions from registered coordinate system\n    coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n  }\n\n  var dimInfoList = createDimensions(source, {\n    coordDimensions: coordSysDimDefs,\n    generateCoord: opt.generateCoord,\n    encodeDefaulter: opt.useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null\n  });\n  var firstCategoryDimIndex;\n  var hasNameEncode;\n  coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n    var coordDim = dimInfo.coordDim;\n    var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n    if (categoryAxisModel) {\n      if (firstCategoryDimIndex == null) {\n        firstCategoryDimIndex = dimIndex;\n      }\n\n      dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n    }\n\n    if (dimInfo.otherDims.itemName != null) {\n      hasNameEncode = true;\n    }\n  });\n\n  if (!hasNameEncode && firstCategoryDimIndex != null) {\n    dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n  }\n\n  var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\n  var list = new List(dimInfoList, seriesModel);\n  list.setCalculationInfo(stackCalculationInfo);\n  var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n    // Use dataIndex as ordinal value in categoryAxis\n    return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n  } : null;\n  list.hasItemOption = false;\n  list.initData(source, null, dimValueGetter);\n  return list;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n  if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n    var sampleItem = firstDataNotNull(source.data || []);\n    return sampleItem != null && !zrUtil.isArray(getDataItemValue(sampleItem));\n  }\n}\n\nfunction firstDataNotNull(data) {\n  var i = 0;\n\n  while (i < data.length && data[i] == null) {\n    i++;\n  }\n\n  return data[i];\n}\n\nvar _default = createListFromArray;\nmodule.exports = _default;\n\n/***/ }),\n/* 146 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/extends.js\nvar helpers_extends = __webpack_require__(4);\nvar extends_default = /*#__PURE__*/__webpack_require__.n(helpers_extends);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/classCallCheck.js\nvar classCallCheck = __webpack_require__(11);\nvar classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\nvar possibleConstructorReturn = __webpack_require__(10);\nvar possibleConstructorReturn_default = /*#__PURE__*/__webpack_require__.n(possibleConstructorReturn);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/inherits.js\nvar inherits = __webpack_require__(12);\nvar inherits_default = /*#__PURE__*/__webpack_require__.n(inherits);\n\n// EXTERNAL MODULE: external \"react\"\nvar external_react_ = __webpack_require__(0);\nvar external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);\n\n// EXTERNAL MODULE: ./node_modules/prop-types/index.js\nvar prop_types = __webpack_require__(1);\nvar prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);\n\n// EXTERNAL MODULE: external \"react-dom\"\nvar external_react_dom_ = __webpack_require__(19);\nvar external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_);\n\n// EXTERNAL MODULE: ./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js\nvar react_lifecycles_compat_es = __webpack_require__(27);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/Dom/contains.js\nvar contains = __webpack_require__(191);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/Dom/addEventListener.js\nvar addEventListener = __webpack_require__(76);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/ContainerRender.js\nvar ContainerRender = __webpack_require__(349);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/Portal.js\nvar Portal = __webpack_require__(350);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(21);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// CONCATENATED MODULE: ./node_modules/rc-trigger/es/utils.js\n\nfunction isPointsEq(a1, a2, isAlignPoint) {\n  if (isAlignPoint) {\n    return a1[0] === a2[0];\n  }\n  return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nfunction getAlignFromPlacement(builtinPlacements, placementStr, align) {\n  var baseAlign = builtinPlacements[placementStr] || {};\n  return extends_default()({}, baseAlign, align);\n}\n\nfunction getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n  var points = align.points;\n  for (var placement in builtinPlacements) {\n    if (builtinPlacements.hasOwnProperty(placement)) {\n      if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n        return prefixCls + '-placement-' + placement;\n      }\n    }\n  }\n  return '';\n}\n\nfunction saveRef(name, component) {\n  this[name] = component;\n}\n// EXTERNAL MODULE: ./node_modules/rc-align/es/index.js + 3 modules\nvar es = __webpack_require__(464);\n\n// EXTERNAL MODULE: ./node_modules/rc-animate/es/Animate.js + 3 modules\nvar Animate = __webpack_require__(60);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/objectWithoutProperties.js\nvar objectWithoutProperties = __webpack_require__(40);\nvar objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties);\n\n// CONCATENATED MODULE: ./node_modules/rc-trigger/es/LazyRenderBox.js\n\n\n\n\n\n\n\nvar LazyRenderBox_LazyRenderBox = function (_Component) {\n  inherits_default()(LazyRenderBox, _Component);\n\n  function LazyRenderBox() {\n    classCallCheck_default()(this, LazyRenderBox);\n\n    return possibleConstructorReturn_default()(this, _Component.apply(this, arguments));\n  }\n\n  LazyRenderBox.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    return nextProps.hiddenClassName || nextProps.visible;\n  };\n\n  LazyRenderBox.prototype.render = function render() {\n    var _props = this.props,\n        hiddenClassName = _props.hiddenClassName,\n        visible = _props.visible,\n        props = objectWithoutProperties_default()(_props, ['hiddenClassName', 'visible']);\n\n    if (hiddenClassName || external_react_default.a.Children.count(props.children) > 1) {\n      if (!visible && hiddenClassName) {\n        props.className += ' ' + hiddenClassName;\n      }\n      return external_react_default.a.createElement('div', props);\n    }\n\n    return external_react_default.a.Children.only(props.children);\n  };\n\n  return LazyRenderBox;\n}(external_react_[\"Component\"]);\n\nLazyRenderBox_LazyRenderBox.propTypes = {\n  children: prop_types_default.a.any,\n  className: prop_types_default.a.string,\n  visible: prop_types_default.a.bool,\n  hiddenClassName: prop_types_default.a.string\n};\n\n\n/* harmony default export */ var es_LazyRenderBox = (LazyRenderBox_LazyRenderBox);\n// CONCATENATED MODULE: ./node_modules/rc-trigger/es/PopupInner.js\n\n\n\n\n\n\n\nvar PopupInner_PopupInner = function (_Component) {\n  inherits_default()(PopupInner, _Component);\n\n  function PopupInner() {\n    classCallCheck_default()(this, PopupInner);\n\n    return possibleConstructorReturn_default()(this, _Component.apply(this, arguments));\n  }\n\n  PopupInner.prototype.render = function render() {\n    var props = this.props;\n    var className = props.className;\n    if (!props.visible) {\n      className += ' ' + props.hiddenClassName;\n    }\n    return external_react_default.a.createElement(\n      'div',\n      {\n        className: className,\n        onMouseEnter: props.onMouseEnter,\n        onMouseLeave: props.onMouseLeave,\n        onMouseDown: props.onMouseDown,\n        onTouchStart: props.onTouchStart,\n        style: props.style\n      },\n      external_react_default.a.createElement(\n        es_LazyRenderBox,\n        { className: props.prefixCls + '-content', visible: props.visible },\n        props.children\n      )\n    );\n  };\n\n  return PopupInner;\n}(external_react_[\"Component\"]);\n\nPopupInner_PopupInner.propTypes = {\n  hiddenClassName: prop_types_default.a.string,\n  className: prop_types_default.a.string,\n  prefixCls: prop_types_default.a.string,\n  onMouseEnter: prop_types_default.a.func,\n  onMouseLeave: prop_types_default.a.func,\n  onMouseDown: prop_types_default.a.func,\n  onTouchStart: prop_types_default.a.func,\n  children: prop_types_default.a.any\n};\n\n\n/* harmony default export */ var es_PopupInner = (PopupInner_PopupInner);\n// CONCATENATED MODULE: ./node_modules/rc-trigger/es/Popup.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Popup_Popup = function (_Component) {\n  inherits_default()(Popup, _Component);\n\n  function Popup(props) {\n    classCallCheck_default()(this, Popup);\n\n    var _this = possibleConstructorReturn_default()(this, _Component.call(this, props));\n\n    Popup_initialiseProps.call(_this);\n\n    _this.state = {\n      // Used for stretch\n      stretchChecked: false,\n      targetWidth: undefined,\n      targetHeight: undefined\n    };\n\n    _this.savePopupRef = saveRef.bind(_this, 'popupInstance');\n    _this.saveAlignRef = saveRef.bind(_this, 'alignInstance');\n    return _this;\n  }\n\n  Popup.prototype.componentDidMount = function componentDidMount() {\n    this.rootNode = this.getPopupDomNode();\n    this.setStretchSize();\n  };\n\n  Popup.prototype.componentDidUpdate = function componentDidUpdate() {\n    this.setStretchSize();\n  };\n\n  // Record size if stretch needed\n\n\n  Popup.prototype.getPopupDomNode = function getPopupDomNode() {\n    return external_react_dom_default.a.findDOMNode(this.popupInstance);\n  };\n\n  // `target` on `rc-align` can accept as a function to get the bind element or a point.\n  // ref: https://www.npmjs.com/package/rc-align\n\n\n  Popup.prototype.getMaskTransitionName = function getMaskTransitionName() {\n    var props = this.props;\n    var transitionName = props.maskTransitionName;\n    var animation = props.maskAnimation;\n    if (!transitionName && animation) {\n      transitionName = props.prefixCls + '-' + animation;\n    }\n    return transitionName;\n  };\n\n  Popup.prototype.getTransitionName = function getTransitionName() {\n    var props = this.props;\n    var transitionName = props.transitionName;\n    if (!transitionName && props.animation) {\n      transitionName = props.prefixCls + '-' + props.animation;\n    }\n    return transitionName;\n  };\n\n  Popup.prototype.getClassName = function getClassName(currentAlignClassName) {\n    return this.props.prefixCls + ' ' + this.props.className + ' ' + currentAlignClassName;\n  };\n\n  Popup.prototype.getPopupElement = function getPopupElement() {\n    var _this2 = this;\n\n    var savePopupRef = this.savePopupRef;\n    var _state = this.state,\n        stretchChecked = _state.stretchChecked,\n        targetHeight = _state.targetHeight,\n        targetWidth = _state.targetWidth;\n    var _props = this.props,\n        align = _props.align,\n        visible = _props.visible,\n        prefixCls = _props.prefixCls,\n        style = _props.style,\n        getClassNameFromAlign = _props.getClassNameFromAlign,\n        destroyPopupOnHide = _props.destroyPopupOnHide,\n        stretch = _props.stretch,\n        children = _props.children,\n        onMouseEnter = _props.onMouseEnter,\n        onMouseLeave = _props.onMouseLeave,\n        onMouseDown = _props.onMouseDown,\n        onTouchStart = _props.onTouchStart;\n\n    var className = this.getClassName(this.currentAlignClassName || getClassNameFromAlign(align));\n    var hiddenClassName = prefixCls + '-hidden';\n\n    if (!visible) {\n      this.currentAlignClassName = null;\n    }\n\n    var sizeStyle = {};\n    if (stretch) {\n      // Stretch with target\n      if (stretch.indexOf('height') !== -1) {\n        sizeStyle.height = targetHeight;\n      } else if (stretch.indexOf('minHeight') !== -1) {\n        sizeStyle.minHeight = targetHeight;\n      }\n      if (stretch.indexOf('width') !== -1) {\n        sizeStyle.width = targetWidth;\n      } else if (stretch.indexOf('minWidth') !== -1) {\n        sizeStyle.minWidth = targetWidth;\n      }\n\n      // Delay force align to makes ui smooth\n      if (!stretchChecked) {\n        sizeStyle.visibility = 'hidden';\n        setTimeout(function () {\n          if (_this2.alignInstance) {\n            _this2.alignInstance.forceAlign();\n          }\n        }, 0);\n      }\n    }\n\n    var newStyle = extends_default()({}, sizeStyle, style, this.getZIndexStyle());\n\n    var popupInnerProps = {\n      className: className,\n      prefixCls: prefixCls,\n      ref: savePopupRef,\n      onMouseEnter: onMouseEnter,\n      onMouseLeave: onMouseLeave,\n      onMouseDown: onMouseDown,\n      onTouchStart: onTouchStart,\n      style: newStyle\n    };\n    if (destroyPopupOnHide) {\n      return external_react_default.a.createElement(\n        Animate[\"a\" /* default */],\n        {\n          component: '',\n          exclusive: true,\n          transitionAppear: true,\n          transitionName: this.getTransitionName()\n        },\n        visible ? external_react_default.a.createElement(\n          es[\"a\" /* default */],\n          {\n            target: this.getAlignTarget(),\n            key: 'popup',\n            ref: this.saveAlignRef,\n            monitorWindowResize: true,\n            align: align,\n            onAlign: this.onAlign\n          },\n          external_react_default.a.createElement(\n            es_PopupInner,\n            extends_default()({\n              visible: true\n            }, popupInnerProps),\n            children\n          )\n        ) : null\n      );\n    }\n\n    return external_react_default.a.createElement(\n      Animate[\"a\" /* default */],\n      {\n        component: '',\n        exclusive: true,\n        transitionAppear: true,\n        transitionName: this.getTransitionName(),\n        showProp: 'xVisible'\n      },\n      external_react_default.a.createElement(\n        es[\"a\" /* default */],\n        {\n          target: this.getAlignTarget(),\n          key: 'popup',\n          ref: this.saveAlignRef,\n          monitorWindowResize: true,\n          xVisible: visible,\n          childrenProps: { visible: 'xVisible' },\n          disabled: !visible,\n          align: align,\n          onAlign: this.onAlign\n        },\n        external_react_default.a.createElement(\n          es_PopupInner,\n          extends_default()({\n            hiddenClassName: hiddenClassName\n          }, popupInnerProps),\n          children\n        )\n      )\n    );\n  };\n\n  Popup.prototype.getZIndexStyle = function getZIndexStyle() {\n    var style = {};\n    var props = this.props;\n    if (props.zIndex !== undefined) {\n      style.zIndex = props.zIndex;\n    }\n    return style;\n  };\n\n  Popup.prototype.getMaskElement = function getMaskElement() {\n    var props = this.props;\n    var maskElement = void 0;\n    if (props.mask) {\n      var maskTransition = this.getMaskTransitionName();\n      maskElement = external_react_default.a.createElement(es_LazyRenderBox, {\n        style: this.getZIndexStyle(),\n        key: 'mask',\n        className: props.prefixCls + '-mask',\n        hiddenClassName: props.prefixCls + '-mask-hidden',\n        visible: props.visible\n      });\n      if (maskTransition) {\n        maskElement = external_react_default.a.createElement(\n          Animate[\"a\" /* default */],\n          {\n            key: 'mask',\n            showProp: 'visible',\n            transitionAppear: true,\n            component: '',\n            transitionName: maskTransition\n          },\n          maskElement\n        );\n      }\n    }\n    return maskElement;\n  };\n\n  Popup.prototype.render = function render() {\n    return external_react_default.a.createElement(\n      'div',\n      null,\n      this.getMaskElement(),\n      this.getPopupElement()\n    );\n  };\n\n  return Popup;\n}(external_react_[\"Component\"]);\n\nPopup_Popup.propTypes = {\n  visible: prop_types_default.a.bool,\n  style: prop_types_default.a.object,\n  getClassNameFromAlign: prop_types_default.a.func,\n  onAlign: prop_types_default.a.func,\n  getRootDomNode: prop_types_default.a.func,\n  align: prop_types_default.a.any,\n  destroyPopupOnHide: prop_types_default.a.bool,\n  className: prop_types_default.a.string,\n  prefixCls: prop_types_default.a.string,\n  onMouseEnter: prop_types_default.a.func,\n  onMouseLeave: prop_types_default.a.func,\n  onMouseDown: prop_types_default.a.func,\n  onTouchStart: prop_types_default.a.func,\n  stretch: prop_types_default.a.string,\n  children: prop_types_default.a.node,\n  point: prop_types_default.a.shape({\n    pageX: prop_types_default.a.number,\n    pageY: prop_types_default.a.number\n  })\n};\n\nvar Popup_initialiseProps = function _initialiseProps() {\n  var _this3 = this;\n\n  this.onAlign = function (popupDomNode, align) {\n    var props = _this3.props;\n    var currentAlignClassName = props.getClassNameFromAlign(align);\n    // FIX: https://github.com/react-component/trigger/issues/56\n    // FIX: https://github.com/react-component/tooltip/issues/79\n    if (_this3.currentAlignClassName !== currentAlignClassName) {\n      _this3.currentAlignClassName = currentAlignClassName;\n      popupDomNode.className = _this3.getClassName(currentAlignClassName);\n    }\n    props.onAlign(popupDomNode, align);\n  };\n\n  this.setStretchSize = function () {\n    var _props2 = _this3.props,\n        stretch = _props2.stretch,\n        getRootDomNode = _props2.getRootDomNode,\n        visible = _props2.visible;\n    var _state2 = _this3.state,\n        stretchChecked = _state2.stretchChecked,\n        targetHeight = _state2.targetHeight,\n        targetWidth = _state2.targetWidth;\n\n\n    if (!stretch || !visible) {\n      if (stretchChecked) {\n        _this3.setState({ stretchChecked: false });\n      }\n      return;\n    }\n\n    var $ele = getRootDomNode();\n    if (!$ele) return;\n\n    var height = $ele.offsetHeight;\n    var width = $ele.offsetWidth;\n\n    if (targetHeight !== height || targetWidth !== width || !stretchChecked) {\n      _this3.setState({\n        stretchChecked: true,\n        targetHeight: height,\n        targetWidth: width\n      });\n    }\n  };\n\n  this.getTargetElement = function () {\n    return _this3.props.getRootDomNode();\n  };\n\n  this.getAlignTarget = function () {\n    var point = _this3.props.point;\n\n    if (point) {\n      return point;\n    }\n    return _this3.getTargetElement;\n  };\n};\n\n/* harmony default export */ var es_Popup = (Popup_Popup);\n// CONCATENATED MODULE: ./node_modules/rc-trigger/es/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction noop() {}\n\nfunction returnEmptyString() {\n  return '';\n}\n\nfunction returnDocument() {\n  return window.document;\n}\n\nvar ALL_HANDLERS = ['onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur', 'onContextMenu'];\n\nvar IS_REACT_16 = !!external_react_dom_[\"createPortal\"];\n\nvar contextTypes = {\n  rcTrigger: prop_types_default.a.shape({\n    onPopupMouseDown: prop_types_default.a.func\n  })\n};\n\nvar es_Trigger = function (_React$Component) {\n  inherits_default()(Trigger, _React$Component);\n\n  function Trigger(props) {\n    classCallCheck_default()(this, Trigger);\n\n    var _this = possibleConstructorReturn_default()(this, _React$Component.call(this, props));\n\n    es_initialiseProps.call(_this);\n\n    var popupVisible = void 0;\n    if ('popupVisible' in props) {\n      popupVisible = !!props.popupVisible;\n    } else {\n      popupVisible = !!props.defaultPopupVisible;\n    }\n\n    _this.state = {\n      prevPopupVisible: popupVisible,\n      popupVisible: popupVisible\n    };\n\n    ALL_HANDLERS.forEach(function (h) {\n      _this['fire' + h] = function (e) {\n        _this.fireEvents(h, e);\n      };\n    });\n    return _this;\n  }\n\n  Trigger.prototype.getChildContext = function getChildContext() {\n    return {\n      rcTrigger: {\n        onPopupMouseDown: this.onPopupMouseDown\n      }\n    };\n  };\n\n  Trigger.prototype.componentDidMount = function componentDidMount() {\n    this.componentDidUpdate({}, {\n      popupVisible: this.state.popupVisible\n    });\n  };\n\n  Trigger.prototype.componentDidUpdate = function componentDidUpdate(_, prevState) {\n    var props = this.props;\n    var state = this.state;\n    var triggerAfterPopupVisibleChange = function triggerAfterPopupVisibleChange() {\n      if (prevState.popupVisible !== state.popupVisible) {\n        props.afterPopupVisibleChange(state.popupVisible);\n      }\n    };\n    if (!IS_REACT_16) {\n      this.renderComponent(null, triggerAfterPopupVisibleChange);\n    }\n\n    // We must listen to `mousedown` or `touchstart`, edge case:\n    // https://github.com/ant-design/ant-design/issues/5804\n    // https://github.com/react-component/calendar/issues/250\n    // https://github.com/react-component/trigger/issues/50\n    if (state.popupVisible) {\n      var currentDocument = void 0;\n      if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextMenuToShow())) {\n        currentDocument = props.getDocument();\n        this.clickOutsideHandler = Object(addEventListener[\"a\" /* default */])(currentDocument, 'mousedown', this.onDocumentClick);\n      }\n      // always hide on mobile\n      if (!this.touchOutsideHandler) {\n        currentDocument = currentDocument || props.getDocument();\n        this.touchOutsideHandler = Object(addEventListener[\"a\" /* default */])(currentDocument, 'touchstart', this.onDocumentClick);\n      }\n      // close popup when trigger type contains 'onContextMenu' and document is scrolling.\n      if (!this.contextMenuOutsideHandler1 && this.isContextMenuToShow()) {\n        currentDocument = currentDocument || props.getDocument();\n        this.contextMenuOutsideHandler1 = Object(addEventListener[\"a\" /* default */])(currentDocument, 'scroll', this.onContextMenuClose);\n      }\n      // close popup when trigger type contains 'onContextMenu' and window is blur.\n      if (!this.contextMenuOutsideHandler2 && this.isContextMenuToShow()) {\n        this.contextMenuOutsideHandler2 = Object(addEventListener[\"a\" /* default */])(window, 'blur', this.onContextMenuClose);\n      }\n      return;\n    }\n\n    this.clearOutsideHandler();\n  };\n\n  Trigger.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.clearDelayTimer();\n    this.clearOutsideHandler();\n    clearTimeout(this.mouseDownTimeout);\n  };\n\n  Trigger.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var popupVisible = _ref.popupVisible;\n\n    var newState = {};\n\n    if (popupVisible !== undefined && prevState.popupVisible !== popupVisible) {\n      newState.popupVisible = popupVisible;\n      newState.prevPopupVisible = prevState.popupVisible;\n    }\n\n    return newState;\n  };\n\n  Trigger.prototype.getPopupDomNode = function getPopupDomNode() {\n    // for test\n    if (this._component && this._component.getPopupDomNode) {\n      return this._component.getPopupDomNode();\n    }\n    return null;\n  };\n\n  Trigger.prototype.getPopupAlign = function getPopupAlign() {\n    var props = this.props;\n    var popupPlacement = props.popupPlacement,\n        popupAlign = props.popupAlign,\n        builtinPlacements = props.builtinPlacements;\n\n    if (popupPlacement && builtinPlacements) {\n      return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n    }\n    return popupAlign;\n  };\n\n  /**\n   * @param popupVisible    Show or not the popup element\n   * @param event           SyntheticEvent, used for `pointAlign`\n   */\n  Trigger.prototype.setPopupVisible = function setPopupVisible(popupVisible, event) {\n    var alignPoint = this.props.alignPoint;\n    var prevPopupVisible = this.state.popupVisible;\n\n\n    this.clearDelayTimer();\n\n    if (prevPopupVisible !== popupVisible) {\n      if (!('popupVisible' in this.props)) {\n        this.setState({ popupVisible: popupVisible, prevPopupVisible: prevPopupVisible });\n      }\n      this.props.onPopupVisibleChange(popupVisible);\n    }\n\n    // Always record the point position since mouseEnterDelay will delay the show\n    if (alignPoint && event) {\n      this.setPoint(event);\n    }\n  };\n\n  Trigger.prototype.delaySetPopupVisible = function delaySetPopupVisible(visible, delayS, event) {\n    var _this2 = this;\n\n    var delay = delayS * 1000;\n    this.clearDelayTimer();\n    if (delay) {\n      var point = event ? { pageX: event.pageX, pageY: event.pageY } : null;\n      this.delayTimer = setTimeout(function () {\n        _this2.setPopupVisible(visible, point);\n        _this2.clearDelayTimer();\n      }, delay);\n    } else {\n      this.setPopupVisible(visible, event);\n    }\n  };\n\n  Trigger.prototype.clearDelayTimer = function clearDelayTimer() {\n    if (this.delayTimer) {\n      clearTimeout(this.delayTimer);\n      this.delayTimer = null;\n    }\n  };\n\n  Trigger.prototype.clearOutsideHandler = function clearOutsideHandler() {\n    if (this.clickOutsideHandler) {\n      this.clickOutsideHandler.remove();\n      this.clickOutsideHandler = null;\n    }\n\n    if (this.contextMenuOutsideHandler1) {\n      this.contextMenuOutsideHandler1.remove();\n      this.contextMenuOutsideHandler1 = null;\n    }\n\n    if (this.contextMenuOutsideHandler2) {\n      this.contextMenuOutsideHandler2.remove();\n      this.contextMenuOutsideHandler2 = null;\n    }\n\n    if (this.touchOutsideHandler) {\n      this.touchOutsideHandler.remove();\n      this.touchOutsideHandler = null;\n    }\n  };\n\n  Trigger.prototype.createTwoChains = function createTwoChains(event) {\n    var childPros = this.props.children.props;\n    var props = this.props;\n    if (childPros[event] && props[event]) {\n      return this['fire' + event];\n    }\n    return childPros[event] || props[event];\n  };\n\n  Trigger.prototype.isClickToShow = function isClickToShow() {\n    var _props = this.props,\n        action = _props.action,\n        showAction = _props.showAction;\n\n    return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n  };\n\n  Trigger.prototype.isContextMenuToShow = function isContextMenuToShow() {\n    var _props2 = this.props,\n        action = _props2.action,\n        showAction = _props2.showAction;\n\n    return action.indexOf('contextMenu') !== -1 || showAction.indexOf('contextMenu') !== -1;\n  };\n\n  Trigger.prototype.isClickToHide = function isClickToHide() {\n    var _props3 = this.props,\n        action = _props3.action,\n        hideAction = _props3.hideAction;\n\n    return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n  };\n\n  Trigger.prototype.isMouseEnterToShow = function isMouseEnterToShow() {\n    var _props4 = this.props,\n        action = _props4.action,\n        showAction = _props4.showAction;\n\n    return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1;\n  };\n\n  Trigger.prototype.isMouseLeaveToHide = function isMouseLeaveToHide() {\n    var _props5 = this.props,\n        action = _props5.action,\n        hideAction = _props5.hideAction;\n\n    return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1;\n  };\n\n  Trigger.prototype.isFocusToShow = function isFocusToShow() {\n    var _props6 = this.props,\n        action = _props6.action,\n        showAction = _props6.showAction;\n\n    return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n  };\n\n  Trigger.prototype.isBlurToHide = function isBlurToHide() {\n    var _props7 = this.props,\n        action = _props7.action,\n        hideAction = _props7.hideAction;\n\n    return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n  };\n\n  Trigger.prototype.forcePopupAlign = function forcePopupAlign() {\n    if (this.state.popupVisible && this._component && this._component.alignInstance) {\n      this._component.alignInstance.forceAlign();\n    }\n  };\n\n  Trigger.prototype.fireEvents = function fireEvents(type, e) {\n    var childCallback = this.props.children.props[type];\n    if (childCallback) {\n      childCallback(e);\n    }\n    var callback = this.props[type];\n    if (callback) {\n      callback(e);\n    }\n  };\n\n  Trigger.prototype.close = function close() {\n    this.setPopupVisible(false);\n  };\n\n  Trigger.prototype.render = function render() {\n    var _this3 = this;\n\n    var popupVisible = this.state.popupVisible;\n    var _props8 = this.props,\n        children = _props8.children,\n        forceRender = _props8.forceRender,\n        alignPoint = _props8.alignPoint,\n        className = _props8.className;\n\n    var child = external_react_default.a.Children.only(children);\n    var newChildProps = { key: 'trigger' };\n\n    if (this.isContextMenuToShow()) {\n      newChildProps.onContextMenu = this.onContextMenu;\n    } else {\n      newChildProps.onContextMenu = this.createTwoChains('onContextMenu');\n    }\n\n    if (this.isClickToHide() || this.isClickToShow()) {\n      newChildProps.onClick = this.onClick;\n      newChildProps.onMouseDown = this.onMouseDown;\n      newChildProps.onTouchStart = this.onTouchStart;\n    } else {\n      newChildProps.onClick = this.createTwoChains('onClick');\n      newChildProps.onMouseDown = this.createTwoChains('onMouseDown');\n      newChildProps.onTouchStart = this.createTwoChains('onTouchStart');\n    }\n    if (this.isMouseEnterToShow()) {\n      newChildProps.onMouseEnter = this.onMouseEnter;\n      if (alignPoint) {\n        newChildProps.onMouseMove = this.onMouseMove;\n      }\n    } else {\n      newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter');\n    }\n    if (this.isMouseLeaveToHide()) {\n      newChildProps.onMouseLeave = this.onMouseLeave;\n    } else {\n      newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave');\n    }\n    if (this.isFocusToShow() || this.isBlurToHide()) {\n      newChildProps.onFocus = this.onFocus;\n      newChildProps.onBlur = this.onBlur;\n    } else {\n      newChildProps.onFocus = this.createTwoChains('onFocus');\n      newChildProps.onBlur = this.createTwoChains('onBlur');\n    }\n\n    var childrenClassName = classnames_default()(child && child.props && child.props.className, className);\n    if (childrenClassName) {\n      newChildProps.className = childrenClassName;\n    }\n    var trigger = external_react_default.a.cloneElement(child, newChildProps);\n\n    if (!IS_REACT_16) {\n      return external_react_default.a.createElement(\n        ContainerRender[\"a\" /* default */],\n        {\n          parent: this,\n          visible: popupVisible,\n          autoMount: false,\n          forceRender: forceRender,\n          getComponent: this.getComponent,\n          getContainer: this.getContainer\n        },\n        function (_ref2) {\n          var renderComponent = _ref2.renderComponent;\n\n          _this3.renderComponent = renderComponent;\n          return trigger;\n        }\n      );\n    }\n\n    var portal = void 0;\n    // prevent unmounting after it's rendered\n    if (popupVisible || this._component || forceRender) {\n      portal = external_react_default.a.createElement(\n        Portal[\"a\" /* default */],\n        { key: 'portal', getContainer: this.getContainer, didUpdate: this.handlePortalUpdate },\n        this.getComponent()\n      );\n    }\n\n    return [trigger, portal];\n  };\n\n  return Trigger;\n}(external_react_default.a.Component);\n\nes_Trigger.propTypes = {\n  children: prop_types_default.a.any,\n  action: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.arrayOf(prop_types_default.a.string)]),\n  showAction: prop_types_default.a.any,\n  hideAction: prop_types_default.a.any,\n  getPopupClassNameFromAlign: prop_types_default.a.any,\n  onPopupVisibleChange: prop_types_default.a.func,\n  afterPopupVisibleChange: prop_types_default.a.func,\n  popup: prop_types_default.a.oneOfType([prop_types_default.a.node, prop_types_default.a.func]).isRequired,\n  popupStyle: prop_types_default.a.object,\n  prefixCls: prop_types_default.a.string,\n  popupClassName: prop_types_default.a.string,\n  className: prop_types_default.a.string,\n  popupPlacement: prop_types_default.a.string,\n  builtinPlacements: prop_types_default.a.object,\n  popupTransitionName: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.object]),\n  popupAnimation: prop_types_default.a.any,\n  mouseEnterDelay: prop_types_default.a.number,\n  mouseLeaveDelay: prop_types_default.a.number,\n  zIndex: prop_types_default.a.number,\n  focusDelay: prop_types_default.a.number,\n  blurDelay: prop_types_default.a.number,\n  getPopupContainer: prop_types_default.a.func,\n  getDocument: prop_types_default.a.func,\n  forceRender: prop_types_default.a.bool,\n  destroyPopupOnHide: prop_types_default.a.bool,\n  mask: prop_types_default.a.bool,\n  maskClosable: prop_types_default.a.bool,\n  onPopupAlign: prop_types_default.a.func,\n  popupAlign: prop_types_default.a.object,\n  popupVisible: prop_types_default.a.bool,\n  defaultPopupVisible: prop_types_default.a.bool,\n  maskTransitionName: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.object]),\n  maskAnimation: prop_types_default.a.string,\n  stretch: prop_types_default.a.string,\n  alignPoint: prop_types_default.a.bool // Maybe we can support user pass position in the future\n};\nes_Trigger.contextTypes = contextTypes;\nes_Trigger.childContextTypes = contextTypes;\nes_Trigger.defaultProps = {\n  prefixCls: 'rc-trigger-popup',\n  getPopupClassNameFromAlign: returnEmptyString,\n  getDocument: returnDocument,\n  onPopupVisibleChange: noop,\n  afterPopupVisibleChange: noop,\n  onPopupAlign: noop,\n  popupClassName: '',\n  mouseEnterDelay: 0,\n  mouseLeaveDelay: 0.1,\n  focusDelay: 0,\n  blurDelay: 0.15,\n  popupStyle: {},\n  destroyPopupOnHide: false,\n  popupAlign: {},\n  defaultPopupVisible: false,\n  mask: false,\n  maskClosable: true,\n  action: [],\n  showAction: [],\n  hideAction: []\n};\n\nvar es_initialiseProps = function _initialiseProps() {\n  var _this4 = this;\n\n  this.onMouseEnter = function (e) {\n    var mouseEnterDelay = _this4.props.mouseEnterDelay;\n\n    _this4.fireEvents('onMouseEnter', e);\n    _this4.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n  };\n\n  this.onMouseMove = function (e) {\n    _this4.fireEvents('onMouseMove', e);\n    _this4.setPoint(e);\n  };\n\n  this.onMouseLeave = function (e) {\n    _this4.fireEvents('onMouseLeave', e);\n    _this4.delaySetPopupVisible(false, _this4.props.mouseLeaveDelay);\n  };\n\n  this.onPopupMouseEnter = function () {\n    _this4.clearDelayTimer();\n  };\n\n  this.onPopupMouseLeave = function (e) {\n    // https://github.com/react-component/trigger/pull/13\n    // react bug?\n    if (e.relatedTarget && !e.relatedTarget.setTimeout && _this4._component && _this4._component.getPopupDomNode && Object(contains[\"a\" /* default */])(_this4._component.getPopupDomNode(), e.relatedTarget)) {\n      return;\n    }\n    _this4.delaySetPopupVisible(false, _this4.props.mouseLeaveDelay);\n  };\n\n  this.onFocus = function (e) {\n    _this4.fireEvents('onFocus', e);\n    // incase focusin and focusout\n    _this4.clearDelayTimer();\n    if (_this4.isFocusToShow()) {\n      _this4.focusTime = Date.now();\n      _this4.delaySetPopupVisible(true, _this4.props.focusDelay);\n    }\n  };\n\n  this.onMouseDown = function (e) {\n    _this4.fireEvents('onMouseDown', e);\n    _this4.preClickTime = Date.now();\n  };\n\n  this.onTouchStart = function (e) {\n    _this4.fireEvents('onTouchStart', e);\n    _this4.preTouchTime = Date.now();\n  };\n\n  this.onBlur = function (e) {\n    _this4.fireEvents('onBlur', e);\n    _this4.clearDelayTimer();\n    if (_this4.isBlurToHide()) {\n      _this4.delaySetPopupVisible(false, _this4.props.blurDelay);\n    }\n  };\n\n  this.onContextMenu = function (e) {\n    e.preventDefault();\n    _this4.fireEvents('onContextMenu', e);\n    _this4.setPopupVisible(true, e);\n  };\n\n  this.onContextMenuClose = function () {\n    if (_this4.isContextMenuToShow()) {\n      _this4.close();\n    }\n  };\n\n  this.onClick = function (event) {\n    _this4.fireEvents('onClick', event);\n    // focus will trigger click\n    if (_this4.focusTime) {\n      var preTime = void 0;\n      if (_this4.preClickTime && _this4.preTouchTime) {\n        preTime = Math.min(_this4.preClickTime, _this4.preTouchTime);\n      } else if (_this4.preClickTime) {\n        preTime = _this4.preClickTime;\n      } else if (_this4.preTouchTime) {\n        preTime = _this4.preTouchTime;\n      }\n      if (Math.abs(preTime - _this4.focusTime) < 20) {\n        return;\n      }\n      _this4.focusTime = 0;\n    }\n    _this4.preClickTime = 0;\n    _this4.preTouchTime = 0;\n\n    // Only prevent default when all the action is click.\n    // https://github.com/ant-design/ant-design/issues/17043\n    // https://github.com/ant-design/ant-design/issues/17291\n    if (_this4.isClickToShow() && (_this4.isClickToHide() || _this4.isBlurToHide()) && event && event.preventDefault) {\n      event.preventDefault();\n    }\n    var nextVisible = !_this4.state.popupVisible;\n    if (_this4.isClickToHide() && !nextVisible || nextVisible && _this4.isClickToShow()) {\n      _this4.setPopupVisible(!_this4.state.popupVisible, event);\n    }\n  };\n\n  this.onPopupMouseDown = function () {\n    var _context$rcTrigger = _this4.context.rcTrigger,\n        rcTrigger = _context$rcTrigger === undefined ? {} : _context$rcTrigger;\n\n    _this4.hasPopupMouseDown = true;\n\n    clearTimeout(_this4.mouseDownTimeout);\n    _this4.mouseDownTimeout = setTimeout(function () {\n      _this4.hasPopupMouseDown = false;\n    }, 0);\n\n    if (rcTrigger.onPopupMouseDown) {\n      rcTrigger.onPopupMouseDown.apply(rcTrigger, arguments);\n    }\n  };\n\n  this.onDocumentClick = function (event) {\n    if (_this4.props.mask && !_this4.props.maskClosable) {\n      return;\n    }\n\n    var target = event.target;\n    var root = Object(external_react_dom_[\"findDOMNode\"])(_this4);\n    if (!Object(contains[\"a\" /* default */])(root, target) && !_this4.hasPopupMouseDown) {\n      _this4.close();\n    }\n  };\n\n  this.getRootDomNode = function () {\n    return Object(external_react_dom_[\"findDOMNode\"])(_this4);\n  };\n\n  this.getPopupClassNameFromAlign = function (align) {\n    var className = [];\n    var _props9 = _this4.props,\n        popupPlacement = _props9.popupPlacement,\n        builtinPlacements = _props9.builtinPlacements,\n        prefixCls = _props9.prefixCls,\n        alignPoint = _props9.alignPoint,\n        getPopupClassNameFromAlign = _props9.getPopupClassNameFromAlign;\n\n    if (popupPlacement && builtinPlacements) {\n      className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n    }\n    if (getPopupClassNameFromAlign) {\n      className.push(getPopupClassNameFromAlign(align));\n    }\n    return className.join(' ');\n  };\n\n  this.getComponent = function () {\n    var _props10 = _this4.props,\n        prefixCls = _props10.prefixCls,\n        destroyPopupOnHide = _props10.destroyPopupOnHide,\n        popupClassName = _props10.popupClassName,\n        action = _props10.action,\n        onPopupAlign = _props10.onPopupAlign,\n        popupAnimation = _props10.popupAnimation,\n        popupTransitionName = _props10.popupTransitionName,\n        popupStyle = _props10.popupStyle,\n        mask = _props10.mask,\n        maskAnimation = _props10.maskAnimation,\n        maskTransitionName = _props10.maskTransitionName,\n        zIndex = _props10.zIndex,\n        popup = _props10.popup,\n        stretch = _props10.stretch,\n        alignPoint = _props10.alignPoint;\n    var _state = _this4.state,\n        popupVisible = _state.popupVisible,\n        point = _state.point;\n\n\n    var align = _this4.getPopupAlign();\n\n    var mouseProps = {};\n    if (_this4.isMouseEnterToShow()) {\n      mouseProps.onMouseEnter = _this4.onPopupMouseEnter;\n    }\n    if (_this4.isMouseLeaveToHide()) {\n      mouseProps.onMouseLeave = _this4.onPopupMouseLeave;\n    }\n\n    mouseProps.onMouseDown = _this4.onPopupMouseDown;\n    mouseProps.onTouchStart = _this4.onPopupMouseDown;\n\n    return external_react_default.a.createElement(\n      es_Popup,\n      extends_default()({\n        prefixCls: prefixCls,\n        destroyPopupOnHide: destroyPopupOnHide,\n        visible: popupVisible,\n        point: alignPoint && point,\n        className: popupClassName,\n        action: action,\n        align: align,\n        onAlign: onPopupAlign,\n        animation: popupAnimation,\n        getClassNameFromAlign: _this4.getPopupClassNameFromAlign\n      }, mouseProps, {\n        stretch: stretch,\n        getRootDomNode: _this4.getRootDomNode,\n        style: popupStyle,\n        mask: mask,\n        zIndex: zIndex,\n        transitionName: popupTransitionName,\n        maskAnimation: maskAnimation,\n        maskTransitionName: maskTransitionName,\n        ref: _this4.savePopup\n      }),\n      typeof popup === 'function' ? popup() : popup\n    );\n  };\n\n  this.getContainer = function () {\n    var props = _this4.props;\n\n    var popupContainer = document.createElement('div');\n    // Make sure default popup container will never cause scrollbar appearing\n    // https://github.com/react-component/trigger/issues/41\n    popupContainer.style.position = 'absolute';\n    popupContainer.style.top = '0';\n    popupContainer.style.left = '0';\n    popupContainer.style.width = '100%';\n    var mountNode = props.getPopupContainer ? props.getPopupContainer(Object(external_react_dom_[\"findDOMNode\"])(_this4)) : props.getDocument().body;\n    mountNode.appendChild(popupContainer);\n    return popupContainer;\n  };\n\n  this.setPoint = function (point) {\n    var alignPoint = _this4.props.alignPoint;\n\n    if (!alignPoint || !point) return;\n\n    _this4.setState({\n      point: {\n        pageX: point.pageX,\n        pageY: point.pageY\n      }\n    });\n  };\n\n  this.handlePortalUpdate = function () {\n    if (_this4.state.prevPopupVisible !== _this4.state.popupVisible) {\n      _this4.props.afterPopupVisibleChange(_this4.state.popupVisible);\n    }\n  };\n\n  this.savePopup = function (node) {\n    _this4._component = node;\n  };\n};\n\nObject(react_lifecycles_compat_es[\"polyfill\"])(es_Trigger);\n\n/* harmony default export */ var rc_trigger_es = __webpack_exports__[\"a\"] = (es_Trigger);\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toPrimitive = __webpack_require__(278);\nvar isSymbol = __webpack_require__(168);\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\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(470);\nvar enumBugKeys = __webpack_require__(361);\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-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(99);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $reduce = __webpack_require__(291).left;\nvar arrayMethodIsStrict = __webpack_require__(140);\nvar CHROME_VERSION = __webpack_require__(134);\nvar IS_NODE = __webpack_require__(141);\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\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;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\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\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports) {\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n  if (passed < required) throw $TypeError('Not enough arguments');\n  return passed;\n};\n\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _vector = __webpack_require__(56);\n\nvar v2Create = _vector.create;\nvar v2DistSquare = _vector.distSquare;\n\n/**\n * 曲线辅助模块\n * @module zrender/core/curve\n * @author pissang(https://www.github.com/pissang)\n */\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3; // 临时变量\n\nvar _v0 = v2Create();\n\nvar _v1 = v2Create();\n\nvar _v2 = v2Create();\n\nfunction isAroundZero(val) {\n  return val > -EPSILON && val < EPSILON;\n}\n\nfunction isNotAroundZero(val) {\n  return val > EPSILON || val < -EPSILON;\n}\n/**\n * 计算三次贝塞尔值\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {number} t\n * @return {number}\n */\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n  var onet = 1 - t;\n  return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2);\n}\n/**\n * 计算三次贝塞尔导数值\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {number} t\n * @return {number}\n */\n\n\nfunction cubicDerivativeAt(p0, p1, p2, p3, t) {\n  var onet = 1 - t;\n  return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t);\n}\n/**\n * 计算三次贝塞尔方程根，使用盛金公式\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {number} val\n * @param  {Array.<number>} roots\n * @return {number} 有效根数目\n */\n\n\nfunction cubicRootAt(p0, p1, p2, p3, val, roots) {\n  // Evaluate roots of cubic functions\n  var a = p3 + 3 * (p1 - p2) - p0;\n  var b = 3 * (p2 - p1 * 2 + p0);\n  var c = 3 * (p1 - p0);\n  var d = p0 - val;\n  var A = b * b - 3 * a * c;\n  var B = b * c - 9 * a * d;\n  var C = c * c - 3 * b * d;\n  var n = 0;\n\n  if (isAroundZero(A) && isAroundZero(B)) {\n    if (isAroundZero(b)) {\n      roots[0] = 0;\n    } else {\n      var t1 = -c / b; //t1, t2, t3, b is not zero\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n    }\n  } else {\n    var disc = B * B - 4 * A * C;\n\n    if (isAroundZero(disc)) {\n      var K = B / A;\n      var t1 = -b / a + K; // t1, a is not zero\n\n      var t2 = -K / 2; // t2, t3\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n\n      if (t2 >= 0 && t2 <= 1) {\n        roots[n++] = t2;\n      }\n    } else if (disc > 0) {\n      var discSqrt = mathSqrt(disc);\n      var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n      var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n\n      if (Y1 < 0) {\n        Y1 = -mathPow(-Y1, ONE_THIRD);\n      } else {\n        Y1 = mathPow(Y1, ONE_THIRD);\n      }\n\n      if (Y2 < 0) {\n        Y2 = -mathPow(-Y2, ONE_THIRD);\n      } else {\n        Y2 = mathPow(Y2, ONE_THIRD);\n      }\n\n      var t1 = (-b - (Y1 + Y2)) / (3 * a);\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n    } else {\n      var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n      var theta = Math.acos(T) / 3;\n      var ASqrt = mathSqrt(A);\n      var tmp = Math.cos(theta);\n      var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n      var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n      var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n\n      if (t2 >= 0 && t2 <= 1) {\n        roots[n++] = t2;\n      }\n\n      if (t3 >= 0 && t3 <= 1) {\n        roots[n++] = t3;\n      }\n    }\n  }\n\n  return n;\n}\n/**\n * 计算三次贝塞尔方程极限值的位置\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {Array.<number>} extrema\n * @return {number} 有效数目\n */\n\n\nfunction cubicExtrema(p0, p1, p2, p3, extrema) {\n  var b = 6 * p2 - 12 * p1 + 6 * p0;\n  var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n  var c = 3 * p1 - 3 * p0;\n  var n = 0;\n\n  if (isAroundZero(a)) {\n    if (isNotAroundZero(b)) {\n      var t1 = -c / b;\n\n      if (t1 >= 0 && t1 <= 1) {\n        extrema[n++] = t1;\n      }\n    }\n  } else {\n    var disc = b * b - 4 * a * c;\n\n    if (isAroundZero(disc)) {\n      extrema[0] = -b / (2 * a);\n    } else if (disc > 0) {\n      var discSqrt = mathSqrt(disc);\n      var t1 = (-b + discSqrt) / (2 * a);\n      var t2 = (-b - discSqrt) / (2 * a);\n\n      if (t1 >= 0 && t1 <= 1) {\n        extrema[n++] = t1;\n      }\n\n      if (t2 >= 0 && t2 <= 1) {\n        extrema[n++] = t2;\n      }\n    }\n  }\n\n  return n;\n}\n/**\n * 细分三次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {number} t\n * @param  {Array.<number>} out\n */\n\n\nfunction cubicSubdivide(p0, p1, p2, p3, t, out) {\n  var p01 = (p1 - p0) * t + p0;\n  var p12 = (p2 - p1) * t + p1;\n  var p23 = (p3 - p2) * t + p2;\n  var p012 = (p12 - p01) * t + p01;\n  var p123 = (p23 - p12) * t + p12;\n  var p0123 = (p123 - p012) * t + p012; // Seg0\n\n  out[0] = p0;\n  out[1] = p01;\n  out[2] = p012;\n  out[3] = p0123; // Seg1\n\n  out[4] = p0123;\n  out[5] = p123;\n  out[6] = p23;\n  out[7] = p3;\n}\n/**\n * 投射点到三次贝塞尔曲线上，返回投射距离。\n * 投射点有可能会有一个或者多个，这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} x\n * @param {number} y\n * @param {Array.<number>} [out] 投射点\n * @return {number}\n */\n\n\nfunction cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n  // http://pomax.github.io/bezierinfo/#projections\n  var t;\n  var interval = 0.005;\n  var d = Infinity;\n  var prev;\n  var next;\n  var d1;\n  var d2;\n  _v0[0] = x;\n  _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n  // PENDING\n\n  for (var _t = 0; _t < 1; _t += 0.05) {\n    _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n    _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n    d1 = v2DistSquare(_v0, _v1);\n\n    if (d1 < d) {\n      t = _t;\n      d = d1;\n    }\n  }\n\n  d = Infinity; // At most 32 iteration\n\n  for (var i = 0; i < 32; i++) {\n    if (interval < EPSILON_NUMERIC) {\n      break;\n    }\n\n    prev = t - interval;\n    next = t + interval; // t - interval\n\n    _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n    _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n    d1 = v2DistSquare(_v1, _v0);\n\n    if (prev >= 0 && d1 < d) {\n      t = prev;\n      d = d1;\n    } else {\n      // t + interval\n      _v2[0] = cubicAt(x0, x1, x2, x3, next);\n      _v2[1] = cubicAt(y0, y1, y2, y3, next);\n      d2 = v2DistSquare(_v2, _v0);\n\n      if (next <= 1 && d2 < d) {\n        t = next;\n        d = d2;\n      } else {\n        interval *= 0.5;\n      }\n    }\n  } // t\n\n\n  if (out) {\n    out[0] = cubicAt(x0, x1, x2, x3, t);\n    out[1] = cubicAt(y0, y1, y2, y3, t);\n  } // console.log(interval, i);\n\n\n  return mathSqrt(d);\n}\n/**\n * 计算二次方贝塞尔值\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} t\n * @return {number}\n */\n\n\nfunction quadraticAt(p0, p1, p2, t) {\n  var onet = 1 - t;\n  return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\n/**\n * 计算二次方贝塞尔导数值\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} t\n * @return {number}\n */\n\n\nfunction quadraticDerivativeAt(p0, p1, p2, t) {\n  return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\n/**\n * 计算二次方贝塞尔方程根\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} t\n * @param  {Array.<number>} roots\n * @return {number} 有效根数目\n */\n\n\nfunction quadraticRootAt(p0, p1, p2, val, roots) {\n  var a = p0 - 2 * p1 + p2;\n  var b = 2 * (p1 - p0);\n  var c = p0 - val;\n  var n = 0;\n\n  if (isAroundZero(a)) {\n    if (isNotAroundZero(b)) {\n      var t1 = -c / b;\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n    }\n  } else {\n    var disc = b * b - 4 * a * c;\n\n    if (isAroundZero(disc)) {\n      var t1 = -b / (2 * a);\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n    } else if (disc > 0) {\n      var discSqrt = mathSqrt(disc);\n      var t1 = (-b + discSqrt) / (2 * a);\n      var t2 = (-b - discSqrt) / (2 * a);\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n\n      if (t2 >= 0 && t2 <= 1) {\n        roots[n++] = t2;\n      }\n    }\n  }\n\n  return n;\n}\n/**\n * 计算二次贝塞尔方程极限值\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @return {number}\n */\n\n\nfunction quadraticExtremum(p0, p1, p2) {\n  var divider = p0 + p2 - 2 * p1;\n\n  if (divider === 0) {\n    // p1 is center of p0 and p2\n    return 0.5;\n  } else {\n    return (p0 - p1) / divider;\n  }\n}\n/**\n * 细分二次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} t\n * @param  {Array.<number>} out\n */\n\n\nfunction quadraticSubdivide(p0, p1, p2, t, out) {\n  var p01 = (p1 - p0) * t + p0;\n  var p12 = (p2 - p1) * t + p1;\n  var p012 = (p12 - p01) * t + p01; // Seg0\n\n  out[0] = p0;\n  out[1] = p01;\n  out[2] = p012; // Seg1\n\n  out[3] = p012;\n  out[4] = p12;\n  out[5] = p2;\n}\n/**\n * 投射点到二次贝塞尔曲线上，返回投射距离。\n * 投射点有可能会有一个或者多个，这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x\n * @param {number} y\n * @param {Array.<number>} out 投射点\n * @return {number}\n */\n\n\nfunction quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n  // http://pomax.github.io/bezierinfo/#projections\n  var t;\n  var interval = 0.005;\n  var d = Infinity;\n  _v0[0] = x;\n  _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n  // PENDING\n\n  for (var _t = 0; _t < 1; _t += 0.05) {\n    _v1[0] = quadraticAt(x0, x1, x2, _t);\n    _v1[1] = quadraticAt(y0, y1, y2, _t);\n    var d1 = v2DistSquare(_v0, _v1);\n\n    if (d1 < d) {\n      t = _t;\n      d = d1;\n    }\n  }\n\n  d = Infinity; // At most 32 iteration\n\n  for (var i = 0; i < 32; i++) {\n    if (interval < EPSILON_NUMERIC) {\n      break;\n    }\n\n    var prev = t - interval;\n    var next = t + interval; // t - interval\n\n    _v1[0] = quadraticAt(x0, x1, x2, prev);\n    _v1[1] = quadraticAt(y0, y1, y2, prev);\n    var d1 = v2DistSquare(_v1, _v0);\n\n    if (prev >= 0 && d1 < d) {\n      t = prev;\n      d = d1;\n    } else {\n      // t + interval\n      _v2[0] = quadraticAt(x0, x1, x2, next);\n      _v2[1] = quadraticAt(y0, y1, y2, next);\n      var d2 = v2DistSquare(_v2, _v0);\n\n      if (next <= 1 && d2 < d) {\n        t = next;\n        d = d2;\n      } else {\n        interval *= 0.5;\n      }\n    }\n  } // t\n\n\n  if (out) {\n    out[0] = quadraticAt(x0, x1, x2, t);\n    out[1] = quadraticAt(y0, y1, y2, t);\n  } // console.log(interval, i);\n\n\n  return mathSqrt(d);\n}\n\nexports.cubicAt = cubicAt;\nexports.cubicDerivativeAt = cubicDerivativeAt;\nexports.cubicRootAt = cubicRootAt;\nexports.cubicExtrema = cubicExtrema;\nexports.cubicSubdivide = cubicSubdivide;\nexports.cubicProjectPoint = cubicProjectPoint;\nexports.quadraticAt = quadraticAt;\nexports.quadraticDerivativeAt = quadraticDerivativeAt;\nexports.quadraticRootAt = quadraticRootAt;\nexports.quadraticExtremum = quadraticExtremum;\nexports.quadraticSubdivide = quadraticSubdivide;\nexports.quadraticProjectPoint = quadraticProjectPoint;\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ORIGIN_METHOD = '\\0__throttleOriginMethod';\nvar RATE = '\\0__throttleRate';\nvar THROTTLE_TYPE = '\\0__throttleType';\n/**\n * @public\n * @param {(Function)} fn\n * @param {number} [delay=0] Unit: ms.\n * @param {boolean} [debounce=false]\n *        true: If call interval less than `delay`, only the last call works.\n *        false: If call interval less than `delay, call works on fixed rate.\n * @return {(Function)} throttled fn.\n */\n\nfunction throttle(fn, delay, debounce) {\n  var currCall;\n  var lastCall = 0;\n  var lastExec = 0;\n  var timer = null;\n  var diff;\n  var scope;\n  var args;\n  var debounceNextCall;\n  delay = delay || 0;\n\n  function exec() {\n    lastExec = new Date().getTime();\n    timer = null;\n    fn.apply(scope, args || []);\n  }\n\n  var cb = function () {\n    currCall = new Date().getTime();\n    scope = this;\n    args = arguments;\n    var thisDelay = debounceNextCall || delay;\n    var thisDebounce = debounceNextCall || debounce;\n    debounceNextCall = null;\n    diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\n    clearTimeout(timer); // Here we should make sure that: the `exec` SHOULD NOT be called later\n    // than a new call of `cb`, that is, preserving the command order. Consider\n    // calculating \"scale rate\" when roaming as an example. When a call of `cb`\n    // happens, either the `exec` is called dierectly, or the call is delayed.\n    // But the delayed call should never be later than next call of `cb`. Under\n    // this assurance, we can simply update view state each time `dispatchAction`\n    // triggered by user roaming, but not need to add extra code to avoid the\n    // state being \"rolled-back\".\n\n    if (thisDebounce) {\n      timer = setTimeout(exec, thisDelay);\n    } else {\n      if (diff >= 0) {\n        exec();\n      } else {\n        timer = setTimeout(exec, -diff);\n      }\n    }\n\n    lastCall = currCall;\n  };\n  /**\n   * Clear throttle.\n   * @public\n   */\n\n\n  cb.clear = function () {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  };\n  /**\n   * Enable debounce once.\n   */\n\n\n  cb.debounceNextCall = function (debounceDelay) {\n    debounceNextCall = debounceDelay;\n  };\n\n  return cb;\n}\n/**\n * Create throttle method or update throttle rate.\n *\n * @example\n * ComponentView.prototype.render = function () {\n *     ...\n *     throttle.createOrUpdate(\n *         this,\n *         '_dispatchAction',\n *         this.model.get('throttle'),\n *         'fixRate'\n *     );\n * };\n * ComponentView.prototype.remove = function () {\n *     throttle.clear(this, '_dispatchAction');\n * };\n * ComponentView.prototype.dispose = function () {\n *     throttle.clear(this, '_dispatchAction');\n * };\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n * @param {number} [rate]\n * @param {string} [throttleType='fixRate'] 'fixRate' or 'debounce'\n * @return {Function} throttled function.\n */\n\n\nfunction createOrUpdate(obj, fnAttr, rate, throttleType) {\n  var fn = obj[fnAttr];\n\n  if (!fn) {\n    return;\n  }\n\n  var originFn = fn[ORIGIN_METHOD] || fn;\n  var lastThrottleType = fn[THROTTLE_TYPE];\n  var lastRate = fn[RATE];\n\n  if (lastRate !== rate || lastThrottleType !== throttleType) {\n    if (rate == null || !throttleType) {\n      return obj[fnAttr] = originFn;\n    }\n\n    fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\n    fn[ORIGIN_METHOD] = originFn;\n    fn[THROTTLE_TYPE] = throttleType;\n    fn[RATE] = rate;\n  }\n\n  return fn;\n}\n/**\n * Clear throttle. Example see throttle.createOrUpdate.\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n */\n\n\nfunction clear(obj, fnAttr) {\n  var fn = obj[fnAttr];\n\n  if (fn && fn[ORIGIN_METHOD]) {\n    obj[fnAttr] = fn[ORIGIN_METHOD];\n  }\n}\n\nexports.throttle = throttle;\nexports.createOrUpdate = createOrUpdate;\nexports.clear = clear;\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Language: (Simplified) Chinese.\n */\nvar _default = {\n  legend: {\n    selector: {\n      all: '全选',\n      inverse: '反选'\n    }\n  },\n  toolbox: {\n    brush: {\n      title: {\n        rect: '矩形选择',\n        polygon: '圈选',\n        lineX: '横向选择',\n        lineY: '纵向选择',\n        keep: '保持选择',\n        clear: '清除选择'\n      }\n    },\n    dataView: {\n      title: '数据视图',\n      lang: ['数据视图', '关闭', '刷新']\n    },\n    dataZoom: {\n      title: {\n        zoom: '区域缩放',\n        back: '区域缩放还原'\n      }\n    },\n    magicType: {\n      title: {\n        line: '切换为折线图',\n        bar: '切换为柱状图',\n        stack: '切换为堆叠',\n        tiled: '切换为平铺'\n      }\n    },\n    restore: {\n      title: '还原'\n    },\n    saveAsImage: {\n      title: '保存为图片',\n      lang: ['右键另存为图片']\n    }\n  },\n  series: {\n    typeNames: {\n      pie: '饼图',\n      bar: '柱状图',\n      line: '折线图',\n      scatter: '散点图',\n      effectScatter: '涟漪散点图',\n      radar: '雷达图',\n      tree: '树图',\n      treemap: '矩形树图',\n      boxplot: '箱型图',\n      candlestick: 'K线图',\n      k: 'K线图',\n      heatmap: '热力图',\n      map: '地图',\n      parallel: '平行坐标图',\n      lines: '线图',\n      graph: '关系图',\n      sankey: '桑基图',\n      funnel: '漏斗图',\n      gauge: '仪表盘图',\n      pictorialBar: '象形柱图',\n      themeRiver: '主题河流图',\n      sunburst: '旭日图'\n    }\n  },\n  aria: {\n    general: {\n      withTitle: '这是一个关于“{title}”的图表。',\n      withoutTitle: '这是一个图表，'\n    },\n    series: {\n      single: {\n        prefix: '',\n        withName: '图表类型是{seriesType}，表示{seriesName}。',\n        withoutName: '图表类型是{seriesType}。'\n      },\n      multiple: {\n        prefix: '它由{seriesCount}个图表系列组成。',\n        withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType}，',\n        withoutName: '第{seriesId}个系列是一个{seriesType}，',\n        separator: {\n          middle: '；',\n          end: '。'\n        }\n      }\n    },\n    data: {\n      allData: '其数据是——',\n      partialData: '其中，前{displayCnt}项是——',\n      withName: '{name}的数据是{value}',\n      withoutName: '{value}',\n      separator: {\n        middle: '，',\n        end: ''\n      }\n    }\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\nvar map = _util.map;\n\nvar _number = __webpack_require__(26);\n\nvar linearMap = _number.linearMap;\nvar getPixelPrecision = _number.getPixelPrecision;\nvar round = _number.round;\n\nvar _axisTickLabelBuilder = __webpack_require__(1046);\n\nvar createAxisTicks = _axisTickLabelBuilder.createAxisTicks;\nvar createAxisLabels = _axisTickLabelBuilder.createAxisLabels;\nvar calculateCategoryInterval = _axisTickLabelBuilder.calculateCategoryInterval;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NORMALIZED_EXTENT = [0, 1];\n/**\n * Base class of Axis.\n * @constructor\n */\n\nvar Axis = function (dim, scale, extent) {\n  /**\n   * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'.\n   * @type {string}\n   */\n  this.dim = dim;\n  /**\n   * Axis scale\n   * @type {module:echarts/coord/scale/*}\n   */\n\n  this.scale = scale;\n  /**\n   * @type {Array.<number>}\n   * @private\n   */\n\n  this._extent = extent || [0, 0];\n  /**\n   * @type {boolean}\n   */\n\n  this.inverse = false;\n  /**\n   * Usually true when axis has a ordinal scale\n   * @type {boolean}\n   */\n\n  this.onBand = false;\n};\n\nAxis.prototype = {\n  constructor: Axis,\n\n  /**\n   * If axis extent contain given coord\n   * @param {number} coord\n   * @return {boolean}\n   */\n  contain: function (coord) {\n    var extent = this._extent;\n    var min = Math.min(extent[0], extent[1]);\n    var max = Math.max(extent[0], extent[1]);\n    return coord >= min && coord <= max;\n  },\n\n  /**\n   * If axis extent contain given data\n   * @param {number} data\n   * @return {boolean}\n   */\n  containData: function (data) {\n    return this.scale.contain(data);\n  },\n\n  /**\n   * Get coord extent.\n   * @return {Array.<number>}\n   */\n  getExtent: function () {\n    return this._extent.slice();\n  },\n\n  /**\n   * Get precision used for formatting\n   * @param {Array.<number>} [dataExtent]\n   * @return {number}\n   */\n  getPixelPrecision: function (dataExtent) {\n    return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\n  },\n\n  /**\n   * Set coord extent\n   * @param {number} start\n   * @param {number} end\n   */\n  setExtent: function (start, end) {\n    var extent = this._extent;\n    extent[0] = start;\n    extent[1] = end;\n  },\n\n  /**\n   * Convert data to coord. Data is the rank if it has an ordinal scale\n   * @param {number} data\n   * @param  {boolean} clamp\n   * @return {number}\n   */\n  dataToCoord: function (data, clamp) {\n    var extent = this._extent;\n    var scale = this.scale;\n    data = scale.normalize(data);\n\n    if (this.onBand && scale.type === 'ordinal') {\n      extent = extent.slice();\n      fixExtentWithBands(extent, scale.count());\n    }\n\n    return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\n  },\n\n  /**\n   * Convert coord to data. Data is the rank if it has an ordinal scale\n   * @param {number} coord\n   * @param  {boolean} clamp\n   * @return {number}\n   */\n  coordToData: function (coord, clamp) {\n    var extent = this._extent;\n    var scale = this.scale;\n\n    if (this.onBand && scale.type === 'ordinal') {\n      extent = extent.slice();\n      fixExtentWithBands(extent, scale.count());\n    }\n\n    var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\n    return this.scale.scale(t);\n  },\n\n  /**\n   * Convert pixel point to data in axis\n   * @param {Array.<number>} point\n   * @param  {boolean} clamp\n   * @return {number} data\n   */\n  pointToData: function (point, clamp) {// Should be implemented in derived class if necessary.\n  },\n\n  /**\n   * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`,\n   * `axis.getTicksCoords` considers `onBand`, which is used by\n   * `boundaryGap:true` of category axis and splitLine and splitArea.\n   * @param {Object} [opt]\n   * @param {Model} [opt.tickModel=axis.model.getModel('axisTick')]\n   * @param {boolean} [opt.clamp] If `true`, the first and the last\n   *        tick must be at the axis end points. Otherwise, clip ticks\n   *        that outside the axis extent.\n   * @return {Array.<Object>} [{\n   *     coord: ...,\n   *     tickValue: ...\n   * }, ...]\n   */\n  getTicksCoords: function (opt) {\n    opt = opt || {};\n    var tickModel = opt.tickModel || this.getTickModel();\n    var result = createAxisTicks(this, tickModel);\n    var ticks = result.ticks;\n    var ticksCoords = map(ticks, function (tickValue) {\n      return {\n        coord: this.dataToCoord(tickValue),\n        tickValue: tickValue\n      };\n    }, this);\n    var alignWithLabel = tickModel.get('alignWithLabel');\n    fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\n    return ticksCoords;\n  },\n\n  /**\n   * @return {Array.<Array.<Object>>} [{ coord: ..., tickValue: ...}]\n   */\n  getMinorTicksCoords: function () {\n    if (this.scale.type === 'ordinal') {\n      // Category axis doesn't support minor ticks\n      return [];\n    }\n\n    var minorTickModel = this.model.getModel('minorTick');\n    var splitNumber = minorTickModel.get('splitNumber'); // Protection.\n\n    if (!(splitNumber > 0 && splitNumber < 100)) {\n      splitNumber = 5;\n    }\n\n    var minorTicks = this.scale.getMinorTicks(splitNumber);\n    var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\n      return map(minorTicksGroup, function (minorTick) {\n        return {\n          coord: this.dataToCoord(minorTick),\n          tickValue: minorTick\n        };\n      }, this);\n    }, this);\n    return minorTicksCoords;\n  },\n\n  /**\n   * @return {Array.<Object>} [{\n   *     formattedLabel: string,\n   *     rawLabel: axis.scale.getLabel(tickValue)\n   *     tickValue: number\n   * }, ...]\n   */\n  getViewLabels: function () {\n    return createAxisLabels(this).labels;\n  },\n\n  /**\n   * @return {module:echarts/coord/model/Model}\n   */\n  getLabelModel: function () {\n    return this.model.getModel('axisLabel');\n  },\n\n  /**\n   * Notice here we only get the default tick model. For splitLine\n   * or splitArea, we should pass the splitLineModel or splitAreaModel\n   * manually when calling `getTicksCoords`.\n   * In GL, this method may be overrided to:\n   * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`\n   * @return {module:echarts/coord/model/Model}\n   */\n  getTickModel: function () {\n    return this.model.getModel('axisTick');\n  },\n\n  /**\n   * Get width of band\n   * @return {number}\n   */\n  getBandWidth: function () {\n    var axisExtent = this._extent;\n    var dataExtent = this.scale.getExtent();\n    var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); // Fix #2728, avoid NaN when only one data.\n\n    len === 0 && (len = 1);\n    var size = Math.abs(axisExtent[1] - axisExtent[0]);\n    return Math.abs(size) / len;\n  },\n\n  /**\n   * @abstract\n   * @return {boolean} Is horizontal\n   */\n  isHorizontal: null,\n\n  /**\n   * @abstract\n   * @return {number} Get axis rotate, by degree.\n   */\n  getRotate: null,\n\n  /**\n   * Only be called in category axis.\n   * Can be overrided, consider other axes like in 3D.\n   * @return {number} Auto interval for cateogry axis tick and label\n   */\n  calculateCategoryInterval: function () {\n    return calculateCategoryInterval(this);\n  }\n};\n\nfunction fixExtentWithBands(extent, nTick) {\n  var size = extent[1] - extent[0];\n  var len = nTick;\n  var margin = size / len / 2;\n  extent[0] += margin;\n  extent[1] -= margin;\n} // If axis has labels [1, 2, 3, 4]. Bands on the axis are\n// |---1---|---2---|---3---|---4---|.\n// So the displayed ticks and splitLine/splitArea should between\n// each data item, otherwise cause misleading (e.g., split tow bars\n// of a single data item when there are two bar series).\n// Also consider if tickCategoryInterval > 0 and onBand, ticks and\n// splitLine/spliteArea should layout appropriately corresponding\n// to displayed labels. (So we should not use `getBandWidth` in this\n// case).\n\n\nfunction fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\n  var ticksLen = ticksCoords.length;\n\n  if (!axis.onBand || alignWithLabel || !ticksLen) {\n    return;\n  }\n\n  var axisExtent = axis.getExtent();\n  var last;\n  var diffSize;\n\n  if (ticksLen === 1) {\n    ticksCoords[0].coord = axisExtent[0];\n    last = ticksCoords[1] = {\n      coord: axisExtent[0]\n    };\n  } else {\n    var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\n    var shift = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\n    each(ticksCoords, function (ticksItem) {\n      ticksItem.coord -= shift / 2;\n    });\n    var dataExtent = axis.scale.getExtent();\n    diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\n    last = {\n      coord: ticksCoords[ticksLen - 1].coord + shift * diffSize\n    };\n    ticksCoords.push(last);\n  }\n\n  var inverse = axisExtent[0] > axisExtent[1]; // Handling clamp.\n\n  if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\n    clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();\n  }\n\n  if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\n    ticksCoords.unshift({\n      coord: axisExtent[0]\n    });\n  }\n\n  if (littleThan(axisExtent[1], last.coord)) {\n    clamp ? last.coord = axisExtent[1] : ticksCoords.pop();\n  }\n\n  if (clamp && littleThan(last.coord, axisExtent[1])) {\n    ticksCoords.push({\n      coord: axisExtent[1]\n    });\n  }\n\n  function littleThan(a, b) {\n    // Avoid rounding error cause calculated tick coord different with extent.\n    // It may cause an extra unecessary tick added.\n    a = round(a);\n    b = round(b);\n    return inverse ? a > b : a < b;\n  }\n}\n\nvar _default = Axis;\nmodule.exports = _default;\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar retrieve = _util.retrieve;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar each = _util.each;\n\nvar formatUtil = __webpack_require__(50);\n\nvar graphic = __webpack_require__(23);\n\nvar Model = __webpack_require__(67);\n\nvar _number = __webpack_require__(26);\n\nvar isRadianAroundZero = _number.isRadianAroundZero;\nvar remRadian = _number.remRadian;\n\nvar _symbol = __webpack_require__(117);\n\nvar createSymbol = _symbol.createSymbol;\n\nvar matrixUtil = __webpack_require__(89);\n\nvar _vector = __webpack_require__(56);\n\nvar v2ApplyTransform = _vector.applyTransform;\n\nvar _axisHelper = __webpack_require__(122);\n\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\n/**\n * A final axis is translated and rotated from a \"standard axis\".\n * So opt.position and opt.rotation is required.\n *\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\n * for example: (0, 0) ------------> (0, 50)\n *\n * nameDirection or tickDirection or labelDirection is 1 means tick\n * or label is below the standard axis, whereas is -1 means above\n * the standard axis. labelOffset means offset between label and axis,\n * which is useful when 'onZero', where axisLabel is in the grid and\n * label in outside grid.\n *\n * Tips: like always,\n * positive rotation represents anticlockwise, and negative rotation\n * represents clockwise.\n * The direction of position coordinate is the same as the direction\n * of screen coordinate.\n *\n * Do not need to consider axis 'inverse', which is auto processed by\n * axis extent.\n *\n * @param {module:zrender/container/Group} group\n * @param {Object} axisModel\n * @param {Object} opt Standard axis parameters.\n * @param {Array.<number>} opt.position [x, y]\n * @param {number} opt.rotation by radian\n * @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle' or 'center'.\n * @param {number} [opt.tickDirection=1] 1 or -1\n * @param {number} [opt.labelDirection=1] 1 or -1\n * @param {number} [opt.labelOffset=0] Usefull when onZero.\n * @param {string} [opt.axisLabelShow] default get from axisModel.\n * @param {string} [opt.axisName] default get from axisModel.\n * @param {number} [opt.axisNameAvailableWidth]\n * @param {number} [opt.labelRotate] by degree, default get from axisModel.\n * @param {number} [opt.strokeContainThreshold] Default label interval when label\n * @param {number} [opt.nameTruncateMaxWidth]\n */\n\nvar AxisBuilder = function (axisModel, opt) {\n  /**\n   * @readOnly\n   */\n  this.opt = opt;\n  /**\n   * @readOnly\n   */\n\n  this.axisModel = axisModel; // Default value\n\n  defaults(opt, {\n    labelOffset: 0,\n    nameDirection: 1,\n    tickDirection: 1,\n    labelDirection: 1,\n    silent: true\n  });\n  /**\n   * @readOnly\n   */\n\n  this.group = new graphic.Group(); // FIXME Not use a seperate text group?\n\n  var dumbGroup = new graphic.Group({\n    position: opt.position.slice(),\n    rotation: opt.rotation\n  }); // this.group.add(dumbGroup);\n  // this._dumbGroup = dumbGroup;\n\n  dumbGroup.updateTransform();\n  this._transform = dumbGroup.transform;\n  this._dumbGroup = dumbGroup;\n};\n\nAxisBuilder.prototype = {\n  constructor: AxisBuilder,\n  hasBuilder: function (name) {\n    return !!builders[name];\n  },\n  add: function (name) {\n    builders[name].call(this);\n  },\n  getGroup: function () {\n    return this.group;\n  }\n};\nvar builders = {\n  /**\n   * @private\n   */\n  axisLine: function () {\n    var opt = this.opt;\n    var axisModel = this.axisModel;\n\n    if (!axisModel.get('axisLine.show')) {\n      return;\n    }\n\n    var extent = this.axisModel.axis.getExtent();\n    var matrix = this._transform;\n    var pt1 = [extent[0], 0];\n    var pt2 = [extent[1], 0];\n\n    if (matrix) {\n      v2ApplyTransform(pt1, pt1, matrix);\n      v2ApplyTransform(pt2, pt2, matrix);\n    }\n\n    var lineStyle = extend({\n      lineCap: 'round'\n    }, axisModel.getModel('axisLine.lineStyle').getLineStyle());\n    this.group.add(new graphic.Line({\n      // Id for animation\n      anid: 'line',\n      subPixelOptimize: true,\n      shape: {\n        x1: pt1[0],\n        y1: pt1[1],\n        x2: pt2[0],\n        y2: pt2[1]\n      },\n      style: lineStyle,\n      strokeContainThreshold: opt.strokeContainThreshold || 5,\n      silent: true,\n      z2: 1\n    }));\n    var arrows = axisModel.get('axisLine.symbol');\n    var arrowSize = axisModel.get('axisLine.symbolSize');\n    var arrowOffset = axisModel.get('axisLine.symbolOffset') || 0;\n\n    if (typeof arrowOffset === 'number') {\n      arrowOffset = [arrowOffset, arrowOffset];\n    }\n\n    if (arrows != null) {\n      if (typeof arrows === 'string') {\n        // Use the same arrow for start and end point\n        arrows = [arrows, arrows];\n      }\n\n      if (typeof arrowSize === 'string' || typeof arrowSize === 'number') {\n        // Use the same size for width and height\n        arrowSize = [arrowSize, arrowSize];\n      }\n\n      var symbolWidth = arrowSize[0];\n      var symbolHeight = arrowSize[1];\n      each([{\n        rotate: opt.rotation + Math.PI / 2,\n        offset: arrowOffset[0],\n        r: 0\n      }, {\n        rotate: opt.rotation - Math.PI / 2,\n        offset: arrowOffset[1],\n        r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\n      }], function (point, index) {\n        if (arrows[index] !== 'none' && arrows[index] != null) {\n          var symbol = createSymbol(arrows[index], -symbolWidth / 2, -symbolHeight / 2, symbolWidth, symbolHeight, lineStyle.stroke, true); // Calculate arrow position with offset\n\n          var r = point.r + point.offset;\n          var pos = [pt1[0] + r * Math.cos(opt.rotation), pt1[1] - r * Math.sin(opt.rotation)];\n          symbol.attr({\n            rotation: point.rotate,\n            position: pos,\n            silent: true,\n            z2: 11\n          });\n          this.group.add(symbol);\n        }\n      }, this);\n    }\n  },\n\n  /**\n   * @private\n   */\n  axisTickLabel: function () {\n    var axisModel = this.axisModel;\n    var opt = this.opt;\n    var ticksEls = buildAxisMajorTicks(this, axisModel, opt);\n    var labelEls = buildAxisLabel(this, axisModel, opt);\n    fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\n    buildAxisMinorTicks(this, axisModel, opt);\n  },\n\n  /**\n   * @private\n   */\n  axisName: function () {\n    var opt = this.opt;\n    var axisModel = this.axisModel;\n    var name = retrieve(opt.axisName, axisModel.get('name'));\n\n    if (!name) {\n      return;\n    }\n\n    var nameLocation = axisModel.get('nameLocation');\n    var nameDirection = opt.nameDirection;\n    var textStyleModel = axisModel.getModel('nameTextStyle');\n    var gap = axisModel.get('nameGap') || 0;\n    var extent = this.axisModel.axis.getExtent();\n    var gapSignal = extent[0] > extent[1] ? -1 : 1;\n    var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // 'middle'\n    // Reuse labelOffset.\n    isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n    var labelLayout;\n    var nameRotation = axisModel.get('nameRotate');\n\n    if (nameRotation != null) {\n      nameRotation = nameRotation * PI / 180; // To radian.\n    }\n\n    var axisNameAvailableWidth;\n\n    if (isNameLocationCenter(nameLocation)) {\n      labelLayout = innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n      nameDirection);\n    } else {\n      labelLayout = endTextLayout(opt, nameLocation, nameRotation || 0, extent);\n      axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n      if (axisNameAvailableWidth != null) {\n        axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n        !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n      }\n    }\n\n    var textFont = textStyleModel.getFont();\n    var truncateOpt = axisModel.get('nameTruncate', true) || {};\n    var ellipsis = truncateOpt.ellipsis;\n    var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); // FIXME\n    // truncate rich text? (consider performance)\n\n    var truncatedText = ellipsis != null && maxWidth != null ? formatUtil.truncateText(name, maxWidth, textFont, ellipsis, {\n      minChar: 2,\n      placeholder: truncateOpt.placeholder\n    }) : name;\n    var tooltipOpt = axisModel.get('tooltip', true);\n    var mainType = axisModel.mainType;\n    var formatterParams = {\n      componentType: mainType,\n      name: name,\n      $vars: ['name']\n    };\n    formatterParams[mainType + 'Index'] = axisModel.componentIndex;\n    var textEl = new graphic.Text({\n      // Id for animation\n      anid: 'name',\n      __fullText: name,\n      __truncatedText: truncatedText,\n      position: pos,\n      rotation: labelLayout.rotation,\n      silent: isLabelSilent(axisModel),\n      z2: 1,\n      tooltip: tooltipOpt && tooltipOpt.show ? extend({\n        content: name,\n        formatter: function () {\n          return name;\n        },\n        formatterParams: formatterParams\n      }, tooltipOpt) : null\n    });\n    graphic.setTextStyle(textEl.style, textStyleModel, {\n      text: truncatedText,\n      textFont: textFont,\n      textFill: textStyleModel.getTextColor() || axisModel.get('axisLine.lineStyle.color'),\n      textAlign: textStyleModel.get('align') || labelLayout.textAlign,\n      textVerticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\n    });\n\n    if (axisModel.get('triggerEvent')) {\n      textEl.eventData = makeAxisEventDataBase(axisModel);\n      textEl.eventData.targetType = 'axisName';\n      textEl.eventData.name = name;\n    } // FIXME\n\n\n    this._dumbGroup.add(textEl);\n\n    textEl.updateTransform();\n    this.group.add(textEl);\n    textEl.decomposeTransform();\n  }\n};\n\nvar makeAxisEventDataBase = AxisBuilder.makeAxisEventDataBase = function (axisModel) {\n  var eventData = {\n    componentType: axisModel.mainType,\n    componentIndex: axisModel.componentIndex\n  };\n  eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n  return eventData;\n};\n/**\n * @public\n * @static\n * @param {Object} opt\n * @param {number} axisRotation in radian\n * @param {number} textRotation in radian\n * @param {number} direction\n * @return {Object} {\n *  rotation, // according to axis\n *  textAlign,\n *  textVerticalAlign\n * }\n */\n\n\nvar innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n  var rotationDiff = remRadian(textRotation - axisRotation);\n  var textAlign;\n  var textVerticalAlign;\n\n  if (isRadianAroundZero(rotationDiff)) {\n    // Label is parallel with axis line.\n    textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n    textAlign = 'center';\n  } else if (isRadianAroundZero(rotationDiff - PI)) {\n    // Label is inverse parallel with axis line.\n    textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n    textAlign = 'center';\n  } else {\n    textVerticalAlign = 'middle';\n\n    if (rotationDiff > 0 && rotationDiff < PI) {\n      textAlign = direction > 0 ? 'right' : 'left';\n    } else {\n      textAlign = direction > 0 ? 'left' : 'right';\n    }\n  }\n\n  return {\n    rotation: rotationDiff,\n    textAlign: textAlign,\n    textVerticalAlign: textVerticalAlign\n  };\n};\n\nfunction endTextLayout(opt, textPosition, textRotate, extent) {\n  var rotationDiff = remRadian(textRotate - opt.rotation);\n  var textAlign;\n  var textVerticalAlign;\n  var inverse = extent[0] > extent[1];\n  var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n  if (isRadianAroundZero(rotationDiff - PI / 2)) {\n    textVerticalAlign = onLeft ? 'bottom' : 'top';\n    textAlign = 'center';\n  } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n    textVerticalAlign = onLeft ? 'top' : 'bottom';\n    textAlign = 'center';\n  } else {\n    textVerticalAlign = 'middle';\n\n    if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n      textAlign = onLeft ? 'left' : 'right';\n    } else {\n      textAlign = onLeft ? 'right' : 'left';\n    }\n  }\n\n  return {\n    rotation: rotationDiff,\n    textAlign: textAlign,\n    textVerticalAlign: textVerticalAlign\n  };\n}\n\nvar isLabelSilent = AxisBuilder.isLabelSilent = function (axisModel) {\n  var tooltipOpt = axisModel.get('tooltip');\n  return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n  || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n};\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n  if (shouldShowAllLabels(axisModel.axis)) {\n    return;\n  } // If min or max are user set, we need to check\n  // If the tick on min(max) are overlap on their neighbour tick\n  // If they are overlapped, we need to hide the min(max) tick label\n\n\n  var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n  var showMaxLabel = axisModel.get('axisLabel.showMaxLabel'); // FIXME\n  // Have not consider onBand yet, where tick els is more than label els.\n\n  labelEls = labelEls || [];\n  tickEls = tickEls || [];\n  var firstLabel = labelEls[0];\n  var nextLabel = labelEls[1];\n  var lastLabel = labelEls[labelEls.length - 1];\n  var prevLabel = labelEls[labelEls.length - 2];\n  var firstTick = tickEls[0];\n  var nextTick = tickEls[1];\n  var lastTick = tickEls[tickEls.length - 1];\n  var prevTick = tickEls[tickEls.length - 2];\n\n  if (showMinLabel === false) {\n    ignoreEl(firstLabel);\n    ignoreEl(firstTick);\n  } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n    if (showMinLabel) {\n      ignoreEl(nextLabel);\n      ignoreEl(nextTick);\n    } else {\n      ignoreEl(firstLabel);\n      ignoreEl(firstTick);\n    }\n  }\n\n  if (showMaxLabel === false) {\n    ignoreEl(lastLabel);\n    ignoreEl(lastTick);\n  } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n    if (showMaxLabel) {\n      ignoreEl(prevLabel);\n      ignoreEl(prevTick);\n    } else {\n      ignoreEl(lastLabel);\n      ignoreEl(lastTick);\n    }\n  }\n}\n\nfunction ignoreEl(el) {\n  el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next, labelLayout) {\n  // current and next has the same rotation.\n  var firstRect = current && current.getBoundingRect().clone();\n  var nextRect = next && next.getBoundingRect().clone();\n\n  if (!firstRect || !nextRect) {\n    return;\n  } // When checking intersect of two rotated labels, we use mRotationBack\n  // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n  var mRotationBack = matrixUtil.identity([]);\n  matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n  firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n  nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n  return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n  return nameLocation === 'middle' || nameLocation === 'center';\n}\n\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, aniid) {\n  var tickEls = [];\n  var pt1 = [];\n  var pt2 = [];\n\n  for (var i = 0; i < ticksCoords.length; i++) {\n    var tickCoord = ticksCoords[i].coord;\n    pt1[0] = tickCoord;\n    pt1[1] = 0;\n    pt2[0] = tickCoord;\n    pt2[1] = tickEndCoord;\n\n    if (tickTransform) {\n      v2ApplyTransform(pt1, pt1, tickTransform);\n      v2ApplyTransform(pt2, pt2, tickTransform);\n    } // Tick line, Not use group transform to have better line draw\n\n\n    var tickEl = new graphic.Line({\n      // Id for animation\n      anid: aniid + '_' + ticksCoords[i].tickValue,\n      subPixelOptimize: true,\n      shape: {\n        x1: pt1[0],\n        y1: pt1[1],\n        x2: pt2[0],\n        y2: pt2[1]\n      },\n      style: tickLineStyle,\n      z2: 2,\n      silent: true\n    });\n    tickEls.push(tickEl);\n  }\n\n  return tickEls;\n}\n\nfunction buildAxisMajorTicks(axisBuilder, axisModel, opt) {\n  var axis = axisModel.axis;\n  var tickModel = axisModel.getModel('axisTick');\n\n  if (!tickModel.get('show') || axis.scale.isBlank()) {\n    return;\n  }\n\n  var lineStyleModel = tickModel.getModel('lineStyle');\n  var tickEndCoord = opt.tickDirection * tickModel.get('length');\n  var ticksCoords = axis.getTicksCoords();\n  var ticksEls = createTicks(ticksCoords, axisBuilder._transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\n    stroke: axisModel.get('axisLine.lineStyle.color')\n  }), 'ticks');\n\n  for (var i = 0; i < ticksEls.length; i++) {\n    axisBuilder.group.add(ticksEls[i]);\n  }\n\n  return ticksEls;\n}\n\nfunction buildAxisMinorTicks(axisBuilder, axisModel, opt) {\n  var axis = axisModel.axis;\n  var minorTickModel = axisModel.getModel('minorTick');\n\n  if (!minorTickModel.get('show') || axis.scale.isBlank()) {\n    return;\n  }\n\n  var minorTicksCoords = axis.getMinorTicksCoords();\n\n  if (!minorTicksCoords.length) {\n    return;\n  }\n\n  var lineStyleModel = minorTickModel.getModel('lineStyle');\n  var tickEndCoord = opt.tickDirection * minorTickModel.get('length');\n  var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\n    stroke: axisModel.get('axisLine.lineStyle.color')\n  }));\n\n  for (var i = 0; i < minorTicksCoords.length; i++) {\n    var minorTicksEls = createTicks(minorTicksCoords[i], axisBuilder._transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\n\n    for (var k = 0; k < minorTicksEls.length; k++) {\n      axisBuilder.group.add(minorTicksEls[k]);\n    }\n  }\n}\n\nfunction buildAxisLabel(axisBuilder, axisModel, opt) {\n  var axis = axisModel.axis;\n  var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));\n\n  if (!show || axis.scale.isBlank()) {\n    return;\n  }\n\n  var labelModel = axisModel.getModel('axisLabel');\n  var labelMargin = labelModel.get('margin');\n  var labels = axis.getViewLabels(); // Special label rotate.\n\n  var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n  var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n  var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\n  var labelEls = [];\n  var silent = isLabelSilent(axisModel);\n  var triggerEvent = axisModel.get('triggerEvent');\n  each(labels, function (labelItem, index) {\n    var tickValue = labelItem.tickValue;\n    var formattedLabel = labelItem.formattedLabel;\n    var rawLabel = labelItem.rawLabel;\n    var itemLabelModel = labelModel;\n\n    if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n      itemLabelModel = new Model(rawCategoryData[tickValue].textStyle, labelModel, axisModel.ecModel);\n    }\n\n    var textColor = itemLabelModel.getTextColor() || axisModel.get('axisLine.lineStyle.color');\n    var tickCoord = axis.dataToCoord(tickValue);\n    var pos = [tickCoord, opt.labelOffset + opt.labelDirection * labelMargin];\n    var textEl = new graphic.Text({\n      // Id for animation\n      anid: 'label_' + tickValue,\n      position: pos,\n      rotation: labelLayout.rotation,\n      silent: silent,\n      z2: 10\n    });\n    graphic.setTextStyle(textEl.style, itemLabelModel, {\n      text: formattedLabel,\n      textAlign: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n      textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n      textFill: typeof textColor === 'function' ? textColor( // (1) In category axis with data zoom, tick is not the original\n      // index of axis.data. So tick should not be exposed to user\n      // in category axis.\n      // (2) Compatible with previous version, which always use formatted label as\n      // input. But in interval scale the formatted label is like '223,445', which\n      // maked user repalce ','. So we modify it to return original val but remain\n      // it as 'string' to avoid error in replacing.\n      axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\n    }); // Pack data for mouse event\n\n    if (triggerEvent) {\n      textEl.eventData = makeAxisEventDataBase(axisModel);\n      textEl.eventData.targetType = 'axisLabel';\n      textEl.eventData.value = rawLabel;\n    } // FIXME\n\n\n    axisBuilder._dumbGroup.add(textEl);\n\n    textEl.updateTransform();\n    labelEls.push(textEl);\n    axisBuilder.group.add(textEl);\n    textEl.decomposeTransform();\n  });\n  return labelEls;\n}\n\nvar _default = AxisBuilder;\nmodule.exports = _default;\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar features = {};\n\nfunction register(name, ctor) {\n  features[name] = ctor;\n}\n\nfunction get(name) {\n  return features[name];\n}\n\nexports.register = register;\nexports.get = get;\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(159);\nvar core = __webpack_require__(109);\nvar ctx = __webpack_require__(436);\nvar hide = __webpack_require__(221);\nvar has = __webpack_require__(187);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(222);\nvar IE8_DOM_DEFINE = __webpack_require__(631);\nvar toPrimitive = __webpack_require__(437);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(161) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(224)(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports) {\n\nfunction _extends() {\n  module.exports = _extends = Object.assign ? Object.assign.bind() : 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  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 163 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (index);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91)))\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (true) {\n  module.exports = __webpack_require__(1531);\n} else {}\n\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Module dependencies.\n */\n\ntry {\n  var index = __webpack_require__(643);\n} catch (err) {\n  var index = __webpack_require__(643);\n}\n\n/**\n * Whitespace regexp.\n */\n\nvar re = /\\s+/;\n\n/**\n * toString reference.\n */\n\nvar toString = Object.prototype.toString;\n\n/**\n * Wrap `el` in a `ClassList`.\n *\n * @param {Element} el\n * @return {ClassList}\n * @api public\n */\n\nmodule.exports = function(el){\n  return new ClassList(el);\n};\n\n/**\n * Initialize a new ClassList for `el`.\n *\n * @param {Element} el\n * @api private\n */\n\nfunction ClassList(el) {\n  if (!el || !el.nodeType) {\n    throw new Error('A DOM element reference is required');\n  }\n  this.el = el;\n  this.list = el.classList;\n}\n\n/**\n * Add class `name` if not already present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.add = function(name){\n  // classList\n  if (this.list) {\n    this.list.add(name);\n    return this;\n  }\n\n  // fallback\n  var arr = this.array();\n  var i = index(arr, name);\n  if (!~i) arr.push(name);\n  this.el.className = arr.join(' ');\n  return this;\n};\n\n/**\n * Remove class `name` when present, or\n * pass a regular expression to remove\n * any which match.\n *\n * @param {String|RegExp} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.remove = function(name){\n  if ('[object RegExp]' == toString.call(name)) {\n    return this.removeMatching(name);\n  }\n\n  // classList\n  if (this.list) {\n    this.list.remove(name);\n    return this;\n  }\n\n  // fallback\n  var arr = this.array();\n  var i = index(arr, name);\n  if (~i) arr.splice(i, 1);\n  this.el.className = arr.join(' ');\n  return this;\n};\n\n/**\n * Remove all classes matching `re`.\n *\n * @param {RegExp} re\n * @return {ClassList}\n * @api private\n */\n\nClassList.prototype.removeMatching = function(re){\n  var arr = this.array();\n  for (var i = 0; i < arr.length; i++) {\n    if (re.test(arr[i])) {\n      this.remove(arr[i]);\n    }\n  }\n  return this;\n};\n\n/**\n * Toggle class `name`, can force state via `force`.\n *\n * For browsers that support classList, but do not support `force` yet,\n * the mistake will be detected and corrected.\n *\n * @param {String} name\n * @param {Boolean} force\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.toggle = function(name, force){\n  // classList\n  if (this.list) {\n    if (\"undefined\" !== typeof force) {\n      if (force !== this.list.toggle(name, force)) {\n        this.list.toggle(name); // toggle again to correct\n      }\n    } else {\n      this.list.toggle(name);\n    }\n    return this;\n  }\n\n  // fallback\n  if (\"undefined\" !== typeof force) {\n    if (!force) {\n      this.remove(name);\n    } else {\n      this.add(name);\n    }\n  } else {\n    if (this.has(name)) {\n      this.remove(name);\n    } else {\n      this.add(name);\n    }\n  }\n\n  return this;\n};\n\n/**\n * Return an array of classes.\n *\n * @return {Array}\n * @api public\n */\n\nClassList.prototype.array = function(){\n  var className = this.el.getAttribute('class') || '';\n  var str = className.replace(/^\\s+|\\s+$/g, '');\n  var arr = str.split(re);\n  if ('' === arr[0]) arr.shift();\n  return arr;\n};\n\n/**\n * Check if class `name` is present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.has =\nClassList.prototype.contains = function(name){\n  return this.list\n    ? this.list.contains(name)\n    : !! ~index(this.array(), name);\n};\n\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGet = __webpack_require__(453);\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\n\n/***/ }),\n/* 167 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return log; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return isIconDefinition; });\n/* unused harmony export normalizeAttrs */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MiniMap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return generate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return getSecondaryColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return withSuffix; });\n/* harmony import */ var babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);\n/* harmony import */ var babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);\n/* harmony import */ var babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22);\n/* harmony import */ var babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var ant_design_palettes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(678);\n/* harmony import */ var ant_design_palettes__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(ant_design_palettes__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nfunction log(message) {\n    if (!(process && process.env && \"production\" === 'production')) {\n        console.error('[@ant-design/icons-react]: ' + message + '.');\n    }\n}\nfunction isIconDefinition(target) {\n    return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');\n}\nfunction normalizeAttrs() {\n    var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    return Object.keys(attrs).reduce(function (acc, key) {\n        var val = attrs[key];\n        switch (key) {\n            case 'class':\n                acc.className = val;\n                delete acc['class'];\n                break;\n            default:\n                acc[key] = val;\n        }\n        return acc;\n    }, {});\n}\nvar MiniMap = function () {\n    function MiniMap() {\n        babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default()(this, MiniMap);\n\n        this.collection = {};\n    }\n\n    babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default()(MiniMap, [{\n        key: 'clear',\n        value: function clear() {\n            this.collection = {};\n        }\n    }, {\n        key: 'delete',\n        value: function _delete(key) {\n            return delete this.collection[key];\n        }\n    }, {\n        key: 'get',\n        value: function get(key) {\n            return this.collection[key];\n        }\n    }, {\n        key: 'has',\n        value: function has(key) {\n            return Boolean(this.collection[key]);\n        }\n    }, {\n        key: 'set',\n        value: function set(key, value) {\n            this.collection[key] = value;\n            return this;\n        }\n    }, {\n        key: 'size',\n        get: function get() {\n            return Object.keys(this.collection).length;\n        }\n    }]);\n\n    return MiniMap;\n}();\nfunction generate(node, key, rootProps) {\n    if (!rootProps) {\n        return react__WEBPACK_IMPORTED_MODULE_4__[\"createElement\"](node.tag, babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({ key: key }, normalizeAttrs(node.attrs)), (node.children || []).map(function (child, index) {\n            return generate(child, key + '-' + node.tag + '-' + index);\n        }));\n    }\n    return react__WEBPACK_IMPORTED_MODULE_4__[\"createElement\"](node.tag, babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({\n        key: key\n    }, normalizeAttrs(node.attrs), rootProps), (node.children || []).map(function (child, index) {\n        return generate(child, key + '-' + node.tag + '-' + index);\n    }));\n}\nfunction getSecondaryColor(primaryColor) {\n    // choose the second color\n    return Object(ant_design_palettes__WEBPACK_IMPORTED_MODULE_3__[\"generate\"])(primaryColor)[0];\n}\nfunction withSuffix(name, theme) {\n    switch (theme) {\n        case 'fill':\n            return name + '-fill';\n        case 'outline':\n            return name + '-o';\n        case 'twotone':\n            return name + '-twotone';\n        default:\n            throw new TypeError('Unknown theme type: ' + theme + ', name: ' + name);\n    }\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(434)))\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(59);\nvar isCallable = __webpack_require__(43);\nvar isPrototypeOf = __webpack_require__(113);\nvar USE_SYMBOL_AS_UID = __webpack_require__(465);\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\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports) {\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\n\nmodule.exports = uncurryThis([].slice);\n\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar toObject = __webpack_require__(47);\nvar toAbsoluteIndex = __webpack_require__(137);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar setArrayLength = __webpack_require__(372);\nvar doesNotExceedSafeInteger = __webpack_require__(238);\nvar arraySpeciesCreate = __webpack_require__(234);\nvar createProperty = __webpack_require__(139);\nvar deletePropertyOrThrow = __webpack_require__(285);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(239);\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\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar hiddenKeys = __webpack_require__(229);\nvar isObject = __webpack_require__(39);\nvar hasOwn = __webpack_require__(44);\nvar defineProperty = __webpack_require__(48).f;\nvar getOwnPropertyNamesModule = __webpack_require__(148);\nvar getOwnPropertyNamesExternalModule = __webpack_require__(364);\nvar isExtensible = __webpack_require__(297);\nvar uid = __webpack_require__(197);\nvar FREEZING = __webpack_require__(243);\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + id++, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar enable = function () {\n  meta.enable = function () { /* empty */ };\n  REQUIRED = true;\n  var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n  var splice = uncurryThis([].splice);\n  var test = {};\n  test[METADATA] = 1;\n\n  // prevent exposing of metadata key\n  if (getOwnPropertyNames(test).length) {\n    getOwnPropertyNamesModule.f = function (it) {\n      var result = getOwnPropertyNames(it);\n      for (var i = 0, length = result.length; i < length; i++) {\n        if (result[i] === METADATA) {\n          splice(result, i, 1);\n          break;\n        }\n      } return result;\n    };\n\n    $({ target: 'Object', stat: true, forced: true }, {\n      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n    });\n  }\n};\n\nvar meta = module.exports = {\n  enable: enable,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar aCallable = __webpack_require__(77);\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 $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\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(209),\n    getRawTag = __webpack_require__(946),\n    objectToString = __webpack_require__(947);\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\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsNative = __webpack_require__(969),\n    getValue = __webpack_require__(972);\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\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports) {\n\n/**\n * Event Mixin\n * @module zrender/mixin/Eventful\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n *         pissang (https://www.github.com/pissang)\n */\nvar arrySlice = Array.prototype.slice;\n/**\n * Event dispatcher.\n *\n * @alias module:zrender/mixin/Eventful\n * @constructor\n * @param {Object} [eventProcessor] The object eventProcessor is the scope when\n *        `eventProcessor.xxx` called.\n * @param {Function} [eventProcessor.normalizeQuery]\n *        param: {string|Object} Raw query.\n *        return: {string|Object} Normalized query.\n * @param {Function} [eventProcessor.filter] Event will be dispatched only\n *        if it returns `true`.\n *        param: {string} eventType\n *        param: {string|Object} query\n *        return: {boolean}\n * @param {Function} [eventProcessor.afterTrigger] Called after all handlers called.\n *        param: {string} eventType\n */\n\nvar Eventful = function (eventProcessor) {\n  this._$handlers = {};\n  this._$eventProcessor = eventProcessor;\n};\n\nEventful.prototype = {\n  constructor: Eventful,\n\n  /**\n   * The handler can only be triggered once, then removed.\n   *\n   * @param {string} event The event name.\n   * @param {string|Object} [query] Condition used on event filter.\n   * @param {Function} handler The event handler.\n   * @param {Object} context\n   */\n  one: function (event, query, handler, context) {\n    return on(this, event, query, handler, context, true);\n  },\n\n  /**\n   * Bind a handler.\n   *\n   * @param {string} event The event name.\n   * @param {string|Object} [query] Condition used on event filter.\n   * @param {Function} handler The event handler.\n   * @param {Object} [context]\n   */\n  on: function (event, query, handler, context) {\n    return on(this, event, query, handler, context, false);\n  },\n\n  /**\n   * Whether any handler has bound.\n   *\n   * @param  {string}  event\n   * @return {boolean}\n   */\n  isSilent: function (event) {\n    var _h = this._$handlers;\n    return !_h[event] || !_h[event].length;\n  },\n\n  /**\n   * Unbind a event.\n   *\n   * @param {string} [event] The event name.\n   *        If no `event` input, \"off\" all listeners.\n   * @param {Function} [handler] The event handler.\n   *        If no `handler` input, \"off\" all listeners of the `event`.\n   */\n  off: function (event, handler) {\n    var _h = this._$handlers;\n\n    if (!event) {\n      this._$handlers = {};\n      return this;\n    }\n\n    if (handler) {\n      if (_h[event]) {\n        var newList = [];\n\n        for (var i = 0, l = _h[event].length; i < l; i++) {\n          if (_h[event][i].h !== handler) {\n            newList.push(_h[event][i]);\n          }\n        }\n\n        _h[event] = newList;\n      }\n\n      if (_h[event] && _h[event].length === 0) {\n        delete _h[event];\n      }\n    } else {\n      delete _h[event];\n    }\n\n    return this;\n  },\n\n  /**\n   * Dispatch a event.\n   *\n   * @param {string} type The event name.\n   */\n  trigger: function (type) {\n    var _h = this._$handlers[type];\n    var eventProcessor = this._$eventProcessor;\n\n    if (_h) {\n      var args = arguments;\n      var argLen = args.length;\n\n      if (argLen > 3) {\n        args = arrySlice.call(args, 1);\n      }\n\n      var len = _h.length;\n\n      for (var i = 0; i < len;) {\n        var hItem = _h[i];\n\n        if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n          i++;\n          continue;\n        } // Optimize advise from backbone\n\n\n        switch (argLen) {\n          case 1:\n            hItem.h.call(hItem.ctx);\n            break;\n\n          case 2:\n            hItem.h.call(hItem.ctx, args[1]);\n            break;\n\n          case 3:\n            hItem.h.call(hItem.ctx, args[1], args[2]);\n            break;\n\n          default:\n            // have more than 2 given arguments\n            hItem.h.apply(hItem.ctx, args);\n            break;\n        }\n\n        if (hItem.one) {\n          _h.splice(i, 1);\n\n          len--;\n        } else {\n          i++;\n        }\n      }\n    }\n\n    eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n    return this;\n  },\n\n  /**\n   * Dispatch a event with context, which is specified at the last parameter.\n   *\n   * @param {string} type The event name.\n   */\n  triggerWithContext: function (type) {\n    var _h = this._$handlers[type];\n    var eventProcessor = this._$eventProcessor;\n\n    if (_h) {\n      var args = arguments;\n      var argLen = args.length;\n\n      if (argLen > 4) {\n        args = arrySlice.call(args, 1, args.length - 1);\n      }\n\n      var ctx = args[args.length - 1];\n      var len = _h.length;\n\n      for (var i = 0; i < len;) {\n        var hItem = _h[i];\n\n        if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n          i++;\n          continue;\n        } // Optimize advise from backbone\n\n\n        switch (argLen) {\n          case 1:\n            hItem.h.call(ctx);\n            break;\n\n          case 2:\n            hItem.h.call(ctx, args[1]);\n            break;\n\n          case 3:\n            hItem.h.call(ctx, args[1], args[2]);\n            break;\n\n          default:\n            // have more than 2 given arguments\n            hItem.h.apply(ctx, args);\n            break;\n        }\n\n        if (hItem.one) {\n          _h.splice(i, 1);\n\n          len--;\n        } else {\n          i++;\n        }\n      }\n    }\n\n    eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n    return this;\n  }\n};\n\nfunction normalizeQuery(host, query) {\n  var eventProcessor = host._$eventProcessor;\n\n  if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n    query = eventProcessor.normalizeQuery(query);\n  }\n\n  return query;\n}\n\nfunction on(eventful, event, query, handler, context, isOnce) {\n  var _h = eventful._$handlers;\n\n  if (typeof query === 'function') {\n    context = handler;\n    handler = query;\n    query = null;\n  }\n\n  if (!handler || !event) {\n    return eventful;\n  }\n\n  query = normalizeQuery(eventful, query);\n\n  if (!_h[event]) {\n    _h[event] = [];\n  }\n\n  for (var i = 0; i < _h[event].length; i++) {\n    if (_h[event][i].h === handler) {\n      return eventful;\n    }\n  }\n\n  var wrap = {\n    h: handler,\n    one: isOnce,\n    query: query,\n    ctx: context || eventful,\n    // FIXME\n    // Do not publish this feature util it is proved that it makes sense.\n    callAtLast: handler.zrEventfulCallAtLast\n  };\n  var lastIndex = _h[event].length - 1;\n  var lastWrap = _h[event][lastIndex];\n  lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap);\n  return eventful;\n} // ----------------------\n// The events in zrender\n// ----------------------\n\n/**\n * @event module:zrender/mixin/Eventful#onclick\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseout\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousemove\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousewheel\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousedown\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseup\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrag\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragstart\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragend\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragenter\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragleave\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrop\n * @type {Function}\n * @default null\n */\n\n\nvar _default = Eventful;\nmodule.exports = _default;\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar zrUtil = __webpack_require__(2);\n\nvar Element = __webpack_require__(548);\n\nvar BoundingRect = __webpack_require__(57);\n\n/**\n * Group是一个容器，可以插入子节点，Group的变换也会被应用到子节点上\n * @module zrender/graphic/Group\n * @example\n *     var Group = require('zrender/container/Group');\n *     var Circle = require('zrender/graphic/shape/Circle');\n *     var g = new Group();\n *     g.position[0] = 100;\n *     g.position[1] = 100;\n *     g.add(new Circle({\n *         style: {\n *             x: 100,\n *             y: 100,\n *             r: 20,\n *         }\n *     }));\n *     zr.add(g);\n */\n\n/**\n * @alias module:zrender/graphic/Group\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @extends module:zrender/mixin/Eventful\n */\nvar Group = function (opts) {\n  opts = opts || {};\n  Element.call(this, opts);\n\n  for (var key in opts) {\n    if (opts.hasOwnProperty(key)) {\n      this[key] = opts[key];\n    }\n  }\n\n  this._children = [];\n  this.__storage = null;\n  this.__dirty = true;\n};\n\nGroup.prototype = {\n  constructor: Group,\n  isGroup: true,\n\n  /**\n   * @type {string}\n   */\n  type: 'group',\n\n  /**\n   * 所有子孙元素是否响应鼠标事件\n   * @name module:/zrender/container/Group#silent\n   * @type {boolean}\n   * @default false\n   */\n  silent: false,\n\n  /**\n   * @return {Array.<module:zrender/Element>}\n   */\n  children: function () {\n    return this._children.slice();\n  },\n\n  /**\n   * 获取指定 index 的儿子节点\n   * @param  {number} idx\n   * @return {module:zrender/Element}\n   */\n  childAt: function (idx) {\n    return this._children[idx];\n  },\n\n  /**\n   * 获取指定名字的儿子节点\n   * @param  {string} name\n   * @return {module:zrender/Element}\n   */\n  childOfName: function (name) {\n    var children = this._children;\n\n    for (var i = 0; i < children.length; i++) {\n      if (children[i].name === name) {\n        return children[i];\n      }\n    }\n  },\n\n  /**\n   * @return {number}\n   */\n  childCount: function () {\n    return this._children.length;\n  },\n\n  /**\n   * 添加子节点到最后\n   * @param {module:zrender/Element} child\n   */\n  add: function (child) {\n    if (child && child !== this && child.parent !== this) {\n      this._children.push(child);\n\n      this._doAdd(child);\n    }\n\n    return this;\n  },\n\n  /**\n   * 添加子节点在 nextSibling 之前\n   * @param {module:zrender/Element} child\n   * @param {module:zrender/Element} nextSibling\n   */\n  addBefore: function (child, nextSibling) {\n    if (child && child !== this && child.parent !== this && nextSibling && nextSibling.parent === this) {\n      var children = this._children;\n      var idx = children.indexOf(nextSibling);\n\n      if (idx >= 0) {\n        children.splice(idx, 0, child);\n\n        this._doAdd(child);\n      }\n    }\n\n    return this;\n  },\n  _doAdd: function (child) {\n    if (child.parent) {\n      child.parent.remove(child);\n    }\n\n    child.parent = this;\n    var storage = this.__storage;\n    var zr = this.__zr;\n\n    if (storage && storage !== child.__storage) {\n      storage.addToStorage(child);\n\n      if (child instanceof Group) {\n        child.addChildrenToStorage(storage);\n      }\n    }\n\n    zr && zr.refresh();\n  },\n\n  /**\n   * 移除子节点\n   * @param {module:zrender/Element} child\n   */\n  remove: function (child) {\n    var zr = this.__zr;\n    var storage = this.__storage;\n    var children = this._children;\n    var idx = zrUtil.indexOf(children, child);\n\n    if (idx < 0) {\n      return this;\n    }\n\n    children.splice(idx, 1);\n    child.parent = null;\n\n    if (storage) {\n      storage.delFromStorage(child);\n\n      if (child instanceof Group) {\n        child.delChildrenFromStorage(storage);\n      }\n    }\n\n    zr && zr.refresh();\n    return this;\n  },\n\n  /**\n   * 移除所有子节点\n   */\n  removeAll: function () {\n    var children = this._children;\n    var storage = this.__storage;\n    var child;\n    var i;\n\n    for (i = 0; i < children.length; i++) {\n      child = children[i];\n\n      if (storage) {\n        storage.delFromStorage(child);\n\n        if (child instanceof Group) {\n          child.delChildrenFromStorage(storage);\n        }\n      }\n\n      child.parent = null;\n    }\n\n    children.length = 0;\n    return this;\n  },\n\n  /**\n   * 遍历所有子节点\n   * @param  {Function} cb\n   * @param  {}   context\n   */\n  eachChild: function (cb, context) {\n    var children = this._children;\n\n    for (var i = 0; i < children.length; i++) {\n      var child = children[i];\n      cb.call(context, child, i);\n    }\n\n    return this;\n  },\n\n  /**\n   * 深度优先遍历所有子孙节点\n   * @param  {Function} cb\n   * @param  {}   context\n   */\n  traverse: function (cb, context) {\n    for (var i = 0; i < this._children.length; i++) {\n      var child = this._children[i];\n      cb.call(context, child);\n\n      if (child.type === 'group') {\n        child.traverse(cb, context);\n      }\n    }\n\n    return this;\n  },\n  addChildrenToStorage: function (storage) {\n    for (var i = 0; i < this._children.length; i++) {\n      var child = this._children[i];\n      storage.addToStorage(child);\n\n      if (child instanceof Group) {\n        child.addChildrenToStorage(storage);\n      }\n    }\n  },\n  delChildrenFromStorage: function (storage) {\n    for (var i = 0; i < this._children.length; i++) {\n      var child = this._children[i];\n      storage.delFromStorage(child);\n\n      if (child instanceof Group) {\n        child.delChildrenFromStorage(storage);\n      }\n    }\n  },\n  dirty: function () {\n    this.__dirty = true;\n    this.__zr && this.__zr.refresh();\n    return this;\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getBoundingRect: function (includeChildren) {\n    // TODO Caching\n    var rect = null;\n    var tmpRect = new BoundingRect(0, 0, 0, 0);\n    var children = includeChildren || this._children;\n    var tmpMat = [];\n\n    for (var i = 0; i < children.length; i++) {\n      var child = children[i];\n\n      if (child.ignore || child.invisible) {\n        continue;\n      }\n\n      var childRect = child.getBoundingRect();\n      var transform = child.getLocalTransform(tmpMat); // TODO\n      // The boundingRect cacluated by transforming original\n      // rect may be bigger than the actual bundingRect when rotation\n      // is used. (Consider a circle rotated aginst its center, where\n      // the actual boundingRect should be the same as that not be\n      // rotated.) But we can not find better approach to calculate\n      // actual boundingRect yet, considering performance.\n\n      if (transform) {\n        tmpRect.copy(childRect);\n        tmpRect.applyTransform(transform);\n        rect = rect || tmpRect.clone();\n        rect.union(tmpRect);\n      } else {\n        rect = rect || childRect.clone();\n        rect.union(childRect);\n      }\n    }\n\n    return rect || tmpRect;\n  }\n};\nzrUtil.inherits(Group, Element);\nvar _default = Group;\nmodule.exports = _default;\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Displayable = __webpack_require__(254);\n\nvar zrUtil = __webpack_require__(2);\n\nvar textContain = __webpack_require__(108);\n\nvar textHelper = __webpack_require__(326);\n\nvar _constant = __webpack_require__(325);\n\nvar ContextCachedBy = _constant.ContextCachedBy;\n\n/**\n * @alias zrender/graphic/Text\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nvar Text = function (opts) {\n  // jshint ignore:line\n  Displayable.call(this, opts);\n};\n\nText.prototype = {\n  constructor: Text,\n  type: 'text',\n  brush: function (ctx, prevEl) {\n    var style = this.style; // Optimize, avoid normalize every time.\n\n    this.__dirty && textHelper.normalizeTextStyle(style, true); // Use props with prefix 'text'.\n\n    style.fill = style.stroke = style.shadowBlur = style.shadowColor = style.shadowOffsetX = style.shadowOffsetY = null;\n    var text = style.text; // Convert to string\n\n    text != null && (text += ''); // Do not apply style.bind in Text node. Because the real bind job\n    // is in textHelper.renderText, and performance of text render should\n    // be considered.\n    // style.bind(ctx, this, prevEl);\n\n    if (!textHelper.needDrawText(text, style)) {\n      // The current el.style is not applied\n      // and should not be used as cache.\n      ctx.__attrCachedBy = ContextCachedBy.NONE;\n      return;\n    }\n\n    this.setTransform(ctx);\n    textHelper.renderText(this, ctx, text, style, null, prevEl);\n    this.restoreTransform(ctx);\n  },\n  getBoundingRect: function () {\n    var style = this.style; // Optimize, avoid normalize every time.\n\n    this.__dirty && textHelper.normalizeTextStyle(style, true);\n\n    if (!this._rect) {\n      var text = style.text;\n      text != null ? text += '' : text = '';\n      var rect = textContain.getBoundingRect(style.text + '', style.font, style.textAlign, style.textVerticalAlign, style.textPadding, style.textLineHeight, style.rich);\n      rect.x += style.x || 0;\n      rect.y += style.y || 0;\n\n      if (textHelper.getStroke(style.textStroke, style.textStrokeWidth)) {\n        var w = style.textStrokeWidth;\n        rect.x -= w / 2;\n        rect.y -= w / 2;\n        rect.width += w;\n        rect.height += w;\n      }\n\n      this._rect = rect;\n    }\n\n    return this._rect;\n  }\n};\nzrUtil.inherits(Text, Displayable);\nvar _default = Text;\nmodule.exports = _default;\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(2);\n\nvar isTypedArray = _util.isTypedArray;\nvar extend = _util.extend;\nvar assert = _util.assert;\nvar each = _util.each;\nvar isObject = _util.isObject;\n\nvar _model = __webpack_require__(31);\n\nvar getDataItemValue = _model.getDataItemValue;\nvar isDataItemOption = _model.isDataItemOption;\n\nvar _number = __webpack_require__(26);\n\nvar parseDate = _number.parseDate;\n\nvar Source = __webpack_require__(257);\n\nvar _sourceType = __webpack_require__(258);\n\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO\n// ??? refactor? check the outer usage of data provider.\n// merge with defaultDimValueGetter?\n\n/**\n * If normal array used, mutable chunk size is supported.\n * If typed array used, chunk size must be fixed.\n */\nfunction DefaultDataProvider(source, dimSize) {\n  if (!Source.isInstance(source)) {\n    source = Source.seriesDataToSource(source);\n  }\n\n  this._source = source;\n  var data = this._data = source.data;\n  var sourceFormat = source.sourceFormat; // Typed array. TODO IE10+?\n\n  if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n    this._offset = 0;\n    this._dimSize = dimSize;\n    this._data = data;\n  }\n\n  var methods = providerMethods[sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + source.seriesLayoutBy : sourceFormat];\n  extend(this, methods);\n}\n\nvar providerProto = DefaultDataProvider.prototype; // If data is pure without style configuration\n\nproviderProto.pure = false; // If data is persistent and will not be released after use.\n\nproviderProto.persistent = true; // ???! FIXME legacy data provider do not has method getSource\n\nproviderProto.getSource = function () {\n  return this._source;\n};\n\nvar providerMethods = {\n  'arrayRows_column': {\n    pure: true,\n    count: function () {\n      return Math.max(0, this._data.length - this._source.startIndex);\n    },\n    getItem: function (idx) {\n      return this._data[idx + this._source.startIndex];\n    },\n    appendData: appendDataSimply\n  },\n  'arrayRows_row': {\n    pure: true,\n    count: function () {\n      var row = this._data[0];\n      return row ? Math.max(0, row.length - this._source.startIndex) : 0;\n    },\n    getItem: function (idx) {\n      idx += this._source.startIndex;\n      var item = [];\n      var data = this._data;\n\n      for (var i = 0; i < data.length; i++) {\n        var row = data[i];\n        item.push(row ? row[idx] : null);\n      }\n\n      return item;\n    },\n    appendData: function () {\n      throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\n    }\n  },\n  'objectRows': {\n    pure: true,\n    count: countSimply,\n    getItem: getItemSimply,\n    appendData: appendDataSimply\n  },\n  'keyedColumns': {\n    pure: true,\n    count: function () {\n      var dimName = this._source.dimensionsDefine[0].name;\n      var col = this._data[dimName];\n      return col ? col.length : 0;\n    },\n    getItem: function (idx) {\n      var item = [];\n      var dims = this._source.dimensionsDefine;\n\n      for (var i = 0; i < dims.length; i++) {\n        var col = this._data[dims[i].name];\n        item.push(col ? col[idx] : null);\n      }\n\n      return item;\n    },\n    appendData: function (newData) {\n      var data = this._data;\n      each(newData, function (newCol, key) {\n        var oldCol = data[key] || (data[key] = []);\n\n        for (var i = 0; i < (newCol || []).length; i++) {\n          oldCol.push(newCol[i]);\n        }\n      });\n    }\n  },\n  'original': {\n    count: countSimply,\n    getItem: getItemSimply,\n    appendData: appendDataSimply\n  },\n  'typedArray': {\n    persistent: false,\n    pure: true,\n    count: function () {\n      return this._data ? this._data.length / this._dimSize : 0;\n    },\n    getItem: function (idx, out) {\n      idx = idx - this._offset;\n      out = out || [];\n      var offset = this._dimSize * idx;\n\n      for (var i = 0; i < this._dimSize; i++) {\n        out[i] = this._data[offset + i];\n      }\n\n      return out;\n    },\n    appendData: function (newData) {\n      this._data = newData;\n    },\n    // Clean self if data is already used.\n    clean: function () {\n      // PENDING\n      this._offset += this.count();\n      this._data = null;\n    }\n  }\n};\n\nfunction countSimply() {\n  return this._data.length;\n}\n\nfunction getItemSimply(idx) {\n  return this._data[idx];\n}\n\nfunction appendDataSimply(newData) {\n  for (var i = 0; i < newData.length; i++) {\n    this._data.push(newData[i]);\n  }\n}\n\nvar rawValueGetters = {\n  arrayRows: getRawValueSimply,\n  objectRows: function (dataItem, dataIndex, dimIndex, dimName) {\n    return dimIndex != null ? dataItem[dimName] : dataItem;\n  },\n  keyedColumns: getRawValueSimply,\n  original: function (dataItem, dataIndex, dimIndex, dimName) {\n    // FIXME\n    // In some case (markpoint in geo (geo-map.html)), dataItem\n    // is {coord: [...]}\n    var value = getDataItemValue(dataItem);\n    return dimIndex == null || !(value instanceof Array) ? value : value[dimIndex];\n  },\n  typedArray: getRawValueSimply\n};\n\nfunction getRawValueSimply(dataItem, dataIndex, dimIndex, dimName) {\n  return dimIndex != null ? dataItem[dimIndex] : dataItem;\n}\n\nvar defaultDimValueGetters = {\n  arrayRows: getDimValueSimply,\n  objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\n    return converDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\n  },\n  keyedColumns: getDimValueSimply,\n  original: function (dataItem, dimName, dataIndex, dimIndex) {\n    // Performance sensitive, do not use modelUtil.getDataItemValue.\n    // If dataItem is an plain object with no value field, the var `value`\n    // will be assigned with the object, but it will be tread correctly\n    // in the `convertDataValue`.\n    var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); // If any dataItem is like { value: 10 }\n\n    if (!this._rawData.pure && isDataItemOption(dataItem)) {\n      this.hasItemOption = true;\n    }\n\n    return converDataValue(value instanceof Array ? value[dimIndex] // If value is a single number or something else not array.\n    : value, this._dimensionInfos[dimName]);\n  },\n  typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\n    return dataItem[dimIndex];\n  }\n};\n\nfunction getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\n  return converDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\n}\n/**\n * This helper method convert value in data.\n * @param {string|number|Date} value\n * @param {Object|string} [dimInfo] If string (like 'x'), dimType defaults 'number'.\n *        If \"dimInfo.ordinalParseAndSave\", ordinal value can be parsed.\n */\n\n\nfunction converDataValue(value, dimInfo) {\n  // Performance sensitive.\n  var dimType = dimInfo && dimInfo.type;\n\n  if (dimType === 'ordinal') {\n    // If given value is a category string\n    var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\n    return ordinalMeta ? ordinalMeta.parseAndCollect(value) : value;\n  }\n\n  if (dimType === 'time' // spead up when using timestamp\n  && typeof value !== 'number' && value != null && value !== '-') {\n    value = +parseDate(value);\n  } // dimType defaults 'number'.\n  // If dimType is not ordinal and value is null or undefined or NaN or '-',\n  // parse to NaN.\n\n\n  return value == null || value === '' ? NaN // If string (like '-'), using '+' parse to NaN\n  // If object, also parse to NaN\n  : +value;\n} // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,\n// Consider persistent.\n// Caution: why use raw value to display on label or tooltip?\n// A reason is to avoid format. For example time value we do not know\n// how to format is expected. More over, if stack is used, calculated\n// value may be 0.91000000001, which have brings trouble to display.\n// TODO: consider how to treat null/undefined/NaN when display?\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string|number} [dim] dimName or dimIndex\n * @return {Array.<number>|string|number} can be null/undefined.\n */\n\n\nfunction retrieveRawValue(data, dataIndex, dim) {\n  if (!data) {\n    return;\n  } // Consider data may be not persistent.\n\n\n  var dataItem = data.getRawDataItem(dataIndex);\n\n  if (dataItem == null) {\n    return;\n  }\n\n  var sourceFormat = data.getProvider().getSource().sourceFormat;\n  var dimName;\n  var dimIndex;\n  var dimInfo = data.getDimensionInfo(dim);\n\n  if (dimInfo) {\n    dimName = dimInfo.name;\n    dimIndex = dimInfo.index;\n  }\n\n  return rawValueGetters[sourceFormat](dataItem, dataIndex, dimIndex, dimName);\n}\n/**\n * Compatible with some cases (in pie, map) like:\n * data: [{name: 'xx', value: 5, selected: true}, ...]\n * where only sourceFormat is 'original' and 'objectRows' supported.\n *\n * ??? TODO\n * Supported detail options in data item when using 'arrayRows'.\n *\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string} attr like 'selected'\n */\n\n\nfunction retrieveRawAttr(data, dataIndex, attr) {\n  if (!data) {\n    return;\n  }\n\n  var sourceFormat = data.getProvider().getSource().sourceFormat;\n\n  if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n    return;\n  }\n\n  var dataItem = data.getRawDataItem(dataIndex);\n\n  if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {\n    dataItem = null;\n  }\n\n  if (dataItem) {\n    return dataItem[attr];\n  }\n}\n\nexports.DefaultDataProvider = DefaultDataProvider;\nexports.defaultDimValueGetters = defaultDimValueGetters;\nexports.retrieveRawValue = retrieveRawValue;\nexports.retrieveRawAttr = retrieveRawAttr;\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction defaultKeyGetter(item) {\n  return item;\n}\n/**\n * @param {Array} oldArr\n * @param {Array} newArr\n * @param {Function} oldKeyGetter\n * @param {Function} newKeyGetter\n * @param {Object} [context] Can be visited by this.context in callback.\n */\n\n\nfunction DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context) {\n  this._old = oldArr;\n  this._new = newArr;\n  this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n  this._newKeyGetter = newKeyGetter || defaultKeyGetter;\n  this.context = context;\n}\n\nDataDiffer.prototype = {\n  constructor: DataDiffer,\n\n  /**\n   * Callback function when add a data\n   */\n  add: function (func) {\n    this._add = func;\n    return this;\n  },\n\n  /**\n   * Callback function when update a data\n   */\n  update: function (func) {\n    this._update = func;\n    return this;\n  },\n\n  /**\n   * Callback function when remove a data\n   */\n  remove: function (func) {\n    this._remove = func;\n    return this;\n  },\n  execute: function () {\n    var oldArr = this._old;\n    var newArr = this._new;\n    var oldDataIndexMap = {};\n    var newDataIndexMap = {};\n    var oldDataKeyArr = [];\n    var newDataKeyArr = [];\n    var i;\n    initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter', this);\n    initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter', this);\n\n    for (i = 0; i < oldArr.length; i++) {\n      var key = oldDataKeyArr[i];\n      var idx = newDataIndexMap[key]; // idx can never be empty array here. see 'set null' logic below.\n\n      if (idx != null) {\n        // Consider there is duplicate key (for example, use dataItem.name as key).\n        // We should make sure every item in newArr and oldArr can be visited.\n        var len = idx.length;\n\n        if (len) {\n          len === 1 && (newDataIndexMap[key] = null);\n          idx = idx.shift();\n        } else {\n          newDataIndexMap[key] = null;\n        }\n\n        this._update && this._update(idx, i);\n      } else {\n        this._remove && this._remove(i);\n      }\n    }\n\n    for (var i = 0; i < newDataKeyArr.length; i++) {\n      var key = newDataKeyArr[i];\n\n      if (newDataIndexMap.hasOwnProperty(key)) {\n        var idx = newDataIndexMap[key];\n\n        if (idx == null) {\n          continue;\n        } // idx can never be empty array here. see 'set null' logic above.\n\n\n        if (!idx.length) {\n          this._add && this._add(idx);\n        } else {\n          for (var j = 0, len = idx.length; j < len; j++) {\n            this._add && this._add(idx[j]);\n          }\n        }\n      }\n    }\n  }\n};\n\nfunction initIndexMap(arr, map, keyArr, keyGetterName, dataDiffer) {\n  for (var i = 0; i < arr.length; i++) {\n    // Add prefix to avoid conflict with Object.prototype.\n    var key = '_ec_' + dataDiffer[keyGetterName](arr[i], i);\n    var existence = map[key];\n\n    if (existence == null) {\n      keyArr.push(key);\n      map[key] = i;\n    } else {\n      if (!existence.length) {\n        map[key] = existence = [existence];\n      }\n\n      existence.push(i);\n    }\n  }\n}\n\nvar _default = DataDiffer;\nmodule.exports = _default;\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar isFunction = _util.isFunction;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType, defaultSymbolType, legendSymbol) {\n  // Encoding visual for all series include which is filtered for legend drawing\n  return {\n    seriesType: seriesType,\n    // For legend.\n    performRawSeries: true,\n    reset: function (seriesModel, ecModel, api) {\n      var data = seriesModel.getData();\n      var symbolType = seriesModel.get('symbol');\n      var symbolSize = seriesModel.get('symbolSize');\n      var keepAspect = seriesModel.get('symbolKeepAspect');\n      var symbolRotate = seriesModel.get('symbolRotate');\n      var hasSymbolTypeCallback = isFunction(symbolType);\n      var hasSymbolSizeCallback = isFunction(symbolSize);\n      var hasSymbolRotateCallback = isFunction(symbolRotate);\n      var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\n      var seriesSymbol = !hasSymbolTypeCallback && symbolType ? symbolType : defaultSymbolType;\n      var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\n      var seriesSymbolRotate = !hasSymbolRotateCallback ? seriesSymbolRotate : null;\n      data.setVisual({\n        legendSymbol: legendSymbol || seriesSymbol,\n        // If seting callback functions on `symbol` or `symbolSize`, for simplicity and avoiding\n        // to bring trouble, we do not pick a reuslt from one of its calling on data item here,\n        // but just use the default value. Callback on `symbol` or `symbolSize` is convenient in\n        // some cases but generally it is not recommanded.\n        symbol: seriesSymbol,\n        symbolSize: seriesSymbolSize,\n        symbolKeepAspect: keepAspect,\n        symbolRotate: symbolRotate\n      }); // Only visible series has each data be visual encoded\n\n      if (ecModel.isSeriesFiltered(seriesModel)) {\n        return;\n      }\n\n      function dataEach(data, idx) {\n        if (hasCallback) {\n          var rawValue = seriesModel.getRawValue(idx);\n          var params = seriesModel.getDataParams(idx);\n          hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\n          hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\n          hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\n        }\n\n        if (data.hasItemOption) {\n          var itemModel = data.getItemModel(idx);\n          var itemSymbolType = itemModel.getShallow('symbol', true);\n          var itemSymbolSize = itemModel.getShallow('symbolSize', true);\n          var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\n          var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true); // If has item symbol\n\n          if (itemSymbolType != null) {\n            data.setItemVisual(idx, 'symbol', itemSymbolType);\n          }\n\n          if (itemSymbolSize != null) {\n            // PENDING Transform symbolSize ?\n            data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\n          }\n\n          if (itemSymbolRotate != null) {\n            data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\n          }\n\n          if (itemSymbolKeepAspect != null) {\n            data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\n          }\n        }\n      }\n\n      return {\n        dataEach: data.hasItemOption || hasCallback ? dataEach : null\n      };\n    }\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar axisPointerModelHelper = __webpack_require__(334);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Base class of AxisView.\n */\nvar AxisView = echarts.extendComponentView({\n  type: 'axis',\n\n  /**\n   * @private\n   */\n  _axisPointer: null,\n\n  /**\n   * @protected\n   * @type {string}\n   */\n  axisPointerClass: null,\n\n  /**\n   * @override\n   */\n  render: function (axisModel, ecModel, api, payload) {\n    // FIXME\n    // This process should proformed after coordinate systems updated\n    // (axis scale updated), and should be performed each time update.\n    // So put it here temporarily, although it is not appropriate to\n    // put a model-writing procedure in `view`.\n    this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel);\n    AxisView.superApply(this, 'render', arguments);\n    updateAxisPointer(this, axisModel, ecModel, api, payload, true);\n  },\n\n  /**\n   * Action handler.\n   * @public\n   * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n   * @param {module:echarts/model/Global} ecModel\n   * @param {module:echarts/ExtensionAPI} api\n   * @param {Object} payload\n   */\n  updateAxisPointer: function (axisModel, ecModel, api, payload, force) {\n    updateAxisPointer(this, axisModel, ecModel, api, payload, false);\n  },\n\n  /**\n   * @override\n   */\n  remove: function (ecModel, api) {\n    var axisPointer = this._axisPointer;\n    axisPointer && axisPointer.remove(api);\n    AxisView.superApply(this, 'remove', arguments);\n  },\n\n  /**\n   * @override\n   */\n  dispose: function (ecModel, api) {\n    disposeAxisPointer(this, api);\n    AxisView.superApply(this, 'dispose', arguments);\n  }\n});\n\nfunction updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {\n  var Clazz = AxisView.getAxisPointerClass(axisView.axisPointerClass);\n\n  if (!Clazz) {\n    return;\n  }\n\n  var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);\n  axisPointerModel ? (axisView._axisPointer || (axisView._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : disposeAxisPointer(axisView, api);\n}\n\nfunction disposeAxisPointer(axisView, ecModel, api) {\n  var axisPointer = axisView._axisPointer;\n  axisPointer && axisPointer.dispose(ecModel, api);\n  axisView._axisPointer = null;\n}\n\nvar axisPointerClazz = [];\n\nAxisView.registerAxisPointerClass = function (type, clazz) {\n  axisPointerClazz[type] = clazz;\n};\n\nAxisView.getAxisPointerClass = function (type) {\n  return type && axisPointerClazz[type];\n};\n\nvar _default = AxisView;\nmodule.exports = _default;\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {\n  if (payload && zrUtil.indexOf(validPayloadTypes, payload.type) >= 0) {\n    var root = seriesModel.getData().tree.root;\n    var targetNode = payload.targetNode;\n\n    if (typeof targetNode === 'string') {\n      targetNode = root.getNodeById(targetNode);\n    }\n\n    if (targetNode && root.contains(targetNode)) {\n      return {\n        node: targetNode\n      };\n    }\n\n    var targetNodeId = payload.targetNodeId;\n\n    if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {\n      return {\n        node: targetNode\n      };\n    }\n  }\n} // Not includes the given node at the last item.\n\n\nfunction getPathToRoot(node) {\n  var path = [];\n\n  while (node) {\n    node = node.parentNode;\n    node && path.push(node);\n  }\n\n  return path.reverse();\n}\n\nfunction aboveViewRoot(viewRoot, node) {\n  var viewPath = getPathToRoot(viewRoot);\n  return zrUtil.indexOf(viewPath, node) >= 0;\n} // From root to the input node (the input node will be included).\n\n\nfunction wrapTreePathInfo(node, seriesModel) {\n  var treePathInfo = [];\n\n  while (node) {\n    var nodeDataIndex = node.dataIndex;\n    treePathInfo.push({\n      name: node.name,\n      dataIndex: nodeDataIndex,\n      value: seriesModel.getRawValue(nodeDataIndex)\n    });\n    node = node.parentNode;\n  }\n\n  treePathInfo.reverse();\n  return treePathInfo;\n}\n\nexports.retrieveTargetInfo = retrieveTargetInfo;\nexports.getPathToRoot = getPathToRoot;\nexports.aboveViewRoot = aboveViewRoot;\nexports.wrapTreePathInfo = wrapTreePathInfo;\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar zrColor = __webpack_require__(130);\n\nvar _number = __webpack_require__(26);\n\nvar linearMap = _number.linearMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar CATEGORY_DEFAULT_VISUAL_INDEX = -1;\n/**\n * @param {Object} option\n * @param {string} [option.type] See visualHandlers.\n * @param {string} [option.mappingMethod] 'linear' or 'piecewise' or 'category' or 'fixed'\n * @param {Array.<number>=} [option.dataExtent] [minExtent, maxExtent],\n *                                              required when mappingMethod is 'linear'\n * @param {Array.<Object>=} [option.pieceList] [\n *                                             {value: someValue},\n *                                             {interval: [min1, max1], visual: {...}},\n *                                             {interval: [min2, max2]}\n *                                             ],\n *                                            required when mappingMethod is 'piecewise'.\n *                                            Visual for only each piece can be specified.\n * @param {Array.<string|Object>=} [option.categories] ['cate1', 'cate2']\n *                                            required when mappingMethod is 'category'.\n *                                            If no option.categories, categories is set\n *                                            as [0, 1, 2, ...].\n * @param {boolean} [option.loop=false] Whether loop mapping when mappingMethod is 'category'.\n * @param {(Array|Object|*)} [option.visual]  Visual data.\n *                                            when mappingMethod is 'category',\n *                                            visual data can be array or object\n *                                            (like: {cate1: '#222', none: '#fff'})\n *                                            or primary types (which represents\n *                                            default category visual), otherwise visual\n *                                            can be array or primary (which will be\n *                                            normalized to array).\n *\n */\n\nvar VisualMapping = function (option) {\n  var mappingMethod = option.mappingMethod;\n  var visualType = option.type;\n  /**\n   * @readOnly\n   * @type {Object}\n   */\n\n  var thisOption = this.option = zrUtil.clone(option);\n  /**\n   * @readOnly\n   * @type {string}\n   */\n\n  this.type = visualType;\n  /**\n   * @readOnly\n   * @type {string}\n   */\n\n  this.mappingMethod = mappingMethod;\n  /**\n   * @private\n   * @type {Function}\n   */\n\n  this._normalizeData = normalizers[mappingMethod];\n  var visualHandler = visualHandlers[visualType];\n  /**\n   * @public\n   * @type {Function}\n   */\n\n  this.applyVisual = visualHandler.applyVisual;\n  /**\n   * @public\n   * @type {Function}\n   */\n\n  this.getColorMapper = visualHandler.getColorMapper;\n  /**\n   * @private\n   * @type {Function}\n   */\n\n  this._doMap = visualHandler._doMap[mappingMethod];\n\n  if (mappingMethod === 'piecewise') {\n    normalizeVisualRange(thisOption);\n    preprocessForPiecewise(thisOption);\n  } else if (mappingMethod === 'category') {\n    thisOption.categories ? preprocessForSpecifiedCategory(thisOption) // categories is ordinal when thisOption.categories not specified,\n    // which need no more preprocess except normalize visual.\n    : normalizeVisualRange(thisOption, true);\n  } else {\n    // mappingMethod === 'linear' or 'fixed'\n    zrUtil.assert(mappingMethod !== 'linear' || thisOption.dataExtent);\n    normalizeVisualRange(thisOption);\n  }\n};\n\nVisualMapping.prototype = {\n  constructor: VisualMapping,\n  mapValueToVisual: function (value) {\n    var normalized = this._normalizeData(value);\n\n    return this._doMap(normalized, value);\n  },\n  getNormalizer: function () {\n    return zrUtil.bind(this._normalizeData, this);\n  }\n};\nvar visualHandlers = VisualMapping.visualHandlers = {\n  color: {\n    applyVisual: makeApplyVisual('color'),\n\n    /**\n     * Create a mapper function\n     * @return {Function}\n     */\n    getColorMapper: function () {\n      var thisOption = this.option;\n      return zrUtil.bind(thisOption.mappingMethod === 'category' ? function (value, isNormalized) {\n        !isNormalized && (value = this._normalizeData(value));\n        return doMapCategory.call(this, value);\n      } : function (value, isNormalized, out) {\n        // If output rgb array\n        // which will be much faster and useful in pixel manipulation\n        var returnRGBArray = !!out;\n        !isNormalized && (value = this._normalizeData(value));\n        out = zrColor.fastLerp(value, thisOption.parsedVisual, out);\n        return returnRGBArray ? out : zrColor.stringify(out, 'rgba');\n      }, this);\n    },\n    _doMap: {\n      linear: function (normalized) {\n        return zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n      },\n      category: doMapCategory,\n      piecewise: function (normalized, value) {\n        var result = getSpecifiedVisual.call(this, value);\n\n        if (result == null) {\n          result = zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n        }\n\n        return result;\n      },\n      fixed: doMapFixed\n    }\n  },\n  colorHue: makePartialColorVisualHandler(function (color, value) {\n    return zrColor.modifyHSL(color, value);\n  }),\n  colorSaturation: makePartialColorVisualHandler(function (color, value) {\n    return zrColor.modifyHSL(color, null, value);\n  }),\n  colorLightness: makePartialColorVisualHandler(function (color, value) {\n    return zrColor.modifyHSL(color, null, null, value);\n  }),\n  colorAlpha: makePartialColorVisualHandler(function (color, value) {\n    return zrColor.modifyAlpha(color, value);\n  }),\n  opacity: {\n    applyVisual: makeApplyVisual('opacity'),\n    _doMap: makeDoMap([0, 1])\n  },\n  liftZ: {\n    applyVisual: makeApplyVisual('liftZ'),\n    _doMap: {\n      linear: doMapFixed,\n      category: doMapFixed,\n      piecewise: doMapFixed,\n      fixed: doMapFixed\n    }\n  },\n  symbol: {\n    applyVisual: function (value, getter, setter) {\n      var symbolCfg = this.mapValueToVisual(value);\n\n      if (zrUtil.isString(symbolCfg)) {\n        setter('symbol', symbolCfg);\n      } else if (isObject(symbolCfg)) {\n        for (var name in symbolCfg) {\n          if (symbolCfg.hasOwnProperty(name)) {\n            setter(name, symbolCfg[name]);\n          }\n        }\n      }\n    },\n    _doMap: {\n      linear: doMapToArray,\n      category: doMapCategory,\n      piecewise: function (normalized, value) {\n        var result = getSpecifiedVisual.call(this, value);\n\n        if (result == null) {\n          result = doMapToArray.call(this, normalized);\n        }\n\n        return result;\n      },\n      fixed: doMapFixed\n    }\n  },\n  symbolSize: {\n    applyVisual: makeApplyVisual('symbolSize'),\n    _doMap: makeDoMap([0, 1])\n  }\n};\n\nfunction preprocessForPiecewise(thisOption) {\n  var pieceList = thisOption.pieceList;\n  thisOption.hasSpecialVisual = false;\n  zrUtil.each(pieceList, function (piece, index) {\n    piece.originIndex = index; // piece.visual is \"result visual value\" but not\n    // a visual range, so it does not need to be normalized.\n\n    if (piece.visual != null) {\n      thisOption.hasSpecialVisual = true;\n    }\n  });\n}\n\nfunction preprocessForSpecifiedCategory(thisOption) {\n  // Hash categories.\n  var categories = thisOption.categories;\n  var visual = thisOption.visual;\n  var categoryMap = thisOption.categoryMap = {};\n  each(categories, function (cate, index) {\n    categoryMap[cate] = index;\n  }); // Process visual map input.\n\n  if (!zrUtil.isArray(visual)) {\n    var visualArr = [];\n\n    if (zrUtil.isObject(visual)) {\n      each(visual, function (v, cate) {\n        var index = categoryMap[cate];\n        visualArr[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;\n      });\n    } else {\n      // Is primary type, represents default visual.\n      visualArr[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;\n    }\n\n    visual = setVisualToOption(thisOption, visualArr);\n  } // Remove categories that has no visual,\n  // then we can mapping them to CATEGORY_DEFAULT_VISUAL_INDEX.\n\n\n  for (var i = categories.length - 1; i >= 0; i--) {\n    if (visual[i] == null) {\n      delete categoryMap[categories[i]];\n      categories.pop();\n    }\n  }\n}\n\nfunction normalizeVisualRange(thisOption, isCategory) {\n  var visual = thisOption.visual;\n  var visualArr = [];\n\n  if (zrUtil.isObject(visual)) {\n    each(visual, function (v) {\n      visualArr.push(v);\n    });\n  } else if (visual != null) {\n    visualArr.push(visual);\n  }\n\n  var doNotNeedPair = {\n    color: 1,\n    symbol: 1\n  };\n\n  if (!isCategory && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) {\n    // Do not care visualArr.length === 0, which is illegal.\n    visualArr[1] = visualArr[0];\n  }\n\n  setVisualToOption(thisOption, visualArr);\n}\n\nfunction makePartialColorVisualHandler(applyValue) {\n  return {\n    applyVisual: function (value, getter, setter) {\n      value = this.mapValueToVisual(value); // Must not be array value\n\n      setter('color', applyValue(getter('color'), value));\n    },\n    _doMap: makeDoMap([0, 1])\n  };\n}\n\nfunction doMapToArray(normalized) {\n  var visual = this.option.visual;\n  return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {};\n}\n\nfunction makeApplyVisual(visualType) {\n  return function (value, getter, setter) {\n    setter(visualType, this.mapValueToVisual(value));\n  };\n}\n\nfunction doMapCategory(normalized) {\n  var visual = this.option.visual;\n  return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized];\n}\n\nfunction doMapFixed() {\n  return this.option.visual[0];\n}\n\nfunction makeDoMap(sourceExtent) {\n  return {\n    linear: function (normalized) {\n      return linearMap(normalized, sourceExtent, this.option.visual, true);\n    },\n    category: doMapCategory,\n    piecewise: function (normalized, value) {\n      var result = getSpecifiedVisual.call(this, value);\n\n      if (result == null) {\n        result = linearMap(normalized, sourceExtent, this.option.visual, true);\n      }\n\n      return result;\n    },\n    fixed: doMapFixed\n  };\n}\n\nfunction getSpecifiedVisual(value) {\n  var thisOption = this.option;\n  var pieceList = thisOption.pieceList;\n\n  if (thisOption.hasSpecialVisual) {\n    var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);\n    var piece = pieceList[pieceIndex];\n\n    if (piece && piece.visual) {\n      return piece.visual[this.type];\n    }\n  }\n}\n\nfunction setVisualToOption(thisOption, visualArr) {\n  thisOption.visual = visualArr;\n\n  if (thisOption.type === 'color') {\n    thisOption.parsedVisual = zrUtil.map(visualArr, function (item) {\n      return zrColor.parse(item);\n    });\n  }\n\n  return visualArr;\n}\n/**\n * Normalizers by mapping methods.\n */\n\n\nvar normalizers = {\n  linear: function (value) {\n    return linearMap(value, this.option.dataExtent, [0, 1], true);\n  },\n  piecewise: function (value) {\n    var pieceList = this.option.pieceList;\n    var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);\n\n    if (pieceIndex != null) {\n      return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true);\n    }\n  },\n  category: function (value) {\n    var index = this.option.categories ? this.option.categoryMap[value] : value; // ordinal\n\n    return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index;\n  },\n  fixed: zrUtil.noop\n};\n/**\n * List available visual types.\n *\n * @public\n * @return {Array.<string>}\n */\n\nVisualMapping.listVisualTypes = function () {\n  var visualTypes = [];\n  zrUtil.each(visualHandlers, function (handler, key) {\n    visualTypes.push(key);\n  });\n  return visualTypes;\n};\n/**\n * @public\n */\n\n\nVisualMapping.addVisualHandler = function (name, handler) {\n  visualHandlers[name] = handler;\n};\n/**\n * @public\n */\n\n\nVisualMapping.isValidType = function (visualType) {\n  return visualHandlers.hasOwnProperty(visualType);\n};\n/**\n * Convinent method.\n * Visual can be Object or Array or primary type.\n *\n * @public\n */\n\n\nVisualMapping.eachVisual = function (visual, callback, context) {\n  if (zrUtil.isObject(visual)) {\n    zrUtil.each(visual, callback, context);\n  } else {\n    callback.call(context, visual);\n  }\n};\n\nVisualMapping.mapVisual = function (visual, callback, context) {\n  var isPrimary;\n  var newVisual = zrUtil.isArray(visual) ? [] : zrUtil.isObject(visual) ? {} : (isPrimary = true, null);\n  VisualMapping.eachVisual(visual, function (v, key) {\n    var newVal = callback.call(context, v, key);\n    isPrimary ? newVisual = newVal : newVisual[key] = newVal;\n  });\n  return newVisual;\n};\n/**\n * @public\n * @param {Object} obj\n * @return {Object} new object containers visual values.\n *                 If no visuals, return null.\n */\n\n\nVisualMapping.retrieveVisuals = function (obj) {\n  var ret = {};\n  var hasVisual;\n  obj && each(visualHandlers, function (h, visualType) {\n    if (obj.hasOwnProperty(visualType)) {\n      ret[visualType] = obj[visualType];\n      hasVisual = true;\n    }\n  });\n  return hasVisual ? ret : null;\n};\n/**\n * Give order to visual types, considering colorSaturation, colorAlpha depends on color.\n *\n * @public\n * @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...}\n *                                     IF Array, like: ['color', 'symbol', 'colorSaturation']\n * @return {Array.<string>} Sorted visual types.\n */\n\n\nVisualMapping.prepareVisualTypes = function (visualTypes) {\n  if (isObject(visualTypes)) {\n    var types = [];\n    each(visualTypes, function (item, type) {\n      types.push(type);\n    });\n    visualTypes = types;\n  } else if (zrUtil.isArray(visualTypes)) {\n    visualTypes = visualTypes.slice();\n  } else {\n    return [];\n  }\n\n  visualTypes.sort(function (type1, type2) {\n    // color should be front of colorSaturation, colorAlpha, ...\n    // symbol and symbolSize do not matter.\n    return type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0 ? 1 : -1;\n  });\n  return visualTypes;\n};\n/**\n * 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'.\n * Other visuals are only depends on themself.\n *\n * @public\n * @param {string} visualType1\n * @param {string} visualType2\n * @return {boolean}\n */\n\n\nVisualMapping.dependsOn = function (visualType1, visualType2) {\n  return visualType2 === 'color' ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2;\n};\n/**\n * @param {number} value\n * @param {Array.<Object>} pieceList [{value: ..., interval: [min, max]}, ...]\n *                         Always from small to big.\n * @param {boolean} [findClosestWhenOutside=false]\n * @return {number} index\n */\n\n\nVisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) {\n  var possibleI;\n  var abs = Infinity; // value has the higher priority.\n\n  for (var i = 0, len = pieceList.length; i < len; i++) {\n    var pieceValue = pieceList[i].value;\n\n    if (pieceValue != null) {\n      if (pieceValue === value // FIXME\n      // It is supposed to compare value according to value type of dimension,\n      // but currently value type can exactly be string or number.\n      // Compromise for numeric-like string (like '12'), especially\n      // in the case that visualMap.categories is ['22', '33'].\n      || typeof pieceValue === 'string' && pieceValue === value + '') {\n        return i;\n      }\n\n      findClosestWhenOutside && updatePossible(pieceValue, i);\n    }\n  }\n\n  for (var i = 0, len = pieceList.length; i < len; i++) {\n    var piece = pieceList[i];\n    var interval = piece.interval;\n    var close = piece.close;\n\n    if (interval) {\n      if (interval[0] === -Infinity) {\n        if (littleThan(close[1], value, interval[1])) {\n          return i;\n        }\n      } else if (interval[1] === Infinity) {\n        if (littleThan(close[0], interval[0], value)) {\n          return i;\n        }\n      } else if (littleThan(close[0], interval[0], value) && littleThan(close[1], value, interval[1])) {\n        return i;\n      }\n\n      findClosestWhenOutside && updatePossible(interval[0], i);\n      findClosestWhenOutside && updatePossible(interval[1], i);\n    }\n  }\n\n  if (findClosestWhenOutside) {\n    return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI;\n  }\n\n  function updatePossible(val, index) {\n    var newAbs = Math.abs(val - value);\n\n    if (newAbs < abs) {\n      abs = newAbs;\n      possibleI = index;\n    }\n  }\n};\n\nfunction littleThan(close, a, b) {\n  return close ? a <= b : a < b;\n}\n\nvar _default = VisualMapping;\nmodule.exports = _default;\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isOldIE = function isOldIE() {\n  var memo;\n  return function memorize() {\n    if (typeof memo === 'undefined') {\n      // Test for IE <= 9 as proposed by Browserhacks\n      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n      // Tests for existence of standard globals is to allow style-loader\n      // to operate correctly into non-standard environments\n      // @see https://github.com/webpack-contrib/style-loader/issues/177\n      memo = Boolean(window && document && document.all && !window.atob);\n    }\n\n    return memo;\n  };\n}();\n\nvar getTarget = function getTarget() {\n  var memo = {};\n  return function memorize(target) {\n    if (typeof memo[target] === 'undefined') {\n      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n        try {\n          // This will throw an exception if access to iframe is blocked\n          // due to cross-origin restrictions\n          styleTarget = styleTarget.contentDocument.head;\n        } catch (e) {\n          // istanbul ignore next\n          styleTarget = null;\n        }\n      }\n\n      memo[target] = styleTarget;\n    }\n\n    return memo[target];\n  };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n\n  for (var i = 0; i < stylesInDom.length; i++) {\n    if (stylesInDom[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n\n  return result;\n}\n\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = \"\".concat(id, \" \").concat(count);\n    idCountMap[id] = count + 1;\n    var index = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3]\n    };\n\n    if (index !== -1) {\n      stylesInDom[index].references++;\n      stylesInDom[index].updater(obj);\n    } else {\n      stylesInDom.push({\n        identifier: identifier,\n        updater: addStyle(obj, options),\n        references: 1\n      });\n    }\n\n    identifiers.push(identifier);\n  }\n\n  return identifiers;\n}\n\nfunction insertStyleElement(options) {\n  var style = document.createElement('style');\n  var attributes = options.attributes || {};\n\n  if (typeof attributes.nonce === 'undefined') {\n    var nonce =  true ? __webpack_require__.nc : undefined;\n\n    if (nonce) {\n      attributes.nonce = nonce;\n    }\n  }\n\n  Object.keys(attributes).forEach(function (key) {\n    style.setAttribute(key, attributes[key]);\n  });\n\n  if (typeof options.insert === 'function') {\n    options.insert(style);\n  } else {\n    var target = getTarget(options.insert || 'head');\n\n    if (!target) {\n      throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n    }\n\n    target.appendChild(style);\n  }\n\n  return style;\n}\n\nfunction removeStyleElement(style) {\n  // istanbul ignore if\n  if (style.parentNode === null) {\n    return false;\n  }\n\n  style.parentNode.removeChild(style);\n}\n/* istanbul ignore next  */\n\n\nvar replaceText = function replaceText() {\n  var textStore = [];\n  return function replace(index, replacement) {\n    textStore[index] = replacement;\n    return textStore.filter(Boolean).join('\\n');\n  };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n  var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n  /* istanbul ignore if  */\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = replaceText(index, css);\n  } else {\n    var cssNode = document.createTextNode(css);\n    var childNodes = style.childNodes;\n\n    if (childNodes[index]) {\n      style.removeChild(childNodes[index]);\n    }\n\n    if (childNodes.length) {\n      style.insertBefore(cssNode, childNodes[index]);\n    } else {\n      style.appendChild(cssNode);\n    }\n  }\n}\n\nfunction applyToTag(style, options, obj) {\n  var css = obj.css;\n  var media = obj.media;\n  var sourceMap = obj.sourceMap;\n\n  if (media) {\n    style.setAttribute('media', media);\n  } else {\n    style.removeAttribute('media');\n  }\n\n  if (sourceMap && typeof btoa !== 'undefined') {\n    css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n  } // For old IE\n\n  /* istanbul ignore if  */\n\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    while (style.firstChild) {\n      style.removeChild(style.firstChild);\n    }\n\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n  var style;\n  var update;\n  var remove;\n\n  if (options.singleton) {\n    var styleIndex = singletonCounter++;\n    style = singleton || (singleton = insertStyleElement(options));\n    update = applyToSingletonTag.bind(null, style, styleIndex, false);\n    remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n  } else {\n    style = insertStyleElement(options);\n    update = applyToTag.bind(null, style, options);\n\n    remove = function remove() {\n      removeStyleElement(style);\n    };\n  }\n\n  update(obj);\n  return function updateStyle(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n        return;\n      }\n\n      update(obj = newObj);\n    } else {\n      remove();\n    }\n  };\n}\n\nmodule.exports = function (list, options) {\n  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n  // tags it will allow on a page\n\n  if (!options.singleton && typeof options.singleton !== 'boolean') {\n    options.singleton = isOldIE();\n  }\n\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n\n    if (Object.prototype.toString.call(newList) !== '[object Array]') {\n      return;\n    }\n\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDom[index].references--;\n    }\n\n    var newLastIdentifiers = modulesToDom(newList, options);\n\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n\n      var _index = getIndexByIdentifier(_identifier);\n\n      if (stylesInDom[_index].references === 0) {\n        stylesInDom[_index].updater();\n\n        stylesInDom.splice(_index, 1);\n      }\n    }\n\n    lastIdentifiers = newLastIdentifiers;\n  };\n};\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = cssWithMappingToString(item, useSourceMap);\n\n      if (item[2]) {\n        return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n      }\n\n      return content;\n    }).join('');\n  }; // import a list of modules into the list\n  // eslint-disable-next-line func-names\n\n\n  list.i = function (modules, mediaQuery, dedupe) {\n    if (typeof modules === 'string') {\n      // eslint-disable-next-line no-param-reassign\n      modules = [[null, modules, '']];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var i = 0; i < this.length; i++) {\n        // eslint-disable-next-line prefer-destructuring\n        var id = this[i][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _i = 0; _i < modules.length; _i++) {\n      var item = [].concat(modules[_i]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if (mediaQuery) {\n        if (!item[2]) {\n          item[2] = mediaQuery;\n        } else {\n          item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n  var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (useSourceMap && typeof btoa === 'function') {\n    var sourceMapping = toComment(cssMapping);\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n  }\n\n  return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n  // eslint-disable-next-line no-undef\n  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n  var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n  return \"/*# \".concat(data, \" */\");\n}\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(634);\nvar defined = __webpack_require__(439);\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {ace.define(\"ace/theme/github.css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"/* CSS style content from github's default pygments highlighter template.\\n   Cursor and selection styles from textmate.css. */\\n.ace-github .ace_gutter {\\n  background: #e8e8e8;\\n  color: #AAA;\\n}\\n\\n.ace-github  {\\n  background: #fff;\\n  color: #000;\\n}\\n\\n.ace-github .ace_keyword {\\n  font-weight: bold;\\n}\\n\\n.ace-github .ace_string {\\n  color: #D14;\\n}\\n\\n.ace-github .ace_variable.ace_class {\\n  color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_numeric {\\n  color: #099;\\n}\\n\\n.ace-github .ace_constant.ace_buildin {\\n  color: #0086B3;\\n}\\n\\n.ace-github .ace_support.ace_function {\\n  color: #0086B3;\\n}\\n\\n.ace-github .ace_comment {\\n  color: #998;\\n  font-style: italic;\\n}\\n\\n.ace-github .ace_variable.ace_language  {\\n  color: #0086B3;\\n}\\n\\n.ace-github .ace_paren {\\n  font-weight: bold;\\n}\\n\\n.ace-github .ace_boolean {\\n  font-weight: bold;\\n}\\n\\n.ace-github .ace_string.ace_regexp {\\n  color: #009926;\\n  font-weight: normal;\\n}\\n\\n.ace-github .ace_variable.ace_instance {\\n  color: teal;\\n}\\n\\n.ace-github .ace_constant.ace_language {\\n  font-weight: bold;\\n}\\n\\n.ace-github .ace_cursor {\\n  color: black;\\n}\\n\\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\\n  background: rgb(255, 255, 204);\\n}\\n.ace-github .ace_marker-layer .ace_active-line {\\n  background: rgb(245, 245, 245);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selection {\\n  background: rgb(181, 213, 255);\\n}\\n\\n.ace-github.ace_multiselect .ace_selection.ace_start {\\n  box-shadow: 0 0 3px 0px white;\\n}\\n/* bold keywords cause cursor issues for some fonts */\\n/* this disables bold style for editor and keeps for static highlighter */\\n.ace-github.ace_nobold .ace_line > span {\\n    font-weight: normal !important;\\n}\\n\\n.ace-github .ace_marker-layer .ace_step {\\n  background: rgb(252, 255, 0);\\n}\\n\\n.ace-github .ace_marker-layer .ace_stack {\\n  background: rgb(164, 229, 101);\\n}\\n\\n.ace-github .ace_marker-layer .ace_bracket {\\n  margin: -1px 0 0 -1px;\\n  border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-github .ace_gutter-active-line {\\n    background-color : rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-github .ace_marker-layer .ace_selected-word {\\n  background: rgb(250, 250, 255);\\n  border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-github .ace_invisible {\\n  color: #BFBFBF\\n}\\n\\n.ace-github .ace_print-margin {\\n  width: 1px;\\n  background: #e8e8e8;\\n}\\n\\n.ace-github .ace_indent-guide {\\n  background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\";\n\n});\n\nace.define(\"ace/theme/github\",[\"require\",\"exports\",\"module\",\"ace/theme/github.css\",\"ace/lib/dom\"], function(require, exports, module){exports.isDark = false;\nexports.cssClass = \"ace-github\";\nexports.cssText = require(\"./github.css\");\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});                (function() {\n                    ace.require([\"ace/theme/github\"], function(m) {\n                        if ( true && module) {\n                            module.exports = m;\n                        }\n                    });\n                })();\n            \n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports) {\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\nmodule.exports = eq;\n\n\n/***/ }),\n/* 191 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return contains; });\nfunction contains(root, n) {\n  var node = n;\n\n  while (node) {\n    if (node === root) {\n      return true;\n    }\n\n    node = node.parentNode;\n  }\n\n  return false;\n}\n\n/***/ }),\n/* 192 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return isCssAnimationSupported; });\n/* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(348);\n/* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Event__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(123);\n/* harmony import */ var component_classes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(165);\n/* harmony import */ var component_classes__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(component_classes__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\nvar isCssAnimationSupported = _Event__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].endEvents.length !== 0;\nvar capitalPrefixes = ['Webkit', 'Moz', 'O',\n// ms is special .... !\n'ms'];\nvar prefixes = ['-webkit-', '-moz-', '-o-', 'ms-', ''];\n\nfunction getStyleProperty(node, name) {\n  // old ff need null, https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle\n  var style = window.getComputedStyle(node, null);\n  var ret = '';\n  for (var i = 0; i < prefixes.length; i++) {\n    ret = style.getPropertyValue(prefixes[i] + name);\n    if (ret) {\n      break;\n    }\n  }\n  return ret;\n}\n\nfunction fixBrowserByTimeout(node) {\n  if (isCssAnimationSupported) {\n    var transitionDelay = parseFloat(getStyleProperty(node, 'transition-delay')) || 0;\n    var transitionDuration = parseFloat(getStyleProperty(node, 'transition-duration')) || 0;\n    var animationDelay = parseFloat(getStyleProperty(node, 'animation-delay')) || 0;\n    var animationDuration = parseFloat(getStyleProperty(node, 'animation-duration')) || 0;\n    var time = Math.max(transitionDuration + transitionDelay, animationDuration + animationDelay);\n    // sometimes, browser bug\n    node.rcEndAnimTimeout = setTimeout(function () {\n      node.rcEndAnimTimeout = null;\n      if (node.rcEndListener) {\n        node.rcEndListener();\n      }\n    }, time * 1000 + 200);\n  }\n}\n\nfunction clearBrowserBugTimeout(node) {\n  if (node.rcEndAnimTimeout) {\n    clearTimeout(node.rcEndAnimTimeout);\n    node.rcEndAnimTimeout = null;\n  }\n}\n\nvar cssAnimation = function cssAnimation(node, transitionName, endCallback) {\n  var nameIsObj = (typeof transitionName === 'undefined' ? 'undefined' : babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(transitionName)) === 'object';\n  var className = nameIsObj ? transitionName.name : transitionName;\n  var activeClassName = nameIsObj ? transitionName.active : transitionName + '-active';\n  var end = endCallback;\n  var start = void 0;\n  var active = void 0;\n  var nodeClasses = component_classes__WEBPACK_IMPORTED_MODULE_2___default()(node);\n\n  if (endCallback && Object.prototype.toString.call(endCallback) === '[object Object]') {\n    end = endCallback.end;\n    start = endCallback.start;\n    active = endCallback.active;\n  }\n\n  if (node.rcEndListener) {\n    node.rcEndListener();\n  }\n\n  node.rcEndListener = function (e) {\n    if (e && e.target !== node) {\n      return;\n    }\n\n    if (node.rcAnimTimeout) {\n      clearTimeout(node.rcAnimTimeout);\n      node.rcAnimTimeout = null;\n    }\n\n    clearBrowserBugTimeout(node);\n\n    nodeClasses.remove(className);\n    nodeClasses.remove(activeClassName);\n\n    _Event__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].removeEndEventListener(node, node.rcEndListener);\n    node.rcEndListener = null;\n\n    // Usually this optional end is used for informing an owner of\n    // a leave animation and telling it to remove the child.\n    if (end) {\n      end();\n    }\n  };\n\n  _Event__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].addEndEventListener(node, node.rcEndListener);\n\n  if (start) {\n    start();\n  }\n  nodeClasses.add(className);\n\n  node.rcAnimTimeout = setTimeout(function () {\n    node.rcAnimTimeout = null;\n    nodeClasses.add(activeClassName);\n    if (active) {\n      setTimeout(active, 0);\n    }\n    fixBrowserByTimeout(node);\n    // 30ms for firefox\n  }, 30);\n\n  return {\n    stop: function stop() {\n      if (node.rcEndListener) {\n        node.rcEndListener();\n      }\n    }\n  };\n};\n\ncssAnimation.style = function (node, style, callback) {\n  if (node.rcEndListener) {\n    node.rcEndListener();\n  }\n\n  node.rcEndListener = function (e) {\n    if (e && e.target !== node) {\n      return;\n    }\n\n    if (node.rcAnimTimeout) {\n      clearTimeout(node.rcAnimTimeout);\n      node.rcAnimTimeout = null;\n    }\n\n    clearBrowserBugTimeout(node);\n\n    _Event__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].removeEndEventListener(node, node.rcEndListener);\n    node.rcEndListener = null;\n\n    // Usually this optional callback is used for informing an owner of\n    // a leave animation and telling it to remove the child.\n    if (callback) {\n      callback();\n    }\n  };\n\n  _Event__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"].addEndEventListener(node, node.rcEndListener);\n\n  node.rcAnimTimeout = setTimeout(function () {\n    for (var s in style) {\n      if (style.hasOwnProperty(s)) {\n        node.style[s] = style[s];\n      }\n    }\n    node.rcAnimTimeout = null;\n    fixBrowserByTimeout(node);\n  }, 0);\n};\n\ncssAnimation.setTransition = function (node, p, value) {\n  var property = p;\n  var v = value;\n  if (value === undefined) {\n    v = property;\n    property = '';\n  }\n  property = property || '';\n  capitalPrefixes.forEach(function (prefix) {\n    node.style[prefix + 'Transition' + property] = v;\n  });\n};\n\ncssAnimation.isCssAnimationSupported = isCssAnimationSupported;\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (cssAnimation);\n\n/***/ }),\n/* 193 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(64);\n/* harmony import */ var _stubFalse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(685);\n\n\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_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"].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_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"];\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isBuffer);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(459)(module)))\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\nvar classof = __webpack_require__(99);\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\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(134);\nvar fails = __webpack_require__(16);\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\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\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(69);\nvar store = __webpack_require__(356);\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.25.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.25.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar hasOwn = __webpack_require__(44);\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/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\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\nvar isCallable = __webpack_require__(43);\nvar classof = __webpack_require__(138);\nvar getBuiltIn = __webpack_require__(59);\nvar inspectSource = __webpack_require__(359);\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, 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\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(43);\nvar isObject = __webpack_require__(39);\nvar setPrototypeOf = __webpack_require__(124);\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\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(59);\nvar definePropertyModule = __webpack_require__(48);\nvar wellKnownSymbol = __webpack_require__(41);\nvar DESCRIPTORS = __webpack_require__(30);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n  var defineProperty = definePropertyModule.f;\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineProperty(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(35);\nvar aConstructor = __webpack_require__(376);\nvar isNullOrUndefined = __webpack_require__(93);\nvar wellKnownSymbol = __webpack_require__(41);\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\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\nvar requireObjectCoercible = __webpack_require__(72);\nvar toString = __webpack_require__(42);\nvar whitespaces = __webpack_require__(300);\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\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, '');\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\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar makeBuiltIn = __webpack_require__(358);\nvar defineProperty = __webpack_require__(48);\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\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar $parseInt = __webpack_require__(503);\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n  parseInt: $parseInt\n});\n\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\n\nmodule.exports = global.Promise;\n\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar exec = __webpack_require__(305);\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\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(935);\n__webpack_require__(936);\n\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(120);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(391),\n    isLength = __webpack_require__(397);\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\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Displayable = __webpack_require__(254);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar zrUtil = __webpack_require__(2);\n\nvar imageHelper = __webpack_require__(402);\n\n/**\n * @alias zrender/graphic/Image\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nfunction ZImage(opts) {\n  Displayable.call(this, opts);\n}\n\nZImage.prototype = {\n  constructor: ZImage,\n  type: 'image',\n  brush: function (ctx, prevEl) {\n    var style = this.style;\n    var src = style.image; // Must bind each time\n\n    style.bind(ctx, this, prevEl);\n    var image = this._image = imageHelper.createOrUpdateImage(src, this._image, this, this.onload);\n\n    if (!image || !imageHelper.isImageReady(image)) {\n      return;\n    } // 图片已经加载完成\n    // if (image.nodeName.toUpperCase() == 'IMG') {\n    //     if (!image.complete) {\n    //         return;\n    //     }\n    // }\n    // Else is canvas\n\n\n    var x = style.x || 0;\n    var y = style.y || 0;\n    var width = style.width;\n    var height = style.height;\n    var aspect = image.width / image.height;\n\n    if (width == null && height != null) {\n      // Keep image/height ratio\n      width = height * aspect;\n    } else if (height == null && width != null) {\n      height = width / aspect;\n    } else if (width == null && height == null) {\n      width = image.width;\n      height = image.height;\n    } // 设置transform\n\n\n    this.setTransform(ctx);\n\n    if (style.sWidth && style.sHeight) {\n      var sx = style.sx || 0;\n      var sy = style.sy || 0;\n      ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n    } else if (style.sx && style.sy) {\n      var sx = style.sx;\n      var sy = style.sy;\n      var sWidth = width - sx;\n      var sHeight = height - sy;\n      ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n    } else {\n      ctx.drawImage(image, x, y, width, height);\n    } // Draw rect text\n\n\n    if (style.text != null) {\n      // Only restore transform when needs draw text.\n      this.restoreTransform(ctx);\n      this.drawRectText(ctx, this.getBoundingRect());\n    }\n  },\n  getBoundingRect: function () {\n    var style = this.style;\n\n    if (!this._rect) {\n      this._rect = new BoundingRect(style.x || 0, style.y || 0, style.width || 0, style.height || 0);\n    }\n\n    return this._rect;\n  }\n};\nzrUtil.inherits(ZImage, Displayable);\nvar _default = ZImage;\nmodule.exports = _default;\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Parse shadow style\n// TODO Only shallow path support\nfunction _default(properties) {\n  // Normalize\n  for (var i = 0; i < properties.length; i++) {\n    if (!properties[i][1]) {\n      properties[i][1] = properties[i][0];\n    }\n  }\n\n  return function (model, excludes, includes) {\n    var style = {};\n\n    for (var i = 0; i < properties.length; i++) {\n      var propName = properties[i][1];\n\n      if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n        continue;\n      }\n\n      var val = model.getShallow(propName);\n\n      if (val != null) {\n        style[properties[i][0]] = val;\n      }\n    }\n\n    return style;\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar curve = __webpack_require__(152);\n\nvar vec2 = __webpack_require__(56);\n\nvar bbox = __webpack_require__(255);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar _config = __webpack_require__(324);\n\nvar dpr = _config.devicePixelRatio;\n\n/**\n * Path 代理，可以在`buildPath`中用于替代`ctx`, 会保存每个path操作的命令到pathCommands属性中\n * 可以用于 isInsidePath 判断以及获取boundingRect\n *\n * @module zrender/core/PathProxy\n * @author Yi Shen (http://www.github.com/pissang)\n */\n// TODO getTotalLength, getPointAtLength\n\n/* global Float32Array */\nvar CMD = {\n  M: 1,\n  L: 2,\n  C: 3,\n  Q: 4,\n  A: 5,\n  Z: 6,\n  // Rect\n  R: 7\n}; // var CMD_MEM_SIZE = {\n//     M: 3,\n//     L: 3,\n//     C: 7,\n//     Q: 5,\n//     A: 9,\n//     R: 5,\n//     Z: 1\n// };\n\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathSqrt = Math.sqrt;\nvar mathAbs = Math.abs;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\n/**\n * @alias module:zrender/core/PathProxy\n * @constructor\n */\n\nvar PathProxy = function (notSaveData) {\n  this._saveData = !(notSaveData || false);\n\n  if (this._saveData) {\n    /**\n     * Path data. Stored as flat array\n     * @type {Array.<Object>}\n     */\n    this.data = [];\n  }\n\n  this._ctx = null;\n};\n/**\n * 快速计算Path包围盒（并不是最小包围盒）\n * @return {Object}\n */\n\n\nPathProxy.prototype = {\n  constructor: PathProxy,\n  _xi: 0,\n  _yi: 0,\n  _x0: 0,\n  _y0: 0,\n  // Unit x, Unit y. Provide for avoiding drawing that too short line segment\n  _ux: 0,\n  _uy: 0,\n  _len: 0,\n  _lineDash: null,\n  _dashOffset: 0,\n  _dashIdx: 0,\n  _dashSum: 0,\n\n  /**\n   * @readOnly\n   */\n  setScale: function (sx, sy, segmentIgnoreThreshold) {\n    // Compat. Previously there is no segmentIgnoreThreshold.\n    segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n    this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n    this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n  },\n  getContext: function () {\n    return this._ctx;\n  },\n\n  /**\n   * @param  {CanvasRenderingContext2D} ctx\n   * @return {module:zrender/core/PathProxy}\n   */\n  beginPath: function (ctx) {\n    this._ctx = ctx;\n    ctx && ctx.beginPath();\n    ctx && (this.dpr = ctx.dpr); // Reset\n\n    if (this._saveData) {\n      this._len = 0;\n    }\n\n    if (this._lineDash) {\n      this._lineDash = null;\n      this._dashOffset = 0;\n    }\n\n    return this;\n  },\n\n  /**\n   * @param  {number} x\n   * @param  {number} y\n   * @return {module:zrender/core/PathProxy}\n   */\n  moveTo: function (x, y) {\n    this.addData(CMD.M, x, y);\n    this._ctx && this._ctx.moveTo(x, y); // x0, y0, xi, yi 是记录在 _dashedXXXXTo 方法中使用\n    // xi, yi 记录当前点, x0, y0 在 closePath 的时候回到起始点。\n    // 有可能在 beginPath 之后直接调用 lineTo，这时候 x0, y0 需要\n    // 在 lineTo 方法中记录，这里先不考虑这种情况，dashed line 也只在 IE10- 中不支持\n\n    this._x0 = x;\n    this._y0 = y;\n    this._xi = x;\n    this._yi = y;\n    return this;\n  },\n\n  /**\n   * @param  {number} x\n   * @param  {number} y\n   * @return {module:zrender/core/PathProxy}\n   */\n  lineTo: function (x, y) {\n    var exceedUnit = mathAbs(x - this._xi) > this._ux || mathAbs(y - this._yi) > this._uy // Force draw the first segment\n    || this._len < 5;\n    this.addData(CMD.L, x, y);\n\n    if (this._ctx && exceedUnit) {\n      this._needsDash() ? this._dashedLineTo(x, y) : this._ctx.lineTo(x, y);\n    }\n\n    if (exceedUnit) {\n      this._xi = x;\n      this._yi = y;\n    }\n\n    return this;\n  },\n\n  /**\n   * @param  {number} x1\n   * @param  {number} y1\n   * @param  {number} x2\n   * @param  {number} y2\n   * @param  {number} x3\n   * @param  {number} y3\n   * @return {module:zrender/core/PathProxy}\n   */\n  bezierCurveTo: function (x1, y1, x2, y2, x3, y3) {\n    this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n\n    if (this._ctx) {\n      this._needsDash() ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3) : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n    }\n\n    this._xi = x3;\n    this._yi = y3;\n    return this;\n  },\n\n  /**\n   * @param  {number} x1\n   * @param  {number} y1\n   * @param  {number} x2\n   * @param  {number} y2\n   * @return {module:zrender/core/PathProxy}\n   */\n  quadraticCurveTo: function (x1, y1, x2, y2) {\n    this.addData(CMD.Q, x1, y1, x2, y2);\n\n    if (this._ctx) {\n      this._needsDash() ? this._dashedQuadraticTo(x1, y1, x2, y2) : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n    }\n\n    this._xi = x2;\n    this._yi = y2;\n    return this;\n  },\n\n  /**\n   * @param  {number} cx\n   * @param  {number} cy\n   * @param  {number} r\n   * @param  {number} startAngle\n   * @param  {number} endAngle\n   * @param  {boolean} anticlockwise\n   * @return {module:zrender/core/PathProxy}\n   */\n  arc: function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n    this.addData(CMD.A, cx, cy, r, r, startAngle, endAngle - startAngle, 0, anticlockwise ? 0 : 1);\n    this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n    this._xi = mathCos(endAngle) * r + cx;\n    this._yi = mathSin(endAngle) * r + cy;\n    return this;\n  },\n  // TODO\n  arcTo: function (x1, y1, x2, y2, radius) {\n    if (this._ctx) {\n      this._ctx.arcTo(x1, y1, x2, y2, radius);\n    }\n\n    return this;\n  },\n  // TODO\n  rect: function (x, y, w, h) {\n    this._ctx && this._ctx.rect(x, y, w, h);\n    this.addData(CMD.R, x, y, w, h);\n    return this;\n  },\n\n  /**\n   * @return {module:zrender/core/PathProxy}\n   */\n  closePath: function () {\n    this.addData(CMD.Z);\n    var ctx = this._ctx;\n    var x0 = this._x0;\n    var y0 = this._y0;\n\n    if (ctx) {\n      this._needsDash() && this._dashedLineTo(x0, y0);\n      ctx.closePath();\n    }\n\n    this._xi = x0;\n    this._yi = y0;\n    return this;\n  },\n\n  /**\n   * Context 从外部传入，因为有可能是 rebuildPath 完之后再 fill。\n   * stroke 同样\n   * @param {CanvasRenderingContext2D} ctx\n   * @return {module:zrender/core/PathProxy}\n   */\n  fill: function (ctx) {\n    ctx && ctx.fill();\n    this.toStatic();\n  },\n\n  /**\n   * @param {CanvasRenderingContext2D} ctx\n   * @return {module:zrender/core/PathProxy}\n   */\n  stroke: function (ctx) {\n    ctx && ctx.stroke();\n    this.toStatic();\n  },\n\n  /**\n   * 必须在其它绘制命令前调用\n   * Must be invoked before all other path drawing methods\n   * @return {module:zrender/core/PathProxy}\n   */\n  setLineDash: function (lineDash) {\n    if (lineDash instanceof Array) {\n      this._lineDash = lineDash;\n      this._dashIdx = 0;\n      var lineDashSum = 0;\n\n      for (var i = 0; i < lineDash.length; i++) {\n        lineDashSum += lineDash[i];\n      }\n\n      this._dashSum = lineDashSum;\n    }\n\n    return this;\n  },\n\n  /**\n   * 必须在其它绘制命令前调用\n   * Must be invoked before all other path drawing methods\n   * @return {module:zrender/core/PathProxy}\n   */\n  setLineDashOffset: function (offset) {\n    this._dashOffset = offset;\n    return this;\n  },\n\n  /**\n   *\n   * @return {boolean}\n   */\n  len: function () {\n    return this._len;\n  },\n\n  /**\n   * 直接设置 Path 数据\n   */\n  setData: function (data) {\n    var len = data.length;\n\n    if (!(this.data && this.data.length === len) && hasTypedArray) {\n      this.data = new Float32Array(len);\n    }\n\n    for (var i = 0; i < len; i++) {\n      this.data[i] = data[i];\n    }\n\n    this._len = len;\n  },\n\n  /**\n   * 添加子路径\n   * @param {module:zrender/core/PathProxy|Array.<module:zrender/core/PathProxy>} path\n   */\n  appendPath: function (path) {\n    if (!(path instanceof Array)) {\n      path = [path];\n    }\n\n    var len = path.length;\n    var appendSize = 0;\n    var offset = this._len;\n\n    for (var i = 0; i < len; i++) {\n      appendSize += path[i].len();\n    }\n\n    if (hasTypedArray && this.data instanceof Float32Array) {\n      this.data = new Float32Array(offset + appendSize);\n    }\n\n    for (var i = 0; i < len; i++) {\n      var appendPathData = path[i].data;\n\n      for (var k = 0; k < appendPathData.length; k++) {\n        this.data[offset++] = appendPathData[k];\n      }\n    }\n\n    this._len = offset;\n  },\n\n  /**\n   * 填充 Path 数据。\n   * 尽量复用而不申明新的数组。大部分图形重绘的指令数据长度都是不变的。\n   */\n  addData: function (cmd) {\n    if (!this._saveData) {\n      return;\n    }\n\n    var data = this.data;\n\n    if (this._len + arguments.length > data.length) {\n      // 因为之前的数组已经转换成静态的 Float32Array\n      // 所以不够用时需要扩展一个新的动态数组\n      this._expandData();\n\n      data = this.data;\n    }\n\n    for (var i = 0; i < arguments.length; i++) {\n      data[this._len++] = arguments[i];\n    }\n\n    this._prevCmd = cmd;\n  },\n  _expandData: function () {\n    // Only if data is Float32Array\n    if (!(this.data instanceof Array)) {\n      var newData = [];\n\n      for (var i = 0; i < this._len; i++) {\n        newData[i] = this.data[i];\n      }\n\n      this.data = newData;\n    }\n  },\n\n  /**\n   * If needs js implemented dashed line\n   * @return {boolean}\n   * @private\n   */\n  _needsDash: function () {\n    return this._lineDash;\n  },\n  _dashedLineTo: function (x1, y1) {\n    var dashSum = this._dashSum;\n    var offset = this._dashOffset;\n    var lineDash = this._lineDash;\n    var ctx = this._ctx;\n    var x0 = this._xi;\n    var y0 = this._yi;\n    var dx = x1 - x0;\n    var dy = y1 - y0;\n    var dist = mathSqrt(dx * dx + dy * dy);\n    var x = x0;\n    var y = y0;\n    var dash;\n    var nDash = lineDash.length;\n    var idx;\n    dx /= dist;\n    dy /= dist;\n\n    if (offset < 0) {\n      // Convert to positive offset\n      offset = dashSum + offset;\n    }\n\n    offset %= dashSum;\n    x -= offset * dx;\n    y -= offset * dy;\n\n    while (dx > 0 && x <= x1 || dx < 0 && x >= x1 || dx === 0 && (dy > 0 && y <= y1 || dy < 0 && y >= y1)) {\n      idx = this._dashIdx;\n      dash = lineDash[idx];\n      x += dx * dash;\n      y += dy * dash;\n      this._dashIdx = (idx + 1) % nDash; // Skip positive offset\n\n      if (dx > 0 && x < x0 || dx < 0 && x > x0 || dy > 0 && y < y0 || dy < 0 && y > y0) {\n        continue;\n      }\n\n      ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin(x, x1) : mathMax(x, x1), dy >= 0 ? mathMin(y, y1) : mathMax(y, y1));\n    } // Offset for next lineTo\n\n\n    dx = x - x1;\n    dy = y - y1;\n    this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n  },\n  // Not accurate dashed line to\n  _dashedBezierTo: function (x1, y1, x2, y2, x3, y3) {\n    var dashSum = this._dashSum;\n    var offset = this._dashOffset;\n    var lineDash = this._lineDash;\n    var ctx = this._ctx;\n    var x0 = this._xi;\n    var y0 = this._yi;\n    var t;\n    var dx;\n    var dy;\n    var cubicAt = curve.cubicAt;\n    var bezierLen = 0;\n    var idx = this._dashIdx;\n    var nDash = lineDash.length;\n    var x;\n    var y;\n    var tmpLen = 0;\n\n    if (offset < 0) {\n      // Convert to positive offset\n      offset = dashSum + offset;\n    }\n\n    offset %= dashSum; // Bezier approx length\n\n    for (t = 0; t < 1; t += 0.1) {\n      dx = cubicAt(x0, x1, x2, x3, t + 0.1) - cubicAt(x0, x1, x2, x3, t);\n      dy = cubicAt(y0, y1, y2, y3, t + 0.1) - cubicAt(y0, y1, y2, y3, t);\n      bezierLen += mathSqrt(dx * dx + dy * dy);\n    } // Find idx after add offset\n\n\n    for (; idx < nDash; idx++) {\n      tmpLen += lineDash[idx];\n\n      if (tmpLen > offset) {\n        break;\n      }\n    }\n\n    t = (tmpLen - offset) / bezierLen;\n\n    while (t <= 1) {\n      x = cubicAt(x0, x1, x2, x3, t);\n      y = cubicAt(y0, y1, y2, y3, t); // Use line to approximate dashed bezier\n      // Bad result if dash is long\n\n      idx % 2 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\n      t += lineDash[idx] / bezierLen;\n      idx = (idx + 1) % nDash;\n    } // Finish the last segment and calculate the new offset\n\n\n    idx % 2 !== 0 && ctx.lineTo(x3, y3);\n    dx = x3 - x;\n    dy = y3 - y;\n    this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n  },\n  _dashedQuadraticTo: function (x1, y1, x2, y2) {\n    // Convert quadratic to cubic using degree elevation\n    var x3 = x2;\n    var y3 = y2;\n    x2 = (x2 + 2 * x1) / 3;\n    y2 = (y2 + 2 * y1) / 3;\n    x1 = (this._xi + 2 * x1) / 3;\n    y1 = (this._yi + 2 * y1) / 3;\n\n    this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\n  },\n\n  /**\n   * 转成静态的 Float32Array 减少堆内存占用\n   * Convert dynamic array to static Float32Array\n   */\n  toStatic: function () {\n    var data = this.data;\n\n    if (data instanceof Array) {\n      data.length = this._len;\n\n      if (hasTypedArray) {\n        this.data = new Float32Array(data);\n      }\n    }\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getBoundingRect: function () {\n    min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n    max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n    var data = this.data;\n    var xi = 0;\n    var yi = 0;\n    var x0 = 0;\n    var y0 = 0;\n\n    for (var i = 0; i < data.length;) {\n      var cmd = data[i++];\n\n      if (i === 1) {\n        // 如果第一个命令是 L, C, Q\n        // 则 previous point 同绘制命令的第一个 point\n        //\n        // 第一个命令为 Arc 的情况下会在后面特殊处理\n        xi = data[i];\n        yi = data[i + 1];\n        x0 = xi;\n        y0 = yi;\n      }\n\n      switch (cmd) {\n        case CMD.M:\n          // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n          // 在 closePath 的时候使用\n          x0 = data[i++];\n          y0 = data[i++];\n          xi = x0;\n          yi = y0;\n          min2[0] = x0;\n          min2[1] = y0;\n          max2[0] = x0;\n          max2[1] = y0;\n          break;\n\n        case CMD.L:\n          bbox.fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n          xi = data[i++];\n          yi = data[i++];\n          break;\n\n        case CMD.C:\n          bbox.fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n          xi = data[i++];\n          yi = data[i++];\n          break;\n\n        case CMD.Q:\n          bbox.fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n          xi = data[i++];\n          yi = data[i++];\n          break;\n\n        case CMD.A:\n          // TODO Arc 判断的开销比较大\n          var cx = data[i++];\n          var cy = data[i++];\n          var rx = data[i++];\n          var ry = data[i++];\n          var startAngle = data[i++];\n          var endAngle = data[i++] + startAngle; // TODO Arc 旋转\n\n          i += 1;\n          var anticlockwise = 1 - data[i++];\n\n          if (i === 1) {\n            // 直接使用 arc 命令\n            // 第一个命令起点还未定义\n            x0 = mathCos(startAngle) * rx + cx;\n            y0 = mathSin(startAngle) * ry + cy;\n          }\n\n          bbox.fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n          xi = mathCos(endAngle) * rx + cx;\n          yi = mathSin(endAngle) * ry + cy;\n          break;\n\n        case CMD.R:\n          x0 = xi = data[i++];\n          y0 = yi = data[i++];\n          var width = data[i++];\n          var height = data[i++]; // Use fromLine\n\n          bbox.fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n          break;\n\n        case CMD.Z:\n          xi = x0;\n          yi = y0;\n          break;\n      } // Union\n\n\n      vec2.min(min, min, min2);\n      vec2.max(max, max, max2);\n    } // No data\n\n\n    if (i === 0) {\n      min[0] = min[1] = max[0] = max[1] = 0;\n    }\n\n    return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n  },\n\n  /**\n   * Rebuild path from current data\n   * Rebuild path will not consider javascript implemented line dash.\n   * @param {CanvasRenderingContext2D} ctx\n   */\n  rebuildPath: function (ctx) {\n    var d = this.data;\n    var x0;\n    var y0;\n    var xi;\n    var yi;\n    var x;\n    var y;\n    var ux = this._ux;\n    var uy = this._uy;\n    var len = this._len;\n\n    for (var i = 0; i < len;) {\n      var cmd = d[i++];\n\n      if (i === 1) {\n        // 如果第一个命令是 L, C, Q\n        // 则 previous point 同绘制命令的第一个 point\n        //\n        // 第一个命令为 Arc 的情况下会在后面特殊处理\n        xi = d[i];\n        yi = d[i + 1];\n        x0 = xi;\n        y0 = yi;\n      }\n\n      switch (cmd) {\n        case CMD.M:\n          x0 = xi = d[i++];\n          y0 = yi = d[i++];\n          ctx.moveTo(xi, yi);\n          break;\n\n        case CMD.L:\n          x = d[i++];\n          y = d[i++]; // Not draw too small seg between\n\n          if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\n            ctx.lineTo(x, y);\n            xi = x;\n            yi = y;\n          }\n\n          break;\n\n        case CMD.C:\n          ctx.bezierCurveTo(d[i++], d[i++], d[i++], d[i++], d[i++], d[i++]);\n          xi = d[i - 2];\n          yi = d[i - 1];\n          break;\n\n        case CMD.Q:\n          ctx.quadraticCurveTo(d[i++], d[i++], d[i++], d[i++]);\n          xi = d[i - 2];\n          yi = d[i - 1];\n          break;\n\n        case CMD.A:\n          var cx = d[i++];\n          var cy = d[i++];\n          var rx = d[i++];\n          var ry = d[i++];\n          var theta = d[i++];\n          var dTheta = d[i++];\n          var psi = d[i++];\n          var fs = d[i++];\n          var r = rx > ry ? rx : ry;\n          var scaleX = rx > ry ? 1 : rx / ry;\n          var scaleY = rx > ry ? ry / rx : 1;\n          var isEllipse = Math.abs(rx - ry) > 1e-3;\n          var endAngle = theta + dTheta;\n\n          if (isEllipse) {\n            ctx.translate(cx, cy);\n            ctx.rotate(psi);\n            ctx.scale(scaleX, scaleY);\n            ctx.arc(0, 0, r, theta, endAngle, 1 - fs);\n            ctx.scale(1 / scaleX, 1 / scaleY);\n            ctx.rotate(-psi);\n            ctx.translate(-cx, -cy);\n          } else {\n            ctx.arc(cx, cy, r, theta, endAngle, 1 - fs);\n          }\n\n          if (i === 1) {\n            // 直接使用 arc 命令\n            // 第一个命令起点还未定义\n            x0 = mathCos(theta) * rx + cx;\n            y0 = mathSin(theta) * ry + cy;\n          }\n\n          xi = mathCos(endAngle) * rx + cx;\n          yi = mathSin(endAngle) * ry + cy;\n          break;\n\n        case CMD.R:\n          x0 = xi = d[i];\n          y0 = yi = d[i + 1];\n          ctx.rect(d[i++], d[i++], d[i++], d[i++]);\n          break;\n\n        case CMD.Z:\n          ctx.closePath();\n          xi = x0;\n          yi = y0;\n      }\n    }\n  }\n};\nPathProxy.CMD = CMD;\nvar _default = PathProxy;\nmodule.exports = _default;\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @return {string} If large mode changed, return string 'reset';\n */\nfunction _default() {\n  var inner = makeInner();\n  return function (seriesModel) {\n    var fields = inner(seriesModel);\n    var pipelineContext = seriesModel.pipelineContext;\n    var originalLarge = fields.large;\n    var originalProgressive = fields.progressiveRender; // FIXME: if the planner works on a filtered series, `pipelineContext` does not\n    // exists. See #11611 . Probably we need to modify this structure, see the comment\n    // on `performRawSeries` in `Schedular.js`.\n\n    var large = fields.large = pipelineContext && pipelineContext.large;\n    var progressive = fields.progressiveRender = pipelineContext && pipelineContext.progressiveRender;\n    return !!(originalLarge ^ large || originalProgressive ^ progressive) && 'reset';\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 215 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar completeDimensions = __webpack_require__(574);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Substitute `completeDimensions`.\n * `completeDimensions` is to be deprecated.\n */\n\n/**\n * @param {module:echarts/data/Source|module:echarts/data/List} source or data.\n * @param {Object|Array} [opt]\n * @param {Array.<string|Object>} [opt.coordDimensions=[]]\n * @param {number} [opt.dimensionsCount]\n * @param {string} [opt.generateCoord]\n * @param {string} [opt.generateCoordCount]\n * @param {Array.<string|Object>} [opt.dimensionsDefine=source.dimensionsDefine] Overwrite source define.\n * @param {Object|HashMap} [opt.encodeDefine=source.encodeDefine] Overwrite source define.\n * @param {Function} [opt.encodeDefaulter] Make default encode if user not specified.\n * @return {Array.<Object>} dimensionsInfo\n */\nfunction _default(source, opt) {\n  opt = opt || {};\n  return completeDimensions(opt.coordDimensions || [], source, {\n    dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\n    encodeDef: opt.encodeDefine || source.encodeDefine,\n    dimCount: opt.dimensionsCount,\n    encodeDefaulter: opt.encodeDefaulter,\n    generateCoord: opt.generateCoord,\n    generateCoordCount: opt.generateCoordCount\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import * as axisHelper from './axisHelper';\nvar _default = {\n  /**\n   * @param {boolean} origin\n   * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN\n   */\n  getMin: function (origin) {\n    var option = this.option;\n    var min = !origin && option.rangeStart != null ? option.rangeStart : option.min;\n\n    if (this.axis && min != null && min !== 'dataMin' && typeof min !== 'function' && !zrUtil.eqNaN(min)) {\n      min = this.axis.scale.parse(min);\n    }\n\n    return min;\n  },\n\n  /**\n   * @param {boolean} origin\n   * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN\n   */\n  getMax: function (origin) {\n    var option = this.option;\n    var max = !origin && option.rangeEnd != null ? option.rangeEnd : option.max;\n\n    if (this.axis && max != null && max !== 'dataMax' && typeof max !== 'function' && !zrUtil.eqNaN(max)) {\n      max = this.axis.scale.parse(max);\n    }\n\n    return max;\n  },\n\n  /**\n   * @return {boolean}\n   */\n  getNeedCrossZero: function () {\n    var option = this.option;\n    return option.rangeStart != null || option.rangeEnd != null ? false : !option.scale;\n  },\n\n  /**\n   * Should be implemented by each axis model if necessary.\n   * @return {module:echarts/model/Component} coordinate system model\n   */\n  getCoordSysModel: zrUtil.noop,\n\n  /**\n   * @param {number} rangeStart Can only be finite number or null/undefined or NaN.\n   * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.\n   */\n  setRange: function (rangeStart, rangeEnd) {\n    this.option.rangeStart = rangeStart;\n    this.option.rangeEnd = rangeEnd;\n  },\n\n  /**\n   * Reset range\n   */\n  resetRange: function () {\n    // rangeStart and rangeEnd is readonly.\n    this.option.rangeStart = this.option.rangeEnd = null;\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createDimensions = __webpack_require__(215);\n\nvar List = __webpack_require__(116);\n\nvar _util = __webpack_require__(2);\n\nvar extend = _util.extend;\nvar isArray = _util.isArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n *     coordDimensions: ['value'],\n *     dimensionsCount: 5\n * });\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object|Array.<string|Object>} opt opt or coordDimensions\n *        The options in opt, see `echarts/data/helper/createDimensions`\n * @param {Array.<string>} [nameList]\n * @return {module:echarts/data/List}\n */\nfunction _default(seriesModel, opt, nameList) {\n  opt = isArray(opt) && {\n    coordDimensions: opt\n  } || extend({}, opt);\n  var source = seriesModel.getSource();\n  var dimensionsInfo = createDimensions(source, opt);\n  var list = new List(dimensionsInfo, seriesModel);\n  list.initData(source, nameList);\n  return list;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Calculate slider move result.\n * Usage:\n * (1) If both handle0 and handle1 are needed to be moved, set minSpan the same as\n * maxSpan and the same as `Math.abs(handleEnd[1] - handleEnds[0])`.\n * (2) If handle0 is forbidden to cross handle1, set minSpan as `0`.\n *\n * @param {number} delta Move length.\n * @param {Array.<number>} handleEnds handleEnds[0] can be bigger then handleEnds[1].\n *              handleEnds will be modified in this method.\n * @param {Array.<number>} extent handleEnds is restricted by extent.\n *              extent[0] should less or equals than extent[1].\n * @param {number|string} handleIndex Can be 'all', means that both move the two handleEnds.\n * @param {number} [minSpan] The range of dataZoom can not be smaller than that.\n *              If not set, handle0 and cross handle1. If set as a non-negative\n *              number (including `0`), handles will push each other when reaching\n *              the minSpan.\n * @param {number} [maxSpan] The range of dataZoom can not be larger than that.\n * @return {Array.<number>} The input handleEnds.\n */\nfunction _default(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {\n  delta = delta || 0;\n  var extentSpan = extent[1] - extent[0]; // Notice maxSpan and minSpan can be null/undefined.\n\n  if (minSpan != null) {\n    minSpan = restrict(minSpan, [0, extentSpan]);\n  }\n\n  if (maxSpan != null) {\n    maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);\n  }\n\n  if (handleIndex === 'all') {\n    var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);\n    handleSpan = restrict(handleSpan, [0, extentSpan]);\n    minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]);\n    handleIndex = 0;\n  }\n\n  handleEnds[0] = restrict(handleEnds[0], extent);\n  handleEnds[1] = restrict(handleEnds[1], extent);\n  var originalDistSign = getSpanSign(handleEnds, handleIndex);\n  handleEnds[handleIndex] += delta; // Restrict in extent.\n\n  var extentMinSpan = minSpan || 0;\n  var realExtent = extent.slice();\n  originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan;\n  handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent); // Expand span.\n\n  var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n  if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {\n    // If minSpan exists, 'cross' is forbidden.\n    handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;\n  } // Shrink span.\n\n\n  var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n  if (maxSpan != null && currDistSign.span > maxSpan) {\n    handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;\n  }\n\n  return handleEnds;\n}\n\nfunction getSpanSign(handleEnds, handleIndex) {\n  var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; // If `handleEnds[0] === handleEnds[1]`, always believe that handleEnd[0]\n  // is at left of handleEnds[1] for non-cross case.\n\n  return {\n    span: Math.abs(dist),\n    sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1\n  };\n}\n\nfunction restrict(value, extend) {\n  return Math.min(extend[1] != null ? extend[1] : Infinity, Math.max(extend[0] != null ? extend[0] : -Infinity, value));\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar env = __webpack_require__(66);\n\nvar modelUtil = __webpack_require__(31);\n\nvar helper = __webpack_require__(425);\n\nvar AxisProxy = __webpack_require__(1234);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar eachAxisDim = helper.eachAxisDim;\nvar DataZoomModel = echarts.extendComponentModel({\n  type: 'dataZoom',\n  dependencies: ['xAxis', 'yAxis', 'zAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series'],\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    zlevel: 0,\n    z: 4,\n    // Higher than normal component (z: 2).\n    orient: null,\n    // Default auto by axisIndex. Possible value: 'horizontal', 'vertical'.\n    xAxisIndex: null,\n    // Default the first horizontal category axis.\n    yAxisIndex: null,\n    // Default the first vertical category axis.\n    filterMode: 'filter',\n    // Possible values: 'filter' or 'empty' or 'weakFilter'.\n    // 'filter': data items which are out of window will be removed. This option is\n    //          applicable when filtering outliers. For each data item, it will be\n    //          filtered if one of the relevant dimensions is out of the window.\n    // 'weakFilter': data items which are out of window will be removed. This option\n    //          is applicable when filtering outliers. For each data item, it will be\n    //          filtered only if all  of the relevant dimensions are out of the same\n    //          side of the window.\n    // 'empty': data items which are out of window will be set to empty.\n    //          This option is applicable when user should not neglect\n    //          that there are some data items out of window.\n    // 'none': Do not filter.\n    // Taking line chart as an example, line will be broken in\n    // the filtered points when filterModel is set to 'empty', but\n    // be connected when set to 'filter'.\n    throttle: null,\n    // Dispatch action by the fixed rate, avoid frequency.\n    // default 100. Do not throttle when use null/undefined.\n    // If animation === true and animationDurationUpdate > 0,\n    // default value is 100, otherwise 20.\n    start: 0,\n    // Start percent. 0 ~ 100\n    end: 100,\n    // End percent. 0 ~ 100\n    startValue: null,\n    // Start value. If startValue specified, start is ignored.\n    endValue: null,\n    // End value. If endValue specified, end is ignored.\n    minSpan: null,\n    // 0 ~ 100\n    maxSpan: null,\n    // 0 ~ 100\n    minValueSpan: null,\n    // The range of dataZoom can not be smaller than that.\n    maxValueSpan: null,\n    // The range of dataZoom can not be larger than that.\n    rangeMode: null // Array, can be 'value' or 'percent'.\n\n  },\n\n  /**\n   * @override\n   */\n  init: function (option, parentModel, ecModel) {\n    /**\n     * key like x_0, y_1\n     * @private\n     * @type {Object}\n     */\n    this._dataIntervalByAxis = {};\n    /**\n     * @private\n     */\n\n    this._dataInfo = {};\n    /**\n     * key like x_0, y_1\n     * @private\n     */\n\n    this._axisProxies = {};\n    /**\n     * @readOnly\n     */\n\n    this.textStyleModel;\n    /**\n     * @private\n     */\n\n    this._autoThrottle = true;\n    /**\n     * It is `[rangeModeForMin, rangeModeForMax]`.\n     * The optional values for `rangeMode`:\n     * + `'value'` mode: the axis extent will always be determined by\n     *     `dataZoom.startValue` and `dataZoom.endValue`, despite\n     *     how data like and how `axis.min` and `axis.max` are.\n     * + `'percent'` mode: `100` represents 100% of the `[dMin, dMax]`,\n     *     where `dMin` is `axis.min` if `axis.min` specified, otherwise `data.extent[0]`,\n     *     and `dMax` is `axis.max` if `axis.max` specified, otherwise `data.extent[1]`.\n     *     Axis extent will be determined by the result of the percent of `[dMin, dMax]`.\n     *\n     * For example, when users are using dynamic data (update data periodically via `setOption`),\n     * if in `'value`' mode, the window will be kept in a fixed value range despite how\n     * data are appended, while if in `'percent'` mode, whe window range will be changed alone with\n     * the appended data (suppose `axis.min` and `axis.max` are not specified).\n     *\n     * @private\n     */\n\n    this._rangePropMode = ['percent', 'percent'];\n    var inputRawOption = retrieveRawOption(option);\n    /**\n     * Suppose a \"main process\" start at the point that model prepared (that is,\n     * model initialized or merged or method called in `action`).\n     * We should keep the `main process` idempotent, that is, given a set of values\n     * on `option`, we get the same result.\n     *\n     * But sometimes, values on `option` will be updated for providing users\n     * a \"final calculated value\" (`dataZoomProcessor` will do that). Those value\n     * should not be the base/input of the `main process`.\n     *\n     * So in that case we should save and keep the input of the `main process`\n     * separately, called `settledOption`.\n     *\n     * For example, consider the case:\n     * (Step_1) brush zoom the grid by `toolbox.dataZoom`,\n     *     where the original input `option.startValue`, `option.endValue` are earsed by\n     *     calculated value.\n     * (Step)2) click the legend to hide and show a series,\n     *     where the new range is calculated by the earsed `startValue` and `endValue`,\n     *     which brings incorrect result.\n     *\n     * @readOnly\n     */\n\n    this.settledOption = inputRawOption;\n    this.mergeDefaultAndTheme(option, ecModel);\n    this.doInit(inputRawOption);\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function (newOption) {\n    var inputRawOption = retrieveRawOption(newOption); //FIX #2591\n\n    zrUtil.merge(this.option, newOption, true);\n    zrUtil.merge(this.settledOption, inputRawOption, true);\n    this.doInit(inputRawOption);\n  },\n\n  /**\n   * @protected\n   */\n  doInit: function (inputRawOption) {\n    var thisOption = this.option; // Disable realtime view update if canvas is not supported.\n\n    if (!env.canvasSupported) {\n      thisOption.realtime = false;\n    }\n\n    this._setDefaultThrottle(inputRawOption);\n\n    updateRangeUse(this, inputRawOption);\n    var settledOption = this.settledOption;\n    each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n      // start/end has higher priority over startValue/endValue if they\n      // both set, but we should make chart.setOption({endValue: 1000})\n      // effective, rather than chart.setOption({endValue: 1000, end: null}).\n      if (this._rangePropMode[index] === 'value') {\n        thisOption[names[0]] = settledOption[names[0]] = null;\n      } // Otherwise do nothing and use the merge result.\n\n    }, this);\n    this.textStyleModel = this.getModel('textStyle');\n\n    this._resetTarget();\n\n    this._giveAxisProxies();\n  },\n\n  /**\n   * @private\n   */\n  _giveAxisProxies: function () {\n    var axisProxies = this._axisProxies;\n    this.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel, ecModel) {\n      var axisModel = this.dependentModels[dimNames.axis][axisIndex]; // If exists, share axisProxy with other dataZoomModels.\n\n      var axisProxy = axisModel.__dzAxisProxy || ( // Use the first dataZoomModel as the main model of axisProxy.\n      axisModel.__dzAxisProxy = new AxisProxy(dimNames.name, axisIndex, this, ecModel)); // FIXME\n      // dispose __dzAxisProxy\n\n      axisProxies[dimNames.name + '_' + axisIndex] = axisProxy;\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _resetTarget: function () {\n    var thisOption = this.option;\n\n    var autoMode = this._judgeAutoMode();\n\n    eachAxisDim(function (dimNames) {\n      var axisIndexName = dimNames.axisIndex;\n      thisOption[axisIndexName] = modelUtil.normalizeToArray(thisOption[axisIndexName]);\n    }, this);\n\n    if (autoMode === 'axisIndex') {\n      this._autoSetAxisIndex();\n    } else if (autoMode === 'orient') {\n      this._autoSetOrient();\n    }\n  },\n\n  /**\n   * @private\n   */\n  _judgeAutoMode: function () {\n    // Auto set only works for setOption at the first time.\n    // The following is user's reponsibility. So using merged\n    // option is OK.\n    var thisOption = this.option;\n    var hasIndexSpecified = false;\n    eachAxisDim(function (dimNames) {\n      // When user set axisIndex as a empty array, we think that user specify axisIndex\n      // but do not want use auto mode. Because empty array may be encountered when\n      // some error occured.\n      if (thisOption[dimNames.axisIndex] != null) {\n        hasIndexSpecified = true;\n      }\n    }, this);\n    var orient = thisOption.orient;\n\n    if (orient == null && hasIndexSpecified) {\n      return 'orient';\n    } else if (!hasIndexSpecified) {\n      if (orient == null) {\n        thisOption.orient = 'horizontal';\n      }\n\n      return 'axisIndex';\n    }\n  },\n\n  /**\n   * @private\n   */\n  _autoSetAxisIndex: function () {\n    var autoAxisIndex = true;\n    var orient = this.get('orient', true);\n    var thisOption = this.option;\n    var dependentModels = this.dependentModels;\n\n    if (autoAxisIndex) {\n      // Find axis that parallel to dataZoom as default.\n      var dimName = orient === 'vertical' ? 'y' : 'x';\n\n      if (dependentModels[dimName + 'Axis'].length) {\n        thisOption[dimName + 'AxisIndex'] = [0];\n        autoAxisIndex = false;\n      } else {\n        each(dependentModels.singleAxis, function (singleAxisModel) {\n          if (autoAxisIndex && singleAxisModel.get('orient', true) === orient) {\n            thisOption.singleAxisIndex = [singleAxisModel.componentIndex];\n            autoAxisIndex = false;\n          }\n        });\n      }\n    }\n\n    if (autoAxisIndex) {\n      // Find the first category axis as default. (consider polar)\n      eachAxisDim(function (dimNames) {\n        if (!autoAxisIndex) {\n          return;\n        }\n\n        var axisIndices = [];\n        var axisModels = this.dependentModels[dimNames.axis];\n\n        if (axisModels.length && !axisIndices.length) {\n          for (var i = 0, len = axisModels.length; i < len; i++) {\n            if (axisModels[i].get('type') === 'category') {\n              axisIndices.push(i);\n            }\n          }\n        }\n\n        thisOption[dimNames.axisIndex] = axisIndices;\n\n        if (axisIndices.length) {\n          autoAxisIndex = false;\n        }\n      }, this);\n    }\n\n    if (autoAxisIndex) {\n      // FIXME\n      // 这里是兼容ec2的写法（没指定xAxisIndex和yAxisIndex时把scatter和双数值轴折柱纳入dataZoom控制），\n      // 但是实际是否需要Grid.js#getScaleByOption来判断（考虑time，log等axis type）？\n      // If both dataZoom.xAxisIndex and dataZoom.yAxisIndex is not specified,\n      // dataZoom component auto adopts series that reference to\n      // both xAxis and yAxis which type is 'value'.\n      this.ecModel.eachSeries(function (seriesModel) {\n        if (this._isSeriesHasAllAxesTypeOf(seriesModel, 'value')) {\n          eachAxisDim(function (dimNames) {\n            var axisIndices = thisOption[dimNames.axisIndex];\n            var axisIndex = seriesModel.get(dimNames.axisIndex);\n            var axisId = seriesModel.get(dimNames.axisId);\n            var axisModel = seriesModel.ecModel.queryComponents({\n              mainType: dimNames.axis,\n              index: axisIndex,\n              id: axisId\n            })[0];\n            axisIndex = axisModel.componentIndex;\n\n            if (zrUtil.indexOf(axisIndices, axisIndex) < 0) {\n              axisIndices.push(axisIndex);\n            }\n          });\n        }\n      }, this);\n    }\n  },\n\n  /**\n   * @private\n   */\n  _autoSetOrient: function () {\n    var dim; // Find the first axis\n\n    this.eachTargetAxis(function (dimNames) {\n      !dim && (dim = dimNames.name);\n    }, this);\n    this.option.orient = dim === 'y' ? 'vertical' : 'horizontal';\n  },\n\n  /**\n   * @private\n   */\n  _isSeriesHasAllAxesTypeOf: function (seriesModel, axisType) {\n    // FIXME\n    // 需要series的xAxisIndex和yAxisIndex都首先自动设置上。\n    // 例如series.type === scatter时。\n    var is = true;\n    eachAxisDim(function (dimNames) {\n      var seriesAxisIndex = seriesModel.get(dimNames.axisIndex);\n      var axisModel = this.dependentModels[dimNames.axis][seriesAxisIndex];\n\n      if (!axisModel || axisModel.get('type') !== axisType) {\n        is = false;\n      }\n    }, this);\n    return is;\n  },\n\n  /**\n   * @private\n   */\n  _setDefaultThrottle: function (inputRawOption) {\n    // When first time user set throttle, auto throttle ends.\n    if (inputRawOption.hasOwnProperty('throttle')) {\n      this._autoThrottle = false;\n    }\n\n    if (this._autoThrottle) {\n      var globalOption = this.ecModel.option;\n      this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20;\n    }\n  },\n\n  /**\n   * @public\n   */\n  getFirstTargetAxisModel: function () {\n    var firstAxisModel;\n    eachAxisDim(function (dimNames) {\n      if (firstAxisModel == null) {\n        var indices = this.get(dimNames.axisIndex);\n\n        if (indices.length) {\n          firstAxisModel = this.dependentModels[dimNames.axis][indices[0]];\n        }\n      }\n    }, this);\n    return firstAxisModel;\n  },\n\n  /**\n   * @public\n   * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel\n   */\n  eachTargetAxis: function (callback, context) {\n    var ecModel = this.ecModel;\n    eachAxisDim(function (dimNames) {\n      each(this.get(dimNames.axisIndex), function (axisIndex) {\n        callback.call(context, dimNames, axisIndex, this, ecModel);\n      }, this);\n    }, this);\n  },\n\n  /**\n   * @param {string} dimName\n   * @param {number} axisIndex\n   * @return {module:echarts/component/dataZoom/AxisProxy} If not found, return null/undefined.\n   */\n  getAxisProxy: function (dimName, axisIndex) {\n    return this._axisProxies[dimName + '_' + axisIndex];\n  },\n\n  /**\n   * @param {string} dimName\n   * @param {number} axisIndex\n   * @return {module:echarts/model/Model} If not found, return null/undefined.\n   */\n  getAxisModel: function (dimName, axisIndex) {\n    var axisProxy = this.getAxisProxy(dimName, axisIndex);\n    return axisProxy && axisProxy.getAxisModel();\n  },\n\n  /**\n   * If not specified, set to undefined.\n   *\n   * @public\n   * @param {Object} opt\n   * @param {number} [opt.start]\n   * @param {number} [opt.end]\n   * @param {number} [opt.startValue]\n   * @param {number} [opt.endValue]\n   */\n  setRawRange: function (opt) {\n    var thisOption = this.option;\n    var settledOption = this.settledOption;\n    each([['start', 'startValue'], ['end', 'endValue']], function (names) {\n      // Consider the pair <start, startValue>:\n      // If one has value and the other one is `null/undefined`, we both set them\n      // to `settledOption`. This strategy enables the feature to clear the original\n      // value in `settledOption` to `null/undefined`.\n      // But if both of them are `null/undefined`, we do not set them to `settledOption`\n      // and keep `settledOption` with the original value. This strategy enables users to\n      // only set <end or endValue> but not set <start or startValue> when calling\n      // `dispatchAction`.\n      // The pair <end, endValue> is treated in the same way.\n      if (opt[names[0]] != null || opt[names[1]] != null) {\n        thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];\n        thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];\n      }\n    }, this);\n    updateRangeUse(this, opt);\n  },\n\n  /**\n   * @public\n   * @param {Object} opt\n   * @param {number} [opt.start]\n   * @param {number} [opt.end]\n   * @param {number} [opt.startValue]\n   * @param {number} [opt.endValue]\n   */\n  setCalculatedRange: function (opt) {\n    var option = this.option;\n    each(['start', 'startValue', 'end', 'endValue'], function (name) {\n      option[name] = opt[name];\n    });\n  },\n\n  /**\n   * @public\n   * @return {Array.<number>} [startPercent, endPercent]\n   */\n  getPercentRange: function () {\n    var axisProxy = this.findRepresentativeAxisProxy();\n\n    if (axisProxy) {\n      return axisProxy.getDataPercentWindow();\n    }\n  },\n\n  /**\n   * @public\n   * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0);\n   *\n   * @param {string} [axisDimName]\n   * @param {number} [axisIndex]\n   * @return {Array.<number>} [startValue, endValue] value can only be '-' or finite number.\n   */\n  getValueRange: function (axisDimName, axisIndex) {\n    if (axisDimName == null && axisIndex == null) {\n      var axisProxy = this.findRepresentativeAxisProxy();\n\n      if (axisProxy) {\n        return axisProxy.getDataValueWindow();\n      }\n    } else {\n      return this.getAxisProxy(axisDimName, axisIndex).getDataValueWindow();\n    }\n  },\n\n  /**\n   * @public\n   * @param {module:echarts/model/Model} [axisModel] If axisModel given, find axisProxy\n   *      corresponding to the axisModel\n   * @return {module:echarts/component/dataZoom/AxisProxy}\n   */\n  findRepresentativeAxisProxy: function (axisModel) {\n    if (axisModel) {\n      return axisModel.__dzAxisProxy;\n    } // Find the first hosted axisProxy\n\n\n    var axisProxies = this._axisProxies;\n\n    for (var key in axisProxies) {\n      if (axisProxies.hasOwnProperty(key) && axisProxies[key].hostedBy(this)) {\n        return axisProxies[key];\n      }\n    } // If no hosted axis find not hosted axisProxy.\n    // Consider this case: dataZoomModel1 and dataZoomModel2 control the same axis,\n    // and the option.start or option.end settings are different. The percentRange\n    // should follow axisProxy.\n    // (We encounter this problem in toolbox data zoom.)\n\n\n    for (var key in axisProxies) {\n      if (axisProxies.hasOwnProperty(key) && !axisProxies[key].hostedBy(this)) {\n        return axisProxies[key];\n      }\n    }\n  },\n\n  /**\n   * @return {Array.<string>}\n   */\n  getRangePropMode: function () {\n    return this._rangePropMode.slice();\n  }\n});\n/**\n * Retrieve the those raw params from option, which will be cached separately.\n * becasue they will be overwritten by normalized/calculated values in the main\n * process.\n */\n\nfunction retrieveRawOption(option) {\n  var ret = {};\n  each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\n    option.hasOwnProperty(name) && (ret[name] = option[name]);\n  });\n  return ret;\n}\n\nfunction updateRangeUse(dataZoomModel, inputRawOption) {\n  var rangePropMode = dataZoomModel._rangePropMode;\n  var rangeModeInOption = dataZoomModel.get('rangeMode');\n  each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n    var percentSpecified = inputRawOption[names[0]] != null;\n    var valueSpecified = inputRawOption[names[1]] != null;\n\n    if (percentSpecified && !valueSpecified) {\n      rangePropMode[index] = 'percent';\n    } else if (!percentSpecified && valueSpecified) {\n      rangePropMode[index] = 'value';\n    } else if (rangeModeInOption) {\n      rangePropMode[index] = rangeModeInOption[index];\n    } else if (percentSpecified) {\n      // percentSpecified && valueSpecified\n      rangePropMode[index] = 'percent';\n    } // else remain its original setting.\n\n  });\n}\n\nvar _default = DataZoomModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentView = __webpack_require__(328);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = ComponentView.extend({\n  type: 'dataZoom',\n  render: function (dataZoomModel, ecModel, api, payload) {\n    this.dataZoomModel = dataZoomModel;\n    this.ecModel = ecModel;\n    this.api = api;\n  },\n\n  /**\n   * Find the first target coordinate system.\n   *\n   * @protected\n   * @return {Object} {\n   *                   grid: [\n   *                       {model: coord0, axisModels: [axis1, axis3], coordIndex: 1},\n   *                       {model: coord1, axisModels: [axis0, axis2], coordIndex: 0},\n   *                       ...\n   *                   ],  // cartesians must not be null/undefined.\n   *                   polar: [\n   *                       {model: coord0, axisModels: [axis4], coordIndex: 0},\n   *                       ...\n   *                   ],  // polars must not be null/undefined.\n   *                   singleAxis: [\n   *                       {model: coord0, axisModels: [], coordIndex: 0}\n   *                   ]\n   */\n  getTargetCoordInfo: function () {\n    var dataZoomModel = this.dataZoomModel;\n    var ecModel = this.ecModel;\n    var coordSysLists = {};\n    dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n      var axisModel = ecModel.getComponent(dimNames.axis, axisIndex);\n\n      if (axisModel) {\n        var coordModel = axisModel.getCoordSysModel();\n        coordModel && save(coordModel, axisModel, coordSysLists[coordModel.mainType] || (coordSysLists[coordModel.mainType] = []), coordModel.componentIndex);\n      }\n    }, this);\n\n    function save(coordModel, axisModel, store, coordIndex) {\n      var item;\n\n      for (var i = 0; i < store.length; i++) {\n        if (store[i].model === coordModel) {\n          item = store[i];\n          break;\n        }\n      }\n\n      if (!item) {\n        store.push(item = {\n          model: coordModel,\n          axisModels: [],\n          coordIndex: coordIndex\n        });\n      }\n\n      item.axisModels.push(axisModel);\n    }\n\n    return coordSysLists;\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(160);\nvar createDesc = __webpack_require__(268);\nmodule.exports = __webpack_require__(161) ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(223);\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = __webpack_require__(1351);\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(1362);\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;// TinyColor v1.4.2\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n    trimRight = /\\s+$/,\n    tinyCounter = 0,\n    mathRound = Math.round,\n    mathMin = Math.min,\n    mathMax = Math.max,\n    mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n    color = (color) ? color : '';\n    opts = opts || { };\n\n    // If input is already a tinycolor, return itself\n    if (color instanceof tinycolor) {\n       return color;\n    }\n    // If we are called as a function, call using new instead\n    if (!(this instanceof tinycolor)) {\n        return new tinycolor(color, opts);\n    }\n\n    var rgb = inputToRGB(color);\n    this._originalInput = color,\n    this._r = rgb.r,\n    this._g = rgb.g,\n    this._b = rgb.b,\n    this._a = rgb.a,\n    this._roundA = mathRound(100*this._a) / 100,\n    this._format = opts.format || rgb.format;\n    this._gradientType = opts.gradientType;\n\n    // Don't let the range of [0,255] come back in [0,1].\n    // Potentially lose a little bit of precision here, but will fix issues where\n    // .5 gets interpreted as half of the total, instead of half of 1\n    // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n    if (this._r < 1) { this._r = mathRound(this._r); }\n    if (this._g < 1) { this._g = mathRound(this._g); }\n    if (this._b < 1) { this._b = mathRound(this._b); }\n\n    this._ok = rgb.ok;\n    this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n    isDark: function() {\n        return this.getBrightness() < 128;\n    },\n    isLight: function() {\n        return !this.isDark();\n    },\n    isValid: function() {\n        return this._ok;\n    },\n    getOriginalInput: function() {\n      return this._originalInput;\n    },\n    getFormat: function() {\n        return this._format;\n    },\n    getAlpha: function() {\n        return this._a;\n    },\n    getBrightness: function() {\n        //http://www.w3.org/TR/AERT#color-contrast\n        var rgb = this.toRgb();\n        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    },\n    getLuminance: function() {\n        //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        var rgb = this.toRgb();\n        var RsRGB, GsRGB, BsRGB, R, G, B;\n        RsRGB = rgb.r/255;\n        GsRGB = rgb.g/255;\n        BsRGB = rgb.b/255;\n\n        if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n        if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n        if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n        return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n    },\n    setAlpha: function(value) {\n        this._a = boundAlpha(value);\n        this._roundA = mathRound(100*this._a) / 100;\n        return this;\n    },\n    toHsv: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n    },\n    toHsvString: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n        return (this._a == 1) ?\n          \"hsv(\"  + h + \", \" + s + \"%, \" + v + \"%)\" :\n          \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n    },\n    toHsl: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n    },\n    toHslString: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n        return (this._a == 1) ?\n          \"hsl(\"  + h + \", \" + s + \"%, \" + l + \"%)\" :\n          \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n    },\n    toHex: function(allow3Char) {\n        return rgbToHex(this._r, this._g, this._b, allow3Char);\n    },\n    toHexString: function(allow3Char) {\n        return '#' + this.toHex(allow3Char);\n    },\n    toHex8: function(allow4Char) {\n        return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n    },\n    toHex8String: function(allow4Char) {\n        return '#' + this.toHex8(allow4Char);\n    },\n    toRgb: function() {\n        return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n    },\n    toRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n          \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n    },\n    toPercentageRgb: function() {\n        return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n    },\n    toPercentageRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n          \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n    },\n    toName: function() {\n        if (this._a === 0) {\n            return \"transparent\";\n        }\n\n        if (this._a < 1) {\n            return false;\n        }\n\n        return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n    },\n    toFilter: function(secondColor) {\n        var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n        var secondHex8String = hex8String;\n        var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n        if (secondColor) {\n            var s = tinycolor(secondColor);\n            secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n        }\n\n        return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n    },\n    toString: function(format) {\n        var formatSet = !!format;\n        format = format || this._format;\n\n        var formattedString = false;\n        var hasAlpha = this._a < 1 && this._a >= 0;\n        var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n        if (needsAlphaFormat) {\n            // Special case for \"transparent\", all other non-alpha formats\n            // will return rgba when there is transparency.\n            if (format === \"name\" && this._a === 0) {\n                return this.toName();\n            }\n            return this.toRgbString();\n        }\n        if (format === \"rgb\") {\n            formattedString = this.toRgbString();\n        }\n        if (format === \"prgb\") {\n            formattedString = this.toPercentageRgbString();\n        }\n        if (format === \"hex\" || format === \"hex6\") {\n            formattedString = this.toHexString();\n        }\n        if (format === \"hex3\") {\n            formattedString = this.toHexString(true);\n        }\n        if (format === \"hex4\") {\n            formattedString = this.toHex8String(true);\n        }\n        if (format === \"hex8\") {\n            formattedString = this.toHex8String();\n        }\n        if (format === \"name\") {\n            formattedString = this.toName();\n        }\n        if (format === \"hsl\") {\n            formattedString = this.toHslString();\n        }\n        if (format === \"hsv\") {\n            formattedString = this.toHsvString();\n        }\n\n        return formattedString || this.toHexString();\n    },\n    clone: function() {\n        return tinycolor(this.toString());\n    },\n\n    _applyModification: function(fn, args) {\n        var color = fn.apply(null, [this].concat([].slice.call(args)));\n        this._r = color._r;\n        this._g = color._g;\n        this._b = color._b;\n        this.setAlpha(color._a);\n        return this;\n    },\n    lighten: function() {\n        return this._applyModification(lighten, arguments);\n    },\n    brighten: function() {\n        return this._applyModification(brighten, arguments);\n    },\n    darken: function() {\n        return this._applyModification(darken, arguments);\n    },\n    desaturate: function() {\n        return this._applyModification(desaturate, arguments);\n    },\n    saturate: function() {\n        return this._applyModification(saturate, arguments);\n    },\n    greyscale: function() {\n        return this._applyModification(greyscale, arguments);\n    },\n    spin: function() {\n        return this._applyModification(spin, arguments);\n    },\n\n    _applyCombination: function(fn, args) {\n        return fn.apply(null, [this].concat([].slice.call(args)));\n    },\n    analogous: function() {\n        return this._applyCombination(analogous, arguments);\n    },\n    complement: function() {\n        return this._applyCombination(complement, arguments);\n    },\n    monochromatic: function() {\n        return this._applyCombination(monochromatic, arguments);\n    },\n    splitcomplement: function() {\n        return this._applyCombination(splitcomplement, arguments);\n    },\n    triad: function() {\n        return this._applyCombination(triad, arguments);\n    },\n    tetrad: function() {\n        return this._applyCombination(tetrad, arguments);\n    }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n    if (typeof color == \"object\") {\n        var newColor = {};\n        for (var i in color) {\n            if (color.hasOwnProperty(i)) {\n                if (i === \"a\") {\n                    newColor[i] = color[i];\n                }\n                else {\n                    newColor[i] = convertToPercentage(color[i]);\n                }\n            }\n        }\n        color = newColor;\n    }\n\n    return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n//     \"red\"\n//     \"#f00\" or \"f00\"\n//     \"#ff0000\" or \"ff0000\"\n//     \"#ff000000\" or \"ff000000\"\n//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n\n    if (typeof color == \"string\") {\n        color = stringInputToObject(color);\n    }\n\n    if (typeof color == \"object\") {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = \"hsv\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = \"hsl\";\n        }\n\n        if (color.hasOwnProperty(\"a\")) {\n            a = color.a;\n        }\n    }\n\n    a = boundAlpha(a);\n\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: mathMin(255, mathMax(rgb.r, 0)),\n        g: mathMin(255, mathMax(rgb.g, 0)),\n        b: mathMin(255, mathMax(rgb.b, 0)),\n        a: a\n    };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n    return {\n        r: bound01(r, 255) * 255,\n        g: bound01(g, 255) * 255,\n        b: bound01(b, 255) * 255\n    };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, l = (max + min) / 2;\n\n    if(max == min) {\n        h = s = 0; // achromatic\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n\n        h /= 6;\n    }\n\n    return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n    var r, g, b;\n\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n\n    function hue2rgb(p, q, t) {\n        if(t < 0) t += 1;\n        if(t > 1) t -= 1;\n        if(t < 1/6) return p + (q - p) * 6 * t;\n        if(t < 1/2) return q;\n        if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n        return p;\n    }\n\n    if(s === 0) {\n        r = g = b = l; // achromatic\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1/3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1/3);\n    }\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, v = max;\n\n    var d = max - min;\n    s = max === 0 ? 0 : d / max;\n\n    if(max == min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n\n    var i = Math.floor(h),\n        f = h - i,\n        p = v * (1 - s),\n        q = v * (1 - f * s),\n        t = v * (1 - (1 - f) * s),\n        mod = i % 6,\n        r = [v, q, p, p, t, v][mod],\n        g = [t, v, v, q, p, p][mod],\n        b = [p, p, t, v, v, q][mod];\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    // Return a 3 character hex if possible\n    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16)),\n        pad2(convertDecimalToHex(a))\n    ];\n\n    // Return a 4 character hex if possible\n    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n    var hex = [\n        pad2(convertDecimalToHex(a)),\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n    if (!color1 || !color2) { return false; }\n    return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n    return tinycolor.fromRatio({\n        r: mathRandom(),\n        g: mathRandom(),\n        b: mathRandom()\n    });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s -= amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s += amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n    return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l += amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var rgb = tinycolor(color).toRgb();\n    rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n    rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n    rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n    return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l -= amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n    var hsl = tinycolor(color).toHsl();\n    var hue = (hsl.h + amount) % 360;\n    hsl.h = hue < 0 ? 360 + hue : hue;\n    return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n    var hsl = tinycolor(color).toHsl();\n    hsl.h = (hsl.h + 180) % 360;\n    return tinycolor(hsl);\n}\n\nfunction triad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction tetrad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction splitcomplement(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n        tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n    ];\n}\n\nfunction analogous(color, results, slices) {\n    results = results || 6;\n    slices = slices || 30;\n\n    var hsl = tinycolor(color).toHsl();\n    var part = 360 / slices;\n    var ret = [tinycolor(color)];\n\n    for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n        hsl.h = (hsl.h + part) % 360;\n        ret.push(tinycolor(hsl));\n    }\n    return ret;\n}\n\nfunction monochromatic(color, results) {\n    results = results || 6;\n    var hsv = tinycolor(color).toHsv();\n    var h = hsv.h, s = hsv.s, v = hsv.v;\n    var ret = [];\n    var modification = 1 / results;\n\n    while (results--) {\n        ret.push(tinycolor({ h: h, s: s, v: v}));\n        v = (v + modification) % 1;\n    }\n\n    return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n    amount = (amount === 0) ? 0 : (amount || 50);\n\n    var rgb1 = tinycolor(color1).toRgb();\n    var rgb2 = tinycolor(color2).toRgb();\n\n    var p = amount / 100;\n\n    var rgba = {\n        r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n        g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n        b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n        a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n    };\n\n    return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n    var c1 = tinycolor(color1);\n    var c2 = tinycolor(color2);\n    return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n//    tinycolor.isReadable(\"#000\", \"#111\") => false\n//    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n    var readability = tinycolor.readability(color1, color2);\n    var wcag2Parms, out;\n\n    out = false;\n\n    wcag2Parms = validateWCAG2Parms(wcag2);\n    switch (wcag2Parms.level + wcag2Parms.size) {\n        case \"AAsmall\":\n        case \"AAAlarge\":\n            out = readability >= 4.5;\n            break;\n        case \"AAlarge\":\n            out = readability >= 3;\n            break;\n        case \"AAAsmall\":\n            out = readability >= 7;\n            break;\n    }\n    return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n    var bestColor = null;\n    var bestScore = 0;\n    var readability;\n    var includeFallbackColors, level, size ;\n    args = args || {};\n    includeFallbackColors = args.includeFallbackColors ;\n    level = args.level;\n    size = args.size;\n\n    for (var i= 0; i < colorList.length ; i++) {\n        readability = tinycolor.readability(baseColor, colorList[i]);\n        if (readability > bestScore) {\n            bestScore = readability;\n            bestColor = tinycolor(colorList[i]);\n        }\n    }\n\n    if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n        return bestColor;\n    }\n    else {\n        args.includeFallbackColors=false;\n        return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n    }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"0ff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"00f\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    burntsienna: \"ea7e5d\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"0ff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkgrey: \"a9a9a9\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkslategrey: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dimgrey: \"696969\",\n    dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"f0f\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    grey: \"808080\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgray: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightgrey: \"d3d3d3\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslategray: \"789\",\n    lightslategrey: \"789\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"0f0\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"f0f\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370db\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"db7093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    rebeccapurple: \"663399\",\n    red: \"f00\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    slategrey: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    wheat: \"f5deb3\",\n    white: \"fff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ff0\",\n    yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n    var flipped = { };\n    for (var i in o) {\n        if (o.hasOwnProperty(i)) {\n            flipped[o[i]] = i;\n        }\n    }\n    return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n    a = parseFloat(a);\n\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n\n    return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n    if (isOnePointZero(n)) { n = \"100%\"; }\n\n    var processPercent = isPercentage(n);\n    n = mathMin(max, mathMax(0, parseFloat(n)));\n\n    // Automatically convert percentage into number\n    if (processPercent) {\n        n = parseInt(n * max, 10) / 100;\n    }\n\n    // Handle floating point rounding errors\n    if ((Math.abs(n - max) < 0.000001)) {\n        return 1;\n    }\n\n    // Convert into [0, 1] range if it isn't already\n    return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n    return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n    return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n    return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n    return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n    if (n <= 1) {\n        n = (n * 100) + \"%\";\n    }\n\n    return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n    return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n    // <http://www.w3.org/TR/css3-values/#integers>\n    var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n    // <http://www.w3.org/TR/css3-values/#number-value>\n    var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n    var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n    // Actual matching.\n    // Parentheses and commas are optional, but not required.\n    // Whitespace can take the place of commas or opening paren\n    var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n    return {\n        CSS_UNIT: new RegExp(CSS_UNIT),\n        rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n        rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n        hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n        hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n        hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n        hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n        hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n        hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n    };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n    return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n    color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n    var named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color == 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n    }\n\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match;\n    if ((match = matchers.rgb.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    if ((match = matchers.rgba.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsl.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    if ((match = matchers.hsla.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsv.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    if ((match = matchers.hsva.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    if ((match = matchers.hex8.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex6.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n    if ((match = matchers.hex4.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            a: convertHexToDecimal(match[4] + '' + match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex3.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n\n    return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n    // return valid WCAG2 parms for isReadable.\n    // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n    var level, size;\n    parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n    level = (parms.level || \"AA\").toUpperCase();\n    size = (parms.size || \"small\").toLowerCase();\n    if (level !== \"AA\" && level !== \"AAA\") {\n        level = \"AA\";\n    }\n    if (size !== \"small\" && size !== \"large\") {\n        size = \"small\";\n    }\n    return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif ( true && module.exports) {\n    module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (true) {\n    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {return tinycolor;}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}\n// Browser: Expose to window\nelse {}\n\n})(Math);\n\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/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\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(92);\nvar toAbsoluteIndex = __webpack_require__(137);\nvar lengthOfArrayLike = __webpack_require__(53);\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    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\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\nvar isCallable = __webpack_require__(43);\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\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(470);\nvar enumBugKeys = __webpack_require__(361);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toAbsoluteIndex = __webpack_require__(137);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar createProperty = __webpack_require__(139);\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n  var length = lengthOfArrayLike(O);\n  var k = toAbsoluteIndex(start, length);\n  var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n  var result = $Array(max(fin - k, 0));\n  for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arraySpeciesConstructor = __webpack_require__(701);\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\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toString = __webpack_require__(42);\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(138);\nvar getMethod = __webpack_require__(136);\nvar isNullOrUndefined = __webpack_require__(93);\nvar Iterators = __webpack_require__(236);\nvar wellKnownSymbol = __webpack_require__(41);\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\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\nvar wellKnownSymbol = __webpack_require__(41);\nvar V8_VERSION = __webpack_require__(134);\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\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $includes = __webpack_require__(230).includes;\nvar fails = __webpack_require__(16);\nvar addToUnscopables = __webpack_require__(119);\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\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\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineBuiltIn = __webpack_require__(62);\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\nvar $ = __webpack_require__(3);\nvar bind = __webpack_require__(497);\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n  bind: bind\n});\n\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return { error: false, value: exec() };\n  } catch (error) {\n    return { error: true, value: error };\n  }\n};\n\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar NativePromiseConstructor = __webpack_require__(206);\nvar isCallable = __webpack_require__(43);\nvar isForced = __webpack_require__(231);\nvar inspectSource = __webpack_require__(359);\nvar wellKnownSymbol = __webpack_require__(41);\nvar IS_BROWSER = __webpack_require__(510);\nvar IS_DENO = __webpack_require__(382);\nvar IS_PURE = __webpack_require__(69);\nvar V8_VERSION = __webpack_require__(134);\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.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 && (IS_BROWSER || IS_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\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(39);\nvar classof = __webpack_require__(99);\nvar wellKnownSymbol = __webpack_require__(41);\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\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(38);\nvar hasOwn = __webpack_require__(44);\nvar isPrototypeOf = __webpack_require__(113);\nvar regExpFlags = __webpack_require__(383);\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n  var flags = R.flags;\n  return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n    ? call(regExpFlags, R) : flags;\n};\n\n\n/***/ }),\n/* 248 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar notARegExp = __webpack_require__(385);\nvar requireObjectCoercible = __webpack_require__(72);\nvar toString = __webpack_require__(42);\nvar correctIsRegExpLogic = __webpack_require__(386);\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\n\n/***/ }),\n/* 249 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(307).charAt;\nvar toString = __webpack_require__(42);\nvar InternalStateModule = __webpack_require__(73);\nvar defineIterator = __webpack_require__(370);\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 { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(38);\nvar anObject = __webpack_require__(35);\nvar isCallable = __webpack_require__(43);\nvar classof = __webpack_require__(99);\nvar regexpExec = __webpack_require__(305);\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 $TypeError('RegExp#exec called on incompatible receiver');\n};\n\n\n/***/ }),\n/* 251 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(174),\n    isObjectLike = __webpack_require__(128);\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\n\n/***/ }),\n/* 252 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeKeys = __webpack_require__(543),\n    baseKeys = __webpack_require__(996),\n    isArrayLike = __webpack_require__(210);\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\n\n/***/ }),\n/* 253 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _config = __webpack_require__(324);\n\nvar debugMode = _config.debugMode;\n\nvar logError = function () {};\n\nif (debugMode === 1) {\n  logError = console.error;\n}\n\nvar _default = logError;\nmodule.exports = _default;\n\n/***/ }),\n/* 254 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar zrUtil = __webpack_require__(2);\n\nvar Style = __webpack_require__(401);\n\nvar Element = __webpack_require__(548);\n\nvar RectText = __webpack_require__(554);\n\n/**\n * Base class of all displayable graphic objects\n * @module zrender/graphic/Displayable\n */\n\n/**\n * @alias module:zrender/graphic/Displayable\n * @extends module:zrender/Element\n * @extends module:zrender/graphic/mixin/RectText\n */\nfunction Displayable(opts) {\n  opts = opts || {};\n  Element.call(this, opts); // Extend properties\n\n  for (var name in opts) {\n    if (opts.hasOwnProperty(name) && name !== 'style') {\n      this[name] = opts[name];\n    }\n  }\n  /**\n   * @type {module:zrender/graphic/Style}\n   */\n\n\n  this.style = new Style(opts.style, this);\n  this._rect = null; // Shapes for cascade clipping.\n  // Can only be `null`/`undefined` or an non-empty array, MUST NOT be an empty array.\n  // because it is easy to only using null to check whether clipPaths changed.\n\n  this.__clipPaths = null; // FIXME Stateful must be mixined after style is setted\n  // Stateful.call(this, opts);\n}\n\nDisplayable.prototype = {\n  constructor: Displayable,\n  type: 'displayable',\n\n  /**\n   * Dirty flag. From which painter will determine if this displayable object needs brush.\n   * @name module:zrender/graphic/Displayable#__dirty\n   * @type {boolean}\n   */\n  __dirty: true,\n\n  /**\n   * Whether the displayable object is visible. when it is true, the displayable object\n   * is not drawn, but the mouse event can still trigger the object.\n   * @name module:/zrender/graphic/Displayable#invisible\n   * @type {boolean}\n   * @default false\n   */\n  invisible: false,\n\n  /**\n   * @name module:/zrender/graphic/Displayable#z\n   * @type {number}\n   * @default 0\n   */\n  z: 0,\n\n  /**\n   * @name module:/zrender/graphic/Displayable#z\n   * @type {number}\n   * @default 0\n   */\n  z2: 0,\n\n  /**\n   * The z level determines the displayable object can be drawn in which layer canvas.\n   * @name module:/zrender/graphic/Displayable#zlevel\n   * @type {number}\n   * @default 0\n   */\n  zlevel: 0,\n\n  /**\n   * Whether it can be dragged.\n   * @name module:/zrender/graphic/Displayable#draggable\n   * @type {boolean}\n   * @default false\n   */\n  draggable: false,\n\n  /**\n   * Whether is it dragging.\n   * @name module:/zrender/graphic/Displayable#draggable\n   * @type {boolean}\n   * @default false\n   */\n  dragging: false,\n\n  /**\n   * Whether to respond to mouse events.\n   * @name module:/zrender/graphic/Displayable#silent\n   * @type {boolean}\n   * @default false\n   */\n  silent: false,\n\n  /**\n   * If enable culling\n   * @type {boolean}\n   * @default false\n   */\n  culling: false,\n\n  /**\n   * Mouse cursor when hovered\n   * @name module:/zrender/graphic/Displayable#cursor\n   * @type {string}\n   */\n  cursor: 'pointer',\n\n  /**\n   * If hover area is bounding rect\n   * @name module:/zrender/graphic/Displayable#rectHover\n   * @type {string}\n   */\n  rectHover: false,\n\n  /**\n   * Render the element progressively when the value >= 0,\n   * usefull for large data.\n   * @type {boolean}\n   */\n  progressive: false,\n\n  /**\n   * @type {boolean}\n   */\n  incremental: false,\n\n  /**\n   * Scale ratio for global scale.\n   * @type {boolean}\n   */\n  globalScaleRatio: 1,\n  beforeBrush: function (ctx) {},\n  afterBrush: function (ctx) {},\n\n  /**\n   * Graphic drawing method.\n   * @param {CanvasRenderingContext2D} ctx\n   */\n  // Interface\n  brush: function (ctx, prevEl) {},\n\n  /**\n   * Get the minimum bounding box.\n   * @return {module:zrender/core/BoundingRect}\n   */\n  // Interface\n  getBoundingRect: function () {},\n\n  /**\n   * If displayable element contain coord x, y\n   * @param  {number} x\n   * @param  {number} y\n   * @return {boolean}\n   */\n  contain: function (x, y) {\n    return this.rectContain(x, y);\n  },\n\n  /**\n   * @param  {Function} cb\n   * @param  {}   context\n   */\n  traverse: function (cb, context) {\n    cb.call(context, this);\n  },\n\n  /**\n   * If bounding rect of element contain coord x, y\n   * @param  {number} x\n   * @param  {number} y\n   * @return {boolean}\n   */\n  rectContain: function (x, y) {\n    var coord = this.transformCoordToLocal(x, y);\n    var rect = this.getBoundingRect();\n    return rect.contain(coord[0], coord[1]);\n  },\n\n  /**\n   * Mark displayable element dirty and refresh next frame\n   */\n  dirty: function () {\n    this.__dirty = this.__dirtyText = true;\n    this._rect = null;\n    this.__zr && this.__zr.refresh();\n  },\n\n  /**\n   * If displayable object binded any event\n   * @return {boolean}\n   */\n  // TODO, events bound by bind\n  // isSilent: function () {\n  //     return !(\n  //         this.hoverable || this.draggable\n  //         || this.onmousemove || this.onmouseover || this.onmouseout\n  //         || this.onmousedown || this.onmouseup || this.onclick\n  //         || this.ondragenter || this.ondragover || this.ondragleave\n  //         || this.ondrop\n  //     );\n  // },\n\n  /**\n   * Alias for animate('style')\n   * @param {boolean} loop\n   */\n  animateStyle: function (loop) {\n    return this.animate('style', loop);\n  },\n  attrKV: function (key, value) {\n    if (key !== 'style') {\n      Element.prototype.attrKV.call(this, key, value);\n    } else {\n      this.style.set(value);\n    }\n  },\n\n  /**\n   * @param {Object|string} key\n   * @param {*} value\n   */\n  setStyle: function (key, value) {\n    this.style.set(key, value);\n    this.dirty(false);\n    return this;\n  },\n\n  /**\n   * Use given style object\n   * @param  {Object} obj\n   */\n  useStyle: function (obj) {\n    this.style = new Style(obj, this);\n    this.dirty(false);\n    return this;\n  },\n\n  /**\n   * The string value of `textPosition` needs to be calculated to a real postion.\n   * For example, `'inside'` is calculated to `[rect.width/2, rect.height/2]`\n   * by default. See `contain/text.js#calculateTextPosition` for more details.\n   * But some coutom shapes like \"pin\", \"flag\" have center that is not exactly\n   * `[width/2, height/2]`. So we provide this hook to customize the calculation\n   * for those shapes. It will be called if the `style.textPosition` is a string.\n   * @param {Obejct} [out] Prepared out object. If not provided, this method should\n   *        be responsible for creating one.\n   * @param {module:zrender/graphic/Style} style\n   * @param {Object} rect {x, y, width, height}\n   * @return {Obejct} out The same as the input out.\n   *         {\n   *             x: number. mandatory.\n   *             y: number. mandatory.\n   *             textAlign: string. optional. use style.textAlign by default.\n   *             textVerticalAlign: string. optional. use style.textVerticalAlign by default.\n   *         }\n   */\n  calculateTextPosition: null\n};\nzrUtil.inherits(Displayable, Element);\nzrUtil.mixin(Displayable, RectText); // zrUtil.mixin(Displayable, Stateful);\n\nvar _default = Displayable;\nmodule.exports = _default;\n\n/***/ }),\n/* 255 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar vec2 = __webpack_require__(56);\n\nvar curve = __webpack_require__(152);\n\n/**\n * @author Yi Shen(https://github.com/pissang)\n */\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\n/**\n * 从顶点数组中计算出最小包围盒，写入`min`和`max`中\n * @module zrender/core/bbox\n * @param {Array<Object>} points 顶点数组\n * @param {number} min\n * @param {number} max\n */\n\nfunction fromPoints(points, min, max) {\n  if (points.length === 0) {\n    return;\n  }\n\n  var p = points[0];\n  var left = p[0];\n  var right = p[0];\n  var top = p[1];\n  var bottom = p[1];\n  var i;\n\n  for (i = 1; i < points.length; i++) {\n    p = points[i];\n    left = mathMin(left, p[0]);\n    right = mathMax(right, p[0]);\n    top = mathMin(top, p[1]);\n    bottom = mathMax(bottom, p[1]);\n  }\n\n  min[0] = left;\n  min[1] = top;\n  max[0] = right;\n  max[1] = bottom;\n}\n/**\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction fromLine(x0, y0, x1, y1, min, max) {\n  min[0] = mathMin(x0, x1);\n  min[1] = mathMin(y0, y1);\n  max[0] = mathMax(x0, x1);\n  max[1] = mathMax(y0, y1);\n}\n\nvar xDim = [];\nvar yDim = [];\n/**\n * 从三阶贝塞尔曲线(p0, p1, p2, p3)中计算出最小包围盒，写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\nfunction fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n  var cubicExtrema = curve.cubicExtrema;\n  var cubicAt = curve.cubicAt;\n  var i;\n  var n = cubicExtrema(x0, x1, x2, x3, xDim);\n  min[0] = Infinity;\n  min[1] = Infinity;\n  max[0] = -Infinity;\n  max[1] = -Infinity;\n\n  for (i = 0; i < n; i++) {\n    var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n    min[0] = mathMin(x, min[0]);\n    max[0] = mathMax(x, max[0]);\n  }\n\n  n = cubicExtrema(y0, y1, y2, y3, yDim);\n\n  for (i = 0; i < n; i++) {\n    var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n    min[1] = mathMin(y, min[1]);\n    max[1] = mathMax(y, max[1]);\n  }\n\n  min[0] = mathMin(x0, min[0]);\n  max[0] = mathMax(x0, max[0]);\n  min[0] = mathMin(x3, min[0]);\n  max[0] = mathMax(x3, max[0]);\n  min[1] = mathMin(y0, min[1]);\n  max[1] = mathMax(y0, max[1]);\n  min[1] = mathMin(y3, min[1]);\n  max[1] = mathMax(y3, max[1]);\n}\n/**\n * 从二阶贝塞尔曲线(p0, p1, p2)中计算出最小包围盒，写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n  var quadraticExtremum = curve.quadraticExtremum;\n  var quadraticAt = curve.quadraticAt; // Find extremities, where derivative in x dim or y dim is zero\n\n  var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n  var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n  var x = quadraticAt(x0, x1, x2, tx);\n  var y = quadraticAt(y0, y1, y2, ty);\n  min[0] = mathMin(x0, x2, x);\n  min[1] = mathMin(y0, y2, y);\n  max[0] = mathMax(x0, x2, x);\n  max[1] = mathMax(y0, y2, y);\n}\n/**\n * 从圆弧中计算出最小包围盒，写入`min`和`max`中\n * @method\n * @memberOf module:zrender/core/bbox\n * @param {number} x\n * @param {number} y\n * @param {number} rx\n * @param {number} ry\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {number} anticlockwise\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n  var vec2Min = vec2.min;\n  var vec2Max = vec2.max;\n  var diff = Math.abs(startAngle - endAngle);\n\n  if (diff % PI2 < 1e-4 && diff > 1e-4) {\n    // Is a circle\n    min[0] = x - rx;\n    min[1] = y - ry;\n    max[0] = x + rx;\n    max[1] = y + ry;\n    return;\n  }\n\n  start[0] = mathCos(startAngle) * rx + x;\n  start[1] = mathSin(startAngle) * ry + y;\n  end[0] = mathCos(endAngle) * rx + x;\n  end[1] = mathSin(endAngle) * ry + y;\n  vec2Min(min, start, end);\n  vec2Max(max, start, end); // Thresh to [0, Math.PI * 2]\n\n  startAngle = startAngle % PI2;\n\n  if (startAngle < 0) {\n    startAngle = startAngle + PI2;\n  }\n\n  endAngle = endAngle % PI2;\n\n  if (endAngle < 0) {\n    endAngle = endAngle + PI2;\n  }\n\n  if (startAngle > endAngle && !anticlockwise) {\n    endAngle += PI2;\n  } else if (startAngle < endAngle && anticlockwise) {\n    startAngle += PI2;\n  }\n\n  if (anticlockwise) {\n    var tmp = endAngle;\n    endAngle = startAngle;\n    startAngle = tmp;\n  } // var number = 0;\n  // var step = (anticlockwise ? -Math.PI : Math.PI) / 2;\n\n\n  for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n    if (angle > startAngle) {\n      extremity[0] = mathCos(angle) * rx + x;\n      extremity[1] = mathSin(angle) * ry + y;\n      vec2Min(min, extremity, min);\n      vec2Max(max, extremity, max);\n    }\n  }\n}\n\nexports.fromPoints = fromPoints;\nexports.fromLine = fromLine;\nexports.fromCubic = fromCubic;\nexports.fromQuadratic = fromQuadratic;\nexports.fromArc = fromArc;\n\n/***/ }),\n/* 256 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar _clazz = __webpack_require__(143);\n\nvar parseClassType = _clazz.parseClassType;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar base = 0;\n/**\n * @public\n * @param {string} type\n * @return {string}\n */\n\nfunction getUID(type) {\n  // Considering the case of crossing js context,\n  // use Math.random to make id as unique as possible.\n  return [type || '', base++, Math.random().toFixed(5)].join('_');\n}\n/**\n * @inner\n */\n\n\nfunction enableSubTypeDefaulter(entity) {\n  var subTypeDefaulters = {};\n\n  entity.registerSubTypeDefaulter = function (componentType, defaulter) {\n    componentType = parseClassType(componentType);\n    subTypeDefaulters[componentType.main] = defaulter;\n  };\n\n  entity.determineSubType = function (componentType, option) {\n    var type = option.type;\n\n    if (!type) {\n      var componentTypeMain = parseClassType(componentType).main;\n\n      if (entity.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\n        type = subTypeDefaulters[componentTypeMain](option);\n      }\n    }\n\n    return type;\n  };\n\n  return entity;\n}\n/**\n * Topological travel on Activity Network (Activity On Vertices).\n * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis'].\n *\n * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology.\n *\n * If there is circle dependencey, Error will be thrown.\n *\n */\n\n\nfunction enableTopologicalTravel(entity, dependencyGetter) {\n  /**\n   * @public\n   * @param {Array.<string>} targetNameList Target Component type list.\n   *                                           Can be ['aa', 'bb', 'aa.xx']\n   * @param {Array.<string>} fullNameList By which we can build dependency graph.\n   * @param {Function} callback Params: componentType, dependencies.\n   * @param {Object} context Scope of callback.\n   */\n  entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\n    if (!targetNameList.length) {\n      return;\n    }\n\n    var result = makeDepndencyGraph(fullNameList);\n    var graph = result.graph;\n    var stack = result.noEntryList;\n    var targetNameSet = {};\n    zrUtil.each(targetNameList, function (name) {\n      targetNameSet[name] = true;\n    });\n\n    while (stack.length) {\n      var currComponentType = stack.pop();\n      var currVertex = graph[currComponentType];\n      var isInTargetNameSet = !!targetNameSet[currComponentType];\n\n      if (isInTargetNameSet) {\n        callback.call(context, currComponentType, currVertex.originalDeps.slice());\n        delete targetNameSet[currComponentType];\n      }\n\n      zrUtil.each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\n    }\n\n    zrUtil.each(targetNameSet, function () {\n      throw new Error('Circle dependency may exists');\n    });\n\n    function removeEdge(succComponentType) {\n      graph[succComponentType].entryCount--;\n\n      if (graph[succComponentType].entryCount === 0) {\n        stack.push(succComponentType);\n      }\n    } // Consider this case: legend depends on series, and we call\n    // chart.setOption({series: [...]}), where only series is in option.\n    // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will\n    // not be called, but only sereis.mergeOption is called. Thus legend\n    // have no chance to update its local record about series (like which\n    // name of series is available in legend).\n\n\n    function removeEdgeAndAdd(succComponentType) {\n      targetNameSet[succComponentType] = true;\n      removeEdge(succComponentType);\n    }\n  };\n  /**\n   * DepndencyGraph: {Object}\n   * key: conponentType,\n   * value: {\n   *     successor: [conponentTypes...],\n   *     originalDeps: [conponentTypes...],\n   *     entryCount: {number}\n   * }\n   */\n\n\n  function makeDepndencyGraph(fullNameList) {\n    var graph = {};\n    var noEntryList = [];\n    zrUtil.each(fullNameList, function (name) {\n      var thisItem = createDependencyGraphItem(graph, name);\n      var originalDeps = thisItem.originalDeps = dependencyGetter(name);\n      var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\n      thisItem.entryCount = availableDeps.length;\n\n      if (thisItem.entryCount === 0) {\n        noEntryList.push(name);\n      }\n\n      zrUtil.each(availableDeps, function (dependentName) {\n        if (zrUtil.indexOf(thisItem.predecessor, dependentName) < 0) {\n          thisItem.predecessor.push(dependentName);\n        }\n\n        var thatItem = createDependencyGraphItem(graph, dependentName);\n\n        if (zrUtil.indexOf(thatItem.successor, dependentName) < 0) {\n          thatItem.successor.push(name);\n        }\n      });\n    });\n    return {\n      graph: graph,\n      noEntryList: noEntryList\n    };\n  }\n\n  function createDependencyGraphItem(graph, name) {\n    if (!graph[name]) {\n      graph[name] = {\n        predecessor: [],\n        successor: []\n      };\n    }\n\n    return graph[name];\n  }\n\n  function getAvailableDependencies(originalDeps, fullNameList) {\n    var availableDeps = [];\n    zrUtil.each(originalDeps, function (dep) {\n      zrUtil.indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\n    });\n    return availableDeps;\n  }\n}\n\nexports.getUID = getUID;\nexports.enableSubTypeDefaulter = enableSubTypeDefaulter;\nexports.enableTopologicalTravel = enableTopologicalTravel;\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar createHashMap = _util.createHashMap;\nvar isTypedArray = _util.isTypedArray;\n\nvar _clazz = __webpack_require__(143);\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar _sourceType = __webpack_require__(258);\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [sourceFormat]\n *\n * + \"original\":\n * This format is only used in series.data, where\n * itemStyle can be specified in data item.\n *\n * + \"arrayRows\":\n * [\n *     ['product', 'score', 'amount'],\n *     ['Matcha Latte', 89.3, 95.8],\n *     ['Milk Tea', 92.1, 89.4],\n *     ['Cheese Cocoa', 94.4, 91.2],\n *     ['Walnut Brownie', 85.4, 76.9]\n * ]\n *\n * + \"objectRows\":\n * [\n *     {product: 'Matcha Latte', score: 89.3, amount: 95.8},\n *     {product: 'Milk Tea', score: 92.1, amount: 89.4},\n *     {product: 'Cheese Cocoa', score: 94.4, amount: 91.2},\n *     {product: 'Walnut Brownie', score: 85.4, amount: 76.9}\n * ]\n *\n * + \"keyedColumns\":\n * {\n *     'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n *     'count': [823, 235, 1042, 988],\n *     'score': [95.8, 81.4, 91.2, 76.9]\n * }\n *\n * + \"typedArray\"\n *\n * + \"unknown\"\n */\n\n/**\n * @constructor\n * @param {Object} fields\n * @param {string} fields.sourceFormat\n * @param {Array|Object} fields.fromDataset\n * @param {Array|Object} [fields.data]\n * @param {string} [seriesLayoutBy='column']\n * @param {Array.<Object|string>} [dimensionsDefine]\n * @param {Objet|HashMap} [encodeDefine]\n * @param {number} [startIndex=0]\n * @param {number} [dimensionsDetectCount]\n */\nfunction Source(fields) {\n  /**\n   * @type {boolean}\n   */\n  this.fromDataset = fields.fromDataset;\n  /**\n   * Not null/undefined.\n   * @type {Array|Object}\n   */\n\n  this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\n  /**\n   * See also \"detectSourceFormat\".\n   * Not null/undefined.\n   * @type {string}\n   */\n\n  this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\n  /**\n   * 'row' or 'column'\n   * Not null/undefined.\n   * @type {string} seriesLayoutBy\n   */\n\n  this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\n  /**\n   * dimensions definition in option.\n   * can be null/undefined.\n   * @type {Array.<Object|string>}\n   */\n\n  this.dimensionsDefine = fields.dimensionsDefine;\n  /**\n   * encode definition in option.\n   * can be null/undefined.\n   * @type {Objet|HashMap}\n   */\n\n  this.encodeDefine = fields.encodeDefine && createHashMap(fields.encodeDefine);\n  /**\n   * Not null/undefined, uint.\n   * @type {number}\n   */\n\n  this.startIndex = fields.startIndex || 0;\n  /**\n   * Can be null/undefined (when unknown), uint.\n   * @type {number}\n   */\n\n  this.dimensionsDetectCount = fields.dimensionsDetectCount;\n}\n/**\n * Wrap original series data for some compatibility cases.\n */\n\n\nSource.seriesDataToSource = function (data) {\n  return new Source({\n    data: data,\n    sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL,\n    fromDataset: false\n  });\n};\n\nenableClassCheck(Source);\nvar _default = Source;\nmodule.exports = _default;\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Avoid typo.\nvar SOURCE_FORMAT_ORIGINAL = 'original';\nvar SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\nvar SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\nvar SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\nvar SOURCE_FORMAT_UNKNOWN = 'unknown'; // ??? CHANGE A NAME\n\nvar SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\nvar SERIES_LAYOUT_BY_COLUMN = 'column';\nvar SERIES_LAYOUT_BY_ROW = 'row';\nexports.SOURCE_FORMAT_ORIGINAL = SOURCE_FORMAT_ORIGINAL;\nexports.SOURCE_FORMAT_ARRAY_ROWS = SOURCE_FORMAT_ARRAY_ROWS;\nexports.SOURCE_FORMAT_OBJECT_ROWS = SOURCE_FORMAT_OBJECT_ROWS;\nexports.SOURCE_FORMAT_KEYED_COLUMNS = SOURCE_FORMAT_KEYED_COLUMNS;\nexports.SOURCE_FORMAT_UNKNOWN = SOURCE_FORMAT_UNKNOWN;\nexports.SOURCE_FORMAT_TYPED_ARRAY = SOURCE_FORMAT_TYPED_ARRAY;\nexports.SERIES_LAYOUT_BY_COLUMN = SERIES_LAYOUT_BY_COLUMN;\nexports.SERIES_LAYOUT_BY_ROW = SERIES_LAYOUT_BY_ROW;\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar OTHER_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'seriesName']);\n\nfunction summarizeDimensions(data) {\n  var summary = {};\n  var encode = summary.encode = {};\n  var notExtraCoordDimMap = createHashMap();\n  var defaultedLabel = [];\n  var defaultedTooltip = []; // See the comment of `List.js#userOutput`.\n\n  var userOutput = summary.userOutput = {\n    dimensionNames: data.dimensions.slice(),\n    encode: {}\n  };\n  each(data.dimensions, function (dimName) {\n    var dimItem = data.getDimensionInfo(dimName);\n    var coordDim = dimItem.coordDim;\n\n    if (coordDim) {\n      var coordDimIndex = dimItem.coordDimIndex;\n      getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\n\n      if (!dimItem.isExtraCoord) {\n        notExtraCoordDimMap.set(coordDim, 1); // Use the last coord dim (and label friendly) as default label,\n        // because when dataset is used, it is hard to guess which dimension\n        // can be value dimension. If both show x, y on label is not look good,\n        // and conventionally y axis is focused more.\n\n        if (mayLabelDimType(dimItem.type)) {\n          defaultedLabel[0] = dimName;\n        } // User output encode do not contain generated coords.\n        // And it only has index. User can use index to retrieve value from the raw item array.\n\n\n        getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\n      }\n\n      if (dimItem.defaultTooltip) {\n        defaultedTooltip.push(dimName);\n      }\n    }\n\n    OTHER_DIMENSIONS.each(function (v, otherDim) {\n      var encodeArr = getOrCreateEncodeArr(encode, otherDim);\n      var dimIndex = dimItem.otherDims[otherDim];\n\n      if (dimIndex != null && dimIndex !== false) {\n        encodeArr[dimIndex] = dimItem.name;\n      }\n    });\n  });\n  var dataDimsOnCoord = [];\n  var encodeFirstDimNotExtra = {};\n  notExtraCoordDimMap.each(function (v, coordDim) {\n    var dimArr = encode[coordDim]; // ??? FIXME extra coord should not be set in dataDimsOnCoord.\n    // But should fix the case that radar axes: simplify the logic\n    // of `completeDimension`, remove `extraPrefix`.\n\n    encodeFirstDimNotExtra[coordDim] = dimArr[0]; // Not necessary to remove duplicate, because a data\n    // dim canot on more than one coordDim.\n\n    dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\n  });\n  summary.dataDimsOnCoord = dataDimsOnCoord;\n  summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\n  var encodeLabel = encode.label; // FIXME `encode.label` is not recommanded, because formatter can not be set\n  // in this way. Use label.formatter instead. May be remove this approach someday.\n\n  if (encodeLabel && encodeLabel.length) {\n    defaultedLabel = encodeLabel.slice();\n  }\n\n  var encodeTooltip = encode.tooltip;\n\n  if (encodeTooltip && encodeTooltip.length) {\n    defaultedTooltip = encodeTooltip.slice();\n  } else if (!defaultedTooltip.length) {\n    defaultedTooltip = defaultedLabel.slice();\n  }\n\n  encode.defaultedLabel = defaultedLabel;\n  encode.defaultedTooltip = defaultedTooltip;\n  return summary;\n}\n\nfunction getOrCreateEncodeArr(encode, dim) {\n  if (!encode.hasOwnProperty(dim)) {\n    encode[dim] = [];\n  }\n\n  return encode[dim];\n}\n\nfunction getDimensionTypeByAxis(axisType) {\n  return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n  // In most cases, ordinal and time do not suitable for label.\n  // Ordinal info can be displayed on axis. Time is too long.\n  return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n//     // Get last value dim\n//     var dimensions = data.dimensions.slice();\n//     var valueType;\n//     var valueDim;\n//     while (dimensions.length && (\n//         valueDim = dimensions.pop(),\n//         valueType = data.getDimensionInfo(valueDim).type,\n//         valueType === 'ordinal' || valueType === 'time'\n//     )) {} // jshint ignore:line\n//     return valueDim;\n// }\n\n\nexports.OTHER_DIMENSIONS = OTHER_DIMENSIONS;\nexports.summarizeDimensions = summarizeDimensions;\nexports.getDimensionTypeByAxis = getDimensionTypeByAxis;\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar SymbolClz = __webpack_require__(332);\n\nvar _util = __webpack_require__(2);\n\nvar isObject = _util.isObject;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/SymbolDraw\n */\n\n/**\n * @constructor\n * @alias module:echarts/chart/helper/SymbolDraw\n * @param {module:zrender/graphic/Group} [symbolCtor]\n */\nfunction SymbolDraw(symbolCtor) {\n  this.group = new graphic.Group();\n  this._symbolCtor = symbolCtor || SymbolClz;\n}\n\nvar symbolDrawProto = SymbolDraw.prototype;\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\n  return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) // We do not set clipShape on group, because it will cut part of\n  // the symbol element shape. We use the same clip shape here as\n  // the line clip.\n  && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.updateData = function (data, opt) {\n  opt = normalizeUpdateOpt(opt);\n  var group = this.group;\n  var seriesModel = data.hostModel;\n  var oldData = this._data;\n  var SymbolCtor = this._symbolCtor;\n  var seriesScope = makeSeriesScope(data); // There is no oldLineData only when first rendering or switching from\n  // stream mode to normal mode, where previous elements should be removed.\n\n  if (!oldData) {\n    group.removeAll();\n  }\n\n  data.diff(oldData).add(function (newIdx) {\n    var point = data.getItemLayout(newIdx);\n\n    if (symbolNeedsDraw(data, point, newIdx, opt)) {\n      var symbolEl = new SymbolCtor(data, newIdx, seriesScope);\n      symbolEl.attr('position', point);\n      data.setItemGraphicEl(newIdx, symbolEl);\n      group.add(symbolEl);\n    }\n  }).update(function (newIdx, oldIdx) {\n    var symbolEl = oldData.getItemGraphicEl(oldIdx);\n    var point = data.getItemLayout(newIdx);\n\n    if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n      group.remove(symbolEl);\n      return;\n    }\n\n    if (!symbolEl) {\n      symbolEl = new SymbolCtor(data, newIdx);\n      symbolEl.attr('position', point);\n    } else {\n      symbolEl.updateData(data, newIdx, seriesScope);\n      graphic.updateProps(symbolEl, {\n        position: point\n      }, seriesModel);\n    } // Add back\n\n\n    group.add(symbolEl);\n    data.setItemGraphicEl(newIdx, symbolEl);\n  }).remove(function (oldIdx) {\n    var el = oldData.getItemGraphicEl(oldIdx);\n    el && el.fadeOut(function () {\n      group.remove(el);\n    });\n  }).execute();\n  this._data = data;\n};\n\nsymbolDrawProto.isPersistent = function () {\n  return true;\n};\n\nsymbolDrawProto.updateLayout = function () {\n  var data = this._data;\n\n  if (data) {\n    // Not use animation\n    data.eachItemGraphicEl(function (el, idx) {\n      var point = data.getItemLayout(idx);\n      el.attr('position', point);\n    });\n  }\n};\n\nsymbolDrawProto.incrementalPrepareUpdate = function (data) {\n  this._seriesScope = makeSeriesScope(data);\n  this._data = null;\n  this.group.removeAll();\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.incrementalUpdate = function (taskParams, data, opt) {\n  opt = normalizeUpdateOpt(opt);\n\n  function updateIncrementalAndHover(el) {\n    if (!el.isGroup) {\n      el.incremental = el.useHoverLayer = true;\n    }\n  }\n\n  for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n    var point = data.getItemLayout(idx);\n\n    if (symbolNeedsDraw(data, point, idx, opt)) {\n      var el = new this._symbolCtor(data, idx, this._seriesScope);\n      el.traverse(updateIncrementalAndHover);\n      el.attr('position', point);\n      this.group.add(el);\n      data.setItemGraphicEl(idx, el);\n    }\n  }\n};\n\nfunction normalizeUpdateOpt(opt) {\n  if (opt != null && !isObject(opt)) {\n    opt = {\n      isIgnore: opt\n    };\n  }\n\n  return opt || {};\n}\n\nsymbolDrawProto.remove = function (enableAnimation) {\n  var group = this.group;\n  var data = this._data; // Incremental model do not have this._data.\n\n  if (data && enableAnimation) {\n    data.eachItemGraphicEl(function (el) {\n      el.fadeOut(function () {\n        group.remove(el);\n      });\n    });\n  } else {\n    group.removeAll();\n  }\n};\n\nfunction makeSeriesScope(data) {\n  var seriesModel = data.hostModel;\n  return {\n    itemStyle: seriesModel.getModel('itemStyle').getItemStyle(['color']),\n    hoverItemStyle: seriesModel.getModel('emphasis.itemStyle').getItemStyle(),\n    symbolRotate: seriesModel.get('symbolRotate'),\n    symbolOffset: seriesModel.get('symbolOffset'),\n    hoverAnimation: seriesModel.get('hoverAnimation'),\n    labelModel: seriesModel.getModel('label'),\n    hoverLabelModel: seriesModel.getModel('emphasis.label'),\n    cursorStyle: seriesModel.get('cursor')\n  };\n}\n\nvar _default = SymbolDraw;\nmodule.exports = _default;\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar _number = __webpack_require__(26);\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel) {\n  var rect = cartesian.getArea();\n  var isHorizontal = cartesian.getBaseAxis().isHorizontal();\n  var x = rect.x;\n  var y = rect.y;\n  var width = rect.width;\n  var height = rect.height;\n  var lineWidth = seriesModel.get('lineStyle.width') || 2; // Expand the clip path a bit to avoid the border is clipped and looks thinner\n\n  x -= lineWidth / 2;\n  y -= lineWidth / 2;\n  width += lineWidth;\n  height += lineWidth; // fix: https://github.com/apache/incubator-echarts/issues/11369\n\n  x = Math.floor(x);\n  width = Math.round(width);\n  var clipPath = new graphic.Rect({\n    shape: {\n      x: x,\n      y: y,\n      width: width,\n      height: height\n    }\n  });\n\n  if (hasAnimation) {\n    clipPath.shape[isHorizontal ? 'width' : 'height'] = 0;\n    graphic.initProps(clipPath, {\n      shape: {\n        width: width,\n        height: height\n      }\n    }, seriesModel);\n  }\n\n  return clipPath;\n}\n\nfunction createPolarClipPath(polar, hasAnimation, seriesModel) {\n  var sectorArea = polar.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n\n  var clipPath = new graphic.Sector({\n    shape: {\n      cx: round(polar.cx, 1),\n      cy: round(polar.cy, 1),\n      r0: round(sectorArea.r0, 1),\n      r: round(sectorArea.r, 1),\n      startAngle: sectorArea.startAngle,\n      endAngle: sectorArea.endAngle,\n      clockwise: sectorArea.clockwise\n    }\n  });\n\n  if (hasAnimation) {\n    clipPath.shape.endAngle = sectorArea.startAngle;\n    graphic.initProps(clipPath, {\n      shape: {\n        endAngle: sectorArea.endAngle\n      }\n    }, seriesModel);\n  }\n\n  return clipPath;\n}\n\nfunction createClipPath(coordSys, hasAnimation, seriesModel) {\n  if (!coordSys) {\n    return null;\n  } else if (coordSys.type === 'polar') {\n    return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n  } else if (coordSys.type === 'cartesian2d') {\n    return createGridClipPath(coordSys, hasAnimation, seriesModel);\n  }\n\n  return null;\n}\n\nexports.createGridClipPath = createGridClipPath;\nexports.createPolarClipPath = createPolarClipPath;\nexports.createClipPath = createClipPath;\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar map = _util.map;\n\nvar createRenderPlanner = __webpack_require__(214);\n\nvar _dataStackHelper = __webpack_require__(132);\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nfunction _default(seriesType) {\n  return {\n    seriesType: seriesType,\n    plan: createRenderPlanner(),\n    reset: function (seriesModel) {\n      var data = seriesModel.getData();\n      var coordSys = seriesModel.coordinateSystem;\n      var pipelineContext = seriesModel.pipelineContext;\n      var isLargeRender = pipelineContext.large;\n\n      if (!coordSys) {\n        return;\n      }\n\n      var dims = map(coordSys.dimensions, function (dim) {\n        return data.mapDimension(dim);\n      }).slice(0, 2);\n      var dimLen = dims.length;\n      var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n      if (isDimensionStacked(data, dims[0]\n      /*, dims[1]*/\n      )) {\n        dims[0] = stackResultDim;\n      }\n\n      if (isDimensionStacked(data, dims[1]\n      /*, dims[0]*/\n      )) {\n        dims[1] = stackResultDim;\n      }\n\n      function progress(params, data) {\n        var segCount = params.end - params.start;\n        var points = isLargeRender && new Float32Array(segCount * dimLen);\n\n        for (var i = params.start, offset = 0, tmpIn = [], tmpOut = []; i < params.end; i++) {\n          var point;\n\n          if (dimLen === 1) {\n            var x = data.get(dims[0], i);\n            point = !isNaN(x) && coordSys.dataToPoint(x, null, tmpOut);\n          } else {\n            var x = tmpIn[0] = data.get(dims[0], i);\n            var y = tmpIn[1] = data.get(dims[1], i); // Also {Array.<number>}, not undefined to avoid if...else... statement\n\n            point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, null, tmpOut);\n          }\n\n          if (isLargeRender) {\n            points[offset++] = point ? point[0] : NaN;\n            points[offset++] = point ? point[1] : NaN;\n          } else {\n            data.setItemLayout(i, point && point.slice() || [NaN, NaN]);\n          }\n        }\n\n        isLargeRender && data.setLayout('symbolPoints', points);\n      }\n\n      return dimLen && {\n        progress: progress\n      };\n    }\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\n__webpack_require__(411);\n\n__webpack_require__(1056);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Grid view\necharts.extendComponentView({\n  type: 'grid',\n  render: function (gridModel, ecModel) {\n    this.group.removeAll();\n\n    if (gridModel.get('show')) {\n      this.group.add(new graphic.Rect({\n        shape: gridModel.coordinateSystem.getRect(),\n        style: zrUtil.defaults({\n          fill: gridModel.get('backgroundColor')\n        }, gridModel.getItemStyle()),\n        silent: true,\n        z2: -1\n      }));\n    }\n  }\n});\necharts.registerPreprocessor(function (option) {\n  // Only create grid when need\n  if (option.xAxis && option.yAxis && !option.grid) {\n    option.grid = {};\n  }\n});\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * LegendVisualProvider is an bridge that pick encoded color from data and\n * provide to the legend component.\n * @param {Function} getDataWithEncodedVisual Function to get data after filtered. It stores all the encoding info\n * @param {Function} getRawData Function to get raw data before filtered.\n */\nfunction LegendVisualProvider(getDataWithEncodedVisual, getRawData) {\n  this.getAllNames = function () {\n    var rawData = getRawData(); // We find the name from the raw data. In case it's filtered by the legend component.\n    // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.\n\n    return rawData.mapArray(rawData.getName);\n  };\n\n  this.containName = function (name) {\n    var rawData = getRawData();\n    return rawData.indexOfName(name) >= 0;\n  };\n\n  this.indexOfName = function (name) {\n    // Only get data when necessary.\n    // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.\n    // Invoking Series#getData immediately will throw an error.\n    var dataWithEncodedVisual = getDataWithEncodedVisual();\n    return dataWithEncodedVisual.indexOfName(name);\n  };\n\n  this.getItemVisual = function (dataIndex, key) {\n    // Get encoded visual properties from final filtered data.\n    var dataWithEncodedVisual = getDataWithEncodedVisual();\n    return dataWithEncodedVisual.getItemVisual(dataIndex, key);\n  };\n}\n\nvar _default = LegendVisualProvider;\nmodule.exports = _default;\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType) {\n  return {\n    seriesType: seriesType,\n    reset: function (seriesModel, ecModel) {\n      var legendModels = ecModel.findComponents({\n        mainType: 'legend'\n      });\n\n      if (!legendModels || !legendModels.length) {\n        return;\n      }\n\n      var data = seriesModel.getData();\n      data.filterSelf(function (idx) {\n        var name = data.getName(idx); // If in any legend component the status is not selected.\n\n        for (var i = 0; i < legendModels.length; i++) {\n          if (!legendModels[i].isSelected(name)) {\n            return false;\n          }\n        }\n\n        return true;\n      });\n    }\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Eventful = __webpack_require__(176);\n\nvar eventTool = __webpack_require__(129);\n\nvar interactionMutex = __webpack_require__(591);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @alias module:echarts/component/helper/RoamController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\nfunction RoamController(zr) {\n  /**\n   * @type {Function}\n   */\n  this.pointerChecker;\n  /**\n   * @type {module:zrender}\n   */\n\n  this._zr = zr;\n  /**\n   * @type {Object}\n   */\n\n  this._opt = {}; // Avoid two roamController bind the same handler\n\n  var bind = zrUtil.bind;\n  var mousedownHandler = bind(mousedown, this);\n  var mousemoveHandler = bind(mousemove, this);\n  var mouseupHandler = bind(mouseup, this);\n  var mousewheelHandler = bind(mousewheel, this);\n  var pinchHandler = bind(pinch, this);\n  Eventful.call(this);\n  /**\n   * @param {Function} pointerChecker\n   *                   input: x, y\n   *                   output: boolean\n   */\n\n  this.setPointerChecker = function (pointerChecker) {\n    this.pointerChecker = pointerChecker;\n  };\n  /**\n   * Notice: only enable needed types. For example, if 'zoom'\n   * is not needed, 'zoom' should not be enabled, otherwise\n   * default mousewheel behaviour (scroll page) will be disabled.\n   *\n   * @param  {boolean|string} [controlType=true] Specify the control type,\n   *                          which can be null/undefined or true/false\n   *                          or 'pan/move' or 'zoom'/'scale'\n   * @param {Object} [opt]\n   * @param {Object} [opt.zoomOnMouseWheel=true] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n   * @param {Object} [opt.moveOnMouseMove=true] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n   * @param {Object} [opt.moveOnMouseWheel=false] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n   * @param {Object} [opt.preventDefaultMouseMove=true] When pan.\n   */\n\n\n  this.enable = function (controlType, opt) {\n    // Disable previous first\n    this.disable();\n    this._opt = zrUtil.defaults(zrUtil.clone(opt) || {}, {\n      zoomOnMouseWheel: true,\n      moveOnMouseMove: true,\n      // By default, wheel do not trigger move.\n      moveOnMouseWheel: false,\n      preventDefaultMouseMove: true\n    });\n\n    if (controlType == null) {\n      controlType = true;\n    }\n\n    if (controlType === true || controlType === 'move' || controlType === 'pan') {\n      zr.on('mousedown', mousedownHandler);\n      zr.on('mousemove', mousemoveHandler);\n      zr.on('mouseup', mouseupHandler);\n    }\n\n    if (controlType === true || controlType === 'scale' || controlType === 'zoom') {\n      zr.on('mousewheel', mousewheelHandler);\n      zr.on('pinch', pinchHandler);\n    }\n  };\n\n  this.disable = function () {\n    zr.off('mousedown', mousedownHandler);\n    zr.off('mousemove', mousemoveHandler);\n    zr.off('mouseup', mouseupHandler);\n    zr.off('mousewheel', mousewheelHandler);\n    zr.off('pinch', pinchHandler);\n  };\n\n  this.dispose = this.disable;\n\n  this.isDragging = function () {\n    return this._dragging;\n  };\n\n  this.isPinching = function () {\n    return this._pinching;\n  };\n}\n\nzrUtil.mixin(RoamController, Eventful);\n\nfunction mousedown(e) {\n  if (eventTool.isMiddleOrRightButtonOnMouseUpDown(e) || e.target && e.target.draggable) {\n    return;\n  }\n\n  var x = e.offsetX;\n  var y = e.offsetY; // Only check on mosedown, but not mousemove.\n  // Mouse can be out of target when mouse moving.\n\n  if (this.pointerChecker && this.pointerChecker(e, x, y)) {\n    this._x = x;\n    this._y = y;\n    this._dragging = true;\n  }\n}\n\nfunction mousemove(e) {\n  if (!this._dragging || !isAvailableBehavior('moveOnMouseMove', e, this._opt) || e.gestureEvent === 'pinch' || interactionMutex.isTaken(this._zr, 'globalPan')) {\n    return;\n  }\n\n  var x = e.offsetX;\n  var y = e.offsetY;\n  var oldX = this._x;\n  var oldY = this._y;\n  var dx = x - oldX;\n  var dy = y - oldY;\n  this._x = x;\n  this._y = y;\n  this._opt.preventDefaultMouseMove && eventTool.stop(e.event);\n  trigger(this, 'pan', 'moveOnMouseMove', e, {\n    dx: dx,\n    dy: dy,\n    oldX: oldX,\n    oldY: oldY,\n    newX: x,\n    newY: y\n  });\n}\n\nfunction mouseup(e) {\n  if (!eventTool.isMiddleOrRightButtonOnMouseUpDown(e)) {\n    this._dragging = false;\n  }\n}\n\nfunction mousewheel(e) {\n  var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e, this._opt);\n  var shouldMove = isAvailableBehavior('moveOnMouseWheel', e, this._opt);\n  var wheelDelta = e.wheelDelta;\n  var absWheelDeltaDelta = Math.abs(wheelDelta);\n  var originX = e.offsetX;\n  var originY = e.offsetY; // wheelDelta maybe -0 in chrome mac.\n\n  if (wheelDelta === 0 || !shouldZoom && !shouldMove) {\n    return;\n  } // If both `shouldZoom` and `shouldMove` is true, trigger\n  // their event both, and the final behavior is determined\n  // by event listener themselves.\n\n\n  if (shouldZoom) {\n    // Convenience:\n    // Mac and VM Windows on Mac: scroll up: zoom out.\n    // Windows: scroll up: zoom in.\n    // FIXME: Should do more test in different environment.\n    // wheelDelta is too complicated in difference nvironment\n    // (https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel),\n    // although it has been normallized by zrender.\n    // wheelDelta of mouse wheel is bigger than touch pad.\n    var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;\n    var scale = wheelDelta > 0 ? factor : 1 / factor;\n    checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e, {\n      scale: scale,\n      originX: originX,\n      originY: originY\n    });\n  }\n\n  if (shouldMove) {\n    // FIXME: Should do more test in different environment.\n    var absDelta = Math.abs(wheelDelta); // wheelDelta of mouse wheel is bigger than touch pad.\n\n    var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);\n    checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e, {\n      scrollDelta: scrollDelta,\n      originX: originX,\n      originY: originY\n    });\n  }\n}\n\nfunction pinch(e) {\n  if (interactionMutex.isTaken(this._zr, 'globalPan')) {\n    return;\n  }\n\n  var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1;\n  checkPointerAndTrigger(this, 'zoom', null, e, {\n    scale: scale,\n    originX: e.pinchX,\n    originY: e.pinchY\n  });\n}\n\nfunction checkPointerAndTrigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n  if (controller.pointerChecker && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)) {\n    // When mouse is out of roamController rect,\n    // default befavoius should not be be disabled, otherwise\n    // page sliding is disabled, contrary to expectation.\n    eventTool.stop(e.event);\n    trigger(controller, eventName, behaviorToCheck, e, contollerEvent);\n  }\n}\n\nfunction trigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n  // Also provide behavior checker for event listener, for some case that\n  // multiple components share one listener.\n  contollerEvent.isAvailableBehavior = zrUtil.bind(isAvailableBehavior, null, behaviorToCheck, e);\n  controller.trigger(eventName, contollerEvent);\n} // settings: {\n//     zoomOnMouseWheel\n//     moveOnMouseMove\n//     moveOnMouseWheel\n// }\n// The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n\n\nfunction isAvailableBehavior(behaviorToCheck, e, settings) {\n  var setting = settings[behaviorToCheck];\n  return !behaviorToCheck || setting && (!zrUtil.isString(setting) || e.event[setting + 'Key']);\n}\n\nvar _default = RoamController;\nmodule.exports = _default;\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar axisPointerModelHelper = __webpack_require__(334);\n\nvar axisTrigger = __webpack_require__(1185);\n\n__webpack_require__(1186);\n\n__webpack_require__(1187);\n\n__webpack_require__(610);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// CartesianAxisPointer is not supposed to be required here. But consider\n// echarts.simple.js and online build tooltip, which only require gridSimple,\n// CartesianAxisPointer should be able to required somewhere.\necharts.registerPreprocessor(function (option) {\n  // Always has a global axisPointerModel for default setting.\n  if (option) {\n    (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});\n    var link = option.axisPointer.link; // Normalize to array to avoid object mergin. But if link\n    // is not set, remain null/undefined, otherwise it will\n    // override existent link setting.\n\n    if (link && !zrUtil.isArray(link)) {\n      option.axisPointer.link = [link];\n    }\n  }\n}); // This process should proformed after coordinate systems created\n// and series data processed. So put it on statistic processing stage.\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\n  // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n  // allAxesInfo should be updated when setOption performed.\n  ecModel.getComponent('axisPointer').coordSysAxesInfo = axisPointerModelHelper.collect(ecModel, api);\n}); // Broadcast to all views.\n\necharts.registerAction({\n  type: 'updateAxisPointer',\n  event: 'updateAxisPointer',\n  update: ':updateAxisPointer'\n}, axisTrigger);\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(439);\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isSymbol = __webpack_require__(251);\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\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports) {\n\n/**\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\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(454),\n    baseAssignValue = __webpack_require__(455);\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\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeKeys = __webpack_require__(543),\n    baseKeysIn = __webpack_require__(1565),\n    isArrayLike = __webpack_require__(210);\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\n/***/ }),\n/* 275 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return toArray; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(164);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_is__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction toArray(children) {\n  var ret = [];\n  react__WEBPACK_IMPORTED_MODULE_0___default.a.Children.forEach(children, function (child) {\n    if (child === undefined || child === null) {\n      return;\n    }\n\n    if (Array.isArray(child)) {\n      ret = ret.concat(toArray(child));\n    } else if (Object(react_is__WEBPACK_IMPORTED_MODULE_1__[\"isFragment\"])(child) && child.props) {\n      ret = ret.concat(toArray(child.props.children));\n    } else {\n      ret.push(child);\n    }\n  });\n  return ret;\n}\n\n/***/ }),\n/* 276 */\n/***/ (function(module) {\n\nmodule.exports = JSON.parse(\"{\\\"500px\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f26e\\\",\\\"label\\\":\\\"500px\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z\\\"}}},\\\"accessible-icon\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"accessibility\\\",\\\"handicap\\\",\\\"person\\\",\\\"wheelchair\\\",\\\"wheelchair-alt\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f368\\\",\\\"label\\\":\\\"Accessible Icon\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z\\\"}}},\\\"accusoft\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f369\\\",\\\"label\\\":\\\"Accusoft\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821380,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M482.2 372.1C476.5 365.2 250 75 242.3 65.5c-13.7-17.2 0-16.8 19.2-16.9 9.7-.1 106.3-.6 116.5-.6 24.1-.1 28.7.6 38.4 12.8 2.1 2.7 205.1 245.8 207.2 248.3 5.5 6.7 15.2 19.1 7.2 23.4-2.4 1.3-114.6 47.7-117.8 48.9-10.1 4-17.5 6.8-30.8-9.3m114.7-5.6s-115 50.4-117.5 51.6c-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2-2.3-.3-24.6-4.7-38-7.2m-326-181.3s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3v-1l-51.2-65.8\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M482.2 372.1C476.5 365.2 250 75 242.3 65.5c-13.7-17.2 0-16.8 19.2-16.9 9.7-.1 106.3-.6 116.5-.6 24.1-.1 28.7.6 38.4 12.8 2.1 2.7 205.1 245.8 207.2 248.3 5.5 6.7 15.2 19.1 7.2 23.4-2.4 1.3-114.6 47.7-117.8 48.9-10.1 4-17.5 6.8-30.8-9.3m114.7-5.6s-115 50.4-117.5 51.6c-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2-2.3-.3-24.6-4.7-38-7.2m-326-181.3s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3v-1l-51.2-65.8\\\"}}},\\\"address-book\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2b9\\\",\\\"label\\\":\\\"Address Book\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365064,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1525209365040,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-68 304H48V48h320v416zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\\\"}}},\\\"address-card\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2bb\\\",\\\"label\\\":\\\"Address Card\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365064,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1525209365041,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H48V80h480v352zM208 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2zM360 320h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8z\\\"}}},\\\"adjust\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"contrast\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f042\\\",\\\"label\\\":\\\"adjust\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\\\"}}},\\\"adn\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f170\\\",\\\"label\\\":\\\"App.net\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z\\\"}}},\\\"adversal\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f36a\\\",\\\"label\\\":\\\"Adversal\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z\\\"}}},\\\"affiliatetheme\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f36b\\\",\\\"label\\\":\\\"affiliatetheme\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z\\\"}}},\\\"air-freshener\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5d0\\\",\\\"label\\\":\\\"Air Freshener\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831512,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M378.94 321.41L284.7 224h49.22c15.3 0 23.66-16.6 13.86-27.53L234.45 69.96c3.43-6.61 5.55-14 5.55-21.96 0-26.51-21.49-48-48-48s-48 21.49-48 48c0 7.96 2.12 15.35 5.55 21.96L36.22 196.47C26.42 207.4 34.78 224 50.08 224H99.3L5.06 321.41C-6.69 333.56 3.34 352 21.7 352H160v32H48c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h288c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16H224v-32h138.3c18.36 0 28.39-18.44 16.64-30.59zM192 31.98c8.85 0 16.02 7.17 16.02 16.02 0 8.84-7.17 16.02-16.02 16.02S175.98 56.84 175.98 48c0-8.85 7.17-16.02 16.02-16.02zM304 432v32H80v-32h224z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M378.94 321.41L284.7 224h49.22c15.3 0 23.66-16.6 13.86-27.53L234.45 69.96c3.43-6.61 5.55-14 5.55-21.96 0-26.51-21.49-48-48-48s-48 21.49-48 48c0 7.96 2.12 15.35 5.55 21.96L36.22 196.47C26.42 207.4 34.78 224 50.08 224H99.3L5.06 321.41C-6.69 333.56 3.34 352 21.7 352H160v32H48c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h288c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16H224v-32h138.3c18.36 0 28.39-18.44 16.64-30.59zM192 31.98c8.85 0 16.02 7.17 16.02 16.02 0 8.84-7.17 16.02-16.02 16.02S175.98 56.84 175.98 48c0-8.85 7.17-16.02 16.02-16.02zM304 432v32H80v-32h224z\\\"}}},\\\"algolia\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f36c\\\",\\\"label\\\":\\\"Algolia\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z\\\"}}},\\\"align-center\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"middle\\\",\\\"text\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f037\\\",\\\"label\\\":\\\"align-center\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M352 44v40c0 8.837-7.163 16-16 16H112c-8.837 0-16-7.163-16-16V44c0-8.837 7.163-16 16-16h224c8.837 0 16 7.163 16 16zM16 228h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 256h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm320-200H112c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16h224c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M352 44v40c0 8.837-7.163 16-16 16H112c-8.837 0-16-7.163-16-16V44c0-8.837 7.163-16 16-16h224c8.837 0 16 7.163 16 16zM16 228h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 256h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm320-200H112c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16h224c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16z\\\"}}},\\\"align-justify\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"text\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f039\\\",\\\"label\\\":\\\"align-justify\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 84V44c0-8.837 7.163-16 16-16h416c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16zm16 144h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 256h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0-128h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 84V44c0-8.837 7.163-16 16-16h416c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16zm16 144h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 256h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0-128h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\\\"}}},\\\"align-left\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"text\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f036\\\",\\\"label\\\":\\\"align-left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M288 44v40c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16V44c0-8.837 7.163-16 16-16h256c8.837 0 16 7.163 16 16zM0 172v40c0 8.837 7.163 16 16 16h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16zm16 312h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm256-200H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16h256c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M288 44v40c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16V44c0-8.837 7.163-16 16-16h256c8.837 0 16 7.163 16 16zM0 172v40c0 8.837 7.163 16 16 16h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16zm16 312h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm256-200H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16h256c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16z\\\"}}},\\\"align-right\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"text\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f038\\\",\\\"label\\\":\\\"align-right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M160 84V44c0-8.837 7.163-16 16-16h256c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H176c-8.837 0-16-7.163-16-16zM16 228h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 256h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm160-128h256c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H176c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M160 84V44c0-8.837 7.163-16 16-16h256c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H176c-8.837 0-16-7.163-16-16zM16 228h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 256h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm160-128h256c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H176c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\\\"}}},\\\"allergies\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"freckles\\\",\\\"hand\\\",\\\"intolerances\\\",\\\"pox\\\",\\\"spots\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f461\\\",\\\"label\\\":\\\"Allergies\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821440,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\\\"}}},\\\"amazon\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f270\\\",\\\"label\\\":\\\"Amazon\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z\\\"}}},\\\"amazon-pay\\\":{\\\"changes\\\":[\\\"5.0.2\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f42c\\\",\\\"label\\\":\\\"Amazon Pay\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1513713060429,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 611.2 512\\\\\\\"><path d=\\\\\\\"M0 325.2c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7 40.7 20.4 83.2 35.6 127.4 46.3 20.9 5 41.9 9 63.2 11.8 31.5 4.2 63.2 6 95 5.2 17.4-.4 34.8-1.8 52.1-3.8 56.4-6.7 110.9-20.8 163.3-42.8 2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9-2.8 2.8-6.3 5.1-9.6 7.4-30.7 21.1-64.2 36.4-99.6 47.9-24.6 7.9-49.6 13.8-75.1 17.6-17.6 2.6-35.4 4.4-53.2 4.8-.8 0-1.7.2-2.5.3H294c-.8-.1-1.7-.3-2.5-.3-3.6-.2-7.2-.3-10.7-.4-16.9-.7-33.7-2.6-50.4-5.3-27.4-4.5-54.2-11.4-80.4-20.9-54.1-19.6-102.6-48.6-145.6-87-1.8-1.6-3-3.8-4.4-5.7v-2zM158 65c-1.4.2-2.9.4-4.3.6-14 1.7-26.6 6.9-38 15.1-2.4 1.7-4.6 3.5-7.1 5.4-.2-.5-.4-1-.4-1.4-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6H87.8c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3V215c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zm-47.4 41.9c0-1.5.4-2.4 1.7-3.3 13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9-1.2-.9-1.7-1.7-1.7-3.3.1-14.1 0-28.1 0-42.2 0-14 .1-28 0-42.1zM316.3 65c-1 .1-2 .3-2.9.4-9.8.5-19.4 1.7-28.9 4.1-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9 0 .4-.1.9-.2 1.4-.5-.1-.9 0-1.3-.1-10.5-2.5-21.1-4.3-32-4.9-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4.4-.4.9-.7 1.6-1.1.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0 2.7-.1 4.5-1.9 4.8-4.7.1-.9.1-1.9.1-2.8v-106c0-4.3-.2-8.6-.9-12.9-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7c0 1.3-.4 2.2-1.5 3-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8-6.3-2.5-10.4-6.9-12.4-13.3s-2-13-.1-19.4c2.5-8.3 8.4-13 16.4-15.6 8.1-2.6 16.5-3 24.8-2.2 8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3-.1 4.7-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3-6.8-2.3-13.9-3.3-21-3.9-13.1-1.1-26.2-.5-39.2 1.9-14.3 2.7-27.9 7.3-40 15.6-1.4 1-2.8 2.1-3.7 3.5-.7 1.1-.9 2.8-.5 4 .4 1.5 2.1 1.9 3.6 1.8.7 0 1.5 0 2.2-.1 7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9 4.8.3 9.7 1.4 14.4 2.7 5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1-.4 1-.8 2-1 3-.5 2.9 1.2 4.8 4.1 4.1 1.7-.4 3.6-1.3 4.8-2.5 4.4-4.3 8.9-8.6 12.7-13.4 12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM479.1 198.9c-12.9-35.7-25.8-71.5-38.7-107.2-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5.5 2.1 1.1 4.1 1.9 6.1 19.6 48.5 39.3 97.1 59.1 145.5 1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3-5.1 1.4-10.2 1.6-15.4 1.1-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8-.1 3.3-.1 6.6 0 9.9.1 5.5 2 8 7.4 8.9 5.6 1 11.3 1.9 16.9 2 17.1.4 30.7-6.5 39.5-21.4 3.5-5.9 6.7-12.1 9.2-18.4 23.7-59.8 47.1-119.7 70.6-179.6.7-1.8 1.3-3.6 1.6-5.5.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0-3.7 0-6.3 1.6-7.7 5.2-.5 1.4-1.1 2.7-1.6 4.1-11.6 33.3-23.2 66.6-34.8 100-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"611.2\\\",\\\"512\\\"],\\\"width\\\":611,\\\"height\\\":512,\\\"path\\\":\\\"M0 325.2c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7 40.7 20.4 83.2 35.6 127.4 46.3 20.9 5 41.9 9 63.2 11.8 31.5 4.2 63.2 6 95 5.2 17.4-.4 34.8-1.8 52.1-3.8 56.4-6.7 110.9-20.8 163.3-42.8 2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9-2.8 2.8-6.3 5.1-9.6 7.4-30.7 21.1-64.2 36.4-99.6 47.9-24.6 7.9-49.6 13.8-75.1 17.6-17.6 2.6-35.4 4.4-53.2 4.8-.8 0-1.7.2-2.5.3H294c-.8-.1-1.7-.3-2.5-.3-3.6-.2-7.2-.3-10.7-.4-16.9-.7-33.7-2.6-50.4-5.3-27.4-4.5-54.2-11.4-80.4-20.9-54.1-19.6-102.6-48.6-145.6-87-1.8-1.6-3-3.8-4.4-5.7v-2zM158 65c-1.4.2-2.9.4-4.3.6-14 1.7-26.6 6.9-38 15.1-2.4 1.7-4.6 3.5-7.1 5.4-.2-.5-.4-1-.4-1.4-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6H87.8c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3V215c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zm-47.4 41.9c0-1.5.4-2.4 1.7-3.3 13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9-1.2-.9-1.7-1.7-1.7-3.3.1-14.1 0-28.1 0-42.2 0-14 .1-28 0-42.1zM316.3 65c-1 .1-2 .3-2.9.4-9.8.5-19.4 1.7-28.9 4.1-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9 0 .4-.1.9-.2 1.4-.5-.1-.9 0-1.3-.1-10.5-2.5-21.1-4.3-32-4.9-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4.4-.4.9-.7 1.6-1.1.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0 2.7-.1 4.5-1.9 4.8-4.7.1-.9.1-1.9.1-2.8v-106c0-4.3-.2-8.6-.9-12.9-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7c0 1.3-.4 2.2-1.5 3-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8-6.3-2.5-10.4-6.9-12.4-13.3s-2-13-.1-19.4c2.5-8.3 8.4-13 16.4-15.6 8.1-2.6 16.5-3 24.8-2.2 8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3-.1 4.7-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3-6.8-2.3-13.9-3.3-21-3.9-13.1-1.1-26.2-.5-39.2 1.9-14.3 2.7-27.9 7.3-40 15.6-1.4 1-2.8 2.1-3.7 3.5-.7 1.1-.9 2.8-.5 4 .4 1.5 2.1 1.9 3.6 1.8.7 0 1.5 0 2.2-.1 7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9 4.8.3 9.7 1.4 14.4 2.7 5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1-.4 1-.8 2-1 3-.5 2.9 1.2 4.8 4.1 4.1 1.7-.4 3.6-1.3 4.8-2.5 4.4-4.3 8.9-8.6 12.7-13.4 12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM479.1 198.9c-12.9-35.7-25.8-71.5-38.7-107.2-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5.5 2.1 1.1 4.1 1.9 6.1 19.6 48.5 39.3 97.1 59.1 145.5 1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3-5.1 1.4-10.2 1.6-15.4 1.1-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8-.1 3.3-.1 6.6 0 9.9.1 5.5 2 8 7.4 8.9 5.6 1 11.3 1.9 16.9 2 17.1.4 30.7-6.5 39.5-21.4 3.5-5.9 6.7-12.1 9.2-18.4 23.7-59.8 47.1-119.7 70.6-179.6.7-1.8 1.3-3.6 1.6-5.5.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0-3.7 0-6.3 1.6-7.7 5.2-.5 1.4-1.1 2.7-1.6 4.1-11.6 33.3-23.2 66.6-34.8 100-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z\\\"}}},\\\"ambulance\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\",\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"help\\\",\\\"machine\\\",\\\"support\\\",\\\"vehicle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0f9\\\",\\\"label\\\":\\\"ambulance\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821441,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\\\"}}},\\\"american-sign-language-interpreting\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2a3\\\",\\\"label\\\":\\\"American Sign Language Interpreting\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\\\"}}},\\\"amilia\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f36d\\\",\\\"label\\\":\\\"Amilia\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm-87.9 327.7c0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5V380c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm-87.9 327.7c0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5V380c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7\\\"}}},\\\"anchor\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"link\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f13d\\\",\\\"label\\\":\\\"Anchor\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\\\"}}},\\\"android\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"robot\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f17b\\\",\\\"label\\\":\\\"Android\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M89.6 204.5v115.8c0 15.4-12.1 27.7-27.5 27.7-15.3 0-30.1-12.4-30.1-27.7V204.5c0-15.1 14.8-27.5 30.1-27.5 15.1 0 27.5 12.4 27.5 27.5zm10.8 157c0 16.4 13.2 29.6 29.6 29.6h19.9l.3 61.1c0 36.9 55.2 36.6 55.2 0v-61.1h37.2v61.1c0 36.7 55.5 36.8 55.5 0v-61.1h20.2c16.2 0 29.4-13.2 29.4-29.6V182.1H100.4v179.4zm248-189.1H99.3c0-42.8 25.6-80 63.6-99.4l-19.1-35.3c-2.8-4.9 4.3-8 6.7-3.8l19.4 35.6c34.9-15.5 75-14.7 108.3 0L297.5 34c2.5-4.3 9.5-1.1 6.7 3.8L285.1 73c37.7 19.4 63.3 56.6 63.3 99.4zm-170.7-55.5c0-5.7-4.6-10.5-10.5-10.5-5.7 0-10.2 4.8-10.2 10.5s4.6 10.5 10.2 10.5c5.9 0 10.5-4.8 10.5-10.5zm113.4 0c0-5.7-4.6-10.5-10.2-10.5-5.9 0-10.5 4.8-10.5 10.5s4.6 10.5 10.5 10.5c5.6 0 10.2-4.8 10.2-10.5zm94.8 60.1c-15.1 0-27.5 12.1-27.5 27.5v115.8c0 15.4 12.4 27.7 27.5 27.7 15.4 0 30.1-12.4 30.1-27.7V204.5c0-15.4-14.8-27.5-30.1-27.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M89.6 204.5v115.8c0 15.4-12.1 27.7-27.5 27.7-15.3 0-30.1-12.4-30.1-27.7V204.5c0-15.1 14.8-27.5 30.1-27.5 15.1 0 27.5 12.4 27.5 27.5zm10.8 157c0 16.4 13.2 29.6 29.6 29.6h19.9l.3 61.1c0 36.9 55.2 36.6 55.2 0v-61.1h37.2v61.1c0 36.7 55.5 36.8 55.5 0v-61.1h20.2c16.2 0 29.4-13.2 29.4-29.6V182.1H100.4v179.4zm248-189.1H99.3c0-42.8 25.6-80 63.6-99.4l-19.1-35.3c-2.8-4.9 4.3-8 6.7-3.8l19.4 35.6c34.9-15.5 75-14.7 108.3 0L297.5 34c2.5-4.3 9.5-1.1 6.7 3.8L285.1 73c37.7 19.4 63.3 56.6 63.3 99.4zm-170.7-55.5c0-5.7-4.6-10.5-10.5-10.5-5.7 0-10.2 4.8-10.2 10.5s4.6 10.5 10.2 10.5c5.9 0 10.5-4.8 10.5-10.5zm113.4 0c0-5.7-4.6-10.5-10.2-10.5-5.9 0-10.5 4.8-10.5 10.5s4.6 10.5 10.5 10.5c5.6 0 10.2-4.8 10.2-10.5zm94.8 60.1c-15.1 0-27.5 12.1-27.5 27.5v115.8c0 15.4 12.4 27.7 27.5 27.7 15.4 0 30.1-12.4 30.1-27.7V204.5c0-15.4-14.8-27.5-30.1-27.5z\\\"}}},\\\"angellist\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f209\\\",\\\"label\\\":\\\"AngelList\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z\\\"}}},\\\"angle-double-down\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrows\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f103\\\",\\\"label\\\":\\\"Angle Double Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\\\"}}},\\\"angle-double-left\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrows\\\",\\\"back\\\",\\\"laquo\\\",\\\"previous\\\",\\\"quote\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f100\\\",\\\"label\\\":\\\"Angle Double Left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\\\"}}},\\\"angle-double-right\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrows\\\",\\\"forward\\\",\\\"next\\\",\\\"quote\\\",\\\"raquo\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f101\\\",\\\"label\\\":\\\"Angle Double Right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\\\"}}},\\\"angle-double-up\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrows\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f102\\\",\\\"label\\\":\\\"Angle Double Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\\\"}}},\\\"angle-down\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f107\\\",\\\"label\\\":\\\"angle-down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\\\"}}},\\\"angle-left\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"back\\\",\\\"previous\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f104\\\",\\\"label\\\":\\\"angle-left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\\\"}}},\\\"angle-right\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"forward\\\",\\\"next\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f105\\\",\\\"label\\\":\\\"angle-right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\\\"}}},\\\"angle-up\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f106\\\",\\\"label\\\":\\\"angle-up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\\\"}}},\\\"angry\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"disapprove\\\",\\\"emoticon\\\",\\\"face\\\",\\\"mad\\\",\\\"upset\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f556\\\",\\\"label\\\":\\\"Angry Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111644,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111607,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-144c-33.6 0-65.2 14.8-86.8 40.6-8.5 10.2-7.1 25.3 3.1 33.8s25.3 7.2 33.8-3c24.8-29.7 75-29.7 99.8 0 8.1 9.7 23.2 11.9 33.8 3 10.2-8.5 11.5-23.6 3.1-33.8-21.6-25.8-53.2-40.6-86.8-40.6zm-48-72c10.3 0 19.9-6.7 23-17.1 3.8-12.7-3.4-26.1-16.1-29.9l-80-24c-12.8-3.9-26.1 3.4-29.9 16.1-3.8 12.7 3.4 26.1 16.1 29.9l28.2 8.5c-3.1 4.9-5.3 10.4-5.3 16.6 0 17.7 14.3 32 32 32s32-14.4 32-32.1zm199-54.9c-3.8-12.7-17.1-19.9-29.9-16.1l-80 24c-12.7 3.8-19.9 17.2-16.1 29.9 3.1 10.4 12.7 17.1 23 17.1 0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.2-2.2-11.7-5.3-16.6l28.2-8.5c12.7-3.7 19.9-17.1 16.1-29.8z\\\"}}},\\\"angrycreative\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f36e\\\",\\\"label\\\":\\\"Angry Creative\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z\\\"}}},\\\"angular\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f420\\\",\\\"label\\\":\\\"Angular\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1511194600653,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 415.6 512\\\\\\\"><path d=\\\\\\\"M169.7 268.1h76.2l-38.1-91.6-38.1 91.6zM207.8 32L0 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7L207.8 32zM338 373.8h-48.6l-26.2-65.4H152.6l-26.2 65.4H77.7L207.8 81.5 338 373.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"415.6\\\",\\\"512\\\"],\\\"width\\\":415,\\\"height\\\":512,\\\"path\\\":\\\"M169.7 268.1h76.2l-38.1-91.6-38.1 91.6zM207.8 32L0 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7L207.8 32zM338 373.8h-48.6l-26.2-65.4H152.6l-26.2 65.4H77.7L207.8 81.5 338 373.8z\\\"}}},\\\"app-store\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f36f\\\",\\\"label\\\":\\\"App Store\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821381,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z\\\"}}},\\\"app-store-ios\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f370\\\",\\\"label\\\":\\\"iOS App Store\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1507838931322,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z\\\"}}},\\\"apper\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f371\\\",\\\"label\\\":\\\"Apper Systems AB\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z\\\"}}},\\\"apple\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\",\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"food\\\",\\\"fruit\\\",\\\"osx\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f179\\\",\\\"label\\\":\\\"Apple\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1519917094301,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 376.5 512\\\\\\\"><path d=\\\\\\\"M314.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C59.3 141.2 0 184.8 0 273.5c0 26.2 4.8 53.3 14.4 81.2 12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"376.5\\\",\\\"512\\\"],\\\"width\\\":376,\\\"height\\\":512,\\\"path\\\":\\\"M314.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C59.3 141.2 0 184.8 0 273.5c0 26.2 4.8 53.3 14.4 81.2 12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\\\"}}},\\\"apple-alt\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5d1\\\",\\\"label\\\":\\\"Fruit Apple\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831512,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M351.18 129.15c-35.53-6.25-98.06 14.36-127.18 30.81-29.12-16.45-91.66-37.07-127.19-30.81-81.24 14.3-107.42 124.49-93.09 205.6C18.05 415.86 65.02 512 160.41 512c12.06 0 24.12-4.61 34.44-10.34 18.08-10.03 40.23-10.03 58.31 0 10.32 5.73 22.38 10.34 34.43 10.34 95.39 0 142.36-96.14 156.68-177.25 14.33-81.11-11.83-191.3-93.09-205.6zm-55.55-41.53C326.19 57.06 319.35.65 319.35.65s-56.41-6.85-86.97 23.72c-30.57 30.57-23.72 86.97-23.72 86.97s56.4 6.85 86.97-23.72z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M351.18 129.15c-35.53-6.25-98.06 14.36-127.18 30.81-29.12-16.45-91.66-37.07-127.19-30.81-81.24 14.3-107.42 124.49-93.09 205.6C18.05 415.86 65.02 512 160.41 512c12.06 0 24.12-4.61 34.44-10.34 18.08-10.03 40.23-10.03 58.31 0 10.32 5.73 22.38 10.34 34.43 10.34 95.39 0 142.36-96.14 156.68-177.25 14.33-81.11-11.83-191.3-93.09-205.6zm-55.55-41.53C326.19 57.06 319.35.65 319.35.65s-56.41-6.85-86.97 23.72c-30.57 30.57-23.72 86.97-23.72 86.97s56.4 6.85 86.97-23.72z\\\"}}},\\\"apple-pay\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f415\\\",\\\"label\\\":\\\"Apple Pay\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1507669930671,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z\\\"}}},\\\"archive\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"box\\\",\\\"package\\\",\\\"storage\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f187\\\",\\\"label\\\":\\\"Archive\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821441,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\\\"}}},\\\"archway\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arc\\\",\\\"monument\\\",\\\"road\\\",\\\"street\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f557\\\",\\\"label\\\":\\\"Archway\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111645,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\\\"}}},\\\"arrow-alt-circle-down\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow-circle-o-down\\\",\\\"download\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f358\\\",\\\"label\\\":\\\"Alternate Arrow Circle Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm-32-316v116h-67c-10.7 0-16 12.9-8.5 20.5l99 99c4.7 4.7 12.3 4.7 17 0l99-99c7.6-7.6 2.2-20.5-8.5-20.5h-67V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12z\\\"}}},\\\"arrow-alt-circle-left\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow-circle-o-left\\\",\\\"back\\\",\\\"previous\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f359\\\",\\\"label\\\":\\\"Alternate Arrow Circle Left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z\\\"}}},\\\"arrow-alt-circle-right\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow-circle-o-right\\\",\\\"forward\\\",\\\"next\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f35a\\\",\\\"label\\\":\\\"Alternate Arrow Circle Right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z\\\"}}},\\\"arrow-alt-circle-up\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow-circle-o-up\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f35b\\\",\\\"label\\\":\\\"Alternate Arrow Circle Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 504c137 0 248-111 248-248S393 8 256 8 8 119 8 256s111 248 248 248zm0-448c110.5 0 200 89.5 200 200s-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56zm20 328h-40c-6.6 0-12-5.4-12-12V256h-67c-10.7 0-16-12.9-8.5-20.5l99-99c4.7-4.7 12.3-4.7 17 0l99 99c7.6 7.6 2.2 20.5-8.5 20.5h-67v116c0 6.6-5.4 12-12 12z\\\"}}},\\\"arrow-circle-down\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"download\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0ab\\\",\\\"label\\\":\\\"Arrow Circle Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\\\"}}},\\\"arrow-circle-left\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"back\\\",\\\"previous\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0a8\\\",\\\"label\\\":\\\"Arrow Circle Left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\\\"}}},\\\"arrow-circle-right\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"forward\\\",\\\"next\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0a9\\\",\\\"label\\\":\\\"Arrow Circle Right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\\\"}}},\\\"arrow-circle-up\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0aa\\\",\\\"label\\\":\\\"Arrow Circle Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\\\"}}},\\\"arrow-down\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"download\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f063\\\",\\\"label\\\":\\\"arrow-down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\\\"}}},\\\"arrow-left\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"back\\\",\\\"previous\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f060\\\",\\\"label\\\":\\\"arrow-left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\\\"}}},\\\"arrow-right\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"forward\\\",\\\"next\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f061\\\",\\\"label\\\":\\\"arrow-right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\\\"}}},\\\"arrow-up\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f062\\\",\\\"label\\\":\\\"arrow-up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\\\"}}},\\\"arrows-alt\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"arrows\\\",\\\"bigger\\\",\\\"enlarge\\\",\\\"expand\\\",\\\"fullscreen\\\",\\\"move\\\",\\\"position\\\",\\\"reorder\\\",\\\"resize\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0b2\\\",\\\"label\\\":\\\"Alternate Arrows\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\\\"}}},\\\"arrows-alt-h\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrows-h\\\",\\\"resize\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f337\\\",\\\"label\\\":\\\"Alternate Arrows Horizontal\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\\\"}}},\\\"arrows-alt-v\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrows-v\\\",\\\"resize\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f338\\\",\\\"label\\\":\\\"Alternate Arrows Vertical\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\\\"}}},\\\"assistive-listening-systems\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2a2\\\",\\\"label\\\":\\\"Assistive Listening Systems\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\\\"}}},\\\"asterisk\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"details\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f069\\\",\\\"label\\\":\\\"asterisk\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\\\"}}},\\\"asymmetrik\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f372\\\",\\\"label\\\":\\\"Asymmetrik, Ltd.\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z\\\"}}},\\\"at\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"e-mail\\\",\\\"email\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1fa\\\",\\\"label\\\":\\\"At\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\\\"}}},\\\"atlas\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"book\\\",\\\"directions\\\",\\\"geography\\\",\\\"map\\\",\\\"wayfinding\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f558\\\",\\\"label\\\":\\\"Atlas\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111646,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\\\"}}},\\\"atom\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5d2\\\",\\\"label\\\":\\\"Atom\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831513,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M413.03 256c40.13-54.89 41.51-98.62 25.14-128-10.91-19.52-40.54-50.73-116.33-41.88C300.36 34.89 267.64 0 224 0s-76.36 34.89-97.84 86.12C50.43 77.34 20.73 108.48 9.83 128c-16.38 29.4-15 73.09 25.14 128-40.13 54.89-41.51 98.62-25.14 128 29.21 52.34 101.68 43.58 116.33 41.88C147.63 477.1 180.36 512 224 512s76.37-34.9 97.84-86.12c14.64 1.7 87.11 10.46 116.33-41.88 16.38-29.4 15-73.09-25.14-128zM63.38 352c-4.03-7.21-.19-24.8 14.95-48.29 6.96 6.53 14.2 12.89 21.87 19.18 1.71 13.71 4 27.08 6.76 40.08-24.56.89-39.89-4.37-43.58-10.97zm36.82-162.88c-7.66 6.29-14.9 12.65-21.87 19.18-15.13-23.5-18.97-41.09-14.95-48.3 3.41-6.14 16.39-11.47 37.92-11.47 1.71 0 3.87.3 5.69.37a472.191 472.191 0 0 0-6.79 40.22zM224 64c9.47 0 22.2 13.52 33.86 37.26-11.19 3.7-22.44 8-33.86 12.86-11.42-4.86-22.67-9.16-33.86-12.86C201.8 77.52 214.53 64 224 64zm0 384c-9.47 0-22.2-13.52-33.86-37.26 11.19-3.7 22.44-8 33.86-12.86 11.42 4.86 22.67 9.16 33.86 12.86C246.2 434.48 233.47 448 224 448zm62.5-157.33c-26.7 19.08-46.14 29.33-62.5 37.48-16.35-8.14-35.8-18.41-62.5-37.48-1.99-27.79-1.99-41.54 0-69.33 26.67-19.05 46.13-29.32 62.5-37.48 16.39 8.17 35.86 18.44 62.5 37.48 1.98 27.78 1.99 41.53 0 69.33zM384.62 352c-3.67 6.62-19 11.82-43.58 10.95 2.76-13 5.05-26.37 6.76-40.06 7.66-6.29 14.9-12.65 21.87-19.18 15.13 23.49 18.97 41.08 14.95 48.29zm-14.95-143.71c-6.96-6.53-14.2-12.89-21.87-19.18a473.535 473.535 0 0 0-6.79-40.22c1.82-.07 3.97-.37 5.69-.37 21.52 0 34.51 5.34 37.92 11.47 4.02 7.22.18 24.81-14.95 48.3zM224 224c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M413.03 256c40.13-54.89 41.51-98.62 25.14-128-10.91-19.52-40.54-50.73-116.33-41.88C300.36 34.89 267.64 0 224 0s-76.36 34.89-97.84 86.12C50.43 77.34 20.73 108.48 9.83 128c-16.38 29.4-15 73.09 25.14 128-40.13 54.89-41.51 98.62-25.14 128 29.21 52.34 101.68 43.58 116.33 41.88C147.63 477.1 180.36 512 224 512s76.37-34.9 97.84-86.12c14.64 1.7 87.11 10.46 116.33-41.88 16.38-29.4 15-73.09-25.14-128zM63.38 352c-4.03-7.21-.19-24.8 14.95-48.29 6.96 6.53 14.2 12.89 21.87 19.18 1.71 13.71 4 27.08 6.76 40.08-24.56.89-39.89-4.37-43.58-10.97zm36.82-162.88c-7.66 6.29-14.9 12.65-21.87 19.18-15.13-23.5-18.97-41.09-14.95-48.3 3.41-6.14 16.39-11.47 37.92-11.47 1.71 0 3.87.3 5.69.37a472.191 472.191 0 0 0-6.79 40.22zM224 64c9.47 0 22.2 13.52 33.86 37.26-11.19 3.7-22.44 8-33.86 12.86-11.42-4.86-22.67-9.16-33.86-12.86C201.8 77.52 214.53 64 224 64zm0 384c-9.47 0-22.2-13.52-33.86-37.26 11.19-3.7 22.44-8 33.86-12.86 11.42 4.86 22.67 9.16 33.86 12.86C246.2 434.48 233.47 448 224 448zm62.5-157.33c-26.7 19.08-46.14 29.33-62.5 37.48-16.35-8.14-35.8-18.41-62.5-37.48-1.99-27.79-1.99-41.54 0-69.33 26.67-19.05 46.13-29.32 62.5-37.48 16.39 8.17 35.86 18.44 62.5 37.48 1.98 27.78 1.99 41.53 0 69.33zM384.62 352c-3.67 6.62-19 11.82-43.58 10.95 2.76-13 5.05-26.37 6.76-40.06 7.66-6.29 14.9-12.65 21.87-19.18 15.13 23.49 18.97 41.08 14.95 48.29zm-14.95-143.71c-6.96-6.53-14.2-12.89-21.87-19.18a473.535 473.535 0 0 0-6.79-40.22c1.82-.07 3.97-.37 5.69-.37 21.52 0 34.51 5.34 37.92 11.47 4.02 7.22.18 24.81-14.95 48.3zM224 224c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\\\"}}},\\\"audible\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f373\\\",\\\"label\\\":\\\"Audible\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z\\\"}}},\\\"audio-description\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f29e\\\",\\\"label\\\":\\\"Audio Description\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\\\"}}},\\\"autoprefixer\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f41c\\\",\\\"label\\\":\\\"Autoprefixer\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1508787003039,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z\\\"}}},\\\"avianex\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f374\\\",\\\"label\\\":\\\"avianex\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z\\\"}}},\\\"aviato\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f421\\\",\\\"label\\\":\\\"Aviato\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821381,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z\\\"}}},\\\"award\\\":{\\\"changes\\\":[\\\"5.1.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"honor\\\",\\\"praise\\\",\\\"prize\\\",\\\"recognition\\\",\\\"ribbon\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f559\\\",\\\"label\\\":\\\"Award\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831513,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\\\"}}},\\\"aws\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f375\\\",\\\"label\\\":\\\"Amazon Web Services (AWS)\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529514897188,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z\\\"}}},\\\"backspace\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"command\\\",\\\"delete\\\",\\\"keyboard\\\",\\\"undo\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f55a\\\",\\\"label\\\":\\\"Backspace\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111647,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\\\"}}},\\\"backward\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"previous\\\",\\\"rewind\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f04a\\\",\\\"label\\\":\\\"backward\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\\\"}}},\\\"balance-scale\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"balanced\\\",\\\"justice\\\",\\\"legal\\\",\\\"measure\\\",\\\"weight\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f24e\\\",\\\"label\\\":\\\"Balance Scale\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154563,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\\\"}}},\\\"ban\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"abort\\\",\\\"ban\\\",\\\"block\\\",\\\"cancel\\\",\\\"delete\\\",\\\"hide\\\",\\\"prohibit\\\",\\\"remove\\\",\\\"stop\\\",\\\"trash\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f05e\\\",\\\"label\\\":\\\"ban\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\\\"}}},\\\"band-aid\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bandage\\\",\\\"boo boo\\\",\\\"ouch\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f462\\\",\\\"label\\\":\\\"Band-Aid\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821441,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\\\"}}},\\\"bandcamp\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2d5\\\",\\\"label\\\":\\\"Bandcamp\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm48.2 326.1h-181L199.9 178h181l-84.7 156.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm48.2 326.1h-181L199.9 178h181l-84.7 156.1z\\\"}}},\\\"barcode\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"scan\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f02a\\\",\\\"label\\\":\\\"barcode\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\\\"}}},\\\"bars\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"checklist\\\",\\\"drag\\\",\\\"hamburger\\\",\\\"list\\\",\\\"menu\\\",\\\"nav\\\",\\\"navigation\\\",\\\"ol\\\",\\\"reorder\\\",\\\"settings\\\",\\\"todo\\\",\\\"ul\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0c9\\\",\\\"label\\\":\\\"Bars\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\\\"}}},\\\"baseball-ball\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f433\\\",\\\"label\\\":\\\"Baseball Ball\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527985,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\\\"}}},\\\"basketball-ball\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f434\\\",\\\"label\\\":\\\"Basketball Ball\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527986,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\\\"}}},\\\"bath\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2cd\\\",\\\"label\\\":\\\"Bath\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M488 256H80V112c0-17.645 14.355-32 32-32 11.351 0 21.332 5.945 27.015 14.88-16.492 25.207-14.687 59.576 6.838 83.035-4.176 4.713-4.021 11.916.491 16.428l11.314 11.314c4.686 4.686 12.284 4.686 16.971 0l95.03-95.029c4.686-4.686 4.686-12.284 0-16.971l-11.314-11.314c-4.512-4.512-11.715-4.666-16.428-.491-17.949-16.469-42.294-21.429-64.178-15.365C163.281 45.667 139.212 32 112 32c-44.112 0-80 35.888-80 80v144h-8c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h8v32c0 28.43 12.362 53.969 32 71.547V456c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-8h256v8c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-32.453c19.638-17.578 32-43.117 32-71.547v-32h8c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M488 256H80V112c0-17.645 14.355-32 32-32 11.351 0 21.332 5.945 27.015 14.88-16.492 25.207-14.687 59.576 6.838 83.035-4.176 4.713-4.021 11.916.491 16.428l11.314 11.314c4.686 4.686 12.284 4.686 16.971 0l95.03-95.029c4.686-4.686 4.686-12.284 0-16.971l-11.314-11.314c-4.512-4.512-11.715-4.666-16.428-.491-17.949-16.469-42.294-21.429-64.178-15.365C163.281 45.667 139.212 32 112 32c-44.112 0-80 35.888-80 80v144h-8c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h8v32c0 28.43 12.362 53.969 32 71.547V456c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-8h256v8c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-32.453c19.638-17.578 32-43.117 32-71.547v-32h8c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\\\"}}},\\\"battery-empty\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"power\\\",\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f244\\\",\\\"label\\\":\\\"Battery Empty\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\\\"}}},\\\"battery-full\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"power\\\",\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f240\\\",\\\"label\\\":\\\"Battery Full\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\\\"}}},\\\"battery-half\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"power\\\",\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f242\\\",\\\"label\\\":\\\"Battery 1/2 Full\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\\\"}}},\\\"battery-quarter\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"power\\\",\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f243\\\",\\\"label\\\":\\\"Battery 1/4 Full\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\\\"}}},\\\"battery-three-quarters\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"power\\\",\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f241\\\",\\\"label\\\":\\\"Battery 3/4 Full\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\\\"}}},\\\"bed\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"lodging\\\",\\\"sleep\\\",\\\"travel\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f236\\\",\\\"label\\\":\\\"Bed\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111647,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\\\"}}},\\\"beer\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"alcohol\\\",\\\"bar\\\",\\\"drink\\\",\\\"liquor\\\",\\\"mug\\\",\\\"stein\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0fc\\\",\\\"label\\\":\\\"beer\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\\\"}}},\\\"behance\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1b4\\\",\\\"label\\\":\\\"Behance\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z\\\"}}},\\\"behance-square\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1b5\\\",\\\"label\\\":\\\"Behance Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426581996,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z\\\"}}},\\\"bell\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"alert\\\",\\\"notification\\\",\\\"reminder\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0f3\\\",\\\"label\\\":\\\"bell\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831515,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1532362831475,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z\\\"}}},\\\"bell-slash\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1f6\\\",\\\"label\\\":\\\"Bell Slash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831515,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1532362831475,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M633.99 471.02L36 3.51C29.1-2.01 19.03-.9 13.51 6l-10 12.49C-2.02 25.39-.9 35.46 6 40.98l598 467.51c6.9 5.52 16.96 4.4 22.49-2.49l10-12.49c5.52-6.9 4.41-16.97-2.5-22.49zM163.53 368c16.71-22.03 34.48-55.8 41.4-110.58l-45.47-35.55c-3.27 90.73-36.47 120.68-54.84 140.42-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h279.66l-61.4-48H163.53zM320 96c61.86 0 112 50.14 112 112 0 .2-.06.38-.06.58.02 16.84 1.16 31.77 2.79 45.73l59.53 46.54c-8.31-22.13-14.34-51.49-14.34-92.85 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-26.02 5.41-49.45 16.94-69.13 32.72l38.17 29.84C275 103.18 296.65 96 320 96zm0 416c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\\\"}}},\\\"bezier-curve\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"curves\\\",\\\"illustrator\\\",\\\"lines\\\",\\\"path\\\",\\\"vector\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f55b\\\",\\\"label\\\":\\\"Bezier Curve\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111648,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\\\"}}},\\\"bicycle\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bike\\\",\\\"gears\\\",\\\"transportation\\\",\\\"vehicle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f206\\\",\\\"label\\\":\\\"Bicycle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\\\"}}},\\\"bimobject\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f378\\\",\\\"label\\\":\\\"BIMobject\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z\\\"}}},\\\"binoculars\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1e5\\\",\\\"label\\\":\\\"Binoculars\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831516,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\\\"}}},\\\"birthday-cake\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1fd\\\",\\\"label\\\":\\\"Birthday Cake\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\\\"}}},\\\"bitbucket\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bitbucket-square\\\",\\\"git\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f171\\\",\\\"label\\\":\\\"Bitbucket\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1505492030000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M23.1 32C14.2 31.9 7 38.9 6.9 47.8c0 .9.1 1.8.2 2.8L74.9 462c1.7 10.4 10.7 18 21.2 18.1h325.1c7.9.1 14.7-5.6 16-13.4l67.8-416c1.4-8.7-4.5-16.9-13.2-18.3-.9-.1-1.8-.2-2.8-.2L23.1 32zm285.3 297.3H204.6l-28.1-146.8h157l-25.1 146.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M23.1 32C14.2 31.9 7 38.9 6.9 47.8c0 .9.1 1.8.2 2.8L74.9 462c1.7 10.4 10.7 18 21.2 18.1h325.1c7.9.1 14.7-5.6 16-13.4l67.8-416c1.4-8.7-4.5-16.9-13.2-18.3-.9-.1-1.8-.2-2.8-.2L23.1 32zm285.3 297.3H204.6l-28.1-146.8h157l-25.1 146.8z\\\"}}},\\\"bitcoin\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f379\\\",\\\"label\\\":\\\"Bitcoin\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z\\\"}}},\\\"bity\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f37a\\\",\\\"label\\\":\\\"Bity\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821381,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z\\\"}}},\\\"black-tie\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f27e\\\",\\\"label\\\":\\\"Font Awesome Black Tie\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z\\\"}}},\\\"blackberry\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f37b\\\",\\\"label\\\":\\\"BlackBerry\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z\\\"}}},\\\"blender\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f517\\\",\\\"label\\\":\\\"Blender\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154563,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\\\"}}},\\\"blind\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f29d\\\",\\\"label\\\":\\\"Blind\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\\\"}}},\\\"blogger\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f37c\\\",\\\"label\\\":\\\"Blogger\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z\\\"}}},\\\"blogger-b\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f37d\\\",\\\"label\\\":\\\"Blogger B\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z\\\"}}},\\\"bluetooth\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f293\\\",\\\"label\\\":\\\"Bluetooth\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z\\\"}}},\\\"bluetooth-b\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f294\\\",\\\"label\\\":\\\"Bluetooth\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z\\\"}}},\\\"bold\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f032\\\",\\\"label\\\":\\\"bold\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M304.793 243.891c33.639-18.537 53.657-54.16 53.657-95.693 0-48.236-26.25-87.626-68.626-104.179C265.138 34.01 240.849 32 209.661 32H24c-8.837 0-16 7.163-16 16v33.049c0 8.837 7.163 16 16 16h33.113v318.53H24c-8.837 0-16 7.163-16 16V464c0 8.837 7.163 16 16 16h195.69c24.203 0 44.834-1.289 66.866-7.584C337.52 457.193 376 410.647 376 350.014c0-52.168-26.573-91.684-71.207-106.123zM142.217 100.809h67.444c16.294 0 27.536 2.019 37.525 6.717 15.828 8.479 24.906 26.502 24.906 49.446 0 35.029-20.32 56.79-53.029 56.79h-76.846V100.809zm112.642 305.475c-10.14 4.056-22.677 4.907-31.409 4.907h-81.233V281.943h84.367c39.645 0 63.057 25.38 63.057 63.057.001 28.425-13.66 52.483-34.782 61.284z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M304.793 243.891c33.639-18.537 53.657-54.16 53.657-95.693 0-48.236-26.25-87.626-68.626-104.179C265.138 34.01 240.849 32 209.661 32H24c-8.837 0-16 7.163-16 16v33.049c0 8.837 7.163 16 16 16h33.113v318.53H24c-8.837 0-16 7.163-16 16V464c0 8.837 7.163 16 16 16h195.69c24.203 0 44.834-1.289 66.866-7.584C337.52 457.193 376 410.647 376 350.014c0-52.168-26.573-91.684-71.207-106.123zM142.217 100.809h67.444c16.294 0 27.536 2.019 37.525 6.717 15.828 8.479 24.906 26.502 24.906 49.446 0 35.029-20.32 56.79-53.029 56.79h-76.846V100.809zm112.642 305.475c-10.14 4.056-22.677 4.907-31.409 4.907h-81.233V281.943h84.367c39.645 0 63.057 25.38 63.057 63.057.001 28.425-13.66 52.483-34.782 61.284z\\\"}}},\\\"bolt\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"electricity\\\",\\\"lightning\\\",\\\"weather\\\",\\\"zap\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0e7\\\",\\\"label\\\":\\\"Lightning Bolt\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M295.973 160H180.572L215.19 30.184C219.25 14.956 207.756 0 192 0H56C43.971 0 33.8 8.905 32.211 20.828l-31.996 240C-1.704 275.217 9.504 288 24.004 288h118.701L96.646 482.466C93.05 497.649 104.659 512 119.992 512c8.35 0 16.376-4.374 20.778-11.978l175.973-303.997c9.244-15.967-2.288-36.025-20.77-36.025z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M295.973 160H180.572L215.19 30.184C219.25 14.956 207.756 0 192 0H56C43.971 0 33.8 8.905 32.211 20.828l-31.996 240C-1.704 275.217 9.504 288 24.004 288h118.701L96.646 482.466C93.05 497.649 104.659 512 119.992 512c8.35 0 16.376-4.374 20.778-11.978l175.973-303.997c9.244-15.967-2.288-36.025-20.77-36.025z\\\"}}},\\\"bomb\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1e2\\\",\\\"label\\\":\\\"Bomb\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\\\"}}},\\\"bone\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5d7\\\",\\\"label\\\":\\\"Bone\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831517,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\\\"}}},\\\"bong\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"aparatus\\\",\\\"cannabis\\\",\\\"marijuana\\\",\\\"pipe\\\",\\\"smoke\\\",\\\"smoking\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f55c\\\",\\\"label\\\":\\\"Bong\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111648,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\\\"}}},\\\"book\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"documentation\\\",\\\"read\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f02d\\\",\\\"label\\\":\\\"book\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\\\"}}},\\\"book-open\\\":{\\\"changes\\\":[\\\"5.0.13\\\",\\\"5.1.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"flyer\\\",\\\"notebook\\\",\\\"open book\\\",\\\"pamphlet\\\",\\\"reading\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f518\\\",\\\"label\\\":\\\"Book Open\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529514897312,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\\\"}}},\\\"book-reader\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"library\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5da\\\",\\\"label\\\":\\\"Book Reader\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831517,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\\\"}}},\\\"bookmark\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"save\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f02e\\\",\\\"label\\\":\\\"bookmark\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M336 0H48C21.49 0 0 21.49 0 48v464l192-112 192 112V48c0-26.51-21.49-48-48-48zm0 428.43l-144-84-144 84V54a6 6 0 0 1 6-6h276c3.314 0 6 2.683 6 5.996V428.43z\\\"}}},\\\"bowling-ball\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f436\\\",\\\"label\\\":\\\"Bowling Ball\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527987,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"}}},\\\"box\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"package\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f466\\\",\\\"label\\\":\\\"Box\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821444,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\\\"}}},\\\"box-open\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f49e\\\",\\\"label\\\":\\\"Box Open\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821443,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9zm585.1 102.8L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9zm585.1 102.8L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9z\\\"}}},\\\"boxes\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f468\\\",\\\"label\\\":\\\"Boxes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821444,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\\\"}}},\\\"braille\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2a1\\\",\\\"label\\\":\\\"Braille\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\\\"}}},\\\"brain\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5dc\\\",\\\"label\\\":\\\"Brain\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831518,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M208 0c-29.87 0-54.74 20.55-61.8 48.22-.75-.02-1.45-.22-2.2-.22-35.34 0-64 28.65-64 64 0 4.84.64 9.51 1.66 14.04C52.54 138 32 166.57 32 200c0 12.58 3.16 24.32 8.34 34.91C16.34 248.72 0 274.33 0 304c0 33.34 20.42 61.88 49.42 73.89-.9 4.57-1.42 9.28-1.42 14.11 0 39.76 32.23 72 72 72 4.12 0 8.1-.55 12.03-1.21C141.61 491.31 168.25 512 200 512c39.77 0 72-32.24 72-72V205.45c-10.91 8.98-23.98 15.45-38.36 18.39-4.97 1.02-9.64-2.82-9.64-7.89v-16.18c0-3.57 2.35-6.78 5.8-7.66 24.2-6.16 42.2-27.95 42.2-54.04V64c0-35.35-28.66-64-64-64zm368 304c0-29.67-16.34-55.28-40.34-69.09 5.17-10.59 8.34-22.33 8.34-34.91 0-33.43-20.54-62-49.66-73.96 1.02-4.53 1.66-9.2 1.66-14.04 0-35.35-28.66-64-64-64-.75 0-1.45.2-2.2.22C422.74 20.55 397.87 0 368 0c-35.34 0-64 28.65-64 64v74.07c0 26.09 17.99 47.88 42.2 54.04 3.46.88 5.8 4.09 5.8 7.66v16.18c0 5.07-4.68 8.91-9.64 7.89-14.38-2.94-27.44-9.41-38.36-18.39V440c0 39.76 32.23 72 72 72 31.75 0 58.39-20.69 67.97-49.21 3.93.67 7.91 1.21 12.03 1.21 39.77 0 72-32.24 72-72 0-4.83-.52-9.54-1.42-14.11 29-12.01 49.42-40.55 49.42-73.89z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M208 0c-29.87 0-54.74 20.55-61.8 48.22-.75-.02-1.45-.22-2.2-.22-35.34 0-64 28.65-64 64 0 4.84.64 9.51 1.66 14.04C52.54 138 32 166.57 32 200c0 12.58 3.16 24.32 8.34 34.91C16.34 248.72 0 274.33 0 304c0 33.34 20.42 61.88 49.42 73.89-.9 4.57-1.42 9.28-1.42 14.11 0 39.76 32.23 72 72 72 4.12 0 8.1-.55 12.03-1.21C141.61 491.31 168.25 512 200 512c39.77 0 72-32.24 72-72V205.45c-10.91 8.98-23.98 15.45-38.36 18.39-4.97 1.02-9.64-2.82-9.64-7.89v-16.18c0-3.57 2.35-6.78 5.8-7.66 24.2-6.16 42.2-27.95 42.2-54.04V64c0-35.35-28.66-64-64-64zm368 304c0-29.67-16.34-55.28-40.34-69.09 5.17-10.59 8.34-22.33 8.34-34.91 0-33.43-20.54-62-49.66-73.96 1.02-4.53 1.66-9.2 1.66-14.04 0-35.35-28.66-64-64-64-.75 0-1.45.2-2.2.22C422.74 20.55 397.87 0 368 0c-35.34 0-64 28.65-64 64v74.07c0 26.09 17.99 47.88 42.2 54.04 3.46.88 5.8 4.09 5.8 7.66v16.18c0 5.07-4.68 8.91-9.64 7.89-14.38-2.94-27.44-9.41-38.36-18.39V440c0 39.76 32.23 72 72 72 31.75 0 58.39-20.69 67.97-49.21 3.93.67 7.91 1.21 12.03 1.21 39.77 0 72-32.24 72-72 0-4.83-.52-9.54-1.42-14.11 29-12.01 49.42-40.55 49.42-73.89z\\\"}}},\\\"briefcase\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bag\\\",\\\"business\\\",\\\"luggage\\\",\\\"office\\\",\\\"work\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0b1\\\",\\\"label\\\":\\\"Briefcase\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M320 288h192v144c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V288h192v20c0 6.627 5.373 12 12 12h104c6.627 0 12-5.373 12-12v-20zm192-112v80H0v-80c0-26.51 21.49-48 48-48h80V80c0-26.51 21.49-48 48-48h160c26.51 0 48 21.49 48 48v48h80c26.51 0 48 21.49 48 48zM320 96H192v32h128V96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M320 288h192v144c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V288h192v20c0 6.627 5.373 12 12 12h104c6.627 0 12-5.373 12-12v-20zm192-112v80H0v-80c0-26.51 21.49-48 48-48h80V80c0-26.51 21.49-48 48-48h160c26.51 0 48 21.49 48 48v48h80c26.51 0 48 21.49 48 48zM320 96H192v32h128V96z\\\"}}},\\\"briefcase-medical\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"health briefcase\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f469\\\",\\\"label\\\":\\\"Medical Briefcase\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821445,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\\\"}}},\\\"broadcast-tower\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"airwaves\\\",\\\"radio\\\",\\\"waves\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f519\\\",\\\"label\\\":\\\"Broadcast Tower\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154564,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\\\"}}},\\\"broom\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f51a\\\",\\\"label\\\":\\\"Broom\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154564,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M10.8 247.2C-.7 251.8-3.7 266.7 5 275.4l54.8 54.8 73.2-24.4-24.4 73.2 128 128c8.8 8.8 23.6 5.7 28.2-5.8l98.1-243.7-108.4-108.4-243.7 98.1zM507.3 27.3L484.7 4.7c-6.2-6.3-16.4-6.3-22.6 0L359.8 106.9l-40.4-40.4c-4.2-4.3-11.4-3-13.9 2.5l-27.2 58.6 106.1 106.1 58.6-27.2c5.4-2.5 6.7-9.7 2.5-13.9l-40.4-40.4L507.3 49.9c6.3-6.2 6.3-16.3 0-22.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M10.8 247.2C-.7 251.8-3.7 266.7 5 275.4l54.8 54.8 73.2-24.4-24.4 73.2 128 128c8.8 8.8 23.6 5.7 28.2-5.8l98.1-243.7-108.4-108.4-243.7 98.1zM507.3 27.3L484.7 4.7c-6.2-6.3-16.4-6.3-22.6 0L359.8 106.9l-40.4-40.4c-4.2-4.3-11.4-3-13.9 2.5l-27.2 58.6 106.1 106.1 58.6-27.2c5.4-2.5 6.7-9.7 2.5-13.9l-40.4-40.4L507.3 49.9c6.3-6.2 6.3-16.3 0-22.6z\\\"}}},\\\"brush\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bristles\\\",\\\"color\\\",\\\"handle\\\",\\\"painting\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f55d\\\",\\\"label\\\":\\\"Brush\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111649,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\\\"}}},\\\"btc\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f15a\\\",\\\"label\\\":\\\"BTC\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z\\\"}}},\\\"bug\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"insect\\\",\\\"report\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f188\\\",\\\"label\\\":\\\"Bug\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\\\"}}},\\\"building\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"apartment\\\",\\\"business\\\",\\\"company\\\",\\\"office\\\",\\\"work\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1ad\\\",\\\"label\\\":\\\"Building\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M128 148v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12zm140 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-128 96h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm128 0h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm-76 84v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm76 12h40c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12zm180 124v36H0v-36c0-6.6 5.4-12 12-12h19.5V24c0-13.3 10.7-24 24-24h337c13.3 0 24 10.7 24 24v440H436c6.6 0 12 5.4 12 12zM79.5 463H192v-67c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v67h112.5V49L80 48l-.5 415z\\\"}}},\\\"bullhorn\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"announcement\\\",\\\"broadcast\\\",\\\"louder\\\",\\\"megaphone\\\",\\\"share\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0a1\\\",\\\"label\\\":\\\"bullhorn\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M576 224c0-20.896-13.36-38.666-32-45.258V64c0-35.346-28.654-64-64-64-64.985 56-142.031 128-272 128H48c-26.51 0-48 21.49-48 48v96c0 26.51 21.49 48 48 48h43.263c-18.742 64.65 2.479 116.379 18.814 167.44 1.702 5.32 5.203 9.893 9.922 12.88 20.78 13.155 68.355 15.657 93.773 5.151 16.046-6.633 19.96-27.423 7.522-39.537-18.508-18.026-30.136-36.91-19.795-60.858a12.278 12.278 0 0 0-1.045-11.673c-16.309-24.679-3.581-62.107 28.517-72.752C346.403 327.887 418.591 395.081 480 448c35.346 0 64-28.654 64-64V269.258c18.64-6.592 32-24.362 32-45.258zm-96 139.855c-54.609-44.979-125.033-92.94-224-104.982v-69.747c98.967-12.042 169.391-60.002 224-104.982v279.711z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M576 224c0-20.896-13.36-38.666-32-45.258V64c0-35.346-28.654-64-64-64-64.985 56-142.031 128-272 128H48c-26.51 0-48 21.49-48 48v96c0 26.51 21.49 48 48 48h43.263c-18.742 64.65 2.479 116.379 18.814 167.44 1.702 5.32 5.203 9.893 9.922 12.88 20.78 13.155 68.355 15.657 93.773 5.151 16.046-6.633 19.96-27.423 7.522-39.537-18.508-18.026-30.136-36.91-19.795-60.858a12.278 12.278 0 0 0-1.045-11.673c-16.309-24.679-3.581-62.107 28.517-72.752C346.403 327.887 418.591 395.081 480 448c35.346 0 64-28.654 64-64V269.258c18.64-6.592 32-24.362 32-45.258zm-96 139.855c-54.609-44.979-125.033-92.94-224-104.982v-69.747c98.967-12.042 169.391-60.002 224-104.982v279.711z\\\"}}},\\\"bullseye\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"target\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f140\\\",\\\"label\\\":\\\"Bullseye\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 72c101.689 0 184 82.295 184 184 0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-101.689 82.295-184 184-184m0-64C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 184c35.29 0 64 28.71 64 64s-28.71 64-64 64-64-28.71-64-64 28.71-64 64-64m0-64c-70.692 0-128 57.308-128 128s57.308 128 128 128 128-57.308 128-128-57.308-128-128-128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 72c101.689 0 184 82.295 184 184 0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-101.689 82.295-184 184-184m0-64C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 184c35.29 0 64 28.71 64 64s-28.71 64-64 64-64-28.71-64-64 28.71-64 64-64m0-64c-70.692 0-128 57.308-128 128s57.308 128 128 128 128-57.308 128-128-57.308-128-128-128z\\\"}}},\\\"burn\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"energy\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f46a\\\",\\\"label\\\":\\\"Burn\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821445,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\\\"}}},\\\"buromobelexperte\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f37f\\\",\\\"label\\\":\\\"Büromöbel-Experte GmbH & Co. KG.\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z\\\"}}},\\\"bus\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"machine\\\",\\\"public transportation\\\",\\\"transportation\\\",\\\"vehicle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f207\\\",\\\"label\\\":\\\"Bus\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111650,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"bus-alt\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"machine\\\",\\\"public transportation\\\",\\\"transportation\\\",\\\"vehicle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f55e\\\",\\\"label\\\":\\\"Bus Alt\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111650,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"buysellads\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f20d\\\",\\\"label\\\":\\\"BuySellAds\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z\\\"}}},\\\"calculator\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1ec\\\",\\\"label\\\":\\\"Calculator\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 464V48C0 21.49 21.49 0 48 0h352c26.51 0 48 21.49 48 48v416c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm384-284V76c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v104c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12zM128 308v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm256 128V268c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-256 0v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm128-128v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm0 128v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 464V48C0 21.49 21.49 0 48 0h352c26.51 0 48 21.49 48 48v416c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm384-284V76c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v104c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12zM128 308v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm256 128V268c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-256 0v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm128-128v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm0 128v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\\\"}}},\\\"calendar\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"calendar-o\\\",\\\"date\\\",\\\"event\\\",\\\"schedule\\\",\\\"time\\\",\\\"when\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f133\\\",\\\"label\\\":\\\"Calendar\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 64h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V160h352v298c0 3.3-2.7 6-6 6z\\\"}}},\\\"calendar-alt\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"calendar\\\",\\\"date\\\",\\\"event\\\",\\\"schedule\\\",\\\"time\\\",\\\"when\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f073\\\",\\\"label\\\":\\\"Alternate Calendar\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm116 204c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40zm0-128c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40zm128 128c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40zm0-128c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40zm128 128c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40zm0-128c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm116 204c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40zm0-128c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40zm128 128c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40zm0-128c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40zm128 128c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40zm0-128c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-40z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M148 288h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm108-12v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 96v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-40c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm96-260v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\"}}},\\\"calendar-check\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"accept\\\",\\\"agree\\\",\\\"appointment\\\",\\\"confirm\\\",\\\"correct\\\",\\\"done\\\",\\\"ok\\\",\\\"select\\\",\\\"success\\\",\\\"todo\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f274\\\",\\\"label\\\":\\\"Calendar Check\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 64h-48V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H160V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v52H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V160h352v298a6 6 0 0 1-6 6zm-52.849-200.65L198.842 404.519c-4.705 4.667-12.303 4.637-16.971-.068l-75.091-75.699c-4.667-4.705-4.637-12.303.068-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l44.104 44.461 111.072-110.181c4.705-4.667 12.303-4.637 16.971.068l22.536 22.718c4.667 4.705 4.636 12.303-.069 16.97z\\\"}}},\\\"calendar-minus\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f272\\\",\\\"label\\\":\\\"Calendar Minus\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M124 328c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H124zm324-216v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\"}}},\\\"calendar-plus\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f271\\\",\\\"label\\\":\\\"Calendar Plus\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M336 292v24c0 6.6-5.4 12-12 12h-76v76c0 6.6-5.4 12-12 12h-24c-6.6 0-12-5.4-12-12v-76h-76c-6.6 0-12-5.4-12-12v-24c0-6.6 5.4-12 12-12h76v-76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v76h76c6.6 0 12 5.4 12 12zm112-180v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\"}}},\\\"calendar-times\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f273\\\",\\\"label\\\":\\\"Calendar Times\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M311.7 374.7l-17 17c-4.7 4.7-12.3 4.7-17 0L224 337.9l-53.7 53.7c-4.7 4.7-12.3 4.7-17 0l-17-17c-4.7-4.7-4.7-12.3 0-17l53.7-53.7-53.7-53.7c-4.7-4.7-4.7-12.3 0-17l17-17c4.7-4.7 12.3-4.7 17 0l53.7 53.7 53.7-53.7c4.7-4.7 12.3-4.7 17 0l17 17c4.7 4.7 4.7 12.3 0 17L257.9 304l53.7 53.7c4.8 4.7 4.8 12.3.1 17zM448 112v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48zm-48 346V160H48v298c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\"}}},\\\"camera\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"photo\\\",\\\"picture\\\",\\\"record\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f030\\\",\\\"label\\\":\\\"camera\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\\\"}}},\\\"camera-retro\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"photo\\\",\\\"picture\\\",\\\"record\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f083\\\",\\\"label\\\":\\\"Retro Camera\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\\\"}}},\\\"cannabis\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bud\\\",\\\"chronic\\\",\\\"drugs\\\",\\\"endica\\\",\\\"endo\\\",\\\"ganja\\\",\\\"marijuana\\\",\\\"mary jane\\\",\\\"pot\\\",\\\"reefer\\\",\\\"sativa\\\",\\\"spliff\\\",\\\"weed\\\",\\\"whacky-tabacky\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f55f\\\",\\\"label\\\":\\\"Cannabis\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111651,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\\\"}}},\\\"capsules\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"drugs\\\",\\\"medicine\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f46b\\\",\\\"label\\\":\\\"Capsules\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821446,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\\\"}}},\\\"car\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"machine\\\",\\\"transportation\\\",\\\"vehicle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1b9\\\",\\\"label\\\":\\\"Car\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831521,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\\\"}}},\\\"car-alt\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5de\\\",\\\"label\\\":\\\"Car Alt\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831519,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 480 512\\\\\\\"><path d=\\\\\\\"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"480\\\",\\\"512\\\"],\\\"width\\\":480,\\\"height\\\":512,\\\"path\\\":\\\"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\\\"}}},\\\"car-battery\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5df\\\",\\\"label\\\":\\\"Car Battery\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831519,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\\\"}}},\\\"car-crash\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5e1\\\",\\\"label\\\":\\\"Car Crash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831520,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\\\"}}},\\\"car-side\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5e4\\\",\\\"label\\\":\\\"Car Side\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831521,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\\\"}}},\\\"caret-down\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"dropdown\\\",\\\"menu\\\",\\\"more\\\",\\\"triangle down\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0d7\\\",\\\"label\\\":\\\"Caret Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\\\"}}},\\\"caret-left\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"back\\\",\\\"previous\\\",\\\"triangle left\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0d9\\\",\\\"label\\\":\\\"Caret Left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 192 512\\\\\\\"><path d=\\\\\\\"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"192\\\",\\\"512\\\"],\\\"width\\\":192,\\\"height\\\":512,\\\"path\\\":\\\"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\\\"}}},\\\"caret-right\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"forward\\\",\\\"next\\\",\\\"triangle right\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0da\\\",\\\"label\\\":\\\"Caret Right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 192 512\\\\\\\"><path d=\\\\\\\"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"192\\\",\\\"512\\\"],\\\"width\\\":192,\\\"height\\\":512,\\\"path\\\":\\\"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\\\"}}},\\\"caret-square-down\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"caret-square-o-down\\\",\\\"dropdown\\\",\\\"menu\\\",\\\"more\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f150\\\",\\\"label\\\":\\\"Caret Square Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M125.1 208h197.8c10.7 0 16.1 13 8.5 20.5l-98.9 98.3c-4.7 4.7-12.2 4.7-16.9 0l-98.9-98.3c-7.7-7.5-2.3-20.5 8.4-20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\"}}},\\\"caret-square-left\\\":{\\\"changes\\\":[\\\"4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"back\\\",\\\"caret-square-o-left\\\",\\\"previous\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f191\\\",\\\"label\\\":\\\"Caret Square Left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M272 157.1v197.8c0 10.7-13 16.1-20.5 8.5l-98.3-98.9c-4.7-4.7-4.7-12.2 0-16.9l98.3-98.9c7.5-7.7 20.5-2.3 20.5 8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\"}}},\\\"caret-square-right\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"caret-square-o-right\\\",\\\"forward\\\",\\\"next\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f152\\\",\\\"label\\\":\\\"Caret Square Right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M176 354.9V157.1c0-10.7 13-16.1 20.5-8.5l98.3 98.9c4.7 4.7 4.7 12.2 0 16.9l-98.3 98.9c-7.5 7.7-20.5 2.3-20.5-8.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\"}}},\\\"caret-square-up\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"caret-square-o-up\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f151\\\",\\\"label\\\":\\\"Caret Square Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M322.9 304H125.1c-10.7 0-16.1-13-8.5-20.5l98.9-98.3c4.7-4.7 12.2-4.7 16.9 0l98.9 98.3c7.7 7.5 2.3 20.5-8.4 20.5zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\"}}},\\\"caret-up\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"triangle up\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0d8\\\",\\\"label\\\":\\\"Caret Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\\\"}}},\\\"cart-arrow-down\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"shopping\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f218\\\",\\\"label\\\":\\\"Shopping Cart Arrow Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\\\"}}},\\\"cart-plus\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"add\\\",\\\"shopping\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f217\\\",\\\"label\\\":\\\"Add to Shopping Cart\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\\\"}}},\\\"cc-amazon-pay\\\":{\\\"changes\\\":[\\\"5.0.2\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f42d\\\",\\\"label\\\":\\\"Amazon Pay Credit Card\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1513713060430,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z\\\"}}},\\\"cc-amex\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"amex\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1f3\\\",\\\"label\\\":\\\"American Express Credit Card\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M576 255.4c-37.9-.2-44.2-.9-54.5 5v-5c-45.3 0-53.5-1.7-64.9 5.2v-5.2h-78.2v5.1c-11.4-6.5-21.4-5.1-75.7-5.1v5.6c-6.3-3.7-14.5-5.6-24.3-5.6h-58c-3.5 3.8-12.5 13.7-15.7 17.2-12.7-14.1-10.5-11.6-15.5-17.2h-83.1v92.3h82c3.3-3.5 12.9-13.9 16.1-17.4 12.7 14.3 10.3 11.7 15.4 17.4h48.9c0-14.7.1-8.3.1-23 11.5.2 24.3-.2 34.3-6.2 0 13.9-.1 17.1-.1 29.2h39.6c0-18.5.1-7.4.1-25.3 6.2 0 7.7 0 9.4.1.1 1.3 0 0 0 25.2 152.8 0 145.9 1.1 156.7-4.5v4.5c34.8 0 54.8 2.2 67.5-6.1V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V228.3h26.6c4.2-10.1 2.2-5.3 6.4-15.3h19.2c4.2 10 2.2 5.2 6.4 15.3h52.9v-11.4c2.2 5 1.1 2.5 5.1 11.4h29.5c2.4-5.5 2.6-5.8 5.1-11.4v11.4h135.5v-25.1c6.4 0 8-.1 9.8.2 0 0-.2 10.9.1 24.8h66.5v-8.9c7.4 5.9 17.4 8.9 29.7 8.9h26.8c4.2-10.1 2.2-5.3 6.4-15.3h19c6.5 15 .2.5 6.6 15.3h52.8v-21.9c11.8 19.7 7.8 12.9 13.2 21.9h41.6v-92h-39.9v18.4c-12.2-20.2-6.3-10.4-11.2-18.4h-43.3v20.6c-6.2-14.6-4.6-10.8-8.8-20.6h-32.4c-.4 0-2.3.2-2.3-.3h-27.6c-12.8 0-23.1 3.2-30.7 9.3v-9.3h-39.9v5.3c-10.8-6.1-20.7-5.1-64.4-5.3-.1 0-11.6-.1-11.6 0h-103c-2.5 6.1-6.8 16.4-12.6 30-2.8-6-11-23.8-13.9-30h-46V157c-7.4-17.4-4.7-11-9-21.1H22.9c-3.4 7.9-13.7 32-23.1 53.9V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48v175.4zm-186.6-80.6c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm-19.9 130.9c9.2 3.3 11 9.5 11 18.4l-.1 13.8h-16.6l.1-11.5c0-11.8-3.8-13.8-14.8-13.8h-17.6l-.1 25.3h-16.6l.1-69.3h39.4c13 0 27.1 2.3 27.1 18.7-.1 7.6-4.2 15.3-11.9 18.4zm-6.3-15.4c0-6.4-5.6-7.4-10.7-7.4h-21v15.6h20.7c5.6 0 11-1.3 11-8.2zm181.7-7.1H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-99.2-.3v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5h38.5zm42.2 40.1h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-78.1-158.7c-17.4-.3-33.2-4.1-33.2 19.7 0 11.8 2.8 19.9 16.1 19.9h7.4l23.5-54.5h24.8l27.9 65.4v-65.4h25.3l29.1 48.1v-48.1h16.9v69H524l-31.2-51.9v51.9h-33.7l-6.6-15.3h-34.3l-6.4 15.3h-19.2c-22.8 0-33-11.8-33-34 0-23.3 10.5-35.3 34-35.3h16.1v15.2zm14.3 24.5h22.8l-11.2-27.6-11.6 27.6zm-72.6-39.6h-16.9v69.3h16.9v-69.3zm-38.1 37.3c9.5 3.3 11 9.2 11 18.4v13.5h-16.6c-.3-14.8 3.6-25.1-14.8-25.1h-18v25.1h-16.4v-69.3l39.1.3c13.3 0 27.4 2 27.4 18.4.1 8-4.3 15.7-11.7 18.7zm-6.7-15.3c0-6.4-5.6-7.4-10.7-7.4h-21v15.3h20.7c5.7 0 11-1.3 11-7.9zm-59.5-7.4v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5h38.9zm-84.6 54.7v-54.2l-24 54.2H124l-24-54.2v54.2H66.2l-6.4-15.3H25.3l-6.4 15.3H1l29.7-69.3h24.5l28.1 65.7v-65.7h27.1l21.7 47 19.7-47h27.6v69.3h-16.8zM53.9 188.8l-11.5-27.6-11.2 27.6h22.7zm253 102.5c0 27.9-30.4 23.3-49.3 23.3l-.1 23.3h-32.2l-20.4-23-21.3 23h-65.4l.1-69.3h66.5l20.5 22.8 21-22.8H279c15.6 0 27.9 5.4 27.9 22.7zm-112.7 11.8l-17.9-20.2h-41.7v12.5h36.3v14.1h-36.3v13.8h40.6l19-20.2zM241 276l-25.3 27.4 25.3 28.1V276zm48.3 15.3c0-6.1-4.6-8.4-10.2-8.4h-21.5v17.6h21.2c5.9 0 10.5-2.8 10.5-9.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M576 255.4c-37.9-.2-44.2-.9-54.5 5v-5c-45.3 0-53.5-1.7-64.9 5.2v-5.2h-78.2v5.1c-11.4-6.5-21.4-5.1-75.7-5.1v5.6c-6.3-3.7-14.5-5.6-24.3-5.6h-58c-3.5 3.8-12.5 13.7-15.7 17.2-12.7-14.1-10.5-11.6-15.5-17.2h-83.1v92.3h82c3.3-3.5 12.9-13.9 16.1-17.4 12.7 14.3 10.3 11.7 15.4 17.4h48.9c0-14.7.1-8.3.1-23 11.5.2 24.3-.2 34.3-6.2 0 13.9-.1 17.1-.1 29.2h39.6c0-18.5.1-7.4.1-25.3 6.2 0 7.7 0 9.4.1.1 1.3 0 0 0 25.2 152.8 0 145.9 1.1 156.7-4.5v4.5c34.8 0 54.8 2.2 67.5-6.1V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V228.3h26.6c4.2-10.1 2.2-5.3 6.4-15.3h19.2c4.2 10 2.2 5.2 6.4 15.3h52.9v-11.4c2.2 5 1.1 2.5 5.1 11.4h29.5c2.4-5.5 2.6-5.8 5.1-11.4v11.4h135.5v-25.1c6.4 0 8-.1 9.8.2 0 0-.2 10.9.1 24.8h66.5v-8.9c7.4 5.9 17.4 8.9 29.7 8.9h26.8c4.2-10.1 2.2-5.3 6.4-15.3h19c6.5 15 .2.5 6.6 15.3h52.8v-21.9c11.8 19.7 7.8 12.9 13.2 21.9h41.6v-92h-39.9v18.4c-12.2-20.2-6.3-10.4-11.2-18.4h-43.3v20.6c-6.2-14.6-4.6-10.8-8.8-20.6h-32.4c-.4 0-2.3.2-2.3-.3h-27.6c-12.8 0-23.1 3.2-30.7 9.3v-9.3h-39.9v5.3c-10.8-6.1-20.7-5.1-64.4-5.3-.1 0-11.6-.1-11.6 0h-103c-2.5 6.1-6.8 16.4-12.6 30-2.8-6-11-23.8-13.9-30h-46V157c-7.4-17.4-4.7-11-9-21.1H22.9c-3.4 7.9-13.7 32-23.1 53.9V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48v175.4zm-186.6-80.6c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm-19.9 130.9c9.2 3.3 11 9.5 11 18.4l-.1 13.8h-16.6l.1-11.5c0-11.8-3.8-13.8-14.8-13.8h-17.6l-.1 25.3h-16.6l.1-69.3h39.4c13 0 27.1 2.3 27.1 18.7-.1 7.6-4.2 15.3-11.9 18.4zm-6.3-15.4c0-6.4-5.6-7.4-10.7-7.4h-21v15.6h20.7c5.6 0 11-1.3 11-8.2zm181.7-7.1H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-99.2-.3v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5h38.5zm42.2 40.1h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-78.1-158.7c-17.4-.3-33.2-4.1-33.2 19.7 0 11.8 2.8 19.9 16.1 19.9h7.4l23.5-54.5h24.8l27.9 65.4v-65.4h25.3l29.1 48.1v-48.1h16.9v69H524l-31.2-51.9v51.9h-33.7l-6.6-15.3h-34.3l-6.4 15.3h-19.2c-22.8 0-33-11.8-33-34 0-23.3 10.5-35.3 34-35.3h16.1v15.2zm14.3 24.5h22.8l-11.2-27.6-11.6 27.6zm-72.6-39.6h-16.9v69.3h16.9v-69.3zm-38.1 37.3c9.5 3.3 11 9.2 11 18.4v13.5h-16.6c-.3-14.8 3.6-25.1-14.8-25.1h-18v25.1h-16.4v-69.3l39.1.3c13.3 0 27.4 2 27.4 18.4.1 8-4.3 15.7-11.7 18.7zm-6.7-15.3c0-6.4-5.6-7.4-10.7-7.4h-21v15.3h20.7c5.7 0 11-1.3 11-7.9zm-59.5-7.4v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5h38.9zm-84.6 54.7v-54.2l-24 54.2H124l-24-54.2v54.2H66.2l-6.4-15.3H25.3l-6.4 15.3H1l29.7-69.3h24.5l28.1 65.7v-65.7h27.1l21.7 47 19.7-47h27.6v69.3h-16.8zM53.9 188.8l-11.5-27.6-11.2 27.6h22.7zm253 102.5c0 27.9-30.4 23.3-49.3 23.3l-.1 23.3h-32.2l-20.4-23-21.3 23h-65.4l.1-69.3h66.5l20.5 22.8 21-22.8H279c15.6 0 27.9 5.4 27.9 22.7zm-112.7 11.8l-17.9-20.2h-41.7v12.5h36.3v14.1h-36.3v13.8h40.6l19-20.2zM241 276l-25.3 27.4 25.3 28.1V276zm48.3 15.3c0-6.1-4.6-8.4-10.2-8.4h-21.5v17.6h21.2c5.9 0 10.5-2.8 10.5-9.2z\\\"}}},\\\"cc-apple-pay\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f416\\\",\\\"label\\\":\\\"Apple Pay Credit Card\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1507669930671,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z\\\"}}},\\\"cc-diners-club\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f24c\\\",\\\"label\\\":\\\"Diner's Club Credit Card\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z\\\"}}},\\\"cc-discover\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1f2\\\",\\\"label\\\":\\\"Discover Credit Card\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M83 212.1c0 7.9-3.2 15.5-8.9 20.7-4.9 4.4-11.6 6.4-21.9 6.4H48V185h4.2c10.3 0 16.7 1.7 21.9 6.6 5.7 5 8.9 12.6 8.9 20.5zM504.8 184h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8 0-7.9-5.5-12.1-15.6-12.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM428 253h45.3v-13.8H444V217h28.3v-13.8H444V185h29.3v-14H428v82zm-86.2-82l35 84.2h8.6l35.5-84.2h-17.5l-22.2 55.2-21.9-55.2h-17.5zm-83 41.6c0 24.6 19.9 44.6 44.6 44.6 24.6 0 44.6-19.9 44.6-44.6 0-24.6-19.9-44.6-44.6-44.6-24.6 0-44.6 19.9-44.6 44.6zm-68-.5c0 32.5 33.6 52.5 63.3 38.2v-19c-19.3 19.3-46.8 5.8-46.8-19.2 0-23.7 26.7-39.1 46.8-19v-19c-30.2-15-63.3 6.8-63.3 38zm-33.9 28.3c-7.6 0-13.8-3.7-17.5-10.8l-10.3 9.9c17.8 26.1 56.6 18.2 56.6-11.3 0-13.1-5.4-19-23.6-25.6-9.6-3.4-12.3-5.9-12.3-10.3 0-8.7 14.5-14.1 24.9-2.5l8.4-10.8c-19.1-17.1-49.7-8.9-49.7 14.3 0 11.3 5.2 17.2 20.2 22.7 25.7 9.1 14.7 24.4 3.3 24.4zm-57.4-28.3c0-24.1-18-41.1-44.1-41.1H32v82h23.4c30.9 0 44.1-22.4 44.1-40.9zm23.4-41.1h-16v82h16v-82zM544 288c-33.3 20.8-226.4 124.4-416 160h401c8.2 0 15-6.8 15-15V288zm0-35l-25.9-34.5c12.1-2.5 18.7-10.6 18.7-23.2 0-28.5-30.3-24.4-52.9-24.4v82h16v-32.8h2.2l22.2 32.8H544z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M83 212.1c0 7.9-3.2 15.5-8.9 20.7-4.9 4.4-11.6 6.4-21.9 6.4H48V185h4.2c10.3 0 16.7 1.7 21.9 6.6 5.7 5 8.9 12.6 8.9 20.5zM504.8 184h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8 0-7.9-5.5-12.1-15.6-12.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM428 253h45.3v-13.8H444V217h28.3v-13.8H444V185h29.3v-14H428v82zm-86.2-82l35 84.2h8.6l35.5-84.2h-17.5l-22.2 55.2-21.9-55.2h-17.5zm-83 41.6c0 24.6 19.9 44.6 44.6 44.6 24.6 0 44.6-19.9 44.6-44.6 0-24.6-19.9-44.6-44.6-44.6-24.6 0-44.6 19.9-44.6 44.6zm-68-.5c0 32.5 33.6 52.5 63.3 38.2v-19c-19.3 19.3-46.8 5.8-46.8-19.2 0-23.7 26.7-39.1 46.8-19v-19c-30.2-15-63.3 6.8-63.3 38zm-33.9 28.3c-7.6 0-13.8-3.7-17.5-10.8l-10.3 9.9c17.8 26.1 56.6 18.2 56.6-11.3 0-13.1-5.4-19-23.6-25.6-9.6-3.4-12.3-5.9-12.3-10.3 0-8.7 14.5-14.1 24.9-2.5l8.4-10.8c-19.1-17.1-49.7-8.9-49.7 14.3 0 11.3 5.2 17.2 20.2 22.7 25.7 9.1 14.7 24.4 3.3 24.4zm-57.4-28.3c0-24.1-18-41.1-44.1-41.1H32v82h23.4c30.9 0 44.1-22.4 44.1-40.9zm23.4-41.1h-16v82h16v-82zM544 288c-33.3 20.8-226.4 124.4-416 160h401c8.2 0 15-6.8 15-15V288zm0-35l-25.9-34.5c12.1-2.5 18.7-10.6 18.7-23.2 0-28.5-30.3-24.4-52.9-24.4v82h16v-32.8h2.2l22.2 32.8H544z\\\"}}},\\\"cc-jcb\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f24b\\\",\\\"label\\\":\\\"JCB Credit Card\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z\\\"}}},\\\"cc-mastercard\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1f1\\\",\\\"label\\\":\\\"MasterCard Credit Card\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z\\\"}}},\\\"cc-paypal\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1f4\\\",\\\"label\\\":\\\"Paypal Credit Card\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z\\\"}}},\\\"cc-stripe\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1f5\\\",\\\"label\\\":\\\"Stripe Credit Card\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1510266191926,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M396.9 256.5c0 19.1-8.8 33.4-21.9 33.4-8.3 0-13.3-3-16.8-6.7l-.2-52.8c3.7-4.1 8.8-7 17-7 12.9-.1 21.9 14.5 21.9 33.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM122.2 281.1c0-42.3-54.3-34.7-54.3-50.7 0-5.5 4.6-7.7 12.1-7.7 10.8 0 24.5 3.3 35.3 9.1v-33.4c-11.8-4.7-23.5-6.5-35.3-6.5-28.8 0-48 15-48 40.2 0 39.3 54 32.9 54 49.9 0 6.6-5.7 8.7-13.6 8.7-11.8 0-26.9-4.9-38.9-11.3v33.9c13.2 5.7 26.6 8.1 38.8 8.1 29.6-.2 49.9-14.7 49.9-40.3zm68.9-86.9h-27v-30.8l-34.7 7.4-.2 113.9c0 21 15.8 36.5 36.9 36.5 11.6 0 20.2-2.1 24.9-4.7v-28.9c-4.5 1.8-27 8.3-27-12.6v-50.5h27v-30.3zm73.8 0c-4.7-1.7-21.3-4.8-29.6 10.5l-2.2-10.5h-30.7v124.5h35.5v-84.4c8.4-11 22.6-8.9 27.1-7.4v-32.7zm44.2 0h-35.7v124.5h35.7V194.2zm0-47.3l-35.7 7.6v28.9l35.7-7.6v-28.9zm122.7 108.8c0-41.3-23.5-63.8-48.4-63.8-13.9 0-22.9 6.6-27.8 11.1l-1.8-8.8h-31.3V360l35.5-7.5.1-40.2c5.1 3.7 12.7 9 25.1 9 25.4-.1 48.6-20.5 48.6-65.6zm112.2 1.2c0-36.4-17.6-65.1-51.3-65.1-33.8 0-54.3 28.7-54.3 64.9 0 42.8 24.2 64.5 58.8 64.5 17 0 29.7-3.9 39.4-9.2v-28.6c-9.7 4.9-20.8 7.9-34.9 7.9-13.8 0-26-4.9-27.6-21.5h69.5c.1-2 .4-9.4.4-12.9zm-51.6-36.1c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M396.9 256.5c0 19.1-8.8 33.4-21.9 33.4-8.3 0-13.3-3-16.8-6.7l-.2-52.8c3.7-4.1 8.8-7 17-7 12.9-.1 21.9 14.5 21.9 33.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM122.2 281.1c0-42.3-54.3-34.7-54.3-50.7 0-5.5 4.6-7.7 12.1-7.7 10.8 0 24.5 3.3 35.3 9.1v-33.4c-11.8-4.7-23.5-6.5-35.3-6.5-28.8 0-48 15-48 40.2 0 39.3 54 32.9 54 49.9 0 6.6-5.7 8.7-13.6 8.7-11.8 0-26.9-4.9-38.9-11.3v33.9c13.2 5.7 26.6 8.1 38.8 8.1 29.6-.2 49.9-14.7 49.9-40.3zm68.9-86.9h-27v-30.8l-34.7 7.4-.2 113.9c0 21 15.8 36.5 36.9 36.5 11.6 0 20.2-2.1 24.9-4.7v-28.9c-4.5 1.8-27 8.3-27-12.6v-50.5h27v-30.3zm73.8 0c-4.7-1.7-21.3-4.8-29.6 10.5l-2.2-10.5h-30.7v124.5h35.5v-84.4c8.4-11 22.6-8.9 27.1-7.4v-32.7zm44.2 0h-35.7v124.5h35.7V194.2zm0-47.3l-35.7 7.6v28.9l35.7-7.6v-28.9zm122.7 108.8c0-41.3-23.5-63.8-48.4-63.8-13.9 0-22.9 6.6-27.8 11.1l-1.8-8.8h-31.3V360l35.5-7.5.1-40.2c5.1 3.7 12.7 9 25.1 9 25.4-.1 48.6-20.5 48.6-65.6zm112.2 1.2c0-36.4-17.6-65.1-51.3-65.1-33.8 0-54.3 28.7-54.3 64.9 0 42.8 24.2 64.5 58.8 64.5 17 0 29.7-3.9 39.4-9.2v-28.6c-9.7 4.9-20.8 7.9-34.9 7.9-13.8 0-26-4.9-27.6-21.5h69.5c.1-2 .4-9.4.4-12.9zm-51.6-36.1c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7z\\\"}}},\\\"cc-visa\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1f0\\\",\\\"label\\\":\\\"Visa Credit Card\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1505492030000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z\\\"}}},\\\"centercode\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f380\\\",\\\"label\\\":\\\"Centercode\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z\\\"}}},\\\"certificate\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"badge\\\",\\\"star\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0a3\\\",\\\"label\\\":\\\"certificate\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\\\"}}},\\\"chalkboard\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"blackboard\\\",\\\"learning\\\",\\\"school\\\",\\\"teaching\\\",\\\"whiteboard\\\",\\\"writing\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f51b\\\",\\\"label\\\":\\\"Chalkboard\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154565,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\\\"}}},\\\"chalkboard-teacher\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"blackboard\\\",\\\"instructor\\\",\\\"learning\\\",\\\"professor\\\",\\\"school\\\",\\\"whiteboard\\\",\\\"writing\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f51c\\\",\\\"label\\\":\\\"Chalkboard Teacher\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154564,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\\\"}}},\\\"charging-station\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5e7\\\",\\\"label\\\":\\\"Charging Station\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831522,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\\\"}}},\\\"chart-area\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"analytics\\\",\\\"area-chart\\\",\\\"graph\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1fe\\\",\\\"label\\\":\\\"Area Chart\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\\\"}}},\\\"chart-bar\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"analytics\\\",\\\"bar-chart\\\",\\\"graph\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f080\\\",\\\"label\\\":\\\"Bar Chart\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zm-308-44v-72c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v72c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0V204c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v136c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v200c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0V108c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v232c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zm-308-44v-72c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v72c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0V204c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v136c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm-96 0V140c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v200c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0V108c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v232c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M500 400c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v324h452zm-356-60v-72c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v72c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12zm96 0V140c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v200c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12zm96 0V204c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v136c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12zm96 0V108c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v232c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M500 400c6.6 0 12 5.4 12 12v24c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h24c6.6 0 12 5.4 12 12v324h452zm-356-60v-72c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v72c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12zm96 0V140c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v200c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12zm96 0V204c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v136c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12zm96 0V108c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v232c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12z\\\"}}},\\\"chart-line\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"activity\\\",\\\"analytics\\\",\\\"dashboard\\\",\\\"graph\\\",\\\"line-chart\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f201\\\",\\\"label\\\":\\\"Line Chart\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM456 96H344c-21.4 0-32.1 25.9-17 41l32.9 32.9-72 72.9-55.6-55.6c-4.7-4.7-12.2-4.7-16.9 0L96.4 305c-4.7 4.6-4.8 12.2-.2 16.9l28.5 29.4c4.7 4.8 12.4 4.9 17.1.1l82.1-82.1 55.5 55.5c4.7 4.7 12.3 4.7 17 0l109.2-109.2L439 249c15.1 15.1 41 4.4 41-17V120c0-13.3-10.7-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM456 96H344c-21.4 0-32.1 25.9-17 41l32.9 32.9-72 72.9-55.6-55.6c-4.7-4.7-12.2-4.7-16.9 0L96.4 305c-4.7 4.6-4.8 12.2-.2 16.9l28.5 29.4c4.7 4.8 12.4 4.9 17.1.1l82.1-82.1 55.5 55.5c4.7 4.7 12.3 4.7 17 0l109.2-109.2L439 249c15.1 15.1 41 4.4 41-17V120c0-13.3-10.7-24-24-24z\\\"}}},\\\"chart-pie\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"analytics\\\",\\\"graph\\\",\\\"pie-chart\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f200\\\",\\\"label\\\":\\\"Pie Chart\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M288 12.3V240h227.7c6.9 0 12.3-5.8 12-12.7-6.4-122.4-104.5-220.6-227-227-6.9-.3-12.7 5.1-12.7 12zM552.7 288c6.9 0 12.3 5.8 12 12.7-2.8 53.2-23.2 105.6-61.2 147.8-4.6 5.1-12.6 5.4-17.5.5L325 288h227.7zM401 433c4.8 4.8 4.7 12.8-.4 17.3-42.6 38.4-99 61.7-160.8 61.7C107.6 511.9-.2 403.8 0 271.5.2 143.4 100.8 38.9 227.3 32.3c6.9-.4 12.7 5.1 12.7 12V272l161 161z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M288 12.3V240h227.7c6.9 0 12.3-5.8 12-12.7-6.4-122.4-104.5-220.6-227-227-6.9-.3-12.7 5.1-12.7 12zM552.7 288c6.9 0 12.3 5.8 12 12.7-2.8 53.2-23.2 105.6-61.2 147.8-4.6 5.1-12.6 5.4-17.5.5L325 288h227.7zM401 433c4.8 4.8 4.7 12.8-.4 17.3-42.6 38.4-99 61.7-160.8 61.7C107.6 511.9-.2 403.8 0 271.5.2 143.4 100.8 38.9 227.3 32.3c6.9-.4 12.7 5.1 12.7 12V272l161 161z\\\"}}},\\\"check\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"accept\\\",\\\"agree\\\",\\\"checkmark\\\",\\\"confirm\\\",\\\"correct\\\",\\\"done\\\",\\\"notice\\\",\\\"notification\\\",\\\"notify\\\",\\\"ok\\\",\\\"select\\\",\\\"success\\\",\\\"tick\\\",\\\"todo\\\",\\\"yes\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f00c\\\",\\\"label\\\":\\\"Check\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\\\"}}},\\\"check-circle\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"accept\\\",\\\"agree\\\",\\\"confirm\\\",\\\"correct\\\",\\\"done\\\",\\\"ok\\\",\\\"select\\\",\\\"success\\\",\\\"todo\\\",\\\"yes\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f058\\\",\\\"label\\\":\\\"Check Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821446,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z\\\"}}},\\\"check-double\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"accept\\\",\\\"agree\\\",\\\"checkmark\\\",\\\"confirm\\\",\\\"correct\\\",\\\"done\\\",\\\"notice\\\",\\\"notification\\\",\\\"notify\\\",\\\"ok\\\",\\\"select\\\",\\\"success\\\",\\\"tick\\\",\\\"todo\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f560\\\",\\\"label\\\":\\\"Check Double\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111651,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504.5 171.95l-36.2-36.41c-10-10.05-26.21-10.05-36.2 0L192 377.02 79.9 264.28c-10-10.06-26.21-10.06-36.2 0L7.5 300.69c-10 10.05-10 26.36 0 36.41l166.4 167.36c10 10.06 26.21 10.06 36.2 0l294.4-296.09c10-10.06 10-26.36 0-36.42zM166.57 282.71c6.84 7.02 18.18 7.02 25.21.18L403.85 72.62c7.02-6.84 7.02-18.18.18-25.21L362.08 5.29c-6.84-7.02-18.18-7.02-25.21-.18L179.71 161.19l-68.23-68.77c-6.84-7.02-18.18-7.02-25.2-.18l-42.13 41.77c-7.02 6.84-7.02 18.18-.18 25.2l122.6 123.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504.5 171.95l-36.2-36.41c-10-10.05-26.21-10.05-36.2 0L192 377.02 79.9 264.28c-10-10.06-26.21-10.06-36.2 0L7.5 300.69c-10 10.05-10 26.36 0 36.41l166.4 167.36c10 10.06 26.21 10.06 36.2 0l294.4-296.09c10-10.06 10-26.36 0-36.42zM166.57 282.71c6.84 7.02 18.18 7.02 25.21.18L403.85 72.62c7.02-6.84 7.02-18.18.18-25.21L362.08 5.29c-6.84-7.02-18.18-7.02-25.21-.18L179.71 161.19l-68.23-68.77c-6.84-7.02-18.18-7.02-25.2-.18l-42.13 41.77c-7.02 6.84-7.02 18.18-.18 25.2l122.6 123.5z\\\"}}},\\\"check-square\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"accept\\\",\\\"agree\\\",\\\"checkmark\\\",\\\"confirm\\\",\\\"correct\\\",\\\"done\\\",\\\"ok\\\",\\\"select\\\",\\\"success\\\",\\\"todo\\\",\\\"yes\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f14a\\\",\\\"label\\\":\\\"Check Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm0 400H48V80h352v352zm-35.864-241.724L191.547 361.48c-4.705 4.667-12.303 4.637-16.97-.068l-90.781-91.516c-4.667-4.705-4.637-12.303.069-16.971l22.719-22.536c4.705-4.667 12.303-4.637 16.97.069l59.792 60.277 141.352-140.216c4.705-4.667 12.303-4.637 16.97.068l22.536 22.718c4.667 4.706 4.637 12.304-.068 16.971z\\\"}}},\\\"chess\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f439\\\",\\\"label\\\":\\\"Chess\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527992,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M199.821 217.633a6 6 0 0 1 6 6l-.001 20.766a6 6 0 0 1-6 6h-25.805c0 31.715-2.153 96.201 17.398 153.229H64.597C84.54 345.452 82.02 279.245 82.02 250.399H56.183a6 6 0 0 1-6-6l.002-20.766a6 6 0 0 1 6-6h143.636zM41.554 115.088l34.58 95.071h103.734l34.572-95.072c2.846-7.826-2.95-16.101-11.278-16.101H152v-30.22h21.57a6 6 0 0 0 6-6V40.383a6 6 0 0 0-6-6h-28.367V6a6 6 0 0 0-6-6H116.82a6 6 0 0 0-6 6v28.383H82.421a6 6 0 0 0-6 6v22.383a6 6 0 0 0 6 6H104v30.219H52.831c-8.328.001-14.124 8.276-11.277 16.103zM222.678 445.17v-28.067a6 6 0 0 0-6-6H39.322a6 6 0 0 0-6 6v28.067l-22.148 14.164a6 6 0 0 0-2.767 5.055V506a6 6 0 0 0 6 6h227.187a6 6 0 0 0 6-6v-41.612a6 6 0 0 0-2.767-5.055l-22.149-14.163zm90.578-144.225l24.88 16.963c.09 18.124-.167 63.904-11.905 114.522h147.526c-11.713-50.475-11.969-96.324-11.882-114.537l24.859-16.949a3.856 3.856 0 0 0 1.684-3.187v-69.901a3.857 3.857 0 0 0-3.857-3.857h-27.655a3.857 3.857 0 0 0-3.857 3.857v31.514h-22.737v-31.514a3.857 3.857 0 0 0-3.858-3.857h-52.918a3.857 3.857 0 0 0-3.857 3.857v31.514h-22.737v-31.514a3.857 3.857 0 0 0-3.857-3.857H315.43a3.857 3.857 0 0 0-3.857 3.857v69.901a3.855 3.855 0 0 0 1.683 3.188zm71.585 51.906c0-8.372 6.787-15.158 15.159-15.158s15.158 6.787 15.158 15.158v30.318h-30.317v-30.318zM504.62 470.059l-13.664-10.639v-15.552a3.857 3.857 0 0 0-3.857-3.857H312.915a3.857 3.857 0 0 0-3.857 3.857v15.552l-13.677 10.639a3.857 3.857 0 0 0-1.488 3.044v35.039a3.857 3.857 0 0 0 3.857 3.857h204.5a3.857 3.857 0 0 0 3.857-3.857v-35.04a3.859 3.859 0 0 0-1.487-3.043z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M199.821 217.633a6 6 0 0 1 6 6l-.001 20.766a6 6 0 0 1-6 6h-25.805c0 31.715-2.153 96.201 17.398 153.229H64.597C84.54 345.452 82.02 279.245 82.02 250.399H56.183a6 6 0 0 1-6-6l.002-20.766a6 6 0 0 1 6-6h143.636zM41.554 115.088l34.58 95.071h103.734l34.572-95.072c2.846-7.826-2.95-16.101-11.278-16.101H152v-30.22h21.57a6 6 0 0 0 6-6V40.383a6 6 0 0 0-6-6h-28.367V6a6 6 0 0 0-6-6H116.82a6 6 0 0 0-6 6v28.383H82.421a6 6 0 0 0-6 6v22.383a6 6 0 0 0 6 6H104v30.219H52.831c-8.328.001-14.124 8.276-11.277 16.103zM222.678 445.17v-28.067a6 6 0 0 0-6-6H39.322a6 6 0 0 0-6 6v28.067l-22.148 14.164a6 6 0 0 0-2.767 5.055V506a6 6 0 0 0 6 6h227.187a6 6 0 0 0 6-6v-41.612a6 6 0 0 0-2.767-5.055l-22.149-14.163zm90.578-144.225l24.88 16.963c.09 18.124-.167 63.904-11.905 114.522h147.526c-11.713-50.475-11.969-96.324-11.882-114.537l24.859-16.949a3.856 3.856 0 0 0 1.684-3.187v-69.901a3.857 3.857 0 0 0-3.857-3.857h-27.655a3.857 3.857 0 0 0-3.857 3.857v31.514h-22.737v-31.514a3.857 3.857 0 0 0-3.858-3.857h-52.918a3.857 3.857 0 0 0-3.857 3.857v31.514h-22.737v-31.514a3.857 3.857 0 0 0-3.857-3.857H315.43a3.857 3.857 0 0 0-3.857 3.857v69.901a3.855 3.855 0 0 0 1.683 3.188zm71.585 51.906c0-8.372 6.787-15.158 15.159-15.158s15.158 6.787 15.158 15.158v30.318h-30.317v-30.318zM504.62 470.059l-13.664-10.639v-15.552a3.857 3.857 0 0 0-3.857-3.857H312.915a3.857 3.857 0 0 0-3.857 3.857v15.552l-13.677 10.639a3.857 3.857 0 0 0-1.488 3.044v35.039a3.857 3.857 0 0 0 3.857 3.857h204.5a3.857 3.857 0 0 0 3.857-3.857v-35.04a3.859 3.859 0 0 0-1.487-3.043z\\\"}}},\\\"chess-bishop\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f43a\\\",\\\"label\\\":\\\"Chess Bishop\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527988,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M123.158 77.881C107.369 72.53 96 57.597 96 40c0-22.091 17.909-40 40-40h47.796c22.091 0 40 17.909 40 40 0 17.541-11.295 32.434-27.005 37.829 23.993 16.657 48.577 46.839 68.703 82.05L144.929 280.443a6 6 0 0 0 0 8.485l14.142 14.142a6 6 0 0 0 8.485 0L280.9 189.726c17.758 38.297 29.371 79.443 29.371 114.273 0 53.786-22.897 75.788-58.446 86.033V448H68.174v-57.97C32.631 379.784 9.739 357.781 9.739 304c0-78.029 58.281-187.766 113.419-226.119zM320 500v-24c0-6.627-5.373-12-12-12H12c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M123.158 77.881C107.369 72.53 96 57.597 96 40c0-22.091 17.909-40 40-40h47.796c22.091 0 40 17.909 40 40 0 17.541-11.295 32.434-27.005 37.829 23.993 16.657 48.577 46.839 68.703 82.05L144.929 280.443a6 6 0 0 0 0 8.485l14.142 14.142a6 6 0 0 0 8.485 0L280.9 189.726c17.758 38.297 29.371 79.443 29.371 114.273 0 53.786-22.897 75.788-58.446 86.033V448H68.174v-57.97C32.631 379.784 9.739 357.781 9.739 304c0-78.029 58.281-187.766 113.419-226.119zM320 500v-24c0-6.627-5.373-12-12-12H12c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12z\\\"}}},\\\"chess-board\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f43c\\\",\\\"label\\\":\\\"Chess Board\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527988,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 256v64h-64v-64h64zm0-256h-64v64h64V0zm0 256h64v-64h-64v64zM384 0h-64v64h64V0zm0 512h64v-64h-64v64zm128-64v-64h-64v64h64zm-384 64h64v-64h-64v64zm0-512H64v64h64V0zm384 192v-64h-64v64h64zm0 128v-64h-64v64h64zM0 512h64v-64H0v64zM0 64v64h64V64H0zm0 128v64h64v-64H0zm0 128v64h64v-64H0zm256 192h64v-64h-64v64zm-64-128v64h64v-64h-64zm64-192v-64h-64v64h64zM64 384v64h64v-64H64zm64-128H64v64h64v-64zm256 128h64v-64h-64v64zM512 0h-64v64h64V0zM384 256h64v-64h-64v64zm0-192v64h64V64h-64zm-64 320v64h64v-64h-64zm-192-64v64h64v-64h-64zm128 0v64h64v-64h-64zm-64-128h-64v64h64v-64zm-64-64H64v64h64v-64zm192 192h64v-64h-64v64zM192 128V64h-64v64h64zm128 0V64h-64v64h64zm0 64h64v-64h-64v64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 256v64h-64v-64h64zm0-256h-64v64h64V0zm0 256h64v-64h-64v64zM384 0h-64v64h64V0zm0 512h64v-64h-64v64zm128-64v-64h-64v64h64zm-384 64h64v-64h-64v64zm0-512H64v64h64V0zm384 192v-64h-64v64h64zm0 128v-64h-64v64h64zM0 512h64v-64H0v64zM0 64v64h64V64H0zm0 128v64h64v-64H0zm0 128v64h64v-64H0zm256 192h64v-64h-64v64zm-64-128v64h64v-64h-64zm64-192v-64h-64v64h64zM64 384v64h64v-64H64zm64-128H64v64h64v-64zm256 128h64v-64h-64v64zM512 0h-64v64h64V0zM384 256h64v-64h-64v64zm0-192v64h64V64h-64zm-64 320v64h64v-64h-64zm-192-64v64h64v-64h-64zm128 0v64h64v-64h-64zm-64-128h-64v64h64v-64zm-64-64H64v64h64v-64zm192 192h64v-64h-64v64zM192 128V64h-64v64h64zm128 0V64h-64v64h64zm0 64h64v-64h-64v64z\\\"}}},\\\"chess-king\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f43f\\\",\\\"label\\\":\\\"Chess King\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527989,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M416 476v24c0 6.627-5.373 12-12 12H44c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12zm-8.033-324H248v-48h50a6 6 0 0 0 6-6V62a6 6 0 0 0-6-6h-50V6a6 6 0 0 0-6-6h-36a6 6 0 0 0-6 6v50h-50a6 6 0 0 0-6 6v36a6 6 0 0 0 6 6h50v48H40.033c-27.574 0-46.879 27.244-37.738 53.259L87.582 448h272.836l85.287-242.741C454.846 179.244 435.541 152 407.967 152z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M416 476v24c0 6.627-5.373 12-12 12H44c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12zm-8.033-324H248v-48h50a6 6 0 0 0 6-6V62a6 6 0 0 0-6-6h-50V6a6 6 0 0 0-6-6h-36a6 6 0 0 0-6 6v50h-50a6 6 0 0 0-6 6v36a6 6 0 0 0 6 6h50v48H40.033c-27.574 0-46.879 27.244-37.738 53.259L87.582 448h272.836l85.287-242.741C454.846 179.244 435.541 152 407.967 152z\\\"}}},\\\"chess-knight\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f441\\\",\\\"label\\\":\\\"Chess Knight\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527990,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M352 224v224H32v-46.557c0-30.302 17.12-58.003 44.223-71.554l57.243-28.622A48 48 0 0 0 160 258.334V208l-22.127 11.063a23.996 23.996 0 0 0-12.55 15.645l-11.835 47.338a12 12 0 0 1-7.185 8.231l-29.601 11.84a11.998 11.998 0 0 1-9.33-.176L7.126 275.167A12 12 0 0 1 0 264.201v-158.26c0-6.365 2.529-12.47 7.03-16.971L16 80 1.789 51.578A16.937 16.937 0 0 1 0 44c0-6.627 5.373-12 12-12h148c106.039 0 192 85.961 192 192zm20 240H12c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12zM52 128c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M352 224v224H32v-46.557c0-30.302 17.12-58.003 44.223-71.554l57.243-28.622A48 48 0 0 0 160 258.334V208l-22.127 11.063a23.996 23.996 0 0 0-12.55 15.645l-11.835 47.338a12 12 0 0 1-7.185 8.231l-29.601 11.84a11.998 11.998 0 0 1-9.33-.176L7.126 275.167A12 12 0 0 1 0 264.201v-158.26c0-6.365 2.529-12.47 7.03-16.971L16 80 1.789 51.578A16.937 16.937 0 0 1 0 44c0-6.627 5.373-12 12-12h148c106.039 0 192 85.961 192 192zm20 240H12c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12zM52 128c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\\\"}}},\\\"chess-pawn\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f443\\\",\\\"label\\\":\\\"Chess Pawn\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527990,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M264 448H56s60-42.743 60-176H84c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h40.209C95.721 210.56 76 181.588 76 148c0-46.392 37.608-84 84-84s84 37.608 84 84c0 33.588-19.721 62.56-48.209 76H236c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12h-32c0 133.257 60 176 60 176zm28 16H28c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h264c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M264 448H56s60-42.743 60-176H84c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h40.209C95.721 210.56 76 181.588 76 148c0-46.392 37.608-84 84-84s84 37.608 84 84c0 33.588-19.721 62.56-48.209 76H236c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12h-32c0 133.257 60 176 60 176zm28 16H28c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h264c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12z\\\"}}},\\\"chess-queen\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f445\\\",\\\"label\\\":\\\"Chess Queen\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527991,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M436 512H76c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12zM255.579 0c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zm204.568 154.634c-5.768-3.045-12.916-.932-16.082 4.77-8.616 15.516-22.747 37.801-44.065 37.801-28.714 0-30.625-19.804-31.686-57.542-.183-6.492-5.501-11.664-11.995-11.664h-41.006c-5.175 0-9.754 3.328-11.388 8.238-8.89 26.709-26.073 40.992-47.925 40.992s-39.034-14.283-47.925-40.992c-1.634-4.91-6.213-8.238-11.388-8.238h-41.005c-6.495 0-11.813 5.174-11.995 11.667-1.052 37.642-2.934 57.539-31.688 57.539-20.691 0-33.817-20.224-44.425-38.025-3.266-5.48-10.258-7.431-15.899-4.453l-39.179 20.679a12 12 0 0 0-5.51 15.145L112 448h288l105.014-257.448a12 12 0 0 0-5.51-15.145l-39.357-20.773z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M436 512H76c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12zM255.579 0c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zm204.568 154.634c-5.768-3.045-12.916-.932-16.082 4.77-8.616 15.516-22.747 37.801-44.065 37.801-28.714 0-30.625-19.804-31.686-57.542-.183-6.492-5.501-11.664-11.995-11.664h-41.006c-5.175 0-9.754 3.328-11.388 8.238-8.89 26.709-26.073 40.992-47.925 40.992s-39.034-14.283-47.925-40.992c-1.634-4.91-6.213-8.238-11.388-8.238h-41.005c-6.495 0-11.813 5.174-11.995 11.667-1.052 37.642-2.934 57.539-31.688 57.539-20.691 0-33.817-20.224-44.425-38.025-3.266-5.48-10.258-7.431-15.899-4.453l-39.179 20.679a12 12 0 0 0-5.51 15.145L112 448h288l105.014-257.448a12 12 0 0 0-5.51-15.145l-39.357-20.773z\\\"}}},\\\"chess-rook\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f447\\\",\\\"label\\\":\\\"Chess Rook\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527992,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M81.241 215.027C80.957 258.92 77.411 348.076 48 448h287.982c-29.4-99.604-32.936-188.912-33.221-232.975l45.418-42.312a11.998 11.998 0 0 0 3.82-8.78V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v44h-48V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v44H96V44c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v119.932c0 3.33 1.384 6.51 3.82 8.78l45.421 42.315zM160 256c0-17.673 14.327-32 32-32 17.673 0 32 14.327 32 32v64.004h-64V256zm224 220v24c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M81.241 215.027C80.957 258.92 77.411 348.076 48 448h287.982c-29.4-99.604-32.936-188.912-33.221-232.975l45.418-42.312a11.998 11.998 0 0 0 3.82-8.78V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v44h-48V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v44H96V44c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v119.932c0 3.33 1.384 6.51 3.82 8.78l45.421 42.315zM160 256c0-17.673 14.327-32 32-32 17.673 0 32 14.327 32 32v64.004h-64V256zm224 220v24c0 6.627-5.373 12-12 12H12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12z\\\"}}},\\\"chevron-circle-down\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"dropdown\\\",\\\"menu\\\",\\\"more\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f13a\\\",\\\"label\\\":\\\"Chevron Circle Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\\\"}}},\\\"chevron-circle-left\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"back\\\",\\\"previous\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f137\\\",\\\"label\\\":\\\"Chevron Circle Left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\\\"}}},\\\"chevron-circle-right\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"forward\\\",\\\"next\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f138\\\",\\\"label\\\":\\\"Chevron Circle Right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\\\"}}},\\\"chevron-circle-up\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f139\\\",\\\"label\\\":\\\"Chevron Circle Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\\\"}}},\\\"chevron-down\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f078\\\",\\\"label\\\":\\\"chevron-down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\\\"}}},\\\"chevron-left\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"back\\\",\\\"bracket\\\",\\\"previous\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f053\\\",\\\"label\\\":\\\"chevron-left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\\\"}}},\\\"chevron-right\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bracket\\\",\\\"forward\\\",\\\"next\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f054\\\",\\\"label\\\":\\\"chevron-right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\\\"}}},\\\"chevron-up\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f077\\\",\\\"label\\\":\\\"chevron-up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\\\"}}},\\\"child\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1ae\\\",\\\"label\\\":\\\"Child\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\\\"}}},\\\"chrome\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"browser\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f268\\\",\\\"label\\\":\\\"Chrome\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z\\\"}}},\\\"church\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"building\\\",\\\"community\\\",\\\"religion\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f51d\\\",\\\"label\\\":\\\"Church\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154565,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\\\"}}},\\\"circle\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"circle-thin\\\",\\\"dot\\\",\\\"notification\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f111\\\",\\\"label\\\":\\\"Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z\\\"}}},\\\"circle-notch\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"circle-o-notch\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1ce\\\",\\\"label\\\":\\\"Circle Notched\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\\\"}}},\\\"clipboard\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"paste\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f328\\\",\\\"label\\\":\\\"Clipboard\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M336 64h-80c0-35.29-28.71-64-64-64s-64 28.71-64 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h42v36c0 6.627 5.373 12 12 12h168c6.627 0 12-5.373 12-12v-36h42a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zM192 40c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M336 64h-80c0-35.29-28.71-64-64-64s-64 28.71-64 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h42v36c0 6.627 5.373 12 12 12h168c6.627 0 12-5.373 12-12v-36h42a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zM192 40c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24\\\"}}},\\\"clipboard-check\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"accept\\\",\\\"agree\\\",\\\"confirm\\\",\\\"done\\\",\\\"ok\\\",\\\"select\\\",\\\"success\\\",\\\"todo\\\",\\\"yes\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f46c\\\",\\\"label\\\":\\\"Clipboard Check\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821446,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\\\"}}},\\\"clipboard-list\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"checklist\\\",\\\"completed\\\",\\\"done\\\",\\\"finished\\\",\\\"intinerary\\\",\\\"ol\\\",\\\"schedule\\\",\\\"todo\\\",\\\"ul\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f46d\\\",\\\"label\\\":\\\"Clipboard List\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821446,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\\\"}}},\\\"clock\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"date\\\",\\\"late\\\",\\\"schedule\\\",\\\"timer\\\",\\\"timestamp\\\",\\\"watch\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f017\\\",\\\"label\\\":\\\"Clock\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm57.1 350.1L224.9 294c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v137.7l63.5 46.2c5.4 3.9 6.5 11.4 2.6 16.8l-28.2 38.8c-3.9 5.3-11.4 6.5-16.8 2.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm57.1 350.1L224.9 294c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v137.7l63.5 46.2c5.4 3.9 6.5 11.4 2.6 16.8l-28.2 38.8c-3.9 5.3-11.4 6.5-16.8 2.6z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z\\\"}}},\\\"clone\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"copy\\\",\\\"duplicate\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f24d\\\",\\\"label\\\":\\\"Clone\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 0H144c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h320c26.51 0 48-21.49 48-48v-48h48c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zM362 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h42v224c0 26.51 21.49 48 48 48h224v42a6 6 0 0 1-6 6zm96-96H150a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h308a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6z\\\"}}},\\\"closed-captioning\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cc\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f20a\\\",\\\"label\\\":\\\"Closed Captioning\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zm-6 336H54c-3.3 0-6-2.7-6-6V118c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v276c0 3.3-2.7 6-6 6zm-211.1-85.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7zm190.4 0c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.9-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 220.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6 2.8-2.5 7.1-2.1 9.2.9l19.6 27.7z\\\"}}},\\\"cloud\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"save\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0c2\\\",\\\"label\\\":\\\"Cloud\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365067,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\\\"}}},\\\"cloud-download-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cloud-download\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f381\\\",\\\"label\\\":\\\"Alternate Cloud Download\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365065,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\\\"}}},\\\"cloud-upload-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cloud-upload\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f382\\\",\\\"label\\\":\\\"Alternate Cloud Upload\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365066,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\\\"}}},\\\"cloudscale\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f383\\\",\\\"label\\\":\\\"cloudscale.ch\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z\\\"}}},\\\"cloudsmith\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f384\\\",\\\"label\\\":\\\"Cloudsmith\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 332 512\\\\\\\"><path d=\\\\\\\"M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"332\\\",\\\"512\\\"],\\\"width\\\":332,\\\"height\\\":512,\\\"path\\\":\\\"M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z\\\"}}},\\\"cloudversify\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f385\\\",\\\"label\\\":\\\"cloudversify\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 616 512\\\\\\\"><path d=\\\\\\\"M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"616\\\",\\\"512\\\"],\\\"width\\\":616,\\\"height\\\":512,\\\"path\\\":\\\"M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z\\\"}}},\\\"cocktail\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"alcohol\\\",\\\"drink\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f561\\\",\\\"label\\\":\\\"Cocktail\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111652,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\\\"}}},\\\"code\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"brackets\\\",\\\"html\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f121\\\",\\\"label\\\":\\\"Code\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\\\"}}},\\\"code-branch\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"branch\\\",\\\"code-fork\\\",\\\"fork\\\",\\\"git\\\",\\\"github\\\",\\\"rebase\\\",\\\"svn\\\",\\\"vcs\\\",\\\"version\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f126\\\",\\\"label\\\":\\\"Code Branch\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502809851000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\\\"}}},\\\"codepen\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1cb\\\",\\\"label\\\":\\\"Codepen\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z\\\"}}},\\\"codiepie\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f284\\\",\\\"label\\\":\\\"Codie Pie\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 472 512\\\\\\\"><path d=\\\\\\\"M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"472\\\",\\\"512\\\"],\\\"width\\\":472,\\\"height\\\":512,\\\"path\\\":\\\"M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z\\\"}}},\\\"coffee\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"breakfast\\\",\\\"cafe\\\",\\\"drink\\\",\\\"morning\\\",\\\"mug\\\",\\\"tea\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0f4\\\",\\\"label\\\":\\\"Coffee\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\\\"}}},\\\"cog\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"settings\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f013\\\",\\\"label\\\":\\\"cog\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M444.788 291.1l42.616 24.599c4.867 2.809 7.126 8.618 5.459 13.985-11.07 35.642-29.97 67.842-54.689 94.586a12.016 12.016 0 0 1-14.832 2.254l-42.584-24.595a191.577 191.577 0 0 1-60.759 35.13v49.182a12.01 12.01 0 0 1-9.377 11.718c-34.956 7.85-72.499 8.256-109.219.007-5.49-1.233-9.403-6.096-9.403-11.723v-49.184a191.555 191.555 0 0 1-60.759-35.13l-42.584 24.595a12.016 12.016 0 0 1-14.832-2.254c-24.718-26.744-43.619-58.944-54.689-94.586-1.667-5.366.592-11.175 5.459-13.985L67.212 291.1a193.48 193.48 0 0 1 0-70.199l-42.616-24.599c-4.867-2.809-7.126-8.618-5.459-13.985 11.07-35.642 29.97-67.842 54.689-94.586a12.016 12.016 0 0 1 14.832-2.254l42.584 24.595a191.577 191.577 0 0 1 60.759-35.13V25.759a12.01 12.01 0 0 1 9.377-11.718c34.956-7.85 72.499-8.256 109.219-.007 5.49 1.233 9.403 6.096 9.403 11.723v49.184a191.555 191.555 0 0 1 60.759 35.13l42.584-24.595a12.016 12.016 0 0 1 14.832 2.254c24.718 26.744 43.619 58.944 54.689 94.586 1.667 5.366-.592 11.175-5.459 13.985L444.788 220.9a193.485 193.485 0 0 1 0 70.2zM336 256c0-44.112-35.888-80-80-80s-80 35.888-80 80 35.888 80 80 80 80-35.888 80-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M444.788 291.1l42.616 24.599c4.867 2.809 7.126 8.618 5.459 13.985-11.07 35.642-29.97 67.842-54.689 94.586a12.016 12.016 0 0 1-14.832 2.254l-42.584-24.595a191.577 191.577 0 0 1-60.759 35.13v49.182a12.01 12.01 0 0 1-9.377 11.718c-34.956 7.85-72.499 8.256-109.219.007-5.49-1.233-9.403-6.096-9.403-11.723v-49.184a191.555 191.555 0 0 1-60.759-35.13l-42.584 24.595a12.016 12.016 0 0 1-14.832-2.254c-24.718-26.744-43.619-58.944-54.689-94.586-1.667-5.366.592-11.175 5.459-13.985L67.212 291.1a193.48 193.48 0 0 1 0-70.199l-42.616-24.599c-4.867-2.809-7.126-8.618-5.459-13.985 11.07-35.642 29.97-67.842 54.689-94.586a12.016 12.016 0 0 1 14.832-2.254l42.584 24.595a191.577 191.577 0 0 1 60.759-35.13V25.759a12.01 12.01 0 0 1 9.377-11.718c34.956-7.85 72.499-8.256 109.219-.007 5.49 1.233 9.403 6.096 9.403 11.723v49.184a191.555 191.555 0 0 1 60.759 35.13l42.584-24.595a12.016 12.016 0 0 1 14.832 2.254c24.718 26.744 43.619 58.944 54.689 94.586 1.667 5.366-.592 11.175-5.459 13.985L444.788 220.9a193.485 193.485 0 0 1 0 70.2zM336 256c0-44.112-35.888-80-80-80s-80 35.888-80 80 35.888 80 80 80 80-35.888 80-80z\\\"}}},\\\"cogs\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"gears\\\",\\\"settings\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f085\\\",\\\"label\\\":\\\"cogs\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\\\"}}},\\\"coins\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f51e\\\",\\\"label\\\":\\\"Coins\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154565,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\\\"}}},\\\"columns\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"dashboard\\\",\\\"panes\\\",\\\"split\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0db\\\",\\\"label\\\":\\\"Columns\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\\\"}}},\\\"comment\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bubble\\\",\\\"chat\\\",\\\"conversation\\\",\\\"feedback\\\",\\\"message\\\",\\\"note\\\",\\\"notification\\\",\\\"sms\\\",\\\"speech\\\",\\\"texting\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f075\\\",\\\"label\\\":\\\"comment\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406015,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1522083405998,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\\\"}}},\\\"comment-alt\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bubble\\\",\\\"chat\\\",\\\"commenting\\\",\\\"commenting\\\",\\\"conversation\\\",\\\"feedback\\\",\\\"message\\\",\\\"note\\\",\\\"notification\\\",\\\"sms\\\",\\\"speech\\\",\\\"texting\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f27a\\\",\\\"label\\\":\\\"Alternate Comment\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406013,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1522083405995,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 7.1 5.8 12 12 12 2.4 0 4.9-.7 7.1-2.4L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm16 352c0 8.8-7.2 16-16 16H288l-12.8 9.6L208 428v-60H64c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h384c8.8 0 16 7.2 16 16v288z\\\"}}},\\\"comment-dots\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f4ad\\\",\\\"label\\\":\\\"Comment Dots\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406013,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1522083405995,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z\\\"}}},\\\"comment-slash\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4b3\\\",\\\"label\\\":\\\"Comment Slash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406015,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\\\"}}},\\\"comments\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bubble\\\",\\\"chat\\\",\\\"conversation\\\",\\\"feedback\\\",\\\"message\\\",\\\"note\\\",\\\"notification\\\",\\\"sms\\\",\\\"speech\\\",\\\"texting\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f086\\\",\\\"label\\\":\\\"comments\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406016,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1522083405999,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z\\\"}}},\\\"compact-disc\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bluray\\\",\\\"cd\\\",\\\"disc\\\",\\\"media\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f51f\\\",\\\"label\\\":\\\"Compact Disc\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154565,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\\\"}}},\\\"compass\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"directory\\\",\\\"location\\\",\\\"menu\\\",\\\"safari\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f14e\\\",\\\"label\\\":\\\"Compass\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831523,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1532362831483,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M347.94 129.86L203.6 195.83a31.938 31.938 0 0 0-15.77 15.77l-65.97 144.34c-7.61 16.65 9.54 33.81 26.2 26.2l144.34-65.97a31.938 31.938 0 0 0 15.77-15.77l65.97-144.34c7.61-16.66-9.54-33.81-26.2-26.2zm-77.36 148.72c-12.47 12.47-32.69 12.47-45.16 0-12.47-12.47-12.47-32.69 0-45.16 12.47-12.47 32.69-12.47 45.16 0 12.47 12.47 12.47 32.69 0 45.16zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\\\"}}},\\\"compress\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"collapse\\\",\\\"combine\\\",\\\"contract\\\",\\\"merge\\\",\\\"smaller\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f066\\\",\\\"label\\\":\\\"Compress\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\\\"}}},\\\"concierge-bell\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"attention\\\",\\\"hotel\\\",\\\"service\\\",\\\"support\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f562\\\",\\\"label\\\":\\\"Concierge Bell\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111652,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\\\"}}},\\\"connectdevelop\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f20e\\\",\\\"label\\\":\\\"Connect Develop\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z\\\"}}},\\\"contao\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f26d\\\",\\\"label\\\":\\\"Contao\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z\\\"}}},\\\"cookie\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"baked good\\\",\\\"chips\\\",\\\"food\\\",\\\"snack\\\",\\\"sweet\\\",\\\"treat\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f563\\\",\\\"label\\\":\\\"Cookie\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111653,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"cookie-bite\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"baked good\\\",\\\"bitten\\\",\\\"chips\\\",\\\"eating\\\",\\\"food\\\",\\\"snack\\\",\\\"sweet\\\",\\\"treat\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f564\\\",\\\"label\\\":\\\"Cookie Bite\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111653,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"copy\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"clone\\\",\\\"duplicate\\\",\\\"file\\\",\\\"files-o\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0c5\\\",\\\"label\\\":\\\"Copy\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\\\"}}},\\\"copyright\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1f9\\\",\\\"label\\\":\\\"Copyright\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm107.351-101.064c-9.614 9.712-45.53 41.396-104.065 41.396-82.43 0-140.484-61.425-140.484-141.567 0-79.152 60.275-139.401 139.762-139.401 55.531 0 88.738 26.62 97.593 34.779a11.965 11.965 0 0 1 1.936 15.322l-18.155 28.113c-3.841 5.95-11.966 7.282-17.499 2.921-8.595-6.776-31.814-22.538-61.708-22.538-48.303 0-77.916 35.33-77.916 80.082 0 41.589 26.888 83.692 78.277 83.692 32.657 0 56.843-19.039 65.726-27.225 5.27-4.857 13.596-4.039 17.82 1.738l19.865 27.17a11.947 11.947 0 0 1-1.152 15.518z\\\"}}},\\\"couch\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4b8\\\",\\\"label\\\":\\\"Couch\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821447,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\\\"}}},\\\"cpanel\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f388\\\",\\\"label\\\":\\\"cPanel\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M52.9 213.7h40l-6.2 23.6c-1.9 6.5-7.4 10.9-14.3 10.9H53.8c-24.9 0-24.7 37.4 0 37.4h11.3c4.2 0 7.6 3.9 6.4 8.3L64.4 320H52c-33.5 0-59-31.4-50.3-65.2 7.3-27 28.3-41.1 51.2-41.1M73.1 320L108 189.9c1.8-6.4 7.2-10.9 14.3-10.9h37c24.1 0 45.4 16.4 51 41.2 6.6 29.1-14.5 65.3-51.7 65.3h-32l6.4-23.8c1.8-6.2 7.3-10.8 14.3-10.8h10.3c12.4 0 20.8-11.7 18.3-22.6-2.1-9.2-9.9-14.8-18.3-14.8h-19.8L112 309.2c-1.9 6.2-7.4 10.7-14.2 10.7l-24.7.1m220.6-69.4c.3-1 1.9-5.3-2.1-5.3h-57.5c-9.7 0-16.6-8.9-14.2-18.5l3.5-13.4h77.9c18.8 0 33.3 17.6 28.5 36.8l-14 51.8c-2.8 10.6-12.2 17.8-23.4 17.8l-57.5-.2c-42.9 0-38.5-63.8.7-63.8H284l-3.5 13.2c-1.9 6.2-7.4 10.8-14.2 10.8h-21.6c-5.3 0-5.3 7.9 0 7.9h34.9c4.6 0 5.1-3.9 5.5-5.3l8.6-31.8m103.1-36.9c34.4 0 59.3 32.3 50.3 65.4l-8.8 33.1c-1.2 4.9-5.7 7.8-10.3 7.8h-19.1c-4.5 0-7.6-4-6.4-8.3l10.6-40c3.3-11.6-5.6-23.4-18.1-23.4h-19.8l-17.2 64c-1.2 4.8-5.6 7.8-10.4 7.8h-18.9c-4.2 0-7.6-3.9-6.4-8.3l26.2-98h48.3M498 251.6l-8 30c-.9 3.3 1.5 6.7 5.1 6.7h73.3l-5.7 21c-1.9 6.2-7.4 10.7-14.2 10.7h-66.7c-20 0-33.3-19-28.3-36.7l10.8-40c4.8-17.6 20.7-29.6 38.6-29.6h47.3c19 0 33.2 17.7 28.3 36.8l-3.2 12c-2.9 11-12.7 17.6-23.2 17.6h-53.4l3.5-13c1.6-6.2 7.2-10.8 14.2-10.8H538c2 0 3.3-1 3.9-3l.7-2.6c.7-2.7-1.3-5.1-3.9-5.1h-32.9c-4.1 0-6.9 2.1-7.8 6zm70.2 68.4l35.6-133.1c1.2-4.7 5.5-7.9 10.4-7.9h18.9c4.5 0 7.7 4 6.5 8.3l-26.5 98.2c-5.1 20.7-24.2 34.5-44.9 34.5\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M52.9 213.7h40l-6.2 23.6c-1.9 6.5-7.4 10.9-14.3 10.9H53.8c-24.9 0-24.7 37.4 0 37.4h11.3c4.2 0 7.6 3.9 6.4 8.3L64.4 320H52c-33.5 0-59-31.4-50.3-65.2 7.3-27 28.3-41.1 51.2-41.1M73.1 320L108 189.9c1.8-6.4 7.2-10.9 14.3-10.9h37c24.1 0 45.4 16.4 51 41.2 6.6 29.1-14.5 65.3-51.7 65.3h-32l6.4-23.8c1.8-6.2 7.3-10.8 14.3-10.8h10.3c12.4 0 20.8-11.7 18.3-22.6-2.1-9.2-9.9-14.8-18.3-14.8h-19.8L112 309.2c-1.9 6.2-7.4 10.7-14.2 10.7l-24.7.1m220.6-69.4c.3-1 1.9-5.3-2.1-5.3h-57.5c-9.7 0-16.6-8.9-14.2-18.5l3.5-13.4h77.9c18.8 0 33.3 17.6 28.5 36.8l-14 51.8c-2.8 10.6-12.2 17.8-23.4 17.8l-57.5-.2c-42.9 0-38.5-63.8.7-63.8H284l-3.5 13.2c-1.9 6.2-7.4 10.8-14.2 10.8h-21.6c-5.3 0-5.3 7.9 0 7.9h34.9c4.6 0 5.1-3.9 5.5-5.3l8.6-31.8m103.1-36.9c34.4 0 59.3 32.3 50.3 65.4l-8.8 33.1c-1.2 4.9-5.7 7.8-10.3 7.8h-19.1c-4.5 0-7.6-4-6.4-8.3l10.6-40c3.3-11.6-5.6-23.4-18.1-23.4h-19.8l-17.2 64c-1.2 4.8-5.6 7.8-10.4 7.8h-18.9c-4.2 0-7.6-3.9-6.4-8.3l26.2-98h48.3M498 251.6l-8 30c-.9 3.3 1.5 6.7 5.1 6.7h73.3l-5.7 21c-1.9 6.2-7.4 10.7-14.2 10.7h-66.7c-20 0-33.3-19-28.3-36.7l10.8-40c4.8-17.6 20.7-29.6 38.6-29.6h47.3c19 0 33.2 17.7 28.3 36.8l-3.2 12c-2.9 11-12.7 17.6-23.2 17.6h-53.4l3.5-13c1.6-6.2 7.2-10.8 14.2-10.8H538c2 0 3.3-1 3.9-3l.7-2.6c.7-2.7-1.3-5.1-3.9-5.1h-32.9c-4.1 0-6.9 2.1-7.8 6zm70.2 68.4l35.6-133.1c1.2-4.7 5.5-7.9 10.4-7.9h18.9c4.5 0 7.7 4 6.5 8.3l-26.5 98.2c-5.1 20.7-24.2 34.5-44.9 34.5\\\"}}},\\\"creative-commons\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\",\\\"5.0.11\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f25e\\\",\\\"label\\\":\\\"Creative Commons\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529514897189,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z\\\"}}},\\\"creative-commons-by\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4e7\\\",\\\"label\\\":\\\"Creative Commons Attribution\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365016,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z\\\"}}},\\\"creative-commons-nc\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4e8\\\",\\\"label\\\":\\\"Creative Commons Noncommercial\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365017,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z\\\"}}},\\\"creative-commons-nc-eu\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4e9\\\",\\\"label\\\":\\\"Creative Commons Noncommercial (Euro Sign)\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365016,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z\\\"}}},\\\"creative-commons-nc-jp\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4ea\\\",\\\"label\\\":\\\"Creative Commons Noncommercial (Yen Sign)\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365016,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z\\\"}}},\\\"creative-commons-nd\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4eb\\\",\\\"label\\\":\\\"Creative Commons No Derivative Works\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365017,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z\\\"}}},\\\"creative-commons-pd\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4ec\\\",\\\"label\\\":\\\"Creative Commons Public Domain\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365017,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z\\\"}}},\\\"creative-commons-pd-alt\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4ed\\\",\\\"label\\\":\\\"Creative Commons Public Domain Alternate\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365017,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM135.5 323.3V186h68.2c33.7 0 50.5 15.5 50.5 46.5 0 9-3 46.5-57.1 46.5h-27v44.3h-34.6zm34.1-111.6v41.6h29.2c27.9 0 30-41.6-.9-41.6h-28.3zm93.9 111.6V186h53.2c21.4 0 70 5.2 70 68.6 0 63.5-48.6 68.6-70 68.6h-53.2zm34.1-108.5v79.7h19.9c24 0 34.5-15.3 34.5-39.9 0-42-31.2-39.9-35-39.9l-19.4.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM135.5 323.3V186h68.2c33.7 0 50.5 15.5 50.5 46.5 0 9-3 46.5-57.1 46.5h-27v44.3h-34.6zm34.1-111.6v41.6h29.2c27.9 0 30-41.6-.9-41.6h-28.3zm93.9 111.6V186h53.2c21.4 0 70 5.2 70 68.6 0 63.5-48.6 68.6-70 68.6h-53.2zm34.1-108.5v79.7h19.9c24 0 34.5-15.3 34.5-39.9 0-42-31.2-39.9-35-39.9l-19.4.1z\\\"}}},\\\"creative-commons-remix\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4ee\\\",\\\"label\\\":\\\"Creative Commons Remix\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365017,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z\\\"}}},\\\"creative-commons-sa\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4ef\\\",\\\"label\\\":\\\"Creative Commons Share Alike\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365018,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z\\\"}}},\\\"creative-commons-sampling\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4f0\\\",\\\"label\\\":\\\"Creative Commons Sampling\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365018,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z\\\"}}},\\\"creative-commons-sampling-plus\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4f1\\\",\\\"label\\\":\\\"Creative Commons Sampling +\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365018,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z\\\"}}},\\\"creative-commons-share\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4f2\\\",\\\"label\\\":\\\"Creative Commons Share\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365018,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z\\\"}}},\\\"credit-card\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"buy\\\",\\\"checkout\\\",\\\"credit-card-alt\\\",\\\"debit\\\",\\\"money\\\",\\\"payment\\\",\\\"purchase\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f09d\\\",\\\"label\\\":\\\"Credit Card\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M527.9 32H48.1C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48.1 48h479.8c26.6 0 48.1-21.5 48.1-48V80c0-26.5-21.5-48-48.1-48zM54.1 80h467.8c3.3 0 6 2.7 6 6v42H48.1V86c0-3.3 2.7-6 6-6zm467.8 352H54.1c-3.3 0-6-2.7-6-6V256h479.8v170c0 3.3-2.7 6-6 6zM192 332v40c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12zm192 0v40c0 6.6-5.4 12-12 12H236c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12z\\\"}}},\\\"crop\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"design\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f125\\\",\\\"label\\\":\\\"crop\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111654,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\\\"}}},\\\"crop-alt\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f565\\\",\\\"label\\\":\\\"Alternate Crop\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111653,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\\\"}}},\\\"crosshairs\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"gpd\\\",\\\"picker\\\",\\\"position\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f05b\\\",\\\"label\\\":\\\"Crosshairs\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\\\"}}},\\\"crow\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bird\\\",\\\"bullfrog\\\",\\\"toad\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f520\\\",\\\"label\\\":\\\"Crow\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154565,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\\\"}}},\\\"crown\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f521\\\",\\\"label\\\":\\\"Crown\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154566,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\\\"}}},\\\"css3\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"code\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f13c\\\",\\\"label\\\":\\\"CSS 3 Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1505400127000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z\\\"}}},\\\"css3-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f38b\\\",\\\"label\\\":\\\"Alternate CSS3 Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1505400127000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z\\\"}}},\\\"cube\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"package\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1b2\\\",\\\"label\\\":\\\"Cube\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\\\"}}},\\\"cubes\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"packages\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1b3\\\",\\\"label\\\":\\\"Cubes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\\\"}}},\\\"cut\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"scissors\\\",\\\"scissors\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0c4\\\",\\\"label\\\":\\\"Cut\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111654,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\\\"}}},\\\"cuttlefish\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f38c\\\",\\\"label\\\":\\\"Cuttlefish\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 440 512\\\\\\\"><path d=\\\\\\\"M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"440\\\",\\\"512\\\"],\\\"width\\\":440,\\\"height\\\":512,\\\"path\\\":\\\"M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z\\\"}}},\\\"d-and-d\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f38d\\\",\\\"label\\\":\\\"Dungeons & Dragons\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z\\\"}}},\\\"dashcube\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f210\\\",\\\"label\\\":\\\"DashCube\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426581996,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z\\\"}}},\\\"database\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1c0\\\",\\\"label\\\":\\\"Database\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\\\"}}},\\\"deaf\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2a4\\\",\\\"label\\\":\\\"Deaf\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\\\"}}},\\\"delicious\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1a5\\\",\\\"label\\\":\\\"Delicious Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192v176z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192v176z\\\"}}},\\\"deploydog\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f38e\\\",\\\"label\\\":\\\"deploy.dog\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z\\\"}}},\\\"deskpro\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f38f\\\",\\\"label\\\":\\\"Deskpro\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821382,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 480 512\\\\\\\"><path d=\\\\\\\"M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"480\\\",\\\"512\\\"],\\\"width\\\":480,\\\"height\\\":512,\\\"path\\\":\\\"M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z\\\"}}},\\\"desktop\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"computer\\\",\\\"cpu\\\",\\\"demo\\\",\\\"desktop\\\",\\\"device\\\",\\\"machine\\\",\\\"monitor\\\",\\\"pc\\\",\\\"screen\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f108\\\",\\\"label\\\":\\\"Desktop\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502809851000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\\\"}}},\\\"deviantart\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1bd\\\",\\\"label\\\":\\\"deviantART\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z\\\"}}},\\\"diagnoses\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f470\\\",\\\"label\\\":\\\"Diagnoses\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821447,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\\\"}}},\\\"dice\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"chance\\\",\\\"gambling\\\",\\\"game\\\",\\\"roll\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f522\\\",\\\"label\\\":\\\"Dice\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154567,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\\\"}}},\\\"dice-five\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"chance\\\",\\\"gambling\\\",\\\"game\\\",\\\"roll\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f523\\\",\\\"label\\\":\\\"Dice Five\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154566,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"dice-four\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"chance\\\",\\\"gambling\\\",\\\"game\\\",\\\"roll\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f524\\\",\\\"label\\\":\\\"Dice Four\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154566,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"dice-one\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"chance\\\",\\\"gambling\\\",\\\"game\\\",\\\"roll\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f525\\\",\\\"label\\\":\\\"Dice One\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154566,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"dice-six\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"chance\\\",\\\"gambling\\\",\\\"game\\\",\\\"roll\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f526\\\",\\\"label\\\":\\\"Dice Six\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111654,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"dice-three\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"chance\\\",\\\"gambling\\\",\\\"game\\\",\\\"roll\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f527\\\",\\\"label\\\":\\\"Dice Three\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154567,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"dice-two\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"chance\\\",\\\"gambling\\\",\\\"game\\\",\\\"roll\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f528\\\",\\\"label\\\":\\\"Dice Two\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154567,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"digg\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1a6\\\",\\\"label\\\":\\\"Digg Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z\\\"}}},\\\"digital-ocean\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f391\\\",\\\"label\\\":\\\"Digital Ocean\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 504v-96.1c101.8 0 180.8-100.9 141.7-208-14.3-39.6-46.1-71.4-85.8-85.7-107.1-38.8-208.1 39.9-208.1 141.7H8C8 93.7 164.9-32.8 335 20.3c74.2 23.3 133.6 82.4 156.6 156.6C544.8 347.2 418.6 504 256 504zm.3-191.4h-95.6v95.6h95.6v-95.6zm-95.6 95.6H87v73.6h73.7v-73.6zM87 346.6H25.4v61.6H87v-61.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 504v-96.1c101.8 0 180.8-100.9 141.7-208-14.3-39.6-46.1-71.4-85.8-85.7-107.1-38.8-208.1 39.9-208.1 141.7H8C8 93.7 164.9-32.8 335 20.3c74.2 23.3 133.6 82.4 156.6 156.6C544.8 347.2 418.6 504 256 504zm.3-191.4h-95.6v95.6h95.6v-95.6zm-95.6 95.6H87v73.6h73.7v-73.6zM87 346.6H25.4v61.6H87v-61.6z\\\"}}},\\\"digital-tachograph\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f566\\\",\\\"label\\\":\\\"Digital Tachograph\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111655,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\\\"}}},\\\"directions\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5eb\\\",\\\"label\\\":\\\"Directions\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831524,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\\\"}}},\\\"discord\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f392\\\",\\\"label\\\":\\\"Discord\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1511282001102,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M297.216 243.2c0 15.616-11.52 28.416-26.112 28.416-14.336 0-26.112-12.8-26.112-28.416s11.52-28.416 26.112-28.416c14.592 0 26.112 12.8 26.112 28.416zm-119.552-28.416c-14.592 0-26.112 12.8-26.112 28.416s11.776 28.416 26.112 28.416c14.592 0 26.112-12.8 26.112-28.416.256-15.616-11.52-28.416-26.112-28.416zM448 52.736V512c-64.494-56.994-43.868-38.128-118.784-107.776l13.568 47.36H52.48C23.552 451.584 0 428.032 0 398.848V52.736C0 23.552 23.552 0 52.48 0h343.04C424.448 0 448 23.552 448 52.736zm-72.96 242.688c0-82.432-36.864-149.248-36.864-149.248-36.864-27.648-71.936-26.88-71.936-26.88l-3.584 4.096c43.52 13.312 63.744 32.512 63.744 32.512-60.811-33.329-132.244-33.335-191.232-7.424-9.472 4.352-15.104 7.424-15.104 7.424s21.248-20.224 67.328-33.536l-2.56-3.072s-35.072-.768-71.936 26.88c0 0-36.864 66.816-36.864 149.248 0 0 21.504 37.12 78.08 38.912 0 0 9.472-11.52 17.152-21.248-32.512-9.728-44.8-30.208-44.8-30.208 3.766 2.636 9.976 6.053 10.496 6.4 43.21 24.198 104.588 32.126 159.744 8.96 8.96-3.328 18.944-8.192 29.44-15.104 0 0-12.8 20.992-46.336 30.464 7.68 9.728 16.896 20.736 16.896 20.736 56.576-1.792 78.336-38.912 78.336-38.912z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M297.216 243.2c0 15.616-11.52 28.416-26.112 28.416-14.336 0-26.112-12.8-26.112-28.416s11.52-28.416 26.112-28.416c14.592 0 26.112 12.8 26.112 28.416zm-119.552-28.416c-14.592 0-26.112 12.8-26.112 28.416s11.776 28.416 26.112 28.416c14.592 0 26.112-12.8 26.112-28.416.256-15.616-11.52-28.416-26.112-28.416zM448 52.736V512c-64.494-56.994-43.868-38.128-118.784-107.776l13.568 47.36H52.48C23.552 451.584 0 428.032 0 398.848V52.736C0 23.552 23.552 0 52.48 0h343.04C424.448 0 448 23.552 448 52.736zm-72.96 242.688c0-82.432-36.864-149.248-36.864-149.248-36.864-27.648-71.936-26.88-71.936-26.88l-3.584 4.096c43.52 13.312 63.744 32.512 63.744 32.512-60.811-33.329-132.244-33.335-191.232-7.424-9.472 4.352-15.104 7.424-15.104 7.424s21.248-20.224 67.328-33.536l-2.56-3.072s-35.072-.768-71.936 26.88c0 0-36.864 66.816-36.864 149.248 0 0 21.504 37.12 78.08 38.912 0 0 9.472-11.52 17.152-21.248-32.512-9.728-44.8-30.208-44.8-30.208 3.766 2.636 9.976 6.053 10.496 6.4 43.21 24.198 104.588 32.126 159.744 8.96 8.96-3.328 18.944-8.192 29.44-15.104 0 0-12.8 20.992-46.336 30.464 7.68 9.728 16.896 20.736 16.896 20.736 56.576-1.792 78.336-38.912 78.336-38.912z\\\"}}},\\\"discourse\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f393\\\",\\\"label\\\":\\\"Discourse\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821383,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z\\\"}}},\\\"divide\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f529\\\",\\\"label\\\":\\\"Divide\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154567,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\\\"}}},\\\"dizzy\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"dazed\\\",\\\"disapprove\\\",\\\"emoticon\\\",\\\"face\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f567\\\",\\\"label\\\":\\\"Dizzy Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111656,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111613,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-33.8-217.9c7.8-7.8 7.8-20.5 0-28.3L196.3 192l17.9-17.9c7.8-7.8 7.8-20.5 0-28.3-7.8-7.8-20.5-7.8-28.3 0L168 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.9 7.7 20.5 7.7 28.4-.2zm160-92.2c-7.8-7.8-20.5-7.8-28.3 0L328 163.7l-17.8-17.8c-7.8-7.8-20.5-7.8-28.3 0-7.8 7.8-7.8 20.5 0 28.3l17.9 17.9-17.9 17.9c-7.8 7.8-7.8 20.5 0 28.3 7.8 7.8 20.5 7.8 28.3 0l17.8-17.8 17.8 17.8c7.8 7.8 20.5 7.8 28.3 0 7.8-7.8 7.8-20.5 0-28.3l-17.8-18 17.9-17.9c7.7-7.8 7.7-20.4 0-28.2zM248 272c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z\\\"}}},\\\"dna\\\":{\\\"changes\\\":[\\\"5.0.7\\\",\\\"5.0.10\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"double helix\\\",\\\"helix\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f471\\\",\\\"label\\\":\\\"DNA\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1523653480526,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\\\"}}},\\\"dochub\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f394\\\",\\\"label\\\":\\\"DocHub\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 416 512\\\\\\\"><path d=\\\\\\\"M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"416\\\",\\\"512\\\"],\\\"width\\\":416,\\\"height\\\":512,\\\"path\\\":\\\"M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z\\\"}}},\\\"docker\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f395\\\",\\\"label\\\":\\\"Docker\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z\\\"}}},\\\"dollar-sign\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"$\\\",\\\"dollar-sign\\\",\\\"money\\\",\\\"price\\\",\\\"usd\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f155\\\",\\\"label\\\":\\\"Dollar Sign\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406016,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 288 512\\\\\\\"><path d=\\\\\\\"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"288\\\",\\\"512\\\"],\\\"width\\\":288,\\\"height\\\":512,\\\"path\\\":\\\"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\\\"}}},\\\"dolly\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f472\\\",\\\"label\\\":\\\"Dolly\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821449,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\\\"}}},\\\"dolly-flatbed\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f474\\\",\\\"label\\\":\\\"Dolly Flatbed\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821448,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\\\"}}},\\\"donate\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"generosity\\\",\\\"give\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4b9\\\",\\\"label\\\":\\\"Donate\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406017,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\\\"}}},\\\"door-closed\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f52a\\\",\\\"label\\\":\\\"Door Closed\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154567,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\\\"}}},\\\"door-open\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f52b\\\",\\\"label\\\":\\\"Door Open\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154568,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\\\"}}},\\\"dot-circle\\\":{\\\"changes\\\":[\\\"4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bullseye\\\",\\\"notification\\\",\\\"target\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f192\\\",\\\"label\\\":\\\"Dot Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z\\\"}}},\\\"dove\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4ba\\\",\\\"label\\\":\\\"Dove\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406017,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\\\"}}},\\\"download\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"import\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f019\\\",\\\"label\\\":\\\"Download\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\\\"}}},\\\"draft2digital\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f396\\\",\\\"label\\\":\\\"Draft2digital\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 480 512\\\\\\\"><path d=\\\\\\\"M369.9 425.4V371l47.1 27.2-47.1 27.2zM82.4 380.6c25.5-27.3 97.7-104.7 150.9-170 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7H82.4zm51.8-219.2c0 12.4-10 22.4-22.4 22.4-12.4 0-22.4-10-22.4-22.4 0-12.4 10-22.4 22.4-22.4 12.4 0 22.4 10.1 22.4 22.4M336 315.9v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480l144-81.9-144-82.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"480\\\",\\\"512\\\"],\\\"width\\\":480,\\\"height\\\":512,\\\"path\\\":\\\"M369.9 425.4V371l47.1 27.2-47.1 27.2zM82.4 380.6c25.5-27.3 97.7-104.7 150.9-170 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7H82.4zm51.8-219.2c0 12.4-10 22.4-22.4 22.4-12.4 0-22.4-10-22.4-22.4 0-12.4 10-22.4 22.4-22.4 12.4 0 22.4 10.1 22.4 22.4M336 315.9v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480l144-81.9-144-82.2z\\\"}}},\\\"drafting-compass\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"mechanical drawing\\\",\\\"plot\\\",\\\"plotting\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f568\\\",\\\"label\\\":\\\"Drafting Compass\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111656,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\\\"}}},\\\"draw-polygon\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5ee\\\",\\\"label\\\":\\\"Draw Polygon\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831525,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\\\"}}},\\\"dribbble\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f17d\\\",\\\"label\\\":\\\"Dribbble\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821383,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z\\\"}}},\\\"dribbble-square\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f397\\\",\\\"label\\\":\\\"Dribbble Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z\\\"}}},\\\"dropbox\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\",\\\"5.0.1\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f16b\\\",\\\"label\\\":\\\"Dropbox\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1512509227136,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 528 512\\\\\\\"><path d=\\\\\\\"M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"528\\\",\\\"512\\\"],\\\"width\\\":528,\\\"height\\\":512,\\\"path\\\":\\\"M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z\\\"}}},\\\"drum\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"instrument\\\",\\\"music\\\",\\\"percussion\\\",\\\"snare\\\",\\\"sound\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f569\\\",\\\"label\\\":\\\"Drum\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111657,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M458.08 120.88l102.39-61.43c15.16-9.09 20.06-28.75 10.97-43.91C562.34.39 542.7-4.53 527.53 4.57l-160.69 96.41A629.32 629.32 0 0 0 288 96C128.94 96 0 153.31 0 224v160.83c0 30.46 24.03 58.4 64 80.37v-96.37c0-17.6 14.4-32 32-32s32 14.4 32 32v122.41c37.4 11.13 81 18.44 128 20.75V400.84c0-17.6 14.4-32 32-32s32 14.4 32 32V512c47-2.31 90.6-9.62 128-20.75V368.84c0-17.6 14.4-32 32-32s32 14.4 32 32v96.37c39.97-21.97 64-49.91 64-80.37V224.01c-.01-42.38-46.54-79.84-117.92-103.13zM288 304c-132.55 0-240-35.82-240-80s107.45-80 240-80c2.34 0 4.62.1 6.94.12l-87.41 52.44c-15.16 9.09-20.06 28.75-10.97 43.91 9.56 15.93 29.51 19.61 43.91 10.97l162.71-97.62C477.55 167.41 528 193.74 528 224.01 528 268.19 420.54 304 288 304z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M458.08 120.88l102.39-61.43c15.16-9.09 20.06-28.75 10.97-43.91C562.34.39 542.7-4.53 527.53 4.57l-160.69 96.41A629.32 629.32 0 0 0 288 96C128.94 96 0 153.31 0 224v160.83c0 30.46 24.03 58.4 64 80.37v-96.37c0-17.6 14.4-32 32-32s32 14.4 32 32v122.41c37.4 11.13 81 18.44 128 20.75V400.84c0-17.6 14.4-32 32-32s32 14.4 32 32V512c47-2.31 90.6-9.62 128-20.75V368.84c0-17.6 14.4-32 32-32s32 14.4 32 32v96.37c39.97-21.97 64-49.91 64-80.37V224.01c-.01-42.38-46.54-79.84-117.92-103.13zM288 304c-132.55 0-240-35.82-240-80s107.45-80 240-80c2.34 0 4.62.1 6.94.12l-87.41 52.44c-15.16 9.09-20.06 28.75-10.97 43.91 9.56 15.93 29.51 19.61 43.91 10.97l162.71-97.62C477.55 167.41 528 193.74 528 224.01 528 268.19 420.54 304 288 304z\\\"}}},\\\"drum-steelpan\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"calypso\\\",\\\"instrument\\\",\\\"music\\\",\\\"percussion\\\",\\\"reggae\\\",\\\"snare\\\",\\\"sound\\\",\\\"steel\\\",\\\"tropical\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f56a\\\",\\\"label\\\":\\\"Drum Steelpan\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111656,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\\\"}}},\\\"drupal\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1a9\\\",\\\"label\\\":\\\"Drupal Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z\\\"}}},\\\"dumbbell\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"exercise\\\",\\\"gym\\\",\\\"strength\\\",\\\"weight\\\",\\\"weight-lifting\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f44b\\\",\\\"label\\\":\\\"Dumbbell\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527995,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\\\"}}},\\\"dyalog\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f399\\\",\\\"label\\\":\\\"Dyalog\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 416 512\\\\\\\"><path d=\\\\\\\"M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"416\\\",\\\"512\\\"],\\\"width\\\":416,\\\"height\\\":512,\\\"path\\\":\\\"M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z\\\"}}},\\\"earlybirds\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f39a\\\",\\\"label\\\":\\\"Earlybirds\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 480 512\\\\\\\"><path d=\\\\\\\"M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"480\\\",\\\"512\\\"],\\\"width\\\":480,\\\"height\\\":512,\\\"path\\\":\\\"M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z\\\"}}},\\\"ebay\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4f4\\\",\\\"label\\\":\\\"eBay\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365019,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M405.2 263.8c-29.1.9-47.2 6.2-47.2 25.3 0 12.4 9.9 25.8 35 25.8 33.7 0 51.6-18.4 51.6-48.4v-3.3c-11.8 0-26.3.1-39.4.6m71.5 39.7c0 9.3.3 18.6 1 26.8h-29.8c-.8-6.9-1.1-13.6-1.1-20.2-16.1 19.8-35.3 25.5-61.9 25.5-39.5 0-60.6-20.9-60.6-45 0-35 28.8-47.3 78.6-48.4 13.7-.3 29-.4 41.7-.4v-3.4c0-23.4-15-33-41-33-19.3 0-33.6 8-35 21.8h-33.7c3.6-34.4 39.7-43.1 71.5-43.1 38.1 0 70.3 13.5 70.3 53.8v65.6zm-349-56.8c-2.3-54.7-87.5-56.6-94.4 0h94.4zm-95 21.4c3.5 58.3 79.2 57.4 91.2 21.6H157c-6.4 34.4-43 46.1-74.4 46.1-57.2 0-82.5-31.5-82.5-74 0-46.8 26.2-77.6 83-77.6 45.3 0 78.4 23.7 78.4 75.4v8.5H32.7zm211 45.7c29.8 0 50.2-21.5 50.2-53.8 0-32.4-20.4-53.8-50.2-53.8-29.6 0-50.2 21.4-50.2 53.8 0 32.3 20.6 53.8 50.2 53.8m-82.2-186h32.1v80.6c15.7-18.7 37.4-24.2 58.7-24.2 35.7 0 75.4 24.1 75.4 76.2 0 43.6-31.5 75.4-76 75.4-23.3 0-45.1-8.3-58.7-24.9 0 6.6-.4 13.2-1.1 19.5h-31.5c.5-10.2 1.1-22.8 1.1-33.1V127.8zM640 189.5l-99.2 194.8h-35.9l28.5-54.1-74.6-140.7h37.5l54.9 109.9L606 189.5h34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M405.2 263.8c-29.1.9-47.2 6.2-47.2 25.3 0 12.4 9.9 25.8 35 25.8 33.7 0 51.6-18.4 51.6-48.4v-3.3c-11.8 0-26.3.1-39.4.6m71.5 39.7c0 9.3.3 18.6 1 26.8h-29.8c-.8-6.9-1.1-13.6-1.1-20.2-16.1 19.8-35.3 25.5-61.9 25.5-39.5 0-60.6-20.9-60.6-45 0-35 28.8-47.3 78.6-48.4 13.7-.3 29-.4 41.7-.4v-3.4c0-23.4-15-33-41-33-19.3 0-33.6 8-35 21.8h-33.7c3.6-34.4 39.7-43.1 71.5-43.1 38.1 0 70.3 13.5 70.3 53.8v65.6zm-349-56.8c-2.3-54.7-87.5-56.6-94.4 0h94.4zm-95 21.4c3.5 58.3 79.2 57.4 91.2 21.6H157c-6.4 34.4-43 46.1-74.4 46.1-57.2 0-82.5-31.5-82.5-74 0-46.8 26.2-77.6 83-77.6 45.3 0 78.4 23.7 78.4 75.4v8.5H32.7zm211 45.7c29.8 0 50.2-21.5 50.2-53.8 0-32.4-20.4-53.8-50.2-53.8-29.6 0-50.2 21.4-50.2 53.8 0 32.3 20.6 53.8 50.2 53.8m-82.2-186h32.1v80.6c15.7-18.7 37.4-24.2 58.7-24.2 35.7 0 75.4 24.1 75.4 76.2 0 43.6-31.5 75.4-76 75.4-23.3 0-45.1-8.3-58.7-24.9 0 6.6-.4 13.2-1.1 19.5h-31.5c.5-10.2 1.1-22.8 1.1-33.1V127.8zM640 189.5l-99.2 194.8h-35.9l28.5-54.1-74.6-140.7h37.5l54.9 109.9L606 189.5h34z\\\"}}},\\\"edge\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"browser\\\",\\\"ie\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f282\\\",\\\"label\\\":\\\"Edge Browser\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M25.714 228.163c.111-.162.23-.323.342-.485-.021.162-.045.323-.065.485h-.277zm460.572 15.508c0-44.032-7.754-84.465-28.801-122.405C416.498 47.879 343.912 8.001 258.893 8.001 118.962 7.724 40.617 113.214 26.056 227.679c42.429-61.312 117.073-121.376 220.375-124.966 0 0 109.666 0 99.419 104.957H169.997c6.369-37.386 18.554-58.986 34.339-78.926-75.048 34.893-121.85 96.096-120.742 188.315.83 71.448 50.124 144.836 120.743 171.976 83.357 31.847 192.776 7.2 240.132-21.324V363.307c-80.864 56.494-270.871 60.925-272.255-67.572h314.073v-52.064z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M25.714 228.163c.111-.162.23-.323.342-.485-.021.162-.045.323-.065.485h-.277zm460.572 15.508c0-44.032-7.754-84.465-28.801-122.405C416.498 47.879 343.912 8.001 258.893 8.001 118.962 7.724 40.617 113.214 26.056 227.679c42.429-61.312 117.073-121.376 220.375-124.966 0 0 109.666 0 99.419 104.957H169.997c6.369-37.386 18.554-58.986 34.339-78.926-75.048 34.893-121.85 96.096-120.742 188.315.83 71.448 50.124 144.836 120.743 171.976 83.357 31.847 192.776 7.2 240.132-21.324V363.307c-80.864 56.494-270.871 60.925-272.255-67.572h314.073v-52.064z\\\"}}},\\\"edit\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"edit\\\",\\\"pen\\\",\\\"pencil\\\",\\\"update\\\",\\\"write\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f044\\\",\\\"label\\\":\\\"Edit\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M402.3 344.9l32-32c5-5 13.7-1.5 13.7 5.7V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h273.5c7.1 0 10.7 8.6 5.7 13.7l-32 32c-1.5 1.5-3.5 2.3-5.7 2.3H48v352h352V350.5c0-2.1.8-4.1 2.3-5.6zm156.6-201.8L296.3 405.7l-90.4 10c-26.2 2.9-48.5-19.2-45.6-45.6l10-90.4L432.9 17.1c22.9-22.9 59.9-22.9 82.7 0l43.2 43.2c22.9 22.9 22.9 60 .1 82.8zM460.1 174L402 115.9 216.2 301.8l-7.3 65.3 65.3-7.3L460.1 174zm64.8-79.7l-43.2-43.2c-4.1-4.1-10.8-4.1-14.8 0L436 82l58.1 58.1 30.9-30.9c4-4.2 4-10.8-.1-14.9z\\\"}}},\\\"eject\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f052\\\",\\\"label\\\":\\\"eject\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\\\"}}},\\\"elementor\\\":{\\\"changes\\\":[\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f430\\\",\\\"label\\\":\\\"Elementor\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821383,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z\\\"}}},\\\"ellipsis-h\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"dots\\\",\\\"drag\\\",\\\"kebab\\\",\\\"list\\\",\\\"menu\\\",\\\"nav\\\",\\\"navigation\\\",\\\"ol\\\",\\\"reorder\\\",\\\"settings\\\",\\\"ul\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f141\\\",\\\"label\\\":\\\"Horizontal Ellipsis\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\\\"}}},\\\"ellipsis-v\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"dots\\\",\\\"drag\\\",\\\"kebab\\\",\\\"list\\\",\\\"menu\\\",\\\"nav\\\",\\\"navigation\\\",\\\"ol\\\",\\\"reorder\\\",\\\"settings\\\",\\\"ul\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f142\\\",\\\"label\\\":\\\"Vertical Ellipsis\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 192 512\\\\\\\"><path d=\\\\\\\"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"192\\\",\\\"512\\\"],\\\"width\\\":192,\\\"height\\\":512,\\\"path\\\":\\\"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\\\"}}},\\\"ello\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5f1\\\",\\\"label\\\":\\\"Ello\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1532362831424,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z\\\"}}},\\\"ember\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f423\\\",\\\"label\\\":\\\"Ember\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426581997,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1c-1.9-43.8-44.2-27.6-49-24-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-18.3-11-32.8 12.1-32.8 12.1s54.5-60.7 42.5-112c-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5c-17.2-.8-28.5 18.8-28.5 18.8s-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7c11.6 2.1 16.4 1 36.5-47.9 11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2c6.7-23.6 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7c8.6 15.6 30.9 5.3 30.9 5.3s15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6c12.4 5.1 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1c-1.9-43.8-44.2-27.6-49-24-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-18.3-11-32.8 12.1-32.8 12.1s54.5-60.7 42.5-112c-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5c-17.2-.8-28.5 18.8-28.5 18.8s-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7c11.6 2.1 16.4 1 36.5-47.9 11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2c6.7-23.6 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7c8.6 15.6 30.9 5.3 30.9 5.3s15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6c12.4 5.1 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z\\\"}}},\\\"empire\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1d1\\\",\\\"label\\\":\\\"Galactic Empire\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z\\\"}}},\\\"envelope\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"e-mail\\\",\\\"email\\\",\\\"letter\\\",\\\"mail\\\",\\\"message\\\",\\\"notification\\\",\\\"support\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0e0\\\",\\\"label\\\":\\\"Envelope\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49-16.841 13.247-50.201 45.072-73.413 44.701-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112h416zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646 21.857 17.205 60.134 55.186 103.062 54.955 42.717.231 80.509-37.199 103.053-54.947 49.528-38.783 82.032-64.401 104.947-82.653V400H48z\\\"}}},\\\"envelope-open\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"e-mail\\\",\\\"email\\\",\\\"letter\\\",\\\"mail\\\",\\\"message\\\",\\\"notification\\\",\\\"support\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2b6\\\",\\\"label\\\":\\\"Envelope Open\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M494.586 164.516c-4.697-3.883-111.723-89.95-135.251-108.657C337.231 38.191 299.437 0 256 0c-43.205 0-80.636 37.717-103.335 55.859-24.463 19.45-131.07 105.195-135.15 108.549A48.004 48.004 0 0 0 0 201.485V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V201.509a48 48 0 0 0-17.414-36.993zM464 458a6 6 0 0 1-6 6H54a6 6 0 0 1-6-6V204.347c0-1.813.816-3.526 2.226-4.665 15.87-12.814 108.793-87.554 132.364-106.293C200.755 78.88 232.398 48 256 48c23.693 0 55.857 31.369 73.41 45.389 23.573 18.741 116.503 93.493 132.366 106.316a5.99 5.99 0 0 1 2.224 4.663V458zm-31.991-187.704c4.249 5.159 3.465 12.795-1.745 16.981-28.975 23.283-59.274 47.597-70.929 56.863C336.636 362.283 299.205 400 256 400c-43.452 0-81.287-38.237-103.335-55.86-11.279-8.967-41.744-33.413-70.927-56.865-5.21-4.187-5.993-11.822-1.745-16.981l15.258-18.528c4.178-5.073 11.657-5.843 16.779-1.726 28.618 23.001 58.566 47.035 70.56 56.571C200.143 320.631 232.307 352 256 352c23.602 0 55.246-30.88 73.41-45.389 11.994-9.535 41.944-33.57 70.563-56.568 5.122-4.116 12.601-3.346 16.778 1.727l15.258 18.526z\\\"}}},\\\"envelope-square\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"e-mail\\\",\\\"email\\\",\\\"letter\\\",\\\"mail\\\",\\\"message\\\",\\\"notification\\\",\\\"support\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f199\\\",\\\"label\\\":\\\"Envelope Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\\\"}}},\\\"envira\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"leaf\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f299\\\",\\\"label\\\":\\\"Envira Gallery\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z\\\"}}},\\\"equals\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f52c\\\",\\\"label\\\":\\\"Equals\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154568,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\\\"}}},\\\"eraser\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"delete\\\",\\\"remove\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f12d\\\",\\\"label\\\":\\\"eraser\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\\\"}}},\\\"erlang\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f39d\\\",\\\"label\\\":\\\"Erlang\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426581997,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M21.7 246.4c-.1 86.8 29 159.5 78.7 212.1H0v-405h87.2c-41.5 50.2-65.6 116.2-65.5 192.9zM640 53.6h-83.6c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405zm-80.8 405s0-.1 0 0h-.2.2zm-3.1-405h.3l-.1-.1-.2.1zm-230.7 9.6c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M21.7 246.4c-.1 86.8 29 159.5 78.7 212.1H0v-405h87.2c-41.5 50.2-65.6 116.2-65.5 192.9zM640 53.6h-83.6c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405zm-80.8 405s0-.1 0 0h-.2.2zm-3.1-405h.3l-.1-.1-.2.1zm-230.7 9.6c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2z\\\"}}},\\\"ethereum\\\":{\\\"changes\\\":[\\\"5.0.2\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f42e\\\",\\\"label\\\":\\\"Ethereum\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821384,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z\\\"}}},\\\"etsy\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2d7\\\",\\\"label\\\":\\\"Etsy\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z\\\"}}},\\\"euro-sign\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"eur\\\",\\\"eur\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f153\\\",\\\"label\\\":\\\"Euro Sign\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\\\"}}},\\\"exchange-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"arrows\\\",\\\"exchange\\\",\\\"reciprocate\\\",\\\"return\\\",\\\"swap\\\",\\\"transfer\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f362\\\",\\\"label\\\":\\\"Alternate Exchange\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\\\"}}},\\\"exclamation\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"alert\\\",\\\"danger\\\",\\\"error\\\",\\\"important\\\",\\\"notice\\\",\\\"notification\\\",\\\"notify\\\",\\\"problem\\\",\\\"warning\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f12a\\\",\\\"label\\\":\\\"exclamation\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 192 512\\\\\\\"><path d=\\\\\\\"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"192\\\",\\\"512\\\"],\\\"width\\\":192,\\\"height\\\":512,\\\"path\\\":\\\"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\\\"}}},\\\"exclamation-circle\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"alert\\\",\\\"danger\\\",\\\"error\\\",\\\"important\\\",\\\"notice\\\",\\\"notification\\\",\\\"notify\\\",\\\"problem\\\",\\\"warning\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f06a\\\",\\\"label\\\":\\\"Exclamation Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\\\"}}},\\\"exclamation-triangle\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"alert\\\",\\\"danger\\\",\\\"error\\\",\\\"important\\\",\\\"notice\\\",\\\"notification\\\",\\\"notify\\\",\\\"problem\\\",\\\"warning\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f071\\\",\\\"label\\\":\\\"Exclamation Triangle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\\\"}}},\\\"expand\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bigger\\\",\\\"enlarge\\\",\\\"resize\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f065\\\",\\\"label\\\":\\\"Expand\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\\\"}}},\\\"expand-arrows-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrows-alt\\\",\\\"bigger\\\",\\\"enlarge\\\",\\\"move\\\",\\\"resize\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f31e\\\",\\\"label\\\":\\\"Alternate Expand Arrows\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448.1 512\\\\\\\"><path d=\\\\\\\"M448.1 344v112c0 13.3-10.7 24-24 24h-112c-21.4 0-32.1-25.9-17-41l36.2-36.2L224 295.6 116.8 402.9 153 439c15.1 15.1 4.4 41-17 41H24c-13.3 0-24-10.7-24-24V344c0-21.4 25.9-32.1 41-17l36.2 36.2L184.5 256 77.2 148.7 41 185c-15.1 15.1-41 4.4-41-17V56c0-13.3 10.7-24 24-24h112c21.4 0 32.1 25.9 17 41l-36.2 36.2L224 216.4l107.3-107.3L295.1 73c-15.1-15.1-4.4-41 17-41h112c13.3 0 24 10.7 24 24v112c0 21.4-25.9 32.1-41 17l-36.2-36.2L263.6 256l107.3 107.3 36.2-36.2c15.1-15.2 41-4.5 41 16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448.1\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448.1 344v112c0 13.3-10.7 24-24 24h-112c-21.4 0-32.1-25.9-17-41l36.2-36.2L224 295.6 116.8 402.9 153 439c15.1 15.1 4.4 41-17 41H24c-13.3 0-24-10.7-24-24V344c0-21.4 25.9-32.1 41-17l36.2 36.2L184.5 256 77.2 148.7 41 185c-15.1 15.1-41 4.4-41-17V56c0-13.3 10.7-24 24-24h112c21.4 0 32.1 25.9 17 41l-36.2 36.2L224 216.4l107.3-107.3L295.1 73c-15.1-15.1-4.4-41 17-41h112c13.3 0 24 10.7 24 24v112c0 21.4-25.9 32.1-41 17l-36.2-36.2L263.6 256l107.3 107.3 36.2-36.2c15.1-15.2 41-4.5 41 16.9z\\\"}}},\\\"expeditedssl\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f23e\\\",\\\"label\\\":\\\"ExpeditedSSL\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z\\\"}}},\\\"external-link-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"external-link\\\",\\\"new\\\",\\\"open\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f35d\\\",\\\"label\\\":\\\"Alternate External Link\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M576 24v127.984c0 21.461-25.96 31.98-40.971 16.971l-35.707-35.709-243.523 243.523c-9.373 9.373-24.568 9.373-33.941 0l-22.627-22.627c-9.373-9.373-9.373-24.569 0-33.941L442.756 76.676l-35.703-35.705C391.982 25.9 402.656 0 424.024 0H552c13.255 0 24 10.745 24 24zM407.029 270.794l-16 16A23.999 23.999 0 0 0 384 303.765V448H64V128h264a24.003 24.003 0 0 0 16.97-7.029l16-16C376.089 89.851 365.381 64 344 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V287.764c0-21.382-25.852-32.09-40.971-16.97z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M576 24v127.984c0 21.461-25.96 31.98-40.971 16.971l-35.707-35.709-243.523 243.523c-9.373 9.373-24.568 9.373-33.941 0l-22.627-22.627c-9.373-9.373-9.373-24.569 0-33.941L442.756 76.676l-35.703-35.705C391.982 25.9 402.656 0 424.024 0H552c13.255 0 24 10.745 24 24zM407.029 270.794l-16 16A23.999 23.999 0 0 0 384 303.765V448H64V128h264a24.003 24.003 0 0 0 16.97-7.029l16-16C376.089 89.851 365.381 64 344 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V287.764c0-21.382-25.852-32.09-40.971-16.97z\\\"}}},\\\"external-link-square-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"external-link-square\\\",\\\"new\\\",\\\"open\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f360\\\",\\\"label\\\":\\\"Alternate External Link Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\\\"}}},\\\"eye\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"optic\\\",\\\"see\\\",\\\"seen\\\",\\\"show\\\",\\\"sight\\\",\\\"views\\\",\\\"visible\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f06e\\\",\\\"label\\\":\\\"Eye\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M569.354 231.631C512.969 135.949 407.81 72 288 72 168.14 72 63.004 135.994 6.646 231.631a47.999 47.999 0 0 0 0 48.739C63.031 376.051 168.19 440 288 440c119.86 0 224.996-63.994 281.354-159.631a47.997 47.997 0 0 0 0-48.738zM288 392c-75.162 0-136-60.827-136-136 0-75.162 60.826-136 136-136 75.162 0 136 60.826 136 136 0 75.162-60.826 136-136 136zm104-136c0 57.438-46.562 104-104 104s-104-46.562-104-104c0-17.708 4.431-34.379 12.236-48.973l-.001.032c0 23.651 19.173 42.823 42.824 42.823s42.824-19.173 42.824-42.823c0-23.651-19.173-42.824-42.824-42.824l-.032.001C253.621 156.431 270.292 152 288 152c57.438 0 104 46.562 104 104z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M569.354 231.631C512.969 135.949 407.81 72 288 72 168.14 72 63.004 135.994 6.646 231.631a47.999 47.999 0 0 0 0 48.739C63.031 376.051 168.19 440 288 440c119.86 0 224.996-63.994 281.354-159.631a47.997 47.997 0 0 0 0-48.738zM288 392c-75.162 0-136-60.827-136-136 0-75.162 60.826-136 136-136 75.162 0 136 60.826 136 136 0 75.162-60.826 136-136 136zm104-136c0 57.438-46.562 104-104 104s-104-46.562-104-104c0-17.708 4.431-34.379 12.236-48.973l-.001.032c0 23.651 19.173 42.823 42.824 42.823s42.824-19.173 42.824-42.823c0-23.651-19.173-42.824-42.824-42.824l-.032.001C253.621 156.431 270.292 152 288 152c57.438 0 104 46.562 104 104z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M569.354 231.631C512.97 135.949 407.81 72 288 72 168.14 72 63.004 135.994 6.646 231.631a47.999 47.999 0 0 0 0 48.739C63.031 376.051 168.19 440 288 440c119.86 0 224.996-63.994 281.354-159.631a47.997 47.997 0 0 0 0-48.738zM288 392c-102.556 0-192.091-54.701-240-136 44.157-74.933 123.677-127.27 216.162-135.007C273.958 131.078 280 144.83 280 160c0 30.928-25.072 56-56 56s-56-25.072-56-56l.001-.042C157.794 179.043 152 200.844 152 224c0 75.111 60.889 136 136 136s136-60.889 136-136c0-31.031-10.4-59.629-27.895-82.515C451.704 164.638 498.009 205.106 528 256c-47.908 81.299-137.444 136-240 136z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M569.354 231.631C512.97 135.949 407.81 72 288 72 168.14 72 63.004 135.994 6.646 231.631a47.999 47.999 0 0 0 0 48.739C63.031 376.051 168.19 440 288 440c119.86 0 224.996-63.994 281.354-159.631a47.997 47.997 0 0 0 0-48.738zM288 392c-102.556 0-192.091-54.701-240-136 44.157-74.933 123.677-127.27 216.162-135.007C273.958 131.078 280 144.83 280 160c0 30.928-25.072 56-56 56s-56-25.072-56-56l.001-.042C157.794 179.043 152 200.844 152 224c0 75.111 60.889 136 136 136s136-60.889 136-136c0-31.031-10.4-59.629-27.895-82.515C451.704 164.638 498.009 205.106 528 256c-47.908 81.299-137.444 136-240 136z\\\"}}},\\\"eye-dropper\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"eyedropper\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1fb\\\",\\\"label\\\":\\\"Eye Dropper\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111657,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\\\"}}},\\\"eye-slash\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"blind\\\",\\\"hide\\\",\\\"show\\\",\\\"toggle\\\",\\\"unseen\\\",\\\"views\\\",\\\"visible\\\",\\\"visiblity\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f070\\\",\\\"label\\\":\\\"Eye Slash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M286.693 391.984l32.579 46.542A333.958 333.958 0 0 1 288 440C168.19 440 63.031 376.051 6.646 280.369a47.999 47.999 0 0 1 0-48.739c24.023-40.766 56.913-75.775 96.024-102.537l57.077 81.539C154.736 224.82 152 240.087 152 256c0 74.736 60.135 135.282 134.693 135.984zm282.661-111.615c-31.667 53.737-78.747 97.46-135.175 125.475l.011.015 41.47 59.2c7.6 10.86 4.96 25.82-5.9 33.42l-13.11 9.18c-10.86 7.6-25.82 4.96-33.42-5.9L100.34 46.94c-7.6-10.86-4.96-25.82 5.9-33.42l13.11-9.18c10.86-7.6 25.82-4.96 33.42 5.9l51.038 72.617C230.68 75.776 258.905 72 288 72c119.81 0 224.969 63.949 281.354 159.631a48.002 48.002 0 0 1 0 48.738zM424 256c0-75.174-60.838-136-136-136-17.939 0-35.056 3.473-50.729 9.772l19.299 27.058c25.869-8.171 55.044-6.163 80.4 7.41h-.03c-23.65 0-42.82 19.17-42.82 42.82 0 23.626 19.147 42.82 42.82 42.82 23.65 0 42.82-19.17 42.82-42.82v-.03c18.462 34.49 16.312 77.914-8.25 110.95v.01l19.314 27.061C411.496 321.2 424 290.074 424 256zM262.014 356.727l-77.53-110.757c-5.014 52.387 29.314 98.354 77.53 110.757z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M286.693 391.984l32.579 46.542A333.958 333.958 0 0 1 288 440C168.19 440 63.031 376.051 6.646 280.369a47.999 47.999 0 0 1 0-48.739c24.023-40.766 56.913-75.775 96.024-102.537l57.077 81.539C154.736 224.82 152 240.087 152 256c0 74.736 60.135 135.282 134.693 135.984zm282.661-111.615c-31.667 53.737-78.747 97.46-135.175 125.475l.011.015 41.47 59.2c7.6 10.86 4.96 25.82-5.9 33.42l-13.11 9.18c-10.86 7.6-25.82 4.96-33.42-5.9L100.34 46.94c-7.6-10.86-4.96-25.82 5.9-33.42l13.11-9.18c10.86-7.6 25.82-4.96 33.42 5.9l51.038 72.617C230.68 75.776 258.905 72 288 72c119.81 0 224.969 63.949 281.354 159.631a48.002 48.002 0 0 1 0 48.738zM424 256c0-75.174-60.838-136-136-136-17.939 0-35.056 3.473-50.729 9.772l19.299 27.058c25.869-8.171 55.044-6.163 80.4 7.41h-.03c-23.65 0-42.82 19.17-42.82 42.82 0 23.626 19.147 42.82 42.82 42.82 23.65 0 42.82-19.17 42.82-42.82v-.03c18.462 34.49 16.312 77.914-8.25 110.95v.01l19.314 27.061C411.496 321.2 424 290.074 424 256zM262.014 356.727l-77.53-110.757c-5.014 52.387 29.314 98.354 77.53 110.757z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M272.702 359.139c-80.483-9.011-136.212-86.886-116.93-167.042l116.93 167.042zM288 392c-102.556 0-192.092-54.701-240-136 21.755-36.917 52.1-68.342 88.344-91.658l-27.541-39.343C67.001 152.234 31.921 188.741 6.646 231.631a47.999 47.999 0 0 0 0 48.739C63.004 376.006 168.14 440 288 440a332.89 332.89 0 0 0 39.648-2.367l-32.021-45.744A284.16 284.16 0 0 1 288 392zm281.354-111.631c-33.232 56.394-83.421 101.742-143.554 129.492l48.116 68.74c3.801 5.429 2.48 12.912-2.949 16.712L450.23 509.83c-5.429 3.801-12.912 2.48-16.712-2.949L102.084 33.399c-3.801-5.429-2.48-12.912 2.949-16.712L125.77 2.17c5.429-3.801 12.912-2.48 16.712 2.949l55.526 79.325C226.612 76.343 256.808 72 288 72c119.86 0 224.996 63.994 281.354 159.631a48.002 48.002 0 0 1 0 48.738zM528 256c-44.157-74.933-123.677-127.27-216.162-135.007C302.042 131.078 296 144.83 296 160c0 30.928 25.072 56 56 56s56-25.072 56-56l-.001-.042c30.632 57.277 16.739 130.26-36.928 171.719l26.695 38.135C452.626 346.551 498.308 306.386 528 256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M272.702 359.139c-80.483-9.011-136.212-86.886-116.93-167.042l116.93 167.042zM288 392c-102.556 0-192.092-54.701-240-136 21.755-36.917 52.1-68.342 88.344-91.658l-27.541-39.343C67.001 152.234 31.921 188.741 6.646 231.631a47.999 47.999 0 0 0 0 48.739C63.004 376.006 168.14 440 288 440a332.89 332.89 0 0 0 39.648-2.367l-32.021-45.744A284.16 284.16 0 0 1 288 392zm281.354-111.631c-33.232 56.394-83.421 101.742-143.554 129.492l48.116 68.74c3.801 5.429 2.48 12.912-2.949 16.712L450.23 509.83c-5.429 3.801-12.912 2.48-16.712-2.949L102.084 33.399c-3.801-5.429-2.48-12.912 2.949-16.712L125.77 2.17c5.429-3.801 12.912-2.48 16.712 2.949l55.526 79.325C226.612 76.343 256.808 72 288 72c119.86 0 224.996 63.994 281.354 159.631a48.002 48.002 0 0 1 0 48.738zM528 256c-44.157-74.933-123.677-127.27-216.162-135.007C302.042 131.078 296 144.83 296 160c0 30.928 25.072 56 56 56s56-25.072 56-56l-.001-.042c30.632 57.277 16.739 130.26-36.928 171.719l26.695 38.135C452.626 346.551 498.308 306.386 528 256z\\\"}}},\\\"facebook\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"facebook-official\\\",\\\"social network\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f09a\\\",\\\"label\\\":\\\"Facebook\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 56.7v398.5c0 13.7-11.1 24.7-24.7 24.7H309.1V306.5h58.2l8.7-67.6h-67v-43.2c0-19.6 5.4-32.9 33.5-32.9h35.8v-60.5c-6.2-.8-27.4-2.7-52.2-2.7-51.6 0-87 31.5-87 89.4v49.9h-58.4v67.6h58.4V480H24.7C11.1 480 0 468.9 0 455.3V56.7C0 43.1 11.1 32 24.7 32h398.5c13.7 0 24.8 11.1 24.8 24.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 56.7v398.5c0 13.7-11.1 24.7-24.7 24.7H309.1V306.5h58.2l8.7-67.6h-67v-43.2c0-19.6 5.4-32.9 33.5-32.9h35.8v-60.5c-6.2-.8-27.4-2.7-52.2-2.7-51.6 0-87 31.5-87 89.4v49.9h-58.4v67.6h58.4V480H24.7C11.1 480 0 468.9 0 455.3V56.7C0 43.1 11.1 32 24.7 32h398.5c13.7 0 24.8 11.1 24.8 24.7z\\\"}}},\\\"facebook-f\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"facebook\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f39e\\\",\\\"label\\\":\\\"Facebook F\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 264 512\\\\\\\"><path d=\\\\\\\"M76.7 512V283H0v-91h76.7v-71.7C76.7 42.4 124.3 0 193.8 0c33.3 0 61.9 2.5 70.2 3.6V85h-48.2c-37.8 0-45.1 18-45.1 44.3V192H256l-11.7 91h-73.6v229\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"264\\\",\\\"512\\\"],\\\"width\\\":264,\\\"height\\\":512,\\\"path\\\":\\\"M76.7 512V283H0v-91h76.7v-71.7C76.7 42.4 124.3 0 193.8 0c33.3 0 61.9 2.5 70.2 3.6V85h-48.2c-37.8 0-45.1 18-45.1 44.3V192H256l-11.7 91h-73.6v229\\\"}}},\\\"facebook-messenger\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f39f\\\",\\\"label\\\":\\\"Facebook Messenger\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224 32C15.9 32-77.5 278 84.6 400.6V480l75.7-42c142.2 39.8 285.4-59.9 285.4-198.7C445.8 124.8 346.5 32 224 32zm23.4 278.1L190 250.5 79.6 311.6l121.1-128.5 57.4 59.6 110.4-61.1-121.1 128.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224 32C15.9 32-77.5 278 84.6 400.6V480l75.7-42c142.2 39.8 285.4-59.9 285.4-198.7C445.8 124.8 346.5 32 224 32zm23.4 278.1L190 250.5 79.6 311.6l121.1-128.5 57.4 59.6 110.4-61.1-121.1 128.5z\\\"}}},\\\"facebook-square\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"social network\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f082\\\",\\\"label\\\":\\\"Facebook Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 80v352c0 26.5-21.5 48-48 48h-85.3V302.8h60.6l8.7-67.6h-69.3V192c0-19.6 5.4-32.9 33.5-32.9H384V98.7c-6.2-.8-27.4-2.7-52.2-2.7-51.6 0-87 31.5-87 89.4v49.9H184v67.6h60.9V480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 80v352c0 26.5-21.5 48-48 48h-85.3V302.8h60.6l8.7-67.6h-69.3V192c0-19.6 5.4-32.9 33.5-32.9H384V98.7c-6.2-.8-27.4-2.7-52.2-2.7-51.6 0-87 31.5-87 89.4v49.9H184v67.6h60.9V480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z\\\"}}},\\\"fast-backward\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"beginning\\\",\\\"first\\\",\\\"previous\\\",\\\"rewind\\\",\\\"start\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f049\\\",\\\"label\\\":\\\"fast-backward\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\\\"}}},\\\"fast-forward\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"end\\\",\\\"last\\\",\\\"next\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f050\\\",\\\"label\\\":\\\"fast-forward\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\\\"}}},\\\"fax\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1ac\\\",\\\"label\\\":\\\"Fax\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M128 144v320c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V144c0-26.51 21.49-48 48-48h32c26.51 0 48 21.49 48 48zm384 64v256c0 26.51-21.49 48-48 48H192c-26.51 0-48-21.49-48-48V40c0-22.091 17.909-40 40-40h207.432a39.996 39.996 0 0 1 28.284 11.716l48.569 48.569A39.999 39.999 0 0 1 480 88.568v74.174c18.641 6.591 32 24.36 32 45.258zm-320-16h240V96h-24c-13.203 0-24-10.797-24-24V48H192v144zm96 204c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zm0-128c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zm128 128c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zm0-128c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M128 144v320c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V144c0-26.51 21.49-48 48-48h32c26.51 0 48 21.49 48 48zm384 64v256c0 26.51-21.49 48-48 48H192c-26.51 0-48-21.49-48-48V40c0-22.091 17.909-40 40-40h207.432a39.996 39.996 0 0 1 28.284 11.716l48.569 48.569A39.999 39.999 0 0 1 480 88.568v74.174c18.641 6.591 32 24.36 32 45.258zm-320-16h240V96h-24c-13.203 0-24-10.797-24-24V48H192v144zm96 204c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zm0-128c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zm128 128c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zm0-128c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40z\\\"}}},\\\"feather\\\":{\\\"changes\\\":[\\\"5.0.13\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bird\\\",\\\"light\\\",\\\"plucked\\\",\\\"quill\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f52d\\\",\\\"label\\\":\\\"Feather\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111659,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\\\"}}},\\\"feather-alt\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bird\\\",\\\"light\\\",\\\"plucked\\\",\\\"quill\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f56b\\\",\\\"label\\\":\\\"Feather Alt\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111658,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\\\"}}},\\\"female\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"human\\\",\\\"person\\\",\\\"profile\\\",\\\"user\\\",\\\"woman\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f182\\\",\\\"label\\\":\\\"Female\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\\\"}}},\\\"fighter-jet\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"airplane\\\",\\\"fast\\\",\\\"fly\\\",\\\"goose\\\",\\\"maverick\\\",\\\"plane\\\",\\\"quick\\\",\\\"top gun\\\",\\\"transportation\\\",\\\"travel\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0fb\\\",\\\"label\\\":\\\"fighter-jet\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\\\"}}},\\\"file\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"document\\\",\\\"new\\\",\\\"page\\\",\\\"pdf\\\",\\\"resume\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f15b\\\",\\\"label\\\":\\\"File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z\\\"}}},\\\"file-alt\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"document\\\",\\\"file-text\\\",\\\"invoice\\\",\\\"new\\\",\\\"page\\\",\\\"pdf\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f15c\\\",\\\"label\\\":\\\"Alternate File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\\\"}}},\\\"file-archive\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\".zip\\\",\\\"bundle\\\",\\\"compress\\\",\\\"compression\\\",\\\"download\\\",\\\"zip\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1c6\\\",\\\"label\\\":\\\"Archive File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32V32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6zm32.7-53c0 14.9-14.5 27-32.4 27S96 378 96 363c0-14.9 14.5-27 32.4-27s32.5 12.1 32.5 27zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32V32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6zm32.7-53c0 14.9-14.5 27-32.4 27S96 378 96 363c0-14.9 14.5-27 32.4-27s32.5 12.1 32.5 27zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM256 51.882L332.118 128H256V51.882zM336 464H48V48h79.714v16h32V48H208v104c0 13.255 10.745 24 24 24h104v288zM192.27 96h-32V64h32v32zm-32 0v32h-32V96h32zm0 64v32h-32v-32h32zm32 0h-32v-32h32v32zm1.909 105.678A12 12 0 0 0 182.406 256H160.27v-32h-32v32l-19.69 97.106C101.989 385.611 126.834 416 160 416c33.052 0 57.871-30.192 51.476-62.62l-17.297-87.702zM160.27 390.073c-17.918 0-32.444-12.105-32.444-27.036 0-14.932 14.525-27.036 32.444-27.036s32.444 12.105 32.444 27.036c0 14.931-14.526 27.036-32.444 27.036zm32-166.073h-32v-32h32v32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM256 51.882L332.118 128H256V51.882zM336 464H48V48h79.714v16h32V48H208v104c0 13.255 10.745 24 24 24h104v288zM192.27 96h-32V64h32v32zm-32 0v32h-32V96h32zm0 64v32h-32v-32h32zm32 0h-32v-32h32v32zm1.909 105.678A12 12 0 0 0 182.406 256H160.27v-32h-32v32l-19.69 97.106C101.989 385.611 126.834 416 160 416c33.052 0 57.871-30.192 51.476-62.62l-17.297-87.702zM160.27 390.073c-17.918 0-32.444-12.105-32.444-27.036 0-14.932 14.525-27.036 32.444-27.036s32.444 12.105 32.444 27.036c0 14.931-14.526 27.036-32.444 27.036zm32-166.073h-32v-32h32v32z\\\"}}},\\\"file-audio\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1c7\\\",\\\"label\\\":\\\"Audio File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm144-76.024c0 10.691-12.926 16.045-20.485 8.485L136 360.486h-28c-6.627 0-12-5.373-12-12v-56c0-6.627 5.373-12 12-12h28l35.515-36.947c7.56-7.56 20.485-2.206 20.485 8.485v135.952zm41.201-47.13c9.051-9.297 9.06-24.133.001-33.439-22.149-22.752 12.235-56.246 34.395-33.481 27.198 27.94 27.212 72.444.001 100.401-21.793 22.386-56.947-10.315-34.397-33.481z\\\"}}},\\\"file-code\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1c9\\\",\\\"label\\\":\\\"Code File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm101.677-115.115L116.854 320l32.822-28.885a8.793 8.793 0 0 0 .605-12.624l-17.403-18.564c-3.384-3.613-8.964-3.662-12.438-.401L62.78 313.58c-3.703 3.474-3.704 9.367.001 12.84l57.659 54.055a8.738 8.738 0 0 0 6.012 2.381 8.746 8.746 0 0 0 6.427-2.782l17.403-18.563a8.795 8.795 0 0 0-.605-12.626zm84.284-127.85l-24.401-7.084a8.796 8.796 0 0 0-10.905 5.998L144.04 408.061c-1.353 4.66 1.338 9.552 5.998 10.905l24.403 7.084c4.68 1.355 9.557-1.354 10.905-5.998l54.612-188.112c1.354-4.66-1.337-9.552-5.997-10.905zm87.258 92.545l-57.658-54.055c-3.526-3.307-9.099-3.165-12.439.401l-17.403 18.563a8.795 8.795 0 0 0 .605 12.625L267.146 320l-32.822 28.885a8.793 8.793 0 0 0-.605 12.624l17.403 18.564a8.797 8.797 0 0 0 12.439.401h-.001l57.66-54.055c3.703-3.473 3.703-9.366-.001-12.839z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm101.677-115.115L116.854 320l32.822-28.885a8.793 8.793 0 0 0 .605-12.624l-17.403-18.564c-3.384-3.613-8.964-3.662-12.438-.401L62.78 313.58c-3.703 3.474-3.704 9.367.001 12.84l57.659 54.055a8.738 8.738 0 0 0 6.012 2.381 8.746 8.746 0 0 0 6.427-2.782l17.403-18.563a8.795 8.795 0 0 0-.605-12.626zm84.284-127.85l-24.401-7.084a8.796 8.796 0 0 0-10.905 5.998L144.04 408.061c-1.353 4.66 1.338 9.552 5.998 10.905l24.403 7.084c4.68 1.355 9.557-1.354 10.905-5.998l54.612-188.112c1.354-4.66-1.337-9.552-5.997-10.905zm87.258 92.545l-57.658-54.055c-3.526-3.307-9.099-3.165-12.439.401l-17.403 18.563a8.795 8.795 0 0 0 .605 12.625L267.146 320l-32.822 28.885a8.793 8.793 0 0 0-.605 12.624l17.403 18.564a8.797 8.797 0 0 0 12.439.401h-.001l57.66-54.055c3.703-3.473 3.703-9.366-.001-12.839z\\\"}}},\\\"file-contract\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"agreement\\\",\\\"binding\\\",\\\"document\\\",\\\"legal\\\",\\\"signature\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f56c\\\",\\\"label\\\":\\\"File Contract\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111659,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\\\"}}},\\\"file-download\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f56d\\\",\\\"label\\\":\\\"File Download\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111660,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\\\"}}},\\\"file-excel\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1c3\\\",\\\"label\\\":\\\"Excel File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm212-240h-28.8c-4.4 0-8.4 2.4-10.5 6.3-18 33.1-22.2 42.4-28.6 57.7-13.9-29.1-6.9-17.3-28.6-57.7-2.1-3.9-6.2-6.3-10.6-6.3H124c-9.3 0-15 10-10.4 18l46.3 78-46.3 78c-4.7 8 1.1 18 10.4 18h28.9c4.4 0 8.4-2.4 10.5-6.3 21.7-40 23-45 28.6-57.7 14.9 30.2 5.9 15.9 28.6 57.7 2.1 3.9 6.2 6.3 10.6 6.3H260c9.3 0 15-10 10.4-18L224 320c.7-1.1 30.3-50.5 46.3-78 4.7-8-1.1-18-10.3-18z\\\"}}},\\\"file-export\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f56e\\\",\\\"label\\\":\\\"File Export\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111660,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zM192 336v-32c0-8.84 7.16-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.84 0-16-7.16-16-16zm379.05-28.02l-95.7-96.43c-10.06-10.14-27.36-3.01-27.36 11.27V288H384v64h63.99v65.18c0 14.28 17.29 21.41 27.36 11.27l95.7-96.42c6.6-6.66 6.6-17.4 0-24.05z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zM192 336v-32c0-8.84 7.16-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.84 0-16-7.16-16-16zm379.05-28.02l-95.7-96.43c-10.06-10.14-27.36-3.01-27.36 11.27V288H384v64h63.99v65.18c0 14.28 17.29 21.41 27.36 11.27l95.7-96.42c6.6-6.66 6.6-17.4 0-24.05z\\\"}}},\\\"file-image\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1c5\\\",\\\"label\\\":\\\"Image File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\\\"}}},\\\"file-import\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f56f\\\",\\\"label\\\":\\\"File Import\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111661,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M16 288c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h112v-64H16zm336-152V0H152c-13.3 0-24 10.7-24 24v264h127.99v-65.18c0-14.28 17.29-21.41 27.36-11.27l95.7 96.43c6.6 6.65 6.6 17.39 0 24.04l-95.7 96.42c-10.06 10.14-27.36 3.01-27.36-11.27V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24zm153-31L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M16 288c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h112v-64H16zm336-152V0H152c-13.3 0-24 10.7-24 24v264h127.99v-65.18c0-14.28 17.29-21.41 27.36-11.27l95.7 96.43c6.6 6.65 6.6 17.39 0 24.04l-95.7 96.42c-10.06 10.14-27.36 3.01-27.36-11.27V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24zm153-31L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\\\"}}},\\\"file-invoice\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bill\\\",\\\"document\\\",\\\"receipt\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f570\\\",\\\"label\\\":\\\"File Invoice\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111662,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\\\"}}},\\\"file-invoice-dollar\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"$\\\",\\\"bill\\\",\\\"document\\\",\\\"dollar-sign\\\",\\\"money\\\",\\\"receipt\\\",\\\"usd\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f571\\\",\\\"label\\\":\\\"File Invoice with US Dollar\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111661,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\\\"}}},\\\"file-medical\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f477\\\",\\\"label\\\":\\\"Medical File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821449,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\\\"}}},\\\"file-medical-alt\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f478\\\",\\\"label\\\":\\\"Alternate Medical File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821449,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\\\"}}},\\\"file-pdf\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1c1\\\",\\\"label\\\":\\\"PDF File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm250.2-143.7c-12.2-12-47-8.7-64.4-6.5-17.2-10.5-28.7-25-36.8-46.3 3.9-16.1 10.1-40.6 5.4-56-4.2-26.2-37.8-23.6-42.6-5.9-4.4 16.1-.4 38.5 7 67.1-10 23.9-24.9 56-35.4 74.4-20 10.3-47 26.2-51 46.2-3.3 15.8 26 55.2 76.1-31.2 22.4-7.4 46.8-16.5 68.4-20.1 18.9 10.2 41 17 55.8 17 25.5 0 28-28.2 17.5-38.7zm-198.1 77.8c5.1-13.7 24.5-29.5 30.4-35-19 30.3-30.4 35.7-30.4 35zm81.6-190.6c7.4 0 6.7 32.1 1.8 40.8-4.4-13.9-4.3-40.8-1.8-40.8zm-24.4 136.6c9.7-16.9 18-37 24.7-54.7 8.3 15.1 18.9 27.2 30.1 35.5-20.8 4.3-38.9 13.1-54.8 19.2zm131.6-5s-5 6-37.3-7.8c35.1-2.6 40.9 5.4 37.3 7.8z\\\"}}},\\\"file-powerpoint\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1c4\\\",\\\"label\\\":\\\"Powerpoint File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm72-60V236c0-6.6 5.4-12 12-12h69.2c36.7 0 62.8 27 62.8 66.3 0 74.3-68.7 66.5-95.5 66.5V404c0 6.6-5.4 12-12 12H132c-6.6 0-12-5.4-12-12zm48.5-87.4h23c7.9 0 13.9-2.4 18.1-7.2 8.5-9.8 8.4-28.5.1-37.8-4.1-4.6-9.9-7-17.4-7h-23.9v52z\\\"}}},\\\"file-prescription\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"drugs\\\",\\\"medical\\\",\\\"medicine\\\",\\\"rx\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f572\\\",\\\"label\\\":\\\"File Prescription\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111662,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\"}}},\\\"file-signature\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"John Hancock\\\",\\\"contract\\\",\\\"document\\\",\\\"name\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f573\\\",\\\"label\\\":\\\"File Signature\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111663,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\\\"}}},\\\"file-upload\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f574\\\",\\\"label\\\":\\\"File Upload\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111664,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\\\"}}},\\\"file-video\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1c8\\\",\\\"label\\\":\\\"Video File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M369.941 97.941l-83.882-83.882A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V131.882a48 48 0 0 0-14.059-33.941zM332.118 128H256V51.882L332.118 128zM48 464V48h160v104c0 13.255 10.745 24 24 24h104v288H48zm228.687-211.303L224 305.374V268c0-11.046-8.954-20-20-20H100c-11.046 0-20 8.954-20 20v104c0 11.046 8.954 20 20 20h104c11.046 0 20-8.954 20-20v-37.374l52.687 52.674C286.704 397.318 304 390.28 304 375.986V264.011c0-14.311-17.309-21.319-27.313-11.314z\\\"}}},\\\"file-word\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1c2\\\",\\\"label\\\":\\\"Word File\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z\\\"}}},\\\"fill\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bucket\\\",\\\"color\\\",\\\"paint\\\",\\\"paint bucket\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f575\\\",\\\"label\\\":\\\"Fill\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111665,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\\\"}}},\\\"fill-drip\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bucket\\\",\\\"color\\\",\\\"drop\\\",\\\"paint\\\",\\\"paint bucket\\\",\\\"spill\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f576\\\",\\\"label\\\":\\\"Fill Drip\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111664,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\\\"}}},\\\"film\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"movie\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f008\\\",\\\"label\\\":\\\"Film\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1504646588000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\\\"}}},\\\"filter\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"funnel\\\",\\\"options\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0b0\\\",\\\"label\\\":\\\"Filter\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\\\"}}},\\\"fingerprint\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"human\\\",\\\"id\\\",\\\"identification\\\",\\\"lock\\\",\\\"smudge\\\",\\\"touch\\\",\\\"unique\\\",\\\"unlock\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f577\\\",\\\"label\\\":\\\"Fingerprint\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111665,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\\\"}}},\\\"fire\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"flame\\\",\\\"hot\\\",\\\"popular\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f06d\\\",\\\"label\\\":\\\"fire\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M216 23.858c0-23.802-30.653-32.765-44.149-13.038C48 191.851 224 200 224 288c0 35.629-29.114 64.458-64.85 63.994C123.98 351.538 96 322.22 96 287.046v-85.51c0-21.703-26.471-32.225-41.432-16.504C27.801 213.158 0 261.332 0 320c0 105.869 86.131 192 192 192s192-86.131 192-192c0-170.29-168-193.003-168-296.142z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M216 23.858c0-23.802-30.653-32.765-44.149-13.038C48 191.851 224 200 224 288c0 35.629-29.114 64.458-64.85 63.994C123.98 351.538 96 322.22 96 287.046v-85.51c0-21.703-26.471-32.225-41.432-16.504C27.801 213.158 0 261.332 0 320c0 105.869 86.131 192 192 192s192-86.131 192-192c0-170.29-168-193.003-168-296.142z\\\"}}},\\\"fire-extinguisher\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f134\\\",\\\"label\\\":\\\"fire-extinguisher\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502810244000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\\\"}}},\\\"firefox\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\",\\\"5.0.1\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"browser\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f269\\\",\\\"label\\\":\\\"Firefox\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1512765674646,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 480 512\\\\\\\"><path d=\\\\\\\"M478.1 235.3c-.7-4.5-1.4-7.1-1.4-7.1s-1.8 2-4.7 5.9c-.9-10.7-2.8-21.2-5.8-31.6-3.7-12.9-8.5-25.4-14.5-37.4-3.8-8-8.2-15.6-13.3-22.8-1.8-2.7-3.7-5.4-5.6-7.9-8.8-14.4-19-23.3-30.7-40-7.6-12.8-12.9-26.9-15.4-41.6-3.2 8.9-5.7 18-7.4 27.3-12.1-12.2-22.5-20.8-28.9-26.7C319.4 24.2 323 9.1 323 9.1S264.7 74.2 289.9 142c8.7 23 23.8 43.1 43.4 57.9 24.4 20.2 50.8 36 64.7 76.6-11.2-21.3-28.1-39.2-48.8-51.5 6.2 14.7 9.4 30.6 9.3 46.5 0 61-49.6 110.5-110.6 110.4-8.3 0-16.5-.9-24.5-2.8-9.5-1.8-18.7-4.9-27.4-9.3-12.9-7.8-24-18.1-32.8-30.3l-.2-.3 2 .7c4.6 1.6 9.2 2.8 14 3.7 18.7 4 38.3 1.7 55.6-6.6 17.5-9.7 28-16.9 36.6-14h.2c8.4 2.7 15-5.5 9-14-10.4-13.4-27.4-20-44.2-17-17.5 2.5-33.5 15-56.4 2.9-1.5-.8-2.9-1.6-4.3-2.5-1.6-.9 4.9 1.3 3.4.3-5-2.5-9.8-5.4-14.4-8.6-.3-.3 3.5 1.1 3.1.8-5.9-4-11-9.2-15-15.2-4.1-7.4-4.5-16.4-1-24.1 2.1-3.8 5.4-6.9 9.3-8.7 3 1.5 4.8 2.6 4.8 2.6s-1.3-2.5-2.1-3.8c.3-.1.5 0 .8-.2 2.6 1.1 8.3 4 11.4 5.8 2.1 1.1 3.8 2.7 5.2 4.7 0 0 1-.5.3-2.7-1.1-2.7-2.9-5-5.4-6.6h.2c2.3 1.2 4.5 2.6 6.6 4.1 1.9-4.4 2.8-9.2 2.6-14 .2-2.6-.2-5.3-1.1-7.8-.8-1.6.5-2.2 1.9-.5-.2-1.3-.7-2.5-1.2-3.7v-.1s.8-1.1 1.2-1.5c1-1 2.1-1.9 3.4-2.7 7.2-4.5 14.8-8.4 22.7-11.6 6.4-2.8 11.7-4.9 12.8-5.6 1.6-1 3.1-2.2 4.5-3.5 5.3-4.5 9-10.8 10.2-17.7.1-.9.2-1.8.3-2.8v-1.5c-.9-3.5-6.9-6.1-38.4-9.1-11.1-1.8-20-10.1-22.5-21.1v.1c-.4 1.1-.9 2.3-1.3 3.5.4-1.2.8-2.3 1.3-3.5v-.2c6-15.7 16.8-29.1 30.8-38.3.8-.7-3.2.2-2.4-.5 2.7-1.3 5.4-2.5 8.2-3.5 1.4-.6-6-3.4-12.6-2.7-4 .2-8 1.2-11.7 2.8 1.6-1.3 6.2-3.1 5.1-3.1-8.4 1.6-16.5 4.7-23.9 9 0-.8.1-1.5.5-2.2-5.9 2.5-11 6.5-15 11.5.1-.9.2-1.8.2-2.7-2.7 2-5.2 4.3-7.3 6.9l-.1.1c-17.4-6.7-36.3-8.3-54.6-4.7l-.2-.1h.2c-3.8-3.1-7.1-6.7-9.7-10.9l-.2.1-.4-.2c-1.2-1.8-2.4-3.8-3.7-6-.9-1.6-1.8-3.4-2.7-5.2 0-.1-.1-.2-.2-.2-.4 0-.6 1.7-.9 1.3v-.1c-3.2-8.3-4.7-17.2-4.4-26.2l-.2.1c-5.1 3.5-9 8.6-11.1 14.5-.9 2.1-1.6 3.3-2.2 4.5v-.5c.1-1.1.6-3.3.5-3.1-.1.2-.2.3-.3.4-1.5 1.7-2.9 3.7-3.9 5.8-.9 1.9-1.7 3.9-2.3 5.9-.1.3 0-.3 0-1s.1-2 0-1.7l-.3.7c-6.7 14.9-10.9 30.8-12.4 47.1-.4 2.8-.6 5.6-.5 8.3v.2c-4.8 5.2-9 11-12.7 17.1-12.1 20.4-21.1 42.5-26.8 65.6 4-8.8 8.8-17.2 14.3-25.1C5.5 228.5 0 257.4 0 286.6c1.8-8.6 4.2-17 7-25.3-1.7 34.5 4.9 68.9 19.4 100.3 19.4 43.5 51.6 80 92.3 104.7 16.6 11.2 34.7 19.9 53.8 25.8 2.5.9 5.1 1.8 7.7 2.7-.8-.3-1.6-.7-2.4-1 22.6 6.8 46.2 10.3 69.8 10.3 83.7 0 111.3-31.9 113.8-35 4.1-3.7 7.5-8.2 9.9-13.3 1.6-.7 3.2-1.4 4.9-2.1l1-.5 1.9-.9c12.6-5.9 24.5-13.4 35.3-22.1 16.3-11.7 27.9-28.7 32.9-48.1 3-7.1 3.1-15 .4-22.2.9-1.4 1.7-2.8 2.7-4.3 18-28.9 28.2-61.9 29.6-95.9v-2.8c0-7.3-.6-14.5-1.9-21.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"480\\\",\\\"512\\\"],\\\"width\\\":480,\\\"height\\\":512,\\\"path\\\":\\\"M478.1 235.3c-.7-4.5-1.4-7.1-1.4-7.1s-1.8 2-4.7 5.9c-.9-10.7-2.8-21.2-5.8-31.6-3.7-12.9-8.5-25.4-14.5-37.4-3.8-8-8.2-15.6-13.3-22.8-1.8-2.7-3.7-5.4-5.6-7.9-8.8-14.4-19-23.3-30.7-40-7.6-12.8-12.9-26.9-15.4-41.6-3.2 8.9-5.7 18-7.4 27.3-12.1-12.2-22.5-20.8-28.9-26.7C319.4 24.2 323 9.1 323 9.1S264.7 74.2 289.9 142c8.7 23 23.8 43.1 43.4 57.9 24.4 20.2 50.8 36 64.7 76.6-11.2-21.3-28.1-39.2-48.8-51.5 6.2 14.7 9.4 30.6 9.3 46.5 0 61-49.6 110.5-110.6 110.4-8.3 0-16.5-.9-24.5-2.8-9.5-1.8-18.7-4.9-27.4-9.3-12.9-7.8-24-18.1-32.8-30.3l-.2-.3 2 .7c4.6 1.6 9.2 2.8 14 3.7 18.7 4 38.3 1.7 55.6-6.6 17.5-9.7 28-16.9 36.6-14h.2c8.4 2.7 15-5.5 9-14-10.4-13.4-27.4-20-44.2-17-17.5 2.5-33.5 15-56.4 2.9-1.5-.8-2.9-1.6-4.3-2.5-1.6-.9 4.9 1.3 3.4.3-5-2.5-9.8-5.4-14.4-8.6-.3-.3 3.5 1.1 3.1.8-5.9-4-11-9.2-15-15.2-4.1-7.4-4.5-16.4-1-24.1 2.1-3.8 5.4-6.9 9.3-8.7 3 1.5 4.8 2.6 4.8 2.6s-1.3-2.5-2.1-3.8c.3-.1.5 0 .8-.2 2.6 1.1 8.3 4 11.4 5.8 2.1 1.1 3.8 2.7 5.2 4.7 0 0 1-.5.3-2.7-1.1-2.7-2.9-5-5.4-6.6h.2c2.3 1.2 4.5 2.6 6.6 4.1 1.9-4.4 2.8-9.2 2.6-14 .2-2.6-.2-5.3-1.1-7.8-.8-1.6.5-2.2 1.9-.5-.2-1.3-.7-2.5-1.2-3.7v-.1s.8-1.1 1.2-1.5c1-1 2.1-1.9 3.4-2.7 7.2-4.5 14.8-8.4 22.7-11.6 6.4-2.8 11.7-4.9 12.8-5.6 1.6-1 3.1-2.2 4.5-3.5 5.3-4.5 9-10.8 10.2-17.7.1-.9.2-1.8.3-2.8v-1.5c-.9-3.5-6.9-6.1-38.4-9.1-11.1-1.8-20-10.1-22.5-21.1v.1c-.4 1.1-.9 2.3-1.3 3.5.4-1.2.8-2.3 1.3-3.5v-.2c6-15.7 16.8-29.1 30.8-38.3.8-.7-3.2.2-2.4-.5 2.7-1.3 5.4-2.5 8.2-3.5 1.4-.6-6-3.4-12.6-2.7-4 .2-8 1.2-11.7 2.8 1.6-1.3 6.2-3.1 5.1-3.1-8.4 1.6-16.5 4.7-23.9 9 0-.8.1-1.5.5-2.2-5.9 2.5-11 6.5-15 11.5.1-.9.2-1.8.2-2.7-2.7 2-5.2 4.3-7.3 6.9l-.1.1c-17.4-6.7-36.3-8.3-54.6-4.7l-.2-.1h.2c-3.8-3.1-7.1-6.7-9.7-10.9l-.2.1-.4-.2c-1.2-1.8-2.4-3.8-3.7-6-.9-1.6-1.8-3.4-2.7-5.2 0-.1-.1-.2-.2-.2-.4 0-.6 1.7-.9 1.3v-.1c-3.2-8.3-4.7-17.2-4.4-26.2l-.2.1c-5.1 3.5-9 8.6-11.1 14.5-.9 2.1-1.6 3.3-2.2 4.5v-.5c.1-1.1.6-3.3.5-3.1-.1.2-.2.3-.3.4-1.5 1.7-2.9 3.7-3.9 5.8-.9 1.9-1.7 3.9-2.3 5.9-.1.3 0-.3 0-1s.1-2 0-1.7l-.3.7c-6.7 14.9-10.9 30.8-12.4 47.1-.4 2.8-.6 5.6-.5 8.3v.2c-4.8 5.2-9 11-12.7 17.1-12.1 20.4-21.1 42.5-26.8 65.6 4-8.8 8.8-17.2 14.3-25.1C5.5 228.5 0 257.4 0 286.6c1.8-8.6 4.2-17 7-25.3-1.7 34.5 4.9 68.9 19.4 100.3 19.4 43.5 51.6 80 92.3 104.7 16.6 11.2 34.7 19.9 53.8 25.8 2.5.9 5.1 1.8 7.7 2.7-.8-.3-1.6-.7-2.4-1 22.6 6.8 46.2 10.3 69.8 10.3 83.7 0 111.3-31.9 113.8-35 4.1-3.7 7.5-8.2 9.9-13.3 1.6-.7 3.2-1.4 4.9-2.1l1-.5 1.9-.9c12.6-5.9 24.5-13.4 35.3-22.1 16.3-11.7 27.9-28.7 32.9-48.1 3-7.1 3.1-15 .4-22.2.9-1.4 1.7-2.8 2.7-4.3 18-28.9 28.2-61.9 29.6-95.9v-2.8c0-7.3-.6-14.5-1.9-21.6z\\\"}}},\\\"first-aid\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f479\\\",\\\"label\\\":\\\"First Aid\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821449,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\\\"}}},\\\"first-order\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2b0\\\",\\\"label\\\":\\\"First Order\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z\\\"}}},\\\"first-order-alt\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f50a\\\",\\\"label\\\":\\\"Alternate First Order\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442520,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z\\\"}}},\\\"firstdraft\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3a1\\\",\\\"label\\\":\\\"firstdraft\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z\\\"}}},\\\"fish\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f578\\\",\\\"label\\\":\\\"Fish\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111666,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\\\"}}},\\\"flag\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"notice\\\",\\\"notification\\\",\\\"notify\\\",\\\"report\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f024\\\",\\\"label\\\":\\\"flag\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M336.174 80c-49.132 0-93.305-32-161.913-32-31.301 0-58.303 6.482-80.721 15.168a48.04 48.04 0 0 0 2.142-20.727C93.067 19.575 74.167 1.594 51.201.104 23.242-1.71 0 20.431 0 48c0 17.764 9.657 33.262 24 41.562V496c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-83.443C109.869 395.28 143.259 384 199.826 384c49.132 0 93.305 32 161.913 32 58.479 0 101.972-22.617 128.548-39.981C503.846 367.161 512 352.051 512 335.855V95.937c0-34.459-35.264-57.768-66.904-44.117C409.193 67.309 371.641 80 336.174 80zM464 336c-21.783 15.412-60.824 32-102.261 32-59.945 0-102.002-32-161.913-32-43.361 0-96.379 9.403-127.826 24V128c21.784-15.412 60.824-32 102.261-32 59.945 0 102.002 32 161.913 32 43.271 0 96.32-17.366 127.826-32v240z\\\"}}},\\\"flag-checkered\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"notice\\\",\\\"notification\\\",\\\"notify\\\",\\\"report\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f11e\\\",\\\"label\\\":\\\"flag-checkered\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M466.515 66.928C487.731 57.074 512 72.551 512 95.944v243.1c0 10.526-5.161 20.407-13.843 26.358-35.837 24.564-74.335 40.858-122.505 40.858-67.373 0-111.63-34.783-165.217-34.783-50.853 0-86.124 10.058-114.435 22.122V488c0 13.255-10.745 24-24 24H56c-13.255 0-24-10.745-24-24V101.945C17.497 91.825 8 75.026 8 56 8 24.296 34.345-1.254 66.338.048c28.468 1.158 51.779 23.968 53.551 52.404.52 8.342-.81 16.31-3.586 23.562C137.039 68.384 159.393 64 184.348 64c67.373 0 111.63 34.783 165.217 34.783 40.496 0 82.612-15.906 116.95-31.855zM96 134.63v70.49c29-10.67 51.18-17.83 73.6-20.91v-71.57c-23.5 2.17-40.44 9.79-73.6 21.99zm220.8 9.19c-26.417-4.672-49.886-13.979-73.6-21.34v67.42c24.175 6.706 47.566 16.444 73.6 22.31v-68.39zm-147.2 40.39v70.04c32.796-2.978 53.91-.635 73.6 3.8V189.9c-25.247-7.035-46.581-9.423-73.6-5.69zm73.6 142.23c26.338 4.652 49.732 13.927 73.6 21.34v-67.41c-24.277-6.746-47.54-16.45-73.6-22.32v68.39zM96 342.1c23.62-8.39 47.79-13.84 73.6-16.56v-71.29c-26.11 2.35-47.36 8.04-73.6 17.36v70.49zm368-221.6c-21.3 8.85-46.59 17.64-73.6 22.47v71.91c27.31-4.36 50.03-14.1 73.6-23.89V120.5zm0 209.96v-70.49c-22.19 14.2-48.78 22.61-73.6 26.02v71.58c25.07-2.38 48.49-11.04 73.6-27.11zM316.8 212.21v68.16c25.664 7.134 46.616 9.342 73.6 5.62v-71.11c-25.999 4.187-49.943 2.676-73.6-2.67z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M466.515 66.928C487.731 57.074 512 72.551 512 95.944v243.1c0 10.526-5.161 20.407-13.843 26.358-35.837 24.564-74.335 40.858-122.505 40.858-67.373 0-111.63-34.783-165.217-34.783-50.853 0-86.124 10.058-114.435 22.122V488c0 13.255-10.745 24-24 24H56c-13.255 0-24-10.745-24-24V101.945C17.497 91.825 8 75.026 8 56 8 24.296 34.345-1.254 66.338.048c28.468 1.158 51.779 23.968 53.551 52.404.52 8.342-.81 16.31-3.586 23.562C137.039 68.384 159.393 64 184.348 64c67.373 0 111.63 34.783 165.217 34.783 40.496 0 82.612-15.906 116.95-31.855zM96 134.63v70.49c29-10.67 51.18-17.83 73.6-20.91v-71.57c-23.5 2.17-40.44 9.79-73.6 21.99zm220.8 9.19c-26.417-4.672-49.886-13.979-73.6-21.34v67.42c24.175 6.706 47.566 16.444 73.6 22.31v-68.39zm-147.2 40.39v70.04c32.796-2.978 53.91-.635 73.6 3.8V189.9c-25.247-7.035-46.581-9.423-73.6-5.69zm73.6 142.23c26.338 4.652 49.732 13.927 73.6 21.34v-67.41c-24.277-6.746-47.54-16.45-73.6-22.32v68.39zM96 342.1c23.62-8.39 47.79-13.84 73.6-16.56v-71.29c-26.11 2.35-47.36 8.04-73.6 17.36v70.49zm368-221.6c-21.3 8.85-46.59 17.64-73.6 22.47v71.91c27.31-4.36 50.03-14.1 73.6-23.89V120.5zm0 209.96v-70.49c-22.19 14.2-48.78 22.61-73.6 26.02v71.58c25.07-2.38 48.49-11.04 73.6-27.11zM316.8 212.21v68.16c25.664 7.134 46.616 9.342 73.6 5.62v-71.11c-25.999 4.187-49.943 2.676-73.6-2.67z\\\"}}},\\\"flask\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"beaker\\\",\\\"experimental\\\",\\\"labs\\\",\\\"science\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0c3\\\",\\\"label\\\":\\\"Flask\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\\\"}}},\\\"flickr\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f16e\\\",\\\"label\\\":\\\"Flickr\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z\\\"}}},\\\"flipboard\\\":{\\\"changes\\\":[\\\"5.0.5\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f44d\\\",\\\"label\\\":\\\"Flipboard\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821384,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z\\\"}}},\\\"flushed\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"embarrassed\\\",\\\"emoticon\\\",\\\"face\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f579\\\",\\\"label\\\":\\\"Flushed Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111666,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111618,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm96-312c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-112 24c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm-80 48c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm160 144H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\\\"}}},\\\"fly\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f417\\\",\\\"label\\\":\\\"Fly\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1507669930672,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z\\\"}}},\\\"folder\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f07b\\\",\\\"label\\\":\\\"Folder\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-6 272H54c-3.314 0-6-2.678-6-5.992V117.992A5.993 5.993 0 0 1 54 112h134.118l64 64H458a6 6 0 0 1 6 6v212a6 6 0 0 1-6 6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-6 272H54c-3.314 0-6-2.678-6-5.992V117.992A5.993 5.993 0 0 1 54 112h134.118l64 64H458a6 6 0 0 1 6 6v212a6 6 0 0 1-6 6z\\\"}}},\\\"folder-open\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f07c\\\",\\\"label\\\":\\\"Folder Open\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M527.943 224H480v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h400a48.001 48.001 0 0 0 40.704-22.56l79.942-128c19.948-31.917-3.038-73.44-40.703-73.44zM54 112h134.118l64 64H426a6 6 0 0 1 6 6v42H152a48 48 0 0 0-41.098 23.202L48 351.449V117.993A5.993 5.993 0 0 1 54 112zm394 288H72l77.234-128H528l-80 128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M527.943 224H480v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h400a48.001 48.001 0 0 0 40.704-22.56l79.942-128c19.948-31.917-3.038-73.44-40.703-73.44zM54 112h134.118l64 64H426a6 6 0 0 1 6 6v42H152a48 48 0 0 0-41.098 23.202L48 351.449V117.993A5.993 5.993 0 0 1 54 112zm394 288H72l77.234-128H528l-80 128z\\\"}}},\\\"font\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"text\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f031\\\",\\\"label\\\":\\\"font\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M152 416h-24.013l26.586-80.782H292.8L319.386 416H296c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h136c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16h-26.739L275.495 42.746A16 16 0 0 0 260.382 32h-72.766a16 16 0 0 0-15.113 10.746L42.739 416H16c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h136c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16zm64.353-271.778c4.348-15.216 6.61-28.156 7.586-34.644.839 6.521 2.939 19.476 7.727 34.706l41.335 124.006h-98.619l41.971-124.068z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M152 416h-24.013l26.586-80.782H292.8L319.386 416H296c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h136c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16h-26.739L275.495 42.746A16 16 0 0 0 260.382 32h-72.766a16 16 0 0 0-15.113 10.746L42.739 416H16c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h136c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16zm64.353-271.778c4.348-15.216 6.61-28.156 7.586-34.644.839 6.521 2.939 19.476 7.727 34.706l41.335 124.006h-98.619l41.971-124.068z\\\"}}},\\\"font-awesome\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"meanpath\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2b4\\\",\\\"label\\\":\\\"Font Awesome\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M397.8 32H50.2C22.7 32 0 54.7 0 82.2v347.6C0 457.3 22.7 480 50.2 480h347.6c27.5 0 50.2-22.7 50.2-50.2V82.2c0-27.5-22.7-50.2-50.2-50.2zm-45.4 284.3c0 4.2-3.6 6-7.8 7.8-16.7 7.2-34.6 13.7-53.8 13.7-26.9 0-39.4-16.7-71.7-16.7-23.3 0-47.8 8.4-67.5 17.3-1.2.6-2.4.6-3.6 1.2V385c0 1.8 0 3.6-.6 4.8v1.2c-2.4 8.4-10.2 14.3-19.1 14.3-11.3 0-20.3-9-20.3-20.3V166.4c-7.8-6-13.1-15.5-13.1-26.3 0-18.5 14.9-33.5 33.5-33.5 18.5 0 33.5 14.9 33.5 33.5 0 10.8-4.8 20.3-13.1 26.3v18.5c1.8-.6 3.6-1.2 5.4-2.4 18.5-7.8 40.6-14.3 61.5-14.3 22.7 0 40.6 6 60.9 13.7 4.2 1.8 8.4 2.4 13.1 2.4 22.7 0 47.8-16.1 53.8-16.1 4.8 0 9 3.6 9 7.8v140.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M397.8 32H50.2C22.7 32 0 54.7 0 82.2v347.6C0 457.3 22.7 480 50.2 480h347.6c27.5 0 50.2-22.7 50.2-50.2V82.2c0-27.5-22.7-50.2-50.2-50.2zm-45.4 284.3c0 4.2-3.6 6-7.8 7.8-16.7 7.2-34.6 13.7-53.8 13.7-26.9 0-39.4-16.7-71.7-16.7-23.3 0-47.8 8.4-67.5 17.3-1.2.6-2.4.6-3.6 1.2V385c0 1.8 0 3.6-.6 4.8v1.2c-2.4 8.4-10.2 14.3-19.1 14.3-11.3 0-20.3-9-20.3-20.3V166.4c-7.8-6-13.1-15.5-13.1-26.3 0-18.5 14.9-33.5 33.5-33.5 18.5 0 33.5 14.9 33.5 33.5 0 10.8-4.8 20.3-13.1 26.3v18.5c1.8-.6 3.6-1.2 5.4-2.4 18.5-7.8 40.6-14.3 61.5-14.3 22.7 0 40.6 6 60.9 13.7 4.2 1.8 8.4 2.4 13.1 2.4 22.7 0 47.8-16.1 53.8-16.1 4.8 0 9 3.6 9 7.8v140.3z\\\"}}},\\\"font-awesome-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f35c\\\",\\\"label\\\":\\\"Alternate Font Awesome\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M397.8 67.8c7.8 0 14.3 6.6 14.3 14.3v347.6c0 7.8-6.6 14.3-14.3 14.3H50.2c-7.8 0-14.3-6.6-14.3-14.3V82.2c0-7.8 6.6-14.3 14.3-14.3h347.6m0-35.9H50.2C22.7 32 0 54.7 0 82.2v347.6C0 457.3 22.7 480 50.2 480h347.6c27.5 0 50.2-22.7 50.2-50.2V82.2c0-27.5-22.7-50.2-50.2-50.2zm-58.5 139.2c-6 0-29.9 15.5-52.6 15.5-4.2 0-8.4-.6-12.5-2.4-19.7-7.8-37-13.7-59.1-13.7-20.3 0-41.8 6.6-59.7 13.7-1.8.6-3.6 1.2-4.8 1.8v-17.9c7.8-6 12.5-14.9 12.5-25.7 0-17.9-14.3-32.3-32.3-32.3s-32.3 14.3-32.3 32.3c0 10.2 4.8 19.7 12.5 25.7v212.1c0 10.8 9 19.7 19.7 19.7 9 0 16.1-6 18.5-13.7V385c.6-1.8.6-3 .6-4.8V336c1.2 0 2.4-.6 3-1.2 19.7-8.4 43-16.7 65.7-16.7 31.1 0 43 16.1 69.3 16.1 18.5 0 36.4-6.6 52-13.7 4.2-1.8 7.2-3.6 7.2-7.8V178.3c1.8-4.1-2.3-7.1-7.7-7.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M397.8 67.8c7.8 0 14.3 6.6 14.3 14.3v347.6c0 7.8-6.6 14.3-14.3 14.3H50.2c-7.8 0-14.3-6.6-14.3-14.3V82.2c0-7.8 6.6-14.3 14.3-14.3h347.6m0-35.9H50.2C22.7 32 0 54.7 0 82.2v347.6C0 457.3 22.7 480 50.2 480h347.6c27.5 0 50.2-22.7 50.2-50.2V82.2c0-27.5-22.7-50.2-50.2-50.2zm-58.5 139.2c-6 0-29.9 15.5-52.6 15.5-4.2 0-8.4-.6-12.5-2.4-19.7-7.8-37-13.7-59.1-13.7-20.3 0-41.8 6.6-59.7 13.7-1.8.6-3.6 1.2-4.8 1.8v-17.9c7.8-6 12.5-14.9 12.5-25.7 0-17.9-14.3-32.3-32.3-32.3s-32.3 14.3-32.3 32.3c0 10.2 4.8 19.7 12.5 25.7v212.1c0 10.8 9 19.7 19.7 19.7 9 0 16.1-6 18.5-13.7V385c.6-1.8.6-3 .6-4.8V336c1.2 0 2.4-.6 3-1.2 19.7-8.4 43-16.7 65.7-16.7 31.1 0 43 16.1 69.3 16.1 18.5 0 36.4-6.6 52-13.7 4.2-1.8 7.2-3.6 7.2-7.8V178.3c1.8-4.1-2.3-7.1-7.7-7.1z\\\"}}},\\\"font-awesome-flag\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.1\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f425\\\",\\\"label\\\":\\\"Font Awesome Flag\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1511282001102,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M444.373 359.424c0 7.168-6.144 10.24-13.312 13.312-28.672 12.288-59.392 23.552-92.16 23.552-46.08 0-67.584-28.672-122.88-28.672-39.936 0-81.92 14.336-115.712 29.696-2.048 1.024-4.096 1.024-6.144 2.048v77.824c0 21.405-16.122 34.816-33.792 34.816-19.456 0-34.816-15.36-34.816-34.816V102.4C12.245 92.16 3.029 75.776 3.029 57.344 3.029 25.6 28.629 0 60.373 0s57.344 25.6 57.344 57.344c0 18.432-8.192 34.816-22.528 45.056v31.744c4.124-1.374 58.768-28.672 114.688-28.672 65.27 0 97.676 27.648 126.976 27.648 38.912 0 81.92-27.648 92.16-27.648 8.192 0 15.36 6.144 15.36 13.312v240.64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M444.373 359.424c0 7.168-6.144 10.24-13.312 13.312-28.672 12.288-59.392 23.552-92.16 23.552-46.08 0-67.584-28.672-122.88-28.672-39.936 0-81.92 14.336-115.712 29.696-2.048 1.024-4.096 1.024-6.144 2.048v77.824c0 21.405-16.122 34.816-33.792 34.816-19.456 0-34.816-15.36-34.816-34.816V102.4C12.245 92.16 3.029 75.776 3.029 57.344 3.029 25.6 28.629 0 60.373 0s57.344 25.6 57.344 57.344c0 18.432-8.192 34.816-22.528 45.056v31.744c4.124-1.374 58.768-28.672 114.688-28.672 65.27 0 97.676 27.648 126.976 27.648 38.912 0 81.92-27.648 92.16-27.648 8.192 0 15.36 6.144 15.36 13.312v240.64z\\\"}}},\\\"font-awesome-logo-full\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[\\\"Font Awesome\\\"],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"regular\\\",\\\"solid\\\",\\\"brands\\\"],\\\"unicode\\\":\\\"f4e6\\\",\\\"label\\\":\\\"Font Awesome Full Logo\\\",\\\"private\\\":true,\\\"svg\\\":{\\\"regular\\\":{\\\"last_modified\\\":1525209365049,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 3992 512\\\\\\\"><path d=\\\\\\\"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"3992\\\",\\\"512\\\"],\\\"width\\\":3992,\\\"height\\\":512,\\\"path\\\":\\\"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\\\"},\\\"solid\\\":{\\\"last_modified\\\":1525209365067,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 3992 512\\\\\\\"><path d=\\\\\\\"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"3992\\\",\\\"512\\\"],\\\"width\\\":3992,\\\"height\\\":512,\\\"path\\\":\\\"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\\\"},\\\"brands\\\":{\\\"last_modified\\\":1525209365019,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 3992 512\\\\\\\"><path d=\\\\\\\"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"3992\\\",\\\"512\\\"],\\\"width\\\":3992,\\\"height\\\":512,\\\"path\\\":\\\"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\\\"}}},\\\"fonticons\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f280\\\",\\\"label\\\":\\\"Fonticons\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32v448h448V32H0zm167.4 196h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4zM364 414.7H261.3v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm-21.9-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6-21.9 24.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32v448h448V32H0zm167.4 196h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4zM364 414.7H261.3v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm-21.9-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6-21.9 24.2z\\\"}}},\\\"fonticons-fi\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3a2\\\",\\\"label\\\":\\\"Fonticons Fi\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z\\\"}}},\\\"football-ball\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f44e\\\",\\\"label\\\":\\\"Football Ball\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527995,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\\\"}}},\\\"fort-awesome\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"castle\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f286\\\",\\\"label\\\":\\\"Fort Awesome\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426581998,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z\\\"}}},\\\"fort-awesome-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"castle\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3a3\\\",\\\"label\\\":\\\"Alternate Fort Awesome\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M211.7 241.1v51.7c0 2.1-1.6 3.7-3.7 3.7h-22.2c-2.1 0-3.7-1.6-3.7-3.7v-51.7c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7zm114.5-3.7H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm-29.1 263.2c-.9.1-1.7.3-2.6.4-1 .2-2.1.3-3.1.5-.9.1-1.8.3-2.8.4-1 .1-2 .3-3 .4-1 .1-2 .2-2.9.3-1 .1-1.9.2-2.9.3-1 .1-2.1.2-3.1.3-.9.1-1.8.2-2.7.2-1.1.1-2.3.1-3.4.2-.8 0-1.7.1-2.5.1-1.3.1-2.6.1-3.9.1-.7 0-1.4.1-2.1.1-2 0-4 .1-6 .1s-4 0-6-.1c-.7 0-1.4 0-2.1-.1-1.3 0-2.6-.1-3.9-.1-.8 0-1.7-.1-2.5-.1-1.1-.1-2.3-.1-3.4-.2-.9-.1-1.8-.1-2.7-.2-1-.1-2.1-.2-3.1-.3-1-.1-1.9-.2-2.9-.3-1-.1-2-.2-2.9-.3-1-.1-2-.2-3-.4-.9-.1-1.8-.3-2.8-.4-1-.1-2.1-.3-3.1-.5-.9-.1-1.7-.3-2.6-.4-65.6-10.9-122.5-47.7-160-99.4-.2-.2-.3-.5-.5-.7-.8-1.1-1.6-2.2-2.3-3.3-.3-.4-.6-.8-.8-1.2-.7-1.1-1.4-2.1-2.1-3.2-.3-.5-.6-.9-.9-1.4-.7-1.1-1.4-2.1-2-3.2-.3-.5-.6-.9-.9-1.4-.7-1.1-1.3-2.2-2-3.3-.2-.4-.5-.8-.7-1.2-2.4-4-4.6-8.1-6.8-12.2-.1-.2-.2-.3-.3-.5-.6-1.1-1.1-2.2-1.7-3.3-.3-.6-.6-1.1-.8-1.7-.5-1-1-2.1-1.5-3.1-.3-.7-.6-1.3-.9-2-.5-1-.9-2-1.4-3l-.9-2.1c-.4-1-.9-2-1.3-3-.3-.7-.6-1.5-.9-2.2l-1.2-3c-.3-.8-.6-1.5-.9-2.3-.4-1-.8-2-1.1-3-.3-.9-.6-1.8-1-2.8-.6-1.6-1.1-3.3-1.7-4.9-.3-.9-.6-1.8-.9-2.8-.3-.9-.5-1.8-.8-2.7-.3-.9-.6-1.9-.8-2.8-.3-.9-.5-1.8-.8-2.7-.3-1-.5-1.9-.8-2.9-.2-.9-.5-1.8-.7-2.7-.3-1-.5-2-.7-3-.2-.9-.4-1.7-.6-2.6-.2-1.1-.5-2.2-.7-3.2-.2-.8-.3-1.6-.5-2.4-.3-1.3-.5-2.7-.8-4-.1-.6-.2-1.1-.3-1.7l-.9-5.7c-.1-.6-.2-1.3-.3-1.9-.2-1.3-.4-2.6-.5-3.9-.1-.8-.2-1.5-.3-2.3-.1-1.2-.3-2.4-.4-3.6-.1-.8-.2-1.6-.2-2.4-.1-1.2-.2-2.4-.3-3.5-.1-.8-.1-1.6-.2-2.4-.1-1.2-.2-2.4-.2-3.7 0-.8-.1-1.5-.1-2.3-.1-1.3-.1-2.7-.2-4 0-.7 0-1.3-.1-2 0-2-.1-4-.1-6 0-53.5 16.9-103 45.8-143.6 2.3-3.2 4.7-6.4 7.1-9.5 4.9-6.2 10.1-12.3 15.6-18 2.7-2.9 5.5-5.7 8.4-8.4 2.9-2.7 5.8-5.4 8.8-8 4.5-3.9 9.1-7.6 13.9-11.2 1.6-1.2 3.2-2.4 4.8-3.5C140 34.2 171.7 20.1 206 13c16.1-3.3 32.9-5 50-5s33.8 1.7 50 5c34.3 7 66 21.1 93.6 40.7 1.6 1.2 3.2 2.3 4.8 3.5 4.8 3.6 9.4 7.3 13.9 11.2 12 10.4 23 21.9 32.8 34.4 2.5 3.1 4.8 6.3 7.1 9.5C487.1 153 504 202.5 504 256c0 2 0 4-.1 6 0 .7 0 1.3-.1 2 0 1.3-.1 2.7-.2 4 0 .8-.1 1.5-.1 2.3-.1 1.2-.1 2.4-.2.7-.1.8-.1 1.6-.2 2.4-.1 1.2-.2 2.4-.3 3.5-.1.8-.2 1.6-.2 2.4-.1 1.2-.3 2.4-.4 3.6-.1.8-.2 1.5-.3 2.3-.2 1.3-.4 2.6-.5 3.9-.1.6-.2 1.3-.3 1.9l-.9 5.7c-.1.6-.2 1.1-.3 1.7-.2 1.3-.5 2.7-.8 4-.2.8-.3 1.6-.5 2.4-.2 1.1-.5 2.2-.7 3.2-.2.9-.4 1.7-.6 2.6-.2 1-.5 2-.7 3-.2.9-.5 1.8-.7 2.7-.3 1-.5 1.9-.8 2.9-.2.9-.5 1.8-.8 2.7-.3.9-.6 1.9-.8 2.8-.3.9-.5 1.8-.8 2.7-.3.9-.6 1.8-.9 2.8-.5 1.6-1.1 3.3-1.7 4.9-.3.9-.6 1.8-1 2.8-.4 1-.7 2-1.1 3-.3.8-.6 1.5-.9 2.3l-1.2 3c-.3.7-.6 1.5-.9 2.2-.4 1-.8 2-1.3 3l-.9 2.1c-.4 1-.9 2-1.4 3-.3.7-.6 1.3-.9 2-.5 1-1 2.1-1.5 3.1-.3.6-.6 1.1-.8 1.7-.6 1.1-1.1 2.2-1.7 3.3-.1.2-.2.3-.3.5-2.2 4.1-4.4 8.2-6.8 12.2-.2.4-.5.8-.7 1.2-.7 1.1-1.3 2.2-2 3.3-.3.5-.6.9-.9 1.4-.7 1.1-1.4 2.1-2 3.2-.3.5-.6.9-.9 1.4-.7 1.1-1.4 2.1-2.1 3.2-.3.4-.6.8-.8 1.2-.8 1.1-1.5 2.2-2.3 3.3-.2.2-.3.5-.5.7-37.6 54.7-94.5 91.4-160.1 102.4zm117.3-86.2c13-13 24.2-27.4 33.6-42.9v-71.3c0-2.1-1.6-3.7-3.7-3.7h-22.2c-2.1 0-3.7 1.6-3.7 3.7V326h-29.5V182c0-2.1-1.6-3.7-3.7-3.7h-22.1c-2.1 0-3.7 1.6-3.7 3.7v25.9h-29.5V182c0-2.1-1.6-3.7-3.7-3.7H304c-2.1 0-3.7 1.6-3.7 3.7v25.9h-29.5V182c0-4.8-6.5-3.7-9.5-3.7v-30.7c6.7-1.6 13.8-2.8 20.8-2.8 8.8 0 16.8 3.5 25.4 3.5 3.7 0 22.4-.9 22.4-6.5V93.4c0-2.1-1.6-3.7-3.7-3.7-4.2 0-12.2 3.5-19.4 3.5-7.9 0-16.9-3.5-26.3-3.5-6.5 0-12.9.9-19.2 2.3v-3.9c4.4-2.1 7.4-6.7 7.4-11.5 0-16.8-25.4-16.8-25.4 0 0 4.8 3 9.5 7.4 11.5v90.2c-3 0-9.5-1.1-9.5 3.7v25.9h-29.5V182c0-2.1-1.6-3.7-3.7-3.7h-22.2c-2.1 0-3.7 1.6-3.7 3.7v25.9h-29.5V182c0-2.1-1.6-3.7-3.7-3.7h-22.1c-2.1 0-3.7 1.6-3.7 3.7v144H93.5v-25.8c0-2.1-1.6-3.7-3.7-3.7H67.7c-2.1 0-3.7 1.6-3.7 3.7v71.3c9.4 15.5 20.6 29.9 33.6 42.9 20.6 20.6 44.5 36.7 71.2 48 13.9 5.9 28.2 10.3 42.9 13.2v-75.8c0-58.6 88.6-58.6 88.6 0v75.8c14.7-2.9 29-7.4 42.9-13.2 26.7-11.3 50.6-27.4 71.2-48\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M211.7 241.1v51.7c0 2.1-1.6 3.7-3.7 3.7h-22.2c-2.1 0-3.7-1.6-3.7-3.7v-51.7c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7zm114.5-3.7H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm-29.1 263.2c-.9.1-1.7.3-2.6.4-1 .2-2.1.3-3.1.5-.9.1-1.8.3-2.8.4-1 .1-2 .3-3 .4-1 .1-2 .2-2.9.3-1 .1-1.9.2-2.9.3-1 .1-2.1.2-3.1.3-.9.1-1.8.2-2.7.2-1.1.1-2.3.1-3.4.2-.8 0-1.7.1-2.5.1-1.3.1-2.6.1-3.9.1-.7 0-1.4.1-2.1.1-2 0-4 .1-6 .1s-4 0-6-.1c-.7 0-1.4 0-2.1-.1-1.3 0-2.6-.1-3.9-.1-.8 0-1.7-.1-2.5-.1-1.1-.1-2.3-.1-3.4-.2-.9-.1-1.8-.1-2.7-.2-1-.1-2.1-.2-3.1-.3-1-.1-1.9-.2-2.9-.3-1-.1-2-.2-2.9-.3-1-.1-2-.2-3-.4-.9-.1-1.8-.3-2.8-.4-1-.1-2.1-.3-3.1-.5-.9-.1-1.7-.3-2.6-.4-65.6-10.9-122.5-47.7-160-99.4-.2-.2-.3-.5-.5-.7-.8-1.1-1.6-2.2-2.3-3.3-.3-.4-.6-.8-.8-1.2-.7-1.1-1.4-2.1-2.1-3.2-.3-.5-.6-.9-.9-1.4-.7-1.1-1.4-2.1-2-3.2-.3-.5-.6-.9-.9-1.4-.7-1.1-1.3-2.2-2-3.3-.2-.4-.5-.8-.7-1.2-2.4-4-4.6-8.1-6.8-12.2-.1-.2-.2-.3-.3-.5-.6-1.1-1.1-2.2-1.7-3.3-.3-.6-.6-1.1-.8-1.7-.5-1-1-2.1-1.5-3.1-.3-.7-.6-1.3-.9-2-.5-1-.9-2-1.4-3l-.9-2.1c-.4-1-.9-2-1.3-3-.3-.7-.6-1.5-.9-2.2l-1.2-3c-.3-.8-.6-1.5-.9-2.3-.4-1-.8-2-1.1-3-.3-.9-.6-1.8-1-2.8-.6-1.6-1.1-3.3-1.7-4.9-.3-.9-.6-1.8-.9-2.8-.3-.9-.5-1.8-.8-2.7-.3-.9-.6-1.9-.8-2.8-.3-.9-.5-1.8-.8-2.7-.3-1-.5-1.9-.8-2.9-.2-.9-.5-1.8-.7-2.7-.3-1-.5-2-.7-3-.2-.9-.4-1.7-.6-2.6-.2-1.1-.5-2.2-.7-3.2-.2-.8-.3-1.6-.5-2.4-.3-1.3-.5-2.7-.8-4-.1-.6-.2-1.1-.3-1.7l-.9-5.7c-.1-.6-.2-1.3-.3-1.9-.2-1.3-.4-2.6-.5-3.9-.1-.8-.2-1.5-.3-2.3-.1-1.2-.3-2.4-.4-3.6-.1-.8-.2-1.6-.2-2.4-.1-1.2-.2-2.4-.3-3.5-.1-.8-.1-1.6-.2-2.4-.1-1.2-.2-2.4-.2-3.7 0-.8-.1-1.5-.1-2.3-.1-1.3-.1-2.7-.2-4 0-.7 0-1.3-.1-2 0-2-.1-4-.1-6 0-53.5 16.9-103 45.8-143.6 2.3-3.2 4.7-6.4 7.1-9.5 4.9-6.2 10.1-12.3 15.6-18 2.7-2.9 5.5-5.7 8.4-8.4 2.9-2.7 5.8-5.4 8.8-8 4.5-3.9 9.1-7.6 13.9-11.2 1.6-1.2 3.2-2.4 4.8-3.5C140 34.2 171.7 20.1 206 13c16.1-3.3 32.9-5 50-5s33.8 1.7 50 5c34.3 7 66 21.1 93.6 40.7 1.6 1.2 3.2 2.3 4.8 3.5 4.8 3.6 9.4 7.3 13.9 11.2 12 10.4 23 21.9 32.8 34.4 2.5 3.1 4.8 6.3 7.1 9.5C487.1 153 504 202.5 504 256c0 2 0 4-.1 6 0 .7 0 1.3-.1 2 0 1.3-.1 2.7-.2 4 0 .8-.1 1.5-.1 2.3-.1 1.2-.1 2.4-.2.7-.1.8-.1 1.6-.2 2.4-.1 1.2-.2 2.4-.3 3.5-.1.8-.2 1.6-.2 2.4-.1 1.2-.3 2.4-.4 3.6-.1.8-.2 1.5-.3 2.3-.2 1.3-.4 2.6-.5 3.9-.1.6-.2 1.3-.3 1.9l-.9 5.7c-.1.6-.2 1.1-.3 1.7-.2 1.3-.5 2.7-.8 4-.2.8-.3 1.6-.5 2.4-.2 1.1-.5 2.2-.7 3.2-.2.9-.4 1.7-.6 2.6-.2 1-.5 2-.7 3-.2.9-.5 1.8-.7 2.7-.3 1-.5 1.9-.8 2.9-.2.9-.5 1.8-.8 2.7-.3.9-.6 1.9-.8 2.8-.3.9-.5 1.8-.8 2.7-.3.9-.6 1.8-.9 2.8-.5 1.6-1.1 3.3-1.7 4.9-.3.9-.6 1.8-1 2.8-.4 1-.7 2-1.1 3-.3.8-.6 1.5-.9 2.3l-1.2 3c-.3.7-.6 1.5-.9 2.2-.4 1-.8 2-1.3 3l-.9 2.1c-.4 1-.9 2-1.4 3-.3.7-.6 1.3-.9 2-.5 1-1 2.1-1.5 3.1-.3.6-.6 1.1-.8 1.7-.6 1.1-1.1 2.2-1.7 3.3-.1.2-.2.3-.3.5-2.2 4.1-4.4 8.2-6.8 12.2-.2.4-.5.8-.7 1.2-.7 1.1-1.3 2.2-2 3.3-.3.5-.6.9-.9 1.4-.7 1.1-1.4 2.1-2 3.2-.3.5-.6.9-.9 1.4-.7 1.1-1.4 2.1-2.1 3.2-.3.4-.6.8-.8 1.2-.8 1.1-1.5 2.2-2.3 3.3-.2.2-.3.5-.5.7-37.6 54.7-94.5 91.4-160.1 102.4zm117.3-86.2c13-13 24.2-27.4 33.6-42.9v-71.3c0-2.1-1.6-3.7-3.7-3.7h-22.2c-2.1 0-3.7 1.6-3.7 3.7V326h-29.5V182c0-2.1-1.6-3.7-3.7-3.7h-22.1c-2.1 0-3.7 1.6-3.7 3.7v25.9h-29.5V182c0-2.1-1.6-3.7-3.7-3.7H304c-2.1 0-3.7 1.6-3.7 3.7v25.9h-29.5V182c0-4.8-6.5-3.7-9.5-3.7v-30.7c6.7-1.6 13.8-2.8 20.8-2.8 8.8 0 16.8 3.5 25.4 3.5 3.7 0 22.4-.9 22.4-6.5V93.4c0-2.1-1.6-3.7-3.7-3.7-4.2 0-12.2 3.5-19.4 3.5-7.9 0-16.9-3.5-26.3-3.5-6.5 0-12.9.9-19.2 2.3v-3.9c4.4-2.1 7.4-6.7 7.4-11.5 0-16.8-25.4-16.8-25.4 0 0 4.8 3 9.5 7.4 11.5v90.2c-3 0-9.5-1.1-9.5 3.7v25.9h-29.5V182c0-2.1-1.6-3.7-3.7-3.7h-22.2c-2.1 0-3.7 1.6-3.7 3.7v25.9h-29.5V182c0-2.1-1.6-3.7-3.7-3.7h-22.1c-2.1 0-3.7 1.6-3.7 3.7v144H93.5v-25.8c0-2.1-1.6-3.7-3.7-3.7H67.7c-2.1 0-3.7 1.6-3.7 3.7v71.3c9.4 15.5 20.6 29.9 33.6 42.9 20.6 20.6 44.5 36.7 71.2 48 13.9 5.9 28.2 10.3 42.9 13.2v-75.8c0-58.6 88.6-58.6 88.6 0v75.8c14.7-2.9 29-7.4 42.9-13.2 26.7-11.3 50.6-27.4 71.2-48\\\"}}},\\\"forumbee\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f211\\\",\\\"label\\\":\\\"Forumbee\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z\\\"}}},\\\"forward\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"forward\\\",\\\"next\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f04e\\\",\\\"label\\\":\\\"forward\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\\\"}}},\\\"foursquare\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f180\\\",\\\"label\\\":\\\"Foursquare\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 368 512\\\\\\\"><path d=\\\\\\\"M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"368\\\",\\\"512\\\"],\\\"width\\\":368,\\\"height\\\":512,\\\"path\\\":\\\"M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z\\\"}}},\\\"free-code-camp\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2c5\\\",\\\"label\\\":\\\"Free Code Camp\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M69.3 144.5c-41 68.5-36.4 163 1 227C92.5 409.7 120 423.9 120 438c0 6.8-6 13-12.8 13C87.7 451 8 375.5 8 253.2c0-111.5 78-186 97.1-186 6 0 14.9 4.8 14.9 11.1 0 12.7-28.3 28.6-50.7 66.2zm195.8 213.8c4.5 1.8 12.3 5.2 12.3-1.2 0-2.7-2.2-2.9-4.3-3.6-8.5-3.4-14-7.7-19.1-15.2-8.2-12.1-10.1-24.2-10.1-38.6 0-32.1 44.2-37.9 44.2-70 0-12.3-7.7-15.9-7.7-19.3 0-2.2.7-2.2 2.9-2.2 8 0 19.1 13.3 22.5 19.8 2.2 4.6 2.4 6 2.4 11.1 0 7-.7 14.2-.7 21.3 0 27 31.9 19.8 31.9 6.8 0-6-3.6-11.6-3.6-17.4 0-.7 0-1.2.7-1.2 3.4 0 9.4 7.7 11.1 10.1 5.8 8.9 8.5 20.8 8.5 31.4 0 32.4-29.5 49-29.5 56 0 1 2.9 7.7 12.1 1.9 29.7-15.1 53.1-47.6 53.1-89.8 0-33.6-8.7-57.7-32.1-82.6-3.9-4.1-16.4-16.9-22.5-16.9-8.2 0 7.2 18.6 7.2 31.2 0 7.2-4.8 12.3-12.3 12.3-11.6 0-14.5-25.4-15.9-33.3-5.8-33.8-12.8-58.2-46.4-74.1-10.4-5-36.5-11.8-36.5-2.2 0 2.4 2.7 4.1 4.6 5.1 9.2 5.6 19.6 21.4 19.6 38.2 0 46.1-57.7 88.2-57.7 136.2-.2 40.3 28.1 72.6 65.3 86.2zM470.4 67c-6 0-14.4 6.5-14.4 12.6 0 8.7 12.1 19.6 17.6 25.4 81.6 85.1 78.6 214.3 17.6 291-7 8.9-35.3 35.3-35.3 43.5 0 5.1 8.2 11.4 13.2 11.4 25.4 0 98.8-80.8 98.8-185.7C568 145.9 491.8 67 470.4 67zm-42.3 323.1H167c-9.4 0-15.5 7.5-15.5 16.4 0 8.5 7 15.5 15.5 15.5h261.1c9.4 0 11.9-7.5 11.9-16.4 0-8.5-3.5-15.5-11.9-15.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M69.3 144.5c-41 68.5-36.4 163 1 227C92.5 409.7 120 423.9 120 438c0 6.8-6 13-12.8 13C87.7 451 8 375.5 8 253.2c0-111.5 78-186 97.1-186 6 0 14.9 4.8 14.9 11.1 0 12.7-28.3 28.6-50.7 66.2zm195.8 213.8c4.5 1.8 12.3 5.2 12.3-1.2 0-2.7-2.2-2.9-4.3-3.6-8.5-3.4-14-7.7-19.1-15.2-8.2-12.1-10.1-24.2-10.1-38.6 0-32.1 44.2-37.9 44.2-70 0-12.3-7.7-15.9-7.7-19.3 0-2.2.7-2.2 2.9-2.2 8 0 19.1 13.3 22.5 19.8 2.2 4.6 2.4 6 2.4 11.1 0 7-.7 14.2-.7 21.3 0 27 31.9 19.8 31.9 6.8 0-6-3.6-11.6-3.6-17.4 0-.7 0-1.2.7-1.2 3.4 0 9.4 7.7 11.1 10.1 5.8 8.9 8.5 20.8 8.5 31.4 0 32.4-29.5 49-29.5 56 0 1 2.9 7.7 12.1 1.9 29.7-15.1 53.1-47.6 53.1-89.8 0-33.6-8.7-57.7-32.1-82.6-3.9-4.1-16.4-16.9-22.5-16.9-8.2 0 7.2 18.6 7.2 31.2 0 7.2-4.8 12.3-12.3 12.3-11.6 0-14.5-25.4-15.9-33.3-5.8-33.8-12.8-58.2-46.4-74.1-10.4-5-36.5-11.8-36.5-2.2 0 2.4 2.7 4.1 4.6 5.1 9.2 5.6 19.6 21.4 19.6 38.2 0 46.1-57.7 88.2-57.7 136.2-.2 40.3 28.1 72.6 65.3 86.2zM470.4 67c-6 0-14.4 6.5-14.4 12.6 0 8.7 12.1 19.6 17.6 25.4 81.6 85.1 78.6 214.3 17.6 291-7 8.9-35.3 35.3-35.3 43.5 0 5.1 8.2 11.4 13.2 11.4 25.4 0 98.8-80.8 98.8-185.7C568 145.9 491.8 67 470.4 67zm-42.3 323.1H167c-9.4 0-15.5 7.5-15.5 16.4 0 8.5 7 15.5 15.5 15.5h261.1c9.4 0 11.9-7.5 11.9-16.4 0-8.5-3.5-15.5-11.9-15.5z\\\"}}},\\\"freebsd\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3a4\\\",\\\"label\\\":\\\"FreeBSD\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z\\\"}}},\\\"frog\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bullfrog\\\",\\\"kermit\\\",\\\"kiss\\\",\\\"prince\\\",\\\"toad\\\",\\\"wart\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f52e\\\",\\\"label\\\":\\\"Frog\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154568,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\\\"}}},\\\"frown\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\",\\\"5.0.9\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"disapprove\\\",\\\"emoticon\\\",\\\"face\\\",\\\"rating\\\",\\\"sad\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f119\\\",\\\"label\\\":\\\"Frowning Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111667,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111618,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z\\\"}}},\\\"frown-open\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"disapprove\\\",\\\"emoticon\\\",\\\"face\\\",\\\"rating\\\",\\\"sad\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f57a\\\",\\\"label\\\":\\\"Frowning Face With Open Mouth\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111667,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111618,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-48-248c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 112c-35.6 0-88.8 21.3-95.8 61.2-2 11.8 9 21.5 20.5 18.1 31.2-9.6 59.4-15.3 75.3-15.3s44.1 5.7 75.3 15.3c11.4 3.5 22.5-6.3 20.5-18.1-7-39.9-60.2-61.2-95.8-61.2z\\\"}}},\\\"fulcrum\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f50b\\\",\\\"label\\\":\\\"Fulcrum\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442520,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 269.66 512\\\\\\\"><path d=\\\\\\\"M70.75 164.14l-35.38 43.55L0 164.14l35.38-43.55 35.37 43.55zM119.23 0L98.69 198.18 47.72 256l50.98 57.82L119.23 512V300.89L78.15 256l41.08-44.89V0zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55-35.38 43.55zm-48.48 46.97L191.5 256l-41.08 44.89V512l20.54-198.18L221.94 256l-50.98-57.82L150.42 0v211.11z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"269.66\\\",\\\"512\\\"],\\\"width\\\":269,\\\"height\\\":512,\\\"path\\\":\\\"M70.75 164.14l-35.38 43.55L0 164.14l35.38-43.55 35.37 43.55zM119.23 0L98.69 198.18 47.72 256l50.98 57.82L119.23 512V300.89L78.15 256l41.08-44.89V0zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55-35.38 43.55zm-48.48 46.97L191.5 256l-41.08 44.89V512l20.54-198.18L221.94 256l-50.98-57.82L150.42 0v211.11z\\\"}}},\\\"futbol\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\",\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"ball\\\",\\\"football\\\",\\\"soccer\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1e3\\\",\\\"label\\\":\\\"Futbol\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1518899527981,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M483.8 179.4C449.8 74.6 352.6 8 248.1 8c-25.4 0-51.2 3.9-76.7 12.2C41.2 62.5-30.1 202.4 12.2 332.6 46.2 437.4 143.4 504 247.9 504c25.4 0 51.2-3.9 76.7-12.2 130.2-42.3 201.5-182.2 159.2-312.4zm-74.5 193.7l-52.2 6.4-43.7-60.9 24.4-75.2 71.1-22.1 38.9 36.4c-.2 30.7-7.4 61.1-21.7 89.2-4.7 9.3-10.7 17.8-16.8 26.2zm0-235.4l-10.4 53.1-70.7 22-64.2-46.5V92.5l47.4-26.2c39.2 13 73.4 38 97.9 71.4zM184.9 66.4L232 92.5v73.8l-64.2 46.5-70.6-22-10.1-52.5c24.3-33.4 57.9-58.6 97.8-71.9zM139 379.5L85.9 373c-14.4-20.1-37.3-59.6-37.8-115.3l39-36.4 71.1 22.2 24.3 74.3-43.5 61.7zm48.2 67l-22.4-48.1 43.6-61.7H287l44.3 61.7-22.4 48.1c-6.2 1.8-57.6 20.4-121.7 0z\\\"}}},\\\"galactic-republic\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f50c\\\",\\\"label\\\":\\\"Galactic Republic\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442520,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z\\\"}}},\\\"galactic-senate\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f50d\\\",\\\"label\\\":\\\"Galactic Senate\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442521,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z\\\"}}},\\\"gamepad\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"controller\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f11b\\\",\\\"label\\\":\\\"Gamepad\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M480 96H160C71.6 96 0 167.6 0 256s71.6 160 160 160c44.8 0 85.2-18.4 114.2-48h91.5c29 29.6 69.5 48 114.2 48 88.4 0 160-71.6 160-160S568.4 96 480 96zM256 276c0 6.6-5.4 12-12 12h-52v52c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-52H76c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h52v-52c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h52c6.6 0 12 5.4 12 12v40zm184 68c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-80c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M480 96H160C71.6 96 0 167.6 0 256s71.6 160 160 160c44.8 0 85.2-18.4 114.2-48h91.5c29 29.6 69.5 48 114.2 48 88.4 0 160-71.6 160-160S568.4 96 480 96zM256 276c0 6.6-5.4 12-12 12h-52v52c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-52H76c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h52v-52c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h52c6.6 0 12 5.4 12 12v40zm184 68c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-80c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\\\"}}},\\\"gas-pump\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f52f\\\",\\\"label\\\":\\\"Gas Pump\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154568,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\\\"}}},\\\"gavel\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"hammer\\\",\\\"judge\\\",\\\"lawyer\\\",\\\"opinion\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0e3\\\",\\\"label\\\":\\\"Gavel\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502810244000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\\\"}}},\\\"gem\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"diamond\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f3a5\\\",\\\"label\\\":\\\"Gem\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M464 0H112c-4 0-7.8 2-10 5.4L2 152.6c-2.9 4.4-2.6 10.2.7 14.2l276 340.8c4.8 5.9 13.8 5.9 18.6 0l276-340.8c3.3-4.1 3.6-9.8.7-14.2L474.1 5.4C471.8 2 468.1 0 464 0zm-19.3 48l63.3 96h-68.4l-51.7-96h56.8zm-202.1 0h90.7l51.7 96H191l51.6-96zm-111.3 0h56.8l-51.7 96H68l63.3-96zm-43 144h51.4L208 352 88.3 192zm102.9 0h193.6L288 435.3 191.2 192zM368 352l68.2-160h51.4L368 352z\\\"}}},\\\"genderless\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f22d\\\",\\\"label\\\":\\\"Genderless\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 288 512\\\\\\\"><path d=\\\\\\\"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"288\\\",\\\"512\\\"],\\\"width\\\":288,\\\"height\\\":512,\\\"path\\\":\\\"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\\\"}}},\\\"get-pocket\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f265\\\",\\\"label\\\":\\\"Get Pocket\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z\\\"}}},\\\"gg\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f260\\\",\\\"label\\\":\\\"GG Currency\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z\\\"}}},\\\"gg-circle\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f261\\\",\\\"label\\\":\\\"GG Currency Circle\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z\\\"}}},\\\"gift\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"generosity\\\",\\\"giving\\\",\\\"party\\\",\\\"present\\\",\\\"wrapped\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f06b\\\",\\\"label\\\":\\\"gift\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406018,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm448-288h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40zm-72 320h160c17.7 0 32-14.3 32-32V320H288v160z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm448-288h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40zm-72 320h160c17.7 0 32-14.3 32-32V320H288v160z\\\"}}},\\\"git\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1d3\\\",\\\"label\\\":\\\"Git\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M18.8 221.7c0 25.3 16.2 60 41.5 68.5v1c-18.8 8.3-24 50.6 1 65.8v1C34 367 16 384.3 16 414.2c0 51.5 48.8 65.8 91.5 65.8 52 0 90.7-18.7 90.7-76 0-70.5-101-44.5-101-82.8 0-13.5 7.2-18.7 19.7-21.3 41.5-7.7 67.5-40 67.5-82.2 0-7.3-1.5-14.2-4-21 6.7-1.5 13.2-3.3 19.7-5.5v-50.5c-17.2 6.8-35.7 11.8-54.5 11.8-53.8-31-126.8 1.3-126.8 69.2zm87.7 163.8c17 0 41.2 3 41.2 25 0 21.8-19.5 26.3-37.7 26.3-17.3 0-43.3-2.7-43.3-25.2.1-22.3 22.1-26.1 39.8-26.1zM103.3 256c-22 0-31.3-13-31.3-33.8 0-49.3 61-48.8 61-.5 0 20.3-8 34.3-29.7 34.3zM432 305.5v49c-13.3 7.3-30.5 9.8-45.5 9.8-53.5 0-59.8-42.2-59.8-85.7v-87.7h.5v-1c-7 0-7.3-1.6-24 1v-47.5h24c0-22.3.3-31-1.5-41.2h56.7c-2 13.8-1.5 27.5-1.5 41.2h51v47.5s-19.3-1-51-1V281c0 14.8 3.3 32.8 21.8 32.8 9.8 0 21.3-2.8 29.3-8.3zM286 68.7c0 18.7-14.5 36.2-33.8 36.2-19.8 0-34.5-17.2-34.5-36.2 0-19.3 14.5-36.7 34.5-36.7C272 32 286 50 286 68.7zm-6.2 74.5c-1.8 14.6-1.6 199.8 0 217.8h-55.5c1.6-18.1 1.8-203 0-217.8h55.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M18.8 221.7c0 25.3 16.2 60 41.5 68.5v1c-18.8 8.3-24 50.6 1 65.8v1C34 367 16 384.3 16 414.2c0 51.5 48.8 65.8 91.5 65.8 52 0 90.7-18.7 90.7-76 0-70.5-101-44.5-101-82.8 0-13.5 7.2-18.7 19.7-21.3 41.5-7.7 67.5-40 67.5-82.2 0-7.3-1.5-14.2-4-21 6.7-1.5 13.2-3.3 19.7-5.5v-50.5c-17.2 6.8-35.7 11.8-54.5 11.8-53.8-31-126.8 1.3-126.8 69.2zm87.7 163.8c17 0 41.2 3 41.2 25 0 21.8-19.5 26.3-37.7 26.3-17.3 0-43.3-2.7-43.3-25.2.1-22.3 22.1-26.1 39.8-26.1zM103.3 256c-22 0-31.3-13-31.3-33.8 0-49.3 61-48.8 61-.5 0 20.3-8 34.3-29.7 34.3zM432 305.5v49c-13.3 7.3-30.5 9.8-45.5 9.8-53.5 0-59.8-42.2-59.8-85.7v-87.7h.5v-1c-7 0-7.3-1.6-24 1v-47.5h24c0-22.3.3-31-1.5-41.2h56.7c-2 13.8-1.5 27.5-1.5 41.2h51v47.5s-19.3-1-51-1V281c0 14.8 3.3 32.8 21.8 32.8 9.8 0 21.3-2.8 29.3-8.3zM286 68.7c0 18.7-14.5 36.2-33.8 36.2-19.8 0-34.5-17.2-34.5-36.2 0-19.3 14.5-36.7 34.5-36.7C272 32 286 50 286 68.7zm-6.2 74.5c-1.8 14.6-1.6 199.8 0 217.8h-55.5c1.6-18.1 1.8-203 0-217.8h55.5z\\\"}}},\\\"git-square\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1d2\\\",\\\"label\\\":\\\"Git Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M140.1 348.5c12.1 0 29.5 2.1 29.5 17.9 0 15.5-13.9 18.8-27 18.8-12.3 0-30.9-2-30.9-18s15.7-18.7 28.4-18.7zm-24.7-116.6c0 14.8 6.6 24.1 22.3 24.1 15.5 0 21.2-10 21.2-24.5.1-34.4-43.5-34.8-43.5.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-241 93.7c-12.3 4.8-25.5 8.4-38.9 8.4-38.5-22.1-90.7.9-90.7 49.5 0 18 11.6 42.9 29.6 48.9v.7c-13.4 5.9-17.1 36.1.7 47v.7c-19.5 6.4-32.3 18.8-32.3 40.2 0 36.8 34.8 47 65.4 47 37.1 0 64.8-13.4 64.8-54.3 0-50.4-72.1-31.8-72.1-59.1 0-9.6 5.2-13.4 14.1-15.2 29.6-5.5 48.2-28.6 48.2-58.7 0-5.2-1.1-10.2-2.9-15 4.8-1.1 9.5-2.3 14.1-3.9v-36.2zm56.8 1.8h-39.6c1.3 10.6 1.1 142.6 0 155.5h39.6c-1.1-12.8-1.2-145.1 0-155.5zm4.5-53.3c0-13.4-10-26.2-24.1-26.2-14.3 0-24.6 12.5-24.6 26.2 0 13.6 10.5 25.9 24.6 25.9 13.7 0 24.1-12.5 24.1-25.9zm104.3 53.3h-36.4c0-9.8-.4-19.6 1.1-29.5h-40.5c1.3 7.3 1.1 13.6 1.1 29.5h-17.1v33.9c11.9-1.9 12.1-.7 17.1-.7v.7h-.4v62.7c0 31.1 4.5 61.2 42.7 61.2 10.7 0 23-1.8 32.5-7v-35c-5.7 3.9-13.9 5.9-20.9 5.9-13.2 0-15.5-12.9-15.5-23.4v-65.2c22.7 0 36.4.7 36.4.7v-33.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M140.1 348.5c12.1 0 29.5 2.1 29.5 17.9 0 15.5-13.9 18.8-27 18.8-12.3 0-30.9-2-30.9-18s15.7-18.7 28.4-18.7zm-24.7-116.6c0 14.8 6.6 24.1 22.3 24.1 15.5 0 21.2-10 21.2-24.5.1-34.4-43.5-34.8-43.5.4zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-241 93.7c-12.3 4.8-25.5 8.4-38.9 8.4-38.5-22.1-90.7.9-90.7 49.5 0 18 11.6 42.9 29.6 48.9v.7c-13.4 5.9-17.1 36.1.7 47v.7c-19.5 6.4-32.3 18.8-32.3 40.2 0 36.8 34.8 47 65.4 47 37.1 0 64.8-13.4 64.8-54.3 0-50.4-72.1-31.8-72.1-59.1 0-9.6 5.2-13.4 14.1-15.2 29.6-5.5 48.2-28.6 48.2-58.7 0-5.2-1.1-10.2-2.9-15 4.8-1.1 9.5-2.3 14.1-3.9v-36.2zm56.8 1.8h-39.6c1.3 10.6 1.1 142.6 0 155.5h39.6c-1.1-12.8-1.2-145.1 0-155.5zm4.5-53.3c0-13.4-10-26.2-24.1-26.2-14.3 0-24.6 12.5-24.6 26.2 0 13.6 10.5 25.9 24.6 25.9 13.7 0 24.1-12.5 24.1-25.9zm104.3 53.3h-36.4c0-9.8-.4-19.6 1.1-29.5h-40.5c1.3 7.3 1.1 13.6 1.1 29.5h-17.1v33.9c11.9-1.9 12.1-.7 17.1-.7v.7h-.4v62.7c0 31.1 4.5 61.2 42.7 61.2 10.7 0 23-1.8 32.5-7v-35c-5.7 3.9-13.9 5.9-20.9 5.9-13.2 0-15.5-12.9-15.5-23.4v-65.2c22.7 0 36.4.7 36.4.7v-33.8z\\\"}}},\\\"github\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"octocat\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f09b\\\",\\\"label\\\":\\\"GitHub\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\\\"}}},\\\"github-alt\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"octocat\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f113\\\",\\\"label\\\":\\\"Alternate GitHub\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 480 512\\\\\\\"><path d=\\\\\\\"M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"480\\\",\\\"512\\\"],\\\"width\\\":480,\\\"height\\\":512,\\\"path\\\":\\\"M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z\\\"}}},\\\"github-square\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"octocat\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f092\\\",\\\"label\\\":\\\"GitHub Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z\\\"}}},\\\"gitkraken\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3a6\\\",\\\"label\\\":\\\"GitKraken\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1502479343000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 592 512\\\\\\\"><path d=\\\\\\\"M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"592\\\",\\\"512\\\"],\\\"width\\\":592,\\\"height\\\":512,\\\"path\\\":\\\"M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z\\\"}}},\\\"gitlab\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"Axosoft\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f296\\\",\\\"label\\\":\\\"GitLab\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M29.782 199.732L256 493.714 8.074 309.699c-6.856-5.142-9.712-13.996-7.141-21.993l28.849-87.974zm75.405-174.806c-3.142-8.854-15.709-8.854-18.851 0L29.782 199.732h131.961L105.187 24.926zm56.556 174.806L256 493.714l94.257-293.982H161.743zm349.324 87.974l-28.849-87.974L256 493.714l247.926-184.015c6.855-5.142 9.711-13.996 7.141-21.993zm-85.404-262.78c-3.142-8.854-15.709-8.854-18.851 0l-56.555 174.806h131.961L425.663 24.926z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M29.782 199.732L256 493.714 8.074 309.699c-6.856-5.142-9.712-13.996-7.141-21.993l28.849-87.974zm75.405-174.806c-3.142-8.854-15.709-8.854-18.851 0L29.782 199.732h131.961L105.187 24.926zm56.556 174.806L256 493.714l94.257-293.982H161.743zm349.324 87.974l-28.849-87.974L256 493.714l247.926-184.015c6.855-5.142 9.711-13.996 7.141-21.993zm-85.404-262.78c-3.142-8.854-15.709-8.854-18.851 0l-56.555 174.806h131.961L425.663 24.926z\\\"}}},\\\"gitter\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f426\\\",\\\"label\\\":\\\"Gitter\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1510266191926,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z\\\"}}},\\\"glass-martini\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"alcohol\\\",\\\"bar\\\",\\\"drink\\\",\\\"glass\\\",\\\"liquor\\\",\\\"martini\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f000\\\",\\\"label\\\":\\\"Martini Glass\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111668,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\\\"}}},\\\"glass-martini-alt\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f57b\\\",\\\"label\\\":\\\"Glass Martini-alt\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111668,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\\\"}}},\\\"glasses\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"foureyes\\\",\\\"hipster\\\",\\\"nerd\\\",\\\"reading\\\",\\\"sight\\\",\\\"spectacles\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f530\\\",\\\"label\\\":\\\"Glasses\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154569,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\\\"}}},\\\"glide\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2a5\\\",\\\"label\\\":\\\"Glide\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z\\\"}}},\\\"glide-g\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2a6\\\",\\\"label\\\":\\\"Glide G\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z\\\"}}},\\\"globe\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"all\\\",\\\"coordinates\\\",\\\"country\\\",\\\"earth\\\",\\\"global\\\",\\\"gps\\\",\\\"language\\\",\\\"localize\\\",\\\"location\\\",\\\"map\\\",\\\"online\\\",\\\"place\\\",\\\"planet\\\",\\\"translate\\\",\\\"travel\\\",\\\"world\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0ac\\\",\\\"label\\\":\\\"Globe\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406018,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\\\"}}},\\\"globe-africa\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"all\\\",\\\"country\\\",\\\"earth\\\",\\\"global\\\",\\\"gps\\\",\\\"language\\\",\\\"localize\\\",\\\"location\\\",\\\"map\\\",\\\"online\\\",\\\"place\\\",\\\"planet\\\",\\\"translate\\\",\\\"travel\\\",\\\"world\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f57c\\\",\\\"label\\\":\\\"Globe with Africa shown\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111668,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\\\"}}},\\\"globe-americas\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"all\\\",\\\"country\\\",\\\"earth\\\",\\\"global\\\",\\\"gps\\\",\\\"language\\\",\\\"localize\\\",\\\"location\\\",\\\"map\\\",\\\"online\\\",\\\"place\\\",\\\"planet\\\",\\\"translate\\\",\\\"travel\\\",\\\"world\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f57d\\\",\\\"label\\\":\\\"Globe with Americas shown\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111669,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\\\"}}},\\\"globe-asia\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"all\\\",\\\"country\\\",\\\"earth\\\",\\\"global\\\",\\\"gps\\\",\\\"language\\\",\\\"localize\\\",\\\"location\\\",\\\"map\\\",\\\"online\\\",\\\"place\\\",\\\"planet\\\",\\\"translate\\\",\\\"travel\\\",\\\"world\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f57e\\\",\\\"label\\\":\\\"Globe with Asia shown\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111669,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\\\"}}},\\\"gofore\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3a7\\\",\\\"label\\\":\\\"Gofore\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 400 512\\\\\\\"><path d=\\\\\\\"M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"400\\\",\\\"512\\\"],\\\"width\\\":400,\\\"height\\\":512,\\\"path\\\":\\\"M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z\\\"}}},\\\"golf-ball\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f450\\\",\\\"label\\\":\\\"Golf Ball\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527996,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 416 512\\\\\\\"><path d=\\\\\\\"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"416\\\",\\\"512\\\"],\\\"width\\\":416,\\\"height\\\":512,\\\"path\\\":\\\"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\\\"}}},\\\"goodreads\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3a8\\\",\\\"label\\\":\\\"Goodreads\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z\\\"}}},\\\"goodreads-g\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3a9\\\",\\\"label\\\":\\\"Goodreads G\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z\\\"}}},\\\"google\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1a0\\\",\\\"label\\\":\\\"Google Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 488 512\\\\\\\"><path d=\\\\\\\"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"488\\\",\\\"512\\\"],\\\"width\\\":488,\\\"height\\\":512,\\\"path\\\":\\\"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\\\"}}},\\\"google-drive\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3aa\\\",\\\"label\\\":\\\"Google Drive\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\\\"}}},\\\"google-play\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3ab\\\",\\\"label\\\":\\\"Google Play\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\\\"}}},\\\"google-plus\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"google-plus-circle\\\",\\\"google-plus-official\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2b3\\\",\\\"label\\\":\\\"Google Plus\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm-70.7 372c-68.8 0-124-55.5-124-124s55.2-124 124-124c31.3 0 60.1 11 83 32.3l-33.6 32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9 0-77.2 35.5-77.2 78.1s34.2 78.1 77.2 78.1c32.6 0 64.9-19.1 70.1-53.3h-70.1v-42.6h116.9c1.3 6.8 1.9 13.6 1.9 20.7 0 70.8-47.5 121.2-118.8 121.2zm230.2-106.2v35.5H372v-35.5h-35.5v-35.5H372v-35.5h35.5v35.5h35.2v35.5h-35.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm-70.7 372c-68.8 0-124-55.5-124-124s55.2-124 124-124c31.3 0 60.1 11 83 32.3l-33.6 32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9 0-77.2 35.5-77.2 78.1s34.2 78.1 77.2 78.1c32.6 0 64.9-19.1 70.1-53.3h-70.1v-42.6h116.9c1.3 6.8 1.9 13.6 1.9 20.7 0 70.8-47.5 121.2-118.8 121.2zm230.2-106.2v35.5H372v-35.5h-35.5v-35.5H372v-35.5h35.5v35.5h35.2v35.5h-35.2z\\\"}}},\\\"google-plus-g\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"google-plus\\\",\\\"social network\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f0d5\\\",\\\"label\\\":\\\"Google Plus G\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z\\\"}}},\\\"google-plus-square\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"social network\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f0d4\\\",\\\"label\\\":\\\"Google Plus Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1507838931323,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z\\\"}}},\\\"google-wallet\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1ee\\\",\\\"label\\\":\\\"Google Wallet\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z\\\"}}},\\\"graduation-cap\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"learning\\\",\\\"school\\\",\\\"student\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f19d\\\",\\\"label\\\":\\\"Graduation Cap\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831527,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\\\"}}},\\\"gratipay\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"favorite\\\",\\\"heart\\\",\\\"like\\\",\\\"love\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f184\\\",\\\"label\\\":\\\"Gratipay (Gittip)\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z\\\"}}},\\\"grav\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2d6\\\",\\\"label\\\":\\\"Grav\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z\\\"}}},\\\"greater-than\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f531\\\",\\\"label\\\":\\\"Greater Than\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154569,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\\\"}}},\\\"greater-than-equal\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f532\\\",\\\"label\\\":\\\"Greater Than Equal To\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154569,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\\\"}}},\\\"grimace\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cringe\\\",\\\"emoticon\\\",\\\"face\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f57f\\\",\\\"label\\\":\\\"Grimacing Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111669,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111620,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm16 16H152c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h192c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48zm-168 96h-24c-8.8 0-16-7.2-16-16v-8h40v24zm0-40h-40v-8c0-8.8 7.2-16 16-16h24v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm64 40h-48v-24h48v24zm0-40h-48v-24h48v24zm56 24c0 8.8-7.2 16-16 16h-24v-24h40v8zm0-24h-40v-24h24c8.8 0 16 7.2 16 16v8z\\\"}}},\\\"grin\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"laugh\\\",\\\"smile\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f580\\\",\\\"label\\\":\\\"Grinning Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111677,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111622,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\\\"}}},\\\"grin-alt\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"laugh\\\",\\\"smile\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f581\\\",\\\"label\\\":\\\"Alternate Grinning Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111670,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111620,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M200.3 248c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zm128 0c12.4-18.7 15.1-37.3 15.7-56-.5-18.7-3.3-37.3-15.7-56-8-12-25.1-11.4-32.7 0-12.4 18.7-15.1 37.3-15.7 56 .5 18.7 3.3 37.3 15.7 56 8.1 12 25.2 11.4 32.7 0zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3z\\\"}}},\\\"grin-beam\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"laugh\\\",\\\"smile\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f582\\\",\\\"label\\\":\\\"Grinning Face With Smiling Eyes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111671,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111620,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-235.9-72.9c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3zm160 0c3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3z\\\"}}},\\\"grin-beam-sweat\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"smile\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f583\\\",\\\"label\\\":\\\"Grinning Face With Sweat\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111671,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 504 512\\\\\\\"><path d=\\\\\\\"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"504\\\",\\\"512\\\"],\\\"width\\\":504,\\\"height\\\":512,\\\"path\\\":\\\"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111620,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M440 160c29.5 0 53.3-26.3 53.3-58.7 0-25-31.7-75.5-46.2-97.3-3.6-5.3-10.7-5.3-14.2 0-14.5 21.8-46.2 72.3-46.2 97.3 0 32.4 23.8 58.7 53.3 58.7zM248 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zm105.3-52.9c-24.6 15.7-46 12.9-46.4 12.9 6.9 20.2 10.8 41.8 10.8 64.3 0 110.3-89.7 200-200 200S48 366.3 48 256 137.7 56 248 56c39.8 0 76.8 11.8 108 31.9 1.7-9.5 6.3-24.1 17.2-45.7C336.4 20.6 293.7 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-27-4.4-52.9-12.4-77.2zM168 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\\\"}}},\\\"grin-hearts\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"love\\\",\\\"smile\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f584\\\",\\\"label\\\":\\\"Smiling Face With Heart-Eyes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111672,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111620,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M353.6 304.6c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-152.8-48.9c4.5 1.2 9.2-1.5 10.5-6l19.4-69.9c5.6-20.3-7.4-41.1-28.8-44.5-18.6-3-36.4 9.8-41.5 27.9l-2 7.1-7.1-1.9c-18.2-4.7-38.2 4.3-44.9 22-7.7 20.2 3.8 41.9 24.2 47.2l70.2 18.1zm188.8-65.3c-6.7-17.6-26.7-26.7-44.9-22l-7.1 1.9-2-7.1c-5-18.1-22.8-30.9-41.5-27.9-21.4 3.4-34.4 24.2-28.8 44.5l19.4 69.9c1.2 4.5 5.9 7.2 10.5 6l70.2-18.2c20.4-5.3 31.9-26.9 24.2-47.1zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200z\\\"}}},\\\"grin-squint\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"laugh\\\",\\\"smile\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f585\\\",\\\"label\\\":\\\"Grinning Squinting Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111673,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111621,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.4-17.7 15.3 7.9 47.1 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-234.7-40.8c3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3l-80-48c-5.1-3-11.4-1.9-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11.1.1 15.5zm242.9 2.5c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11-.1-15.5-3.8-4.4-10.2-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48z\\\"}}},\\\"grin-squint-tears\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"happy\\\",\\\"smile\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f586\\\",\\\"label\\\":\\\"Rolling on the Floor Laughing\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111672,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111621,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M117.1 384.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 479 124.3 420.8 128 395c.8-6.4-4.6-11.8-10.9-10.9zm-41.2-41.7C40.3 268 53 176.1 114.6 114.6 152.4 76.8 202.6 56 256 56c36.2 0 70.8 9.8 101.2 27.7 3.8-20.3 8-36.1 12-48.3C333.8 17.2 294.9 8 256 8 192.5 8 129.1 32.2 80.6 80.6c-74.1 74.1-91.3 183.4-52 274 12.2-4.1 27.7-8.3 47.3-12.2zm352.3-187.6c45 76.6 34.9 176.9-30.8 242.6-37.8 37.8-88 58.6-141.4 58.6-30.5 0-59.8-7-86.4-19.8-3.9 19.5-8 35-12.2 47.2 31.4 13.6 65 20.6 98.7 20.6 63.5 0 126.9-24.2 175.4-72.6 78.1-78.1 93.1-195.4 45.2-288.6-12.3 4-28.2 8.1-48.5 12zm-33.3-26.9c25.8-3.7 84-13.7 100.9-30.6 21.9-21.9 21.5-57.9-.9-80.3s-58.3-22.8-80.3-.9C397.7 33 387.7 91.2 384 117c-.8 6.4 4.6 11.8 10.9 10.9zm-187 108.3c-3-3-7.2-4.2-11.4-3.2L106 255.7c-5.7 1.4-9.5 6.7-9.1 12.6.5 5.8 5.1 10.5 10.9 11l52.3 4.8 4.8 52.3c.5 5.8 5.2 10.4 11 10.9h.9c5.5 0 10.3-3.7 11.7-9.1l22.6-90.5c1-4.2-.2-8.5-3.2-11.5zm39.7-25.1l90.5-22.6c5.7-1.4 9.5-6.7 9.1-12.6-.5-5.8-5.1-10.5-10.9-11l-52.3-4.8-4.8-52.3c-.5-5.8-5.2-10.4-11-10.9-5.6-.1-11.2 3.4-12.6 9.1L233 196.5c-1 4.1.2 8.4 3.2 11.4 5 5 11.3 3.2 11.4 3.2zm52 88.5c-29.1 29.1-59.7 52.9-83.9 65.4-9.2 4.8-10 17.5-1.7 23.4 38.9 27.7 107 6.2 143.7-30.6S416 253 388.3 214.1c-5.8-8.2-18.5-7.6-23.4 1.7-12.3 24.2-36.2 54.7-65.3 83.8z\\\"}}},\\\"grin-stars\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"star-struck\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f587\\\",\\\"label\\\":\\\"Star-Struck\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111673,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111621,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm105.6-151.4c-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 7.9 47.2 71.3 80 123.3 80s115.3-32.9 123.3-80c1.6-9.8-7.7-18.4-17.7-15.3zm-227.9-57.5c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.5 1.9-12.2-4.3-13.2l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6.1 34.9zm259.7-72.7l-34.9-5-15.5-31.6c-2.9-5.8-11-5.8-13.9 0l-15.5 31.6-34.9 5c-6.2.9-8.9 8.6-4.3 13.2l25.4 24.6-6 34.9c-1 6.2 5.4 11 11 7.9l31.3-16.3 31.3 16.3c5.6 3.1 12-1.7 11-7.9l-6-34.9 25.4-24.6c4.5-4.6 1.8-12.2-4.4-13.2z\\\"}}},\\\"grin-tears\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"LOL\\\",\\\"emoticon\\\",\\\"face\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f588\\\",\\\"label\\\":\\\"Face With Tears of Joy\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111674,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111621,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M117.1 256.1c-25.8 3.7-84 13.7-100.9 30.6-21.9 21.9-21.5 57.9.9 80.3s58.3 22.8 80.3.9C114.3 351 124.3 292.8 128 267c.8-6.4-4.6-11.8-10.9-10.9zm506.7 30.6c-16.9-16.9-75.1-26.9-100.9-30.6-6.3-.9-11.7 4.5-10.8 10.8 3.7 25.8 13.7 84 30.6 100.9 21.9 21.9 57.9 21.5 80.3-.9 22.3-22.3 22.7-58.3.8-80.2zm-126.6 61.7C463.8 412.3 396.9 456 320 456c-76.9 0-143.8-43.7-177.2-107.6-12.5 37.4-25.2 43.9-28.3 46.5C159.1 460.7 234.5 504 320 504s160.9-43.3 205.5-109.1c-3.2-2.7-15.9-9.2-28.3-46.5zM122.7 224.5C137.9 129.2 220.5 56 320 56c99.5 0 182.1 73.2 197.3 168.5 2.1-.2 5.2-2.4 49.5 7C554.4 106 448.7 8 320 8S85.6 106 73.2 231.4c44.5-9.4 47.1-7.2 49.5-6.9zM320 400c51.9 0 115.3-32.9 123.3-80 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.8-3.1-19.4 5.3-17.7 15.3 8 47.1 71.4 80 123.3 80zm130.3-168.3c3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.6 6.2 4.6 9.3 3.7zM240 189.4c12.3 0 23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.8 19.2-21.6 31.5-21.6z\\\"}}},\\\"grin-tongue\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"LOL\\\",\\\"emoticon\\\",\\\"face\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f589\\\",\\\"label\\\":\\\"Face With Tongue\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111676,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111622,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zM168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\\\"}}},\\\"grin-tongue-squint\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"LOL\\\",\\\"emoticon\\\",\\\"face\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f58a\\\",\\\"label\\\":\\\"Squinting Face With Tongue\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111675,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111621,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3zm36.9-281.1c-3.8-4.4-10.3-5.5-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.7 1.7 15.3-2.5 3.8-4.5 3.8-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zm-162.9 45.5l-80-48c-5-3-11.4-2-15.3 2.5-3.8 4.5-3.8 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.6 4.2 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3s-2.2-8.1-5.8-10.3z\\\"}}},\\\"grin-tongue-wink\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"LOL\\\",\\\"emoticon\\\",\\\"face\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f58b\\\",\\\"label\\\":\\\"Winking Face With Tongue\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111675,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111621,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M152 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm176-52c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm0 128c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-72c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm64 400c0 35.6-29.1 64.5-64.9 64-35.1-.5-63.1-29.8-63.1-65v-42.8l17.7-8.8c15-7.5 31.5 1.7 34.9 16.5l2.8 12.1c2.1 9.2 15.2 9.2 17.3 0l2.8-12.1c3.4-14.8 19.8-24.1 34.9-16.5l17.7 8.8V408zm28.2 25.3c2.2-8.1 3.8-16.5 3.8-25.3v-43.5c14.2-12.4 24.4-27.5 27.3-44.5 1.7-9.9-7.7-18.5-17.7-15.3-25.9 8.3-64.4 13.1-105.6 13.1s-79.6-4.8-105.6-13.1c-9.9-3.1-19.4 5.3-17.7 15.3 2.9 17 13.1 32.1 27.3 44.5V408c0 8.8 1.6 17.2 3.8 25.3C91.8 399.9 48 333 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 77-43.8 143.9-107.8 177.3z\\\"}}},\\\"grin-wink\\\":{\\\"changes\\\":[\\\"5.1.0\\\",\\\"5.1.1\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"flirt\\\",\\\"laugh\\\",\\\"smile\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f58c\\\",\\\"label\\\":\\\"Grinning Winking Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111676,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1530132076296,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M328 180c-25.69 0-55.88 16.92-59.86 42.12-1.75 11.22 11.5 18.24 19.83 10.84l9.55-8.48c14.81-13.19 46.16-13.19 60.97 0l9.55 8.48c8.48 7.43 21.56.25 19.83-10.84C383.88 196.92 353.69 180 328 180zm-160 60c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm185.55 64.64c-25.93 8.3-64.4 13.06-105.55 13.06s-79.62-4.75-105.55-13.06c-9.94-3.13-19.4 5.37-17.71 15.34C132.67 367.13 196.06 400 248 400s115.33-32.87 123.26-80.02c1.68-9.89-7.67-18.48-17.71-15.34zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 448c-110.28 0-200-89.72-200-200S137.72 56 248 56s200 89.72 200 200-89.72 200-200 200z\\\"}}},\\\"grip-horizontal\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"affordance\\\",\\\"drag\\\",\\\"drop\\\",\\\"grab\\\",\\\"handle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f58d\\\",\\\"label\\\":\\\"Grip Horizontal\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111677,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\\\"}}},\\\"grip-vertical\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"affordance\\\",\\\"drag\\\",\\\"drop\\\",\\\"grab\\\",\\\"handle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f58e\\\",\\\"label\\\":\\\"Grip Vertical\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111678,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\\\"}}},\\\"gripfire\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3ac\\\",\\\"label\\\":\\\"Gripfire, Inc.\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M171.8 503.8c0-5.3 4.8-12.2 4.8-22.3 0-15.2-13-39.9-78.1-86.6C64.2 365.8 32 336.4 32 286.6 32 171.9 179.1 110.1 179.1 18c0-3.3-.2-6.7-.6-10 5.1 2.4 39.1 43.3 39.1 90.4 0 80.5-105.1 129.2-105.1 203 0 26.9 16.6 47.2 32.6 69.5 22.5 30.2 44.2 56.9 44.2 86.5-.1 14.5-4.4 29.7-17.5 46.4zm146-241.4c1.5 8.4 2.2 16.6 2.2 24.6 0 51.8-29.4 97.5-67.3 136.8-1 1-2.2 2.4-3.2 2.4-3.6 0-35.5-41.6-35.5-53.2 0 0 41.8-55.7 41.8-96.9 0-10.8-2.7-21.7-9.1-33.4-1.5 32.3-55.7 87.7-58.1 87.7-2.7 0-17.9-22-17.9-42.1 0-5.3 1-10.7 3.2-15.8 2.4-5.5 56.6-72 56.6-116.7 0-6.2-1-12-3.4-17.1l-4-7.2c16.7 6.5 82.6 64.1 94.7 130.9\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M171.8 503.8c0-5.3 4.8-12.2 4.8-22.3 0-15.2-13-39.9-78.1-86.6C64.2 365.8 32 336.4 32 286.6 32 171.9 179.1 110.1 179.1 18c0-3.3-.2-6.7-.6-10 5.1 2.4 39.1 43.3 39.1 90.4 0 80.5-105.1 129.2-105.1 203 0 26.9 16.6 47.2 32.6 69.5 22.5 30.2 44.2 56.9 44.2 86.5-.1 14.5-4.4 29.7-17.5 46.4zm146-241.4c1.5 8.4 2.2 16.6 2.2 24.6 0 51.8-29.4 97.5-67.3 136.8-1 1-2.2 2.4-3.2 2.4-3.6 0-35.5-41.6-35.5-53.2 0 0 41.8-55.7 41.8-96.9 0-10.8-2.7-21.7-9.1-33.4-1.5 32.3-55.7 87.7-58.1 87.7-2.7 0-17.9-22-17.9-42.1 0-5.3 1-10.7 3.2-15.8 2.4-5.5 56.6-72 56.6-116.7 0-6.2-1-12-3.4-17.1l-4-7.2c16.7 6.5 82.6 64.1 94.7 130.9\\\"}}},\\\"grunt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3ad\\\",\\\"label\\\":\\\"Grunt\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm79.2 233.7c2.2 2.3 1.5 5.3.9 6.8-1.1 2.7-5.5 11.6-13 19.8-2.7 2.9-6.6 4.6-11 4.6-4.3 0-8.7-1.6-11.8-4.3-2.3-2.1-10.2-9.5-13.7-18.6-1.3-3.4-1-6.1.9-8.1 1.3-1.3 4-2.9 9.5-2.9H160c4.1 0 7 .9 8.8 2.7zm62.9-187.9c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm17.8-8.8c7.5-11.4 25.4-26 44.9-37 3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6-.1.1 0 0 0 0zM263 421.4c1.9 1.9 2.2 4.6.9 7.9-3.5 8.9-11.4 16.1-13.7 18.1-3.1 2.6-7.4 4.2-11.8 4.2s-8.3-1.6-11-4.5c-7.5-8-12-16.7-13-19.3-.6-1.5-1.3-4.4.9-6.7 1.7-1.8 4.7-2.7 8.9-2.7h29.4c5.4.1 8.1 1.7 9.4 3zm-98.3-251.5c9.9 6 18.8 8.1 27.3 8.3 8.5-.2 17.4-2.3 27.3-8.3 0 0-14.5 17.7-27.2 17.8h-.2c-12.7-.2-27.2-17.8-27.2-17.8zm184.5 147.4c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm79.2 233.7c2.2 2.3 1.5 5.3.9 6.8-1.1 2.7-5.5 11.6-13 19.8-2.7 2.9-6.6 4.6-11 4.6-4.3 0-8.7-1.6-11.8-4.3-2.3-2.1-10.2-9.5-13.7-18.6-1.3-3.4-1-6.1.9-8.1 1.3-1.3 4-2.9 9.5-2.9H160c4.1 0 7 .9 8.8 2.7zm62.9-187.9c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm17.8-8.8c7.5-11.4 25.4-26 44.9-37 3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6-.1.1 0 0 0 0zM263 421.4c1.9 1.9 2.2 4.6.9 7.9-3.5 8.9-11.4 16.1-13.7 18.1-3.1 2.6-7.4 4.2-11.8 4.2s-8.3-1.6-11-4.5c-7.5-8-12-16.7-13-19.3-.6-1.5-1.3-4.4.9-6.7 1.7-1.8 4.7-2.7 8.9-2.7h29.4c5.4.1 8.1 1.7 9.4 3zm-98.3-251.5c9.9 6 18.8 8.1 27.3 8.3 8.5-.2 17.4-2.3 27.3-8.3 0 0-14.5 17.7-27.2 17.8h-.2c-12.7-.2-27.2-17.8-27.2-17.8zm184.5 147.4c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59z\\\"}}},\\\"gulp\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3ae\\\",\\\"label\\\":\\\"Gulp\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z\\\"}}},\\\"h-square\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"hospital\\\",\\\"hotel\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0fd\\\",\\\"label\\\":\\\"H Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\\\"}}},\\\"hacker-news\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1d4\\\",\\\"label\\\":\\\"Hacker News\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\\\"}}},\\\"hacker-news-square\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3af\\\",\\\"label\\\":\\\"Hacker News Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\\\"}}},\\\"hackerrank\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5f7\\\",\\\"label\\\":\\\"Hackerrank\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1532362831424,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 464.36 512\\\\\\\"><path d=\\\\\\\"M453.5 128C439.01 103.05 261.13 0 232.16 0 203.2 0 25.25 102.79 10.84 128c-14.41 25.21-14.49 230.8 0 256.01C25.33 409.21 203.22 512 232.16 512s206.85-102.92 221.33-128c14.48-25.08 14.49-231.05.01-256zM292.13 414.22c-3.96 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32.04-2.02-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 5.96-5.74 5.94-10.13-.03-20.27-.11-30.41-.08-4.1.01-5.87-1.53-5.74-6.11.92-33.44 2.96-84.02-.15-212.67v-3.17c-9.67-.35-16.38-.96-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69 3.96 0 41.17 35.78 38.27 38.69-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2.03 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46.02 4.57 1.72 4.5 5.38-3.65 191.29-.66 177.94-.66 210.34 8.87.35 16.82.96 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"464.36\\\",\\\"512\\\"],\\\"width\\\":464,\\\"height\\\":512,\\\"path\\\":\\\"M453.5 128C439.01 103.05 261.13 0 232.16 0 203.2 0 25.25 102.79 10.84 128c-14.41 25.21-14.49 230.8 0 256.01C25.33 409.21 203.22 512 232.16 512s206.85-102.92 221.33-128c14.48-25.08 14.49-231.05.01-256zM292.13 414.22c-3.96 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32.04-2.02-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 5.96-5.74 5.94-10.13-.03-20.27-.11-30.41-.08-4.1.01-5.87-1.53-5.74-6.11.92-33.44 2.96-84.02-.15-212.67v-3.17c-9.67-.35-16.38-.96-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69 3.96 0 41.17 35.78 38.27 38.69-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2.03 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46.02 4.57 1.72 4.5 5.38-3.65 191.29-.66 177.94-.66 210.34 8.87.35 16.82.96 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z\\\"}}},\\\"hand-holding\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4bd\\\",\\\"label\\\":\\\"Hand Holding\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821450,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\\\"}}},\\\"hand-holding-heart\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4be\\\",\\\"label\\\":\\\"Hand Holding Heart\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406019,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\\\"}}},\\\"hand-holding-usd\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"$\\\",\\\"dollar sign\\\",\\\"donation\\\",\\\"giving\\\",\\\"money\\\",\\\"price\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4c0\\\",\\\"label\\\":\\\"Hand Holding US Dollar\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406019,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 544 512\\\\\\\"><path d=\\\\\\\"M257.6 144.3l50 14.3c3.6 1 6.1 4.4 6.1 8.1 0 4.6-3.8 8.4-8.4 8.4h-32.8c-3.6 0-7.1-.8-10.3-2.2-4.8-2.2-10.4-1.7-14.1 2l-17.5 17.5c-5.3 5.3-4.7 14.3 1.5 18.4 9.5 6.3 20.3 10.1 31.8 11.5V240c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-17.6c30.3-3.6 53.3-31 49.3-63-2.9-23-20.7-41.3-42.9-47.7l-50-14.3c-3.6-1-6.1-4.4-6.1-8.1 0-4.6 3.8-8.4 8.4-8.4h32.8c3.6 0 7.1.8 10.3 2.2 4.8 2.2 10.4 1.7 14.1-2l17.5-17.5c5.3-5.3 4.7-14.3-1.5-18.4-9.5-6.3-20.3-10.1-31.8-11.5V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v17.6c-30.3 3.6-53.3 31-49.3 63 2.9 23 20.7 41.3 42.9 47.7zm276.3 183.8c-11.2-10.7-28.5-10-40.3 0L406.4 402c-10.7 9.1-24 14-37.8 14H256.9c-8.3 0-15.1-7.2-15.1-16s6.8-16 15.1-16h73.9c15.1 0 29-10.9 31.4-26.6 3.1-20-11.5-37.4-29.8-37.4H181.3c-25.5 0-50.2 9.3-69.9 26.3L67.5 384H15.1C6.8 384 0 391.2 0 400v96c0 8.8 6.8 16 15.1 16H352c13.7 0 27-4.9 37.8-14l142.8-121c14.4-12.1 15.5-35.3 1.3-48.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"544\\\",\\\"512\\\"],\\\"width\\\":544,\\\"height\\\":512,\\\"path\\\":\\\"M257.6 144.3l50 14.3c3.6 1 6.1 4.4 6.1 8.1 0 4.6-3.8 8.4-8.4 8.4h-32.8c-3.6 0-7.1-.8-10.3-2.2-4.8-2.2-10.4-1.7-14.1 2l-17.5 17.5c-5.3 5.3-4.7 14.3 1.5 18.4 9.5 6.3 20.3 10.1 31.8 11.5V240c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-17.6c30.3-3.6 53.3-31 49.3-63-2.9-23-20.7-41.3-42.9-47.7l-50-14.3c-3.6-1-6.1-4.4-6.1-8.1 0-4.6 3.8-8.4 8.4-8.4h32.8c3.6 0 7.1.8 10.3 2.2 4.8 2.2 10.4 1.7 14.1-2l17.5-17.5c5.3-5.3 4.7-14.3-1.5-18.4-9.5-6.3-20.3-10.1-31.8-11.5V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v17.6c-30.3 3.6-53.3 31-49.3 63 2.9 23 20.7 41.3 42.9 47.7zm276.3 183.8c-11.2-10.7-28.5-10-40.3 0L406.4 402c-10.7 9.1-24 14-37.8 14H256.9c-8.3 0-15.1-7.2-15.1-16s6.8-16 15.1-16h73.9c15.1 0 29-10.9 31.4-26.6 3.1-20-11.5-37.4-29.8-37.4H181.3c-25.5 0-50.2 9.3-69.9 26.3L67.5 384H15.1C6.8 384 0 391.2 0 400v96c0 8.8 6.8 16 15.1 16H352c13.7 0 27-4.9 37.8-14l142.8-121c14.4-12.1 15.5-35.3 1.3-48.9z\\\"}}},\\\"hand-lizard\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f258\\\",\\\"label\\\":\\\"Lizard (Hand)\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M556.686 290.542L410.328 64.829C397.001 44.272 374.417 32 349.917 32H56C25.121 32 0 57.122 0 88v8c0 44.112 35.888 80 80 80h196.042l-18.333 48H144c-48.523 0-88 39.477-88 88 0 30.879 25.121 56 56 56h131.552c2.987 0 5.914.549 8.697 1.631L352 408.418V480h224V355.829c0-23.225-6.679-45.801-19.314-65.287zM528 432H400v-23.582c0-19.948-12.014-37.508-30.604-44.736l-99.751-38.788A71.733 71.733 0 0 0 243.552 320H112c-4.411 0-8-3.589-8-8 0-22.056 17.944-40 40-40h113.709c19.767 0 37.786-12.407 44.84-30.873l24.552-64.281c8.996-23.553-8.428-48.846-33.63-48.846H80c-17.645 0-32-14.355-32-32v-8c0-4.411 3.589-8 8-8h293.917c8.166 0 15.693 4.09 20.137 10.942l146.358 225.715A71.84 71.84 0 0 1 528 355.829V432z\\\"}}},\\\"hand-paper\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"stop\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f256\\\",\\\"label\\\":\\\"Paper (Hand)\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z\\\"}}},\\\"hand-peace\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f25b\\\",\\\"label\\\":\\\"Peace (Hand)\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M362.146 191.976c-13.71-21.649-38.761-34.016-65.006-30.341V74c0-40.804-32.811-74-73.141-74-40.33 0-73.14 33.196-73.14 74L160 168l-18.679-78.85C126.578 50.843 83.85 32.11 46.209 47.208 8.735 62.238-9.571 104.963 5.008 142.85l55.757 144.927c-30.557 24.956-43.994 57.809-24.733 92.218l54.853 97.999C102.625 498.97 124.73 512 148.575 512h205.702c30.744 0 57.558-21.44 64.555-51.797l27.427-118.999a67.801 67.801 0 0 0 1.729-15.203L448 256c0-44.956-43.263-77.343-85.854-64.024zM399.987 326c0 1.488-.169 2.977-.502 4.423l-27.427 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H148.575c-6.486 0-12.542-3.621-15.805-9.449l-54.854-98c-4.557-8.141-2.619-18.668 4.508-24.488l26.647-21.764a16 16 0 0 0 4.812-18.139l-64.09-166.549C37.226 92.956 84.37 74.837 96.51 106.389l59.784 155.357A16 16 0 0 0 171.227 272h11.632c8.837 0 16-7.163 16-16V74c0-34.375 50.281-34.43 50.281 0v182c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16v-28c0-25.122 36.567-25.159 36.567 0v28c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16 0-25.12 36.567-25.16 36.567 0v70z\\\"}}},\\\"hand-point-down\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"finger\\\",\\\"hand-o-down\\\",\\\"point\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0a7\\\",\\\"label\\\":\\\"Hand Pointing Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821450,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503066239000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M188.8 512c45.616 0 83.2-37.765 83.2-83.2v-35.647a93.148 93.148 0 0 0 22.064-7.929c22.006 2.507 44.978-3.503 62.791-15.985C409.342 368.1 448 331.841 448 269.299V248c0-60.063-40-98.512-40-127.2v-2.679c4.952-5.747 8-13.536 8-22.12V32c0-17.673-12.894-32-28.8-32H156.8C140.894 0 128 14.327 128 32v64c0 8.584 3.048 16.373 8 22.12v2.679c0 6.964-6.193 14.862-23.668 30.183l-.148.129-.146.131c-9.937 8.856-20.841 18.116-33.253 25.851C48.537 195.798 0 207.486 0 252.8c0 56.928 35.286 92 83.2 92 8.026 0 15.489-.814 22.4-2.176V428.8c0 45.099 38.101 83.2 83.2 83.2zm0-48c-18.7 0-35.2-16.775-35.2-35.2V270.4c-17.325 0-35.2 26.4-70.4 26.4-26.4 0-35.2-20.625-35.2-44 0-8.794 32.712-20.445 56.1-34.926 14.575-9.074 27.225-19.524 39.875-30.799 18.374-16.109 36.633-33.836 39.596-59.075h176.752C364.087 170.79 400 202.509 400 248v21.299c0 40.524-22.197 57.124-61.325 50.601-8.001 14.612-33.979 24.151-53.625 12.925-18.225 19.365-46.381 17.787-61.05 4.95V428.8c0 18.975-16.225 35.2-35.2 35.2zM328 64c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24z\\\"}}},\\\"hand-point-left\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"back\\\",\\\"finger\\\",\\\"hand-o-left\\\",\\\"left\\\",\\\"point\\\",\\\"previous\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0a5\\\",\\\"label\\\":\\\"Hand Pointing Left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821451,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503066239000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M0 220.8C0 266.416 37.765 304 83.2 304h35.647a93.148 93.148 0 0 0 7.929 22.064c-2.507 22.006 3.503 44.978 15.985 62.791C143.9 441.342 180.159 480 242.701 480H264c60.063 0 98.512-40 127.2-40h2.679c5.747 4.952 13.536 8 22.12 8h64c17.673 0 32-12.894 32-28.8V188.8c0-15.906-14.327-28.8-32-28.8h-64c-8.584 0-16.373 3.048-22.12 8H391.2c-6.964 0-14.862-6.193-30.183-23.668l-.129-.148-.131-.146c-8.856-9.937-18.116-20.841-25.851-33.253C316.202 80.537 304.514 32 259.2 32c-56.928 0-92 35.286-92 83.2 0 8.026.814 15.489 2.176 22.4H83.2C38.101 137.6 0 175.701 0 220.8zm48 0c0-18.7 16.775-35.2 35.2-35.2h158.4c0-17.325-26.4-35.2-26.4-70.4 0-26.4 20.625-35.2 44-35.2 8.794 0 20.445 32.712 34.926 56.1 9.074 14.575 19.524 27.225 30.799 39.875 16.109 18.374 33.836 36.633 59.075 39.596v176.752C341.21 396.087 309.491 432 264 432h-21.299c-40.524 0-57.124-22.197-50.601-61.325-14.612-8.001-24.151-33.979-12.925-53.625-19.365-18.225-17.787-46.381-4.95-61.05H83.2C64.225 256 48 239.775 48 220.8zM448 360c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\\\"}}},\\\"hand-point-right\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"finger\\\",\\\"forward\\\",\\\"hand-o-right\\\",\\\"next\\\",\\\"point\\\",\\\"right\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0a4\\\",\\\"label\\\":\\\"Hand Pointing Right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821451,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503066239000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M428.8 137.6h-86.177a115.52 115.52 0 0 0 2.176-22.4c0-47.914-35.072-83.2-92-83.2-45.314 0-57.002 48.537-75.707 78.784-7.735 12.413-16.994 23.317-25.851 33.253l-.131.146-.129.148C135.662 161.807 127.764 168 120.8 168h-2.679c-5.747-4.952-13.536-8-22.12-8H32c-17.673 0-32 12.894-32 28.8v230.4C0 435.106 14.327 448 32 448h64c8.584 0 16.373-3.048 22.12-8h2.679c28.688 0 67.137 40 127.2 40h21.299c62.542 0 98.8-38.658 99.94-91.145 12.482-17.813 18.491-40.785 15.985-62.791A93.148 93.148 0 0 0 393.152 304H428.8c45.435 0 83.2-37.584 83.2-83.2 0-45.099-38.101-83.2-83.2-83.2zm0 118.4h-91.026c12.837 14.669 14.415 42.825-4.95 61.05 11.227 19.646 1.687 45.624-12.925 53.625 6.524 39.128-10.076 61.325-50.6 61.325H248c-45.491 0-77.21-35.913-120-39.676V215.571c25.239-2.964 42.966-21.222 59.075-39.596 11.275-12.65 21.725-25.3 30.799-39.875C232.355 112.712 244.006 80 252.8 80c23.375 0 44 8.8 44 35.2 0 35.2-26.4 53.075-26.4 70.4h158.4c18.425 0 35.2 16.5 35.2 35.2 0 18.975-16.225 35.2-35.2 35.2zM88 384c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\\\"}}},\\\"hand-point-up\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"finger\\\",\\\"hand-o-up\\\",\\\"point\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0a6\\\",\\\"label\\\":\\\"Hand Pointing Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821452,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503066239000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M105.6 83.2v86.177a115.52 115.52 0 0 0-22.4-2.176c-47.914 0-83.2 35.072-83.2 92 0 45.314 48.537 57.002 78.784 75.707 12.413 7.735 23.317 16.994 33.253 25.851l.146.131.148.129C129.807 376.338 136 384.236 136 391.2v2.679c-4.952 5.747-8 13.536-8 22.12v64c0 17.673 12.894 32 28.8 32h230.4c15.906 0 28.8-14.327 28.8-32v-64c0-8.584-3.048-16.373-8-22.12V391.2c0-28.688 40-67.137 40-127.2v-21.299c0-62.542-38.658-98.8-91.145-99.94-17.813-12.482-40.785-18.491-62.791-15.985A93.148 93.148 0 0 0 272 118.847V83.2C272 37.765 234.416 0 188.8 0c-45.099 0-83.2 38.101-83.2 83.2zm118.4 0v91.026c14.669-12.837 42.825-14.415 61.05 4.95 19.646-11.227 45.624-1.687 53.625 12.925 39.128-6.524 61.325 10.076 61.325 50.6V264c0 45.491-35.913 77.21-39.676 120H183.571c-2.964-25.239-21.222-42.966-39.596-59.075-12.65-11.275-25.3-21.725-39.875-30.799C80.712 279.645 48 267.994 48 259.2c0-23.375 8.8-44 35.2-44 35.2 0 53.075 26.4 70.4 26.4V83.2c0-18.425 16.5-35.2 35.2-35.2 18.975 0 35.2 16.225 35.2 35.2zM352 424c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24z\\\"}}},\\\"hand-pointer\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"select\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f25a\\\",\\\"label\\\":\\\"Pointer (Hand)\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M358.182 179.361c-19.493-24.768-52.679-31.945-79.872-19.098-15.127-15.687-36.182-22.487-56.595-19.629V67c0-36.944-29.736-67-66.286-67S89.143 30.056 89.143 67v161.129c-19.909-7.41-43.272-5.094-62.083 8.872-29.355 21.795-35.793 63.333-14.55 93.152l109.699 154.001C134.632 501.59 154.741 512 176 512h178.286c30.802 0 57.574-21.5 64.557-51.797l27.429-118.999A67.873 67.873 0 0 0 448 326v-84c0-46.844-46.625-79.273-89.818-62.639zM80.985 279.697l27.126 38.079c8.995 12.626 29.031 6.287 29.031-9.283V67c0-25.12 36.571-25.16 36.571 0v175c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16v-35c0-25.12 36.571-25.16 36.571 0v35c0 8.836 7.163 16 16 16H272c8.837 0 16-7.164 16-16v-21c0-25.12 36.571-25.16 36.571 0v21c0 8.836 7.163 16 16 16h6.857c8.837 0 16-7.164 16-16 0-25.121 36.571-25.16 36.571 0v84c0 1.488-.169 2.977-.502 4.423l-27.43 119.001c-1.978 8.582-9.29 14.576-17.782 14.576H176c-5.769 0-11.263-2.878-14.697-7.697l-109.712-154c-14.406-20.223 14.994-42.818 29.394-22.606zM176.143 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.733 0-14-7.163-14-16zm75.428 0v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16zM327 400v-96c0-8.837 6.268-16 14-16h6c7.732 0 14 7.163 14 16v96c0 8.837-6.268 16-14 16h-6c-7.732 0-14-7.163-14-16z\\\"}}},\\\"hand-rock\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f255\\\",\\\"label\\\":\\\"Rock (Hand)\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 128.79c0-26.322-20.861-48.344-47.18-48.783C437.935 79.558 416 101.217 416 128h-8V96.79c0-26.322-20.861-48.344-47.18-48.783C333.935 47.558 312 69.217 312 96v32h-8V80.79c0-26.322-20.861-48.344-47.18-48.783C229.935 31.558 208 53.217 208 80v48h-8V96.79c0-26.322-20.861-48.344-47.18-48.783C125.935 47.558 104 69.217 104 96v136l-8-7.111V176.79c0-26.322-20.861-48.344-47.18-48.783C21.935 127.558 0 149.217 0 176v66.445a95.998 95.998 0 0 0 32.221 71.751l111.668 99.261A47.999 47.999 0 0 1 160 449.333V456c0 13.255 10.745 24 24 24h240c13.255 0 24-10.745 24-24v-2.921a96.01 96.01 0 0 1 7.523-37.254l48.954-116.265A96.002 96.002 0 0 0 512 262.306V128.79z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 128.79c0-26.322-20.861-48.344-47.18-48.783C437.935 79.558 416 101.217 416 128h-8V96.79c0-26.322-20.861-48.344-47.18-48.783C333.935 47.558 312 69.217 312 96v32h-8V80.79c0-26.322-20.861-48.344-47.18-48.783C229.935 31.558 208 53.217 208 80v48h-8V96.79c0-26.322-20.861-48.344-47.18-48.783C125.935 47.558 104 69.217 104 96v136l-8-7.111V176.79c0-26.322-20.861-48.344-47.18-48.783C21.935 127.558 0 149.217 0 176v66.445a95.998 95.998 0 0 0 32.221 71.751l111.668 99.261A47.999 47.999 0 0 1 160 449.333V456c0 13.255 10.745 24 24 24h240c13.255 0 24-10.745 24-24v-2.921a96.01 96.01 0 0 1 7.523-37.254l48.954-116.265A96.002 96.002 0 0 0 512 262.306V128.79z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M408.864 79.052c-22.401-33.898-66.108-42.273-98.813-23.588-29.474-31.469-79.145-31.093-108.334-.022-47.16-27.02-108.71 5.055-110.671 60.806C44.846 105.407 0 140.001 0 187.429v56.953c0 32.741 14.28 63.954 39.18 85.634l97.71 85.081c4.252 3.702 3.11 5.573 3.11 32.903 0 17.673 14.327 32 32 32h252c17.673 0 32-14.327 32-32 0-23.513-1.015-30.745 3.982-42.37l42.835-99.656c6.094-14.177 9.183-29.172 9.183-44.568V146.963c0-52.839-54.314-88.662-103.136-67.911zM464 261.406a64.505 64.505 0 0 1-5.282 25.613l-42.835 99.655c-5.23 12.171-7.883 25.04-7.883 38.25V432H188v-10.286c0-16.37-7.14-31.977-19.59-42.817l-97.71-85.08C56.274 281.255 48 263.236 48 244.381v-56.953c0-33.208 52-33.537 52 .677v41.228a16 16 0 0 0 5.493 12.067l7 6.095A16 16 0 0 0 139 235.429V118.857c0-33.097 52-33.725 52 .677v26.751c0 8.836 7.164 16 16 16h7c8.836 0 16-7.164 16-16v-41.143c0-33.134 52-33.675 52 .677v40.466c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16v-27.429c0-33.03 52-33.78 52 .677v26.751c0 8.836 7.163 16 16 16h7c8.837 0 16-7.164 16-16 0-33.146 52-33.613 52 .677v114.445z\\\"}}},\\\"hand-scissors\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f257\\\",\\\"label\\\":\\\"Scissors (Hand)\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 480l70-.013c5.114 0 10.231-.583 15.203-1.729l118.999-27.427C490.56 443.835 512 417.02 512 386.277V180.575c0-23.845-13.03-45.951-34.005-57.69l-97.999-54.853c-34.409-19.261-67.263-5.824-92.218 24.733L142.85 37.008c-37.887-14.579-80.612 3.727-95.642 41.201-15.098 37.642 3.635 80.37 41.942 95.112L168 192l-94-9.141c-40.804 0-74 32.811-74 73.14 0 40.33 33.196 73.141 74 73.141h87.635c-3.675 26.245 8.692 51.297 30.341 65.006C178.657 436.737 211.044 480 256 480zm0-48.013c-25.16 0-25.12-36.567 0-36.567 8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16h-28c-25.159 0-25.122-36.567 0-36.567h28c8.837 0 16-7.163 16-16v-6.856c0-8.837-7.163-16-16-16H74c-34.43 0-34.375-50.281 0-50.281h182c8.837 0 16-7.163 16-16v-11.632a16 16 0 0 0-10.254-14.933L106.389 128.51c-31.552-12.14-13.432-59.283 19.222-46.717l166.549 64.091a16.001 16.001 0 0 0 18.139-4.812l21.764-26.647c5.82-7.127 16.348-9.064 24.488-4.508l98 54.854c5.828 3.263 9.449 9.318 9.449 15.805v205.701c0 8.491-5.994 15.804-14.576 17.782l-119.001 27.427a19.743 19.743 0 0 1-4.423.502h-70z\\\"}}},\\\"hand-spock\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f259\\\",\\\"label\\\":\\\"Spock (Hand)\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M10.872 316.585c15.139-16.086 40.454-16.854 56.543-1.713L128 371.893v-79.405L88.995 120.865c-4.896-21.542 8.598-42.974 30.14-47.87 21.549-4.894 42.975 8.599 47.87 30.141L201.747 256h9.833L164.016 48.966c-4.946-21.531 8.498-42.994 30.028-47.94 21.532-4.95 42.994 8.498 47.94 30.028L293.664 256h15.105l48.425-193.702c5.357-21.432 27.075-34.462 48.507-29.104 21.432 5.358 34.463 27.075 29.104 48.507L391.231 256h11.08l30.768-129.265c5.117-21.491 26.685-34.768 48.177-29.647 21.491 5.117 34.765 26.686 29.647 48.177l-36.292 152.467A96.024 96.024 0 0 0 472 319.967v42.102a96.002 96.002 0 0 1-3.96 27.287l-26.174 88.287C435.825 498.022 417.101 512 395.846 512H179.172a48.002 48.002 0 0 1-32.898-13.046L12.585 373.128c-16.087-15.141-16.853-40.456-1.713-56.543z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M10.872 316.585c15.139-16.086 40.454-16.854 56.543-1.713L128 371.893v-79.405L88.995 120.865c-4.896-21.542 8.598-42.974 30.14-47.87 21.549-4.894 42.975 8.599 47.87 30.141L201.747 256h9.833L164.016 48.966c-4.946-21.531 8.498-42.994 30.028-47.94 21.532-4.95 42.994 8.498 47.94 30.028L293.664 256h15.105l48.425-193.702c5.357-21.432 27.075-34.462 48.507-29.104 21.432 5.358 34.463 27.075 29.104 48.507L391.231 256h11.08l30.768-129.265c5.117-21.491 26.685-34.768 48.177-29.647 21.491 5.117 34.765 26.686 29.647 48.177l-36.292 152.467A96.024 96.024 0 0 0 472 319.967v42.102a96.002 96.002 0 0 1-3.96 27.287l-26.174 88.287C435.825 498.022 417.101 512 395.846 512H179.172a48.002 48.002 0 0 1-32.898-13.046L12.585 373.128c-16.087-15.141-16.853-40.456-1.713-56.543z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M21.096 381.79l129.092 121.513a32 32 0 0 0 21.932 8.698h237.6c14.17 0 26.653-9.319 30.68-22.904l31.815-107.313A115.955 115.955 0 0 0 477 348.811v-36.839c0-4.051.476-8.104 1.414-12.045l31.73-133.41c10.099-42.412-22.316-82.738-65.544-82.525-4.144-24.856-22.543-47.165-49.85-53.992-35.803-8.952-72.227 12.655-81.25 48.75L296.599 184 274.924 52.01c-8.286-36.07-44.303-58.572-80.304-50.296-29.616 6.804-50.138 32.389-51.882 61.295-42.637.831-73.455 40.563-64.071 81.844l31.04 136.508c-27.194-22.515-67.284-19.992-91.482 5.722-25.376 26.961-24.098 69.325 2.871 94.707zm32.068-61.811l.002-.001c7.219-7.672 19.241-7.98 26.856-.813l53.012 49.894C143.225 378.649 160 371.4 160 357.406v-69.479c0-1.193-.134-2.383-.397-3.546l-34.13-150.172c-5.596-24.617 31.502-32.86 37.054-8.421l30.399 133.757a16 16 0 0 0 15.603 12.454h8.604c10.276 0 17.894-9.567 15.594-19.583l-41.62-181.153c-5.623-24.469 31.39-33.076 37.035-8.508l45.22 196.828A16 16 0 0 0 288.956 272h13.217a16 16 0 0 0 15.522-12.119l42.372-169.49c6.104-24.422 42.962-15.159 36.865 9.217L358.805 252.12c-2.521 10.088 5.115 19.88 15.522 19.88h9.694a16 16 0 0 0 15.565-12.295L426.509 146.6c5.821-24.448 42.797-15.687 36.966 8.802L431.72 288.81a100.094 100.094 0 0 0-2.72 23.162v36.839c0 6.548-.943 13.051-2.805 19.328L397.775 464h-219.31L53.978 346.836c-7.629-7.18-7.994-19.229-.814-26.857z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M21.096 381.79l129.092 121.513a32 32 0 0 0 21.932 8.698h237.6c14.17 0 26.653-9.319 30.68-22.904l31.815-107.313A115.955 115.955 0 0 0 477 348.811v-36.839c0-4.051.476-8.104 1.414-12.045l31.73-133.41c10.099-42.412-22.316-82.738-65.544-82.525-4.144-24.856-22.543-47.165-49.85-53.992-35.803-8.952-72.227 12.655-81.25 48.75L296.599 184 274.924 52.01c-8.286-36.07-44.303-58.572-80.304-50.296-29.616 6.804-50.138 32.389-51.882 61.295-42.637.831-73.455 40.563-64.071 81.844l31.04 136.508c-27.194-22.515-67.284-19.992-91.482 5.722-25.376 26.961-24.098 69.325 2.871 94.707zm32.068-61.811l.002-.001c7.219-7.672 19.241-7.98 26.856-.813l53.012 49.894C143.225 378.649 160 371.4 160 357.406v-69.479c0-1.193-.134-2.383-.397-3.546l-34.13-150.172c-5.596-24.617 31.502-32.86 37.054-8.421l30.399 133.757a16 16 0 0 0 15.603 12.454h8.604c10.276 0 17.894-9.567 15.594-19.583l-41.62-181.153c-5.623-24.469 31.39-33.076 37.035-8.508l45.22 196.828A16 16 0 0 0 288.956 272h13.217a16 16 0 0 0 15.522-12.119l42.372-169.49c6.104-24.422 42.962-15.159 36.865 9.217L358.805 252.12c-2.521 10.088 5.115 19.88 15.522 19.88h9.694a16 16 0 0 0 15.565-12.295L426.509 146.6c5.821-24.448 42.797-15.687 36.966 8.802L431.72 288.81a100.094 100.094 0 0 0-2.72 23.162v36.839c0 6.548-.943 13.051-2.805 19.328L397.775 464h-219.31L53.978 346.836c-7.629-7.18-7.994-19.229-.814-26.857z\\\"}}},\\\"hands\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4c2\\\",\\\"label\\\":\\\"Hands\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821452,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\\\"}}},\\\"hands-helping\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"aid\\\",\\\"assistance\\\",\\\"partnership\\\",\\\"volunteering\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4c4\\\",\\\"label\\\":\\\"Helping Hands\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406020,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\\\"}}},\\\"handshake\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"greeting\\\",\\\"partnership\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2b5\\\",\\\"label\\\":\\\"Handshake\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406021,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1522083406004,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M519.2 127.9l-47.6-47.6A56.252 56.252 0 0 0 432 64H205.2c-14.8 0-29.1 5.9-39.6 16.3L118 127.9H0v255.7h64c17.6 0 31.8-14.2 31.9-31.7h9.1l84.6 76.4c30.9 25.1 73.8 25.7 105.6 3.8 12.5 10.8 26 15.9 41.1 15.9 18.2 0 35.3-7.4 48.8-24 22.1 8.7 48.2 2.6 64-16.8l26.2-32.3c5.6-6.9 9.1-14.8 10.9-23h57.9c.1 17.5 14.4 31.7 31.9 31.7h64V127.9H519.2zM48 351.6c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16zm390-6.9l-26.1 32.2c-2.8 3.4-7.8 4-11.3 1.2l-23.9-19.4-30 36.5c-6 7.3-15 4.8-18 2.4l-36.8-31.5-15.6 19.2c-13.9 17.1-39.2 19.7-55.3 6.6l-97.3-88H96V175.8h41.9l61.7-61.6c2-.8 3.7-1.5 5.7-2.3H262l-38.7 35.5c-29.4 26.9-31.1 72.3-4.4 101.3 14.8 16.2 61.2 41.2 101.5 4.4l8.2-7.5 108.2 87.8c3.4 2.8 3.9 7.9 1.2 11.3zm106-40.8h-69.2c-2.3-2.8-4.9-5.4-7.7-7.7l-102.7-83.4 12.5-11.4c6.5-6 7-16.1 1-22.6L367 167.1c-6-6.5-16.1-6.9-22.6-1l-55.2 50.6c-9.5 8.7-25.7 9.4-34.6 0-9.3-9.9-8.5-25.1 1.2-33.9l65.6-60.1c7.4-6.8 17-10.5 27-10.5l83.7-.2c2.1 0 4.1.8 5.5 2.3l61.7 61.6H544v128zm48 47.7c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16c0 8.9-7.2 16-16 16z\\\"}}},\\\"hashtag\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f292\\\",\\\"label\\\":\\\"Hashtag\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\\\"}}},\\\"hdd\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cpu\\\",\\\"hard drive\\\",\\\"harddrive\\\",\\\"machine\\\",\\\"save\\\",\\\"storage\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0a0\\\",\\\"label\\\":\\\"HDD\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M567.403 235.642L462.323 84.589A48 48 0 0 0 422.919 64H153.081a48 48 0 0 0-39.404 20.589L8.597 235.642A48.001 48.001 0 0 0 0 263.054V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V263.054c0-9.801-3-19.366-8.597-27.412zM153.081 112h269.838l77.913 112H75.168l77.913-112zM528 400H48V272h480v128zm-32-64c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32zm-96 0c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z\\\"}}},\\\"heading\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"header\\\",\\\"header\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1dc\\\",\\\"label\\\":\\\"heading\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M496 80V48c0-8.837-7.163-16-16-16H320c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h37.621v128H154.379V96H192c8.837 0 16-7.163 16-16V48c0-8.837-7.163-16-16-16H32c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h37.275v320H32c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h160c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16h-37.621V288H357.62v128H320c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h160c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16h-37.275V96H480c8.837 0 16-7.163 16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M496 80V48c0-8.837-7.163-16-16-16H320c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h37.621v128H154.379V96H192c8.837 0 16-7.163 16-16V48c0-8.837-7.163-16-16-16H32c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h37.275v320H32c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h160c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16h-37.621V288H357.62v128H320c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h160c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16h-37.275V96H480c8.837 0 16-7.163 16-16z\\\"}}},\\\"headphones\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"audio\\\",\\\"listen\\\",\\\"music\\\",\\\"sound\\\",\\\"speaker\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f025\\\",\\\"label\\\":\\\"headphones\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\\\"}}},\\\"headphones-alt\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"audio\\\",\\\"listen\\\",\\\"music\\\",\\\"sound\\\",\\\"speaker\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f58f\\\",\\\"label\\\":\\\"Headphones Alt\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111678,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\\\"}}},\\\"headset\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"audio\\\",\\\"gamer\\\",\\\"gaming\\\",\\\"listen\\\",\\\"live chat\\\",\\\"microphone\\\",\\\"shot caller\\\",\\\"sound\\\",\\\"support\\\",\\\"telemarketer\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f590\\\",\\\"label\\\":\\\"Headset\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111679,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\\\"}}},\\\"heart\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"favorite\\\",\\\"like\\\",\\\"love\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f004\\\",\\\"label\\\":\\\"Heart\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406022,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1522083406005,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M458.4 64.3C400.6 15.7 311.3 23 256 79.3 200.7 23 111.4 15.6 53.6 64.3-21.6 127.6-10.6 230.8 43 285.5l175.4 178.7c10 10.2 23.4 15.9 37.6 15.9 14.3 0 27.6-5.6 37.6-15.8L469 285.6c53.5-54.7 64.7-157.9-10.6-221.3zm-23.6 187.5L259.4 430.5c-2.4 2.4-4.4 2.4-6.8 0L77.2 251.8c-36.5-37.2-43.9-107.6 7.3-150.7 38.9-32.7 98.9-27.8 136.5 10.5l35 35.7 35-35.7c37.8-38.5 97.8-43.2 136.5-10.6 51.1 43.1 43.5 113.9 7.3 150.8z\\\"}}},\\\"heartbeat\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\",\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"ekg\\\",\\\"lifeline\\\",\\\"vital signs\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f21e\\\",\\\"label\\\":\\\"Heartbeat\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821453,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\\\"}}},\\\"helicopter\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"airwolf\\\",\\\"apache\\\",\\\"chopper\\\",\\\"flight\\\",\\\"fly\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f533\\\",\\\"label\\\":\\\"Helicopter\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154569,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\\\"}}},\\\"highlighter\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"edit\\\",\\\"marker\\\",\\\"sharpie\\\",\\\"update\\\",\\\"write\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f591\\\",\\\"label\\\":\\\"Highlighter\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111679,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 544 512\\\\\\\"><path d=\\\\\\\"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"544\\\",\\\"512\\\"],\\\"width\\\":544,\\\"height\\\":512,\\\"path\\\":\\\"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\\\"}}},\\\"hips\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f452\\\",\\\"label\\\":\\\"Hips\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1518899527948,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M0 80.2c0-1.8.9-2.7 2.7-2.7h40.9c1.9 0 2.8.9 2.8 2.7v81.2c15.2-7.7 31.7-11.5 49.8-11.4 24 .1 44.2 6.2 60.3 18 18.7 13.5 28 31.9 28 55.3v136.1c0 1.9-.9 2.8-2.7 2.8h-27.3c-9.1 0-16.4-7.3-16.4-16.3V223.3c0-.9 2.7-27-45.8-27-48.6 0-45.8 26.2-45.8 27v136.1c0 1.9-.9 2.8-2.8 2.8h-41c-1.8 0-2.7-.9-2.7-2.8V80.2zm497.7 221.5c13.7 10.2 34.1 19.1 58.4 19.1 23.3 0 32.8-4.5 36.5-13.6 3-7.9-.6-16.1-12.2-21.2l-53.6-23.5c-21.4-9.4-33.8-24-37.2-43.6-5.7-33.7 22.2-53.3 22.7-53.7 13.2-9.6 32-15.4 58.5-15.4 19 0 37.4 3.3 55.1 9.9 1.3.5 1.9 1.3 1.9 2.6V207c0 2.1-2.3 3.4-4 2.4-39.7-20.7-76.6-12.3-84-6.8-6.6 4.9-6 12.5 2.6 16.1L600 244c16.5 7.1 28.1 18.4 34.9 34.1 5.5 12.6 6.6 25.6 3.1 39.1-9.6 36.9-44.9 45.5-45.6 45.8-10.5 3.1-23.6 4.3-36.3 4.3-16.6 0-32.6-2.7-48.2-8.2-9.7-3.4-14.6-10.3-14.6-20.7V304c0-2.1 2.3-3.7 4.4-2.3zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zm-124.6 38.7c0 1.9-.9 2.8-2.8 2.8h-40.9c-1.6 0-2.7-1.4-2.7-2.8V157.6c0-1.4 1.1-2.8 2.7-2.8h40.9c1.9 0 2.8.9 2.8 2.8v201.8M228.3 72.5c15.9 0 28.9 12.7 28.9 28.9 0 15.8-12.7 28.9-28.9 28.9s-28.9-13.3-28.9-28.9c.1-16 13-28.9 28.9-28.9\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M0 80.2c0-1.8.9-2.7 2.7-2.7h40.9c1.9 0 2.8.9 2.8 2.7v81.2c15.2-7.7 31.7-11.5 49.8-11.4 24 .1 44.2 6.2 60.3 18 18.7 13.5 28 31.9 28 55.3v136.1c0 1.9-.9 2.8-2.7 2.8h-27.3c-9.1 0-16.4-7.3-16.4-16.3V223.3c0-.9 2.7-27-45.8-27-48.6 0-45.8 26.2-45.8 27v136.1c0 1.9-.9 2.8-2.8 2.8h-41c-1.8 0-2.7-.9-2.7-2.8V80.2zm497.7 221.5c13.7 10.2 34.1 19.1 58.4 19.1 23.3 0 32.8-4.5 36.5-13.6 3-7.9-.6-16.1-12.2-21.2l-53.6-23.5c-21.4-9.4-33.8-24-37.2-43.6-5.7-33.7 22.2-53.3 22.7-53.7 13.2-9.6 32-15.4 58.5-15.4 19 0 37.4 3.3 55.1 9.9 1.3.5 1.9 1.3 1.9 2.6V207c0 2.1-2.3 3.4-4 2.4-39.7-20.7-76.6-12.3-84-6.8-6.6 4.9-6 12.5 2.6 16.1L600 244c16.5 7.1 28.1 18.4 34.9 34.1 5.5 12.6 6.6 25.6 3.1 39.1-9.6 36.9-44.9 45.5-45.6 45.8-10.5 3.1-23.6 4.3-36.3 4.3-16.6 0-32.6-2.7-48.2-8.2-9.7-3.4-14.6-10.3-14.6-20.7V304c0-2.1 2.3-3.7 4.4-2.3zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zm-124.6 38.7c0 1.9-.9 2.8-2.8 2.8h-40.9c-1.6 0-2.7-1.4-2.7-2.8V157.6c0-1.4 1.1-2.8 2.7-2.8h40.9c1.9 0 2.8.9 2.8 2.8v201.8M228.3 72.5c15.9 0 28.9 12.7 28.9 28.9 0 15.8-12.7 28.9-28.9 28.9s-28.9-13.3-28.9-28.9c.1-16 13-28.9 28.9-28.9\\\"}}},\\\"hire-a-helper\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3b0\\\",\\\"label\\\":\\\"HireAHelper\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z\\\"}}},\\\"history\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1da\\\",\\\"label\\\":\\\"History\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\\\"}}},\\\"hockey-puck\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f453\\\",\\\"label\\\":\\\"Hockey Puck\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527996,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\\\"}}},\\\"home\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"house\\\",\\\"main\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f015\\\",\\\"label\\\":\\\"home\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M488 312.7V456c0 13.3-10.7 24-24 24H348c-6.6 0-12-5.4-12-12V356c0-6.6-5.4-12-12-12h-72c-6.6 0-12 5.4-12 12v112c0 6.6-5.4 12-12 12H112c-13.3 0-24-10.7-24-24V312.7c0-3.6 1.6-7 4.4-9.3l188-154.8c4.4-3.6 10.8-3.6 15.3 0l188 154.8c2.7 2.3 4.3 5.7 4.3 9.3zm83.6-60.9L488 182.9V44.4c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12V117l-89.5-73.7c-17.7-14.6-43.3-14.6-61 0L4.4 251.8c-5.1 4.2-5.8 11.8-1.6 16.9l25.5 31c4.2 5.1 11.8 5.8 16.9 1.6l235.2-193.7c4.4-3.6 10.8-3.6 15.3 0l235.2 193.7c5.1 4.2 12.7 3.5 16.9-1.6l25.5-31c4.2-5.2 3.4-12.7-1.7-16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M488 312.7V456c0 13.3-10.7 24-24 24H348c-6.6 0-12-5.4-12-12V356c0-6.6-5.4-12-12-12h-72c-6.6 0-12 5.4-12 12v112c0 6.6-5.4 12-12 12H112c-13.3 0-24-10.7-24-24V312.7c0-3.6 1.6-7 4.4-9.3l188-154.8c4.4-3.6 10.8-3.6 15.3 0l188 154.8c2.7 2.3 4.3 5.7 4.3 9.3zm83.6-60.9L488 182.9V44.4c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12V117l-89.5-73.7c-17.7-14.6-43.3-14.6-61 0L4.4 251.8c-5.1 4.2-5.8 11.8-1.6 16.9l25.5 31c4.2 5.1 11.8 5.8 16.9 1.6l235.2-193.7c4.4-3.6 10.8-3.6 15.3 0l235.2 193.7c5.1 4.2 12.7 3.5 16.9-1.6l25.5-31c4.2-5.2 3.4-12.7-1.7-16.9z\\\"}}},\\\"hooli\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f427\\\",\\\"label\\\":\\\"Hooli\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1510266191926,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M508.4 352h57.9V156.7L508.4 184v168zm73.7-110.5V352H640V241.5h-57.9zm-250.7-8.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.9 110.9v-31c-48.8-54.6-39-76.1-35.3-79.2 13.5-11.4 37.5-8 64.4 2.1L65.2 184v63.3c13.1 14.7 30.5 31.5 53.5 50.4l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5 18.2 18.2 50.4 17.1 50.4 17.1s32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zm-39.7 71.9c0 3.6-1.8 12.5-10.7 12.5-8.9 0-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9 3.4 0 10.7 2.1 10.7 10.9v40.4zm185.7-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6 0 18.7-1.4 34.3 16.8 52.5 18.2 18.2 50.4 17.1 50.4 17.1s32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5-8.9 0-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9 3.4 0 10.7 2.1 10.7 10.9v40.4zm173.5-73c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zM144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8v16zm-21.4 0v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.5-21.7-38.5-31.5V352h57.9zm59.7.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3v5.3l-19.4.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M508.4 352h57.9V156.7L508.4 184v168zm73.7-110.5V352H640V241.5h-57.9zm-250.7-8.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.9 110.9v-31c-48.8-54.6-39-76.1-35.3-79.2 13.5-11.4 37.5-8 64.4 2.1L65.2 184v63.3c13.1 14.7 30.5 31.5 53.5 50.4l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5 18.2 18.2 50.4 17.1 50.4 17.1s32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zm-39.7 71.9c0 3.6-1.8 12.5-10.7 12.5-8.9 0-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9 3.4 0 10.7 2.1 10.7 10.9v40.4zm185.7-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6 0 18.7-1.4 34.3 16.8 52.5 18.2 18.2 50.4 17.1 50.4 17.1s32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5-8.9 0-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9 3.4 0 10.7 2.1 10.7 10.9v40.4zm173.5-73c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zM144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8v16zm-21.4 0v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.5-21.7-38.5-31.5V352h57.9zm59.7.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3v5.3l-19.4.8z\\\"}}},\\\"hornbill\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f592\\\",\\\"label\\\":\\\"Hornbill\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529514897189,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 509.02 512\\\\\\\"><path d=\\\\\\\"M75.37 370.3c2.14 15.83-5.77 31.98-20.94 39.29-18.85 9.1-41.55 1.17-50.68-17.68-9.08-18.83-1.13-41.58 17.7-50.65 7.05-3.4 14.63-4.42 21.85-3.38-78.28-111.35 52-190.53 52-190.53-5.86 43.04-8.24 91.16-8.24 91.16-67.31 41.45.92 64.06 39.81 72.87 19.77 53.62 71.18 91.94 131.66 91.94 1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zM183.38 42.6c.89-7-.1-14.33-3.39-21.15-9.1-18.84-31.82-26.78-50.66-17.69-18.86 9.1-26.8 31.83-17.69 50.68 6.98 14.47 22.02 22.42 37.18 21.23-22.55 29.91-53.83 89.57-52.42 190.03l21.84-.15c-.02-.9-.14-1.77-.14-2.68 0-58.95 36.37-109.33 87.85-130.16 8.01-37.75 30.74-114.3 73.84-44.29 0 0 48.14 2.38 91.18 8.24 0-.01-77.84-128.03-187.59-54.06zm304.18 134.17c18.84-9.09 26.81-31.81 17.7-50.65-9.1-18.85-31.83-26.77-50.67-17.69-15.27 7.37-23.19 23.69-20.87 39.64-31.71-21.94-89.84-49.05-183.45-47.74l.14 22.5c2.7-.15 5.39-.41 8.14-.41 59.3 0 109.9 36.8 130.49 88.76 39.1 9.02 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 48.96-194.61 6.43.5 13.07-.49 19.31-3.5zM373.05 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15 0 60.27-38.05 111.55-91.39 131.45-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 50.97.31 4.72 1.45 9.45 3.64 13.97 9.06 18.89 31.8 26.78 50.64 17.71 18.86-9.1 26.79-31.83 17.7-50.65-6.56-13.62-20.26-21.43-34.45-21.35z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"509.02\\\",\\\"512\\\"],\\\"width\\\":509,\\\"height\\\":512,\\\"path\\\":\\\"M75.37 370.3c2.14 15.83-5.77 31.98-20.94 39.29-18.85 9.1-41.55 1.17-50.68-17.68-9.08-18.83-1.13-41.58 17.7-50.65 7.05-3.4 14.63-4.42 21.85-3.38-78.28-111.35 52-190.53 52-190.53-5.86 43.04-8.24 91.16-8.24 91.16-67.31 41.45.92 64.06 39.81 72.87 19.77 53.62 71.18 91.94 131.66 91.94 1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zM183.38 42.6c.89-7-.1-14.33-3.39-21.15-9.1-18.84-31.82-26.78-50.66-17.69-18.86 9.1-26.8 31.83-17.69 50.68 6.98 14.47 22.02 22.42 37.18 21.23-22.55 29.91-53.83 89.57-52.42 190.03l21.84-.15c-.02-.9-.14-1.77-.14-2.68 0-58.95 36.37-109.33 87.85-130.16 8.01-37.75 30.74-114.3 73.84-44.29 0 0 48.14 2.38 91.18 8.24 0-.01-77.84-128.03-187.59-54.06zm304.18 134.17c18.84-9.09 26.81-31.81 17.7-50.65-9.1-18.85-31.83-26.77-50.67-17.69-15.27 7.37-23.19 23.69-20.87 39.64-31.71-21.94-89.84-49.05-183.45-47.74l.14 22.5c2.7-.15 5.39-.41 8.14-.41 59.3 0 109.9 36.8 130.49 88.76 39.1 9.02 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 48.96-194.61 6.43.5 13.07-.49 19.31-3.5zM373.05 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15 0 60.27-38.05 111.55-91.39 131.45-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 50.97.31 4.72 1.45 9.45 3.64 13.97 9.06 18.89 31.8 26.78 50.64 17.71 18.86-9.1 26.79-31.83 17.7-50.65-6.56-13.62-20.26-21.43-34.45-21.35z\\\"}}},\\\"hospital\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"building\\\",\\\"emergency room\\\",\\\"medical center\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0f8\\\",\\\"label\\\":\\\"hospital\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M128 244v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12zm140 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm-76 84v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm76 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm180 124v36H0v-36c0-6.627 5.373-12 12-12h19.5V85.035C31.5 73.418 42.245 64 55.5 64H144V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v40h88.5c13.255 0 24 9.418 24 21.035V464H436c6.627 0 12 5.373 12 12zM79.5 463H192v-67c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v67h112.5V112H304v24c0 13.255-10.745 24-24 24H168c-13.255 0-24-10.745-24-24v-24H79.5v351zM266 64h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6z\\\"}}},\\\"hospital-alt\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"building\\\",\\\"emergency room\\\",\\\"medical center\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f47d\\\",\\\"label\\\":\\\"Alternate Hospital\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821453,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\\\"}}},\\\"hospital-symbol\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f47e\\\",\\\"label\\\":\\\"Hospital Symbol\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821453,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\\\"}}},\\\"hot-tub\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f593\\\",\\\"label\\\":\\\"Hot Tub\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111679,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\\\"}}},\\\"hotel\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"building\\\",\\\"lodging\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f594\\\",\\\"label\\\":\\\"Hotel\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111680,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\\\"}}},\\\"hotjar\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3b1\\\",\\\"label\\\":\\\"Hotjar\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821385,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z\\\"}}},\\\"hourglass\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f254\\\",\\\"label\\\":\\\"Hourglass\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M368 48h4c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12H12C5.373 0 0 5.373 0 12v24c0 6.627 5.373 12 12 12h4c0 80.564 32.188 165.807 97.18 208C47.899 298.381 16 383.9 16 464h-4c-6.627 0-12 5.373-12 12v24c0 6.627 5.373 12 12 12h360c6.627 0 12-5.373 12-12v-24c0-6.627-5.373-12-12-12h-4c0-80.564-32.188-165.807-97.18-208C336.102 213.619 368 128.1 368 48zM64 48h256c0 101.62-57.307 184-128 184S64 149.621 64 48zm256 416H64c0-101.62 57.308-184 128-184s128 82.38 128 184z\\\"}}},\\\"hourglass-end\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f253\\\",\\\"label\\\":\\\"Hourglass End\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\\\"}}},\\\"hourglass-half\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f252\\\",\\\"label\\\":\\\"Hourglass Half\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\\\"}}},\\\"hourglass-start\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f251\\\",\\\"label\\\":\\\"Hourglass Start\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\\\"}}},\\\"houzz\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f27c\\\",\\\"label\\\":\\\"Houzz\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521730699234,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 414.6 512\\\\\\\"><path d=\\\\\\\"M258.9 330.7H154.3V480H0V32h109.5v104.5l305.1 85.6V480H258.9V330.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"414.6\\\",\\\"512\\\"],\\\"width\\\":414,\\\"height\\\":512,\\\"path\\\":\\\"M258.9 330.7H154.3V480H0V32h109.5v104.5l305.1 85.6V480H258.9V330.7z\\\"}}},\\\"html5\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f13b\\\",\\\"label\\\":\\\"HTML 5 Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z\\\"}}},\\\"hubspot\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3b2\\\",\\\"label\\\":\\\"HubSpot\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z\\\"}}},\\\"i-cursor\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f246\\\",\\\"label\\\":\\\"I Beam Cursor\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\\\"}}},\\\"id-badge\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2c1\\\",\\\"label\\\":\\\"Identification Badge\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365068,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1525209365050,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm0 464H48V48h288v416zM144 112h96c8.8 0 16-7.2 16-16s-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16zm48 176c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm-89.6 128h179.2c12.4 0 22.4-8.6 22.4-19.2v-19.2c0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6v19.2c0 10.6 10 19.2 22.4 19.2z\\\"}}},\\\"id-card\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"document\\\",\\\"identification\\\",\\\"issued\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2c2\\\",\\\"label\\\":\\\"Identification Card\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365069,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1525209365051,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 400H303.2c.9-4.5.8 3.6.8-22.4 0-31.8-30.1-57.6-67.2-57.6-10.8 0-18.7 8-44.8 8-26.9 0-33.4-8-44.8-8-37.1 0-67.2 25.8-67.2 57.6 0 26-.2 17.9.8 22.4H48V144h480v288zm-168-80h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm0-64h112c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm-168 96c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\\\"}}},\\\"id-card-alt\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"demographics\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f47f\\\",\\\"label\\\":\\\"Alternate Identification Card\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365068,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\\\"}}},\\\"image\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"album\\\",\\\"photo\\\",\\\"picture\\\",\\\"picture\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f03e\\\",\\\"label\\\":\\\"Image\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm-6 336H54a6 6 0 0 1-6-6V118a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v276a6 6 0 0 1-6 6zM128 152c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zM96 352h320v-80l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L192 304l-39.515-39.515c-4.686-4.686-12.284-4.686-16.971 0L96 304v48z\\\"}}},\\\"images\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"album\\\",\\\"photo\\\",\\\"picture\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f302\\\",\\\"label\\\":\\\"Images\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v48H54a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6v-10h48zm42-336H150a6 6 0 0 0-6 6v244a6 6 0 0 0 6 6h372a6 6 0 0 0 6-6V86a6 6 0 0 0-6-6zm6-48c26.51 0 48 21.49 48 48v256c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h384zM264 144c0 22.091-17.909 40-40 40s-40-17.909-40-40 17.909-40 40-40 40 17.909 40 40zm-72 96l39.515-39.515c4.686-4.686 12.284-4.686 16.971 0L288 240l103.515-103.515c4.686-4.686 12.284-4.686 16.971 0L480 208v80H192v-48z\\\"}}},\\\"imdb\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2d8\\\",\\\"label\\\":\\\"IMDB\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M350.5 288.7c0 5.4 1.6 14.4-6.2 14.4-1.6 0-3-.8-3.8-2.4-2.2-5.1-1.1-44.1-1.1-44.7 0-3.8-1.1-12.7 4.9-12.7 7.3 0 6.2 7.3 6.2 12.7v32.7zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4v-49.3zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM21.3 228.8c-.1.1-.2.3-.3.4h.3v-.4zM97 192H64v127.8h33V192zm113.3 0h-43.1l-7.6 59.9c-2.7-20-5.4-40.1-8.7-59.9h-42.8v127.8h29v-84.5l12.2 84.5h20.6l11.6-86.4v86.4h28.7V192zm86.3 45.3c0-8.1.3-16.8-1.4-24.4-4.3-22.5-31.4-20.9-49-20.9h-24.6v127.8c86.1.1 75 6 75-82.5zm85.9 17.3c0-17.3-.8-30.1-22.2-30.1-8.9 0-14.9 2.7-20.9 9.2V192h-31.7v127.8h29.8l1.9-8.1c5.7 6.8 11.9 9.8 20.9 9.8 19.8 0 22.2-15.2 22.2-30.9v-36z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M350.5 288.7c0 5.4 1.6 14.4-6.2 14.4-1.6 0-3-.8-3.8-2.4-2.2-5.1-1.1-44.1-1.1-44.7 0-3.8-1.1-12.7 4.9-12.7 7.3 0 6.2 7.3 6.2 12.7v32.7zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4v-49.3zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM21.3 228.8c-.1.1-.2.3-.3.4h.3v-.4zM97 192H64v127.8h33V192zm113.3 0h-43.1l-7.6 59.9c-2.7-20-5.4-40.1-8.7-59.9h-42.8v127.8h29v-84.5l12.2 84.5h20.6l11.6-86.4v86.4h28.7V192zm86.3 45.3c0-8.1.3-16.8-1.4-24.4-4.3-22.5-31.4-20.9-49-20.9h-24.6v127.8c86.1.1 75 6 75-82.5zm85.9 17.3c0-17.3-.8-30.1-22.2-30.1-8.9 0-14.9 2.7-20.9 9.2V192h-31.7v127.8h29.8l1.9-8.1c5.7 6.8 11.9 9.8 20.9 9.8 19.8 0 22.2-15.2 22.2-30.9v-36z\\\"}}},\\\"inbox\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f01c\\\",\\\"label\\\":\\\"inbox\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\\\"}}},\\\"indent\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f03c\\\",\\\"label\\\":\\\"Indent\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 84V44c0-8.837 7.163-16 16-16h416c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16zm176 144h256c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H176c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zM16 484h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm160-128h256c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H176c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm-52.687-111.313l-96-95.984C17.266 138.652 0 145.776 0 160.016v191.975c0 14.329 17.325 21.304 27.313 11.313l96-95.992c6.249-6.247 6.249-16.377 0-22.625z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 84V44c0-8.837 7.163-16 16-16h416c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16zm176 144h256c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H176c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zM16 484h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm160-128h256c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H176c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm-52.687-111.313l-96-95.984C17.266 138.652 0 145.776 0 160.016v191.975c0 14.329 17.325 21.304 27.313 11.313l96-95.992c6.249-6.247 6.249-16.377 0-22.625z\\\"}}},\\\"industry\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"factory\\\",\\\"manufacturing\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f275\\\",\\\"label\\\":\\\"Industry\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\\\"}}},\\\"infinity\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f534\\\",\\\"label\\\":\\\"Infinity\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154569,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\\\"}}},\\\"info\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"details\\\",\\\"help\\\",\\\"information\\\",\\\"more\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f129\\\",\\\"label\\\":\\\"Info\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 192 512\\\\\\\"><path d=\\\\\\\"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"192\\\",\\\"512\\\"],\\\"width\\\":192,\\\"height\\\":512,\\\"path\\\":\\\"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\\\"}}},\\\"info-circle\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"details\\\",\\\"help\\\",\\\"information\\\",\\\"more\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f05a\\\",\\\"label\\\":\\\"Info Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\\\"}}},\\\"instagram\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f16d\\\",\\\"label\\\":\\\"Instagram\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\\\"}}},\\\"internet-explorer\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"browser\\\",\\\"ie\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f26b\\\",\\\"label\\\":\\\"Internet-explorer\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z\\\"}}},\\\"ioxhost\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f208\\\",\\\"label\\\":\\\"ioxhost\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z\\\"}}},\\\"italic\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"italics\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f033\\\",\\\"label\\\":\\\"italic\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M204.758 416h-33.849l62.092-320h40.725a16 16 0 0 0 15.704-12.937l6.242-32C297.599 41.184 290.034 32 279.968 32H120.235a16 16 0 0 0-15.704 12.937l-6.242 32C96.362 86.816 103.927 96 113.993 96h33.846l-62.09 320H46.278a16 16 0 0 0-15.704 12.935l-6.245 32C22.402 470.815 29.967 480 40.034 480h158.479a16 16 0 0 0 15.704-12.935l6.245-32c1.927-9.88-5.638-19.065-15.704-19.065z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M204.758 416h-33.849l62.092-320h40.725a16 16 0 0 0 15.704-12.937l6.242-32C297.599 41.184 290.034 32 279.968 32H120.235a16 16 0 0 0-15.704 12.937l-6.242 32C96.362 86.816 103.927 96 113.993 96h33.846l-62.09 320H46.278a16 16 0 0 0-15.704 12.935l-6.245 32C22.402 470.815 29.967 480 40.034 480h158.479a16 16 0 0 0 15.704-12.935l6.245-32c1.927-9.88-5.638-19.065-15.704-19.065z\\\"}}},\\\"itunes\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3b4\\\",\\\"label\\\":\\\"iTunes\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z\\\"}}},\\\"itunes-note\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3b5\\\",\\\"label\\\":\\\"Itunes Note\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z\\\"}}},\\\"java\\\":{\\\"changes\\\":[\\\"5.0.10\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4e4\\\",\\\"label\\\":\\\"Java\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1523653480521,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 377.6 512\\\\\\\"><path d=\\\\\\\"M121.6 396s-19.6 11.4 13.9 15.2c40.6 4.6 61.3 4 106-4.5 0 0 11.8 7.4 28.2 13.8C169.5 463.4 42.9 418 121.6 396m-12.2-56.1s-21.9 16.2 11.6 19.7c43.3 4.5 77.6 4.8 136.8-6.6 0 0 8.2 8.3 21.1 12.8-121.3 35.5-256.3 2.9-169.5-25.9m103.2-95.1c24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3.1 0-175.2 43.8-91.5 140.2m132.6 192.6s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2 204.2 33.2 372.4-14.9 319.4-38.8M131 281.8s-93.1 22.1-33 30.1c25.4 3.4 76 2.6 123.1-1.3 38.5-3.2 77.2-10.2 77.2-10.2s-13.6 5.8-23.4 12.5c-94.5 24.9-277 13.3-224.5-12.1 44.5-21.4 80.6-19 80.6-19m167 93.3c96.1-49.9 51.6-97.9 20.6-91.4-7.6 1.6-11 3-11 3s2.8-4.4 8.2-6.3c61.3-21.6 108.5 63.6-19.8 97.3 0-.1 1.5-1.4 2-2.6M240 0s53.2 53.2-50.5 135c-83.1 65.6-19 103.1 0 145.8-48.5-43.8-84.1-82.3-60.2-118.2C164.4 110.1 261.5 84.5 240 0m-99.5 510.4c92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"377.6\\\",\\\"512\\\"],\\\"width\\\":377,\\\"height\\\":512,\\\"path\\\":\\\"M121.6 396s-19.6 11.4 13.9 15.2c40.6 4.6 61.3 4 106-4.5 0 0 11.8 7.4 28.2 13.8C169.5 463.4 42.9 418 121.6 396m-12.2-56.1s-21.9 16.2 11.6 19.7c43.3 4.5 77.6 4.8 136.8-6.6 0 0 8.2 8.3 21.1 12.8-121.3 35.5-256.3 2.9-169.5-25.9m103.2-95.1c24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3.1 0-175.2 43.8-91.5 140.2m132.6 192.6s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2 204.2 33.2 372.4-14.9 319.4-38.8M131 281.8s-93.1 22.1-33 30.1c25.4 3.4 76 2.6 123.1-1.3 38.5-3.2 77.2-10.2 77.2-10.2s-13.6 5.8-23.4 12.5c-94.5 24.9-277 13.3-224.5-12.1 44.5-21.4 80.6-19 80.6-19m167 93.3c96.1-49.9 51.6-97.9 20.6-91.4-7.6 1.6-11 3-11 3s2.8-4.4 8.2-6.3c61.3-21.6 108.5 63.6-19.8 97.3 0-.1 1.5-1.4 2-2.6M240 0s53.2 53.2-50.5 135c-83.1 65.6-19 103.1 0 145.8-48.5-43.8-84.1-82.3-60.2-118.2C164.4 110.1 261.5 84.5 240 0m-99.5 510.4c92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6\\\"}}},\\\"jedi-order\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f50e\\\",\\\"label\\\":\\\"Jedi Order\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442521,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M231.89 335.72l31.44-45.89-20.18 55.5 62.56 9.09-62.56 9.08 24.22 47.43s-30.22-31.77-34.49-36.25c1.76 68.78 2.19 85.7 2.19 85.7s154.4-71.65 68.62-230.09c0 0 106.97-118.07 10.09-190.73 0 0 165.5 99.91 60.55 271.46 0 0 86.78-84.77 41.37-170.54 0 0 78.71 111.01-17.16 233.11 0 0 26.24-16.15 49.45-77.71 0 0-16.93 183.26-221.96 185.66v.02h-4.08v-.02C16.93 479.14 0 295.88 0 295.88c23.21 61.56 49.44 77.71 49.44 77.71-95.87-122.11-17.15-233.11-17.15-233.11-45.41 85.78 41.38 170.54 41.38 170.54-104.95-171.56 60.54-271.46 60.54-271.46-96.88 72.66 10.09 190.73 10.09 190.73-85.78 158.44 68.62 230.09 68.62 230.09s.43-16.93 2.19-85.7l-34.48 36.25 24.22-47.43-62.56-9.08 62.56-9.09-20.18-55.5 31.44 45.89c2.25-87.85 7.82-305.82 7.85-306.85l.01-2.43.02 1 .03-1 .01 2.43c.05 1.72 5.61 219.2 7.86 306.85z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M231.89 335.72l31.44-45.89-20.18 55.5 62.56 9.09-62.56 9.08 24.22 47.43s-30.22-31.77-34.49-36.25c1.76 68.78 2.19 85.7 2.19 85.7s154.4-71.65 68.62-230.09c0 0 106.97-118.07 10.09-190.73 0 0 165.5 99.91 60.55 271.46 0 0 86.78-84.77 41.37-170.54 0 0 78.71 111.01-17.16 233.11 0 0 26.24-16.15 49.45-77.71 0 0-16.93 183.26-221.96 185.66v.02h-4.08v-.02C16.93 479.14 0 295.88 0 295.88c23.21 61.56 49.44 77.71 49.44 77.71-95.87-122.11-17.15-233.11-17.15-233.11-45.41 85.78 41.38 170.54 41.38 170.54-104.95-171.56 60.54-271.46 60.54-271.46-96.88 72.66 10.09 190.73 10.09 190.73-85.78 158.44 68.62 230.09 68.62 230.09s.43-16.93 2.19-85.7l-34.48 36.25 24.22-47.43-62.56-9.08 62.56-9.09-20.18-55.5 31.44 45.89c2.25-87.85 7.82-305.82 7.85-306.85l.01-2.43.02 1 .03-1 .01 2.43c.05 1.72 5.61 219.2 7.86 306.85z\\\"}}},\\\"jenkins\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3b6\\\",\\\"label\\\":\\\"Jenkis\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z\\\"}}},\\\"joget\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3b7\\\",\\\"label\\\":\\\"Joget\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M227.5 468.7c-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1M66.1 143.9C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9-55.5-1.4-81.7-20.8-58.5-48.2 23.2-27.4 51.1-40.7 68.9-51.2 17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1m-29.2-18c-71.9 116.6-35.6 269.3 81 341.2 116.6 71.9 269.3 35.6 341.2-80.9 71.9-116.6 35.6-269.4-81-341.2-40.5-25.1-85.5-37-129.9-37C165 8 83.8 49.9 36.9 125.9m244.4 110.4c-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5c10.5-6.4 31.9-14 13.4-24.6-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M227.5 468.7c-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1M66.1 143.9C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9-55.5-1.4-81.7-20.8-58.5-48.2 23.2-27.4 51.1-40.7 68.9-51.2 17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1m-29.2-18c-71.9 116.6-35.6 269.3 81 341.2 116.6 71.9 269.3 35.6 341.2-80.9 71.9-116.6 35.6-269.4-81-341.2-40.5-25.1-85.5-37-129.9-37C165 8 83.8 49.9 36.9 125.9m244.4 110.4c-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5c10.5-6.4 31.9-14 13.4-24.6-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6\\\"}}},\\\"joint\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"blunt\\\",\\\"cannabis\\\",\\\"doobie\\\",\\\"drugs\\\",\\\"marijuana\\\",\\\"roach\\\",\\\"smoke\\\",\\\"smoking\\\",\\\"spliff\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f595\\\",\\\"label\\\":\\\"Joint\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111681,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\\\"}}},\\\"joomla\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1aa\\\",\\\"label\\\":\\\"Joomla Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z\\\"}}},\\\"js\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3b8\\\",\\\"label\\\":\\\"JavaScript (JS)\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\\\"}}},\\\"js-square\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3b9\\\",\\\"label\\\":\\\"JavaScript (JS) Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426581999,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\\\"}}},\\\"jsfiddle\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1cc\\\",\\\"label\\\":\\\"jsFiddle\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z\\\"}}},\\\"kaggle\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5fa\\\",\\\"label\\\":\\\"Kaggle\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1532362831424,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 291.72 512\\\\\\\"><path d=\\\\\\\"M291.72 508.98c-.51 2.01-2.51 3.01-6.01 3.01h-66.92c-4.02 0-7.51-1.75-10.52-5.27L97.74 366.14l-30.82 29.32v109.02c0 5.02-2.51 7.52-7.52 7.52H7.52C2.5 512 0 509.5 0 504.48V7.51C0 2.51 2.5 0 7.52 0H59.4c5.01 0 7.52 2.51 7.52 7.51v306l132.32-133.82c3.51-3.5 7.02-5.26 10.52-5.26h69.18c6.96 0 7.9 7.87 5.26 10.52L144.35 320.26l145.86 181.2\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"291.72\\\",\\\"512\\\"],\\\"width\\\":291,\\\"height\\\":512,\\\"path\\\":\\\"M291.72 508.98c-.51 2.01-2.51 3.01-6.01 3.01h-66.92c-4.02 0-7.51-1.75-10.52-5.27L97.74 366.14l-30.82 29.32v109.02c0 5.02-2.51 7.52-7.52 7.52H7.52C2.5 512 0 509.5 0 504.48V7.51C0 2.51 2.5 0 7.52 0H59.4c5.01 0 7.52 2.51 7.52 7.51v306l132.32-133.82c3.51-3.5 7.02-5.26 10.52-5.26h69.18c6.96 0 7.9 7.87 5.26 10.52L144.35 320.26l145.86 181.2\\\"}}},\\\"key\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"password\\\",\\\"unlock\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f084\\\",\\\"label\\\":\\\"key\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\\\"}}},\\\"keybase\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4f5\\\",\\\"label\\\":\\\"Keybase\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365019,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 412.3 512\\\\\\\"><path d=\\\\\\\"M177.2 430.9c0 9.8-8 17.8-17.8 17.8s-17.8-8-17.8-17.8 8-17.8 17.8-17.8c9.8-.1 17.8 7.9 17.8 17.8zM270 413c-9.8 0-17.8 8-17.8 17.8s8 17.8 17.8 17.8 17.8-8 17.8-17.8-8-17.8-17.8-17.8zm142.3-36c0 38.9-7.6 73.9-22.2 103h-27.3c23.5-38.7 30.5-94.8 22.4-134.3-16.1 29.5-52.1 38.6-85.9 28.8-127.8-37.5-192.5 19.7-234.6 50.3l18.9-59.3-39.9 42.3c4.8 26.7 15.7 51.3 31.2 72.3H46.1c-9.7-15.8-17.2-33-22.2-51.3L.1 454c0-74.9-5.5-147.6 61.5-215.2 20.2-20.4 43.7-36.2 69.1-46.7-6.8-13.5-9.5-29.2-7.8-46l-19.9-1.2c-17.9-1.1-31.6-16.5-30.6-34.4v-.1L74 84.2c1.1-17.1 15.4-30.6 32.5-30.6 1.3 0-.3-.1 28.2 1.7 13.9.8 21.5 9.8 22.8 11.4 7.1-10.4 14.5-20.5 24.6-34.5l20.6 12.1c-13.6 29-9.1 36.2-9 36.3 3.9 0 13.9-.5 32.4 5.7C246 92.9 262 107 271 126c.4.9 15.5 29 1.2 62.6 19 6.1 51.3 19.9 82.4 51.8 36.6 37.6 57.7 87.4 57.7 136.6zM128 122.3c3.2-10 7.7-19.7 13.1-29.4.1-2 2.2-13.1-7.8-13.8-28.5-1.8-26.3-1.6-26.7-1.6-4.6 0-8.3 3.5-8.6 8.1l-1.6 26.2c-.3 4.7 3.4 8.8 8.1 9.1l23.5 1.4zm25.8 61.8c5.6 9.4 14.1 16.1 22.3 20 0-21.2 28.5-41.9 52.8-17.5l8.4 10.3c20.8-18.8 19.4-45.3 12.1-60.9-13.8-29.1-46.9-32-54.3-31.7-10.3.4-19.7-5.4-23.7-15.3-13.7 21.2-37.2 62.5-17.6 95.1zm82.9 68.4L217 268.6c-1.9 1.6-2.2 4.4-.6 6.3l8.9 10.9c1 1.2 3.8 2.7 6.3.6l19.6-16 5.5 6.8c4.9 6 13.8-1.4 9-7.3-63.6-78.3-41.5-51.1-55.3-68.1-4.7-6-13.9 1.4-9 7.3 1.9 2.3 18.4 22.6 19.8 24.3l-9.6 7.9c-4.6 3.8 2.6 13.3 7.4 9.4l9.7-8 8 9.8zm118.4 25.7c-16.9-23.7-42.6-46.7-73.4-60.4-7.9-3.5-15-6.1-22.9-8.6-2 2.2-4.1 4.3-6.4 6.2l31.9 39.2c10.4 12.7 8.5 31.5-4.2 41.9-1.3 1.1-13.1 10.7-29 4.9-2.9 2.3-10.1 9.9-22.2 9.9-8.6 0-16.6-3.8-22.1-10.5l-8.9-10.9c-6.3-7.8-7.9-17.9-5-26.8-8.2-9.9-8.3-21.3-4.6-30-7.2-1.3-26.7-6.2-42.7-21.4-55.8 20.7-88 64.4-101.3 91.2-14.9 30.2-18.8 60.9-19.9 90.2 8.2-8.7-3.9 4.1 114-120.9l-29.9 93.6c57.8-31.1 124-36 197.4-14.4 23.6 6.9 45.1 1.6 56-13.9 11.1-15.6 8.5-37.7-6.8-59.3zM110.6 107.3l15.6 1 1-15.6-15.6-1-1 15.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"412.3\\\",\\\"512\\\"],\\\"width\\\":412,\\\"height\\\":512,\\\"path\\\":\\\"M177.2 430.9c0 9.8-8 17.8-17.8 17.8s-17.8-8-17.8-17.8 8-17.8 17.8-17.8c9.8-.1 17.8 7.9 17.8 17.8zM270 413c-9.8 0-17.8 8-17.8 17.8s8 17.8 17.8 17.8 17.8-8 17.8-17.8-8-17.8-17.8-17.8zm142.3-36c0 38.9-7.6 73.9-22.2 103h-27.3c23.5-38.7 30.5-94.8 22.4-134.3-16.1 29.5-52.1 38.6-85.9 28.8-127.8-37.5-192.5 19.7-234.6 50.3l18.9-59.3-39.9 42.3c4.8 26.7 15.7 51.3 31.2 72.3H46.1c-9.7-15.8-17.2-33-22.2-51.3L.1 454c0-74.9-5.5-147.6 61.5-215.2 20.2-20.4 43.7-36.2 69.1-46.7-6.8-13.5-9.5-29.2-7.8-46l-19.9-1.2c-17.9-1.1-31.6-16.5-30.6-34.4v-.1L74 84.2c1.1-17.1 15.4-30.6 32.5-30.6 1.3 0-.3-.1 28.2 1.7 13.9.8 21.5 9.8 22.8 11.4 7.1-10.4 14.5-20.5 24.6-34.5l20.6 12.1c-13.6 29-9.1 36.2-9 36.3 3.9 0 13.9-.5 32.4 5.7C246 92.9 262 107 271 126c.4.9 15.5 29 1.2 62.6 19 6.1 51.3 19.9 82.4 51.8 36.6 37.6 57.7 87.4 57.7 136.6zM128 122.3c3.2-10 7.7-19.7 13.1-29.4.1-2 2.2-13.1-7.8-13.8-28.5-1.8-26.3-1.6-26.7-1.6-4.6 0-8.3 3.5-8.6 8.1l-1.6 26.2c-.3 4.7 3.4 8.8 8.1 9.1l23.5 1.4zm25.8 61.8c5.6 9.4 14.1 16.1 22.3 20 0-21.2 28.5-41.9 52.8-17.5l8.4 10.3c20.8-18.8 19.4-45.3 12.1-60.9-13.8-29.1-46.9-32-54.3-31.7-10.3.4-19.7-5.4-23.7-15.3-13.7 21.2-37.2 62.5-17.6 95.1zm82.9 68.4L217 268.6c-1.9 1.6-2.2 4.4-.6 6.3l8.9 10.9c1 1.2 3.8 2.7 6.3.6l19.6-16 5.5 6.8c4.9 6 13.8-1.4 9-7.3-63.6-78.3-41.5-51.1-55.3-68.1-4.7-6-13.9 1.4-9 7.3 1.9 2.3 18.4 22.6 19.8 24.3l-9.6 7.9c-4.6 3.8 2.6 13.3 7.4 9.4l9.7-8 8 9.8zm118.4 25.7c-16.9-23.7-42.6-46.7-73.4-60.4-7.9-3.5-15-6.1-22.9-8.6-2 2.2-4.1 4.3-6.4 6.2l31.9 39.2c10.4 12.7 8.5 31.5-4.2 41.9-1.3 1.1-13.1 10.7-29 4.9-2.9 2.3-10.1 9.9-22.2 9.9-8.6 0-16.6-3.8-22.1-10.5l-8.9-10.9c-6.3-7.8-7.9-17.9-5-26.8-8.2-9.9-8.3-21.3-4.6-30-7.2-1.3-26.7-6.2-42.7-21.4-55.8 20.7-88 64.4-101.3 91.2-14.9 30.2-18.8 60.9-19.9 90.2 8.2-8.7-3.9 4.1 114-120.9l-29.9 93.6c57.8-31.1 124-36 197.4-14.4 23.6 6.9 45.1 1.6 56-13.9 11.1-15.6 8.5-37.7-6.8-59.3zM110.6 107.3l15.6 1 1-15.6-15.6-1-1 15.6z\\\"}}},\\\"keyboard\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"input\\\",\\\"type\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f11c\\\",\\\"label\\\":\\\"Keyboard\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zm8 336c0 4.411-3.589 8-8 8H48c-4.411 0-8-3.589-8-8V112c0-4.411 3.589-8 8-8h480c4.411 0 8 3.589 8 8v288zM170 270v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-336 82v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm384 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zM122 188v-28c0-6.627-5.373-12-12-12H82c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm96 0v-28c0-6.627-5.373-12-12-12h-28c-6.627 0-12 5.373-12 12v28c0 6.627 5.373 12 12 12h28c6.627 0 12-5.373 12-12zm-98 158v-16c0-6.627-5.373-12-12-12H180c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h216c6.627 0 12-5.373 12-12z\\\"}}},\\\"keycdn\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3ba\\\",\\\"label\\\":\\\"KeyCDN\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160\\\"}}},\\\"kickstarter\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3bb\\\",\\\"label\\\":\\\"Kickstarter\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z\\\"}}},\\\"kickstarter-k\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3bc\\\",\\\"label\\\":\\\"Kickstarter K\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z\\\"}}},\\\"kiss\\\":{\\\"changes\\\":[\\\"5.1.0\\\",\\\"5.1.1\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"beso\\\",\\\"emoticon\\\",\\\"face\\\",\\\"love\\\",\\\"smooch\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f596\\\",\\\"label\\\":\\\"Kissing Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111683,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1530132076296,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M168 176c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm136 132c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\\\"}}},\\\"kiss-beam\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"beso\\\",\\\"emoticon\\\",\\\"face\\\",\\\"love\\\",\\\"smooch\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f597\\\",\\\"label\\\":\\\"Kissing Face With Smiling Eyes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111681,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111624,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M168 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm56-148c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36C290.6 335.3 304 321 304 308zm24-156c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2 7.2 5.6 8.3 3.5 1 7.5-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 5.9-4.5 5.6-8.3-3.1-42.1-32-71.4-55.8-71.4z\\\"}}},\\\"kiss-wink-heart\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"beso\\\",\\\"emoticon\\\",\\\"face\\\",\\\"love\\\",\\\"smooch\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f598\\\",\\\"label\\\":\\\"Face Blowing a Kiss\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111682,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 504 512\\\\\\\"><path d=\\\\\\\"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"504\\\",\\\"512\\\"],\\\"width\\\":504,\\\"height\\\":512,\\\"path\\\":\\\"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111624,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 504 512\\\\\\\"><path d=\\\\\\\"M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"504\\\",\\\"512\\\"],\\\"width\\\":504,\\\"height\\\":512,\\\"path\\\":\\\"M304 308.5c0-19.2-28.8-41.5-71.5-44-3.8-.4-7.4 2.4-8.2 6.2-.9 3.8 1.1 7.7 4.7 9.2l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-5.7 2.4-6 12.2 0 14.8l16.9 7.2c13 5.5 20.8 13.5 20.8 21.5s-7.8 16-20.7 21.5l-17 7.2c-3.6 1.5-5.6 5.4-4.7 9.2.8 3.6 4.1 6.2 7.8 6.2h.5c42.8-2.5 71.5-24.8 71.5-44 0-13-13.4-27.3-35.2-36 21.7-9.1 35.1-23.4 35.1-36.4zm70.5-83.5l9.5 8.5c3.8 3.3 9.3 4 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 5.8 3.1 11.2.7 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0zM136 208.5c0 17.7 14.3 32 32 32s32-14.3 32-32-14.3-32-32-32-32 14.3-32 32zm365.1 194c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zM334 436.3c-26.1 12.5-55.2 19.7-86 19.7-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200c0 22.1-3.7 43.3-10.4 63.2 9 6.4 17 14.2 22.6 23.9 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-2.5-7.3 4.3 17.2-13.4-46.8z\\\"}}},\\\"kiwi-bird\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f535\\\",\\\"label\\\":\\\"Kiwi Bird\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154570,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\\\"}}},\\\"korvue\\\":{\\\"changes\\\":[\\\"5.0.2\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f42f\\\",\\\"label\\\":\\\"KORVUE\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1513713060431,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 446 512\\\\\\\"><path d=\\\\\\\"M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"446\\\",\\\"512\\\"],\\\"width\\\":446,\\\"height\\\":512,\\\"path\\\":\\\"M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z\\\"}}},\\\"language\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"dialect\\\",\\\"idiom\\\",\\\"localize\\\",\\\"speech\\\",\\\"translate\\\",\\\"vernacular\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1ab\\\",\\\"label\\\":\\\"Language\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M304 416H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h280v320zm-120.676-72.622A12 12 0 0 0 194.839 352h22.863c8.22 0 14.007-8.078 11.362-15.861L171.61 167.085a12 12 0 0 0-11.362-8.139h-32.489a12.001 12.001 0 0 0-11.362 8.139L58.942 336.139C56.297 343.922 62.084 352 70.304 352h22.805a12 12 0 0 0 11.535-8.693l9.118-31.807h60.211l9.351 31.878zm-39.051-140.42s4.32 21.061 7.83 33.21l10.8 37.531h-38.07l11.07-37.531c3.51-12.15 7.83-33.21 7.83-33.21h.54zM616 416H336V96h280c13.255 0 24 10.745 24 24v272c0 13.255-10.745 24-24 24zm-36-228h-64v-16c0-6.627-5.373-12-12-12h-16c-6.627 0-12 5.373-12 12v16h-64c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h114.106c-6.263 14.299-16.518 28.972-30.023 43.206-6.56-6.898-12.397-13.91-17.365-20.933-3.639-5.144-10.585-6.675-15.995-3.446l-7.28 4.346-6.498 3.879c-5.956 3.556-7.693 11.421-3.735 17.117 6.065 8.729 13.098 17.336 20.984 25.726-8.122 6.226-16.841 12.244-26.103 17.964-5.521 3.41-7.381 10.556-4.162 16.19l7.941 13.896c3.362 5.883 10.935 7.826 16.706 4.276 12.732-7.831 24.571-16.175 35.443-24.891 10.917 8.761 22.766 17.102 35.396 24.881 5.774 3.556 13.353 1.618 16.717-4.27l7.944-13.903c3.213-5.623 1.37-12.76-4.135-16.171a312.737 312.737 0 0 1-26.06-18.019c21.024-22.425 35.768-46.289 42.713-69.85H580c6.627 0 12-5.373 12-12v-16c0-6.625-5.373-11.998-12-11.998z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M304 416H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h280v320zm-120.676-72.622A12 12 0 0 0 194.839 352h22.863c8.22 0 14.007-8.078 11.362-15.861L171.61 167.085a12 12 0 0 0-11.362-8.139h-32.489a12.001 12.001 0 0 0-11.362 8.139L58.942 336.139C56.297 343.922 62.084 352 70.304 352h22.805a12 12 0 0 0 11.535-8.693l9.118-31.807h60.211l9.351 31.878zm-39.051-140.42s4.32 21.061 7.83 33.21l10.8 37.531h-38.07l11.07-37.531c3.51-12.15 7.83-33.21 7.83-33.21h.54zM616 416H336V96h280c13.255 0 24 10.745 24 24v272c0 13.255-10.745 24-24 24zm-36-228h-64v-16c0-6.627-5.373-12-12-12h-16c-6.627 0-12 5.373-12 12v16h-64c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h114.106c-6.263 14.299-16.518 28.972-30.023 43.206-6.56-6.898-12.397-13.91-17.365-20.933-3.639-5.144-10.585-6.675-15.995-3.446l-7.28 4.346-6.498 3.879c-5.956 3.556-7.693 11.421-3.735 17.117 6.065 8.729 13.098 17.336 20.984 25.726-8.122 6.226-16.841 12.244-26.103 17.964-5.521 3.41-7.381 10.556-4.162 16.19l7.941 13.896c3.362 5.883 10.935 7.826 16.706 4.276 12.732-7.831 24.571-16.175 35.443-24.891 10.917 8.761 22.766 17.102 35.396 24.881 5.774 3.556 13.353 1.618 16.717-4.27l7.944-13.903c3.213-5.623 1.37-12.76-4.135-16.171a312.737 312.737 0 0 1-26.06-18.019c21.024-22.425 35.768-46.289 42.713-69.85H580c6.627 0 12-5.373 12-12v-16c0-6.625-5.373-11.998-12-11.998z\\\"}}},\\\"laptop\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"computer\\\",\\\"cpu\\\",\\\"dell\\\",\\\"demo\\\",\\\"device\\\",\\\"dude you're getting\\\",\\\"mac\\\",\\\"macbook\\\",\\\"machine\\\",\\\"pc\\\",\\\"pc\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f109\\\",\\\"label\\\":\\\"Laptop\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831530,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\\\"}}},\\\"laptop-code\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5fc\\\",\\\"label\\\":\\\"Laptop Code\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831529,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\\\"}}},\\\"laravel\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3bd\\\",\\\"label\\\":\\\"Laravel\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426581999,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M637.5 241.6c-4.2-4.8-62.8-78.1-73.1-90.5-10.3-12.4-15.4-10.2-21.7-9.3-6.4.9-80.5 13.4-89.1 14.8-8.6 1.5-14 4.9-8.7 12.3 4.7 6.6 53.4 75.7 64.2 90.9l-193.7 46.4L161.2 48.7c-6.1-9.1-7.4-12.3-21.4-11.6-14 .6-120.9 9.5-128.5 10.2-7.6.6-16 4-8.4 22s129 279.6 132.4 287.2c3.4 7.6 12.2 20 32.8 15 21.1-5.1 94.3-24.2 134.3-34.7 21.1 38.3 64.2 115.9 72.2 127 10.6 14.9 18 12.4 34.3 7.4 12.8-3.9 199.6-71.1 208-74.5 8.4-3.5 13.6-5.9 7.9-14.4-4.2-6.2-53.5-72.2-79.3-106.8 17.7-4.7 80.6-21.4 87.3-23.3 7.9-2 9-5.8 4.7-10.6zm-352.2 72c-2.3.5-110.8 26.5-116.6 27.8-5.8 1.3-5.8.7-6.5-1.3-.7-2-129-266.7-130.8-270-1.8-3.3-1.7-5.9 0-5.9s102.5-9 106-9.2c3.6-.2 3.2.6 4.5 2.8 0 0 142.2 245.4 144.6 249.7 2.6 4.3 1.1 5.6-1.2 6.1zm306 57.4c1.7 2.7 3.5 4.5-2 6.4-5.4 2-183.7 62.1-187.1 63.6-3.5 1.5-6.2 2-10.6-4.5s-62.4-106.8-62.4-106.8L518 280.6c4.7-1.5 6.2-2.5 9.2 2.2 2.9 4.8 62.4 85.5 64.1 88.2zm12.1-134.1c-4.2.9-73.6 18.1-73.6 18.1l-56.7-77.8c-1.6-2.3-2.9-4.5 1.1-5s68.4-12.2 71.3-12.8c2.9-.7 5.4-1.5 9 3.4 3.6 4.9 52.6 67 54.5 69.4 1.8 2.3-1.4 3.7-5.6 4.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M637.5 241.6c-4.2-4.8-62.8-78.1-73.1-90.5-10.3-12.4-15.4-10.2-21.7-9.3-6.4.9-80.5 13.4-89.1 14.8-8.6 1.5-14 4.9-8.7 12.3 4.7 6.6 53.4 75.7 64.2 90.9l-193.7 46.4L161.2 48.7c-6.1-9.1-7.4-12.3-21.4-11.6-14 .6-120.9 9.5-128.5 10.2-7.6.6-16 4-8.4 22s129 279.6 132.4 287.2c3.4 7.6 12.2 20 32.8 15 21.1-5.1 94.3-24.2 134.3-34.7 21.1 38.3 64.2 115.9 72.2 127 10.6 14.9 18 12.4 34.3 7.4 12.8-3.9 199.6-71.1 208-74.5 8.4-3.5 13.6-5.9 7.9-14.4-4.2-6.2-53.5-72.2-79.3-106.8 17.7-4.7 80.6-21.4 87.3-23.3 7.9-2 9-5.8 4.7-10.6zm-352.2 72c-2.3.5-110.8 26.5-116.6 27.8-5.8 1.3-5.8.7-6.5-1.3-.7-2-129-266.7-130.8-270-1.8-3.3-1.7-5.9 0-5.9s102.5-9 106-9.2c3.6-.2 3.2.6 4.5 2.8 0 0 142.2 245.4 144.6 249.7 2.6 4.3 1.1 5.6-1.2 6.1zm306 57.4c1.7 2.7 3.5 4.5-2 6.4-5.4 2-183.7 62.1-187.1 63.6-3.5 1.5-6.2 2-10.6-4.5s-62.4-106.8-62.4-106.8L518 280.6c4.7-1.5 6.2-2.5 9.2 2.2 2.9 4.8 62.4 85.5 64.1 88.2zm12.1-134.1c-4.2.9-73.6 18.1-73.6 18.1l-56.7-77.8c-1.6-2.3-2.9-4.5 1.1-5s68.4-12.2 71.3-12.8c2.9-.7 5.4-1.5 9 3.4 3.6 4.9 52.6 67 54.5 69.4 1.8 2.3-1.4 3.7-5.6 4.7z\\\"}}},\\\"lastfm\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f202\\\",\\\"label\\\":\\\"last.fm\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z\\\"}}},\\\"lastfm-square\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f203\\\",\\\"label\\\":\\\"last.fm Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365020,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z\\\"}}},\\\"laugh\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"LOL\\\",\\\"emoticon\\\",\\\"face\\\",\\\"laugh\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f599\\\",\\\"label\\\":\\\"Grinning Face With Big Eyes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111684,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111625,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 224c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\\\"}}},\\\"laugh-beam\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"LOL\\\",\\\"emoticon\\\",\\\"face\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f59a\\\",\\\"label\\\":\\\"Laugh Face with Beaming Eyes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111683,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111625,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM328 152c-23.8 0-52.7 29.3-56 71.4-.7 8.6 10.8 11.9 14.9 4.5l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.1-42.1-32-71.4-55.8-71.4zm-201 75.9l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c4.1 7.4 15.6 4 14.9-4.5-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.6 8.5 10.9 11.9 15.1 4.5zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\\\"}}},\\\"laugh-squint\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"LOL\\\",\\\"emoticon\\\",\\\"face\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f59b\\\",\\\"label\\\":\\\"Laughing Squinting Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111683,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111625,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6S48 309.4 48 256s20.8-103.6 58.6-141.4S194.6 56 248 56s103.6 20.8 141.4 58.6S448 202.6 448 256s-20.8 103.6-58.6 141.4zM343.6 196l33.6-40.3c8.6-10.3-3.8-24.8-15.4-18l-80 48c-7.8 4.7-7.8 15.9 0 20.6l80 48c11.5 6.8 24-7.6 15.4-18L343.6 196zm-209.4 58.3l80-48c7.8-4.7 7.8-15.9 0-20.6l-80-48c-11.6-6.9-24 7.7-15.4 18l33.6 40.3-33.6 40.3c-8.7 10.4 3.8 24.8 15.4 18zM362.4 288H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\\\"}}},\\\"laugh-wink\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"LOL\\\",\\\"emoticon\\\",\\\"face\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f59c\\\",\\\"label\\\":\\\"Laughing Winking Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111684,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111625,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm141.4 389.4c-37.8 37.8-88 58.6-141.4 58.6s-103.6-20.8-141.4-58.6C68.8 359.6 48 309.4 48 256s20.8-103.6 58.6-141.4C144.4 76.8 194.6 56 248 56s103.6 20.8 141.4 58.6c37.8 37.8 58.6 88 58.6 141.4s-20.8 103.6-58.6 141.4zM328 164c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1zm-160 60c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm194.4 64H133.6c-8.2 0-14.5 7-13.5 15 7.5 59.2 58.9 105 121.1 105h13.6c62.2 0 113.6-45.8 121.1-105 1-8-5.3-15-13.5-15z\\\"}}},\\\"layer-group\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"layers\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5fd\\\",\\\"label\\\":\\\"Layer Group\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831530,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\\\"}}},\\\"leaf\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"eco\\\",\\\"nature\\\",\\\"plant\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f06c\\\",\\\"label\\\":\\\"leaf\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406023,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\\\"}}},\\\"leanpub\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f212\\\",\\\"label\\\":\\\"Leanpub\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z\\\"}}},\\\"lemon\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"food\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f094\\\",\\\"label\\\":\\\"Lemon\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M484.112 27.889C455.989-.233 416.108-8.057 387.059 8.865 347.604 31.848 223.504-41.111 91.196 91.197-41.277 223.672 31.923 347.472 8.866 387.058c-16.922 29.051-9.1 68.932 19.022 97.054 28.135 28.135 68.011 35.938 97.057 19.021 39.423-22.97 163.557 49.969 295.858-82.329 132.474-132.477 59.273-256.277 82.331-295.861 16.922-29.05 9.1-68.931-19.022-97.054zm-22.405 72.894c-38.8 66.609 45.6 165.635-74.845 286.08-120.44 120.443-219.475 36.048-286.076 74.843-22.679 13.207-64.035-27.241-50.493-50.488 38.8-66.609-45.6-165.635 74.845-286.08C245.573 4.702 344.616 89.086 411.219 50.292c22.73-13.24 64.005 27.288 50.488 50.491zm-169.861 8.736c1.37 10.96-6.404 20.957-17.365 22.327-54.846 6.855-135.779 87.787-142.635 142.635-1.373 10.989-11.399 18.734-22.326 17.365-10.961-1.37-18.735-11.366-17.365-22.326 9.162-73.286 104.167-168.215 177.365-177.365 10.953-1.368 20.956 6.403 22.326 17.364z\\\"}}},\\\"less\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f41d\\\",\\\"label\\\":\\\"Less\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1508787003039,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z\\\"}}},\\\"less-than\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f536\\\",\\\"label\\\":\\\"Less Than\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154570,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\\\"}}},\\\"less-than-equal\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f537\\\",\\\"label\\\":\\\"Less Than Equal To\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154570,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\\\"}}},\\\"level-down-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"level-down\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3be\\\",\\\"label\\\":\\\"Alternate Level Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\\\"}}},\\\"level-up-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"level-up\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3bf\\\",\\\"label\\\":\\\"Alternate Level Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\\\"}}},\\\"life-ring\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"support\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1cd\\\",\\\"label\\\":\\\"Life Ring\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 504c136.967 0 248-111.033 248-248S392.967 8 256 8 8 119.033 8 256s111.033 248 248 248zm-103.398-76.72l53.411-53.411c31.806 13.506 68.128 13.522 99.974 0l53.411 53.411c-63.217 38.319-143.579 38.319-206.796 0zM336 256c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm91.28 103.398l-53.411-53.411c13.505-31.806 13.522-68.128 0-99.974l53.411-53.411c38.319 63.217 38.319 143.579 0 206.796zM359.397 84.72l-53.411 53.411c-31.806-13.505-68.128-13.522-99.973 0L152.602 84.72c63.217-38.319 143.579-38.319 206.795 0zM84.72 152.602l53.411 53.411c-13.506 31.806-13.522 68.128 0 99.974L84.72 359.398c-38.319-63.217-38.319-143.579 0-206.796z\\\"}}},\\\"lightbulb\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"idea\\\",\\\"inspiration\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0eb\\\",\\\"label\\\":\\\"Lightbulb\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M272 428v28c0 10.449-6.68 19.334-16 22.629V488c0 13.255-10.745 24-24 24h-80c-13.255 0-24-10.745-24-24v-9.371c-9.32-3.295-16-12.18-16-22.629v-28c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12zm-143.107-44c-9.907 0-18.826-6.078-22.376-15.327C67.697 267.541 16 277.731 16 176 16 78.803 94.805 0 192 0s176 78.803 176 176c0 101.731-51.697 91.541-90.516 192.673-3.55 9.249-12.47 15.327-22.376 15.327H128.893zM112 176c0-44.112 35.888-80 80-80 8.837 0 16-7.164 16-16s-7.163-16-16-16c-61.757 0-112 50.243-112 112 0 8.836 7.164 16 16 16s16-7.164 16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M272 428v28c0 10.449-6.68 19.334-16 22.629V488c0 13.255-10.745 24-24 24h-80c-13.255 0-24-10.745-24-24v-9.371c-9.32-3.295-16-12.18-16-22.629v-28c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12zm-143.107-44c-9.907 0-18.826-6.078-22.376-15.327C67.697 267.541 16 277.731 16 176 16 78.803 94.805 0 192 0s176 78.803 176 176c0 101.731-51.697 91.541-90.516 192.673-3.55 9.249-12.47 15.327-22.376 15.327H128.893zM112 176c0-44.112 35.888-80 80-80 8.837 0 16-7.164 16-16s-7.163-16-16-16c-61.757 0-112 50.243-112 112 0 8.836 7.164 16 16 16s16-7.164 16-16z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M272 428v28c0 10.449-6.68 19.334-16 22.629V488c0 13.255-10.745 24-24 24h-80c-13.255 0-24-10.745-24-24v-9.371c-9.32-3.295-16-12.18-16-22.629v-28c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12zM128 176c0-35.29 28.71-64 64-64 8.837 0 16-7.164 16-16s-7.163-16-16-16c-52.935 0-96 43.065-96 96 0 8.836 7.164 16 16 16s16-7.164 16-16zm64-128c70.734 0 128 57.254 128 128 0 77.602-37.383 60.477-80.98 160h-94.04C101.318 236.33 64 253.869 64 176c0-70.735 57.254-128 128-128m0-48C94.805 0 16 78.803 16 176c0 101.731 51.697 91.541 90.516 192.674 3.55 9.249 12.47 15.326 22.376 15.326h126.215c9.906 0 18.826-6.078 22.376-15.326C316.303 267.541 368 277.731 368 176 368 78.803 289.195 0 192 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M272 428v28c0 10.449-6.68 19.334-16 22.629V488c0 13.255-10.745 24-24 24h-80c-13.255 0-24-10.745-24-24v-9.371c-9.32-3.295-16-12.18-16-22.629v-28c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12zM128 176c0-35.29 28.71-64 64-64 8.837 0 16-7.164 16-16s-7.163-16-16-16c-52.935 0-96 43.065-96 96 0 8.836 7.164 16 16 16s16-7.164 16-16zm64-128c70.734 0 128 57.254 128 128 0 77.602-37.383 60.477-80.98 160h-94.04C101.318 236.33 64 253.869 64 176c0-70.735 57.254-128 128-128m0-48C94.805 0 16 78.803 16 176c0 101.731 51.697 91.541 90.516 192.674 3.55 9.249 12.47 15.326 22.376 15.326h126.215c9.906 0 18.826-6.078 22.376-15.326C316.303 267.541 368 277.731 368 176 368 78.803 289.195 0 192 0z\\\"}}},\\\"line\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3c0\\\",\\\"label\\\":\\\"Line\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z\\\"}}},\\\"link\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"chain\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0c1\\\",\\\"label\\\":\\\"Link\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\\\"}}},\\\"linkedin\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"linkedin-square\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f08c\\\",\\\"label\\\":\\\"LinkedIn\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\\\"}}},\\\"linkedin-in\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"linkedin\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f0e1\\\",\\\"label\\\":\\\"LinkedIn In\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M100.3 480H7.4V180.9h92.9V480zM53.8 140.1C24.1 140.1 0 115.5 0 85.8 0 56.1 24.1 32 53.8 32c29.7 0 53.8 24.1 53.8 53.8 0 29.7-24.1 54.3-53.8 54.3zM448 480h-92.7V334.4c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7V480h-92.8V180.9h89.1v40.8h1.3c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3V480z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M100.3 480H7.4V180.9h92.9V480zM53.8 140.1C24.1 140.1 0 115.5 0 85.8 0 56.1 24.1 32 53.8 32c29.7 0 53.8 24.1 53.8 53.8 0 29.7-24.1 54.3-53.8 54.3zM448 480h-92.7V334.4c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7V480h-92.8V180.9h89.1v40.8h1.3c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3V480z\\\"}}},\\\"linode\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2b8\\\",\\\"label\\\":\\\"Linode\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z\\\"}}},\\\"linux\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"tux\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f17c\\\",\\\"label\\\":\\\"Linux\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821386,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M196.1 123.6c-.2-1.4 1.9-2.3 3.2-2.9 1.7-.7 3.9-1 5.5-.1.4.2.8.7.6 1.1-.4 1.2-2.4 1-3.5 1.6-1 .5-1.8 1.7-3 1.7-1 .1-2.7-.4-2.8-1.4zm24.7-.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm214.7 310.2c-.5 8.2-6.5 13.8-13.9 18.3-14.9 9-37.3 15.8-50.9 32.2l-2.6-2.2 2.6 2.2c-14.2 16.9-31.7 26.6-48.3 27.9-16.5 1.3-32-6.3-40.3-23v-.1c-1.1-2.1-1.9-4.4-2.5-6.7-21.5 1.2-40.2-5.3-55.1-4.1-22 1.2-35.8 6.5-48.3 6.6-4.8 10.6-14.3 17.6-25.9 20.2-16 3.7-36.1 0-55.9-10.4l1.6-3-1.6 3c-18.5-9.8-42-8.9-59.3-12.5-8.7-1.8-16.3-5-20.1-12.3-3.7-7.3-3-17.3 2.2-31.7 1.7-5.1.4-12.7-.8-20.8-.6-3.9-1.2-7.9-1.2-11.8 0-4.3.7-8.5 2.8-12.4 4.5-8.5 11.8-12.1 18.5-14.5 6.7-2.4 12.8-4 17-8.3 5.2-5.5 10.1-14.4 16.6-20.2-2.6-17.2.2-35.4 6.2-53.3 12.6-37.9 39.2-74.2 58.1-96.7 16.1-22.9 20.8-41.3 22.5-64.7C158 103.4 132.4-.2 234.8 0c80.9.1 76.3 85.4 75.8 131.3-.3 30.1 16.3 50.5 33.4 72 15.2 18 35.1 44.3 46.5 74.4 9.3 24.6 12.9 51.8 3.7 79.1 1.4.5 2.8 1.2 4.1 2 1.4.8 2.7 1.8 4 2.9 6.6 5.6 8.7 14.3 10.5 22.4 1.9 8.1 3.6 15.7 7.2 19.7 11.1 12.4 15.9 21.5 15.5 29.7zM220.8 109.1c3.6.9 8.9 2.4 13 4.4-2.1-12.2 4.5-23.5 11.8-23 8.9.3 13.9 15.5 9.1 27.3-.8 1.9-2.8 3.4-3.9 4.6 6.7 2.3 11 4.1 12.6 4.9 7.9-9.5 10.8-26.2 4.3-40.4-9.8-21.4-34.2-21.8-44 .4-3.2 7.2-3.9 14.9-2.9 21.8zm-46.2 18.8c7.8-5.7 6.9-4.7 5.9-5.5-8-6.9-6.6-27.4 1.8-28.1 6.3-.5 10.8 10.7 9.6 19.6 3.1-2.1 6.7-3.6 10.2-4.6 1.7-19.3-9-33.5-19.1-33.5-18.9 0-24 37.5-8.4 52.1zm-9.4 20.9c1.5 4.9 6.1 10.5 14.7 15.3 7.8 4.6 12 11.5 20 15 2.6 1.1 5.7 1.9 9.6 2.1 18.4 1.1 27.1-11.3 38.2-14.9 11.7-3.7 20.1-11 22.7-18.1 3.2-8.5-2.1-14.7-10.5-18.2-11.3-4.9-16.3-5.2-22.6-9.3-10.3-6.6-18.8-8.9-25.9-8.9-14.4 0-23.2 9.8-27.9 14.2-.5.5-7.9 5.9-14.1 10.5-4.2 3.3-5.6 7.4-4.2 12.3zm-33.5 252.8L112.1 366c-6.8-9.2-13.8-14.8-21.9-16-7.7-1.2-12.6 1.4-17.7 6.9-4.8 5.1-8.8 12.3-14.3 18-7.8 6.5-9.3 6.2-19.6 9.9-6.3 2.2-11.3 4.6-14.8 11.3-2.7 5-2.1 12.2-.9 20 1.2 7.9 3 16.3.6 23.9v.2c-5 13.7-5 21.7-2.6 26.4 7.9 15.4 46.6 6.1 76.5 21.9 31.4 16.4 72.6 17.1 75.3-18 2.1-20.5-31.5-49-41-68.9zm153.9 35.8c3.2-11 6.3-21.3 6.8-29 .8-15.2 1.6-28.7 4.4-39.9 3.1-12.6 9.3-23.1 21.4-27.3 2.3-21.1 18.7-21.1 38.3-12.5 18.9 8.5 26 16 22.8 26.1 1 0 2-.1 4.2 0 5.2-16.9-14.3-28-30.7-34.8 2.9-12 2.4-24.1-.4-35.7-6-25.3-22.6-47.8-35.2-59-2.3-.1-2.1 1.9 2.6 6.5 11.6 10.7 37.1 49.2 23.3 84.9-3.9-1-7.6-1.5-10.9-1.4-5.3-29.1-17.5-53.2-23.6-64.6-11.5-21.4-29.5-65.3-37.2-95.7-4.5 6.4-12.4 11.9-22.3 15-4.7 1.5-9.7 5.5-15.9 9-13.9 8-30 8.8-42.4-1.2-4.5-3.6-8-7.6-12.6-10.3-1.6-.9-5.1-3.3-6.2-4.1-2 37.8-27.3 85.3-39.3 112.7-8.3 19.7-13.2 40.8-13.8 61.5-21.8-29.1-5.9-66.3 2.6-82.4 9.5-17.6 11-22.5 8.7-20.8-8.6 14-22 36.3-27.2 59.2-2.7 11.9-3.2 24 .3 35.2 3.5 11.2 11.1 21.5 24.6 29.9 0 0 24.8 14.3 38.3 32.5 7.4 10 9.7 18.7 7.4 24.9-2.5 6.7-9.6 8.9-16.7 8.9 4.8 6 10.3 13 14.4 19.6 37.6 25.7 82.2 15.7 114.3-7.2zM415 408.5c-10-11.3-7.2-33.1-17.1-41.6-6.9-6-13.6-5.4-22.6-5.1-7.7 8.8-25.8 19.6-38.4 16.3-11.5-2.9-18-16.3-18.8-29.5-.3.2-.7.3-1 .5-7.1 3.9-11.1 10.8-13.7 21.1-2.5 10.2-3.4 23.5-4.2 38.7-.7 11.8-6.2 26.4-9.9 40.6-3.5 13.2-5.8 25.2-1.1 36.3 7.2 14.5 19.5 20.4 33.7 19.3 14.2-1.1 30.4-9.8 43.6-25.5 22-26.6 62.3-29.7 63.2-46.5.3-5.1-3.1-13-13.7-24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4 3.9-3.4 5.9-6.3 3.1-6.6-2.8-.3-2.6 2.6-6 5.1-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2-10.4 0-18.7-4.8-24.9-9.7-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M196.1 123.6c-.2-1.4 1.9-2.3 3.2-2.9 1.7-.7 3.9-1 5.5-.1.4.2.8.7.6 1.1-.4 1.2-2.4 1-3.5 1.6-1 .5-1.8 1.7-3 1.7-1 .1-2.7-.4-2.8-1.4zm24.7-.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm214.7 310.2c-.5 8.2-6.5 13.8-13.9 18.3-14.9 9-37.3 15.8-50.9 32.2l-2.6-2.2 2.6 2.2c-14.2 16.9-31.7 26.6-48.3 27.9-16.5 1.3-32-6.3-40.3-23v-.1c-1.1-2.1-1.9-4.4-2.5-6.7-21.5 1.2-40.2-5.3-55.1-4.1-22 1.2-35.8 6.5-48.3 6.6-4.8 10.6-14.3 17.6-25.9 20.2-16 3.7-36.1 0-55.9-10.4l1.6-3-1.6 3c-18.5-9.8-42-8.9-59.3-12.5-8.7-1.8-16.3-5-20.1-12.3-3.7-7.3-3-17.3 2.2-31.7 1.7-5.1.4-12.7-.8-20.8-.6-3.9-1.2-7.9-1.2-11.8 0-4.3.7-8.5 2.8-12.4 4.5-8.5 11.8-12.1 18.5-14.5 6.7-2.4 12.8-4 17-8.3 5.2-5.5 10.1-14.4 16.6-20.2-2.6-17.2.2-35.4 6.2-53.3 12.6-37.9 39.2-74.2 58.1-96.7 16.1-22.9 20.8-41.3 22.5-64.7C158 103.4 132.4-.2 234.8 0c80.9.1 76.3 85.4 75.8 131.3-.3 30.1 16.3 50.5 33.4 72 15.2 18 35.1 44.3 46.5 74.4 9.3 24.6 12.9 51.8 3.7 79.1 1.4.5 2.8 1.2 4.1 2 1.4.8 2.7 1.8 4 2.9 6.6 5.6 8.7 14.3 10.5 22.4 1.9 8.1 3.6 15.7 7.2 19.7 11.1 12.4 15.9 21.5 15.5 29.7zM220.8 109.1c3.6.9 8.9 2.4 13 4.4-2.1-12.2 4.5-23.5 11.8-23 8.9.3 13.9 15.5 9.1 27.3-.8 1.9-2.8 3.4-3.9 4.6 6.7 2.3 11 4.1 12.6 4.9 7.9-9.5 10.8-26.2 4.3-40.4-9.8-21.4-34.2-21.8-44 .4-3.2 7.2-3.9 14.9-2.9 21.8zm-46.2 18.8c7.8-5.7 6.9-4.7 5.9-5.5-8-6.9-6.6-27.4 1.8-28.1 6.3-.5 10.8 10.7 9.6 19.6 3.1-2.1 6.7-3.6 10.2-4.6 1.7-19.3-9-33.5-19.1-33.5-18.9 0-24 37.5-8.4 52.1zm-9.4 20.9c1.5 4.9 6.1 10.5 14.7 15.3 7.8 4.6 12 11.5 20 15 2.6 1.1 5.7 1.9 9.6 2.1 18.4 1.1 27.1-11.3 38.2-14.9 11.7-3.7 20.1-11 22.7-18.1 3.2-8.5-2.1-14.7-10.5-18.2-11.3-4.9-16.3-5.2-22.6-9.3-10.3-6.6-18.8-8.9-25.9-8.9-14.4 0-23.2 9.8-27.9 14.2-.5.5-7.9 5.9-14.1 10.5-4.2 3.3-5.6 7.4-4.2 12.3zm-33.5 252.8L112.1 366c-6.8-9.2-13.8-14.8-21.9-16-7.7-1.2-12.6 1.4-17.7 6.9-4.8 5.1-8.8 12.3-14.3 18-7.8 6.5-9.3 6.2-19.6 9.9-6.3 2.2-11.3 4.6-14.8 11.3-2.7 5-2.1 12.2-.9 20 1.2 7.9 3 16.3.6 23.9v.2c-5 13.7-5 21.7-2.6 26.4 7.9 15.4 46.6 6.1 76.5 21.9 31.4 16.4 72.6 17.1 75.3-18 2.1-20.5-31.5-49-41-68.9zm153.9 35.8c3.2-11 6.3-21.3 6.8-29 .8-15.2 1.6-28.7 4.4-39.9 3.1-12.6 9.3-23.1 21.4-27.3 2.3-21.1 18.7-21.1 38.3-12.5 18.9 8.5 26 16 22.8 26.1 1 0 2-.1 4.2 0 5.2-16.9-14.3-28-30.7-34.8 2.9-12 2.4-24.1-.4-35.7-6-25.3-22.6-47.8-35.2-59-2.3-.1-2.1 1.9 2.6 6.5 11.6 10.7 37.1 49.2 23.3 84.9-3.9-1-7.6-1.5-10.9-1.4-5.3-29.1-17.5-53.2-23.6-64.6-11.5-21.4-29.5-65.3-37.2-95.7-4.5 6.4-12.4 11.9-22.3 15-4.7 1.5-9.7 5.5-15.9 9-13.9 8-30 8.8-42.4-1.2-4.5-3.6-8-7.6-12.6-10.3-1.6-.9-5.1-3.3-6.2-4.1-2 37.8-27.3 85.3-39.3 112.7-8.3 19.7-13.2 40.8-13.8 61.5-21.8-29.1-5.9-66.3 2.6-82.4 9.5-17.6 11-22.5 8.7-20.8-8.6 14-22 36.3-27.2 59.2-2.7 11.9-3.2 24 .3 35.2 3.5 11.2 11.1 21.5 24.6 29.9 0 0 24.8 14.3 38.3 32.5 7.4 10 9.7 18.7 7.4 24.9-2.5 6.7-9.6 8.9-16.7 8.9 4.8 6 10.3 13 14.4 19.6 37.6 25.7 82.2 15.7 114.3-7.2zM415 408.5c-10-11.3-7.2-33.1-17.1-41.6-6.9-6-13.6-5.4-22.6-5.1-7.7 8.8-25.8 19.6-38.4 16.3-11.5-2.9-18-16.3-18.8-29.5-.3.2-.7.3-1 .5-7.1 3.9-11.1 10.8-13.7 21.1-2.5 10.2-3.4 23.5-4.2 38.7-.7 11.8-6.2 26.4-9.9 40.6-3.5 13.2-5.8 25.2-1.1 36.3 7.2 14.5 19.5 20.4 33.7 19.3 14.2-1.1 30.4-9.8 43.6-25.5 22-26.6 62.3-29.7 63.2-46.5.3-5.1-3.1-13-13.7-24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4 3.9-3.4 5.9-6.3 3.1-6.6-2.8-.3-2.6 2.6-6 5.1-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2-10.4 0-18.7-4.8-24.9-9.7-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z\\\"}}},\\\"lira-sign\\\":{\\\"changes\\\":[\\\"4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"try\\\",\\\"try\\\",\\\"turkish\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f195\\\",\\\"label\\\":\\\"Turkish Lira Sign\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\\\"}}},\\\"list\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"checklist\\\",\\\"completed\\\",\\\"done\\\",\\\"finished\\\",\\\"ol\\\",\\\"todo\\\",\\\"ul\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f03a\\\",\\\"label\\\":\\\"List\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M128 116V76c0-8.837 7.163-16 16-16h352c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H144c-8.837 0-16-7.163-16-16zm16 176h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zM16 144h64c8.837 0 16-7.163 16-16V64c0-8.837-7.163-16-16-16H16C7.163 48 0 55.163 0 64v64c0 8.837 7.163 16 16 16zm0 160h64c8.837 0 16-7.163 16-16v-64c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v64c0 8.837 7.163 16 16 16zm0 160h64c8.837 0 16-7.163 16-16v-64c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v64c0 8.837 7.163 16 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M128 116V76c0-8.837 7.163-16 16-16h352c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H144c-8.837 0-16-7.163-16-16zm16 176h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zM16 144h64c8.837 0 16-7.163 16-16V64c0-8.837-7.163-16-16-16H16C7.163 48 0 55.163 0 64v64c0 8.837 7.163 16 16 16zm0 160h64c8.837 0 16-7.163 16-16v-64c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v64c0 8.837 7.163 16 16 16zm0 160h64c8.837 0 16-7.163 16-16v-64c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v64c0 8.837 7.163 16 16 16z\\\"}}},\\\"list-alt\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"checklist\\\",\\\"completed\\\",\\\"done\\\",\\\"finished\\\",\\\"ol\\\",\\\"todo\\\",\\\"ul\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f022\\\",\\\"label\\\":\\\"Alternate List\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z\\\"}}},\\\"list-ol\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"checklist\\\",\\\"list\\\",\\\"list\\\",\\\"numbers\\\",\\\"ol\\\",\\\"todo\\\",\\\"ul\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0cb\\\",\\\"label\\\":\\\"list-ol\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M3.263 139.527c0-7.477 3.917-11.572 11.573-11.572h15.131V88.078c0-5.163.534-10.503.534-10.503h-.356s-1.779 2.67-2.848 3.738c-4.451 4.273-10.504 4.451-15.666-1.068l-5.518-6.231c-5.342-5.341-4.984-11.216.534-16.379l21.72-19.938C32.815 33.602 36.732 32 42.785 32H54.89c7.656 0 11.749 3.916 11.749 11.572v84.384h15.488c7.655 0 11.572 4.094 11.572 11.572v8.901c0 7.477-3.917 11.572-11.572 11.572H14.836c-7.656 0-11.573-4.095-11.573-11.572v-8.902zM2.211 304.591c0-47.278 50.955-56.383 50.955-69.165 0-7.18-5.954-8.755-9.28-8.755-3.153 0-6.479 1.051-9.455 3.852-5.079 4.903-10.507 7.004-16.111 2.451l-8.579-6.829c-5.779-4.553-7.18-9.805-2.803-15.409C13.592 201.981 26.025 192 47.387 192c19.437 0 44.476 10.506 44.476 39.573 0 38.347-46.753 46.402-48.679 56.909h39.049c7.529 0 11.557 4.027 11.557 11.382v8.755c0 7.354-4.028 11.382-11.557 11.382h-67.94c-7.005 0-12.083-4.028-12.083-11.382v-4.028zM5.654 454.61l5.603-9.28c3.853-6.654 9.105-7.004 15.584-3.152 4.903 2.101 9.63 3.152 14.359 3.152 10.155 0 14.358-3.502 14.358-8.23 0-6.654-5.604-9.106-15.934-9.106h-4.728c-5.954 0-9.28-2.101-12.258-7.88l-1.05-1.926c-2.451-4.728-1.226-9.806 2.801-14.884l5.604-7.004c6.829-8.405 12.257-13.483 12.257-13.483v-.35s-4.203 1.051-12.608 1.051H16.685c-7.53 0-11.383-4.028-11.383-11.382v-8.755c0-7.53 3.853-11.382 11.383-11.382h58.484c7.529 0 11.382 4.027 11.382 11.382v3.327c0 5.778-1.401 9.806-5.079 14.183l-17.509 20.137c19.611 5.078 28.716 20.487 28.716 34.845 0 21.363-14.358 44.126-48.503 44.126-16.636 0-28.192-4.728-35.896-9.455-5.779-4.202-6.304-9.805-2.626-15.934zM144 132h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M3.263 139.527c0-7.477 3.917-11.572 11.573-11.572h15.131V88.078c0-5.163.534-10.503.534-10.503h-.356s-1.779 2.67-2.848 3.738c-4.451 4.273-10.504 4.451-15.666-1.068l-5.518-6.231c-5.342-5.341-4.984-11.216.534-16.379l21.72-19.938C32.815 33.602 36.732 32 42.785 32H54.89c7.656 0 11.749 3.916 11.749 11.572v84.384h15.488c7.655 0 11.572 4.094 11.572 11.572v8.901c0 7.477-3.917 11.572-11.572 11.572H14.836c-7.656 0-11.573-4.095-11.573-11.572v-8.902zM2.211 304.591c0-47.278 50.955-56.383 50.955-69.165 0-7.18-5.954-8.755-9.28-8.755-3.153 0-6.479 1.051-9.455 3.852-5.079 4.903-10.507 7.004-16.111 2.451l-8.579-6.829c-5.779-4.553-7.18-9.805-2.803-15.409C13.592 201.981 26.025 192 47.387 192c19.437 0 44.476 10.506 44.476 39.573 0 38.347-46.753 46.402-48.679 56.909h39.049c7.529 0 11.557 4.027 11.557 11.382v8.755c0 7.354-4.028 11.382-11.557 11.382h-67.94c-7.005 0-12.083-4.028-12.083-11.382v-4.028zM5.654 454.61l5.603-9.28c3.853-6.654 9.105-7.004 15.584-3.152 4.903 2.101 9.63 3.152 14.359 3.152 10.155 0 14.358-3.502 14.358-8.23 0-6.654-5.604-9.106-15.934-9.106h-4.728c-5.954 0-9.28-2.101-12.258-7.88l-1.05-1.926c-2.451-4.728-1.226-9.806 2.801-14.884l5.604-7.004c6.829-8.405 12.257-13.483 12.257-13.483v-.35s-4.203 1.051-12.608 1.051H16.685c-7.53 0-11.383-4.028-11.383-11.382v-8.755c0-7.53 3.853-11.382 11.383-11.382h58.484c7.529 0 11.382 4.027 11.382 11.382v3.327c0 5.778-1.401 9.806-5.079 14.183l-17.509 20.137c19.611 5.078 28.716 20.487 28.716 34.845 0 21.363-14.358 44.126-48.503 44.126-16.636 0-28.192-4.728-35.896-9.455-5.779-4.202-6.304-9.805-2.626-15.934zM144 132h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\\\"}}},\\\"list-ul\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"checklist\\\",\\\"list\\\",\\\"ol\\\",\\\"todo\\\",\\\"ul\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0ca\\\",\\\"label\\\":\\\"list-ul\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M96 96c0 26.51-21.49 48-48 48S0 122.51 0 96s21.49-48 48-48 48 21.49 48 48zM48 208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm0 160c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm96-236h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M96 96c0 26.51-21.49 48-48 48S0 122.51 0 96s21.49-48 48-48 48 21.49 48 48zM48 208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm0 160c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm96-236h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\\\"}}},\\\"location-arrow\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"address\\\",\\\"coordinates\\\",\\\"gps\\\",\\\"location\\\",\\\"map\\\",\\\"place\\\",\\\"where\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f124\\\",\\\"label\\\":\\\"location-arrow\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831532,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\\\"}}},\\\"lock\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"admin\\\",\\\"protect\\\",\\\"security\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f023\\\",\\\"label\\\":\\\"lock\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\\\"}}},\\\"lock-open\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\",\\\"5.0.1\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"admin\\\",\\\"lock\\\",\\\"open\\\",\\\"password\\\",\\\"protect\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3c1\\\",\\\"label\\\":\\\"Lock Open\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\\\"}}},\\\"long-arrow-alt-down\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"long-arrow-down\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f309\\\",\\\"label\\\":\\\"Alternate Long Arrow Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\\\"}}},\\\"long-arrow-alt-left\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"back\\\",\\\"long-arrow-left\\\",\\\"previous\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f30a\\\",\\\"label\\\":\\\"Alternate Long Arrow Left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\\\"}}},\\\"long-arrow-alt-right\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"long-arrow-right\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f30b\\\",\\\"label\\\":\\\"Alternate Long Arrow Right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\\\"}}},\\\"long-arrow-alt-up\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"long-arrow-up\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f30c\\\",\\\"label\\\":\\\"Alternate Long Arrow Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\\\"}}},\\\"low-vision\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2a8\\\",\\\"label\\\":\\\"Low Vision\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\\\"}}},\\\"luggage-cart\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f59d\\\",\\\"label\\\":\\\"Luggage Cart\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111685,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\\\"}}},\\\"lyft\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3c3\\\",\\\"label\\\":\\\"lyft\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z\\\"}}},\\\"magento\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3c4\\\",\\\"label\\\":\\\"Magento\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z\\\"}}},\\\"magic\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"autocomplete\\\",\\\"automatic\\\",\\\"wizard\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0d0\\\",\\\"label\\\":\\\"magic\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111685,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\\\"}}},\\\"magnet\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f076\\\",\\\"label\\\":\\\"magnet\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512.1 512\\\\\\\"><path d=\\\\\\\"M164.1 160H12c-6.6 0-12-5.4-12-12V68c0-19.9 16.1-36 36-36h104c19.9 0 36 16.1 36 36v80c.1 6.6-5.3 12-11.9 12zm348-12V67.9c0-19.9-16.1-36-36-36h-104c-19.9 0-36 16.1-36 36v80c0 6.6 5.4 12 12 12h152c6.6.1 12-5.3 12-11.9zm-164 44c-6.6 0-12 5.4-12 12v52c0 128.1-160 127.9-160 0v-52c0-6.6-5.4-12-12-12h-152c-6.7 0-12 5.4-12 12.1.1 21.4.6 40.3 0 53.3C.1 408 136.3 504 256.9 504 377.5 504 512 408 512 257.3c-.6-12.8-.2-33 0-53.2 0-6.7-5.3-12.1-12-12.1H348.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512.1\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M164.1 160H12c-6.6 0-12-5.4-12-12V68c0-19.9 16.1-36 36-36h104c19.9 0 36 16.1 36 36v80c.1 6.6-5.3 12-11.9 12zm348-12V67.9c0-19.9-16.1-36-36-36h-104c-19.9 0-36 16.1-36 36v80c0 6.6 5.4 12 12 12h152c6.6.1 12-5.3 12-11.9zm-164 44c-6.6 0-12 5.4-12 12v52c0 128.1-160 127.9-160 0v-52c0-6.6-5.4-12-12-12h-152c-6.7 0-12 5.4-12 12.1.1 21.4.6 40.3 0 53.3C.1 408 136.3 504 256.9 504 377.5 504 512 408 512 257.3c-.6-12.8-.2-33 0-53.2 0-6.7-5.3-12.1-12-12.1H348.1z\\\"}}},\\\"mailchimp\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f59e\\\",\\\"label\\\":\\\"Mailchimp\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529520111564,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 428.07 512\\\\\\\"><path d=\\\\\\\"M426.56 323.72c-3.09-6.59-8.97-11.13-16.35-12.88-2.47-11.27-5.88-16.8-6.19-17.63 1.3-1.48 2.56-2.97 2.84-3.32 10.42-12.93 3.62-31.86-14.19-36.33-10.02-9.64-19.09-14.17-26.54-17.9-7.14-3.57-4.29-2.17-10.99-5.19-1.78-8.71-2.37-28.97-5.2-43.19-2.54-12.79-7.66-22.06-15.56-28.15-3.16-6.84-7.59-13.74-12.93-18.81 24.84-38.08 31.38-75.69 13.19-95.39-8.1-8.77-20.13-12.93-34.52-12.93-20.26 0-45.18 8.26-70.34 23.54 0 0-16.38-13.18-16.73-13.46-70.08-55.19-268.28 188.7-198.32 242l18.06 13.8c-11.34 31.54 4.43 69.14 37.29 81.21 7.26 2.67 15.14 3.97 23.31 3.51 0 0 53.09 97.36 165.1 97.39 129.58.04 162.55-126.72 162.9-127.86 0 .01 10.5-15.51 5.17-28.41zM20.12 267.95c-14.2-23.96 10.51-73.19 28.09-101.17C91.66 97.63 163.98 43.06 196.82 50.85l9.03-3.46c.03.03 24.67 20.85 24.7 20.87 16.97-10.19 38.58-20.57 58.8-22.64-12.3 2.77-27.29 9.15-45.05 20.01-.43.25-42.02 28.32-67.43 53.52-13.85 13.73-69.45 80.41-69.4 80.35 10.16-19.23 16.86-28.67 32.94-48.9 9.1-11.44 18.81-22.57 28.74-32.84 4.61-4.77 9.28-9.36 13.95-13.71 3.21-2.99 6.44-5.87 9.65-8.62 1.48-1.27 2.96-2.5 4.43-3.71l.01-.01L164.6 64.8l1.72 12.06 23.69 20.87s-20.96 14.11-31.39 23.01c-41.79 35.66-82.8 90.4-98.06 143.69l.73-.03c-7.6 4.19-15.14 10.91-21.73 20.05-.16-.04-17.04-12.43-19.44-16.5zm69.11 100.09c-25.03 0-45.33-21.37-45.33-47.72 0-26.36 20.29-47.72 45.33-47.72 6.49 0 12.66 1.44 18.24 4.02 0 0 9.63 4.86 12.34 27.81 2.82-7.17 4.24-13.06 4.24-13.06 3.23 9.88 4.88 20.26 4.23 30.76 2.68-3.56 5.55-10.27 5.55-10.27 5 29.33-16.4 56.18-44.6 56.18zm55.8-168.53s19.49-37.06 62.33-61.57c-3.19-.51-10.99.48-12.36.64 7.78-6.69 22.24-11.16 32.23-13.19-2.92-1.86-9.89-2.33-13.34-2.42-1.02-.03-1.01-.02-2.22.03 9.4-5.25 26.82-8.34 42.65-5.55-1.99-2.64-6.5-4.57-9.67-5.51-.28-.08-1.52-.39-1.52-.39l1.19-.28c9.54-1.84 20.69.15 29.5 3.69-1-2.32-3.45-5.03-5.29-6.74-.19-.18-1.29-.97-1.29-.97 9.22 1.91 18.06 5.94 24.71 10.5-.9-1.75-3.14-4.69-4.69-6.29 8.81 2.52 18.71 8.81 22.95 17.82.1.2.37.94.4 1.03-16.7-12.84-65.44-9.2-114.24 22.42-22.33 14.48-38.71 30.32-51.34 46.78zm263.32 146.34c-.59 1.15-6.73 34.4-41.86 62.01-44.37 34.86-102.66 31.33-124.67 11.8-11.76-11-16.85-26.73-16.85-26.73s-1.33 8.87-1.56 12.35c-8.87-15.09-8.12-33.52-8.12-33.52s-4.73 8.83-6.9 13.77c-6.53-16.62-3.16-33.78-3.16-33.78l-5.16 7.7s-2.42-18.81 3.52-34.47c6.36-16.74 18.68-28.9 21.11-30.42-9.35-2.97-20.12-11.49-20.14-11.51 0 0 4.28.28 7.26-.4 0 0-18.9-13.54-22.22-34.26 2.74 3.38 8.49 7.21 8.49 7.21-1.86-5.42-2.99-17.49-1.25-29.36l.01-.01c3.58-22.68 22.27-37.45 43.44-37.27 22.54.2 37.65 4.93 56.55-12.5 4-3.69 7.19-6.87 12.81-8.11.59-.13 2.06-.75 5.07-.75 3.05 0 5.98.69 8.67 2.29 10.25 6.1 12.46 22.01 13.56 33.68 4.07 43.28 2.43 35.57 19.94 44.49 8.36 4.25 17.74 8.29 28.43 19.72.03.03.08.09.08.09h.13c9.01.22 13.65 7.31 9.5 12.47-30.23 36.1-72.46 53.39-119.51 54.84-1.94.05-6.32.15-6.34.15-19.01.58-25.19 25.16-13.27 39.95 7.54 9.35 22.03 12.42 33.97 12.46l.17-.06c51.45 1.04 103.14-35.37 112.07-55.44.06-.15.61-1.42.61-1.42-2.07 2.43-52.18 49.61-113.08 47.9 0 0-6.66-.14-12.93-1.6-8.27-1.92-14.55-5.56-16.95-13.8 5.05 1.01 11.45 1.66 18.87 1.66 43.96 0 75.63-19.98 72.33-20.25-.13 0-.26.03-.48.08-5.13 1.19-57.97 21.66-91.37 11.16.08-1.02.24-2.01.48-2.9 2.97-9.95 8.25-8.56 16.79-8.93 30.48-1.01 55.07-8.68 73.5-17.43 19.65-9.33 34.63-21.35 40.03-27.42 7 11.79 6.96 26.92 6.96 26.92s2.74-.96 6.38-.96c11.38.01 13.73 10.23 5.09 20.6zm-149.29 13.7c0-.05-.01-.1-.01-.15.01.05.01.1.01.15zm-.01-.21c-.01-.13-.01-.26-.02-.39-.02-.65-.03-1.33 0-2.02-.02.74-.02 1.42 0 2.02.01.13.01.27.02.39zm.12 1.46c0 .02 0 .04.01.06 0-.02 0-.04-.01-.06zm.02.12c.2 1.58.51 2.31.55 2.4-.23-.49-.42-1.34-.55-2.4zM193.96 59.68l2.87-8.83 4.88 17.72-6.03-1.95-1.72-6.94zm22.38 17.72l-3.62-12.59 9.97 8.36c-2.24 1.44-4.36 2.86-6.35 4.23zm42.71 281.94c-.01-.13-.01-.26-.02-.39.01.13.01.27.02.39zm-.01-.39c-.02-.65-.03-1.33 0-2.02-.03.75-.03 1.42 0 2.02zm.02.6c0-.05-.01-.1-.01-.15m.13 1.46c0-.02 0-.04-.01-.06m.02.12c.2 1.58.51 2.31.55 2.4-.23-.49-.42-1.34-.55-2.4zm52.1-138.61c-.07-3.36.47-8.92 3.63-9.95h.01c5.41-1.88 12.58 11.98 12.91 24.28-4.28-2.14-9.3-3.05-14.47-2.6-1.3-3.97-1.92-7.7-2.08-11.73zM205.38 85.27l-13.59-11.38 20.57 6.28c-2.65 1.88-5 3.6-6.98 5.1zm27.7 166.94c-3.41 1.3-5.83 2.31-7 2.14-1.89-.28-.06-3.75 4.08-7.11 8.33-6.64 19.76-8.7 29.53-5.07 4.28 1.57 9.08 4.72 11.6 8.39.95 1.39 1.21 2.44.82 2.88-.77.9-3.51-.31-7.55-1.89-10.35-3.86-17.98-4.45-31.48.66zm14.55 14.53c-2.31.94-3.81 1.66-4.42 1.17-.62-.48-.01-2.42 2.15-4.51 1.88-1.81 3.83-2.83 6.07-3.77.35-.15.72-.28 1.1-.38 1.04-.28 2.09-.63 3.23-.8 9.12-1.55 15.8 3.51 14.93 4.98-.39.69-2.08.53-4.6.36-5.23-.36-10.71-.27-18.46 2.95zM60.86 323.12zm24.3-25.78c-1.85.39-.81.17-2.64.68a7 7 0 0 0-.77.25c-.58.27-1.11.45-1.62.73-.43.24-4.07 1.86-7.03 5.48-3.99 4.95-5.44 11.43-5.19 17.67.24 6.06 2.02 9.41 2.35 10.23 1.38 2.96-1.85 3.57-4.79.39l-.01-.01c-2.35-2.49-3.86-6.29-4.6-9.66-2.98-13.95 3.24-27.97 17.61-33.57.8-.32 1.74-.51 2.5-.73h-.01c1.47-.44 6.72-1.5 12.07-.67 5.87.91 11.04 3.85 14.33 7.67l.01.01c2.53 2.87 4.43 6.92 4.09 10.53v.01c-.13 1.5-.79 3.65-2.14 4.21-.5.21-1.01.1-1.36-.25-.98-.96-.22-2.93-2.6-6.3-3.17-4.47-10.31-8.76-20.2-6.67zm30.28 31.17c1.88 10.82-6 20.5-15.52 20.7-6.67.15-10.31-4.02-9.66-4.93.3-.43 1.32-.24 2.88-.01 8.5 1.32 13.66-3.86 14.9-9.29.02-.09.35-1.54.34-2.54.07-.88-.03-1.76-.16-2.56-1-5.62-7.45-6.68-11.6-11.15-3.72-4.04-2.99-9.22-.65-11.71 2.81-2.77 6.83-1.76 6.78-.78 0 .52-.97.91-2.17 1.74-1.56 1.1-1.77 2.16-1.37 3.98.26 1 .71 1.65 1.68 2.42 3.48 2.76 12.85 4.7 14.55 14.13zm212.87-81.47c2.58.4 4.22 3.59 3.67 7.13-.55 3.54-3.09 6.08-5.67 5.67-2.58-.4-4.22-3.59-3.67-7.13.56-3.53 3.09-6.07 5.67-5.67zm-28.33 10.31c1.42-2.59 5.44-3.11 8.99-1.16 3.55 1.94 5.27 5.62 3.86 8.2-1.42 2.59-5.44 3.11-8.99 1.16-3.55-1.94-5.28-5.61-3.86-8.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"428.07\\\",\\\"512\\\"],\\\"width\\\":428,\\\"height\\\":512,\\\"path\\\":\\\"M426.56 323.72c-3.09-6.59-8.97-11.13-16.35-12.88-2.47-11.27-5.88-16.8-6.19-17.63 1.3-1.48 2.56-2.97 2.84-3.32 10.42-12.93 3.62-31.86-14.19-36.33-10.02-9.64-19.09-14.17-26.54-17.9-7.14-3.57-4.29-2.17-10.99-5.19-1.78-8.71-2.37-28.97-5.2-43.19-2.54-12.79-7.66-22.06-15.56-28.15-3.16-6.84-7.59-13.74-12.93-18.81 24.84-38.08 31.38-75.69 13.19-95.39-8.1-8.77-20.13-12.93-34.52-12.93-20.26 0-45.18 8.26-70.34 23.54 0 0-16.38-13.18-16.73-13.46-70.08-55.19-268.28 188.7-198.32 242l18.06 13.8c-11.34 31.54 4.43 69.14 37.29 81.21 7.26 2.67 15.14 3.97 23.31 3.51 0 0 53.09 97.36 165.1 97.39 129.58.04 162.55-126.72 162.9-127.86 0 .01 10.5-15.51 5.17-28.41zM20.12 267.95c-14.2-23.96 10.51-73.19 28.09-101.17C91.66 97.63 163.98 43.06 196.82 50.85l9.03-3.46c.03.03 24.67 20.85 24.7 20.87 16.97-10.19 38.58-20.57 58.8-22.64-12.3 2.77-27.29 9.15-45.05 20.01-.43.25-42.02 28.32-67.43 53.52-13.85 13.73-69.45 80.41-69.4 80.35 10.16-19.23 16.86-28.67 32.94-48.9 9.1-11.44 18.81-22.57 28.74-32.84 4.61-4.77 9.28-9.36 13.95-13.71 3.21-2.99 6.44-5.87 9.65-8.62 1.48-1.27 2.96-2.5 4.43-3.71l.01-.01L164.6 64.8l1.72 12.06 23.69 20.87s-20.96 14.11-31.39 23.01c-41.79 35.66-82.8 90.4-98.06 143.69l.73-.03c-7.6 4.19-15.14 10.91-21.73 20.05-.16-.04-17.04-12.43-19.44-16.5zm69.11 100.09c-25.03 0-45.33-21.37-45.33-47.72 0-26.36 20.29-47.72 45.33-47.72 6.49 0 12.66 1.44 18.24 4.02 0 0 9.63 4.86 12.34 27.81 2.82-7.17 4.24-13.06 4.24-13.06 3.23 9.88 4.88 20.26 4.23 30.76 2.68-3.56 5.55-10.27 5.55-10.27 5 29.33-16.4 56.18-44.6 56.18zm55.8-168.53s19.49-37.06 62.33-61.57c-3.19-.51-10.99.48-12.36.64 7.78-6.69 22.24-11.16 32.23-13.19-2.92-1.86-9.89-2.33-13.34-2.42-1.02-.03-1.01-.02-2.22.03 9.4-5.25 26.82-8.34 42.65-5.55-1.99-2.64-6.5-4.57-9.67-5.51-.28-.08-1.52-.39-1.52-.39l1.19-.28c9.54-1.84 20.69.15 29.5 3.69-1-2.32-3.45-5.03-5.29-6.74-.19-.18-1.29-.97-1.29-.97 9.22 1.91 18.06 5.94 24.71 10.5-.9-1.75-3.14-4.69-4.69-6.29 8.81 2.52 18.71 8.81 22.95 17.82.1.2.37.94.4 1.03-16.7-12.84-65.44-9.2-114.24 22.42-22.33 14.48-38.71 30.32-51.34 46.78zm263.32 146.34c-.59 1.15-6.73 34.4-41.86 62.01-44.37 34.86-102.66 31.33-124.67 11.8-11.76-11-16.85-26.73-16.85-26.73s-1.33 8.87-1.56 12.35c-8.87-15.09-8.12-33.52-8.12-33.52s-4.73 8.83-6.9 13.77c-6.53-16.62-3.16-33.78-3.16-33.78l-5.16 7.7s-2.42-18.81 3.52-34.47c6.36-16.74 18.68-28.9 21.11-30.42-9.35-2.97-20.12-11.49-20.14-11.51 0 0 4.28.28 7.26-.4 0 0-18.9-13.54-22.22-34.26 2.74 3.38 8.49 7.21 8.49 7.21-1.86-5.42-2.99-17.49-1.25-29.36l.01-.01c3.58-22.68 22.27-37.45 43.44-37.27 22.54.2 37.65 4.93 56.55-12.5 4-3.69 7.19-6.87 12.81-8.11.59-.13 2.06-.75 5.07-.75 3.05 0 5.98.69 8.67 2.29 10.25 6.1 12.46 22.01 13.56 33.68 4.07 43.28 2.43 35.57 19.94 44.49 8.36 4.25 17.74 8.29 28.43 19.72.03.03.08.09.08.09h.13c9.01.22 13.65 7.31 9.5 12.47-30.23 36.1-72.46 53.39-119.51 54.84-1.94.05-6.32.15-6.34.15-19.01.58-25.19 25.16-13.27 39.95 7.54 9.35 22.03 12.42 33.97 12.46l.17-.06c51.45 1.04 103.14-35.37 112.07-55.44.06-.15.61-1.42.61-1.42-2.07 2.43-52.18 49.61-113.08 47.9 0 0-6.66-.14-12.93-1.6-8.27-1.92-14.55-5.56-16.95-13.8 5.05 1.01 11.45 1.66 18.87 1.66 43.96 0 75.63-19.98 72.33-20.25-.13 0-.26.03-.48.08-5.13 1.19-57.97 21.66-91.37 11.16.08-1.02.24-2.01.48-2.9 2.97-9.95 8.25-8.56 16.79-8.93 30.48-1.01 55.07-8.68 73.5-17.43 19.65-9.33 34.63-21.35 40.03-27.42 7 11.79 6.96 26.92 6.96 26.92s2.74-.96 6.38-.96c11.38.01 13.73 10.23 5.09 20.6zm-149.29 13.7c0-.05-.01-.1-.01-.15.01.05.01.1.01.15zm-.01-.21c-.01-.13-.01-.26-.02-.39-.02-.65-.03-1.33 0-2.02-.02.74-.02 1.42 0 2.02.01.13.01.27.02.39zm.12 1.46c0 .02 0 .04.01.06 0-.02 0-.04-.01-.06zm.02.12c.2 1.58.51 2.31.55 2.4-.23-.49-.42-1.34-.55-2.4zM193.96 59.68l2.87-8.83 4.88 17.72-6.03-1.95-1.72-6.94zm22.38 17.72l-3.62-12.59 9.97 8.36c-2.24 1.44-4.36 2.86-6.35 4.23zm42.71 281.94c-.01-.13-.01-.26-.02-.39.01.13.01.27.02.39zm-.01-.39c-.02-.65-.03-1.33 0-2.02-.03.75-.03 1.42 0 2.02zm.02.6c0-.05-.01-.1-.01-.15m.13 1.46c0-.02 0-.04-.01-.06m.02.12c.2 1.58.51 2.31.55 2.4-.23-.49-.42-1.34-.55-2.4zm52.1-138.61c-.07-3.36.47-8.92 3.63-9.95h.01c5.41-1.88 12.58 11.98 12.91 24.28-4.28-2.14-9.3-3.05-14.47-2.6-1.3-3.97-1.92-7.7-2.08-11.73zM205.38 85.27l-13.59-11.38 20.57 6.28c-2.65 1.88-5 3.6-6.98 5.1zm27.7 166.94c-3.41 1.3-5.83 2.31-7 2.14-1.89-.28-.06-3.75 4.08-7.11 8.33-6.64 19.76-8.7 29.53-5.07 4.28 1.57 9.08 4.72 11.6 8.39.95 1.39 1.21 2.44.82 2.88-.77.9-3.51-.31-7.55-1.89-10.35-3.86-17.98-4.45-31.48.66zm14.55 14.53c-2.31.94-3.81 1.66-4.42 1.17-.62-.48-.01-2.42 2.15-4.51 1.88-1.81 3.83-2.83 6.07-3.77.35-.15.72-.28 1.1-.38 1.04-.28 2.09-.63 3.23-.8 9.12-1.55 15.8 3.51 14.93 4.98-.39.69-2.08.53-4.6.36-5.23-.36-10.71-.27-18.46 2.95zM60.86 323.12zm24.3-25.78c-1.85.39-.81.17-2.64.68a7 7 0 0 0-.77.25c-.58.27-1.11.45-1.62.73-.43.24-4.07 1.86-7.03 5.48-3.99 4.95-5.44 11.43-5.19 17.67.24 6.06 2.02 9.41 2.35 10.23 1.38 2.96-1.85 3.57-4.79.39l-.01-.01c-2.35-2.49-3.86-6.29-4.6-9.66-2.98-13.95 3.24-27.97 17.61-33.57.8-.32 1.74-.51 2.5-.73h-.01c1.47-.44 6.72-1.5 12.07-.67 5.87.91 11.04 3.85 14.33 7.67l.01.01c2.53 2.87 4.43 6.92 4.09 10.53v.01c-.13 1.5-.79 3.65-2.14 4.21-.5.21-1.01.1-1.36-.25-.98-.96-.22-2.93-2.6-6.3-3.17-4.47-10.31-8.76-20.2-6.67zm30.28 31.17c1.88 10.82-6 20.5-15.52 20.7-6.67.15-10.31-4.02-9.66-4.93.3-.43 1.32-.24 2.88-.01 8.5 1.32 13.66-3.86 14.9-9.29.02-.09.35-1.54.34-2.54.07-.88-.03-1.76-.16-2.56-1-5.62-7.45-6.68-11.6-11.15-3.72-4.04-2.99-9.22-.65-11.71 2.81-2.77 6.83-1.76 6.78-.78 0 .52-.97.91-2.17 1.74-1.56 1.1-1.77 2.16-1.37 3.98.26 1 .71 1.65 1.68 2.42 3.48 2.76 12.85 4.7 14.55 14.13zm212.87-81.47c2.58.4 4.22 3.59 3.67 7.13-.55 3.54-3.09 6.08-5.67 5.67-2.58-.4-4.22-3.59-3.67-7.13.56-3.53 3.09-6.07 5.67-5.67zm-28.33 10.31c1.42-2.59 5.44-3.11 8.99-1.16 3.55 1.94 5.27 5.62 3.86 8.2-1.42 2.59-5.44 3.11-8.99 1.16-3.55-1.94-5.28-5.61-3.86-8.2z\\\"}}},\\\"male\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"human\\\",\\\"man\\\",\\\"person\\\",\\\"profile\\\",\\\"user\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f183\\\",\\\"label\\\":\\\"Male\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 192 512\\\\\\\"><path d=\\\\\\\"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"192\\\",\\\"512\\\"],\\\"width\\\":192,\\\"height\\\":512,\\\"path\\\":\\\"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\\\"}}},\\\"mandalorian\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f50f\\\",\\\"label\\\":\\\"Mandalorian\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442521,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 390.88 512\\\\\\\"><path d=\\\\\\\"M203.28 511.89c-.98-3.26-1.69-15.83-1.39-24.58.55-15.89.98-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-.96.4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-.99-11.43.16-4.81 0-10.53-.34-12.71-2.05-12.97-3.46-27.7-3.25-33.9.21-6.12.43-7.15 2.06-9.67 3.05-4.71 6.51-14.04 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74.89-4.42 2.43-9.72 4.36-15.05 2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71-1.03 1.49-4.76 4.8-8.29 7.36-8.37 6.08-11.7 9.39-12.66 12.58-.93 3.11-1.02 7.23-.16 7.76.34.21 1.29 2.4 2.11 4.88 1.62 4.88 1.87 10.12.72 15.36-.39 1.77-1.05 5.47-1.46 8.23-.41 2.76-.98 6.46-1.25 8.22-.28 1.76-.97 3.68-1.55 4.26-.96.96-1.14.91-2.05-.53-.55-.87-1.2-3.01-1.44-4.75-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-.96-20.96.92-1.73 1.67-3.81 1.67-4.61 0-2.39-2.2-5.32-7.41-9.89-7.05-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3.01-2.6 9.11-2.97 22.02l-.35 12.13 1.95 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56.07 11.84.95 22.75 2 24.71.36.66.51 1.35.34 1.52-.17.17.41 2.09 1.29 4.27.88 2.18 1.81 6.22 2.06 8.98.25 2.76 1.02 7.43 1.71 10.37 2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 57.98-2.04 61.21-.12 2.02-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4.02-4.79-2.83-9.95.7-3.01 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1.01-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73.38-1.29.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6.03-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57.02-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-10.96-1.9-23.85-14.55-6.15-6.04-12.34-11.97-13.75-13.19-2.81-2.42-2.79-1.99-.56-9.63l1.35-4.65-1.69-3.04c-.93-1.67-2.09-3.51-2.59-4.07-1.33-1.51-5.5-10.89-5.99-13.49-.31-1.66-.09-2.67.87-3.9 2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1.05 9.41 5.03 1.34 4.79 1.37 9.79.1 18.55-.53 3.68-.98 8.68-.99 11.11-.02 4.01.19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52 1.7.71 3.82 1.99 4.72 2.85 11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 7.98 4.54 10.04 13.39 1.31 5.65 4 11.14 5.46 11.14.59 0 2.09-.63 3.33-1.39 1.98-1.22 2.25-1.73 2.25-4.18-.01-3.71-1.17-14.08-2-17.84-.37-1.66-.78-4.06-.93-5.35-.14-1.29-.61-3.85-1.03-5.69-2.55-11.16-3.65-15.46-4.1-16.05-1.55-2.02-4.08-10.2-4.93-15.92-1.64-11.11-3.96-14.23-12.91-17.39-4.64-1.64-8.89-4.12-13.32-7.78-1.15-.95-4.01-3.22-6.35-5.06-2.35-1.83-4.41-3.53-4.6-3.76-.18-.23-1.39-1.14-2.69-2.02-6.24-4.22-8.84-6.98-11.26-11.96l-2.44-5.02-.22-12.98-.22-12.98 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2.05 8.53-.19 10.12.02 11.66 1.56 1.53 1.53 1.36 6.4-.29 8.5-.74.94-1.34 1.98-1.34 2.32 0 .58-2.61 4.91-5.42 8.99-.68.99-2.13 5.35-2.37 6.82 20.44 13.39 21.55 3.77 14.07 28.98l11.4 2.54c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-11.98-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28 3.18-.92 6.58-1.68 7.55-1.68.97 0 3.66-.58 5.98-1.29 3.65-1.11 4.5-1.17 6.35-.4 1.17.48 3.79 1.09 5.82 1.36 2.02.26 4.72 1.12 6 1.91 1.28.79 3.53 1.77 5.02 2.17 2.51.68 3 .57 7.05-1.67l4.35-2.4 10.7-.41c10.44-.4 10.81-.47 15.26-2.68l4.58-2.3 2.46 1.43c1.76 1.02 3.14 2.73 4.85 5.98 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39.5 1.96 1.45 4.62 2.1 5.91.65 1.29 1.24 3.09 1.31 4.01.31 4.33-.03 5.3-2.41 6.92-2.17 1.47-6.98 7.91-6.98 9.34 0 .32-.48 1.69-1.07 3.03-5.04 11.51-6.76 13.56-14.26 16.98-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26-.37.69-2.21 2.37-4.09 3.71-2.04 1.47-3.8 3.38-4.38 4.78-.54 1.28-1.66 2.59-2.49 2.91-.83.32-1.94 1.08-2.45 1.71-.52.62-3.66 3.04-7 5.38-3.33 2.34-6.87 5.02-7.87 5.96-1 .94-2.07 1.71-2.39 1.71s-1.28.74-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6.22 1.63.86 4.27 1.42 5.88 1.32 3.8 1.31 7.86-.05 10.57-1.43 2.86-.89 6.65 1.35 9.59 2.01 2.63 2.16 4.56.71 8.84-.61 1.8-1.05 5.45-1.06 8.91-.02 4.88.22 6.28 1.46 8.38 1.2 2.04 1.82 2.48 3.24 2.32 1.98-.23 2.3-1.05 4.71-12.12 2.18-10.03 3.71-11.92 13.76-17.08 2.94-1.51 7.46-3.96 10.03-5.44 2.58-1.48 6.79-3.69 9.37-4.91 6.67-3.16 11.05-6.52 15.22-11.67 7.11-8.79 9.98-16.22 12.85-33.3.55-3.28 1.43-5.65 2.86-7.73 1.29-1.87 2.37-4.62 2.89-7.31 1.02-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8.03-2.18 3.11-6.46 13.01-8.76 20.26l-2.29 7.22-6.97 6.49c-3.83 3.57-7.96 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 9.99 0 2.98.43 4.96 1.59 7.26.87 1.74 1.81 3.91 2.09 4.83.28.92.98 2.22 1.57 2.89 1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12.02-4.7 12.02-1.79 0-4.06 9.27-5.07 20.74-.18 2.02-.62 5.94-.98 8.7-.36 2.76-.96 9.98-1.35 16.05-.77 12.22-.19 18.77 2.05 23.15 3.41 6.69.52 12.69-11.03 22.84l-3.97 3.49.07 5.19c.04 2.86.55 6.85 1.14 8.87 4.61 15.98 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15.42 1.84.91 5 1.08 7.02.17 2.02.66 5.33 1.08 7.36.47 2.26.78 11.02.79 22.74l.02 19.06-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2.02-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3.02-17.66-3.03-21.3-.01-4.23 1.02-6 5.28-9.13 4.14-3.04 4.86-3.14 5.48-.72.28 1.1 1.45 5.62 2.6 10.03 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-.98 7.07-1.17 12.39-1.04 28.43.17 19.4-.64 35.73-2.04 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-70.99-37.58c-.24-.38-1.01-5.24-1.73-10.79-.72-5.56-1.49-10.41-1.73-10.79-.23-.38-.68-3.3-.99-6.49-.31-3.19-.91-7.46-1.33-9.48-.99-4.79-3.35-19.35-3.42-21.07-.03-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29.96-.96 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83-.18 4.6-.49 9.87-.67 11.71-.18 1.84-.61 9.36-.94 16.72-.79 17.41-1.94 31.29-2.65 32-.32.3-.76.24-1-.14zM74.63 162.61c21.07 12.79 17.84 14.15 28.49 17.66 13.01 4.29 18.87 7.13 23.15 16.87-43.66 36.14-69.01 57.9-76.71 70.82-31.02 52.01-5.99 101.59 62.75 87.21-14.18 29.23-77.97 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179.02c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-67.96 2.98-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.27 70.58-78.66 91.12-105.29 61.65z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"390.88\\\",\\\"512\\\"],\\\"width\\\":390,\\\"height\\\":512,\\\"path\\\":\\\"M203.28 511.89c-.98-3.26-1.69-15.83-1.39-24.58.55-15.89.98-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-.96.4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-.99-11.43.16-4.81 0-10.53-.34-12.71-2.05-12.97-3.46-27.7-3.25-33.9.21-6.12.43-7.15 2.06-9.67 3.05-4.71 6.51-14.04 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74.89-4.42 2.43-9.72 4.36-15.05 2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71-1.03 1.49-4.76 4.8-8.29 7.36-8.37 6.08-11.7 9.39-12.66 12.58-.93 3.11-1.02 7.23-.16 7.76.34.21 1.29 2.4 2.11 4.88 1.62 4.88 1.87 10.12.72 15.36-.39 1.77-1.05 5.47-1.46 8.23-.41 2.76-.98 6.46-1.25 8.22-.28 1.76-.97 3.68-1.55 4.26-.96.96-1.14.91-2.05-.53-.55-.87-1.2-3.01-1.44-4.75-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-.96-20.96.92-1.73 1.67-3.81 1.67-4.61 0-2.39-2.2-5.32-7.41-9.89-7.05-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3.01-2.6 9.11-2.97 22.02l-.35 12.13 1.95 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56.07 11.84.95 22.75 2 24.71.36.66.51 1.35.34 1.52-.17.17.41 2.09 1.29 4.27.88 2.18 1.81 6.22 2.06 8.98.25 2.76 1.02 7.43 1.71 10.37 2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 57.98-2.04 61.21-.12 2.02-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4.02-4.79-2.83-9.95.7-3.01 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1.01-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73.38-1.29.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6.03-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57.02-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-10.96-1.9-23.85-14.55-6.15-6.04-12.34-11.97-13.75-13.19-2.81-2.42-2.79-1.99-.56-9.63l1.35-4.65-1.69-3.04c-.93-1.67-2.09-3.51-2.59-4.07-1.33-1.51-5.5-10.89-5.99-13.49-.31-1.66-.09-2.67.87-3.9 2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1.05 9.41 5.03 1.34 4.79 1.37 9.79.1 18.55-.53 3.68-.98 8.68-.99 11.11-.02 4.01.19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52 1.7.71 3.82 1.99 4.72 2.85 11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 7.98 4.54 10.04 13.39 1.31 5.65 4 11.14 5.46 11.14.59 0 2.09-.63 3.33-1.39 1.98-1.22 2.25-1.73 2.25-4.18-.01-3.71-1.17-14.08-2-17.84-.37-1.66-.78-4.06-.93-5.35-.14-1.29-.61-3.85-1.03-5.69-2.55-11.16-3.65-15.46-4.1-16.05-1.55-2.02-4.08-10.2-4.93-15.92-1.64-11.11-3.96-14.23-12.91-17.39-4.64-1.64-8.89-4.12-13.32-7.78-1.15-.95-4.01-3.22-6.35-5.06-2.35-1.83-4.41-3.53-4.6-3.76-.18-.23-1.39-1.14-2.69-2.02-6.24-4.22-8.84-6.98-11.26-11.96l-2.44-5.02-.22-12.98-.22-12.98 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2.05 8.53-.19 10.12.02 11.66 1.56 1.53 1.53 1.36 6.4-.29 8.5-.74.94-1.34 1.98-1.34 2.32 0 .58-2.61 4.91-5.42 8.99-.68.99-2.13 5.35-2.37 6.82 20.44 13.39 21.55 3.77 14.07 28.98l11.4 2.54c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-11.98-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28 3.18-.92 6.58-1.68 7.55-1.68.97 0 3.66-.58 5.98-1.29 3.65-1.11 4.5-1.17 6.35-.4 1.17.48 3.79 1.09 5.82 1.36 2.02.26 4.72 1.12 6 1.91 1.28.79 3.53 1.77 5.02 2.17 2.51.68 3 .57 7.05-1.67l4.35-2.4 10.7-.41c10.44-.4 10.81-.47 15.26-2.68l4.58-2.3 2.46 1.43c1.76 1.02 3.14 2.73 4.85 5.98 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39.5 1.96 1.45 4.62 2.1 5.91.65 1.29 1.24 3.09 1.31 4.01.31 4.33-.03 5.3-2.41 6.92-2.17 1.47-6.98 7.91-6.98 9.34 0 .32-.48 1.69-1.07 3.03-5.04 11.51-6.76 13.56-14.26 16.98-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26-.37.69-2.21 2.37-4.09 3.71-2.04 1.47-3.8 3.38-4.38 4.78-.54 1.28-1.66 2.59-2.49 2.91-.83.32-1.94 1.08-2.45 1.71-.52.62-3.66 3.04-7 5.38-3.33 2.34-6.87 5.02-7.87 5.96-1 .94-2.07 1.71-2.39 1.71s-1.28.74-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6.22 1.63.86 4.27 1.42 5.88 1.32 3.8 1.31 7.86-.05 10.57-1.43 2.86-.89 6.65 1.35 9.59 2.01 2.63 2.16 4.56.71 8.84-.61 1.8-1.05 5.45-1.06 8.91-.02 4.88.22 6.28 1.46 8.38 1.2 2.04 1.82 2.48 3.24 2.32 1.98-.23 2.3-1.05 4.71-12.12 2.18-10.03 3.71-11.92 13.76-17.08 2.94-1.51 7.46-3.96 10.03-5.44 2.58-1.48 6.79-3.69 9.37-4.91 6.67-3.16 11.05-6.52 15.22-11.67 7.11-8.79 9.98-16.22 12.85-33.3.55-3.28 1.43-5.65 2.86-7.73 1.29-1.87 2.37-4.62 2.89-7.31 1.02-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8.03-2.18 3.11-6.46 13.01-8.76 20.26l-2.29 7.22-6.97 6.49c-3.83 3.57-7.96 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 9.99 0 2.98.43 4.96 1.59 7.26.87 1.74 1.81 3.91 2.09 4.83.28.92.98 2.22 1.57 2.89 1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12.02-4.7 12.02-1.79 0-4.06 9.27-5.07 20.74-.18 2.02-.62 5.94-.98 8.7-.36 2.76-.96 9.98-1.35 16.05-.77 12.22-.19 18.77 2.05 23.15 3.41 6.69.52 12.69-11.03 22.84l-3.97 3.49.07 5.19c.04 2.86.55 6.85 1.14 8.87 4.61 15.98 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15.42 1.84.91 5 1.08 7.02.17 2.02.66 5.33 1.08 7.36.47 2.26.78 11.02.79 22.74l.02 19.06-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2.02-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3.02-17.66-3.03-21.3-.01-4.23 1.02-6 5.28-9.13 4.14-3.04 4.86-3.14 5.48-.72.28 1.1 1.45 5.62 2.6 10.03 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-.98 7.07-1.17 12.39-1.04 28.43.17 19.4-.64 35.73-2.04 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-70.99-37.58c-.24-.38-1.01-5.24-1.73-10.79-.72-5.56-1.49-10.41-1.73-10.79-.23-.38-.68-3.3-.99-6.49-.31-3.19-.91-7.46-1.33-9.48-.99-4.79-3.35-19.35-3.42-21.07-.03-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29.96-.96 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83-.18 4.6-.49 9.87-.67 11.71-.18 1.84-.61 9.36-.94 16.72-.79 17.41-1.94 31.29-2.65 32-.32.3-.76.24-1-.14zM74.63 162.61c21.07 12.79 17.84 14.15 28.49 17.66 13.01 4.29 18.87 7.13 23.15 16.87-43.66 36.14-69.01 57.9-76.71 70.82-31.02 52.01-5.99 101.59 62.75 87.21-14.18 29.23-77.97 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179.02c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-67.96 2.98-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.27 70.58-78.66 91.12-105.29 61.65z\\\"}}},\\\"map\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"coordinates\\\",\\\"location\\\",\\\"paper\\\",\\\"place\\\",\\\"travel\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f279\\\",\\\"label\\\":\\\"Map\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111686,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111627,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M560.02 32c-1.96 0-3.98.37-5.96 1.16L384.01 96H384L212 35.28A64.252 64.252 0 0 0 191.76 32c-6.69 0-13.37 1.05-19.81 3.14L20.12 87.95A32.006 32.006 0 0 0 0 117.66v346.32C0 473.17 7.53 480 15.99 480c1.96 0 3.97-.37 5.96-1.16L192 416l172 60.71a63.98 63.98 0 0 0 40.05.15l151.83-52.81A31.996 31.996 0 0 0 576 394.34V48.02c0-9.19-7.53-16.02-15.98-16.02zM224 90.42l128 45.19v285.97l-128-45.19V90.42zM48 418.05V129.07l128-44.53v286.2l-.64.23L48 418.05zm480-35.13l-128 44.53V141.26l.64-.24L528 93.95v288.97z\\\"}}},\\\"map-marked\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"address\\\",\\\"coordinates\\\",\\\"destination\\\",\\\"gps\\\",\\\"localize\\\",\\\"location\\\",\\\"map\\\",\\\"paper\\\",\\\"pin\\\",\\\"place\\\",\\\"point of interest\\\",\\\"position\\\",\\\"route\\\",\\\"travel\\\",\\\"where\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f59f\\\",\\\"label\\\":\\\"Map Marked\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111686,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\\\"}}},\\\"map-marked-alt\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"address\\\",\\\"coordinates\\\",\\\"destination\\\",\\\"gps\\\",\\\"localize\\\",\\\"location\\\",\\\"map\\\",\\\"paper\\\",\\\"pin\\\",\\\"place\\\",\\\"point of interest\\\",\\\"position\\\",\\\"route\\\",\\\"travel\\\",\\\"where\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5a0\\\",\\\"label\\\":\\\"Map Marked-alt\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111685,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\\\"}}},\\\"map-marker\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"address\\\",\\\"coordinates\\\",\\\"gps\\\",\\\"localize\\\",\\\"location\\\",\\\"map\\\",\\\"pin\\\",\\\"place\\\",\\\"position\\\",\\\"travel\\\",\\\"where\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f041\\\",\\\"label\\\":\\\"map-marker\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\\\"}}},\\\"map-marker-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"address\\\",\\\"coordinates\\\",\\\"gps\\\",\\\"localize\\\",\\\"location\\\",\\\"map\\\",\\\"pin\\\",\\\"place\\\",\\\"position\\\",\\\"travel\\\",\\\"where\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3c5\\\",\\\"label\\\":\\\"Alternate Map Marker\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\\\"}}},\\\"map-pin\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"address\\\",\\\"coordinates\\\",\\\"gps\\\",\\\"localize\\\",\\\"location\\\",\\\"map\\\",\\\"marker\\\",\\\"place\\\",\\\"position\\\",\\\"travel\\\",\\\"where\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f276\\\",\\\"label\\\":\\\"Map Pin\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831536,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 288 512\\\\\\\"><path d=\\\\\\\"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"288\\\",\\\"512\\\"],\\\"width\\\":288,\\\"height\\\":512,\\\"path\\\":\\\"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\\\"}}},\\\"map-signs\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f277\\\",\\\"label\\\":\\\"Map Signs\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831537,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\\\"}}},\\\"markdown\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f60f\\\",\\\"label\\\":\\\"Markdown\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1532362831425,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M593.85 452.92H46.15C20.7 452.92 0 432.22 0 406.77V105.23c0-25.45 20.7-46.15 46.15-46.15h547.69c25.45 0 46.15 20.7 46.15 46.15v301.54c.01 25.45-20.69 46.15-46.14 46.15zm-440-92.3v-120l61.54 76.92 61.54-76.92v120h61.54V151.38h-61.54l-61.54 76.92-61.54-76.92H92.31v209.23h61.54zM566.15 256h-61.54V151.38h-61.54V256h-61.54l92.31 107.69L566.15 256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M593.85 452.92H46.15C20.7 452.92 0 432.22 0 406.77V105.23c0-25.45 20.7-46.15 46.15-46.15h547.69c25.45 0 46.15 20.7 46.15 46.15v301.54c.01 25.45-20.69 46.15-46.14 46.15zm-440-92.3v-120l61.54 76.92 61.54-76.92v120h61.54V151.38h-61.54l-61.54 76.92-61.54-76.92H92.31v209.23h61.54zM566.15 256h-61.54V151.38h-61.54V256h-61.54l92.31 107.69L566.15 256z\\\"}}},\\\"marker\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"edit\\\",\\\"sharpie\\\",\\\"update\\\",\\\"write\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5a1\\\",\\\"label\\\":\\\"Marker\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111687,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\\\"}}},\\\"mars\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"male\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f222\\\",\\\"label\\\":\\\"Mars\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\"}}},\\\"mars-double\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f227\\\",\\\"label\\\":\\\"Mars Double\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\\\"}}},\\\"mars-stroke\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f229\\\",\\\"label\\\":\\\"Mars Stroke\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\"}}},\\\"mars-stroke-h\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f22b\\\",\\\"label\\\":\\\"Mars Stroke Horizontal\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 480 512\\\\\\\"><path d=\\\\\\\"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"480\\\",\\\"512\\\"],\\\"width\\\":480,\\\"height\\\":512,\\\"path\\\":\\\"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\\\"}}},\\\"mars-stroke-v\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f22a\\\",\\\"label\\\":\\\"Mars Stroke Vertical\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 288 512\\\\\\\"><path d=\\\\\\\"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"288\\\",\\\"512\\\"],\\\"width\\\":288,\\\"height\\\":512,\\\"path\\\":\\\"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\\\"}}},\\\"mastodon\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4f6\\\",\\\"label\\\":\\\"Mastodon\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365020,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 417.8 512\\\\\\\"><path d=\\\\\\\"M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"417.8\\\",\\\"512\\\"],\\\"width\\\":417,\\\"height\\\":512,\\\"path\\\":\\\"M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z\\\"}}},\\\"maxcdn\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f136\\\",\\\"label\\\":\\\"MaxCDN\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z\\\"}}},\\\"medal\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5a2\\\",\\\"label\\\":\\\"Medal\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111687,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\\\"}}},\\\"medapps\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3c6\\\",\\\"label\\\":\\\"MedApps\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821386,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z\\\"}}},\\\"medium\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f23a\\\",\\\"label\\\":\\\"Medium\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821387,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z\\\"}}},\\\"medium-m\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3c7\\\",\\\"label\\\":\\\"Medium M\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821386,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z\\\"}}},\\\"medkit\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"first aid\\\",\\\"firstaid\\\",\\\"health\\\",\\\"help\\\",\\\"support\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0fa\\\",\\\"label\\\":\\\"medkit\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\\\"}}},\\\"medrt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3c8\\\",\\\"label\\\":\\\"MRT\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 544 512\\\\\\\"><path d=\\\\\\\"M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"544\\\",\\\"512\\\"],\\\"width\\\":544,\\\"height\\\":512,\\\"path\\\":\\\"M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z\\\"}}},\\\"meetup\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2e0\\\",\\\"label\\\":\\\"Meetup\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z\\\"}}},\\\"megaport\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5a3\\\",\\\"label\\\":\\\"Megaport\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529520111564,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111.04 8 0 119.04 0 256c0 136.97 111.04 248 248 248 136.96 0 248-111.03 248-248C496 119.04 384.96 8 248 8zm85.46 267.67l59.66 59.67v87.05l-26.07 19.23L341 422.39v-65.46l-33.44-33.44-33.44 33.44v65.46L248 441.62l-26.12-19.23v-65.46l-33.44-33.44L155 356.92v65.46l-26.07 19.23-26.06-19.23v-87.05l59.47-59.47V188l59.5-59.5V52.88l26.06-19.23 26.06 19.23v75.64l59.5 59.5m-85.56-11.86l33.44 33.44V276L248 309.33l-33.54-33.54v-66.2l33.44-33.43z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111.04 8 0 119.04 0 256c0 136.97 111.04 248 248 248 136.96 0 248-111.03 248-248C496 119.04 384.96 8 248 8zm85.46 267.67l59.66 59.67v87.05l-26.07 19.23L341 422.39v-65.46l-33.44-33.44-33.44 33.44v65.46L248 441.62l-26.12-19.23v-65.46l-33.44-33.44L155 356.92v65.46l-26.07 19.23-26.06-19.23v-87.05l59.47-59.47V188l59.5-59.5V52.88l26.06-19.23 26.06 19.23v75.64l59.5 59.5m-85.56-11.86l33.44 33.44V276L248 309.33l-33.54-33.54v-66.2l33.44-33.43z\\\"}}},\\\"meh\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\",\\\"5.0.9\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"neutral\\\",\\\"rating\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f11a\\\",\\\"label\\\":\\\"Neutral Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111688,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1522083406006,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z\\\"}}},\\\"meh-blank\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"neutral\\\",\\\"rating\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f5a4\\\",\\\"label\\\":\\\"Face Without Mouth\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111688,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111627,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-280c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\\\"}}},\\\"meh-rolling-eyes\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"neutral\\\",\\\"rating\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f5a5\\\",\\\"label\\\":\\\"Face With Rolling Eyes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111688,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111627,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm88-304c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40 0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40zm-104-40c0-39.8-32.2-72-72-72s-72 32.2-72 72 32.2 72 72 72 72-32.2 72-72zm-112 0c0-13.6 7.3-25.1 17.7-32.3-1 2.6-1.7 5.3-1.7 8.3 0 13.3 10.7 24 24 24s24-10.7 24-24c0-2.9-.7-5.7-1.7-8.3 10.4 7.2 17.7 18.7 17.7 32.3 0 22.1-17.9 40-40 40s-40-17.9-40-40zm192 128H184c-13.2 0-24 10.8-24 24s10.8 24 24 24h128c13.2 0 24-10.8 24-24s-10.8-24-24-24z\\\"}}},\\\"memory\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"DIMM\\\",\\\"RAM\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f538\\\",\\\"label\\\":\\\"Memory\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154570,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\\\"}}},\\\"mercury\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"transgender\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f223\\\",\\\"label\\\":\\\"Mercury\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 288 512\\\\\\\"><path d=\\\\\\\"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"288\\\",\\\"512\\\"],\\\"width\\\":288,\\\"height\\\":512,\\\"path\\\":\\\"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\\\"}}},\\\"microchip\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cpu\\\",\\\"processor\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2db\\\",\\\"label\\\":\\\"Microchip\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\\\"}}},\\\"microphone\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"record\\\",\\\"sound\\\",\\\"voice\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f130\\\",\\\"label\\\":\\\"microphone\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154572,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 352 512\\\\\\\"><path d=\\\\\\\"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"352\\\",\\\"512\\\"],\\\"width\\\":352,\\\"height\\\":512,\\\"path\\\":\\\"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\\\"}}},\\\"microphone-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"record\\\",\\\"sound\\\",\\\"voice\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3c9\\\",\\\"label\\\":\\\"Alternate Microphone\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154571,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 352 512\\\\\\\"><path d=\\\\\\\"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"352\\\",\\\"512\\\"],\\\"width\\\":352,\\\"height\\\":512,\\\"path\\\":\\\"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\\\"}}},\\\"microphone-alt-slash\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"disable\\\",\\\"mute\\\",\\\"record\\\",\\\"sound\\\",\\\"voice\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f539\\\",\\\"label\\\":\\\"Alternate Microphone Slash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154571,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\\\"}}},\\\"microphone-slash\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"disable\\\",\\\"mute\\\",\\\"record\\\",\\\"sound\\\",\\\"voice\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f131\\\",\\\"label\\\":\\\"Microphone Slash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154571,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\\\"}}},\\\"microscope\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f610\\\",\\\"label\\\":\\\"Microscope\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831537,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\\\"}}},\\\"microsoft\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3ca\\\",\\\"label\\\":\\\"Microsoft\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1504646588000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z\\\"}}},\\\"minus\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"collapse\\\",\\\"delete\\\",\\\"hide\\\",\\\"hide\\\",\\\"minify\\\",\\\"remove\\\",\\\"trash\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f068\\\",\\\"label\\\":\\\"minus\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154572,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\\\"}}},\\\"minus-circle\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"delete\\\",\\\"hide\\\",\\\"remove\\\",\\\"trash\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f056\\\",\\\"label\\\":\\\"Minus Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\\\"}}},\\\"minus-square\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"collapse\\\",\\\"delete\\\",\\\"hide\\\",\\\"hide\\\",\\\"minify\\\",\\\"remove\\\",\\\"trash\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f146\\\",\\\"label\\\":\\\"Minus Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\"}}},\\\"mix\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3cb\\\",\\\"label\\\":\\\"Mix\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426581999,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z\\\"}}},\\\"mixcloud\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f289\\\",\\\"label\\\":\\\"Mixcloud\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z\\\"}}},\\\"mizuni\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3cc\\\",\\\"label\\\":\\\"Mizuni\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z\\\"}}},\\\"mobile\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"apple\\\",\\\"call\\\",\\\"cell phone\\\",\\\"cellphone\\\",\\\"device\\\",\\\"iphone\\\",\\\"number\\\",\\\"screen\\\",\\\"telephone\\\",\\\"text\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f10b\\\",\\\"label\\\":\\\"Mobile Phone\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"}}},\\\"mobile-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"apple\\\",\\\"call\\\",\\\"cell phone\\\",\\\"cellphone\\\",\\\"device\\\",\\\"iphone\\\",\\\"number\\\",\\\"screen\\\",\\\"telephone\\\",\\\"text\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3cd\\\",\\\"label\\\":\\\"Alternate Mobile\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\\\"}}},\\\"modx\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f285\\\",\\\"label\\\":\\\"MODX\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z\\\"}}},\\\"monero\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3d0\\\",\\\"label\\\":\\\"Monero\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z\\\"}}},\\\"money-bill\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"buy\\\",\\\"cash\\\",\\\"checkout\\\",\\\"money\\\",\\\"payment\\\",\\\"price\\\",\\\"purchase\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0d6\\\",\\\"label\\\":\\\"Money Bill\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154573,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\\\"}}},\\\"money-bill-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"buy\\\",\\\"cash\\\",\\\"checkout\\\",\\\"money\\\",\\\"payment\\\",\\\"price\\\",\\\"purchase\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f3d1\\\",\\\"label\\\":\\\"Alternate Money Bill\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154572,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1525967154554,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M320 144c-53.02 0-96 50.14-96 112 0 61.85 42.98 112 96 112 53 0 96-50.13 96-112 0-61.86-42.98-112-96-112zm40 168c0 4.42-3.58 8-8 8h-64c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h16v-55.44l-.47.31a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09l15.33-10.22a23.99 23.99 0 0 1 13.31-4.03H328c4.42 0 8 3.58 8 8v88h16c4.42 0 8 3.58 8 8v16zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zm-16 272c-35.35 0-64 28.65-64 64H112c0-35.35-28.65-64-64-64V176c35.35 0 64-28.65 64-64h416c0 35.35 28.65 64 64 64v160z\\\"}}},\\\"money-bill-wave\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f53a\\\",\\\"label\\\":\\\"Wavy Money Bill\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154573,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\\\"}}},\\\"money-bill-wave-alt\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f53b\\\",\\\"label\\\":\\\"Alternate Wavy Money Bill\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154573,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\\\"}}},\\\"money-check\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bank check\\\",\\\"cheque\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f53c\\\",\\\"label\\\":\\\"Money Check\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154574,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\\\"}}},\\\"money-check-alt\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bank check\\\",\\\"cheque\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f53d\\\",\\\"label\\\":\\\"Alternate Money Check\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154574,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\\\"}}},\\\"monument\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"building\\\",\\\"historic\\\",\\\"memoroable\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5a6\\\",\\\"label\\\":\\\"Monument\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111689,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\\\"}}},\\\"moon\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"contrast\\\",\\\"darker\\\",\\\"night\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f186\\\",\\\"label\\\":\\\"Moon\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502810244000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502810244000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z\\\"}}},\\\"mortar-pestle\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"crush\\\",\\\"culinary\\\",\\\"grind\\\",\\\"medical\\\",\\\"mix\\\",\\\"spices\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5a7\\\",\\\"label\\\":\\\"Mortar Pestle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111689,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\\\"}}},\\\"motorcycle\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bike\\\",\\\"machine\\\",\\\"transportation\\\",\\\"vehicle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f21c\\\",\\\"label\\\":\\\"Motorcycle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M512.949 192.003c-14.862-.108-29.14 2.322-42.434 6.874L437.589 144H520c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24h-45.311a24 24 0 0 0-17.839 7.945l-37.496 41.663-22.774-37.956A24 24 0 0 0 376 64h-80c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h66.411l19.2 32H227.904c-17.727-23.073-44.924-40-99.904-40H72.54c-13.455 0-24.791 11.011-24.536 24.464C48.252 141.505 58.9 152 72 152h56c24.504 0 38.686 10.919 47.787 24.769l-11.291 20.529c-13.006-3.865-26.871-5.736-41.251-5.21C55.857 194.549 1.565 249.605.034 317.021-1.603 389.076 56.317 448 128 448c59.642 0 109.744-40.794 123.953-96h84.236c13.673 0 24.589-11.421 23.976-25.077-2.118-47.12 17.522-93.665 56.185-125.026l12.485 20.808c-27.646 23.654-45.097 58.88-44.831 98.179.47 69.556 57.203 126.452 126.758 127.11 71.629.678 129.839-57.487 129.234-129.099-.588-69.591-57.455-126.386-127.047-126.892zM128 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c4.242 0 8.405.341 12.469.982L98.97 316.434C90.187 332.407 101.762 352 120 352h81.297c-12.37 28.225-40.56 48-73.297 48zm388.351-.116C470.272 402.337 432 365.554 432 320c0-21.363 8.434-40.781 22.125-55.144l49.412 82.352c4.546 7.577 14.375 10.034 21.952 5.488l13.72-8.232c7.577-4.546 10.034-14.375 5.488-21.952l-48.556-80.927A80.005 80.005 0 0 1 512 240c45.554 0 82.338 38.273 79.884 84.352-2.16 40.558-34.974 73.372-75.533 75.532z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M512.949 192.003c-14.862-.108-29.14 2.322-42.434 6.874L437.589 144H520c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24h-45.311a24 24 0 0 0-17.839 7.945l-37.496 41.663-22.774-37.956A24 24 0 0 0 376 64h-80c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h66.411l19.2 32H227.904c-17.727-23.073-44.924-40-99.904-40H72.54c-13.455 0-24.791 11.011-24.536 24.464C48.252 141.505 58.9 152 72 152h56c24.504 0 38.686 10.919 47.787 24.769l-11.291 20.529c-13.006-3.865-26.871-5.736-41.251-5.21C55.857 194.549 1.565 249.605.034 317.021-1.603 389.076 56.317 448 128 448c59.642 0 109.744-40.794 123.953-96h84.236c13.673 0 24.589-11.421 23.976-25.077-2.118-47.12 17.522-93.665 56.185-125.026l12.485 20.808c-27.646 23.654-45.097 58.88-44.831 98.179.47 69.556 57.203 126.452 126.758 127.11 71.629.678 129.839-57.487 129.234-129.099-.588-69.591-57.455-126.386-127.047-126.892zM128 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c4.242 0 8.405.341 12.469.982L98.97 316.434C90.187 332.407 101.762 352 120 352h81.297c-12.37 28.225-40.56 48-73.297 48zm388.351-.116C470.272 402.337 432 365.554 432 320c0-21.363 8.434-40.781 22.125-55.144l49.412 82.352c4.546 7.577 14.375 10.034 21.952 5.488l13.72-8.232c7.577-4.546 10.034-14.375 5.488-21.952l-48.556-80.927A80.005 80.005 0 0 1 512 240c45.554 0 82.338 38.273 79.884 84.352-2.16 40.558-34.974 73.372-75.533 75.532z\\\"}}},\\\"mouse-pointer\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"select\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f245\\\",\\\"label\\\":\\\"Mouse Pointer\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\\\"}}},\\\"music\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"note\\\",\\\"sound\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f001\\\",\\\"label\\\":\\\"Music\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831538,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M511.99 32.01c0-21.71-21.1-37.01-41.6-30.51L150.4 96c-13.3 4.2-22.4 16.5-22.4 30.5v261.42c-10.05-2.38-20.72-3.92-32-3.92-53.02 0-96 28.65-96 64s42.98 64 96 64 96-28.65 96-64V214.31l256-75.02v184.63c-10.05-2.38-20.72-3.92-32-3.92-53.02 0-96 28.65-96 64s42.98 64 96 64 96-28.65 96-64l-.01-351.99z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M511.99 32.01c0-21.71-21.1-37.01-41.6-30.51L150.4 96c-13.3 4.2-22.4 16.5-22.4 30.5v261.42c-10.05-2.38-20.72-3.92-32-3.92-53.02 0-96 28.65-96 64s42.98 64 96 64 96-28.65 96-64V214.31l256-75.02v184.63c-10.05-2.38-20.72-3.92-32-3.92-53.02 0-96 28.65-96 64s42.98 64 96 64 96-28.65 96-64l-.01-351.99z\\\"}}},\\\"napster\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3d2\\\",\\\"label\\\":\\\"Napster\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z\\\"}}},\\\"neos\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f612\\\",\\\"label\\\":\\\"Neos\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1532362831425,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 456.38 512\\\\\\\"><path d=\\\\\\\"M387.44 512h-95.11L184.12 357.46v91.1L97.69 512H0V29.82L40.47 0h108.05l123.74 176.13V63.45L358.69 0h97.69v461.5L387.44 512zM10.77 35.27v460.72l72.01-52.88V193.95l215.49 307.69h84.79l52.35-38.17h-78.27L40.96 12.98 10.77 35.27zm82.54 466.61l80.04-58.78V342.06L93.55 227.7v220.94l-72.58 53.25h72.34zM52.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L142.91 10.77H52.63zm230.4 180.88l72.01 102.81V15.93l-72.01 52.96v122.76z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"456.38\\\",\\\"512\\\"],\\\"width\\\":456,\\\"height\\\":512,\\\"path\\\":\\\"M387.44 512h-95.11L184.12 357.46v91.1L97.69 512H0V29.82L40.47 0h108.05l123.74 176.13V63.45L358.69 0h97.69v461.5L387.44 512zM10.77 35.27v460.72l72.01-52.88V193.95l215.49 307.69h84.79l52.35-38.17h-78.27L40.96 12.98 10.77 35.27zm82.54 466.61l80.04-58.78V342.06L93.55 227.7v220.94l-72.58 53.25h72.34zM52.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L142.91 10.77H52.63zm230.4 180.88l72.01 102.81V15.93l-72.01 52.96v122.76z\\\"}}},\\\"neuter\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f22c\\\",\\\"label\\\":\\\"Neuter\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 288 512\\\\\\\"><path d=\\\\\\\"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"288\\\",\\\"512\\\"],\\\"width\\\":288,\\\"height\\\":512,\\\"path\\\":\\\"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\"}}},\\\"newspaper\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"article\\\",\\\"press\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1ea\\\",\\\"label\\\":\\\"Newspaper\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M552 64H112c-20.858 0-38.643 13.377-45.248 32H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h496c13.255 0 24-10.745 24-24V88c0-13.255-10.745-24-24-24zM48 392V144h16v248c0 4.411-3.589 8-8 8s-8-3.589-8-8zm480 8H111.422c.374-2.614.578-5.283.578-8V112h416v288zM172 280h136c6.627 0 12-5.373 12-12v-96c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v96c0 6.627 5.373 12 12 12zm28-80h80v40h-80v-40zm-40 140v-24c0-6.627 5.373-12 12-12h136c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H172c-6.627 0-12-5.373-12-12zm192 0v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0-144v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12zm0 72v-24c0-6.627 5.373-12 12-12h104c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12H364c-6.627 0-12-5.373-12-12z\\\"}}},\\\"nimblr\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5a8\\\",\\\"label\\\":\\\"Nimblr\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529514897192,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 355.52 512\\\\\\\"><path d=\\\\\\\"M232.6 299.29c15.57 0 27.15 11.46 27.15 26.96 0 15.55-11.62 26.96-27.15 26.96-15.7 0-27.15-11.57-27.15-26.96 0-15.51 11.58-26.96 27.15-26.96zM99.01 326.25c0-15.61 11.68-26.96 27.15-26.96 15.57 0 27.15 11.46 27.15 26.96 0 15.41-11.47 26.96-27.15 26.96-15.44 0-27.15-11.31-27.15-26.96m78.75-167.3C143 158.95 75.45 178.77 45.25 227L0 0v335.48C0 433.13 79.61 512 177.76 512c98.24 0 177.76-78.95 177.76-176.52 0-97.46-79.39-176.53-177.76-176.53zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59 0-72.68 59.24-131.59 132.51-131.59 73.27 0 132.51 58.91 132.51 131.59s-59.25 131.59-132.51 131.59z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"355.52\\\",\\\"512\\\"],\\\"width\\\":355,\\\"height\\\":512,\\\"path\\\":\\\"M232.6 299.29c15.57 0 27.15 11.46 27.15 26.96 0 15.55-11.62 26.96-27.15 26.96-15.7 0-27.15-11.57-27.15-26.96 0-15.51 11.58-26.96 27.15-26.96zM99.01 326.25c0-15.61 11.68-26.96 27.15-26.96 15.57 0 27.15 11.46 27.15 26.96 0 15.41-11.47 26.96-27.15 26.96-15.44 0-27.15-11.31-27.15-26.96m78.75-167.3C143 158.95 75.45 178.77 45.25 227L0 0v335.48C0 433.13 79.61 512 177.76 512c98.24 0 177.76-78.95 177.76-176.52 0-97.46-79.39-176.53-177.76-176.53zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59 0-72.68 59.24-131.59 132.51-131.59 73.27 0 132.51 58.91 132.51 131.59s-59.25 131.59-132.51 131.59z\\\"}}},\\\"nintendo-switch\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f418\\\",\\\"label\\\":\\\"Nintendo Switch\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M95.9 33.5c-44.6 8-80.5 41-91.8 84.4C0 133.6-.3 142.8.2 264.4.4 376 .5 378.6 2.4 387.3c10.3 46.5 43.3 79.6 90.3 90.5 6.1 1.4 13.9 1.7 64.1 1.9 51.9.4 57.3.3 58.7-1.1 1.4-1.4 1.5-19.3 1.5-222.2 0-150.5-.3-221.3-.9-222.6-.9-1.7-2.5-1.8-56.9-1.7-44.2.1-57.5.4-63.3 1.4zm83.9 222.6V444l-37.8-.5c-34.8-.4-38.5-.6-45.5-2.3-29.9-7.7-52-30.7-58.3-60.7-2-9.4-2-240.1-.1-249.3 5.6-26.1 23.7-47.7 48-57.4 12.2-4.9 17.9-5.5 57.6-5.6l35.9-.1v188zm-75.9-131.2c-5.8 1.1-14.7 5.6-19.5 9.7-9.7 8.4-14.6 20.4-13.8 34.5.4 7.3.8 9.3 3.8 15.2 4.4 9 10.9 15.6 19.9 20 6.2 3.1 7.8 3.4 15.9 3.7 7.3.3 9.9 0 14.8-1.7 20.1-6.8 32.3-26.3 28.8-46.4-3.9-23.7-26.6-39.7-49.9-35zm158.2-92.3c-.4.3-.6 100.8-.6 223.5 0 202.3.1 222.8 1.5 223.4 2.5.9 74.5.6 83.4-.4 37.7-4.3 71-27.2 89-61.2 2.3-4.4 5.4-11.7 7-16.2 5.8-17.4 5.7-12.8 5.7-146.1 0-106.4-.2-122.3-1.5-129-9.2-48.3-46.1-84.8-94.5-93.1-6.5-1.1-16.5-1.4-48.8-1.4-22.4-.1-40.9.2-41.2.5zm99.1 202.1c14.5 3.8 26.3 14.8 31.2 28.9 3.1 8.7 3 21.5-.1 29.5-5.7 14.7-16.8 25-31.1 28.8-23.2 6-47.9-8-54.6-31-2-7-1.9-18.9.4-26.2 6.9-22.7 31-36.1 54.2-30z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M95.9 33.5c-44.6 8-80.5 41-91.8 84.4C0 133.6-.3 142.8.2 264.4.4 376 .5 378.6 2.4 387.3c10.3 46.5 43.3 79.6 90.3 90.5 6.1 1.4 13.9 1.7 64.1 1.9 51.9.4 57.3.3 58.7-1.1 1.4-1.4 1.5-19.3 1.5-222.2 0-150.5-.3-221.3-.9-222.6-.9-1.7-2.5-1.8-56.9-1.7-44.2.1-57.5.4-63.3 1.4zm83.9 222.6V444l-37.8-.5c-34.8-.4-38.5-.6-45.5-2.3-29.9-7.7-52-30.7-58.3-60.7-2-9.4-2-240.1-.1-249.3 5.6-26.1 23.7-47.7 48-57.4 12.2-4.9 17.9-5.5 57.6-5.6l35.9-.1v188zm-75.9-131.2c-5.8 1.1-14.7 5.6-19.5 9.7-9.7 8.4-14.6 20.4-13.8 34.5.4 7.3.8 9.3 3.8 15.2 4.4 9 10.9 15.6 19.9 20 6.2 3.1 7.8 3.4 15.9 3.7 7.3.3 9.9 0 14.8-1.7 20.1-6.8 32.3-26.3 28.8-46.4-3.9-23.7-26.6-39.7-49.9-35zm158.2-92.3c-.4.3-.6 100.8-.6 223.5 0 202.3.1 222.8 1.5 223.4 2.5.9 74.5.6 83.4-.4 37.7-4.3 71-27.2 89-61.2 2.3-4.4 5.4-11.7 7-16.2 5.8-17.4 5.7-12.8 5.7-146.1 0-106.4-.2-122.3-1.5-129-9.2-48.3-46.1-84.8-94.5-93.1-6.5-1.1-16.5-1.4-48.8-1.4-22.4-.1-40.9.2-41.2.5zm99.1 202.1c14.5 3.8 26.3 14.8 31.2 28.9 3.1 8.7 3 21.5-.1 29.5-5.7 14.7-16.8 25-31.1 28.8-23.2 6-47.9-8-54.6-31-2-7-1.9-18.9.4-26.2 6.9-22.7 31-36.1 54.2-30z\\\"}}},\\\"node\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f419\\\",\\\"label\\\":\\\"Node.js\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1507669930674,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z\\\"}}},\\\"node-js\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3d3\\\",\\\"label\\\":\\\"Node.js JS\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426582000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z\\\"}}},\\\"not-equal\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f53e\\\",\\\"label\\\":\\\"Not Equal\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154574,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\\\"}}},\\\"notes-medical\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f481\\\",\\\"label\\\":\\\"Medical Notes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821454,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\\\"}}},\\\"npm\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3d4\\\",\\\"label\\\":\\\"npm\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z\\\"}}},\\\"ns8\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3d5\\\",\\\"label\\\":\\\"NS8\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1506111999000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M187.1 159.9l-34.2 113.7-54.5-113.7H49L0 320h44.9L76 213.5 126.6 320h56.9L232 159.9h-44.9zm452.5-.9c-2.9-18-23.9-28.1-42.1-31.3-44.6-7.8-101.9 16.3-88.5 58.8v.1c-43.8 8.7-74.3 26.8-94.2 48.2-3-9.8-13.6-16.6-34-16.6h-87.6c-9.3 0-12.9-2.3-11.5-7.4 1.6-5.5 1.9-6.8 3.7-12.2 2.1-6.4 7.8-7.1 13.3-7.1h133.5l9.7-31.5c-139.7 0-144.5-.5-160.1 1.2-12.3 1.3-23.5 4.8-30.6 15-6.8 9.9-14.4 35.6-17.6 47.1-5.4 19.4-.6 28.6 32.8 28.6h87.3c7.8 0 8.8 2.7 7.7 6.6-1.1 4.4-2.8 10-4.5 14.6-1.6 4.2-4.7 7.4-13.8 7.4H216.3L204.7 320c139.9 0 145.3-.6 160.9-2.3 6.6-.7 13-2.1 18.5-4.9.2 3.7.5 7.3 1.2 10.8 5.4 30.5 27.4 52.3 56.8 59.5 48.6 11.9 108.7-16.8 135.1-68 18.7-36.2 14.1-76.2-3.4-105.5h.1c29.6-5.9 70.3-22 65.7-50.6zM530.7 263.7c-5.9 29.5-36.6 47.8-61.6 43.9-30.9-4.8-38.5-39.5-14.1-64.8 16.2-16.8 45.2-24 68.5-26.9 6.7 14.1 10.3 32 7.2 47.8zm21.8-83.1c-4.2-6-9.8-18.5-2.5-26.3 6.7-7.2 20.9-10.1 31.8-7.7 15.3 3.4 19.7 15.9 4.9 24.4-10.7 6.1-23.6 8.1-34.2 9.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M187.1 159.9l-34.2 113.7-54.5-113.7H49L0 320h44.9L76 213.5 126.6 320h56.9L232 159.9h-44.9zm452.5-.9c-2.9-18-23.9-28.1-42.1-31.3-44.6-7.8-101.9 16.3-88.5 58.8v.1c-43.8 8.7-74.3 26.8-94.2 48.2-3-9.8-13.6-16.6-34-16.6h-87.6c-9.3 0-12.9-2.3-11.5-7.4 1.6-5.5 1.9-6.8 3.7-12.2 2.1-6.4 7.8-7.1 13.3-7.1h133.5l9.7-31.5c-139.7 0-144.5-.5-160.1 1.2-12.3 1.3-23.5 4.8-30.6 15-6.8 9.9-14.4 35.6-17.6 47.1-5.4 19.4-.6 28.6 32.8 28.6h87.3c7.8 0 8.8 2.7 7.7 6.6-1.1 4.4-2.8 10-4.5 14.6-1.6 4.2-4.7 7.4-13.8 7.4H216.3L204.7 320c139.9 0 145.3-.6 160.9-2.3 6.6-.7 13-2.1 18.5-4.9.2 3.7.5 7.3 1.2 10.8 5.4 30.5 27.4 52.3 56.8 59.5 48.6 11.9 108.7-16.8 135.1-68 18.7-36.2 14.1-76.2-3.4-105.5h.1c29.6-5.9 70.3-22 65.7-50.6zM530.7 263.7c-5.9 29.5-36.6 47.8-61.6 43.9-30.9-4.8-38.5-39.5-14.1-64.8 16.2-16.8 45.2-24 68.5-26.9 6.7 14.1 10.3 32 7.2 47.8zm21.8-83.1c-4.2-6-9.8-18.5-2.5-26.3 6.7-7.2 20.9-10.1 31.8-7.7 15.3 3.4 19.7 15.9 4.9 24.4-10.7 6.1-23.6 8.1-34.2 9.6z\\\"}}},\\\"nutritionix\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3d6\\\",\\\"label\\\":\\\"Nutritionix\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 400 512\\\\\\\"><path d=\\\\\\\"M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"400\\\",\\\"512\\\"],\\\"width\\\":400,\\\"height\\\":512,\\\"path\\\":\\\"M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z\\\"}}},\\\"object-group\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"design\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f247\\\",\\\"label\\\":\\\"Object Group\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M500 128c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v256H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V128h12zm-52-64h32v32h-32V64zM32 64h32v32H32V64zm32 384H32v-32h32v32zm416 0h-32v-32h32v32zm-40-64h-12c-6.627 0-12 5.373-12 12v12H96v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h320v12c0 6.627 5.373 12 12 12h12v256zm-36-192h-84v-52c0-6.628-5.373-12-12-12H108c-6.627 0-12 5.372-12 12v168c0 6.628 5.373 12 12 12h84v52c0 6.628 5.373 12 12 12h200c6.627 0 12-5.372 12-12V204c0-6.628-5.373-12-12-12zm-268-24h144v112H136V168zm240 176H232v-24h76c6.627 0 12-5.372 12-12v-76h56v112z\\\"}}},\\\"object-ungroup\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"design\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f248\\\",\\\"label\\\":\\\"Object Ungroup\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M564 224c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12h-88v-24h12c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-72c-6.627 0-12 5.373-12 12v12H96V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v72c0 6.627 5.373 12 12 12h12v160H12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h88v24h-12c-6.627 0-12 5.373-12 12v72c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12V224h12zM352 64h32v32h-32V64zm0 256h32v32h-32v-32zM64 352H32v-32h32v32zm0-256H32V64h32v32zm32 216v-12c0-6.627-5.373-12-12-12H72V128h12c6.627 0 12-5.373 12-12v-12h224v12c0 6.627 5.373 12 12 12h12v160h-12c-6.627 0-12 5.373-12 12v12H96zm128 136h-32v-32h32v32zm280-64h-12c-6.627 0-12 5.373-12 12v12H256v-12c0-6.627-5.373-12-12-12h-12v-24h88v12c0 6.627 5.373 12 12 12h72c6.627 0 12-5.373 12-12v-72c0-6.627-5.373-12-12-12h-12v-88h88v12c0 6.627 5.373 12 12 12h12v160zm40 64h-32v-32h32v32zm0-256h-32v-32h32v32z\\\"}}},\\\"odnoklassniki\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f263\\\",\\\"label\\\":\\\"Odnoklassniki\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z\\\"}}},\\\"odnoklassniki-square\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f264\\\",\\\"label\\\":\\\"Odnoklassniki Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z\\\"}}},\\\"oil-can\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f613\\\",\\\"label\\\":\\\"Oil Can\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831538,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\\\"}}},\\\"old-republic\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f510\\\",\\\"label\\\":\\\"Old Republic\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442522,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z\\\"}}},\\\"opencart\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f23d\\\",\\\"label\\\":\\\"OpenCart\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z\\\"}}},\\\"openid\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f19b\\\",\\\"label\\\":\\\"OpenID\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z\\\"}}},\\\"opera\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f26a\\\",\\\"label\\\":\\\"Opera\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z\\\"}}},\\\"optin-monster\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f23c\\\",\\\"label\\\":\\\"Optin Monster\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M550.671 450.303c0 11.62-15.673 19.457-32.158 14.863-12.16-3.243-31.346-17.565-36.211-27.294-5.674-11.62 4.054-32.698 18.916-30.806 15.674 1.621 49.453 25.401 49.453 43.237zM372.86 75.223c-3.783-72.151-100.796-79.718-125.928-23.51 44.588-24.321 90.257-15.673 125.928 23.51zM74.795 407.066c-15.673 1.621-49.452 25.401-49.452 43.237 0 11.62 15.673 19.457 32.157 14.863 12.16-3.243 31.076-17.565 35.94-27.294 5.946-11.62-3.782-32.698-18.645-30.806zm497.765 14.322c1.081 3.513 1.892 7.026 1.892 10.809.81 31.616-44.317 64.045-73.503 65.125-17.295.81-34.59-8.377-42.696-23.51-113.497 4.053-226.994 4.864-340.22 0-8.377 15.133-25.672 24.05-42.967 23.51-28.915-1.081-74.043-33.509-73.503-65.125.27-3.783.811-7.296 1.892-10.809-5.566-9.463-4.845-15.282 5.405-11.62 3.243-5.134 7.026-9.458 11.08-13.782-2.57-10.917 1.27-14.094 11.079-9.188 4.594-3.243 9.998-6.485 15.944-9.188 0-15.757 11.839-11.131 17.295-5.675 12.467-1.78 20.129.709 26.753 5.675v-19.726c-12.987 0-40.641-11.375-45.94-36.212-4.974-20.725 2.607-38.075 25.132-47.56.81-5.945 8.107-14.052 14.862-15.944 7.567-1.892 12.431 4.594 14.052 10.269 7.425 0 17.757 1.465 21.078 8.107 5.405-.541 11.079-1.352 16.484-1.892-2.432-1.892-5.134-3.513-8.107-4.594-5.134-8.917-13.782-11.079-24.591-11.62 0-.81 0-1.621.27-2.702-19.727-.541-44.048-5.675-54.857-17.835-21.321-23.638-15.935-83.577 12.16-103.498 8.377-5.675 21.618-.811 22.699 9.728 2.425 20.598.399 26.833 26.212 25.942 8.107-7.836 16.755-14.592 26.483-19.997-14.862-1.352-28.914 1.621-43.778 3.783 12.752-12.48 23.953-25.442 56.748-42.427 23.511-11.89 49.993-20.808 76.205-23.239-18.646-7.837-39.993-11.891-59.721-16.484 76.475-16.214 174.569-22.159 244.289 37.562 18.105 15.403 32.427 36.211 42.696 59.992 39.799 4.853 36.47-5.581 38.643-25.132 1.081-10.269 14.322-15.403 22.699-9.458 14.862 10.539 22.159 30.806 24.59 48.101 2.162 17.835.27 41.345-12.43 55.127-10.809 12.16-34.32 17.565-53.776 18.105v2.703c-11.08.27-20.268 2.432-25.673 11.62-2.972 1.081-5.674 2.703-8.377 4.594 5.675.54 11.35 1.351 16.755 1.891 1.869-5.619 12.535-8.377 21.077-8.377 1.621-5.405 6.756-11.89 14.052-10.269s14.052 9.998 14.863 15.944c10.809 4.324 22.159 12.16 25.131 25.672 1.892 8.107 1.621 15.133.27 21.888-5.726 25.262-33.361 36.212-45.939 36.212 0 6.756 0 13.241-.27 19.726 8.01-6.006 16.367-7.158 26.752-5.675 5.919-5.919 17.565-9.41 17.565 5.675 5.675 2.703 11.349 5.945 15.944 9.188 10.1-5.051 13.669-.539 10.809 9.188 4.053 4.323 8.107 8.917 11.079 13.782 10.136-3.62 11.021 2.078 5.409 11.62zm-73.773-254.016c17.295 6.756 26.212 22.159 30.265 35.67 1.081-10.539-2.702-39.453-13.782-51.073-7.296-7.296-14.052-5.134-14.052.81.001 6.216-1.35 11.62-2.431 14.593zm-18.646 12.43c12.971 15.673 17.024 41.615 12.7 62.963 10.809-2.162 20.537-6.215 26.212-12.16 1.892-2.162 3.783-4.864 4.864-7.566-1.081-21.348-10.269-42.697-29.725-48.912-3.242 3.243-9.187 4.864-14.051 5.675zm-21.889.811c7.567 20.537 12.431 42.696 14.322 64.585 3.513 0 7.567-.27 11.62-.811 5.945-24.321-.27-51.614-14.052-63.504-3.783 0-8.107 0-11.89-.27zM77.768 167.372c-1.081-2.973-2.432-8.377-2.432-14.593 0-5.945-7.026-8.107-14.052-.81-11.35 11.62-14.863 40.534-13.782 51.073 4.053-13.512 12.971-28.915 30.266-35.67zm5.675 75.394c-4.324-21.348-.27-47.291 12.701-62.963-4.865-.811-10.809-2.432-14.052-5.675-19.457 6.215-28.375 27.563-29.726 48.912 1.351 2.702 2.972 5.404 4.864 7.566 5.675 6.215 15.403 9.998 26.213 12.16zm41.345-61.073c-5.134 1.081-9.998 2.973-14.862 4.865l-12.16 5.134v-.27c-7.296 14.052-9.999 34.319-5.405 52.965 4.594.541 8.647.811 12.7.811 2.432-22.159 9.188-43.778 19.727-63.505zm88.095-23.239c0 42.155 34.319 76.205 76.205 76.205s76.205-34.05 76.205-76.205c0-41.886-34.319-75.935-76.205-75.935s-76.205 34.049-76.205 75.935zm152.41 97.283c9.969 50.608 3.299 64.692 16.484 58.099 15.944-8.107 22.699-39.183 22.97-57.019-12.971-.81-26.213-.81-39.454-1.08zm-71.611-.541v-.27c-.27 5.134.27 38.103 4.324 41.075 11.079 5.405 39.453 4.594 51.073 1.081 5.405-1.621 2.432-37.022 1.621-41.886-18.916-.27-38.102-.27-57.018 0zm-14.053 0v-.27c-19.456.27-38.642.27-57.829.811-1.892 9.187-4.594 48.911 1.892 51.614 12.971 5.675 41.616 5.134 54.586 1.621 4.595-2.432 2.433-45.399 1.351-53.776zm-85.662 57.56c5.405 2.432 8.647 2.432 9.728-4.324 1.892-8.647 2.432-36.752 4.865-52.155-12.16.27-24.591.811-36.752 1.621-5.405 19.727.27 45.129 22.159 54.858zm-65.666-11.08c43.778 47.02 92.689 85.663 155.923 106.47 67.558-19.186 115.659-59.991 163.219-107.011-11.095-4.315-7.715-10.363-7.296-11.62-8.918-.81-17.835-1.892-26.483-2.702-9.458 32.968-35.94 52.965-46.75 31.616-2.702-5.134-3.513-11.62-4.594-16.754-3.783 8.377-13.242 8.107-24.591 8.918-13.241 1.081-31.617 1.351-44.048-2.972-2.972 12.971-11.079 12.971-26.752 14.322-14.052 1.352-48.642 4.054-54.857-10.809-1.081 28.644-35.13 9.998-45.129-7.026-3.243-5.675-5.405-11.35-7.026-17.565-7.837.81-15.673 1.621-23.511 2.702 2.443 3.663 1.549 9.052-8.105 12.431zM115.6 453.545c-5.674-23.239-18.646-49.722-33.508-54.046-22.429-6.756-68.909 23.51-66.207 54.586 12.701 19.457 39.994 35.67 59.181 36.481 17.835.81 35.94-11.08 39.724-28.914.539-2.432.81-5.134.81-8.107zm7.296-5.944c33.509-19.457 69.179-35.671 105.931-47.02-38.643-20.537-68.098-47.831-97.283-77.016-2.162 1.352-5.134 2.432-7.836 3.513-1.637 4.91 8.718 5.33 5.405 12.431-2.162 4.054-8.648 7.567-15.133 9.188-2.161 2.702-5.134 4.864-7.836 6.485h-.27c-.27 13.511-.27 27.024.27 40.535 8.939 15.964 15.426 33.314 16.752 51.884zm320.764 12.7c-36.752-21.348-74.044-41.345-115.659-52.965-13.782 6.215-27.833 11.349-42.155 15.403-2.162.811-2.162.811-4.324 0-11.89-3.783-23.239-8.107-34.859-13.241-40.265 11.62-77.286 29.185-112.416 50.803h-.27v.27c.27 0 .27 0 .27-.27 103.227 4.054 206.455 3.513 309.413 0zm27.023-64.045l-.27.27c.541-13.782.811-27.563.811-41.345-2.973-1.621-5.675-4.054-8.107-6.756-6.485-1.351-12.971-5.134-15.133-8.918-1.892-4.053 1.351-7.566 5.945-10.269-.27-.541-.541-1.621-.541-2.432-2.972-.811-5.405-1.892-7.567-3.243-31.616 29.455-65.396 56.749-103.498 76.746 38.914 11.62 75.935 28.104 111.875 47.561 1.05-14.692 7.231-35.749 16.485-51.614zm23.24 3.244c-14.593 4.323-27.834 30.806-33.509 54.046 0 23.826 21.278 37.897 40.534 37.022 19.186-.811 46.48-17.024 59.181-36.481 2.973-31.077-43.507-61.344-66.206-54.587zM290.709 134.133c.045 0 .089.003.134.003.046 0 .09-.003.136-.003h-.27zm0 96.743c28.645 0 51.884-21.618 51.884-48.371 0-36.092-40.507-58.079-72.151-44.318 9.458 2.972 16.484 11.62 16.484 21.618 0 23.257-33.291 31.955-46.48 11.35-7.297 34.067 19.368 59.721 50.263 59.721zM68.039 474.083c.54 6.486 12.16 12.701 21.618 9.458 6.756-2.703 14.593-10.539 17.295-16.214 2.973-7.026-1.081-19.997-9.728-18.375-8.917 1.621-29.725 16.754-29.185 25.131zm410.75-25.131c-8.377-1.621-12.431 11.349-9.458 18.375 2.432 5.675 10.269 13.511 17.295 16.214 9.187 3.243 21.078-2.972 21.348-9.458.811-8.377-20.267-23.51-29.185-25.131z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M550.671 450.303c0 11.62-15.673 19.457-32.158 14.863-12.16-3.243-31.346-17.565-36.211-27.294-5.674-11.62 4.054-32.698 18.916-30.806 15.674 1.621 49.453 25.401 49.453 43.237zM372.86 75.223c-3.783-72.151-100.796-79.718-125.928-23.51 44.588-24.321 90.257-15.673 125.928 23.51zM74.795 407.066c-15.673 1.621-49.452 25.401-49.452 43.237 0 11.62 15.673 19.457 32.157 14.863 12.16-3.243 31.076-17.565 35.94-27.294 5.946-11.62-3.782-32.698-18.645-30.806zm497.765 14.322c1.081 3.513 1.892 7.026 1.892 10.809.81 31.616-44.317 64.045-73.503 65.125-17.295.81-34.59-8.377-42.696-23.51-113.497 4.053-226.994 4.864-340.22 0-8.377 15.133-25.672 24.05-42.967 23.51-28.915-1.081-74.043-33.509-73.503-65.125.27-3.783.811-7.296 1.892-10.809-5.566-9.463-4.845-15.282 5.405-11.62 3.243-5.134 7.026-9.458 11.08-13.782-2.57-10.917 1.27-14.094 11.079-9.188 4.594-3.243 9.998-6.485 15.944-9.188 0-15.757 11.839-11.131 17.295-5.675 12.467-1.78 20.129.709 26.753 5.675v-19.726c-12.987 0-40.641-11.375-45.94-36.212-4.974-20.725 2.607-38.075 25.132-47.56.81-5.945 8.107-14.052 14.862-15.944 7.567-1.892 12.431 4.594 14.052 10.269 7.425 0 17.757 1.465 21.078 8.107 5.405-.541 11.079-1.352 16.484-1.892-2.432-1.892-5.134-3.513-8.107-4.594-5.134-8.917-13.782-11.079-24.591-11.62 0-.81 0-1.621.27-2.702-19.727-.541-44.048-5.675-54.857-17.835-21.321-23.638-15.935-83.577 12.16-103.498 8.377-5.675 21.618-.811 22.699 9.728 2.425 20.598.399 26.833 26.212 25.942 8.107-7.836 16.755-14.592 26.483-19.997-14.862-1.352-28.914 1.621-43.778 3.783 12.752-12.48 23.953-25.442 56.748-42.427 23.511-11.89 49.993-20.808 76.205-23.239-18.646-7.837-39.993-11.891-59.721-16.484 76.475-16.214 174.569-22.159 244.289 37.562 18.105 15.403 32.427 36.211 42.696 59.992 39.799 4.853 36.47-5.581 38.643-25.132 1.081-10.269 14.322-15.403 22.699-9.458 14.862 10.539 22.159 30.806 24.59 48.101 2.162 17.835.27 41.345-12.43 55.127-10.809 12.16-34.32 17.565-53.776 18.105v2.703c-11.08.27-20.268 2.432-25.673 11.62-2.972 1.081-5.674 2.703-8.377 4.594 5.675.54 11.35 1.351 16.755 1.891 1.869-5.619 12.535-8.377 21.077-8.377 1.621-5.405 6.756-11.89 14.052-10.269s14.052 9.998 14.863 15.944c10.809 4.324 22.159 12.16 25.131 25.672 1.892 8.107 1.621 15.133.27 21.888-5.726 25.262-33.361 36.212-45.939 36.212 0 6.756 0 13.241-.27 19.726 8.01-6.006 16.367-7.158 26.752-5.675 5.919-5.919 17.565-9.41 17.565 5.675 5.675 2.703 11.349 5.945 15.944 9.188 10.1-5.051 13.669-.539 10.809 9.188 4.053 4.323 8.107 8.917 11.079 13.782 10.136-3.62 11.021 2.078 5.409 11.62zm-73.773-254.016c17.295 6.756 26.212 22.159 30.265 35.67 1.081-10.539-2.702-39.453-13.782-51.073-7.296-7.296-14.052-5.134-14.052.81.001 6.216-1.35 11.62-2.431 14.593zm-18.646 12.43c12.971 15.673 17.024 41.615 12.7 62.963 10.809-2.162 20.537-6.215 26.212-12.16 1.892-2.162 3.783-4.864 4.864-7.566-1.081-21.348-10.269-42.697-29.725-48.912-3.242 3.243-9.187 4.864-14.051 5.675zm-21.889.811c7.567 20.537 12.431 42.696 14.322 64.585 3.513 0 7.567-.27 11.62-.811 5.945-24.321-.27-51.614-14.052-63.504-3.783 0-8.107 0-11.89-.27zM77.768 167.372c-1.081-2.973-2.432-8.377-2.432-14.593 0-5.945-7.026-8.107-14.052-.81-11.35 11.62-14.863 40.534-13.782 51.073 4.053-13.512 12.971-28.915 30.266-35.67zm5.675 75.394c-4.324-21.348-.27-47.291 12.701-62.963-4.865-.811-10.809-2.432-14.052-5.675-19.457 6.215-28.375 27.563-29.726 48.912 1.351 2.702 2.972 5.404 4.864 7.566 5.675 6.215 15.403 9.998 26.213 12.16zm41.345-61.073c-5.134 1.081-9.998 2.973-14.862 4.865l-12.16 5.134v-.27c-7.296 14.052-9.999 34.319-5.405 52.965 4.594.541 8.647.811 12.7.811 2.432-22.159 9.188-43.778 19.727-63.505zm88.095-23.239c0 42.155 34.319 76.205 76.205 76.205s76.205-34.05 76.205-76.205c0-41.886-34.319-75.935-76.205-75.935s-76.205 34.049-76.205 75.935zm152.41 97.283c9.969 50.608 3.299 64.692 16.484 58.099 15.944-8.107 22.699-39.183 22.97-57.019-12.971-.81-26.213-.81-39.454-1.08zm-71.611-.541v-.27c-.27 5.134.27 38.103 4.324 41.075 11.079 5.405 39.453 4.594 51.073 1.081 5.405-1.621 2.432-37.022 1.621-41.886-18.916-.27-38.102-.27-57.018 0zm-14.053 0v-.27c-19.456.27-38.642.27-57.829.811-1.892 9.187-4.594 48.911 1.892 51.614 12.971 5.675 41.616 5.134 54.586 1.621 4.595-2.432 2.433-45.399 1.351-53.776zm-85.662 57.56c5.405 2.432 8.647 2.432 9.728-4.324 1.892-8.647 2.432-36.752 4.865-52.155-12.16.27-24.591.811-36.752 1.621-5.405 19.727.27 45.129 22.159 54.858zm-65.666-11.08c43.778 47.02 92.689 85.663 155.923 106.47 67.558-19.186 115.659-59.991 163.219-107.011-11.095-4.315-7.715-10.363-7.296-11.62-8.918-.81-17.835-1.892-26.483-2.702-9.458 32.968-35.94 52.965-46.75 31.616-2.702-5.134-3.513-11.62-4.594-16.754-3.783 8.377-13.242 8.107-24.591 8.918-13.241 1.081-31.617 1.351-44.048-2.972-2.972 12.971-11.079 12.971-26.752 14.322-14.052 1.352-48.642 4.054-54.857-10.809-1.081 28.644-35.13 9.998-45.129-7.026-3.243-5.675-5.405-11.35-7.026-17.565-7.837.81-15.673 1.621-23.511 2.702 2.443 3.663 1.549 9.052-8.105 12.431zM115.6 453.545c-5.674-23.239-18.646-49.722-33.508-54.046-22.429-6.756-68.909 23.51-66.207 54.586 12.701 19.457 39.994 35.67 59.181 36.481 17.835.81 35.94-11.08 39.724-28.914.539-2.432.81-5.134.81-8.107zm7.296-5.944c33.509-19.457 69.179-35.671 105.931-47.02-38.643-20.537-68.098-47.831-97.283-77.016-2.162 1.352-5.134 2.432-7.836 3.513-1.637 4.91 8.718 5.33 5.405 12.431-2.162 4.054-8.648 7.567-15.133 9.188-2.161 2.702-5.134 4.864-7.836 6.485h-.27c-.27 13.511-.27 27.024.27 40.535 8.939 15.964 15.426 33.314 16.752 51.884zm320.764 12.7c-36.752-21.348-74.044-41.345-115.659-52.965-13.782 6.215-27.833 11.349-42.155 15.403-2.162.811-2.162.811-4.324 0-11.89-3.783-23.239-8.107-34.859-13.241-40.265 11.62-77.286 29.185-112.416 50.803h-.27v.27c.27 0 .27 0 .27-.27 103.227 4.054 206.455 3.513 309.413 0zm27.023-64.045l-.27.27c.541-13.782.811-27.563.811-41.345-2.973-1.621-5.675-4.054-8.107-6.756-6.485-1.351-12.971-5.134-15.133-8.918-1.892-4.053 1.351-7.566 5.945-10.269-.27-.541-.541-1.621-.541-2.432-2.972-.811-5.405-1.892-7.567-3.243-31.616 29.455-65.396 56.749-103.498 76.746 38.914 11.62 75.935 28.104 111.875 47.561 1.05-14.692 7.231-35.749 16.485-51.614zm23.24 3.244c-14.593 4.323-27.834 30.806-33.509 54.046 0 23.826 21.278 37.897 40.534 37.022 19.186-.811 46.48-17.024 59.181-36.481 2.973-31.077-43.507-61.344-66.206-54.587zM290.709 134.133c.045 0 .089.003.134.003.046 0 .09-.003.136-.003h-.27zm0 96.743c28.645 0 51.884-21.618 51.884-48.371 0-36.092-40.507-58.079-72.151-44.318 9.458 2.972 16.484 11.62 16.484 21.618 0 23.257-33.291 31.955-46.48 11.35-7.297 34.067 19.368 59.721 50.263 59.721zM68.039 474.083c.54 6.486 12.16 12.701 21.618 9.458 6.756-2.703 14.593-10.539 17.295-16.214 2.973-7.026-1.081-19.997-9.728-18.375-8.917 1.621-29.725 16.754-29.185 25.131zm410.75-25.131c-8.377-1.621-12.431 11.349-9.458 18.375 2.432 5.675 10.269 13.511 17.295 16.214 9.187 3.243 21.078-2.972 21.348-9.458.811-8.377-20.267-23.51-29.185-25.131z\\\"}}},\\\"osi\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f41a\\\",\\\"label\\\":\\\"Open Source Initiative\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1507669930674,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 495.8 512\\\\\\\"><path d=\\\\\\\"M0 259.2C2.3 123.4 97.4 26.8 213.8 11.1c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7-17.8-46.3-35.6-92.7-53.4-139-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8 6.4-42.4-24.5-78.7-64.5-82.2-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4-17.9 46.6-35.8 93.2-53.7 139.9-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119C1.9 318.7 1.6 280.2 0 259.2zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3 14.9-39.1 29.9-78.2 45-117.3 1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6 31.9 18.4 49.5 53.8 45.2 90.4-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6 15.2 39.2 30.2 78.4 45.2 117.7 1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161C459.8 112 354.1 14.7 218 31.5 111.9 44.5 22.7 134 20.9 257.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"495.8\\\",\\\"512\\\"],\\\"width\\\":495,\\\"height\\\":512,\\\"path\\\":\\\"M0 259.2C2.3 123.4 97.4 26.8 213.8 11.1c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7-17.8-46.3-35.6-92.7-53.4-139-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8 6.4-42.4-24.5-78.7-64.5-82.2-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4-17.9 46.6-35.8 93.2-53.7 139.9-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119C1.9 318.7 1.6 280.2 0 259.2zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3 14.9-39.1 29.9-78.2 45-117.3 1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6 31.9 18.4 49.5 53.8 45.2 90.4-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6 15.2 39.2 30.2 78.4 45.2 117.7 1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161C459.8 112 354.1 14.7 218 31.5 111.9 44.5 22.7 134 20.9 257.3z\\\"}}},\\\"outdent\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f03b\\\",\\\"label\\\":\\\"Outdent\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 84V44c0-8.837 7.163-16 16-16h416c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16zm208 144h224c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H208c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zM16 484h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm192-128h224c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H208c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zM4.687 267.313l96 95.984C110.734 373.348 128 366.224 128 351.984V160.008c0-14.329-17.325-21.304-27.313-11.313l-96 95.992c-6.249 6.248-6.249 16.378 0 22.626z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 84V44c0-8.837 7.163-16 16-16h416c8.837 0 16 7.163 16 16v40c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16zm208 144h224c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H208c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zM16 484h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm192-128h224c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H208c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zM4.687 267.313l96 95.984C110.734 373.348 128 366.224 128 351.984V160.008c0-14.329-17.325-21.304-27.313-11.313l-96 95.992c-6.249 6.248-6.249 16.378 0 22.626z\\\"}}},\\\"page4\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3d7\\\",\\\"label\\\":\\\"page4 Corporation\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z\\\"}}},\\\"pagelines\\\":{\\\"changes\\\":[\\\"4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"eco\\\",\\\"leaf\\\",\\\"leaves\\\",\\\"nature\\\",\\\"plant\\\",\\\"tree\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f18c\\\",\\\"label\\\":\\\"Pagelines\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z\\\"}}},\\\"paint-brush\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1fc\\\",\\\"label\\\":\\\"Paint Brush\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111690,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\\\"}}},\\\"paint-roller\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"brush\\\",\\\"painting\\\",\\\"tool\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5aa\\\",\\\"label\\\":\\\"Paint Roller\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111691,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\\\"}}},\\\"palette\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"colors\\\",\\\"painting\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f53f\\\",\\\"label\\\":\\\"Palette\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154575,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"}}},\\\"palfed\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3d8\\\",\\\"label\\\":\\\"Palfed\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426582000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z\\\"}}},\\\"pallet\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f482\\\",\\\"label\\\":\\\"Pallet\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821454,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\\\"}}},\\\"paper-plane\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f1d8\\\",\\\"label\\\":\\\"Paper Plane\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M440 6.5L24 246.4c-34.4 19.9-31.1 70.8 5.7 85.9L144 379.6V464c0 46.4 59.2 65.5 86.6 28.6l43.8-59.1 111.9 46.2c5.9 2.4 12.1 3.6 18.3 3.6 8.2 0 16.3-2.1 23.6-6.2 12.8-7.2 21.6-20 23.9-34.5l59.4-387.2c6.1-40.1-36.9-68.8-71.5-48.9zM192 464v-64.6l36.6 15.1L192 464zm212.6-28.7l-153.8-63.5L391 169.5c10.7-15.5-9.5-33.5-23.7-21.2L155.8 332.6 48 288 464 48l-59.4 387.3z\\\"}}},\\\"paperclip\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"attachment\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0c6\\\",\\\"label\\\":\\\"Paperclip\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821455,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\\\"}}},\\\"parachute-box\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"aid\\\",\\\"assistance\\\",\\\"rescue\\\",\\\"supplies\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4cd\\\",\\\"label\\\":\\\"Parachute Box\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406023,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\\\"}}},\\\"paragraph\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1dd\\\",\\\"label\\\":\\\"paragraph\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M408 32H177.531C88.948 32 16.045 103.335 16 191.918 15.956 280.321 87.607 352 176 352v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V112h32v344c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V112h40c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M408 32H177.531C88.948 32 16.045 103.335 16 191.918 15.956 280.321 87.607 352 176 352v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V112h32v344c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V112h40c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24z\\\"}}},\\\"parking\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f540\\\",\\\"label\\\":\\\"Parking\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154575,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\\\"}}},\\\"passport\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"document\\\",\\\"identification\\\",\\\"issued\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5ab\\\",\\\"label\\\":\\\"Passport\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111691,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\\\"}}},\\\"paste\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"clipboard\\\",\\\"copy\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0ea\\\",\\\"label\\\":\\\"Paste\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\\\"}}},\\\"patreon\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3d9\\\",\\\"label\\\":\\\"Patreon\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821387,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z\\\"}}},\\\"pause\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"wait\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f04c\\\",\\\"label\\\":\\\"pause\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\\\"}}},\\\"pause-circle\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f28b\\\",\\\"label\\\":\\\"Pause Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm96-280v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16zm-112 0v160c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16z\\\"}}},\\\"paw\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"pet\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1b0\\\",\\\"label\\\":\\\"Paw\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M85.231 330.958C36 330.958 0 273.792 0 231.5c0-28.292 16-58.042 49.538-58.042 49.231 0 85.231 57.458 85.231 99.75 0 28.292-15.692 57.75-49.538 57.75zm348 106.167c0 37.042-32 42.875-63.385 42.875-41.231 0-74.462-26.25-113.846-26.25-41.231 0-76.308 25.958-120.923 25.958-29.847 0-56.308-9.625-56.308-42.583C78.769 368 180.616 265.333 256 265.333s177.231 102.959 177.231 171.792zM182.462 203.792c-49.847 0-80-59.5-80-100.333C102.462 70.792 120.308 32 160 32c50.154 0 80 59.5 80 100.333 0 32.667-17.846 71.459-57.538 71.459zM272 132.333C272 91.5 301.846 32 352 32c39.692 0 57.539 38.792 57.539 71.458 0 40.833-30.154 100.333-80.001 100.333C289.846 203.792 272 165 272 132.333zM512 231.5c0 42.292-36 99.458-85.231 99.458-33.847 0-49.538-29.458-49.538-57.75 0-42.291 35.999-99.75 85.231-99.75C496 173.458 512 203.208 512 231.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M85.231 330.958C36 330.958 0 273.792 0 231.5c0-28.292 16-58.042 49.538-58.042 49.231 0 85.231 57.458 85.231 99.75 0 28.292-15.692 57.75-49.538 57.75zm348 106.167c0 37.042-32 42.875-63.385 42.875-41.231 0-74.462-26.25-113.846-26.25-41.231 0-76.308 25.958-120.923 25.958-29.847 0-56.308-9.625-56.308-42.583C78.769 368 180.616 265.333 256 265.333s177.231 102.959 177.231 171.792zM182.462 203.792c-49.847 0-80-59.5-80-100.333C102.462 70.792 120.308 32 160 32c50.154 0 80 59.5 80 100.333 0 32.667-17.846 71.459-57.538 71.459zM272 132.333C272 91.5 301.846 32 352 32c39.692 0 57.539 38.792 57.539 71.458 0 40.833-30.154 100.333-80.001 100.333C289.846 203.792 272 165 272 132.333zM512 231.5c0 42.292-36 99.458-85.231 99.458-33.847 0-49.538-29.458-49.538-57.75 0-42.291 35.999-99.75 85.231-99.75C496 173.458 512 203.208 512 231.5z\\\"}}},\\\"paypal\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1ed\\\",\\\"label\\\":\\\"Paypal\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z\\\"}}},\\\"pen\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"design\\\",\\\"edit\\\",\\\"update\\\",\\\"write\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f304\\\",\\\"label\\\":\\\"Pen\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111694,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\\\"}}},\\\"pen-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"design\\\",\\\"edit\\\",\\\"update\\\",\\\"write\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f305\\\",\\\"label\\\":\\\"Alternate Pen\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111692,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\\\"}}},\\\"pen-fancy\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"design\\\",\\\"edit\\\",\\\"fountain pen\\\",\\\"update\\\",\\\"write\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5ac\\\",\\\"label\\\":\\\"Pen Fancy\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111693,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\\\"}}},\\\"pen-nib\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"design\\\",\\\"edit\\\",\\\"fountain pen\\\",\\\"update\\\",\\\"write\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5ad\\\",\\\"label\\\":\\\"Pen Nib\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111693,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\\\"}}},\\\"pen-square\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"edit\\\",\\\"pencil-square\\\",\\\"update\\\",\\\"write\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f14b\\\",\\\"label\\\":\\\"Pen Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\\\"}}},\\\"pencil-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"design\\\",\\\"edit\\\",\\\"pencil\\\",\\\"update\\\",\\\"write\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f303\\\",\\\"label\\\":\\\"Alternate Pencil\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\\\"}}},\\\"pencil-ruler\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5ae\\\",\\\"label\\\":\\\"Pencil Ruler\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111694,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\\\"}}},\\\"people-carry\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"movers\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4ce\\\",\\\"label\\\":\\\"People Carry\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821455,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\\\"}}},\\\"percent\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f295\\\",\\\"label\\\":\\\"Percent\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\\\"}}},\\\"percentage\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f541\\\",\\\"label\\\":\\\"Percentage\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154575,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\\\"}}},\\\"periscope\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3da\\\",\\\"label\\\":\\\"Periscope\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z\\\"}}},\\\"phabricator\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3db\\\",\\\"label\\\":\\\"Phabricator\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z\\\"}}},\\\"phoenix-framework\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3dc\\\",\\\"label\\\":\\\"Phoenix Framework\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426582001,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z\\\"}}},\\\"phoenix-squadron\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f511\\\",\\\"label\\\":\\\"Phoenix Squadron\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442522,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 513.52 512\\\\\\\"><path d=\\\\\\\"M96.24 62.81C142.91 26.57 202.15 6.57 261.28 8.08c29.67-.38 59.29 5.38 87.17 15.37-24.2-4.64-49.18-6.35-73.6-2.45-43 5.35-83.26 27.23-112.16 59.35 5.69-.99 10.81-3.68 16.07-5.88 18.19-7.89 37.6-13.29 57.4-14.87 19.8-2.14 39.75-.43 59.45 1.93-14.46 2.79-29.2 4.58-43.11 9.61-34.53 11.11-65.46 33.26-86.55 62.82-13.84 19.77-23.7 42.99-24.74 67.33-.35 16.54 5.23 34.91 19.89 44.17 11.13 6.66 24.85 9.39 37.63 6.76 15.49-2.47 30.16-8.67 43.73-16.38 11.55-6.84 22.73-14.59 32.05-24.32 3.8-3.23 2.54-8.48 2.63-12.83-2.13-.34-4.4-1.11-6.32.3a203.975 203.975 0 0 1-35.93 15.42c-20.07 6.19-42.28 8.48-62.28.78 12.83 1.73 26.14.31 37.85-5.46 20.29-9.75 36.92-25.27 54.6-38.88 27.84-21.29 57.64-40.11 89.17-55.47 25.78-12.01 53.09-22.85 81.81-24.2-15.68 13.76-32.25 26.6-46.92 41.51-14.55 14.04-27.54 29.58-40.23 45.31-3.53 4.61-8.98 6.96-13.62 10.19-22.24 15.03-40.6 35.96-52.04 60.28-9.36 19.74-14.55 41.97-11.81 63.84 1.95 13.73 8.74 27.67 20.96 35.01 12.94 7.99 29.14 8.09 43.61 5.11 32.9-7.47 61.61-28.97 81.28-56 20.5-27.6 30.61-62.38 29.25-96.64-.52-7.52-1.58-15-1.67-22.55 8.02 19.54 14.87 39.83 16.7 61.01 2.01 14.32.75 28.84-1.62 43.02-1.92 11.02-5.69 21.58-7.81 32.53 20.36-22.73 34.17-51.24 39.46-81.31 5.72-35.37.58-72.36-14.25-104.95 20.84 32.12 32.43 69.79 35.81 107.8.5 12.77.5 25.58 0 38.34-2.91 34.26-12.97 67.95-29.76 98-26.2 47.48-68.2 85.89-117.54 108.32-78.52 36.34-175.2 31.41-248.72-14.72-38.84-23.78-71.06-58.32-91.68-98.96C10.72 337.43 2.04 305.5 0 273.13V241.7c3.94-69.97 40.99-136.32 96.24-178.89m222.65 80.57c5.51-.8 10.82-2.57 16.02-4.5 4.99-1.77 9.27-5.95 10.35-11.25-8.91 5-17.95 9.95-26.37 15.75z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"513.52\\\",\\\"512\\\"],\\\"width\\\":513,\\\"height\\\":512,\\\"path\\\":\\\"M96.24 62.81C142.91 26.57 202.15 6.57 261.28 8.08c29.67-.38 59.29 5.38 87.17 15.37-24.2-4.64-49.18-6.35-73.6-2.45-43 5.35-83.26 27.23-112.16 59.35 5.69-.99 10.81-3.68 16.07-5.88 18.19-7.89 37.6-13.29 57.4-14.87 19.8-2.14 39.75-.43 59.45 1.93-14.46 2.79-29.2 4.58-43.11 9.61-34.53 11.11-65.46 33.26-86.55 62.82-13.84 19.77-23.7 42.99-24.74 67.33-.35 16.54 5.23 34.91 19.89 44.17 11.13 6.66 24.85 9.39 37.63 6.76 15.49-2.47 30.16-8.67 43.73-16.38 11.55-6.84 22.73-14.59 32.05-24.32 3.8-3.23 2.54-8.48 2.63-12.83-2.13-.34-4.4-1.11-6.32.3a203.975 203.975 0 0 1-35.93 15.42c-20.07 6.19-42.28 8.48-62.28.78 12.83 1.73 26.14.31 37.85-5.46 20.29-9.75 36.92-25.27 54.6-38.88 27.84-21.29 57.64-40.11 89.17-55.47 25.78-12.01 53.09-22.85 81.81-24.2-15.68 13.76-32.25 26.6-46.92 41.51-14.55 14.04-27.54 29.58-40.23 45.31-3.53 4.61-8.98 6.96-13.62 10.19-22.24 15.03-40.6 35.96-52.04 60.28-9.36 19.74-14.55 41.97-11.81 63.84 1.95 13.73 8.74 27.67 20.96 35.01 12.94 7.99 29.14 8.09 43.61 5.11 32.9-7.47 61.61-28.97 81.28-56 20.5-27.6 30.61-62.38 29.25-96.64-.52-7.52-1.58-15-1.67-22.55 8.02 19.54 14.87 39.83 16.7 61.01 2.01 14.32.75 28.84-1.62 43.02-1.92 11.02-5.69 21.58-7.81 32.53 20.36-22.73 34.17-51.24 39.46-81.31 5.72-35.37.58-72.36-14.25-104.95 20.84 32.12 32.43 69.79 35.81 107.8.5 12.77.5 25.58 0 38.34-2.91 34.26-12.97 67.95-29.76 98-26.2 47.48-68.2 85.89-117.54 108.32-78.52 36.34-175.2 31.41-248.72-14.72-38.84-23.78-71.06-58.32-91.68-98.96C10.72 337.43 2.04 305.5 0 273.13V241.7c3.94-69.97 40.99-136.32 96.24-178.89m222.65 80.57c5.51-.8 10.82-2.57 16.02-4.5 4.99-1.77 9.27-5.95 10.35-11.25-8.91 5-17.95 9.95-26.37 15.75z\\\"}}},\\\"phone\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"call\\\",\\\"earphone\\\",\\\"number\\\",\\\"support\\\",\\\"telephone\\\",\\\"voice\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f095\\\",\\\"label\\\":\\\"Phone\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406025,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\\\"}}},\\\"phone-slash\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3dd\\\",\\\"label\\\":\\\"Phone Slash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406024,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\\\"}}},\\\"phone-square\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"call\\\",\\\"number\\\",\\\"support\\\",\\\"telephone\\\",\\\"voice\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f098\\\",\\\"label\\\":\\\"Phone Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\\\"}}},\\\"phone-volume\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"telephone\\\",\\\"volume-control-phone\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2a0\\\",\\\"label\\\":\\\"Phone Volume\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\\\"}}},\\\"php\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f457\\\",\\\"label\\\":\\\"PHP\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1518899527949,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z\\\"}}},\\\"pied-piper\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\",\\\"5.0.10\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2ae\\\",\\\"label\\\":\\\"Pied Piper Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1523653480522,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z\\\"}}},\\\"pied-piper-alt\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1a8\\\",\\\"label\\\":\\\"Alternate Pied Piper Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M242 187c6.3-11.8 13.2-17 25.9-21.8 27.3-10.3 40.2-30.5 58.9-51.1 11.9 8.4 12 24.6 31.6 23v21.8l6.3.3c37.4-14.4 74.7-30.2 106.6-54.6 48.3-36.8 52.9-50 81.3-100l2-2.6c-.6 14.1-6.3 27.3-12.4 39.9-30.5 63.8-78.7 100.3-146.8 116.7-12.4 2.9-26.4 3.2-37.6 8.9 1.4 9.8 13.2 18.1 13.2 23 0 3.4-5.5 7.2-7.5 8.6-11.2-12.9-16.1-19.3-22.7-22.1-7.6-3.5-63.9-6.4-98.8 10zm137.9 256.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9L244 246zm-12.6 31.8l24.1 61.2 21-13.8-31.3-50.9-13.8 3.5zM555.5 0l-.6 1.1-.3.9.6-.6.3-1.4zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46v27.3l11.8-3.4-2.9-23.8h-8.9zm76.1 2.9c0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3l2 12.4c9-1.5 58.4-6.6 58.4-14.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M242 187c6.3-11.8 13.2-17 25.9-21.8 27.3-10.3 40.2-30.5 58.9-51.1 11.9 8.4 12 24.6 31.6 23v21.8l6.3.3c37.4-14.4 74.7-30.2 106.6-54.6 48.3-36.8 52.9-50 81.3-100l2-2.6c-.6 14.1-6.3 27.3-12.4 39.9-30.5 63.8-78.7 100.3-146.8 116.7-12.4 2.9-26.4 3.2-37.6 8.9 1.4 9.8 13.2 18.1 13.2 23 0 3.4-5.5 7.2-7.5 8.6-11.2-12.9-16.1-19.3-22.7-22.1-7.6-3.5-63.9-6.4-98.8 10zm137.9 256.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9L244 246zm-12.6 31.8l24.1 61.2 21-13.8-31.3-50.9-13.8 3.5zM555.5 0l-.6 1.1-.3.9.6-.6.3-1.4zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46v27.3l11.8-3.4-2.9-23.8h-8.9zm76.1 2.9c0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3l2 12.4c9-1.5 58.4-6.6 58.4-14.1z\\\"}}},\\\"pied-piper-hat\\\":{\\\"changes\\\":[\\\"5.0.10\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"clothing\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4e5\\\",\\\"label\\\":\\\"Pied Piper-hat\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1523653480521,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z\\\"}}},\\\"pied-piper-pp\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1a7\\\",\\\"label\\\":\\\"Pied Piper PP Logo (Old)\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z\\\"}}},\\\"piggy-bank\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"save\\\",\\\"savings\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4d3\\\",\\\"label\\\":\\\"Piggy Bank\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406025,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\\\"}}},\\\"pills\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"drugs\\\",\\\"medicine\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f484\\\",\\\"label\\\":\\\"Pills\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821456,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\\\"}}},\\\"pinterest\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f0d2\\\",\\\"label\\\":\\\"Pinterest\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\\\"}}},\\\"pinterest-p\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f231\\\",\\\"label\\\":\\\"Pinterest P\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z\\\"}}},\\\"pinterest-square\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f0d3\\\",\\\"label\\\":\\\"Pinterest Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z\\\"}}},\\\"plane\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"airplane\\\",\\\"destination\\\",\\\"fly\\\",\\\"location\\\",\\\"mode\\\",\\\"travel\\\",\\\"trip\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f072\\\",\\\"label\\\":\\\"plane\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154575,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\\\"}}},\\\"plane-arrival\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"airplane\\\",\\\"arriving\\\",\\\"destination\\\",\\\"fly\\\",\\\"land\\\",\\\"landing\\\",\\\"location\\\",\\\"mode\\\",\\\"travel\\\",\\\"trip\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5af\\\",\\\"label\\\":\\\"Plane Arrival\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111695,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\\\"}}},\\\"plane-departure\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"airplane\\\",\\\"departing\\\",\\\"destination\\\",\\\"fly\\\",\\\"location\\\",\\\"mode\\\",\\\"take off\\\",\\\"taking off\\\",\\\"travel\\\",\\\"trip\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5b0\\\",\\\"label\\\":\\\"Plane Departure\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111695,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\\\"}}},\\\"play\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"music\\\",\\\"playing\\\",\\\"sound\\\",\\\"start\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f04b\\\",\\\"label\\\":\\\"play\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\\\"}}},\\\"play-circle\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"playing\\\",\\\"start\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f144\\\",\\\"label\\\":\\\"Play Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M371.7 238l-176-107c-15.8-8.8-35.7 2.5-35.7 21v208c0 18.4 19.8 29.8 35.7 21l176-101c16.4-9.1 16.4-32.8 0-42zM504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256z\\\"}}},\\\"playstation\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3df\\\",\\\"label\\\":\\\"PlayStation\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821388,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z\\\"}}},\\\"plug\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"connect\\\",\\\"online\\\",\\\"power\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1e6\\\",\\\"label\\\":\\\"Plug\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502810244000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M256 144V32c0-17.673 14.327-32 32-32s32 14.327 32 32v112h-64zm112 16H16c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h16v32c0 77.406 54.969 141.971 128 156.796V512h64v-99.204c73.031-14.825 128-79.39 128-156.796v-32h16c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16zm-240-16V32c0-17.673-14.327-32-32-32S64 14.327 64 32v112h64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M256 144V32c0-17.673 14.327-32 32-32s32 14.327 32 32v112h-64zm112 16H16c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h16v32c0 77.406 54.969 141.971 128 156.796V512h64v-99.204c73.031-14.825 128-79.39 128-156.796v-32h16c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16zm-240-16V32c0-17.673-14.327-32-32-32S64 14.327 64 32v112h64z\\\"}}},\\\"plus\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"add\\\",\\\"create\\\",\\\"expand\\\",\\\"new\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f067\\\",\\\"label\\\":\\\"plus\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154576,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\\\"}}},\\\"plus-circle\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"add\\\",\\\"create\\\",\\\"expand\\\",\\\"new\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f055\\\",\\\"label\\\":\\\"Plus Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\\\"}}},\\\"plus-square\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"add\\\",\\\"create\\\",\\\"expand\\\",\\\"new\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0fe\\\",\\\"label\\\":\\\"Plus Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\\\"}}},\\\"podcast\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2ce\\\",\\\"label\\\":\\\"Podcast\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\\\"}}},\\\"poo\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2fe\\\",\\\"label\\\":\\\"Poo\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406025,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"}}},\\\"poop\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f619\\\",\\\"label\\\":\\\"Poop\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831540,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\\\"}}},\\\"portrait\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3e0\\\",\\\"label\\\":\\\"Portrait\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365069,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\\\"}}},\\\"pound-sign\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"gbp\\\",\\\"gbp\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f154\\\",\\\"label\\\":\\\"Pound Sign\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\\\"}}},\\\"power-off\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"on\\\",\\\"reboot\\\",\\\"restart\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f011\\\",\\\"label\\\":\\\"Power Off\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\\\"}}},\\\"prescription\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"drugs\\\",\\\"medical\\\",\\\"medicine\\\",\\\"rx\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5b1\\\",\\\"label\\\":\\\"Prescription\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111696,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\\\"}}},\\\"prescription-bottle\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"drugs\\\",\\\"medical\\\",\\\"medicine\\\",\\\"rx\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f485\\\",\\\"label\\\":\\\"Prescription Bottle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821456,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\\\"}}},\\\"prescription-bottle-alt\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"drugs\\\",\\\"medical\\\",\\\"medicine\\\",\\\"rx\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f486\\\",\\\"label\\\":\\\"Alternate Prescription Bottle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821456,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\\\"}}},\\\"print\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f02f\\\",\\\"label\\\":\\\"print\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 192h-16V81.941a24 24 0 0 0-7.029-16.97L383.029 7.029A24 24 0 0 0 366.059 0H88C74.745 0 64 10.745 64 24v168H48c-26.51 0-48 21.49-48 48v132c0 6.627 5.373 12 12 12h52v104c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V384h52c6.627 0 12-5.373 12-12V240c0-26.51-21.49-48-48-48zm-80 256H128v-96h256v96zM128 224V64h192v40c0 13.2 10.8 24 24 24h40v96H128zm304 72c-13.254 0-24-10.746-24-24s10.746-24 24-24 24 10.746 24 24-10.746 24-24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 192h-16V81.941a24 24 0 0 0-7.029-16.97L383.029 7.029A24 24 0 0 0 366.059 0H88C74.745 0 64 10.745 64 24v168H48c-26.51 0-48 21.49-48 48v132c0 6.627 5.373 12 12 12h52v104c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V384h52c6.627 0 12-5.373 12-12V240c0-26.51-21.49-48-48-48zm-80 256H128v-96h256v96zM128 224V64h192v40c0 13.2 10.8 24 24 24h40v96H128zm304 72c-13.254 0-24-10.746-24-24s10.746-24 24-24 24 10.746 24 24-10.746 24-24 24z\\\"}}},\\\"procedures\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f487\\\",\\\"label\\\":\\\"Procedures\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821456,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\\\"}}},\\\"product-hunt\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f288\\\",\\\"label\\\":\\\"Product Hunt\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z\\\"}}},\\\"project-diagram\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f542\\\",\\\"label\\\":\\\"Project Diagram\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154576,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\\\"}}},\\\"pushed\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3e1\\\",\\\"label\\\":\\\"Pushed\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 432 512\\\\\\\"><path d=\\\\\\\"M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"432\\\",\\\"512\\\"],\\\"width\\\":432,\\\"height\\\":512,\\\"path\\\":\\\"M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z\\\"}}},\\\"puzzle-piece\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"add-on\\\",\\\"addon\\\",\\\"section\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f12e\\\",\\\"label\\\":\\\"Puzzle Piece\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\\\"}}},\\\"python\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3e2\\\",\\\"label\\\":\\\"Python\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M167.8 36.4c-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1zm-6.7 28.4c11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4zm185.2 81.4v47.5c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6-7.7-30.9-22.3-54.2-53.4-54.2h-40.1zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M167.8 36.4c-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1zm-6.7 28.4c11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4zm185.2 81.4v47.5c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6-7.7-30.9-22.3-54.2-53.4-54.2h-40.1zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3z\\\"}}},\\\"qq\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1d6\\\",\\\"label\\\":\\\"QQ\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z\\\"}}},\\\"qrcode\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"scan\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f029\\\",\\\"label\\\":\\\"qrcode\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\\\"}}},\\\"question\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"help\\\",\\\"information\\\",\\\"support\\\",\\\"unknown\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f128\\\",\\\"label\\\":\\\"Question\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\\\"}}},\\\"question-circle\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"help\\\",\\\"information\\\",\\\"support\\\",\\\"unknown\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f059\\\",\\\"label\\\":\\\"Question Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\\\"}}},\\\"quidditch\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f458\\\",\\\"label\\\":\\\"Quidditch\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821457,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\\\"}}},\\\"quinscape\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f459\\\",\\\"label\\\":\\\"QuinScape\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1518899527949,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 489.1 512\\\\\\\"><path d=\\\\\\\"M301.9 474.6h-1.3c-87.3 0-158.1-70.8-158.1-158.1s70.8-158.1 158.1-158.1c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C489.1 117.5 379.6 8 244.5 8 109.5 8 0 117.5 0 252.6s109.5 244.6 244.5 244.6c24.8 0 47.8-3.2 70.4-10.1-5.2-3.5-9-8.2-13.4-12.6l.4.1zm-21.2-69.8c0-54.8 44.4-99.2 99.2-99.2 54.8 0 99.2 44.4 99.2 99.2 0 54.8-44.4 99.2-99.2 99.2-54.8 0-99.2-44.4-99.2-99.2\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"489.1\\\",\\\"512\\\"],\\\"width\\\":489,\\\"height\\\":512,\\\"path\\\":\\\"M301.9 474.6h-1.3c-87.3 0-158.1-70.8-158.1-158.1s70.8-158.1 158.1-158.1c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C489.1 117.5 379.6 8 244.5 8 109.5 8 0 117.5 0 252.6s109.5 244.6 244.5 244.6c24.8 0 47.8-3.2 70.4-10.1-5.2-3.5-9-8.2-13.4-12.6l.4.1zm-21.2-69.8c0-54.8 44.4-99.2 99.2-99.2 54.8 0 99.2 44.4 99.2 99.2 0 54.8-44.4 99.2-99.2 99.2-54.8 0-99.2-44.4-99.2-99.2\\\"}}},\\\"quora\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2c4\\\",\\\"label\\\":\\\"Quora\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z\\\"}}},\\\"quote-left\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f10d\\\",\\\"label\\\":\\\"quote-left\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406025,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\\\"}}},\\\"quote-right\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f10e\\\",\\\"label\\\":\\\"quote-right\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406026,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\\\"}}},\\\"r-project\\\":{\\\"changes\\\":[\\\"5.0.11\\\",\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4f7\\\",\\\"label\\\":\\\"R Project\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442522,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 581 512\\\\\\\"><path d=\\\\\\\"M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"581\\\",\\\"512\\\"],\\\"width\\\":581,\\\"height\\\":512,\\\"path\\\":\\\"M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z\\\"}}},\\\"random\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"shuffle\\\",\\\"sort\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f074\\\",\\\"label\\\":\\\"random\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\\\"}}},\\\"ravelry\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2d9\\\",\\\"label\\\":\\\"Ravelry\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M407.4 61.5C331.6 22.1 257.8 31 182.9 66c-11.3 5.2-15.5 10.6-19.9 19-10.3 19.2-16.2 37.4-19.9 52.7-21.2 25.6-36.4 56.1-43.3 89.9-10.6 18-20.9 41.4-23.1 71.4 0 0-.7 7.6-.5 7.9-35.3-4.6-76.2-27-76.2-27 9.1 14.5 61.3 32.3 76.3 37.9 0 0 1.7 98 64.5 131.2-11.3-17.2-13.3-20.2-13.3-20.2S94.8 369 100.4 324.7c.7 0 1.5.2 2.2.2 23.9 87.4 103.2 151.4 196.9 151.4 6.2 0 12.1-.2 18-.7 14 1.5 27.6.5 40.1-3.9 6.9-2.2 13.8-6.4 20.2-10.8 70.2-39.1 100.9-82 123.1-147.7 5.4-16 8.1-35.5 9.8-52.2 8.7-82.3-30.6-161.6-103.3-199.5zM138.8 163.2s-1.2 12.3-.7 19.7c-3.4 2.5-10.1 8.1-18.2 16.7 5.2-12.8 11.3-25.1 18.9-36.4zm-31.2 121.9c4.4-17.2 13.3-39.1 29.8-55.1 0 0 1.7 48 15.8 90.1l-41.4-6.9c-2.2-9.2-3.5-18.5-4.2-28.1zm7.9 42.8c14.8 3.2 34 7.6 43.1 9.1 27.3 76.8 108.3 124.3 108.3 124.3 1 .5 1.7.7 2.7 1-73.1-11.6-132.7-64.7-154.1-134.4zM386 444.1c-14.5 4.7-36.2 8.4-64.7 3.7 0 0-91.1-23.1-127.5-107.8 38.2.7 52.4-.2 78-3.9 39.4-5.7 79-16.2 115-33 11.8-5.4 11.1-19.4 9.6-29.8-2-12.8-11.1-12.1-21.4-4.7 0 0-82 58.6-189.8 53.7-18.7-32-26.8-110.8-26.8-110.8 41.4-35.2 83.2-59.6 168.4-52.4.2-6.4 3-27.1-20.4-28.1 0 0-93.5-11.1-146 33.5 2.5-16.5 5.9-29.3 11.1-39.4 34.2-30.8 79-49.5 128.3-49.5 106.4 0 193 87.1 193 194.5-.2 76-43.8 142-106.8 174z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M407.4 61.5C331.6 22.1 257.8 31 182.9 66c-11.3 5.2-15.5 10.6-19.9 19-10.3 19.2-16.2 37.4-19.9 52.7-21.2 25.6-36.4 56.1-43.3 89.9-10.6 18-20.9 41.4-23.1 71.4 0 0-.7 7.6-.5 7.9-35.3-4.6-76.2-27-76.2-27 9.1 14.5 61.3 32.3 76.3 37.9 0 0 1.7 98 64.5 131.2-11.3-17.2-13.3-20.2-13.3-20.2S94.8 369 100.4 324.7c.7 0 1.5.2 2.2.2 23.9 87.4 103.2 151.4 196.9 151.4 6.2 0 12.1-.2 18-.7 14 1.5 27.6.5 40.1-3.9 6.9-2.2 13.8-6.4 20.2-10.8 70.2-39.1 100.9-82 123.1-147.7 5.4-16 8.1-35.5 9.8-52.2 8.7-82.3-30.6-161.6-103.3-199.5zM138.8 163.2s-1.2 12.3-.7 19.7c-3.4 2.5-10.1 8.1-18.2 16.7 5.2-12.8 11.3-25.1 18.9-36.4zm-31.2 121.9c4.4-17.2 13.3-39.1 29.8-55.1 0 0 1.7 48 15.8 90.1l-41.4-6.9c-2.2-9.2-3.5-18.5-4.2-28.1zm7.9 42.8c14.8 3.2 34 7.6 43.1 9.1 27.3 76.8 108.3 124.3 108.3 124.3 1 .5 1.7.7 2.7 1-73.1-11.6-132.7-64.7-154.1-134.4zM386 444.1c-14.5 4.7-36.2 8.4-64.7 3.7 0 0-91.1-23.1-127.5-107.8 38.2.7 52.4-.2 78-3.9 39.4-5.7 79-16.2 115-33 11.8-5.4 11.1-19.4 9.6-29.8-2-12.8-11.1-12.1-21.4-4.7 0 0-82 58.6-189.8 53.7-18.7-32-26.8-110.8-26.8-110.8 41.4-35.2 83.2-59.6 168.4-52.4.2-6.4 3-27.1-20.4-28.1 0 0-93.5-11.1-146 33.5 2.5-16.5 5.9-29.3 11.1-39.4 34.2-30.8 79-49.5 128.3-49.5 106.4 0 193 87.1 193 194.5-.2 76-43.8 142-106.8 174z\\\"}}},\\\"react\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f41b\\\",\\\"label\\\":\\\"React\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1507838931324,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zm-130 189.1c4.6 8.8 9.3 17.5 14.3 26.1 5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5zm0-50.6c-6.3-14.9-11.6-29.5-16-43.6 14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26zm11.4 25.3c6.6-13.8 13.8-27.3 21.4-40.6 7.6-13.3 15.8-26.2 24.4-38.9 15-1.1 30.3-1.7 45.9-1.7 15.6 0 31 .6 45.9 1.7 8.5 12.6 16.6 25.5 24.3 38.7 7.7 13.2 14.9 26.7 21.7 40.4-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6-15.7 0-30.9-.5-45.6-1.4-8.7-12.7-16.9-25.7-24.6-39-7.7-13.3-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zM256 210.2c25.3 0 45.8 20.5 45.8 45.8 0 25.3-20.5 45.8-45.8 45.8-25.3 0-45.8-20.5-45.8-45.8 0-25.3 20.5-45.8 45.8-45.8\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zm-130 189.1c4.6 8.8 9.3 17.5 14.3 26.1 5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5zm0-50.6c-6.3-14.9-11.6-29.5-16-43.6 14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26zm11.4 25.3c6.6-13.8 13.8-27.3 21.4-40.6 7.6-13.3 15.8-26.2 24.4-38.9 15-1.1 30.3-1.7 45.9-1.7 15.6 0 31 .6 45.9 1.7 8.5 12.6 16.6 25.5 24.3 38.7 7.7 13.2 14.9 26.7 21.7 40.4-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6-15.7 0-30.9-.5-45.6-1.4-8.7-12.7-16.9-25.7-24.6-39-7.7-13.3-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zM256 210.2c25.3 0 45.8 20.5 45.8 45.8 0 25.3-20.5 45.8-45.8 45.8-25.3 0-45.8-20.5-45.8-45.8 0-25.3 20.5-45.8 45.8-45.8\\\"}}},\\\"readme\\\":{\\\"changes\\\":[\\\"5.0.9\\\",\\\"5.0.10\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4d5\\\",\\\"label\\\":\\\"ReadMe\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1523653480522,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z\\\"}}},\\\"rebel\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1d0\\\",\\\"label\\\":\\\"Rebel Alliance\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z\\\"}}},\\\"receipt\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"check\\\",\\\"invoice\\\",\\\"table\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f543\\\",\\\"label\\\":\\\"Receipt\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154576,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\\\"}}},\\\"recycle\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1b8\\\",\\\"label\\\":\\\"Recycle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\\\"}}},\\\"red-river\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3e3\\\",\\\"label\\\":\\\"red river\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821388,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z\\\"}}},\\\"reddit\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1a1\\\",\\\"label\\\":\\\"reddit Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z\\\"}}},\\\"reddit-alien\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f281\\\",\\\"label\\\":\\\"reddit Alien\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\\\"}}},\\\"reddit-square\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1a2\\\",\\\"label\\\":\\\"reddit Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z\\\"}}},\\\"redo\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"forward\\\",\\\"repeat\\\",\\\"repeat\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f01e\\\",\\\"label\\\":\\\"Redo\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512.333 512\\\\\\\"><path d=\\\\\\\"M500.333 0h-47.411c-6.853 0-12.314 5.729-11.986 12.574l3.966 82.759C399.416 41.899 331.672 8 256.001 8 119.34 8 7.899 119.526 8 256.187 8.101 393.068 119.096 504 256 504c63.926 0 122.202-24.187 166.178-63.908 5.113-4.618 5.354-12.561.482-17.433l-33.971-33.971c-4.466-4.466-11.64-4.717-16.38-.543C341.308 415.448 300.606 432 256 432c-97.267 0-176-78.716-176-176 0-97.267 78.716-176 176-176 60.892 0 114.506 30.858 146.099 77.8l-101.525-4.865c-6.845-.328-12.574 5.133-12.574 11.986v47.411c0 6.627 5.373 12 12 12h200.333c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512.333\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M500.333 0h-47.411c-6.853 0-12.314 5.729-11.986 12.574l3.966 82.759C399.416 41.899 331.672 8 256.001 8 119.34 8 7.899 119.526 8 256.187 8.101 393.068 119.096 504 256 504c63.926 0 122.202-24.187 166.178-63.908 5.113-4.618 5.354-12.561.482-17.433l-33.971-33.971c-4.466-4.466-11.64-4.717-16.38-.543C341.308 415.448 300.606 432 256 432c-97.267 0-176-78.716-176-176 0-97.267 78.716-176 176-176 60.892 0 114.506 30.858 146.099 77.8l-101.525-4.865c-6.845-.328-12.574 5.133-12.574 11.986v47.411c0 6.627 5.373 12 12 12h200.333c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12z\\\"}}},\\\"redo-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"forward\\\",\\\"repeat\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2f9\\\",\\\"label\\\":\\\"Alternate Redo\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\\\"}}},\\\"registered\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f25d\\\",\\\"label\\\":\\\"Registered Trademark\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 448c-110.532 0-200-89.451-200-200 0-110.531 89.451-200 200-200 110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200zm110.442-81.791c-53.046-96.284-50.25-91.468-53.271-96.085 24.267-13.879 39.482-41.563 39.482-73.176 0-52.503-30.247-85.252-101.498-85.252h-78.667c-6.617 0-12 5.383-12 12V380c0 6.617 5.383 12 12 12h38.568c6.617 0 12-5.383 12-12v-83.663h31.958l47.515 89.303a11.98 11.98 0 0 0 10.593 6.36h42.81c9.14 0 14.914-9.799 10.51-17.791zM256.933 239.906h-33.875v-64.14h27.377c32.417 0 38.929 12.133 38.929 31.709-.001 20.913-11.518 32.431-32.431 32.431z\\\"}}},\\\"rendact\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3e4\\\",\\\"label\\\":\\\"Rendact\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248c18.6 0 36.7-2.1 54.1-5.9-5.6-7.4-10.8-14.4-15.9-21.3-12.4 2.1-25.2 3.3-38.3 3.3C124.3 480 24 379.7 24 256S124.3 32 248 32s224 100.3 224 224c0 71-33 134.2-84.5 175.3-25.9 18.8-39.1 21.4-83.5-44.2-78.7-112.9-48-71.1-73.7-108.3 72.8 8.9 228.5-72 168.6-168.6C314-26.8 15 93.8 59.7 226.4c3.2 9.8 14.4 38.6 45.6 38.6 2 0 2.6-.6 2-1.7-4.4-8.7-20.1-9.8-20.1-37.4 0-40.5 40.5-89.6 100.3-120 66.1-32.3 131.9-30.2 158.2 5.4 27.2 38.3-20.9 119.2-120.4 136.9 7.5-9.4 57-75.2 62.8-84 22.7-34.6 23.6-49 14-59.2-15.5-16.9-29.5-10.3-50.7-11.7-10.8-.9-113.7 181.2-136.4 216.9-5.9 9-21.2 34.1-21.2 50.9 0 21.3 2.8 51.4 20.6 51.4 10.6 0 8-18.7 8-26.6 0-12.9 27.4-49.4 74.8-104.6 20.4 36.1 57.7 114.3 130.2 209.7 98-33.1 168.5-125.8 168.5-235C496 119 385 8 248 8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248c18.6 0 36.7-2.1 54.1-5.9-5.6-7.4-10.8-14.4-15.9-21.3-12.4 2.1-25.2 3.3-38.3 3.3C124.3 480 24 379.7 24 256S124.3 32 248 32s224 100.3 224 224c0 71-33 134.2-84.5 175.3-25.9 18.8-39.1 21.4-83.5-44.2-78.7-112.9-48-71.1-73.7-108.3 72.8 8.9 228.5-72 168.6-168.6C314-26.8 15 93.8 59.7 226.4c3.2 9.8 14.4 38.6 45.6 38.6 2 0 2.6-.6 2-1.7-4.4-8.7-20.1-9.8-20.1-37.4 0-40.5 40.5-89.6 100.3-120 66.1-32.3 131.9-30.2 158.2 5.4 27.2 38.3-20.9 119.2-120.4 136.9 7.5-9.4 57-75.2 62.8-84 22.7-34.6 23.6-49 14-59.2-15.5-16.9-29.5-10.3-50.7-11.7-10.8-.9-113.7 181.2-136.4 216.9-5.9 9-21.2 34.1-21.2 50.9 0 21.3 2.8 51.4 20.6 51.4 10.6 0 8-18.7 8-26.6 0-12.9 27.4-49.4 74.8-104.6 20.4 36.1 57.7 114.3 130.2 209.7 98-33.1 168.5-125.8 168.5-235C496 119 385 8 248 8z\\\"}}},\\\"renren\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f18b\\\",\\\"label\\\":\\\"Renren\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z\\\"}}},\\\"reply\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3e5\\\",\\\"label\\\":\\\"Reply\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\\\"}}},\\\"reply-all\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f122\\\",\\\"label\\\":\\\"reply-all\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\\\"}}},\\\"replyd\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3e6\\\",\\\"label\\\":\\\"replyd\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z\\\"}}},\\\"researchgate\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4f8\\\",\\\"label\\\":\\\"Researchgate\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525209365021,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z\\\"}}},\\\"resolving\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3e7\\\",\\\"label\\\":\\\"Resolving\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z\\\"}}},\\\"retweet\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"refresh\\\",\\\"reload\\\",\\\"share\\\",\\\"swap\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f079\\\",\\\"label\\\":\\\"Retweet\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\\\"}}},\\\"rev\\\":{\\\"changes\\\":[\\\"5.1.0\\\",\\\"5.1.1\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5b2\\\",\\\"label\\\":\\\"Rev.io\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529520111565,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 410.22 512\\\\\\\"><path d=\\\\\\\"M270.67 274.89c0 36.16-29.41 65.57-65.56 65.57s-65.57-29.41-65.57-65.57 29.41-65.56 65.57-65.56 65.56 29.4 65.56 65.56zm139.55-5.05h-.13c-1.49-61.55-30.1-116.35-74.32-152.98l-45.38 26.2c43.17 28.03 71.81 76.63 71.81 131.82 0 86.62-70.47 157.09-157.09 157.09S48.02 361.5 48.02 274.88c0-81.86 62.96-149.27 142.99-156.43v39.12l108.76-62.79L191.01 32v38.32C84.31 77.57 0 166.36 0 274.89c0 111.59 89.12 202.29 200.06 204.98v.13h210.16V269.84z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"410.22\\\",\\\"512\\\"],\\\"width\\\":410,\\\"height\\\":512,\\\"path\\\":\\\"M270.67 274.89c0 36.16-29.41 65.57-65.56 65.57s-65.57-29.41-65.57-65.57 29.41-65.56 65.57-65.56 65.56 29.4 65.56 65.56zm139.55-5.05h-.13c-1.49-61.55-30.1-116.35-74.32-152.98l-45.38 26.2c43.17 28.03 71.81 76.63 71.81 131.82 0 86.62-70.47 157.09-157.09 157.09S48.02 361.5 48.02 274.88c0-81.86 62.96-149.27 142.99-156.43v39.12l108.76-62.79L191.01 32v38.32C84.31 77.57 0 166.36 0 274.89c0 111.59 89.12 202.29 200.06 204.98v.13h210.16V269.84z\\\"}}},\\\"ribbon\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"badge\\\",\\\"cause\\\",\\\"lapel\\\",\\\"pin\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4d6\\\",\\\"label\\\":\\\"Ribbon\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406026,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\\\"}}},\\\"road\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"street\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f018\\\",\\\"label\\\":\\\"road\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831540,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\\\"}}},\\\"robot\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f544\\\",\\\"label\\\":\\\"Robot\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154576,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M0 256v128c0 17.7 14.3 32 32 32h32V224H32c-17.7 0-32 14.3-32 32zM464 96H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H176c-44.2 0-80 35.8-80 80v272c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64V176c0-44.2-35.8-80-80-80zM256 416h-64v-32h64v32zm-32-120c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm128 120h-64v-32h64v32zm96 0h-64v-32h64v32zm-32-120c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm192-72h-32v192h32c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M0 256v128c0 17.7 14.3 32 32 32h32V224H32c-17.7 0-32 14.3-32 32zM464 96H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H176c-44.2 0-80 35.8-80 80v272c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64V176c0-44.2-35.8-80-80-80zM256 416h-64v-32h64v32zm-32-120c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm128 120h-64v-32h64v32zm96 0h-64v-32h64v32zm-32-120c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm192-72h-32v192h32c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32z\\\"}}},\\\"rocket\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"app\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f135\\\",\\\"label\\\":\\\"rocket\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M505.1 19.1C503.8 13 499 8.2 492.9 6.9 460.7 0 435.5 0 410.4 0 307.2 0 245.3 55.2 199.1 128H94.9c-18.2 0-34.8 10.3-42.9 26.5L2.6 253.3c-8 16 3.6 34.7 21.5 34.7h95.1c-5.9 12.8-11.9 25.5-18 37.7-3.1 6.2-1.9 13.6 3 18.5l63.6 63.6c4.9 4.9 12.3 6.1 18.5 3 12.2-6.1 24.9-12 37.7-17.9V488c0 17.8 18.8 29.4 34.7 21.5l98.7-49.4c16.3-8.1 26.5-24.8 26.5-42.9V312.8c72.6-46.3 128-108.4 128-211.1.1-25.2.1-50.4-6.8-82.6zM400 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M505.1 19.1C503.8 13 499 8.2 492.9 6.9 460.7 0 435.5 0 410.4 0 307.2 0 245.3 55.2 199.1 128H94.9c-18.2 0-34.8 10.3-42.9 26.5L2.6 253.3c-8 16 3.6 34.7 21.5 34.7h95.1c-5.9 12.8-11.9 25.5-18 37.7-3.1 6.2-1.9 13.6 3 18.5l63.6 63.6c4.9 4.9 12.3 6.1 18.5 3 12.2-6.1 24.9-12 37.7-17.9V488c0 17.8 18.8 29.4 34.7 21.5l98.7-49.4c16.3-8.1 26.5-24.8 26.5-42.9V312.8c72.6-46.3 128-108.4 128-211.1.1-25.2.1-50.4-6.8-82.6zM400 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\\\"}}},\\\"rocketchat\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3e8\\\",\\\"label\\\":\\\"Rocket.Chat\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 256.2c0-87.2-99.6-153.3-219.8-153.3-18.8 0-37.3 1.6-55.3 4.8-11.1-10.5-24.2-20-38-27.4C61.2 44.2 0 79.4 0 79.4s56.9 47.1 47.6 88.3c-52.3 52.3-52.5 124.1 0 176.6C56.9 385.6 0 432.6 0 432.6s61.2 35.2 134.9-.8c13.8-7.5 26.9-16.9 38-27.4 18 3.2 36.5 4.8 55.3 4.8 120.3-.1 219.8-65.8 219.8-153zm-219.7 124c-23.7 0-46.3-2.8-67.3-7.8-21.3 25.8-68.1 61.7-113.6 50.1 14.8-16 36.7-43.1 32-87.6-27.3-21.4-43.6-48.7-43.6-78.5 0-68.4 86.2-123.9 192.5-123.9S420.8 188 420.8 256.4c0 68.3-86.2 123.8-192.5 123.8zm25.6-123.9c0 14.2-11.5 25.8-25.6 25.8-14.1 0-25.6-11.5-25.6-25.8 0-14.2 11.5-25.8 25.6-25.8 14.1 0 25.6 11.6 25.6 25.8zm88.9 0c0 14.2-11.4 25.8-25.6 25.8-14.1 0-25.6-11.5-25.6-25.8 0-14.2 11.4-25.8 25.6-25.8 14.1 0 25.6 11.6 25.6 25.8zm-177.9 0c0 14.2-11.4 25.8-25.6 25.8-14.1 0-25.6-11.5-25.6-25.8 0-14.2 11.4-25.8 25.6-25.8 14.2 0 25.6 11.6 25.6 25.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 256.2c0-87.2-99.6-153.3-219.8-153.3-18.8 0-37.3 1.6-55.3 4.8-11.1-10.5-24.2-20-38-27.4C61.2 44.2 0 79.4 0 79.4s56.9 47.1 47.6 88.3c-52.3 52.3-52.5 124.1 0 176.6C56.9 385.6 0 432.6 0 432.6s61.2 35.2 134.9-.8c13.8-7.5 26.9-16.9 38-27.4 18 3.2 36.5 4.8 55.3 4.8 120.3-.1 219.8-65.8 219.8-153zm-219.7 124c-23.7 0-46.3-2.8-67.3-7.8-21.3 25.8-68.1 61.7-113.6 50.1 14.8-16 36.7-43.1 32-87.6-27.3-21.4-43.6-48.7-43.6-78.5 0-68.4 86.2-123.9 192.5-123.9S420.8 188 420.8 256.4c0 68.3-86.2 123.8-192.5 123.8zm25.6-123.9c0 14.2-11.5 25.8-25.6 25.8-14.1 0-25.6-11.5-25.6-25.8 0-14.2 11.5-25.8 25.6-25.8 14.1 0 25.6 11.6 25.6 25.8zm88.9 0c0 14.2-11.4 25.8-25.6 25.8-14.1 0-25.6-11.5-25.6-25.8 0-14.2 11.4-25.8 25.6-25.8 14.1 0 25.6 11.6 25.6 25.8zm-177.9 0c0 14.2-11.4 25.8-25.6 25.8-14.1 0-25.6-11.5-25.6-25.8 0-14.2 11.4-25.8 25.6-25.8 14.2 0 25.6 11.6 25.6 25.8z\\\"}}},\\\"rockrms\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3e9\\\",\\\"label\\\":\\\"Rockrms\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z\\\"}}},\\\"route\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4d7\\\",\\\"label\\\":\\\"Route\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821457,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"}}},\\\"rss\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"blog\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f09e\\\",\\\"label\\\":\\\"rss\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\\\"}}},\\\"rss-square\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"blog\\\",\\\"feed\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f143\\\",\\\"label\\\":\\\"RSS Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\\\"}}},\\\"ruble-sign\\\":{\\\"changes\\\":[\\\"4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"rub\\\",\\\"rub\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f158\\\",\\\"label\\\":\\\"Ruble Sign\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\\\"}}},\\\"ruler\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f545\\\",\\\"label\\\":\\\"Ruler\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154577,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\\\"}}},\\\"ruler-combined\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f546\\\",\\\"label\\\":\\\"Ruler Combined\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154577,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\\\"}}},\\\"ruler-horizontal\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f547\\\",\\\"label\\\":\\\"Ruler Horizontal\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154577,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\\\"}}},\\\"ruler-vertical\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f548\\\",\\\"label\\\":\\\"Ruler Vertical\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154577,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\\\"}}},\\\"rupee-sign\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"indian\\\",\\\"inr\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f156\\\",\\\"label\\\":\\\"Indian Rupee Sign\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\\\"}}},\\\"sad-cry\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"tear\\\",\\\"tears\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f5b3\\\",\\\"label\\\":\\\"Crying Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111696,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111633,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm144 386.4V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v151.4C315.5 447 282.8 456 248 456s-67.5-9-96-24.6V280c0-13.2-10.8-24-24-24s-24 10.8-24 24v114.4c-34.6-36-56-84.7-56-138.4 0-110.3 89.7-200 200-200s200 89.7 200 200c0 53.7-21.4 102.5-56 138.4zM205.8 234.5c4.4-2.4 6.9-7.4 6.1-12.4-4-25.2-34.2-42.1-59.8-42.1s-55.9 16.9-59.8 42.1c-.8 5 1.7 10 6.1 12.4 4.4 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.3 7.9 4.8 13.7 1.6zM344 180c-25.7 0-55.9 16.9-59.8 42.1-.8 5 1.7 10 6.1 12.4 4.5 2.4 9.9 1.8 13.7-1.6l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c2.5 2.2 8 4.7 13.7 1.6 4.4-2.4 6.9-7.4 6.1-12.4-3.9-25.2-34.1-42.1-59.8-42.1zm-96 92c-30.9 0-56 28.7-56 64s25.1 64 56 64 56-28.7 56-64-25.1-64-56-64z\\\"}}},\\\"sad-tear\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"tear\\\",\\\"tears\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f5b4\\\",\\\"label\\\":\\\"Loudly Crying Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111697,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111634,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm8-152c-13.2 0-24 10.8-24 24s10.8 24 24 24c23.8 0 46.3 10.5 61.6 28.8 8.1 9.8 23.2 11.9 33.8 3.1 10.2-8.5 11.6-23.6 3.1-33.8C330 320.8 294.1 304 256 304zm-88-64c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-165.6 98.8C151 290.1 126 325.4 126 342.9c0 22.7 18.8 41.1 42 41.1s42-18.4 42-41.1c0-17.5-25-52.8-36.4-68.1-2.8-3.7-8.4-3.7-11.2 0z\\\"}}},\\\"safari\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"browser\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f267\\\",\\\"label\\\":\\\"Safari\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M236.9 256.8c0-9.1 6.6-17.7 16.3-17.7 8.9 0 17.4 6.4 17.4 16.1 0 9.1-6.4 17.7-16.1 17.7-9 0-17.6-6.7-17.6-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-26.6 0c0-122.3-99.1-221.4-221.4-221.4S34.6 133.7 34.6 256 133.7 477.4 256 477.4 477.4 378.3 477.4 256zm-72.5 96.6c0 3.6 13 10.2 16.3 12.2-27.4 41.5-69.8 71.4-117.9 83.3l-4.4-18.5c-.3-2.5-1.9-2.8-4.2-2.8-1.9 0-3 2.8-2.8 4.2l4.4 18.8c-13.3 2.8-26.8 4.2-40.4 4.2-36.3 0-72-10.2-103-29.1 1.7-2.8 12.2-18 12.2-20.2 0-1.9-1.7-3.6-3.6-3.6-3.9 0-12.2 16.6-14.7 19.9-41.8-27.7-72-70.6-83.6-119.6l19.1-4.2c2.2-.6 2.8-2.2 2.8-4.2 0-1.9-2.8-3-4.4-2.8L62 294.5c-2.5-12.7-3.9-25.5-3.9-38.5 0-37.1 10.5-73.6 30.2-104.9 2.8 1.7 16.1 10.8 18.3 10.8 1.9 0 3.6-1.4 3.6-3.3 0-3.9-14.7-11.3-18-13.6 28.2-41.2 71.1-70.9 119.8-81.9l4.2 18.5c.6 2.2 2.2 2.8 4.2 2.8s3-2.8 2.8-4.4L219 61.7c12.2-2.2 24.6-3.6 37.1-3.6 37.1 0 73.3 10.5 104.9 30.2-1.9 2.8-10.8 15.8-10.8 18 0 1.9 1.4 3.6 3.3 3.6 3.9 0 11.3-14.4 13.3-17.7 41 27.7 70.3 70 81.7 118.2l-15.5 3.3c-2.5.6-2.8 2.2-2.8 4.4 0 1.9 2.8 3 4.2 2.8l15.8-3.6c2.5 12.7 3.9 25.7 3.9 38.7 0 36.3-10 72-28.8 102.7-2.8-1.4-14.4-9.7-16.6-9.7-2.1 0-3.8 1.7-3.8 3.6zm-33.2-242.2c-13 12.2-134.2 123.7-137.6 129.5l-96.6 160.5c12.7-11.9 134.2-124 137.3-129.3l96.9-160.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M236.9 256.8c0-9.1 6.6-17.7 16.3-17.7 8.9 0 17.4 6.4 17.4 16.1 0 9.1-6.4 17.7-16.1 17.7-9 0-17.6-6.7-17.6-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-26.6 0c0-122.3-99.1-221.4-221.4-221.4S34.6 133.7 34.6 256 133.7 477.4 256 477.4 477.4 378.3 477.4 256zm-72.5 96.6c0 3.6 13 10.2 16.3 12.2-27.4 41.5-69.8 71.4-117.9 83.3l-4.4-18.5c-.3-2.5-1.9-2.8-4.2-2.8-1.9 0-3 2.8-2.8 4.2l4.4 18.8c-13.3 2.8-26.8 4.2-40.4 4.2-36.3 0-72-10.2-103-29.1 1.7-2.8 12.2-18 12.2-20.2 0-1.9-1.7-3.6-3.6-3.6-3.9 0-12.2 16.6-14.7 19.9-41.8-27.7-72-70.6-83.6-119.6l19.1-4.2c2.2-.6 2.8-2.2 2.8-4.2 0-1.9-2.8-3-4.4-2.8L62 294.5c-2.5-12.7-3.9-25.5-3.9-38.5 0-37.1 10.5-73.6 30.2-104.9 2.8 1.7 16.1 10.8 18.3 10.8 1.9 0 3.6-1.4 3.6-3.3 0-3.9-14.7-11.3-18-13.6 28.2-41.2 71.1-70.9 119.8-81.9l4.2 18.5c.6 2.2 2.2 2.8 4.2 2.8s3-2.8 2.8-4.4L219 61.7c12.2-2.2 24.6-3.6 37.1-3.6 37.1 0 73.3 10.5 104.9 30.2-1.9 2.8-10.8 15.8-10.8 18 0 1.9 1.4 3.6 3.3 3.6 3.9 0 11.3-14.4 13.3-17.7 41 27.7 70.3 70 81.7 118.2l-15.5 3.3c-2.5.6-2.8 2.2-2.8 4.4 0 1.9 2.8 3 4.2 2.8l15.8-3.6c2.5 12.7 3.9 25.7 3.9 38.7 0 36.3-10 72-28.8 102.7-2.8-1.4-14.4-9.7-16.6-9.7-2.1 0-3.8 1.7-3.8 3.6zm-33.2-242.2c-13 12.2-134.2 123.7-137.6 129.5l-96.6 160.5c12.7-11.9 134.2-124 137.3-129.3l96.9-160.7z\\\"}}},\\\"sass\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f41e\\\",\\\"label\\\":\\\"Sass\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1508787003040,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640.4 512\\\\\\\"><path d=\\\\\\\"M551.1 291.9c-22.4.1-41.8 5.5-58 13.5-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2c-.1-1.1-1.4-6.6-14.3-6.7-12.9-.1-24 2.5-25.3 5.9-1.3 3.4-3.8 11.1-5.3 19.1-2.3 11.7-25.8 53.5-39.1 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2c-.1-1.1-1.4-6.6-14.3-6.7-12.9-.1-24 2.5-25.3 5.9-1.3 3.4-2.7 11.4-5.3 19.1-2.6 7.7-33.9 77.3-42.1 95.4-4.2 9.2-7.8 16.6-10.4 21.6s-.2.3-.4.9c-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2-.8 0-1.4 2-1.4 2s10.1-42.4-19.4-42.4c-18.4 0-44 20.2-56.6 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.8-38.2-101.9-65.2-99.1-116.5 1-18.7 7.5-67.8 127.1-127.4 98-48.8 176.4-35.4 189.9-5.6 19.4 42.5-41.9 121.6-143.7 133-38.8 4.3-59.2-10.7-64.3-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.8 28.9 18.7 6.1 64.2 9.5 119.2-11.8C367 196.5 415.1 130.2 401 74.7 386.6 18.3 293.1-.2 204.6 31.2 151.9 49.9 94.9 79.3 53.9 117.6 5.2 163.2-2.6 202.9.6 219.5c11.4 58.9 92.6 97.3 125.1 125.7-1.6.9-3.1 1.7-4.5 2.5-16.3 8.1-78.2 40.5-93.7 74.7-17.5 38.8 2.9 66.6 16.3 70.4 41.8 11.6 84.6-9.3 107.6-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.3-4.9 16.4-9.4 23.5-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.5 5 15.4 5 13.8 0 20-11.4 26.9-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.4 0 18.8-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.6-46 16.2-31.8 31.7-71.5 31.7-71.5s1.4 9.7 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2s0 .1.1.2c-3 4-6.4 8.3-9.9 12.5-12.8 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.7 2.5 11.5-.8 19.6-3.6 23.5-5.4 6.2-2.2 13.4-5.7 20.2-10.6 12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5 19.8-28.9 35.1-60.6 35.1-60.6s1.4 9.7 6.2 25.8c2.4 8.1 7.1 17 11.4 25.7-18.6 15.1-30.1 32.6-34.1 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5 6.5-2.2 14.3-5.7 21.6-11.1 12.5-9.2 24.6-22.1 23.8-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.1-10.2 62.1-7.2 55.7 6.5 66.6 41.3 64.5 55.8-2.1 14.6-13.8 22.6-17.7 25-3.9 2.4-5.1 3.3-4.8 5.1.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.2-11.8 30.3-38.7 1.6-34-31.1-71.4-89-71.1zM121.8 436.6c-18.4 20.1-44.2 27.7-55.3 21.3C54.6 451 59.3 421.4 82 400c13.8-13 31.6-25 43.4-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.3 30.4.3 57.2-19.1 78.3zm134.4-91.4c-6.4 15.7-19.9 55.7-28.1 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.1-11.3 21.2-14.9 23.8-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.9-13.9 0 .5.1 1 .1 1.6-.1 17.9-17.3 30-25.1 34.8zm85.6-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.6-15.3 19-24.5 1.2 3.8 1.9 7.4 1.9 10.8-.1 22.5-16.2 30.9-25.9 34.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640.4\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M551.1 291.9c-22.4.1-41.8 5.5-58 13.5-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2c-.1-1.1-1.4-6.6-14.3-6.7-12.9-.1-24 2.5-25.3 5.9-1.3 3.4-3.8 11.1-5.3 19.1-2.3 11.7-25.8 53.5-39.1 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2c-.1-1.1-1.4-6.6-14.3-6.7-12.9-.1-24 2.5-25.3 5.9-1.3 3.4-2.7 11.4-5.3 19.1-2.6 7.7-33.9 77.3-42.1 95.4-4.2 9.2-7.8 16.6-10.4 21.6s-.2.3-.4.9c-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2-.8 0-1.4 2-1.4 2s10.1-42.4-19.4-42.4c-18.4 0-44 20.2-56.6 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.8-38.2-101.9-65.2-99.1-116.5 1-18.7 7.5-67.8 127.1-127.4 98-48.8 176.4-35.4 189.9-5.6 19.4 42.5-41.9 121.6-143.7 133-38.8 4.3-59.2-10.7-64.3-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.8 28.9 18.7 6.1 64.2 9.5 119.2-11.8C367 196.5 415.1 130.2 401 74.7 386.6 18.3 293.1-.2 204.6 31.2 151.9 49.9 94.9 79.3 53.9 117.6 5.2 163.2-2.6 202.9.6 219.5c11.4 58.9 92.6 97.3 125.1 125.7-1.6.9-3.1 1.7-4.5 2.5-16.3 8.1-78.2 40.5-93.7 74.7-17.5 38.8 2.9 66.6 16.3 70.4 41.8 11.6 84.6-9.3 107.6-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.3-4.9 16.4-9.4 23.5-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.5 5 15.4 5 13.8 0 20-11.4 26.9-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.4 0 18.8-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.6-46 16.2-31.8 31.7-71.5 31.7-71.5s1.4 9.7 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2s0 .1.1.2c-3 4-6.4 8.3-9.9 12.5-12.8 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.7 2.5 11.5-.8 19.6-3.6 23.5-5.4 6.2-2.2 13.4-5.7 20.2-10.6 12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5 19.8-28.9 35.1-60.6 35.1-60.6s1.4 9.7 6.2 25.8c2.4 8.1 7.1 17 11.4 25.7-18.6 15.1-30.1 32.6-34.1 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5 6.5-2.2 14.3-5.7 21.6-11.1 12.5-9.2 24.6-22.1 23.8-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.1-10.2 62.1-7.2 55.7 6.5 66.6 41.3 64.5 55.8-2.1 14.6-13.8 22.6-17.7 25-3.9 2.4-5.1 3.3-4.8 5.1.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.2-11.8 30.3-38.7 1.6-34-31.1-71.4-89-71.1zM121.8 436.6c-18.4 20.1-44.2 27.7-55.3 21.3C54.6 451 59.3 421.4 82 400c13.8-13 31.6-25 43.4-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.3 30.4.3 57.2-19.1 78.3zm134.4-91.4c-6.4 15.7-19.9 55.7-28.1 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.1-11.3 21.2-14.9 23.8-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.9-13.9 0 .5.1 1 .1 1.6-.1 17.9-17.3 30-25.1 34.8zm85.6-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.6-15.3 19-24.5 1.2 3.8 1.9 7.4 1.9 10.8-.1 22.5-16.2 30.9-25.9 34.4z\\\"}}},\\\"save\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"floppy\\\",\\\"floppy-o\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0c7\\\",\\\"label\\\":\\\"Save\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM272 80v80H144V80h128zm122 352H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h42v104c0 13.255 10.745 24 24 24h176c13.255 0 24-10.745 24-24V83.882l78.243 78.243a6 6 0 0 1 1.757 4.243V426a6 6 0 0 1-6 6zM224 232c-48.523 0-88 39.477-88 88s39.477 88 88 88 88-39.477 88-88-39.477-88-88-88zm0 128c-22.056 0-40-17.944-40-40s17.944-40 40-40 40 17.944 40 40-17.944 40-40 40z\\\"}}},\\\"schlix\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3ea\\\",\\\"label\\\":\\\"SCHLIX\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z\\\"}}},\\\"school\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f549\\\",\\\"label\\\":\\\"School\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154577,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\\\"}}},\\\"screwdriver\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"admin\\\",\\\"container\\\",\\\"fix\\\",\\\"repair\\\",\\\"settings\\\",\\\"tool\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f54a\\\",\\\"label\\\":\\\"Screwdriver\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154577,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\\\"}}},\\\"scribd\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f28a\\\",\\\"label\\\":\\\"Scribd\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z\\\"}}},\\\"search\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bigger\\\",\\\"enlarge\\\",\\\"magnify\\\",\\\"preview\\\",\\\"zoom\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f002\\\",\\\"label\\\":\\\"Search\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\\\"}}},\\\"search-minus\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"magnify\\\",\\\"minify\\\",\\\"smaller\\\",\\\"zoom\\\",\\\"zoom out\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f010\\\",\\\"label\\\":\\\"Search Minus\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\\\"}}},\\\"search-plus\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bigger\\\",\\\"enlarge\\\",\\\"magnify\\\",\\\"zoom\\\",\\\"zoom in\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f00e\\\",\\\"label\\\":\\\"Search Plus\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\\\"}}},\\\"searchengin\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3eb\\\",\\\"label\\\":\\\"Searchengin\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 460 512\\\\\\\"><path d=\\\\\\\"M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"460\\\",\\\"512\\\"],\\\"width\\\":460,\\\"height\\\":512,\\\"path\\\":\\\"M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z\\\"}}},\\\"seedling\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4d8\\\",\\\"label\\\":\\\"Seedling\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406026,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\\\"}}},\\\"sellcast\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"eercast\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2da\\\",\\\"label\\\":\\\"Sellcast\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1502479343000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z\\\"}}},\\\"sellsy\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f213\\\",\\\"label\\\":\\\"Sellsy\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z\\\"}}},\\\"server\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cpu\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f233\\\",\\\"label\\\":\\\"Server\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\\\"}}},\\\"servicestack\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3ec\\\",\\\"label\\\":\\\"Servicestack\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z\\\"}}},\\\"shapes\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"circle\\\",\\\"square\\\",\\\"triangle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f61f\\\",\\\"label\\\":\\\"Shapes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831542,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 320v160c0 17.67-14.33 32-32 32H320c-17.67 0-32-14.33-32-32V320c0-17.67 14.33-32 32-32h160c17.67 0 32 14.33 32 32zm-384-64C57.31 256 0 313.31 0 384s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm351.03-32c25.34 0 41.18-26.67 28.51-48L412.51 16c-12.67-21.33-44.35-21.33-57.02 0l-95.03 160c-12.67 21.33 3.17 48 28.51 48h190.06z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 320v160c0 17.67-14.33 32-32 32H320c-17.67 0-32-14.33-32-32V320c0-17.67 14.33-32 32-32h160c17.67 0 32 14.33 32 32zm-384-64C57.31 256 0 313.31 0 384s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm351.03-32c25.34 0 41.18-26.67 28.51-48L412.51 16c-12.67-21.33-44.35-21.33-57.02 0l-95.03 160c-12.67 21.33 3.17 48 28.51 48h190.06z\\\"}}},\\\"share\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f064\\\",\\\"label\\\":\\\"Share\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\\\"}}},\\\"share-alt\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1e0\\\",\\\"label\\\":\\\"Alternate Share\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\\\"}}},\\\"share-alt-square\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1e1\\\",\\\"label\\\":\\\"Alternate Share Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\\\"}}},\\\"share-square\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"send\\\",\\\"social\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f14d\\\",\\\"label\\\":\\\"Share Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M561.938 158.06L417.94 14.092C387.926-15.922 336 5.097 336 48.032v57.198c-42.45 1.88-84.03 6.55-120.76 17.99-35.17 10.95-63.07 27.58-82.91 49.42C108.22 199.2 96 232.6 96 271.94c0 61.697 33.178 112.455 84.87 144.76 37.546 23.508 85.248-12.651 71.02-55.74-15.515-47.119-17.156-70.923 84.11-78.76V336c0 42.993 51.968 63.913 81.94 33.94l143.998-144c18.75-18.74 18.75-49.14 0-67.88zM384 336V232.16C255.309 234.082 166.492 255.35 206.31 376 176.79 357.55 144 324.08 144 271.94c0-109.334 129.14-118.947 240-119.85V48l144 144-144 144zm24.74 84.493a82.658 82.658 0 0 0 20.974-9.303c7.976-4.952 18.286.826 18.286 10.214V464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h132c6.627 0 12 5.373 12 12v4.486c0 4.917-2.987 9.369-7.569 11.152-13.702 5.331-26.396 11.537-38.05 18.585a12.138 12.138 0 0 1-6.28 1.777H54a6 6 0 0 0-6 6v340a6 6 0 0 0 6 6h340a6 6 0 0 0 6-6v-25.966c0-5.37 3.579-10.059 8.74-11.541z\\\"}}},\\\"shekel-sign\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"ils\\\",\\\"ils\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f20b\\\",\\\"label\\\":\\\"Shekel Sign\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154578,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\\\"}}},\\\"shield-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"shield\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3ed\\\",\\\"label\\\":\\\"Alternate Shield\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M496 128c0 221.282-135.934 344.645-221.539 380.308a48 48 0 0 1-36.923 0C130.495 463.713 16 326.487 16 128a48 48 0 0 1 29.539-44.308l192-80a48 48 0 0 1 36.923 0l192 80A48 48 0 0 1 496 128zM256 446.313l.066.034c93.735-46.689 172.497-156.308 175.817-307.729L256 65.333v380.98z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M496 128c0 221.282-135.934 344.645-221.539 380.308a48 48 0 0 1-36.923 0C130.495 463.713 16 326.487 16 128a48 48 0 0 1 29.539-44.308l192-80a48 48 0 0 1 36.923 0l192 80A48 48 0 0 1 496 128zM256 446.313l.066.034c93.735-46.689 172.497-156.308 175.817-307.729L256 65.333v380.98z\\\"}}},\\\"ship\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"boat\\\",\\\"sea\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f21a\\\",\\\"label\\\":\\\"Ship\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\\\"}}},\\\"shipping-fast\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f48b\\\",\\\"label\\\":\\\"Shipping Fast\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821458,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\\\"}}},\\\"shirtsinbulk\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f214\\\",\\\"label\\\":\\\"Shirts in Bulk\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M395.208 221.583H406v33.542h-10.792v-33.542zm0-9.625H406v-33.542h-10.792v33.542zm0 86.333H406V264.75h-10.792v33.541zM358.75 135.25h-33.542v10.5h33.542v-10.5zm36.458 206.208H406v-33.542h-10.792v33.542zM311.5 135.25h-33.542v10.5H311.5v-10.5zm-47.25 0H231v10.5h33.25v-10.5zm-47.25 0h-33.25v10.5H217v-10.5zm178.208 33.542H406V135.25h-33.542v10.5h22.75v23.042zm-255.792 259l30.625 13.417 4.375-9.917-30.625-13.417-4.375 9.917zM179.083 445l30.334 13.708 4.374-9.916-30.333-13.417-4.375 9.625zm216.125-60.375H406v-33.542h-10.792v33.542zm-334.833 8.167L91 406.208l4.375-9.624-30.625-13.709-4.375 9.917zm39.666 17.499l30.625 13.417 4.375-9.917-30.625-13.416-4.375 9.916zm132.417 38.501l4.375 9.916L267.459 445l-4.375-9.625-30.626 13.417zm118.417-52.208l4.375 9.624 30.624-13.416-4.374-9.917-30.625 13.709zM311.5 413.791l4.375 9.917 30.625-13.417-4.374-9.916-30.626 13.416zm-39.667 17.501l4.375 9.917 30.625-13.417-4.375-9.917-30.625 13.417zM311.5 46.583h-33.542v10.5H311.5v-10.5zm94.209 0h-33.251v10.5h33.251v-10.5zm-188.709 0h-33.25v10.5H217v-10.5zm141.75 0h-33.542v10.5h33.542v-10.5zm-94.5 0H231v10.5h33.25v-10.5zM448 3.708v406l-226.334 98.584L0 409.708v-406h448zm-29.166 116.958H29.166V390.75l192.792 85.75 196.875-85.75V120.666zm0-87.791H29.166V91.5h389.667V32.875zM75.542 46.583H42.291v10.5h33.251v-10.5zm94.5 0H136.5v10.5h33.542v-10.5zm-47.251 0H89.25v10.5h33.542v-10.5zm7.584 236.542c0-50.167 41.125-91.292 91.292-91.292 50.458 0 91.292 41.125 91.292 91.292 0 50.458-40.833 91.292-91.292 91.292-50.167-.001-91.292-40.834-91.292-91.292zm120.75 18.084c0 13.125-23.917 14.291-32.666 14.291-12.25 0-29.75-2.625-35.875-14.875h-.875L172.666 319c14.876 9.333 29.167 12.25 47.25 12.25 19.542 0 51.042-5.833 51.042-31.209 0-48.125-78.458-16.333-78.458-37.916 0-13.125 20.708-14.875 29.75-14.875 10.791 0 29.166 3.208 35.583 13.124h.875l8.751-16.916c-15.167-6.125-27.417-11.959-44.334-11.959-20.125 0-49.583 6.417-49.583 31.792 0 44.334 77.583 11.959 77.583 37.918zM122.791 135.25H89.25v10.5h33.542v-10.5zm-69.999 10.5h22.75v-10.5H42v33.542h10.792V145.75zm0 32.666H42v33.542h10.792v-33.542zm117.25-43.166H136.5v10.5h33.542v-10.5zm-117.25 86.333H42v33.542h10.792v-33.542zm0 86.334H42v33.542h10.792v-33.542zm0-43.167H42v33.542h10.792V264.75zm0 86.333H42v33.542h10.792v-33.542z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M395.208 221.583H406v33.542h-10.792v-33.542zm0-9.625H406v-33.542h-10.792v33.542zm0 86.333H406V264.75h-10.792v33.541zM358.75 135.25h-33.542v10.5h33.542v-10.5zm36.458 206.208H406v-33.542h-10.792v33.542zM311.5 135.25h-33.542v10.5H311.5v-10.5zm-47.25 0H231v10.5h33.25v-10.5zm-47.25 0h-33.25v10.5H217v-10.5zm178.208 33.542H406V135.25h-33.542v10.5h22.75v23.042zm-255.792 259l30.625 13.417 4.375-9.917-30.625-13.417-4.375 9.917zM179.083 445l30.334 13.708 4.374-9.916-30.333-13.417-4.375 9.625zm216.125-60.375H406v-33.542h-10.792v33.542zm-334.833 8.167L91 406.208l4.375-9.624-30.625-13.709-4.375 9.917zm39.666 17.499l30.625 13.417 4.375-9.917-30.625-13.416-4.375 9.916zm132.417 38.501l4.375 9.916L267.459 445l-4.375-9.625-30.626 13.417zm118.417-52.208l4.375 9.624 30.624-13.416-4.374-9.917-30.625 13.709zM311.5 413.791l4.375 9.917 30.625-13.417-4.374-9.916-30.626 13.416zm-39.667 17.501l4.375 9.917 30.625-13.417-4.375-9.917-30.625 13.417zM311.5 46.583h-33.542v10.5H311.5v-10.5zm94.209 0h-33.251v10.5h33.251v-10.5zm-188.709 0h-33.25v10.5H217v-10.5zm141.75 0h-33.542v10.5h33.542v-10.5zm-94.5 0H231v10.5h33.25v-10.5zM448 3.708v406l-226.334 98.584L0 409.708v-406h448zm-29.166 116.958H29.166V390.75l192.792 85.75 196.875-85.75V120.666zm0-87.791H29.166V91.5h389.667V32.875zM75.542 46.583H42.291v10.5h33.251v-10.5zm94.5 0H136.5v10.5h33.542v-10.5zm-47.251 0H89.25v10.5h33.542v-10.5zm7.584 236.542c0-50.167 41.125-91.292 91.292-91.292 50.458 0 91.292 41.125 91.292 91.292 0 50.458-40.833 91.292-91.292 91.292-50.167-.001-91.292-40.834-91.292-91.292zm120.75 18.084c0 13.125-23.917 14.291-32.666 14.291-12.25 0-29.75-2.625-35.875-14.875h-.875L172.666 319c14.876 9.333 29.167 12.25 47.25 12.25 19.542 0 51.042-5.833 51.042-31.209 0-48.125-78.458-16.333-78.458-37.916 0-13.125 20.708-14.875 29.75-14.875 10.791 0 29.166 3.208 35.583 13.124h.875l8.751-16.916c-15.167-6.125-27.417-11.959-44.334-11.959-20.125 0-49.583 6.417-49.583 31.792 0 44.334 77.583 11.959 77.583 37.918zM122.791 135.25H89.25v10.5h33.542v-10.5zm-69.999 10.5h22.75v-10.5H42v33.542h10.792V145.75zm0 32.666H42v33.542h10.792v-33.542zm117.25-43.166H136.5v10.5h33.542v-10.5zm-117.25 86.333H42v33.542h10.792v-33.542zm0 86.334H42v33.542h10.792v-33.542zm0-43.167H42v33.542h10.792V264.75zm0 86.333H42v33.542h10.792v-33.542z\\\"}}},\\\"shoe-prints\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"feet\\\",\\\"footprints\\\",\\\"steps\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f54b\\\",\\\"label\\\":\\\"Shoe Prints\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154578,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\\\"}}},\\\"shopping-bag\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f290\\\",\\\"label\\\":\\\"Shopping Bag\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502810244000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\\\"}}},\\\"shopping-basket\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f291\\\",\\\"label\\\":\\\"Shopping Basket\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502810244000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\\\"}}},\\\"shopping-cart\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"buy\\\",\\\"checkout\\\",\\\"payment\\\",\\\"purchase\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f07a\\\",\\\"label\\\":\\\"shopping-cart\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\\\"}}},\\\"shopware\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5b5\\\",\\\"label\\\":\\\"Shopware\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529514897193,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 495.99 512\\\\\\\"><path d=\\\\\\\"M395.5 455.27c-42.95 31.79-93.95 48.59-147.48 48.59-137.21 0-248.02-111-248.02-248 0-137.19 111.04-248 248.02-248 61.3 0 120.14 22.55 165.68 63.5 2.62 2.36.58 6.64-2.86 6.18-17.67-2.43-36.75-3.66-56.71-3.66-129.36 0-222.4 53.47-222.4 155.35 0 109.04 92.13 145.88 176.83 178.73 33.64 13.04 65.4 25.36 86.96 41.59 1.9 1.44 1.89 4.31-.02 5.72zm99.46-222.32c-.08-.94-.55-1.83-1.27-2.44-51.76-42.96-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62.01 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93 1.88 1.05 4.26.19 5.05-1.82 18.89-48.39 17.94-90.23 15.93-113.31z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"495.99\\\",\\\"512\\\"],\\\"width\\\":495,\\\"height\\\":512,\\\"path\\\":\\\"M395.5 455.27c-42.95 31.79-93.95 48.59-147.48 48.59-137.21 0-248.02-111-248.02-248 0-137.19 111.04-248 248.02-248 61.3 0 120.14 22.55 165.68 63.5 2.62 2.36.58 6.64-2.86 6.18-17.67-2.43-36.75-3.66-56.71-3.66-129.36 0-222.4 53.47-222.4 155.35 0 109.04 92.13 145.88 176.83 178.73 33.64 13.04 65.4 25.36 86.96 41.59 1.9 1.44 1.89 4.31-.02 5.72zm99.46-222.32c-.08-.94-.55-1.83-1.27-2.44-51.76-42.96-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62.01 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93 1.88 1.05 4.26.19 5.05-1.82 18.89-48.39 17.94-90.23 15.93-113.31z\\\"}}},\\\"shower\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2cc\\\",\\\"label\\\":\\\"Shower\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M389.66 135.6L231.6 293.66c-9.37 9.37-24.57 9.37-33.94 0l-11.32-11.32c-9.37-9.37-9.37-24.57 0-33.94l.11-.11c-34.03-40.21-35.16-98.94-3.39-140.38-11.97-7.55-26.14-11.91-41.3-11.91C98.88 96 64 130.88 64 173.76V480H0V173.76C0 95.59 63.59 32 141.76 32c36.93 0 70.61 14.2 95.86 37.42 35.9-11.51 76.5-4.5 106.67 21.03l.11-.11c9.37-9.37 24.57-9.37 33.94 0l11.32 11.32c9.37 9.37 9.37 24.57 0 33.94zM384 208c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm32 0c0-8.837 7.163-16 16-16s16 7.163 16 16-7.163 16-16 16-16-7.163-16-16zm96 0c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-160 32c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm48-16c8.837 0 16 7.163 16 16s-7.163 16-16 16-16-7.163-16-16 7.163-16 16-16zm80 16c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-160 32c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm32 0c0-8.837 7.163-16 16-16s16 7.163 16 16-7.163 16-16 16-16-7.163-16-16zm96 0c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-128 32c0-8.837 7.163-16 16-16s16 7.163 16 16-7.163 16-16 16-16-7.163-16-16zm96 0c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-96 32c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm64 0c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-32 32c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-32 32c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M389.66 135.6L231.6 293.66c-9.37 9.37-24.57 9.37-33.94 0l-11.32-11.32c-9.37-9.37-9.37-24.57 0-33.94l.11-.11c-34.03-40.21-35.16-98.94-3.39-140.38-11.97-7.55-26.14-11.91-41.3-11.91C98.88 96 64 130.88 64 173.76V480H0V173.76C0 95.59 63.59 32 141.76 32c36.93 0 70.61 14.2 95.86 37.42 35.9-11.51 76.5-4.5 106.67 21.03l.11-.11c9.37-9.37 24.57-9.37 33.94 0l11.32 11.32c9.37 9.37 9.37 24.57 0 33.94zM384 208c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm32 0c0-8.837 7.163-16 16-16s16 7.163 16 16-7.163 16-16 16-16-7.163-16-16zm96 0c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-160 32c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm48-16c8.837 0 16 7.163 16 16s-7.163 16-16 16-16-7.163-16-16 7.163-16 16-16zm80 16c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-160 32c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm32 0c0-8.837 7.163-16 16-16s16 7.163 16 16-7.163 16-16 16-16-7.163-16-16zm96 0c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-128 32c0-8.837 7.163-16 16-16s16 7.163 16 16-7.163 16-16 16-16-7.163-16-16zm96 0c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-96 32c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm64 0c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-32 32c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16zm-32 32c0 8.837-7.163 16-16 16s-16-7.163-16-16 7.163-16 16-16 16 7.163 16 16z\\\"}}},\\\"shuttle-van\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"machine\\\",\\\"public-transportation\\\",\\\"transportation\\\",\\\"vehicle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5b6\\\",\\\"label\\\":\\\"Shuttle Van\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111697,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\\\"}}},\\\"sign\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4d9\\\",\\\"label\\\":\\\"Sign\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821458,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\\\"}}},\\\"sign-in-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"enter\\\",\\\"join\\\",\\\"log in\\\",\\\"login\\\",\\\"sign in\\\",\\\"sign up\\\",\\\"sign-in\\\",\\\"signin\\\",\\\"signup\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2f6\\\",\\\"label\\\":\\\"Alternate Sign In\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\\\"}}},\\\"sign-language\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2a7\\\",\\\"label\\\":\\\"Sign Language\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\\\"}}},\\\"sign-out-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"exit\\\",\\\"leave\\\",\\\"log out\\\",\\\"logout\\\",\\\"sign-out\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2f5\\\",\\\"label\\\":\\\"Alternate Sign Out\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\\\"}}},\\\"signal\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bars\\\",\\\"graph\\\",\\\"online\\\",\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f012\\\",\\\"label\\\":\\\"signal\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M36 384h56c6.6 0 12 5.4 12 12v104c0 6.6-5.4 12-12 12H36c-6.6 0-12-5.4-12-12V396c0-6.6 5.4-12 12-12zm116-36v152c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V348c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12zm128-80v232c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V268c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12zm128-112v344c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V156c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12zM536 12v488c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V12c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M36 384h56c6.6 0 12 5.4 12 12v104c0 6.6-5.4 12-12 12H36c-6.6 0-12-5.4-12-12V396c0-6.6 5.4-12 12-12zm116-36v152c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V348c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12zm128-80v232c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V268c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12zm128-112v344c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V156c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12zM536 12v488c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V12c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12z\\\"}}},\\\"signature\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"John Hancock\\\",\\\"cursive\\\",\\\"name\\\",\\\"writing\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5b7\\\",\\\"label\\\":\\\"Signature\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111698,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M496 320h-91.86c-9.27 0-19.72-11.31-25.78-28.52-15.23-43.36-48.11-70.3-85.8-70.3-30.84 0-58.47 18.05-76.11 49.23L194.8 106.5C188.84 81.08 169.34 64 146.28 64c-23.05 0-42.55 17.08-48.5 42.5L56.16 284.2C50.7 307.45 37.75 320 28.33 320H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h12.33c41.97 0 78.19-34.23 90.14-85.2l23.84-101.78 29.25 222.11c1.98 15.05 13.82 27.45 28.94 28.75.99.09 1.96.13 2.93.13 14.08 0 26.64-9.27 30.69-22.95l33.03-112.34c5.88-16.72 15.84-27.52 25.41-27.52 9.58 0 19.55 10.8 25.78 28.52 15.23 43.36 48.11 70.3 85.8 70.3H496c8.84 0 16-7.16 16-16v-32c0-8.86-7.16-16.02-16-16.02z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M496 320h-91.86c-9.27 0-19.72-11.31-25.78-28.52-15.23-43.36-48.11-70.3-85.8-70.3-30.84 0-58.47 18.05-76.11 49.23L194.8 106.5C188.84 81.08 169.34 64 146.28 64c-23.05 0-42.55 17.08-48.5 42.5L56.16 284.2C50.7 307.45 37.75 320 28.33 320H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h12.33c41.97 0 78.19-34.23 90.14-85.2l23.84-101.78 29.25 222.11c1.98 15.05 13.82 27.45 28.94 28.75.99.09 1.96.13 2.93.13 14.08 0 26.64-9.27 30.69-22.95l33.03-112.34c5.88-16.72 15.84-27.52 25.41-27.52 9.58 0 19.55 10.8 25.78 28.52 15.23 43.36 48.11 70.3 85.8 70.3H496c8.84 0 16-7.16 16-16v-32c0-8.86-7.16-16.02-16-16.02z\\\"}}},\\\"simplybuilt\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f215\\\",\\\"label\\\":\\\"SimplyBuilt\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z\\\"}}},\\\"sistrix\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3ee\\\",\\\"label\\\":\\\"SISTRIX\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z\\\"}}},\\\"sitemap\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"directory\\\",\\\"hierarchy\\\",\\\"ia\\\",\\\"information architecture\\\",\\\"organization\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0e8\\\",\\\"label\\\":\\\"Sitemap\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154578,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\\\"}}},\\\"sith\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f512\\\",\\\"label\\\":\\\"Sith\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442522,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z\\\"}}},\\\"skull\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bones\\\",\\\"skeleton\\\",\\\"yorick\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f54c\\\",\\\"label\\\":\\\"Skull\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154579,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\\\"}}},\\\"skyatlas\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f216\\\",\\\"label\\\":\\\"skyatlas\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426582001,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z\\\"}}},\\\"skype\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f17e\\\",\\\"label\\\":\\\"Skype\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z\\\"}}},\\\"slack\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"anchor\\\",\\\"hash\\\",\\\"hashtag\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f198\\\",\\\"label\\\":\\\"Slack Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M244.2 217.5l19.3 57.7-59.8 20-19.3-57.7 59.8-20zm41.4 243.7C131.6 507.4 65 471.6 18.8 317.6S8.4 97 162.4 50.8C316.4 4.6 383 40.4 429.2 194.4c46.2 154 10.4 220.6-143.6 266.8zM366.2 265c-3.9-12.2-17.2-18.6-29.4-14.7l-29 9.7-19.3-57.7 29-9.7c12.2-3.9 18.6-17.2 14.7-29.4-3.9-12.2-17.2-18.6-29.4-14.7l-29 9.7-10-30.1c-3.9-12.2-17.2-18.6-29.4-14.7-12.2 3.9-18.6 17.2-14.7 29.4l10 30.1-59.8 20.1-10-30.1c-3.9-12.2-17.2-18.6-29.4-14.7-12.2 3.9-18.6 17.2-14.7 29.4l10 30.1-29 9.7c-12.2 3.9-18.6 17.2-14.7 29.4 3.2 9.3 12.2 15.4 21.5 15.8 4.3.6 7.7-1 36.9-10.7l19.3 57.7-29 9.7c-12.2 3.9-18.6 17.2-14.7 29.4 3.2 9.3 12.2 15.4 21.5 15.8 4.3.6 7.7-1 36.9-10.7l10 30.1c3.7 10.8 15.8 18.6 29.4 14.7 12.2-3.9 18.6-17.2 14.7-29.4l-10-30.1 59.8-20.1 10 30.1c3.7 10.8 15.8 18.6 29.4 14.7 12.2-3.9 18.6-17.2 14.7-29.4l-10-30.1 29-9.7c12.2-4.2 18.6-17.5 14.7-29.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M244.2 217.5l19.3 57.7-59.8 20-19.3-57.7 59.8-20zm41.4 243.7C131.6 507.4 65 471.6 18.8 317.6S8.4 97 162.4 50.8C316.4 4.6 383 40.4 429.2 194.4c46.2 154 10.4 220.6-143.6 266.8zM366.2 265c-3.9-12.2-17.2-18.6-29.4-14.7l-29 9.7-19.3-57.7 29-9.7c12.2-3.9 18.6-17.2 14.7-29.4-3.9-12.2-17.2-18.6-29.4-14.7l-29 9.7-10-30.1c-3.9-12.2-17.2-18.6-29.4-14.7-12.2 3.9-18.6 17.2-14.7 29.4l10 30.1-59.8 20.1-10-30.1c-3.9-12.2-17.2-18.6-29.4-14.7-12.2 3.9-18.6 17.2-14.7 29.4l10 30.1-29 9.7c-12.2 3.9-18.6 17.2-14.7 29.4 3.2 9.3 12.2 15.4 21.5 15.8 4.3.6 7.7-1 36.9-10.7l19.3 57.7-29 9.7c-12.2 3.9-18.6 17.2-14.7 29.4 3.2 9.3 12.2 15.4 21.5 15.8 4.3.6 7.7-1 36.9-10.7l10 30.1c3.7 10.8 15.8 18.6 29.4 14.7 12.2-3.9 18.6-17.2 14.7-29.4l-10-30.1 59.8-20.1 10 30.1c3.7 10.8 15.8 18.6 29.4 14.7 12.2-3.9 18.6-17.2 14.7-29.4l-10-30.1 29-9.7c12.2-4.2 18.6-17.5 14.7-29.6z\\\"}}},\\\"slack-hash\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"anchor\\\",\\\"hash\\\",\\\"hashtag\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3ef\\\",\\\"label\\\":\\\"Slack Hashtag\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z\\\"}}},\\\"sliders-h\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"settings\\\",\\\"sliders\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1de\\\",\\\"label\\\":\\\"Horizontal Sliders\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365070,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\\\"}}},\\\"slideshare\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1e7\\\",\\\"label\\\":\\\"Slideshare\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M249.429 211.436c0 31.716-27.715 57.717-61.717 57.717-34.001 0-61.716-26.001-61.716-57.717 0-32.001 27.715-57.716 61.716-57.716 34.001 0 61.717 25.715 61.717 57.716zm254.294 50.002c-18.286 22.573-53.144 50.288-106.289 72.003C453.722 525.163 260 555.735 263.143 457.446c0 1.714-.286-52.859-.286-93.432-4.285-.858-8.571-2-13.714-3.143 0 40.858-.286 98.289-.286 96.575C252 555.735 58.278 525.163 114.566 333.441c-53.145-21.715-88.003-49.43-106.29-72.003-9.143-13.714.858-28.287 16.001-17.715 2 1.428 4.285 2.857 6.285 4.285V49.716C30.563 22.287 51.135 0 76.565 0h359.157c25.429 0 46.002 22.287 46.002 49.716v198.293l6-4.285c15.143-10.573 25.143 4 15.999 17.714zm-46.572-189.15c0-32.858-10.572-45.716-40.859-45.716H98.566c-31.716 0-40.573 10.858-40.573 45.716v192.293c67.717 35.43 125.72 29.144 157.435 28.001 13.429-.286 22.001 2.286 27.144 7.715 1.689 1.687 10.023 9.446 20.287 17.143 1.143-15.715 10.001-25.715 33.716-24.858 32.287 1.428 91.718 7.715 160.577-29.716V72.288zM331.146 153.72c-34.002 0-61.716 25.715-61.716 57.716 0 31.716 27.715 57.717 61.716 57.717 34.287 0 61.716-26.001 61.716-57.717 0-32.001-27.429-57.716-61.716-57.716z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M249.429 211.436c0 31.716-27.715 57.717-61.717 57.717-34.001 0-61.716-26.001-61.716-57.717 0-32.001 27.715-57.716 61.716-57.716 34.001 0 61.717 25.715 61.717 57.716zm254.294 50.002c-18.286 22.573-53.144 50.288-106.289 72.003C453.722 525.163 260 555.735 263.143 457.446c0 1.714-.286-52.859-.286-93.432-4.285-.858-8.571-2-13.714-3.143 0 40.858-.286 98.289-.286 96.575C252 555.735 58.278 525.163 114.566 333.441c-53.145-21.715-88.003-49.43-106.29-72.003-9.143-13.714.858-28.287 16.001-17.715 2 1.428 4.285 2.857 6.285 4.285V49.716C30.563 22.287 51.135 0 76.565 0h359.157c25.429 0 46.002 22.287 46.002 49.716v198.293l6-4.285c15.143-10.573 25.143 4 15.999 17.714zm-46.572-189.15c0-32.858-10.572-45.716-40.859-45.716H98.566c-31.716 0-40.573 10.858-40.573 45.716v192.293c67.717 35.43 125.72 29.144 157.435 28.001 13.429-.286 22.001 2.286 27.144 7.715 1.689 1.687 10.023 9.446 20.287 17.143 1.143-15.715 10.001-25.715 33.716-24.858 32.287 1.428 91.718 7.715 160.577-29.716V72.288zM331.146 153.72c-34.002 0-61.716 25.715-61.716 57.716 0 31.716 27.715 57.717 61.716 57.717 34.287 0 61.716-26.001 61.716-57.717 0-32.001-27.429-57.716-61.716-57.716z\\\"}}},\\\"smile\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\",\\\"5.0.9\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"approve\\\",\\\"emoticon\\\",\\\"face\\\",\\\"happy\\\",\\\"rating\\\",\\\"satisfied\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f118\\\",\\\"label\\\":\\\"Smiling Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111699,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111635,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z\\\"}}},\\\"smile-beam\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"happy\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f5b8\\\",\\\"label\\\":\\\"Beaming Face With Smiling Eyes\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111698,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111634,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm84-143.4c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.6-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.2-8.4-25.3-7.1-33.8 3.1zM136.5 211c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4s-52.7 29.3-56 71.4c-.3 3.7 2.1 7.2 5.7 8.3 3.4 1.1 7.4-.5 9.3-3.7l9.5-17zM328 152c-23.8 0-52.7 29.3-56 71.4-.3 3.7 2.1 7.2 5.7 8.3 3.5 1.1 7.4-.5 9.3-3.7l9.5-17c7.7-13.7 19.2-21.6 31.5-21.6s23.8 7.9 31.5 21.6l9.5 17c2.1 3.7 6.2 4.7 9.3 3.7 3.6-1.1 6-4.5 5.7-8.3-3.3-42.1-32.2-71.4-56-71.4z\\\"}}},\\\"smile-wink\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"happy\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f4da\\\",\\\"label\\\":\\\"Winking Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111699,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111635,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm117.8-146.4c-10.2-8.5-25.3-7.1-33.8 3.1-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8zM168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-60c-25.7 0-55.9 16.9-59.9 42.1-1.7 11.2 11.5 18.2 19.8 10.8l9.5-8.5c14.8-13.2 46.2-13.2 61 0l9.5 8.5c8.5 7.4 21.6.3 19.8-10.8-3.8-25.2-34-42.1-59.7-42.1z\\\"}}},\\\"smoking\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cigarette\\\",\\\"nicotine\\\",\\\"smoking status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f48d\\\",\\\"label\\\":\\\"Smoking\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821458,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\\\"}}},\\\"smoking-ban\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"no smoking\\\",\\\"non-smoking\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f54d\\\",\\\"label\\\":\\\"Smoking Ban\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154579,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\\\"}}},\\\"snapchat\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2ab\\\",\\\"label\\\":\\\"Snapchat\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\\\"}}},\\\"snapchat-ghost\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2ac\\\",\\\"label\\\":\\\"Snapchat Ghost\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821388,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z\\\"}}},\\\"snapchat-square\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2ad\\\",\\\"label\\\":\\\"Snapchat Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\\\"}}},\\\"snowflake\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2dc\\\",\\\"label\\\":\\\"Snowflake\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503066239000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M444.816 301.639a24.12 24.12 0 0 0 2.661-16.978c-2.725-12.966-15.339-21.245-28.174-18.492l-87.407 25.046L264 256l67.896-35.215 87.407 25.046c12.835 2.753 25.449-5.526 28.174-18.492 2.725-12.966-5.471-25.708-18.305-28.461l-47.477-7.137 53.077-30.956c11.363-6.627 15.257-21.306 8.696-32.785-6.561-11.479-21.091-15.412-32.454-8.785l-53.077 30.956 17.621-45.104c4.057-12.606-2.768-26.146-15.247-30.245-12.478-4.099-25.883 2.797-29.94 15.402l-22.232 88.99-60.38 35.215V144l65.175-63.945c8.778-9.852 7.987-25.027-1.766-33.894-9.753-8.867-24.775-8.068-33.552 1.784l-29.857 37.967V24c0-13.255-10.637-24-23.758-24s-23.758 10.745-23.758 24v61.912l-29.857-37.967c-8.779-9.852-23.799-10.652-33.552-1.784-9.753 8.867-10.543 24.042-1.766 33.894L200.242 144v70.431l-60.38-35.215-22.232-88.99c-4.057-12.605-17.462-19.501-29.94-15.402-12.478 4.099-19.304 17.64-15.247 30.245l17.62 45.104-53.077-30.956c-11.363-6.627-25.893-2.694-32.454 8.785s-2.667 26.157 8.696 32.785l53.077 30.956-47.477 7.137C5.993 201.634-2.203 214.375.523 227.341c2.725 12.965 15.339 21.245 28.174 18.492l87.407-25.046L184 256l-67.896 35.215-87.406-25.045c-12.835-2.753-25.449 5.526-28.174 18.492-2.725 12.967 5.47 25.708 18.305 28.461l47.477 7.137-53.077 30.956C1.866 357.843-2.027 372.521 4.533 384s21.091 15.412 32.454 8.785l53.077-30.956-17.62 45.104a24.157 24.157 0 0 0 2.022 19.428c2.831 4.953 7.416 8.909 13.224 10.816 12.478 4.099 25.883-2.797 29.94-15.402l22.232-88.99 60.38-35.215V368l-65.175 63.945c-8.778 9.852-7.987 25.027 1.766 33.894 9.754 8.868 24.774 8.068 33.552-1.784l29.857-37.967V488c0 13.255 10.637 24 23.758 24s23.758-10.745 23.758-24v-61.912l29.857 37.967A23.59 23.59 0 0 0 295.282 472a23.534 23.534 0 0 0 15.885-6.161c9.753-8.867 10.544-24.042 1.766-33.894L247.758 368v-70.431l60.38 35.215 22.232 88.99c4.057 12.605 17.462 19.501 29.94 15.402 12.479-4.099 19.304-17.64 15.247-30.245l-17.621-45.104 53.077 30.956c11.363 6.627 25.893 2.694 32.454-8.785s2.667-26.157-8.696-32.785l-53.077-30.956 47.477-7.137c6.86-1.469 12.394-5.793 15.645-11.481z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M444.816 301.639a24.12 24.12 0 0 0 2.661-16.978c-2.725-12.966-15.339-21.245-28.174-18.492l-87.407 25.046L264 256l67.896-35.215 87.407 25.046c12.835 2.753 25.449-5.526 28.174-18.492 2.725-12.966-5.471-25.708-18.305-28.461l-47.477-7.137 53.077-30.956c11.363-6.627 15.257-21.306 8.696-32.785-6.561-11.479-21.091-15.412-32.454-8.785l-53.077 30.956 17.621-45.104c4.057-12.606-2.768-26.146-15.247-30.245-12.478-4.099-25.883 2.797-29.94 15.402l-22.232 88.99-60.38 35.215V144l65.175-63.945c8.778-9.852 7.987-25.027-1.766-33.894-9.753-8.867-24.775-8.068-33.552 1.784l-29.857 37.967V24c0-13.255-10.637-24-23.758-24s-23.758 10.745-23.758 24v61.912l-29.857-37.967c-8.779-9.852-23.799-10.652-33.552-1.784-9.753 8.867-10.543 24.042-1.766 33.894L200.242 144v70.431l-60.38-35.215-22.232-88.99c-4.057-12.605-17.462-19.501-29.94-15.402-12.478 4.099-19.304 17.64-15.247 30.245l17.62 45.104-53.077-30.956c-11.363-6.627-25.893-2.694-32.454 8.785s-2.667 26.157 8.696 32.785l53.077 30.956-47.477 7.137C5.993 201.634-2.203 214.375.523 227.341c2.725 12.965 15.339 21.245 28.174 18.492l87.407-25.046L184 256l-67.896 35.215-87.406-25.045c-12.835-2.753-25.449 5.526-28.174 18.492-2.725 12.967 5.47 25.708 18.305 28.461l47.477 7.137-53.077 30.956C1.866 357.843-2.027 372.521 4.533 384s21.091 15.412 32.454 8.785l53.077-30.956-17.62 45.104a24.157 24.157 0 0 0 2.022 19.428c2.831 4.953 7.416 8.909 13.224 10.816 12.478 4.099 25.883-2.797 29.94-15.402l22.232-88.99 60.38-35.215V368l-65.175 63.945c-8.778 9.852-7.987 25.027 1.766 33.894 9.754 8.868 24.774 8.068 33.552-1.784l29.857-37.967V488c0 13.255 10.637 24 23.758 24s23.758-10.745 23.758-24v-61.912l29.857 37.967A23.59 23.59 0 0 0 295.282 472a23.534 23.534 0 0 0 15.885-6.161c9.753-8.867 10.544-24.042 1.766-33.894L247.758 368v-70.431l60.38 35.215 22.232 88.99c4.057 12.605 17.462 19.501 29.94 15.402 12.479-4.099 19.304-17.64 15.247-30.245l-17.621-45.104 53.077 30.956c11.363 6.627 25.893 2.694 32.454-8.785s2.667-26.157-8.696-32.785l-53.077-30.956 47.477-7.137c6.86-1.469 12.394-5.793 15.645-11.481z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503066239000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M438.237 355.927l-66.574-38.54 59.448-10.327c5.846-1.375 10.609-5.183 13.458-10.13 2.48-4.307 3.506-9.478 2.524-14.651-2.11-11.115-12.686-18.039-23.621-15.467l-85.423 31.115L255.914 256l82.136-41.926 85.423 31.115c10.936 2.572 21.512-4.352 23.621-15.467 2.111-11.115-5.046-22.209-15.981-24.781l-59.448-10.327 66.573-38.54c9.54-5.523 12.615-18.092 6.867-28.074-5.748-9.982-18.14-13.596-27.68-8.074l-66.574 38.54 20.805-56.787c3.246-10.782-2.758-22.542-13.413-26.268-10.654-3.725-21.922 1.997-25.168 12.779l-15.838 89.735-72.423 41.926V136l69.585-58.621c7.689-8.21 6.997-20.856-1.548-28.245-8.545-7.391-21.705-6.723-29.394 1.486l-38.644 46.46V20c0-11.046-9.318-20-20.813-20s-20.813 8.954-20.813 20v77.08l-38.644-46.46c-7.689-8.21-20.849-8.876-29.394-1.486-8.544 7.389-9.236 20.035-1.547 28.245L203.187 136v83.853l-72.423-41.926-15.838-89.736c-3.247-10.782-14.515-16.504-25.169-12.779-10.656 3.725-16.659 15.486-13.413 26.268l20.805 56.787-66.573-38.54c-9.54-5.523-21.933-1.908-27.68 8.074s-2.673 22.551 6.867 28.074l66.574 38.54-59.449 10.328C5.953 207.515-1.202 218.609.907 229.724c2.11 11.114 12.686 18.038 23.622 15.466l85.422-31.115L192.086 256l-82.136 41.926-85.423-31.115c-10.936-2.572-21.511 4.352-23.622 15.466-2.109 11.113 5.046 22.209 15.981 24.781l59.449 10.328-66.574 38.54C.223 361.449-2.852 374.018 2.896 384s18.14 13.597 27.68 8.074l66.574-38.54-20.805 56.786c-1.735 5.764-.828 11.805 2.02 16.751 2.48 4.307 6.433 7.784 11.392 9.517 10.655 3.725 21.923-1.997 25.169-12.779l15.838-89.736 72.423-41.926V376l-69.585 58.621c-7.69 8.21-6.997 20.855 1.547 28.245 8.544 7.388 21.705 6.723 29.394-1.487l38.644-46.46V492c0 11.046 9.318 20 20.813 20s20.813-8.954 20.813-20v-77.081l38.644 46.46c4.111 4.389 9.782 6.621 15.478 6.621 4.96 0 9.939-1.694 13.916-5.134 8.545-7.39 9.237-20.035 1.548-28.245L244.813 376v-83.853l72.423 41.926 15.838 89.736c3.246 10.782 14.514 16.504 25.168 12.779 10.653-3.726 16.659-15.487 13.412-26.268l-20.805-56.787 66.574 38.54c9.54 5.523 21.933 1.908 27.68-8.074 5.749-9.981 2.675-22.55-6.866-28.072z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M438.237 355.927l-66.574-38.54 59.448-10.327c5.846-1.375 10.609-5.183 13.458-10.13 2.48-4.307 3.506-9.478 2.524-14.651-2.11-11.115-12.686-18.039-23.621-15.467l-85.423 31.115L255.914 256l82.136-41.926 85.423 31.115c10.936 2.572 21.512-4.352 23.621-15.467 2.111-11.115-5.046-22.209-15.981-24.781l-59.448-10.327 66.573-38.54c9.54-5.523 12.615-18.092 6.867-28.074-5.748-9.982-18.14-13.596-27.68-8.074l-66.574 38.54 20.805-56.787c3.246-10.782-2.758-22.542-13.413-26.268-10.654-3.725-21.922 1.997-25.168 12.779l-15.838 89.735-72.423 41.926V136l69.585-58.621c7.689-8.21 6.997-20.856-1.548-28.245-8.545-7.391-21.705-6.723-29.394 1.486l-38.644 46.46V20c0-11.046-9.318-20-20.813-20s-20.813 8.954-20.813 20v77.08l-38.644-46.46c-7.689-8.21-20.849-8.876-29.394-1.486-8.544 7.389-9.236 20.035-1.547 28.245L203.187 136v83.853l-72.423-41.926-15.838-89.736c-3.247-10.782-14.515-16.504-25.169-12.779-10.656 3.725-16.659 15.486-13.413 26.268l20.805 56.787-66.573-38.54c-9.54-5.523-21.933-1.908-27.68 8.074s-2.673 22.551 6.867 28.074l66.574 38.54-59.449 10.328C5.953 207.515-1.202 218.609.907 229.724c2.11 11.114 12.686 18.038 23.622 15.466l85.422-31.115L192.086 256l-82.136 41.926-85.423-31.115c-10.936-2.572-21.511 4.352-23.622 15.466-2.109 11.113 5.046 22.209 15.981 24.781l59.449 10.328-66.574 38.54C.223 361.449-2.852 374.018 2.896 384s18.14 13.597 27.68 8.074l66.574-38.54-20.805 56.786c-1.735 5.764-.828 11.805 2.02 16.751 2.48 4.307 6.433 7.784 11.392 9.517 10.655 3.725 21.923-1.997 25.169-12.779l15.838-89.736 72.423-41.926V376l-69.585 58.621c-7.69 8.21-6.997 20.855 1.547 28.245 8.544 7.388 21.705 6.723 29.394-1.487l38.644-46.46V492c0 11.046 9.318 20 20.813 20s20.813-8.954 20.813-20v-77.081l38.644 46.46c4.111 4.389 9.782 6.621 15.478 6.621 4.96 0 9.939-1.694 13.916-5.134 8.545-7.39 9.237-20.035 1.548-28.245L244.813 376v-83.853l72.423 41.926 15.838 89.736c3.246 10.782 14.514 16.504 25.168 12.779 10.653-3.726 16.659-15.487 13.412-26.268l-20.805-56.787 66.574 38.54c9.54 5.523 21.933 1.908 27.68-8.074 5.749-9.981 2.675-22.55-6.866-28.072z\\\"}}},\\\"solar-panel\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"clean\\\",\\\"eco-friendly\\\",\\\"energy\\\",\\\"green\\\",\\\"sun\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5ba\\\",\\\"label\\\":\\\"Solar Panel\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111699,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\\\"}}},\\\"sort\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"order\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0dc\\\",\\\"label\\\":\\\"Sort\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\\\"}}},\\\"sort-alpha-down\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"sort-alpha-asc\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f15d\\\",\\\"label\\\":\\\"Sort Alpha Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M187.298 395.314l-79.984 80.002c-6.248 6.247-16.383 6.245-22.627 0L4.705 395.314C-5.365 385.244 1.807 368 16.019 368H64V48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v320h47.984c14.241 0 21.363 17.264 11.314 27.314zm119.075-180.007A12 12 0 0 1 294.838 224h-35.717c-8.22 0-14.007-8.078-11.362-15.861l57.096-168A12 12 0 0 1 316.217 32h39.566c5.139 0 9.708 3.273 11.362 8.139l57.096 168C426.886 215.922 421.1 224 412.879 224h-35.735a12 12 0 0 1-11.515-8.622l-8.301-28.299h-42.863l-8.092 28.228zm22.857-78.697h13.367l-6.6-22.937-6.767 22.937zm12.575 287.323l67.451-95.698a12 12 0 0 0 2.192-6.913V300c0-6.627-5.373-12-12-12H274.522c-6.627 0-12 5.373-12 12v28.93c0 6.627 5.373 12 12 12h56.469c-.739.991-1.497 2.036-2.27 3.133l-67.203 95.205a12.001 12.001 0 0 0-2.196 6.92V468c0 6.627 5.373 12 12 12h129.355c6.627 0 12-5.373 12-12v-28.93c0-6.627-5.373-12-12-12h-61.146c.74-.993 1.5-2.039 2.274-3.137z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M187.298 395.314l-79.984 80.002c-6.248 6.247-16.383 6.245-22.627 0L4.705 395.314C-5.365 385.244 1.807 368 16.019 368H64V48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v320h47.984c14.241 0 21.363 17.264 11.314 27.314zm119.075-180.007A12 12 0 0 1 294.838 224h-35.717c-8.22 0-14.007-8.078-11.362-15.861l57.096-168A12 12 0 0 1 316.217 32h39.566c5.139 0 9.708 3.273 11.362 8.139l57.096 168C426.886 215.922 421.1 224 412.879 224h-35.735a12 12 0 0 1-11.515-8.622l-8.301-28.299h-42.863l-8.092 28.228zm22.857-78.697h13.367l-6.6-22.937-6.767 22.937zm12.575 287.323l67.451-95.698a12 12 0 0 0 2.192-6.913V300c0-6.627-5.373-12-12-12H274.522c-6.627 0-12 5.373-12 12v28.93c0 6.627 5.373 12 12 12h56.469c-.739.991-1.497 2.036-2.27 3.133l-67.203 95.205a12.001 12.001 0 0 0-2.196 6.92V468c0 6.627 5.373 12 12 12h129.355c6.627 0 12-5.373 12-12v-28.93c0-6.627-5.373-12-12-12h-61.146c.74-.993 1.5-2.039 2.274-3.137z\\\"}}},\\\"sort-alpha-up\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"sort-alpha-desc\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f15e\\\",\\\"label\\\":\\\"Sort Alpha Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M4.702 116.686l79.984-80.002c6.248-6.247 16.383-6.245 22.627 0l79.981 80.002c10.07 10.07 2.899 27.314-11.314 27.314H128v320c0 8.837-7.163 16-16 16H80c-8.837 0-16-7.163-16-16V144H16.016c-14.241 0-21.363-17.264-11.314-27.314zm301.671 98.621A12 12 0 0 1 294.838 224h-35.717c-8.22 0-14.007-8.078-11.362-15.861l57.096-168A12 12 0 0 1 316.217 32h39.566c5.139 0 9.708 3.273 11.362 8.139l57.096 168C426.886 215.922 421.1 224 412.879 224h-35.735a12 12 0 0 1-11.515-8.622l-8.301-28.299h-42.863l-8.092 28.228zm22.857-78.697h13.367l-6.6-22.937-6.767 22.937zm12.575 287.323l67.451-95.698a12 12 0 0 0 2.192-6.913V300c0-6.627-5.373-12-12-12H274.522c-6.627 0-12 5.373-12 12v28.93c0 6.627 5.373 12 12 12h56.469c-.739.991-1.497 2.036-2.27 3.133l-67.203 95.205a12.001 12.001 0 0 0-2.196 6.92V468c0 6.627 5.373 12 12 12h129.355c6.627 0 12-5.373 12-12v-28.93c0-6.627-5.373-12-12-12h-61.146c.74-.993 1.5-2.039 2.274-3.137z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M4.702 116.686l79.984-80.002c6.248-6.247 16.383-6.245 22.627 0l79.981 80.002c10.07 10.07 2.899 27.314-11.314 27.314H128v320c0 8.837-7.163 16-16 16H80c-8.837 0-16-7.163-16-16V144H16.016c-14.241 0-21.363-17.264-11.314-27.314zm301.671 98.621A12 12 0 0 1 294.838 224h-35.717c-8.22 0-14.007-8.078-11.362-15.861l57.096-168A12 12 0 0 1 316.217 32h39.566c5.139 0 9.708 3.273 11.362 8.139l57.096 168C426.886 215.922 421.1 224 412.879 224h-35.735a12 12 0 0 1-11.515-8.622l-8.301-28.299h-42.863l-8.092 28.228zm22.857-78.697h13.367l-6.6-22.937-6.767 22.937zm12.575 287.323l67.451-95.698a12 12 0 0 0 2.192-6.913V300c0-6.627-5.373-12-12-12H274.522c-6.627 0-12 5.373-12 12v28.93c0 6.627 5.373 12 12 12h56.469c-.739.991-1.497 2.036-2.27 3.133l-67.203 95.205a12.001 12.001 0 0 0-2.196 6.92V468c0 6.627 5.373 12 12 12h129.355c6.627 0 12-5.373 12-12v-28.93c0-6.627-5.373-12-12-12h-61.146c.74-.993 1.5-2.039 2.274-3.137z\\\"}}},\\\"sort-amount-down\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"sort-amount-asc\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f160\\\",\\\"label\\\":\\\"Sort Amount Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M187.298 395.314l-79.984 80.002c-6.248 6.247-16.383 6.245-22.627 0L4.705 395.314C-5.365 385.244 1.807 368 16.019 368H64V48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v320h47.984c14.241 0 21.363 17.264 11.314 27.314zM240 96h256c8.837 0 16-7.163 16-16V48c0-8.837-7.163-16-16-16H240c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16zm-16 112v-32c0-8.837 7.163-16 16-16h192c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H240c-8.837 0-16-7.163-16-16zm0 256v-32c0-8.837 7.163-16 16-16h64c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-64c-8.837 0-16-7.163-16-16zm0-128v-32c0-8.837 7.163-16 16-16h128c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H240c-8.837 0-16-7.163-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M187.298 395.314l-79.984 80.002c-6.248 6.247-16.383 6.245-22.627 0L4.705 395.314C-5.365 385.244 1.807 368 16.019 368H64V48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v320h47.984c14.241 0 21.363 17.264 11.314 27.314zM240 96h256c8.837 0 16-7.163 16-16V48c0-8.837-7.163-16-16-16H240c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16zm-16 112v-32c0-8.837 7.163-16 16-16h192c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H240c-8.837 0-16-7.163-16-16zm0 256v-32c0-8.837 7.163-16 16-16h64c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-64c-8.837 0-16-7.163-16-16zm0-128v-32c0-8.837 7.163-16 16-16h128c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H240c-8.837 0-16-7.163-16-16z\\\"}}},\\\"sort-amount-up\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"sort-amount-desc\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f161\\\",\\\"label\\\":\\\"Sort Amount Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M4.702 116.686l79.984-80.002c6.248-6.247 16.383-6.245 22.627 0l79.981 80.002c10.07 10.07 2.899 27.314-11.314 27.314H128v320c0 8.837-7.163 16-16 16H80c-8.837 0-16-7.163-16-16V144H16.016c-14.241 0-21.363-17.264-11.314-27.314zM240 96h256c8.837 0 16-7.163 16-16V48c0-8.837-7.163-16-16-16H240c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16zm-16 112v-32c0-8.837 7.163-16 16-16h192c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H240c-8.837 0-16-7.163-16-16zm0 256v-32c0-8.837 7.163-16 16-16h64c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-64c-8.837 0-16-7.163-16-16zm0-128v-32c0-8.837 7.163-16 16-16h128c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H240c-8.837 0-16-7.163-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M4.702 116.686l79.984-80.002c6.248-6.247 16.383-6.245 22.627 0l79.981 80.002c10.07 10.07 2.899 27.314-11.314 27.314H128v320c0 8.837-7.163 16-16 16H80c-8.837 0-16-7.163-16-16V144H16.016c-14.241 0-21.363-17.264-11.314-27.314zM240 96h256c8.837 0 16-7.163 16-16V48c0-8.837-7.163-16-16-16H240c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16zm-16 112v-32c0-8.837 7.163-16 16-16h192c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H240c-8.837 0-16-7.163-16-16zm0 256v-32c0-8.837 7.163-16 16-16h64c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-64c-8.837 0-16-7.163-16-16zm0-128v-32c0-8.837 7.163-16 16-16h128c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H240c-8.837 0-16-7.163-16-16z\\\"}}},\\\"sort-down\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"descending\\\",\\\"sort-desc\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0dd\\\",\\\"label\\\":\\\"Sort Down (Descending)\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\\\"}}},\\\"sort-numeric-down\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"numbers\\\",\\\"sort-numeric-asc\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f162\\\",\\\"label\\\":\\\"Sort Numeric Down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M308.811 113.787l-19.448-20.795c-4.522-4.836-4.274-12.421.556-16.95l43.443-40.741a11.999 11.999 0 0 1 8.209-3.247h31.591c6.627 0 12 5.373 12 12v127.07h25.66c6.627 0 12 5.373 12 12v28.93c0 6.627-5.373 12-12 12H301.649c-6.627 0-12-5.373-12-12v-28.93c0-6.627 5.373-12 12-12h25.414v-57.938c-7.254 6.58-14.211 4.921-18.252.601zm-30.57 238.569c0-32.653 23.865-67.356 68.094-67.356 38.253 0 79.424 28.861 79.424 92.228 0 51.276-32.237 105.772-91.983 105.772-17.836 0-30.546-3.557-38.548-6.781-5.79-2.333-8.789-8.746-6.922-14.703l9.237-29.48c2.035-6.496 9.049-9.983 15.467-7.716 13.029 4.602 27.878 5.275 38.103-4.138-38.742 5.072-72.872-25.36-72.872-67.826zm92.273 19.338c0-22.285-15.302-36.505-25.835-36.505-8.642 0-13.164 7.965-13.164 15.832 0 5.669 1.815 24.168 25.168 24.168 9.973 0 13.377-2.154 13.744-2.731.021-.046.087-.291.087-.764zM175.984 368H128V48c0-8.837-7.163-16-16-16H80c-8.837 0-16 7.163-16 16v320H16.019c-14.212 0-21.384 17.244-11.314 27.314l79.981 80.002c6.245 6.245 16.38 6.247 22.627 0l79.984-80.002c10.05-10.05 2.928-27.314-11.313-27.314z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M308.811 113.787l-19.448-20.795c-4.522-4.836-4.274-12.421.556-16.95l43.443-40.741a11.999 11.999 0 0 1 8.209-3.247h31.591c6.627 0 12 5.373 12 12v127.07h25.66c6.627 0 12 5.373 12 12v28.93c0 6.627-5.373 12-12 12H301.649c-6.627 0-12-5.373-12-12v-28.93c0-6.627 5.373-12 12-12h25.414v-57.938c-7.254 6.58-14.211 4.921-18.252.601zm-30.57 238.569c0-32.653 23.865-67.356 68.094-67.356 38.253 0 79.424 28.861 79.424 92.228 0 51.276-32.237 105.772-91.983 105.772-17.836 0-30.546-3.557-38.548-6.781-5.79-2.333-8.789-8.746-6.922-14.703l9.237-29.48c2.035-6.496 9.049-9.983 15.467-7.716 13.029 4.602 27.878 5.275 38.103-4.138-38.742 5.072-72.872-25.36-72.872-67.826zm92.273 19.338c0-22.285-15.302-36.505-25.835-36.505-8.642 0-13.164 7.965-13.164 15.832 0 5.669 1.815 24.168 25.168 24.168 9.973 0 13.377-2.154 13.744-2.731.021-.046.087-.291.087-.764zM175.984 368H128V48c0-8.837-7.163-16-16-16H80c-8.837 0-16 7.163-16 16v320H16.019c-14.212 0-21.384 17.244-11.314 27.314l79.981 80.002c6.245 6.245 16.38 6.247 22.627 0l79.984-80.002c10.05-10.05 2.928-27.314-11.313-27.314z\\\"}}},\\\"sort-numeric-up\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"numbers\\\",\\\"sort-numeric-desc\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f163\\\",\\\"label\\\":\\\"Sort Numeric Up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M308.811 113.787l-19.448-20.795c-4.522-4.836-4.274-12.421.556-16.95l43.443-40.741a11.999 11.999 0 0 1 8.209-3.247h31.591c6.627 0 12 5.373 12 12v127.07h25.66c6.627 0 12 5.373 12 12v28.93c0 6.627-5.373 12-12 12H301.649c-6.627 0-12-5.373-12-12v-28.93c0-6.627 5.373-12 12-12h25.414v-57.938c-7.254 6.58-14.211 4.921-18.252.601zm-30.57 238.569c0-32.653 23.865-67.356 68.094-67.356 38.253 0 79.424 28.861 79.424 92.228 0 51.276-32.237 105.772-91.983 105.772-17.836 0-30.546-3.557-38.548-6.781-5.79-2.333-8.789-8.746-6.922-14.703l9.237-29.48c2.035-6.496 9.049-9.983 15.467-7.716 13.029 4.602 27.878 5.275 38.103-4.138-38.742 5.072-72.872-25.36-72.872-67.826zm92.273 19.338c0-22.285-15.302-36.505-25.835-36.505-8.642 0-13.164 7.965-13.164 15.832 0 5.669 1.815 24.168 25.168 24.168 9.973 0 13.377-2.154 13.744-2.731.021-.046.087-.291.087-.764zM16.016 144H64v320c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144h47.981c14.212 0 21.384-17.244 11.314-27.314l-79.981-80.002c-6.245-6.245-16.38-6.247-22.627 0L4.702 116.686C-5.347 126.736 1.775 144 16.016 144z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M308.811 113.787l-19.448-20.795c-4.522-4.836-4.274-12.421.556-16.95l43.443-40.741a11.999 11.999 0 0 1 8.209-3.247h31.591c6.627 0 12 5.373 12 12v127.07h25.66c6.627 0 12 5.373 12 12v28.93c0 6.627-5.373 12-12 12H301.649c-6.627 0-12-5.373-12-12v-28.93c0-6.627 5.373-12 12-12h25.414v-57.938c-7.254 6.58-14.211 4.921-18.252.601zm-30.57 238.569c0-32.653 23.865-67.356 68.094-67.356 38.253 0 79.424 28.861 79.424 92.228 0 51.276-32.237 105.772-91.983 105.772-17.836 0-30.546-3.557-38.548-6.781-5.79-2.333-8.789-8.746-6.922-14.703l9.237-29.48c2.035-6.496 9.049-9.983 15.467-7.716 13.029 4.602 27.878 5.275 38.103-4.138-38.742 5.072-72.872-25.36-72.872-67.826zm92.273 19.338c0-22.285-15.302-36.505-25.835-36.505-8.642 0-13.164 7.965-13.164 15.832 0 5.669 1.815 24.168 25.168 24.168 9.973 0 13.377-2.154 13.744-2.731.021-.046.087-.291.087-.764zM16.016 144H64v320c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144h47.981c14.212 0 21.384-17.244 11.314-27.314l-79.981-80.002c-6.245-6.245-16.38-6.247-22.627 0L4.702 116.686C-5.347 126.736 1.775 144 16.016 144z\\\"}}},\\\"sort-up\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"arrow\\\",\\\"ascending\\\",\\\"sort-asc\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0de\\\",\\\"label\\\":\\\"Sort Up (Ascending)\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\\\"}}},\\\"soundcloud\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1be\\\",\\\"label\\\":\\\"SoundCloud\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z\\\"}}},\\\"spa\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"mindfullness\\\",\\\"plant\\\",\\\"wellness\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5bb\\\",\\\"label\\\":\\\"Spa\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111700,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\\\"}}},\\\"space-shuttle\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"astronaut\\\",\\\"machine\\\",\\\"nasa\\\",\\\"rocket\\\",\\\"transportation\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f197\\\",\\\"label\\\":\\\"Space Shuttle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\\\"}}},\\\"speakap\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3f3\\\",\\\"label\\\":\\\"Speakap\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M352 32H96C43.2 32 0 75.2 0 128v256c0 52.8 43.2 96 96 96h256c52.8 0 96-43.2 96-96V128c0-52.8-43.2-96-96-96zM221 382.9c-39.6 0-81.9-17.8-81.9-53.7V302H179v17.8c0 15.1 19.5 24.5 41.9 24.5 24.2 0 41.3-10.4 41.3-29.5 0-23.8-27.2-31.9-54.7-42.6-31.9-12.4-63.1-26.2-63.1-69.1 0-48 38.6-66.4 79.9-66.4 37.6 0 75.5 14.1 75.5 41.9v31.2h-39.9v-16.1c0-12.1-17.8-18.5-35.6-18.5-19.5 0-35.6 8.1-35.6 26.2 0 22.1 22.5 29.2 47 38.9 35.9 12.4 71.1 27.2 71.1 71.5.1 48.6-40.8 71.1-85.8 71.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M352 32H96C43.2 32 0 75.2 0 128v256c0 52.8 43.2 96 96 96h256c52.8 0 96-43.2 96-96V128c0-52.8-43.2-96-96-96zM221 382.9c-39.6 0-81.9-17.8-81.9-53.7V302H179v17.8c0 15.1 19.5 24.5 41.9 24.5 24.2 0 41.3-10.4 41.3-29.5 0-23.8-27.2-31.9-54.7-42.6-31.9-12.4-63.1-26.2-63.1-69.1 0-48 38.6-66.4 79.9-66.4 37.6 0 75.5 14.1 75.5 41.9v31.2h-39.9v-16.1c0-12.1-17.8-18.5-35.6-18.5-19.5 0-35.6 8.1-35.6 26.2 0 22.1 22.5 29.2 47 38.9 35.9 12.4 71.1 27.2 71.1 71.5.1 48.6-40.8 71.1-85.8 71.1z\\\"}}},\\\"spinner\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"loading\\\",\\\"progress\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f110\\\",\\\"label\\\":\\\"Spinner\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\\\"}}},\\\"splotch\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5bc\\\",\\\"label\\\":\\\"Splotch\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111700,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\\\"}}},\\\"spotify\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1bc\\\",\\\"label\\\":\\\"Spotify\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\\\"}}},\\\"spray-can\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5bd\\\",\\\"label\\\":\\\"Spray Can\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111701,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\\\"}}},\\\"square\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"block\\\",\\\"box\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f0c8\\\",\\\"label\\\":\\\"Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z\\\"}}},\\\"square-full\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f45c\\\",\\\"label\\\":\\\"Square Full\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527998,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 512H0V0h512v512z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 512H0V0h512v512z\\\"}}},\\\"squarespace\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5be\\\",\\\"label\\\":\\\"Squarespace\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529514897194,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z\\\"}}},\\\"stack-exchange\\\":{\\\"changes\\\":[\\\"4\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f18d\\\",\\\"label\\\":\\\"Stack Exchange\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426582001,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z\\\"}}},\\\"stack-overflow\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f16c\\\",\\\"label\\\":\\\"Stack Overflow\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M293.7 300l-181.2-84.5 16.7-36.5 181.3 84.7-16.8 36.3zm48-76L188.2 95.7l-25.5 30.8 153.5 128.3 25.5-30.8zm39.6-31.7L262 32l-32 24 119.3 160.3 32-24zM290.7 311L95 269.7 86.8 309l195.7 41 8.2-39zm31.6 129H42.7V320h-40v160h359.5V320h-40v120zm-39.8-80h-200v39.7h200V360z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M293.7 300l-181.2-84.5 16.7-36.5 181.3 84.7-16.8 36.3zm48-76L188.2 95.7l-25.5 30.8 153.5 128.3 25.5-30.8zm39.6-31.7L262 32l-32 24 119.3 160.3 32-24zM290.7 311L95 269.7 86.8 309l195.7 41 8.2-39zm31.6 129H42.7V320h-40v160h359.5V320h-40v120zm-39.8-80h-200v39.7h200V360z\\\"}}},\\\"stamp\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5bf\\\",\\\"label\\\":\\\"Stamp\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111701,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\\\"}}},\\\"star\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"achievement\\\",\\\"award\\\",\\\"favorite\\\",\\\"important\\\",\\\"night\\\",\\\"rating\\\",\\\"score\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f005\\\",\\\"label\\\":\\\"Star\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z\\\"}}},\\\"star-half\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"achievement\\\",\\\"award\\\",\\\"rating\\\",\\\"score\\\",\\\"star-half-empty\\\",\\\"star-half-full\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f089\\\",\\\"label\\\":\\\"star-half\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1505492030000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1505492030000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M288 385.3l-124.3 65.4 23.7-138.4-100.6-98 139-20.2 62.2-126V0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6v-54.3z\\\"}}},\\\"star-half-alt\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"achievement\\\",\\\"award\\\",\\\"rating\\\",\\\"score\\\",\\\"star-half-empty\\\",\\\"star-half-full\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5c0\\\",\\\"label\\\":\\\"Alternate Star Half\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111702,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 536 512\\\\\\\"><path d=\\\\\\\"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"536\\\",\\\"512\\\"],\\\"width\\\":536,\\\"height\\\":512,\\\"path\\\":\\\"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\\\"}}},\\\"star-of-life\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f621\\\",\\\"label\\\":\\\"Star Of-life\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831543,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 480 512\\\\\\\"><path d=\\\\\\\"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"480\\\",\\\"512\\\"],\\\"width\\\":480,\\\"height\\\":512,\\\"path\\\":\\\"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\\\"}}},\\\"staylinked\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3f5\\\",\\\"label\\\":\\\"StayLinked\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 440 512\\\\\\\"><path d=\\\\\\\"M201.6 127.4c4.1-3.2 10.3-3 13.8.5l170 167.3-2.7-2.7 44.3 41.3c3.7 3.5 3.3 9-.7 12.2l-198 163.9c-9.9 7.6-17.3.8-17.3.8L2.3 314.6c-3.5-3.5-3-9 1.2-12.2l45.8-34.9c4.2-3.2 10.4-3 13.9.5l151.9 147.5c3.7 3.5 10 3.7 14.2.4l93.2-74c4.1-3.2 4.5-8.7.9-12.2l-84-81.3c-3.6-3.5-9.9-3.7-14-.5l-.1.1c-4.1 3.2-10.4 3-14-.5l-68.1-64.3c-3.5-3.5-3.1-9 1.1-12.2l57.3-43.6m14.8 257.3c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"440\\\",\\\"512\\\"],\\\"width\\\":440,\\\"height\\\":512,\\\"path\\\":\\\"M201.6 127.4c4.1-3.2 10.3-3 13.8.5l170 167.3-2.7-2.7 44.3 41.3c3.7 3.5 3.3 9-.7 12.2l-198 163.9c-9.9 7.6-17.3.8-17.3.8L2.3 314.6c-3.5-3.5-3-9 1.2-12.2l45.8-34.9c4.2-3.2 10.4-3 13.9.5l151.9 147.5c3.7 3.5 10 3.7 14.2.4l93.2-74c4.1-3.2 4.5-8.7.9-12.2l-84-81.3c-3.6-3.5-9.9-3.7-14-.5l-.1.1c-4.1 3.2-10.4 3-14-.5l-68.1-64.3c-3.5-3.5-3.1-9 1.1-12.2l57.3-43.6m14.8 257.3c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7\\\"}}},\\\"steam\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1b6\\\",\\\"label\\\":\\\"Steam\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821389,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z\\\"}}},\\\"steam-square\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1b7\\\",\\\"label\\\":\\\"Steam Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z\\\"}}},\\\"steam-symbol\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3f6\\\",\\\"label\\\":\\\"Steam Symbol\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z\\\"}}},\\\"step-backward\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"beginning\\\",\\\"first\\\",\\\"previous\\\",\\\"rewind\\\",\\\"start\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f048\\\",\\\"label\\\":\\\"step-backward\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\\\"}}},\\\"step-forward\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"end\\\",\\\"last\\\",\\\"next\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f051\\\",\\\"label\\\":\\\"step-forward\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\\\"}}},\\\"stethoscope\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\",\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0f1\\\",\\\"label\\\":\\\"Stethoscope\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821459,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\\\"}}},\\\"sticker-mule\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3f7\\\",\\\"label\\\":\\\"Sticker Mule\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1502893836000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M353.1 509.8c-5.9 2.9-32.1 3.2-36.5-.5-4.1-3-2.2-11.9-1.5-15 2.2-15-2.5-7.9-9.8-11.5-3.1-1.5-4.1-5.5-4.6-10-.5-1.5-1-2.5-1.5-3.5-1.7-10.7 6.8-33.6 8.2-43.4 4.9-23.7-.7-37.2 1.5-46.9 3.7-16.2 4.1-3.5 4.1-29.9-1.4-25.9 3.3-36.9.5-38.9-14.8 0-64.3 10.7-112.2 2-46.1-8.9-59.4-29-65.4-30.9-10.3-4.5-23.2.5-27.3 7-.1.1-35 70.6-39.6 87.8-6.2 20.5-.5 47.4 4.1 66.8 0 .1 4.5 14.6 10.3 19.5 2.1 1.5 5.1 2.5 7.2 4.5 2.8 2.7 9.4 15.2 9.8 16 2.6 4.5 3.6 8-1.5 10.5-3.6 2-9.3 2.5-14.4 2.5-2.6.5-1.5 3.5-3.1 5-2.9 2.8-20.7 6.1-29.9 2.5-2.6-1-5.7-3-6.2-5-1.5-4 2.1-9-1-12.5-4.5-2.9-13.1-2-17-12-2.2-5.4-2.6-7.6-2.6-49.4 0-9.7-5.9-38.7-8.2-46.9-1.5-5.5-1.5-11.5 0-16 .3-.9 4.1-4.6 4.1-13-1-1.5-4.6-.5-5.1-1.5-10.4-80.6-5.9-79-7.7-98.3-1.5-16-10.9-43.9-6.7-64.3.5-2.4 3.4-21 24.2-38.9 31-26.7 48.4-38.3 159-11.5 1.1.4 66.3 21.1 110.7-9 15.5-11.3 28.8-11.3 35.5-16 .1-.1 61.7-52.1 87-65.3 47.2-29.4 69.9-16.7 75.1-18 4.7-1 13.4-25.8 17-25.8 5.5 0 1.6 20.2 3.6 25.9.5 2 3.6 5 6.2 5 2.3 0 1.7-.8 10.3-5 8.4-5.4 14.9-17.6 20.6-17 11.7 1.6-19 41.6-19 46.9 0 2 .2.8 4.6 9.5 2.6 5.5 4.6 13.5 6.2 20 8.3 29.7 5.7 14.6 13.4 36.9 20.2 50.1 20.6 45.2 20.6 52.9 0 7.5-4.1 11-7.2 16.5-1.5 3-4.6 7.5-7.2 8-2.7.7 7-1.5-13.4 2.5-7.2 1-13.4-4.5-14.9-9.5-1.6-4.7 2.8-10.1-11.8-22.9-10.3-10-21.1-11.3-31.9-17-9.8-5.7-11.9 1-18 8-18 22.9-34 46.9-52 69.8-11.8 15-24.2 30.4-33.5 47.4-3.9 6.8-9.5 28.1-10.3 29.9-6.2 17.7-5.5 25.8-16.5 68.3-3.1 10-5.7 21.4-8.7 32.4-2.2 6.8-7.4 49.3-.5 59.4 2.1 3.5 8.7 4.5 11.3 8 .1.1 9.6 18.2 9.3 20 0 6.1-9.4 5.6-11.3 6.5-4.8 2.9-3.8 5.9-6.4 7.4\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M353.1 509.8c-5.9 2.9-32.1 3.2-36.5-.5-4.1-3-2.2-11.9-1.5-15 2.2-15-2.5-7.9-9.8-11.5-3.1-1.5-4.1-5.5-4.6-10-.5-1.5-1-2.5-1.5-3.5-1.7-10.7 6.8-33.6 8.2-43.4 4.9-23.7-.7-37.2 1.5-46.9 3.7-16.2 4.1-3.5 4.1-29.9-1.4-25.9 3.3-36.9.5-38.9-14.8 0-64.3 10.7-112.2 2-46.1-8.9-59.4-29-65.4-30.9-10.3-4.5-23.2.5-27.3 7-.1.1-35 70.6-39.6 87.8-6.2 20.5-.5 47.4 4.1 66.8 0 .1 4.5 14.6 10.3 19.5 2.1 1.5 5.1 2.5 7.2 4.5 2.8 2.7 9.4 15.2 9.8 16 2.6 4.5 3.6 8-1.5 10.5-3.6 2-9.3 2.5-14.4 2.5-2.6.5-1.5 3.5-3.1 5-2.9 2.8-20.7 6.1-29.9 2.5-2.6-1-5.7-3-6.2-5-1.5-4 2.1-9-1-12.5-4.5-2.9-13.1-2-17-12-2.2-5.4-2.6-7.6-2.6-49.4 0-9.7-5.9-38.7-8.2-46.9-1.5-5.5-1.5-11.5 0-16 .3-.9 4.1-4.6 4.1-13-1-1.5-4.6-.5-5.1-1.5-10.4-80.6-5.9-79-7.7-98.3-1.5-16-10.9-43.9-6.7-64.3.5-2.4 3.4-21 24.2-38.9 31-26.7 48.4-38.3 159-11.5 1.1.4 66.3 21.1 110.7-9 15.5-11.3 28.8-11.3 35.5-16 .1-.1 61.7-52.1 87-65.3 47.2-29.4 69.9-16.7 75.1-18 4.7-1 13.4-25.8 17-25.8 5.5 0 1.6 20.2 3.6 25.9.5 2 3.6 5 6.2 5 2.3 0 1.7-.8 10.3-5 8.4-5.4 14.9-17.6 20.6-17 11.7 1.6-19 41.6-19 46.9 0 2 .2.8 4.6 9.5 2.6 5.5 4.6 13.5 6.2 20 8.3 29.7 5.7 14.6 13.4 36.9 20.2 50.1 20.6 45.2 20.6 52.9 0 7.5-4.1 11-7.2 16.5-1.5 3-4.6 7.5-7.2 8-2.7.7 7-1.5-13.4 2.5-7.2 1-13.4-4.5-14.9-9.5-1.6-4.7 2.8-10.1-11.8-22.9-10.3-10-21.1-11.3-31.9-17-9.8-5.7-11.9 1-18 8-18 22.9-34 46.9-52 69.8-11.8 15-24.2 30.4-33.5 47.4-3.9 6.8-9.5 28.1-10.3 29.9-6.2 17.7-5.5 25.8-16.5 68.3-3.1 10-5.7 21.4-8.7 32.4-2.2 6.8-7.4 49.3-.5 59.4 2.1 3.5 8.7 4.5 11.3 8 .1.1 9.6 18.2 9.3 20 0 6.1-9.4 5.6-11.3 6.5-4.8 2.9-3.8 5.9-6.4 7.4\\\"}}},\\\"sticky-note\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f249\\\",\\\"label\\\":\\\"Sticky Note\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 348.106V80c0-26.51-21.49-48-48-48H48C21.49 32 0 53.49 0 80v351.988c0 26.51 21.49 48 48 48h268.118a48 48 0 0 0 33.941-14.059l83.882-83.882A48 48 0 0 0 448 348.106zm-128 80v-76.118h76.118L320 428.106zM400 80v223.988H296c-13.255 0-24 10.745-24 24v104H48V80h352z\\\"}}},\\\"stop\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"block\\\",\\\"box\\\",\\\"square\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f04d\\\",\\\"label\\\":\\\"stop\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\\\"}}},\\\"stop-circle\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f28d\\\",\\\"label\\\":\\\"Stop Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z\\\"}}},\\\"stopwatch\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"time\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2f2\\\",\\\"label\\\":\\\"Stopwatch\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\\\"}}},\\\"store\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f54e\\\",\\\"label\\\":\\\"Store\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154579,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 616 512\\\\\\\"><path d=\\\\\\\"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"616\\\",\\\"512\\\"],\\\"width\\\":616,\\\"height\\\":512,\\\"path\\\":\\\"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\\\"}}},\\\"store-alt\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f54f\\\",\\\"label\\\":\\\"Alternate Store\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154579,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\\\"}}},\\\"strava\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.1\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f428\\\",\\\"label\\\":\\\"Strava\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821389,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 369.2 512\\\\\\\"><path d=\\\\\\\"M301.6 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220h-67.6zM151.4 0L0 292h89.2l62.2-116.1L213.1 292h88.5L151.4 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"369.2\\\",\\\"512\\\"],\\\"width\\\":369,\\\"height\\\":512,\\\"path\\\":\\\"M301.6 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220h-67.6zM151.4 0L0 292h89.2l62.2-116.1L213.1 292h88.5L151.4 0z\\\"}}},\\\"stream\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f550\\\",\\\"label\\\":\\\"Stream\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154579,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\\\"}}},\\\"street-view\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"map\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f21d\\\",\\\"label\\\":\\\"Street View\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831544,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\\\"}}},\\\"strikethrough\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0cc\\\",\\\"label\\\":\\\"Strikethrough\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M496 288H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h480c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16zm-214.666 16c27.258 12.937 46.524 28.683 46.524 56.243 0 33.108-28.977 53.676-75.621 53.676-32.325 0-76.874-12.08-76.874-44.271V368c0-8.837-7.164-16-16-16H113.75c-8.836 0-16 7.163-16 16v19.204c0 66.845 77.717 101.82 154.487 101.82 88.578 0 162.013-45.438 162.013-134.424 0-19.815-3.618-36.417-10.143-50.6H281.334zm-30.952-96c-32.422-13.505-56.836-28.946-56.836-59.683 0-33.92 30.901-47.406 64.962-47.406 42.647 0 64.962 16.593 64.962 32.985V136c0 8.837 7.164 16 16 16h45.613c8.836 0 16-7.163 16-16v-30.318c0-52.438-71.725-79.875-142.575-79.875-85.203 0-150.726 40.972-150.726 125.646 0 22.71 4.665 41.176 12.777 56.547h129.823z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M496 288H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h480c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16zm-214.666 16c27.258 12.937 46.524 28.683 46.524 56.243 0 33.108-28.977 53.676-75.621 53.676-32.325 0-76.874-12.08-76.874-44.271V368c0-8.837-7.164-16-16-16H113.75c-8.836 0-16 7.163-16 16v19.204c0 66.845 77.717 101.82 154.487 101.82 88.578 0 162.013-45.438 162.013-134.424 0-19.815-3.618-36.417-10.143-50.6H281.334zm-30.952-96c-32.422-13.505-56.836-28.946-56.836-59.683 0-33.92 30.901-47.406 64.962-47.406 42.647 0 64.962 16.593 64.962 32.985V136c0 8.837 7.164 16 16 16h45.613c8.836 0 16-7.163 16-16v-30.318c0-52.438-71.725-79.875-142.575-79.875-85.203 0-150.726 40.972-150.726 125.646 0 22.71 4.665 41.176 12.777 56.547h129.823z\\\"}}},\\\"stripe\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f429\\\",\\\"label\\\":\\\"Stripe\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821390,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9m-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4h-45.9zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7m-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8M346.4 124v36.2l-44.6 9.5v-36.2l44.6-9.5m-44.5 59.2h44.6v153.2h-44.6V183.2zm-47.8 13.1c10.4-19.1 31.1-15.2 37.1-13.1V224c-5.7-1.8-23.4-4.5-33.9 9.3v103.1H213V183.2h38.4l2.7 13.1m-89-13.1h33.7V221h-33.7v63.2c0 26.2 28 18 33.7 15.7v33.8c-5.9 3.2-16.6 5.9-31.2 5.9-26.3 0-46.1-17-46.1-43.3l.2-142.4 43.3-9.2.1 38.5zM44.9 228.3c0 20 67.9 10.5 67.9 63.4 0 32-25.4 47.8-62.3 47.8-15.3 0-32-3-48.5-10.1v-40c14.9 8.1 33.9 14.2 48.6 14.2 9.9 0 17-2.7 17-10.9 0-21.2-67.5-13.2-67.5-62.4 0-31.4 24-50.2 60-50.2 14.7 0 29.4 2.3 44.1 8.1V230c-13.5-7.3-30.7-11.4-44.2-11.4-9.3.1-15.1 2.8-15.1 9.7\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9m-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4h-45.9zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7m-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8M346.4 124v36.2l-44.6 9.5v-36.2l44.6-9.5m-44.5 59.2h44.6v153.2h-44.6V183.2zm-47.8 13.1c10.4-19.1 31.1-15.2 37.1-13.1V224c-5.7-1.8-23.4-4.5-33.9 9.3v103.1H213V183.2h38.4l2.7 13.1m-89-13.1h33.7V221h-33.7v63.2c0 26.2 28 18 33.7 15.7v33.8c-5.9 3.2-16.6 5.9-31.2 5.9-26.3 0-46.1-17-46.1-43.3l.2-142.4 43.3-9.2.1 38.5zM44.9 228.3c0 20 67.9 10.5 67.9 63.4 0 32-25.4 47.8-62.3 47.8-15.3 0-32-3-48.5-10.1v-40c14.9 8.1 33.9 14.2 48.6 14.2 9.9 0 17-2.7 17-10.9 0-21.2-67.5-13.2-67.5-62.4 0-31.4 24-50.2 60-50.2 14.7 0 29.4 2.3 44.1 8.1V230c-13.5-7.3-30.7-11.4-44.2-11.4-9.3.1-15.1 2.8-15.1 9.7\\\"}}},\\\"stripe-s\\\":{\\\"changes\\\":[\\\"5.0.1\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f42a\\\",\\\"label\\\":\\\"Stripe S\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821389,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 362.3 512\\\\\\\"><path d=\\\\\\\"M144.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C287.3 7.2 240.1 0 192.8 0 77.1 0 0 60.4 0 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5c53 22.8 106.8 32.4 156 32.4 118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"362.3\\\",\\\"512\\\"],\\\"width\\\":362,\\\"height\\\":512,\\\"path\\\":\\\"M144.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C287.3 7.2 240.1 0 192.8 0 77.1 0 0 60.4 0 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5c53 22.8 106.8 32.4 156 32.4 118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9\\\"}}},\\\"stroopwafel\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"dessert\\\",\\\"food\\\",\\\"sweets\\\",\\\"waffle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f551\\\",\\\"label\\\":\\\"Stroopwafel\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154580,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\\\"}}},\\\"studiovinari\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3f8\\\",\\\"label\\\":\\\"Studio Vinari\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z\\\"}}},\\\"stumbleupon\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1a4\\\",\\\"label\\\":\\\"StumbleUpon Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z\\\"}}},\\\"stumbleupon-circle\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1a3\\\",\\\"label\\\":\\\"StumbleUpon Circle\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z\\\"}}},\\\"subscript\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f12c\\\",\\\"label\\\":\\\"subscript\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M395.198 416c3.461-10.526 18.796-21.28 36.265-32.425 16.625-10.605 35.467-22.626 50.341-38.862 17.458-19.054 25.944-40.175 25.944-64.567 0-60.562-50.702-88.146-97.81-88.146-42.491 0-76.378 22.016-94.432 50.447-4.654 7.329-2.592 17.036 4.623 21.865l30.328 20.296c7.032 4.706 16.46 3.084 21.63-3.614 8.022-10.394 18.818-18.225 31.667-18.225 19.387 0 26.266 12.901 26.266 23.948 0 36.159-119.437 57.023-119.437 160.024 0 6.654.561 13.014 1.415 19.331 1.076 7.964 7.834 13.928 15.87 13.928H496c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16H395.198zM272 256c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-62.399a16 16 0 0 1-13.541-7.478l-45.701-72.615c-2.297-3.352-4.422-6.969-6.195-10.209-1.65 3.244-3.647 6.937-5.874 10.582l-44.712 72.147a15.999 15.999 0 0 1-13.6 7.572H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h26.325l56.552-82.709L46.111 96H16C7.163 96 0 88.837 0 80V48c0-8.837 7.163-16 16-16h68.806a16 16 0 0 1 13.645 7.644l39.882 65.126c2.072 3.523 4.053 7.171 5.727 10.37 1.777-3.244 3.92-6.954 6.237-10.537l40.332-65.035A15.999 15.999 0 0 1 204.226 32H272c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-27.979l-52.69 75.671L249.974 256H272z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M395.198 416c3.461-10.526 18.796-21.28 36.265-32.425 16.625-10.605 35.467-22.626 50.341-38.862 17.458-19.054 25.944-40.175 25.944-64.567 0-60.562-50.702-88.146-97.81-88.146-42.491 0-76.378 22.016-94.432 50.447-4.654 7.329-2.592 17.036 4.623 21.865l30.328 20.296c7.032 4.706 16.46 3.084 21.63-3.614 8.022-10.394 18.818-18.225 31.667-18.225 19.387 0 26.266 12.901 26.266 23.948 0 36.159-119.437 57.023-119.437 160.024 0 6.654.561 13.014 1.415 19.331 1.076 7.964 7.834 13.928 15.87 13.928H496c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16H395.198zM272 256c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-62.399a16 16 0 0 1-13.541-7.478l-45.701-72.615c-2.297-3.352-4.422-6.969-6.195-10.209-1.65 3.244-3.647 6.937-5.874 10.582l-44.712 72.147a15.999 15.999 0 0 1-13.6 7.572H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h26.325l56.552-82.709L46.111 96H16C7.163 96 0 88.837 0 80V48c0-8.837 7.163-16 16-16h68.806a16 16 0 0 1 13.645 7.644l39.882 65.126c2.072 3.523 4.053 7.171 5.727 10.37 1.777-3.244 3.92-6.954 6.237-10.537l40.332-65.035A15.999 15.999 0 0 1 204.226 32H272c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-27.979l-52.69 75.671L249.974 256H272z\\\"}}},\\\"subway\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"machine\\\",\\\"railway\\\",\\\"train\\\",\\\"transportation\\\",\\\"vehicle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f239\\\",\\\"label\\\":\\\"Subway\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\\\"}}},\\\"suitcase\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"baggage\\\",\\\"luggage\\\",\\\"move\\\",\\\"suitcase\\\",\\\"travel\\\",\\\"trip\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0f2\\\",\\\"label\\\":\\\"Suitcase\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821459,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\\\"}}},\\\"suitcase-rolling\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5c1\\\",\\\"label\\\":\\\"Suitcase Rolling\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111702,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\\\"}}},\\\"sun\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"brighten\\\",\\\"contrast\\\",\\\"day\\\",\\\"lighter\\\",\\\"weather\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f185\\\",\\\"label\\\":\\\"Sun\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502810244000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M274.835 12.646l25.516 62.393c4.213 10.301 16.671 14.349 26.134 8.492l57.316-35.479c15.49-9.588 34.808 4.447 30.475 22.142l-16.03 65.475c-2.647 10.81 5.053 21.408 16.152 22.231l67.224 4.987c18.167 1.348 25.546 24.057 11.641 35.826L441.81 242.26c-8.495 7.19-8.495 20.289 0 27.479l51.454 43.548c13.906 11.769 6.527 34.478-11.641 35.826l-67.224 4.987c-11.099.823-18.799 11.421-16.152 22.231l16.03 65.475c4.332 17.695-14.986 31.73-30.475 22.142l-57.316-35.479c-9.463-5.858-21.922-1.81-26.134 8.492l-25.516 62.393c-6.896 16.862-30.774 16.862-37.67 0l-25.516-62.393c-4.213-10.301-16.671-14.349-26.134-8.492l-57.317 35.479c-15.49 9.588-34.808-4.447-30.475-22.142l16.03-65.475c2.647-10.81-5.053-21.408-16.152-22.231l-67.224-4.987c-18.167-1.348-25.546-24.057-11.641-35.826L70.19 269.74c8.495-7.19 8.495-20.289 0-27.479l-51.454-43.548c-13.906-11.769-6.527-34.478 11.641-35.826l67.224-4.987c11.099-.823 18.799-11.421 16.152-22.231l-16.03-65.475c-4.332-17.695 14.986-31.73 30.475-22.142l57.317 35.479c9.463 5.858 21.921 1.81 26.134-8.492l25.516-62.393c6.896-16.861 30.774-16.861 37.67 0zM392 256c0-74.991-61.01-136-136-136-74.991 0-136 61.009-136 136s61.009 136 136 136c74.99 0 136-61.009 136-136zm-32 0c0 57.346-46.654 104-104 104s-104-46.654-104-104 46.654-104 104-104 104 46.654 104 104z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M274.835 12.646l25.516 62.393c4.213 10.301 16.671 14.349 26.134 8.492l57.316-35.479c15.49-9.588 34.808 4.447 30.475 22.142l-16.03 65.475c-2.647 10.81 5.053 21.408 16.152 22.231l67.224 4.987c18.167 1.348 25.546 24.057 11.641 35.826L441.81 242.26c-8.495 7.19-8.495 20.289 0 27.479l51.454 43.548c13.906 11.769 6.527 34.478-11.641 35.826l-67.224 4.987c-11.099.823-18.799 11.421-16.152 22.231l16.03 65.475c4.332 17.695-14.986 31.73-30.475 22.142l-57.316-35.479c-9.463-5.858-21.922-1.81-26.134 8.492l-25.516 62.393c-6.896 16.862-30.774 16.862-37.67 0l-25.516-62.393c-4.213-10.301-16.671-14.349-26.134-8.492l-57.317 35.479c-15.49 9.588-34.808-4.447-30.475-22.142l16.03-65.475c2.647-10.81-5.053-21.408-16.152-22.231l-67.224-4.987c-18.167-1.348-25.546-24.057-11.641-35.826L70.19 269.74c8.495-7.19 8.495-20.289 0-27.479l-51.454-43.548c-13.906-11.769-6.527-34.478 11.641-35.826l67.224-4.987c11.099-.823 18.799-11.421 16.152-22.231l-16.03-65.475c-4.332-17.695 14.986-31.73 30.475-22.142l57.317 35.479c9.463 5.858 21.921 1.81 26.134-8.492l25.516-62.393c6.896-16.861 30.774-16.861 37.67 0zM392 256c0-74.991-61.01-136-136-136-74.991 0-136 61.009-136 136s61.009 136 136 136c74.99 0 136-61.009 136-136zm-32 0c0 57.346-46.654 104-104 104s-104-46.654-104-104 46.654-104 104-104 104 46.654 104 104z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502810244000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M220.116 487.936l-20.213-49.425a3.992 3.992 0 0 0-5.808-1.886l-45.404 28.104c-29.466 18.24-66.295-8.519-58.054-42.179l12.699-51.865a3.993 3.993 0 0 0-3.59-4.941l-53.251-3.951c-34.554-2.562-48.632-45.855-22.174-68.247L65.08 259.05a3.992 3.992 0 0 0 0-6.106l-40.76-34.497c-26.45-22.384-12.39-65.682 22.174-68.246l53.251-3.951a3.993 3.993 0 0 0 3.59-4.941L90.637 89.443c-8.239-33.656 28.581-60.42 58.054-42.179l45.403 28.104a3.993 3.993 0 0 0 5.808-1.887l20.213-49.425c13.116-32.071 58.638-32.081 71.758 0l20.212 49.424a3.994 3.994 0 0 0 5.809 1.887l45.403-28.104c29.464-18.236 66.297 8.513 58.054 42.179l-12.699 51.865a3.995 3.995 0 0 0 3.59 4.941l53.251 3.951c34.553 2.563 48.633 45.854 22.175 68.246l-40.76 34.497a3.993 3.993 0 0 0 0 6.107l40.76 34.496c26.511 22.441 12.322 65.689-22.175 68.247l-53.251 3.951a3.993 3.993 0 0 0-3.589 4.942l12.698 51.864c8.241 33.658-28.583 60.421-58.054 42.18l-45.403-28.104a3.994 3.994 0 0 0-5.809 1.887l-20.212 49.424c-13.159 32.178-58.675 31.993-71.757 0zm16.814-64.568l19.064 46.616 19.064-46.615c10.308-25.2 40.778-35.066 63.892-20.759l42.822 26.507-11.976-48.919c-6.475-26.444 12.38-52.339 39.487-54.349l50.226-3.726-38.444-32.536c-20.782-17.591-20.747-49.621.001-67.18l38.442-32.536-50.225-3.727c-27.151-2.015-45.95-27.948-39.488-54.349l11.978-48.919-42.823 26.507c-23.151 14.327-53.603 4.4-63.892-20.76l-19.064-46.615-19.064 46.617c-10.305 25.198-40.778 35.066-63.891 20.76l-42.823-26.508 11.977 48.918c6.474 26.446-12.381 52.338-39.488 54.35l-50.224 3.726 38.443 32.537c20.782 17.588 20.747 49.619 0 67.178L52.48 322.123l50.226 3.726c27.151 2.014 45.95 27.947 39.487 54.349l-11.977 48.919 42.823-26.507c23.188-14.355 53.622-4.352 63.891 20.758zM256 384c-70.58 0-128-57.421-128-128 0-70.58 57.42-128 128-128 70.579 0 128 57.42 128 128 0 70.579-57.421 128-128 128zm0-208c-44.112 0-80 35.888-80 80s35.888 80 80 80 80-35.888 80-80-35.888-80-80-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M220.116 487.936l-20.213-49.425a3.992 3.992 0 0 0-5.808-1.886l-45.404 28.104c-29.466 18.24-66.295-8.519-58.054-42.179l12.699-51.865a3.993 3.993 0 0 0-3.59-4.941l-53.251-3.951c-34.554-2.562-48.632-45.855-22.174-68.247L65.08 259.05a3.992 3.992 0 0 0 0-6.106l-40.76-34.497c-26.45-22.384-12.39-65.682 22.174-68.246l53.251-3.951a3.993 3.993 0 0 0 3.59-4.941L90.637 89.443c-8.239-33.656 28.581-60.42 58.054-42.179l45.403 28.104a3.993 3.993 0 0 0 5.808-1.887l20.213-49.425c13.116-32.071 58.638-32.081 71.758 0l20.212 49.424a3.994 3.994 0 0 0 5.809 1.887l45.403-28.104c29.464-18.236 66.297 8.513 58.054 42.179l-12.699 51.865a3.995 3.995 0 0 0 3.59 4.941l53.251 3.951c34.553 2.563 48.633 45.854 22.175 68.246l-40.76 34.497a3.993 3.993 0 0 0 0 6.107l40.76 34.496c26.511 22.441 12.322 65.689-22.175 68.247l-53.251 3.951a3.993 3.993 0 0 0-3.589 4.942l12.698 51.864c8.241 33.658-28.583 60.421-58.054 42.18l-45.403-28.104a3.994 3.994 0 0 0-5.809 1.887l-20.212 49.424c-13.159 32.178-58.675 31.993-71.757 0zm16.814-64.568l19.064 46.616 19.064-46.615c10.308-25.2 40.778-35.066 63.892-20.759l42.822 26.507-11.976-48.919c-6.475-26.444 12.38-52.339 39.487-54.349l50.226-3.726-38.444-32.536c-20.782-17.591-20.747-49.621.001-67.18l38.442-32.536-50.225-3.727c-27.151-2.015-45.95-27.948-39.488-54.349l11.978-48.919-42.823 26.507c-23.151 14.327-53.603 4.4-63.892-20.76l-19.064-46.615-19.064 46.617c-10.305 25.198-40.778 35.066-63.891 20.76l-42.823-26.508 11.977 48.918c6.474 26.446-12.381 52.338-39.488 54.35l-50.224 3.726 38.443 32.537c20.782 17.588 20.747 49.619 0 67.178L52.48 322.123l50.226 3.726c27.151 2.014 45.95 27.947 39.487 54.349l-11.977 48.919 42.823-26.507c23.188-14.355 53.622-4.352 63.891 20.758zM256 384c-70.58 0-128-57.421-128-128 0-70.58 57.42-128 128-128 70.579 0 128 57.42 128 128 0 70.579-57.421 128-128 128zm0-208c-44.112 0-80 35.888-80 80s35.888 80 80 80 80-35.888 80-80-35.888-80-80-80z\\\"}}},\\\"superpowers\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2dd\\\",\\\"label\\\":\\\"Superpowers\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z\\\"}}},\\\"superscript\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"exponential\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f12b\\\",\\\"label\\\":\\\"superscript\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M395.198 256c3.461-10.526 18.796-21.28 36.265-32.425 16.625-10.605 35.467-22.626 50.341-38.862 17.458-19.054 25.944-40.175 25.944-64.567 0-60.562-50.702-88.146-97.81-88.146-42.491 0-76.378 22.016-94.432 50.447-4.654 7.329-2.592 17.036 4.623 21.865l30.328 20.296c7.032 4.706 16.46 3.084 21.63-3.614 8.022-10.394 18.818-18.225 31.667-18.225 19.387 0 26.266 12.901 26.266 23.948 0 36.159-119.437 57.023-119.437 160.024 0 6.654.561 13.014 1.415 19.331 1.076 7.964 7.834 13.928 15.87 13.928H496c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16H395.198zM272 416c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-62.399a16 16 0 0 1-13.541-7.478l-45.701-72.615c-2.297-3.352-4.422-6.969-6.195-10.209-1.65 3.244-3.647 6.937-5.874 10.582l-44.712 72.147a15.999 15.999 0 0 1-13.6 7.572H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h26.325l56.552-82.709L46.111 256H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h68.806a16 16 0 0 1 13.645 7.644l39.882 65.126c2.072 3.523 4.053 7.171 5.727 10.37 1.777-3.244 3.92-6.954 6.237-10.537l40.332-65.035a16 16 0 0 1 13.598-7.567H272c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-27.979l-52.69 75.671L249.974 416H272z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M395.198 256c3.461-10.526 18.796-21.28 36.265-32.425 16.625-10.605 35.467-22.626 50.341-38.862 17.458-19.054 25.944-40.175 25.944-64.567 0-60.562-50.702-88.146-97.81-88.146-42.491 0-76.378 22.016-94.432 50.447-4.654 7.329-2.592 17.036 4.623 21.865l30.328 20.296c7.032 4.706 16.46 3.084 21.63-3.614 8.022-10.394 18.818-18.225 31.667-18.225 19.387 0 26.266 12.901 26.266 23.948 0 36.159-119.437 57.023-119.437 160.024 0 6.654.561 13.014 1.415 19.331 1.076 7.964 7.834 13.928 15.87 13.928H496c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16H395.198zM272 416c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-62.399a16 16 0 0 1-13.541-7.478l-45.701-72.615c-2.297-3.352-4.422-6.969-6.195-10.209-1.65 3.244-3.647 6.937-5.874 10.582l-44.712 72.147a15.999 15.999 0 0 1-13.6 7.572H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h26.325l56.552-82.709L46.111 256H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h68.806a16 16 0 0 1 13.645 7.644l39.882 65.126c2.072 3.523 4.053 7.171 5.727 10.37 1.777-3.244 3.92-6.954 6.237-10.537l40.332-65.035a16 16 0 0 1 13.598-7.567H272c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-27.979l-52.69 75.671L249.974 416H272z\\\"}}},\\\"supple\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3f9\\\",\\\"label\\\":\\\"Supple\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1502479343000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z\\\"}}},\\\"surprise\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"shocked\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f5c2\\\",\\\"label\\\":\\\"Hushed Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111703,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111638,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm0-176c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm-48-72c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm128-32c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\\\"}}},\\\"swatchbook\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5c3\\\",\\\"label\\\":\\\"Swatchbook\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111703,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 511 512\\\\\\\"><path d=\\\\\\\"M479.06 320H372.29L186.15 506.51c-2.06 2.07-4.49 3.58-6.67 5.49h299.58c17.64 0 31.94-14.33 31.94-32V352c0-17.67-14.3-32-31.94-32zm-44.5-152.9l-90.33-90.51c-12.47-12.5-32.69-12.5-45.17 0l-75.5 75.65V416c0 2.96-.67 5.73-.87 8.64l211.87-212.28c12.47-12.5 12.47-32.77 0-45.26zM191.62 32c0-17.67-14.3-32-31.94-32H31.94C14.3 0 0 14.33 0 32v384c0 53.02 42.9 96 95.81 96s95.81-42.98 95.81-96V32zM95.81 440c-13.23 0-23.95-10.75-23.95-24 0-13.26 10.73-24 23.95-24s23.95 10.74 23.95 24c.01 13.25-10.72 24-23.95 24zm31.94-184H63.88v-64h63.88v64zm0-128H63.88V64h63.88v64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"511\\\",\\\"512\\\"],\\\"width\\\":511,\\\"height\\\":512,\\\"path\\\":\\\"M479.06 320H372.29L186.15 506.51c-2.06 2.07-4.49 3.58-6.67 5.49h299.58c17.64 0 31.94-14.33 31.94-32V352c0-17.67-14.3-32-31.94-32zm-44.5-152.9l-90.33-90.51c-12.47-12.5-32.69-12.5-45.17 0l-75.5 75.65V416c0 2.96-.67 5.73-.87 8.64l211.87-212.28c12.47-12.5 12.47-32.77 0-45.26zM191.62 32c0-17.67-14.3-32-31.94-32H31.94C14.3 0 0 14.33 0 32v384c0 53.02 42.9 96 95.81 96s95.81-42.98 95.81-96V32zM95.81 440c-13.23 0-23.95-10.75-23.95-24 0-13.26 10.73-24 23.95-24s23.95 10.74 23.95 24c.01 13.25-10.72 24-23.95 24zm31.94-184H63.88v-64h63.88v64zm0-128H63.88V64h63.88v64z\\\"}}},\\\"swimmer\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"athlete\\\",\\\"head\\\",\\\"man\\\",\\\"person\\\",\\\"water\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5c4\\\",\\\"label\\\":\\\"Swimmer\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111704,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\\\"}}},\\\"swimming-pool\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"ladder\\\",\\\"recreation\\\",\\\"water\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5c5\\\",\\\"label\\\":\\\"Swimming Pool\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111705,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\\\"}}},\\\"sync\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"exchange\\\",\\\"refresh\\\",\\\"reload\\\",\\\"rotate\\\",\\\"swap\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f021\\\",\\\"label\\\":\\\"Sync\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512.333 512\\\\\\\"><path d=\\\\\\\"M440.935 12.574l3.966 82.766C399.416 41.904 331.674 8 256 8 134.813 8 33.933 94.924 12.296 209.824 10.908 217.193 16.604 224 24.103 224h49.084c5.57 0 10.377-3.842 11.676-9.259C103.407 137.408 172.931 80 256 80c60.893 0 114.512 30.856 146.104 77.801l-101.53-4.865c-6.845-.328-12.574 5.133-12.574 11.986v47.411c0 6.627 5.373 12 12 12h200.333c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12h-47.411c-6.853 0-12.315 5.729-11.987 12.574zM256 432c-60.895 0-114.517-30.858-146.109-77.805l101.868 4.871c6.845.327 12.573-5.134 12.573-11.986v-47.412c0-6.627-5.373-12-12-12H12c-6.627 0-12 5.373-12 12V500c0 6.627 5.373 12 12 12h47.385c6.863 0 12.328-5.745 11.985-12.599l-4.129-82.575C112.725 470.166 180.405 504 256 504c121.187 0 222.067-86.924 243.704-201.824 1.388-7.369-4.308-14.176-11.807-14.176h-49.084c-5.57 0-10.377 3.842-11.676 9.259C408.593 374.592 339.069 432 256 432z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512.333\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M440.935 12.574l3.966 82.766C399.416 41.904 331.674 8 256 8 134.813 8 33.933 94.924 12.296 209.824 10.908 217.193 16.604 224 24.103 224h49.084c5.57 0 10.377-3.842 11.676-9.259C103.407 137.408 172.931 80 256 80c60.893 0 114.512 30.856 146.104 77.801l-101.53-4.865c-6.845-.328-12.574 5.133-12.574 11.986v47.411c0 6.627 5.373 12 12 12h200.333c6.627 0 12-5.373 12-12V12c0-6.627-5.373-12-12-12h-47.411c-6.853 0-12.315 5.729-11.987 12.574zM256 432c-60.895 0-114.517-30.858-146.109-77.805l101.868 4.871c6.845.327 12.573-5.134 12.573-11.986v-47.412c0-6.627-5.373-12-12-12H12c-6.627 0-12 5.373-12 12V500c0 6.627 5.373 12 12 12h47.385c6.863 0 12.328-5.745 11.985-12.599l-4.129-82.575C112.725 470.166 180.405 504 256 504c121.187 0 222.067-86.924 243.704-201.824 1.388-7.369-4.308-14.176-11.807-14.176h-49.084c-5.57 0-10.377 3.842-11.676 9.259C408.593 374.592 339.069 432 256 432z\\\"}}},\\\"sync-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"refresh\\\",\\\"reload\\\",\\\"rotate\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2f1\\\",\\\"label\\\":\\\"Alternate Sync\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\\\"}}},\\\"syringe\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"immunizations\\\",\\\"needle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f48e\\\",\\\"label\\\":\\\"Syringe\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821459,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\\\"}}},\\\"table\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"data\\\",\\\"excel\\\",\\\"spreadsheet\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0ce\\\",\\\"label\\\":\\\"table\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\\\"}}},\\\"table-tennis\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f45d\\\",\\\"label\\\":\\\"Table Tennis\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527998,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\\\"}}},\\\"tablet\\\":{\\\"changes\\\":[\\\"3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"apple\\\",\\\"device\\\",\\\"ipad\\\",\\\"kindle\\\",\\\"screen\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f10a\\\",\\\"label\\\":\\\"tablet\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\\\"}}},\\\"tablet-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"apple\\\",\\\"device\\\",\\\"ipad\\\",\\\"kindle\\\",\\\"screen\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3fa\\\",\\\"label\\\":\\\"Alternate Tablet\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\\\"}}},\\\"tablets\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"drugs\\\",\\\"medicine\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f490\\\",\\\"label\\\":\\\"Tablets\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821460,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\\\"}}},\\\"tachometer-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"dashboard\\\",\\\"tachometer\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3fd\\\",\\\"label\\\":\\\"Alternate Tachometer\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831546,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"tag\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"label\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f02b\\\",\\\"label\\\":\\\"tag\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\\\"}}},\\\"tags\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"labels\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f02c\\\",\\\"label\\\":\\\"tags\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\\\"}}},\\\"tape\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4db\\\",\\\"label\\\":\\\"Tape\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821460,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\\\"}}},\\\"tasks\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"downloading\\\",\\\"downloads\\\",\\\"loading\\\",\\\"progress\\\",\\\"settings\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0ae\\\",\\\"label\\\":\\\"Tasks\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M208 132h288c8.8 0 16-7.2 16-16V76c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zM64 368c-26.5 0-48.6 21.5-48.6 48s22.1 48 48.6 48 48-21.5 48-48-21.5-48-48-48zm92.5-299l-72.2 72.2-15.6 15.6c-4.7 4.7-12.9 4.7-17.6 0L3.5 109.4c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.3c4.7-4.7 12.3-4.7 17 0l17 16.5c4.6 4.7 4.6 12.3-.1 17zm0 159.6l-72.2 72.2-15.7 15.7c-4.7 4.7-12.9 4.7-17.6 0L3.5 269c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.7c4.7-4.7 12.3-4.7 17 0l17 17c4.6 4.6 4.6 12.2-.1 16.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M208 132h288c8.8 0 16-7.2 16-16V76c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zM64 368c-26.5 0-48.6 21.5-48.6 48s22.1 48 48.6 48 48-21.5 48-48-21.5-48-48-48zm92.5-299l-72.2 72.2-15.6 15.6c-4.7 4.7-12.9 4.7-17.6 0L3.5 109.4c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.3c4.7-4.7 12.3-4.7 17 0l17 16.5c4.6 4.7 4.6 12.3-.1 17zm0 159.6l-72.2 72.2-15.7 15.7c-4.7 4.7-12.9 4.7-17.6 0L3.5 269c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.7c4.7-4.7 12.3-4.7 17 0l17 17c4.6 4.6 4.6 12.2-.1 16.9z\\\"}}},\\\"taxi\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cab\\\",\\\"cabbie\\\",\\\"car\\\",\\\"car service\\\",\\\"lyft\\\",\\\"machine\\\",\\\"transportation\\\",\\\"uber\\\",\\\"vehicle\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1ba\\\",\\\"label\\\":\\\"Taxi\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111705,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"teamspeak\\\":{\\\"changes\\\":[\\\"5.0.11\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f4f9\\\",\\\"label\\\":\\\"TeamSpeak\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529520111565,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 511.8 512\\\\\\\"><path d=\\\\\\\"M.82 237.82c2.36-15.52 10.69-27.04 24.88-34.03 3.5-1.85 5.65-3.5 6.37-7.81 6.17-33.41 19.53-63.94 39.37-91.59 2.36-3.19 4.01-5.35 1.03-9.35-3.7-5.35-1.03-10.18 2.98-14.49 28.06-31.87 61.88-55.1 101.98-67.44 95.81-29.4 180.1-9.35 252.37 60.45 6.68 6.37 15.52 12.85 6.99 24.36-1.34 1.85 1.03 3.5 2.16 5.04 20.66 28.06 34.23 59.42 40.4 93.65.82 3.7 2.98 5.04 5.86 6.37 17.37 8.84 25.7 23.34 26.01 42.25 0 17.17 1.85 34.54-1.03 51.71-4.01 24.67-29.19 41.74-53.25 36.7-7.2-1.64-9.35-7.2-9.35-14.19 0-28.06.82-56.44 0-84.6-1.85-75.76-36.18-132.81-102.28-169.41C234.28 4.98 92.11 72.42 67.54 196.91c-6.06 30.42-1.74 48.27-3.7 125.82-.31 7.2-4.32 11.2-12.03 11.51C20.97 335.58 0 316.05 0 285.21v-20.87m221.74 106.81c11.82-4.32 20.05-11.82 22.51-24.36 2.36-12.34-12.03-30.02-32.38-48.73-20.87-19.22-48.22-39.06-63.43-46.57-21.69-12.03-41.74-1.85-46.26 22.72-5.04 26.21 0 51.4 14.49 73.91 10.18 15.52 25.39 22.72 43.38 24.05 11.62.62 52.54 2.16 61.69-1.02m129.83 5.55c36.5 2.81 59.33-28.55 58.39-60.45-2.14-45.17-66.17-16.48-87.79-8.02-73.16 28.14-45.05 54.92-22.2 60.75m149.26-1.33c-2.98-2.36-7.2-1.03-8.33 2.36-8.02 25.39-44.72 112.46-172.08 121.51-149.67 10.49 80.29 43.59 145.36-6.37 22.72-17.37 47.6-35.05 46.57-85.43-.32-10.07-4.84-26.72-11.52-32.07\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"511.8\\\",\\\"512\\\"],\\\"width\\\":511,\\\"height\\\":512,\\\"path\\\":\\\"M.82 237.82c2.36-15.52 10.69-27.04 24.88-34.03 3.5-1.85 5.65-3.5 6.37-7.81 6.17-33.41 19.53-63.94 39.37-91.59 2.36-3.19 4.01-5.35 1.03-9.35-3.7-5.35-1.03-10.18 2.98-14.49 28.06-31.87 61.88-55.1 101.98-67.44 95.81-29.4 180.1-9.35 252.37 60.45 6.68 6.37 15.52 12.85 6.99 24.36-1.34 1.85 1.03 3.5 2.16 5.04 20.66 28.06 34.23 59.42 40.4 93.65.82 3.7 2.98 5.04 5.86 6.37 17.37 8.84 25.7 23.34 26.01 42.25 0 17.17 1.85 34.54-1.03 51.71-4.01 24.67-29.19 41.74-53.25 36.7-7.2-1.64-9.35-7.2-9.35-14.19 0-28.06.82-56.44 0-84.6-1.85-75.76-36.18-132.81-102.28-169.41C234.28 4.98 92.11 72.42 67.54 196.91c-6.06 30.42-1.74 48.27-3.7 125.82-.31 7.2-4.32 11.2-12.03 11.51C20.97 335.58 0 316.05 0 285.21v-20.87m221.74 106.81c11.82-4.32 20.05-11.82 22.51-24.36 2.36-12.34-12.03-30.02-32.38-48.73-20.87-19.22-48.22-39.06-63.43-46.57-21.69-12.03-41.74-1.85-46.26 22.72-5.04 26.21 0 51.4 14.49 73.91 10.18 15.52 25.39 22.72 43.38 24.05 11.62.62 52.54 2.16 61.69-1.02m129.83 5.55c36.5 2.81 59.33-28.55 58.39-60.45-2.14-45.17-66.17-16.48-87.79-8.02-73.16 28.14-45.05 54.92-22.2 60.75m149.26-1.33c-2.98-2.36-7.2-1.03-8.33 2.36-8.02 25.39-44.72 112.46-172.08 121.51-149.67 10.49 80.29 43.59 145.36-6.37 22.72-17.37 47.6-35.05 46.57-85.43-.32-10.07-4.84-26.72-11.52-32.07\\\"}}},\\\"teeth\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f62e\\\",\\\"label\\\":\\\"Teeth\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831549,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\\\"}}},\\\"teeth-open\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f62f\\\",\\\"label\\\":\\\"Teeth Open\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831549,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\\\"}}},\\\"telegram\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2c6\\\",\\\"label\\\":\\\"Telegram\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z\\\"}}},\\\"telegram-plane\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f3fe\\\",\\\"label\\\":\\\"Telegram Plane\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z\\\"}}},\\\"tencent-weibo\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1d5\\\",\\\"label\\\":\\\"Tencent Weibo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z\\\"}}},\\\"terminal\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"code\\\",\\\"command\\\",\\\"console\\\",\\\"prompt\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f120\\\",\\\"label\\\":\\\"Terminal\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\\\"}}},\\\"text-height\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f034\\\",\\\"label\\\":\\\"text-height\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M16 32h288c8.837 0 16 7.163 16 16v96c0 8.837-7.163 16-16 16h-35.496c-8.837 0-16-7.163-16-16V96h-54.761v320H232c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H88c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h34.257V96H67.496v48c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16V48c0-8.837 7.163-16 16-16zm475.308 4.685l79.995 80.001C581.309 126.693 574.297 144 559.99 144H512v224h48c15.639 0 20.635 17.991 11.313 27.314l-79.995 80.001c-6.247 6.247-16.381 6.245-22.626 0l-79.995-80.001C378.691 385.307 385.703 368 400.01 368H448V144h-48c-15.639 0-20.635-17.991-11.313-27.314l79.995-80.001c6.247-6.248 16.381-6.245 22.626 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M16 32h288c8.837 0 16 7.163 16 16v96c0 8.837-7.163 16-16 16h-35.496c-8.837 0-16-7.163-16-16V96h-54.761v320H232c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H88c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h34.257V96H67.496v48c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16V48c0-8.837 7.163-16 16-16zm475.308 4.685l79.995 80.001C581.309 126.693 574.297 144 559.99 144H512v224h48c15.639 0 20.635 17.991 11.313 27.314l-79.995 80.001c-6.247 6.247-16.381 6.245-22.626 0l-79.995-80.001C378.691 385.307 385.703 368 400.01 368H448V144h-48c-15.639 0-20.635-17.991-11.313-27.314l79.995-80.001c6.247-6.248 16.381-6.245 22.626 0z\\\"}}},\\\"text-width\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f035\\\",\\\"label\\\":\\\"text-width\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M16 32h416c8.837 0 16 7.163 16 16v96c0 8.837-7.163 16-16 16h-35.496c-8.837 0-16-7.163-16-16V96H261.743v128H296c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H152c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h34.257V96H67.496v48c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16V48c0-8.837 7.163-16 16-16zm427.315 340.682l-80.001-79.995C353.991 283.365 336 288.362 336 304v48H112v-47.99c0-14.307-17.307-21.319-27.314-11.313L4.685 372.692c-6.245 6.245-6.247 16.379 0 22.626l80.001 79.995C94.009 484.635 112 479.638 112 464v-48h224v47.99c0 14.307 17.307 21.319 27.314 11.313l80.001-79.995c6.245-6.245 6.248-16.379 0-22.626z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M16 32h416c8.837 0 16 7.163 16 16v96c0 8.837-7.163 16-16 16h-35.496c-8.837 0-16-7.163-16-16V96H261.743v128H296c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H152c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h34.257V96H67.496v48c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16V48c0-8.837 7.163-16 16-16zm427.315 340.682l-80.001-79.995C353.991 283.365 336 288.362 336 304v48H112v-47.99c0-14.307-17.307-21.319-27.314-11.313L4.685 372.692c-6.245 6.245-6.247 16.379 0 22.626l80.001 79.995C94.009 484.635 112 479.638 112 464v-48h224v47.99c0 14.307 17.307 21.319 27.314 11.313l80.001-79.995c6.245-6.245 6.248-16.379 0-22.626z\\\"}}},\\\"th\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"blocks\\\",\\\"boxes\\\",\\\"grid\\\",\\\"squares\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f00a\\\",\\\"label\\\":\\\"th\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\\\"}}},\\\"th-large\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"blocks\\\",\\\"boxes\\\",\\\"grid\\\",\\\"squares\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f009\\\",\\\"label\\\":\\\"th-large\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\\\"}}},\\\"th-list\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"checklist\\\",\\\"completed\\\",\\\"done\\\",\\\"finished\\\",\\\"ol\\\",\\\"todo\\\",\\\"ul\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f00b\\\",\\\"label\\\":\\\"th-list\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\\\"}}},\\\"theater-masks\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f630\\\",\\\"label\\\":\\\"Theater Masks\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831549,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\\\"}}},\\\"themeco\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5c6\\\",\\\"label\\\":\\\"Themeco\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529514897199,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 441.03 512\\\\\\\"><path d=\\\\\\\"M199.74 12.29c9.74-5.64 25.59-5.73 35.39-.21l188.13 105.95c9.81 5.52 17.76 19.14 17.76 30.38v213.87c0 11.26-7.93 24.89-17.71 30.46L235.09 499.88c-9.78 5.57-25.58 5.48-35.29-.21L17.58 392.95C7.87 387.26 0 373.52 0 362.27V148.41c0-11.26 7.9-24.96 17.63-30.59L199.74 12.29zM123.54 209c-15.69 0-31.39.14-47.08.14v99.87h18.83v-29.39h28.25c48.94 0 48.79-70.62 0-70.62zm137.96 98.73l-30.25-34.1c36.4-7.39 34.26-64.21-10.7-64.49-15.84 0-31.67-.14-47.51-.14v100.01h18.83v-33.38H210l29.1 33.38h22.4v-1.28zm-40.94-81.04c22.98 0 22.9 31.96 0 31.96h-28.68v-31.96h28.68zm-94.07-1.57c20.85 0 20.78 38.24 0 38.24H94.68v-38.23l31.81-.01zm189.65-17.97c-67.4 0-69.86 104.15 0 104.15 68.39-.01 68.33-104.15 0-104.15zm0 17.12c43.43 0 44.1 69.76 0 69.76-44.12 0-43.74-69.76 0-69.76z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"441.03\\\",\\\"512\\\"],\\\"width\\\":441,\\\"height\\\":512,\\\"path\\\":\\\"M199.74 12.29c9.74-5.64 25.59-5.73 35.39-.21l188.13 105.95c9.81 5.52 17.76 19.14 17.76 30.38v213.87c0 11.26-7.93 24.89-17.71 30.46L235.09 499.88c-9.78 5.57-25.58 5.48-35.29-.21L17.58 392.95C7.87 387.26 0 373.52 0 362.27V148.41c0-11.26 7.9-24.96 17.63-30.59L199.74 12.29zM123.54 209c-15.69 0-31.39.14-47.08.14v99.87h18.83v-29.39h28.25c48.94 0 48.79-70.62 0-70.62zm137.96 98.73l-30.25-34.1c36.4-7.39 34.26-64.21-10.7-64.49-15.84 0-31.67-.14-47.51-.14v100.01h18.83v-33.38H210l29.1 33.38h22.4v-1.28zm-40.94-81.04c22.98 0 22.9 31.96 0 31.96h-28.68v-31.96h28.68zm-94.07-1.57c20.85 0 20.78 38.24 0 38.24H94.68v-38.23l31.81-.01zm189.65-17.97c-67.4 0-69.86 104.15 0 104.15 68.39-.01 68.33-104.15 0-104.15zm0 17.12c43.43 0 44.1 69.76 0 69.76-44.12 0-43.74-69.76 0-69.76z\\\"}}},\\\"themeisle\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2b2\\\",\\\"label\\\":\\\"ThemeIsle\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z\\\"}}},\\\"thermometer\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"fever\\\",\\\"temperature\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f491\\\",\\\"label\\\":\\\"Thermometer\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821460,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\\\"}}},\\\"thermometer-empty\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2cb\\\",\\\"label\\\":\\\"Thermometer Empty\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\\\"}}},\\\"thermometer-full\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2c7\\\",\\\"label\\\":\\\"Thermometer Full\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\\\"}}},\\\"thermometer-half\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2c9\\\",\\\"label\\\":\\\"Thermometer 1/2 Full\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\\\"}}},\\\"thermometer-quarter\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2ca\\\",\\\"label\\\":\\\"Thermometer 1/4 Full\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\\\"}}},\\\"thermometer-three-quarters\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"status\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2c8\\\",\\\"label\\\":\\\"Thermometer 3/4 Full\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\\\"}}},\\\"thumbs-down\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"disagree\\\",\\\"disapprove\\\",\\\"dislike\\\",\\\"hand\\\",\\\"thumbs-o-down\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f165\\\",\\\"label\\\":\\\"thumbs-down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821460,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503066239000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M466.27 225.31c4.674-22.647.864-44.538-8.99-62.99 2.958-23.868-4.021-48.565-17.34-66.99C438.986 39.423 404.117 0 327 0c-7 0-15 .01-22.22.01C201.195.01 168.997 40 128 40h-10.845c-5.64-4.975-13.042-8-21.155-8H32C14.327 32 0 46.327 0 64v240c0 17.673 14.327 32 32 32h64c11.842 0 22.175-6.438 27.708-16h7.052c19.146 16.953 46.013 60.653 68.76 83.4 13.667 13.667 10.153 108.6 71.76 108.6 57.58 0 95.27-31.936 95.27-104.73 0-18.41-3.93-33.73-8.85-46.54h36.48c48.602 0 85.82-41.565 85.82-85.58 0-19.15-4.96-34.99-13.73-49.84zM64 296c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm330.18 16.73H290.19c0 37.82 28.36 55.37 28.36 94.54 0 23.75 0 56.73-47.27 56.73-18.91-18.91-9.46-66.18-37.82-94.54C206.9 342.89 167.28 272 138.92 272H128V85.83c53.611 0 100.001-37.82 171.64-37.82h37.82c35.512 0 60.82 17.12 53.12 65.9 15.2 8.16 26.5 36.44 13.94 57.57 21.581 20.384 18.699 51.065 5.21 65.62 9.45 0 22.36 18.91 22.27 37.81-.09 18.91-16.71 37.82-37.82 37.82z\\\"}}},\\\"thumbs-up\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"agree\\\",\\\"approve\\\",\\\"favorite\\\",\\\"hand\\\",\\\"like\\\",\\\"ok\\\",\\\"okay\\\",\\\"success\\\",\\\"thumbs-o-up\\\",\\\"yes\\\",\\\"you got it dude\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f164\\\",\\\"label\\\":\\\"thumbs-up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821461,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1503066239000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M466.27 286.69C475.04 271.84 480 256 480 236.85c0-44.015-37.218-85.58-85.82-85.58H357.7c4.92-12.81 8.85-28.13 8.85-46.54C366.55 31.936 328.86 0 271.28 0c-61.607 0-58.093 94.933-71.76 108.6-22.747 22.747-49.615 66.447-68.76 83.4H32c-17.673 0-32 14.327-32 32v240c0 17.673 14.327 32 32 32h64c14.893 0 27.408-10.174 30.978-23.95 44.509 1.001 75.06 39.94 177.802 39.94 7.22 0 15.22.01 22.22.01 77.117 0 111.986-39.423 112.94-95.33 13.319-18.425 20.299-43.122 17.34-66.99 9.854-18.452 13.664-40.343 8.99-62.99zm-61.75 53.83c12.56 21.13 1.26 49.41-13.94 57.57 7.7 48.78-17.608 65.9-53.12 65.9h-37.82c-71.639 0-118.029-37.82-171.64-37.82V240h10.92c28.36 0 67.98-70.89 94.54-97.46 28.36-28.36 18.91-75.63 37.82-94.54 47.27 0 47.27 32.98 47.27 56.73 0 39.17-28.36 56.72-28.36 94.54h103.99c21.11 0 37.73 18.91 37.82 37.82.09 18.9-12.82 37.81-22.27 37.81 13.489 14.555 16.371 45.236-5.21 65.62zM88 432c0 13.255-10.745 24-24 24s-24-10.745-24-24 10.745-24 24-24 24 10.745 24 24z\\\"}}},\\\"thumbtack\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"coordinates\\\",\\\"location\\\",\\\"marker\\\",\\\"pin\\\",\\\"thumb-tack\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f08d\\\",\\\"label\\\":\\\"Thumbtack\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\\\"}}},\\\"ticket-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"ticket\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f3ff\\\",\\\"label\\\":\\\"Alternate Ticket\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\\\"}}},\\\"times\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"close\\\",\\\"cross\\\",\\\"error\\\",\\\"exit\\\",\\\"incorrect\\\",\\\"notice\\\",\\\"notification\\\",\\\"notify\\\",\\\"problem\\\",\\\"wrong\\\",\\\"x\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f00d\\\",\\\"label\\\":\\\"Times\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154580,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 352 512\\\\\\\"><path d=\\\\\\\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"352\\\",\\\"512\\\"],\\\"width\\\":352,\\\"height\\\":512,\\\"path\\\":\\\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\\\"}}},\\\"times-circle\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"close\\\",\\\"cross\\\",\\\"exit\\\",\\\"incorrect\\\",\\\"notice\\\",\\\"notification\\\",\\\"notify\\\",\\\"problem\\\",\\\"wrong\\\",\\\"x\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f057\\\",\\\"label\\\":\\\"Times Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z\\\"}}},\\\"tint\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"drop\\\",\\\"droplet\\\",\\\"raindrop\\\",\\\"waterdrop\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f043\\\",\\\"label\\\":\\\"tint\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111706,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 352 512\\\\\\\"><path d=\\\\\\\"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"352\\\",\\\"512\\\"],\\\"width\\\":352,\\\"height\\\":512,\\\"path\\\":\\\"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\\\"}}},\\\"tint-slash\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5c7\\\",\\\"label\\\":\\\"Tint Slash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111706,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\\\"}}},\\\"tired\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"emoticon\\\",\\\"face\\\",\\\"grumpy\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f5c8\\\",\\\"label\\\":\\\"Tired Face\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111707,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1529520111641,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm129.1-303.8c-3.8-4.4-10.3-5.4-15.3-2.5l-80 48c-3.6 2.2-5.8 6.1-5.8 10.3s2.2 8.1 5.8 10.3l80 48c5.4 3.2 11.8 1.6 15.3-2.5 3.8-4.5 3.9-11 .1-15.5L343.6 208l33.6-40.3c3.8-4.5 3.7-11.1-.1-15.5zM220 208c0-4.2-2.2-8.1-5.8-10.3l-80-48c-5-3-11.5-1.9-15.3 2.5-3.8 4.5-3.9 11-.1 15.5l33.6 40.3-33.6 40.3c-3.8 4.5-3.7 11 .1 15.5 3.5 4.1 9.9 5.7 15.3 2.5l80-48c3.6-2.2 5.8-6.1 5.8-10.3zm28 64c-45.4 0-100.9 38.3-107.8 93.3-1.5 11.8 6.9 21.6 15.5 17.9C178.4 373.5 212 368 248 368s69.6 5.5 92.3 15.2c8.5 3.7 17-6 15.5-17.9-6.9-55-62.4-93.3-107.8-93.3z\\\"}}},\\\"toggle-off\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"switch\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f204\\\",\\\"label\\\":\\\"Toggle Off\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\\\"}}},\\\"toggle-on\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"switch\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f205\\\",\\\"label\\\":\\\"Toggle On\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M576 256c0 106.039-85.961 192-192 192H192C85.961 448 0 362.039 0 256S85.961 64 192 64h192c106.039 0 192 85.961 192 192zM384 128c-70.741 0-128 57.249-128 128 0 70.741 57.249 128 128 128 70.741 0 128-57.249 128-128 0-70.741-57.249-128-128-128\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M576 256c0 106.039-85.961 192-192 192H192C85.961 448 0 362.039 0 256S85.961 64 192 64h192c106.039 0 192 85.961 192 192zM384 128c-70.741 0-128 57.249-128 128 0 70.741 57.249 128 128 128 70.741 0 128-57.249 128-128 0-70.741-57.249-128-128-128\\\"}}},\\\"toolbox\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"admin\\\",\\\"container\\\",\\\"fix\\\",\\\"repair\\\",\\\"settings\\\",\\\"tools\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f552\\\",\\\"label\\\":\\\"Toolbox\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154580,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\\\"}}},\\\"tooth\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bicuspid\\\",\\\"dental\\\",\\\"molar\\\",\\\"mouth\\\",\\\"teeth\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5c9\\\",\\\"label\\\":\\\"Tooth\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111707,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\\\"}}},\\\"trade-federation\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f513\\\",\\\"label\\\":\\\"Trade Federation\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442522,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M202.45 108.42v81.61H38.94l48.22 61.91h114.73v196.75h64.61V252.96h83.27v-62.69h-83.18V171.1h145.62v-62.68H202.45zm4.86 6h197.77v50.68H259.44v30.93h83.18v50.93h-83.26v195.73h-52.73V245.94H89.86l-39.95-49.91h157.4v-81.61zM247.99 8.8C111.03 8.8 0 119.83 0 256.8s111.03 248 247.99 248S496 393.76 496 256.8 384.96 8.8 247.99 8.8zm.02 13.24c129.66 0 234.76 105.12 234.76 234.78s-105.1 234.76-234.76 234.76S13.23 386.47 13.23 256.81 118.35 22.04 248.01 22.04zm0 7.89c-125.3 0-226.89 101.57-226.89 226.87s101.59 226.89 226.89 226.89S474.88 382.1 474.88 256.8 373.31 29.93 248.01 29.93zm-.02 13.3c117.95 0 213.56 95.62 213.56 213.56s-95.62 213.56-213.56 213.56S34.43 374.75 34.43 256.8 130.04 43.23 247.99 43.23zm-73.32 104.8l15.66 18.05-22.16-9.45-12.33 20.47 2.15-23.99-23.28-5.4 23.48-5.37-2.06-23.81 12.37 20.67 22.01-9.32-15.84 18.15zm-47.14-46.54l8.01 12.4 12.69-5.86-9.32 11.45 9.5 10.25-13.77-5.32-6.82 12.2.81-14.74-13.71-2.71 14.27-3.78-1.66-13.89zm250.77 75.59l11.99 19.56 20.88-9.11-14.9 17.45 15.11 17.04-21.2-8.78-11.54 19.64 1.8-22.87-22.24-4.9 22.31-5.36-2.21-22.67zm-107.05 98.45l13.86-3.22-1.28-14.17 7.35 12.18 13.08-5.59-9.31 10.75 9.36 10.71-13.1-5.54-7.29 12.21 1.22-14.17-13.89-3.16zm-125.43 6.5l23.73-3.87-1.73-24.53 11.01 21.38 22.79-9.22-16.93 17.08 15.81 18.83-21.47-10.82-13.02 20.86 3.66-23.77-23.85-5.94zm63.44-165.66v81.61H54.16l36.72 46.01h117.7v196.75h48.82V245.01h83.27v-47.03H257.4v-34.83h145.73v-46.78H209.26zm10.86 11.2h171.8v24.36H246.88v56.23h82.93v23.94h-82.93v197.42h-26.76V232.1H96.31l-20.09-23.94h143.9v-80.59z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M202.45 108.42v81.61H38.94l48.22 61.91h114.73v196.75h64.61V252.96h83.27v-62.69h-83.18V171.1h145.62v-62.68H202.45zm4.86 6h197.77v50.68H259.44v30.93h83.18v50.93h-83.26v195.73h-52.73V245.94H89.86l-39.95-49.91h157.4v-81.61zM247.99 8.8C111.03 8.8 0 119.83 0 256.8s111.03 248 247.99 248S496 393.76 496 256.8 384.96 8.8 247.99 8.8zm.02 13.24c129.66 0 234.76 105.12 234.76 234.78s-105.1 234.76-234.76 234.76S13.23 386.47 13.23 256.81 118.35 22.04 248.01 22.04zm0 7.89c-125.3 0-226.89 101.57-226.89 226.87s101.59 226.89 226.89 226.89S474.88 382.1 474.88 256.8 373.31 29.93 248.01 29.93zm-.02 13.3c117.95 0 213.56 95.62 213.56 213.56s-95.62 213.56-213.56 213.56S34.43 374.75 34.43 256.8 130.04 43.23 247.99 43.23zm-73.32 104.8l15.66 18.05-22.16-9.45-12.33 20.47 2.15-23.99-23.28-5.4 23.48-5.37-2.06-23.81 12.37 20.67 22.01-9.32-15.84 18.15zm-47.14-46.54l8.01 12.4 12.69-5.86-9.32 11.45 9.5 10.25-13.77-5.32-6.82 12.2.81-14.74-13.71-2.71 14.27-3.78-1.66-13.89zm250.77 75.59l11.99 19.56 20.88-9.11-14.9 17.45 15.11 17.04-21.2-8.78-11.54 19.64 1.8-22.87-22.24-4.9 22.31-5.36-2.21-22.67zm-107.05 98.45l13.86-3.22-1.28-14.17 7.35 12.18 13.08-5.59-9.31 10.75 9.36 10.71-13.1-5.54-7.29 12.21 1.22-14.17-13.89-3.16zm-125.43 6.5l23.73-3.87-1.73-24.53 11.01 21.38 22.79-9.22-16.93 17.08 15.81 18.83-21.47-10.82-13.02 20.86 3.66-23.77-23.85-5.94zm63.44-165.66v81.61H54.16l36.72 46.01h117.7v196.75h48.82V245.01h83.27v-47.03H257.4v-34.83h145.73v-46.78H209.26zm10.86 11.2h171.8v24.36H246.88v56.23h82.93v23.94h-82.93v197.42h-26.76V232.1H96.31l-20.09-23.94h143.9v-80.59z\\\"}}},\\\"trademark\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f25c\\\",\\\"label\\\":\\\"Trademark\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M97.119 163.133H12c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h248.559c6.627 0 12 5.373 12 12v43.133c0 6.627-5.373 12-12 12H175.44V404c0 6.627-5.373 12-12 12h-54.322c-6.627 0-12-5.373-12-12V163.133zM329.825 96h65.425a12 12 0 0 1 11.346 8.093l43.759 127.068c7.161 20.588 16.111 52.812 16.111 52.812h.896s8.95-32.224 16.111-52.812l43.758-127.068A12 12 0 0 1 538.577 96h65.41a12 12 0 0 1 11.961 11.03l24.012 296c.567 6.987-4.951 12.97-11.961 12.97h-54.101a12 12 0 0 1-11.972-11.182l-9.082-132.93c-1.79-24.168 0-53.706 0-53.706h-.896s-10.741 33.566-17.902 53.706l-30.7 84.731a12 12 0 0 1-11.282 7.912h-50.302a12 12 0 0 1-11.282-7.912l-30.7-84.731c-7.161-20.14-17.903-53.706-17.903-53.706h-.895s1.79 29.538 0 53.706l-9.082 132.93c-.428 6.295-5.66 11.182-11.97 11.182H305.4c-7.017 0-12.536-5.994-11.959-12.987l24.425-296A11.999 11.999 0 0 1 329.825 96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M97.119 163.133H12c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h248.559c6.627 0 12 5.373 12 12v43.133c0 6.627-5.373 12-12 12H175.44V404c0 6.627-5.373 12-12 12h-54.322c-6.627 0-12-5.373-12-12V163.133zM329.825 96h65.425a12 12 0 0 1 11.346 8.093l43.759 127.068c7.161 20.588 16.111 52.812 16.111 52.812h.896s8.95-32.224 16.111-52.812l43.758-127.068A12 12 0 0 1 538.577 96h65.41a12 12 0 0 1 11.961 11.03l24.012 296c.567 6.987-4.951 12.97-11.961 12.97h-54.101a12 12 0 0 1-11.972-11.182l-9.082-132.93c-1.79-24.168 0-53.706 0-53.706h-.896s-10.741 33.566-17.902 53.706l-30.7 84.731a12 12 0 0 1-11.282 7.912h-50.302a12 12 0 0 1-11.282-7.912l-30.7-84.731c-7.161-20.14-17.903-53.706-17.903-53.706h-.895s1.79 29.538 0 53.706l-9.082 132.93c-.428 6.295-5.66 11.182-11.97 11.182H305.4c-7.017 0-12.536-5.994-11.959-12.987l24.425-296A11.999 11.999 0 0 1 329.825 96z\\\"}}},\\\"traffic-light\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f637\\\",\\\"label\\\":\\\"Traffic Light\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831553,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\\\"}}},\\\"train\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bullet\\\",\\\"locomotive\\\",\\\"railway\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f238\\\",\\\"label\\\":\\\"Train\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\\\"}}},\\\"transgender\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"intersex\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f224\\\",\\\"label\\\":\\\"Transgender\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\"}}},\\\"transgender-alt\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f225\\\",\\\"label\\\":\\\"Alternate Transgender\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 480 512\\\\\\\"><path d=\\\\\\\"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"480\\\",\\\"512\\\"],\\\"width\\\":480,\\\"height\\\":512,\\\"path\\\":\\\"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\"}}},\\\"trash\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"delete\\\",\\\"garbage\\\",\\\"hide\\\",\\\"remove\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1f8\\\",\\\"label\\\":\\\"Trash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 84V56c0-13.3 10.7-24 24-24h112l9.4-18.7c4-8.2 12.3-13.3 21.4-13.3h114.3c9.1 0 17.4 5.1 21.5 13.3L312 32h112c13.3 0 24 10.7 24 24v28c0 6.6-5.4 12-12 12H12C5.4 96 0 90.6 0 84zm415.2 56.7L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32.8 140.7c-.4-6.9 5.1-12.7 12-12.7h358.5c6.8 0 12.3 5.8 11.9 12.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 84V56c0-13.3 10.7-24 24-24h112l9.4-18.7c4-8.2 12.3-13.3 21.4-13.3h114.3c9.1 0 17.4 5.1 21.5 13.3L312 32h112c13.3 0 24 10.7 24 24v28c0 6.6-5.4 12-12 12H12C5.4 96 0 90.6 0 84zm415.2 56.7L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32.8 140.7c-.4-6.9 5.1-12.7 12-12.7h358.5c6.8 0 12.3 5.8 11.9 12.7z\\\"}}},\\\"trash-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"delete\\\",\\\"garbage\\\",\\\"hide\\\",\\\"remove\\\",\\\"trash\\\",\\\"trash-o\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2ed\\\",\\\"label\\\":\\\"Alternate Trash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 84V56c0-13.3 10.7-24 24-24h112l9.4-18.7c4-8.2 12.3-13.3 21.4-13.3h114.3c9.1 0 17.4 5.1 21.5 13.3L312 32h112c13.3 0 24 10.7 24 24v28c0 6.6-5.4 12-12 12H12C5.4 96 0 90.6 0 84zm416 56v324c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V140c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12zm-272 68c0-8.8-7.2-16-16-16s-16 7.2-16 16v224c0 8.8 7.2 16 16 16s16-7.2 16-16V208zm96 0c0-8.8-7.2-16-16-16s-16 7.2-16 16v224c0 8.8 7.2 16 16 16s16-7.2 16-16V208zm96 0c0-8.8-7.2-16-16-16s-16 7.2-16 16v224c0 8.8 7.2 16 16 16s16-7.2 16-16V208z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 84V56c0-13.3 10.7-24 24-24h112l9.4-18.7c4-8.2 12.3-13.3 21.4-13.3h114.3c9.1 0 17.4 5.1 21.5 13.3L312 32h112c13.3 0 24 10.7 24 24v28c0 6.6-5.4 12-12 12H12C5.4 96 0 90.6 0 84zm416 56v324c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V140c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12zm-272 68c0-8.8-7.2-16-16-16s-16 7.2-16 16v224c0 8.8 7.2 16 16 16s16-7.2 16-16V208zm96 0c0-8.8-7.2-16-16-16s-16 7.2-16 16v224c0 8.8 7.2 16 16 16s16-7.2 16-16V208zm96 0c0-8.8-7.2-16-16-16s-16 7.2-16 16v224c0 8.8 7.2 16 16 16s16-7.2 16-16V208z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M192 188v216c0 6.627-5.373 12-12 12h-24c-6.627 0-12-5.373-12-12V188c0-6.627 5.373-12 12-12h24c6.627 0 12 5.373 12 12zm100-12h-24c-6.627 0-12 5.373-12 12v216c0 6.627 5.373 12 12 12h24c6.627 0 12-5.373 12-12V188c0-6.627-5.373-12-12-12zm132-96c13.255 0 24 10.745 24 24v12c0 6.627-5.373 12-12 12h-20v336c0 26.51-21.49 48-48 48H80c-26.51 0-48-21.49-48-48V128H12c-6.627 0-12-5.373-12-12v-12c0-13.255 10.745-24 24-24h74.411l34.018-56.696A48 48 0 0 1 173.589 0h100.823a48 48 0 0 1 41.16 23.304L349.589 80H424zm-269.611 0h139.223L276.16 50.913A6 6 0 0 0 271.015 48h-94.028a6 6 0 0 0-5.145 2.913L154.389 80zM368 128H80v330a6 6 0 0 0 6 6h276a6 6 0 0 0 6-6V128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M192 188v216c0 6.627-5.373 12-12 12h-24c-6.627 0-12-5.373-12-12V188c0-6.627 5.373-12 12-12h24c6.627 0 12 5.373 12 12zm100-12h-24c-6.627 0-12 5.373-12 12v216c0 6.627 5.373 12 12 12h24c6.627 0 12-5.373 12-12V188c0-6.627-5.373-12-12-12zm132-96c13.255 0 24 10.745 24 24v12c0 6.627-5.373 12-12 12h-20v336c0 26.51-21.49 48-48 48H80c-26.51 0-48-21.49-48-48V128H12c-6.627 0-12-5.373-12-12v-12c0-13.255 10.745-24 24-24h74.411l34.018-56.696A48 48 0 0 1 173.589 0h100.823a48 48 0 0 1 41.16 23.304L349.589 80H424zm-269.611 0h139.223L276.16 50.913A6 6 0 0 0 271.015 48h-94.028a6 6 0 0 0-5.145 2.913L154.389 80zM368 128H80v330a6 6 0 0 0 6 6h276a6 6 0 0 0 6-6V128z\\\"}}},\\\"tree\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1bb\\\",\\\"label\\\":\\\"Tree\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1503937790000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M377.33 375.429L293.906 288H328c21.017 0 31.872-25.207 17.448-40.479L262.79 160H296c20.878 0 31.851-24.969 17.587-40.331l-104-112.003c-9.485-10.214-25.676-10.229-35.174 0l-104 112.003C56.206 134.969 67.037 160 88 160h33.21l-82.659 87.521C24.121 262.801 34.993 288 56 288h34.094L6.665 375.429C-7.869 390.655 2.925 416 24.025 416H144c0 32.781-11.188 49.26-33.995 67.506C98.225 492.93 104.914 512 120 512h144c15.086 0 21.776-19.069 9.995-28.494-19.768-15.814-33.992-31.665-33.995-67.496V416h119.97c21.05 0 31.929-25.309 17.36-40.571z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M377.33 375.429L293.906 288H328c21.017 0 31.872-25.207 17.448-40.479L262.79 160H296c20.878 0 31.851-24.969 17.587-40.331l-104-112.003c-9.485-10.214-25.676-10.229-35.174 0l-104 112.003C56.206 134.969 67.037 160 88 160h33.21l-82.659 87.521C24.121 262.801 34.993 288 56 288h34.094L6.665 375.429C-7.869 390.655 2.925 416 24.025 416H144c0 32.781-11.188 49.26-33.995 67.506C98.225 492.93 104.914 512 120 512h144c15.086 0 21.776-19.069 9.995-28.494-19.768-15.814-33.992-31.665-33.995-67.496V416h119.97c21.05 0 31.929-25.309 17.36-40.571z\\\"}}},\\\"trello\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f181\\\",\\\"label\\\":\\\"Trello\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zM194.9 371.4c0 14.8-12 26.9-26.9 26.9H85.1c-14.8 0-26.9-12-26.9-26.9V117.1c0-14.8 12-26.9 26.9-26.9H168c14.8 0 26.9 12 26.9 26.9v254.3zm194.9-112c0 14.8-12 26.9-26.9 26.9H280c-14.8 0-26.9-12-26.9-26.9V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v142.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zM194.9 371.4c0 14.8-12 26.9-26.9 26.9H85.1c-14.8 0-26.9-12-26.9-26.9V117.1c0-14.8 12-26.9 26.9-26.9H168c14.8 0 26.9 12 26.9 26.9v254.3zm194.9-112c0 14.8-12 26.9-26.9 26.9H280c-14.8 0-26.9-12-26.9-26.9V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v142.3z\\\"}}},\\\"tripadvisor\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f262\\\",\\\"label\\\":\\\"TripAdvisor\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M166.4 280.521c0 13.236-10.73 23.966-23.966 23.966s-23.966-10.73-23.966-23.966 10.73-23.966 23.966-23.966 23.966 10.729 23.966 23.966zm264.962-23.956c-13.23 0-23.956 10.725-23.956 23.956 0 13.23 10.725 23.956 23.956 23.956 13.23 0 23.956-10.725 23.956-23.956-.001-13.231-10.726-23.956-23.956-23.956zm89.388 139.49c-62.667 49.104-153.276 38.109-202.379-24.559l-30.979 46.325-30.683-45.939c-48.277 60.39-135.622 71.891-197.885 26.055-64.058-47.158-77.759-137.316-30.601-201.374A186.762 186.762 0 0 0 0 139.416l90.286-.05a358.48 358.48 0 0 1 197.065-54.03 350.382 350.382 0 0 1 192.181 53.349l96.218.074a185.713 185.713 0 0 0-28.352 57.649c46.793 62.747 34.964 151.37-26.648 199.647zM259.366 281.761c-.007-63.557-51.535-115.075-115.092-115.068C80.717 166.7 29.2 218.228 29.206 281.785c.007 63.557 51.535 115.075 115.092 115.068 63.513-.075 114.984-51.539 115.068-115.052v-.04zm28.591-10.455c5.433-73.44 65.51-130.884 139.12-133.022a339.146 339.146 0 0 0-139.727-27.812 356.31 356.31 0 0 0-140.164 27.253c74.344 1.582 135.299 59.424 140.771 133.581zm251.706-28.767c-21.992-59.634-88.162-90.148-147.795-68.157-59.634 21.992-90.148 88.162-68.157 147.795v.032c22.038 59.607 88.198 90.091 147.827 68.113 59.615-22.004 90.113-88.162 68.125-147.783zm-326.039 37.975v.115c-.057 39.328-31.986 71.163-71.314 71.106-39.328-.057-71.163-31.986-71.106-71.314.057-39.328 31.986-71.163 71.314-71.106 39.259.116 71.042 31.94 71.106 71.199zm-24.512 0v-.084c-.051-25.784-20.994-46.645-46.778-46.594-25.784.051-46.645 20.994-46.594 46.777.051 25.784 20.994 46.645 46.777 46.594 25.726-.113 46.537-20.968 46.595-46.693zm313.423 0v.048c-.02 39.328-31.918 71.194-71.247 71.173s-71.194-31.918-71.173-71.247c.02-39.328 31.918-71.194 71.247-71.173 39.29.066 71.121 31.909 71.173 71.199zm-24.504-.008c-.009-25.784-20.918-46.679-46.702-46.67-25.784.009-46.679 20.918-46.67 46.702.009 25.784 20.918 46.678 46.702 46.67 25.765-.046 46.636-20.928 46.67-46.693v-.009z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M166.4 280.521c0 13.236-10.73 23.966-23.966 23.966s-23.966-10.73-23.966-23.966 10.73-23.966 23.966-23.966 23.966 10.729 23.966 23.966zm264.962-23.956c-13.23 0-23.956 10.725-23.956 23.956 0 13.23 10.725 23.956 23.956 23.956 13.23 0 23.956-10.725 23.956-23.956-.001-13.231-10.726-23.956-23.956-23.956zm89.388 139.49c-62.667 49.104-153.276 38.109-202.379-24.559l-30.979 46.325-30.683-45.939c-48.277 60.39-135.622 71.891-197.885 26.055-64.058-47.158-77.759-137.316-30.601-201.374A186.762 186.762 0 0 0 0 139.416l90.286-.05a358.48 358.48 0 0 1 197.065-54.03 350.382 350.382 0 0 1 192.181 53.349l96.218.074a185.713 185.713 0 0 0-28.352 57.649c46.793 62.747 34.964 151.37-26.648 199.647zM259.366 281.761c-.007-63.557-51.535-115.075-115.092-115.068C80.717 166.7 29.2 218.228 29.206 281.785c.007 63.557 51.535 115.075 115.092 115.068 63.513-.075 114.984-51.539 115.068-115.052v-.04zm28.591-10.455c5.433-73.44 65.51-130.884 139.12-133.022a339.146 339.146 0 0 0-139.727-27.812 356.31 356.31 0 0 0-140.164 27.253c74.344 1.582 135.299 59.424 140.771 133.581zm251.706-28.767c-21.992-59.634-88.162-90.148-147.795-68.157-59.634 21.992-90.148 88.162-68.157 147.795v.032c22.038 59.607 88.198 90.091 147.827 68.113 59.615-22.004 90.113-88.162 68.125-147.783zm-326.039 37.975v.115c-.057 39.328-31.986 71.163-71.314 71.106-39.328-.057-71.163-31.986-71.106-71.314.057-39.328 31.986-71.163 71.314-71.106 39.259.116 71.042 31.94 71.106 71.199zm-24.512 0v-.084c-.051-25.784-20.994-46.645-46.778-46.594-25.784.051-46.645 20.994-46.594 46.777.051 25.784 20.994 46.645 46.777 46.594 25.726-.113 46.537-20.968 46.595-46.693zm313.423 0v.048c-.02 39.328-31.918 71.194-71.247 71.173s-71.194-31.918-71.173-71.247c.02-39.328 31.918-71.194 71.247-71.173 39.29.066 71.121 31.909 71.173 71.199zm-24.504-.008c-.009-25.784-20.918-46.679-46.702-46.67-25.784.009-46.679 20.918-46.67 46.702.009 25.784 20.918 46.678 46.702 46.67 25.765-.046 46.636-20.928 46.67-46.693v-.009z\\\"}}},\\\"trophy\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"achievement\\\",\\\"award\\\",\\\"cup\\\",\\\"game\\\",\\\"winner\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f091\\\",\\\"label\\\":\\\"trophy\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\\\"}}},\\\"truck\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"delivery\\\",\\\"shipping\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0d1\\\",\\\"label\\\":\\\"truck\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821462,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\\\"}}},\\\"truck-loading\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4de\\\",\\\"label\\\":\\\"Truck Loading\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821461,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\\\"}}},\\\"truck-monster\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f63b\\\",\\\"label\\\":\\\"Truck Monster\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831553,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\\\"}}},\\\"truck-moving\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4df\\\",\\\"label\\\":\\\"Truck Moving\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821461,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\\\"}}},\\\"truck-pickup\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f63c\\\",\\\"label\\\":\\\"Truck Side\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1532362831553,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\\\"}}},\\\"tshirt\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cloth\\\",\\\"clothing\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f553\\\",\\\"label\\\":\\\"T-Shirt\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154580,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\\\"}}},\\\"tty\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1e4\\\",\\\"label\\\":\\\"TTY\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\\\"}}},\\\"tumblr\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f173\\\",\\\"label\\\":\\\"Tumblr\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z\\\"}}},\\\"tumblr-square\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f174\\\",\\\"label\\\":\\\"Tumblr Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z\\\"}}},\\\"tv\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"computer\\\",\\\"display\\\",\\\"monitor\\\",\\\"television\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f26c\\\",\\\"label\\\":\\\"Television\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M592 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h245.1v32h-160c-17.7 0-32 14.3-32 32s14.3 32 32 32h384c17.7 0 32-14.3 32-32s-14.3-32-32-32h-160v-32H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h512v288z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M592 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h245.1v32h-160c-17.7 0-32 14.3-32 32s14.3 32 32 32h384c17.7 0 32-14.3 32-32s-14.3-32-32-32h-160v-32H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h512v288z\\\"}}},\\\"twitch\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1e8\\\",\\\"label\\\":\\\"Twitch\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M40.1 32L10 108.9v314.3h107V480h60.2l56.8-56.8h87l117-117V32H40.1zm357.8 254.1L331 353H224l-56.8 56.8V353H76.9V72.1h321v214zM331 149v116.9h-40.1V149H331zm-107 0v116.9h-40.1V149H224z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M40.1 32L10 108.9v314.3h107V480h60.2l56.8-56.8h87l117-117V32H40.1zm357.8 254.1L331 353H224l-56.8 56.8V353H76.9V72.1h321v214zM331 149v116.9h-40.1V149H331zm-107 0v116.9h-40.1V149H224z\\\"}}},\\\"twitter\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"social network\\\",\\\"tweet\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f099\\\",\\\"label\\\":\\\"Twitter\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1511282001104,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\\\"}}},\\\"twitter-square\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"social network\\\",\\\"tweet\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f081\\\",\\\"label\\\":\\\"Twitter Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z\\\"}}},\\\"typo3\\\":{\\\"changes\\\":[\\\"5.0.1\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f42b\\\",\\\"label\\\":\\\"Typo3\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1512765674649,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 433.3 512\\\\\\\"><path d=\\\\\\\"M330.8 341c-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9 0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C0 246 106.8 480 184.1 480c36.3 0 97.3-59.5 146.7-139M294.5 32c71.8 0 138.8 11.6 138.8 52.5 0 82.6-52.5 182.3-78.8 182.3-47.9 0-101.7-132.1-101.7-198.5 0-30.9 11.6-36.3 41.7-36.3\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"433.3\\\",\\\"512\\\"],\\\"width\\\":433,\\\"height\\\":512,\\\"path\\\":\\\"M330.8 341c-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9 0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C0 246 106.8 480 184.1 480c36.3 0 97.3-59.5 146.7-139M294.5 32c71.8 0 138.8 11.6 138.8 52.5 0 82.6-52.5 182.3-78.8 182.3-47.9 0-101.7-132.1-101.7-198.5 0-30.9 11.6-36.3 41.7-36.3\\\"}}},\\\"uber\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f402\\\",\\\"label\\\":\\\"Uber\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z\\\"}}},\\\"uikit\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f403\\\",\\\"label\\\":\\\"UIkit\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z\\\"}}},\\\"umbrella\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"protection\\\",\\\"rain\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0e9\\\",\\\"label\\\":\\\"Umbrella\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502810244000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M557.011 267.631c-51.432-45.217-107.572-43.698-158.567 30.731-5.298 7.861-14.906 7.165-19.736 0-2.483-3.624-32.218-60.808-90.708-60.808-45.766 0-70.542 31.378-90.709 60.808-4.829 7.165-14.436 7.861-19.734 0-50.904-74.285-106.613-76.406-158.567-30.731-10.21 8.264-20.912-1.109-18.696-9.481C32.146 134.573 158.516 64.612 288.001 64.612c128.793 0 256.546 69.961 287.706 193.538 2.206 8.322-8.426 17.793-18.696 9.481zM256 261.001V416c0 17.645-14.355 32-32 32s-32-14.355-32-32c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 52.935 43.065 96 96 96s96-43.065 96-96V261.288c-21.836-10.806-45.425-9.737-64-.287zm64-211.007V32c0-17.673-14.327-32-32-32s-32 14.327-32 32v17.987a372.105 372.105 0 0 1 64 .007z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M557.011 267.631c-51.432-45.217-107.572-43.698-158.567 30.731-5.298 7.861-14.906 7.165-19.736 0-2.483-3.624-32.218-60.808-90.708-60.808-45.766 0-70.542 31.378-90.709 60.808-4.829 7.165-14.436 7.861-19.734 0-50.904-74.285-106.613-76.406-158.567-30.731-10.21 8.264-20.912-1.109-18.696-9.481C32.146 134.573 158.516 64.612 288.001 64.612c128.793 0 256.546 69.961 287.706 193.538 2.206 8.322-8.426 17.793-18.696 9.481zM256 261.001V416c0 17.645-14.355 32-32 32s-32-14.355-32-32c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 52.935 43.065 96 96 96s96-43.065 96-96V261.288c-21.836-10.806-45.425-9.737-64-.287zm64-211.007V32c0-17.673-14.327-32-32-32s-32 14.327-32 32v17.987a372.105 372.105 0 0 1 64 .007z\\\"}}},\\\"umbrella-beach\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"protection\\\",\\\"recreation\\\",\\\"sun\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5ca\\\",\\\"label\\\":\\\"Umbrella Beach\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111708,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\\\"}}},\\\"underline\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0cd\\\",\\\"label\\\":\\\"Underline\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224.264 388.24c-91.669 0-156.603-51.165-156.603-151.392V64H39.37c-8.837 0-16-7.163-16-16V16c0-8.837 7.163-16 16-16h137.39c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-28.813v172.848c0 53.699 28.314 79.444 76.317 79.444 46.966 0 75.796-25.434 75.796-79.965V64h-28.291c-8.837 0-16-7.163-16-16V16c0-8.837 7.163-16 16-16h136.868c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-28.291v172.848c0 99.405-64.881 151.392-156.082 151.392zM16 448h416c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224.264 388.24c-91.669 0-156.603-51.165-156.603-151.392V64H39.37c-8.837 0-16-7.163-16-16V16c0-8.837 7.163-16 16-16h137.39c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-28.813v172.848c0 53.699 28.314 79.444 76.317 79.444 46.966 0 75.796-25.434 75.796-79.965V64h-28.291c-8.837 0-16-7.163-16-16V16c0-8.837 7.163-16 16-16h136.868c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16h-28.291v172.848c0 99.405-64.881 151.392-156.082 151.392zM16 448h416c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16z\\\"}}},\\\"undo\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"back\\\",\\\"control z\\\",\\\"exchange\\\",\\\"oops\\\",\\\"return\\\",\\\"rotate\\\",\\\"swap\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0e2\\\",\\\"label\\\":\\\"Undo\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1504208135000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\\\"}}},\\\"undo-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"back\\\",\\\"control z\\\",\\\"exchange\\\",\\\"oops\\\",\\\"return\\\",\\\"swap\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2ea\\\",\\\"label\\\":\\\"Alternate Undo\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\\\"}}},\\\"uniregistry\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f404\\\",\\\"label\\\":\\\"Uniregistry\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1506111999000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M281.1 220.1H384v-14.8H281.1v14.8zm0-37.1H384v-12.4H281.1V183zm0 74.2H384v-17.3H281.1v17.3zm-157.7 86.7H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8m145.7-12.4h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3m-41.5 37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8M384 32H281.1v2.5H384V32zM192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480m89.1-334.2H384V136H281.1v9.8zm0-37.1H384v-7.4H281.1v7.4zm0-37.1H384v-4.9H281.1v4.9zm-178.2 99H0V183h102.9v-12.4zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2m64.1-118.8v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4m178.2 0c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1v12.4zm-203 156h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7m24.8-376.2H0v4.9h102.9v-4.9zm0-34.7H0v2.5h102.9V32zm0 173.3H0v14.8h102.9v-14.8zm0 34.6H0v17.3h102.9v-17.3zm0-103.9H0v9.9h102.9V136zm0-34.7H0v7.4h102.9v-7.4zm2.8 207.9H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M281.1 220.1H384v-14.8H281.1v14.8zm0-37.1H384v-12.4H281.1V183zm0 74.2H384v-17.3H281.1v17.3zm-157.7 86.7H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8m145.7-12.4h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3m-41.5 37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8M384 32H281.1v2.5H384V32zM192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480m89.1-334.2H384V136H281.1v9.8zm0-37.1H384v-7.4H281.1v7.4zm0-37.1H384v-4.9H281.1v4.9zm-178.2 99H0V183h102.9v-12.4zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2m64.1-118.8v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4m178.2 0c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1v12.4zm-203 156h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7m24.8-376.2H0v4.9h102.9v-4.9zm0-34.7H0v2.5h102.9V32zm0 173.3H0v14.8h102.9v-14.8zm0 34.6H0v17.3h102.9v-17.3zm0-103.9H0v9.9h102.9V136zm0-34.7H0v7.4h102.9v-7.4zm2.8 207.9H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3\\\"}}},\\\"universal-access\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f29a\\\",\\\"label\\\":\\\"Universal Access\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502483808000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\\\"}}},\\\"university\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"bank\\\",\\\"institution\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f19c\\\",\\\"label\\\":\\\"University\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1515426582026,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\\\"}}},\\\"unlink\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"chain\\\",\\\"chain-broken\\\",\\\"remove\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f127\\\",\\\"label\\\":\\\"unlink\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\\\"}}},\\\"unlock\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"admin\\\",\\\"lock\\\",\\\"password\\\",\\\"protect\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f09c\\\",\\\"label\\\":\\\"unlock\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\\\"}}},\\\"unlock-alt\\\":{\\\"changes\\\":[\\\"3.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"admin\\\",\\\"lock\\\",\\\"password\\\",\\\"protect\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f13e\\\",\\\"label\\\":\\\"Alternate Unlock\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\\\"}}},\\\"untappd\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f405\\\",\\\"label\\\":\\\"Untappd\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z\\\"}}},\\\"upload\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"export\\\",\\\"publish\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f093\\\",\\\"label\\\":\\\"Upload\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\\\"}}},\\\"usb\\\":{\\\"changes\\\":[\\\"4.5\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f287\\\",\\\"label\\\":\\\"USB\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z\\\"}}},\\\"user\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.3\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"account\\\",\\\"avatar\\\",\\\"head\\\",\\\"man\\\",\\\"person\\\",\\\"profile\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f007\\\",\\\"label\\\":\\\"User\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365081,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1525209365062,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z\\\"}}},\\\"user-alt\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"account\\\",\\\"avatar\\\",\\\"head\\\",\\\"man\\\",\\\"person\\\",\\\"profile\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f406\\\",\\\"label\\\":\\\"Alternate User\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365071,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\\\"}}},\\\"user-alt-slash\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4fa\\\",\\\"label\\\":\\\"Alternate User Slash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365070,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\\\"}}},\\\"user-astronaut\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"avatar\\\",\\\"clothing\\\",\\\"cosmonaut\\\",\\\"space\\\",\\\"suit\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4fb\\\",\\\"label\\\":\\\"User Astronaut\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365071,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\\\"}}},\\\"user-check\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4fc\\\",\\\"label\\\":\\\"User Check\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365072,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\\\"}}},\\\"user-circle\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\",\\\"5.0.3\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"account\\\",\\\"avatar\\\",\\\"head\\\",\\\"man\\\",\\\"person\\\",\\\"profile\\\"]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2bd\\\",\\\"label\\\":\\\"User Circle\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365072,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1525209365055,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 496 512\\\\\\\"><path d=\\\\\\\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"496\\\",\\\"512\\\"],\\\"width\\\":496,\\\"height\\\":512,\\\"path\\\":\\\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\\\"}}},\\\"user-clock\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4fd\\\",\\\"label\\\":\\\"User Clock\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365072,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\\\"}}},\\\"user-cog\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4fe\\\",\\\"label\\\":\\\"User Cog\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365073,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\\\"}}},\\\"user-edit\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4ff\\\",\\\"label\\\":\\\"User Edit\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365073,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\\\"}}},\\\"user-friends\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f500\\\",\\\"label\\\":\\\"User Friends\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365074,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\\\"}}},\\\"user-graduate\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cap\\\",\\\"clothing\\\",\\\"commencement\\\",\\\"gown\\\",\\\"graduation\\\",\\\"student\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f501\\\",\\\"label\\\":\\\"User Graduate\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365074,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\\\"}}},\\\"user-lock\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f502\\\",\\\"label\\\":\\\"User Lock\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365075,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M320 320c0-11.1 3.1-21.4 8.1-30.5-4.8-.5-9.5-1.5-14.5-1.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h280.9c-5.5-9.5-8.9-20.3-8.9-32V320zm-96-64c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm384 32h-32v-48c0-44.2-35.8-80-80-80s-80 35.8-80 80v48h-32c-17.7 0-32 14.3-32 32v160c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32zm-80 0h-64v-48c0-17.6 14.4-32 32-32s32 14.4 32 32v48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M320 320c0-11.1 3.1-21.4 8.1-30.5-4.8-.5-9.5-1.5-14.5-1.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h280.9c-5.5-9.5-8.9-20.3-8.9-32V320zm-96-64c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm384 32h-32v-48c0-44.2-35.8-80-80-80s-80 35.8-80 80v48h-32c-17.7 0-32 14.3-32 32v160c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32zm-80 0h-64v-48c0-17.6 14.4-32 32-32s32 14.4 32 32v48z\\\"}}},\\\"user-md\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.0.3\\\",\\\"5.0.7\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"doctor\\\",\\\"job\\\",\\\"medical\\\",\\\"nurse\\\",\\\"occupation\\\",\\\"profile\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0f0\\\",\\\"label\\\":\\\"user-md\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365076,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\\\"}}},\\\"user-minus\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f503\\\",\\\"label\\\":\\\"User Minus\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365076,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\\\"}}},\\\"user-ninja\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"assassin\\\",\\\"avatar\\\",\\\"dangerous\\\",\\\"sneaky\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f504\\\",\\\"label\\\":\\\"User Ninja\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365077,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\\\"}}},\\\"user-plus\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\",\\\"5.0.3\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"sign up\\\",\\\"signup\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f234\\\",\\\"label\\\":\\\"Add User\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365077,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\\\"}}},\\\"user-secret\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\",\\\"5.0.3\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"clothing\\\",\\\"coat\\\",\\\"hat\\\",\\\"incognito\\\",\\\"privacy\\\",\\\"spy\\\",\\\"whisper\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f21b\\\",\\\"label\\\":\\\"User Secret\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365078,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\\\"}}},\\\"user-shield\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f505\\\",\\\"label\\\":\\\"User Shield\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365078,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\\\"}}},\\\"user-slash\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f506\\\",\\\"label\\\":\\\"User Slash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365079,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\\\"}}},\\\"user-tag\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f507\\\",\\\"label\\\":\\\"User Tag\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365079,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\\\"}}},\\\"user-tie\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"avatar\\\",\\\"business\\\",\\\"clothing\\\",\\\"formal\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f508\\\",\\\"label\\\":\\\"User Tie\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365079,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\\\"}}},\\\"user-times\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\",\\\"5.0.3\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f235\\\",\\\"label\\\":\\\"Remove User\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365080,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\\\"}}},\\\"users\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.0.3\\\",\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"people\\\",\\\"persons\\\",\\\"profiles\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0c0\\\",\\\"label\\\":\\\"Users\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365081,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\\\"}}},\\\"users-cog\\\":{\\\"changes\\\":[\\\"5.0.11\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f509\\\",\\\"label\\\":\\\"Users Cog\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525209365081,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\\\"}}},\\\"ussunnah\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f407\\\",\\\"label\\\":\\\"us-Sunnah Foundation\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z\\\"}}},\\\"utensil-spoon\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"spoon\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2e5\\\",\\\"label\\\":\\\"Utensil Spoon\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\\\"}}},\\\"utensils\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"cutlery\\\",\\\"dinner\\\",\\\"eat\\\",\\\"food\\\",\\\"knife\\\",\\\"restaurant\\\",\\\"spoon\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f2e7\\\",\\\"label\\\":\\\"Utensils\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 416 512\\\\\\\"><path d=\\\\\\\"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"416\\\",\\\"512\\\"],\\\"width\\\":416,\\\"height\\\":512,\\\"path\\\":\\\"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\\\"}}},\\\"vaadin\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f408\\\",\\\"label\\\":\\\"Vaadin\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z\\\"}}},\\\"vector-square\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"anchors\\\",\\\"lines\\\",\\\"object\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5cb\\\",\\\"label\\\":\\\"Vector Square\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111708,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\\\"}}},\\\"venus\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"female\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f221\\\",\\\"label\\\":\\\"Venus\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 288 512\\\\\\\"><path d=\\\\\\\"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"288\\\",\\\"512\\\"],\\\"width\\\":288,\\\"height\\\":512,\\\"path\\\":\\\"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\\\"}}},\\\"venus-double\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f226\\\",\\\"label\\\":\\\"Venus Double\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\\\"}}},\\\"venus-mars\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f228\\\",\\\"label\\\":\\\"Venus Mars\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\\\"}}},\\\"viacoin\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f237\\\",\\\"label\\\":\\\"Viacoin\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z\\\"}}},\\\"viadeo\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2a9\\\",\\\"label\\\":\\\"Viadeo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z\\\"}}},\\\"viadeo-square\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2aa\\\",\\\"label\\\":\\\"Viadeo Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z\\\"}}},\\\"vial\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"test tube\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f492\\\",\\\"label\\\":\\\"Vial\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821462,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 480 512\\\\\\\"><path d=\\\\\\\"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"480\\\",\\\"512\\\"],\\\"width\\\":480,\\\"height\\\":512,\\\"path\\\":\\\"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\\\"}}},\\\"vials\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"lab results\\\",\\\"test tubes\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f493\\\",\\\"label\\\":\\\"Vials\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821462,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\\\"}}},\\\"viber\\\":{\\\"changes\\\":[\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f409\\\",\\\"label\\\":\\\"Viber\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426582002,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z\\\"}}},\\\"video\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\",\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"camera\\\",\\\"film\\\",\\\"movie\\\",\\\"record\\\",\\\"video-camera\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f03d\\\",\\\"label\\\":\\\"Video\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406029,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\\\"}}},\\\"video-slash\\\":{\\\"changes\\\":[\\\"5.0.9\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4e2\\\",\\\"label\\\":\\\"Video Slash\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1522083406028,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\\\"}}},\\\"vimeo\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f40a\\\",\\\"label\\\":\\\"Vimeo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z\\\"}}},\\\"vimeo-square\\\":{\\\"changes\\\":[\\\"4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f194\\\",\\\"label\\\":\\\"Vimeo Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z\\\"}}},\\\"vimeo-v\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"vimeo\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f27d\\\",\\\"label\\\":\\\"Vimeo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z\\\"}}},\\\"vine\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1ca\\\",\\\"label\\\":\\\"Vine\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z\\\"}}},\\\"vk\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f189\\\",\\\"label\\\":\\\"VK\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z\\\"}}},\\\"vnv\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f40b\\\",\\\"label\\\":\\\"VNV\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z\\\"}}},\\\"volleyball-ball\\\":{\\\"changes\\\":[\\\"5.0.5\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f45f\\\",\\\"label\\\":\\\"Volleyball Ball\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1518899527998,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 495.9 512\\\\\\\"><path d=\\\\\\\"M223.3 243.4c-.9-37-8.6-72.8-22.7-105.7-90.8 42.4-157.5 122.4-180.3 216.8 13.4 30.8 32.9 58.3 56.9 81.1 22.7-79.2 74.2-147.8 146.1-192.2zM186.4 109c-15-26.4-34.5-50.1-57.4-70.7C38 88.1-15.8 191.2 4 300.5c33.4-83.1 98.4-152 182.4-191.5zM374 274.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5 57.3 59.3 91 138.2 93.5 222.7 32.5 17.7 67.3 29 102.9 33.2zm-124.7 9.5c-31.6 19.3-58.7 43.9-80.2 72.6 82 57.3 184.5 75.1 277.5 47.8 19.7-26.4 34.2-56.8 42.2-89.9-26.6 6.6-53.7 10.4-80.9 10.4-54.6-.1-108.9-14.1-158.6-40.9zM151 383.3c-15.2 26-25.7 54.4-32.1 84.2 37.6 23 81.7 36.5 129.1 36.5 61 0 116.7-22.1 159.9-58.6C295 461.5 204.6 420.6 151 383.3zM331.3 22.7c55.3 70.4 82.5 161.2 74.6 253.6 30.3.2 60.5-4.8 89.7-14.2 0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"495.9\\\",\\\"512\\\"],\\\"width\\\":495,\\\"height\\\":512,\\\"path\\\":\\\"M223.3 243.4c-.9-37-8.6-72.8-22.7-105.7-90.8 42.4-157.5 122.4-180.3 216.8 13.4 30.8 32.9 58.3 56.9 81.1 22.7-79.2 74.2-147.8 146.1-192.2zM186.4 109c-15-26.4-34.5-50.1-57.4-70.7C38 88.1-15.8 191.2 4 300.5c33.4-83.1 98.4-152 182.4-191.5zM374 274.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5 57.3 59.3 91 138.2 93.5 222.7 32.5 17.7 67.3 29 102.9 33.2zm-124.7 9.5c-31.6 19.3-58.7 43.9-80.2 72.6 82 57.3 184.5 75.1 277.5 47.8 19.7-26.4 34.2-56.8 42.2-89.9-26.6 6.6-53.7 10.4-80.9 10.4-54.6-.1-108.9-14.1-158.6-40.9zM151 383.3c-15.2 26-25.7 54.4-32.1 84.2 37.6 23 81.7 36.5 129.1 36.5 61 0 116.7-22.1 159.9-58.6C295 461.5 204.6 420.6 151 383.3zM331.3 22.7c55.3 70.4 82.5 161.2 74.6 253.6 30.3.2 60.5-4.8 89.7-14.2 0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\\\"}}},\\\"volume-down\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"audio\\\",\\\"lower\\\",\\\"music\\\",\\\"quieter\\\",\\\"sound\\\",\\\"speaker\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f027\\\",\\\"label\\\":\\\"volume-down\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M256 88.017v335.964c0 21.438-25.943 31.998-40.971 16.971L126.059 352H24c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h102.059l88.971-88.954c15.01-15.01 40.97-4.49 40.97 16.971zM384 256c0-33.717-17.186-64.35-45.972-81.944-15.079-9.214-34.775-4.463-43.992 10.616s-4.464 34.775 10.615 43.992C314.263 234.538 320 244.757 320 256a32.056 32.056 0 0 1-13.802 26.332c-14.524 10.069-18.136 30.006-8.067 44.53 10.07 14.525 30.008 18.136 44.53 8.067C368.546 316.983 384 287.478 384 256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M256 88.017v335.964c0 21.438-25.943 31.998-40.971 16.971L126.059 352H24c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h102.059l88.971-88.954c15.01-15.01 40.97-4.49 40.97 16.971zM384 256c0-33.717-17.186-64.35-45.972-81.944-15.079-9.214-34.775-4.463-43.992 10.616s-4.464 34.775 10.615 43.992C314.263 234.538 320 244.757 320 256a32.056 32.056 0 0 1-13.802 26.332c-14.524 10.069-18.136 30.006-8.067 44.53 10.07 14.525 30.008 18.136 44.53 8.067C368.546 316.983 384 287.478 384 256z\\\"}}},\\\"volume-off\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"audio\\\",\\\"music\\\",\\\"mute\\\",\\\"sound\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f026\\\",\\\"label\\\":\\\"volume-off\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M256 88.017v335.964c0 21.438-25.943 31.998-40.971 16.971L126.059 352H24c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h102.059l88.971-88.954c15.01-15.01 40.97-4.49 40.97 16.971z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M256 88.017v335.964c0 21.438-25.943 31.998-40.971 16.971L126.059 352H24c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h102.059l88.971-88.954c15.01-15.01 40.97-4.49 40.97 16.971z\\\"}}},\\\"volume-up\\\":{\\\"changes\\\":[\\\"1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"audio\\\",\\\"higher\\\",\\\"louder\\\",\\\"music\\\",\\\"sound\\\",\\\"speaker\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f028\\\",\\\"label\\\":\\\"volume-up\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M256 88.017v335.964c0 21.438-25.943 31.998-40.971 16.971L126.059 352H24c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h102.059l88.971-88.954c15.01-15.01 40.97-4.49 40.97 16.971zm182.056-77.876C422.982.92 403.283 5.668 394.061 20.745c-9.221 15.077-4.473 34.774 10.604 43.995C468.967 104.063 512 174.983 512 256c0 73.431-36.077 142.292-96.507 184.206-14.522 10.072-18.129 30.01-8.057 44.532 10.076 14.528 30.016 18.126 44.531 8.057C529.633 438.927 576 350.406 576 256c0-103.244-54.579-194.877-137.944-245.859zM480 256c0-68.547-36.15-129.777-91.957-163.901-15.076-9.22-34.774-4.471-43.994 10.607-9.22 15.078-4.471 34.774 10.607 43.994C393.067 170.188 416 211.048 416 256c0 41.964-20.62 81.319-55.158 105.276-14.521 10.073-18.128 30.01-8.056 44.532 6.216 8.96 16.185 13.765 26.322 13.765a31.862 31.862 0 0 0 18.21-5.709C449.091 377.953 480 318.938 480 256zm-96 0c0-33.717-17.186-64.35-45.972-81.944-15.079-9.214-34.775-4.463-43.992 10.616s-4.464 34.775 10.615 43.992C314.263 234.538 320 244.757 320 256a32.056 32.056 0 0 1-13.802 26.332c-14.524 10.069-18.136 30.006-8.067 44.53 10.07 14.525 30.008 18.136 44.53 8.067C368.546 316.983 384 287.478 384 256z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M256 88.017v335.964c0 21.438-25.943 31.998-40.971 16.971L126.059 352H24c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h102.059l88.971-88.954c15.01-15.01 40.97-4.49 40.97 16.971zm182.056-77.876C422.982.92 403.283 5.668 394.061 20.745c-9.221 15.077-4.473 34.774 10.604 43.995C468.967 104.063 512 174.983 512 256c0 73.431-36.077 142.292-96.507 184.206-14.522 10.072-18.129 30.01-8.057 44.532 10.076 14.528 30.016 18.126 44.531 8.057C529.633 438.927 576 350.406 576 256c0-103.244-54.579-194.877-137.944-245.859zM480 256c0-68.547-36.15-129.777-91.957-163.901-15.076-9.22-34.774-4.471-43.994 10.607-9.22 15.078-4.471 34.774 10.607 43.994C393.067 170.188 416 211.048 416 256c0 41.964-20.62 81.319-55.158 105.276-14.521 10.073-18.128 30.01-8.056 44.532 6.216 8.96 16.185 13.765 26.322 13.765a31.862 31.862 0 0 0 18.21-5.709C449.091 377.953 480 318.938 480 256zm-96 0c0-33.717-17.186-64.35-45.972-81.944-15.079-9.214-34.775-4.463-43.992 10.616s-4.464 34.775 10.615 43.992C314.263 234.538 320 244.757 320 256a32.056 32.056 0 0 1-13.802 26.332c-14.524 10.069-18.136 30.006-8.067 44.53 10.07 14.525 30.008 18.136 44.53 8.067C368.546 316.983 384 287.478 384 256z\\\"}}},\\\"vuejs\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f41f\\\",\\\"label\\\":\\\"Vue.js\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1508787003040,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z\\\"}}},\\\"walking\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f554\\\",\\\"label\\\":\\\"Walking\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154580,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\\\"}}},\\\"wallet\\\":{\\\"changes\\\":[\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f555\\\",\\\"label\\\":\\\"Wallet\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154581,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\\\"}}},\\\"warehouse\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f494\\\",\\\"label\\\":\\\"Warehouse\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821463,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\\\"}}},\\\"weebly\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5cc\\\",\\\"label\\\":\\\"Weebly\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529514897200,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z\\\"}}},\\\"weibo\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f18a\\\",\\\"label\\\":\\\"Weibo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z\\\"}}},\\\"weight\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"measurement\\\",\\\"scale\\\",\\\"weight\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f496\\\",\\\"label\\\":\\\"Weight\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111709,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\\\"}}},\\\"weight-hanging\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"anvil\\\",\\\"heavy\\\",\\\"measurement\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5cd\\\",\\\"label\\\":\\\"Hanging Weight\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111709,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\\\"}}},\\\"weixin\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1d7\\\",\\\"label\\\":\\\"Weixin (WeChat)\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426582002,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z\\\"}}},\\\"whatsapp\\\":{\\\"changes\\\":[\\\"4.3\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f232\\\",\\\"label\\\":\\\"What's App\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1521653821390,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\\\"}}},\\\"whatsapp-square\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f40c\\\",\\\"label\\\":\\\"What's App Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z\\\"}}},\\\"wheelchair\\\":{\\\"changes\\\":[\\\"4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"handicap\\\",\\\"person\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f193\\\",\\\"label\\\":\\\"Wheelchair\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\\\"}}},\\\"whmcs\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f40d\\\",\\\"label\\\":\\\"WHMCS\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z\\\"}}},\\\"wifi\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f1eb\\\",\\\"label\\\":\\\"WiFi\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M384 416c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm136.659-124.443c6.465-6.465 6.245-17.065-.564-23.167-113.793-101.985-286.526-101.869-400.19 0-6.809 6.102-7.029 16.702-.564 23.167l34.006 34.006c5.927 5.927 15.464 6.32 21.769.796 82.88-72.609 207.074-72.447 289.768 0 6.305 5.524 15.842 5.132 21.769-.796l34.006-34.006zm112.11-113.718c6.385-6.385 6.254-16.816-.35-22.973-175.768-163.86-449.134-163.8-624.837 0-6.604 6.157-6.735 16.589-.35 22.973l33.966 33.966c6.095 6.095 15.891 6.231 22.224.383 144.763-133.668 368.356-133.702 513.156 0 6.333 5.848 16.129 5.712 22.224-.383l33.967-33.966z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M384 416c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm136.659-124.443c6.465-6.465 6.245-17.065-.564-23.167-113.793-101.985-286.526-101.869-400.19 0-6.809 6.102-7.029 16.702-.564 23.167l34.006 34.006c5.927 5.927 15.464 6.32 21.769.796 82.88-72.609 207.074-72.447 289.768 0 6.305 5.524 15.842 5.132 21.769-.796l34.006-34.006zm112.11-113.718c6.385-6.385 6.254-16.816-.35-22.973-175.768-163.86-449.134-163.8-624.837 0-6.604 6.157-6.735 16.589-.35 22.973l33.966 33.966c6.095 6.095 15.891 6.231 22.224.383 144.763-133.668 368.356-133.702 513.156 0 6.333 5.848 16.129 5.712 22.224-.383l33.967-33.966z\\\"}}},\\\"wikipedia-w\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f266\\\",\\\"label\\\":\\\"Wikipedia W\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z\\\"}}},\\\"window-close\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f410\\\",\\\"label\\\":\\\"Window Close\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h404c3.3 0 6 2.7 6 6v340zM356.5 194.6L295.1 256l61.4 61.4c4.6 4.6 4.6 12.1 0 16.8l-22.3 22.3c-4.6 4.6-12.1 4.6-16.8 0L256 295.1l-61.4 61.4c-4.6 4.6-12.1 4.6-16.8 0l-22.3-22.3c-4.6-4.6-4.6-12.1 0-16.8l61.4-61.4-61.4-61.4c-4.6-4.6-4.6-12.1 0-16.8l22.3-22.3c4.6-4.6 12.1-4.6 16.8 0l61.4 61.4 61.4-61.4c4.6-4.6 12.1-4.6 16.8 0l22.3 22.3c4.7 4.6 4.7 12.1 0 16.8z\\\"}}},\\\"window-maximize\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2d0\\\",\\\"label\\\":\\\"Window Maximize\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm0 394c0 3.3-2.7 6-6 6H54c-3.3 0-6-2.7-6-6V192h416v234z\\\"}}},\\\"window-minimize\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2d1\\\",\\\"label\\\":\\\"Window Minimize\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M480 480H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h448c17.7 0 32 14.3 32 32s-14.3 32-32 32z\\\"}}},\\\"window-restore\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\",\\\"regular\\\"],\\\"unicode\\\":\\\"f2d2\\\",\\\"label\\\":\\\"Window Restore\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\\\"},\\\"regular\\\":{\\\"last_modified\\\":1502397066000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M464 0H144c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v320c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-96 464H48V256h320v208zm96-96h-48V144c0-26.5-21.5-48-48-48H144V48h320v320z\\\"}}},\\\"windows\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"microsoft\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f17a\\\",\\\"label\\\":\\\"Windows\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z\\\"}}},\\\"wine-glass\\\":{\\\"changes\\\":[\\\"5.0.9\\\",\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f4e3\\\",\\\"label\\\":\\\"Wine Glass\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111710,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 288 512\\\\\\\"><path d=\\\\\\\"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"288\\\",\\\"512\\\"],\\\"width\\\":288,\\\"height\\\":512,\\\"path\\\":\\\"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\\\"}}},\\\"wine-glass-alt\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f5ce\\\",\\\"label\\\":\\\"Wine Glass-alt\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1529520111710,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 288 512\\\\\\\"><path d=\\\\\\\"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"288\\\",\\\"512\\\"],\\\"width\\\":288,\\\"height\\\":512,\\\"path\\\":\\\"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\\\"}}},\\\"wix\\\":{\\\"changes\\\":[\\\"5.1.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f5cf\\\",\\\"label\\\":\\\"Wix\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1529514897200,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z\\\"}}},\\\"wolf-pack-battalion\\\":{\\\"changes\\\":[\\\"5.0.12\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f514\\\",\\\"label\\\":\\\"Wolf Pack-battalion\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1525376442523,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 456.58 512\\\\\\\"><path d=\\\\\\\"M239.73 471.53l10.56 15.84 5.28-12.32 5.28 7.04V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05 27.87 3.34 53.94 10.58 63.34 54.1l-30.35 8.36c11.15 23.04 17.01 46.76 13.2 72.14L384 313.18l-6.16 33.43-18.47-7.04-8.8 33.43-19.35-7.04 26.39 21.11 8.8-28.15 24.63 5.28 7.04-35.63 26.39 14.52c.25-20.02 6.97-58.06-8.8-84.45l26.39 5.28c3.99-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 1.96-19.87 17.45-42.62 43.11-49.7-43.99 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.47 22.87-89.73 65.1-93.25 147.79l-58.06 38.71-3.52 93.25 107.33-59.82 7.04 7.04-17.59 3.52-43.99 38.71-15.84-5.28-28.15 49.26-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-43.99-38.71-17.59-3.52 7.04-7.04 107.33 59.82-3.52-93.25-58.06-38.71C157.03 65.1 107.77 22.87 67.3 0c-17.54 61.12-4.4 118.76 0 130.2 14.96-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9C29.94 160.06.44 191.78 0 216.85l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7.04 35.63 24.63-5.28 8.8 28.15 26.39-21.11-19.34 7.05-8.8-33.43-18.47 7.04-6.16-33.43-27.27 7.04c-3.82-25.38 2.05-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.91l5.28-7.04 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95.01l-15.84-10.56c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.26-.27 13.88-3.51 22.88zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7.04 8.24-7.9 15.55-16.27 22.87-24.63zm24.63 5.28c-.02-13.43-2.05-24.21-5.28-33.43-5.38 9.09-11.23 18.18-18.47 27.27l23.75 6.16zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-11.99 6.65-28.14 7.04-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 43.99-14.08-10.6-18.95-27.22-25.52-45.75-28.15zM137.68 376.52l15.84-10.56c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7.04-8.24-7.9-15.55-16.27-22.87-24.63zm-24.64 5.28c.02-13.43 2.05-24.21 5.28-33.43 5.38 9.09 11.23 18.18 18.47 27.27l-23.75 6.16zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 36.95-10.56-5.05-11.99-6.65-28.14-7.04-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-43.99-14.08 10.61-18.95 27.22-25.52 45.75-28.15z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"456.58\\\",\\\"512\\\"],\\\"width\\\":456,\\\"height\\\":512,\\\"path\\\":\\\"M239.73 471.53l10.56 15.84 5.28-12.32 5.28 7.04V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05 27.87 3.34 53.94 10.58 63.34 54.1l-30.35 8.36c11.15 23.04 17.01 46.76 13.2 72.14L384 313.18l-6.16 33.43-18.47-7.04-8.8 33.43-19.35-7.04 26.39 21.11 8.8-28.15 24.63 5.28 7.04-35.63 26.39 14.52c.25-20.02 6.97-58.06-8.8-84.45l26.39 5.28c3.99-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 1.96-19.87 17.45-42.62 43.11-49.7-43.99 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.47 22.87-89.73 65.1-93.25 147.79l-58.06 38.71-3.52 93.25 107.33-59.82 7.04 7.04-17.59 3.52-43.99 38.71-15.84-5.28-28.15 49.26-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-43.99-38.71-17.59-3.52 7.04-7.04 107.33 59.82-3.52-93.25-58.06-38.71C157.03 65.1 107.77 22.87 67.3 0c-17.54 61.12-4.4 118.76 0 130.2 14.96-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9C29.94 160.06.44 191.78 0 216.85l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7.04 35.63 24.63-5.28 8.8 28.15 26.39-21.11-19.34 7.05-8.8-33.43-18.47 7.04-6.16-33.43-27.27 7.04c-3.82-25.38 2.05-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.91l5.28-7.04 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95.01l-15.84-10.56c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.26-.27 13.88-3.51 22.88zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7.04 8.24-7.9 15.55-16.27 22.87-24.63zm24.63 5.28c-.02-13.43-2.05-24.21-5.28-33.43-5.38 9.09-11.23 18.18-18.47 27.27l23.75 6.16zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-11.99 6.65-28.14 7.04-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 43.99-14.08-10.6-18.95-27.22-25.52-45.75-28.15zM137.68 376.52l15.84-10.56c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7.04-8.24-7.9-15.55-16.27-22.87-24.63zm-24.64 5.28c.02-13.43 2.05-24.21 5.28-33.43 5.38 9.09 11.23 18.18 18.47 27.27l-23.75 6.16zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 36.95-10.56-5.05-11.99-6.65-28.14-7.04-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-43.99-14.08 10.61-18.95 27.22-25.52 45.75-28.15z\\\"}}},\\\"won-sign\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"krw\\\",\\\"krw\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f159\\\",\\\"label\\\":\\\"Won Sign\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M564 192c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-48.028l18.572-80.61c1.732-7.518-3.978-14.694-11.693-14.694h-46.107a11.998 11.998 0 0 0-11.736 9.5L450.73 128H340.839l-19.725-85.987a12 12 0 0 0-11.696-9.317H265.43a12 12 0 0 0-11.687 9.277L233.696 128H124.975L107.5 42.299a12 12 0 0 0-11.758-9.602H53.628c-7.686 0-13.39 7.124-11.709 14.624L60 128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h62.342l7.171 32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h83.856l40.927 182.624A12 12 0 0 0 148.492 480h56.767c5.583 0 10.428-3.85 11.689-9.288L259.335 288h55.086l42.386 182.712A12 12 0 0 0 368.496 480h56.826a12 12 0 0 0 11.694-9.306L479.108 288H564c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-70.146l7.373-32H564zm-425.976 0h80.757l-7.457 32h-66.776l-6.524-32zm45.796 150.029c-6.194 25.831-6.758 47.25-7.321 47.25h-1.126s-1.689-22.05-6.758-47.25L157.599 288h38.812l-12.591 54.029zM274.182 224l1.996-8.602c1.856-7.962 3.457-15.968 4.803-23.398h11.794c1.347 7.43 2.947 15.436 4.803 23.398l1.996 8.602h-25.392zm130.959 118.029c-5.068 25.2-6.758 47.25-6.758 47.25h-1.126c-.563 0-1.126-21.42-7.321-47.25L377.542 288h39.107l-11.508 54.029zM430.281 224h-67.42l-7.34-32h81.577l-6.817 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M564 192c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-48.028l18.572-80.61c1.732-7.518-3.978-14.694-11.693-14.694h-46.107a11.998 11.998 0 0 0-11.736 9.5L450.73 128H340.839l-19.725-85.987a12 12 0 0 0-11.696-9.317H265.43a12 12 0 0 0-11.687 9.277L233.696 128H124.975L107.5 42.299a12 12 0 0 0-11.758-9.602H53.628c-7.686 0-13.39 7.124-11.709 14.624L60 128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h62.342l7.171 32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h83.856l40.927 182.624A12 12 0 0 0 148.492 480h56.767c5.583 0 10.428-3.85 11.689-9.288L259.335 288h55.086l42.386 182.712A12 12 0 0 0 368.496 480h56.826a12 12 0 0 0 11.694-9.306L479.108 288H564c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-70.146l7.373-32H564zm-425.976 0h80.757l-7.457 32h-66.776l-6.524-32zm45.796 150.029c-6.194 25.831-6.758 47.25-7.321 47.25h-1.126s-1.689-22.05-6.758-47.25L157.599 288h38.812l-12.591 54.029zM274.182 224l1.996-8.602c1.856-7.962 3.457-15.968 4.803-23.398h11.794c1.347 7.43 2.947 15.436 4.803 23.398l1.996 8.602h-25.392zm130.959 118.029c-5.068 25.2-6.758 47.25-6.758 47.25h-1.126c-.563 0-1.126-21.42-7.321-47.25L377.542 288h39.107l-11.508 54.029zM430.281 224h-67.42l-7.34-32h81.577l-6.817 32z\\\"}}},\\\"wordpress\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f19a\\\",\\\"label\\\":\\\"WordPress Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z\\\"}}},\\\"wordpress-simple\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f411\\\",\\\"label\\\":\\\"Wordpress Simple\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z\\\"}}},\\\"wpbeginner\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f297\\\",\\\"label\\\":\\\"WPBeginner\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501102193000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z\\\"}}},\\\"wpexplorer\\\":{\\\"changes\\\":[\\\"4.7\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2de\\\",\\\"label\\\":\\\"WPExplorer\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z\\\"}}},\\\"wpforms\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f298\\\",\\\"label\\\":\\\"WPForms\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z\\\"}}},\\\"wrench\\\":{\\\"changes\\\":[\\\"2\\\",\\\"5.0.0\\\",\\\"5.0.13\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"fix\\\",\\\"settings\\\",\\\"spanner\\\",\\\"tool\\\",\\\"update\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f0ad\\\",\\\"label\\\":\\\"Wrench\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1525967154581,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\\\"}}},\\\"x-ray\\\":{\\\"changes\\\":[\\\"5.0.7\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"radiological images\\\",\\\"radiology\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f497\\\",\\\"label\\\":\\\"X-Ray\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1521653821463,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\\\"}}},\\\"xbox\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f412\\\",\\\"label\\\":\\\"Xbox\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 512 512\\\\\\\"><path d=\\\\\\\"M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"512\\\",\\\"512\\\"],\\\"width\\\":512,\\\"height\\\":512,\\\"path\\\":\\\"M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z\\\"}}},\\\"xing\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f168\\\",\\\"label\\\":\\\"Xing\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z\\\"}}},\\\"xing-square\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f169\\\",\\\"label\\\":\\\"Xing Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z\\\"}}},\\\"y-combinator\\\":{\\\"changes\\\":[\\\"4.4\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f23b\\\",\\\"label\\\":\\\"Y Combinator\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z\\\"}}},\\\"yahoo\\\":{\\\"changes\\\":[\\\"4.1\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f19e\\\",\\\"label\\\":\\\"Yahoo Logo\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426582003,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M252 292l4 220c-12.7-2.2-23.5-3.9-32.3-3.9-8.4 0-19.2 1.7-32.3 3.9l4-220C140.4 197.2 85 95.2 21.4 0c11.9 3.1 23 3.9 33.2 3.9 9 0 20.4-.8 34.1-3.9 40.9 72.2 82.1 138.7 135 225.5C261 163.9 314.8 81.4 358.6 0c11.1 2.9 22 3.9 32.9 3.9 11.5 0 23.2-1 35-3.9C392.1 47.9 294.9 216.9 252 292z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M252 292l4 220c-12.7-2.2-23.5-3.9-32.3-3.9-8.4 0-19.2 1.7-32.3 3.9l4-220C140.4 197.2 85 95.2 21.4 0c11.9 3.1 23 3.9 33.2 3.9 9 0 20.4-.8 34.1-3.9 40.9 72.2 82.1 138.7 135 225.5C261 163.9 314.8 81.4 358.6 0c11.1 2.9 22 3.9 32.9 3.9 11.5 0 23.2-1 35-3.9C392.1 47.9 294.9 216.9 252 292z\\\"}}},\\\"yandex\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f413\\\",\\\"label\\\":\\\"Yandex\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 256 512\\\\\\\"><path d=\\\\\\\"M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"256\\\",\\\"512\\\"],\\\"width\\\":256,\\\"height\\\":512,\\\"path\\\":\\\"M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z\\\"}}},\\\"yandex-international\\\":{\\\"changes\\\":[\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f414\\\",\\\"label\\\":\\\"Yandex International\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 320 512\\\\\\\"><path d=\\\\\\\"M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"320\\\",\\\"512\\\"],\\\"width\\\":320,\\\"height\\\":512,\\\"path\\\":\\\"M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z\\\"}}},\\\"yelp\\\":{\\\"changes\\\":[\\\"4.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f1e9\\\",\\\"label\\\":\\\"Yelp\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1500927880000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M136.9 328c-1 .3-109.2 35.7-115.8 35.7-15.2-.9-18.5-16.2-19.9-31.2-1.5-14.2-1.4-29.8.3-46.8 1.9-18.8 5.5-45.1 24.2-44 4.8 0 67.1 25.9 112.7 44.4 17.1 6.8 18.6 35.8-1.5 41.9zm57.9-113.9c1.8 38.2-25.5 48.5-47.2 14.3L41.3 60.4c-1.5-6.6.3-12.4 5.3-17.4C62.2 26.5 146 3.2 168.1 8.9c7.5 1.9 12.1 6.1 13.8 12.6 1.3 8.3 11.5 167.4 12.9 192.6zm-1.4 164.8c0 4.6.2 116.4-1.7 121.5-2.3 6-7 9.7-14.3 11.2-10.1 1.7-27.1-1.9-51-10.7-22-8.1-56.7-21.5-49.3-42.5 2.8-6.9 51.4-62.8 77.3-93.6 12-15.2 39.8-5.5 39 14.1zm180.2-117.8c-5.6 3.7-110.8 28.2-118.1 30.6l.3-.6c-18.1 4.7-35.4-18.5-23.3-34.6 3.7-3.7 65.9-92.4 72.8-97 5.2-3.6 11.3-3.8 18.3-.6 18.4 8.8 55.1 63.1 57.4 84.6-.1 2.9 1.2 11.7-7.4 17.6zm10.1 130.7c-2.7 20.6-44.5 73.4-63.8 81-6.9 2.6-12.9 2-17.7-2-5-3.5-61.8-97.1-64.9-102.3-10.9-16.2 6.8-39.8 25.6-33.2 0 0 110.5 35.7 114.7 39.4 5.2 4.1 7.2 9.8 6.1 17.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M136.9 328c-1 .3-109.2 35.7-115.8 35.7-15.2-.9-18.5-16.2-19.9-31.2-1.5-14.2-1.4-29.8.3-46.8 1.9-18.8 5.5-45.1 24.2-44 4.8 0 67.1 25.9 112.7 44.4 17.1 6.8 18.6 35.8-1.5 41.9zm57.9-113.9c1.8 38.2-25.5 48.5-47.2 14.3L41.3 60.4c-1.5-6.6.3-12.4 5.3-17.4C62.2 26.5 146 3.2 168.1 8.9c7.5 1.9 12.1 6.1 13.8 12.6 1.3 8.3 11.5 167.4 12.9 192.6zm-1.4 164.8c0 4.6.2 116.4-1.7 121.5-2.3 6-7 9.7-14.3 11.2-10.1 1.7-27.1-1.9-51-10.7-22-8.1-56.7-21.5-49.3-42.5 2.8-6.9 51.4-62.8 77.3-93.6 12-15.2 39.8-5.5 39 14.1zm180.2-117.8c-5.6 3.7-110.8 28.2-118.1 30.6l.3-.6c-18.1 4.7-35.4-18.5-23.3-34.6 3.7-3.7 65.9-92.4 72.8-97 5.2-3.6 11.3-3.8 18.3-.6 18.4 8.8 55.1 63.1 57.4 84.6-.1 2.9 1.2 11.7-7.4 17.6zm10.1 130.7c-2.7 20.6-44.5 73.4-63.8 81-6.9 2.6-12.9 2-17.7-2-5-3.5-61.8-97.1-64.9-102.3-10.9-16.2 6.8-39.8 25.6-33.2 0 0 110.5 35.7 114.7 39.4 5.2 4.1 7.2 9.8 6.1 17.1z\\\"}}},\\\"yen-sign\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"jpy\\\",\\\"jpy\\\"]},\\\"styles\\\":[\\\"solid\\\"],\\\"unicode\\\":\\\"f157\\\",\\\"label\\\":\\\"Yen Sign\\\",\\\"svg\\\":{\\\"solid\\\":{\\\"last_modified\\\":1501873838000,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 384 512\\\\\\\"><path d=\\\\\\\"M351.208 32h-65.277a12 12 0 0 0-10.778 6.724l-55.39 113.163c-14.513 34.704-27.133 71.932-27.133 71.932h-1.262s-12.62-37.228-27.133-71.932l-55.39-113.163A11.997 11.997 0 0 0 98.068 32H32.792c-9.057 0-14.85 9.65-10.59 17.643L102.322 200H44c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h88.162L152 293.228V320H44c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h108v92c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-92h108c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12H232v-26.772L251.838 256H340c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12h-58.322l80.12-150.357C366.058 41.65 360.266 32 351.208 32z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"384\\\",\\\"512\\\"],\\\"width\\\":384,\\\"height\\\":512,\\\"path\\\":\\\"M351.208 32h-65.277a12 12 0 0 0-10.778 6.724l-55.39 113.163c-14.513 34.704-27.133 71.932-27.133 71.932h-1.262s-12.62-37.228-27.133-71.932l-55.39-113.163A11.997 11.997 0 0 0 98.068 32H32.792c-9.057 0-14.85 9.65-10.59 17.643L102.322 200H44c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h88.162L152 293.228V320H44c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h108v92c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-92h108c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12H232v-26.772L251.838 256H340c6.627 0 12-5.373 12-12v-32c0-6.627-5.373-12-12-12h-58.322l80.12-150.357C366.058 41.65 360.266 32 351.208 32z\\\"}}},\\\"yoast\\\":{\\\"changes\\\":[\\\"4.6\\\",\\\"5.0.0\\\",\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f2b1\\\",\\\"label\\\":\\\"Yoast\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426582003,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z\\\"}}},\\\"youtube\\\":{\\\"changes\\\":[\\\"3.2\\\",\\\"5.0.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[\\\"film\\\",\\\"video\\\",\\\"youtube-play\\\",\\\"youtube-square\\\"]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f167\\\",\\\"label\\\":\\\"YouTube\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1511282001106,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 576 512\\\\\\\"><path d=\\\\\\\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"576\\\",\\\"512\\\"],\\\"width\\\":576,\\\"height\\\":512,\\\"path\\\":\\\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\\\"}}},\\\"youtube-square\\\":{\\\"changes\\\":[\\\"5.0.3\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f431\\\",\\\"label\\\":\\\"YouTube Square\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1515426582003,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 448 512\\\\\\\"><path d=\\\\\\\"M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"448\\\",\\\"512\\\"],\\\"width\\\":448,\\\"height\\\":512,\\\"path\\\":\\\"M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z\\\"}}},\\\"zhihu\\\":{\\\"changes\\\":[\\\"5.2.0\\\"],\\\"ligatures\\\":[],\\\"search\\\":{\\\"terms\\\":[]},\\\"styles\\\":[\\\"brands\\\"],\\\"unicode\\\":\\\"f63f\\\",\\\"label\\\":\\\"Zhihu\\\",\\\"svg\\\":{\\\"brands\\\":{\\\"last_modified\\\":1532362831425,\\\"raw\\\":\\\"<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" viewBox=\\\\\\\"0 0 640 512\\\\\\\"><path d=\\\\\\\"M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z\\\\\\\"/></svg>\\\",\\\"viewBox\\\":[\\\"0\\\",\\\"0\\\",\\\"640\\\",\\\"512\\\"],\\\"width\\\":640,\\\"height\\\":512,\\\"path\\\":\\\"M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z\\\"}}}}\");\n\n/***/ }),\n/* 277 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/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\n\n/***/ }),\n/* 278 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(38);\nvar isObject = __webpack_require__(39);\nvar isSymbol = __webpack_require__(168);\nvar getMethod = __webpack_require__(136);\nvar ordinaryToPrimitive = __webpack_require__(466);\nvar wellKnownSymbol = __webpack_require__(41);\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 $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n\n\n/***/ }),\n/* 279 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar isObject = __webpack_require__(39);\n\nvar document = global.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\n\n/***/ }),\n/* 280 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(196);\nvar uid = __webpack_require__(197);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n/* 281 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hasOwn = __webpack_require__(44);\nvar ownKeys = __webpack_require__(360);\nvar getOwnPropertyDescriptorModule = __webpack_require__(85);\nvar definePropertyModule = __webpack_require__(48);\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\n\n/***/ }),\n/* 282 */\n/***/ (function(module, exports) {\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n/* 283 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\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\n\n/***/ }),\n/* 284 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(38);\nvar aCallable = __webpack_require__(77);\nvar anObject = __webpack_require__(35);\nvar tryToString = __webpack_require__(169);\nvar getIteratorMethod = __webpack_require__(237);\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 $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n/***/ }),\n/* 285 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar tryToString = __webpack_require__(169);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n  if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n\n\n/***/ }),\n/* 286 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $findIndex = __webpack_require__(84).findIndex;\nvar addToUnscopables = __webpack_require__(119);\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\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\n\n/***/ }),\n/* 287 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(118);\nvar IndexedObject = __webpack_require__(194);\nvar toObject = __webpack_require__(47);\nvar lengthOfArrayLike = __webpack_require__(53);\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 boundFunction = bind(callbackfn, that);\n    var index = lengthOfArrayLike(self);\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\n\n/***/ }),\n/* 288 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar from = __webpack_require__(488);\nvar checkCorrectnessOfIteration = __webpack_require__(289);\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es-x/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\n\n/***/ }),\n/* 289 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(41);\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-x/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  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\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\n\n/***/ }),\n/* 290 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(92);\nvar addToUnscopables = __webpack_require__(119);\nvar Iterators = __webpack_require__(236);\nvar InternalStateModule = __webpack_require__(73);\nvar defineProperty = __webpack_require__(48).f;\nvar defineIterator = __webpack_require__(370);\nvar IS_PURE = __webpack_require__(69);\nvar DESCRIPTORS = __webpack_require__(30);\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 kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: 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\n/***/ }),\n/* 291 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aCallable = __webpack_require__(77);\nvar toObject = __webpack_require__(47);\nvar IndexedObject = __webpack_require__(194);\nvar lengthOfArrayLike = __webpack_require__(53);\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\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 $TypeError('Reduce of empty array with no initial value');\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\n\n/***/ }),\n/* 292 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar isArray = __webpack_require__(149);\nvar isConstructor = __webpack_require__(199);\nvar isObject = __webpack_require__(39);\nvar toAbsoluteIndex = __webpack_require__(137);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar toIndexedObject = __webpack_require__(92);\nvar createProperty = __webpack_require__(139);\nvar wellKnownSymbol = __webpack_require__(41);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(239);\nvar nativeSlice = __webpack_require__(170);\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\n\n/***/ }),\n/* 293 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(25);\nvar uncurryThis = __webpack_require__(20);\nvar DESCRIPTORS = __webpack_require__(30);\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(375);\nvar FunctionName = __webpack_require__(198);\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar defineBuiltIns = __webpack_require__(241);\nvar fails = __webpack_require__(16);\nvar anInstance = __webpack_require__(127);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar toLength = __webpack_require__(100);\nvar toIndex = __webpack_require__(495);\nvar IEEE754 = __webpack_require__(743);\nvar getPrototypeOf = __webpack_require__(115);\nvar setPrototypeOf = __webpack_require__(124);\nvar getOwnPropertyNames = __webpack_require__(148).f;\nvar defineProperty = __webpack_require__(48).f;\nvar arrayFill = __webpack_require__(369);\nvar arraySlice = __webpack_require__(233);\nvar setToStringTag = __webpack_require__(102);\nvar InternalStateModule = __webpack_require__(73);\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n  return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n  return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n  return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n  return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n  return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n  defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = arraySlice(bytes, start, start + count);\n  return isLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n  var intIndex = toIndex(index);\n  var store = getInternalState(view);\n  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n  var bytes = getInternalState(store.buffer).bytes;\n  var start = intIndex + store.byteOffset;\n  var pack = conversion(+value);\n  for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n  $ArrayBuffer = function ArrayBuffer(length) {\n    anInstance(this, ArrayBufferPrototype);\n    var byteLength = toIndex(length);\n    setInternalState(this, {\n      bytes: fill(Array(byteLength), 0),\n      byteLength: byteLength\n    });\n    if (!DESCRIPTORS) this.byteLength = byteLength;\n  };\n\n  ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n  $DataView = function DataView(buffer, byteOffset, byteLength) {\n    anInstance(this, DataViewPrototype);\n    anInstance(buffer, ArrayBufferPrototype);\n    var bufferLength = getInternalState(buffer).byteLength;\n    var offset = toIntegerOrInfinity(byteOffset);\n    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n    setInternalState(this, {\n      buffer: buffer,\n      byteLength: byteLength,\n      byteOffset: offset\n    });\n    if (!DESCRIPTORS) {\n      this.buffer = buffer;\n      this.byteLength = byteLength;\n      this.byteOffset = offset;\n    }\n  };\n\n  DataViewPrototype = $DataView[PROTOTYPE];\n\n  if (DESCRIPTORS) {\n    addGetter($ArrayBuffer, 'byteLength');\n    addGetter($DataView, 'buffer');\n    addGetter($DataView, 'byteLength');\n    addGetter($DataView, 'byteOffset');\n  }\n\n  defineBuiltIns(DataViewPrototype, {\n    getInt8: function getInt8(byteOffset) {\n      return get(this, 1, byteOffset)[0] << 24 >> 24;\n    },\n    getUint8: function getUint8(byteOffset) {\n      return get(this, 1, byteOffset)[0];\n    },\n    getInt16: function getInt16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n    },\n    getUint16: function getUint16(byteOffset /* , littleEndian */) {\n      var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n      return bytes[1] << 8 | bytes[0];\n    },\n    getInt32: function getInt32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n    },\n    getUint32: function getUint32(byteOffset /* , littleEndian */) {\n      return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n    },\n    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n    },\n    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n      return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n    },\n    setInt8: function setInt8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      set(this, 1, byteOffset, packInt8, value);\n    },\n    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n      set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n      set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n    },\n    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n      set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n    }\n  });\n} else {\n  var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n  /* eslint-disable no-new -- required for testing */\n  if (!fails(function () {\n    NativeArrayBuffer(1);\n  }) || !fails(function () {\n    new NativeArrayBuffer(-1);\n  }) || fails(function () {\n    new NativeArrayBuffer();\n    new NativeArrayBuffer(1.5);\n    new NativeArrayBuffer(NaN);\n    return NativeArrayBuffer.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n  })) {\n    /* eslint-enable no-new -- required for testing */\n    $ArrayBuffer = function ArrayBuffer(length) {\n      anInstance(this, ArrayBufferPrototype);\n      return new NativeArrayBuffer(toIndex(length));\n    };\n\n    $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n    for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n      if (!((key = keys[j++]) in $ArrayBuffer)) {\n        createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n      }\n    }\n\n    ArrayBufferPrototype.constructor = $ArrayBuffer;\n  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n    createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n  }\n\n  // WebKit bug - the same parent prototype for typed arrays and data view\n  if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n    setPrototypeOf(DataViewPrototype, ObjectPrototype);\n  }\n\n  // iOS Safari 7.x bug\n  var testView = new $DataView(new $ArrayBuffer(2));\n  var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n  testView.setInt8(0, 2147483648);\n  testView.setInt8(1, 2147483649);\n  if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n    setInt8: function setInt8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    },\n    setUint8: function setUint8(byteOffset, value) {\n      $setInt8(this, byteOffset, value << 24 >> 24);\n    }\n  }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n  ArrayBuffer: $ArrayBuffer,\n  DataView: $DataView\n};\n\n\n/***/ }),\n/* 294 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar toString = __webpack_require__(42);\nvar requireObjectCoercible = __webpack_require__(72);\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 $RangeError('Wrong number of repetitions');\n  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n  return result;\n};\n\n\n/***/ }),\n/* 295 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\nvar uncurryThis = __webpack_require__(20);\nvar defineBuiltIn = __webpack_require__(62);\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\n\n/***/ }),\n/* 296 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar uncurryThis = __webpack_require__(20);\nvar isForced = __webpack_require__(231);\nvar defineBuiltIn = __webpack_require__(62);\nvar InternalMetadataModule = __webpack_require__(172);\nvar iterate = __webpack_require__(125);\nvar anInstance = __webpack_require__(127);\nvar isCallable = __webpack_require__(43);\nvar isNullOrUndefined = __webpack_require__(93);\nvar isObject = __webpack_require__(39);\nvar fails = __webpack_require__(16);\nvar checkCorrectnessOfIteration = __webpack_require__(289);\nvar setToStringTag = __webpack_require__(102);\nvar inheritIfRequired = __webpack_require__(200);\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var NativeConstructor = global[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n    defineBuiltIn(NativePrototype, KEY,\n      KEY == 'add' ? function add(value) {\n        uncurriedNativeMethod(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY == 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY == 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY == 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  var REPLACE = isForced(\n    CONSTRUCTOR_NAME,\n    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n      new NativeConstructor().entries().next();\n    }))\n  );\n\n  if (REPLACE) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else if (isForced(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new -- required for testing\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, NativePrototype);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n\n\n/***/ }),\n/* 297 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\nvar isObject = __webpack_require__(39);\nvar classof = __webpack_require__(99);\nvar ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(378);\n\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n  if (!isObject(it)) return false;\n  if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n  return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n\n\n/***/ }),\n/* 298 */\n/***/ (function(module, exports) {\n\n// eslint-disable-next-line es-x/no-math-expm1 -- safe\nvar $expm1 = Math.expm1;\nvar exp = Math.exp;\n\n// `Math.expm1` method implementation\n// https://tc39.es/ecma262/#sec-math.expm1\nmodule.exports = (!$expm1\n  // Old FF bug\n  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n  // Tor Browser bug\n  || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n  var n = +x;\n  return n == 0 ? n : n > -1e-6 && n < 1e-6 ? n + n * n / 2 : exp(n) - 1;\n} : $expm1;\n\n\n/***/ }),\n/* 299 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n\n\n/***/ }),\n/* 300 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 301 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IS_PURE = __webpack_require__(69);\nvar global = __webpack_require__(25);\nvar fails = __webpack_require__(16);\nvar WEBKIT = __webpack_require__(374);\n\n// Forced replacement object prototype accessors methods\nmodule.exports = IS_PURE || !fails(function () {\n  // This feature detection crashes old WebKit\n  // https://github.com/zloirock/core-js/issues/232\n  if (WEBKIT && WEBKIT < 535) return;\n  var key = Math.random();\n  // In FF throws only define methods\n  // eslint-disable-next-line no-undef, no-useless-call, es-x/no-legacy-object-prototype-accessor-methods -- required for testing\n  __defineSetter__.call(null, key, function () { /* empty */ });\n  delete global[key];\n});\n\n\n/***/ }),\n/* 302 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(814);\n__webpack_require__(819);\n__webpack_require__(820);\n__webpack_require__(821);\n__webpack_require__(822);\n__webpack_require__(823);\n\n\n/***/ }),\n/* 303 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar apply = __webpack_require__(114);\nvar bind = __webpack_require__(118);\nvar isCallable = __webpack_require__(43);\nvar hasOwn = __webpack_require__(44);\nvar fails = __webpack_require__(16);\nvar html = __webpack_require__(472);\nvar arraySlice = __webpack_require__(170);\nvar createElement = __webpack_require__(279);\nvar validateArgumentsLength = __webpack_require__(151);\nvar IS_IOS = __webpack_require__(508);\nvar IS_NODE = __webpack_require__(141);\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n  // Deno throws a ReferenceError on `location` access without `--location` flag\n  location = global.location;\n} catch (error) { /* empty */ }\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 listener = function (event) {\n  run(event.data);\n};\n\nvar post = function (id) {\n  // old engines have not location.origin\n  global.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 = listener;\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    global.addEventListener &&\n    isCallable(global.postMessage) &&\n    !global.importScripts &&\n    location && location.protocol !== 'file:' &&\n    !fails(post)\n  ) {\n    defer = post;\n    global.addEventListener('message', listener, 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\n\n/***/ }),\n/* 304 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\nvar global = __webpack_require__(25);\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.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\n\n/***/ }),\n/* 305 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 = __webpack_require__(38);\nvar uncurryThis = __webpack_require__(20);\nvar toString = __webpack_require__(42);\nvar regexpFlags = __webpack_require__(383);\nvar stickyHelpers = __webpack_require__(304);\nvar shared = __webpack_require__(196);\nvar create = __webpack_require__(101);\nvar getInternalState = __webpack_require__(73).get;\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(384);\nvar UNSUPPORTED_NCG = __webpack_require__(514);\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\n\n/***/ }),\n/* 306 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar PROPER_FUNCTION_NAME = __webpack_require__(198).PROPER;\nvar defineBuiltIn = __webpack_require__(62);\nvar anObject = __webpack_require__(35);\nvar $toString = __webpack_require__(42);\nvar fails = __webpack_require__(16);\nvar getRegExpFlags = __webpack_require__(247);\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(RegExp.prototype, 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\n\n/***/ }),\n/* 307 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar toString = __webpack_require__(42);\nvar requireObjectCoercible = __webpack_require__(72);\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\n\n/***/ }),\n/* 308 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(207);\nvar uncurryThis = __webpack_require__(20);\nvar defineBuiltIn = __webpack_require__(62);\nvar regexpExec = __webpack_require__(305);\nvar fails = __webpack_require__(16);\nvar wellKnownSymbol = __webpack_require__(41);\nvar createNonEnumerableProperty = __webpack_require__(94);\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 RegEp 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 () { execCalled = true; return null; };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var uncurriedNativeMethod = uncurryThis(nativeMethod);\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: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n        }\n        return { done: true, value: uncurriedNativeMethod(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\n\n/***/ }),\n/* 309 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(307).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\n\n/***/ }),\n/* 310 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 311 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar speciesConstructor = __webpack_require__(202);\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n  return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray)));\n};\n\n\n/***/ }),\n/* 312 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ListCache = __webpack_require__(313),\n    stackClear = __webpack_require__(964),\n    stackDelete = __webpack_require__(965),\n    stackGet = __webpack_require__(966),\n    stackHas = __webpack_require__(967),\n    stackSet = __webpack_require__(968);\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\n\n/***/ }),\n/* 313 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar listCacheClear = __webpack_require__(959),\n    listCacheDelete = __webpack_require__(960),\n    listCacheGet = __webpack_require__(961),\n    listCacheHas = __webpack_require__(962),\n    listCacheSet = __webpack_require__(963);\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\n\n/***/ }),\n/* 314 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar eq = __webpack_require__(190);\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\n\n/***/ }),\n/* 315 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(175);\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n/***/ }),\n/* 316 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isKeyable = __webpack_require__(981);\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\n\n/***/ }),\n/* 317 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsArguments = __webpack_require__(993),\n    isObjectLike = __webpack_require__(128);\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\n\n/***/ }),\n/* 318 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(120),\n    stubFalse = __webpack_require__(994);\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && 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\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 319 */\n/***/ (function(module, exports) {\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\nmodule.exports = isIndex;\n\n\n/***/ }),\n/* 320 */\n/***/ (function(module, exports) {\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\nmodule.exports = baseUnary;\n\n\n/***/ }),\n/* 321 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DataView = __webpack_require__(998),\n    Map = __webpack_require__(390),\n    Promise = __webpack_require__(999),\n    Set = __webpack_require__(545),\n    WeakMap = __webpack_require__(1000),\n    baseGetTag = __webpack_require__(174),\n    toSource = __webpack_require__(535);\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\n\n/***/ }),\n/* 322 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar guid = __webpack_require__(546);\n\nvar env = __webpack_require__(66);\n\nvar zrUtil = __webpack_require__(2);\n\nvar Handler = __webpack_require__(1001);\n\nvar Storage = __webpack_require__(1005);\n\nvar Painter = __webpack_require__(1009);\n\nvar Animation = __webpack_require__(1011);\n\nvar HandlerProxy = __webpack_require__(1012);\n\n/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nvar useVML = !env.canvasSupported;\nvar painterCtors = {\n  canvas: Painter\n};\nvar instances = {}; // ZRender实例map索引\n\n/**\n * @type {string}\n */\n\nvar version = '4.3.2';\n/**\n * Initializing a zrender instance\n * @param {HTMLElement} dom\n * @param {Object} [opts]\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n * @return {module:zrender/ZRender}\n */\n\nfunction init(dom, opts) {\n  var zr = new ZRender(guid(), dom, opts);\n  instances[zr.id] = zr;\n  return zr;\n}\n/**\n * Dispose zrender instance\n * @param {module:zrender/ZRender} zr\n */\n\n\nfunction dispose(zr) {\n  if (zr) {\n    zr.dispose();\n  } else {\n    for (var key in instances) {\n      if (instances.hasOwnProperty(key)) {\n        instances[key].dispose();\n      }\n    }\n\n    instances = {};\n  }\n\n  return this;\n}\n/**\n * Get zrender instance by id\n * @param {string} id zrender instance id\n * @return {module:zrender/ZRender}\n */\n\n\nfunction getInstance(id) {\n  return instances[id];\n}\n\nfunction registerPainter(name, Ctor) {\n  painterCtors[name] = Ctor;\n}\n\nfunction delInstance(id) {\n  delete instances[id];\n}\n/**\n * @module zrender/ZRender\n */\n\n/**\n * @constructor\n * @alias module:zrender/ZRender\n * @param {string} id\n * @param {HTMLElement} dom\n * @param {Object} opts\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n\n\nvar ZRender = function (id, dom, opts) {\n  opts = opts || {};\n  /**\n   * @type {HTMLDomElement}\n   */\n\n  this.dom = dom;\n  /**\n   * @type {string}\n   */\n\n  this.id = id;\n  var self = this;\n  var storage = new Storage();\n  var rendererType = opts.renderer; // TODO WebGL\n\n  if (useVML) {\n    if (!painterCtors.vml) {\n      throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\n    }\n\n    rendererType = 'vml';\n  } else if (!rendererType || !painterCtors[rendererType]) {\n    rendererType = 'canvas';\n  }\n\n  var painter = new painterCtors[rendererType](dom, storage, opts, id);\n  this.storage = storage;\n  this.painter = painter;\n  var handerProxy = !env.node && !env.worker ? new HandlerProxy(painter.getViewportRoot(), painter.root) : null;\n  this.handler = new Handler(storage, painter, handerProxy, painter.root);\n  /**\n   * @type {module:zrender/animation/Animation}\n   */\n\n  this.animation = new Animation({\n    stage: {\n      update: zrUtil.bind(this.flush, this)\n    }\n  });\n  this.animation.start();\n  /**\n   * @type {boolean}\n   * @private\n   */\n\n  this._needsRefresh; // 修改 storage.delFromStorage, 每次删除元素之前删除动画\n  // FIXME 有点ugly\n\n  var oldDelFromStorage = storage.delFromStorage;\n  var oldAddToStorage = storage.addToStorage;\n\n  storage.delFromStorage = function (el) {\n    oldDelFromStorage.call(storage, el);\n    el && el.removeSelfFromZr(self);\n  };\n\n  storage.addToStorage = function (el) {\n    oldAddToStorage.call(storage, el);\n    el.addSelfToZr(self);\n  };\n};\n\nZRender.prototype = {\n  constructor: ZRender,\n\n  /**\n   * 获取实例唯一标识\n   * @return {string}\n   */\n  getId: function () {\n    return this.id;\n  },\n\n  /**\n   * 添加元素\n   * @param  {module:zrender/Element} el\n   */\n  add: function (el) {\n    this.storage.addRoot(el);\n    this._needsRefresh = true;\n  },\n\n  /**\n   * 删除元素\n   * @param  {module:zrender/Element} el\n   */\n  remove: function (el) {\n    this.storage.delRoot(el);\n    this._needsRefresh = true;\n  },\n\n  /**\n   * Change configuration of layer\n   * @param {string} zLevel\n   * @param {Object} config\n   * @param {string} [config.clearColor=0] Clear color\n   * @param {string} [config.motionBlur=false] If enable motion blur\n   * @param {number} [config.lastFrameAlpha=0.7] Motion blur factor. Larger value cause longer trailer\n  */\n  configLayer: function (zLevel, config) {\n    if (this.painter.configLayer) {\n      this.painter.configLayer(zLevel, config);\n    }\n\n    this._needsRefresh = true;\n  },\n\n  /**\n   * Set background color\n   * @param {string} backgroundColor\n   */\n  setBackgroundColor: function (backgroundColor) {\n    if (this.painter.setBackgroundColor) {\n      this.painter.setBackgroundColor(backgroundColor);\n    }\n\n    this._needsRefresh = true;\n  },\n\n  /**\n   * Repaint the canvas immediately\n   */\n  refreshImmediately: function () {\n    // var start = new Date();\n    // Clear needsRefresh ahead to avoid something wrong happens in refresh\n    // Or it will cause zrender refreshes again and again.\n    this._needsRefresh = this._needsRefreshHover = false;\n    this.painter.refresh(); // Avoid trigger zr.refresh in Element#beforeUpdate hook\n\n    this._needsRefresh = this._needsRefreshHover = false; // var end = new Date();\n    // var log = document.getElementById('log');\n    // if (log) {\n    //     log.innerHTML = log.innerHTML + '<br>' + (end - start);\n    // }\n  },\n\n  /**\n   * Mark and repaint the canvas in the next frame of browser\n   */\n  refresh: function () {\n    this._needsRefresh = true;\n  },\n\n  /**\n   * Perform all refresh\n   */\n  flush: function () {\n    var triggerRendered;\n\n    if (this._needsRefresh) {\n      triggerRendered = true;\n      this.refreshImmediately();\n    }\n\n    if (this._needsRefreshHover) {\n      triggerRendered = true;\n      this.refreshHoverImmediately();\n    }\n\n    triggerRendered && this.trigger('rendered');\n  },\n\n  /**\n   * Add element to hover layer\n   * @param  {module:zrender/Element} el\n   * @param {Object} style\n   */\n  addHover: function (el, style) {\n    if (this.painter.addHover) {\n      var elMirror = this.painter.addHover(el, style);\n      this.refreshHover();\n      return elMirror;\n    }\n  },\n\n  /**\n   * Add element from hover layer\n   * @param  {module:zrender/Element} el\n   */\n  removeHover: function (el) {\n    if (this.painter.removeHover) {\n      this.painter.removeHover(el);\n      this.refreshHover();\n    }\n  },\n\n  /**\n   * Clear all hover elements in hover layer\n   * @param  {module:zrender/Element} el\n   */\n  clearHover: function () {\n    if (this.painter.clearHover) {\n      this.painter.clearHover();\n      this.refreshHover();\n    }\n  },\n\n  /**\n   * Refresh hover in next frame\n   */\n  refreshHover: function () {\n    this._needsRefreshHover = true;\n  },\n\n  /**\n   * Refresh hover immediately\n   */\n  refreshHoverImmediately: function () {\n    this._needsRefreshHover = false;\n    this.painter.refreshHover && this.painter.refreshHover();\n  },\n\n  /**\n   * Resize the canvas.\n   * Should be invoked when container size is changed\n   * @param {Object} [opts]\n   * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n   * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n   */\n  resize: function (opts) {\n    opts = opts || {};\n    this.painter.resize(opts.width, opts.height);\n    this.handler.resize();\n  },\n\n  /**\n   * Stop and clear all animation immediately\n   */\n  clearAnimation: function () {\n    this.animation.clear();\n  },\n\n  /**\n   * Get container width\n   */\n  getWidth: function () {\n    return this.painter.getWidth();\n  },\n\n  /**\n   * Get container height\n   */\n  getHeight: function () {\n    return this.painter.getHeight();\n  },\n\n  /**\n   * Export the canvas as Base64 URL\n   * @param {string} type\n   * @param {string} [backgroundColor='#fff']\n   * @return {string} Base64 URL\n   */\n  // toDataURL: function(type, backgroundColor) {\n  //     return this.painter.getRenderedCanvas({\n  //         backgroundColor: backgroundColor\n  //     }).toDataURL(type);\n  // },\n\n  /**\n   * Converting a path to image.\n   * It has much better performance of drawing image rather than drawing a vector path.\n   * @param {module:zrender/graphic/Path} e\n   * @param {number} width\n   * @param {number} height\n   */\n  pathToImage: function (e, dpr) {\n    return this.painter.pathToImage(e, dpr);\n  },\n\n  /**\n   * Set default cursor\n   * @param {string} [cursorStyle='default'] 例如 crosshair\n   */\n  setCursorStyle: function (cursorStyle) {\n    this.handler.setCursorStyle(cursorStyle);\n  },\n\n  /**\n   * Find hovered element\n   * @param {number} x\n   * @param {number} y\n   * @return {Object} {target, topTarget}\n   */\n  findHover: function (x, y) {\n    return this.handler.findHover(x, y);\n  },\n\n  /**\n   * Bind event\n   *\n   * @param {string} eventName Event name\n   * @param {Function} eventHandler Handler function\n   * @param {Object} [context] Context object\n   */\n  on: function (eventName, eventHandler, context) {\n    this.handler.on(eventName, eventHandler, context);\n  },\n\n  /**\n   * Unbind event\n   * @param {string} eventName Event name\n   * @param {Function} [eventHandler] Handler function\n   */\n  off: function (eventName, eventHandler) {\n    this.handler.off(eventName, eventHandler);\n  },\n\n  /**\n   * Trigger event manually\n   *\n   * @param {string} eventName Event name\n   * @param {event=} event Event object\n   */\n  trigger: function (eventName, event) {\n    this.handler.trigger(eventName, event);\n  },\n\n  /**\n   * Clear all objects and the canvas.\n   */\n  clear: function () {\n    this.storage.delRoot();\n    this.painter.clear();\n  },\n\n  /**\n   * Dispose self.\n   */\n  dispose: function () {\n    this.animation.stop();\n    this.clear();\n    this.storage.dispose();\n    this.painter.dispose();\n    this.handler.dispose();\n    this.animation = this.storage = this.painter = this.handler = null;\n    delInstance(this.id);\n  }\n};\nexports.version = version;\nexports.init = init;\nexports.dispose = dispose;\nexports.getInstance = getInstance;\nexports.registerPainter = registerPainter;\n\n/***/ }),\n/* 323 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar matrix = __webpack_require__(89);\n\nvar vector = __webpack_require__(56);\n\n/**\n * 提供变换扩展\n * @module zrender/mixin/Transformable\n * @author pissang (https://www.github.com/pissang)\n */\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\n\nfunction isNotAroundZero(val) {\n  return val > EPSILON || val < -EPSILON;\n}\n/**\n * @alias module:zrender/mixin/Transformable\n * @constructor\n */\n\n\nvar Transformable = function (opts) {\n  opts = opts || {}; // If there are no given position, rotation, scale\n\n  if (!opts.position) {\n    /**\n     * 平移\n     * @type {Array.<number>}\n     * @default [0, 0]\n     */\n    this.position = [0, 0];\n  }\n\n  if (opts.rotation == null) {\n    /**\n     * 旋转\n     * @type {Array.<number>}\n     * @default 0\n     */\n    this.rotation = 0;\n  }\n\n  if (!opts.scale) {\n    /**\n     * 缩放\n     * @type {Array.<number>}\n     * @default [1, 1]\n     */\n    this.scale = [1, 1];\n  }\n  /**\n   * 旋转和缩放的原点\n   * @type {Array.<number>}\n   * @default null\n   */\n\n\n  this.origin = this.origin || null;\n};\n\nvar transformableProto = Transformable.prototype;\ntransformableProto.transform = null;\n/**\n * 判断是否需要有坐标变换\n * 如果有坐标变换, 则从position, rotation, scale以及父节点的transform计算出自身的transform矩阵\n */\n\ntransformableProto.needLocalTransform = function () {\n  return isNotAroundZero(this.rotation) || isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1]) || isNotAroundZero(this.scale[0] - 1) || isNotAroundZero(this.scale[1] - 1);\n};\n\nvar scaleTmp = [];\n\ntransformableProto.updateTransform = function () {\n  var parent = this.parent;\n  var parentHasTransform = parent && parent.transform;\n  var needLocalTransform = this.needLocalTransform();\n  var m = this.transform;\n\n  if (!(needLocalTransform || parentHasTransform)) {\n    m && mIdentity(m);\n    return;\n  }\n\n  m = m || matrix.create();\n\n  if (needLocalTransform) {\n    this.getLocalTransform(m);\n  } else {\n    mIdentity(m);\n  } // 应用父节点变换\n\n\n  if (parentHasTransform) {\n    if (needLocalTransform) {\n      matrix.mul(m, parent.transform, m);\n    } else {\n      matrix.copy(m, parent.transform);\n    }\n  } // 保存这个变换矩阵\n\n\n  this.transform = m;\n  var globalScaleRatio = this.globalScaleRatio;\n\n  if (globalScaleRatio != null && globalScaleRatio !== 1) {\n    this.getGlobalScale(scaleTmp);\n    var relX = scaleTmp[0] < 0 ? -1 : 1;\n    var relY = scaleTmp[1] < 0 ? -1 : 1;\n    var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n    var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n    m[0] *= sx;\n    m[1] *= sx;\n    m[2] *= sy;\n    m[3] *= sy;\n  }\n\n  this.invTransform = this.invTransform || matrix.create();\n  matrix.invert(this.invTransform, m);\n};\n\ntransformableProto.getLocalTransform = function (m) {\n  return Transformable.getLocalTransform(this, m);\n};\n/**\n * 将自己的transform应用到context上\n * @param {CanvasRenderingContext2D} ctx\n */\n\n\ntransformableProto.setTransform = function (ctx) {\n  var m = this.transform;\n  var dpr = ctx.dpr || 1;\n\n  if (m) {\n    ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n  } else {\n    ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n  }\n};\n\ntransformableProto.restoreTransform = function (ctx) {\n  var dpr = ctx.dpr || 1;\n  ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n};\n\nvar tmpTransform = [];\nvar originTransform = matrix.create();\n\ntransformableProto.setLocalTransform = function (m) {\n  if (!m) {\n    // TODO return or set identity?\n    return;\n  }\n\n  var sx = m[0] * m[0] + m[1] * m[1];\n  var sy = m[2] * m[2] + m[3] * m[3];\n  var position = this.position;\n  var scale = this.scale;\n\n  if (isNotAroundZero(sx - 1)) {\n    sx = Math.sqrt(sx);\n  }\n\n  if (isNotAroundZero(sy - 1)) {\n    sy = Math.sqrt(sy);\n  }\n\n  if (m[0] < 0) {\n    sx = -sx;\n  }\n\n  if (m[3] < 0) {\n    sy = -sy;\n  }\n\n  position[0] = m[4];\n  position[1] = m[5];\n  scale[0] = sx;\n  scale[1] = sy;\n  this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\n};\n/**\n * 分解`transform`矩阵到`position`, `rotation`, `scale`\n */\n\n\ntransformableProto.decomposeTransform = function () {\n  if (!this.transform) {\n    return;\n  }\n\n  var parent = this.parent;\n  var m = this.transform;\n\n  if (parent && parent.transform) {\n    // Get local transform and decompose them to position, scale, rotation\n    matrix.mul(tmpTransform, parent.invTransform, m);\n    m = tmpTransform;\n  }\n\n  var origin = this.origin;\n\n  if (origin && (origin[0] || origin[1])) {\n    originTransform[4] = origin[0];\n    originTransform[5] = origin[1];\n    matrix.mul(tmpTransform, m, originTransform);\n    tmpTransform[4] -= origin[0];\n    tmpTransform[5] -= origin[1];\n    m = tmpTransform;\n  }\n\n  this.setLocalTransform(m);\n};\n/**\n * Get global scale\n * @return {Array.<number>}\n */\n\n\ntransformableProto.getGlobalScale = function (out) {\n  var m = this.transform;\n  out = out || [];\n\n  if (!m) {\n    out[0] = 1;\n    out[1] = 1;\n    return out;\n  }\n\n  out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n  out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n\n  if (m[0] < 0) {\n    out[0] = -out[0];\n  }\n\n  if (m[3] < 0) {\n    out[1] = -out[1];\n  }\n\n  return out;\n};\n/**\n * 变换坐标位置到 shape 的局部坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.<number>}\n */\n\n\ntransformableProto.transformCoordToLocal = function (x, y) {\n  var v2 = [x, y];\n  var invTransform = this.invTransform;\n\n  if (invTransform) {\n    vector.applyTransform(v2, v2, invTransform);\n  }\n\n  return v2;\n};\n/**\n * 变换局部坐标位置到全局坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.<number>}\n */\n\n\ntransformableProto.transformCoordToGlobal = function (x, y) {\n  var v2 = [x, y];\n  var transform = this.transform;\n\n  if (transform) {\n    vector.applyTransform(v2, v2, transform);\n  }\n\n  return v2;\n};\n/**\n * @static\n * @param {Object} target\n * @param {Array.<number>} target.origin\n * @param {number} target.rotation\n * @param {Array.<number>} target.position\n * @param {Array.<number>} [m]\n */\n\n\nTransformable.getLocalTransform = function (target, m) {\n  m = m || [];\n  mIdentity(m);\n  var origin = target.origin;\n  var scale = target.scale || [1, 1];\n  var rotation = target.rotation || 0;\n  var position = target.position || [0, 0];\n\n  if (origin) {\n    // Translate to origin\n    m[4] -= origin[0];\n    m[5] -= origin[1];\n  }\n\n  matrix.scale(m, m, scale);\n\n  if (rotation) {\n    matrix.rotate(m, m, rotation);\n  }\n\n  if (origin) {\n    // Translate back from origin\n    m[4] += origin[0];\n    m[5] += origin[1];\n  }\n\n  m[4] += position[0];\n  m[5] += position[1];\n  return m;\n};\n\nvar _default = Transformable;\nmodule.exports = _default;\n\n/***/ }),\n/* 324 */\n/***/ (function(module, exports) {\n\nvar dpr = 1; // If in browser environment\n\nif (typeof window !== 'undefined') {\n  dpr = Math.max(window.devicePixelRatio || 1, 1);\n}\n/**\n * config默认配置项\n * @exports zrender/config\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n */\n\n/**\n * Debug log mode:\n * 0: Do nothing, for release.\n * 1: console.error, for debug.\n */\n\n\nvar debugMode = 0; // retina 屏幕优化\n\nvar devicePixelRatio = dpr;\nexports.debugMode = debugMode;\nexports.devicePixelRatio = devicePixelRatio;\n\n/***/ }),\n/* 325 */\n/***/ (function(module, exports) {\n\nvar ContextCachedBy = {\n  NONE: 0,\n  STYLE_BIND: 1,\n  PLAIN_TEXT: 2\n}; // Avoid confused with 0/false.\n\nvar WILL_BE_RESTORED = 9;\nexports.ContextCachedBy = ContextCachedBy;\nexports.WILL_BE_RESTORED = WILL_BE_RESTORED;\n\n/***/ }),\n/* 326 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _util = __webpack_require__(2);\n\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar each = _util.each;\nvar normalizeCssArray = _util.normalizeCssArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\n\nvar textContain = __webpack_require__(108);\n\nvar roundRectHelper = __webpack_require__(555);\n\nvar imageHelper = __webpack_require__(402);\n\nvar fixShadow = __webpack_require__(551);\n\nvar _constant = __webpack_require__(325);\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar WILL_BE_RESTORED = _constant.WILL_BE_RESTORED;\nvar DEFAULT_FONT = textContain.DEFAULT_FONT; // TODO: Have not support 'start', 'end' yet.\n\nvar VALID_TEXT_ALIGN = {\n  left: 1,\n  right: 1,\n  center: 1\n};\nvar VALID_TEXT_VERTICAL_ALIGN = {\n  top: 1,\n  bottom: 1,\n  middle: 1\n}; // Different from `STYLE_COMMON_PROPS` of `graphic/Style`,\n// the default value of shadowColor is `'transparent'`.\n\nvar SHADOW_STYLE_COMMON_PROPS = [['textShadowBlur', 'shadowBlur', 0], ['textShadowOffsetX', 'shadowOffsetX', 0], ['textShadowOffsetY', 'shadowOffsetY', 0], ['textShadowColor', 'shadowColor', 'transparent']];\nvar _tmpTextPositionResult = {};\nvar _tmpBoxPositionResult = {};\n/**\n * @param {module:zrender/graphic/Style} style\n * @return {module:zrender/graphic/Style} The input style.\n */\n\nfunction normalizeTextStyle(style) {\n  normalizeStyle(style);\n  each(style.rich, normalizeStyle);\n  return style;\n}\n\nfunction normalizeStyle(style) {\n  if (style) {\n    style.font = textContain.makeFont(style);\n    var textAlign = style.textAlign;\n    textAlign === 'middle' && (textAlign = 'center');\n    style.textAlign = textAlign == null || VALID_TEXT_ALIGN[textAlign] ? textAlign : 'left'; // Compatible with textBaseline.\n\n    var textVerticalAlign = style.textVerticalAlign || style.textBaseline;\n    textVerticalAlign === 'center' && (textVerticalAlign = 'middle');\n    style.textVerticalAlign = textVerticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[textVerticalAlign] ? textVerticalAlign : 'top';\n    var textPadding = style.textPadding;\n\n    if (textPadding) {\n      style.textPadding = normalizeCssArray(style.textPadding);\n    }\n  }\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {string} text\n * @param {module:zrender/graphic/Style} style\n * @param {Object|boolean} [rect] {x, y, width, height}\n *                  If set false, rect text is not used.\n * @param {Element|module:zrender/graphic/helper/constant.WILL_BE_RESTORED} [prevEl] For ctx prop cache.\n */\n\n\nfunction renderText(hostEl, ctx, text, style, rect, prevEl) {\n  style.rich ? renderRichText(hostEl, ctx, text, style, rect, prevEl) : renderPlainText(hostEl, ctx, text, style, rect, prevEl);\n} // Avoid setting to ctx according to prevEl if possible for\n// performance in scenarios of large amount text.\n\n\nfunction renderPlainText(hostEl, ctx, text, style, rect, prevEl) {\n  'use strict';\n\n  var needDrawBg = needDrawBackground(style);\n  var prevStyle;\n  var checkCache = false;\n  var cachedByMe = ctx.__attrCachedBy === ContextCachedBy.PLAIN_TEXT; // Only take and check cache for `Text` el, but not RectText.\n\n  if (prevEl !== WILL_BE_RESTORED) {\n    if (prevEl) {\n      prevStyle = prevEl.style;\n      checkCache = !needDrawBg && cachedByMe && prevStyle;\n    } // Prevent from using cache in `Style::bind`, because of the case:\n    // ctx property is modified by other properties than `Style::bind`\n    // used, and Style::bind is called next.\n\n\n    ctx.__attrCachedBy = needDrawBg ? ContextCachedBy.NONE : ContextCachedBy.PLAIN_TEXT;\n  } // Since this will be restored, prevent from using these props to check cache in the next\n  // entering of this method. But do not need to clear other cache like `Style::bind`.\n  else if (cachedByMe) {\n      ctx.__attrCachedBy = ContextCachedBy.NONE;\n    }\n\n  var styleFont = style.font || DEFAULT_FONT; // PENDING\n  // Only `Text` el set `font` and keep it (`RectText` will restore). So theoretically\n  // we can make font cache on ctx, which can cache for text el that are discontinuous.\n  // But layer save/restore needed to be considered.\n  // if (styleFont !== ctx.__fontCache) {\n  //     ctx.font = styleFont;\n  //     if (prevEl !== WILL_BE_RESTORED) {\n  //         ctx.__fontCache = styleFont;\n  //     }\n  // }\n\n  if (!checkCache || styleFont !== (prevStyle.font || DEFAULT_FONT)) {\n    ctx.font = styleFont;\n  } // Use the final font from context-2d, because the final\n  // font might not be the style.font when it is illegal.\n  // But get `ctx.font` might be time consuming.\n\n\n  var computedFont = hostEl.__computedFont;\n\n  if (hostEl.__styleFont !== styleFont) {\n    hostEl.__styleFont = styleFont;\n    computedFont = hostEl.__computedFont = ctx.font;\n  }\n\n  var textPadding = style.textPadding;\n  var textLineHeight = style.textLineHeight;\n  var contentBlock = hostEl.__textCotentBlock;\n\n  if (!contentBlock || hostEl.__dirtyText) {\n    contentBlock = hostEl.__textCotentBlock = textContain.parsePlainText(text, computedFont, textPadding, textLineHeight, style.truncate);\n  }\n\n  var outerHeight = contentBlock.outerHeight;\n  var textLines = contentBlock.lines;\n  var lineHeight = contentBlock.lineHeight;\n  var boxPos = getBoxPosition(_tmpBoxPositionResult, hostEl, style, rect);\n  var baseX = boxPos.baseX;\n  var baseY = boxPos.baseY;\n  var textAlign = boxPos.textAlign || 'left';\n  var textVerticalAlign = boxPos.textVerticalAlign; // Origin of textRotation should be the base point of text drawing.\n\n  applyTextRotation(ctx, style, rect, baseX, baseY);\n  var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n  var textX = baseX;\n  var textY = boxY;\n\n  if (needDrawBg || textPadding) {\n    // Consider performance, do not call getTextWidth util necessary.\n    var textWidth = textContain.getWidth(text, computedFont);\n    var outerWidth = textWidth;\n    textPadding && (outerWidth += textPadding[1] + textPadding[3]);\n    var boxX = textContain.adjustTextX(baseX, outerWidth, textAlign);\n    needDrawBg && drawBackground(hostEl, ctx, style, boxX, boxY, outerWidth, outerHeight);\n\n    if (textPadding) {\n      textX = getTextXForPadding(baseX, textAlign, textPadding);\n      textY += textPadding[0];\n    }\n  } // Always set textAlign and textBase line, because it is difficute to calculate\n  // textAlign from prevEl, and we dont sure whether textAlign will be reset if\n  // font set happened.\n\n\n  ctx.textAlign = textAlign; // Force baseline to be \"middle\". Otherwise, if using \"top\", the\n  // text will offset downward a little bit in font \"Microsoft YaHei\".\n\n  ctx.textBaseline = 'middle'; // Set text opacity\n\n  ctx.globalAlpha = style.opacity || 1; // Always set shadowBlur and shadowOffset to avoid leak from displayable.\n\n  for (var i = 0; i < SHADOW_STYLE_COMMON_PROPS.length; i++) {\n    var propItem = SHADOW_STYLE_COMMON_PROPS[i];\n    var styleProp = propItem[0];\n    var ctxProp = propItem[1];\n    var val = style[styleProp];\n\n    if (!checkCache || val !== prevStyle[styleProp]) {\n      ctx[ctxProp] = fixShadow(ctx, ctxProp, val || propItem[2]);\n    }\n  } // `textBaseline` is set as 'middle'.\n\n\n  textY += lineHeight / 2;\n  var textStrokeWidth = style.textStrokeWidth;\n  var textStrokeWidthPrev = checkCache ? prevStyle.textStrokeWidth : null;\n  var strokeWidthChanged = !checkCache || textStrokeWidth !== textStrokeWidthPrev;\n  var strokeChanged = !checkCache || strokeWidthChanged || style.textStroke !== prevStyle.textStroke;\n  var textStroke = getStroke(style.textStroke, textStrokeWidth);\n  var textFill = getFill(style.textFill);\n\n  if (textStroke) {\n    if (strokeWidthChanged) {\n      ctx.lineWidth = textStrokeWidth;\n    }\n\n    if (strokeChanged) {\n      ctx.strokeStyle = textStroke;\n    }\n  }\n\n  if (textFill) {\n    if (!checkCache || style.textFill !== prevStyle.textFill) {\n      ctx.fillStyle = textFill;\n    }\n  } // Optimize simply, in most cases only one line exists.\n\n\n  if (textLines.length === 1) {\n    // Fill after stroke so the outline will not cover the main part.\n    textStroke && ctx.strokeText(textLines[0], textX, textY);\n    textFill && ctx.fillText(textLines[0], textX, textY);\n  } else {\n    for (var i = 0; i < textLines.length; i++) {\n      // Fill after stroke so the outline will not cover the main part.\n      textStroke && ctx.strokeText(textLines[i], textX, textY);\n      textFill && ctx.fillText(textLines[i], textX, textY);\n      textY += lineHeight;\n    }\n  }\n}\n\nfunction renderRichText(hostEl, ctx, text, style, rect, prevEl) {\n  // Do not do cache for rich text because of the complexity.\n  // But `RectText` this will be restored, do not need to clear other cache like `Style::bind`.\n  if (prevEl !== WILL_BE_RESTORED) {\n    ctx.__attrCachedBy = ContextCachedBy.NONE;\n  }\n\n  var contentBlock = hostEl.__textCotentBlock;\n\n  if (!contentBlock || hostEl.__dirtyText) {\n    contentBlock = hostEl.__textCotentBlock = textContain.parseRichText(text, style);\n  }\n\n  drawRichText(hostEl, ctx, contentBlock, style, rect);\n}\n\nfunction drawRichText(hostEl, ctx, contentBlock, style, rect) {\n  var contentWidth = contentBlock.width;\n  var outerWidth = contentBlock.outerWidth;\n  var outerHeight = contentBlock.outerHeight;\n  var textPadding = style.textPadding;\n  var boxPos = getBoxPosition(_tmpBoxPositionResult, hostEl, style, rect);\n  var baseX = boxPos.baseX;\n  var baseY = boxPos.baseY;\n  var textAlign = boxPos.textAlign;\n  var textVerticalAlign = boxPos.textVerticalAlign; // Origin of textRotation should be the base point of text drawing.\n\n  applyTextRotation(ctx, style, rect, baseX, baseY);\n  var boxX = textContain.adjustTextX(baseX, outerWidth, textAlign);\n  var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n  var xLeft = boxX;\n  var lineTop = boxY;\n\n  if (textPadding) {\n    xLeft += textPadding[3];\n    lineTop += textPadding[0];\n  }\n\n  var xRight = xLeft + contentWidth;\n  needDrawBackground(style) && drawBackground(hostEl, ctx, style, boxX, boxY, outerWidth, outerHeight);\n\n  for (var i = 0; i < contentBlock.lines.length; i++) {\n    var line = contentBlock.lines[i];\n    var tokens = line.tokens;\n    var tokenCount = tokens.length;\n    var lineHeight = line.lineHeight;\n    var usedWidth = line.width;\n    var leftIndex = 0;\n    var lineXLeft = xLeft;\n    var lineXRight = xRight;\n    var rightIndex = tokenCount - 1;\n    var token;\n\n    while (leftIndex < tokenCount && (token = tokens[leftIndex], !token.textAlign || token.textAlign === 'left')) {\n      placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXLeft, 'left');\n      usedWidth -= token.width;\n      lineXLeft += token.width;\n      leftIndex++;\n    }\n\n    while (rightIndex >= 0 && (token = tokens[rightIndex], token.textAlign === 'right')) {\n      placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXRight, 'right');\n      usedWidth -= token.width;\n      lineXRight -= token.width;\n      rightIndex--;\n    } // The other tokens are placed as textAlign 'center' if there is enough space.\n\n\n    lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - usedWidth) / 2;\n\n    while (leftIndex <= rightIndex) {\n      token = tokens[leftIndex]; // Consider width specified by user, use 'center' rather than 'left'.\n\n      placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center');\n      lineXLeft += token.width;\n      leftIndex++;\n    }\n\n    lineTop += lineHeight;\n  }\n}\n\nfunction applyTextRotation(ctx, style, rect, x, y) {\n  // textRotation only apply in RectText.\n  if (rect && style.textRotation) {\n    var origin = style.textOrigin;\n\n    if (origin === 'center') {\n      x = rect.width / 2 + rect.x;\n      y = rect.height / 2 + rect.y;\n    } else if (origin) {\n      x = origin[0] + rect.x;\n      y = origin[1] + rect.y;\n    }\n\n    ctx.translate(x, y); // Positive: anticlockwise\n\n    ctx.rotate(-style.textRotation);\n    ctx.translate(-x, -y);\n  }\n}\n\nfunction placeToken(hostEl, ctx, token, style, lineHeight, lineTop, x, textAlign) {\n  var tokenStyle = style.rich[token.styleName] || {};\n  tokenStyle.text = token.text; // 'ctx.textBaseline' is always set as 'middle', for sake of\n  // the bias of \"Microsoft YaHei\".\n\n  var textVerticalAlign = token.textVerticalAlign;\n  var y = lineTop + lineHeight / 2;\n\n  if (textVerticalAlign === 'top') {\n    y = lineTop + token.height / 2;\n  } else if (textVerticalAlign === 'bottom') {\n    y = lineTop + lineHeight - token.height / 2;\n  }\n\n  !token.isLineHolder && needDrawBackground(tokenStyle) && drawBackground(hostEl, ctx, tokenStyle, textAlign === 'right' ? x - token.width : textAlign === 'center' ? x - token.width / 2 : x, y - token.height / 2, token.width, token.height);\n  var textPadding = token.textPadding;\n\n  if (textPadding) {\n    x = getTextXForPadding(x, textAlign, textPadding);\n    y -= token.height / 2 - textPadding[2] - token.textHeight / 2;\n  }\n\n  setCtx(ctx, 'shadowBlur', retrieve3(tokenStyle.textShadowBlur, style.textShadowBlur, 0));\n  setCtx(ctx, 'shadowColor', tokenStyle.textShadowColor || style.textShadowColor || 'transparent');\n  setCtx(ctx, 'shadowOffsetX', retrieve3(tokenStyle.textShadowOffsetX, style.textShadowOffsetX, 0));\n  setCtx(ctx, 'shadowOffsetY', retrieve3(tokenStyle.textShadowOffsetY, style.textShadowOffsetY, 0));\n  setCtx(ctx, 'textAlign', textAlign); // Force baseline to be \"middle\". Otherwise, if using \"top\", the\n  // text will offset downward a little bit in font \"Microsoft YaHei\".\n\n  setCtx(ctx, 'textBaseline', 'middle');\n  setCtx(ctx, 'font', token.font || DEFAULT_FONT);\n  var textStroke = getStroke(tokenStyle.textStroke || style.textStroke, textStrokeWidth);\n  var textFill = getFill(tokenStyle.textFill || style.textFill);\n  var textStrokeWidth = retrieve2(tokenStyle.textStrokeWidth, style.textStrokeWidth); // Fill after stroke so the outline will not cover the main part.\n\n  if (textStroke) {\n    setCtx(ctx, 'lineWidth', textStrokeWidth);\n    setCtx(ctx, 'strokeStyle', textStroke);\n    ctx.strokeText(token.text, x, y);\n  }\n\n  if (textFill) {\n    setCtx(ctx, 'fillStyle', textFill);\n    ctx.fillText(token.text, x, y);\n  }\n}\n\nfunction needDrawBackground(style) {\n  return !!(style.textBackgroundColor || style.textBorderWidth && style.textBorderColor);\n} // style: {textBackgroundColor, textBorderWidth, textBorderColor, textBorderRadius, text}\n// shape: {x, y, width, height}\n\n\nfunction drawBackground(hostEl, ctx, style, x, y, width, height) {\n  var textBackgroundColor = style.textBackgroundColor;\n  var textBorderWidth = style.textBorderWidth;\n  var textBorderColor = style.textBorderColor;\n  var isPlainBg = isString(textBackgroundColor);\n  setCtx(ctx, 'shadowBlur', style.textBoxShadowBlur || 0);\n  setCtx(ctx, 'shadowColor', style.textBoxShadowColor || 'transparent');\n  setCtx(ctx, 'shadowOffsetX', style.textBoxShadowOffsetX || 0);\n  setCtx(ctx, 'shadowOffsetY', style.textBoxShadowOffsetY || 0);\n\n  if (isPlainBg || textBorderWidth && textBorderColor) {\n    ctx.beginPath();\n    var textBorderRadius = style.textBorderRadius;\n\n    if (!textBorderRadius) {\n      ctx.rect(x, y, width, height);\n    } else {\n      roundRectHelper.buildPath(ctx, {\n        x: x,\n        y: y,\n        width: width,\n        height: height,\n        r: textBorderRadius\n      });\n    }\n\n    ctx.closePath();\n  }\n\n  if (isPlainBg) {\n    setCtx(ctx, 'fillStyle', textBackgroundColor);\n\n    if (style.fillOpacity != null) {\n      var originalGlobalAlpha = ctx.globalAlpha;\n      ctx.globalAlpha = style.fillOpacity * style.opacity;\n      ctx.fill();\n      ctx.globalAlpha = originalGlobalAlpha;\n    } else {\n      ctx.fill();\n    }\n  } else if (isObject(textBackgroundColor)) {\n    var image = textBackgroundColor.image;\n    image = imageHelper.createOrUpdateImage(image, null, hostEl, onBgImageLoaded, textBackgroundColor);\n\n    if (image && imageHelper.isImageReady(image)) {\n      ctx.drawImage(image, x, y, width, height);\n    }\n  }\n\n  if (textBorderWidth && textBorderColor) {\n    setCtx(ctx, 'lineWidth', textBorderWidth);\n    setCtx(ctx, 'strokeStyle', textBorderColor);\n\n    if (style.strokeOpacity != null) {\n      var originalGlobalAlpha = ctx.globalAlpha;\n      ctx.globalAlpha = style.strokeOpacity * style.opacity;\n      ctx.stroke();\n      ctx.globalAlpha = originalGlobalAlpha;\n    } else {\n      ctx.stroke();\n    }\n  }\n}\n\nfunction onBgImageLoaded(image, textBackgroundColor) {\n  // Replace image, so that `contain/text.js#parseRichText`\n  // will get correct result in next tick.\n  textBackgroundColor.image = image;\n}\n\nfunction getBoxPosition(out, hostEl, style, rect) {\n  var baseX = style.x || 0;\n  var baseY = style.y || 0;\n  var textAlign = style.textAlign;\n  var textVerticalAlign = style.textVerticalAlign; // Text position represented by coord\n\n  if (rect) {\n    var textPosition = style.textPosition;\n\n    if (textPosition instanceof Array) {\n      // Percent\n      baseX = rect.x + parsePercent(textPosition[0], rect.width);\n      baseY = rect.y + parsePercent(textPosition[1], rect.height);\n    } else {\n      var res = hostEl && hostEl.calculateTextPosition ? hostEl.calculateTextPosition(_tmpTextPositionResult, style, rect) : textContain.calculateTextPosition(_tmpTextPositionResult, style, rect);\n      baseX = res.x;\n      baseY = res.y; // Default align and baseline when has textPosition\n\n      textAlign = textAlign || res.textAlign;\n      textVerticalAlign = textVerticalAlign || res.textVerticalAlign;\n    } // textOffset is only support in RectText, otherwise\n    // we have to adjust boundingRect for textOffset.\n\n\n    var textOffset = style.textOffset;\n\n    if (textOffset) {\n      baseX += textOffset[0];\n      baseY += textOffset[1];\n    }\n  }\n\n  out = out || {};\n  out.baseX = baseX;\n  out.baseY = baseY;\n  out.textAlign = textAlign;\n  out.textVerticalAlign = textVerticalAlign;\n  return out;\n}\n\nfunction setCtx(ctx, prop, value) {\n  ctx[prop] = fixShadow(ctx, prop, value);\n  return ctx[prop];\n}\n/**\n * @param {string} [stroke] If specified, do not check style.textStroke.\n * @param {string} [lineWidth] If specified, do not check style.textStroke.\n * @param {number} style\n */\n\n\nfunction getStroke(stroke, lineWidth) {\n  return stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none' ? null // TODO pattern and gradient?\n  : stroke.image || stroke.colorStops ? '#000' : stroke;\n}\n\nfunction getFill(fill) {\n  return fill == null || fill === 'none' ? null // TODO pattern and gradient?\n  : fill.image || fill.colorStops ? '#000' : fill;\n}\n\nfunction parsePercent(value, maxValue) {\n  if (typeof value === 'string') {\n    if (value.lastIndexOf('%') >= 0) {\n      return parseFloat(value) / 100 * maxValue;\n    }\n\n    return parseFloat(value);\n  }\n\n  return value;\n}\n\nfunction getTextXForPadding(x, textAlign, textPadding) {\n  return textAlign === 'right' ? x - textPadding[1] : textAlign === 'center' ? x + textPadding[3] / 2 - textPadding[1] / 2 : x + textPadding[3];\n}\n/**\n * @param {string} text\n * @param {module:zrender/Style} style\n * @return {boolean}\n */\n\n\nfunction needDrawText(text, style) {\n  return text != null && (text || style.textBackgroundColor || style.textBorderWidth && style.textBorderColor || style.textPadding);\n}\n\nexports.normalizeTextStyle = normalizeTextStyle;\nexports.renderText = renderText;\nexports.getBoxPosition = getBoxPosition;\nexports.getStroke = getStroke;\nexports.getFill = getFill;\nexports.parsePercent = parsePercent;\nexports.needDrawText = needDrawText;\n\n/***/ }),\n/* 327 */\n/***/ (function(module, exports) {\n\n/**\n * @param {Array.<Object>} colorStops\n */\nvar Gradient = function (colorStops) {\n  this.colorStops = colorStops || [];\n};\n\nGradient.prototype = {\n  constructor: Gradient,\n  addColorStop: function (offset, color) {\n    this.colorStops.push({\n      offset: offset,\n      color: color\n    });\n  }\n};\nvar _default = Gradient;\nmodule.exports = _default;\n\n/***/ }),\n/* 328 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Group = __webpack_require__(177);\n\nvar componentUtil = __webpack_require__(256);\n\nvar clazzUtil = __webpack_require__(143);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar Component = function () {\n  /**\n   * @type {module:zrender/container/Group}\n   * @readOnly\n   */\n  this.group = new Group();\n  /**\n   * @type {string}\n   * @readOnly\n   */\n\n  this.uid = componentUtil.getUID('viewComponent');\n};\n\nComponent.prototype = {\n  constructor: Component,\n  init: function (ecModel, api) {},\n  render: function (componentModel, ecModel, api, payload) {},\n  dispose: function () {},\n\n  /**\n   * @param {string} eventType\n   * @param {Object} query\n   * @param {module:zrender/Element} targetEl\n   * @param {Object} packedEvent\n   * @return {boolen} Pass only when return `true`.\n   */\n  filterForExposedEvent: null\n};\nvar componentProto = Component.prototype;\n\ncomponentProto.updateView = componentProto.updateLayout = componentProto.updateVisual = function (seriesModel, ecModel, api, payload) {// Do nothing;\n}; // Enable Component.extend.\n\n\nclazzUtil.enableClassExtend(Component); // Enable capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Component, {\n  registerWhenExtend: true\n});\nvar _default = Component;\nmodule.exports = _default;\n\n/***/ }),\n/* 329 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar clazzUtil = __webpack_require__(143);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * // Scale class management\n * @module echarts/scale/Scale\n */\n\n/**\n * @param {Object} [setting]\n */\nfunction Scale(setting) {\n  this._setting = setting || {};\n  /**\n   * Extent\n   * @type {Array.<number>}\n   * @protected\n   */\n\n  this._extent = [Infinity, -Infinity];\n  /**\n   * Step is calculated in adjustExtent\n   * @type {Array.<number>}\n   * @protected\n   */\n\n  this._interval = 0;\n  this.init && this.init.apply(this, arguments);\n}\n/**\n * Parse input val to valid inner number.\n * @param {*} val\n * @return {number}\n */\n\n\nScale.prototype.parse = function (val) {\n  // Notice: This would be a trap here, If the implementation\n  // of this method depends on extent, and this method is used\n  // before extent set (like in dataZoom), it would be wrong.\n  // Nevertheless, parse does not depend on extent generally.\n  return val;\n};\n\nScale.prototype.getSetting = function (name) {\n  return this._setting[name];\n};\n\nScale.prototype.contain = function (val) {\n  var extent = this._extent;\n  return val >= extent[0] && val <= extent[1];\n};\n/**\n * Normalize value to linear [0, 1], return 0.5 if extent span is 0\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.normalize = function (val) {\n  var extent = this._extent;\n\n  if (extent[1] === extent[0]) {\n    return 0.5;\n  }\n\n  return (val - extent[0]) / (extent[1] - extent[0]);\n};\n/**\n * Scale normalized value\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.scale = function (val) {\n  var extent = this._extent;\n  return val * (extent[1] - extent[0]) + extent[0];\n};\n/**\n * Set extent from data\n * @param {Array.<number>} other\n */\n\n\nScale.prototype.unionExtent = function (other) {\n  var extent = this._extent;\n  other[0] < extent[0] && (extent[0] = other[0]);\n  other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n  // this.setExtent(extent[0], extent[1]);\n};\n/**\n * Set extent from data\n * @param {module:echarts/data/List} data\n * @param {string} dim\n */\n\n\nScale.prototype.unionExtentFromData = function (data, dim) {\n  this.unionExtent(data.getApproximateExtent(dim));\n};\n/**\n * Get extent\n * @return {Array.<number>}\n */\n\n\nScale.prototype.getExtent = function () {\n  return this._extent.slice();\n};\n/**\n * Set extent\n * @param {number} start\n * @param {number} end\n */\n\n\nScale.prototype.setExtent = function (start, end) {\n  var thisExtent = this._extent;\n\n  if (!isNaN(start)) {\n    thisExtent[0] = start;\n  }\n\n  if (!isNaN(end)) {\n    thisExtent[1] = end;\n  }\n};\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\nScale.prototype.isBlank = function () {\n  return this._isBlank;\n},\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\nScale.prototype.setBlank = function (isBlank) {\n  this._isBlank = isBlank;\n};\n/**\n * @abstract\n * @param {*} tick\n * @return {string} label of the tick.\n */\n\nScale.prototype.getLabel = null;\nclazzUtil.enableClassExtend(Scale);\nclazzUtil.enableClassManagement(Scale, {\n  registerWhenExtend: true\n});\nvar _default = Scale;\nmodule.exports = _default;\n\n/***/ }),\n/* 330 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar numberUtil = __webpack_require__(26);\n\nvar formatUtil = __webpack_require__(50);\n\nvar Scale = __webpack_require__(329);\n\nvar helper = __webpack_require__(576);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Interval scale\n * @module echarts/scale/Interval\n */\nvar roundNumber = numberUtil.round;\n/**\n * @alias module:echarts/coord/scale/Interval\n * @constructor\n */\n\nvar IntervalScale = Scale.extend({\n  type: 'interval',\n  _interval: 0,\n  _intervalPrecision: 2,\n  setExtent: function (start, end) {\n    var thisExtent = this._extent; //start,end may be a Number like '25',so...\n\n    if (!isNaN(start)) {\n      thisExtent[0] = parseFloat(start);\n    }\n\n    if (!isNaN(end)) {\n      thisExtent[1] = parseFloat(end);\n    }\n  },\n  unionExtent: function (other) {\n    var extent = this._extent;\n    other[0] < extent[0] && (extent[0] = other[0]);\n    other[1] > extent[1] && (extent[1] = other[1]); // unionExtent may called by it's sub classes\n\n    IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);\n  },\n\n  /**\n   * Get interval\n   */\n  getInterval: function () {\n    return this._interval;\n  },\n\n  /**\n   * Set interval\n   */\n  setInterval: function (interval) {\n    this._interval = interval; // Dropped auto calculated niceExtent and use user setted extent\n    // We assume user wan't to set both interval, min, max to get a better result\n\n    this._niceExtent = this._extent.slice();\n    this._intervalPrecision = helper.getIntervalPrecision(interval);\n  },\n\n  /**\n   * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n   * @return {Array.<number>}\n   */\n  getTicks: function (expandToNicedExtent) {\n    var interval = this._interval;\n    var extent = this._extent;\n    var niceTickExtent = this._niceExtent;\n    var intervalPrecision = this._intervalPrecision;\n    var ticks = []; // If interval is 0, return [];\n\n    if (!interval) {\n      return ticks;\n    } // Consider this case: using dataZoom toolbox, zoom and zoom.\n\n\n    var safeLimit = 10000;\n\n    if (extent[0] < niceTickExtent[0]) {\n      if (expandToNicedExtent) {\n        ticks.push(roundNumber(niceTickExtent[0] - interval, intervalPrecision));\n      } else {\n        ticks.push(extent[0]);\n      }\n    }\n\n    var tick = niceTickExtent[0];\n\n    while (tick <= niceTickExtent[1]) {\n      ticks.push(tick); // Avoid rounding error\n\n      tick = roundNumber(tick + interval, intervalPrecision);\n\n      if (tick === ticks[ticks.length - 1]) {\n        // Consider out of safe float point, e.g.,\n        // -3711126.9907707 + 2e-10 === -3711126.9907707\n        break;\n      }\n\n      if (ticks.length > safeLimit) {\n        return [];\n      }\n    } // Consider this case: the last item of ticks is smaller\n    // than niceTickExtent[1] and niceTickExtent[1] === extent[1].\n\n\n    var lastNiceTick = ticks.length ? ticks[ticks.length - 1] : niceTickExtent[1];\n\n    if (extent[1] > lastNiceTick) {\n      if (expandToNicedExtent) {\n        ticks.push(roundNumber(lastNiceTick + interval, intervalPrecision));\n      } else {\n        ticks.push(extent[1]);\n      }\n    }\n\n    return ticks;\n  },\n\n  /**\n   * @param {number} [splitNumber=5]\n   * @return {Array.<Array.<number>>}\n   */\n  getMinorTicks: function (splitNumber) {\n    var ticks = this.getTicks(true);\n    var minorTicks = [];\n    var extent = this.getExtent();\n\n    for (var i = 1; i < ticks.length; i++) {\n      var nextTick = ticks[i];\n      var prevTick = ticks[i - 1];\n      var count = 0;\n      var minorTicksGroup = [];\n      var interval = nextTick - prevTick;\n      var minorInterval = interval / splitNumber;\n\n      while (count < splitNumber - 1) {\n        var minorTick = numberUtil.round(prevTick + (count + 1) * minorInterval); // For the first and last interval. The count may be less than splitNumber.\n\n        if (minorTick > extent[0] && minorTick < extent[1]) {\n          minorTicksGroup.push(minorTick);\n        }\n\n        count++;\n      }\n\n      minorTicks.push(minorTicksGroup);\n    }\n\n    return minorTicks;\n  },\n\n  /**\n   * @param {number} data\n   * @param {Object} [opt]\n   * @param {number|string} [opt.precision] If 'auto', use nice presision.\n   * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.\n   * @return {string}\n   */\n  getLabel: function (data, opt) {\n    if (data == null) {\n      return '';\n    }\n\n    var precision = opt && opt.precision;\n\n    if (precision == null) {\n      precision = numberUtil.getPrecisionSafe(data) || 0;\n    } else if (precision === 'auto') {\n      // Should be more precise then tick.\n      precision = this._intervalPrecision;\n    } // (1) If `precision` is set, 12.005 should be display as '12.00500'.\n    // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'.\n\n\n    data = roundNumber(data, precision, true);\n    return formatUtil.addCommas(data);\n  },\n\n  /**\n   * Update interval and extent of intervals for nice ticks\n   *\n   * @param {number} [splitNumber = 5] Desired number of ticks\n   * @param {number} [minInterval]\n   * @param {number} [maxInterval]\n   */\n  niceTicks: function (splitNumber, minInterval, maxInterval) {\n    splitNumber = splitNumber || 5;\n    var extent = this._extent;\n    var span = extent[1] - extent[0];\n\n    if (!isFinite(span)) {\n      return;\n    } // User may set axis min 0 and data are all negative\n    // FIXME If it needs to reverse ?\n\n\n    if (span < 0) {\n      span = -span;\n      extent.reverse();\n    }\n\n    var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\n    this._intervalPrecision = result.intervalPrecision;\n    this._interval = result.interval;\n    this._niceExtent = result.niceTickExtent;\n  },\n\n  /**\n   * Nice extent.\n   * @param {Object} opt\n   * @param {number} [opt.splitNumber = 5] Given approx tick number\n   * @param {boolean} [opt.fixMin=false]\n   * @param {boolean} [opt.fixMax=false]\n   * @param {boolean} [opt.minInterval]\n   * @param {boolean} [opt.maxInterval]\n   */\n  niceExtent: function (opt) {\n    var extent = this._extent; // If extent start and end are same, expand them\n\n    if (extent[0] === extent[1]) {\n      if (extent[0] !== 0) {\n        // Expand extent\n        var expandSize = extent[0]; // In the fowllowing case\n        //      Axis has been fixed max 100\n        //      Plus data are all 100 and axis extent are [100, 100].\n        // Extend to the both side will cause expanded max is larger than fixed max.\n        // So only expand to the smaller side.\n\n        if (!opt.fixMax) {\n          extent[1] += expandSize / 2;\n          extent[0] -= expandSize / 2;\n        } else {\n          extent[0] -= expandSize / 2;\n        }\n      } else {\n        extent[1] = 1;\n      }\n    }\n\n    var span = extent[1] - extent[0]; // If there are no data and extent are [Infinity, -Infinity]\n\n    if (!isFinite(span)) {\n      extent[0] = 0;\n      extent[1] = 1;\n    }\n\n    this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n    var interval = this._interval;\n\n    if (!opt.fixMin) {\n      extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval);\n    }\n\n    if (!opt.fixMax) {\n      extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval);\n    }\n  }\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nIntervalScale.create = function () {\n  return new IntervalScale();\n};\n\nvar _default = IntervalScale;\nmodule.exports = _default;\n\n/***/ }),\n/* 331 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\nvar _dataStackHelper = __webpack_require__(132);\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar createRenderPlanner = __webpack_require__(214);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar STACK_PREFIX = '__ec_stack_';\nvar LARGE_BAR_MIN_WIDTH = 0.5;\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\n\nfunction getSeriesStackId(seriesModel) {\n  return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n  return axis.dim + axis.index;\n}\n/**\n * @param {Object} opt\n * @param {module:echarts/coord/Axis} opt.axis Only support category axis currently.\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barMinWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined.\n */\n\n\nfunction getLayoutOnAxis(opt) {\n  var params = [];\n  var baseAxis = opt.axis;\n  var axisKey = 'axis0';\n\n  if (baseAxis.type !== 'category') {\n    return;\n  }\n\n  var bandWidth = baseAxis.getBandWidth();\n\n  for (var i = 0; i < opt.count || 0; i++) {\n    params.push(zrUtil.defaults({\n      bandWidth: bandWidth,\n      axisKey: axisKey,\n      stackId: STACK_PREFIX + i\n    }, opt));\n  }\n\n  var widthAndOffsets = doCalBarWidthAndOffset(params);\n  var result = [];\n\n  for (var i = 0; i < opt.count; i++) {\n    var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\n    item.offsetCenter = item.offset + item.width / 2;\n    result.push(item);\n  }\n\n  return result;\n}\n\nfunction prepareLayoutBarSeries(seriesType, ecModel) {\n  var seriesModels = [];\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    // Check series coordinate, do layout for cartesian2d only\n    if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\n      seriesModels.push(seriesModel);\n    }\n  });\n  return seriesModels;\n}\n/**\n * Map from (baseAxis.dim + '_' + baseAxis.index) to min gap of two adjacent\n * values.\n * This works for time axes, value axes, and log axes.\n * For a single time axis, return value is in the form like\n * {'x_0': [1000000]}.\n * The value of 1000000 is in milliseconds.\n */\n\n\nfunction getValueAxesMinGaps(barSeries) {\n  /**\n   * Map from axis.index to values.\n   * For a single time axis, axisValues is in the form like\n   * {'x_0': [1495555200000, 1495641600000, 1495728000000]}.\n   * Items in axisValues[x], e.g. 1495555200000, are time values of all\n   * series.\n   */\n  var axisValues = {};\n  zrUtil.each(barSeries, function (seriesModel) {\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n\n    if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var key = baseAxis.dim + '_' + baseAxis.index;\n    var dim = data.mapDimension(baseAxis.dim);\n\n    for (var i = 0, cnt = data.count(); i < cnt; ++i) {\n      var value = data.get(dim, i);\n\n      if (!axisValues[key]) {\n        // No previous data for the axis\n        axisValues[key] = [value];\n      } else {\n        // No value in previous series\n        axisValues[key].push(value);\n      } // Ignore duplicated time values in the same axis\n\n    }\n  });\n  var axisMinGaps = [];\n\n  for (var key in axisValues) {\n    if (axisValues.hasOwnProperty(key)) {\n      var valuesInAxis = axisValues[key];\n\n      if (valuesInAxis) {\n        // Sort axis values into ascending order to calculate gaps\n        valuesInAxis.sort(function (a, b) {\n          return a - b;\n        });\n        var min = null;\n\n        for (var j = 1; j < valuesInAxis.length; ++j) {\n          var delta = valuesInAxis[j] - valuesInAxis[j - 1];\n\n          if (delta > 0) {\n            // Ignore 0 delta because they are of the same axis value\n            min = min === null ? delta : Math.min(min, delta);\n          }\n        } // Set to null if only have one data\n\n\n        axisMinGaps[key] = min;\n      }\n    }\n  }\n\n  return axisMinGaps;\n}\n\nfunction makeColumnLayout(barSeries) {\n  var axisMinGaps = getValueAxesMinGaps(barSeries);\n  var seriesInfoList = [];\n  zrUtil.each(barSeries, function (seriesModel) {\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n    var axisExtent = baseAxis.getExtent();\n    var bandWidth;\n\n    if (baseAxis.type === 'category') {\n      bandWidth = baseAxis.getBandWidth();\n    } else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\n      var key = baseAxis.dim + '_' + baseAxis.index;\n      var minGap = axisMinGaps[key];\n      var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\n      var scale = baseAxis.scale.getExtent();\n      var scaleSpan = Math.abs(scale[1] - scale[0]);\n      bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; // When there is only one data value\n    } else {\n      var data = seriesModel.getData();\n      bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n    }\n\n    var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n    var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n    var barMinWidth = parsePercent( // barMinWidth by default is 1 in cartesian. Because in value axis,\n    // the auto-calculated bar width might be less than 1.\n    seriesModel.get('barMinWidth') || 1, bandWidth);\n    var barGap = seriesModel.get('barGap');\n    var barCategoryGap = seriesModel.get('barCategoryGap');\n    seriesInfoList.push({\n      bandWidth: bandWidth,\n      barWidth: barWidth,\n      barMaxWidth: barMaxWidth,\n      barMinWidth: barMinWidth,\n      barGap: barGap,\n      barCategoryGap: barCategoryGap,\n      axisKey: getAxisKey(baseAxis),\n      stackId: getSeriesStackId(seriesModel)\n    });\n  });\n  return doCalBarWidthAndOffset(seriesInfoList);\n}\n\nfunction doCalBarWidthAndOffset(seriesInfoList) {\n  // Columns info on each category axis. Key is cartesian name\n  var columnsMap = {};\n  zrUtil.each(seriesInfoList, function (seriesInfo, idx) {\n    var axisKey = seriesInfo.axisKey;\n    var bandWidth = seriesInfo.bandWidth;\n    var columnsOnAxis = columnsMap[axisKey] || {\n      bandWidth: bandWidth,\n      remainedWidth: bandWidth,\n      autoWidthCount: 0,\n      categoryGap: '20%',\n      gap: '30%',\n      stacks: {}\n    };\n    var stacks = columnsOnAxis.stacks;\n    columnsMap[axisKey] = columnsOnAxis;\n    var stackId = seriesInfo.stackId;\n\n    if (!stacks[stackId]) {\n      columnsOnAxis.autoWidthCount++;\n    }\n\n    stacks[stackId] = stacks[stackId] || {\n      width: 0,\n      maxWidth: 0\n    }; // Caution: In a single coordinate system, these barGrid attributes\n    // will be shared by series. Consider that they have default values,\n    // only the attributes set on the last series will work.\n    // Do not change this fact unless there will be a break change.\n\n    var barWidth = seriesInfo.barWidth;\n\n    if (barWidth && !stacks[stackId].width) {\n      // See #6312, do not restrict width.\n      stacks[stackId].width = barWidth;\n      barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n      columnsOnAxis.remainedWidth -= barWidth;\n    }\n\n    var barMaxWidth = seriesInfo.barMaxWidth;\n    barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n    var barMinWidth = seriesInfo.barMinWidth;\n    barMinWidth && (stacks[stackId].minWidth = barMinWidth);\n    var barGap = seriesInfo.barGap;\n    barGap != null && (columnsOnAxis.gap = barGap);\n    var barCategoryGap = seriesInfo.barCategoryGap;\n    barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n  });\n  var result = {};\n  zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n    result[coordSysName] = {};\n    var stacks = columnsOnAxis.stacks;\n    var bandWidth = columnsOnAxis.bandWidth;\n    var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n    var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n    var remainedWidth = columnsOnAxis.remainedWidth;\n    var autoWidthCount = columnsOnAxis.autoWidthCount;\n    var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n    zrUtil.each(stacks, function (column) {\n      var maxWidth = column.maxWidth;\n      var minWidth = column.minWidth;\n\n      if (!column.width) {\n        var finalWidth = autoWidth;\n\n        if (maxWidth && maxWidth < finalWidth) {\n          finalWidth = Math.min(maxWidth, remainedWidth);\n        } // `minWidth` has higher priority. `minWidth` decide that wheter the\n        // bar is able to be visible. So `minWidth` should not be restricted\n        // by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In\n        // the extreme cases for `value` axis, bars are allowed to overlap\n        // with each other if `minWidth` specified.\n\n\n        if (minWidth && minWidth > finalWidth) {\n          finalWidth = minWidth;\n        }\n\n        if (finalWidth !== autoWidth) {\n          column.width = finalWidth;\n          remainedWidth -= finalWidth + barGapPercent * finalWidth;\n          autoWidthCount--;\n        }\n      } else {\n        // `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as\n        // CSS does. Becuase barWidth can be a percent value, where\n        // `barMaxWidth` can be used to restrict the final width.\n        var finalWidth = column.width;\n\n        if (maxWidth) {\n          finalWidth = Math.min(finalWidth, maxWidth);\n        } // `minWidth` has higher priority, as described above\n\n\n        if (minWidth) {\n          finalWidth = Math.max(finalWidth, minWidth);\n        }\n\n        column.width = finalWidth;\n        remainedWidth -= finalWidth + barGapPercent * finalWidth;\n        autoWidthCount--;\n      }\n    }); // Recalculate width again\n\n    autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0);\n    var widthSum = 0;\n    var lastColumn;\n    zrUtil.each(stacks, function (column, idx) {\n      if (!column.width) {\n        column.width = autoWidth;\n      }\n\n      lastColumn = column;\n      widthSum += column.width * (1 + barGapPercent);\n    });\n\n    if (lastColumn) {\n      widthSum -= lastColumn.width * barGapPercent;\n    }\n\n    var offset = -widthSum / 2;\n    zrUtil.each(stacks, function (column, stackId) {\n      result[coordSysName][stackId] = result[coordSysName][stackId] || {\n        bandWidth: bandWidth,\n        offset: offset,\n        width: column.width\n      };\n      offset += column.width * (1 + barGapPercent);\n    });\n  });\n  return result;\n}\n/**\n * @param {Object} barWidthAndOffset The result of makeColumnLayout\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Series} [seriesModel] If not provided, return all.\n * @return {Object} {stackId: {offset, width}} or {offset, width} if seriesModel provided.\n */\n\n\nfunction retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\n  if (barWidthAndOffset && axis) {\n    var result = barWidthAndOffset[getAxisKey(axis)];\n\n    if (result != null && seriesModel != null) {\n      result = result[getSeriesStackId(seriesModel)];\n    }\n\n    return result;\n  }\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction layout(seriesType, ecModel) {\n  var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\n  var barWidthAndOffset = makeColumnLayout(seriesModels);\n  var lastStackCoords = {};\n  var lastStackCoordsOrigin = {};\n  zrUtil.each(seriesModels, function (seriesModel) {\n    var data = seriesModel.getData();\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n    var stackId = getSeriesStackId(seriesModel);\n    var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n    var columnOffset = columnLayoutInfo.offset;\n    var columnWidth = columnLayoutInfo.width;\n    var valueAxis = cartesian.getOtherAxis(baseAxis);\n    var barMinHeight = seriesModel.get('barMinHeight') || 0;\n    lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n    lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243\n\n    data.setLayout({\n      bandWidth: columnLayoutInfo.bandWidth,\n      offset: columnOffset,\n      size: columnWidth\n    });\n    var valueDim = data.mapDimension(valueAxis.dim);\n    var baseDim = data.mapDimension(baseAxis.dim);\n    var stacked = isDimensionStacked(data, valueDim\n    /*, baseDim*/\n    );\n    var isValueAxisH = valueAxis.isHorizontal();\n    var valueAxisStart = getValueAxisStart(baseAxis, valueAxis, stacked);\n\n    for (var idx = 0, len = data.count(); idx < len; idx++) {\n      var value = data.get(valueDim, idx);\n      var baseValue = data.get(baseDim, idx);\n      var sign = value >= 0 ? 'p' : 'n';\n      var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n      // stackResultDimension directly.\n\n      if (stacked) {\n        // Only ordinal axis can be stacked.\n        if (!lastStackCoords[stackId][baseValue]) {\n          lastStackCoords[stackId][baseValue] = {\n            p: valueAxisStart,\n            // Positive stack\n            n: valueAxisStart // Negative stack\n\n          };\n        } // Should also consider #4243\n\n\n        baseCoord = lastStackCoords[stackId][baseValue][sign];\n      }\n\n      var x;\n      var y;\n      var width;\n      var height;\n\n      if (isValueAxisH) {\n        var coord = cartesian.dataToPoint([value, baseValue]);\n        x = baseCoord;\n        y = coord[1] + columnOffset;\n        width = coord[0] - valueAxisStart;\n        height = columnWidth;\n\n        if (Math.abs(width) < barMinHeight) {\n          width = (width < 0 ? -1 : 1) * barMinHeight;\n        } // Ignore stack from NaN value\n\n\n        if (!isNaN(width)) {\n          stacked && (lastStackCoords[stackId][baseValue][sign] += width);\n        }\n      } else {\n        var coord = cartesian.dataToPoint([baseValue, value]);\n        x = coord[0] + columnOffset;\n        y = baseCoord;\n        width = columnWidth;\n        height = coord[1] - valueAxisStart;\n\n        if (Math.abs(height) < barMinHeight) {\n          // Include zero to has a positive bar\n          height = (height <= 0 ? -1 : 1) * barMinHeight;\n        } // Ignore stack from NaN value\n\n\n        if (!isNaN(height)) {\n          stacked && (lastStackCoords[stackId][baseValue][sign] += height);\n        }\n      }\n\n      data.setItemLayout(idx, {\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      });\n    }\n  }, this);\n} // TODO: Do not support stack in large mode yet.\n\n\nvar largeLayout = {\n  seriesType: 'bar',\n  plan: createRenderPlanner(),\n  reset: function (seriesModel) {\n    if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var cartesian = seriesModel.coordinateSystem;\n    var coordLayout = cartesian.grid.getRect();\n    var baseAxis = cartesian.getBaseAxis();\n    var valueAxis = cartesian.getOtherAxis(baseAxis);\n    var valueDim = data.mapDimension(valueAxis.dim);\n    var baseDim = data.mapDimension(baseAxis.dim);\n    var valueAxisHorizontal = valueAxis.isHorizontal();\n    var valueDimIdx = valueAxisHorizontal ? 0 : 1;\n    var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\n\n    if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\n      // jshint ignore:line\n      barWidth = LARGE_BAR_MIN_WIDTH;\n    }\n\n    return {\n      progress: progress\n    };\n\n    function progress(params, data) {\n      var count = params.count;\n      var largePoints = new LargeArr(count * 2);\n      var largeBackgroundPoints = new LargeArr(count * 2);\n      var largeDataIndices = new LargeArr(count);\n      var dataIndex;\n      var coord = [];\n      var valuePair = [];\n      var pointsOffset = 0;\n      var idxOffset = 0;\n\n      while ((dataIndex = params.next()) != null) {\n        valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\n        valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\n        coord = cartesian.dataToPoint(valuePair, null, coord); // Data index might not be in order, depends on `progressiveChunkMode`.\n\n        largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\n        largePoints[pointsOffset++] = coord[0];\n        largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\n        largePoints[pointsOffset++] = coord[1];\n        largeDataIndices[idxOffset++] = dataIndex;\n      }\n\n      data.setLayout({\n        largePoints: largePoints,\n        largeDataIndices: largeDataIndices,\n        largeBackgroundPoints: largeBackgroundPoints,\n        barWidth: barWidth,\n        valueAxisStart: getValueAxisStart(baseAxis, valueAxis, false),\n        backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\n        valueAxisHorizontal: valueAxisHorizontal\n      });\n    }\n  }\n};\n\nfunction isOnCartesian(seriesModel) {\n  return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n}\n\nfunction isInLargeMode(seriesModel) {\n  return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\n} // See cases in `test/bar-start.html` and `#7412`, `#8747`.\n\n\nfunction getValueAxisStart(baseAxis, valueAxis, stacked) {\n  return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\n}\n\nexports.getLayoutOnAxis = getLayoutOnAxis;\nexports.prepareLayoutBarSeries = prepareLayoutBarSeries;\nexports.makeColumnLayout = makeColumnLayout;\nexports.retrieveColumnLayout = retrieveColumnLayout;\nexports.layout = layout;\nexports.largeLayout = largeLayout;\n\n/***/ }),\n/* 332 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar _symbol = __webpack_require__(117);\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = __webpack_require__(23);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\nvar _labelHelper = __webpack_require__(410);\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Symbol\n */\n\n/**\n * @constructor\n * @alias {module:echarts/chart/helper/Symbol}\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\nfunction SymbolClz(data, idx, seriesScope) {\n  graphic.Group.call(this);\n  this.updateData(data, idx, seriesScope);\n}\n\nvar symbolProto = SymbolClz.prototype;\n/**\n * @public\n * @static\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {Array.<number>} [width, height]\n */\n\nvar getSymbolSize = SymbolClz.getSymbolSize = function (data, idx) {\n  var symbolSize = data.getItemVisual(idx, 'symbolSize');\n  return symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n};\n\nfunction getScale(symbolSize) {\n  return [symbolSize[0] / 2, symbolSize[1] / 2];\n}\n\nfunction driftSymbol(dx, dy) {\n  this.parent.drift(dx, dy);\n}\n\nsymbolProto._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n  // Remove paths created before\n  this.removeAll();\n  var color = data.getItemVisual(idx, 'color'); // var symbolPath = createSymbol(\n  //     symbolType, -0.5, -0.5, 1, 1, color\n  // );\n  // If width/height are set too small (e.g., set to 1) on ios10\n  // and macOS Sierra, a circle stroke become a rect, no matter what\n  // the scale is set. So we set width/height as 2. See #4150.\n\n  var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, color, keepAspect);\n  symbolPath.attr({\n    z2: 100,\n    culling: true,\n    scale: getScale(symbolSize)\n  }); // Rewrite drift method\n\n  symbolPath.drift = driftSymbol;\n  this._symbolType = symbolType;\n  this.add(symbolPath);\n};\n/**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n\n\nsymbolProto.stopSymbolAnimation = function (toLastFrame) {\n  this.childAt(0).stopAnimation(toLastFrame);\n};\n/**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n\n\nsymbolProto.getSymbolPath = function () {\n  return this.childAt(0);\n};\n/**\n * Get scale(aka, current symbol size).\n * Including the change caused by animation\n */\n\n\nsymbolProto.getScale = function () {\n  return this.childAt(0).scale;\n};\n/**\n * Highlight symbol\n */\n\n\nsymbolProto.highlight = function () {\n  this.childAt(0).trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\nsymbolProto.downplay = function () {\n  this.childAt(0).trigger('normal');\n};\n/**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\nsymbolProto.setZ = function (zlevel, z) {\n  var symbolPath = this.childAt(0);\n  symbolPath.zlevel = zlevel;\n  symbolPath.z = z;\n};\n\nsymbolProto.setDraggable = function (draggable) {\n  var symbolPath = this.childAt(0);\n  symbolPath.draggable = draggable;\n  symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Object} [seriesScope]\n * @param {Object} [seriesScope.itemStyle]\n * @param {Object} [seriesScope.hoverItemStyle]\n * @param {Object} [seriesScope.symbolRotate]\n * @param {Object} [seriesScope.symbolOffset]\n * @param {module:echarts/model/Model} [seriesScope.labelModel]\n * @param {module:echarts/model/Model} [seriesScope.hoverLabelModel]\n * @param {boolean} [seriesScope.hoverAnimation]\n * @param {Object} [seriesScope.cursorStyle]\n * @param {module:echarts/model/Model} [seriesScope.itemModel]\n * @param {string} [seriesScope.symbolInnerColor]\n * @param {Object} [seriesScope.fadeIn=false]\n */\n\n\nsymbolProto.updateData = function (data, idx, seriesScope) {\n  this.silent = false;\n  var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n  var seriesModel = data.hostModel;\n  var symbolSize = getSymbolSize(data, idx);\n  var isInit = symbolType !== this._symbolType;\n\n  if (isInit) {\n    var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n    this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n  } else {\n    var symbolPath = this.childAt(0);\n    symbolPath.silent = false;\n    graphic.updateProps(symbolPath, {\n      scale: getScale(symbolSize)\n    }, seriesModel, idx);\n  }\n\n  this._updateCommon(data, idx, symbolSize, seriesScope);\n\n  if (isInit) {\n    var symbolPath = this.childAt(0);\n    var fadeIn = seriesScope && seriesScope.fadeIn;\n    var target = {\n      scale: symbolPath.scale.slice()\n    };\n    fadeIn && (target.style = {\n      opacity: symbolPath.style.opacity\n    });\n    symbolPath.scale = [0, 0];\n    fadeIn && (symbolPath.style.opacity = 0);\n    graphic.initProps(symbolPath, target, seriesModel, idx);\n  }\n\n  this._seriesModel = seriesModel;\n}; // Update common properties\n\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\nvar normalLabelAccessPath = ['label'];\nvar emphasisLabelAccessPath = ['emphasis', 'label'];\n/**\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Array.<number>} symbolSize\n * @param {Object} [seriesScope]\n */\n\nsymbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {\n  var symbolPath = this.childAt(0);\n  var seriesModel = data.hostModel;\n  var color = data.getItemVisual(idx, 'color'); // Reset style\n\n  if (symbolPath.type !== 'image') {\n    symbolPath.useStyle({\n      strokeNoScale: true\n    });\n  } else {\n    symbolPath.setStyle({\n      opacity: 1,\n      shadowBlur: null,\n      shadowOffsetX: null,\n      shadowOffsetY: null,\n      shadowColor: null\n    });\n  }\n\n  var itemStyle = seriesScope && seriesScope.itemStyle;\n  var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle;\n  var symbolOffset = seriesScope && seriesScope.symbolOffset;\n  var labelModel = seriesScope && seriesScope.labelModel;\n  var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;\n  var hoverAnimation = seriesScope && seriesScope.hoverAnimation;\n  var cursorStyle = seriesScope && seriesScope.cursorStyle;\n\n  if (!seriesScope || data.hasItemOption) {\n    var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); // Color must be excluded.\n    // Because symbol provide setColor individually to set fill and stroke\n\n    itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']);\n    hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n    symbolOffset = itemModel.getShallow('symbolOffset');\n    labelModel = itemModel.getModel(normalLabelAccessPath);\n    hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);\n    hoverAnimation = itemModel.getShallow('hoverAnimation');\n    cursorStyle = itemModel.getShallow('cursor');\n  } else {\n    hoverItemStyle = zrUtil.extend({}, hoverItemStyle);\n  }\n\n  var elStyle = symbolPath.style;\n  var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n  symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n\n  if (symbolOffset) {\n    symbolPath.attr('position', [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])]);\n  }\n\n  cursorStyle && symbolPath.attr('cursor', cursorStyle); // PENDING setColor before setStyle!!!\n\n  symbolPath.setColor(color, seriesScope && seriesScope.symbolInnerColor);\n  symbolPath.setStyle(itemStyle);\n  var opacity = data.getItemVisual(idx, 'opacity');\n\n  if (opacity != null) {\n    elStyle.opacity = opacity;\n  }\n\n  var liftZ = data.getItemVisual(idx, 'liftZ');\n  var z2Origin = symbolPath.__z2Origin;\n\n  if (liftZ != null) {\n    if (z2Origin == null) {\n      symbolPath.__z2Origin = symbolPath.z2;\n      symbolPath.z2 += liftZ;\n    }\n  } else if (z2Origin != null) {\n    symbolPath.z2 = z2Origin;\n    symbolPath.__z2Origin = null;\n  }\n\n  var useNameLabel = seriesScope && seriesScope.useNameLabel;\n  graphic.setLabelStyle(elStyle, hoverItemStyle, labelModel, hoverLabelModel, {\n    labelFetcher: seriesModel,\n    labelDataIndex: idx,\n    defaultText: getLabelDefaultText,\n    isRectText: true,\n    autoColor: color\n  }); // Do not execute util needed.\n\n  function getLabelDefaultText(idx, opt) {\n    return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n  }\n\n  symbolPath.__symbolOriginalScale = getScale(symbolSize);\n  symbolPath.hoverStyle = hoverItemStyle;\n  symbolPath.highDownOnUpdate = hoverAnimation && seriesModel.isAnimationEnabled() ? highDownOnUpdate : null;\n  graphic.setHoverStyle(symbolPath);\n};\n\nfunction highDownOnUpdate(fromState, toState) {\n  // Do not support this hover animation util some scenario required.\n  // Animation can only be supported in hover layer when using `el.incremetal`.\n  if (this.incremental || this.useHoverLayer) {\n    return;\n  }\n\n  if (toState === 'emphasis') {\n    var scale = this.__symbolOriginalScale;\n    var ratio = scale[1] / scale[0];\n    var emphasisOpt = {\n      scale: [Math.max(scale[0] * 1.1, scale[0] + 3), Math.max(scale[1] * 1.1, scale[1] + 3 * ratio)]\n    }; // FIXME\n    // modify it after support stop specified animation.\n    // toState === fromState\n    //     ? (this.stopAnimation(), this.attr(emphasisOpt))\n\n    this.animateTo(emphasisOpt, 400, 'elasticOut');\n  } else if (toState === 'normal') {\n    this.animateTo({\n      scale: this.__symbolOriginalScale\n    }, 400, 'elasticOut');\n  }\n}\n/**\n * @param {Function} cb\n * @param {Object} [opt]\n * @param {Object} [opt.keepLabel=true]\n */\n\n\nsymbolProto.fadeOut = function (cb, opt) {\n  var symbolPath = this.childAt(0); // Avoid mistaken hover when fading out\n\n  this.silent = symbolPath.silent = true; // Not show text when animating\n\n  !(opt && opt.keepLabel) && (symbolPath.style.text = null);\n  graphic.updateProps(symbolPath, {\n    style: {\n      opacity: 0\n    },\n    scale: [0, 0]\n  }, this._seriesModel, this.dataIndex, cb);\n};\n\nzrUtil.inherits(SymbolClz, graphic.Group);\nvar _default = SymbolClz;\nmodule.exports = _default;\n\n/***/ }),\n/* 333 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar axisDefault = __webpack_require__(584);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar _layout = __webpack_require__(49);\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar OrdinalMeta = __webpack_require__(575);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME axisType is fixed ?\nvar AXIS_TYPES = ['value', 'category', 'time', 'log'];\n/**\n * Generate sub axis model class\n * @param {string} axisName 'x' 'y' 'radius' 'angle' 'parallel'\n * @param {module:echarts/model/Component} BaseAxisModelClass\n * @param {Function} axisTypeDefaulter\n * @param {Object} [extraDefaultOption]\n */\n\nfunction _default(axisName, BaseAxisModelClass, axisTypeDefaulter, extraDefaultOption) {\n  zrUtil.each(AXIS_TYPES, function (axisType) {\n    BaseAxisModelClass.extend({\n      /**\n       * @readOnly\n       */\n      type: axisName + 'Axis.' + axisType,\n      mergeDefaultAndTheme: function (option, ecModel) {\n        var layoutMode = this.layoutMode;\n        var inputPositionParams = layoutMode ? getLayoutParams(option) : {};\n        var themeModel = ecModel.getTheme();\n        zrUtil.merge(option, themeModel.get(axisType + 'Axis'));\n        zrUtil.merge(option, this.getDefaultOption());\n        option.type = axisTypeDefaulter(axisName, option);\n\n        if (layoutMode) {\n          mergeLayoutParam(option, inputPositionParams, layoutMode);\n        }\n      },\n\n      /**\n       * @override\n       */\n      optionUpdated: function () {\n        var thisOption = this.option;\n\n        if (thisOption.type === 'category') {\n          this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\n        }\n      },\n\n      /**\n       * Should not be called before all of 'getInitailData' finished.\n       * Because categories are collected during initializing data.\n       */\n      getCategories: function (rawData) {\n        var option = this.option; // FIXME\n        // warning if called before all of 'getInitailData' finished.\n\n        if (option.type === 'category') {\n          if (rawData) {\n            return option.data;\n          }\n\n          return this.__ordinalMeta.categories;\n        }\n      },\n      getOrdinalMeta: function () {\n        return this.__ordinalMeta;\n      },\n      defaultOption: zrUtil.mergeAll([{}, axisDefault[axisType + 'Axis'], extraDefaultOption], true)\n    });\n  });\n  ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', zrUtil.curry(axisTypeDefaulter, axisName));\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 334 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Model = __webpack_require__(67);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar curry = zrUtil.curry; // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n// allAxesInfo should be updated when setOption performed.\n\nfunction collect(ecModel, api) {\n  var result = {\n    /**\n     * key: makeKey(axis.model)\n     * value: {\n     *      axis,\n     *      coordSys,\n     *      axisPointerModel,\n     *      triggerTooltip,\n     *      involveSeries,\n     *      snap,\n     *      seriesModels,\n     *      seriesDataCount\n     * }\n     */\n    axesInfo: {},\n    seriesInvolved: false,\n\n    /**\n     * key: makeKey(coordSys.model)\n     * value: Object: key makeKey(axis.model), value: axisInfo\n     */\n    coordSysAxesInfo: {},\n    coordSysMap: {}\n  };\n  collectAxesInfo(result, ecModel, api); // Check seriesInvolved for performance, in case too many series in some chart.\n\n  result.seriesInvolved && collectSeriesInfo(result, ecModel);\n  return result;\n}\n\nfunction collectAxesInfo(result, ecModel, api) {\n  var globalTooltipModel = ecModel.getComponent('tooltip');\n  var globalAxisPointerModel = ecModel.getComponent('axisPointer'); // links can only be set on global.\n\n  var linksOption = globalAxisPointerModel.get('link', true) || [];\n  var linkGroups = []; // Collect axes info.\n\n  each(api.getCoordinateSystems(), function (coordSys) {\n    // Some coordinate system do not support axes, like geo.\n    if (!coordSys.axisPointerEnabled) {\n      return;\n    }\n\n    var coordSysKey = makeKey(coordSys.model);\n    var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\n    result.coordSysMap[coordSysKey] = coordSys; // Set tooltip (like 'cross') is a convienent way to show axisPointer\n    // for user. So we enable seting tooltip on coordSys model.\n\n    var coordSysModel = coordSys.model;\n    var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\n    each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); // If axis tooltip used, choose tooltip axis for each coordSys.\n    // Notice this case: coordSys is `grid` but not `cartesian2D` here.\n\n    if (coordSys.getTooltipAxes && globalTooltipModel // If tooltip.showContent is set as false, tooltip will not\n    // show but axisPointer will show as normal.\n    && baseTooltipModel.get('show')) {\n      // Compatible with previous logic. But series.tooltip.trigger: 'axis'\n      // or series.data[n].tooltip.trigger: 'axis' are not support any more.\n      var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\n      var cross = baseTooltipModel.get('axisPointer.type') === 'cross';\n      var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis'));\n\n      if (triggerAxis || cross) {\n        each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\n      }\n\n      if (cross) {\n        each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\n      }\n    } // fromTooltip: true | false | 'cross'\n    // triggerTooltip: true | false | null\n\n\n    function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\n      var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\n      var axisPointerShow = axisPointerModel.get('show');\n\n      if (!axisPointerShow || axisPointerShow === 'auto' && !fromTooltip && !isHandleTrigger(axisPointerModel)) {\n        return;\n      }\n\n      if (triggerTooltip == null) {\n        triggerTooltip = axisPointerModel.get('triggerTooltip');\n      }\n\n      axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;\n      var snap = axisPointerModel.get('snap');\n      var key = makeKey(axis.model);\n      var involveSeries = triggerTooltip || snap || axis.type === 'category'; // If result.axesInfo[key] exist, override it (tooltip has higher priority).\n\n      var axisInfo = result.axesInfo[key] = {\n        key: key,\n        axis: axis,\n        coordSys: coordSys,\n        axisPointerModel: axisPointerModel,\n        triggerTooltip: triggerTooltip,\n        involveSeries: involveSeries,\n        snap: snap,\n        useHandle: isHandleTrigger(axisPointerModel),\n        seriesModels: []\n      };\n      axesInfoInCoordSys[key] = axisInfo;\n      result.seriesInvolved |= involveSeries;\n      var groupIndex = getLinkGroupIndex(linksOption, axis);\n\n      if (groupIndex != null) {\n        var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {\n          axesInfo: {}\n        });\n        linkGroup.axesInfo[key] = axisInfo;\n        linkGroup.mapper = linksOption[groupIndex].mapper;\n        axisInfo.linkGroup = linkGroup;\n      }\n    }\n  });\n}\n\nfunction makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\n  var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\n  var volatileOption = {};\n  each(['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'], function (field) {\n    volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));\n  }); // category axis do not auto snap, otherwise some tick that do not\n  // has value can not be hovered. value/time/log axis default snap if\n  // triggered from tooltip and trigger tooltip.\n\n  volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; // Compatibel with previous behavior, tooltip axis do not show label by default.\n  // Only these properties can be overrided from tooltip to axisPointer.\n\n  if (tooltipAxisPointerModel.get('type') === 'cross') {\n    volatileOption.type = 'line';\n  }\n\n  var labelOption = volatileOption.label || (volatileOption.label = {}); // Follow the convention, do not show label when triggered by tooltip by default.\n\n  labelOption.show == null && (labelOption.show = false);\n\n  if (fromTooltip === 'cross') {\n    // When 'cross', both axes show labels.\n    var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get('label.show');\n    labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; // If triggerTooltip, this is a base axis, which should better not use cross style\n    // (cross style is dashed by default)\n\n    if (!triggerTooltip) {\n      var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\n      crossStyle && zrUtil.defaults(labelOption, crossStyle.textStyle);\n    }\n  }\n\n  return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\n}\n\nfunction collectSeriesInfo(result, ecModel) {\n  // Prepare data for axis trigger\n  ecModel.eachSeries(function (seriesModel) {\n    // Notice this case: this coordSys is `cartesian2D` but not `grid`.\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true);\n    var seriesTooltipShow = seriesModel.get('tooltip.show', true);\n\n    if (!coordSys || seriesTooltipTrigger === 'none' || seriesTooltipTrigger === false || seriesTooltipTrigger === 'item' || seriesTooltipShow === false || seriesModel.get('axisPointer.show', true) === false) {\n      return;\n    }\n\n    each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\n      var axis = axisInfo.axis;\n\n      if (coordSys.getAxis(axis.dim) === axis) {\n        axisInfo.seriesModels.push(seriesModel);\n        axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\n        axisInfo.seriesDataCount += seriesModel.getData().count();\n      }\n    });\n  }, this);\n}\n/**\n * For example:\n * {\n *     axisPointer: {\n *         links: [{\n *             xAxisIndex: [2, 4],\n *             yAxisIndex: 'all'\n *         }, {\n *             xAxisId: ['a5', 'a7'],\n *             xAxisName: 'xxx'\n *         }]\n *     }\n * }\n */\n\n\nfunction getLinkGroupIndex(linksOption, axis) {\n  var axisModel = axis.model;\n  var dim = axis.dim;\n\n  for (var i = 0; i < linksOption.length; i++) {\n    var linkOption = linksOption[i] || {};\n\n    if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\n      return i;\n    }\n  }\n}\n\nfunction checkPropInLink(linkPropValue, axisPropValue) {\n  return linkPropValue === 'all' || zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;\n}\n\nfunction fixValue(axisModel) {\n  var axisInfo = getAxisInfo(axisModel);\n\n  if (!axisInfo) {\n    return;\n  }\n\n  var axisPointerModel = axisInfo.axisPointerModel;\n  var scale = axisInfo.axis.scale;\n  var option = axisPointerModel.option;\n  var status = axisPointerModel.get('status');\n  var value = axisPointerModel.get('value'); // Parse init value for category and time axis.\n\n  if (value != null) {\n    value = scale.parse(value);\n  }\n\n  var useHandle = isHandleTrigger(axisPointerModel); // If `handle` used, `axisPointer` will always be displayed, so value\n  // and status should be initialized.\n\n  if (status == null) {\n    option.status = useHandle ? 'show' : 'hide';\n  }\n\n  var extent = scale.getExtent().slice();\n  extent[0] > extent[1] && extent.reverse();\n\n  if ( // Pick a value on axis when initializing.\n  value == null // If both `handle` and `dataZoom` are used, value may be out of axis extent,\n  // where we should re-pick a value to keep `handle` displaying normally.\n  || value > extent[1]) {\n    // Make handle displayed on the end of the axis when init, which looks better.\n    value = extent[1];\n  }\n\n  if (value < extent[0]) {\n    value = extent[0];\n  }\n\n  option.value = value;\n\n  if (useHandle) {\n    option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\n  }\n}\n\nfunction getAxisInfo(axisModel) {\n  var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo;\n  return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\n}\n\nfunction getAxisPointerModel(axisModel) {\n  var axisInfo = getAxisInfo(axisModel);\n  return axisInfo && axisInfo.axisPointerModel;\n}\n\nfunction isHandleTrigger(axisPointerModel) {\n  return !!axisPointerModel.get('handle.show');\n}\n/**\n * @param {module:echarts/model/Model} model\n * @return {string} unique key\n */\n\n\nfunction makeKey(model) {\n  return model.type + '||' + model.id;\n}\n\nexports.collect = collect;\nexports.fixValue = fixValue;\nexports.getAxisInfo = getAxisInfo;\nexports.getAxisPointerModel = getAxisPointerModel;\nexports.makeKey = makeKey;\n\n/***/ }),\n/* 335 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar createHashMap = _util.createHashMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Pick color from palette for each data item.\n// Applicable for charts that require applying color palette\n// in data level (like pie, funnel, chord).\nfunction _default(seriesType) {\n  return {\n    getTargetSeries: function (ecModel) {\n      // Pie and funnel may use diferrent scope\n      var paletteScope = {};\n      var seiresModelMap = createHashMap();\n      ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n        seriesModel.__paletteScope = paletteScope;\n        seiresModelMap.set(seriesModel.uid, seriesModel);\n      });\n      return seiresModelMap;\n    },\n    reset: function (seriesModel, ecModel) {\n      var dataAll = seriesModel.getRawData();\n      var idxMap = {};\n      var data = seriesModel.getData();\n      data.each(function (idx) {\n        var rawIdx = data.getRawIndex(idx);\n        idxMap[rawIdx] = idx;\n      });\n      dataAll.each(function (rawIdx) {\n        var filteredIdx = idxMap[rawIdx]; // If series.itemStyle.normal.color is a function. itemVisual may be encoded\n\n        var singleDataColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'color', true);\n        var singleDataBorderColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'borderColor', true);\n        var itemModel;\n\n        if (!singleDataColor || !singleDataBorderColor) {\n          // FIXME Performance\n          itemModel = dataAll.getItemModel(rawIdx);\n        }\n\n        if (!singleDataColor) {\n          var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(dataAll.getName(rawIdx) || rawIdx + '', seriesModel.__paletteScope, dataAll.count()); // Data is not filtered\n\n          if (filteredIdx != null) {\n            data.setItemVisual(filteredIdx, 'color', color);\n          }\n        }\n\n        if (!singleDataBorderColor) {\n          var borderColor = itemModel.get('itemStyle.borderColor'); // Data is not filtered\n\n          if (filteredIdx != null) {\n            data.setItemVisual(filteredIdx, 'borderColor', borderColor);\n          }\n        }\n      });\n    }\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 336 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\n\nvar mapDataStorage = __webpack_require__(409);\n\nvar geoJSONLoader = __webpack_require__(1084);\n\nvar geoSVGLoader = __webpack_require__(1089);\n\nvar BoundingRect = __webpack_require__(57);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar loaders = {\n  geoJSON: geoJSONLoader,\n  svg: geoSVGLoader\n};\nvar _default = {\n  /**\n   * @param {string} mapName\n   * @param {Object} nameMap\n   * @param {string} nameProperty\n   * @return {Object} source {regions, regionsMap, nameCoordMap, boundingRect}\n   */\n  load: function (mapName, nameMap, nameProperty) {\n    var regions = [];\n    var regionsMap = createHashMap();\n    var nameCoordMap = createHashMap();\n    var boundingRect;\n    var mapRecords = retrieveMap(mapName);\n    each(mapRecords, function (record) {\n      var singleSource = loaders[record.type].load(mapName, record, nameProperty);\n      each(singleSource.regions, function (region) {\n        var regionName = region.name; // Try use the alias in geoNameMap\n\n        if (nameMap && nameMap.hasOwnProperty(regionName)) {\n          region = region.cloneShallow(regionName = nameMap[regionName]);\n        }\n\n        regions.push(region);\n        regionsMap.set(regionName, region);\n        nameCoordMap.set(regionName, region.center);\n      });\n      var rect = singleSource.boundingRect;\n\n      if (rect) {\n        boundingRect ? boundingRect.union(rect) : boundingRect = rect.clone();\n      }\n    });\n    return {\n      regions: regions,\n      regionsMap: regionsMap,\n      nameCoordMap: nameCoordMap,\n      // FIXME Always return new ?\n      boundingRect: boundingRect || new BoundingRect(0, 0, 0, 0)\n    };\n  },\n\n  /**\n   * @param {string} mapName\n   * @param {string} hostKey For cache.\n   * @return {Array.<module:zrender/Element>} Roots.\n   */\n  makeGraphic: makeInvoker('makeGraphic'),\n\n  /**\n   * @param {string} mapName\n   * @param {string} hostKey For cache.\n   */\n  removeGraphic: makeInvoker('removeGraphic')\n};\n\nfunction makeInvoker(methodName) {\n  return function (mapName, hostKey) {\n    var mapRecords = retrieveMap(mapName);\n    var results = [];\n    each(mapRecords, function (record) {\n      var method = loaders[record.type][methodName];\n      method && results.push(method(mapName, record, hostKey));\n    });\n    return results;\n  };\n}\n\nfunction mapNotExistsError(mapName) {}\n\nfunction retrieveMap(mapName) {\n  var mapRecords = mapDataStorage.retrieveMap(mapName) || [];\n  return mapRecords;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 337 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar IRRELEVANT_EXCLUDES = {\n  'axisPointer': 1,\n  'tooltip': 1,\n  'brush': 1\n};\n/**\n * Avoid that: mouse click on a elements that is over geo or graph,\n * but roam is triggered.\n */\n\nfunction onIrrelevantElement(e, api, targetCoordSysModel) {\n  var model = api.getComponentByElement(e.topTarget); // If model is axisModel, it works only if it is injected with coordinateSystem.\n\n  var coordSys = model && model.coordinateSystem;\n  return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES[model.mainType] && coordSys && coordSys.model !== targetCoordSysModel;\n}\n\nexports.onIrrelevantElement = onIrrelevantElement;\n\n/***/ }),\n/* 338 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar KEY_DELIMITER = '-->';\n/**\n * params handler\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {*}\n */\n\nvar getAutoCurvenessParams = function (seriesModel) {\n  return seriesModel.get('autoCurveness') || null;\n};\n/**\n * Generate a list of edge curvatures, 20 is the default\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} appendLength\n * @return  20 => [0, -0.2, 0.2, -0.4, 0.4, -0.6, 0.6, -0.8, 0.8, -1, 1, -1.2, 1.2, -1.4, 1.4, -1.6, 1.6, -1.8, 1.8, -2]\n */\n\n\nvar createCurveness = function (seriesModel, appendLength) {\n  var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);\n  var length = 20;\n  var curvenessList = []; // handler the function set\n\n  if (typeof autoCurvenessParmas === 'number') {\n    length = autoCurvenessParmas;\n  } else if (zrUtil.isArray(autoCurvenessParmas)) {\n    seriesModel.__curvenessList = autoCurvenessParmas;\n    return;\n  } // append length\n\n\n  if (appendLength > length) {\n    length = appendLength;\n  } // make sure the length is even\n\n\n  var len = length % 2 ? length + 2 : length + 3;\n  curvenessList = [];\n\n  for (var i = 0; i < len; i++) {\n    curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));\n  }\n\n  seriesModel.__curvenessList = curvenessList;\n};\n/**\n * Create different cache key data in the positive and negative directions, in order to set the curvature later\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @returns {string} key\n */\n\n\nvar getKeyOfEdges = function (n1, n2, seriesModel) {\n  var source = [n1.id, n1.dataIndex].join('.');\n  var target = [n2.id, n2.dataIndex].join('.');\n  return [seriesModel.uid, source, target].join(KEY_DELIMITER);\n};\n/**\n * get opposite key\n * @param {string} key\n * @returns {string}\n */\n\n\nvar getOppositeKey = function (key) {\n  var keys = key.split(KEY_DELIMITER);\n  return [keys[0], keys[2], keys[1]].join(KEY_DELIMITER);\n};\n/**\n * get edgeMap with key\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nvar getEdgeFromMap = function (edge, seriesModel) {\n  var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n  return seriesModel.__edgeMap[key];\n};\n/**\n * calculate all cases total length\n * @param edge\n * @param seriesModel\n * @returns {number}\n */\n\n\nvar getTotalLengthBetweenNodes = function (edge, seriesModel) {\n  var len = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);\n  var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);\n  return len + lenV;\n};\n/**\n *\n * @param key\n */\n\n\nvar getEdgeMapLengthWithKey = function (key, seriesModel) {\n  var edgeMap = seriesModel.__edgeMap;\n  return edgeMap[key] ? edgeMap[key].length : 0;\n};\n/**\n * Count the number of edges between the same two points, used to obtain the curvature table and the parity of the edge\n * @see /graph/GraphSeries.js@getInitialData\n * @param {module:echarts/model/SeriesModel} seriesModel\n */\n\n\nfunction initCurvenessList(seriesModel) {\n  if (!getAutoCurvenessParams(seriesModel)) {\n    return;\n  }\n\n  seriesModel.__curvenessList = [];\n  seriesModel.__edgeMap = {}; // calc the array of curveness List\n\n  createCurveness(seriesModel);\n}\n/**\n * set edgeMap with key\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param {number} index\n */\n\n\nfunction createEdgeMapForCurveness(n1, n2, seriesModel, index) {\n  if (!getAutoCurvenessParams(seriesModel)) {\n    return;\n  }\n\n  var key = getKeyOfEdges(n1, n2, seriesModel);\n  var edgeMap = seriesModel.__edgeMap;\n  var oppositeEdges = edgeMap[getOppositeKey(key)]; // set direction\n\n  if (edgeMap[key] && !oppositeEdges) {\n    edgeMap[key].isForward = true;\n  } else if (oppositeEdges && edgeMap[key]) {\n    oppositeEdges.isForward = true;\n    edgeMap[key].isForward = false;\n  }\n\n  edgeMap[key] = edgeMap[key] || [];\n  edgeMap[key].push(index);\n}\n/**\n * get curvature for edge\n * @param edge\n * @param {module:echarts/model/SeriesModel} seriesModel\n * @param index\n */\n\n\nfunction getCurvenessForEdge(edge, seriesModel, index, needReverse) {\n  var autoCurvenessParams = getAutoCurvenessParams(seriesModel);\n  var isArrayParam = zrUtil.isArray(autoCurvenessParams);\n\n  if (!autoCurvenessParams) {\n    return null;\n  }\n\n  var edgeArray = getEdgeFromMap(edge, seriesModel);\n\n  if (!edgeArray) {\n    return null;\n  }\n\n  var edgeIndex = -1;\n\n  for (var i = 0; i < edgeArray.length; i++) {\n    if (edgeArray[i] === index) {\n      edgeIndex = i;\n      break;\n    }\n  } // if totalLen is Longer createCurveness\n\n\n  var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);\n  createCurveness(seriesModel, totalLen);\n  edge.lineStyle = edge.lineStyle || {}; // if is opposite edge, must set curvenss to opposite number\n\n  var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);\n  var curvenessList = seriesModel.__curvenessList; // if pass array no need parity\n\n  var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;\n\n  if (!edgeArray.isForward) {\n    // the opposite edge show outside\n    var oppositeKey = getOppositeKey(curKey);\n    var len = getEdgeMapLengthWithKey(oppositeKey, seriesModel);\n    var resValue = curvenessList[edgeIndex + len + parityCorrection]; // isNeedReverse, simple, force type need reverse the curveness in the junction of the forword and the opposite\n\n    if (needReverse) {\n      // set as array may make the parity handle with the len of opposite\n      if (isArrayParam) {\n        if (autoCurvenessParams && autoCurvenessParams[0] === 0) {\n          return (len + parityCorrection) % 2 ? resValue : -resValue;\n        } else {\n          return ((len % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;\n        }\n      } else {\n        return (len + parityCorrection) % 2 ? resValue : -resValue;\n      }\n    } else {\n      return curvenessList[edgeIndex + len + parityCorrection];\n    }\n  } else {\n    return curvenessList[parityCorrection + edgeIndex];\n  }\n}\n\nexports.initCurvenessList = initCurvenessList;\nexports.createEdgeMapForCurveness = createEdgeMapForCurveness;\nexports.getCurvenessForEdge = getCurvenessForEdge;\n\n/***/ }),\n/* 339 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar textContain = __webpack_require__(108);\n\nvar formatUtil = __webpack_require__(50);\n\nvar matrix = __webpack_require__(89);\n\nvar axisHelper = __webpack_require__(122);\n\nvar AxisBuilder = __webpack_require__(156);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/model/Model} axisPointerModel\n */\nfunction buildElStyle(axisPointerModel) {\n  var axisPointerType = axisPointerModel.get('type');\n  var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\n  var style;\n\n  if (axisPointerType === 'line') {\n    style = styleModel.getLineStyle();\n    style.fill = null;\n  } else if (axisPointerType === 'shadow') {\n    style = styleModel.getAreaStyle();\n    style.stroke = null;\n  }\n\n  return style;\n}\n/**\n * @param {Function} labelPos {align, verticalAlign, position}\n */\n\n\nfunction buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\n  var value = axisPointerModel.get('value');\n  var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\n    precision: axisPointerModel.get('label.precision'),\n    formatter: axisPointerModel.get('label.formatter')\n  });\n  var labelModel = axisPointerModel.getModel('label');\n  var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);\n  var font = labelModel.getFont();\n  var textRect = textContain.getBoundingRect(text, font);\n  var position = labelPos.position;\n  var width = textRect.width + paddings[1] + paddings[3];\n  var height = textRect.height + paddings[0] + paddings[2]; // Adjust by align.\n\n  var align = labelPos.align;\n  align === 'right' && (position[0] -= width);\n  align === 'center' && (position[0] -= width / 2);\n  var verticalAlign = labelPos.verticalAlign;\n  verticalAlign === 'bottom' && (position[1] -= height);\n  verticalAlign === 'middle' && (position[1] -= height / 2); // Not overflow ec container\n\n  confineInContainer(position, width, height, api);\n  var bgColor = labelModel.get('backgroundColor');\n\n  if (!bgColor || bgColor === 'auto') {\n    bgColor = axisModel.get('axisLine.lineStyle.color');\n  }\n\n  elOption.label = {\n    shape: {\n      x: 0,\n      y: 0,\n      width: width,\n      height: height,\n      r: labelModel.get('borderRadius')\n    },\n    position: position.slice(),\n    // TODO: rich\n    style: {\n      text: text,\n      textFont: font,\n      textFill: labelModel.getTextColor(),\n      textPosition: 'inside',\n      textPadding: paddings,\n      fill: bgColor,\n      stroke: labelModel.get('borderColor') || 'transparent',\n      lineWidth: labelModel.get('borderWidth') || 0,\n      shadowBlur: labelModel.get('shadowBlur'),\n      shadowColor: labelModel.get('shadowColor'),\n      shadowOffsetX: labelModel.get('shadowOffsetX'),\n      shadowOffsetY: labelModel.get('shadowOffsetY')\n    },\n    // Lable should be over axisPointer.\n    z2: 10\n  };\n} // Do not overflow ec container\n\n\nfunction confineInContainer(position, width, height, api) {\n  var viewWidth = api.getWidth();\n  var viewHeight = api.getHeight();\n  position[0] = Math.min(position[0] + width, viewWidth) - width;\n  position[1] = Math.min(position[1] + height, viewHeight) - height;\n  position[0] = Math.max(position[0], 0);\n  position[1] = Math.max(position[1], 0);\n}\n/**\n * @param {number} value\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} opt\n * @param {Array.<Object>} seriesDataIndices\n * @param {number|string} opt.precision 'auto' or a number\n * @param {string|Function} opt.formatter label formatter\n */\n\n\nfunction getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\n  value = axis.scale.parse(value);\n  var text = axis.scale.getLabel( // If `precision` is set, width can be fixed (like '12.00500'), which\n  // helps to debounce when when moving label.\n  value, {\n    precision: opt.precision\n  });\n  var formatter = opt.formatter;\n\n  if (formatter) {\n    var params = {\n      value: axisHelper.getAxisRawValue(axis, value),\n      axisDimension: axis.dim,\n      axisIndex: axis.index,\n      seriesData: []\n    };\n    zrUtil.each(seriesDataIndices, function (idxItem) {\n      var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n      var dataIndex = idxItem.dataIndexInside;\n      var dataParams = series && series.getDataParams(dataIndex);\n      dataParams && params.seriesData.push(dataParams);\n    });\n\n    if (zrUtil.isString(formatter)) {\n      text = formatter.replace('{value}', text);\n    } else if (zrUtil.isFunction(formatter)) {\n      text = formatter(params);\n    }\n  }\n\n  return text;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @param {number} value\n * @param {Object} layoutInfo {\n *  rotation, position, labelOffset, labelDirection, labelMargin\n * }\n */\n\n\nfunction getTransformedPosition(axis, value, layoutInfo) {\n  var transform = matrix.create();\n  matrix.rotate(transform, transform, layoutInfo.rotation);\n  matrix.translate(transform, transform, layoutInfo.position);\n  return graphic.applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform);\n}\n\nfunction buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\n  var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\n  layoutInfo.labelMargin = axisPointerModel.get('label.margin');\n  buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\n    position: getTransformedPosition(axisModel.axis, value, layoutInfo),\n    align: textLayout.textAlign,\n    verticalAlign: textLayout.textVerticalAlign\n  });\n}\n/**\n * @param {Array.<number>} p1\n * @param {Array.<number>} p2\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeLineShape(p1, p2, xDimIndex) {\n  xDimIndex = xDimIndex || 0;\n  return {\n    x1: p1[xDimIndex],\n    y1: p1[1 - xDimIndex],\n    x2: p2[xDimIndex],\n    y2: p2[1 - xDimIndex]\n  };\n}\n/**\n * @param {Array.<number>} xy\n * @param {Array.<number>} wh\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeRectShape(xy, wh, xDimIndex) {\n  xDimIndex = xDimIndex || 0;\n  return {\n    x: xy[xDimIndex],\n    y: xy[1 - xDimIndex],\n    width: wh[xDimIndex],\n    height: wh[1 - xDimIndex]\n  };\n}\n\nfunction makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\n  return {\n    cx: cx,\n    cy: cy,\n    r0: r0,\n    r: r,\n    startAngle: startAngle,\n    endAngle: endAngle,\n    clockwise: true\n  };\n}\n\nexports.buildElStyle = buildElStyle;\nexports.buildLabelElOption = buildLabelElOption;\nexports.getValueLabel = getValueLabel;\nexports.getTransformedPosition = getTransformedPosition;\nexports.buildCartesianSingleLabelElOption = buildCartesianSingleLabelElOption;\nexports.makeLineShape = makeLineShape;\nexports.makeRectShape = makeRectShape;\nexports.makeSectorShape = makeSectorShape;\n\n/***/ }),\n/* 340 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar VisualMapping = __webpack_require__(184);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Visual solution, for consistent option specification.\n */\nvar each = zrUtil.each;\n\nfunction hasKeys(obj) {\n  if (obj) {\n    for (var name in obj) {\n      if (obj.hasOwnProperty(name)) {\n        return true;\n      }\n    }\n  }\n}\n/**\n * @param {Object} option\n * @param {Array.<string>} stateList\n * @param {Function} [supplementVisualOption]\n * @return {Object} visualMappings <state, <visualType, module:echarts/visual/VisualMapping>>\n */\n\n\nfunction createVisualMappings(option, stateList, supplementVisualOption) {\n  var visualMappings = {};\n  each(stateList, function (state) {\n    var mappings = visualMappings[state] = createMappings();\n    each(option[state], function (visualData, visualType) {\n      if (!VisualMapping.isValidType(visualType)) {\n        return;\n      }\n\n      var mappingOption = {\n        type: visualType,\n        visual: visualData\n      };\n      supplementVisualOption && supplementVisualOption(mappingOption, state);\n      mappings[visualType] = new VisualMapping(mappingOption); // Prepare a alpha for opacity, for some case that opacity\n      // is not supported, such as rendering using gradient color.\n\n      if (visualType === 'opacity') {\n        mappingOption = zrUtil.clone(mappingOption);\n        mappingOption.type = 'colorAlpha';\n        mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);\n      }\n    });\n  });\n  return visualMappings;\n\n  function createMappings() {\n    var Creater = function () {}; // Make sure hidden fields will not be visited by\n    // object iteration (with hasOwnProperty checking).\n\n\n    Creater.prototype.__hidden = Creater.prototype;\n    var obj = new Creater();\n    return obj;\n  }\n}\n/**\n * @param {Object} thisOption\n * @param {Object} newOption\n * @param {Array.<string>} keys\n */\n\n\nfunction replaceVisualOption(thisOption, newOption, keys) {\n  // Visual attributes merge is not supported, otherwise it\n  // brings overcomplicated merge logic. See #2853. So if\n  // newOption has anyone of these keys, all of these keys\n  // will be reset. Otherwise, all keys remain.\n  var has;\n  zrUtil.each(keys, function (key) {\n    if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n      has = true;\n    }\n  });\n  has && zrUtil.each(keys, function (key) {\n    if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n      thisOption[key] = zrUtil.clone(newOption[key]);\n    } else {\n      delete thisOption[key];\n    }\n  });\n}\n/**\n * @param {Array.<string>} stateList\n * @param {Object} visualMappings <state, Object.<visualType, module:echarts/visual/VisualMapping>>\n * @param {module:echarts/data/List} list\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {object} [scope] Scope for getValueState\n * @param {string} [dimension] Concrete dimension, if used.\n */\n// ???! handle brush?\n\n\nfunction applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {\n  var visualTypesMap = {};\n  zrUtil.each(stateList, function (state) {\n    var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n    visualTypesMap[state] = visualTypes;\n  });\n  var dataIndex;\n\n  function getVisual(key) {\n    return data.getItemVisual(dataIndex, key);\n  }\n\n  function setVisual(key, value) {\n    data.setItemVisual(dataIndex, key, value);\n  }\n\n  if (dimension == null) {\n    data.each(eachItem);\n  } else {\n    data.each([dimension], eachItem);\n  }\n\n  function eachItem(valueOrIndex, index) {\n    dataIndex = dimension == null ? valueOrIndex : index;\n    var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n    if (rawDataItem && rawDataItem.visualMap === false) {\n      return;\n    }\n\n    var valueState = getValueState.call(scope, valueOrIndex);\n    var mappings = visualMappings[valueState];\n    var visualTypes = visualTypesMap[valueState];\n\n    for (var i = 0, len = visualTypes.length; i < len; i++) {\n      var type = visualTypes[i];\n      mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);\n    }\n  }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Array.<string>} stateList\n * @param {Object} visualMappings <state, Object.<visualType, module:echarts/visual/VisualMapping>>\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {number} [dim] dimension or dimension index.\n */\n\n\nfunction incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {\n  var visualTypesMap = {};\n  zrUtil.each(stateList, function (state) {\n    var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n    visualTypesMap[state] = visualTypes;\n  });\n\n  function progress(params, data) {\n    if (dim != null) {\n      dim = data.getDimension(dim);\n    }\n\n    function getVisual(key) {\n      return data.getItemVisual(dataIndex, key);\n    }\n\n    function setVisual(key, value) {\n      data.setItemVisual(dataIndex, key, value);\n    }\n\n    var dataIndex;\n\n    while ((dataIndex = params.next()) != null) {\n      var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n      if (rawDataItem && rawDataItem.visualMap === false) {\n        continue;\n      }\n\n      var value = dim != null ? data.get(dim, dataIndex, true) : dataIndex;\n      var valueState = getValueState(value);\n      var mappings = visualMappings[valueState];\n      var visualTypes = visualTypesMap[valueState];\n\n      for (var i = 0, len = visualTypes.length; i < len; i++) {\n        var type = visualTypes[i];\n        mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);\n      }\n    }\n  }\n\n  return {\n    progress: progress\n  };\n}\n\nexports.createVisualMappings = createVisualMappings;\nexports.replaceVisualOption = replaceVisualOption;\nexports.applyVisual = applyVisual;\nexports.incrementalApplyVisual = incrementalApplyVisual;\n\n/***/ }),\n/* 341 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(633);\nvar enumBugKeys = __webpack_require__(443);\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n/* 342 */\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n\n/***/ }),\n/* 343 */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n/* 344 */\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n/* 345 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseMatches = __webpack_require__(1548),\n    baseMatchesProperty = __webpack_require__(1551),\n    identity = __webpack_require__(272),\n    isArray = __webpack_require__(97),\n    property = __webpack_require__(1554);\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\n\n/***/ }),\n/* 346 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n    this.$rules = {\n        \"start\": [{\n                token: \"comment.doc.tag\",\n                regex: \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n            },\n            DocCommentHighlightRules.getTagRule(),\n            {\n                defaultToken: \"comment.doc\",\n                caseInsensitive: true\n            }]\n    };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n    return {\n        token: \"comment.doc.tag.storage.type\",\n        regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n    };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n    return {\n        token: \"comment.doc\",\n        regex: \"\\\\/\\\\*(?=\\\\*)\",\n        next: start\n    };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n    return {\n        token: \"comment.doc\",\n        regex: \"\\\\*\\\\/\",\n        next: start\n    };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n    var keywordMapper = this.createKeywordMapper({\n        \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n            \"Namespace|QName|XML|XMLList|\" + // E4X\n            \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n            \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n            \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n            \"SyntaxError|TypeError|URIError|\" +\n            \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n            \"isNaN|parseFloat|parseInt|\" +\n            \"JSON|Math|\" + // Other\n            \"this|arguments|prototype|window|document\",\n        \"keyword\": \"const|yield|import|get|set|async|await|\" +\n            \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n            \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n            \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n            \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n        \"storage.type\": \"const|let|var|function\",\n        \"constant.language\": \"null|Infinity|NaN|undefined\",\n        \"support.function\": \"alert\",\n        \"constant.language.boolean\": \"true|false\"\n    }, \"identifier\");\n    var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n    var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n        \"u[0-9a-fA-F]{4}|\" + // unicode\n        \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n        \"[0-2][0-7]{0,2}|\" + // oct\n        \"3[0-7][0-7]?|\" + // oct\n        \"[4-7][0-7]?|\" + //oct\n        \".)\";\n    this.$rules = {\n        \"no_regex\": [\n            DocCommentHighlightRules.getStartRule(\"doc-start\"),\n            comments(\"no_regex\"),\n            {\n                token: \"string\",\n                regex: \"'(?=.)\",\n                next: \"qstring\"\n            }, {\n                token: \"string\",\n                regex: '\"(?=.)',\n                next: \"qqstring\"\n            }, {\n                token: \"constant.numeric\",\n                regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n            }, {\n                token: \"constant.numeric\",\n                regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"support.function\",\n                    \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n                    \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n                    \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n                    \"keyword.operator\", \"text\",\n                    \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"entity.name.function\", \"text\", \"punctuation.operator\",\n                    \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: \"keyword\",\n                regex: \"from(?=\\\\s*('|\\\"))\"\n            }, {\n                token: \"keyword\",\n                regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n                next: \"start\"\n            }, {\n                token: [\"support.constant\"],\n                regex: /that\\b/\n            }, {\n                token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n                regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n            }, {\n                token: keywordMapper,\n                regex: identifierRe\n            }, {\n                token: \"punctuation.operator\",\n                regex: /[.](?![.])/,\n                next: \"property\"\n            }, {\n                token: \"storage.type\",\n                regex: /=>/,\n                next: \"start\"\n            }, {\n                token: \"keyword.operator\",\n                regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n                next: \"start\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: /[?:,;.]/,\n                next: \"start\"\n            }, {\n                token: \"paren.lparen\",\n                regex: /[\\[({]/,\n                next: \"start\"\n            }, {\n                token: \"paren.rparen\",\n                regex: /[\\])}]/\n            }, {\n                token: \"comment\",\n                regex: /^#!.*$/\n            }\n        ],\n        property: [{\n                token: \"text\",\n                regex: \"\\\\s+\"\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n                    \"keyword.operator\", \"text\",\n                    \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: /[.](?![.])/\n            }, {\n                token: \"support.function\",\n                regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n            }, {\n                token: \"support.function.dom\",\n                regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n            }, {\n                token: \"support.constant\",\n                regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n            }, {\n                token: \"identifier\",\n                regex: identifierRe\n            }, {\n                regex: \"\",\n                token: \"empty\",\n                next: \"no_regex\"\n            }\n        ],\n        \"start\": [\n            DocCommentHighlightRules.getStartRule(\"doc-start\"),\n            comments(\"start\"),\n            {\n                token: \"string.regexp\",\n                regex: \"\\\\/\",\n                next: \"regex\"\n            }, {\n                token: \"text\",\n                regex: \"\\\\s+|^$\",\n                next: \"start\"\n            }, {\n                token: \"empty\",\n                regex: \"\",\n                next: \"no_regex\"\n            }\n        ],\n        \"regex\": [\n            {\n                token: \"regexp.keyword.operator\",\n                regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n            }, {\n                token: \"string.regexp\",\n                regex: \"/[sxngimy]*\",\n                next: \"no_regex\"\n            }, {\n                token: \"invalid\",\n                regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n            }, {\n                token: \"constant.language.escape\",\n                regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n            }, {\n                token: \"constant.language.delimiter\",\n                regex: /\\|/\n            }, {\n                token: \"constant.language.escape\",\n                regex: /\\[\\^?/,\n                next: \"regex_character_class\"\n            }, {\n                token: \"empty\",\n                regex: \"$\",\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string.regexp\"\n            }\n        ],\n        \"regex_character_class\": [\n            {\n                token: \"regexp.charclass.keyword.operator\",\n                regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n            }, {\n                token: \"constant.language.escape\",\n                regex: \"]\",\n                next: \"regex\"\n            }, {\n                token: \"constant.language.escape\",\n                regex: \"-\"\n            }, {\n                token: \"empty\",\n                regex: \"$\",\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string.regexp.charachterclass\"\n            }\n        ],\n        \"function_arguments\": [\n            {\n                token: \"variable.parameter\",\n                regex: identifierRe\n            }, {\n                token: \"punctuation.operator\",\n                regex: \"[, ]+\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: \"$\"\n            }, {\n                token: \"empty\",\n                regex: \"\",\n                next: \"no_regex\"\n            }\n        ],\n        \"qqstring\": [\n            {\n                token: \"constant.language.escape\",\n                regex: escapedRe\n            }, {\n                token: \"string\",\n                regex: \"\\\\\\\\$\",\n                consumeLineEnd: true\n            }, {\n                token: \"string\",\n                regex: '\"|$',\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string\"\n            }\n        ],\n        \"qstring\": [\n            {\n                token: \"constant.language.escape\",\n                regex: escapedRe\n            }, {\n                token: \"string\",\n                regex: \"\\\\\\\\$\",\n                consumeLineEnd: true\n            }, {\n                token: \"string\",\n                regex: \"'|$\",\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string\"\n            }\n        ]\n    };\n    if (!options || !options.noES6) {\n        this.$rules.no_regex.unshift({\n            regex: \"[{}]\", onMatch: function (val, state, stack) {\n                this.next = val == \"{\" ? this.nextState : \"\";\n                if (val == \"{\" && stack.length) {\n                    stack.unshift(\"start\", state);\n                }\n                else if (val == \"}\" && stack.length) {\n                    stack.shift();\n                    this.next = stack.shift();\n                    if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n                        return \"paren.quasi.end\";\n                }\n                return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n            },\n            nextState: \"start\"\n        }, {\n            token: \"string.quasi.start\",\n            regex: /`/,\n            push: [{\n                    token: \"constant.language.escape\",\n                    regex: escapedRe\n                }, {\n                    token: \"paren.quasi.start\",\n                    regex: /\\${/,\n                    push: \"start\"\n                }, {\n                    token: \"string.quasi.end\",\n                    regex: /`/,\n                    next: \"pop\"\n                }, {\n                    defaultToken: \"string.quasi\"\n                }]\n        });\n        if (!options || options.jsx != false)\n            JSX.call(this);\n    }\n    this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n    this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n    var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n    var jsxTag = {\n        onMatch: function (val, state, stack) {\n            var offset = val.charAt(1) == \"/\" ? 2 : 1;\n            if (offset == 1) {\n                if (state != this.nextState)\n                    stack.unshift(this.next, this.nextState, 0);\n                else\n                    stack.unshift(this.next);\n                stack[2]++;\n            }\n            else if (offset == 2) {\n                if (state == this.nextState) {\n                    stack[1]--;\n                    if (!stack[1] || stack[1] < 0) {\n                        stack.shift();\n                        stack.shift();\n                    }\n                }\n            }\n            return [{\n                    type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n                    value: val.slice(0, offset)\n                }, {\n                    type: \"meta.tag.tag-name.xml\",\n                    value: val.substr(offset)\n                }];\n        },\n        regex: \"</?\" + tagRegex + \"\",\n        next: \"jsxAttributes\",\n        nextState: \"jsx\"\n    };\n    this.$rules.start.unshift(jsxTag);\n    var jsxJsRule = {\n        regex: \"{\",\n        token: \"paren.quasi.start\",\n        push: \"start\"\n    };\n    this.$rules.jsx = [\n        jsxJsRule,\n        jsxTag,\n        { include: \"reference\" },\n        { defaultToken: \"string\" }\n    ];\n    this.$rules.jsxAttributes = [{\n            token: \"meta.tag.punctuation.tag-close.xml\",\n            regex: \"/?>\",\n            onMatch: function (value, currentState, stack) {\n                if (currentState == stack[0])\n                    stack.shift();\n                if (value.length == 2) {\n                    if (stack[0] == this.nextState)\n                        stack[1]--;\n                    if (!stack[1] || stack[1] < 0) {\n                        stack.splice(0, 2);\n                    }\n                }\n                this.next = stack[0] || \"start\";\n                return [{ type: this.token, value: value }];\n            },\n            nextState: \"jsx\"\n        },\n        jsxJsRule,\n        comments(\"jsxAttributes\"),\n        {\n            token: \"entity.other.attribute-name.xml\",\n            regex: tagRegex\n        }, {\n            token: \"keyword.operator.attribute-equals.xml\",\n            regex: \"=\"\n        }, {\n            token: \"text.tag-whitespace.xml\",\n            regex: \"\\\\s+\"\n        }, {\n            token: \"string.attribute-value.xml\",\n            regex: \"'\",\n            stateName: \"jsx_attr_q\",\n            push: [\n                { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n                { include: \"reference\" },\n                { defaultToken: \"string.attribute-value.xml\" }\n            ]\n        }, {\n            token: \"string.attribute-value.xml\",\n            regex: '\"',\n            stateName: \"jsx_attr_qq\",\n            push: [\n                { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n                { include: \"reference\" },\n                { defaultToken: \"string.attribute-value.xml\" }\n            ]\n        },\n        jsxTag\n    ];\n    this.$rules.reference = [{\n            token: \"constant.language.escape.reference.xml\",\n            regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n        }];\n}\nfunction comments(next) {\n    return [\n        {\n            token: \"comment\",\n            regex: /\\/\\*/,\n            next: [\n                DocCommentHighlightRules.getTagRule(),\n                { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n                { defaultToken: \"comment\", caseInsensitive: true }\n            ]\n        }, {\n            token: \"comment\",\n            regex: \"\\\\/\\\\/\",\n            next: [\n                DocCommentHighlightRules.getTagRule(),\n                { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n                { defaultToken: \"comment\", caseInsensitive: true }\n            ]\n        }\n    ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n    this.checkOutdent = function (line, input) {\n        if (!/^\\s+$/.test(line))\n            return false;\n        return /^\\s*\\}/.test(input);\n    };\n    this.autoOutdent = function (doc, row) {\n        var line = doc.getLine(row);\n        var match = line.match(/^(\\s*\\})/);\n        if (!match)\n            return 0;\n        var column = match[1].length;\n        var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n        if (!openBracePos || openBracePos.row == row)\n            return 0;\n        var indent = this.$getIndent(doc.getLine(openBracePos.row));\n        doc.replace(new Range(row, 0, row, column - 1), indent);\n    };\n    this.$getIndent = function (line) {\n        return line.match(/^\\s*/)[0];\n    };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n    if (commentRegex) {\n        this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n        this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n    }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n    this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n    this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n    this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n    this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n    this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n    this._getFoldWidgetBase = this.getFoldWidget;\n    this.getFoldWidget = function (session, foldStyle, row) {\n        var line = session.getLine(row);\n        if (this.singleLineBlockCommentRe.test(line)) {\n            if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n                return \"\";\n        }\n        var fw = this._getFoldWidgetBase(session, foldStyle, row);\n        if (!fw && this.startRegionRe.test(line))\n            return \"start\"; // lineCommentRegionStart\n        return fw;\n    };\n    this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n        var line = session.getLine(row);\n        if (this.startRegionRe.test(line))\n            return this.getCommentRegionBlock(session, line, row);\n        var match = line.match(this.foldingStartMarker);\n        if (match) {\n            var i = match.index;\n            if (match[1])\n                return this.openingBracketBlock(session, match[1], row, i);\n            var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n            if (range && !range.isMultiLine()) {\n                if (forceMultiline) {\n                    range = this.getSectionRange(session, row);\n                }\n                else if (foldStyle != \"all\")\n                    range = null;\n            }\n            return range;\n        }\n        if (foldStyle === \"markbegin\")\n            return;\n        var match = line.match(this.foldingStopMarker);\n        if (match) {\n            var i = match.index + match[0].length;\n            if (match[1])\n                return this.closingBracketBlock(session, match[1], row, i);\n            return session.getCommentFoldRange(row, i, -1);\n        }\n    };\n    this.getSectionRange = function (session, row) {\n        var line = session.getLine(row);\n        var startIndent = line.search(/\\S/);\n        var startRow = row;\n        var startColumn = line.length;\n        row = row + 1;\n        var endRow = row;\n        var maxRow = session.getLength();\n        while (++row < maxRow) {\n            line = session.getLine(row);\n            var indent = line.search(/\\S/);\n            if (indent === -1)\n                continue;\n            if (startIndent > indent)\n                break;\n            var subRange = this.getFoldWidgetRange(session, \"all\", row);\n            if (subRange) {\n                if (subRange.start.row <= startRow) {\n                    break;\n                }\n                else if (subRange.isMultiLine()) {\n                    row = subRange.end.row;\n                }\n                else if (startIndent == indent) {\n                    break;\n                }\n            }\n            endRow = row;\n        }\n        return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n    };\n    this.getCommentRegionBlock = function (session, line, row) {\n        var startColumn = line.search(/\\s*$/);\n        var maxRow = session.getLength();\n        var startRow = row;\n        var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n        var depth = 1;\n        while (++row < maxRow) {\n            line = session.getLine(row);\n            var m = re.exec(line);\n            if (!m)\n                continue;\n            if (m[1])\n                depth--;\n            else\n                depth++;\n            if (!depth)\n                break;\n        }\n        var endRow = row;\n        if (endRow > startRow) {\n            return new Range(startRow, startColumn, endRow, line.length);\n        }\n    };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n    this.HighlightRules = JavaScriptHighlightRules;\n    this.$outdent = new MatchingBraceOutdent();\n    this.$behaviour = new CstyleBehaviour();\n    this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n    this.lineCommentStart = \"//\";\n    this.blockComment = { start: \"/*\", end: \"*/\" };\n    this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n    this.getNextLineIndent = function (state, line, tab) {\n        var indent = this.$getIndent(line);\n        var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n        var tokens = tokenizedLine.tokens;\n        var endState = tokenizedLine.state;\n        if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n            return indent;\n        }\n        if (state == \"start\" || state == \"no_regex\") {\n            var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n            if (match) {\n                indent += tab;\n            }\n        }\n        else if (state == \"doc-start\") {\n            if (endState == \"start\" || endState == \"no_regex\") {\n                return \"\";\n            }\n            var match = line.match(/^\\s*(\\/?)\\*/);\n            if (match) {\n                if (match[1]) {\n                    indent += \" \";\n                }\n                indent += \"* \";\n            }\n        }\n        return indent;\n    };\n    this.checkOutdent = function (state, line, input) {\n        return this.$outdent.checkOutdent(line, input);\n    };\n    this.autoOutdent = function (state, doc, row) {\n        this.$outdent.autoOutdent(doc, row);\n    };\n    this.createWorker = function (session) {\n        var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n        worker.attachToDocument(session.getDocument());\n        worker.on(\"annotate\", function (results) {\n            session.setAnnotations(results.data);\n        });\n        worker.on(\"terminate\", function () {\n            session.clearAnnotations();\n        });\n        return worker;\n    };\n    this.$id = \"ace/mode/javascript\";\n    this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});                (function() {\n                    ace.require([\"ace/mode/javascript\"], function(m) {\n                        if ( true && module) {\n                            module.exports = m;\n                        }\n                    });\n                })();\n            \n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 347 */\n/***/ (function(module, exports) {\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _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  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 348 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(1320);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(1330);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n  return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n  return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n/***/ }),\n/* 349 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ContainerRender; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\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 _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\n\n\n\n\nvar ContainerRender = /*#__PURE__*/function (_React$Component) {\n  _inherits(ContainerRender, _React$Component);\n\n  var _super = _createSuper(ContainerRender);\n\n  function ContainerRender() {\n    var _this;\n\n    _classCallCheck(this, ContainerRender);\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 = _super.call.apply(_super, [this].concat(args));\n\n    _this.removeContainer = function () {\n      if (_this.container) {\n        react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.unmountComponentAtNode(_this.container);\n\n        _this.container.parentNode.removeChild(_this.container);\n\n        _this.container = null;\n      }\n    };\n\n    _this.renderComponent = function (props, ready) {\n      var _this$props = _this.props,\n          visible = _this$props.visible,\n          getComponent = _this$props.getComponent,\n          forceRender = _this$props.forceRender,\n          getContainer = _this$props.getContainer,\n          parent = _this$props.parent;\n\n      if (visible || parent._component || forceRender) {\n        if (!_this.container) {\n          _this.container = getContainer();\n        }\n\n        react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.unstable_renderSubtreeIntoContainer(parent, getComponent(props), _this.container, function callback() {\n          if (ready) {\n            ready.call(this);\n          }\n        });\n      }\n    };\n\n    return _this;\n  }\n\n  _createClass(ContainerRender, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this.props.autoMount) {\n        this.renderComponent();\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      if (this.props.autoMount) {\n        this.renderComponent();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.props.autoDestroy) {\n        this.removeContainer();\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return this.props.children({\n        renderComponent: this.renderComponent,\n        removeContainer: this.removeContainer\n      });\n    }\n  }]);\n\n  return ContainerRender;\n}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);\n\nContainerRender.propTypes = {\n  autoMount: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n  autoDestroy: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n  visible: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n  forceRender: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n  parent: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.any,\n  getComponent: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n  getContainer: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n  children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired\n};\nContainerRender.defaultProps = {\n  autoMount: true,\n  autoDestroy: true,\n  forceRender: false\n};\n\n\n/***/ }),\n/* 350 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Portal; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\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 _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\n\n\n\n\nvar Portal = /*#__PURE__*/function (_React$Component) {\n  _inherits(Portal, _React$Component);\n\n  var _super = _createSuper(Portal);\n\n  function Portal() {\n    _classCallCheck(this, Portal);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Portal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.createContainer();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var didUpdate = this.props.didUpdate;\n\n      if (didUpdate) {\n        didUpdate(prevProps);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.removeContainer();\n    }\n  }, {\n    key: \"createContainer\",\n    value: function createContainer() {\n      this._container = this.props.getContainer();\n      this.forceUpdate();\n    }\n  }, {\n    key: \"removeContainer\",\n    value: function removeContainer() {\n      if (this._container) {\n        this._container.parentNode.removeChild(this._container);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      if (this._container) {\n        return react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.createPortal(this.props.children, this._container);\n      }\n\n      return null;\n    }\n  }]);\n\n  return Portal;\n}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);\n\nPortal.propTypes = {\n  getContainer: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n  children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.node.isRequired,\n  didUpdate: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func\n};\n\n\n/***/ }),\n/* 351 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar unsafeLifecyclesPolyfill = function unsafeLifecyclesPolyfill(Component) {\n  var prototype = Component.prototype;\n\n  if (!prototype || !prototype.isReactComponent) {\n    throw new Error('Can only polyfill class components');\n  } // only handle componentWillReceiveProps\n\n\n  if (typeof prototype.componentWillReceiveProps !== 'function') {\n    return Component;\n  } // In React 16.9, React.Profiler was introduced together with UNSAFE_componentWillReceiveProps\n  // https://reactjs.org/blog/2019/08/08/react-v16.9.0.html#performance-measurements-with-reactprofiler\n\n\n  if (!react__WEBPACK_IMPORTED_MODULE_0___default.a.Profiler) {\n    return Component;\n  } // Here polyfill get started\n\n\n  prototype.UNSAFE_componentWillReceiveProps = prototype.componentWillReceiveProps;\n  delete prototype.componentWillReceiveProps;\n  return Component;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (unsafeLifecyclesPolyfill);\n\n/***/ }),\n/* 352 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return createChainedFunction; });\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 * @returns {function|null}\n */\nfunction createChainedFunction() {\n  var args = [].slice.call(arguments, 0);\n\n  if (args.length === 1) {\n    return args[0];\n  }\n\n  return function chainedFunction() {\n    for (var i = 0; i < args.length; i++) {\n      if (args[i] && args[i].apply) {\n        args[i].apply(this, arguments);\n      }\n    }\n  };\n}\n\n/***/ }),\n/* 353 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (freeGlobal);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91)))\n\n/***/ }),\n/* 354 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = __webpack_require__(1537);\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = __webpack_require__(1540);\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function get(object, property, receiver) {\n  if (object === null) object = Function.prototype;\n  var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n  if (desc === undefined) {\n    var parent = (0, _getPrototypeOf2.default)(object);\n\n    if (parent === null) {\n      return undefined;\n    } else {\n      return get(parent, property, receiver);\n    }\n  } else if (\"value\" in desc) {\n    return desc.value;\n  } else {\n    var getter = desc.get;\n\n    if (getter === undefined) {\n      return undefined;\n    }\n\n    return getter.call(receiver);\n  }\n};\n\n/***/ }),\n/* 355 */,\n/* 356 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar defineGlobalProperty = __webpack_require__(357);\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n/* 357 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n\n\n/***/ }),\n/* 358 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\nvar isCallable = __webpack_require__(43);\nvar hasOwn = __webpack_require__(44);\nvar DESCRIPTORS = __webpack_require__(30);\nvar CONFIGURABLE_FUNCTION_NAME = __webpack_require__(198).CONFIGURABLE;\nvar inspectSource = __webpack_require__(359);\nvar InternalStateModule = __webpack_require__(73);\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\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 (String(name).slice(0, 7) === 'Symbol(') {\n    name = '[' + String(name).replace(/^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 = TEMPLATE.join(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\n\n/***/ }),\n/* 359 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\nvar isCallable = __webpack_require__(43);\nvar store = __webpack_require__(356);\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\n\n/***/ }),\n/* 360 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(59);\nvar uncurryThis = __webpack_require__(20);\nvar getOwnPropertyNamesModule = __webpack_require__(148);\nvar getOwnPropertySymbolsModule = __webpack_require__(282);\nvar anObject = __webpack_require__(35);\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\n\n/***/ }),\n/* 361 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 362 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(41);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n/* 363 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(468);\nvar definePropertyModule = __webpack_require__(48);\nvar anObject = __webpack_require__(35);\nvar toIndexedObject = __webpack_require__(92);\nvar objectKeys = __webpack_require__(232);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/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\n\n/***/ }),\n/* 364 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = __webpack_require__(99);\nvar toIndexedObject = __webpack_require__(92);\nvar $getOwnPropertyNames = __webpack_require__(148).f;\nvar arraySlice = __webpack_require__(233);\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) == 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n\n/***/ }),\n/* 365 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar global = __webpack_require__(25);\nvar uncurryThis = __webpack_require__(20);\nvar hasOwn = __webpack_require__(44);\nvar isCallable = __webpack_require__(43);\nvar isPrototypeOf = __webpack_require__(113);\nvar toString = __webpack_require__(42);\nvar defineProperty = __webpack_require__(48).f;\nvar copyConstructorProperties = __webpack_require__(281);\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n  // Safari 12 bug\n  NativeSymbol().description !== undefined\n)) {\n  var EmptyStringDescriptionStore = {};\n  // wrap Symbol constructor for correct work with undefined description\n  var SymbolWrapper = function Symbol() {\n    var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n    var result = isPrototypeOf(SymbolPrototype, this)\n      ? new NativeSymbol(description)\n      // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n      : description === undefined ? NativeSymbol() : NativeSymbol(description);\n    if (description === '') EmptyStringDescriptionStore[result] = true;\n    return result;\n  };\n\n  copyConstructorProperties(SymbolWrapper, NativeSymbol);\n  SymbolWrapper.prototype = SymbolPrototype;\n  SymbolPrototype.constructor = SymbolWrapper;\n\n  var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n  var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\n  var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\n  var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n  var replace = uncurryThis(''.replace);\n  var stringSlice = uncurryThis(''.slice);\n\n  defineProperty(SymbolPrototype, 'description', {\n    configurable: true,\n    get: function description() {\n      var symbol = thisSymbolValue(this);\n      if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n      var string = symbolDescriptiveString(symbol);\n      var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n      return desc === '' ? undefined : desc;\n    }\n  });\n\n  $({ global: true, constructor: true, forced: true }, {\n    Symbol: SymbolWrapper\n  });\n}\n\n\n/***/ }),\n/* 366 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\nvar createPropertyDescriptor = __webpack_require__(112);\n\nmodule.exports = !fails(function () {\n  var error = Error('a');\n  if (!('stack' in error)) return true;\n  // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n  return error.stack !== 7;\n});\n\n\n/***/ }),\n/* 367 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n/* 368 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(41);\nvar Iterators = __webpack_require__(236);\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\n\n/***/ }),\n/* 369 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(47);\nvar toAbsoluteIndex = __webpack_require__(137);\nvar lengthOfArrayLike = __webpack_require__(53);\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\n\n/***/ }),\n/* 370 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar IS_PURE = __webpack_require__(69);\nvar FunctionName = __webpack_require__(198);\nvar isCallable = __webpack_require__(43);\nvar createIteratorConstructor = __webpack_require__(371);\nvar getPrototypeOf = __webpack_require__(115);\nvar setPrototypeOf = __webpack_require__(124);\nvar setToStringTag = __webpack_require__(102);\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar defineBuiltIn = __webpack_require__(62);\nvar wellKnownSymbol = __webpack_require__(41);\nvar Iterators = __webpack_require__(236);\nvar IteratorsCore = __webpack_require__(491);\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 in IterablePrototype) return IterablePrototype[KIND];\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    } 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\n\n/***/ }),\n/* 371 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(491).IteratorPrototype;\nvar create = __webpack_require__(101);\nvar createPropertyDescriptor = __webpack_require__(112);\nvar setToStringTag = __webpack_require__(102);\nvar Iterators = __webpack_require__(236);\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\n\n/***/ }),\n/* 372 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar isArray = __webpack_require__(149);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/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-x/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 $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n\n\n/***/ }),\n/* 373 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arraySlice = __webpack_require__(233);\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\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  } return array;\n};\n\nvar merge = function (array, left, right, 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  } return array;\n};\n\nmodule.exports = mergeSort;\n\n\n/***/ }),\n/* 374 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(135);\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n\n\n/***/ }),\n/* 375 */\n/***/ (function(module, exports) {\n\n// eslint-disable-next-line es-x/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n\n\n/***/ }),\n/* 376 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isConstructor = __webpack_require__(199);\nvar tryToString = __webpack_require__(169);\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n  if (isConstructor(argument)) return argument;\n  throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n\n/***/ }),\n/* 377 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = __webpack_require__(20);\nvar toLength = __webpack_require__(100);\nvar toString = __webpack_require__(42);\nvar $repeat = __webpack_require__(294);\nvar requireObjectCoercible = __webpack_require__(72);\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\n\n/***/ }),\n/* 378 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = __webpack_require__(16);\n\nmodule.exports = fails(function () {\n  if (typeof ArrayBuffer == 'function') {\n    var buffer = new ArrayBuffer(8);\n    // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe\n    if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n  }\n});\n\n\n/***/ }),\n/* 379 */\n/***/ (function(module, exports) {\n\n// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\n// eslint-disable-next-line es-x/no-math-sign -- safe\nmodule.exports = Math.sign || function sign(x) {\n  var n = +x;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return n == 0 || n != n ? n : n < 0 ? -1 : 1;\n};\n\n\n/***/ }),\n/* 380 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(39);\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es-x/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n\n/***/ }),\n/* 381 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar $values = __webpack_require__(506).values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n  values: function values(O) {\n    return $values(O);\n  }\n});\n\n\n/***/ }),\n/* 382 */\n/***/ (function(module, exports) {\n\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n\n\n/***/ }),\n/* 383 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar anObject = __webpack_require__(35);\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\n/***/ }),\n/* 384 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\nvar global = __webpack_require__(25);\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n\n\n/***/ }),\n/* 385 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isRegExp = __webpack_require__(246);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n\n\n/***/ }),\n/* 386 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(41);\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\n\n/***/ }),\n/* 387 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar PROPER_FUNCTION_NAME = __webpack_require__(198).PROPER;\nvar fails = __webpack_require__(16);\nvar whitespaces = __webpack_require__(300);\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\n\n/***/ }),\n/* 388 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable no-new -- required for testing */\nvar global = __webpack_require__(25);\nvar fails = __webpack_require__(16);\nvar checkCorrectnessOfIteration = __webpack_require__(289);\nvar NATIVE_ARRAY_BUFFER_VIEWS = __webpack_require__(45).NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n  Int8Array(1);\n}) || !fails(function () {\n  new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n  new Int8Array();\n  new Int8Array(null);\n  new Int8Array(1.5);\n  new Int8Array(iterable);\n}, true) || fails(function () {\n  // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n  return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n\n\n/***/ }),\n/* 389 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsEqualDeep = __webpack_require__(958),\n    isObjectLike = __webpack_require__(128);\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\n\n/***/ }),\n/* 390 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(175),\n    root = __webpack_require__(120);\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n/***/ }),\n/* 391 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(174),\n    isObject = __webpack_require__(106);\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\n\n/***/ }),\n/* 392 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar mapCacheClear = __webpack_require__(973),\n    mapCacheDelete = __webpack_require__(980),\n    mapCacheGet = __webpack_require__(982),\n    mapCacheHas = __webpack_require__(983),\n    mapCacheSet = __webpack_require__(984);\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\n\n/***/ }),\n/* 393 */\n/***/ (function(module, exports) {\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\n\n/***/ }),\n/* 394 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 395 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayFilter = __webpack_require__(991),\n    stubArray = __webpack_require__(542);\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\n\n/***/ }),\n/* 396 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsTypedArray = __webpack_require__(995),\n    baseUnary = __webpack_require__(320),\n    nodeUtil = __webpack_require__(398);\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\n\n/***/ }),\n/* 397 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 398 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(533);\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && 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\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 399 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 400 */\n/***/ (function(module, exports) {\n\n// https://github.com/mziccard/node-timsort\nvar DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\nfunction minRunLength(n) {\n  var r = 0;\n\n  while (n >= DEFAULT_MIN_MERGE) {\n    r |= n & 1;\n    n >>= 1;\n  }\n\n  return n + r;\n}\n\nfunction makeAscendingRun(array, lo, hi, compare) {\n  var runHi = lo + 1;\n\n  if (runHi === hi) {\n    return 1;\n  }\n\n  if (compare(array[runHi++], array[lo]) < 0) {\n    while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n      runHi++;\n    }\n\n    reverseRun(array, lo, runHi);\n  } else {\n    while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n      runHi++;\n    }\n  }\n\n  return runHi - lo;\n}\n\nfunction reverseRun(array, lo, hi) {\n  hi--;\n\n  while (lo < hi) {\n    var t = array[lo];\n    array[lo++] = array[hi];\n    array[hi--] = t;\n  }\n}\n\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n  if (start === lo) {\n    start++;\n  }\n\n  for (; start < hi; start++) {\n    var pivot = array[start];\n    var left = lo;\n    var right = start;\n    var mid;\n\n    while (left < right) {\n      mid = left + right >>> 1;\n\n      if (compare(pivot, array[mid]) < 0) {\n        right = mid;\n      } else {\n        left = mid + 1;\n      }\n    }\n\n    var n = start - left;\n\n    switch (n) {\n      case 3:\n        array[left + 3] = array[left + 2];\n\n      case 2:\n        array[left + 2] = array[left + 1];\n\n      case 1:\n        array[left + 1] = array[left];\n        break;\n\n      default:\n        while (n > 0) {\n          array[left + n] = array[left + n - 1];\n          n--;\n        }\n\n    }\n\n    array[left] = pivot;\n  }\n}\n\nfunction gallopLeft(value, array, start, length, hint, compare) {\n  var lastOffset = 0;\n  var maxOffset = 0;\n  var offset = 1;\n\n  if (compare(value, array[start + hint]) > 0) {\n    maxOffset = length - hint;\n\n    while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n      lastOffset = offset;\n      offset = (offset << 1) + 1;\n\n      if (offset <= 0) {\n        offset = maxOffset;\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset;\n    }\n\n    lastOffset += hint;\n    offset += hint;\n  } else {\n    maxOffset = hint + 1;\n\n    while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n      lastOffset = offset;\n      offset = (offset << 1) + 1;\n\n      if (offset <= 0) {\n        offset = maxOffset;\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset;\n    }\n\n    var tmp = lastOffset;\n    lastOffset = hint - offset;\n    offset = hint - tmp;\n  }\n\n  lastOffset++;\n\n  while (lastOffset < offset) {\n    var m = lastOffset + (offset - lastOffset >>> 1);\n\n    if (compare(value, array[start + m]) > 0) {\n      lastOffset = m + 1;\n    } else {\n      offset = m;\n    }\n  }\n\n  return offset;\n}\n\nfunction gallopRight(value, array, start, length, hint, compare) {\n  var lastOffset = 0;\n  var maxOffset = 0;\n  var offset = 1;\n\n  if (compare(value, array[start + hint]) < 0) {\n    maxOffset = hint + 1;\n\n    while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n      lastOffset = offset;\n      offset = (offset << 1) + 1;\n\n      if (offset <= 0) {\n        offset = maxOffset;\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset;\n    }\n\n    var tmp = lastOffset;\n    lastOffset = hint - offset;\n    offset = hint - tmp;\n  } else {\n    maxOffset = length - hint;\n\n    while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n      lastOffset = offset;\n      offset = (offset << 1) + 1;\n\n      if (offset <= 0) {\n        offset = maxOffset;\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset;\n    }\n\n    lastOffset += hint;\n    offset += hint;\n  }\n\n  lastOffset++;\n\n  while (lastOffset < offset) {\n    var m = lastOffset + (offset - lastOffset >>> 1);\n\n    if (compare(value, array[start + m]) < 0) {\n      offset = m;\n    } else {\n      lastOffset = m + 1;\n    }\n  }\n\n  return offset;\n}\n\nfunction TimSort(array, compare) {\n  var minGallop = DEFAULT_MIN_GALLOPING;\n  var length = 0;\n  var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n  var stackLength = 0;\n  var runStart;\n  var runLength;\n  var stackSize = 0;\n  length = array.length;\n\n  if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n    tmpStorageLength = length >>> 1;\n  }\n\n  var tmp = [];\n  stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n  runStart = [];\n  runLength = [];\n\n  function pushRun(_runStart, _runLength) {\n    runStart[stackSize] = _runStart;\n    runLength[stackSize] = _runLength;\n    stackSize += 1;\n  }\n\n  function mergeRuns() {\n    while (stackSize > 1) {\n      var n = stackSize - 2;\n\n      if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {\n        if (runLength[n - 1] < runLength[n + 1]) {\n          n--;\n        }\n      } else if (runLength[n] > runLength[n + 1]) {\n        break;\n      }\n\n      mergeAt(n);\n    }\n  }\n\n  function forceMergeRuns() {\n    while (stackSize > 1) {\n      var n = stackSize - 2;\n\n      if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n        n--;\n      }\n\n      mergeAt(n);\n    }\n  }\n\n  function mergeAt(i) {\n    var start1 = runStart[i];\n    var length1 = runLength[i];\n    var start2 = runStart[i + 1];\n    var length2 = runLength[i + 1];\n    runLength[i] = length1 + length2;\n\n    if (i === stackSize - 3) {\n      runStart[i + 1] = runStart[i + 2];\n      runLength[i + 1] = runLength[i + 2];\n    }\n\n    stackSize--;\n    var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n    start1 += k;\n    length1 -= k;\n\n    if (length1 === 0) {\n      return;\n    }\n\n    length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\n    if (length2 === 0) {\n      return;\n    }\n\n    if (length1 <= length2) {\n      mergeLow(start1, length1, start2, length2);\n    } else {\n      mergeHigh(start1, length1, start2, length2);\n    }\n  }\n\n  function mergeLow(start1, length1, start2, length2) {\n    var i = 0;\n\n    for (i = 0; i < length1; i++) {\n      tmp[i] = array[start1 + i];\n    }\n\n    var cursor1 = 0;\n    var cursor2 = start2;\n    var dest = start1;\n    array[dest++] = array[cursor2++];\n\n    if (--length2 === 0) {\n      for (i = 0; i < length1; i++) {\n        array[dest + i] = tmp[cursor1 + i];\n      }\n\n      return;\n    }\n\n    if (length1 === 1) {\n      for (i = 0; i < length2; i++) {\n        array[dest + i] = array[cursor2 + i];\n      }\n\n      array[dest + length2] = tmp[cursor1];\n      return;\n    }\n\n    var _minGallop = minGallop;\n    var count1;\n    var count2;\n    var exit;\n\n    while (1) {\n      count1 = 0;\n      count2 = 0;\n      exit = false;\n\n      do {\n        if (compare(array[cursor2], tmp[cursor1]) < 0) {\n          array[dest++] = array[cursor2++];\n          count2++;\n          count1 = 0;\n\n          if (--length2 === 0) {\n            exit = true;\n            break;\n          }\n        } else {\n          array[dest++] = tmp[cursor1++];\n          count1++;\n          count2 = 0;\n\n          if (--length1 === 1) {\n            exit = true;\n            break;\n          }\n        }\n      } while ((count1 | count2) < _minGallop);\n\n      if (exit) {\n        break;\n      }\n\n      do {\n        count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\n        if (count1 !== 0) {\n          for (i = 0; i < count1; i++) {\n            array[dest + i] = tmp[cursor1 + i];\n          }\n\n          dest += count1;\n          cursor1 += count1;\n          length1 -= count1;\n\n          if (length1 <= 1) {\n            exit = true;\n            break;\n          }\n        }\n\n        array[dest++] = array[cursor2++];\n\n        if (--length2 === 0) {\n          exit = true;\n          break;\n        }\n\n        count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\n        if (count2 !== 0) {\n          for (i = 0; i < count2; i++) {\n            array[dest + i] = array[cursor2 + i];\n          }\n\n          dest += count2;\n          cursor2 += count2;\n          length2 -= count2;\n\n          if (length2 === 0) {\n            exit = true;\n            break;\n          }\n        }\n\n        array[dest++] = tmp[cursor1++];\n\n        if (--length1 === 1) {\n          exit = true;\n          break;\n        }\n\n        _minGallop--;\n      } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n      if (exit) {\n        break;\n      }\n\n      if (_minGallop < 0) {\n        _minGallop = 0;\n      }\n\n      _minGallop += 2;\n    }\n\n    minGallop = _minGallop;\n    minGallop < 1 && (minGallop = 1);\n\n    if (length1 === 1) {\n      for (i = 0; i < length2; i++) {\n        array[dest + i] = array[cursor2 + i];\n      }\n\n      array[dest + length2] = tmp[cursor1];\n    } else if (length1 === 0) {\n      throw new Error(); // throw new Error('mergeLow preconditions were not respected');\n    } else {\n      for (i = 0; i < length1; i++) {\n        array[dest + i] = tmp[cursor1 + i];\n      }\n    }\n  }\n\n  function mergeHigh(start1, length1, start2, length2) {\n    var i = 0;\n\n    for (i = 0; i < length2; i++) {\n      tmp[i] = array[start2 + i];\n    }\n\n    var cursor1 = start1 + length1 - 1;\n    var cursor2 = length2 - 1;\n    var dest = start2 + length2 - 1;\n    var customCursor = 0;\n    var customDest = 0;\n    array[dest--] = array[cursor1--];\n\n    if (--length1 === 0) {\n      customCursor = dest - (length2 - 1);\n\n      for (i = 0; i < length2; i++) {\n        array[customCursor + i] = tmp[i];\n      }\n\n      return;\n    }\n\n    if (length2 === 1) {\n      dest -= length1;\n      cursor1 -= length1;\n      customDest = dest + 1;\n      customCursor = cursor1 + 1;\n\n      for (i = length1 - 1; i >= 0; i--) {\n        array[customDest + i] = array[customCursor + i];\n      }\n\n      array[dest] = tmp[cursor2];\n      return;\n    }\n\n    var _minGallop = minGallop;\n\n    while (true) {\n      var count1 = 0;\n      var count2 = 0;\n      var exit = false;\n\n      do {\n        if (compare(tmp[cursor2], array[cursor1]) < 0) {\n          array[dest--] = array[cursor1--];\n          count1++;\n          count2 = 0;\n\n          if (--length1 === 0) {\n            exit = true;\n            break;\n          }\n        } else {\n          array[dest--] = tmp[cursor2--];\n          count2++;\n          count1 = 0;\n\n          if (--length2 === 1) {\n            exit = true;\n            break;\n          }\n        }\n      } while ((count1 | count2) < _minGallop);\n\n      if (exit) {\n        break;\n      }\n\n      do {\n        count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\n        if (count1 !== 0) {\n          dest -= count1;\n          cursor1 -= count1;\n          length1 -= count1;\n          customDest = dest + 1;\n          customCursor = cursor1 + 1;\n\n          for (i = count1 - 1; i >= 0; i--) {\n            array[customDest + i] = array[customCursor + i];\n          }\n\n          if (length1 === 0) {\n            exit = true;\n            break;\n          }\n        }\n\n        array[dest--] = tmp[cursor2--];\n\n        if (--length2 === 1) {\n          exit = true;\n          break;\n        }\n\n        count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\n        if (count2 !== 0) {\n          dest -= count2;\n          cursor2 -= count2;\n          length2 -= count2;\n          customDest = dest + 1;\n          customCursor = cursor2 + 1;\n\n          for (i = 0; i < count2; i++) {\n            array[customDest + i] = tmp[customCursor + i];\n          }\n\n          if (length2 <= 1) {\n            exit = true;\n            break;\n          }\n        }\n\n        array[dest--] = array[cursor1--];\n\n        if (--length1 === 0) {\n          exit = true;\n          break;\n        }\n\n        _minGallop--;\n      } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n      if (exit) {\n        break;\n      }\n\n      if (_minGallop < 0) {\n        _minGallop = 0;\n      }\n\n      _minGallop += 2;\n    }\n\n    minGallop = _minGallop;\n\n    if (minGallop < 1) {\n      minGallop = 1;\n    }\n\n    if (length2 === 1) {\n      dest -= length1;\n      cursor1 -= length1;\n      customDest = dest + 1;\n      customCursor = cursor1 + 1;\n\n      for (i = length1 - 1; i >= 0; i--) {\n        array[customDest + i] = array[customCursor + i];\n      }\n\n      array[dest] = tmp[cursor2];\n    } else if (length2 === 0) {\n      throw new Error(); // throw new Error('mergeHigh preconditions were not respected');\n    } else {\n      customCursor = dest - (length2 - 1);\n\n      for (i = 0; i < length2; i++) {\n        array[customCursor + i] = tmp[i];\n      }\n    }\n  }\n\n  this.mergeRuns = mergeRuns;\n  this.forceMergeRuns = forceMergeRuns;\n  this.pushRun = pushRun;\n}\n\nfunction sort(array, compare, lo, hi) {\n  if (!lo) {\n    lo = 0;\n  }\n\n  if (!hi) {\n    hi = array.length;\n  }\n\n  var remaining = hi - lo;\n\n  if (remaining < 2) {\n    return;\n  }\n\n  var runLength = 0;\n\n  if (remaining < DEFAULT_MIN_MERGE) {\n    runLength = makeAscendingRun(array, lo, hi, compare);\n    binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n    return;\n  }\n\n  var ts = new TimSort(array, compare);\n  var minRun = minRunLength(remaining);\n\n  do {\n    runLength = makeAscendingRun(array, lo, hi, compare);\n\n    if (runLength < minRun) {\n      var force = remaining;\n\n      if (force > minRun) {\n        force = minRun;\n      }\n\n      binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n      runLength = force;\n    }\n\n    ts.pushRun(lo, runLength);\n    ts.mergeRuns();\n    remaining -= runLength;\n    lo += runLength;\n  } while (remaining !== 0);\n\n  ts.forceMergeRuns();\n}\n\nmodule.exports = sort;\n\n/***/ }),\n/* 401 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fixShadow = __webpack_require__(551);\n\nvar _constant = __webpack_require__(325);\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar STYLE_COMMON_PROPS = [['shadowBlur', 0], ['shadowOffsetX', 0], ['shadowOffsetY', 0], ['shadowColor', '#000'], ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]]; // var SHADOW_PROPS = STYLE_COMMON_PROPS.slice(0, 4);\n// var LINE_PROPS = STYLE_COMMON_PROPS.slice(4);\n\nvar Style = function (opts) {\n  this.extendFrom(opts, false);\n};\n\nfunction createLinearGradient(ctx, obj, rect) {\n  var x = obj.x == null ? 0 : obj.x;\n  var x2 = obj.x2 == null ? 1 : obj.x2;\n  var y = obj.y == null ? 0 : obj.y;\n  var y2 = obj.y2 == null ? 0 : obj.y2;\n\n  if (!obj.global) {\n    x = x * rect.width + rect.x;\n    x2 = x2 * rect.width + rect.x;\n    y = y * rect.height + rect.y;\n    y2 = y2 * rect.height + rect.y;\n  } // Fix NaN when rect is Infinity\n\n\n  x = isNaN(x) ? 0 : x;\n  x2 = isNaN(x2) ? 1 : x2;\n  y = isNaN(y) ? 0 : y;\n  y2 = isNaN(y2) ? 0 : y2;\n  var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n  return canvasGradient;\n}\n\nfunction createRadialGradient(ctx, obj, rect) {\n  var width = rect.width;\n  var height = rect.height;\n  var min = Math.min(width, height);\n  var x = obj.x == null ? 0.5 : obj.x;\n  var y = obj.y == null ? 0.5 : obj.y;\n  var r = obj.r == null ? 0.5 : obj.r;\n\n  if (!obj.global) {\n    x = x * width + rect.x;\n    y = y * height + rect.y;\n    r = r * min;\n  }\n\n  var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n  return canvasGradient;\n}\n\nStyle.prototype = {\n  constructor: Style,\n\n  /**\n   * @type {string}\n   */\n  fill: '#000',\n\n  /**\n   * @type {string}\n   */\n  stroke: null,\n\n  /**\n   * @type {number}\n   */\n  opacity: 1,\n\n  /**\n   * @type {number}\n   */\n  fillOpacity: null,\n\n  /**\n   * @type {number}\n   */\n  strokeOpacity: null,\n\n  /**\n   * `true` is not supported.\n   * `false`/`null`/`undefined` are the same.\n   * `false` is used to remove lineDash in some\n   * case that `null`/`undefined` can not be set.\n   * (e.g., emphasis.lineStyle in echarts)\n   * @type {Array.<number>|boolean}\n   */\n  lineDash: null,\n\n  /**\n   * @type {number}\n   */\n  lineDashOffset: 0,\n\n  /**\n   * @type {number}\n   */\n  shadowBlur: 0,\n\n  /**\n   * @type {number}\n   */\n  shadowOffsetX: 0,\n\n  /**\n   * @type {number}\n   */\n  shadowOffsetY: 0,\n\n  /**\n   * @type {number}\n   */\n  lineWidth: 1,\n\n  /**\n   * If stroke ignore scale\n   * @type {Boolean}\n   */\n  strokeNoScale: false,\n  // Bounding rect text configuration\n  // Not affected by element transform\n\n  /**\n   * @type {string}\n   */\n  text: null,\n\n  /**\n   * If `fontSize` or `fontFamily` exists, `font` will be reset by\n   * `fontSize`, `fontStyle`, `fontWeight`, `fontFamily`.\n   * So do not visit it directly in upper application (like echarts),\n   * but use `contain/text#makeFont` instead.\n   * @type {string}\n   */\n  font: null,\n\n  /**\n   * The same as font. Use font please.\n   * @deprecated\n   * @type {string}\n   */\n  textFont: null,\n\n  /**\n   * It helps merging respectively, rather than parsing an entire font string.\n   * @type {string}\n   */\n  fontStyle: null,\n\n  /**\n   * It helps merging respectively, rather than parsing an entire font string.\n   * @type {string}\n   */\n  fontWeight: null,\n\n  /**\n   * It helps merging respectively, rather than parsing an entire font string.\n   * Should be 12 but not '12px'.\n   * @type {number}\n   */\n  fontSize: null,\n\n  /**\n   * It helps merging respectively, rather than parsing an entire font string.\n   * @type {string}\n   */\n  fontFamily: null,\n\n  /**\n   * Reserved for special functinality, like 'hr'.\n   * @type {string}\n   */\n  textTag: null,\n\n  /**\n   * @type {string}\n   */\n  textFill: '#000',\n\n  /**\n   * @type {string}\n   */\n  textStroke: null,\n\n  /**\n   * @type {number}\n   */\n  textWidth: null,\n\n  /**\n   * Only for textBackground.\n   * @type {number}\n   */\n  textHeight: null,\n\n  /**\n   * textStroke may be set as some color as a default\n   * value in upper applicaion, where the default value\n   * of textStrokeWidth should be 0 to make sure that\n   * user can choose to do not use text stroke.\n   * @type {number}\n   */\n  textStrokeWidth: 0,\n\n  /**\n   * @type {number}\n   */\n  textLineHeight: null,\n\n  /**\n   * 'inside', 'left', 'right', 'top', 'bottom'\n   * [x, y]\n   * Based on x, y of rect.\n   * @type {string|Array.<number>}\n   * @default 'inside'\n   */\n  textPosition: 'inside',\n\n  /**\n   * If not specified, use the boundingRect of a `displayable`.\n   * @type {Object}\n   */\n  textRect: null,\n\n  /**\n   * [x, y]\n   * @type {Array.<number>}\n   */\n  textOffset: null,\n\n  /**\n   * @type {string}\n   */\n  textAlign: null,\n\n  /**\n   * @type {string}\n   */\n  textVerticalAlign: null,\n\n  /**\n   * @type {number}\n   */\n  textDistance: 5,\n\n  /**\n   * @type {string}\n   */\n  textShadowColor: 'transparent',\n\n  /**\n   * @type {number}\n   */\n  textShadowBlur: 0,\n\n  /**\n   * @type {number}\n   */\n  textShadowOffsetX: 0,\n\n  /**\n   * @type {number}\n   */\n  textShadowOffsetY: 0,\n\n  /**\n   * @type {string}\n   */\n  textBoxShadowColor: 'transparent',\n\n  /**\n   * @type {number}\n   */\n  textBoxShadowBlur: 0,\n\n  /**\n   * @type {number}\n   */\n  textBoxShadowOffsetX: 0,\n\n  /**\n   * @type {number}\n   */\n  textBoxShadowOffsetY: 0,\n\n  /**\n   * Whether transform text.\n   * Only available in Path and Image element,\n   * where the text is called as `RectText`.\n   * @type {boolean}\n   */\n  transformText: false,\n\n  /**\n   * Text rotate around position of Path or Image.\n   * The origin of the rotation can be specified by `textOrigin`.\n   * Only available in Path and Image element,\n   * where the text is called as `RectText`.\n   */\n  textRotation: 0,\n\n  /**\n   * Text origin of text rotation.\n   * Useful in the case like label rotation of circular symbol.\n   * Only available in Path and Image element, where the text is called\n   * as `RectText` and the element is called as \"host element\".\n   * The value can be:\n   * + If specified as a coordinate like `[10, 40]`, it is the `[x, y]`\n   * base on the left-top corner of the rect of its host element.\n   * + If specified as a string `center`, it is the center of the rect of\n   * its host element.\n   * + By default, this origin is the `textPosition`.\n   * @type {string|Array.<number>}\n   */\n  textOrigin: null,\n\n  /**\n   * @type {string}\n   */\n  textBackgroundColor: null,\n\n  /**\n   * @type {string}\n   */\n  textBorderColor: null,\n\n  /**\n   * @type {number}\n   */\n  textBorderWidth: 0,\n\n  /**\n   * @type {number}\n   */\n  textBorderRadius: 0,\n\n  /**\n   * Can be `2` or `[2, 4]` or `[2, 3, 4, 5]`\n   * @type {number|Array.<number>}\n   */\n  textPadding: null,\n\n  /**\n   * Text styles for rich text.\n   * @type {Object}\n   */\n  rich: null,\n\n  /**\n   * {outerWidth, outerHeight, ellipsis, placeholder}\n   * @type {Object}\n   */\n  truncate: null,\n\n  /**\n   * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n   * @type {string}\n   */\n  blend: null,\n\n  /**\n   * @param {CanvasRenderingContext2D} ctx\n   */\n  bind: function (ctx, el, prevEl) {\n    var style = this;\n    var prevStyle = prevEl && prevEl.style; // If no prevStyle, it means first draw.\n    // Only apply cache if the last time cachced by this function.\n\n    var notCheckCache = !prevStyle || ctx.__attrCachedBy !== ContextCachedBy.STYLE_BIND;\n    ctx.__attrCachedBy = ContextCachedBy.STYLE_BIND;\n\n    for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n      var prop = STYLE_COMMON_PROPS[i];\n      var styleName = prop[0];\n\n      if (notCheckCache || style[styleName] !== prevStyle[styleName]) {\n        // FIXME Invalid property value will cause style leak from previous element.\n        ctx[styleName] = fixShadow(ctx, styleName, style[styleName] || prop[1]);\n      }\n    }\n\n    if (notCheckCache || style.fill !== prevStyle.fill) {\n      ctx.fillStyle = style.fill;\n    }\n\n    if (notCheckCache || style.stroke !== prevStyle.stroke) {\n      ctx.strokeStyle = style.stroke;\n    }\n\n    if (notCheckCache || style.opacity !== prevStyle.opacity) {\n      ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n    }\n\n    if (notCheckCache || style.blend !== prevStyle.blend) {\n      ctx.globalCompositeOperation = style.blend || 'source-over';\n    }\n\n    if (this.hasStroke()) {\n      var lineWidth = style.lineWidth;\n      ctx.lineWidth = lineWidth / (this.strokeNoScale && el && el.getLineScale ? el.getLineScale() : 1);\n    }\n  },\n  hasFill: function () {\n    var fill = this.fill;\n    return fill != null && fill !== 'none';\n  },\n  hasStroke: function () {\n    var stroke = this.stroke;\n    return stroke != null && stroke !== 'none' && this.lineWidth > 0;\n  },\n\n  /**\n   * Extend from other style\n   * @param {zrender/graphic/Style} otherStyle\n   * @param {boolean} overwrite true: overwrirte any way.\n   *                            false: overwrite only when !target.hasOwnProperty\n   *                            others: overwrite when property is not null/undefined.\n   */\n  extendFrom: function (otherStyle, overwrite) {\n    if (otherStyle) {\n      for (var name in otherStyle) {\n        if (otherStyle.hasOwnProperty(name) && (overwrite === true || (overwrite === false ? !this.hasOwnProperty(name) : otherStyle[name] != null))) {\n          this[name] = otherStyle[name];\n        }\n      }\n    }\n  },\n\n  /**\n   * Batch setting style with a given object\n   * @param {Object|string} obj\n   * @param {*} [obj]\n   */\n  set: function (obj, value) {\n    if (typeof obj === 'string') {\n      this[obj] = value;\n    } else {\n      this.extendFrom(obj, true);\n    }\n  },\n\n  /**\n   * Clone\n   * @return {zrender/graphic/Style} [description]\n   */\n  clone: function () {\n    var newStyle = new this.constructor();\n    newStyle.extendFrom(this, true);\n    return newStyle;\n  },\n  getGradient: function (ctx, obj, rect) {\n    var method = obj.type === 'radial' ? createRadialGradient : createLinearGradient;\n    var canvasGradient = method(ctx, obj, rect);\n    var colorStops = obj.colorStops;\n\n    for (var i = 0; i < colorStops.length; i++) {\n      canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n    }\n\n    return canvasGradient;\n  }\n};\nvar styleProto = Style.prototype;\n\nfor (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n  var prop = STYLE_COMMON_PROPS[i];\n\n  if (!(prop[0] in styleProto)) {\n    styleProto[prop[0]] = prop[1];\n  }\n} // Provide for others\n\n\nStyle.getGradient = styleProto.getGradient;\nvar _default = Style;\nmodule.exports = _default;\n\n/***/ }),\n/* 402 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar LRU = __webpack_require__(550);\n\nvar globalImageCache = new LRU(50);\n/**\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\nfunction findExistImage(newImageOrSrc) {\n  if (typeof newImageOrSrc === 'string') {\n    var cachedImgObj = globalImageCache.get(newImageOrSrc);\n    return cachedImgObj && cachedImgObj.image;\n  } else {\n    return newImageOrSrc;\n  }\n}\n/**\n * Caution: User should cache loaded images, but not just count on LRU.\n * Consider if required images more than LRU size, will dead loop occur?\n *\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @param {HTMLImageElement|HTMLCanvasElement|Canvas} image Existent image.\n * @param {module:zrender/Element} [hostEl] For calling `dirty`.\n * @param {Function} [cb] params: (image, cbPayload)\n * @param {Object} [cbPayload] Payload on cb calling.\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\n\nfunction createOrUpdateImage(newImageOrSrc, image, hostEl, cb, cbPayload) {\n  if (!newImageOrSrc) {\n    return image;\n  } else if (typeof newImageOrSrc === 'string') {\n    // Image should not be loaded repeatly.\n    if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) {\n      return image;\n    } // Only when there is no existent image or existent image src\n    // is different, this method is responsible for load.\n\n\n    var cachedImgObj = globalImageCache.get(newImageOrSrc);\n    var pendingWrap = {\n      hostEl: hostEl,\n      cb: cb,\n      cbPayload: cbPayload\n    };\n\n    if (cachedImgObj) {\n      image = cachedImgObj.image;\n      !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n    } else {\n      image = new Image();\n      image.onload = image.onerror = imageOnLoad;\n      globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n        image: image,\n        pending: [pendingWrap]\n      });\n      image.src = image.__zrImageSrc = newImageOrSrc;\n    }\n\n    return image;\n  } // newImageOrSrc is an HTMLImageElement or HTMLCanvasElement or Canvas\n  else {\n      return newImageOrSrc;\n    }\n}\n\nfunction imageOnLoad() {\n  var cachedImgObj = this.__cachedImgObj;\n  this.onload = this.onerror = this.__cachedImgObj = null;\n\n  for (var i = 0; i < cachedImgObj.pending.length; i++) {\n    var pendingWrap = cachedImgObj.pending[i];\n    var cb = pendingWrap.cb;\n    cb && cb(this, pendingWrap.cbPayload);\n    pendingWrap.hostEl.dirty();\n  }\n\n  cachedImgObj.pending.length = 0;\n}\n\nfunction isImageReady(image) {\n  return image && image.width && image.height;\n}\n\nexports.findExistImage = findExistImage;\nexports.createOrUpdateImage = createOrUpdateImage;\nexports.isImageReady = isImageReady;\n\n/***/ }),\n/* 403 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\nvar roundRectHelper = __webpack_require__(555);\n\nvar _subPixelOptimize = __webpack_require__(404);\n\nvar subPixelOptimizeRect = _subPixelOptimize.subPixelOptimizeRect;\n\n/**\n * 矩形\n * @module zrender/graphic/shape/Rect\n */\n// Avoid create repeatly.\nvar subPixelOptimizeOutputShape = {};\n\nvar _default = Path.extend({\n  type: 'rect',\n  shape: {\n    // 左上、右上、右下、左下角的半径依次为r1、r2、r3、r4\n    // r缩写为1         相当于 [1, 1, 1, 1]\n    // r缩写为[1]       相当于 [1, 1, 1, 1]\n    // r缩写为[1, 2]    相当于 [1, 2, 1, 2]\n    // r缩写为[1, 2, 3] 相当于 [1, 2, 3, 2]\n    r: 0,\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (ctx, shape) {\n    var x;\n    var y;\n    var width;\n    var height;\n\n    if (this.subPixelOptimize) {\n      subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\n      x = subPixelOptimizeOutputShape.x;\n      y = subPixelOptimizeOutputShape.y;\n      width = subPixelOptimizeOutputShape.width;\n      height = subPixelOptimizeOutputShape.height;\n      subPixelOptimizeOutputShape.r = shape.r;\n      shape = subPixelOptimizeOutputShape;\n    } else {\n      x = shape.x;\n      y = shape.y;\n      width = shape.width;\n      height = shape.height;\n    }\n\n    if (!shape.r) {\n      ctx.rect(x, y, width, height);\n    } else {\n      roundRectHelper.buildPath(ctx, shape);\n    }\n\n    ctx.closePath();\n    return;\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 404 */\n/***/ (function(module, exports) {\n\n/**\n * Sub-pixel optimize for canvas rendering, prevent from blur\n * when rendering a thin vertical/horizontal line.\n */\nvar round = Math.round;\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} outputShape The modification will be performed on `outputShape`.\n *                 `outputShape` and `inputShape` can be the same object.\n *                 `outputShape` object can be used repeatly, because all of\n *                 the `x1`, `x2`, `y1`, `y2` will be assigned in this method.\n * @param {Object} [inputShape]\n * @param {number} [inputShape.x1]\n * @param {number} [inputShape.y1]\n * @param {number} [inputShape.x2]\n * @param {number} [inputShape.y2]\n * @param {Object} [style]\n * @param {number} [style.lineWidth] If `null`/`undefined`/`0`, do not optimize.\n */\n\nfunction subPixelOptimizeLine(outputShape, inputShape, style) {\n  if (!inputShape) {\n    return;\n  }\n\n  var x1 = inputShape.x1;\n  var x2 = inputShape.x2;\n  var y1 = inputShape.y1;\n  var y2 = inputShape.y2;\n  outputShape.x1 = x1;\n  outputShape.x2 = x2;\n  outputShape.y1 = y1;\n  outputShape.y2 = y2;\n  var lineWidth = style && style.lineWidth;\n\n  if (!lineWidth) {\n    return;\n  }\n\n  if (round(x1 * 2) === round(x2 * 2)) {\n    outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\n  }\n\n  if (round(y1 * 2) === round(y2 * 2)) {\n    outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\n  }\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} outputShape The modification will be performed on `outputShape`.\n *                 `outputShape` and `inputShape` can be the same object.\n *                 `outputShape` object can be used repeatly, because all of\n *                 the `x`, `y`, `width`, `height` will be assigned in this method.\n * @param {Object} [inputShape]\n * @param {number} [inputShape.x]\n * @param {number} [inputShape.y]\n * @param {number} [inputShape.width]\n * @param {number} [inputShape.height]\n * @param {Object} [style]\n * @param {number} [style.lineWidth] If `null`/`undefined`/`0`, do not optimize.\n */\n\n\nfunction subPixelOptimizeRect(outputShape, inputShape, style) {\n  if (!inputShape) {\n    return;\n  }\n\n  var originX = inputShape.x;\n  var originY = inputShape.y;\n  var originWidth = inputShape.width;\n  var originHeight = inputShape.height;\n  outputShape.x = originX;\n  outputShape.y = originY;\n  outputShape.width = originWidth;\n  outputShape.height = originHeight;\n  var lineWidth = style && style.lineWidth;\n\n  if (!lineWidth) {\n    return;\n  }\n\n  outputShape.x = subPixelOptimize(originX, lineWidth, true);\n  outputShape.y = subPixelOptimize(originY, lineWidth, true);\n  outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\n  outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth If `null`/`undefined`/`0`, do not optimize.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nfunction subPixelOptimize(position, lineWidth, positiveOrNegative) {\n  if (!lineWidth) {\n    return position;\n  } // Assure that (position + lineWidth / 2) is near integer edge,\n  // otherwise line will be fuzzy in canvas.\n\n\n  var doubledPosition = round(position * 2);\n  return (doubledPosition + round(lineWidth)) % 2 === 0 ? doubledPosition / 2 : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\n}\n\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;\n\n/***/ }),\n/* 405 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar zrUtil = __webpack_require__(2);\n\nvar Gradient = __webpack_require__(327);\n\n/**\n * x, y, x2, y2 are all percent from 0 to 1\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @param {number} [x2=1]\n * @param {number} [y2=0]\n * @param {Array.<Object>} colorStops\n * @param {boolean} [globalCoord=false]\n */\nvar LinearGradient = function (x, y, x2, y2, colorStops, globalCoord) {\n  // Should do nothing more in this constructor. Because gradient can be\n  // declard by `color: {type: 'linear', colorStops: ...}`, where\n  // this constructor will not be called.\n  this.x = x == null ? 0 : x;\n  this.y = y == null ? 0 : y;\n  this.x2 = x2 == null ? 1 : x2;\n  this.y2 = y2 == null ? 0 : y2; // Can be cloned\n\n  this.type = 'linear'; // If use global coord\n\n  this.global = globalCoord || false;\n  Gradient.call(this, colorStops);\n};\n\nLinearGradient.prototype = {\n  constructor: LinearGradient\n};\nzrUtil.inherits(LinearGradient, Gradient);\nvar _default = LinearGradient;\nmodule.exports = _default;\n\n/***/ }),\n/* 406 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _util = __webpack_require__(2);\n\nvar inherits = _util.inherits;\n\nvar Displayble = __webpack_require__(254);\n\nvar BoundingRect = __webpack_require__(57);\n\n/**\n * Displayable for incremental rendering. It will be rendered in a separate layer\n * IncrementalDisplay have two main methods. `clearDisplayables` and `addDisplayables`\n * addDisplayables will render the added displayables incremetally.\n *\n * It use a not clearFlag to tell the painter don't clear the layer if it's the first element.\n */\n// TODO Style override ?\nfunction IncrementalDisplayble(opts) {\n  Displayble.call(this, opts);\n  this._displayables = [];\n  this._temporaryDisplayables = [];\n  this._cursor = 0;\n  this.notClear = true;\n}\n\nIncrementalDisplayble.prototype.incremental = true;\n\nIncrementalDisplayble.prototype.clearDisplaybles = function () {\n  this._displayables = [];\n  this._temporaryDisplayables = [];\n  this._cursor = 0;\n  this.dirty();\n  this.notClear = false;\n};\n\nIncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\n  if (notPersistent) {\n    this._temporaryDisplayables.push(displayable);\n  } else {\n    this._displayables.push(displayable);\n  }\n\n  this.dirty();\n};\n\nIncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\n  notPersistent = notPersistent || false;\n\n  for (var i = 0; i < displayables.length; i++) {\n    this.addDisplayable(displayables[i], notPersistent);\n  }\n};\n\nIncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\n  for (var i = this._cursor; i < this._displayables.length; i++) {\n    cb && cb(this._displayables[i]);\n  }\n\n  for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n    cb && cb(this._temporaryDisplayables[i]);\n  }\n};\n\nIncrementalDisplayble.prototype.update = function () {\n  this.updateTransform();\n\n  for (var i = this._cursor; i < this._displayables.length; i++) {\n    var displayable = this._displayables[i]; // PENDING\n\n    displayable.parent = this;\n    displayable.update();\n    displayable.parent = null;\n  }\n\n  for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n    var displayable = this._temporaryDisplayables[i]; // PENDING\n\n    displayable.parent = this;\n    displayable.update();\n    displayable.parent = null;\n  }\n};\n\nIncrementalDisplayble.prototype.brush = function (ctx, prevEl) {\n  // Render persistant displayables.\n  for (var i = this._cursor; i < this._displayables.length; i++) {\n    var displayable = this._displayables[i];\n    displayable.beforeBrush && displayable.beforeBrush(ctx);\n    displayable.brush(ctx, i === this._cursor ? null : this._displayables[i - 1]);\n    displayable.afterBrush && displayable.afterBrush(ctx);\n  }\n\n  this._cursor = i; // Render temporary displayables.\n\n  for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n    var displayable = this._temporaryDisplayables[i];\n    displayable.beforeBrush && displayable.beforeBrush(ctx);\n    displayable.brush(ctx, i === 0 ? null : this._temporaryDisplayables[i - 1]);\n    displayable.afterBrush && displayable.afterBrush(ctx);\n  }\n\n  this._temporaryDisplayables = [];\n  this.notClear = true;\n};\n\nvar m = [];\n\nIncrementalDisplayble.prototype.getBoundingRect = function () {\n  if (!this._rect) {\n    var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n\n    for (var i = 0; i < this._displayables.length; i++) {\n      var displayable = this._displayables[i];\n      var childRect = displayable.getBoundingRect().clone();\n\n      if (displayable.needLocalTransform()) {\n        childRect.applyTransform(displayable.getLocalTransform(m));\n      }\n\n      rect.union(childRect);\n    }\n\n    this._rect = rect;\n  }\n\n  return this._rect;\n};\n\nIncrementalDisplayble.prototype.contain = function (x, y) {\n  var localPos = this.transformCoordToLocal(x, y);\n  var rect = this.getBoundingRect();\n\n  if (rect.contain(localPos[0], localPos[1])) {\n    for (var i = 0; i < this._displayables.length; i++) {\n      var displayable = this._displayables[i];\n\n      if (displayable.contain(x, y)) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n\ninherits(IncrementalDisplayble, Displayble);\nvar _default = IncrementalDisplayble;\nmodule.exports = _default;\n\n/***/ }),\n/* 407 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataProvider = __webpack_require__(179);\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\nvar _format = __webpack_require__(50);\n\nvar getTooltipMarker = _format.getTooltipMarker;\nvar formatTpl = _format.formatTpl;\n\nvar _model = __webpack_require__(31);\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g; // PENDING A little ugly\n\nvar _default = {\n  /**\n   * Get params for formatter\n   * @param {number} dataIndex\n   * @param {string} [dataType]\n   * @return {Object}\n   */\n  getDataParams: function (dataIndex, dataType) {\n    var data = this.getData(dataType);\n    var rawValue = this.getRawValue(dataIndex, dataType);\n    var rawDataIndex = data.getRawIndex(dataIndex);\n    var name = data.getName(dataIndex);\n    var itemOpt = data.getRawDataItem(dataIndex);\n    var color = data.getItemVisual(dataIndex, 'color');\n    var borderColor = data.getItemVisual(dataIndex, 'borderColor');\n    var tooltipModel = this.ecModel.getComponent('tooltip');\n    var renderModeOption = tooltipModel && tooltipModel.get('renderMode');\n    var renderMode = getTooltipRenderMode(renderModeOption);\n    var mainType = this.mainType;\n    var isSeries = mainType === 'series';\n    var userOutput = data.userOutput;\n    return {\n      componentType: mainType,\n      componentSubType: this.subType,\n      componentIndex: this.componentIndex,\n      seriesType: isSeries ? this.subType : null,\n      seriesIndex: this.seriesIndex,\n      seriesId: isSeries ? this.id : null,\n      seriesName: isSeries ? this.name : null,\n      name: name,\n      dataIndex: rawDataIndex,\n      data: itemOpt,\n      dataType: dataType,\n      value: rawValue,\n      color: color,\n      borderColor: borderColor,\n      dimensionNames: userOutput ? userOutput.dimensionNames : null,\n      encode: userOutput ? userOutput.encode : null,\n      marker: getTooltipMarker({\n        color: color,\n        renderMode: renderMode\n      }),\n      // Param name list for mapping `a`, `b`, `c`, `d`, `e`\n      $vars: ['seriesName', 'name', 'value']\n    };\n  },\n\n  /**\n   * Format label\n   * @param {number} dataIndex\n   * @param {string} [status='normal'] 'normal' or 'emphasis'\n   * @param {string} [dataType]\n   * @param {number} [dimIndex] Only used in some chart that\n   *        use formatter in different dimensions, like radar.\n   * @param {string} [labelProp='label']\n   * @return {string} If not formatter, return null/undefined\n   */\n  getFormattedLabel: function (dataIndex, status, dataType, dimIndex, labelProp) {\n    status = status || 'normal';\n    var data = this.getData(dataType);\n    var itemModel = data.getItemModel(dataIndex);\n    var params = this.getDataParams(dataIndex, dataType);\n\n    if (dimIndex != null && params.value instanceof Array) {\n      params.value = params.value[dimIndex];\n    }\n\n    var formatter = itemModel.get(status === 'normal' ? [labelProp || 'label', 'formatter'] : [status, labelProp || 'label', 'formatter']);\n\n    if (typeof formatter === 'function') {\n      params.status = status;\n      params.dimensionIndex = dimIndex;\n      return formatter(params);\n    } else if (typeof formatter === 'string') {\n      var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'.\n      // Do not support '}' in dim name util have to.\n\n      return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\n        var len = dim.length;\n\n        if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\n          dim = +dim.slice(1, len - 1); // Also: '[]' => 0\n        }\n\n        return retrieveRawValue(data, dataIndex, dim);\n      });\n    }\n  },\n\n  /**\n   * Get raw value in option\n   * @param {number} idx\n   * @param {string} [dataType]\n   * @return {Array|number|string}\n   */\n  getRawValue: function (idx, dataType) {\n    return retrieveRawValue(this.getData(dataType), idx);\n  },\n\n  /**\n   * Should be implemented.\n   * @param {number} dataIndex\n   * @param {boolean} [multipleSeries=false]\n   * @param {number} [dataType]\n   * @return {string} tooltip string\n   */\n  formatTooltip: function () {// Empty function\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 408 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar assert = _util.assert;\nvar isArray = _util.isArray;\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} define\n * @return See the return of `createTask`.\n */\nfunction createTask(define) {\n  return new Task(define);\n}\n/**\n * @constructor\n * @param {Object} define\n * @param {Function} define.reset Custom reset\n * @param {Function} [define.plan] Returns 'reset' indicate reset immediately.\n * @param {Function} [define.count] count is used to determin data task.\n * @param {Function} [define.onDirty] count is used to determin data task.\n */\n\n\nfunction Task(define) {\n  define = define || {};\n  this._reset = define.reset;\n  this._plan = define.plan;\n  this._count = define.count;\n  this._onDirty = define.onDirty;\n  this._dirty = true; // Context must be specified implicitly, to\n  // avoid miss update context when model changed.\n\n  this.context;\n}\n\nvar taskProto = Task.prototype;\n/**\n * @param {Object} performArgs\n * @param {number} [performArgs.step] Specified step.\n * @param {number} [performArgs.skip] Skip customer perform call.\n * @param {number} [performArgs.modBy] Sampling window size.\n * @param {number} [performArgs.modDataCount] Sampling count.\n */\n\ntaskProto.perform = function (performArgs) {\n  var upTask = this._upstream;\n  var skip = performArgs && performArgs.skip; // TODO some refactor.\n  // Pull data. Must pull data each time, because context.data\n  // may be updated by Series.setData.\n\n  if (this._dirty && upTask) {\n    var context = this.context;\n    context.data = context.outputData = upTask.context.outputData;\n  }\n\n  if (this.__pipeline) {\n    this.__pipeline.currentTask = this;\n  }\n\n  var planResult;\n\n  if (this._plan && !skip) {\n    planResult = this._plan(this.context);\n  } // Support sharding by mod, which changes the render sequence and makes the rendered graphic\n  // elements uniformed distributed when progress, especially when moving or zooming.\n\n\n  var lastModBy = normalizeModBy(this._modBy);\n  var lastModDataCount = this._modDataCount || 0;\n  var modBy = normalizeModBy(performArgs && performArgs.modBy);\n  var modDataCount = performArgs && performArgs.modDataCount || 0;\n\n  if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\n    planResult = 'reset';\n  }\n\n  function normalizeModBy(val) {\n    !(val >= 1) && (val = 1); // jshint ignore:line\n\n    return val;\n  }\n\n  var forceFirstProgress;\n\n  if (this._dirty || planResult === 'reset') {\n    this._dirty = false;\n    forceFirstProgress = reset(this, skip);\n  }\n\n  this._modBy = modBy;\n  this._modDataCount = modDataCount;\n  var step = performArgs && performArgs.step;\n\n  if (upTask) {\n    this._dueEnd = upTask._outputDueEnd;\n  } // DataTask or overallTask\n  else {\n      this._dueEnd = this._count ? this._count(this.context) : Infinity;\n    } // Note: Stubs, that its host overall task let it has progress, has progress.\n  // If no progress, pass index from upstream to downstream each time plan called.\n\n\n  if (this._progress) {\n    var start = this._dueIndex;\n    var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\n\n    if (!skip && (forceFirstProgress || start < end)) {\n      var progress = this._progress;\n\n      if (isArray(progress)) {\n        for (var i = 0; i < progress.length; i++) {\n          doProgress(this, progress[i], start, end, modBy, modDataCount);\n        }\n      } else {\n        doProgress(this, progress, start, end, modBy, modDataCount);\n      }\n    }\n\n    this._dueIndex = end; // If no `outputDueEnd`, assume that output data and\n    // input data is the same, so use `dueIndex` as `outputDueEnd`.\n\n    var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end;\n    this._outputDueEnd = outputDueEnd;\n  } else {\n    // (1) Some overall task has no progress.\n    // (2) Stubs, that its host overall task do not let it has progress, has no progress.\n    // This should always be performed so it can be passed to downstream.\n    this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;\n  }\n\n  return this.unfinished();\n};\n\nvar iterator = function () {\n  var end;\n  var current;\n  var modBy;\n  var modDataCount;\n  var winCount;\n  var it = {\n    reset: function (s, e, sStep, sCount) {\n      current = s;\n      end = e;\n      modBy = sStep;\n      modDataCount = sCount;\n      winCount = Math.ceil(modDataCount / modBy);\n      it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext;\n    }\n  };\n  return it;\n\n  function sequentialNext() {\n    return current < end ? current++ : null;\n  }\n\n  function modNext() {\n    var dataIndex = current % winCount * modBy + Math.ceil(current / winCount);\n    var result = current >= end ? null : dataIndex < modDataCount ? dataIndex // If modDataCount is smaller than data.count() (consider `appendData` case),\n    // Use normal linear rendering mode.\n    : current;\n    current++;\n    return result;\n  }\n}();\n\ntaskProto.dirty = function () {\n  this._dirty = true;\n  this._onDirty && this._onDirty(this.context);\n};\n\nfunction doProgress(taskIns, progress, start, end, modBy, modDataCount) {\n  iterator.reset(start, end, modBy, modDataCount);\n  taskIns._callingProgress = progress;\n\n  taskIns._callingProgress({\n    start: start,\n    end: end,\n    count: end - start,\n    next: iterator.next\n  }, taskIns.context);\n}\n\nfunction reset(taskIns, skip) {\n  taskIns._dueIndex = taskIns._outputDueEnd = taskIns._dueEnd = 0;\n  taskIns._settedOutputEnd = null;\n  var progress;\n  var forceFirstProgress;\n\n  if (!skip && taskIns._reset) {\n    progress = taskIns._reset(taskIns.context);\n\n    if (progress && progress.progress) {\n      forceFirstProgress = progress.forceFirstProgress;\n      progress = progress.progress;\n    } // To simplify no progress checking, array must has item.\n\n\n    if (isArray(progress) && !progress.length) {\n      progress = null;\n    }\n  }\n\n  taskIns._progress = progress;\n  taskIns._modBy = taskIns._modDataCount = null;\n  var downstream = taskIns._downstream;\n  downstream && downstream.dirty();\n  return forceFirstProgress;\n}\n/**\n * @return {boolean}\n */\n\n\ntaskProto.unfinished = function () {\n  return this._progress && this._dueIndex < this._dueEnd;\n};\n/**\n * @param {Object} downTask The downstream task.\n * @return {Object} The downstream task.\n */\n\n\ntaskProto.pipe = function (downTask) {\n  // If already downstream, do not dirty downTask.\n  if (this._downstream !== downTask || this._dirty) {\n    this._downstream = downTask;\n    downTask._upstream = this;\n    downTask.dirty();\n  }\n};\n\ntaskProto.dispose = function () {\n  if (this._disposed) {\n    return;\n  }\n\n  this._upstream && (this._upstream._downstream = null);\n  this._downstream && (this._downstream._upstream = null);\n  this._dirty = false;\n  this._disposed = true;\n};\n\ntaskProto.getUpstream = function () {\n  return this._upstream;\n};\n\ntaskProto.getDownstream = function () {\n  return this._downstream;\n};\n\ntaskProto.setOutputEnd = function (end) {\n  // This only happend in dataTask, dataZoom, map, currently.\n  // where dataZoom do not set end each time, but only set\n  // when reset. So we should record the setted end, in case\n  // that the stub of dataZoom perform again and earse the\n  // setted end by upstream.\n  this._outputDueEnd = this._settedOutputEnd = end;\n}; ///////////////////////////////////////////////////////////\n// For stream debug (Should be commented out after used!)\n// Usage: printTask(this, 'begin');\n// Usage: printTask(this, null, {someExtraProp});\n// function printTask(task, prefix, extra) {\n//     window.ecTaskUID == null && (window.ecTaskUID = 0);\n//     task.uidDebug == null && (task.uidDebug = `task_${window.ecTaskUID++}`);\n//     task.agent && task.agent.uidDebug == null && (task.agent.uidDebug = `task_${window.ecTaskUID++}`);\n//     var props = [];\n//     if (task.__pipeline) {\n//         var val = `${task.__idxInPipeline}/${task.__pipeline.tail.__idxInPipeline} ${task.agent ? '(stub)' : ''}`;\n//         props.push({text: 'idx', value: val});\n//     } else {\n//         var stubCount = 0;\n//         task.agentStubMap.each(() => stubCount++);\n//         props.push({text: 'idx', value: `overall (stubs: ${stubCount})`});\n//     }\n//     props.push({text: 'uid', value: task.uidDebug});\n//     if (task.__pipeline) {\n//         props.push({text: 'pid', value: task.__pipeline.id});\n//         task.agent && props.push(\n//             {text: 'stubFor', value: task.agent.uidDebug}\n//         );\n//     }\n//     props.push(\n//         {text: 'dirty', value: task._dirty},\n//         {text: 'dueIndex', value: task._dueIndex},\n//         {text: 'dueEnd', value: task._dueEnd},\n//         {text: 'outputDueEnd', value: task._outputDueEnd}\n//     );\n//     if (extra) {\n//         Object.keys(extra).forEach(key => {\n//             props.push({text: key, value: extra[key]});\n//         });\n//     }\n//     var args = ['color: blue'];\n//     var msg = `%c[${prefix || 'T'}] %c` + props.map(item => (\n//         args.push('color: black', 'color: red'),\n//         `${item.text}: %c${item.value}`\n//     )).join('%c, ');\n//     console.log.apply(console, [msg].concat(args));\n//     // console.log(this);\n// }\n\n\nexports.createTask = createTask;\n\n/***/ }),\n/* 409 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(2);\n\nvar createHashMap = _util.createHashMap;\nvar isString = _util.isString;\nvar isArray = _util.isArray;\nvar each = _util.each;\nvar assert = _util.assert;\n\nvar _parseSVG = __webpack_require__(571);\n\nvar parseXML = _parseSVG.parseXML;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar storage = createHashMap(); // For minimize the code size of common echarts package,\n// do not put too much logic in this module.\n\nvar _default = {\n  // The format of record: see `echarts.registerMap`.\n  // Compatible with previous `echarts.registerMap`.\n  registerMap: function (mapName, rawGeoJson, rawSpecialAreas) {\n    var records;\n\n    if (isArray(rawGeoJson)) {\n      records = rawGeoJson;\n    } else if (rawGeoJson.svg) {\n      records = [{\n        type: 'svg',\n        source: rawGeoJson.svg,\n        specialAreas: rawGeoJson.specialAreas\n      }];\n    } else {\n      // Backward compatibility.\n      if (rawGeoJson.geoJson && !rawGeoJson.features) {\n        rawSpecialAreas = rawGeoJson.specialAreas;\n        rawGeoJson = rawGeoJson.geoJson;\n      }\n\n      records = [{\n        type: 'geoJSON',\n        source: rawGeoJson,\n        specialAreas: rawSpecialAreas\n      }];\n    }\n\n    each(records, function (record) {\n      var type = record.type;\n      type === 'geoJson' && (type = record.type = 'geoJSON');\n      var parse = parsers[type];\n      parse(record);\n    });\n    return storage.set(mapName, records);\n  },\n  retrieveMap: function (mapName) {\n    return storage.get(mapName);\n  }\n};\nvar parsers = {\n  geoJSON: function (record) {\n    var source = record.source;\n    record.geoJSON = !isString(source) ? source : typeof JSON !== 'undefined' && JSON.parse ? JSON.parse(source) : new Function('return (' + source + ');')();\n  },\n  // Only perform parse to XML object here, which might be time\n  // consiming for large SVG.\n  // Although convert XML to zrender element is also time consiming,\n  // if we do it here, the clone of zrender elements has to be\n  // required. So we do it once for each geo instance, util real\n  // performance issues call for optimizing it.\n  svg: function (record) {\n    record.svgXML = parseXML(record.source);\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 410 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataProvider = __webpack_require__(179);\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {string} label string. Not null/undefined\n */\nfunction getDefaultLabel(data, dataIndex) {\n  var labelDims = data.mapDimension('defaultedLabel', true);\n  var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n  if (len === 1) {\n    return retrieveRawValue(data, dataIndex, labelDims[0]);\n  } else if (len) {\n    var vals = [];\n\n    for (var i = 0; i < labelDims.length; i++) {\n      var val = retrieveRawValue(data, dataIndex, labelDims[i]);\n      vals.push(val);\n    }\n\n    return vals.join(' ');\n  }\n}\n\nexports.getDefaultLabel = getDefaultLabel;\n\n/***/ }),\n/* 411 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(2);\n\nvar isObject = _util.isObject;\nvar each = _util.each;\nvar map = _util.map;\nvar indexOf = _util.indexOf;\nvar retrieve = _util.retrieve;\n\nvar _layout = __webpack_require__(49);\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _axisHelper = __webpack_require__(122);\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar ifAxisCrossZero = _axisHelper.ifAxisCrossZero;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\nvar estimateLabelUnionRect = _axisHelper.estimateLabelUnionRect;\n\nvar Cartesian2D = __webpack_require__(1052);\n\nvar Axis2D = __webpack_require__(1054);\n\nvar CoordinateSystem = __webpack_require__(121);\n\nvar _dataStackHelper = __webpack_require__(132);\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\n__webpack_require__(1055);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Grid is a region which contains at most 4 cartesian systems\n *\n * TODO Default cartesian\n */\n// Depends on GridModel, AxisModel, which performs preprocess.\n\n/**\n * Check if the axis is used in the specified grid\n * @inner\n */\nfunction isAxisUsedInTheGrid(axisModel, gridModel, ecModel) {\n  return axisModel.getCoordSysModel() === gridModel;\n}\n\nfunction Grid(gridModel, ecModel, api) {\n  /**\n   * @type {Object.<string, module:echarts/coord/cartesian/Cartesian2D>}\n   * @private\n   */\n  this._coordsMap = {};\n  /**\n   * @type {Array.<module:echarts/coord/cartesian/Cartesian>}\n   * @private\n   */\n\n  this._coordsList = [];\n  /**\n   * @type {Object.<string, Array.<module:echarts/coord/cartesian/Axis2D>>}\n   * @private\n   */\n\n  this._axesMap = {};\n  /**\n   * @type {Array.<module:echarts/coord/cartesian/Axis2D>}\n   * @private\n   */\n\n  this._axesList = [];\n\n  this._initCartesian(gridModel, ecModel, api);\n\n  this.model = gridModel;\n}\n\nvar gridProto = Grid.prototype;\ngridProto.type = 'grid';\ngridProto.axisPointerEnabled = true;\n\ngridProto.getRect = function () {\n  return this._rect;\n};\n\ngridProto.update = function (ecModel, api) {\n  var axesMap = this._axesMap;\n\n  this._updateScale(ecModel, this.model);\n\n  each(axesMap.x, function (xAxis) {\n    niceScaleExtent(xAxis.scale, xAxis.model);\n  });\n  each(axesMap.y, function (yAxis) {\n    niceScaleExtent(yAxis.scale, yAxis.model);\n  }); // Key: axisDim_axisIndex, value: boolean, whether onZero target.\n\n  var onZeroRecords = {};\n  each(axesMap.x, function (xAxis) {\n    fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\n  });\n  each(axesMap.y, function (yAxis) {\n    fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\n  }); // Resize again if containLabel is enabled\n  // FIXME It may cause getting wrong grid size in data processing stage\n\n  this.resize(this.model, api);\n};\n\nfunction fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\n  axis.getAxesOnZeroOf = function () {\n    // TODO: onZero of multiple axes.\n    return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\n  }; // onZero can not be enabled in these two situations:\n  // 1. When any other axis is a category axis.\n  // 2. When no axis is cross 0 point.\n\n\n  var otherAxes = axesMap[otherAxisDim];\n  var otherAxisOnZeroOf;\n  var axisModel = axis.model;\n  var onZero = axisModel.get('axisLine.onZero');\n  var onZeroAxisIndex = axisModel.get('axisLine.onZeroAxisIndex');\n\n  if (!onZero) {\n    return;\n  } // If target axis is specified.\n\n\n  if (onZeroAxisIndex != null) {\n    if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\n      otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\n    }\n  } else {\n    // Find the first available other axis.\n    for (var idx in otherAxes) {\n      if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) // Consider that two Y axes on one value axis,\n      // if both onZero, the two Y axes overlap.\n      && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\n        otherAxisOnZeroOf = otherAxes[idx];\n        break;\n      }\n    }\n  }\n\n  if (otherAxisOnZeroOf) {\n    onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\n  }\n\n  function getOnZeroRecordKey(axis) {\n    return axis.dim + '_' + axis.index;\n  }\n}\n\nfunction canOnZeroToAxis(axis) {\n  return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\n}\n/**\n * Resize the grid\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\ngridProto.resize = function (gridModel, api, ignoreContainLabel) {\n  var gridRect = getLayoutRect(gridModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n  this._rect = gridRect;\n  var axesList = this._axesList;\n  adjustAxes(); // Minus label size\n\n  if (!ignoreContainLabel && gridModel.get('containLabel')) {\n    each(axesList, function (axis) {\n      if (!axis.model.get('axisLabel.inside')) {\n        var labelUnionRect = estimateLabelUnionRect(axis);\n\n        if (labelUnionRect) {\n          var dim = axis.isHorizontal() ? 'height' : 'width';\n          var margin = axis.model.get('axisLabel.margin');\n          gridRect[dim] -= labelUnionRect[dim] + margin;\n\n          if (axis.position === 'top') {\n            gridRect.y += labelUnionRect.height + margin;\n          } else if (axis.position === 'left') {\n            gridRect.x += labelUnionRect.width + margin;\n          }\n        }\n      }\n    });\n    adjustAxes();\n  }\n\n  function adjustAxes() {\n    each(axesList, function (axis) {\n      var isHorizontal = axis.isHorizontal();\n      var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\n      var idx = axis.inverse ? 1 : 0;\n      axis.setExtent(extent[idx], extent[1 - idx]);\n      updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\n    });\n  }\n};\n/**\n * @param {string} axisType\n * @param {number} [axisIndex]\n */\n\n\ngridProto.getAxis = function (axisType, axisIndex) {\n  var axesMapOnDim = this._axesMap[axisType];\n\n  if (axesMapOnDim != null) {\n    if (axisIndex == null) {\n      // Find first axis\n      for (var name in axesMapOnDim) {\n        if (axesMapOnDim.hasOwnProperty(name)) {\n          return axesMapOnDim[name];\n        }\n      }\n    }\n\n    return axesMapOnDim[axisIndex];\n  }\n};\n/**\n * @return {Array.<module:echarts/coord/Axis>}\n */\n\n\ngridProto.getAxes = function () {\n  return this._axesList.slice();\n};\n/**\n * Usage:\n *      grid.getCartesian(xAxisIndex, yAxisIndex);\n *      grid.getCartesian(xAxisIndex);\n *      grid.getCartesian(null, yAxisIndex);\n *      grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...});\n *\n * @param {number|Object} [xAxisIndex]\n * @param {number} [yAxisIndex]\n */\n\n\ngridProto.getCartesian = function (xAxisIndex, yAxisIndex) {\n  if (xAxisIndex != null && yAxisIndex != null) {\n    var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n    return this._coordsMap[key];\n  }\n\n  if (isObject(xAxisIndex)) {\n    yAxisIndex = xAxisIndex.yAxisIndex;\n    xAxisIndex = xAxisIndex.xAxisIndex;\n  } // When only xAxisIndex or yAxisIndex given, find its first cartesian.\n\n\n  for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\n    if (coordList[i].getAxis('x').index === xAxisIndex || coordList[i].getAxis('y').index === yAxisIndex) {\n      return coordList[i];\n    }\n  }\n};\n\ngridProto.getCartesians = function () {\n  return this._coordsList.slice();\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertToPixel = function (ecModel, finder, value) {\n  var target = this._findConvertTarget(ecModel, finder);\n\n  return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null;\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertFromPixel = function (ecModel, finder, value) {\n  var target = this._findConvertTarget(ecModel, finder);\n\n  return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null;\n};\n/**\n * @inner\n */\n\n\ngridProto._findConvertTarget = function (ecModel, finder) {\n  var seriesModel = finder.seriesModel;\n  var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents('xAxis')[0];\n  var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents('yAxis')[0];\n  var gridModel = finder.gridModel;\n  var coordsList = this._coordsList;\n  var cartesian;\n  var axis;\n\n  if (seriesModel) {\n    cartesian = seriesModel.coordinateSystem;\n    indexOf(coordsList, cartesian) < 0 && (cartesian = null);\n  } else if (xAxisModel && yAxisModel) {\n    cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n  } else if (xAxisModel) {\n    axis = this.getAxis('x', xAxisModel.componentIndex);\n  } else if (yAxisModel) {\n    axis = this.getAxis('y', yAxisModel.componentIndex);\n  } // Lowest priority.\n  else if (gridModel) {\n      var grid = gridModel.coordinateSystem;\n\n      if (grid === this) {\n        cartesian = this._coordsList[0];\n      }\n    }\n\n  return {\n    cartesian: cartesian,\n    axis: axis\n  };\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.containPoint = function (point) {\n  var coord = this._coordsList[0];\n\n  if (coord) {\n    return coord.containPoint(point);\n  }\n};\n/**\n * Initialize cartesian coordinate systems\n * @private\n */\n\n\ngridProto._initCartesian = function (gridModel, ecModel, api) {\n  var axisPositionUsed = {\n    left: false,\n    right: false,\n    top: false,\n    bottom: false\n  };\n  var axesMap = {\n    x: {},\n    y: {}\n  };\n  var axesCount = {\n    x: 0,\n    y: 0\n  }; /// Create axis\n\n  ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\n  ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\n\n  if (!axesCount.x || !axesCount.y) {\n    // Roll back when there no either x or y axis\n    this._axesMap = {};\n    this._axesList = [];\n    return;\n  }\n\n  this._axesMap = axesMap; /// Create cartesian2d\n\n  each(axesMap.x, function (xAxis, xAxisIndex) {\n    each(axesMap.y, function (yAxis, yAxisIndex) {\n      var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n      var cartesian = new Cartesian2D(key);\n      cartesian.grid = this;\n      cartesian.model = gridModel;\n      this._coordsMap[key] = cartesian;\n\n      this._coordsList.push(cartesian);\n\n      cartesian.addAxis(xAxis);\n      cartesian.addAxis(yAxis);\n    }, this);\n  }, this);\n\n  function createAxisCreator(axisType) {\n    return function (axisModel, idx) {\n      if (!isAxisUsedInTheGrid(axisModel, gridModel, ecModel)) {\n        return;\n      }\n\n      var axisPosition = axisModel.get('position');\n\n      if (axisType === 'x') {\n        // Fix position\n        if (axisPosition !== 'top' && axisPosition !== 'bottom') {\n          // Default bottom of X\n          axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\n        }\n      } else {\n        // Fix position\n        if (axisPosition !== 'left' && axisPosition !== 'right') {\n          // Default left of Y\n          axisPosition = axisPositionUsed.left ? 'right' : 'left';\n        }\n      }\n\n      axisPositionUsed[axisPosition] = true;\n      var axis = new Axis2D(axisType, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\n      var isCategory = axis.type === 'category';\n      axis.onBand = isCategory && axisModel.get('boundaryGap');\n      axis.inverse = axisModel.get('inverse'); // Inject axis into axisModel\n\n      axisModel.axis = axis; // Inject axisModel into axis\n\n      axis.model = axisModel; // Inject grid info axis\n\n      axis.grid = this; // Index of axis, can be used as key\n\n      axis.index = idx;\n\n      this._axesList.push(axis);\n\n      axesMap[axisType][idx] = axis;\n      axesCount[axisType]++;\n    };\n  }\n};\n/**\n * Update cartesian properties from series\n * @param  {module:echarts/model/Option} option\n * @private\n */\n\n\ngridProto._updateScale = function (ecModel, gridModel) {\n  // Reset scale\n  each(this._axesList, function (axis) {\n    axis.scale.setExtent(Infinity, -Infinity);\n  });\n  ecModel.eachSeries(function (seriesModel) {\n    if (isCartesian2D(seriesModel)) {\n      var axesModels = findAxesModels(seriesModel, ecModel);\n      var xAxisModel = axesModels[0];\n      var yAxisModel = axesModels[1];\n\n      if (!isAxisUsedInTheGrid(xAxisModel, gridModel, ecModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel, ecModel)) {\n        return;\n      }\n\n      var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n      var data = seriesModel.getData();\n      var xAxis = cartesian.getAxis('x');\n      var yAxis = cartesian.getAxis('y');\n\n      if (data.type === 'list') {\n        unionExtent(data, xAxis, seriesModel);\n        unionExtent(data, yAxis, seriesModel);\n      }\n    }\n  }, this);\n\n  function unionExtent(data, axis, seriesModel) {\n    each(data.mapDimension(axis.dim, true), function (dim) {\n      axis.scale.unionExtentFromData( // For example, the extent of the orginal dimension\n      // is [0.1, 0.5], the extent of the `stackResultDimension`\n      // is [7, 9], the final extent should not include [0.1, 0.5].\n      data, getStackedDimension(data, dim));\n    });\n  }\n};\n/**\n * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n\n\ngridProto.getTooltipAxes = function (dim) {\n  var baseAxes = [];\n  var otherAxes = [];\n  each(this.getCartesians(), function (cartesian) {\n    var baseAxis = dim != null && dim !== 'auto' ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\n    var otherAxis = cartesian.getOtherAxis(baseAxis);\n    indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\n    indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\n  });\n  return {\n    baseAxes: baseAxes,\n    otherAxes: otherAxes\n  };\n};\n/**\n * @inner\n */\n\n\nfunction updateAxisTransform(axis, coordBase) {\n  var axisExtent = axis.getExtent();\n  var axisExtentSum = axisExtent[0] + axisExtent[1]; // Fast transform\n\n  axis.toGlobalCoord = axis.dim === 'x' ? function (coord) {\n    return coord + coordBase;\n  } : function (coord) {\n    return axisExtentSum - coord + coordBase;\n  };\n  axis.toLocalCoord = axis.dim === 'x' ? function (coord) {\n    return coord - coordBase;\n  } : function (coord) {\n    return axisExtentSum - coord + coordBase;\n  };\n}\n\nvar axesTypes = ['xAxis', 'yAxis'];\n/**\n * @inner\n */\n\nfunction findAxesModels(seriesModel, ecModel) {\n  return map(axesTypes, function (axisType) {\n    var axisModel = seriesModel.getReferringComponents(axisType)[0];\n    return axisModel;\n  });\n}\n/**\n * @inner\n */\n\n\nfunction isCartesian2D(seriesModel) {\n  return seriesModel.get('coordinateSystem') === 'cartesian2d';\n}\n\nGrid.create = function (ecModel, api) {\n  var grids = [];\n  ecModel.eachComponent('grid', function (gridModel, idx) {\n    var grid = new Grid(gridModel, ecModel, api);\n    grid.name = 'grid_' + idx; // dataSampling requires axis extent, so resize\n    // should be performed in create stage.\n\n    grid.resize(gridModel, api, true);\n    gridModel.coordinateSystem = grid;\n    grids.push(grid);\n  }); // Inject the coordinateSystems into seriesModel\n\n  ecModel.eachSeries(function (seriesModel) {\n    if (!isCartesian2D(seriesModel)) {\n      return;\n    }\n\n    var axesModels = findAxesModels(seriesModel, ecModel);\n    var xAxisModel = axesModels[0];\n    var yAxisModel = axesModels[1];\n    var gridModel = xAxisModel.getCoordSysModel();\n    var grid = gridModel.coordinateSystem;\n    seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n  });\n  return grids;\n}; // For deciding which dimensions to use when creating list data\n\n\nGrid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions;\nCoordinateSystem.register('cartesian2d', Grid);\nvar _default = Grid;\nmodule.exports = _default;\n\n/***/ }),\n/* 412 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Data selectable mixin for chart series.\n * To eanble data select, option of series must have `selectedMode`.\n * And each data item will use `selected` to toggle itself selected status\n */\nvar _default = {\n  /**\n   * @param {Array.<Object>} targetList [{name, value, selected}, ...]\n   *        If targetList is an array, it should like [{name: ..., value: ...}, ...].\n   *        If targetList is a \"List\", it must have coordDim: 'value' dimension and name.\n   */\n  updateSelectedMap: function (targetList) {\n    this._targetList = zrUtil.isArray(targetList) ? targetList.slice() : [];\n    this._selectTargetMap = zrUtil.reduce(targetList || [], function (targetMap, target) {\n      targetMap.set(target.name, target);\n      return targetMap;\n    }, zrUtil.createHashMap());\n  },\n\n  /**\n   * Either name or id should be passed as input here.\n   * If both of them are defined, id is used.\n   *\n   * @param {string|undefined} name name of data\n   * @param {number|undefined} id dataIndex of data\n   */\n  // PENGING If selectedMode is null ?\n  select: function (name, id) {\n    var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n    var selectedMode = this.get('selectedMode');\n\n    if (selectedMode === 'single') {\n      this._selectTargetMap.each(function (target) {\n        target.selected = false;\n      });\n    }\n\n    target && (target.selected = true);\n  },\n\n  /**\n   * Either name or id should be passed as input here.\n   * If both of them are defined, id is used.\n   *\n   * @param {string|undefined} name name of data\n   * @param {number|undefined} id dataIndex of data\n   */\n  unSelect: function (name, id) {\n    var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name); // var selectedMode = this.get('selectedMode');\n    // selectedMode !== 'single' && target && (target.selected = false);\n\n    target && (target.selected = false);\n  },\n\n  /**\n   * Either name or id should be passed as input here.\n   * If both of them are defined, id is used.\n   *\n   * @param {string|undefined} name name of data\n   * @param {number|undefined} id dataIndex of data\n   */\n  toggleSelected: function (name, id) {\n    var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n\n    if (target != null) {\n      this[target.selected ? 'unSelect' : 'select'](name, id);\n      return target.selected;\n    }\n  },\n\n  /**\n   * Either name or id should be passed as input here.\n   * If both of them are defined, id is used.\n   *\n   * @param {string|undefined} name name of data\n   * @param {number|undefined} id dataIndex of data\n   */\n  isSelected: function (name, id) {\n    var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n    return target && target.selected;\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 413 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n */\nfunction updateViewOnPan(controllerHost, dx, dy) {\n  var target = controllerHost.target;\n  var pos = target.position;\n  pos[0] += dx;\n  pos[1] += dy;\n  target.dirty();\n}\n/**\n * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n * @param {number} controllerHost.zoom\n * @param {number} controllerHost.zoomLimit like: {min: 1, max: 2}\n */\n\n\nfunction updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {\n  var target = controllerHost.target;\n  var zoomLimit = controllerHost.zoomLimit;\n  var pos = target.position;\n  var scale = target.scale;\n  var newZoom = controllerHost.zoom = controllerHost.zoom || 1;\n  newZoom *= zoomDelta;\n\n  if (zoomLimit) {\n    var zoomMin = zoomLimit.min || 0;\n    var zoomMax = zoomLimit.max || Infinity;\n    newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);\n  }\n\n  var zoomScale = newZoom / controllerHost.zoom;\n  controllerHost.zoom = newZoom; // Keep the mouse center when scaling\n\n  pos[0] -= (zoomX - pos[0]) * (zoomScale - 1);\n  pos[1] -= (zoomY - pos[1]) * (zoomScale - 1);\n  scale[0] *= zoomScale;\n  scale[1] *= zoomScale;\n  target.dirty();\n}\n\nexports.updateViewOnPan = updateViewOnPan;\nexports.updateViewOnZoom = updateViewOnZoom;\n\n/***/ }),\n/* 414 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/coord/View} view\n * @param {Object} payload\n * @param {Object} [zoomLimit]\n */\nfunction updateCenterAndZoom(view, payload, zoomLimit) {\n  var previousZoom = view.getZoom();\n  var center = view.getCenter();\n  var zoom = payload.zoom;\n  var point = view.dataToPoint(center);\n\n  if (payload.dx != null && payload.dy != null) {\n    point[0] -= payload.dx;\n    point[1] -= payload.dy;\n    var center = view.pointToData(point);\n    view.setCenter(center);\n  }\n\n  if (zoom != null) {\n    if (zoomLimit) {\n      var zoomMin = zoomLimit.min || 0;\n      var zoomMax = zoomLimit.max || Infinity;\n      zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;\n    } // Zoom on given point(originX, originY)\n\n\n    view.scale[0] *= zoom;\n    view.scale[1] *= zoom;\n    var position = view.position;\n    var fixX = (payload.originX - position[0]) * (zoom - 1);\n    var fixY = (payload.originY - position[1]) * (zoom - 1);\n    position[0] -= fixX;\n    position[1] -= fixY;\n    view.updateTransform(); // Get the new center\n\n    var center = view.pointToData(point);\n    view.setCenter(center);\n    view.setZoom(zoom * previousZoom);\n  }\n\n  return {\n    center: view.getCenter(),\n    zoom: view.getZoom()\n  };\n}\n\nexports.updateCenterAndZoom = updateCenterAndZoom;\n\n/***/ }),\n/* 415 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar Geo = __webpack_require__(1091);\n\nvar layout = __webpack_require__(49);\n\nvar numberUtil = __webpack_require__(26);\n\nvar geoSourceManager = __webpack_require__(336);\n\nvar mapDataStorage = __webpack_require__(409);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Resize method bound to the geo\n * @param {module:echarts/coord/geo/GeoModel|module:echarts/chart/map/MapModel} geoModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizeGeo(geoModel, api) {\n  var boundingCoords = geoModel.get('boundingCoords');\n\n  if (boundingCoords != null) {\n    var leftTop = boundingCoords[0];\n    var rightBottom = boundingCoords[1];\n\n    if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) {} else {\n      this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]);\n    }\n  }\n\n  var rect = this.getBoundingRect();\n  var boxLayoutOption;\n  var center = geoModel.get('layoutCenter');\n  var size = geoModel.get('layoutSize');\n  var viewWidth = api.getWidth();\n  var viewHeight = api.getHeight();\n  var aspect = rect.width / rect.height * this.aspectScale;\n  var useCenterAndSize = false;\n\n  if (center && size) {\n    center = [numberUtil.parsePercent(center[0], viewWidth), numberUtil.parsePercent(center[1], viewHeight)];\n    size = numberUtil.parsePercent(size, Math.min(viewWidth, viewHeight));\n\n    if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) {\n      useCenterAndSize = true;\n    } else {}\n  }\n\n  var viewRect;\n\n  if (useCenterAndSize) {\n    var viewRect = {};\n\n    if (aspect > 1) {\n      // Width is same with size\n      viewRect.width = size;\n      viewRect.height = size / aspect;\n    } else {\n      viewRect.height = size;\n      viewRect.width = size * aspect;\n    }\n\n    viewRect.y = center[1] - viewRect.height / 2;\n    viewRect.x = center[0] - viewRect.width / 2;\n  } else {\n    // Use left/top/width/height\n    boxLayoutOption = geoModel.getBoxLayoutParams(); // 0.75 rate\n\n    boxLayoutOption.aspect = aspect;\n    viewRect = layout.getLayoutRect(boxLayoutOption, {\n      width: viewWidth,\n      height: viewHeight\n    });\n  }\n\n  this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);\n  this.setCenter(geoModel.get('center'));\n  this.setZoom(geoModel.get('zoom'));\n}\n/**\n * @param {module:echarts/coord/Geo} geo\n * @param {module:echarts/model/Model} model\n * @inner\n */\n\n\nfunction setGeoCoords(geo, model) {\n  zrUtil.each(model.get('geoCoord'), function (geoCoord, name) {\n    geo.addGeoCoord(name, geoCoord);\n  });\n}\n\nvar geoCreator = {\n  // For deciding which dimensions to use when creating list data\n  dimensions: Geo.prototype.dimensions,\n  create: function (ecModel, api) {\n    var geoList = []; // FIXME Create each time may be slow\n\n    ecModel.eachComponent('geo', function (geoModel, idx) {\n      var name = geoModel.get('map');\n      var aspectScale = geoModel.get('aspectScale');\n      var invertLongitute = true;\n      var mapRecords = mapDataStorage.retrieveMap(name);\n\n      if (mapRecords && mapRecords[0] && mapRecords[0].type === 'svg') {\n        aspectScale == null && (aspectScale = 1);\n        invertLongitute = false;\n      } else {\n        aspectScale == null && (aspectScale = 0.75);\n      }\n\n      var geo = new Geo(name + idx, name, geoModel.get('nameMap'), invertLongitute);\n      geo.aspectScale = aspectScale;\n      geo.zoomLimit = geoModel.get('scaleLimit');\n      geoList.push(geo);\n      setGeoCoords(geo, geoModel);\n      geoModel.coordinateSystem = geo;\n      geo.model = geoModel; // Inject resize method\n\n      geo.resize = resizeGeo;\n      geo.resize(geoModel, api);\n    });\n    ecModel.eachSeries(function (seriesModel) {\n      var coordSys = seriesModel.get('coordinateSystem');\n\n      if (coordSys === 'geo') {\n        var geoIndex = seriesModel.get('geoIndex') || 0;\n        seriesModel.coordinateSystem = geoList[geoIndex];\n      }\n    }); // If has map series\n\n    var mapModelGroupBySeries = {};\n    ecModel.eachSeriesByType('map', function (seriesModel) {\n      if (!seriesModel.getHostGeoModel()) {\n        var mapType = seriesModel.getMapType();\n        mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];\n        mapModelGroupBySeries[mapType].push(seriesModel);\n      }\n    });\n    zrUtil.each(mapModelGroupBySeries, function (mapSeries, mapType) {\n      var nameMapList = zrUtil.map(mapSeries, function (singleMapSeries) {\n        return singleMapSeries.get('nameMap');\n      });\n      var geo = new Geo(mapType, mapType, zrUtil.mergeAll(nameMapList));\n      geo.zoomLimit = zrUtil.retrieve.apply(null, zrUtil.map(mapSeries, function (singleMapSeries) {\n        return singleMapSeries.get('scaleLimit');\n      }));\n      geoList.push(geo); // Inject resize method\n\n      geo.resize = resizeGeo;\n      geo.aspectScale = mapSeries[0].get('aspectScale');\n      geo.resize(mapSeries[0], api);\n      zrUtil.each(mapSeries, function (singleMapSeries) {\n        singleMapSeries.coordinateSystem = geo;\n        setGeoCoords(geo, singleMapSeries);\n      });\n    });\n    return geoList;\n  },\n\n  /**\n   * Fill given regions array\n   * @param  {Array.<Object>} originRegionArr\n   * @param  {string} mapName\n   * @param  {Object} [nameMap]\n   * @return {Array}\n   */\n  getFilledRegions: function (originRegionArr, mapName, nameMap) {\n    // Not use the original\n    var regionsArr = (originRegionArr || []).slice();\n    var dataNameMap = zrUtil.createHashMap();\n\n    for (var i = 0; i < regionsArr.length; i++) {\n      dataNameMap.set(regionsArr[i].name, regionsArr[i]);\n    }\n\n    var source = geoSourceManager.load(mapName, nameMap);\n    zrUtil.each(source.regions, function (region) {\n      var name = region.name;\n      !dataNameMap.get(name) && regionsArr.push({\n        name: name\n      });\n    });\n    return regionsArr;\n  }\n};\necharts.registerCoordinateSystem('geo', geoCreator);\nvar _default = geoCreator;\nmodule.exports = _default;\n\n/***/ }),\n/* 416 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar vector = __webpack_require__(56);\n\nvar matrix = __webpack_require__(89);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar Transformable = __webpack_require__(323);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Simple view coordinate system\n * Mapping given x, y to transformd view x, y\n */\nvar v2ApplyTransform = vector.applyTransform; // Dummy transform node\n\nfunction TransformDummy() {\n  Transformable.call(this);\n}\n\nzrUtil.mixin(TransformDummy, Transformable);\n\nfunction View(name) {\n  /**\n   * @type {string}\n   */\n  this.name = name;\n  /**\n   * @type {Object}\n   */\n\n  this.zoomLimit;\n  Transformable.call(this);\n  this._roamTransformable = new TransformDummy();\n  this._rawTransformable = new TransformDummy();\n  this._center;\n  this._zoom;\n}\n\nView.prototype = {\n  constructor: View,\n  type: 'view',\n\n  /**\n   * @param {Array.<string>}\n   * @readOnly\n   */\n  dimensions: ['x', 'y'],\n\n  /**\n   * Set bounding rect\n   * @param {number} x\n   * @param {number} y\n   * @param {number} width\n   * @param {number} height\n   */\n  // PENDING to getRect\n  setBoundingRect: function (x, y, width, height) {\n    this._rect = new BoundingRect(x, y, width, height);\n    return this._rect;\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  // PENDING to getRect\n  getBoundingRect: function () {\n    return this._rect;\n  },\n\n  /**\n   * @param {number} x\n   * @param {number} y\n   * @param {number} width\n   * @param {number} height\n   */\n  setViewRect: function (x, y, width, height) {\n    this.transformTo(x, y, width, height);\n    this._viewRect = new BoundingRect(x, y, width, height);\n  },\n\n  /**\n   * Transformed to particular position and size\n   * @param {number} x\n   * @param {number} y\n   * @param {number} width\n   * @param {number} height\n   */\n  transformTo: function (x, y, width, height) {\n    var rect = this.getBoundingRect();\n    var rawTransform = this._rawTransformable;\n    rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n    rawTransform.decomposeTransform();\n\n    this._updateTransform();\n  },\n\n  /**\n   * Set center of view\n   * @param {Array.<number>} [centerCoord]\n   */\n  setCenter: function (centerCoord) {\n    if (!centerCoord) {\n      return;\n    }\n\n    this._center = centerCoord;\n\n    this._updateCenterAndZoom();\n  },\n\n  /**\n   * @param {number} zoom\n   */\n  setZoom: function (zoom) {\n    zoom = zoom || 1;\n    var zoomLimit = this.zoomLimit;\n\n    if (zoomLimit) {\n      if (zoomLimit.max != null) {\n        zoom = Math.min(zoomLimit.max, zoom);\n      }\n\n      if (zoomLimit.min != null) {\n        zoom = Math.max(zoomLimit.min, zoom);\n      }\n    }\n\n    this._zoom = zoom;\n\n    this._updateCenterAndZoom();\n  },\n\n  /**\n   * Get default center without roam\n   */\n  getDefaultCenter: function () {\n    // Rect before any transform\n    var rawRect = this.getBoundingRect();\n    var cx = rawRect.x + rawRect.width / 2;\n    var cy = rawRect.y + rawRect.height / 2;\n    return [cx, cy];\n  },\n  getCenter: function () {\n    return this._center || this.getDefaultCenter();\n  },\n  getZoom: function () {\n    return this._zoom || 1;\n  },\n\n  /**\n   * @return {Array.<number}\n   */\n  getRoamTransform: function () {\n    return this._roamTransformable.getLocalTransform();\n  },\n\n  /**\n   * Remove roam\n   */\n  _updateCenterAndZoom: function () {\n    // Must update after view transform updated\n    var rawTransformMatrix = this._rawTransformable.getLocalTransform();\n\n    var roamTransform = this._roamTransformable;\n    var defaultCenter = this.getDefaultCenter();\n    var center = this.getCenter();\n    var zoom = this.getZoom();\n    center = vector.applyTransform([], center, rawTransformMatrix);\n    defaultCenter = vector.applyTransform([], defaultCenter, rawTransformMatrix);\n    roamTransform.origin = center;\n    roamTransform.position = [defaultCenter[0] - center[0], defaultCenter[1] - center[1]];\n    roamTransform.scale = [zoom, zoom];\n\n    this._updateTransform();\n  },\n\n  /**\n   * Update transform from roam and mapLocation\n   * @private\n   */\n  _updateTransform: function () {\n    var roamTransformable = this._roamTransformable;\n    var rawTransformable = this._rawTransformable;\n    rawTransformable.parent = roamTransformable;\n    roamTransformable.updateTransform();\n    rawTransformable.updateTransform();\n    matrix.copy(this.transform || (this.transform = []), rawTransformable.transform || matrix.create());\n    this._rawTransform = rawTransformable.getLocalTransform();\n    this.invTransform = this.invTransform || [];\n    matrix.invert(this.invTransform, this.transform);\n    this.decomposeTransform();\n  },\n  getTransformInfo: function () {\n    var roamTransform = this._roamTransformable.transform;\n    var rawTransformable = this._rawTransformable;\n    return {\n      roamTransform: roamTransform ? zrUtil.slice(roamTransform) : matrix.create(),\n      rawScale: zrUtil.slice(rawTransformable.scale),\n      rawPosition: zrUtil.slice(rawTransformable.position)\n    };\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getViewRect: function () {\n    return this._viewRect;\n  },\n\n  /**\n   * Get view rect after roam transform\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getViewRectAfterRoam: function () {\n    var rect = this.getBoundingRect().clone();\n    rect.applyTransform(this.transform);\n    return rect;\n  },\n\n  /**\n   * Convert a single (lon, lat) data item to (x, y) point.\n   * @param {Array.<number>} data\n   * @param {boolean} noRoam\n   * @param {Array.<number>} [out]\n   * @return {Array.<number>}\n   */\n  dataToPoint: function (data, noRoam, out) {\n    var transform = noRoam ? this._rawTransform : this.transform;\n    out = out || [];\n    return transform ? v2ApplyTransform(out, data, transform) : vector.copy(out, data);\n  },\n\n  /**\n   * Convert a (x, y) point to (lon, lat) data\n   * @param {Array.<number>} point\n   * @return {Array.<number>}\n   */\n  pointToData: function (point) {\n    var invTransform = this.invTransform;\n    return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]];\n  },\n\n  /**\n   * @implements\n   * see {module:echarts/CoodinateSystem}\n   */\n  convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n  /**\n   * @implements\n   * see {module:echarts/CoodinateSystem}\n   */\n  convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),\n\n  /**\n   * @implements\n   * see {module:echarts/CoodinateSystem}\n   */\n  containPoint: function (point) {\n    return this.getViewRectAfterRoam().contain(point[0], point[1]);\n  }\n  /**\n   * @return {number}\n   */\n  // getScalarScale: function () {\n  //     // Use determinant square root of transform to mutiply scalar\n  //     var m = this.transform;\n  //     var det = Math.sqrt(Math.abs(m[0] * m[3] - m[2] * m[1]));\n  //     return det;\n  // }\n\n};\nzrUtil.mixin(View, Transformable);\n\nfunction doConvert(methodName, ecModel, finder, value) {\n  var seriesModel = finder.seriesModel;\n  var coordSys = seriesModel ? seriesModel.coordinateSystem : null; // e.g., graph.\n\n  return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nvar _default = View;\nmodule.exports = _default;\n\n/***/ }),\n/* 417 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar linkList = __webpack_require__(593);\n\nvar List = __webpack_require__(116);\n\nvar createDimensions = __webpack_require__(215);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Tree data structure\n *\n * @module echarts/data/Tree\n */\n\n/**\n * @constructor module:echarts/data/Tree~TreeNode\n * @param {string} name\n * @param {module:echarts/data/Tree} hostTree\n */\nvar TreeNode = function (name, hostTree) {\n  /**\n   * @type {string}\n   */\n  this.name = name || '';\n  /**\n   * Depth of node\n   *\n   * @type {number}\n   * @readOnly\n   */\n\n  this.depth = 0;\n  /**\n   * Height of the subtree rooted at this node.\n   * @type {number}\n   * @readOnly\n   */\n\n  this.height = 0;\n  /**\n   * @type {module:echarts/data/Tree~TreeNode}\n   * @readOnly\n   */\n\n  this.parentNode = null;\n  /**\n   * Reference to list item.\n   * Do not persistent dataIndex outside,\n   * besause it may be changed by list.\n   * If dataIndex -1,\n   * this node is logical deleted (filtered) in list.\n   *\n   * @type {Object}\n   * @readOnly\n   */\n\n  this.dataIndex = -1;\n  /**\n   * @type {Array.<module:echarts/data/Tree~TreeNode>}\n   * @readOnly\n   */\n\n  this.children = [];\n  /**\n   * @type {Array.<module:echarts/data/Tree~TreeNode>}\n   * @pubilc\n   */\n\n  this.viewChildren = [];\n  /**\n   * @type {moduel:echarts/data/Tree}\n   * @readOnly\n   */\n\n  this.hostTree = hostTree;\n};\n\nTreeNode.prototype = {\n  constructor: TreeNode,\n\n  /**\n   * The node is removed.\n   * @return {boolean} is removed.\n   */\n  isRemoved: function () {\n    return this.dataIndex < 0;\n  },\n\n  /**\n   * Travel this subtree (include this node).\n   * Usage:\n   *    node.eachNode(function () { ... }); // preorder\n   *    node.eachNode('preorder', function () { ... }); // preorder\n   *    node.eachNode('postorder', function () { ... }); // postorder\n   *    node.eachNode(\n   *        {order: 'postorder', attr: 'viewChildren'},\n   *        function () { ... }\n   *    ); // postorder\n   *\n   * @param {(Object|string)} options If string, means order.\n   * @param {string=} options.order 'preorder' or 'postorder'\n   * @param {string=} options.attr 'children' or 'viewChildren'\n   * @param {Function} cb If in preorder and return false,\n   *                      its subtree will not be visited.\n   * @param {Object} [context]\n   */\n  eachNode: function (options, cb, context) {\n    if (typeof options === 'function') {\n      context = cb;\n      cb = options;\n      options = null;\n    }\n\n    options = options || {};\n\n    if (zrUtil.isString(options)) {\n      options = {\n        order: options\n      };\n    }\n\n    var order = options.order || 'preorder';\n    var children = this[options.attr || 'children'];\n    var suppressVisitSub;\n    order === 'preorder' && (suppressVisitSub = cb.call(context, this));\n\n    for (var i = 0; !suppressVisitSub && i < children.length; i++) {\n      children[i].eachNode(options, cb, context);\n    }\n\n    order === 'postorder' && cb.call(context, this);\n  },\n\n  /**\n   * Update depth and height of this subtree.\n   *\n   * @param  {number} depth\n   */\n  updateDepthAndHeight: function (depth) {\n    var height = 0;\n    this.depth = depth;\n\n    for (var i = 0; i < this.children.length; i++) {\n      var child = this.children[i];\n      child.updateDepthAndHeight(depth + 1);\n\n      if (child.height > height) {\n        height = child.height;\n      }\n    }\n\n    this.height = height + 1;\n  },\n\n  /**\n   * @param  {string} id\n   * @return {module:echarts/data/Tree~TreeNode}\n   */\n  getNodeById: function (id) {\n    if (this.getId() === id) {\n      return this;\n    }\n\n    for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n      var res = children[i].getNodeById(id);\n\n      if (res) {\n        return res;\n      }\n    }\n  },\n\n  /**\n   * @param {module:echarts/data/Tree~TreeNode} node\n   * @return {boolean}\n   */\n  contains: function (node) {\n    if (node === this) {\n      return true;\n    }\n\n    for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n      var res = children[i].contains(node);\n\n      if (res) {\n        return res;\n      }\n    }\n  },\n\n  /**\n   * @param {boolean} includeSelf Default false.\n   * @return {Array.<module:echarts/data/Tree~TreeNode>} order: [root, child, grandchild, ...]\n   */\n  getAncestors: function (includeSelf) {\n    var ancestors = [];\n    var node = includeSelf ? this : this.parentNode;\n\n    while (node) {\n      ancestors.push(node);\n      node = node.parentNode;\n    }\n\n    ancestors.reverse();\n    return ancestors;\n  },\n\n  /**\n   * @param {string|Array=} [dimension='value'] Default 'value'. can be 0, 1, 2, 3\n   * @return {number} Value.\n   */\n  getValue: function (dimension) {\n    var data = this.hostTree.data;\n    return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n  },\n\n  /**\n   * @param {Object} layout\n   * @param {boolean=} [merge=false]\n   */\n  setLayout: function (layout, merge) {\n    this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge);\n  },\n\n  /**\n   * @return {Object} layout\n   */\n  getLayout: function () {\n    return this.hostTree.data.getItemLayout(this.dataIndex);\n  },\n\n  /**\n   * @param {string} [path]\n   * @return {module:echarts/model/Model}\n   */\n  getModel: function (path) {\n    if (this.dataIndex < 0) {\n      return;\n    }\n\n    var hostTree = this.hostTree;\n    var itemModel = hostTree.data.getItemModel(this.dataIndex);\n    return itemModel.getModel(path);\n  },\n\n  /**\n   * @example\n   *  setItemVisual('color', color);\n   *  setItemVisual({\n   *      'color': color\n   *  });\n   */\n  setVisual: function (key, value) {\n    this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);\n  },\n\n  /**\n   * Get item visual\n   */\n  getVisual: function (key, ignoreParent) {\n    return this.hostTree.data.getItemVisual(this.dataIndex, key, ignoreParent);\n  },\n\n  /**\n   * @public\n   * @return {number}\n   */\n  getRawIndex: function () {\n    return this.hostTree.data.getRawIndex(this.dataIndex);\n  },\n\n  /**\n   * @public\n   * @return {string}\n   */\n  getId: function () {\n    return this.hostTree.data.getId(this.dataIndex);\n  },\n\n  /**\n   * if this is an ancestor of another node\n   *\n   * @public\n   * @param {TreeNode} node another node\n   * @return {boolean} if is ancestor\n   */\n  isAncestorOf: function (node) {\n    var parent = node.parentNode;\n\n    while (parent) {\n      if (parent === this) {\n        return true;\n      }\n\n      parent = parent.parentNode;\n    }\n\n    return false;\n  },\n\n  /**\n   * if this is an descendant of another node\n   *\n   * @public\n   * @param {TreeNode} node another node\n   * @return {boolean} if is descendant\n   */\n  isDescendantOf: function (node) {\n    return node !== this && node.isAncestorOf(this);\n  }\n};\n/**\n * @constructor\n * @alias module:echarts/data/Tree\n * @param {module:echarts/model/Model} hostModel\n */\n\nfunction Tree(hostModel) {\n  /**\n   * @type {module:echarts/data/Tree~TreeNode}\n   * @readOnly\n   */\n  this.root;\n  /**\n   * @type {module:echarts/data/List}\n   * @readOnly\n   */\n\n  this.data;\n  /**\n   * Index of each item is the same as the raw index of coresponding list item.\n   * @private\n   * @type {Array.<module:echarts/data/Tree~TreeNode}\n   */\n\n  this._nodes = [];\n  /**\n   * @private\n   * @readOnly\n   * @type {module:echarts/model/Model}\n   */\n\n  this.hostModel = hostModel;\n}\n\nTree.prototype = {\n  constructor: Tree,\n  type: 'tree',\n\n  /**\n   * Travel this subtree (include this node).\n   * Usage:\n   *    node.eachNode(function () { ... }); // preorder\n   *    node.eachNode('preorder', function () { ... }); // preorder\n   *    node.eachNode('postorder', function () { ... }); // postorder\n   *    node.eachNode(\n   *        {order: 'postorder', attr: 'viewChildren'},\n   *        function () { ... }\n   *    ); // postorder\n   *\n   * @param {(Object|string)} options If string, means order.\n   * @param {string=} options.order 'preorder' or 'postorder'\n   * @param {string=} options.attr 'children' or 'viewChildren'\n   * @param {Function} cb\n   * @param {Object}   [context]\n   */\n  eachNode: function (options, cb, context) {\n    this.root.eachNode(options, cb, context);\n  },\n\n  /**\n   * @param {number} dataIndex\n   * @return {module:echarts/data/Tree~TreeNode}\n   */\n  getNodeByDataIndex: function (dataIndex) {\n    var rawIndex = this.data.getRawIndex(dataIndex);\n    return this._nodes[rawIndex];\n  },\n\n  /**\n   * @param {string} name\n   * @return {module:echarts/data/Tree~TreeNode}\n   */\n  getNodeByName: function (name) {\n    return this.root.getNodeByName(name);\n  },\n\n  /**\n   * Update item available by list,\n   * when list has been performed options like 'filterSelf' or 'map'.\n   */\n  update: function () {\n    var data = this.data;\n    var nodes = this._nodes;\n\n    for (var i = 0, len = nodes.length; i < len; i++) {\n      nodes[i].dataIndex = -1;\n    }\n\n    for (var i = 0, len = data.count(); i < len; i++) {\n      nodes[data.getRawIndex(i)].dataIndex = i;\n    }\n  },\n\n  /**\n   * Clear all layouts\n   */\n  clearLayouts: function () {\n    this.data.clearItemLayouts();\n  }\n};\n/**\n * data node format:\n * {\n *     name: ...\n *     value: ...\n *     children: [\n *         {\n *             name: ...\n *             value: ...\n *             children: ...\n *         },\n *         ...\n *     ]\n * }\n *\n * @static\n * @param {Object} dataRoot Root node.\n * @param {module:echarts/model/Model} hostModel\n * @return module:echarts/data/Tree\n */\n\nTree.createTree = function (dataRoot, hostModel, beforeLink) {\n  var tree = new Tree(hostModel);\n  var listData = [];\n  var dimMax = 1;\n  buildHierarchy(dataRoot);\n\n  function buildHierarchy(dataNode, parentNode) {\n    var value = dataNode.value;\n    dimMax = Math.max(dimMax, zrUtil.isArray(value) ? value.length : 1);\n    listData.push(dataNode);\n    var node = new TreeNode(dataNode.name, tree);\n    parentNode ? addChild(node, parentNode) : tree.root = node;\n\n    tree._nodes.push(node);\n\n    var children = dataNode.children;\n\n    if (children) {\n      for (var i = 0; i < children.length; i++) {\n        buildHierarchy(children[i], node);\n      }\n    }\n  }\n\n  tree.root.updateDepthAndHeight(0);\n  var dimensionsInfo = createDimensions(listData, {\n    coordDimensions: ['value'],\n    dimensionsCount: dimMax\n  });\n  var list = new List(dimensionsInfo, hostModel);\n  list.initData(listData);\n  beforeLink && beforeLink(list);\n  linkList({\n    mainData: list,\n    struct: tree,\n    structAttr: 'tree'\n  });\n  tree.update();\n  return tree;\n};\n/**\n * It is needed to consider the mess of 'list', 'hostModel' when creating a TreeNote,\n * so this function is not ready and not necessary to be public.\n *\n * @param {(module:echarts/data/Tree~TreeNode|Object)} child\n */\n\n\nfunction addChild(child, node) {\n  var children = node.children;\n\n  if (child.parentNode === node) {\n    return;\n  }\n\n  children.push(child);\n  child.parentNode = node;\n}\n\nvar _default = Tree;\nmodule.exports = _default;\n\n/***/ }),\n/* 418 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar LineGroup = __webpack_require__(419);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/LineDraw\n */\n// import IncrementalDisplayable from 'zrender/src/graphic/IncrementalDisplayable';\n\n/**\n * @alias module:echarts/component/marker/LineDraw\n * @constructor\n */\nfunction LineDraw(ctor) {\n  this._ctor = ctor || LineGroup;\n  this.group = new graphic.Group();\n}\n\nvar lineDrawProto = LineDraw.prototype;\n\nlineDrawProto.isPersistent = function () {\n  return true;\n};\n/**\n * @param {module:echarts/data/List} lineData\n */\n\n\nlineDrawProto.updateData = function (lineData) {\n  var lineDraw = this;\n  var group = lineDraw.group;\n  var oldLineData = lineDraw._lineData;\n  lineDraw._lineData = lineData; // There is no oldLineData only when first rendering or switching from\n  // stream mode to normal mode, where previous elements should be removed.\n\n  if (!oldLineData) {\n    group.removeAll();\n  }\n\n  var seriesScope = makeSeriesScope(lineData);\n  lineData.diff(oldLineData).add(function (idx) {\n    doAdd(lineDraw, lineData, idx, seriesScope);\n  }).update(function (newIdx, oldIdx) {\n    doUpdate(lineDraw, oldLineData, lineData, oldIdx, newIdx, seriesScope);\n  }).remove(function (idx) {\n    group.remove(oldLineData.getItemGraphicEl(idx));\n  }).execute();\n};\n\nfunction doAdd(lineDraw, lineData, idx, seriesScope) {\n  var itemLayout = lineData.getItemLayout(idx);\n\n  if (!lineNeedsDraw(itemLayout)) {\n    return;\n  }\n\n  var el = new lineDraw._ctor(lineData, idx, seriesScope);\n  lineData.setItemGraphicEl(idx, el);\n  lineDraw.group.add(el);\n}\n\nfunction doUpdate(lineDraw, oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n  var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n  if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n    lineDraw.group.remove(itemEl);\n    return;\n  }\n\n  if (!itemEl) {\n    itemEl = new lineDraw._ctor(newLineData, newIdx, seriesScope);\n  } else {\n    itemEl.updateData(newLineData, newIdx, seriesScope);\n  }\n\n  newLineData.setItemGraphicEl(newIdx, itemEl);\n  lineDraw.group.add(itemEl);\n}\n\nlineDrawProto.updateLayout = function () {\n  var lineData = this._lineData; // Do not support update layout in incremental mode.\n\n  if (!lineData) {\n    return;\n  }\n\n  lineData.eachItemGraphicEl(function (el, idx) {\n    el.updateLayout(lineData, idx);\n  }, this);\n};\n\nlineDrawProto.incrementalPrepareUpdate = function (lineData) {\n  this._seriesScope = makeSeriesScope(lineData);\n  this._lineData = null;\n  this.group.removeAll();\n};\n\nfunction isEffectObject(el) {\n  return el.animators && el.animators.length > 0;\n}\n\nlineDrawProto.incrementalUpdate = function (taskParams, lineData) {\n  function updateIncrementalAndHover(el) {\n    if (!el.isGroup && !isEffectObject(el)) {\n      el.incremental = el.useHoverLayer = true;\n    }\n  }\n\n  for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n    var itemLayout = lineData.getItemLayout(idx);\n\n    if (lineNeedsDraw(itemLayout)) {\n      var el = new this._ctor(lineData, idx, this._seriesScope);\n      el.traverse(updateIncrementalAndHover);\n      this.group.add(el);\n      lineData.setItemGraphicEl(idx, el);\n    }\n  }\n};\n\nfunction makeSeriesScope(lineData) {\n  var hostModel = lineData.hostModel;\n  return {\n    lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n    hoverLineStyle: hostModel.getModel('emphasis.lineStyle').getLineStyle(),\n    labelModel: hostModel.getModel('label'),\n    hoverLabelModel: hostModel.getModel('emphasis.label')\n  };\n}\n\nlineDrawProto.remove = function () {\n  this._clearIncremental();\n\n  this._incremental = null;\n  this.group.removeAll();\n};\n\nlineDrawProto._clearIncremental = function () {\n  var incremental = this._incremental;\n\n  if (incremental) {\n    incremental.clearDisplaybles();\n  }\n};\n\nfunction isPointNaN(pt) {\n  return isNaN(pt[0]) || isNaN(pt[1]);\n}\n\nfunction lineNeedsDraw(pts) {\n  return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\n}\n\nvar _default = LineDraw;\nmodule.exports = _default;\n\n/***/ }),\n/* 419 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar vector = __webpack_require__(56);\n\nvar symbolUtil = __webpack_require__(117);\n\nvar LinePath = __webpack_require__(1114);\n\nvar graphic = __webpack_require__(23);\n\nvar _number = __webpack_require__(26);\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Line\n */\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\n\nfunction makeSymbolTypeKey(symbolCategory) {\n  return '_' + symbolCategory + 'Type';\n}\n/**\n * @inner\n */\n\n\nfunction createSymbol(name, lineData, idx) {\n  var symbolType = lineData.getItemVisual(idx, name);\n\n  if (!symbolType || symbolType === 'none') {\n    return;\n  }\n\n  var color = lineData.getItemVisual(idx, 'color');\n  var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n  var symbolRotate = lineData.getItemVisual(idx, name + 'Rotate');\n\n  if (!zrUtil.isArray(symbolSize)) {\n    symbolSize = [symbolSize, symbolSize];\n  }\n\n  var symbolPath = symbolUtil.createSymbol(symbolType, -symbolSize[0] / 2, -symbolSize[1] / 2, symbolSize[0], symbolSize[1], color); // rotate by default if symbolRotate is not specified or NaN\n\n  symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0;\n  symbolPath.name = name;\n  return symbolPath;\n}\n\nfunction createLine(points) {\n  var line = new LinePath({\n    name: 'line',\n    subPixelOptimize: true\n  });\n  setLinePoints(line.shape, points);\n  return line;\n}\n\nfunction setLinePoints(targetShape, points) {\n  targetShape.x1 = points[0][0];\n  targetShape.y1 = points[0][1];\n  targetShape.x2 = points[1][0];\n  targetShape.y2 = points[1][1];\n  targetShape.percent = 1;\n  var cp1 = points[2];\n\n  if (cp1) {\n    targetShape.cpx1 = cp1[0];\n    targetShape.cpy1 = cp1[1];\n  } else {\n    targetShape.cpx1 = NaN;\n    targetShape.cpy1 = NaN;\n  }\n}\n\nfunction updateSymbolAndLabelBeforeLineUpdate() {\n  var lineGroup = this;\n  var symbolFrom = lineGroup.childOfName('fromSymbol');\n  var symbolTo = lineGroup.childOfName('toSymbol');\n  var label = lineGroup.childOfName('label'); // Quick reject\n\n  if (!symbolFrom && !symbolTo && label.ignore) {\n    return;\n  }\n\n  var invScale = 1;\n  var parentNode = this.parent;\n\n  while (parentNode) {\n    if (parentNode.scale) {\n      invScale /= parentNode.scale[0];\n    }\n\n    parentNode = parentNode.parent;\n  }\n\n  var line = lineGroup.childOfName('line'); // If line not changed\n  // FIXME Parent scale changed\n\n  if (!this.__dirty && !line.__dirty) {\n    return;\n  }\n\n  var percent = line.shape.percent;\n  var fromPos = line.pointAt(0);\n  var toPos = line.pointAt(percent);\n  var d = vector.sub([], toPos, fromPos);\n  vector.normalize(d, d);\n\n  if (symbolFrom) {\n    symbolFrom.attr('position', fromPos); // Fix #12388\n    // when symbol is set to be 'arrow' in markLine,\n    // symbolRotate value will be ignored, and compulsively use tangent angle.\n    // rotate by default if symbol rotation is not specified\n\n    var specifiedRotation = symbolFrom.__specifiedRotation;\n\n    if (specifiedRotation == null) {\n      var tangent = line.tangentAt(0);\n      symbolFrom.attr('rotation', Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n    } else {\n      symbolFrom.attr('rotation', specifiedRotation);\n    }\n\n    symbolFrom.attr('scale', [invScale * percent, invScale * percent]);\n  }\n\n  if (symbolTo) {\n    symbolTo.attr('position', toPos); // Fix #12388\n    // when symbol is set to be 'arrow' in markLine,\n    // symbolRotate value will be ignored, and compulsively use tangent angle.\n    // rotate by default if symbol rotation is not specified\n\n    var specifiedRotation = symbolTo.__specifiedRotation;\n\n    if (specifiedRotation == null) {\n      var tangent = line.tangentAt(1);\n      symbolTo.attr('rotation', -Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n    } else {\n      symbolTo.attr('rotation', specifiedRotation);\n    }\n\n    symbolTo.attr('scale', [invScale * percent, invScale * percent]);\n  }\n\n  if (!label.ignore) {\n    label.attr('position', toPos);\n    var textPosition;\n    var textAlign;\n    var textVerticalAlign;\n    var textOrigin;\n    var distance = label.__labelDistance;\n    var distanceX = distance[0] * invScale;\n    var distanceY = distance[1] * invScale;\n    var halfPercent = percent / 2;\n    var tangent = line.tangentAt(halfPercent);\n    var n = [tangent[1], -tangent[0]];\n    var cp = line.pointAt(halfPercent);\n\n    if (n[1] > 0) {\n      n[0] = -n[0];\n      n[1] = -n[1];\n    }\n\n    var dir = tangent[0] < 0 ? -1 : 1;\n\n    if (label.__position !== 'start' && label.__position !== 'end') {\n      var rotation = -Math.atan2(tangent[1], tangent[0]);\n\n      if (toPos[0] < fromPos[0]) {\n        rotation = Math.PI + rotation;\n      }\n\n      label.attr('rotation', rotation);\n    }\n\n    var dy;\n\n    switch (label.__position) {\n      case 'insideStartTop':\n      case 'insideMiddleTop':\n      case 'insideEndTop':\n      case 'middle':\n        dy = -distanceY;\n        textVerticalAlign = 'bottom';\n        break;\n\n      case 'insideStartBottom':\n      case 'insideMiddleBottom':\n      case 'insideEndBottom':\n        dy = distanceY;\n        textVerticalAlign = 'top';\n        break;\n\n      default:\n        dy = 0;\n        textVerticalAlign = 'middle';\n    }\n\n    switch (label.__position) {\n      case 'end':\n        textPosition = [d[0] * distanceX + toPos[0], d[1] * distanceY + toPos[1]];\n        textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center';\n        textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle';\n        break;\n\n      case 'start':\n        textPosition = [-d[0] * distanceX + fromPos[0], -d[1] * distanceY + fromPos[1]];\n        textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center';\n        textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle';\n        break;\n\n      case 'insideStartTop':\n      case 'insideStart':\n      case 'insideStartBottom':\n        textPosition = [distanceX * dir + fromPos[0], fromPos[1] + dy];\n        textAlign = tangent[0] < 0 ? 'right' : 'left';\n        textOrigin = [-distanceX * dir, -dy];\n        break;\n\n      case 'insideMiddleTop':\n      case 'insideMiddle':\n      case 'insideMiddleBottom':\n      case 'middle':\n        textPosition = [cp[0], cp[1] + dy];\n        textAlign = 'center';\n        textOrigin = [0, -dy];\n        break;\n\n      case 'insideEndTop':\n      case 'insideEnd':\n      case 'insideEndBottom':\n        textPosition = [-distanceX * dir + toPos[0], toPos[1] + dy];\n        textAlign = tangent[0] >= 0 ? 'right' : 'left';\n        textOrigin = [distanceX * dir, -dy];\n        break;\n    }\n\n    label.attr({\n      style: {\n        // Use the user specified text align and baseline first\n        textVerticalAlign: label.__verticalAlign || textVerticalAlign,\n        textAlign: label.__textAlign || textAlign\n      },\n      position: textPosition,\n      scale: [invScale, invScale],\n      origin: textOrigin\n    });\n  }\n}\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\n\n\nfunction Line(lineData, idx, seriesScope) {\n  graphic.Group.call(this);\n\n  this._createLine(lineData, idx, seriesScope);\n}\n\nvar lineProto = Line.prototype; // Update symbol position and rotation\n\nlineProto.beforeUpdate = updateSymbolAndLabelBeforeLineUpdate;\n\nlineProto._createLine = function (lineData, idx, seriesScope) {\n  var seriesModel = lineData.hostModel;\n  var linePoints = lineData.getItemLayout(idx);\n  var line = createLine(linePoints);\n  line.shape.percent = 0;\n  graphic.initProps(line, {\n    shape: {\n      percent: 1\n    }\n  }, seriesModel, idx);\n  this.add(line);\n  var label = new graphic.Text({\n    name: 'label',\n    // FIXME\n    // Temporary solution for `focusNodeAdjacency`.\n    // line label do not use the opacity of lineStyle.\n    lineLabelOriginalOpacity: 1\n  });\n  this.add(label);\n  zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n    var symbol = createSymbol(symbolCategory, lineData, idx); // symbols must added after line to make sure\n    // it will be updated after line#update.\n    // Or symbol position and rotation update in line#beforeUpdate will be one frame slow\n\n    this.add(symbol);\n    this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\n  }, this);\n\n  this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto.updateData = function (lineData, idx, seriesScope) {\n  var seriesModel = lineData.hostModel;\n  var line = this.childOfName('line');\n  var linePoints = lineData.getItemLayout(idx);\n  var target = {\n    shape: {}\n  };\n  setLinePoints(target.shape, linePoints);\n  graphic.updateProps(line, target, seriesModel, idx);\n  zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n    var symbolType = lineData.getItemVisual(idx, symbolCategory);\n    var key = makeSymbolTypeKey(symbolCategory); // Symbol changed\n\n    if (this[key] !== symbolType) {\n      this.remove(this.childOfName(symbolCategory));\n      var symbol = createSymbol(symbolCategory, lineData, idx);\n      this.add(symbol);\n    }\n\n    this[key] = symbolType;\n  }, this);\n\n  this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n  var seriesModel = lineData.hostModel;\n  var line = this.childOfName('line');\n  var lineStyle = seriesScope && seriesScope.lineStyle;\n  var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n  var labelModel = seriesScope && seriesScope.labelModel;\n  var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel; // Optimization for large dataset\n\n  if (!seriesScope || lineData.hasItemOption) {\n    var itemModel = lineData.getItemModel(idx);\n    lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n    hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n    labelModel = itemModel.getModel('label');\n    hoverLabelModel = itemModel.getModel('emphasis.label');\n  }\n\n  var visualColor = lineData.getItemVisual(idx, 'color');\n  var visualOpacity = zrUtil.retrieve3(lineData.getItemVisual(idx, 'opacity'), lineStyle.opacity, 1);\n  line.useStyle(zrUtil.defaults({\n    strokeNoScale: true,\n    fill: 'none',\n    stroke: visualColor,\n    opacity: visualOpacity\n  }, lineStyle));\n  line.hoverStyle = hoverLineStyle; // Update symbol\n\n  zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n    var symbol = this.childOfName(symbolCategory);\n\n    if (symbol) {\n      symbol.setColor(visualColor);\n      symbol.setStyle({\n        opacity: visualOpacity\n      });\n    }\n  }, this);\n  var showLabel = labelModel.getShallow('show');\n  var hoverShowLabel = hoverLabelModel.getShallow('show');\n  var label = this.childOfName('label');\n  var defaultLabelColor;\n  var baseText; // FIXME: the logic below probably should be merged to `graphic.setLabelStyle`.\n\n  if (showLabel || hoverShowLabel) {\n    defaultLabelColor = visualColor || '#000';\n    baseText = seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType);\n\n    if (baseText == null) {\n      var rawVal = seriesModel.getRawValue(idx);\n      baseText = rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal;\n    }\n  }\n\n  var normalText = showLabel ? baseText : null;\n  var emphasisText = hoverShowLabel ? zrUtil.retrieve2(seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType), baseText) : null;\n  var labelStyle = label.style; // Always set `textStyle` even if `normalStyle.text` is null, because default\n  // values have to be set on `normalStyle`.\n\n  if (normalText != null || emphasisText != null) {\n    graphic.setTextStyle(label.style, labelModel, {\n      text: normalText\n    }, {\n      autoColor: defaultLabelColor\n    });\n    label.__textAlign = labelStyle.textAlign;\n    label.__verticalAlign = labelStyle.textVerticalAlign; // 'start', 'middle', 'end'\n\n    label.__position = labelModel.get('position') || 'middle';\n    var distance = labelModel.get('distance');\n\n    if (!zrUtil.isArray(distance)) {\n      distance = [distance, distance];\n    }\n\n    label.__labelDistance = distance;\n  }\n\n  if (emphasisText != null) {\n    // Only these properties supported in this emphasis style here.\n    label.hoverStyle = {\n      text: emphasisText,\n      textFill: hoverLabelModel.getTextColor(true),\n      // For merging hover style to normal style, do not use\n      // `hoverLabelModel.getFont()` here.\n      fontStyle: hoverLabelModel.getShallow('fontStyle'),\n      fontWeight: hoverLabelModel.getShallow('fontWeight'),\n      fontSize: hoverLabelModel.getShallow('fontSize'),\n      fontFamily: hoverLabelModel.getShallow('fontFamily')\n    };\n  } else {\n    label.hoverStyle = {\n      text: null\n    };\n  }\n\n  label.ignore = !showLabel && !hoverShowLabel;\n  graphic.setHoverStyle(this);\n};\n\nlineProto.highlight = function () {\n  this.trigger('emphasis');\n};\n\nlineProto.downplay = function () {\n  this.trigger('normal');\n};\n\nlineProto.updateLayout = function (lineData, idx) {\n  this.setLinePoints(lineData.getItemLayout(idx));\n};\n\nlineProto.setLinePoints = function (points) {\n  var linePath = this.childOfName('line');\n  setLinePoints(linePath.shape, points);\n  linePath.dirty();\n};\n\nzrUtil.inherits(Line, graphic.Group);\nvar _default = Line;\nmodule.exports = _default;\n\n/***/ }),\n/* 420 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getNodeGlobalScale(seriesModel) {\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (coordSys.type !== 'view') {\n    return 1;\n  }\n\n  var nodeScaleRatio = seriesModel.option.nodeScaleRatio;\n  var groupScale = coordSys.scale;\n  var groupZoom = groupScale && groupScale[0] || 1; // Scale node when zoom changes\n\n  var roamZoom = coordSys.getZoom();\n  var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n  return nodeScale / groupZoom;\n}\n\nfunction getSymbolSize(node) {\n  var symbolSize = node.getVisual('symbolSize');\n\n  if (symbolSize instanceof Array) {\n    symbolSize = (symbolSize[0] + symbolSize[1]) / 2;\n  }\n\n  return +symbolSize;\n}\n\nexports.getNodeGlobalScale = getNodeGlobalScale;\nexports.getSymbolSize = getSymbolSize;\n\n/***/ }),\n/* 421 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\nvar Eventful = __webpack_require__(176);\n\nvar graphic = __webpack_require__(23);\n\nvar interactionMutex = __webpack_require__(591);\n\nvar DataDiffer = __webpack_require__(180);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar map = zrUtil.map;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathPow = Math.pow;\nvar COVER_Z = 10000;\nvar UNSELECT_THRESHOLD = 6;\nvar MIN_RESIZE_LINE_WIDTH = 6;\nvar MUTEX_RESOURCE_KEY = 'globalPan';\nvar DIRECTION_MAP = {\n  w: [0, 0],\n  e: [0, 1],\n  n: [1, 0],\n  s: [1, 1]\n};\nvar CURSOR_MAP = {\n  w: 'ew',\n  e: 'ew',\n  n: 'ns',\n  s: 'ns',\n  ne: 'nesw',\n  sw: 'nesw',\n  nw: 'nwse',\n  se: 'nwse'\n};\nvar DEFAULT_BRUSH_OPT = {\n  brushStyle: {\n    lineWidth: 2,\n    stroke: 'rgba(0,0,0,0.3)',\n    fill: 'rgba(0,0,0,0.1)'\n  },\n  transformable: true,\n  brushMode: 'single',\n  removeOnClick: false\n};\nvar baseUID = 0;\n/**\n * @alias module:echarts/component/helper/BrushController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n * @event module:echarts/component/helper/BrushController#brush\n *        params:\n *            areas: Array.<Array>, coord relates to container group,\n *                                    If no container specified, to global.\n *            opt {\n *                isEnd: boolean,\n *                removeOnClick: boolean\n *            }\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\n\nfunction BrushController(zr) {\n  Eventful.call(this);\n  /**\n   * @type {module:zrender/zrender~ZRender}\n   * @private\n   */\n\n  this._zr = zr;\n  /**\n   * @type {module:zrender/container/Group}\n   * @readOnly\n   */\n\n  this.group = new graphic.Group();\n  /**\n   * Only for drawing (after enabledBrush).\n   *     'line', 'rect', 'polygon' or false\n   *     If passing false/null/undefined, disable brush.\n   *     If passing 'auto', determined by panel.defaultBrushType\n   * @private\n   * @type {string}\n   */\n\n  this._brushType;\n  /**\n   * Only for drawing (after enabledBrush).\n   *\n   * @private\n   * @type {Object}\n   */\n\n  this._brushOption;\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._panels;\n  /**\n   * @private\n   * @type {Array.<nubmer>}\n   */\n\n  this._track = [];\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._dragging;\n  /**\n   * @private\n   * @type {Array}\n   */\n\n  this._covers = [];\n  /**\n   * @private\n   * @type {moudule:zrender/container/Group}\n   */\n\n  this._creatingCover;\n  /**\n   * `true` means global panel\n   * @private\n   * @type {module:zrender/container/Group|boolean}\n   */\n\n  this._creatingPanel;\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._enableGlobalPan;\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  /**\n   * @private\n   * @type {string}\n   */\n  this._uid = 'brushController_' + baseUID++;\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._handlers = {};\n  each(pointerHandlers, function (handler, eventName) {\n    this._handlers[eventName] = zrUtil.bind(handler, this);\n  }, this);\n}\n\nBrushController.prototype = {\n  constructor: BrushController,\n\n  /**\n   * If set to null/undefined/false, select disabled.\n   * @param {Object} brushOption\n   * @param {string|boolean} brushOption.brushType 'line', 'rect', 'polygon' or false\n   *                          If passing false/null/undefined, disable brush.\n   *                          If passing 'auto', determined by panel.defaultBrushType.\n   *                              ('auto' can not be used in global panel)\n   * @param {number} [brushOption.brushMode='single'] 'single' or 'multiple'\n   * @param {boolean} [brushOption.transformable=true]\n   * @param {boolean} [brushOption.removeOnClick=false]\n   * @param {Object} [brushOption.brushStyle]\n   * @param {number} [brushOption.brushStyle.width]\n   * @param {number} [brushOption.brushStyle.lineWidth]\n   * @param {string} [brushOption.brushStyle.stroke]\n   * @param {string} [brushOption.brushStyle.fill]\n   * @param {number} [brushOption.z]\n   */\n  enableBrush: function (brushOption) {\n    this._brushType && doDisableBrush(this);\n    brushOption.brushType && doEnableBrush(this, brushOption);\n    return this;\n  },\n\n  /**\n   * @param {Array.<Object>} panelOpts If not pass, it is global brush.\n   *        Each items: {\n   *            panelId, // mandatory.\n   *            clipPath, // mandatory. function.\n   *            isTargetByCursor, // mandatory. function.\n   *            defaultBrushType, // optional, only used when brushType is 'auto'.\n   *            getLinearBrushOtherExtent, // optional. function.\n   *        }\n   */\n  setPanels: function (panelOpts) {\n    if (panelOpts && panelOpts.length) {\n      var panels = this._panels = {};\n      zrUtil.each(panelOpts, function (panelOpts) {\n        panels[panelOpts.panelId] = zrUtil.clone(panelOpts);\n      });\n    } else {\n      this._panels = null;\n    }\n\n    return this;\n  },\n\n  /**\n   * @param {Object} [opt]\n   * @return {boolean} [opt.enableGlobalPan=false]\n   */\n  mount: function (opt) {\n    opt = opt || {};\n    this._enableGlobalPan = opt.enableGlobalPan;\n    var thisGroup = this.group;\n\n    this._zr.add(thisGroup);\n\n    thisGroup.attr({\n      position: opt.position || [0, 0],\n      rotation: opt.rotation || 0,\n      scale: opt.scale || [1, 1]\n    });\n    this._transform = thisGroup.getLocalTransform();\n    return this;\n  },\n  eachCover: function (cb, context) {\n    each(this._covers, cb, context);\n  },\n\n  /**\n   * Update covers.\n   * @param {Array.<Object>} brushOptionList Like:\n   *        [\n   *            {id: 'xx', brushType: 'line', range: [23, 44], brushStyle, transformable},\n   *            {id: 'yy', brushType: 'rect', range: [[23, 44], [23, 54]]},\n   *            ...\n   *        ]\n   *        `brushType` is required in each cover info. (can not be 'auto')\n   *        `id` is not mandatory.\n   *        `brushStyle`, `transformable` is not mandatory, use DEFAULT_BRUSH_OPT by default.\n   *        If brushOptionList is null/undefined, all covers removed.\n   */\n  updateCovers: function (brushOptionList) {\n    brushOptionList = zrUtil.map(brushOptionList, function (brushOption) {\n      return zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n    });\n    var tmpIdPrefix = '\\0-brush-index-';\n    var oldCovers = this._covers;\n    var newCovers = this._covers = [];\n    var controller = this;\n    var creatingCover = this._creatingCover;\n    new DataDiffer(oldCovers, brushOptionList, oldGetKey, getKey).add(addOrUpdate).update(addOrUpdate).remove(remove).execute();\n    return this;\n\n    function getKey(brushOption, index) {\n      return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + '-' + brushOption.brushType;\n    }\n\n    function oldGetKey(cover, index) {\n      return getKey(cover.__brushOption, index);\n    }\n\n    function addOrUpdate(newIndex, oldIndex) {\n      var newBrushOption = brushOptionList[newIndex]; // Consider setOption in event listener of brushSelect,\n      // where updating cover when creating should be forbiden.\n\n      if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {\n        newCovers[newIndex] = oldCovers[oldIndex];\n      } else {\n        var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushOption, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushOption));\n        updateCoverAfterCreation(controller, cover);\n      }\n    }\n\n    function remove(oldIndex) {\n      if (oldCovers[oldIndex] !== creatingCover) {\n        controller.group.remove(oldCovers[oldIndex]);\n      }\n    }\n  },\n  unmount: function () {\n    this.enableBrush(false); // container may 'removeAll' outside.\n\n    clearCovers(this);\n\n    this._zr.remove(this.group);\n\n    return this;\n  },\n  dispose: function () {\n    this.unmount();\n    this.off();\n  }\n};\nzrUtil.mixin(BrushController, Eventful);\n\nfunction doEnableBrush(controller, brushOption) {\n  var zr = controller._zr; // Consider roam, which takes globalPan too.\n\n  if (!controller._enableGlobalPan) {\n    interactionMutex.take(zr, MUTEX_RESOURCE_KEY, controller._uid);\n  }\n\n  mountHandlers(zr, controller._handlers);\n  controller._brushType = brushOption.brushType;\n  controller._brushOption = zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n}\n\nfunction doDisableBrush(controller) {\n  var zr = controller._zr;\n  interactionMutex.release(zr, MUTEX_RESOURCE_KEY, controller._uid);\n  unmountHandlers(zr, controller._handlers);\n  controller._brushType = controller._brushOption = null;\n}\n\nfunction mountHandlers(zr, handlers) {\n  each(handlers, function (handler, eventName) {\n    zr.on(eventName, handler);\n  });\n}\n\nfunction unmountHandlers(zr, handlers) {\n  each(handlers, function (handler, eventName) {\n    zr.off(eventName, handler);\n  });\n}\n\nfunction createCover(controller, brushOption) {\n  var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);\n  cover.__brushOption = brushOption;\n  updateZ(cover, brushOption);\n  controller.group.add(cover);\n  return cover;\n}\n\nfunction endCreating(controller, creatingCover) {\n  var coverRenderer = getCoverRenderer(creatingCover);\n\n  if (coverRenderer.endCreating) {\n    coverRenderer.endCreating(controller, creatingCover);\n    updateZ(creatingCover, creatingCover.__brushOption);\n  }\n\n  return creatingCover;\n}\n\nfunction updateCoverShape(controller, cover) {\n  var brushOption = cover.__brushOption;\n  getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\n}\n\nfunction updateZ(cover, brushOption) {\n  var z = brushOption.z;\n  z == null && (z = COVER_Z);\n  cover.traverse(function (el) {\n    el.z = z;\n    el.z2 = z; // Consider in given container.\n  });\n}\n\nfunction updateCoverAfterCreation(controller, cover) {\n  getCoverRenderer(cover).updateCommon(controller, cover);\n  updateCoverShape(controller, cover);\n}\n\nfunction getCoverRenderer(cover) {\n  return coverRenderers[cover.__brushOption.brushType];\n} // return target panel or `true` (means global panel)\n\n\nfunction getPanelByPoint(controller, e, localCursorPoint) {\n  var panels = controller._panels;\n\n  if (!panels) {\n    return true; // Global panel\n  }\n\n  var panel;\n  var transform = controller._transform;\n  each(panels, function (pn) {\n    pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn);\n  });\n  return panel;\n} // Return a panel or true\n\n\nfunction getPanelByCover(controller, cover) {\n  var panels = controller._panels;\n\n  if (!panels) {\n    return true; // Global panel\n  }\n\n  var panelId = cover.__brushOption.panelId; // User may give cover without coord sys info,\n  // which is then treated as global panel.\n\n  return panelId != null ? panels[panelId] : true;\n}\n\nfunction clearCovers(controller) {\n  var covers = controller._covers;\n  var originalLength = covers.length;\n  each(covers, function (cover) {\n    controller.group.remove(cover);\n  }, controller);\n  covers.length = 0;\n  return !!originalLength;\n}\n\nfunction trigger(controller, opt) {\n  var areas = map(controller._covers, function (cover) {\n    var brushOption = cover.__brushOption;\n    var range = zrUtil.clone(brushOption.range);\n    return {\n      brushType: brushOption.brushType,\n      panelId: brushOption.panelId,\n      range: range\n    };\n  });\n  controller.trigger('brush', areas, {\n    isEnd: !!opt.isEnd,\n    removeOnClick: !!opt.removeOnClick\n  });\n}\n\nfunction shouldShowCover(controller) {\n  var track = controller._track;\n\n  if (!track.length) {\n    return false;\n  }\n\n  var p2 = track[track.length - 1];\n  var p1 = track[0];\n  var dx = p2[0] - p1[0];\n  var dy = p2[1] - p1[1];\n  var dist = mathPow(dx * dx + dy * dy, 0.5);\n  return dist > UNSELECT_THRESHOLD;\n}\n\nfunction getTrackEnds(track) {\n  var tail = track.length - 1;\n  tail < 0 && (tail = 0);\n  return [track[0], track[tail]];\n}\n\nfunction createBaseRectCover(doDrift, controller, brushOption, edgeNames) {\n  var cover = new graphic.Group();\n  cover.add(new graphic.Rect({\n    name: 'main',\n    style: makeStyle(brushOption),\n    silent: true,\n    draggable: true,\n    cursor: 'move',\n    drift: curry(doDrift, controller, cover, 'nswe'),\n    ondragend: curry(trigger, controller, {\n      isEnd: true\n    })\n  }));\n  each(edgeNames, function (name) {\n    cover.add(new graphic.Rect({\n      name: name,\n      style: {\n        opacity: 0\n      },\n      draggable: true,\n      silent: true,\n      invisible: true,\n      drift: curry(doDrift, controller, cover, name),\n      ondragend: curry(trigger, controller, {\n        isEnd: true\n      })\n    }));\n  });\n  return cover;\n}\n\nfunction updateBaseRect(controller, cover, localRange, brushOption) {\n  var lineWidth = brushOption.brushStyle.lineWidth || 0;\n  var handleSize = mathMax(lineWidth, MIN_RESIZE_LINE_WIDTH);\n  var x = localRange[0][0];\n  var y = localRange[1][0];\n  var xa = x - lineWidth / 2;\n  var ya = y - lineWidth / 2;\n  var x2 = localRange[0][1];\n  var y2 = localRange[1][1];\n  var x2a = x2 - handleSize + lineWidth / 2;\n  var y2a = y2 - handleSize + lineWidth / 2;\n  var width = x2 - x;\n  var height = y2 - y;\n  var widtha = width + lineWidth;\n  var heighta = height + lineWidth;\n  updateRectShape(controller, cover, 'main', x, y, width, height);\n\n  if (brushOption.transformable) {\n    updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta);\n    updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta);\n    updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize);\n    updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize);\n    updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize);\n    updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize);\n    updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize);\n    updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize);\n  }\n}\n\nfunction updateCommon(controller, cover) {\n  var brushOption = cover.__brushOption;\n  var transformable = brushOption.transformable;\n  var mainEl = cover.childAt(0);\n  mainEl.useStyle(makeStyle(brushOption));\n  mainEl.attr({\n    silent: !transformable,\n    cursor: transformable ? 'move' : 'default'\n  });\n  each(['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw'], function (name) {\n    var el = cover.childOfName(name);\n    var globalDir = getGlobalDirection(controller, name);\n    el && el.attr({\n      silent: !transformable,\n      invisible: !transformable,\n      cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null\n    });\n  });\n}\n\nfunction updateRectShape(controller, cover, name, x, y, w, h) {\n  var el = cover.childOfName(name);\n  el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));\n}\n\nfunction makeStyle(brushOption) {\n  return zrUtil.defaults({\n    strokeNoScale: true\n  }, brushOption.brushStyle);\n}\n\nfunction formatRectRange(x, y, x2, y2) {\n  var min = [mathMin(x, x2), mathMin(y, y2)];\n  var max = [mathMax(x, x2), mathMax(y, y2)];\n  return [[min[0], max[0]], // x range\n  [min[1], max[1]] // y range\n  ];\n}\n\nfunction getTransform(controller) {\n  return graphic.getTransform(controller.group);\n}\n\nfunction getGlobalDirection(controller, localDirection) {\n  if (localDirection.length > 1) {\n    localDirection = localDirection.split('');\n    var globalDir = [getGlobalDirection(controller, localDirection[0]), getGlobalDirection(controller, localDirection[1])];\n    (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse();\n    return globalDir.join('');\n  } else {\n    var map = {\n      w: 'left',\n      e: 'right',\n      n: 'top',\n      s: 'bottom'\n    };\n    var inverseMap = {\n      left: 'w',\n      right: 'e',\n      top: 'n',\n      bottom: 's'\n    };\n    var globalDir = graphic.transformDirection(map[localDirection], getTransform(controller));\n    return inverseMap[globalDir];\n  }\n}\n\nfunction driftRect(toRectRange, fromRectRange, controller, cover, name, dx, dy, e) {\n  var brushOption = cover.__brushOption;\n  var rectRange = toRectRange(brushOption.range);\n  var localDelta = toLocalDelta(controller, dx, dy);\n  each(name.split(''), function (namePart) {\n    var ind = DIRECTION_MAP[namePart];\n    rectRange[ind[0]][ind[1]] += localDelta[ind[0]];\n  });\n  brushOption.range = fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));\n  updateCoverAfterCreation(controller, cover);\n  trigger(controller, {\n    isEnd: false\n  });\n}\n\nfunction driftPolygon(controller, cover, dx, dy, e) {\n  var range = cover.__brushOption.range;\n  var localDelta = toLocalDelta(controller, dx, dy);\n  each(range, function (point) {\n    point[0] += localDelta[0];\n    point[1] += localDelta[1];\n  });\n  updateCoverAfterCreation(controller, cover);\n  trigger(controller, {\n    isEnd: false\n  });\n}\n\nfunction toLocalDelta(controller, dx, dy) {\n  var thisGroup = controller.group;\n  var localD = thisGroup.transformCoordToLocal(dx, dy);\n  var localZero = thisGroup.transformCoordToLocal(0, 0);\n  return [localD[0] - localZero[0], localD[1] - localZero[1]];\n}\n\nfunction clipByPanel(controller, cover, data) {\n  var panel = getPanelByCover(controller, cover);\n  return panel && panel !== true ? panel.clipPath(data, controller._transform) : zrUtil.clone(data);\n}\n\nfunction pointsToRect(points) {\n  var xmin = mathMin(points[0][0], points[1][0]);\n  var ymin = mathMin(points[0][1], points[1][1]);\n  var xmax = mathMax(points[0][0], points[1][0]);\n  var ymax = mathMax(points[0][1], points[1][1]);\n  return {\n    x: xmin,\n    y: ymin,\n    width: xmax - xmin,\n    height: ymax - ymin\n  };\n}\n\nfunction resetCursor(controller, e, localCursorPoint) {\n  if ( // Check active\n  !controller._brushType // resetCursor should be always called when mouse is in zr area,\n  // but not called when mouse is out of zr area to avoid bad influence\n  // if `mousemove`, `mouseup` are triggered from `document` event.\n  || isOutsideZrArea(controller, e)) {\n    return;\n  }\n\n  var zr = controller._zr;\n  var covers = controller._covers;\n  var currPanel = getPanelByPoint(controller, e, localCursorPoint); // Check whether in covers.\n\n  if (!controller._dragging) {\n    for (var i = 0; i < covers.length; i++) {\n      var brushOption = covers[i].__brushOption;\n\n      if (currPanel && (currPanel === true || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {\n        // Use cursor style set on cover.\n        return;\n      }\n    }\n  }\n\n  currPanel && zr.setCursorStyle('crosshair');\n}\n\nfunction preventDefault(e) {\n  var rawE = e.event;\n  rawE.preventDefault && rawE.preventDefault();\n}\n\nfunction mainShapeContain(cover, x, y) {\n  return cover.childOfName('main').contain(x, y);\n}\n\nfunction updateCoverByMouse(controller, e, localCursorPoint, isEnd) {\n  var creatingCover = controller._creatingCover;\n  var panel = controller._creatingPanel;\n  var thisBrushOption = controller._brushOption;\n  var eventParams;\n\n  controller._track.push(localCursorPoint.slice());\n\n  if (shouldShowCover(controller) || creatingCover) {\n    if (panel && !creatingCover) {\n      thisBrushOption.brushMode === 'single' && clearCovers(controller);\n      var brushOption = zrUtil.clone(thisBrushOption);\n      brushOption.brushType = determineBrushType(brushOption.brushType, panel);\n      brushOption.panelId = panel === true ? null : panel.panelId;\n      creatingCover = controller._creatingCover = createCover(controller, brushOption);\n\n      controller._covers.push(creatingCover);\n    }\n\n    if (creatingCover) {\n      var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];\n      var coverBrushOption = creatingCover.__brushOption;\n      coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));\n\n      if (isEnd) {\n        endCreating(controller, creatingCover);\n        coverRenderer.updateCommon(controller, creatingCover);\n      }\n\n      updateCoverShape(controller, creatingCover);\n      eventParams = {\n        isEnd: isEnd\n      };\n    }\n  } else if (isEnd && thisBrushOption.brushMode === 'single' && thisBrushOption.removeOnClick) {\n    // Help user to remove covers easily, only by a tiny drag, in 'single' mode.\n    // But a single click do not clear covers, because user may have casual\n    // clicks (for example, click on other component and do not expect covers\n    // disappear).\n    // Only some cover removed, trigger action, but not every click trigger action.\n    if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) {\n      eventParams = {\n        isEnd: isEnd,\n        removeOnClick: true\n      };\n    }\n  }\n\n  return eventParams;\n}\n\nfunction determineBrushType(brushType, panel) {\n  if (brushType === 'auto') {\n    return panel.defaultBrushType;\n  }\n\n  return brushType;\n}\n\nvar pointerHandlers = {\n  mousedown: function (e) {\n    if (this._dragging) {\n      // In case some browser do not support globalOut,\n      // and release mose out side the browser.\n      handleDragEnd(this, e);\n    } else if (!e.target || !e.target.draggable) {\n      preventDefault(e);\n      var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\n      this._creatingCover = null;\n      var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint);\n\n      if (panel) {\n        this._dragging = true;\n        this._track = [localCursorPoint.slice()];\n      }\n    }\n  },\n  mousemove: function (e) {\n    var x = e.offsetX;\n    var y = e.offsetY;\n    var localCursorPoint = this.group.transformCoordToLocal(x, y);\n    resetCursor(this, e, localCursorPoint);\n\n    if (this._dragging) {\n      preventDefault(e);\n      var eventParams = updateCoverByMouse(this, e, localCursorPoint, false);\n      eventParams && trigger(this, eventParams);\n    }\n  },\n  mouseup: function (e) {\n    handleDragEnd(this, e);\n  }\n};\n\nfunction handleDragEnd(controller, e) {\n  if (controller._dragging) {\n    preventDefault(e);\n    var x = e.offsetX;\n    var y = e.offsetY;\n    var localCursorPoint = controller.group.transformCoordToLocal(x, y);\n    var eventParams = updateCoverByMouse(controller, e, localCursorPoint, true);\n    controller._dragging = false;\n    controller._track = [];\n    controller._creatingCover = null; // trigger event shoule be at final, after procedure will be nested.\n\n    eventParams && trigger(controller, eventParams);\n  }\n}\n\nfunction isOutsideZrArea(controller, x, y) {\n  var zr = controller._zr;\n  return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight();\n}\n/**\n * key: brushType\n * @type {Object}\n */\n\n\nvar coverRenderers = {\n  lineX: getLineRenderer(0),\n  lineY: getLineRenderer(1),\n  rect: {\n    createCover: function (controller, brushOption) {\n      return createBaseRectCover(curry(driftRect, function (range) {\n        return range;\n      }, function (range) {\n        return range;\n      }), controller, brushOption, ['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw']);\n    },\n    getCreatingRange: function (localTrack) {\n      var ends = getTrackEnds(localTrack);\n      return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);\n    },\n    updateCoverShape: function (controller, cover, localRange, brushOption) {\n      updateBaseRect(controller, cover, localRange, brushOption);\n    },\n    updateCommon: updateCommon,\n    contain: mainShapeContain\n  },\n  polygon: {\n    createCover: function (controller, brushOption) {\n      var cover = new graphic.Group(); // Do not use graphic.Polygon because graphic.Polyline do not close the\n      // border of the shape when drawing, which is a better experience for user.\n\n      cover.add(new graphic.Polyline({\n        name: 'main',\n        style: makeStyle(brushOption),\n        silent: true\n      }));\n      return cover;\n    },\n    getCreatingRange: function (localTrack) {\n      return localTrack;\n    },\n    endCreating: function (controller, cover) {\n      cover.remove(cover.childAt(0)); // Use graphic.Polygon close the shape.\n\n      cover.add(new graphic.Polygon({\n        name: 'main',\n        draggable: true,\n        drift: curry(driftPolygon, controller, cover),\n        ondragend: curry(trigger, controller, {\n          isEnd: true\n        })\n      }));\n    },\n    updateCoverShape: function (controller, cover, localRange, brushOption) {\n      cover.childAt(0).setShape({\n        points: clipByPanel(controller, cover, localRange)\n      });\n    },\n    updateCommon: updateCommon,\n    contain: mainShapeContain\n  }\n};\n\nfunction getLineRenderer(xyIndex) {\n  return {\n    createCover: function (controller, brushOption) {\n      return createBaseRectCover(curry(driftRect, function (range) {\n        var rectRange = [range, [0, 100]];\n        xyIndex && rectRange.reverse();\n        return rectRange;\n      }, function (rectRange) {\n        return rectRange[xyIndex];\n      }), controller, brushOption, [['w', 'e'], ['n', 's']][xyIndex]);\n    },\n    getCreatingRange: function (localTrack) {\n      var ends = getTrackEnds(localTrack);\n      var min = mathMin(ends[0][xyIndex], ends[1][xyIndex]);\n      var max = mathMax(ends[0][xyIndex], ends[1][xyIndex]);\n      return [min, max];\n    },\n    updateCoverShape: function (controller, cover, localRange, brushOption) {\n      var otherExtent; // If brushWidth not specified, fit the panel.\n\n      var panel = getPanelByCover(controller, cover);\n\n      if (panel !== true && panel.getLinearBrushOtherExtent) {\n        otherExtent = panel.getLinearBrushOtherExtent(xyIndex, controller._transform);\n      } else {\n        var zr = controller._zr;\n        otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];\n      }\n\n      var rectRange = [localRange, otherExtent];\n      xyIndex && rectRange.reverse();\n      updateBaseRect(controller, cover, rectRange, brushOption);\n    },\n    updateCommon: updateCommon,\n    contain: mainShapeContain\n  };\n}\n\nvar _default = BrushController;\nmodule.exports = _default;\n\n/***/ }),\n/* 422 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar clazzUtil = __webpack_require__(143);\n\nvar graphic = __webpack_require__(23);\n\nvar axisPointerModelHelper = __webpack_require__(334);\n\nvar eventTool = __webpack_require__(129);\n\nvar throttleUtil = __webpack_require__(153);\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar clone = zrUtil.clone;\nvar bind = zrUtil.bind;\n/**\n * Base axis pointer class in 2D.\n * Implemenents {module:echarts/component/axis/IAxisPointer}.\n */\n\nfunction BaseAxisPointer() {}\n\nBaseAxisPointer.prototype = {\n  /**\n   * @private\n   */\n  _group: null,\n\n  /**\n   * @private\n   */\n  _lastGraphicKey: null,\n\n  /**\n   * @private\n   */\n  _handle: null,\n\n  /**\n   * @private\n   */\n  _dragging: false,\n\n  /**\n   * @private\n   */\n  _lastValue: null,\n\n  /**\n   * @private\n   */\n  _lastStatus: null,\n\n  /**\n   * @private\n   */\n  _payloadInfo: null,\n\n  /**\n   * In px, arbitrary value. Do not set too small,\n   * no animation is ok for most cases.\n   * @protected\n   */\n  animationThreshold: 15,\n\n  /**\n   * @implement\n   */\n  render: function (axisModel, axisPointerModel, api, forceRender) {\n    var value = axisPointerModel.get('value');\n    var status = axisPointerModel.get('status'); // Bind them to `this`, not in closure, otherwise they will not\n    // be replaced when user calling setOption in not merge mode.\n\n    this._axisModel = axisModel;\n    this._axisPointerModel = axisPointerModel;\n    this._api = api; // Optimize: `render` will be called repeatly during mouse move.\n    // So it is power consuming if performing `render` each time,\n    // especially on mobile device.\n\n    if (!forceRender && this._lastValue === value && this._lastStatus === status) {\n      return;\n    }\n\n    this._lastValue = value;\n    this._lastStatus = status;\n    var group = this._group;\n    var handle = this._handle;\n\n    if (!status || status === 'hide') {\n      // Do not clear here, for animation better.\n      group && group.hide();\n      handle && handle.hide();\n      return;\n    }\n\n    group && group.show();\n    handle && handle.show(); // Otherwise status is 'show'\n\n    var elOption = {};\n    this.makeElOption(elOption, value, axisModel, axisPointerModel, api); // Enable change axis pointer type.\n\n    var graphicKey = elOption.graphicKey;\n\n    if (graphicKey !== this._lastGraphicKey) {\n      this.clear(api);\n    }\n\n    this._lastGraphicKey = graphicKey;\n    var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);\n\n    if (!group) {\n      group = this._group = new graphic.Group();\n      this.createPointerEl(group, elOption, axisModel, axisPointerModel);\n      this.createLabelEl(group, elOption, axisModel, axisPointerModel);\n      api.getZr().add(group);\n    } else {\n      var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);\n      this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);\n      this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\n    }\n\n    updateMandatoryProps(group, axisPointerModel, true);\n\n    this._renderHandle(value);\n  },\n\n  /**\n   * @implement\n   */\n  remove: function (api) {\n    this.clear(api);\n  },\n\n  /**\n   * @implement\n   */\n  dispose: function (api) {\n    this.clear(api);\n  },\n\n  /**\n   * @protected\n   */\n  determineAnimation: function (axisModel, axisPointerModel) {\n    var animation = axisPointerModel.get('animation');\n    var axis = axisModel.axis;\n    var isCategoryAxis = axis.type === 'category';\n    var useSnap = axisPointerModel.get('snap'); // Value axis without snap always do not snap.\n\n    if (!useSnap && !isCategoryAxis) {\n      return false;\n    }\n\n    if (animation === 'auto' || animation == null) {\n      var animationThreshold = this.animationThreshold;\n\n      if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\n        return true;\n      } // It is important to auto animation when snap used. Consider if there is\n      // a dataZoom, animation will be disabled when too many points exist, while\n      // it will be enabled for better visual effect when little points exist.\n\n\n      if (useSnap) {\n        var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;\n        var axisExtent = axis.getExtent(); // Approximate band width\n\n        return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\n      }\n\n      return false;\n    }\n\n    return animation === true;\n  },\n\n  /**\n   * add {pointer, label, graphicKey} to elOption\n   * @protected\n   */\n  makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {// Shoule be implemenented by sub-class.\n  },\n\n  /**\n   * @protected\n   */\n  createPointerEl: function (group, elOption, axisModel, axisPointerModel) {\n    var pointerOption = elOption.pointer;\n\n    if (pointerOption) {\n      var pointerEl = inner(group).pointerEl = new graphic[pointerOption.type](clone(elOption.pointer));\n      group.add(pointerEl);\n    }\n  },\n\n  /**\n   * @protected\n   */\n  createLabelEl: function (group, elOption, axisModel, axisPointerModel) {\n    if (elOption.label) {\n      var labelEl = inner(group).labelEl = new graphic.Rect(clone(elOption.label));\n      group.add(labelEl);\n      updateLabelShowHide(labelEl, axisPointerModel);\n    }\n  },\n\n  /**\n   * @protected\n   */\n  updatePointerEl: function (group, elOption, updateProps) {\n    var pointerEl = inner(group).pointerEl;\n\n    if (pointerEl && elOption.pointer) {\n      pointerEl.setStyle(elOption.pointer.style);\n      updateProps(pointerEl, {\n        shape: elOption.pointer.shape\n      });\n    }\n  },\n\n  /**\n   * @protected\n   */\n  updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {\n    var labelEl = inner(group).labelEl;\n\n    if (labelEl) {\n      labelEl.setStyle(elOption.label.style);\n      updateProps(labelEl, {\n        // Consider text length change in vertical axis, animation should\n        // be used on shape, otherwise the effect will be weird.\n        shape: elOption.label.shape,\n        position: elOption.label.position\n      });\n      updateLabelShowHide(labelEl, axisPointerModel);\n    }\n  },\n\n  /**\n   * @private\n   */\n  _renderHandle: function (value) {\n    if (this._dragging || !this.updateHandleTransform) {\n      return;\n    }\n\n    var axisPointerModel = this._axisPointerModel;\n\n    var zr = this._api.getZr();\n\n    var handle = this._handle;\n    var handleModel = axisPointerModel.getModel('handle');\n    var status = axisPointerModel.get('status');\n\n    if (!handleModel.get('show') || !status || status === 'hide') {\n      handle && zr.remove(handle);\n      this._handle = null;\n      return;\n    }\n\n    var isInit;\n\n    if (!this._handle) {\n      isInit = true;\n      handle = this._handle = graphic.createIcon(handleModel.get('icon'), {\n        cursor: 'move',\n        draggable: true,\n        onmousemove: function (e) {\n          // Fot mobile devicem, prevent screen slider on the button.\n          eventTool.stop(e.event);\n        },\n        onmousedown: bind(this._onHandleDragMove, this, 0, 0),\n        drift: bind(this._onHandleDragMove, this),\n        ondragend: bind(this._onHandleDragEnd, this)\n      });\n      zr.add(handle);\n    }\n\n    updateMandatoryProps(handle, axisPointerModel, false); // update style\n\n    var includeStyles = ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\n    handle.setStyle(handleModel.getItemStyle(null, includeStyles)); // update position\n\n    var handleSize = handleModel.get('size');\n\n    if (!zrUtil.isArray(handleSize)) {\n      handleSize = [handleSize, handleSize];\n    }\n\n    handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);\n    throttleUtil.createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\n\n    this._moveHandleToValue(value, isInit);\n  },\n\n  /**\n   * @private\n   */\n  _moveHandleToValue: function (value, isInit) {\n    updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\n  },\n\n  /**\n   * @private\n   */\n  _onHandleDragMove: function (dx, dy) {\n    var handle = this._handle;\n\n    if (!handle) {\n      return;\n    }\n\n    this._dragging = true; // Persistent for throttle.\n\n    var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\n    this._payloadInfo = trans;\n    handle.stopAnimation();\n    handle.attr(getHandleTransProps(trans));\n    inner(handle).lastProp = null;\n\n    this._doDispatchAxisPointer();\n  },\n\n  /**\n   * Throttled method.\n   * @private\n   */\n  _doDispatchAxisPointer: function () {\n    var handle = this._handle;\n\n    if (!handle) {\n      return;\n    }\n\n    var payloadInfo = this._payloadInfo;\n    var axisModel = this._axisModel;\n\n    this._api.dispatchAction({\n      type: 'updateAxisPointer',\n      x: payloadInfo.cursorPoint[0],\n      y: payloadInfo.cursorPoint[1],\n      tooltipOption: payloadInfo.tooltipOption,\n      axesInfo: [{\n        axisDim: axisModel.axis.dim,\n        axisIndex: axisModel.componentIndex\n      }]\n    });\n  },\n\n  /**\n   * @private\n   */\n  _onHandleDragEnd: function (moveAnimation) {\n    this._dragging = false;\n    var handle = this._handle;\n\n    if (!handle) {\n      return;\n    }\n\n    var value = this._axisPointerModel.get('value'); // Consider snap or categroy axis, handle may be not consistent with\n    // axisPointer. So move handle to align the exact value position when\n    // drag ended.\n\n\n    this._moveHandleToValue(value); // For the effect: tooltip will be shown when finger holding on handle\n    // button, and will be hidden after finger left handle button.\n\n\n    this._api.dispatchAction({\n      type: 'hideTip'\n    });\n  },\n\n  /**\n   * Should be implemenented by sub-class if support `handle`.\n   * @protected\n   * @param {number} value\n   * @param {module:echarts/model/Model} axisModel\n   * @param {module:echarts/model/Model} axisPointerModel\n   * @return {Object} {position: [x, y], rotation: 0}\n   */\n  getHandleTransform: null,\n\n  /**\n   * * Should be implemenented by sub-class if support `handle`.\n   * @protected\n   * @param {Object} transform {position, rotation}\n   * @param {Array.<number>} delta [dx, dy]\n   * @param {module:echarts/model/Model} axisModel\n   * @param {module:echarts/model/Model} axisPointerModel\n   * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}\n   */\n  updateHandleTransform: null,\n\n  /**\n   * @private\n   */\n  clear: function (api) {\n    this._lastValue = null;\n    this._lastStatus = null;\n    var zr = api.getZr();\n    var group = this._group;\n    var handle = this._handle;\n\n    if (zr && group) {\n      this._lastGraphicKey = null;\n      group && zr.remove(group);\n      handle && zr.remove(handle);\n      this._group = null;\n      this._handle = null;\n      this._payloadInfo = null;\n    }\n  },\n\n  /**\n   * @protected\n   */\n  doClear: function () {// Implemented by sub-class if necessary.\n  },\n\n  /**\n   * @protected\n   * @param {Array.<number>} xy\n   * @param {Array.<number>} wh\n   * @param {number} [xDimIndex=0] or 1\n   */\n  buildLabel: function (xy, wh, xDimIndex) {\n    xDimIndex = xDimIndex || 0;\n    return {\n      x: xy[xDimIndex],\n      y: xy[1 - xDimIndex],\n      width: wh[xDimIndex],\n      height: wh[1 - xDimIndex]\n    };\n  }\n};\nBaseAxisPointer.prototype.constructor = BaseAxisPointer;\n\nfunction updateProps(animationModel, moveAnimation, el, props) {\n  // Animation optimize.\n  if (!propsEqual(inner(el).lastProp, props)) {\n    inner(el).lastProp = props;\n    moveAnimation ? graphic.updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));\n  }\n}\n\nfunction propsEqual(lastProps, newProps) {\n  if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {\n    var equals = true;\n    zrUtil.each(newProps, function (item, key) {\n      equals = equals && propsEqual(lastProps[key], item);\n    });\n    return !!equals;\n  } else {\n    return lastProps === newProps;\n  }\n}\n\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\n  labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();\n}\n\nfunction getHandleTransProps(trans) {\n  return {\n    position: trans.position.slice(),\n    rotation: trans.rotation || 0\n  };\n}\n\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\n  var z = axisPointerModel.get('z');\n  var zlevel = axisPointerModel.get('zlevel');\n  group && group.traverse(function (el) {\n    if (el.type !== 'group') {\n      z != null && (el.z = z);\n      zlevel != null && (el.zlevel = zlevel);\n      el.silent = silent;\n    }\n  });\n}\n\nclazzUtil.enableClassExtend(BaseAxisPointer);\nvar _default = BaseAxisPointer;\nmodule.exports = _default;\n\n/***/ }),\n/* 423 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\nvar Polar = __webpack_require__(1208);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\nvar _axisHelper = __webpack_require__(122);\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = __webpack_require__(121);\n\nvar _dataStackHelper = __webpack_require__(132);\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\n__webpack_require__(1211);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Axis scale\n\n/**\n * Resize method bound to the polar\n * @param {module:echarts/coord/polar/PolarModel} polarModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizePolar(polar, polarModel, api) {\n  var center = polarModel.get('center');\n  var width = api.getWidth();\n  var height = api.getHeight();\n  polar.cx = parsePercent(center[0], width);\n  polar.cy = parsePercent(center[1], height);\n  var radiusAxis = polar.getRadiusAxis();\n  var size = Math.min(width, height) / 2;\n  var radius = polarModel.get('radius');\n\n  if (radius == null) {\n    radius = [0, '100%'];\n  } else if (!zrUtil.isArray(radius)) {\n    // r0 = 0\n    radius = [0, radius];\n  }\n\n  radius = [parsePercent(radius[0], size), parsePercent(radius[1], size)];\n  radiusAxis.inverse ? radiusAxis.setExtent(radius[1], radius[0]) : radiusAxis.setExtent(radius[0], radius[1]);\n}\n/**\n * Update polar\n */\n\n\nfunction updatePolarScale(ecModel, api) {\n  var polar = this;\n  var angleAxis = polar.getAngleAxis();\n  var radiusAxis = polar.getRadiusAxis(); // Reset scale\n\n  angleAxis.scale.setExtent(Infinity, -Infinity);\n  radiusAxis.scale.setExtent(Infinity, -Infinity);\n  ecModel.eachSeries(function (seriesModel) {\n    if (seriesModel.coordinateSystem === polar) {\n      var data = seriesModel.getData();\n      zrUtil.each(data.mapDimension('radius', true), function (dim) {\n        radiusAxis.scale.unionExtentFromData(data, getStackedDimension(data, dim));\n      });\n      zrUtil.each(data.mapDimension('angle', true), function (dim) {\n        angleAxis.scale.unionExtentFromData(data, getStackedDimension(data, dim));\n      });\n    }\n  });\n  niceScaleExtent(angleAxis.scale, angleAxis.model);\n  niceScaleExtent(radiusAxis.scale, radiusAxis.model); // Fix extent of category angle axis\n\n  if (angleAxis.type === 'category' && !angleAxis.onBand) {\n    var extent = angleAxis.getExtent();\n    var diff = 360 / angleAxis.scale.count();\n    angleAxis.inverse ? extent[1] += diff : extent[1] -= diff;\n    angleAxis.setExtent(extent[0], extent[1]);\n  }\n}\n/**\n * Set common axis properties\n * @param {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n * @param {module:echarts/coord/polar/AxisModel}\n * @inner\n */\n\n\nfunction setAxis(axis, axisModel) {\n  axis.type = axisModel.get('type');\n  axis.scale = createScaleByModel(axisModel);\n  axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category';\n  axis.inverse = axisModel.get('inverse');\n\n  if (axisModel.mainType === 'angleAxis') {\n    axis.inverse ^= axisModel.get('clockwise');\n    var startAngle = axisModel.get('startAngle');\n    axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360));\n  } // Inject axis instance\n\n\n  axisModel.axis = axis;\n  axis.model = axisModel;\n}\n\nvar polarCreator = {\n  dimensions: Polar.prototype.dimensions,\n  create: function (ecModel, api) {\n    var polarList = [];\n    ecModel.eachComponent('polar', function (polarModel, idx) {\n      var polar = new Polar(idx); // Inject resize and update method\n\n      polar.update = updatePolarScale;\n      var radiusAxis = polar.getRadiusAxis();\n      var angleAxis = polar.getAngleAxis();\n      var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n      var angleAxisModel = polarModel.findAxisModel('angleAxis');\n      setAxis(radiusAxis, radiusAxisModel);\n      setAxis(angleAxis, angleAxisModel);\n      resizePolar(polar, polarModel, api);\n      polarList.push(polar);\n      polarModel.coordinateSystem = polar;\n      polar.model = polarModel;\n    }); // Inject coordinateSystem to series\n\n    ecModel.eachSeries(function (seriesModel) {\n      if (seriesModel.get('coordinateSystem') === 'polar') {\n        var polarModel = ecModel.queryComponents({\n          mainType: 'polar',\n          index: seriesModel.get('polarIndex'),\n          id: seriesModel.get('polarId')\n        })[0];\n        seriesModel.coordinateSystem = polarModel.coordinateSystem;\n      }\n    });\n    return polarList;\n  }\n};\nCoordinateSystem.register('polar', polarCreator);\n\n/***/ }),\n/* 424 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = __webpack_require__(74);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nComponent.registerSubTypeDefaulter('dataZoom', function () {\n  // Default 'slider' when no type specified.\n  return 'slider';\n});\n\n/***/ }),\n/* 425 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar formatUtil = __webpack_require__(50);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AXIS_DIMS = ['x', 'y', 'z', 'radius', 'angle', 'single']; // Supported coords.\n\nvar COORDS = ['cartesian2d', 'polar', 'singleAxis'];\n/**\n * @param {string} coordType\n * @return {boolean}\n */\n\nfunction isCoordSupported(coordType) {\n  return zrUtil.indexOf(COORDS, coordType) >= 0;\n}\n/**\n * Create \"each\" method to iterate names.\n *\n * @pubilc\n * @param  {Array.<string>} names\n * @param  {Array.<string>=} attrs\n * @return {Function}\n */\n\n\nfunction createNameEach(names, attrs) {\n  names = names.slice();\n  var capitalNames = zrUtil.map(names, formatUtil.capitalFirst);\n  attrs = (attrs || []).slice();\n  var capitalAttrs = zrUtil.map(attrs, formatUtil.capitalFirst);\n  return function (callback, context) {\n    zrUtil.each(names, function (name, index) {\n      var nameObj = {\n        name: name,\n        capital: capitalNames[index]\n      };\n\n      for (var j = 0; j < attrs.length; j++) {\n        nameObj[attrs[j]] = name + capitalAttrs[j];\n      }\n\n      callback.call(context, nameObj);\n    });\n  };\n}\n/**\n * Iterate each dimension name.\n *\n * @public\n * @param {Function} callback The parameter is like:\n *                            {\n *                                name: 'angle',\n *                                capital: 'Angle',\n *                                axis: 'angleAxis',\n *                                axisIndex: 'angleAixs',\n *                                index: 'angleIndex'\n *                            }\n * @param {Object} context\n */\n\n\nvar eachAxisDim = createNameEach(AXIS_DIMS, ['axisIndex', 'axis', 'index', 'id']);\n/**\n * If tow dataZoomModels has the same axis controlled, we say that they are 'linked'.\n * dataZoomModels and 'links' make up one or more graphics.\n * This function finds the graphic where the source dataZoomModel is in.\n *\n * @public\n * @param {Function} forEachNode Node iterator.\n * @param {Function} forEachEdgeType edgeType iterator\n * @param {Function} edgeIdGetter Giving node and edgeType, return an array of edge id.\n * @return {Function} Input: sourceNode, Output: Like {nodes: [], dims: {}}\n */\n\nfunction createLinkedNodesFinder(forEachNode, forEachEdgeType, edgeIdGetter) {\n  return function (sourceNode) {\n    var result = {\n      nodes: [],\n      records: {} // key: edgeType.name, value: Object (key: edge id, value: boolean).\n\n    };\n    forEachEdgeType(function (edgeType) {\n      result.records[edgeType.name] = {};\n    });\n\n    if (!sourceNode) {\n      return result;\n    }\n\n    absorb(sourceNode, result);\n    var existsLink;\n\n    do {\n      existsLink = false;\n      forEachNode(processSingleNode);\n    } while (existsLink);\n\n    function processSingleNode(node) {\n      if (!isNodeAbsorded(node, result) && isLinked(node, result)) {\n        absorb(node, result);\n        existsLink = true;\n      }\n    }\n\n    return result;\n  };\n\n  function isNodeAbsorded(node, result) {\n    return zrUtil.indexOf(result.nodes, node) >= 0;\n  }\n\n  function isLinked(node, result) {\n    var hasLink = false;\n    forEachEdgeType(function (edgeType) {\n      zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n        result.records[edgeType.name][edgeId] && (hasLink = true);\n      });\n    });\n    return hasLink;\n  }\n\n  function absorb(node, result) {\n    result.nodes.push(node);\n    forEachEdgeType(function (edgeType) {\n      zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n        result.records[edgeType.name][edgeId] = true;\n      });\n    });\n  }\n}\n\nexports.isCoordSupported = isCoordSupported;\nexports.createNameEach = createNameEach;\nexports.eachAxisDim = eachAxisDim;\nexports.createLinkedNodesFinder = createLinkedNodesFinder;\n\n/***/ }),\n/* 426 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar _util = __webpack_require__(2);\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerProcessor({\n  // `dataZoomProcessor` will only be performed in needed series. Consider if\n  // there is a line series and a pie series, it is better not to update the\n  // line series if only pie series is needed to be updated.\n  getTargetSeries: function (ecModel) {\n    var seriesModelMap = createHashMap();\n    ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n      dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n        var axisProxy = dataZoomModel.getAxisProxy(dimNames.name, axisIndex);\n        each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\n          seriesModelMap.set(seriesModel.uid, seriesModel);\n        });\n      });\n    });\n    return seriesModelMap;\n  },\n  modifyOutputEnd: true,\n  // Consider appendData, where filter should be performed. Because data process is\n  // in block mode currently, it is not need to worry about that the overallProgress\n  // execute every frame.\n  overallReset: function (ecModel, api) {\n    ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n      // We calculate window and reset axis here but not in model\n      // init stage and not after action dispatch handler, because\n      // reset should be called after seriesData.restoreData.\n      dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n        dataZoomModel.getAxisProxy(dimNames.name, axisIndex).reset(dataZoomModel, api);\n      }); // Caution: data zoom filtering is order sensitive when using\n      // percent range and no min/max/scale set on axis.\n      // For example, we have dataZoom definition:\n      // [\n      //      {xAxisIndex: 0, start: 30, end: 70},\n      //      {yAxisIndex: 0, start: 20, end: 80}\n      // ]\n      // In this case, [20, 80] of y-dataZoom should be based on data\n      // that have filtered by x-dataZoom using range of [30, 70],\n      // but should not be based on full raw data. Thus sliding\n      // x-dataZoom will change both ranges of xAxis and yAxis,\n      // while sliding y-dataZoom will only change the range of yAxis.\n      // So we should filter x-axis after reset x-axis immediately,\n      // and then reset y-axis and filter y-axis.\n\n      dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n        dataZoomModel.getAxisProxy(dimNames.name, axisIndex).filterData(dataZoomModel, api);\n      });\n    });\n    ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n      // Fullfill all of the range props so that user\n      // is able to get them from chart.getOption().\n      var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n      var percentRange = axisProxy.getDataPercentWindow();\n      var valueRange = axisProxy.getDataValueWindow();\n      dataZoomModel.setCalculatedRange({\n        start: percentRange[0],\n        end: percentRange[1],\n        startValue: valueRange[0],\n        endValue: valueRange[1]\n      });\n    });\n  }\n});\n\n/***/ }),\n/* 427 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar helper = __webpack_require__(425);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerAction('dataZoom', function (payload, ecModel) {\n  var linkedNodesFinder = helper.createLinkedNodesFinder(zrUtil.bind(ecModel.eachComponent, ecModel, 'dataZoom'), helper.eachAxisDim, function (model, dimNames) {\n    return model.get(dimNames.axisIndex);\n  });\n  var effectedModels = [];\n  ecModel.eachComponent({\n    mainType: 'dataZoom',\n    query: payload\n  }, function (model, index) {\n    effectedModels.push.apply(effectedModels, linkedNodesFinder(model).nodes);\n  });\n  zrUtil.each(effectedModels, function (dataZoomModel, index) {\n    dataZoomModel.setRawRange({\n      start: payload.start,\n      end: payload.end,\n      startValue: payload.startValue,\n      endValue: payload.endValue\n    });\n  });\n});\n\n/***/ }),\n/* 428 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar env = __webpack_require__(66);\n\nvar modelUtil = __webpack_require__(31);\n\nvar formatUtil = __webpack_require__(50);\n\nvar dataFormatMixin = __webpack_require__(407);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar addCommas = formatUtil.addCommas;\nvar encodeHTML = formatUtil.encodeHTML;\n\nfunction fillLabel(opt) {\n  modelUtil.defaultEmphasis(opt, 'label', ['show']);\n}\n\nvar MarkerModel = echarts.extendComponentModel({\n  type: 'marker',\n  dependencies: ['series', 'grid', 'polar', 'geo'],\n\n  /**\n   * @overrite\n   */\n  init: function (option, parentModel, ecModel) {\n    this.mergeDefaultAndTheme(option, ecModel);\n\n    this._mergeOption(option, ecModel, false, true);\n  },\n\n  /**\n   * @return {boolean}\n   */\n  isAnimationEnabled: function () {\n    if (env.node) {\n      return false;\n    }\n\n    var hostSeries = this.__hostSeries;\n    return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled();\n  },\n\n  /**\n   * @overrite\n   */\n  mergeOption: function (newOpt, ecModel) {\n    this._mergeOption(newOpt, ecModel, false, false);\n  },\n  _mergeOption: function (newOpt, ecModel, createdBySelf, isInit) {\n    var MarkerModel = this.constructor;\n    var modelPropName = this.mainType + 'Model';\n\n    if (!createdBySelf) {\n      ecModel.eachSeries(function (seriesModel) {\n        var markerOpt = seriesModel.get(this.mainType, true);\n        var markerModel = seriesModel[modelPropName];\n\n        if (!markerOpt || !markerOpt.data) {\n          seriesModel[modelPropName] = null;\n          return;\n        }\n\n        if (!markerModel) {\n          if (isInit) {\n            // Default label emphasis `position` and `show`\n            fillLabel(markerOpt);\n          }\n\n          zrUtil.each(markerOpt.data, function (item) {\n            // FIXME Overwrite fillLabel method ?\n            if (item instanceof Array) {\n              fillLabel(item[0]);\n              fillLabel(item[1]);\n            } else {\n              fillLabel(item);\n            }\n          });\n          markerModel = new MarkerModel(markerOpt, this, ecModel);\n          zrUtil.extend(markerModel, {\n            mainType: this.mainType,\n            // Use the same series index and name\n            seriesIndex: seriesModel.seriesIndex,\n            name: seriesModel.name,\n            createdBySelf: true\n          });\n          markerModel.__hostSeries = seriesModel;\n        } else {\n          markerModel._mergeOption(markerOpt, ecModel, true);\n        }\n\n        seriesModel[modelPropName] = markerModel;\n      }, this);\n    }\n  },\n  formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n    var data = this.getData();\n    var value = this.getRawValue(dataIndex);\n    var formattedValue = zrUtil.isArray(value) ? zrUtil.map(value, addCommas).join(', ') : addCommas(value);\n    var name = data.getName(dataIndex);\n    var html = encodeHTML(this.name);\n    var newLine = renderMode === 'html' ? '<br/>' : '\\n';\n\n    if (value != null || name) {\n      html += newLine;\n    }\n\n    if (name) {\n      html += encodeHTML(name);\n\n      if (value != null) {\n        html += ' : ';\n      }\n    }\n\n    if (value != null) {\n      html += encodeHTML(formattedValue);\n    }\n\n    return html;\n  },\n  getData: function () {\n    return this._data;\n  },\n  setData: function (data) {\n    this._data = data;\n  }\n});\nzrUtil.mixin(MarkerModel, dataFormatMixin);\nvar _default = MarkerModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 429 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar numberUtil = __webpack_require__(26);\n\nvar _dataStackHelper = __webpack_require__(132);\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar indexOf = zrUtil.indexOf;\n\nfunction hasXOrY(item) {\n  return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));\n}\n\nfunction hasXAndY(item) {\n  return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));\n} // Make it simple, do not visit all stacked value to count precision.\n// function getPrecision(data, valueAxisDim, dataIndex) {\n//     var precision = -1;\n//     var stackedDim = data.mapDimension(valueAxisDim);\n//     do {\n//         precision = Math.max(\n//             numberUtil.getPrecision(data.get(stackedDim, dataIndex)),\n//             precision\n//         );\n//         var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n//         if (stackedOnSeries) {\n//             var byValue = data.get(data.getCalculationInfo('stackedByDimension'), dataIndex);\n//             data = stackedOnSeries.getData();\n//             dataIndex = data.indexOf(data.getCalculationInfo('stackedByDimension'), byValue);\n//             stackedDim = data.getCalculationInfo('stackedDimension');\n//         }\n//         else {\n//             data = null;\n//         }\n//     } while (data);\n//     return precision;\n// }\n\n\nfunction markerTypeCalculatorWithExtent(mlType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {\n  var coordArr = [];\n  var stacked = isDimensionStacked(data, targetDataDim\n  /*, otherDataDim*/\n  );\n  var calcDataDim = stacked ? data.getCalculationInfo('stackResultDimension') : targetDataDim;\n  var value = numCalculate(data, calcDataDim, mlType);\n  var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];\n  coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);\n  coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex);\n  var coordArrValue = data.get(targetDataDim, dataIndex); // Make it simple, do not visit all stacked value to count precision.\n\n  var precision = numberUtil.getPrecision(data.get(targetDataDim, dataIndex));\n  precision = Math.min(precision, 20);\n\n  if (precision >= 0) {\n    coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);\n  }\n\n  return [coordArr, coordArrValue];\n}\n\nvar curry = zrUtil.curry; // TODO Specified percent\n\nvar markerTypeCalculator = {\n  /**\n   * @method\n   * @param {module:echarts/data/List} data\n   * @param {string} baseAxisDim\n   * @param {string} valueAxisDim\n   */\n  min: curry(markerTypeCalculatorWithExtent, 'min'),\n\n  /**\n   * @method\n   * @param {module:echarts/data/List} data\n   * @param {string} baseAxisDim\n   * @param {string} valueAxisDim\n   */\n  max: curry(markerTypeCalculatorWithExtent, 'max'),\n\n  /**\n   * @method\n   * @param {module:echarts/data/List} data\n   * @param {string} baseAxisDim\n   * @param {string} valueAxisDim\n   */\n  average: curry(markerTypeCalculatorWithExtent, 'average')\n};\n/**\n * Transform markPoint data item to format used in List by do the following\n * 1. Calculate statistic like `max`, `min`, `average`\n * 2. Convert `item.xAxis`, `item.yAxis` to `item.coord` array\n * @param  {module:echarts/model/Series} seriesModel\n * @param  {module:echarts/coord/*} [coordSys]\n * @param  {Object} item\n * @return {Object}\n */\n\nfunction dataTransform(seriesModel, item) {\n  var data = seriesModel.getData();\n  var coordSys = seriesModel.coordinateSystem; // 1. If not specify the position with pixel directly\n  // 2. If `coord` is not a data array. Which uses `xAxis`,\n  // `yAxis` to specify the coord on each dimension\n  // parseFloat first because item.x and item.y can be percent string like '20%'\n\n  if (item && !hasXAndY(item) && !zrUtil.isArray(item.coord) && coordSys) {\n    var dims = coordSys.dimensions;\n    var axisInfo = getAxisInfo(item, data, coordSys, seriesModel); // Clone the option\n    // Transform the properties xAxis, yAxis, radiusAxis, angleAxis, geoCoord to value\n\n    item = zrUtil.clone(item);\n\n    if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) {\n      var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);\n      var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);\n      var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex);\n      item.coord = coordInfo[0]; // Force to use the value of calculated value.\n      // let item use the value without stack.\n\n      item.value = coordInfo[1];\n    } else {\n      // FIXME Only has one of xAxis and yAxis.\n      var coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis]; // Each coord support max, min, average\n\n      for (var i = 0; i < 2; i++) {\n        if (markerTypeCalculator[coord[i]]) {\n          coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);\n        }\n      }\n\n      item.coord = coord;\n    }\n  }\n\n  return item;\n}\n\nfunction getAxisInfo(item, data, coordSys, seriesModel) {\n  var ret = {};\n\n  if (item.valueIndex != null || item.valueDim != null) {\n    ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim;\n    ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));\n    ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);\n    ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n  } else {\n    ret.baseAxis = seriesModel.getBaseAxis();\n    ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);\n    ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n    ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);\n  }\n\n  return ret;\n}\n\nfunction dataDimToCoordDim(seriesModel, dataDim) {\n  var data = seriesModel.getData();\n  var dimensions = data.dimensions;\n  dataDim = data.getDimension(dataDim);\n\n  for (var i = 0; i < dimensions.length; i++) {\n    var dimItem = data.getDimensionInfo(dimensions[i]);\n\n    if (dimItem.name === dataDim) {\n      return dimItem.coordDim;\n    }\n  }\n}\n/**\n * Filter data which is out of coordinateSystem range\n * [dataFilter description]\n * @param  {module:echarts/coord/*} [coordSys]\n * @param  {Object} item\n * @return {boolean}\n */\n\n\nfunction dataFilter(coordSys, item) {\n  // Alwalys return true if there is no coordSys\n  return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true;\n}\n\nfunction dimValueGetter(item, dimName, dataIndex, dimIndex) {\n  // x, y, radius, angle\n  if (dimIndex < 2) {\n    return item.coord && item.coord[dimIndex];\n  }\n\n  return item.value;\n}\n\nfunction numCalculate(data, valueDataDim, type) {\n  if (type === 'average') {\n    var sum = 0;\n    var count = 0;\n    data.each(valueDataDim, function (val, idx) {\n      if (!isNaN(val)) {\n        sum += val;\n        count++;\n      }\n    });\n    return sum / count;\n  } else if (type === 'median') {\n    return data.getMedian(valueDataDim);\n  } else {\n    // max & min\n    return data.getDataExtent(valueDataDim, true)[type === 'max' ? 1 : 0];\n  }\n}\n\nexports.dataTransform = dataTransform;\nexports.getAxisInfo = getAxisInfo;\nexports.dataFilter = dataFilter;\nexports.dimValueGetter = dimValueGetter;\nexports.numCalculate = numCalculate;\n\n/***/ }),\n/* 430 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n  type: 'marker',\n  init: function () {\n    /**\n     * Markline grouped by series\n     * @private\n     * @type {module:zrender/core/util.HashMap}\n     */\n    this.markerGroupMap = zrUtil.createHashMap();\n  },\n  render: function (markerModel, ecModel, api) {\n    var markerGroupMap = this.markerGroupMap;\n    markerGroupMap.each(function (item) {\n      item.__keep = false;\n    });\n    var markerModelKey = this.type + 'Model';\n    ecModel.eachSeries(function (seriesModel) {\n      var markerModel = seriesModel[markerModelKey];\n      markerModel && this.renderSeries(seriesModel, markerModel, ecModel, api);\n    }, this);\n    markerGroupMap.each(function (item) {\n      !item.__keep && this.group.remove(item.group);\n    }, this);\n  },\n  renderSeries: function () {}\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 431 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _core = __webpack_require__(432);\n\nvar createElement = _core.createElement;\n\nvar PathProxy = __webpack_require__(213);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar matrix = __webpack_require__(89);\n\nvar textContain = __webpack_require__(108);\n\nvar textHelper = __webpack_require__(326);\n\nvar Text = __webpack_require__(178);\n\n// TODO\n// 1. shadow\n// 2. Image: sx, sy, sw, sh\nvar CMD = PathProxy.CMD;\nvar arrayJoin = Array.prototype.join;\nvar NONE = 'none';\nvar mathRound = Math.round;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\nvar PI2 = Math.PI * 2;\nvar degree = 180 / PI;\nvar EPSILON = 1e-4;\n\nfunction round4(val) {\n  return mathRound(val * 1e4) / 1e4;\n}\n\nfunction isAroundZero(val) {\n  return val < EPSILON && val > -EPSILON;\n}\n\nfunction pathHasFill(style, isText) {\n  var fill = isText ? style.textFill : style.fill;\n  return fill != null && fill !== NONE;\n}\n\nfunction pathHasStroke(style, isText) {\n  var stroke = isText ? style.textStroke : style.stroke;\n  return stroke != null && stroke !== NONE;\n}\n\nfunction setTransform(svgEl, m) {\n  if (m) {\n    attr(svgEl, 'transform', 'matrix(' + arrayJoin.call(m, ',') + ')');\n  }\n}\n\nfunction attr(el, key, val) {\n  if (!val || val.type !== 'linear' && val.type !== 'radial') {\n    // Don't set attribute for gradient, since it need new dom nodes\n    el.setAttribute(key, val);\n  }\n}\n\nfunction attrXLink(el, key, val) {\n  el.setAttributeNS('http://www.w3.org/1999/xlink', key, val);\n}\n\nfunction bindStyle(svgEl, style, isText, el) {\n  if (pathHasFill(style, isText)) {\n    var fill = isText ? style.textFill : style.fill;\n    fill = fill === 'transparent' ? NONE : fill;\n    attr(svgEl, 'fill', fill);\n    attr(svgEl, 'fill-opacity', style.fillOpacity != null ? style.fillOpacity * style.opacity : style.opacity);\n  } else {\n    attr(svgEl, 'fill', NONE);\n  }\n\n  if (pathHasStroke(style, isText)) {\n    var stroke = isText ? style.textStroke : style.stroke;\n    stroke = stroke === 'transparent' ? NONE : stroke;\n    attr(svgEl, 'stroke', stroke);\n    var strokeWidth = isText ? style.textStrokeWidth : style.lineWidth;\n    var strokeScale = !isText && style.strokeNoScale ? el.getLineScale() : 1;\n    attr(svgEl, 'stroke-width', strokeWidth / strokeScale); // stroke then fill for text; fill then stroke for others\n\n    attr(svgEl, 'paint-order', isText ? 'stroke' : 'fill');\n    attr(svgEl, 'stroke-opacity', style.strokeOpacity != null ? style.strokeOpacity : style.opacity);\n    var lineDash = style.lineDash;\n\n    if (lineDash) {\n      attr(svgEl, 'stroke-dasharray', style.lineDash.join(','));\n      attr(svgEl, 'stroke-dashoffset', mathRound(style.lineDashOffset || 0));\n    } else {\n      attr(svgEl, 'stroke-dasharray', '');\n    } // PENDING\n\n\n    style.lineCap && attr(svgEl, 'stroke-linecap', style.lineCap);\n    style.lineJoin && attr(svgEl, 'stroke-linejoin', style.lineJoin);\n    style.miterLimit && attr(svgEl, 'stroke-miterlimit', style.miterLimit);\n  } else {\n    attr(svgEl, 'stroke', NONE);\n  }\n}\n/***************************************************\n * PATH\n **************************************************/\n\n\nfunction pathDataToString(path) {\n  var str = [];\n  var data = path.data;\n  var dataLength = path.len();\n\n  for (var i = 0; i < dataLength;) {\n    var cmd = data[i++];\n    var cmdStr = '';\n    var nData = 0;\n\n    switch (cmd) {\n      case CMD.M:\n        cmdStr = 'M';\n        nData = 2;\n        break;\n\n      case CMD.L:\n        cmdStr = 'L';\n        nData = 2;\n        break;\n\n      case CMD.Q:\n        cmdStr = 'Q';\n        nData = 4;\n        break;\n\n      case CMD.C:\n        cmdStr = 'C';\n        nData = 6;\n        break;\n\n      case CMD.A:\n        var cx = data[i++];\n        var cy = data[i++];\n        var rx = data[i++];\n        var ry = data[i++];\n        var theta = data[i++];\n        var dTheta = data[i++];\n        var psi = data[i++];\n        var clockwise = data[i++];\n        var dThetaPositive = Math.abs(dTheta);\n        var isCircle = isAroundZero(dThetaPositive - PI2) || (clockwise ? dTheta >= PI2 : -dTheta >= PI2); // Mapping to 0~2PI\n\n        var unifiedTheta = dTheta > 0 ? dTheta % PI2 : dTheta % PI2 + PI2;\n        var large = false;\n\n        if (isCircle) {\n          large = true;\n        } else if (isAroundZero(dThetaPositive)) {\n          large = false;\n        } else {\n          large = unifiedTheta >= PI === !!clockwise;\n        }\n\n        var x0 = round4(cx + rx * mathCos(theta));\n        var y0 = round4(cy + ry * mathSin(theta)); // It will not draw if start point and end point are exactly the same\n        // We need to shift the end point with a small value\n        // FIXME A better way to draw circle ?\n\n        if (isCircle) {\n          if (clockwise) {\n            dTheta = PI2 - 1e-4;\n          } else {\n            dTheta = -PI2 + 1e-4;\n          }\n\n          large = true;\n\n          if (i === 9) {\n            // Move to (x0, y0) only when CMD.A comes at the\n            // first position of a shape.\n            // For instance, when drawing a ring, CMD.A comes\n            // after CMD.M, so it's unnecessary to move to\n            // (x0, y0).\n            str.push('M', x0, y0);\n          }\n        }\n\n        var x = round4(cx + rx * mathCos(theta + dTheta));\n        var y = round4(cy + ry * mathSin(theta + dTheta)); // FIXME Ellipse\n\n        str.push('A', round4(rx), round4(ry), mathRound(psi * degree), +large, +clockwise, x, y);\n        break;\n\n      case CMD.Z:\n        cmdStr = 'Z';\n        break;\n\n      case CMD.R:\n        var x = round4(data[i++]);\n        var y = round4(data[i++]);\n        var w = round4(data[i++]);\n        var h = round4(data[i++]);\n        str.push('M', x, y, 'L', x + w, y, 'L', x + w, y + h, 'L', x, y + h, 'L', x, y);\n        break;\n    }\n\n    cmdStr && str.push(cmdStr);\n\n    for (var j = 0; j < nData; j++) {\n      // PENDING With scale\n      str.push(round4(data[i++]));\n    }\n  }\n\n  return str.join(' ');\n}\n\nvar svgPath = {};\n\nsvgPath.brush = function (el) {\n  var style = el.style;\n  var svgEl = el.__svgEl;\n\n  if (!svgEl) {\n    svgEl = createElement('path');\n    el.__svgEl = svgEl;\n  }\n\n  if (!el.path) {\n    el.createPathProxy();\n  }\n\n  var path = el.path;\n\n  if (el.__dirtyPath) {\n    path.beginPath();\n    path.subPixelOptimize = false;\n    el.buildPath(path, el.shape);\n    el.__dirtyPath = false;\n    var pathStr = pathDataToString(path);\n\n    if (pathStr.indexOf('NaN') < 0) {\n      // Ignore illegal path, which may happen such in out-of-range\n      // data in Calendar series.\n      attr(svgEl, 'd', pathStr);\n    }\n  }\n\n  bindStyle(svgEl, style, false, el);\n  setTransform(svgEl, el.transform);\n\n  if (style.text != null) {\n    svgTextDrawRectText(el, el.getBoundingRect());\n  } else {\n    removeOldTextNode(el);\n  }\n};\n/***************************************************\n * IMAGE\n **************************************************/\n\n\nvar svgImage = {};\n\nsvgImage.brush = function (el) {\n  var style = el.style;\n  var image = style.image;\n\n  if (image instanceof HTMLImageElement) {\n    var src = image.src;\n    image = src;\n  }\n\n  if (!image) {\n    return;\n  }\n\n  var x = style.x || 0;\n  var y = style.y || 0;\n  var dw = style.width;\n  var dh = style.height;\n  var svgEl = el.__svgEl;\n\n  if (!svgEl) {\n    svgEl = createElement('image');\n    el.__svgEl = svgEl;\n  }\n\n  if (image !== el.__imageSrc) {\n    attrXLink(svgEl, 'href', image); // Caching image src\n\n    el.__imageSrc = image;\n  }\n\n  attr(svgEl, 'width', dw);\n  attr(svgEl, 'height', dh);\n  attr(svgEl, 'x', x);\n  attr(svgEl, 'y', y);\n  setTransform(svgEl, el.transform);\n\n  if (style.text != null) {\n    svgTextDrawRectText(el, el.getBoundingRect());\n  } else {\n    removeOldTextNode(el);\n  }\n};\n/***************************************************\n * TEXT\n **************************************************/\n\n\nvar svgText = {};\n\nvar _tmpTextHostRect = new BoundingRect();\n\nvar _tmpTextBoxPos = {};\nvar _tmpTextTransform = [];\nvar TEXT_ALIGN_TO_ANCHRO = {\n  left: 'start',\n  right: 'end',\n  center: 'middle',\n  middle: 'middle'\n};\n/**\n * @param {module:zrender/Element} el\n * @param {Object|boolean} [hostRect] {x, y, width, height}\n *        If set false, rect text is not used.\n */\n\nvar svgTextDrawRectText = function (el, hostRect) {\n  var style = el.style;\n  var elTransform = el.transform;\n  var needTransformTextByHostEl = el instanceof Text || style.transformText;\n  el.__dirty && textHelper.normalizeTextStyle(style, true);\n  var text = style.text; // Convert to string\n\n  text != null && (text += '');\n\n  if (!textHelper.needDrawText(text, style)) {\n    return;\n  } // render empty text for svg if no text but need draw text.\n\n\n  text == null && (text = ''); // Follow the setting in the canvas renderer, if not transform the\n  // text, transform the hostRect, by which the text is located.\n\n  if (!needTransformTextByHostEl && elTransform) {\n    _tmpTextHostRect.copy(hostRect);\n\n    _tmpTextHostRect.applyTransform(elTransform);\n\n    hostRect = _tmpTextHostRect;\n  }\n\n  var textSvgEl = el.__textSvgEl;\n\n  if (!textSvgEl) {\n    textSvgEl = createElement('text');\n    el.__textSvgEl = textSvgEl;\n  } // style.font has been normalized by `normalizeTextStyle`.\n\n\n  var textSvgElStyle = textSvgEl.style;\n  var font = style.font || textContain.DEFAULT_FONT;\n  var computedFont = textSvgEl.__computedFont;\n\n  if (font !== textSvgEl.__styleFont) {\n    textSvgElStyle.font = textSvgEl.__styleFont = font; // The computedFont might not be the orginal font if it is illegal font.\n\n    computedFont = textSvgEl.__computedFont = textSvgElStyle.font;\n  }\n\n  var textPadding = style.textPadding;\n  var textLineHeight = style.textLineHeight;\n  var contentBlock = el.__textCotentBlock;\n\n  if (!contentBlock || el.__dirtyText) {\n    contentBlock = el.__textCotentBlock = textContain.parsePlainText(text, computedFont, textPadding, textLineHeight, style.truncate);\n  }\n\n  var outerHeight = contentBlock.outerHeight;\n  var lineHeight = contentBlock.lineHeight;\n  textHelper.getBoxPosition(_tmpTextBoxPos, el, style, hostRect);\n  var baseX = _tmpTextBoxPos.baseX;\n  var baseY = _tmpTextBoxPos.baseY;\n  var textAlign = _tmpTextBoxPos.textAlign || 'left';\n  var textVerticalAlign = _tmpTextBoxPos.textVerticalAlign;\n  setTextTransform(textSvgEl, needTransformTextByHostEl, elTransform, style, hostRect, baseX, baseY);\n  var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n  var textX = baseX;\n  var textY = boxY; // TODO needDrawBg\n\n  if (textPadding) {\n    textX = getTextXForPadding(baseX, textAlign, textPadding);\n    textY += textPadding[0];\n  } // `textBaseline` is set as 'middle'.\n\n\n  textY += lineHeight / 2;\n  bindStyle(textSvgEl, style, true, el); // FIXME\n  // Add a <style> to reset all of the text font as inherit?\n  // otherwise the outer <style> may set the unexpected style.\n  // Font may affect position of each tspan elements\n\n  var canCacheByTextString = contentBlock.canCacheByTextString;\n  var tspanList = el.__tspanList || (el.__tspanList = []);\n  var tspanOriginLen = tspanList.length; // Optimize for most cases, just compare text string to determine change.\n\n  if (canCacheByTextString && el.__canCacheByTextString && el.__text === text) {\n    if (el.__dirtyText && tspanOriginLen) {\n      for (var idx = 0; idx < tspanOriginLen; ++idx) {\n        updateTextLocation(tspanList[idx], textAlign, textX, textY + idx * lineHeight);\n      }\n    }\n  } else {\n    el.__text = text;\n    el.__canCacheByTextString = canCacheByTextString;\n    var textLines = contentBlock.lines;\n    var nTextLines = textLines.length;\n    var idx = 0;\n\n    for (; idx < nTextLines; idx++) {\n      // Using cached tspan elements\n      var tspan = tspanList[idx];\n      var singleLineText = textLines[idx];\n\n      if (!tspan) {\n        tspan = tspanList[idx] = createElement('tspan');\n        textSvgEl.appendChild(tspan);\n        tspan.appendChild(document.createTextNode(singleLineText));\n      } else if (tspan.__zrText !== singleLineText) {\n        tspan.innerHTML = '';\n        tspan.appendChild(document.createTextNode(singleLineText));\n      }\n\n      updateTextLocation(tspan, textAlign, textX, textY + idx * lineHeight);\n    } // Remove unused tspan elements\n\n\n    if (tspanOriginLen > nTextLines) {\n      for (; idx < tspanOriginLen; idx++) {\n        textSvgEl.removeChild(tspanList[idx]);\n      }\n\n      tspanList.length = nTextLines;\n    }\n  }\n};\n\nfunction setTextTransform(textSvgEl, needTransformTextByHostEl, elTransform, style, hostRect, baseX, baseY) {\n  matrix.identity(_tmpTextTransform);\n\n  if (needTransformTextByHostEl && elTransform) {\n    matrix.copy(_tmpTextTransform, elTransform);\n  } // textRotation only apply in RectText.\n\n\n  var textRotation = style.textRotation;\n\n  if (hostRect && textRotation) {\n    var origin = style.textOrigin;\n\n    if (origin === 'center') {\n      baseX = hostRect.width / 2 + hostRect.x;\n      baseY = hostRect.height / 2 + hostRect.y;\n    } else if (origin) {\n      baseX = origin[0] + hostRect.x;\n      baseY = origin[1] + hostRect.y;\n    }\n\n    _tmpTextTransform[4] -= baseX;\n    _tmpTextTransform[5] -= baseY; // Positive: anticlockwise\n\n    matrix.rotate(_tmpTextTransform, _tmpTextTransform, textRotation);\n    _tmpTextTransform[4] += baseX;\n    _tmpTextTransform[5] += baseY;\n  } // See the definition in `Style.js#textOrigin`, the default\n  // origin is from the result of `getBoxPosition`.\n\n\n  setTransform(textSvgEl, _tmpTextTransform);\n} // FIXME merge the same code with `helper/text.js#getTextXForPadding`;\n\n\nfunction getTextXForPadding(x, textAlign, textPadding) {\n  return textAlign === 'right' ? x - textPadding[1] : textAlign === 'center' ? x + textPadding[3] / 2 - textPadding[1] / 2 : x + textPadding[3];\n}\n\nfunction updateTextLocation(tspan, textAlign, x, y) {\n  // Consider different font display differently in vertial align, we always\n  // set vertialAlign as 'middle', and use 'y' to locate text vertically.\n  attr(tspan, 'dominant-baseline', 'middle');\n  attr(tspan, 'text-anchor', TEXT_ALIGN_TO_ANCHRO[textAlign]);\n  attr(tspan, 'x', x);\n  attr(tspan, 'y', y);\n}\n\nfunction removeOldTextNode(el) {\n  if (el && el.__textSvgEl) {\n    // textSvgEl may has no parentNode if el has been removed temporary.\n    if (el.__textSvgEl.parentNode) {\n      el.__textSvgEl.parentNode.removeChild(el.__textSvgEl);\n    }\n\n    el.__textSvgEl = null;\n    el.__tspanList = [];\n    el.__text = null;\n  }\n}\n\nsvgText.drawRectText = svgTextDrawRectText;\n\nsvgText.brush = function (el) {\n  var style = el.style;\n\n  if (style.text != null) {\n    svgTextDrawRectText(el, false);\n  } else {\n    removeOldTextNode(el);\n  }\n};\n\nexports.path = svgPath;\nexports.image = svgImage;\nexports.text = svgText;\n\n/***/ }),\n/* 432 */\n/***/ (function(module, exports) {\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\nfunction createElement(name) {\n  return document.createElementNS(svgURI, name);\n}\n\nexports.createElement = createElement;\n\n/***/ }),\n/* 433 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _core = __webpack_require__(432);\n\nvar createElement = _core.createElement;\n\nvar zrUtil = __webpack_require__(2);\n\nvar Path = __webpack_require__(63);\n\nvar ZImage = __webpack_require__(211);\n\nvar ZText = __webpack_require__(178);\n\nvar _graphic = __webpack_require__(431);\n\nvar svgPath = _graphic.path;\nvar svgImage = _graphic.image;\nvar svgText = _graphic.text;\n\n/**\n * @file Manages elements that can be defined in <defs> in SVG,\n *       e.g., gradients, clip path, etc.\n * @author Zhang Wenli\n */\nvar MARK_UNUSED = '0';\nvar MARK_USED = '1';\n/**\n * Manages elements that can be defined in <defs> in SVG,\n * e.g., gradients, clip path, etc.\n *\n * @class\n * @param {number}          zrId      zrender instance id\n * @param {SVGElement}      svgRoot   root of SVG document\n * @param {string|string[]} tagNames  possible tag names\n * @param {string}          markLabel label name to make if the element\n *                                    is used\n */\n\nfunction Definable(zrId, svgRoot, tagNames, markLabel, domName) {\n  this._zrId = zrId;\n  this._svgRoot = svgRoot;\n  this._tagNames = typeof tagNames === 'string' ? [tagNames] : tagNames;\n  this._markLabel = markLabel;\n  this._domName = domName || '_dom';\n  this.nextId = 0;\n}\n\nDefinable.prototype.createElement = createElement;\n/**\n * Get the <defs> tag for svgRoot; optionally creates one if not exists.\n *\n * @param {boolean} isForceCreating if need to create when not exists\n * @return {SVGDefsElement} SVG <defs> element, null if it doesn't\n * exist and isForceCreating is false\n */\n\nDefinable.prototype.getDefs = function (isForceCreating) {\n  var svgRoot = this._svgRoot;\n\n  var defs = this._svgRoot.getElementsByTagName('defs');\n\n  if (defs.length === 0) {\n    // Not exist\n    if (isForceCreating) {\n      defs = svgRoot.insertBefore(this.createElement('defs'), // Create new tag\n      svgRoot.firstChild // Insert in the front of svg\n      );\n\n      if (!defs.contains) {\n        // IE doesn't support contains method\n        defs.contains = function (el) {\n          var children = defs.children;\n\n          if (!children) {\n            return false;\n          }\n\n          for (var i = children.length - 1; i >= 0; --i) {\n            if (children[i] === el) {\n              return true;\n            }\n          }\n\n          return false;\n        };\n      }\n\n      return defs;\n    } else {\n      return null;\n    }\n  } else {\n    return defs[0];\n  }\n};\n/**\n * Update DOM element if necessary.\n *\n * @param {Object|string} element style element. e.g., for gradient,\n *                                it may be '#ccc' or {type: 'linear', ...}\n * @param {Function|undefined} onUpdate update callback\n */\n\n\nDefinable.prototype.update = function (element, onUpdate) {\n  if (!element) {\n    return;\n  }\n\n  var defs = this.getDefs(false);\n\n  if (element[this._domName] && defs.contains(element[this._domName])) {\n    // Update DOM\n    if (typeof onUpdate === 'function') {\n      onUpdate(element);\n    }\n  } else {\n    // No previous dom, create new\n    var dom = this.add(element);\n\n    if (dom) {\n      element[this._domName] = dom;\n    }\n  }\n};\n/**\n * Add gradient dom to defs\n *\n * @param {SVGElement} dom DOM to be added to <defs>\n */\n\n\nDefinable.prototype.addDom = function (dom) {\n  var defs = this.getDefs(true);\n  defs.appendChild(dom);\n};\n/**\n * Remove DOM of a given element.\n *\n * @param {SVGElement} element element to remove dom\n */\n\n\nDefinable.prototype.removeDom = function (element) {\n  var defs = this.getDefs(false);\n\n  if (defs && element[this._domName]) {\n    defs.removeChild(element[this._domName]);\n    element[this._domName] = null;\n  }\n};\n/**\n * Get DOMs of this element.\n *\n * @return {HTMLDomElement} doms of this defineable elements in <defs>\n */\n\n\nDefinable.prototype.getDoms = function () {\n  var defs = this.getDefs(false);\n\n  if (!defs) {\n    // No dom when defs is not defined\n    return [];\n  }\n\n  var doms = [];\n  zrUtil.each(this._tagNames, function (tagName) {\n    var tags = defs.getElementsByTagName(tagName); // Note that tags is HTMLCollection, which is array-like\n    // rather than real array.\n    // So `doms.concat(tags)` add tags as one object.\n\n    doms = doms.concat([].slice.call(tags));\n  });\n  return doms;\n};\n/**\n * Mark DOMs to be unused before painting, and clear unused ones at the end\n * of the painting.\n */\n\n\nDefinable.prototype.markAllUnused = function () {\n  var doms = this.getDoms();\n  var that = this;\n  zrUtil.each(doms, function (dom) {\n    dom[that._markLabel] = MARK_UNUSED;\n  });\n};\n/**\n * Mark a single DOM to be used.\n *\n * @param {SVGElement} dom DOM to mark\n */\n\n\nDefinable.prototype.markUsed = function (dom) {\n  if (dom) {\n    dom[this._markLabel] = MARK_USED;\n  }\n};\n/**\n * Remove unused DOMs defined in <defs>\n */\n\n\nDefinable.prototype.removeUnused = function () {\n  var defs = this.getDefs(false);\n\n  if (!defs) {\n    // Nothing to remove\n    return;\n  }\n\n  var doms = this.getDoms();\n  var that = this;\n  zrUtil.each(doms, function (dom) {\n    if (dom[that._markLabel] !== MARK_USED) {\n      // Remove gradient\n      defs.removeChild(dom);\n    }\n  });\n};\n/**\n * Get SVG proxy.\n *\n * @param {Displayable} displayable displayable element\n * @return {Path|Image|Text} svg proxy of given element\n */\n\n\nDefinable.prototype.getSvgProxy = function (displayable) {\n  if (displayable instanceof Path) {\n    return svgPath;\n  } else if (displayable instanceof ZImage) {\n    return svgImage;\n  } else if (displayable instanceof ZText) {\n    return svgText;\n  } else {\n    return svgPath;\n  }\n};\n/**\n * Get text SVG element.\n *\n * @param {Displayable} displayable displayable element\n * @return {SVGElement} SVG element of text\n */\n\n\nDefinable.prototype.getTextSvgElement = function (displayable) {\n  return displayable.__textSvgEl;\n};\n/**\n * Get SVG element.\n *\n * @param {Displayable} displayable displayable element\n * @return {SVGElement} SVG element\n */\n\n\nDefinable.prototype.getSvgElement = function (displayable) {\n  return displayable.__svgEl;\n};\n\nvar _default = Definable;\nmodule.exports = _default;\n\n/***/ }),\n/* 434 */\n/***/ (function(module, exports) {\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\n\n/***/ }),\n/* 435 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (url, options) {\n  if (!options) {\n    // eslint-disable-next-line no-param-reassign\n    options = {};\n  } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n  url = url && url.__esModule ? url.default : url;\n\n  if (typeof url !== 'string') {\n    return url;\n  } // If url is already wrapped in quotes, remove them\n\n\n  if (/^['\"].*['\"]$/.test(url)) {\n    // eslint-disable-next-line no-param-reassign\n    url = url.slice(1, -1);\n  }\n\n  if (options.hash) {\n    // eslint-disable-next-line no-param-reassign\n    url += options.hash;\n  } // Should url be wrapped?\n  // See https://drafts.csswg.org/css-values-3/#urls\n\n\n  if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n    return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n  }\n\n  return url;\n};\n\n/***/ }),\n/* 436 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(1316);\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n/* 437 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(223);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n/* 438 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n/* 439 */\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n/***/ }),\n/* 440 */\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n/* 441 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(442)('keys');\nvar uid = __webpack_require__(343);\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n/* 442 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(109);\nvar global = __webpack_require__(159);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(342) ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n/* 443 */\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n/* 444 */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n/* 445 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(222);\nvar dPs = __webpack_require__(1324);\nvar enumBugKeys = __webpack_require__(443);\nvar IE_PROTO = __webpack_require__(441)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(632)('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(1325).appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n/* 446 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(160).f;\nvar has = __webpack_require__(187);\nvar TAG = __webpack_require__(133)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n/* 447 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports.f = __webpack_require__(133);\n\n\n/***/ }),\n/* 448 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(159);\nvar core = __webpack_require__(109);\nvar LIBRARY = __webpack_require__(342);\nvar wksExt = __webpack_require__(447);\nvar defineProperty = __webpack_require__(160).f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n/***/ }),\n/* 449 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pIE = __webpack_require__(344);\nvar createDesc = __webpack_require__(268);\nvar toIObject = __webpack_require__(188);\nvar toPrimitive = __webpack_require__(437);\nvar has = __webpack_require__(187);\nvar IE8_DOM_DEFINE = __webpack_require__(631);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(161) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n/* 450 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArray = __webpack_require__(97),\n    isKey = __webpack_require__(451),\n    stringToPath = __webpack_require__(1494),\n    toString = __webpack_require__(1497);\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\n\n/***/ }),\n/* 451 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArray = __webpack_require__(97),\n    isSymbol = __webpack_require__(251);\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\n\n/***/ }),\n/* 452 */\n/***/ (function(module, exports) {\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\nmodule.exports = arrayMap;\n\n\n/***/ }),\n/* 453 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar castPath = __webpack_require__(450),\n    toKey = __webpack_require__(271);\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\n\n/***/ }),\n/* 454 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseAssignValue = __webpack_require__(455),\n    eq = __webpack_require__(190);\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\n\n/***/ }),\n/* 455 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(648);\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\n\n/***/ }),\n/* 456 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseForOwn = __webpack_require__(651),\n    castFunction = __webpack_require__(1546);\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.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 * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n *   console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n  return object && baseForOwn(object, castFunction(iteratee));\n}\n\nmodule.exports = forOwn;\n\n\n/***/ }),\n/* 457 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar overArg = __webpack_require__(544);\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n\n/***/ }),\n/* 458 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Uint8Array = __webpack_require__(539);\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\n\n/***/ }),\n/* 459 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n/***/ }),\n/* 460 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsEqual = __webpack_require__(389);\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\n\n/***/ }),\n/* 461 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar debounce = __webpack_require__(58),\n    isObject = __webpack_require__(106);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\nmodule.exports = throttle;\n\n\n/***/ }),\n/* 462 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar normalViewBox = '0 0 1024 1024';\nvar newViewBox = '64 64 896 896';\nvar fill = 'fill';\nvar outline = 'outline';\nvar twotone = 'twotone';\nfunction getNode(viewBox) {\n    var paths = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        paths[_i - 1] = arguments[_i];\n    }\n    return {\n        tag: 'svg',\n        attrs: { viewBox: viewBox },\n        children: paths.map(function (path) {\n            if (Array.isArray(path)) {\n                return {\n                    tag: 'path',\n                    attrs: {\n                        fill: path[0],\n                        d: path[1]\n                    }\n                };\n            }\n            return {\n                tag: 'path',\n                attrs: {\n                    d: path\n                }\n            };\n        })\n    };\n}\nfunction getIcon(name, theme, icon) {\n    return {\n        name: name,\n        theme: theme,\n        icon: icon\n    };\n}\nexports.AlertFill = getIcon('alert', fill, getNode(newViewBox, 'M512 244c176.18 0 319 142.82 319 319v233a32 32 0 0 1-32 32H225a32 32 0 0 1-32-32V563c0-176.18 142.82-319 319-319zM484 68h56a8 8 0 0 1 8 8v96a8 8 0 0 1-8 8h-56a8 8 0 0 1-8-8V76a8 8 0 0 1 8-8zM177.25 191.66a8 8 0 0 1 11.32 0l67.88 67.88a8 8 0 0 1 0 11.31l-39.6 39.6a8 8 0 0 1-11.31 0l-67.88-67.88a8 8 0 0 1 0-11.31l39.6-39.6zm669.6 0l39.6 39.6a8 8 0 0 1 0 11.3l-67.88 67.9a8 8 0 0 1-11.32 0l-39.6-39.6a8 8 0 0 1 0-11.32l67.89-67.88a8 8 0 0 1 11.31 0zM192 892h640a32 32 0 0 1 32 32v24a8 8 0 0 1-8 8H168a8 8 0 0 1-8-8v-24a32 32 0 0 1 32-32zm148-317v253h64V575h-64z'));\nexports.AlipayCircleFill = getIcon('alipay-circle', fill, getNode(newViewBox, 'M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zm460.5 67c100.1 33.4 154.7 43 166.7 44.8A445.9 445.9 0 0 0 960 512c0-247.4-200.6-448-448-448S64 264.6 64 512s200.6 448 448 448c155.9 0 293.2-79.7 373.5-200.5-75.6-29.8-213.6-85-286.8-120.1-69.9 85.7-160.1 137.8-253.7 137.8-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9z'));\nexports.AlipaySquareFill = getIcon('alipay-square', fill, getNode(newViewBox, 'M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm29.4 663.2S703 689.4 598.7 639.5C528.8 725.2 438.6 777.3 345 777.3c-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9 114.3 38.2 140.2 40.2 140.2 40.2v122.3z'));\nexports.AliwangwangFill = getIcon('aliwangwang', fill, getNode(newViewBox, 'M868.2 377.4c-18.9-45.1-46.3-85.6-81.2-120.6a377.26 377.26 0 0 0-120.5-81.2A375.65 375.65 0 0 0 519 145.8c-41.9 0-82.9 6.7-121.9 20C306 123.3 200.8 120 170.6 120c-2.2 0-7.4 0-9.4.2-11.9.4-22.8 6.5-29.2 16.4-6.5 9.9-7.7 22.4-3.4 33.5l64.3 161.6a378.59 378.59 0 0 0-52.8 193.2c0 51.4 10 101 29.8 147.6 18.9 45 46.2 85.6 81.2 120.5 34.7 34.8 75.4 62.1 120.5 81.2C418.3 894 467.9 904 519 904c51.3 0 100.9-10 147.7-29.8 44.9-18.9 85.5-46.3 120.4-81.2 34.7-34.8 62.1-75.4 81.2-120.6a376.5 376.5 0 0 0 29.8-147.6c-.2-51.2-10.1-100.8-29.9-147.4zm-325.2 79c0 20.4-16.6 37.1-37.1 37.1-20.4 0-37.1-16.7-37.1-37.1v-55.1c0-20.4 16.6-37.1 37.1-37.1 20.4 0 37.1 16.6 37.1 37.1v55.1zm175.2 0c0 20.4-16.6 37.1-37.1 37.1S644 476.8 644 456.4v-55.1c0-20.4 16.7-37.1 37.1-37.1 20.4 0 37.1 16.6 37.1 37.1v55.1z'));\nexports.AmazonCircleFill = getIcon('amazon-circle', fill, getNode(newViewBox, 'M485 467.5c-11.6 4.9-20.9 12.2-27.8 22-6.9 9.8-10.4 21.6-10.4 35.5 0 17.8 7.5 31.5 22.4 41.2 14.1 9.1 28.9 11.4 44.4 6.8 17.9-5.2 30-17.9 36.4-38.1 3-9.3 4.5-19.7 4.5-31.3v-50.2c-12.6.4-24.4 1.6-35.5 3.7-11.1 2.1-22.4 5.6-34 10.4zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm35.8 262.7c-7.2-10.9-20.1-16.4-38.7-16.4-1.3 0-3 .1-5.3.3-2.2.2-6.6 1.5-12.9 3.7a79.4 79.4 0 0 0-17.9 9.1c-5.5 3.8-11.5 10-18 18.4-6.4 8.5-11.5 18.4-15.3 29.8l-94-8.4c0-12.4 2.4-24.7 7-36.9 4.7-12.2 11.8-23.9 21.4-35 9.6-11.2 21.1-21 34.5-29.4 13.4-8.5 29.6-15.2 48.4-20.3 18.9-5.1 39.1-7.6 60.9-7.6 21.3 0 40.6 2.6 57.8 7.7 17.2 5.2 31.1 11.5 41.4 19.1a117 117 0 0 1 25.9 25.7c6.9 9.6 11.7 18.5 14.4 26.7 2.7 8.2 4 15.7 4 22.8v182.5c0 6.4 1.4 13 4.3 19.8 2.9 6.8 6.3 12.8 10.2 18 3.9 5.2 7.9 9.9 12 14.3 4.1 4.3 7.6 7.7 10.6 9.9l4.1 3.4-72.5 69.4c-8.5-7.7-16.9-15.4-25.2-23.4-8.3-8-14.5-14-18.5-18.1l-6.1-6.2c-2.4-2.3-5-5.7-8-10.2-8.1 12.2-18.5 22.8-31.1 31.8-12.7 9-26.3 15.6-40.7 19.7-14.5 4.1-29.4 6.5-44.7 7.1-15.3.6-30-1.5-43.9-6.5-13.9-5-26.5-11.7-37.6-20.3-11.1-8.6-19.9-20.2-26.5-35-6.6-14.8-9.9-31.5-9.9-50.4 0-17.4 3-33.3 8.9-47.7 6-14.5 13.6-26.5 23-36.1 9.4-9.6 20.7-18.2 34-25.7s26.4-13.4 39.2-17.7c12.8-4.2 26.6-7.8 41.5-10.7 14.9-2.9 27.6-4.8 38.2-5.7 10.6-.9 21.2-1.6 31.8-2v-39.4c0-13.5-2.3-23.5-6.7-30.1zm180.5 379.6c-2.8 3.3-7.5 7.8-14.1 13.5s-16.8 12.7-30.5 21.1c-13.7 8.4-28.8 16-45 22.9-16.3 6.9-36.3 12.9-60.1 18-23.7 5.1-48.2 7.6-73.3 7.6-25.4 0-50.7-3.2-76.1-9.6-25.4-6.4-47.6-14.3-66.8-23.7-19.1-9.4-37.6-20.2-55.1-32.2-17.6-12.1-31.7-22.9-42.4-32.5-10.6-9.6-19.6-18.7-26.8-27.1-1.7-1.9-2.8-3.6-3.2-5.1-.4-1.5-.3-2.8.3-3.7.6-.9 1.5-1.6 2.6-2.2a7.42 7.42 0 0 1 7.4.8c40.9 24.2 72.9 41.3 95.9 51.4 82.9 36.4 168 45.7 255.3 27.9 40.5-8.3 82.1-22.2 124.9-41.8 3.2-1.2 6-1.5 8.3-.9 2.3.6 3.5 2.4 3.5 5.4 0 2.8-1.6 6.3-4.8 10.2zm59.9-29c-1.8 11.1-4.9 21.6-9.1 31.8-7.2 17.1-16.3 30-27.1 38.4-3.6 2.9-6.4 3.8-8.3 2.8-1.9-1-1.9-3.5 0-7.4 4.5-9.3 9.2-21.8 14.2-37.7 5-15.8 5.7-26 2.1-30.5-1.1-1.5-2.7-2.6-5-3.6-2.2-.9-5.1-1.5-8.6-1.9s-6.7-.6-9.4-.8c-2.8-.2-6.5-.2-11.2 0-4.7.2-8 .4-10.1.6a874.4 874.4 0 0 1-17.1 1.5c-1.3.2-2.7.4-4.1.5-1.5.1-2.7.2-3.5.3l-2.7.3c-1 .1-1.7.2-2.2.2h-3.2l-1-.2-.6-.5-.5-.9c-1.3-3.3 3.7-7.4 15-12.4s22.3-8.1 32.9-9.3c9.8-1.5 21.3-1.5 34.5-.3s21.3 3.7 24.3 7.4c2.3 3.5 2.5 10.7.7 21.7z'));\nexports.AmazonSquareFill = getIcon('amazon-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM547.8 326.7c-7.2-10.9-20.1-16.4-38.7-16.4-1.3 0-3 .1-5.3.3-2.2.2-6.6 1.5-12.9 3.7a79.4 79.4 0 0 0-17.9 9.1c-5.5 3.8-11.5 10-18 18.4-6.4 8.5-11.5 18.4-15.3 29.8l-94-8.4c0-12.4 2.4-24.7 7-36.9s11.8-23.9 21.4-35c9.6-11.2 21.1-21 34.5-29.4 13.4-8.5 29.6-15.2 48.4-20.3 18.9-5.1 39.1-7.6 60.9-7.6 21.3 0 40.6 2.6 57.8 7.7 17.2 5.2 31.1 11.5 41.4 19.1a117 117 0 0 1 25.9 25.7c6.9 9.6 11.7 18.5 14.4 26.7 2.7 8.2 4 15.7 4 22.8v182.5c0 6.4 1.4 13 4.3 19.8 2.9 6.8 6.3 12.8 10.2 18 3.9 5.2 7.9 9.9 12 14.3 4.1 4.3 7.6 7.7 10.6 9.9l4.1 3.4-72.5 69.4c-8.5-7.7-16.9-15.4-25.2-23.4-8.3-8-14.5-14-18.5-18.1l-6.1-6.2c-2.4-2.3-5-5.7-8-10.2-8.1 12.2-18.5 22.8-31.1 31.8-12.7 9-26.3 15.6-40.7 19.7-14.5 4.1-29.4 6.5-44.7 7.1-15.3.6-30-1.5-43.9-6.5-13.9-5-26.5-11.7-37.6-20.3-11.1-8.6-19.9-20.2-26.5-35-6.6-14.8-9.9-31.5-9.9-50.4 0-17.4 3-33.3 8.9-47.7 6-14.5 13.6-26.5 23-36.1 9.4-9.6 20.7-18.2 34-25.7s26.4-13.4 39.2-17.7c12.8-4.2 26.6-7.8 41.5-10.7 14.9-2.9 27.6-4.8 38.2-5.7 10.6-.9 21.2-1.6 31.8-2v-39.4c0-13.5-2.3-23.5-6.7-30.1zm180.5 379.6c-2.8 3.3-7.5 7.8-14.1 13.5s-16.8 12.7-30.5 21.1c-13.7 8.4-28.8 16-45 22.9-16.3 6.9-36.3 12.9-60.1 18-23.7 5.1-48.2 7.6-73.3 7.6-25.4 0-50.7-3.2-76.1-9.6-25.4-6.4-47.6-14.3-66.8-23.7-19.1-9.4-37.6-20.2-55.1-32.2-17.6-12.1-31.7-22.9-42.4-32.5-10.6-9.6-19.6-18.7-26.8-27.1-1.7-1.9-2.8-3.6-3.2-5.1-.4-1.5-.3-2.8.3-3.7.6-.9 1.5-1.6 2.6-2.2a7.42 7.42 0 0 1 7.4.8c40.9 24.2 72.9 41.3 95.9 51.4 82.9 36.4 168 45.7 255.3 27.9 40.5-8.3 82.1-22.2 124.9-41.8 3.2-1.2 6-1.5 8.3-.9 2.3.6 3.5 2.4 3.5 5.4 0 2.8-1.6 6.3-4.8 10.2zm59.9-29c-1.8 11.1-4.9 21.6-9.1 31.8-7.2 17.1-16.3 30-27.1 38.4-3.6 2.9-6.4 3.8-8.3 2.8-1.9-1-1.9-3.5 0-7.4 4.5-9.3 9.2-21.8 14.2-37.7 5-15.8 5.7-26 2.1-30.5-1.1-1.5-2.7-2.6-5-3.6-2.2-.9-5.1-1.5-8.6-1.9s-6.7-.6-9.4-.8c-2.8-.2-6.5-.2-11.2 0-4.7.2-8 .4-10.1.6a874.4 874.4 0 0 1-17.1 1.5c-1.3.2-2.7.4-4.1.5-1.5.1-2.7.2-3.5.3l-2.7.3c-1 .1-1.7.2-2.2.2h-3.2l-1-.2-.6-.5-.5-.9c-1.3-3.3 3.7-7.4 15-12.4s22.3-8.1 32.9-9.3c9.8-1.5 21.3-1.5 34.5-.3s21.3 3.7 24.3 7.4c2.3 3.5 2.5 10.7.7 21.7zM485 467.5c-11.6 4.9-20.9 12.2-27.8 22-6.9 9.8-10.4 21.6-10.4 35.5 0 17.8 7.5 31.5 22.4 41.2 14.1 9.1 28.9 11.4 44.4 6.8 17.9-5.2 30-17.9 36.4-38.1 3-9.3 4.5-19.7 4.5-31.3v-50.2c-12.6.4-24.4 1.6-35.5 3.7-11.1 2.1-22.4 5.6-34 10.4z'));\nexports.AccountBookFill = getIcon('account-book', fill, getNode(newViewBox, 'M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM648.3 426.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V752c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z'));\nexports.ApiFill = getIcon('api', fill, getNode(newViewBox, 'M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM578.9 546.7a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 68.9-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2z'));\nexports.AndroidFill = getIcon('android', fill, getNode(newViewBox, 'M270.1 741.7c0 23.4 19.1 42.5 42.6 42.5h48.7v120.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V784.1h85v120.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V784.1h48.7c23.5 0 42.6-19.1 42.6-42.5V346.4h-486v395.3zm357.1-600.1l44.9-65c2.6-3.8 2-8.9-1.5-11.4-3.5-2.4-8.5-1.2-11.1 2.6l-46.6 67.6c-30.7-12.1-64.9-18.8-100.8-18.8-35.9 0-70.1 6.7-100.8 18.8l-46.6-67.5c-2.6-3.8-7.6-5.1-11.1-2.6-3.5 2.4-4.1 7.4-1.5 11.4l44.9 65c-71.4 33.2-121.4 96.1-127.8 169.6h486c-6.6-73.6-56.7-136.5-128-169.7zM409.5 244.1a26.9 26.9 0 1 1 26.9-26.9 26.97 26.97 0 0 1-26.9 26.9zm208.4 0a26.9 26.9 0 1 1 26.9-26.9 26.97 26.97 0 0 1-26.9 26.9zm223.4 100.7c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V400.1c.1-30.6-24.3-55.3-54.6-55.3zm-658.6 0c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4 30.2 0 54.6-24.8 54.6-55.4V400.1c0-30.6-24.5-55.3-54.6-55.3z'));\nexports.AppstoreFill = getIcon('appstore', fill, getNode(newViewBox, 'M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zM464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm0 400H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16z'));\nexports.AppleFill = getIcon('apple', fill, getNode(newViewBox, 'M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-105.1-305c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z'));\nexports.AudioFill = getIcon('audio', fill, getNode(newViewBox, 'M512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm330-170c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1z'));\nexports.BackwardFill = getIcon('backward', fill, getNode(normalViewBox, 'M485.6 249.9L198.2 498c-8.3 7.1-8.3 20.8 0 27.9l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9zm320 0L518.2 498a18.6 18.6 0 0 0-6.2 14c0 5.2 2.1 10.4 6.2 14l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9z'));\nexports.BankFill = getIcon('bank', fill, getNode(newViewBox, 'M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM381 836H264V462h117v374zm189 0H453V462h117v374zm190 0H642V462h118v374z'));\nexports.BehanceCircleFill = getIcon('behance-circle', fill, getNode(newViewBox, 'M420.3 470.3c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1a50.5 50.5 0 0 0 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm86.5 286.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7z'));\nexports.BehanceSquareFill = getIcon('behance-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM598.5 350.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7zm-248.5-10.1c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1s12.7-3.8 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8z'));\nexports.BuildFill = getIcon('build', fill, getNode(newViewBox, 'M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zM612 746H412V546h200v200zm268-268H680V278h200v200z'));\nexports.BellFill = getIcon('bell', fill, getNode(newViewBox, 'M816 768h-24V428c0-141.1-104.3-257.8-240-277.2V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.8C336.3 170.2 232 286.9 232 428v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48z'));\nexports.BookFill = getIcon('book', fill, getNode(newViewBox, 'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM668 345.9L621.5 312 572 347.4V124h96v221.9z'));\nexports.BoxPlotFill = getIcon('box-plot', fill, getNode(newViewBox, 'M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H448v432h344c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-728 80v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h152V296H232c-4.4 0-8 3.6-8 8z'));\nexports.BulbFill = getIcon('bulb', fill, getNode(newViewBox, 'M348 676.1C250 619.4 184 513.4 184 392c0-181.1 146.9-328 328-328s328 146.9 328 328c0 121.4-66 227.4-164 284.1V792c0 17.7-14.3 32-32 32H380c-17.7 0-32-14.3-32-32V676.1zM392 888h240c4.4 0 8 3.6 8 8v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32v-32c0-4.4 3.6-8 8-8z'));\nexports.CalculatorFill = getIcon('calculator', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM440.2 765h-50.8c-2.2 0-4.5-1.1-5.9-2.9L348 718.6l-35.5 43.5a7.38 7.38 0 0 1-5.9 2.9h-50.8c-6.6 0-10.2-7.9-5.8-13.1l62.7-76.8-61.2-74.9c-4.3-5.2-.7-13.1 5.9-13.1h50.9c2.2 0 4.5 1.1 5.9 2.9l34 41.6 34-41.6c1.5-1.9 3.6-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 675l62.7 76.8c4.2 5.3.6 13.2-6 13.2zm7.8-382c0 2.2-1.4 4-3.2 4H376v68.7c0 1.9-1.8 3.3-4 3.3h-48c-2.2 0-4-1.4-4-3.2V387h-68.8c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.2V331h68.7c1.9 0 3.3 1.8 3.3 4v48zm328 369c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48zm0-104c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48zm0-265c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48z'));\nexports.CalendarFill = getIcon('calendar', fill, getNode(newViewBox, 'M112 880c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V460H112v420zm768-696H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v176h800V216c0-17.7-14.3-32-32-32z'));\nexports.CarFill = getIcon('car', fill, getNode(newViewBox, 'M959 413.4L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM264 621c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm388 75c0 4.4-3.6 8-8 8H380c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v36h168v-36c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v84zm108-75c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zM220 418l72.7-199.9.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220z'));\nexports.CameraFill = getIcon('camera', fill, getNode(newViewBox, 'M864 260H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 260H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V340c0-44.2-35.8-80-80-80zM512 716c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160zm-96-160a96 96 0 1 0 192 0 96 96 0 1 0-192 0z'));\nexports.CaretDownFill = getIcon('caret-down', fill, getNode(normalViewBox, 'M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z'));\nexports.CaretUpFill = getIcon('caret-up', fill, getNode(normalViewBox, 'M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z'));\nexports.CaretRightFill = getIcon('caret-right', fill, getNode(normalViewBox, 'M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z'));\nexports.CarryOutFill = getIcon('carry-out', fill, getNode(newViewBox, 'M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zM694.5 432.7L481.9 725.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.1 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.8-6.6 13-6.6H688c6.5.1 10.3 7.5 6.5 12.8z'));\nexports.CaretLeftFill = getIcon('caret-left', fill, getNode(normalViewBox, 'M689 165.1L308.2 493.5c-10.9 9.4-10.9 27.5 0 37L689 858.9c14.2 12.2 35 1.2 35-18.5V183.6c0-19.7-20.8-30.7-35-18.5z'));\nexports.CheckSquareFill = getIcon('check-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM695.5 365.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L308.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H689c6.5 0 10.3 7.4 6.5 12.7z'));\nexports.CheckCircleFill = getIcon('check-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm193.5 301.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.5 12.7z'));\nexports.ChromeFill = getIcon('chrome', fill, getNode(newViewBox, 'M371.8 512c0 77.5 62.7 140.2 140.2 140.2S652.2 589.5 652.2 512 589.5 371.8 512 371.8 371.8 434.4 371.8 512zM900 362.4l-234.3 12.1c63.6 74.3 64.6 181.5 11.1 263.7l-188 289.2c78 4.2 158.4-12.9 231.2-55.2 180-104 253-322.1 180-509.8zM320.3 591.9L163.8 284.1A415.35 415.35 0 0 0 96 512c0 208 152.3 380.3 351.4 410.8l106.9-209.4c-96.6 18.2-189.9-34.8-234-121.5zm218.5-285.5l344.4 18.1C848 254.7 792.6 194 719.8 151.7 653.9 113.6 581.5 95.5 510.5 96c-122.5.5-242.2 55.2-322.1 154.5l128.2 196.9c32-91.9 124.8-146.7 222.2-141z'));\nexports.CiCircleFill = getIcon('ci-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-63.6 656c-103 0-162.4-68.6-162.4-182.6v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-4-46.1-37.6-77.6-87-77.6-61.1 0-95.6 45.4-95.6 126.9v49.3c0 80.3 34.5 125.1 95.6 125.1 49.3 0 82.8-29.5 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z'));\nexports.ClockCircleFill = getIcon('clock-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm176.5 585.7l-28.6 39a7.99 7.99 0 0 1-11.2 1.7L483.3 569.8a7.92 7.92 0 0 1-3.3-6.5V288c0-4.4 3.6-8 8-8h48.1c4.4 0 8 3.6 8 8v247.5l142.6 103.1c3.6 2.5 4.4 7.5 1.8 11.1z'));\nexports.CloseCircleFill = getIcon('close-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 0 1-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z'));\nexports.CloseSquareFill = getIcon('close-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM676.1 657.9c4.4 5.2.7 13.1-6.1 13.1h-58.9c-4.7 0-9.2-2.1-12.3-5.7L512 561.8l-86.8 103.5c-3 3.6-7.5 5.7-12.3 5.7H354c-6.8 0-10.5-7.9-6.1-13.1L470.2 512 347.9 366.1A7.95 7.95 0 0 1 354 353h58.9c4.7 0 9.2 2.1 12.3 5.7L512 462.2l86.8-103.5c3-3.6 7.5-5.7 12.3-5.7H670c6.8 0 10.5 7.9 6.1 13.1L553.8 512l122.3 145.9z'));\nexports.CloudFill = getIcon('cloud', fill, getNode(newViewBox, 'M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3z'));\nexports.CodeSandboxCircleFill = getIcon('code-sandbox-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm243.7 589.2L512 794 268.3 653.2V371.8l110-63.6-.4-.2h.2L512 231l134 77h-.2l-.3.2 110.1 63.6v281.4zM307.9 536.7l87.6 49.9V681l96.7 55.9V524.8L307.9 418.4zm203.9-151.8L418 331l-91.1 52.6 185.2 107 185.2-106.9-91.4-52.8zm20 352l97.3-56.2v-94.1l87-49.5V418.5L531.8 525z'));\nexports.CodeSandboxSquareFill = getIcon('code-sandbox-square', fill, getNode(newViewBox, 'M307.9 536.7l87.6 49.9V681l96.7 55.9V524.8L307.9 418.4zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM755.7 653.2L512 794 268.3 653.2V371.8l110-63.6-.4-.2h.2L512 231l134 77h-.2l-.3.2 110.1 63.6v281.4zm-223.9 83.7l97.3-56.2v-94.1l87-49.5V418.5L531.8 525zm-20-352L418 331l-91.1 52.6 185.2 107 185.2-106.9-91.4-52.8z'));\nexports.CodeFill = getIcon('code', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM513.1 518.1l-192 161c-5.2 4.4-13.1.7-13.1-6.1v-62.7c0-2.3 1.1-4.6 2.9-6.1L420.7 512l-109.8-92.2a7.63 7.63 0 0 1-2.9-6.1V351c0-6.8 7.9-10.5 13.1-6.1l192 160.9c3.9 3.2 3.9 9.1 0 12.3zM716 673c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48c0-4.4 3.4-8 7.5-8h185c4.1 0 7.5 3.6 7.5 8v48z'));\nexports.CodepenCircleFill = getIcon('codepen-circle', fill, getNode(newViewBox, 'M488.1 414.7V303.4L300.9 428l83.6 55.8zm254.1 137.7v-79.8l-59.8 39.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm278 533c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-254.1 13.3v111.3L723.1 597l-83.6-55.8zM281.8 472.6v79.8l59.8-39.9zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zM723.1 428L535.9 303.4v111.3l103.6 69.1zM384.5 541.2L300.9 597l187.2 124.6V610.3l-103.6-69.1z'));\nexports.CodepenSquareFill = getIcon('codepen-square', fill, getNode(newViewBox, 'M723.1 428L535.9 303.4v111.3l103.6 69.1zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zm23.9 154.2v111.3L723.1 597l-83.6-55.8zm-151.4-69.1L300.9 597l187.2 124.6V610.3l-103.6-69.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-90 485c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-47.8-44.6v-79.8l-59.8 39.9zm-460.4-79.8v79.8l59.8-39.9zm206.3-57.9V303.4L300.9 428l83.6 55.8z'));\nexports.CompassFill = getIcon('compass', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM327.3 702.4c-2 .9-4.4 0-5.3-2.1-.4-1-.4-2.2 0-3.2l98.7-225.5 132.1 132.1-225.5 98.7zm375.1-375.1l-98.7 225.5-132.1-132.1L697.1 322c2-.9 4.4 0 5.3 2.1.4 1 .4 2.1 0 3.2z'));\nexports.ContactsFill = getIcon('contacts', fill, getNode(newViewBox, 'M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zM661 736h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.6-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H363a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112 61.5 0 111.4 50.1 111.4 112 0 29.1-11 55.5-29.1 75.5 42.7 26.5 71.8 72.8 74.6 126.1.4 4.6-3.2 8.4-7.8 8.4zM512 474c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52c28.5 0 51.7-23.3 51.7-52s-23.2-52-51.7-52z'));\nexports.ContainerFill = getIcon('container', fill, getNode(newViewBox, 'M832 64H192c-17.7 0-32 14.3-32 32v529c0-.6.4-1 1-1h219.3l5.2 24.7C397.6 708.5 450.8 752 512 752s114.4-43.5 126.4-103.3l5.2-24.7H863c.6 0 1 .4 1 1V96c0-17.7-14.3-32-32-32zM712 493c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zm0-160c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zm151 354H694.1c-11.6 32.8-32 62.3-59.1 84.7-34.5 28.6-78.2 44.3-123 44.3s-88.5-15.8-123-44.3a194.02 194.02 0 0 1-59.1-84.7H161c-.6 0-1-.4-1-1v242c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V686c0 .6-.4 1-1 1z'));\nexports.ControlFill = getIcon('control', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM404 683v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c-41.7-13.6-72-52.8-72-99s30.3-85.5 72-99V264c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v221c41.7 13.6 72 52.8 72 99s-30.3 85.5-72 99zm279.6-143.9c.2 0 .3-.1.4-.1v221c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V539c.2 0 .3.1.4.1-42-13.4-72.4-52.7-72.4-99.1 0-46.4 30.4-85.7 72.4-99.1-.2 0-.3.1-.4.1v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-.2 0-.3-.1-.4-.1 42 13.4 72.4 52.7 72.4 99.1 0 46.4-30.4 85.7-72.4 99.1zM616 440a36 36 0 1 0 72 0 36 36 0 1 0-72 0zM403.4 566.5l-1.5-2.4c0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.1-.2-.2-.2-.3-1-1.3-2-2.5-3.2-3.6l-.2-.2c-.4-.4-.8-.8-1.2-1.1-.8-.8-1.7-1.5-2.6-2.1h-.1l-1.2-.9c-.1-.1-.3-.2-.4-.3-1.2-.8-2.5-1.6-3.9-2.2-.2-.1-.5-.2-.7-.4-.4-.2-.7-.3-1.1-.5-.3-.1-.7-.3-1-.4-.5-.2-1-.4-1.5-.5-.4-.1-.9-.3-1.3-.4l-.9-.3-1.4-.3c-.2-.1-.5-.1-.7-.2-.7-.1-1.4-.3-2.1-.4-.2 0-.4 0-.6-.1-.6-.1-1.1-.1-1.7-.2-.2 0-.4 0-.7-.1-.8 0-1.5-.1-2.3-.1s-1.5 0-2.3.1c-.2 0-.4 0-.7.1-.6 0-1.2.1-1.7.2-.2 0-.4 0-.6.1-.7.1-1.4.2-2.1.4-.2.1-.5.1-.7.2l-1.4.3-.9.3c-.4.1-.9.3-1.3.4-.5.2-1 .4-1.5.5-.3.1-.7.3-1 .4-.4.2-.7.3-1.1.5-.2.1-.5.2-.7.4-1.3.7-2.6 1.4-3.9 2.2-.1.1-.3.2-.4.3l-1.2.9h-.1c-.9.7-1.8 1.4-2.6 2.1-.4.4-.8.7-1.2 1.1l-.2.2a54.8 54.8 0 0 0-3.2 3.6c-.1.1-.2.2-.2.3l-.9 1.2c0 .1-.1.1-.1.2l-1.5 2.4c-.1.2-.2.3-.3.5-2.7 5.1-4.3 10.9-4.3 17s1.6 12 4.3 17c.1.2.2.3.3.5l1.5 2.4c0 .1.1.1.1.2l.9 1.2c.1.1.2.2.2.3 1 1.3 2 2.5 3.2 3.6l.2.2c.4.4.8.8 1.2 1.1.8.8 1.7 1.5 2.6 2.1h.1l1.2.9c.1.1.3.2.4.3 1.2.8 2.5 1.6 3.9 2.2.2.1.5.2.7.4.4.2.7.3 1.1.5.3.1.7.3 1 .4.5.2 1 .4 1.5.5.4.1.9.3 1.3.4l.9.3 1.4.3c.2.1.5.1.7.2.7.1 1.4.3 2.1.4.2 0 .4 0 .6.1.6.1 1.1.1 1.7.2.2 0 .4 0 .7.1.8 0 1.5.1 2.3.1s1.5 0 2.3-.1c.2 0 .4 0 .7-.1.6 0 1.2-.1 1.7-.2.2 0 .4 0 .6-.1.7-.1 1.4-.2 2.1-.4.2-.1.5-.1.7-.2l1.4-.3.9-.3c.4-.1.9-.3 1.3-.4.5-.2 1-.4 1.5-.5.3-.1.7-.3 1-.4.4-.2.7-.3 1.1-.5.2-.1.5-.2.7-.4 1.3-.7 2.6-1.4 3.9-2.2.1-.1.3-.2.4-.3l1.2-.9h.1c.9-.7 1.8-1.4 2.6-2.1.4-.4.8-.7 1.2-1.1l.2-.2c1.1-1.1 2.2-2.4 3.2-3.6.1-.1.2-.2.2-.3l.9-1.2c0-.1.1-.1.1-.2l1.5-2.4c.1-.2.2-.3.3-.5 2.7-5.1 4.3-10.9 4.3-17s-1.6-12-4.3-17c-.1-.2-.2-.4-.3-.5z'));\nexports.CopyFill = getIcon('copy', fill, getNode(newViewBox, 'M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM382 896h-.2L232 746.2v-.2h150v150z'));\nexports.CopyrightCircleFill = getIcon('copyright-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm5.4 670c-110 0-173.4-73.2-173.4-194.9v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.6-3.2-8-7.4-4-49.5-40-83.4-93-83.4-65.3 0-102.1 48.5-102.1 135.5v52.6c0 85.7 36.9 133.6 102.1 133.6 52.8 0 88.7-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4z'));\nexports.CreditCardFill = getIcon('credit-card', fill, getNode(newViewBox, 'M928 160H96c-17.7 0-32 14.3-32 32v160h896V192c0-17.7-14.3-32-32-32zM64 832c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V440H64v392zm579-184c0-4.4 3.6-8 8-8h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72z'));\nexports.CrownFill = getIcon('crown', fill, getNode(newViewBox, 'M899.6 276.5L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.7-3.5-13.1 1.2-12.2 7.9L188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.8-6.7-6.5-11.4-12.3-7.9zM512 734.2c-62.1 0-112.6-50.5-112.6-112.6S449.9 509 512 509s112.6 50.5 112.6 112.6S574.1 734.2 512 734.2zm0-160.9c-26.6 0-48.2 21.6-48.2 48.3 0 26.6 21.6 48.3 48.2 48.3s48.2-21.6 48.2-48.3c0-26.6-21.6-48.3-48.2-48.3z'));\nexports.CustomerServiceFill = getIcon('customer-service', fill, getNode(newViewBox, 'M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384z'));\nexports.DashboardFill = getIcon('dashboard', fill, getNode(newViewBox, 'M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM482 232c0-4.4 3.6-8 8-8h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80zM270 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44zm90.7-204.5l-31.1 31.1a8.03 8.03 0 0 1-11.3 0L261.7 352a8.03 8.03 0 0 1 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zm291.1 83.6l-84.5 84.5c5 18.7.2 39.4-14.5 54.1a55.95 55.95 0 0 1-79.2 0 55.95 55.95 0 0 1 0-79.2 55.87 55.87 0 0 1 54.1-14.5l84.5-84.5c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3c3.1 3.1 3.1 8.1 0 11.3zm43-52.4l-31.1-31.1a8.03 8.03 0 0 1 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6a8.03 8.03 0 0 1-11.3 0zM846 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44z'));\nexports.DatabaseFill = getIcon('database', fill, getNode(newViewBox, 'M832 64H192c-17.7 0-32 14.3-32 32v224h704V96c0-17.7-14.3-32-32-32zM288 232c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zM160 928c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V704H160v224zm128-136c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM160 640h704V384H160v256zm128-168c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z'));\nexports.DeleteFill = getIcon('delete', fill, getNode(newViewBox, 'M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-200 0H360v-72h304v72z'));\nexports.DiffFill = getIcon('diff', fill, getNode(newViewBox, 'M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23zM553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM568 753c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42zm0-220c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7v42z'));\nexports.DingtalkCircleFill = getIcon('dingtalk-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm227 385.3c-1 4.2-3.5 10.4-7 17.8h.1l-.4.7c-20.3 43.1-73.1 127.7-73.1 127.7s-.1-.2-.3-.5l-15.5 26.8h74.5L575.1 810l32.3-128h-58.6l20.4-84.7c-16.5 3.9-35.9 9.4-59 16.8 0 0-31.2 18.2-89.9-35 0 0-39.6-34.7-16.6-43.4 9.8-3.7 47.4-8.4 77-12.3 40-5.4 64.6-8.2 64.6-8.2S422 517 392.7 512.5c-29.3-4.6-66.4-53.1-74.3-95.8 0 0-12.2-23.4 26.3-12.3 38.5 11.1 197.9 43.2 197.9 43.2s-207.4-63.3-221.2-78.7c-13.8-15.4-40.6-84.2-37.1-126.5 0 0 1.5-10.5 12.4-7.7 0 0 153.3 69.7 258.1 107.9 104.8 37.9 195.9 57.3 184.2 106.7z'));\nexports.DingtalkSquareFill = getIcon('dingtalk-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM739 449.3c-1 4.2-3.5 10.4-7 17.8h.1l-.4.7c-20.3 43.1-73.1 127.7-73.1 127.7s-.1-.2-.3-.5l-15.5 26.8h74.5L575.1 810l32.3-128h-58.6l20.4-84.7c-16.5 3.9-35.9 9.4-59 16.8 0 0-31.2 18.2-89.9-35 0 0-39.6-34.7-16.6-43.4 9.8-3.7 47.4-8.4 77-12.3 40-5.4 64.6-8.2 64.6-8.2S422 517 392.7 512.5c-29.3-4.6-66.4-53.1-74.3-95.8 0 0-12.2-23.4 26.3-12.3 38.5 11.1 197.9 43.2 197.9 43.2s-207.4-63.3-221.2-78.7c-13.8-15.4-40.6-84.2-37.1-126.5 0 0 1.5-10.5 12.4-7.7 0 0 153.3 69.7 258.1 107.9 104.8 37.9 195.9 57.3 184.2 106.7z'));\nexports.DislikeFill = getIcon('dislike', fill, getNode(newViewBox, 'M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H273v428h.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32z'));\nexports.DollarCircleFill = getIcon('dollar-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm22.3 665.2l.2 31.7c0 4.4-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4C401.3 723 359.5 672.4 355 617.4c-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.7 29.8 55.4 74.1 61.3V533.9l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-72.9 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.9 46.9 125.9 109.2.5 4.7-3.2 8.8-8 8.8h-44.9c-4 0-7.4-3-7.9-6.9-4-29.2-27.4-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 108.9 116.4 0 75.3-56 117.3-134.3 124.1zM426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-36.9 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.8-.6-5.6-1.3-8.8-2.2V677c42.6-3.8 72-27.2 72-66.4 0-30.7-15.9-50.7-63.2-65.1z'));\nexports.DownCircleFill = getIcon('down-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm184.5 353.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 563.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7z'));\nexports.DownSquareFill = getIcon('down-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM696.5 412.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 558.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7z'));\nexports.DribbbleCircleFill = getIcon('dribbble-circle', fill, getNode(newViewBox, 'M675.1 328.3a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6zm47.7-11.9c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 736c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm53.1-346.2c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm30.6 82.5c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4z'));\nexports.DribbbleSquareFill = getIcon('dribbble-square', fill, getNode(newViewBox, 'M498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm66.5 21.8c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM512 800c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm89.7-259.1c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zm-72.5-26.4c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4zm145.9-186.2a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6z'));\nexports.DropboxCircleFill = getIcon('dropbox-circle', fill, getNode(newViewBox, 'M663.8 455.5zm-151.5-93.8l-151.8 93.8 151.8 93.9 151.5-93.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm151.2 595.5L512.6 750l-151-90.5v-33.1l45.4 29.4 105.6-87.7 105.6 87.7 45.1-29.4v33.1zm-45.6-22.4l-105.3-87.7L407 637.1l-151-99.2 104.5-82.4L256 371.2 407 274l105.3 87.7L617.6 274 768 372.1l-104.2 83.5L768 539l-150.4 98.1z'));\nexports.DropboxSquareFill = getIcon('dropbox-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM663.2 659.5L512.6 750l-151-90.5v-33.1l45.4 29.4 105.6-87.7 105.6 87.7 45.1-29.4v33.1zm-45.6-22.4l-105.3-87.7L407 637.1l-151-99.2 104.5-82.4L256 371.2 407 274l105.3 87.7L617.6 274 768 372.1l-104.2 83.5L768 539l-150.4 98.1zM512.3 361.7l-151.8 93.8 151.8 93.9 151.5-93.9zm151.5 93.8z'));\nexports.EnvironmentFill = getIcon('environment', fill, getNode(newViewBox, 'M512 327c-29.9 0-58 11.6-79.2 32.8A111.6 111.6 0 0 0 400 439c0 29.9 11.7 58 32.8 79.2A111.6 111.6 0 0 0 512 551c29.9 0 58-11.7 79.2-32.8C612.4 497 624 468.9 624 439c0-29.9-11.6-58-32.8-79.2S541.9 327 512 327zm342.6-37.9a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 615c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z'));\nexports.EditFill = getIcon('edit', fill, getNode(newViewBox, 'M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9z'));\nexports.EuroCircleFill = getIcon('euro-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm63.5 375.8c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8h-136c-.3 4.4-.3 9.1-.3 13.8v36h136.2c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H444.9c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.2 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.3 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.8.3-12.8H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.7c19.7-94.2 92-149.9 198.6-149.9 20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346h.1c0 5.1-4.6 8.8-9.6 7.8-14.7-2.9-31.8-4.4-51.7-4.4-65.4 0-110.4 33.5-127.6 90.4h128.4z'));\nexports.ExperimentFill = getIcon('experiment', fill, getNode(newViewBox, 'M218.9 636.3l42.6 26.6c.1.1.3.2.4.3l12.7 8 .3.3a186.9 186.9 0 0 0 94.1 25.1c44.9 0 87.2-15.7 121-43.8a256.27 256.27 0 0 1 164.9-59.9c52.3 0 102.2 15.7 144.6 44.5l7.9 5-111.6-289V179.8h63.5c4.4 0 8-3.6 8-8V120c0-4.4-3.6-8-8-8H264.7c-4.4 0-8 3.6-8 8v51.9c0 4.4 3.6 8 8 8h63.5v173.6L218.9 636.3zm333-203.1c22 0 39.9 17.9 39.9 39.9S573.9 513 551.9 513 512 495.1 512 473.1s17.9-39.9 39.9-39.9zM878 825.1l-29.9-77.4-85.7-53.5-.1.1c-.7-.5-1.5-1-2.2-1.5l-8.1-5-.3-.3c-29-17.5-62.3-26.8-97-26.8-44.9 0-87.2 15.7-121 43.8a256.27 256.27 0 0 1-164.9 59.9c-53 0-103.5-16.1-146.2-45.6l-28.9-18.1L146 825.1c-2.8 7.4-4.3 15.2-4.3 23 0 35.2 28.6 63.8 63.8 63.8h612.9c7.9 0 15.7-1.5 23-4.3a63.6 63.6 0 0 0 36.6-82.5z'));\nexports.ExclamationCircleFill = getIcon('exclamation-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'));\nexports.EyeInvisibleFill = getIcon('eye-invisible', fill, getNode(newViewBox, 'M508 624a112 112 0 0 0 112-112c0-3.28-.15-6.53-.43-9.74L498.26 623.57c3.21.28 6.45.43 9.74.43zm370.72-458.44L836 122.88a8 8 0 0 0-11.31 0L715.37 232.23Q624.91 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.7 119.43 136.55 191.45L112.56 835a8 8 0 0 0 0 11.31L155.25 889a8 8 0 0 0 11.31 0l712.16-712.12a8 8 0 0 0 0-11.32zM332 512a176 176 0 0 1 258.88-155.28l-48.62 48.62a112.08 112.08 0 0 0-140.92 140.92l-48.62 48.62A175.09 175.09 0 0 1 332 512z', 'M942.2 486.2Q889.4 375 816.51 304.85L672.37 449A176.08 176.08 0 0 1 445 676.37L322.74 798.63Q407.82 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5z'));\nexports.EyeFill = getIcon('eye', fill, getNode(newViewBox, 'M396 512a112 112 0 1 0 224 0 112 112 0 1 0-224 0zm546.2-25.8C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM508 688c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z'));\nexports.FacebookFill = getIcon('facebook', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-92.4 233.5h-63.9c-50.1 0-59.8 23.8-59.8 58.8v77.1h119.6l-15.6 120.7h-104V912H539.2V602.2H434.9V481.4h104.3v-89c0-103.3 63.1-159.6 155.3-159.6 44.2 0 82.1 3.3 93.2 4.8v107.9z'));\nexports.FastBackwardFill = getIcon('fast-backward', fill, getNode(normalViewBox, 'M517.6 273.5L230.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm320 0L550.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm-620-25.5h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z'));\nexports.FastForwardFill = getIcon('fast-forward', fill, getNode(normalViewBox, 'M793.8 499.3L506.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.6c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8a16.14 16.14 0 0 0 0-25.4zm-320 0L186.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.5c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8c4.1-3.2 6.2-8 6.2-12.7 0-4.6-2.1-9.4-6.2-12.6zM857.6 248h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z'));\nexports.FileAddFill = getIcon('file-add', fill, getNode(newViewBox, 'M480 580H372a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h108v108a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8V644h108a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H544V472a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v108zm374.6-291.3c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2z'));\nexports.FileExcelFill = getIcon('file-excel', fill, getNode(newViewBox, 'M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM575.34 477.84l-61.22 102.3L452.3 477.8a12 12 0 0 0-10.27-5.79h-38.44a12 12 0 0 0-6.4 1.85 12 12 0 0 0-3.75 16.56l82.34 130.42-83.45 132.78a12 12 0 0 0-1.84 6.39 12 12 0 0 0 12 12h34.46a12 12 0 0 0 10.21-5.7l62.7-101.47 62.3 101.45a12 12 0 0 0 10.23 5.72h37.48a12 12 0 0 0 6.48-1.9 12 12 0 0 0 3.62-16.58l-83.83-130.55 85.3-132.47a12 12 0 0 0 1.9-6.5 12 12 0 0 0-12-12h-35.7a12 12 0 0 0-10.29 5.84z'));\nexports.FileImageFill = getIcon('file-image', fill, getNode(newViewBox, 'M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM400 402c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm296 294H328c-6.7 0-10.4-7.7-6.3-12.9l99.8-127.2a8 8 0 0 1 12.6 0l41.1 52.4 77.8-99.2a8 8 0 0 1 12.6 0l136.5 174c4.3 5.2.5 12.9-6.1 12.9zm-94-370V137.8L790.2 326H602z'));\nexports.FileExclamationFill = getIcon('file-exclamation', fill, getNode(newViewBox, 'M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM512 784a40 40 0 1 0 0-80 40 40 0 0 0 0 80zm32-152V448a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v184a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8z'));\nexports.FilePdfFill = getIcon('file-pdf', fill, getNode(newViewBox, 'M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM633.22 637.26c-15.18-.5-31.32.67-49.65 2.96-24.3-14.99-40.66-35.58-52.28-65.83l1.07-4.38 1.24-5.18c4.3-18.13 6.61-31.36 7.3-44.7.52-10.07-.04-19.36-1.83-27.97-3.3-18.59-16.45-29.46-33.02-30.13-15.45-.63-29.65 8-33.28 21.37-5.91 21.62-2.45 50.07 10.08 98.59-15.96 38.05-37.05 82.66-51.2 107.54-18.89 9.74-33.6 18.6-45.96 28.42-16.3 12.97-26.48 26.3-29.28 40.3-1.36 6.49.69 14.97 5.36 21.92 5.3 7.88 13.28 13 22.85 13.74 24.15 1.87 53.83-23.03 86.6-79.26 3.29-1.1 6.77-2.26 11.02-3.7l11.9-4.02c7.53-2.54 12.99-4.36 18.39-6.11 23.4-7.62 41.1-12.43 57.2-15.17 27.98 14.98 60.32 24.8 82.1 24.8 17.98 0 30.13-9.32 34.52-23.99 3.85-12.88.8-27.82-7.48-36.08-8.56-8.41-24.3-12.43-45.65-13.12zM385.23 765.68v-.36l.13-.34a54.86 54.86 0 0 1 5.6-10.76c4.28-6.58 10.17-13.5 17.47-20.87 3.92-3.95 8-7.8 12.79-12.12 1.07-.96 7.91-7.05 9.19-8.25l11.17-10.4-8.12 12.93c-12.32 19.64-23.46 33.78-33 43-3.51 3.4-6.6 5.9-9.1 7.51a16.43 16.43 0 0 1-2.61 1.42c-.41.17-.77.27-1.13.3a2.2 2.2 0 0 1-1.12-.15 2.07 2.07 0 0 1-1.27-1.91zM511.17 547.4l-2.26 4-1.4-4.38c-3.1-9.83-5.38-24.64-6.01-38-.72-15.2.49-24.32 5.29-24.32 6.74 0 9.83 10.8 10.07 27.05.22 14.28-2.03 29.14-5.7 35.65zm-5.81 58.46l1.53-4.05 2.09 3.8c11.69 21.24 26.86 38.96 43.54 51.31l3.6 2.66-4.39.9c-16.33 3.38-31.54 8.46-52.34 16.85 2.17-.88-21.62 8.86-27.64 11.17l-5.25 2.01 2.8-4.88c12.35-21.5 23.76-47.32 36.05-79.77zm157.62 76.26c-7.86 3.1-24.78.33-54.57-12.39l-7.56-3.22 8.2-.6c23.3-1.73 39.8-.45 49.42 3.07 4.1 1.5 6.83 3.39 8.04 5.55a4.64 4.64 0 0 1-1.36 6.31 6.7 6.7 0 0 1-2.17 1.28z'));\nexports.FileMarkdownFill = getIcon('file-markdown', fill, getNode(newViewBox, 'M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM426.13 600.93l59.11 132.97a16 16 0 0 0 14.62 9.5h24.06a16 16 0 0 0 14.63-9.51l59.1-133.35V758a16 16 0 0 0 16.01 16H641a16 16 0 0 0 16-16V486a16 16 0 0 0-16-16h-34.75a16 16 0 0 0-14.67 9.62L512.1 662.2l-79.48-182.59a16 16 0 0 0-14.67-9.61H383a16 16 0 0 0-16 16v272a16 16 0 0 0 16 16h27.13a16 16 0 0 0 16-16V600.93z'));\nexports.FilePptFill = getIcon('file-ppt', fill, getNode(newViewBox, 'M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM468.53 760v-91.54h59.27c60.57 0 100.2-39.65 100.2-98.12 0-58.22-39.58-98.34-99.98-98.34H424a12 12 0 0 0-12 12v276a12 12 0 0 0 12 12h32.53a12 12 0 0 0 12-12zm0-139.33h34.9c47.82 0 67.19-12.93 67.19-50.33 0-32.05-18.12-50.12-49.87-50.12h-52.22v100.45z'));\nexports.FileTextFill = getIcon('file-text', fill, getNode(newViewBox, 'M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM320 482a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h384a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H320zm0 136a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h184a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8H320z'));\nexports.FileUnknownFill = getIcon('file-unknown', fill, getNode(newViewBox, 'M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM402 549c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103zm110 227a32 32 0 1 0 0-64 32 32 0 0 0 0 64z'));\nexports.FileWordFill = getIcon('file-word', fill, getNode(newViewBox, 'M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM512 566.1l52.81 197a12 12 0 0 0 11.6 8.9h31.77a12 12 0 0 0 11.6-8.88l74.37-276a12 12 0 0 0 .4-3.12 12 12 0 0 0-12-12h-35.57a12 12 0 0 0-11.7 9.31l-45.78 199.1-49.76-199.32A12 12 0 0 0 528.1 472h-32.2a12 12 0 0 0-11.64 9.1L434.6 680.01 388.5 481.3a12 12 0 0 0-11.68-9.29h-35.39a12 12 0 0 0-3.11.41 12 12 0 0 0-8.47 14.7l74.17 276A12 12 0 0 0 415.6 772h31.99a12 12 0 0 0 11.59-8.9l52.81-197z'));\nexports.FileZipFill = getIcon('file-zip', fill, getNode(newViewBox, 'M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2zM296 136v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm64 64v64h64v-64h-64zm-64 64v64h64v-64h-64zm0 64v160h128V584H296zm48 48h32v64h-32v-64z'));\nexports.FilterFill = getIcon('filter', fill, getNode(newViewBox, 'M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z'));\nexports.FileFill = getIcon('file', fill, getNode(newViewBox, 'M854.6 288.7c6 6 9.4 14.1 9.4 22.6V928c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32h424.7c8.5 0 16.7 3.4 22.7 9.4l215.2 215.3zM790.2 326L602 137.8V326h188.2z'));\nexports.FireFill = getIcon('fire', fill, getNode(newViewBox, 'M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9z'));\nexports.FlagFill = getIcon('flag', fill, getNode(newViewBox, 'M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32z'));\nexports.FolderAddFill = getIcon('folder-add', fill, getNode(newViewBox, 'M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM632 577c0 3.8-3.4 7-7.5 7H540v84.9c0 3.9-3.2 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V584h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.8 0 7 3.2 7 7.1V528h84.5c4.1 0 7.5 3.2 7.5 7v42z'));\nexports.FolderOpenFill = getIcon('folder-open', fill, getNode(newViewBox, 'M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zm-180 0H238c-13 0-24.8 7.9-29.7 20L136 643.2V256h188.5l119.6 114.4H748V444z'));\nexports.FolderFill = getIcon('folder', fill, getNode(newViewBox, 'M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32z'));\nexports.ForwardFill = getIcon('forward', fill, getNode(normalViewBox, 'M825.8 498L538.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L825.8 526c8.3-7.2 8.3-20.8 0-28zm-320 0L218.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L505.8 526c4.1-3.6 6.2-8.8 6.2-14 0-5.2-2.1-10.4-6.2-14z'));\nexports.FrownFill = getIcon('frown', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm376 272h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 636.1 562.5 597 512 597s-92.1 39.1-95.8 88.6c-.3 4.2-3.9 7.4-8.1 7.4H360a8 8 0 0 1-8-8.4c4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6a8 8 0 0 1-8 8.4zm24-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'));\nexports.FundFill = getIcon('fund', fill, getNode(newViewBox, 'M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-92.3 194.4l-297 297.2a8.03 8.03 0 0 1-11.3 0L410.9 541.1 238.4 713.7a8.03 8.03 0 0 1-11.3 0l-36.8-36.8a8.03 8.03 0 0 1 0-11.3l214.9-215c3.1-3.1 8.2-3.1 11.3 0L531 565l254.5-254.6c3.1-3.1 8.2-3.1 11.3 0l36.8 36.8c3.2 3 3.2 8.1.1 11.2z'));\nexports.FunnelPlotFill = getIcon('funnel-plot', fill, getNode(newViewBox, 'M336.7 586h350.6l84.9-148H251.8zm543.4-432H143.9c-24.5 0-39.8 26.7-27.5 48L215 374h594l98.7-172c12.2-21.3-3.1-48-27.6-48zM349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V650H349v188z'));\nexports.GiftFill = getIcon('gift', fill, getNode(newViewBox, 'M160 894c0 17.7 14.3 32 32 32h286V550H160v344zm386 32h286c17.7 0 32-14.3 32-32V550H546v376zm334-616H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v140h366V310h68v172h366V342c0-17.7-14.3-32-32-32zm-402-4h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70 70 31.4 70 70v70zm138 0h-70v-70c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70z'));\nexports.GithubFill = getIcon('github', fill, getNode(newViewBox, 'M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z'));\nexports.GitlabFill = getIcon('gitlab', fill, getNode(newViewBox, 'M910.5 553.2l-109-370.8c-6.8-20.4-23.1-34.1-44.9-34.1s-39.5 12.3-46.3 32.7l-72.2 215.4H386.2L314 181.1c-6.8-20.4-24.5-32.7-46.3-32.7s-39.5 13.6-44.9 34.1L113.9 553.2c-4.1 13.6 1.4 28.6 12.3 36.8l385.4 289 386.7-289c10.8-8.1 16.3-23.1 12.2-36.8z'));\nexports.GoldenFill = getIcon('golden', fill, getNode(newViewBox, 'M905.9 806.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zm-470.2-248c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8z'));\nexports.GoogleCircleFill = getIcon('google-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm167 633.6C638.4 735 583 757 516.9 757c-95.7 0-178.5-54.9-218.8-134.9C281.5 589 272 551.6 272 512s9.5-77 26.1-110.1c40.3-80.1 123.1-135 218.8-135 66 0 121.4 24.3 163.9 63.8L610.6 401c-25.4-24.3-57.7-36.6-93.6-36.6-63.8 0-117.8 43.1-137.1 101-4.9 14.7-7.7 30.4-7.7 46.6s2.8 31.9 7.7 46.6c19.3 57.9 73.3 101 137 101 33 0 61-8.7 82.9-23.4 26-17.4 43.2-43.3 48.9-74H516.9v-94.8h230.7c2.9 16.1 4.4 32.8 4.4 50.1 0 74.7-26.7 137.4-73 180.1z'));\nexports.GooglePlusCircleFill = getIcon('google-plus-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm36.5 558.8c-43.9 61.8-132.1 79.8-200.9 53.3-69-26.3-118-99.2-112.1-173.5 1.5-90.9 85.2-170.6 176.1-167.5 43.6-2 84.6 16.9 118 43.6-14.3 16.2-29 31.8-44.8 46.3-40.1-27.7-97.2-35.6-137.3-3.6-57.4 39.7-60 133.4-4.8 176.1 53.7 48.7 155.2 24.5 170.1-50.1-33.6-.5-67.4 0-101-1.1-.1-20.1-.2-40.1-.1-60.2 56.2-.2 112.5-.3 168.8.2 3.3 47.3-3 97.5-32 136.5zM791 536.5c-16.8.2-33.6.3-50.4.4-.2 16.8-.3 33.6-.3 50.4H690c-.2-16.8-.2-33.5-.3-50.3-16.8-.2-33.6-.3-50.4-.5v-50.1c16.8-.2 33.6-.3 50.4-.3.1-16.8.3-33.6.4-50.4h50.2l.3 50.4c16.8.2 33.6.2 50.4.3v50.1z'));\nexports.GooglePlusSquareFill = getIcon('google-plus-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM548.5 622.8c-43.9 61.8-132.1 79.8-200.9 53.3-69-26.3-118-99.2-112.1-173.5 1.5-90.9 85.2-170.6 176.1-167.5 43.6-2 84.6 16.9 118 43.6-14.3 16.2-29 31.8-44.8 46.3-40.1-27.7-97.2-35.6-137.3-3.6-57.4 39.7-60 133.4-4.8 176.1 53.7 48.7 155.2 24.5 170.1-50.1-33.6-.5-67.4 0-101-1.1-.1-20.1-.2-40.1-.1-60.2 56.2-.2 112.5-.3 168.8.2 3.3 47.3-3 97.5-32 136.5zM791 536.5c-16.8.2-33.6.3-50.4.4-.2 16.8-.3 33.6-.3 50.4H690c-.2-16.8-.2-33.5-.3-50.3-16.8-.2-33.6-.3-50.4-.5v-50.1c16.8-.2 33.6-.3 50.4-.3.1-16.8.3-33.6.4-50.4h50.2l.3 50.4c16.8.2 33.6.2 50.4.3v50.1z'));\nexports.HddFill = getIcon('hdd', fill, getNode(newViewBox, 'M832 64H192c-17.7 0-32 14.3-32 32v224h704V96c0-17.7-14.3-32-32-32zM456 216c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zM160 928c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V704H160v224zm576-136c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM160 640h704V384H160v256zm96-152c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-48z'));\nexports.GoogleSquareFill = getIcon('google-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM679 697.6C638.4 735 583 757 516.9 757c-95.7 0-178.5-54.9-218.8-134.9A245.02 245.02 0 0 1 272 512c0-39.6 9.5-77 26.1-110.1 40.3-80.1 123.1-135 218.8-135 66 0 121.4 24.3 163.9 63.8L610.6 401c-25.4-24.3-57.7-36.6-93.6-36.6-63.8 0-117.8 43.1-137.1 101-4.9 14.7-7.7 30.4-7.7 46.6s2.8 31.9 7.7 46.6c19.3 57.9 73.3 101 137 101 33 0 61-8.7 82.9-23.4 26-17.4 43.2-43.3 48.9-74H516.9v-94.8h230.7c2.9 16.1 4.4 32.8 4.4 50.1 0 74.7-26.7 137.4-73 180.1z'));\nexports.HeartFill = getIcon('heart', fill, getNode(newViewBox, 'M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9z'));\nexports.HighlightFill = getIcon('highlight', fill, getNode(newViewBox, 'M957.6 507.4L603.2 158.2a7.9 7.9 0 0 0-11.2 0L353.3 393.4a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2z'));\nexports.HomeFill = getIcon('home', fill, getNode(newViewBox, 'M946.5 505L534.6 93.4a31.93 31.93 0 0 0-45.2 0L77.5 505c-12 12-18.8 28.3-18.8 45.3 0 35.3 28.7 64 64 64h43.4V908c0 17.7 14.3 32 32 32H448V716h112v224h265.9c17.7 0 32-14.3 32-32V614.3h43.4c17 0 33.3-6.7 45.3-18.8 24.9-25 24.9-65.5-.1-90.5z'));\nexports.HourglassFill = getIcon('hourglass', fill, getNode(newViewBox, 'M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194z'));\nexports.Html5Fill = getIcon('html5', fill, getNode(newViewBox, 'M145.2 96l66 746.6L512 928l299.6-85.4L878.9 96H145.2zm595 177.1l-4.8 47.2-1.7 19.5H382.3l8.2 94.2h335.1l-3.3 24.3-21.2 242.2-1.7 16.2-187 51.6v.3h-1.2l-.3.1v-.1h-.1l-188.6-52L310.8 572h91.1l6.5 73.2 102.4 27.7h.4l102-27.6 11.4-118.6H510.9v-.1H306l-22.8-253.5-1.7-24.3h460.3l-1.6 24.3z'));\nexports.IdcardFill = getIcon('idcard', fill, getNode(newViewBox, 'M373 411c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52 51.7-23.3 51.7-52-23.2-52-51.7-52zm555-251H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM608 420c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm-86 253h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.5-29.1 75.5 42.7 26.5 71.8 72.8 74.6 126.1.4 4.6-3.2 8.4-7.8 8.4zm278.9-53H615.1c-3.9 0-7.1-3.6-7.1-8v-48c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48h.1c0 4.4-3.2 8-7.1 8z'));\nexports.IeCircleFill = getIcon('ie-circle', fill, getNode(newViewBox, 'M693.6 284.4c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm253.9 492.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z'));\nexports.IeSquareFill = getIcon('ie-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM765.9 556.9H437.1c0 100.4 144.3 136 196.8 47.4h120.8c-32.6 91.7-119.7 146-216.8 146-35.1 0-70.3-.1-101.7-15.6-87.4 44.5-180.3 56.6-180.3-42 0-45.8 23.2-107.1 44-145C335 484 381.3 422.8 435.6 374.5c-43.7 18.9-91.1 66.3-122 101.2 25.9-112.8 129.5-193.6 237.1-186.5 130-59.8 209.7-34.1 209.7 38.6 0 27.4-10.6 63.3-21.4 87.9 25.2 45.5 33.3 97.6 26.9 141.2zm-72.3-272.5c-24 0-51.1 11.7-72.6 22 46.3 18 86 57.3 112.3 99.6 7.1-18.9 14.6-47.9 14.6-67.9 0-32-22.8-53.7-54.3-53.7zM540.5 399.1c-53.7 0-102 39.7-104 94.9h208c-2-55.1-50.6-94.9-104-94.9zM320.6 602.9c-73 152.4 11.5 172.2 100.3 123.3-46.6-27.5-82.6-72.2-100.3-123.3z'));\nexports.InfoCircleFill = getIcon('info-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'));\nexports.InstagramFill = getIcon('instagram', fill, getNode(newViewBox, 'M512 378.7c-73.4 0-133.3 59.9-133.3 133.3S438.6 645.3 512 645.3 645.3 585.4 645.3 512 585.4 378.7 512 378.7zM911.8 512c0-55.2.5-109.9-2.6-165-3.1-64-17.7-120.8-64.5-167.6-46.9-46.9-103.6-61.4-167.6-64.5-55.2-3.1-109.9-2.6-165-2.6-55.2 0-109.9-.5-165 2.6-64 3.1-120.8 17.7-167.6 64.5C132.6 226.3 118.1 283 115 347c-3.1 55.2-2.6 109.9-2.6 165s-.5 109.9 2.6 165c3.1 64 17.7 120.8 64.5 167.6 46.9 46.9 103.6 61.4 167.6 64.5 55.2 3.1 109.9 2.6 165 2.6 55.2 0 109.9.5 165-2.6 64-3.1 120.8-17.7 167.6-64.5 46.9-46.9 61.4-103.6 64.5-167.6 3.2-55.1 2.6-109.8 2.6-165zM512 717.1c-113.5 0-205.1-91.6-205.1-205.1S398.5 306.9 512 306.9 717.1 398.5 717.1 512 625.5 717.1 512 717.1zm213.5-370.7c-26.5 0-47.9-21.4-47.9-47.9s21.4-47.9 47.9-47.9 47.9 21.4 47.9 47.9a47.84 47.84 0 0 1-47.9 47.9z'));\nexports.InsuranceFill = getIcon('insurance', fill, getNode(newViewBox, 'M519.9 358.8h97.9v41.6h-97.9zm347-188.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM411.3 656h-.2c0 4.4-3.6 8-8 8h-37.3c-4.4 0-8-3.6-8-8V471.4c-7.7 9.2-15.4 17.9-23.1 26a6.04 6.04 0 0 1-10.2-2.4l-13.2-43.5c-.6-2-.2-4.1 1.2-5.6 37-43.4 64.7-95.1 82.2-153.6 1.1-3.5 5-5.3 8.4-3.7l38.6 18.3c2.7 1.3 4.1 4.4 3.2 7.2a429.2 429.2 0 0 1-33.6 79V656zm296.5-49.2l-26.3 35.3a5.92 5.92 0 0 1-8.9.7c-30.6-29.3-56.8-65.2-78.1-106.9V656c0 4.4-3.6 8-8 8h-36.2c-4.4 0-8-3.6-8-8V536c-22 44.7-49 80.8-80.6 107.6a5.9 5.9 0 0 1-8.9-1.4L430 605.7a6 6 0 0 1 1.6-8.1c28.6-20.3 51.9-45.2 71-76h-55.1c-4.4 0-8-3.6-8-8V478c0-4.4 3.6-8 8-8h94.9v-18.6h-65.9c-4.4 0-8-3.6-8-8V316c0-4.4 3.6-8 8-8h184.7c4.4 0 8 3.6 8 8v127.2c0 4.4-3.6 8-8 8h-66.7v18.6h98.8c4.4 0 8 3.6 8 8v35.6c0 4.4-3.6 8-8 8h-59c18.1 29.1 41.8 54.3 72.3 76.9 2.6 2.1 3.2 5.9 1.2 8.5z'));\nexports.InterationFill = getIcon('interation', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM726 585.7c0 55.3-44.7 100.1-99.7 100.1H420.6v53.4c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.7l109.1-85.7c4.4-3.5 10.9-.3 10.9 5.3v53.4h205.7c19.6 0 35.5-16 35.5-35.6v-78.9c0-3.7 3-6.8 6.8-6.8h50.7c3.7 0 6.8 3 6.8 6.8v79.1zm-2.6-209.9l-109.1 85.7c-4.4 3.5-10.9.3-10.9-5.3v-53.4H397.7c-19.6 0-35.5 16-35.5 35.6v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-55.3 44.7-100.1 99.7-100.1h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.6 2.5 3.6 7.8.1 10.5z'));\nexports.LeftCircleFill = getIcon('left-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm104 316.9c0 10.2-4.9 19.9-13.2 25.9L457.4 512l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178a8 8 0 0 1 12.7 6.5v46.8z'));\nexports.LeftSquareFill = getIcon('left-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM624 380.9c0 10.2-4.9 19.9-13.2 25.9L465.4 512l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5v46.8z'));\nexports.LayoutFill = getIcon('layout', fill, getNode(newViewBox, 'M384 912h496c17.7 0 32-14.3 32-32V340H384v572zm496-800H384v164h528V144c0-17.7-14.3-32-32-32zm-768 32v736c0 17.7 14.3 32 32 32h176V112H144c-17.7 0-32 14.3-32 32z'));\nexports.LikeFill = getIcon('like', fill, getNode(newViewBox, 'M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 0 0 471 99.9c-52 0-98 35-111.8 85.1l-85.9 311h-.3v428h472.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32z'));\nexports.LinkedinFill = getIcon('linkedin', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM349.3 793.7H230.6V411.9h118.7v381.8zm-59.3-434a68.8 68.8 0 1 1 68.8-68.8c-.1 38-30.9 68.8-68.8 68.8zm503.7 434H675.1V608c0-44.3-.8-101.2-61.7-101.2-61.7 0-71.2 48.2-71.2 98v188.9H423.7V411.9h113.8v52.2h1.6c15.8-30 54.5-61.7 112.3-61.7 120.2 0 142.3 79.1 142.3 181.9v209.4z'));\nexports.LockFill = getIcon('lock', fill, getNode(newViewBox, 'M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1 1 56 0zm152-237H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224z'));\nexports.MailFill = getIcon('mail', fill, getNode(newViewBox, 'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-80.8 108.9L531.7 514.4c-7.8 6.1-18.7 6.1-26.5 0L189.6 268.9A7.2 7.2 0 0 1 194 256h648.8a7.2 7.2 0 0 1 4.4 12.9z'));\nexports.MedicineBoxFill = getIcon('medicine-box', fill, getNode(newViewBox, 'M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM660 628c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V636H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V464c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8v48zm4-372H360v-72h304v72z'));\nexports.MediumCircleFill = getIcon('medium-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm256 253.7l-40.8 39.1c-3.6 2.7-5.3 7.1-4.6 11.4v287.7c-.7 4.4 1 8.8 4.6 11.4l40 39.1v8.7H566.4v-8.3l41.3-40.1c4.1-4.1 4.1-5.3 4.1-11.4V422.5l-115 291.6h-15.5L347.5 422.5V618c-1.2 8.2 1.7 16.5 7.5 22.4l53.8 65.1v8.7H256v-8.7l53.8-65.1a26.1 26.1 0 0 0 7-22.4V392c.7-6.3-1.7-12.4-6.5-16.7l-47.8-57.6V309H411l114.6 251.5 100.9-251.3H768v8.5z'));\nexports.MediumSquareFill = getIcon('medium-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM768 317.7l-40.8 39.1c-3.6 2.7-5.3 7.1-4.6 11.4v287.7c-.7 4.4 1 8.8 4.6 11.4l40 39.1v8.7H566.4v-8.3l41.3-40.1c4.1-4.1 4.1-5.3 4.1-11.4V422.5l-115 291.6h-15.5L347.5 422.5V618c-1.2 8.2 1.7 16.5 7.5 22.4l53.8 65.1v8.7H256v-8.7l53.8-65.1a26.1 26.1 0 0 0 7-22.4V392c.7-6.3-1.7-12.4-6.5-16.7l-47.8-57.6V309H411l114.6 251.5 100.9-251.3H768v8.5z'));\nexports.MehFill = getIcon('meh', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm384 200c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48zm16-152a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'));\nexports.MessageFill = getIcon('message', fill, getNode(newViewBox, 'M924.3 338.4a447.57 447.57 0 0 0-96.1-143.3 443.09 443.09 0 0 0-143-96.3A443.91 443.91 0 0 0 512 64h-2c-60.5.3-119 12.3-174.1 35.9a444.08 444.08 0 0 0-141.7 96.5 445 445 0 0 0-95 142.8A449.89 449.89 0 0 0 65 514.1c.3 69.4 16.9 138.3 47.9 199.9v152c0 25.4 20.6 46 45.9 46h151.8a447.72 447.72 0 0 0 199.5 48h2.1c59.8 0 117.7-11.6 172.3-34.3A443.2 443.2 0 0 0 827 830.5c41.2-40.9 73.6-88.7 96.3-142 23.5-55.2 35.5-113.9 35.8-174.5.2-60.9-11.6-120-34.8-175.6zM312.4 560c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.4 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48zm199.6 0c-26.4 0-47.9-21.5-47.9-48s21.5-48 47.9-48 47.9 21.5 47.9 48-21.5 48-47.9 48z'));\nexports.MinusCircleFill = getIcon('minus-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z'));\nexports.MinusSquareFill = getIcon('minus-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM704 536c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z'));\nexports.MobileFill = getIcon('mobile', fill, getNode(newViewBox, 'M744 62H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V126c0-35.3-28.7-64-64-64zM512 824c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z'));\nexports.MoneyCollectFill = getIcon('money-collect', fill, getNode(newViewBox, 'M911.5 699.7a8 8 0 0 0-10.3-4.8L840 717.2V179c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V762c0 3.3 2.1 6.3 5.3 7.5L501 909.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zm-243.8-377L564 514.3h57.6c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3V703c0 4.4-3.6 8-8 8h-49.9c-4.4 0-8-3.6-8-8v-63.4h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h57L356.5 322.8c-2.1-3.8-.7-8.7 3.2-10.8 1.2-.7 2.5-1 3.8-1h55.7a8 8 0 0 1 7.1 4.4L511 484.2h3.3L599 315.4c1.3-2.7 4.1-4.4 7.1-4.4h54.5c4.4 0 8 3.6 8.1 7.9 0 1.3-.4 2.6-1 3.8z'));\nexports.NotificationFill = getIcon('notification', fill, getNode(newViewBox, 'M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.6c-3.7 11.6-5.6 23.9-5.6 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1z'));\nexports.PauseCircleFill = getIcon('pause-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-80 600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z'));\nexports.PayCircleFill = getIcon('pay-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm166.6 246.8L567.5 515.6h62c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-82V603h82c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-82V717c0 4.4-3.6 8-8 8h-54.3c-4.4 0-8-3.6-8-8v-68.1h-81.7c-4.4 0-8-3.6-8-8V611c0-4.4 3.6-8 8-8h81.7v-41.5h-81.7c-4.4 0-8-3.6-8-8v-29.9c0-4.4 3.6-8 8-8h61.4L345.4 310.8a8.07 8.07 0 0 1 7-11.9h60.7c3 0 5.8 1.7 7.1 4.4l90.6 180h3.4l90.6-180a8 8 0 0 1 7.1-4.4h59.5c4.4 0 8 3.6 8 8 .2 1.4-.2 2.7-.8 3.9z'));\nexports.PhoneFill = getIcon('phone', fill, getNode(newViewBox, 'M885.6 230.2L779.1 123.8a80.83 80.83 0 0 0-57.3-23.8c-21.7 0-42.1 8.5-57.4 23.8L549.8 238.4a80.83 80.83 0 0 0-23.8 57.3c0 21.7 8.5 42.1 23.8 57.4l83.8 83.8A393.82 393.82 0 0 1 553.1 553 395.34 395.34 0 0 1 437 633.8L353.2 550a80.83 80.83 0 0 0-57.3-23.8c-21.7 0-42.1 8.5-57.4 23.8L123.8 664.5a80.89 80.89 0 0 0-23.8 57.4c0 21.7 8.5 42.1 23.8 57.4l106.3 106.3c24.4 24.5 58.1 38.4 92.7 38.4 7.3 0 14.3-.6 21.2-1.8 134.8-22.2 268.5-93.9 376.4-201.7C828.2 612.8 899.8 479.2 922.3 344c6.8-41.3-6.9-83.8-36.7-113.8z'));\nexports.PictureFill = getIcon('picture', fill, getNode(newViewBox, 'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM338 304c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm513.9 437.1a8.11 8.11 0 0 1-5.2 1.9H177.2c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2l170.3-202c2.8-3.4 7.9-3.8 11.3-1 .3.3.7.6 1 1l99.4 118 158.1-187.5c2.8-3.4 7.9-3.8 11.3-1 .3.3.7.6 1 1l229.6 271.6c2.6 3.3 2.2 8.4-1.2 11.2z'));\nexports.PieChartFill = getIcon('pie-chart', fill, getNode(newViewBox, 'M863.1 518.5H505.5V160.9c0-4.4-3.6-8-8-8h-26a398.57 398.57 0 0 0-282.5 117 397.47 397.47 0 0 0-85.6 127C82.6 446.2 72 498.5 72 552.5S82.6 658.7 103.4 708c20.1 47.5 48.9 90.3 85.6 127 36.7 36.7 79.4 65.5 127 85.6a396.64 396.64 0 0 0 155.6 31.5 398.57 398.57 0 0 0 282.5-117c36.7-36.7 65.5-79.4 85.6-127a396.64 396.64 0 0 0 31.5-155.6v-26c-.1-4.4-3.7-8-8.1-8zM951 463l-2.6-28.2c-8.5-92-49.3-178.8-115.1-244.3A398.5 398.5 0 0 0 588.4 75.6L560.1 73c-4.7-.4-8.7 3.2-8.7 7.9v383.7c0 4.4 3.6 8 8 8l383.6-1c4.7-.1 8.4-4 8-8.6z'));\nexports.PlayCircleFill = getIcon('play-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm144.1 454.9L437.7 677.8a8.02 8.02 0 0 1-12.7-6.5V353.7a8 8 0 0 1 12.7-6.5L656.1 506a7.9 7.9 0 0 1 0 12.9z'));\nexports.PlaySquareFill = getIcon('play-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM641.7 520.8L442.3 677.6c-7.4 5.8-18.3.6-18.3-8.8V355.3c0-9.4 10.9-14.7 18.3-8.8l199.4 156.7a11.2 11.2 0 0 1 0 17.6z'));\nexports.PlusCircleFill = getIcon('plus-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm192 472c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z'));\nexports.PoundCircleFill = getIcon('pound-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm146 658c0 4.4-3.6 8-8 8H376.2c-4.4 0-8-3.6-8-8v-38.5c0-3.7 2.5-6.9 6.1-7.8 44-10.9 72.8-49 72.8-94.2 0-14.7-2.5-29.4-5.9-44.2H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h53.7c-7.8-25.1-14.6-50.7-14.6-77.1 0-75.8 58.6-120.3 151.5-120.3 26.5 0 51.4 5.5 70.3 12.7 3.1 1.2 5.2 4.2 5.2 7.5v39.5a8 8 0 0 1-10.6 7.6c-17.9-6.4-39-10.5-60.4-10.5-53.3 0-87.3 26.6-87.3 70.2 0 24.7 6.2 47.9 13.4 70.5h112c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8h-98.6c3.1 13.2 5.3 26.9 5.3 41 0 40.7-16.5 73.9-43.9 91.1v4.7h180c4.4 0 8 3.6 8 8V722z'));\nexports.ProfileFill = getIcon('profile', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM380 696c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0-144c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0-144c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm304 272c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-144c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-144c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48z'));\nexports.PlusSquareFill = getIcon('plus-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM704 536c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z'));\nexports.ProjectFill = getIcon('project', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM368 744c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464zm192-280c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184zm192 72c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256z'));\nexports.PrinterFill = getIcon('printer', fill, getNode(newViewBox, 'M732 120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v148h440V120zm120 212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM664 844H360V568h304v276zm164-360c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40z'));\nexports.PropertySafetyFill = getIcon('property-safety', fill, getNode(newViewBox, 'M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM648.3 332.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V658c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3 73.2-144.3a10 10 0 0 1 8.9-5.5h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8z'));\nexports.PushpinFill = getIcon('pushpin', fill, getNode(newViewBox, 'M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3-15.4 12.3-16.6 35.4-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8z'));\nexports.QqCircleFill = getIcon('qq-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm210.5 612.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.2 72.2-51.1 101.8 16.9 5.2 54.9 19.2 45.9 34.4-7.3 12.3-125.6 7.9-159.8 4-34.2 3.8-152.5 8.3-159.8-4-9.1-15.2 28.9-29.2 45.8-34.4-35-29.5-51.1-70.4-51.1-101.8 0 0-33.4 54.1-44.9 52.7-5.4-.7-12.4-29.6 9.4-99.7 10.3-33 22-60.5 40.2-105.8-3.1-116.9 45.3-215 160.4-215 113.9 0 163.3 96.1 160.4 215 18.1 45.2 29.9 72.8 40.2 105.8 21.7 70.1 14.6 99.1 9.3 99.7z'));\nexports.QqSquareFill = getIcon('qq-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM722.5 676.4c-11.5 1.4-44.9-52.7-44.9-52.7 0 31.3-16.2 72.2-51.1 101.8 16.9 5.2 54.9 19.2 45.9 34.4-7.3 12.3-125.6 7.9-159.8 4-34.2 3.8-152.5 8.3-159.8-4-9.1-15.2 28.9-29.2 45.8-34.4-35-29.5-51.1-70.4-51.1-101.8 0 0-33.4 54.1-44.9 52.7-5.4-.7-12.4-29.6 9.4-99.7 10.3-33 22-60.5 40.2-105.8-3.1-116.9 45.3-215 160.4-215 113.9 0 163.3 96.1 160.4 215 18.1 45.2 29.9 72.8 40.2 105.8 21.7 70.1 14.6 99.1 9.3 99.7z'));\nexports.QuestionCircleFill = getIcon('question-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 708c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 0 0-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z'));\nexports.ReadFill = getIcon('read', fill, getNode(newViewBox, 'M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 0 0 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM404 553.5c0 4.1-3.2 7.5-7.1 7.5H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm0-140c0 4.1-3.2 7.5-7.1 7.5H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm416 140c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45zm0-140c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45z'));\nexports.ReconciliationFill = getIcon('reconciliation', fill, getNode(newViewBox, 'M676 623c-18.8 0-34 15.2-34 34s15.2 34 34 34 34-15.2 34-34-15.2-34-34-34zm204-455H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zM448 848H176V616h272v232zm0-296H176v-88h272v88zm20-272v-48h72v-56h64v56h72v48H468zm180 168v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8zm28 301c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92zm92-245c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v96zm-92 61c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34z'));\nexports.RedEnvelopeFill = getIcon('red-envelope', fill, getNode(newViewBox, 'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zM647 470.4l-87.2 161h45.9c4.6 0 8.4 3.8 8.4 8.4v25.1c0 4.6-3.8 8.4-8.4 8.4h-63.3v28.6h63.3c4.6 0 8.4 3.8 8.4 8.4v25c.2 4.6-3.6 8.5-8.2 8.5h-63.3v49.9c0 4.6-3.8 8.4-8.4 8.4h-43.7c-4.6 0-8.4-3.8-8.4-8.4v-49.9h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-28.6h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h45.4l-87.5-161c-2.2-4.1-.7-9.1 3.4-11.4 1.3-.6 2.6-1 3.9-1h48.8c3.2 0 6.1 1.8 7.5 4.6l71.9 141.8 71.9-141.9a8.5 8.5 0 0 1 7.5-4.6h47.8c4.6 0 8.4 3.8 8.4 8.4-.1 1.5-.5 2.9-1.1 4.1zM512.6 323L289 148h446L512.6 323z'));\nexports.RedditCircleFill = getIcon('reddit-circle', fill, getNode(newViewBox, 'M584 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0zm144-108a35.9 35.9 0 0 0-32.5 20.6c18.8 14.3 34.4 30.7 45.9 48.8A35.98 35.98 0 0 0 728 440zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm245 477.9c4.6 13.5 7 27.6 7 42.1 0 99.4-112.8 180-252 180s-252-80.6-252-180c0-14.5 2.4-28.6 7-42.1A72.01 72.01 0 0 1 296 404c27.1 0 50.6 14.9 62.9 37 36.2-19.8 80.2-32.8 128.1-36.1l58.4-131.1c4.3-9.8 15.2-14.8 25.5-11.8l91.6 26.5a54.03 54.03 0 0 1 101.6 25.6c0 29.8-24.2 54-54 54-23.5 0-43.5-15.1-50.9-36.1L577 308.3l-43 96.5c49.1 3 94.2 16.1 131.2 36.3 12.3-22.1 35.8-37 62.9-37 39.8 0 72 32.2 72 72-.1 29.3-17.8 54.6-43.1 65.8zm-171.3 83c-14.9 11.7-44.3 24.3-73.7 24.3s-58.9-12.6-73.7-24.3c-9.3-7.3-22.7-5.7-30 3.6-7.3 9.3-5.7 22.7 3.6 30 25.7 20.4 65 33.5 100.1 33.5 35.1 0 74.4-13.1 100.2-33.5 9.3-7.3 10.9-20.8 3.6-30a21.46 21.46 0 0 0-30.1-3.6zM296 440a35.98 35.98 0 0 0-13.4 69.4c11.5-18.1 27.1-34.5 45.9-48.8A35.9 35.9 0 0 0 296 440zm72 108a36 36 0 1 0 72 0 36 36 0 1 0-72 0z'));\nexports.RedditSquareFill = getIcon('reddit-square', fill, getNode(newViewBox, 'M296 440a35.98 35.98 0 0 0-13.4 69.4c11.5-18.1 27.1-34.5 45.9-48.8A35.9 35.9 0 0 0 296 440zm289.7 184.9c-14.9 11.7-44.3 24.3-73.7 24.3s-58.9-12.6-73.7-24.3c-9.3-7.3-22.7-5.7-30 3.6-7.3 9.3-5.7 22.7 3.6 30 25.7 20.4 65 33.5 100.1 33.5 35.1 0 74.4-13.1 100.2-33.5 9.3-7.3 10.9-20.8 3.6-30a21.46 21.46 0 0 0-30.1-3.6zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM757 541.9c4.6 13.5 7 27.6 7 42.1 0 99.4-112.8 180-252 180s-252-80.6-252-180c0-14.5 2.4-28.6 7-42.1A72.01 72.01 0 0 1 296 404c27.1 0 50.6 14.9 62.9 37 36.2-19.8 80.2-32.8 128.1-36.1l58.4-131.1c4.3-9.8 15.2-14.8 25.5-11.8l91.6 26.5a54.03 54.03 0 0 1 101.6 25.6c0 29.8-24.2 54-54 54-23.5 0-43.5-15.1-50.9-36.1L577 308.3l-43 96.5c49.1 3 94.2 16.1 131.2 36.3 12.3-22.1 35.8-37 62.9-37 39.8 0 72 32.2 72 72-.1 29.3-17.8 54.6-43.1 65.8zM584 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0zm144-108a35.9 35.9 0 0 0-32.5 20.6c18.8 14.3 34.4 30.7 45.9 48.8A35.98 35.98 0 0 0 728 440zM368 548a36 36 0 1 0 72 0 36 36 0 1 0-72 0z'));\nexports.RestFill = getIcon('rest', fill, getNode(newViewBox, 'M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zM508 704c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144zM291 256l22.4-76h397.2l22.4 76H291zm137 304a80 80 0 1 0 160 0 80 80 0 1 0-160 0z'));\nexports.RightCircleFill = getIcon('right-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm154.7 454.5l-246 178c-5.3 3.8-12.7 0-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L566.6 512 421.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13z'));\nexports.RightSquareFill = getIcon('right-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM658.7 518.5l-246 178c-5.3 3.8-12.7 0-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L558.6 512 413.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13z'));\nexports.RocketFill = getIcon('rocket', fill, getNode(newViewBox, 'M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8L864 736zM512 352a48.01 48.01 0 0 1 0 96 48.01 48.01 0 0 1 0-96zm116.1 432.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5s-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5z'));\nexports.SafetyCertificateFill = getIcon('safety-certificate', fill, getNode(newViewBox, 'M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM694.5 340.7L481.9 633.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.1 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.8-6.6 13-6.6H688c6.5.1 10.3 7.5 6.5 12.8z'));\nexports.SaveFill = getIcon('save', fill, getNode(newViewBox, 'M893.3 293.3L730.7 130.7c-12-12-28.3-18.7-45.3-18.7H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 176h256v112H384V176zm128 554c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144zm0-224c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80z'));\nexports.ScheduleFill = getIcon('schedule', fill, getNode(newViewBox, 'M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zM424 688c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-136c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm374.5-91.3l-165 228.7a15.9 15.9 0 0 1-25.8 0L493.5 531.2c-3.8-5.3 0-12.7 6.5-12.7h54.9c5.1 0 9.9 2.5 12.9 6.6l52.8 73.1 103.7-143.7c3-4.2 7.8-6.6 12.9-6.6H792c6.5.1 10.3 7.5 6.5 12.8z'));\nexports.SecurityScanFill = getIcon('security-scan', fill, getNode(newViewBox, 'M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM626.8 554c-48.5 48.5-123 55.2-178.6 20.1l-77.5 77.5a8.03 8.03 0 0 1-11.3 0l-34-34a8.03 8.03 0 0 1 0-11.3l77.5-77.5c-35.1-55.7-28.4-130.1 20.1-178.6 56.3-56.3 147.5-56.3 203.8 0 56.3 56.3 56.3 147.5 0 203.8zm-158.54-45.27a80.1 80.1 0 1 0 113.27-113.28 80.1 80.1 0 1 0-113.27 113.28z'));\nexports.SettingFill = getIcon('setting', fill, getNode(newViewBox, 'M512.5 390.6c-29.9 0-57.9 11.6-79.1 32.8-21.1 21.2-32.8 49.2-32.8 79.1 0 29.9 11.7 57.9 32.8 79.1 21.2 21.1 49.2 32.8 79.1 32.8 29.9 0 57.9-11.7 79.1-32.8 21.1-21.2 32.8-49.2 32.8-79.1 0-29.9-11.7-57.9-32.8-79.1a110.96 110.96 0 0 0-79.1-32.8zm412.3 235.5l-65.4-55.9c3.1-19 4.7-38.4 4.7-57.7s-1.6-38.8-4.7-57.7l65.4-55.9a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a442.5 442.5 0 0 0-79.6-137.7l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.2 28.9c-30-24.6-63.4-44-99.6-57.5l-15.7-84.9a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52-9.4-106.8-9.4-158.8 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.3a353.44 353.44 0 0 0-98.9 57.3l-81.8-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a445.93 445.93 0 0 0-79.6 137.7l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.2 56.5c-3.1 18.8-4.6 38-4.6 57 0 19.2 1.5 38.4 4.6 57l-66 56.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.3 44.8 96.8 79.6 137.7l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.8-29.1c29.8 24.5 63 43.9 98.9 57.3l15.8 85.3a32.05 32.05 0 0 0 25.8 25.7l2.7.5a448.27 448.27 0 0 0 158.8 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c4.3-12.4.6-26.3-9.5-35zm-412.3 52.2c-97.1 0-175.8-78.7-175.8-175.8s78.7-175.8 175.8-175.8 175.8 78.7 175.8 175.8-78.7 175.8-175.8 175.8z'));\nexports.ShopFill = getIcon('shop', fill, getNode(newViewBox, 'M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h274V736h128v176h274c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zm-72 568H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm0-568.1H214v-88h596v88z'));\nexports.ShoppingFill = getIcon('shopping', fill, getNode(newViewBox, 'M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-208 0H400v-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16z'));\nexports.SketchCircleFill = getIcon('sketch-circle', fill, getNode(newViewBox, 'M582.3 625.6l147.9-166.3h-63.4zm90-202.3h62.5l-92.1-115.1zm-274.7 36L512 684.5l114.4-225.2zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm286.7 380.2L515.8 762.3c-1 1.1-2.4 1.7-3.8 1.7s-2.8-.6-3.8-1.7L225.3 444.2a5.14 5.14 0 0 1-.2-6.6L365.6 262c1-1.2 2.4-1.9 4-1.9h284.6c1.6 0 3 .7 4 1.9l140.5 175.6a4.9 4.9 0 0 1 0 6.6zm-190.5-20.9L512 326.1l-96.2 97.2zM420.3 301.1l-23.1 89.8 88.8-89.8zm183.4 0H538l88.8 89.8zm-222.4 7.1l-92.1 115.1h62.5zm-87.5 151.1l147.9 166.3-84.5-166.3z'));\nexports.SketchSquareFill = getIcon('sketch-square', fill, getNode(newViewBox, 'M608.2 423.3L512 326.1l-96.2 97.2zm-25.9 202.3l147.9-166.3h-63.4zm90-202.3h62.5l-92.1-115.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-81.3 332.2L515.8 762.3c-1 1.1-2.4 1.7-3.8 1.7s-2.8-.6-3.8-1.7L225.3 444.2a5.14 5.14 0 0 1-.2-6.6L365.6 262c1-1.2 2.4-1.9 4-1.9h284.6c1.6 0 3 .7 4 1.9l140.5 175.6a4.9 4.9 0 0 1 0 6.6zm-401.1 15.1L512 684.5l114.4-225.2zm-16.3-151.1l-92.1 115.1h62.5zm-87.5 151.1l147.9 166.3-84.5-166.3zm126.5-158.2l-23.1 89.8 88.8-89.8zm183.4 0H538l88.8 89.8z'));\nexports.SkinFill = getIcon('skin', fill, getNode(newViewBox, 'M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44z'));\nexports.SkypeFill = getIcon('skype', fill, getNode(newViewBox, 'M883.7 578.6c4.1-22.5 6.3-45.5 6.3-68.5 0-51-10-100.5-29.7-147-19-45-46.3-85.4-81-120.1a375.79 375.79 0 0 0-120.1-80.9c-46.6-19.7-96-29.7-147-29.7-24 0-48.1 2.3-71.5 6.8A225.1 225.1 0 0 0 335.6 113c-59.7 0-115.9 23.3-158.1 65.5A222.25 222.25 0 0 0 112 336.6c0 38 9.8 75.4 28.1 108.4-3.7 21.4-5.7 43.3-5.7 65.1 0 51 10 100.5 29.7 147 19 45 46.2 85.4 80.9 120.1 34.7 34.7 75.1 61.9 120.1 80.9 46.6 19.7 96 29.7 147 29.7 22.2 0 44.4-2 66.2-5.9 33.5 18.9 71.3 29 110 29 59.7 0 115.9-23.2 158.1-65.5 42.3-42.2 65.5-98.4 65.5-158.1.1-38-9.7-75.5-28.2-108.7zm-370 162.9c-134.2 0-194.2-66-194.2-115.4 0-25.4 18.7-43.1 44.5-43.1 57.4 0 42.6 82.5 149.7 82.5 54.9 0 85.2-29.8 85.2-60.3 0-18.3-9-38.7-45.2-47.6l-119.4-29.8c-96.1-24.1-113.6-76.1-113.6-124.9 0-101.4 95.5-139.5 185.2-139.5 82.6 0 180 45.7 180 106.5 0 26.1-22.6 41.2-48.4 41.2-49 0-40-67.8-138.7-67.8-49 0-76.1 22.2-76.1 53.9s38.7 41.8 72.3 49.5l88.4 19.6c96.8 21.6 121.3 78.1 121.3 131.3 0 82.3-63.3 143.9-191 143.9z'));\nexports.SlackCircleFill = getIcon('slack-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm83.7-50.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM579.3 765c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134c-13.3 0-26.1-5.3-35.6-14.8S529 593.6 529 580.2c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z'));\nexports.SlackSquareFill = getIcon('slack-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM529 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm134 403.2c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z'));\nexports.SlidersFill = getIcon('sliders', fill, getNode(newViewBox, 'M904 296h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-584-72h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm292 180h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8z'));\nexports.SmileFill = getIcon('smile', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 0 1 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 0 1 8 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'));\nexports.SnippetsFill = getIcon('snippets', fill, getNode(newViewBox, 'M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 486H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z'));\nexports.SoundFill = getIcon('sound', fill, getNode(newViewBox, 'M892.1 737.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344zm174 132H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zM625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1z'));\nexports.StarFill = getIcon('star', fill, getNode(newViewBox, 'M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0 0 46.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z'));\nexports.StepBackwardFill = getIcon('step-backward', fill, getNode(normalViewBox, 'M347.6 528.95l383.2 301.02c14.25 11.2 35.2 1.1 35.2-16.95V210.97c0-18.05-20.95-28.14-35.2-16.94L347.6 495.05a21.53 21.53 0 0 0 0 33.9M330 864h-64a8 8 0 0 1-8-8V168a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v688a8 8 0 0 1-8 8'));\nexports.StepForwardFill = getIcon('step-forward', fill, getNode(normalViewBox, 'M676.4 528.95L293.2 829.97c-14.25 11.2-35.2 1.1-35.2-16.95V210.97c0-18.05 20.95-28.14 35.2-16.94l383.2 301.02a21.53 21.53 0 0 1 0 33.9M694 864h64a8 8 0 0 0 8-8V168a8 8 0 0 0-8-8h-64a8 8 0 0 0-8 8v688a8 8 0 0 0 8 8'));\nexports.StopFill = getIcon('stop', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm234.8 736.5L223.5 277.2c16-19.7 34-37.7 53.7-53.7l523.3 523.3c-16 19.6-34 37.7-53.7 53.7z'));\nexports.SwitcherFill = getIcon('switcher', fill, getNode(newViewBox, 'M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zM596 606c0 4.4-3.6 8-8 8H308c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h280c4.4 0 8 3.6 8 8v48zm284-494H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z'));\nexports.TabletFill = getIcon('tablet', fill, getNode(newViewBox, 'M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM512 824c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z'));\nexports.TagFill = getIcon('tag', fill, getNode(newViewBox, 'M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM699 387c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z'));\nexports.TagsFill = getIcon('tags', fill, getNode(newViewBox, 'M483.2 790.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3c-2.3-.2-4.7.6-6.3 2.3L137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c3.1 3.2 8.2 3.2 11.3 0zm122.7-533.4c18.7-18.7 49.1-18.7 67.9 0 18.7 18.7 18.7 49.1 0 67.9-18.7 18.7-49.1 18.7-67.9 0-18.7-18.7-18.7-49.1 0-67.9zm283.8 282.9l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3z'));\nexports.TaobaoCircleFill = getIcon('taobao-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z'));\nexports.TaobaoSquareFill = getIcon('taobao-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z'));\nexports.ThunderboltFill = getIcon('thunderbolt', fill, getNode(newViewBox, 'M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7z'));\nexports.ToolFill = getIcon('tool', fill, getNode(newViewBox, 'M865.3 244.7c-.3-.3-61.1 59.8-182.1 180.6l-84.9-84.9 180.9-180.9c-95.2-57.3-217.5-42.6-296.8 36.7A244.42 244.42 0 0 0 419 432l1.8 6.7-283.5 283.4c-6.2 6.2-6.2 16.4 0 22.6l141.4 141.4c6.2 6.2 16.4 6.2 22.6 0l283.3-283.3 6.7 1.8c83.7 22.3 173.6-.9 236-63.3 79.4-79.3 94.1-201.6 38-296.6z'));\nexports.TrademarkCircleFill = getIcon('trademark-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm164.7 660.2c-1.1.5-2.3.8-3.5.8h-62c-3.1 0-5.9-1.8-7.2-4.6l-74.6-159.2h-88.7V717c0 4.4-3.6 8-8 8H378c-4.4 0-8-3.6-8-8V307c0-4.4 3.6-8 8-8h155.6c98.8 0 144.2 59.9 144.2 131.1 0 70.2-43.6 106.4-78.4 119.2l80.8 164.2c2.1 3.9.4 8.7-3.5 10.7zM523.9 357h-83.4v148H522c53 0 82.8-25.6 82.8-72.4 0-50.3-32.9-75.6-80.9-75.6z'));\nexports.TrophyFill = getIcon('trophy', fill, getNode(newViewBox, 'M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.6 630.2 359 721.8 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.8 758.4 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM248 439.6c-37.1-11.9-64-46.7-64-87.6V232h64v207.6zM840 352c0 41-26.9 75.8-64 87.6V232h64v120z'));\nexports.TwitterCircleFill = getIcon('twitter-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm215.3 337.7c.3 4.7.3 9.6.3 14.4 0 146.8-111.8 315.9-316.1 315.9-63 0-121.4-18.3-170.6-49.8 9 1 17.6 1.4 26.8 1.4 52 0 99.8-17.6 137.9-47.4-48.8-1-89.8-33-103.8-77 17.1 2.5 32.5 2.5 50.1-2a111 111 0 0 1-88.9-109v-1.4c14.7 8.3 32 13.4 50.1 14.1a111.13 111.13 0 0 1-49.5-92.4c0-20.7 5.4-39.6 15.1-56a315.28 315.28 0 0 0 229 116.1C492 353.1 548.4 292 616.2 292c32 0 60.8 13.4 81.1 35 25.1-4.7 49.1-14.1 70.5-26.7-8.3 25.7-25.7 47.4-48.8 61.1 22.4-2.4 44-8.6 64-17.3-15.1 22.2-34 41.9-55.7 57.6z'));\nexports.TwitterSquareFill = getIcon('twitter-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM727.3 401.7c.3 4.7.3 9.6.3 14.4 0 146.8-111.8 315.9-316.1 315.9-63 0-121.4-18.3-170.6-49.8 9 1 17.6 1.4 26.8 1.4 52 0 99.8-17.6 137.9-47.4-48.8-1-89.8-33-103.8-77 17.1 2.5 32.5 2.5 50.1-2a111 111 0 0 1-88.9-109v-1.4c14.7 8.3 32 13.4 50.1 14.1a111.13 111.13 0 0 1-49.5-92.4c0-20.7 5.4-39.6 15.1-56a315.28 315.28 0 0 0 229 116.1C492 353.1 548.4 292 616.2 292c32 0 60.8 13.4 81.1 35 25.1-4.7 49.1-14.1 70.5-26.7-8.3 25.7-25.7 47.4-48.8 61.1 22.4-2.4 44-8.6 64-17.3-15.1 22.2-34 41.9-55.7 57.6z'));\nexports.UnlockFill = getIcon('unlock', fill, getNode(newViewBox, 'M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1 1 56 0z'));\nexports.UpCircleFill = getIcon('up-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm178 555h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 460.4 406.8 605.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z'));\nexports.UpSquareFill = getIcon('up-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM690 624h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 465.4 406.8 610.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z'));\nexports.UsbFill = getIcon('usb', fill, getNode(newViewBox, 'M408 312h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm352 120V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zm-72 0H336V184h352v248zM568 312h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z'));\nexports.VideoCameraFill = getIcon('video-camera', fill, getNode(newViewBox, 'M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM328 352c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48zm560 273l-104-59.8V458.9L888 399v226z'));\nexports.WalletFill = getIcon('wallet', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 464H528V448h320v128zm-268-64a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'));\nexports.WarningFill = getIcon('warning', fill, getNode(newViewBox, 'M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'));\nexports.WechatFill = getIcon('wechat', fill, getNode(newViewBox, 'M690.1 377.4c5.9 0 11.8.2 17.6.5-24.4-128.7-158.3-227.1-319.9-227.1C209 150.8 64 271.4 64 420.2c0 81.1 43.6 154.2 111.9 203.6a21.5 21.5 0 0 1 9.1 17.6c0 2.4-.5 4.6-1.1 6.9-5.5 20.3-14.2 52.8-14.6 54.3-.7 2.6-1.7 5.2-1.7 7.9 0 5.9 4.8 10.8 10.8 10.8 2.3 0 4.2-.9 6.2-2l70.9-40.9c5.3-3.1 11-5 17.2-5 3.2 0 6.4.5 9.5 1.4 33.1 9.5 68.8 14.8 105.7 14.8 6 0 11.9-.1 17.8-.4-7.1-21-10.9-43.1-10.9-66 0-135.8 132.2-245.8 295.3-245.8zm-194.3-86.5c23.8 0 43.2 19.3 43.2 43.1s-19.3 43.1-43.2 43.1c-23.8 0-43.2-19.3-43.2-43.1s19.4-43.1 43.2-43.1zm-215.9 86.2c-23.8 0-43.2-19.3-43.2-43.1s19.3-43.1 43.2-43.1 43.2 19.3 43.2 43.1-19.4 43.1-43.2 43.1zm586.8 415.6c56.9-41.2 93.2-102 93.2-169.7 0-124-120.8-224.5-269.9-224.5-149 0-269.9 100.5-269.9 224.5S540.9 847.5 690 847.5c30.8 0 60.6-4.4 88.1-12.3 2.6-.8 5.2-1.2 7.9-1.2 5.2 0 9.9 1.6 14.3 4.1l59.1 34c1.7 1 3.3 1.7 5.2 1.7a9 9 0 0 0 6.4-2.6 9 9 0 0 0 2.6-6.4c0-2.2-.9-4.4-1.4-6.6-.3-1.2-7.6-28.3-12.2-45.3-.5-1.9-.9-3.8-.9-5.7.1-5.9 3.1-11.2 7.6-14.5zM600.2 587.2c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9c0 19.8-16.2 35.9-36 35.9zm179.9 0c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9a36.08 36.08 0 0 1-36 35.9z'));\nexports.WeiboCircleFill = getIcon('weibo-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-44.4 672C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-93-32.2c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zm34.9-14.5c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z'));\nexports.WeiboSquareFill = getIcon('weibo-square', fill, getNode(newViewBox, 'M433.6 595.1c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM467.6 736C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-58.1-46.7c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z'));\nexports.WindowsFill = getIcon('windows', fill, getNode(newViewBox, 'M523.8 191.4v288.9h382V128.1zm0 642.2l382 62.2v-352h-382zM120.1 480.2H443V201.9l-322.9 53.5zm0 290.4L443 823.2V543.8H120.1z'));\nexports.YahooFill = getIcon('yahoo', fill, getNode(newViewBox, 'M937.3 231H824.7c-15.5 0-27.7 12.6-27.1 28.1l13.1 366h84.4l65.4-366.4c2.7-15.2-7.8-27.7-23.2-27.7zm-77.4 450.4h-14.1c-27.1 0-49.2 22.2-49.2 49.3v14.1c0 27.1 22.2 49.3 49.2 49.3h14.1c27.1 0 49.2-22.2 49.2-49.3v-14.1c0-27.1-22.2-49.3-49.2-49.3zM402.6 231C216.2 231 65 357 65 512.5S216.2 794 402.6 794s337.6-126 337.6-281.5S589.1 231 402.6 231zm225.2 225.2h-65.3L458.9 559.8v65.3h84.4v56.3H318.2v-56.3h84.4v-65.3L242.9 399.9h-37v-56.3h168.5v56.3h-37l93.4 93.5 28.1-28.1V400h168.8v56.2z'));\nexports.YoutubeFill = getIcon('youtube', fill, getNode(newViewBox, 'M941.3 296.1a112.3 112.3 0 0 0-79.2-79.3C792.2 198 512 198 512 198s-280.2 0-350.1 18.7A112.12 112.12 0 0 0 82.7 296C64 366 64 512 64 512s0 146 18.7 215.9c10.3 38.6 40.7 69 79.2 79.3C231.8 826 512 826 512 826s280.2 0 350.1-18.8c38.6-10.3 68.9-40.7 79.2-79.3C960 658 960 512 960 512s0-146-18.7-215.9zM423 646V378l232 133-232 135z'));\nexports.YuqueFill = getIcon('yuque', fill, getNode(newViewBox, 'M854.6 370.6c-9.9-39.4 9.9-102.2 73.4-124.4l-67.9-3.6s-25.7-90-143.6-98c-117.9-8.1-195-3-195-3s87.4 55.6 52.4 154.7c-25.6 52.5-65.8 95.6-108.8 144.7-1.3 1.3-2.5 2.6-3.5 3.7C319.4 605 96 860 96 860c245.9 64.4 410.7-6.3 508.2-91.1 20.5-.2 35.9-.3 46.3-.3 135.8 0 250.6-117.6 245.9-248.4-3.2-89.9-31.9-110.2-41.8-149.6z'));\nexports.ZhihuCircleFill = getIcon('zhihu-circle', fill, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-90.7 477.8l-.1 1.5c-1.5 20.4-6.3 43.9-12.9 67.6l24-18.1 71 80.7c9.2 33-3.3 63.1-3.3 63.1l-95.7-111.9v-.1c-8.9 29-20.1 57.3-33.3 84.7-22.6 45.7-55.2 54.7-89.5 57.7-34.4 3-23.3-5.3-23.3-5.3 68-55.5 78-87.8 96.8-123.1 11.9-22.3 20.4-64.3 25.3-96.8H264.1s4.8-31.2 19.2-41.7h101.6c.6-15.3-1.3-102.8-2-131.4h-49.4c-9.2 45-41 56.7-48.1 60.1-7 3.4-23.6 7.1-21.1 0 2.6-7.1 27-46.2 43.2-110.7 16.3-64.6 63.9-62 63.9-62-12.8 22.5-22.4 73.6-22.4 73.6h159.7c10.1 0 10.6 39 10.6 39h-90.8c-.7 22.7-2.8 83.8-5 131.4H519s12.2 15.4 12.2 41.7H421.3zm346.5 167h-87.6l-69.5 46.6-16.4-46.6h-40.1V321.5h213.6v387.3zM408.2 611s0-.1 0 0zm216 94.3l56.8-38.1h45.6-.1V364.7H596.7v302.5h14.1z'));\nexports.ZhihuSquareFill = getIcon('zhihu-square', fill, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM432.3 592.8l71 80.7c9.2 33-3.3 63.1-3.3 63.1l-95.7-111.9v-.1c-8.9 29-20.1 57.3-33.3 84.7-22.6 45.7-55.2 54.7-89.5 57.7-34.4 3-23.3-5.3-23.3-5.3 68-55.5 78-87.8 96.8-123.1 11.9-22.3 20.4-64.3 25.3-96.8H264.1s4.8-31.2 19.2-41.7h101.6c.6-15.3-1.3-102.8-2-131.4h-49.4c-9.2 45-41 56.7-48.1 60.1-7 3.4-23.6 7.1-21.1 0 2.6-7.1 27-46.2 43.2-110.7 16.3-64.6 63.9-62 63.9-62-12.8 22.5-22.4 73.6-22.4 73.6h159.7c10.1 0 10.6 39 10.6 39h-90.8c-.7 22.7-2.8 83.8-5 131.4H519s12.2 15.4 12.2 41.7h-110l-.1 1.5c-1.5 20.4-6.3 43.9-12.9 67.6l24.1-18.1zm335.5 116h-87.6l-69.5 46.6-16.4-46.6h-40.1V321.5h213.6v387.3zM408.2 611s0-.1 0 0zm216 94.3l56.8-38.1h45.6-.1V364.7H596.7v302.5h14.1z'));\nexports.AccountBookOutline = getIcon('account-book', outline, getNode(newViewBox, 'M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584zM639.5 414h-45c-3 0-5.8 1.7-7.1 4.4L514 563.8h-2.8l-73.4-145.4a8 8 0 0 0-7.1-4.4h-46c-1.3 0-2.7.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9l89.3 164h-48.6c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1v33.7h-65.1c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1V752c0 4.4 3.6 8 8 8h41.3c4.4 0 8-3.6 8-8v-53.8h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-65.4v-33.7h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-49.1l89.3-164.1c.6-1.2 1-2.5 1-3.8.1-4.4-3.4-8-7.9-8z'));\nexports.AlertOutline = getIcon('alert', outline, getNode(newViewBox, 'M193 796c0 17.7 14.3 32 32 32h574c17.7 0 32-14.3 32-32V563c0-176.2-142.8-319-319-319S193 386.8 193 563v233zm72-233c0-136.4 110.6-247 247-247s247 110.6 247 247v193H404V585c0-5.5-4.5-10-10-10h-44c-5.5 0-10 4.5-10 10v171h-75V563zm-48.1-252.5l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9a8.03 8.03 0 0 0-11.3 0l-39.6 39.6a8.03 8.03 0 0 0 0 11.3l67.9 67.9c3.1 3.1 8.1 3.1 11.3 0zm669.6-79.2l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-67.9 67.9a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l67.9-67.9c3.1-3.2 3.1-8.2 0-11.3zM832 892H192c-17.7 0-32 14.3-32 32v24c0 4.4 3.6 8 8 8h688c4.4 0 8-3.6 8-8v-24c0-17.7-14.3-32-32-32zM484 180h56c4.4 0 8-3.6 8-8V76c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8z'));\nexports.AlipayCircleOutline = getIcon('alipay-circle', outline, getNode(newViewBox, 'M308.6 545.7c-19.8 2-57.1 10.7-77.4 28.6-61 53-24.5 150 99 150 71.8 0 143.5-45.7 199.8-119-80.2-38.9-148.1-66.8-221.4-59.6zm460.5 67c100.1 33.4 154.7 43 166.7 44.8A445.9 445.9 0 0 0 960 512c0-247.4-200.6-448-448-448S64 264.6 64 512s200.6 448 448 448c155.9 0 293.2-79.7 373.5-200.5-75.6-29.8-213.6-85-286.8-120.1-69.9 85.7-160.1 137.8-253.7 137.8-158.4 0-212.1-138.1-137.2-229 16.3-19.8 44.2-38.7 87.3-49.4 67.5-16.5 175 10.3 275.7 43.4 18.1-33.3 33.4-69.9 44.7-108.9H305.1V402h160v-56.2H271.3v-31.3h193.8v-80.1s0-13.5 13.7-13.5H557v93.6h191.7v31.3H557.1V402h156.4c-15 61.1-37.7 117.4-66.2 166.8 47.5 17.1 90.1 33.3 121.8 43.9z'));\nexports.AliwangwangOutline = getIcon('aliwangwang', outline, getNode(newViewBox, 'M868.2 377.4c-18.9-45.1-46.3-85.6-81.2-120.6a377.26 377.26 0 0 0-120.5-81.2A375.65 375.65 0 0 0 519 145.8c-41.9 0-82.9 6.7-121.9 20C306 123.3 200.8 120 170.6 120c-2.2 0-7.4 0-9.4.2-11.9.4-22.8 6.5-29.2 16.4-6.5 9.9-7.7 22.4-3.4 33.5l64.3 161.6a378.59 378.59 0 0 0-52.8 193.2c0 51.4 10 101 29.8 147.6 18.9 45 46.2 85.6 81.2 120.5 34.7 34.8 75.4 62.1 120.5 81.2C418.3 894 467.9 904 519 904c51.3 0 100.9-10.1 147.7-29.8 44.9-18.9 85.5-46.3 120.4-81.2 34.7-34.8 62.1-75.4 81.2-120.6a376.5 376.5 0 0 0 29.8-147.6c-.2-51.2-10.1-100.8-29.9-147.4zm-66.4 266.5a307.08 307.08 0 0 1-65.9 98c-28.4 28.5-61.3 50.7-97.7 65.9h-.1c-38 16-78.3 24.2-119.9 24.2a306.51 306.51 0 0 1-217.5-90.2c-28.4-28.5-50.6-61.4-65.8-97.8v-.1c-16-37.8-24.1-78.2-24.1-119.9 0-55.4 14.8-109.7 42.8-157l13.2-22.1-9.5-23.9L206 192c14.9.6 35.9 2.1 59.7 5.6 43.8 6.5 82.5 17.5 114.9 32.6l19 8.9 19.9-6.8c31.5-10.8 64.8-16.2 98.9-16.2a306.51 306.51 0 0 1 217.5 90.2c28.4 28.5 50.6 61.4 65.8 97.8l.1.1.1.1c16 37.6 24.1 78 24.2 119.8-.1 41.7-8.3 82-24.3 119.8zM681.1 364.2c-20.4 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.6 37.1 37.1 37.1s37.1-16.7 37.1-37.1v-55.1c0-20.5-16.7-37.1-37.1-37.1zm-175.2 0c-20.5 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.7 37.1 37.1 37.1 20.5 0 37.1-16.7 37.1-37.1v-55.1c0-20.5-16.7-37.1-37.1-37.1z'));\nexports.AndroidOutline = getIcon('android', outline, getNode(newViewBox, 'M448.3 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32-13.4 32-31.9.1-18.4-13.4-31.9-32-31.9zm393.9 96.4c-13.8-13.8-32.7-21.5-53.2-21.5-3.9 0-7.4.4-10.7 1v-1h-3.6c-5.5-30.6-18.6-60.5-38.1-87.4-18.7-25.7-43-47.9-70.8-64.9l25.1-35.8v-3.3c0-.8.4-2.3.7-3.8.6-2.4 1.4-5.5 1.4-8.9 0-18.5-13.5-31.9-32-31.9-9.8 0-19.5 5.7-25.9 15.4l-29.3 42.1c-30-9.8-62.4-15-93.8-15-31.3 0-63.7 5.2-93.8 15L389 79.4c-6.6-9.6-16.1-15.4-26-15.4-18.6 0-32 13.4-32 31.9 0 6.2 2.5 12.8 6.7 17.4l22.6 32.3c-28.7 17-53.5 39.4-72.2 65.1-19.4 26.9-32 56.8-36.7 87.4h-5.5v1c-3.2-.6-6.7-1-10.7-1-20.3 0-39.2 7.5-53.1 21.3-13.8 13.8-21.5 32.6-21.5 53v235c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 3.9 0 7.4-.4 10.7-1v93.5c0 29.2 23.9 53.1 53.2 53.1H331v58.3c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-58.2H544v58.1c0 20.3 7.5 39.1 21.4 52.9 13.8 13.8 32.8 21.5 53.2 21.5 20.4 0 39.2-7.5 53.1-21.6 13.8-13.8 21.5-32.6 21.5-53v-58.2h31.9c29.3 0 53.2-23.8 53.2-53.1v-91.4c3.2.6 6.7 1 10.7 1 20.3 0 39.2-7.5 53.1-21.3 13.8-13.8 21.5-32.6 21.5-53v-235c-.1-20.3-7.6-39-21.4-52.9zM246 609.6c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zm131.1-396.8c37.5-27.3 85.3-42.3 135-42.3s97.5 15.1 135 42.5c32.4 23.7 54.2 54.2 62.7 87.5H314.4c8.5-33.4 30.5-64 62.7-87.7zm39.3 674.7c-.6 5.6-4.4 8.7-10.5 8.7-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1zm202.3 8.7c-6.8 0-10.7-3.8-10.7-10.6v-58.2h21.2v60.1c-.6 5.6-4.3 8.7-10.5 8.7zm95.8-132.6H309.9V364h404.6v399.6zm85.2-154c0 6.8-3.9 10.6-10.7 10.6-6.8 0-10.7-3.8-10.7-10.6V374.5c0-6.8 3.9-10.6 10.7-10.6 6.8 0 10.7 3.8 10.7 10.6v235.1zM576.1 225.2c-18.6 0-32 13.4-32 31.9s13.5 31.9 32 31.9c18.6 0 32.1-13.4 32.1-32-.1-18.6-13.4-31.8-32.1-31.8z'));\nexports.ApiOutline = getIcon('api', outline, getNode(newViewBox, 'M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7 35.3 0 68.4 13.7 93.4 38.7 24.9 24.9 38.7 58.1 38.7 93.4 0 35.3-13.8 68.4-38.7 93.4zm-190.2 105a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 69-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 0 1-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7a131.32 131.32 0 0 1-38.7-93.4c0-35.3 13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4z'));\nexports.AppleOutline = getIcon('apple', outline, getNode(newViewBox, 'M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-10.6 267c-14.3 19.9-28.7 35.6-41.9 45.7-10.5 8-18.6 11.4-24 11.6-9-.1-17.7-2.3-34.7-8.8-1.2-.5-2.5-1-4.2-1.6l-4.4-1.7c-17.4-6.7-27.8-10.3-41.1-13.8-18.6-4.8-37.1-7.4-56.9-7.4-20.2 0-39.2 2.5-58.1 7.2-13.9 3.5-25.6 7.4-42.7 13.8-.7.3-8.1 3.1-10.2 3.9-3.5 1.3-6.2 2.3-8.7 3.2-10.4 3.6-17 5.1-22.9 5.2-.7 0-1.3-.1-1.8-.2-1.1-.2-2.5-.6-4.1-1.3-4.5-1.8-9.9-5.1-16-9.8-14-10.9-29.4-28-45.1-49.9-27.5-38.6-53.5-89.8-66-125.7-15.4-44.8-23-87.7-23-128.6 0-60.2 17.8-106 48.4-137.1 26.3-26.6 61.7-41.5 97.8-42.3 5.9.1 14.5 1.5 25.4 4.5 8.6 2.3 18 5.4 30.7 9.9 3.8 1.4 16.9 6.1 18.5 6.7 7.7 2.8 13.5 4.8 19.2 6.6 18.2 5.8 32.3 9 47.6 9 15.5 0 28.8-3.3 47.7-9.8 7.1-2.4 32.9-12 37.5-13.6 25.6-9.1 44.5-14 60.8-15.2 4.8-.4 9.1-.4 13.2-.1 22.7 1.8 42.1 6.3 58.6 13.8-37.6 43.4-57 96.5-56.9 158.4-.3 14.7.9 31.7 5.1 51.8 6.4 30.5 18.6 60.7 37.9 89 14.7 21.5 32.9 40.9 54.7 57.8-11.5 23.7-25.6 48.2-40.4 68.8zm-94.5-572c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z'));\nexports.AppstoreOutline = getIcon('appstore', outline, getNode(newViewBox, 'M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z'));\nexports.AudioOutline = getIcon('audio', outline, getNode(newViewBox, 'M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1zM512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-94-392c0-50.6 41.9-92 94-92s94 41.4 94 92v224c0 50.6-41.9 92-94 92s-94-41.4-94-92V232z'));\nexports.BackwardOutline = getIcon('backward', outline, getNode(normalViewBox, 'M485.6 249.9L198.2 498c-8.3 7.1-8.3 20.8 0 27.9l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9zm320 0L518.2 498a18.6 18.6 0 0 0-6.2 14c0 5.2 2.1 10.4 6.2 14l287.4 248.2c10.7 9.2 26.4.9 26.4-14V263.8c0-14.8-15.7-23.2-26.4-13.9z'));\nexports.BankOutline = getIcon('bank', outline, getNode(newViewBox, 'M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM512 196.7l271.1 197.2H240.9L512 196.7zM264 462h117v374H264V462zm189 0h117v374H453V462zm307 374H642V462h118v374z'));\nexports.BehanceSquareOutline = getIcon('behance-square', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM598.5 350.9h138.4v33.7H598.5v-33.7zM512 628.8a89.52 89.52 0 0 1-27 31c-11.8 8.2-24.9 14.2-38.8 17.7a167.4 167.4 0 0 1-44.6 5.7H236V342.1h161c16.3 0 31.1 1.5 44.6 4.3 13.4 2.8 24.8 7.6 34.4 14.1 9.5 6.5 17 15.2 22.3 26 5.2 10.7 7.9 24.1 7.9 40 0 17.2-3.9 31.4-11.7 42.9-7.9 11.5-19.3 20.8-34.8 28.1 21.1 6 36.6 16.7 46.8 31.7 10.4 15.2 15.5 33.4 15.5 54.8 0 17.4-3.3 32.3-10 44.8zM790.8 576H612.4c0 19.4 6.7 38 16.8 48 10.2 9.9 24.8 14.9 43.9 14.9 13.8 0 25.5-3.5 35.5-10.4 9.9-6.9 15.9-14.2 18.1-21.8h59.8c-9.6 29.7-24.2 50.9-44 63.7-19.6 12.8-43.6 19.2-71.5 19.2-19.5 0-37-3.2-52.7-9.3-15.1-5.9-28.7-14.9-39.9-26.5a121.2 121.2 0 0 1-25.1-41.2c-6.1-16.9-9.1-34.7-8.9-52.6 0-18.5 3.1-35.7 9.1-51.7 11.5-31.1 35.4-56 65.9-68.9 16.3-6.8 33.8-10.2 51.5-10 21 0 39.2 4 55 12.2a111.6 111.6 0 0 1 38.6 32.8c10.1 13.7 17.2 29.3 21.7 46.9 4.3 17.3 5.8 35.5 4.6 54.7zm-122-95.6c-10.8 0-19.9 1.9-26.9 5.6-7 3.7-12.8 8.3-17.2 13.6a48.4 48.4 0 0 0-9.1 17.4c-1.6 5.3-2.7 10.7-3.1 16.2H723c-1.6-17.3-7.6-30.1-15.6-39.1-8.4-8.9-21.9-13.7-38.6-13.7zm-248.5-10.1c8.7-6.3 12.9-16.7 12.9-31 .3-6.8-1.1-13.5-4.1-19.6-2.7-4.9-6.7-9-11.6-11.9a44.8 44.8 0 0 0-16.6-6c-6.4-1.2-12.9-1.8-19.3-1.7h-70.3v79.7h76.1c13.1.1 24.2-3.1 32.9-9.5zm11.8 72c-9.8-7.5-22.9-11.2-39.2-11.2h-81.8v94h80.2c7.5 0 14.4-.7 21.1-2.1s12.7-3.8 17.8-7.2c5.1-3.3 9.2-7.8 12.3-13.6 3-5.8 4.5-13.2 4.5-22.1 0-17.7-5-30.2-14.9-37.8z'));\nexports.BookOutline = getIcon('book', outline, getNode(newViewBox, 'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zm220 752H232V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0 0 22.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752z'));\nexports.BuildOutline = getIcon('build', outline, getNode(newViewBox, 'M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zm-504 68h200v200H412V278zm-68 468H144V546h200v200zm268 0H412V546h200v200zm268-268H680V278h200v200z'));\nexports.BellOutline = getIcon('bell', outline, getNode(newViewBox, 'M816 768h-24V428c0-141.1-104.3-257.7-240-277.1V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.9c-135.7 19.4-240 136-240 277.1v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48zM304 768V428c0-55.6 21.6-107.8 60.9-147.1S456.4 220 512 220c55.6 0 107.8 21.6 147.1 60.9S720 372.4 720 428v340H304z'));\nexports.BoxPlotOutline = getIcon('box-plot', outline, getNode(newViewBox, 'M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h560c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zM296 368h88v288h-88V368zm432 288H448V368h280v288z'));\nexports.BulbOutline = getIcon('bulb', outline, getNode(newViewBox, 'M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z'));\nexports.CalculatorOutline = getIcon('calculator', outline, getNode(newViewBox, 'M251.2 387H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.3V387h68.8c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H376v-68.8c0-1.8-1.8-3.2-4-3.2h-48c-2.2 0-4 1.4-4 3.2V331h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm328 0h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0 265h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0 104h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm-195.7-81l61.2-74.9c4.3-5.2.7-13.1-5.9-13.1H388c-2.3 0-4.5 1-5.9 2.9l-34 41.6-34-41.6a7.85 7.85 0 0 0-5.9-2.9h-50.9c-6.6 0-10.2 7.9-5.9 13.1l61.2 74.9-62.7 76.8c-4.4 5.2-.8 13.1 5.8 13.1h50.8c2.3 0 4.5-1 5.9-2.9l35.5-43.5 35.5 43.5c1.5 1.8 3.7 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 5.9-13.1L383.5 675zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-36 732H180V180h664v664z'));\nexports.CalendarOutline = getIcon('calendar', outline, getNode(newViewBox, 'M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z'));\nexports.CarOutline = getIcon('car', outline, getNode(newViewBox, 'M380 704h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8zm340-123a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm239-167.6L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM840 517v237H184V517l15.6-43h624.8l15.6 43zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM224 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'));\nexports.CameraOutline = getIcon('camera', outline, getNode(newViewBox, 'M864 248H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456zM512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z'));\nexports.CaretDownOutline = getIcon('caret-down', outline, getNode(normalViewBox, 'M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z'));\nexports.CaretLeftOutline = getIcon('caret-left', outline, getNode(normalViewBox, 'M689 165.1L308.2 493.5c-10.9 9.4-10.9 27.5 0 37L689 858.9c14.2 12.2 35 1.2 35-18.5V183.6c0-19.7-20.8-30.7-35-18.5z'));\nexports.CaretRightOutline = getIcon('caret-right', outline, getNode(normalViewBox, 'M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z'));\nexports.CaretUpOutline = getIcon('caret-up', outline, getNode(normalViewBox, 'M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z'));\nexports.CarryOutOutline = getIcon('carry-out', outline, getNode(newViewBox, 'M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584zM688 420h-55.2c-5.1 0-10 2.5-13 6.6L468.9 634.4l-64.7-89c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.4 0-12.8-6.5-12.8z'));\nexports.CheckCircleOutline = getIcon('check-circle', outline, getNode(newViewBox, 'M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0 0 51.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z', 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'));\nexports.CheckSquareOutline = getIcon('check-square', outline, getNode(newViewBox, 'M433.1 657.7a31.8 31.8 0 0 0 51.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7H642c-10.2 0-19.9 4.9-25.9 13.3L459 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H315c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8z', 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.ChromeOutline = getIcon('chrome', outline, getNode(newViewBox, 'M928 512.3v-.3c0-229.8-186.2-416-416-416S96 282.2 96 512v.4c0 229.8 186.2 416 416 416s416-186.2 416-416v-.3.2zm-6.7-74.6l.6 3.3-.6-3.3zM676.7 638.2c53.5-82.2 52.5-189.4-11.1-263.7l162.4-8.4c20.5 44.4 32 93.8 32 145.9 0 185.2-144.6 336.6-327.1 347.4l143.8-221.2zM512 652.3c-77.5 0-140.2-62.7-140.2-140.2 0-77.7 62.7-140.2 140.2-140.2S652.2 434.5 652.2 512 589.5 652.3 512 652.3zm369.2-331.7l-3-5.7 3 5.7zM512 164c121.3 0 228.2 62.1 290.4 156.2l-263.6-13.9c-97.5-5.7-190.2 49.2-222.3 141.1L227.8 311c63.1-88.9 166.9-147 284.2-147zM102.5 585.8c26 145 127.1 264 261.6 315.1C229.6 850 128.5 731 102.5 585.8zM164 512c0-55.9 13.2-108.7 36.6-155.5l119.7 235.4c44.1 86.7 137.4 139.7 234 121.6l-74 145.1C302.9 842.5 164 693.5 164 512zm324.7 415.4c4 .2 8 .4 12 .5-4-.2-8-.3-12-.5z'));\nexports.ClockCircleOutline = getIcon('clock-circle', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z', 'M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z'));\nexports.CloseCircleOutline = getIcon('close-circle', outline, getNode(newViewBox, 'M685.4 354.8c0-4.4-3.6-8-8-8l-66 .3L512 465.6l-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155L340.5 670a8.32 8.32 0 0 0-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3L512 564.4l99.3 118.4 66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.5 515l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z', 'M512 65C264.6 65 64 265.6 64 513s200.6 448 448 448 448-200.6 448-448S759.4 65 512 65zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'));\nexports.CloseSquareOutline = getIcon('close-square', outline, getNode(newViewBox, 'M354 671h58.9c4.7 0 9.2-2.1 12.3-5.7L512 561.8l86.8 103.5c3 3.6 7.5 5.7 12.3 5.7H670c6.8 0 10.5-7.9 6.1-13.1L553.8 512l122.4-145.9c4.4-5.2.7-13.1-6.1-13.1h-58.9c-4.7 0-9.2 2.1-12.3 5.7L512 462.2l-86.8-103.5c-3-3.6-7.5-5.7-12.3-5.7H354c-6.8 0-10.5 7.9-6.1 13.1L470.2 512 347.9 657.9A7.95 7.95 0 0 0 354 671z', 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.CloudOutline = getIcon('cloud', outline, getNode(newViewBox, 'M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 0 1-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 0 1 140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0 1 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z'));\nexports.CodeOutline = getIcon('code', outline, getNode(newViewBox, 'M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 0 0 308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 0 0-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.CodepenCircleOutline = getIcon('codepen-circle', outline, getNode(newViewBox, 'M488.1 414.7V303.4L300.9 428l83.6 55.8zm254.1 137.7v-79.8l-59.8 39.9zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm278 533c0 1.1-.1 2.1-.2 3.1 0 .4-.1.7-.2 1a14.16 14.16 0 0 1-.8 3.2c-.2.6-.4 1.2-.6 1.7-.2.4-.4.8-.5 1.2-.3.5-.5 1.1-.8 1.6-.2.4-.4.7-.7 1.1-.3.5-.7 1-1 1.5-.3.4-.5.7-.8 1-.4.4-.8.9-1.2 1.3-.3.3-.6.6-1 .9-.4.4-.9.8-1.4 1.1-.4.3-.7.6-1.1.8-.1.1-.3.2-.4.3L525.2 786c-4 2.7-8.6 4-13.2 4-4.7 0-9.3-1.4-13.3-4L244.6 616.9c-.1-.1-.3-.2-.4-.3l-1.1-.8c-.5-.4-.9-.7-1.3-1.1-.3-.3-.6-.6-1-.9-.4-.4-.8-.8-1.2-1.3a7 7 0 0 1-.8-1c-.4-.5-.7-1-1-1.5-.2-.4-.5-.7-.7-1.1-.3-.5-.6-1.1-.8-1.6-.2-.4-.4-.8-.5-1.2-.2-.6-.4-1.2-.6-1.7-.1-.4-.3-.8-.4-1.2-.2-.7-.3-1.3-.4-2-.1-.3-.1-.7-.2-1-.1-1-.2-2.1-.2-3.1V427.9c0-1 .1-2.1.2-3.1.1-.3.1-.7.2-1a14.16 14.16 0 0 1 .8-3.2c.2-.6.4-1.2.6-1.7.2-.4.4-.8.5-1.2.2-.5.5-1.1.8-1.6.2-.4.4-.7.7-1.1.6-.9 1.2-1.7 1.8-2.5.4-.4.8-.9 1.2-1.3.3-.3.6-.6 1-.9.4-.4.9-.8 1.3-1.1.4-.3.7-.6 1.1-.8.1-.1.3-.2.4-.3L498.7 239c8-5.3 18.5-5.3 26.5 0l254.1 169.1c.1.1.3.2.4.3l1.1.8 1.4 1.1c.3.3.6.6 1 .9.4.4.8.8 1.2 1.3.7.8 1.3 1.6 1.8 2.5.2.4.5.7.7 1.1.3.5.6 1 .8 1.6.2.4.4.8.5 1.2.2.6.4 1.2.6 1.7.1.4.3.8.4 1.2.2.7.3 1.3.4 2 .1.3.1.7.2 1 .1 1 .2 2.1.2 3.1V597zm-254.1 13.3v111.3L723.1 597l-83.6-55.8zM281.8 472.6v79.8l59.8-39.9zM512 456.1l-84.5 56.4 84.5 56.4 84.5-56.4zM723.1 428L535.9 303.4v111.3l103.6 69.1zM384.5 541.2L300.9 597l187.2 124.6V610.3l-103.6-69.1z'));\nexports.ContactsOutline = getIcon('contacts', outline, getNode(newViewBox, 'M594.3 601.5a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1 8 8 0 0 0 8 8.4H407c4.2 0 7.6-3.3 7.9-7.5 3.8-50.6 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H661a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.7-126.1zM512 578c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52zm416-354H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z'));\nexports.CompassOutline = getIcon('compass', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm198.4-588.1a32 32 0 0 0-24.5.5L414.9 415 296.4 686c-3.6 8.2-3.6 17.5 0 25.7 3.4 7.8 9.7 13.9 17.7 17 3.8 1.5 7.7 2.2 11.7 2.2 4.4 0 8.7-.9 12.8-2.7l271-118.6 118.5-271a32.06 32.06 0 0 0-17.7-42.7zM576.8 534.4l26.2 26.2-42.4 42.4-26.2-26.2L380 644.4 447.5 490 422 464.4l42.4-42.4 25.5 25.5L644.4 380l-67.6 154.4zM464.4 422L422 464.4l25.5 25.6 86.9 86.8 26.2 26.2 42.4-42.4-26.2-26.2-86.8-86.9z'));\nexports.ContainerOutline = getIcon('container', outline, getNode(newViewBox, 'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v-63H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v752zM320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 160h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z'));\nexports.ControlOutline = getIcon('control', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5zm64-198V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5zm-64 198c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5c41.8-13.5 72-52.7 72-99s-30.2-85.5-72-99c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5c-41.8 13.5-72 52.7-72 99s30.2 85.5 72 99zm.1-115.7c.3-.6.7-1.2 1-1.8v-.1l1.2-1.8c.1-.2.2-.3.3-.5.3-.5.7-.9 1-1.4.1-.1.2-.3.3-.4.5-.6.9-1.1 1.4-1.6l.3-.3 1.2-1.2.4-.4c.5-.5 1-.9 1.6-1.4.6-.5 1.1-.9 1.7-1.3.2-.1.3-.2.5-.3.5-.3.9-.7 1.4-1 .1-.1.3-.2.4-.3.6-.4 1.2-.7 1.9-1.1.1-.1.3-.1.4-.2.5-.3 1-.5 1.6-.8l.6-.3c.7-.3 1.3-.6 2-.8.7-.3 1.4-.5 2.1-.7.2-.1.4-.1.6-.2.6-.2 1.1-.3 1.7-.4.2 0 .3-.1.5-.1.7-.2 1.5-.3 2.2-.4.2 0 .3 0 .5-.1.6-.1 1.2-.1 1.8-.2h.6c.8 0 1.5-.1 2.3-.1s1.5 0 2.3.1h.6c.6 0 1.2.1 1.8.2.2 0 .3 0 .5.1.7.1 1.5.2 2.2.4.2 0 .3.1.5.1.6.1 1.2.3 1.7.4.2.1.4.1.6.2.7.2 1.4.4 2.1.7.7.2 1.3.5 2 .8l.6.3c.5.2 1.1.5 1.6.8.1.1.3.1.4.2.6.3 1.3.7 1.9 1.1.1.1.3.2.4.3.5.3 1 .6 1.4 1 .2.1.3.2.5.3.6.4 1.2.9 1.7 1.3s1.1.9 1.6 1.4l.4.4 1.2 1.2.3.3c.5.5 1 1.1 1.4 1.6.1.1.2.3.3.4.4.4.7.9 1 1.4.1.2.2.3.3.5l1.2 1.8s0 .1.1.1a36.18 36.18 0 0 1 5.1 18.5c0 6-1.5 11.7-4.1 16.7-.3.6-.7 1.2-1 1.8 0 0 0 .1-.1.1l-1.2 1.8c-.1.2-.2.3-.3.5-.3.5-.7.9-1 1.4-.1.1-.2.3-.3.4-.5.6-.9 1.1-1.4 1.6l-.3.3-1.2 1.2-.4.4c-.5.5-1 .9-1.6 1.4-.6.5-1.1.9-1.7 1.3-.2.1-.3.2-.5.3-.5.3-.9.7-1.4 1-.1.1-.3.2-.4.3-.6.4-1.2.7-1.9 1.1-.1.1-.3.1-.4.2-.5.3-1 .5-1.6.8l-.6.3c-.7.3-1.3.6-2 .8-.7.3-1.4.5-2.1.7-.2.1-.4.1-.6.2-.6.2-1.1.3-1.7.4-.2 0-.3.1-.5.1-.7.2-1.5.3-2.2.4-.2 0-.3 0-.5.1-.6.1-1.2.1-1.8.2h-.6c-.8 0-1.5.1-2.3.1s-1.5 0-2.3-.1h-.6c-.6 0-1.2-.1-1.8-.2-.2 0-.3 0-.5-.1-.7-.1-1.5-.2-2.2-.4-.2 0-.3-.1-.5-.1-.6-.1-1.2-.3-1.7-.4-.2-.1-.4-.1-.6-.2-.7-.2-1.4-.4-2.1-.7-.7-.2-1.3-.5-2-.8l-.6-.3c-.5-.2-1.1-.5-1.6-.8-.1-.1-.3-.1-.4-.2-.6-.3-1.3-.7-1.9-1.1-.1-.1-.3-.2-.4-.3-.5-.3-1-.6-1.4-1-.2-.1-.3-.2-.5-.3-.6-.4-1.2-.9-1.7-1.3s-1.1-.9-1.6-1.4l-.4-.4-1.2-1.2-.3-.3c-.5-.5-1-1.1-1.4-1.6-.1-.1-.2-.3-.3-.4-.4-.4-.7-.9-1-1.4-.1-.2-.2-.3-.3-.5l-1.2-1.8v-.1c-.4-.6-.7-1.2-1-1.8-2.6-5-4.1-10.7-4.1-16.7s1.5-11.7 4.1-16.7zM620 539v221c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V539c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5zm64-198v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5zm-64 198c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5c41.8-13.5 72-52.7 72-99s-30.2-85.5-72-99c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5c-41.8 13.5-72 52.7-72 99s30.2 85.5 72 99zm.1-115.7c.3-.6.7-1.2 1-1.8v-.1l1.2-1.8c.1-.2.2-.3.3-.5.3-.5.7-.9 1-1.4.1-.1.2-.3.3-.4.5-.6.9-1.1 1.4-1.6l.3-.3 1.2-1.2.4-.4c.5-.5 1-.9 1.6-1.4.6-.5 1.1-.9 1.7-1.3.2-.1.3-.2.5-.3.5-.3.9-.7 1.4-1 .1-.1.3-.2.4-.3.6-.4 1.2-.7 1.9-1.1.1-.1.3-.1.4-.2.5-.3 1-.5 1.6-.8l.6-.3c.7-.3 1.3-.6 2-.8.7-.3 1.4-.5 2.1-.7.2-.1.4-.1.6-.2.6-.2 1.1-.3 1.7-.4.2 0 .3-.1.5-.1.7-.2 1.5-.3 2.2-.4.2 0 .3 0 .5-.1.6-.1 1.2-.1 1.8-.2h.6c.8 0 1.5-.1 2.3-.1s1.5 0 2.3.1h.6c.6 0 1.2.1 1.8.2.2 0 .3 0 .5.1.7.1 1.5.2 2.2.4.2 0 .3.1.5.1.6.1 1.2.3 1.7.4.2.1.4.1.6.2.7.2 1.4.4 2.1.7.7.2 1.3.5 2 .8l.6.3c.5.2 1.1.5 1.6.8.1.1.3.1.4.2.6.3 1.3.7 1.9 1.1.1.1.3.2.4.3.5.3 1 .6 1.4 1 .2.1.3.2.5.3.6.4 1.2.9 1.7 1.3s1.1.9 1.6 1.4l.4.4 1.2 1.2.3.3c.5.5 1 1.1 1.4 1.6.1.1.2.3.3.4.4.4.7.9 1 1.4.1.2.2.3.3.5l1.2 1.8v.1a36.18 36.18 0 0 1 5.1 18.5c0 6-1.5 11.7-4.1 16.7-.3.6-.7 1.2-1 1.8v.1l-1.2 1.8c-.1.2-.2.3-.3.5-.3.5-.7.9-1 1.4-.1.1-.2.3-.3.4-.5.6-.9 1.1-1.4 1.6l-.3.3-1.2 1.2-.4.4c-.5.5-1 .9-1.6 1.4-.6.5-1.1.9-1.7 1.3-.2.1-.3.2-.5.3-.5.3-.9.7-1.4 1-.1.1-.3.2-.4.3-.6.4-1.2.7-1.9 1.1-.1.1-.3.1-.4.2-.5.3-1 .5-1.6.8l-.6.3c-.7.3-1.3.6-2 .8-.7.3-1.4.5-2.1.7-.2.1-.4.1-.6.2-.6.2-1.1.3-1.7.4-.2 0-.3.1-.5.1-.7.2-1.5.3-2.2.4-.2 0-.3 0-.5.1-.6.1-1.2.1-1.8.2h-.6c-.8 0-1.5.1-2.3.1s-1.5 0-2.3-.1h-.6c-.6 0-1.2-.1-1.8-.2-.2 0-.3 0-.5-.1-.7-.1-1.5-.2-2.2-.4-.2 0-.3-.1-.5-.1-.6-.1-1.2-.3-1.7-.4-.2-.1-.4-.1-.6-.2-.7-.2-1.4-.4-2.1-.7-.7-.2-1.3-.5-2-.8l-.6-.3c-.5-.2-1.1-.5-1.6-.8-.1-.1-.3-.1-.4-.2-.6-.3-1.3-.7-1.9-1.1-.1-.1-.3-.2-.4-.3-.5-.3-1-.6-1.4-1-.2-.1-.3-.2-.5-.3-.6-.4-1.2-.9-1.7-1.3s-1.1-.9-1.6-1.4l-.4-.4-1.2-1.2-.3-.3c-.5-.5-1-1.1-1.4-1.6-.1-.1-.2-.3-.3-.4-.4-.4-.7-.9-1-1.4-.1-.2-.2-.3-.3-.5l-1.2-1.8v-.1c-.4-.6-.7-1.2-1-1.8-2.6-5-4.1-10.7-4.1-16.7s1.5-11.7 4.1-16.7z'));\nexports.CopyOutline = getIcon('copy', outline, getNode(newViewBox, 'M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z'));\nexports.CreditCardOutline = getIcon('credit-card', outline, getNode(newViewBox, 'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-792 72h752v120H136V232zm752 560H136V440h752v352zm-237-64h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z'));\nexports.CrownOutline = getIcon('crown', outline, getNode(newViewBox, 'M899.6 276.5L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.7-3.5-13.1 1.2-12.2 7.9L188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.8-6.7-6.5-11.4-12.3-7.9zm-126 534.1H250.3l-53.8-409.4 139.8 86.1L512 252.9l175.7 234.4 139.8-86.1-53.9 409.4zM512 509c-62.1 0-112.6 50.5-112.6 112.6S449.9 734.2 512 734.2s112.6-50.5 112.6-112.6S574.1 509 512 509zm0 160.9c-26.6 0-48.2-21.6-48.2-48.3 0-26.6 21.6-48.3 48.2-48.3s48.2 21.6 48.2 48.3c0 26.6-21.6 48.3-48.2 48.3z'));\nexports.CustomerServiceOutline = getIcon('customer-service', outline, getNode(newViewBox, 'M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z'));\nexports.DashboardOutline = getIcon('dashboard', outline, getNode(newViewBox, 'M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 0 1 140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276zM623.5 421.5a8.03 8.03 0 0 0-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 0 0 0 79.2 55.95 55.95 0 0 0 79.2 0 55.87 55.87 0 0 0 14.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8zm260 218v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zm12.7-197.2l-31.1-31.1a8.03 8.03 0 0 0-11.3 0l-56.6 56.6a8.03 8.03 0 0 0 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zm-458.6-31.1a8.03 8.03 0 0 0-11.3 0l-31.1 31.1a8.03 8.03 0 0 0 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z'));\nexports.DatabaseOutline = getIcon('database', outline, getNode(newViewBox, 'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-600 72h560v208H232V136zm560 480H232V408h560v208zm0 272H232V680h560v208zM304 240a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'));\nexports.DeleteOutline = getIcon('delete', outline, getNode(newViewBox, 'M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z'));\nexports.DiffOutline = getIcon('diff', outline, getNode(newViewBox, 'M476 399.1c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V484h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V540h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H476v-84.9zM560.5 704h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42c0-3.8-3.4-7-7.5-7zm-7.1-502.6c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM664 888H232V264h282.2L664 413.8V888zm190.2-581.4L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23z'));\nexports.DislikeOutline = getIcon('dislike', outline, getNode(newViewBox, 'M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h129.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM184 456V172h81v284h-81zm627.2 160.4H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 0 1-42.2-32.3L329 459.2V172h415.4a56.85 56.85 0 0 1 33.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0 1 19.6 43c0 19.1-11 37.5-28.8 48.4z'));\nexports.DownCircleOutline = getIcon('down-circle', outline, getNode(newViewBox, 'M690 405h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 563.6 406.8 418.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7z', 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'));\nexports.DownSquareOutline = getIcon('down-square', outline, getNode(newViewBox, 'M505.5 658.7c3.2 4.4 9.7 4.4 12.9 0l178-246c3.8-5.3 0-12.7-6.5-12.7H643c-10.2 0-19.9 4.9-25.9 13.2L512 558.6 406.8 413.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246z', 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.DribbbleSquareOutline = getIcon('dribbble-square', outline, getNode(newViewBox, 'M498.6 432c-40.8-72.5-84.7-133.4-91.2-142.3-68.8 32.5-120.3 95.9-136.2 172.2 11 .2 112.4.7 227.4-29.9zm66.5 21.8c5.7 11.7 11.2 23.6 16.3 35.6 1.8 4.2 3.6 8.4 5.3 12.7 81.8-10.3 163.2 6.2 171.3 7.9-.5-58.1-21.3-111.4-55.5-153.3-5.3 7.1-46.5 60-137.4 97.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM512 800c-158.8 0-288-129.2-288-288s129.2-288 288-288 288 129.2 288 288-129.2 288-288 288zm89.7-259.1c32.2 88.4 45.3 160.4 47.8 175.4 55.2-37.3 94.5-96.4 105.4-164.9-8.4-2.6-76.1-22.8-153.2-10.5zm-72.5-26.4c3.2-1 6.4-2 9.7-2.9-6.2-14-12.9-28-19.9-41.7-122.8 36.8-242.1 35.2-252.8 35-.1 2.5-.1 5-.1 7.5 0 63.2 23.9 120.9 63.2 164.5 5.5-9.6 73-121.4 199.9-162.4zm145.9-186.2a245.2 245.2 0 0 0-220.8-55.1c6.8 9.1 51.5 69.9 91.8 144 87.5-32.8 124.5-82.6 129-88.9zM554 552.8c-138.7 48.3-188.6 144.6-193 153.6 41.7 32.5 94.1 51.9 151 51.9 34.1 0 66.6-6.9 96.1-19.5-3.7-21.6-17.9-96.8-52.5-186.6l-1.6.6z'));\nexports.EditOutline = getIcon('edit', outline, getNode(newViewBox, 'M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z'));\nexports.EnvironmentOutline = getIcon('environment', outline, getNode(newViewBox, 'M854.6 289.1a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1zm0-617.2c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8C612.4 381 624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z'));\nexports.ExclamationCircleOutline = getIcon('exclamation-circle', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z', 'M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z'));\nexports.ExperimentOutline = getIcon('experiment', outline, getNode(newViewBox, 'M512 472a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm367 352.9L696.3 352V178H768v-68H256v68h71.7v174L145 824.9c-2.8 7.4-4.3 15.2-4.3 23.1 0 35.3 28.7 64 64 64h614.6c7.9 0 15.7-1.5 23.1-4.3 33-12.7 49.4-49.8 36.6-82.8zM395.7 364.7V180h232.6v184.7L719.2 600c-20.7-5.3-42.1-8-63.9-8-61.2 0-119.2 21.5-165.3 60a188.78 188.78 0 0 1-121.3 43.9c-32.7 0-64.1-8.3-91.8-23.7l118.8-307.5zM210.5 844l41.7-107.8c35.7 18.1 75.4 27.8 116.6 27.8 61.2 0 119.2-21.5 165.3-60 33.9-28.2 76.3-43.9 121.3-43.9 35 0 68.4 9.5 97.6 27.1L813.5 844h-603z'));\nexports.EyeInvisibleOutline = getIcon('eye-invisible', outline, getNode(newViewBox, 'M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5zm-63.57-320.64L836 122.88a8 8 0 0 0-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 0 0 0 11.31L155.17 889a8 8 0 0 0 11.31 0l712.15-712.12a8 8 0 0 0 0-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 0 0-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 0 1 146.2-106.69L401.31 546.2A112 112 0 0 1 396 512z', 'M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 0 0 227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 0 1-112 112z'));\nexports.EyeOutline = getIcon('eye', outline, getNode(newViewBox, 'M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z'));\nexports.FacebookOutline = getIcon('facebook', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-32 736H663.9V602.2h104l15.6-120.7H663.9v-77.1c0-35 9.7-58.8 59.8-58.8h63.9v-108c-11.1-1.5-49-4.8-93.2-4.8-92.2 0-155.3 56.3-155.3 159.6v89H434.9v120.7h104.3V848H176V176h672v672z'));\nexports.FastBackwardOutline = getIcon('fast-backward', outline, getNode(normalViewBox, 'M517.6 273.5L230.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm320 0L550.2 499.3a16.14 16.14 0 0 0 0 25.4l287.4 225.8c10.7 8.4 26.4.8 26.4-12.7V286.2c0-13.5-15.7-21.1-26.4-12.7zm-620-25.5h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z'));\nexports.FastForwardOutline = getIcon('fast-forward', outline, getNode(normalViewBox, 'M793.8 499.3L506.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.6c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8a16.14 16.14 0 0 0 0-25.4zm-320 0L186.4 273.5c-10.7-8.4-26.4-.8-26.4 12.7v451.5c0 13.5 15.7 21.1 26.4 12.7l287.4-225.8c4.1-3.2 6.2-8 6.2-12.7 0-4.6-2.1-9.4-6.2-12.6zM857.6 248h-51.2c-3.5 0-6.4 2.7-6.4 6v516c0 3.3 2.9 6 6.4 6h51.2c3.5 0 6.4-2.7 6.4-6V254c0-3.3-2.9-6-6.4-6z'));\nexports.FileAddOutline = getIcon('file-add', outline, getNode(newViewBox, 'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM544 472c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V472z'));\nexports.FileExcelOutline = getIcon('file-excel', outline, getNode(newViewBox, 'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM514.1 580.1l-61.8-102.4c-2.2-3.6-6.1-5.8-10.3-5.8h-38.4c-2.3 0-4.5.6-6.4 1.9-5.6 3.5-7.3 10.9-3.7 16.6l82.3 130.4-83.4 132.8a12.04 12.04 0 0 0 10.2 18.4h34.5c4.2 0 8-2.2 10.2-5.7L510 664.8l62.3 101.4c2.2 3.6 6.1 5.7 10.2 5.7H620c2.3 0 4.5-.7 6.5-1.9 5.6-3.6 7.2-11 3.6-16.6l-84-130.4 85.3-132.5a12.04 12.04 0 0 0-10.1-18.5h-35.7c-4.2 0-8.1 2.2-10.3 5.8l-61.2 102.3z'));\nexports.FileExclamationOutline = getIcon('file-exclamation', outline, getNode(newViewBox, 'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM472 744a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm16-104h48c4.4 0 8-3.6 8-8V448c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8z'));\nexports.FileImageOutline = getIcon('file-image', outline, getNode(newViewBox, 'M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 0 0-12.6 0l-99.8 127.2a7.98 7.98 0 0 0 6.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 0 0-12.7 0zM360 442a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm494.6-153.4L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z'));\nexports.FilePdfOutline = getIcon('file-pdf', outline, getNode(newViewBox, 'M531.3 574.4l.3-1.4c5.8-23.9 13.1-53.7 7.4-80.7-3.8-21.3-19.5-29.6-32.9-30.2-15.8-.7-29.9 8.3-33.4 21.4-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.5-51.2 107.5-29.6 15.3-69.3 38.9-75.2 68.7-1.2 5.5.2 12.5 3.5 18.8 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-13.2-13-45.3-16.4-95.3-10.2-24.6-15-40.7-35.4-52.4-65.8zM421.6 726.3c-13.9 20.2-24.4 30.3-30.1 34.7 6.7-12.3 19.8-25.3 30.1-34.7zm87.6-235.5c5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4.8.1 1.5.7 2.2 2zm-1.6 120.5c10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4zm155.6 65.5c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4zm191.4-388.2L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z'));\nexports.FileMarkdownOutline = getIcon('file-markdown', outline, getNode(newViewBox, 'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM429 481.2c-1.9-4.4-6.2-7.2-11-7.2h-35c-6.6 0-12 5.4-12 12v272c0 6.6 5.4 12 12 12h27.1c6.6 0 12-5.4 12-12V582.1l66.8 150.2a12 12 0 0 0 11 7.1H524c4.7 0 9-2.8 11-7.1l66.8-150.6V758c0 6.6 5.4 12 12 12H641c6.6 0 12-5.4 12-12V486c0-6.6-5.4-12-12-12h-34.7c-4.8 0-9.1 2.8-11 7.2l-83.1 191-83.2-191z'));\nexports.FilePptOutline = getIcon('file-ppt', outline, getNode(newViewBox, 'M424 476c-4.4 0-8 3.6-8 8v276c0 4.4 3.6 8 8 8h32.5c4.4 0 8-3.6 8-8v-95.5h63.3c59.4 0 96.2-38.9 96.2-94.1 0-54.5-36.3-94.3-96-94.3H424zm150.6 94.3c0 43.4-26.5 54.3-71.2 54.3h-38.9V516.2h56.2c33.8 0 53.9 19.7 53.9 54.1zm280-281.7L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z'));\nexports.FileTextOutline = getIcon('file-text', outline, getNode(newViewBox, 'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z'));\nexports.FileUnknownOutline = getIcon('file-unknown', outline, getNode(newViewBox, 'M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM402 549c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103zm78 195a32 32 0 1 0 64 0 32 32 0 1 0-64 0z'));\nexports.FileWordOutline = getIcon('file-word', outline, getNode(newViewBox, 'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494zM528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 0 0-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 0 0-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z'));\nexports.FileZipOutline = getIcon('file-zip', outline, getNode(newViewBox, 'M296 392h64v64h-64zm0 190v160h128V582h-64v-62h-64v62zm80 48v64h-32v-64h32zm-16-302h64v64h-64zm-64-64h64v64h-64zm64 192h64v64h-64zm0-256h64v64h-64zm494.6 88.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h64v64h64v-64h174v216a42 42 0 0 0 42 42h216v494z'));\nexports.FileOutline = getIcon('file', outline, getNode(newViewBox, 'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0 0 42 42h216v494z'));\nexports.FilterOutline = getIcon('filter', outline, getNode(newViewBox, 'M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V642h182.9v156zm9.6-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z'));\nexports.FireOutline = getIcon('fire', outline, getNode(newViewBox, 'M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9zM713 808.5c-53.7 53.2-125 82.4-201 82.4s-147.3-29.2-201-82.4c-53.5-53.1-83-123.5-83-198.4 0-43.5 9.8-85.2 29.1-124 18.8-37.9 46.8-71.8 80.8-97.9a349.6 349.6 0 0 0 58.6-56.8c25-30.5 44.6-64.5 58.2-101a240 240 0 0 0 12.1-46.5c24.1 22.2 44.3 49 61.2 80.4 33.4 62.6 48.8 118.3 45.8 165.7a74.01 74.01 0 0 0 24.4 59.8 73.36 73.36 0 0 0 53.4 18.8c19.7-1 37.8-9.7 51-24.4 13.3-14.9 24.8-30.1 34.4-45.6 14 17.9 25.7 37.4 35 58.4 15.9 35.8 24 73.9 24 113.1 0 74.9-29.5 145.4-83 198.4z'));\nexports.FlagOutline = getIcon('flag', outline, getNode(newViewBox, 'M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32zM184 568V232h368v336H184zm656 145H504v-73h112c4.4 0 8-3.6 8-8V377h216v336z'));\nexports.FolderAddOutline = getIcon('folder-add', outline, getNode(newViewBox, 'M484 443.1V528h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V584h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H540v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1zm396-144.7H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z'));\nexports.FolderOpenOutline = getIcon('folder-open', outline, getNode(newViewBox, 'M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z'));\nexports.FolderOutline = getIcon('folder', outline, getNode(newViewBox, 'M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z'));\nexports.ForwardOutline = getIcon('forward', outline, getNode(normalViewBox, 'M825.8 498L538.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L825.8 526c8.3-7.2 8.3-20.8 0-28zm-320 0L218.4 249.9c-10.7-9.2-26.4-.9-26.4 14v496.3c0 14.9 15.7 23.2 26.4 14L505.8 526c4.1-3.6 6.2-8.8 6.2-14 0-5.2-2.1-10.4-6.2-14z'));\nexports.FrownOutline = getIcon('frown', outline, getNode(newViewBox, 'M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM512 533c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4C420 636.1 461.5 597 512 597s92.1 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533z'));\nexports.FundOutline = getIcon('fund', outline, getNode(newViewBox, 'M926 164H94c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V196c0-17.7-14.3-32-32-32zm-40 632H134V236h752v560zm-658.9-82.3c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 0 0-11.3 0L531 565 416.6 450.5a8.03 8.03 0 0 0-11.3 0l-214.9 215a8.03 8.03 0 0 0 0 11.3l36.7 36.9z'));\nexports.GiftOutline = getIcon('gift', outline, getNode(newViewBox, 'M880 310H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v200c0 4.4 3.6 8 8 8h40v344c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V550h40c4.4 0 8-3.6 8-8V342c0-17.7-14.3-32-32-32zm-334-74c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70h-70v-70zm-138-70c38.6 0 70 31.4 70 70v70h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70zM180 482V378h298v104H180zm48 68h250v308H228V550zm568 308H546V550h250v308zm48-376H546V378h298v104z'));\nexports.FunnelPlotOutline = getIcon('funnel-plot', outline, getNode(newViewBox, 'M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 607.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V607.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.4 798H420.6V650h182.9v148zm9.6-226.6l-8.4 14.6H419.3l-8.4-14.6L334.4 438h355.2L613 571.4zM726.3 374H297.7l-85-148h598.6l-85 148z'));\nexports.GithubOutline = getIcon('github', outline, getNode(newViewBox, 'M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z'));\nexports.GitlabOutline = getIcon('gitlab', outline, getNode(newViewBox, 'M913.9 552.2L805 181.4v-.1c-7.6-22.9-25.7-36.5-48.3-36.5-23.4 0-42.5 13.5-49.7 35.2l-71.4 213H388.8l-71.4-213c-7.2-21.7-26.3-35.2-49.7-35.2-23.1 0-42.5 14.8-48.4 36.6L110.5 552.2c-4.4 14.7 1.2 31.4 13.5 40.7l368.5 276.4c2.6 3.6 6.2 6.3 10.4 7.8l8.6 6.4 8.5-6.4c4.9-1.7 9-4.7 11.9-8.9l368.4-275.4c12.4-9.2 18-25.9 13.6-40.6zM751.7 193.4c1-1.8 2.9-1.9 3.5-1.9 1.1 0 2.5.3 3.4 3L818 394.3H684.5l67.2-200.9zm-487.4 1c.9-2.6 2.3-2.9 3.4-2.9 2.7 0 2.9.1 3.4 1.7l67.3 201.2H206.5l57.8-200zM158.8 558.7l28.2-97.3 202.4 270.2-230.6-172.9zm73.9-116.4h122.1l90.8 284.3-212.9-284.3zM512.9 776L405.7 442.3H620L512.9 776zm157.9-333.7h119.5L580 723.1l90.8-280.8zm-40.7 293.9l207.3-276.7 29.5 99.2-236.8 177.5z'));\nexports.HddOutline = getIcon('hdd', outline, getNode(newViewBox, 'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-600 72h560v208H232V136zm560 480H232V408h560v208zm0 272H232V680h560v208zM496 208H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm328 244a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'));\nexports.HeartOutline = getIcon('heart', outline, getNode(newViewBox, 'M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z'));\nexports.HighlightOutline = getIcon('highlight', outline, getNode(newViewBox, 'M957.6 507.4L603.2 158.2a7.9 7.9 0 0 0-11.2 0L353.3 393.4a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8V860c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6 40.4 39.8a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.2H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.2l68.6-67.6 171.4 168.9-68.6 67.6zM713.1 658L450.3 399.1 597.6 254l262.8 259-147.3 145z'));\nexports.HomeOutline = getIcon('home', outline, getNode(newViewBox, 'M946.5 505L560.1 118.8l-25.9-25.9a31.5 31.5 0 0 0-44.4 0L77.5 505a63.9 63.9 0 0 0-18.8 46c.4 35.2 29.7 63.3 64.9 63.3h42.5V940h691.8V614.3h43.4c17.1 0 33.2-6.7 45.3-18.8a63.6 63.6 0 0 0 18.7-45.3c0-17-6.7-33.1-18.8-45.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z'));\nexports.HourglassOutline = getIcon('hourglass', outline, getNode(newViewBox, 'M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194zm-72 388v134H354V706c0-42.2 16.4-81.9 46.3-111.7C430.1 564.4 469.8 548 512 548s81.9 16.4 111.7 46.3C653.6 624.1 670 663.8 670 706zm0-388c0 42.2-16.4 81.9-46.3 111.7C593.9 459.6 554.2 476 512 476s-81.9-16.4-111.7-46.3A156.63 156.63 0 0 1 354 318V184h316v134z'));\nexports.Html5Outline = getIcon('html5', outline, getNode(newViewBox, 'M145 96l66 746.6L511.8 928l299.6-85.4L878.7 96H145zm610.9 700.6l-244.1 69.6-245.2-69.6-56.7-641.2h603.8l-57.8 641.2zM281 249l1.7 24.3 22.7 253.5h206.5v-.1h112.9l-11.4 118.5L511 672.9v.2h-.8l-102.4-27.7-6.5-73.2h-91l11.3 144.7 188.6 52h1.7v-.4l187.7-51.7 1.7-16.3 21.2-242.2 3.2-24.3H511v.2H389.9l-8.2-94.2h352.1l1.7-19.5 4.8-47.2L742 249H511z'));\nexports.IdcardOutline = getIcon('idcard', outline, getNode(newViewBox, 'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560zM610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z'));\nexports.InfoCircleOutline = getIcon('info-circle', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z', 'M464 336a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z'));\nexports.InstagramOutline = getIcon('instagram', outline, getNode(newViewBox, 'M512 306.9c-113.5 0-205.1 91.6-205.1 205.1S398.5 717.1 512 717.1 717.1 625.5 717.1 512 625.5 306.9 512 306.9zm0 338.4c-73.4 0-133.3-59.9-133.3-133.3S438.6 378.7 512 378.7 645.3 438.6 645.3 512 585.4 645.3 512 645.3zm213.5-394.6c-26.5 0-47.9 21.4-47.9 47.9s21.4 47.9 47.9 47.9 47.9-21.3 47.9-47.9a47.84 47.84 0 0 0-47.9-47.9zM911.8 512c0-55.2.5-109.9-2.6-165-3.1-64-17.7-120.8-64.5-167.6-46.9-46.9-103.6-61.4-167.6-64.5-55.2-3.1-109.9-2.6-165-2.6-55.2 0-109.9-.5-165 2.6-64 3.1-120.8 17.7-167.6 64.5C132.6 226.3 118.1 283 115 347c-3.1 55.2-2.6 109.9-2.6 165s-.5 109.9 2.6 165c3.1 64 17.7 120.8 64.5 167.6 46.9 46.9 103.6 61.4 167.6 64.5 55.2 3.1 109.9 2.6 165 2.6 55.2 0 109.9.5 165-2.6 64-3.1 120.8-17.7 167.6-64.5 46.9-46.9 61.4-103.6 64.5-167.6 3.2-55.1 2.6-109.8 2.6-165zm-88 235.8c-7.3 18.2-16.1 31.8-30.2 45.8-14.1 14.1-27.6 22.9-45.8 30.2C695.2 844.7 570.3 840 512 840c-58.3 0-183.3 4.7-235.9-16.1-18.2-7.3-31.8-16.1-45.8-30.2-14.1-14.1-22.9-27.6-30.2-45.8C179.3 695.2 184 570.3 184 512c0-58.3-4.7-183.3 16.1-235.9 7.3-18.2 16.1-31.8 30.2-45.8s27.6-22.9 45.8-30.2C328.7 179.3 453.7 184 512 184s183.3-4.7 235.9 16.1c18.2 7.3 31.8 16.1 45.8 30.2 14.1 14.1 22.9 27.6 30.2 45.8C844.7 328.7 840 453.7 840 512c0 58.3 4.7 183.2-16.2 235.8z'));\nexports.InsuranceOutline = getIcon('insurance', outline, getNode(newViewBox, 'M441.6 306.8L403 288.6a6.1 6.1 0 0 0-8.4 3.7c-17.5 58.5-45.2 110.1-82.2 153.6a6.05 6.05 0 0 0-1.2 5.6l13.2 43.5c1.3 4.4 7 5.7 10.2 2.4 7.7-8.1 15.4-16.9 23.1-26V656c0 4.4 3.6 8 8 8H403c4.4 0 8-3.6 8-8V393.1a429.2 429.2 0 0 0 33.6-79c1-2.9-.3-6-3-7.3zm26.8 9.2v127.2c0 4.4 3.6 8 8 8h65.9v18.6h-94.9c-4.4 0-8 3.6-8 8v35.6c0 4.4 3.6 8 8 8h55.1c-19.1 30.8-42.4 55.7-71 76a6 6 0 0 0-1.6 8.1l22.8 36.5c1.9 3.1 6.2 3.8 8.9 1.4 31.6-26.8 58.7-62.9 80.6-107.6v120c0 4.4 3.6 8 8 8h36.2c4.4 0 8-3.6 8-8V536c21.3 41.7 47.5 77.5 78.1 106.9 2.6 2.5 6.8 2.1 8.9-.7l26.3-35.3c2-2.7 1.4-6.5-1.2-8.4-30.5-22.6-54.2-47.8-72.3-76.9h59c4.4 0 8-3.6 8-8V478c0-4.4-3.6-8-8-8h-98.8v-18.6h66.7c4.4 0 8-3.6 8-8V316c0-4.4-3.6-8-8-8H476.4c-4.4 0-8 3.6-8 8zm51.5 42.8h97.9v41.6h-97.9v-41.6zm347-188.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z'));\nexports.InterationOutline = getIcon('interation', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z'));\nexports.LeftCircleOutline = getIcon('left-circle', outline, getNode(newViewBox, 'M603.3 327.5l-246 178a7.95 7.95 0 0 0 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z', 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'));\nexports.LeftSquareOutline = getIcon('left-square', outline, getNode(newViewBox, 'M365.3 518.5l246 178c5.3 3.8 12.7 0 12.7-6.5v-46.9c0-10.2-4.9-19.9-13.2-25.9L465.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5l-246 178a8.05 8.05 0 0 0 0 13z', 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.LayoutOutline = getIcon('layout', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-696 72h136v656H184V184zm656 656H384V384h456v456zM384 320V184h456v136H384z'));\nexports.LikeOutline = getIcon('like', outline, getNode(newViewBox, 'M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 0 0-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 0 0 471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0 1 42.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z'));\nexports.LinkedinOutline = getIcon('linkedin', outline, getNode(newViewBox, 'M847.7 112H176.3c-35.5 0-64.3 28.8-64.3 64.3v671.4c0 35.5 28.8 64.3 64.3 64.3h671.4c35.5 0 64.3-28.8 64.3-64.3V176.3c0-35.5-28.8-64.3-64.3-64.3zm0 736c-447.8-.1-671.7-.2-671.7-.3.1-447.8.2-671.7.3-671.7 447.8.1 671.7.2 671.7.3-.1 447.8-.2 671.7-.3 671.7zM230.6 411.9h118.7v381.8H230.6zm59.4-52.2c37.9 0 68.8-30.8 68.8-68.8a68.8 68.8 0 1 0-137.6 0c-.1 38 30.7 68.8 68.8 68.8zm252.3 245.1c0-49.8 9.5-98 71.2-98 60.8 0 61.7 56.9 61.7 101.2v185.7h118.6V584.3c0-102.8-22.2-181.9-142.3-181.9-57.7 0-96.4 31.7-112.3 61.7h-1.6v-52.2H423.7v381.8h118.6V604.8z'));\nexports.LockOutline = getIcon('lock', outline, getNode(newViewBox, 'M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z'));\nexports.MailOutline = getIcon('mail', outline, getNode(newViewBox, 'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 110.8V792H136V270.8l-27.6-21.5 39.3-50.5 42.8 33.3h643.1l42.8-33.3 39.3 50.5-27.7 21.5zM833.6 232L512 482 190.4 232l-42.8-33.3-39.3 50.5 27.6 21.5 341.6 265.6a55.99 55.99 0 0 0 68.7 0L888 270.8l27.6-21.5-39.3-50.5-42.7 33.2z'));\nexports.MedicineBoxOutline = getIcon('medicine-box', outline, getNode(newViewBox, 'M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM360 184h304v72H360v-72zm480 656H184V513.4L244.3 328h535.4L840 513.4V840zM652 572H544V464c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V636h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'));\nexports.MehOutline = getIcon('meh', outline, getNode(newViewBox, 'M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 565H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'));\nexports.MessageOutline = getIcon('message', outline, getNode(newViewBox, 'M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm200 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-400 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm661.2-173.6c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 0 0-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 0 0-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 0 0 112 714v152a46 46 0 0 0 46 46h152.1A449.4 449.4 0 0 0 510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 0 0 142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z'));\nexports.MinusCircleOutline = getIcon('minus-circle', outline, getNode(newViewBox, 'M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z', 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'));\nexports.MinusSquareOutline = getIcon('minus-square', outline, getNode(newViewBox, 'M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z', 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.MobileOutline = getIcon('mobile', outline, getNode(newViewBox, 'M744 62H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V126c0-35.3-28.7-64-64-64zm-8 824H288V134h448v752zM472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'));\nexports.MoneyCollectOutline = getIcon('money-collect', outline, getNode(newViewBox, 'M911.5 700.7a8 8 0 0 0-10.3-4.8L840 718.2V180c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V763c0 3.3 2.1 6.3 5.3 7.5L501 910.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zM512 837.5l-256-93.1V184h512v560.4l-256 93.1zM660.6 312h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.6-1.2 1-2.5 1-3.8-.1-4.3-3.7-7.9-8.1-7.9z'));\nexports.NotificationOutline = getIcon('notification', outline, getNode(newViewBox, 'M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z'));\nexports.PauseCircleOutline = getIcon('pause-circle', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm-88-532h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z'));\nexports.PayCircleOutline = getIcon('pay-circle', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm159.6-585h-59.5c-3 0-5.8 1.7-7.1 4.4l-90.6 180H511l-90.6-180a8 8 0 0 0-7.1-4.4h-60.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9L457 515.7h-61.4c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h81.7V603h-81.7c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h81.7V717c0 4.4 3.6 8 8 8h54.3c4.4 0 8-3.6 8-8v-68.1h82c4.4 0 8-3.6 8-8V611c0-4.4-3.6-8-8-8h-82v-41.5h82c4.4 0 8-3.6 8-8v-29.9c0-4.4-3.6-8-8-8h-62l111.1-204.8c.6-1.2 1-2.5 1-3.8-.1-4.4-3.7-8-8.1-8z'));\nexports.PhoneOutline = getIcon('phone', outline, getNode(newViewBox, 'M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 0 1-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 0 0-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 0 0 285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z'));\nexports.PictureOutline = getIcon('picture', outline, getNode(newViewBox, 'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2zM304 456a88 88 0 1 0 0-176 88 88 0 0 0 0 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z'));\nexports.PieChartOutline = getIcon('pie-chart', outline, getNode(newViewBox, 'M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 0 0-282.8 117.1 398.19 398.19 0 0 0-85.7 127.1A397.61 397.61 0 0 0 72 552a398.46 398.46 0 0 0 117.1 282.8c36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 0 0 472 952a398.46 398.46 0 0 0 282.8-117.1c36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 0 0 872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 0 1 470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552c0-88.7 34.5-172.1 97.2-234.8 54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8zM952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 0 0 589 74.6L560.7 72c-4.7-.4-8.7 3.2-8.7 7.9V464c0 4.4 3.6 8 8 8l384-1c4.7 0 8.4-4 8-8.6zm-332.2-58.2V147.6a332.24 332.24 0 0 1 166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z'));\nexports.PlayCircleOutline = getIcon('play-circle', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z', 'M719.4 499.1l-296.1-215A15.9 15.9 0 0 0 398 297v430c0 13.1 14.8 20.5 25.3 12.9l296.1-215a15.9 15.9 0 0 0 0-25.8zm-257.6 134V390.9L628.5 512 461.8 633.1z'));\nexports.PlaySquareOutline = getIcon('play-square', outline, getNode(newViewBox, 'M442.3 677.6l199.4-156.7a11.3 11.3 0 0 0 0-17.7L442.3 346.4c-7.4-5.8-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.7 18.3 8.9z', 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.PlusCircleOutline = getIcon('plus-circle', outline, getNode(newViewBox, 'M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z', 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'));\nexports.ProfileOutline = getIcon('profile', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM492 400h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zM340 368a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 144a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'));\nexports.PlusSquareOutline = getIcon('plus-square', outline, getNode(newViewBox, 'M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z', 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.ProjectOutline = getIcon('project', outline, getNode(newViewBox, 'M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8zm216-432H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.PrinterOutline = getIcon('printer', outline, getNode(newViewBox, 'M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8zm32-104H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z'));\nexports.PropertySafetyOutline = getIcon('property-safety', outline, getNode(newViewBox, 'M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zM430.5 318h-46c-1.7 0-3.3.4-4.8 1.2a10.1 10.1 0 0 0-4 13.6l88 161.1h-45.2c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7h-63.1c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1V658c0 5.5 4.5 10 10 10h41.3c5.5 0 10-4.5 10-10v-51.8h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-45.7l87.7-161.1a10.05 10.05 0 0 0-8.8-14.8h-45c-3.8 0-7.2 2.1-8.9 5.5l-73.2 144.3-72.9-144.3c-1.7-3.4-5.2-5.5-9-5.5z'));\nexports.PushpinOutline = getIcon('pushpin', outline, getNode(newViewBox, 'M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z'));\nexports.QuestionCircleOutline = getIcon('question-circle', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z', 'M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'));\nexports.ReadOutline = getIcon('read', outline, getNode(newViewBox, 'M928 161H699.2c-49.1 0-97.1 14.1-138.4 40.7L512 233l-48.8-31.3A255.2 255.2 0 0 0 324.8 161H96c-17.7 0-32 14.3-32 32v568c0 17.7 14.3 32 32 32h228.8c49.1 0 97.1 14.1 138.4 40.7l44.4 28.6c1.3.8 2.8 1.3 4.3 1.3s3-.4 4.3-1.3l44.4-28.6C602 807.1 650.1 793 699.2 793H928c17.7 0 32-14.3 32-32V193c0-17.7-14.3-32-32-32zM324.8 721H136V233h188.8c35.4 0 69.8 10.1 99.5 29.2l48.8 31.3 6.9 4.5v462c-47.6-25.6-100.8-39-155.2-39zm563.2 0H699.2c-54.4 0-107.6 13.4-155.2 39V298l6.9-4.5 48.8-31.3c29.7-19.1 64.1-29.2 99.5-29.2H888v488zM396.9 361H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm223.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c0-4.1-3.2-7.5-7.1-7.5H627.1c-3.9 0-7.1 3.4-7.1 7.5zM396.9 501H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5zm416 0H627.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45c.1-4.1-3.1-7.5-7-7.5z'));\nexports.ReconciliationOutline = getIcon('reconciliation', outline, getNode(newViewBox, 'M676 565c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34zm204-523H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zm-412 64h72v-56h64v56h72v48H468v-48zm-20 616H176V616h272v232zm0-296H176v-88h272v88zm392 240H512V432c0-17.7-14.3-32-32-32H304V240h100v104h336V240h100v552zM704 408v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zM592 512h48c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z'));\nexports.RedEnvelopeOutline = getIcon('red-envelope', outline, getNode(newViewBox, 'M440.6 462.6a8.38 8.38 0 0 0-7.5-4.6h-48.8c-1.3 0-2.6.4-3.9 1a8.4 8.4 0 0 0-3.4 11.4l87.4 161.1H419c-4.6 0-8.4 3.8-8.4 8.4V665c0 4.6 3.8 8.4 8.4 8.4h63V702h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v49.9c0 4.6 3.8 8.4 8.4 8.4h43.7c4.6 0 8.4-3.8 8.4-8.4v-49.9h63.3c4.7 0 8.4-3.8 8.2-8.5v-25c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-45.9l87.2-161a8.45 8.45 0 0 0-7.4-12.4h-47.8c-3.1 0-6 1.8-7.5 4.6l-71.9 141.9-71.7-142zM832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V193.1l260.3 204.1c11.6 9.1 27.9 9.1 39.5 0L792 193.1V888zm0-751.3h-31.7L512 331.3 263.7 136.7H232v-.7h560v.7z'));\nexports.RestOutline = getIcon('rest', outline, getNode(newViewBox, 'M508 704c79.5 0 144-64.5 144-144s-64.5-144-144-144-144 64.5-144 144 64.5 144 144 144zm0-224c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z', 'M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zm-518.6-76h397.2l22.4 76H291l22.4-76zm376.2 664H326.4L282 324h451.9l-44.3 520z'));\nexports.RightCircleOutline = getIcon('right-circle', outline, getNode(newViewBox, 'M666.7 505.5l-246-178A8 8 0 0 0 408 334v46.9c0 10.2 4.9 19.9 13.2 25.9L566.6 512 421.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.8 0-13z', 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'));\nexports.RightSquareOutline = getIcon('right-square', outline, getNode(newViewBox, 'M412.7 696.5l246-178c4.4-3.2 4.4-9.7 0-12.9l-246-178c-5.3-3.8-12.7 0-12.7 6.5V381c0 10.2 4.9 19.9 13.2 25.9L558.6 512 413.2 617.2c-8.3 6-13.2 15.6-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.5z', 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.RocketOutline = getIcon('rocket', outline, getNode(newViewBox, 'M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8H864zM762.3 621.4c9.4 14.6 17 30.3 22.5 46.6H700V558.7a211.6 211.6 0 0 1 62.3 62.7zM388 483.1V318.8l124-147 124 147V668H388V483.1zM239.2 668c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668h-84.8zm388.9 116.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5-38.3 0-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM464 400a48 48 0 1 0 96 0 48 48 0 1 0-96 0z'));\nexports.SafetyCertificateOutline = getIcon('safety-certificate', outline, getNode(newViewBox, 'M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zm-405.8-201c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z'));\nexports.SaveOutline = getIcon('save', outline, getNode(newViewBox, 'M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z'));\nexports.ScheduleOutline = getIcon('schedule', outline, getNode(newViewBox, 'M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496zM416 496H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 136H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm308.2-177.4L620.6 598.3l-52.8-73.1c-3-4.2-7.8-6.6-12.9-6.6H500c-6.5 0-10.3 7.4-6.5 12.7l114.1 158.2a15.9 15.9 0 0 0 25.8 0l165-228.7c3.8-5.3 0-12.7-6.5-12.7H737c-5-.1-9.8 2.4-12.8 6.5z'));\nexports.SecurityScanOutline = getIcon('security-scan', outline, getNode(newViewBox, 'M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6zM402.9 528.8l-77.5 77.5a8.03 8.03 0 0 0 0 11.3l34 34c3.1 3.1 8.2 3.1 11.3 0l77.5-77.5c55.7 35.1 130.1 28.4 178.6-20.1 56.3-56.3 56.3-147.5 0-203.8-56.3-56.3-147.5-56.3-203.8 0-48.5 48.5-55.2 123-20.1 178.6zm65.4-133.3c31.3-31.3 82-31.3 113.2 0 31.3 31.3 31.3 82 0 113.2-31.3 31.3-82 31.3-113.2 0s-31.3-81.9 0-113.2z'));\nexports.SettingOutline = getIcon('setting', outline, getNode(newViewBox, 'M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5a449.4 449.4 0 0 0 159 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 0 1-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2z'));\nexports.ShopOutline = getIcon('shop', outline, getNode(newViewBox, 'M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 3-1.3 6-2.6 9-4v242.2zm30-404.4c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 0 1 512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 0 1-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z'));\nexports.ShoppingOutline = getIcon('shopping', outline, getNode(newViewBox, 'M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z'));\nexports.SkinOutline = getIcon('skin', outline, getNode(newViewBox, 'M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44zm-28 268H723v432H301V394H182V198h153.3c28.2 71.2 97.5 120 176.7 120s148.5-48.8 176.7-120H842v196z'));\nexports.SkypeOutline = getIcon('skype', outline, getNode(newViewBox, 'M883.7 578.6c4.1-22.5 6.3-45.5 6.3-68.5 0-51-10-100.5-29.7-147-19-45-46.3-85.4-81-120.1a375.79 375.79 0 0 0-120.1-80.9c-46.6-19.7-96-29.7-147-29.7-24 0-48.1 2.3-71.5 6.8A225.1 225.1 0 0 0 335.6 113c-59.7 0-115.9 23.3-158.1 65.5A222.25 222.25 0 0 0 112 336.6c0 38 9.8 75.4 28.1 108.4-3.7 21.4-5.7 43.3-5.7 65.1 0 51 10 100.5 29.7 147 19 45 46.2 85.4 80.9 120.1 34.7 34.7 75.1 61.9 120.1 80.9 46.6 19.7 96 29.7 147 29.7 22.2 0 44.4-2 66.2-5.9 33.5 18.9 71.3 29 110 29 59.7 0 115.9-23.2 158.1-65.5 42.3-42.2 65.5-98.4 65.5-158.1.1-38-9.7-75.5-28.2-108.7zm-88.1 216C766.9 823.4 729 839 688.4 839c-26.1 0-51.8-6.8-74.6-19.7l-22.5-12.7-25.5 4.5c-17.8 3.2-35.8 4.8-53.6 4.8-41.4 0-81.3-8.1-119.1-24.1-36.3-15.3-69-37.3-97.2-65.5a304.29 304.29 0 0 1-65.5-97.1c-16-37.7-24-77.6-24-119 0-17.4 1.6-35.2 4.6-52.8l4.4-25.1L203 410a151.02 151.02 0 0 1-19.1-73.4c0-40.6 15.7-78.5 44.4-107.2C257.1 200.7 295 185 335.6 185a153 153 0 0 1 71.4 17.9l22.4 11.8 24.8-4.8c18.9-3.6 38.4-5.5 58-5.5 41.4 0 81.3 8.1 119 24 36.5 15.4 69.1 37.4 97.2 65.5 28.2 28.1 50.2 60.8 65.6 97.2 16 37.7 24 77.6 24 119 0 18.4-1.7 37-5.1 55.5l-4.7 25.5 12.6 22.6c12.6 22.5 19.2 48 19.2 73.7 0 40.7-15.7 78.5-44.4 107.2zM583.4 466.2L495 446.6c-33.6-7.7-72.3-17.8-72.3-49.5s27.1-53.9 76.1-53.9c98.7 0 89.7 67.8 138.7 67.8 25.8 0 48.4-15.2 48.4-41.2 0-60.8-97.4-106.5-180-106.5-89.7 0-185.2 38.1-185.2 139.5 0 48.8 17.4 100.8 113.6 124.9l119.4 29.8c36.1 8.9 45.2 29.2 45.2 47.6 0 30.5-30.3 60.3-85.2 60.3-107.2 0-92.3-82.5-149.7-82.5-25.8 0-44.5 17.8-44.5 43.1 0 49.4 60 115.4 194.2 115.4 127.7 0 191-61.5 191-144 0-53.1-24.5-109.6-121.3-131.2z'));\nexports.SlackSquareOutline = getIcon('slack-square', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM529 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V311.4zM361.5 580.2c0 27.8-22.5 50.4-50.3 50.4a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h50.3v50.4zm134 134.4c0 27.8-22.5 50.4-50.3 50.4-27.8 0-50.3-22.6-50.3-50.4V580.2c0-27.8 22.5-50.4 50.3-50.4a50.35 50.35 0 0 1 50.3 50.4v134.4zm-50.2-218.4h-134c-27.8 0-50.3-22.6-50.3-50.4 0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4-.1 27.9-22.6 50.4-50.3 50.4zm0-134.4c-13.3 0-26.1-5.3-35.6-14.8S395 324.8 395 311.4c0-27.8 22.5-50.4 50.3-50.4 27.8 0 50.3 22.6 50.3 50.4v50.4h-50.3zm134 403.2c-27.8 0-50.3-22.6-50.3-50.4v-50.4h50.3c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm134-134.4h-134a50.35 50.35 0 0 1-50.3-50.4c0-27.8 22.5-50.4 50.3-50.4h134c27.8 0 50.3 22.6 50.3 50.4 0 27.8-22.5 50.4-50.3 50.4zm0-134.4H663v-50.4c0-27.8 22.5-50.4 50.3-50.4s50.3 22.6 50.3 50.4c0 27.8-22.5 50.4-50.3 50.4z'));\nexports.SlidersOutline = getIcon('sliders', outline, getNode(newViewBox, 'M320 224h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-60 508h-80V292h80v440zm644-436h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-60 364h-80V364h80v296zM612 404h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8zm-60 145a3 3 0 0 1-3 3h-74a3 3 0 0 1-3-3v-74a3 3 0 0 1 3-3h74a3 3 0 0 1 3 3v74z'));\nexports.SmileOutline = getIcon('smile', outline, getNode(newViewBox, 'M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm352 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0zM512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm263 711c-34.2 34.2-74 61-118.3 79.8C611 874.2 562.3 884 512 884c-50.3 0-99-9.8-144.8-29.2A370.4 370.4 0 0 1 248.9 775c-34.2-34.2-61-74-79.8-118.3C149.8 611 140 562.3 140 512s9.8-99 29.2-144.8A370.4 370.4 0 0 1 249 248.9c34.2-34.2 74-61 118.3-79.8C413 149.8 461.7 140 512 140c50.3 0 99 9.8 144.8 29.2A370.4 370.4 0 0 1 775.1 249c34.2 34.2 61 74 79.8 118.3C874.2 413 884 461.7 884 512s-9.8 99-29.2 144.8A368.89 368.89 0 0 1 775 775zM664 533h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 589.9 562.5 629 512 629s-92.1-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4z'));\nexports.SnippetsOutline = getIcon('snippets', outline, getNode(newViewBox, 'M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z'));\nexports.SoundOutline = getIcon('sound', outline, getNode(newViewBox, 'M625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582zm348-327H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm-41.9 261.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344z'));\nexports.StarOutline = getIcon('star', outline, getNode(newViewBox, 'M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0 0 46.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z'));\nexports.StepBackwardOutline = getIcon('step-backward', outline, getNode(normalViewBox, 'M347.6 528.95l383.2 301.02c14.25 11.2 35.2 1.1 35.2-16.95V210.97c0-18.05-20.95-28.14-35.2-16.94L347.6 495.05a21.53 21.53 0 0 0 0 33.9M330 864h-64a8 8 0 0 1-8-8V168a8 8 0 0 1 8-8h64a8 8 0 0 1 8 8v688a8 8 0 0 1-8 8'));\nexports.StepForwardOutline = getIcon('step-forward', outline, getNode(normalViewBox, 'M676.4 528.95L293.2 829.97c-14.25 11.2-35.2 1.1-35.2-16.95V210.97c0-18.05 20.95-28.14 35.2-16.94l383.2 301.02a21.53 21.53 0 0 1 0 33.9M694 864h64a8 8 0 0 0 8-8V168a8 8 0 0 0-8-8h-64a8 8 0 0 0-8 8v688a8 8 0 0 0 8 8'));\nexports.StopOutline = getIcon('stop', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372 0-89 31.3-170.8 83.5-234.8l523.3 523.3C682.8 852.7 601 884 512 884zm288.5-137.2L277.2 223.5C341.2 171.3 423 140 512 140c205.4 0 372 166.6 372 372 0 89-31.3 170.8-83.5 234.8z'));\nexports.SwitcherOutline = getIcon('switcher', outline, getNode(newViewBox, 'M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zm-40 600H184V312h528v528zm168-728H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM300 550h296v64H300z'));\nexports.TabletOutline = getIcon('tablet', outline, getNode(newViewBox, 'M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H232V136h560v752zM472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'));\nexports.TagOutline = getIcon('tag', outline, getNode(newViewBox, 'M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8c1.9 1.9 4.4 2.9 7.1 2.9s5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7zM680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z'));\nexports.TagsOutline = getIcon('tags', outline, getNode(newViewBox, 'M483.2 790.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3c-2.3-.2-4.7.6-6.3 2.3L137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c3.1 3.2 8.2 3.2 11.3 0zm62.6-651.7l224.6 19 19 224.6L477.5 694 233.9 450.5l311.9-311.9zm60.16 186.23a48 48 0 1 0 67.88-67.89 48 48 0 1 0-67.88 67.89zM889.7 539.8l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3z'));\nexports.TaobaoCircleOutline = getIcon('taobao-circle', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zM315.7 291.5c27.3 0 49.5 22.1 49.5 49.4s-22.1 49.4-49.5 49.4a49.4 49.4 0 1 1 0-98.8zM366.9 578c-13.6 42.3-10.2 26.7-64.4 144.5l-78.5-49s87.7-79.8 105.6-116.2c19.2-38.4-21.1-58.9-21.1-58.9l-60.2-37.5 32.7-50.2c45.4 33.7 48.7 36.6 79.2 67.2 23.8 23.9 20.7 56.8 6.7 100.1zm427.2 55c-15.3 143.8-202.4 90.3-202.4 90.3l10.2-41.1 43.3 9.3c80 5 72.3-64.9 72.3-64.9V423c.6-77.3-72.6-85.4-204.2-38.3l30.6 8.3c-2.5 9-12.5 23.2-25.2 38.6h176v35.6h-99.1v44.5h98.7v35.7h-98.7V622c14.9-4.8 28.6-11.5 40.5-20.5l-8.7-32.5 46.5-14.4 38.8 94.9-57.3 23.9-10.2-37.8c-25.6 19.5-78.8 48-171.8 45.4-99.2 2.6-73.7-112-73.7-112l2.5-1.3H472c-.5 14.7-6.6 38.7 1.7 51.8 6.8 10.8 24.2 12.6 35.3 13.1 1.3.1 2.6.1 3.9.1v-85.3h-101v-35.7h101v-44.5H487c-22.7 24.1-43.5 44.1-43.5 44.1l-30.6-26.7c21.7-22.9 43.3-59.1 56.8-83.2-10.9 4.4-22 9.2-33.6 14.2-11.2 14.3-24.2 29-38.7 43.5.5.8-50-28.4-50-28.4 52.2-44.4 81.4-139.9 81.4-139.9l72.5 20.4s-5.9 14-18.4 35.6c290.3-82.3 307.4 50.5 307.4 50.5s19.1 91.8 3.8 235.7z'));\nexports.ThunderboltOutline = getIcon('thunderbolt', outline, getNode(newViewBox, 'M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.2 732.5l60.3-241H281.1l189.6-327.4h224.6L487 427.4h211L378.2 732.5z'));\nexports.ToolOutline = getIcon('tool', outline, getNode(newViewBox, 'M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 0 1 144-53.5L537 318.9a32.05 32.05 0 0 0 0 45.3l124.5 124.5a32.05 32.05 0 0 0 45.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z'));\nexports.TrophyOutline = getIcon('trophy', outline, getNode(newViewBox, 'M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.7 630.2 359 721.7 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.7 758.3 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM184 352V232h64v207.6a91.99 91.99 0 0 1-64-87.6zm520 128c0 49.1-19.1 95.4-53.9 130.1-34.8 34.8-81 53.9-130.1 53.9h-16c-49.1 0-95.4-19.1-130.1-53.9-34.8-34.8-53.9-81-53.9-130.1V184h384v296zm136-128c0 41-26.9 75.8-64 87.6V232h64v120z'));\nexports.UnlockOutline = getIcon('unlock', outline, getNode(newViewBox, 'M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z'));\nexports.UpCircleOutline = getIcon('up-circle', outline, getNode(newViewBox, 'M518.5 360.3a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7H381c10.2 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246z', 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'));\nexports.UpSquareOutline = getIcon('up-square', outline, getNode(newViewBox, 'M334 624h46.9c10.2 0 19.9-4.9 25.9-13.2L512 465.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246a7.95 7.95 0 0 0-12.9 0l-178 246A7.96 7.96 0 0 0 334 624z', 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.UsbOutline = getIcon('usb', outline, getNode(newViewBox, 'M760 432V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V548c0-24.3 21.6-44 48.1-44h495.8c26.5 0 48.1 19.7 48.1 44v356c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zm-424 0V184h352v248H336zm120-184h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'));\nexports.VideoCameraOutline = getIcon('video-camera', outline, getNode(newViewBox, 'M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226zM208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z'));\nexports.WalletOutline = getIcon('wallet', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 464H528V448h312v128zm0 264H184V184h656v200H496c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h344v200zM580 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'));\nexports.WarningOutline = getIcon('warning', outline, getNode(newViewBox, 'M464 720a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8zm475.7 440l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z'));\nexports.WechatOutline = getIcon('wechat', outline, getNode(newViewBox, 'M690.1 377.4c5.9 0 11.8.2 17.6.5-24.4-128.7-158.3-227.1-319.9-227.1C209 150.8 64 271.4 64 420.2c0 81.1 43.6 154.2 111.9 203.6a21.5 21.5 0 0 1 9.1 17.6c0 2.4-.5 4.6-1.1 6.9-5.5 20.3-14.2 52.8-14.6 54.3-.7 2.6-1.7 5.2-1.7 7.9 0 5.9 4.8 10.8 10.8 10.8 2.3 0 4.2-.9 6.2-2l70.9-40.9c5.3-3.1 11-5 17.2-5 3.2 0 6.4.5 9.5 1.4 33.1 9.5 68.8 14.8 105.7 14.8 6 0 11.9-.1 17.8-.4-7.1-21-10.9-43.1-10.9-66 0-135.8 132.2-245.8 295.3-245.8zm-194.3-86.5c23.8 0 43.2 19.3 43.2 43.1s-19.3 43.1-43.2 43.1c-23.8 0-43.2-19.3-43.2-43.1s19.4-43.1 43.2-43.1zm-215.9 86.2c-23.8 0-43.2-19.3-43.2-43.1s19.3-43.1 43.2-43.1 43.2 19.3 43.2 43.1-19.4 43.1-43.2 43.1zm586.8 415.6c56.9-41.2 93.2-102 93.2-169.7 0-124-120.8-224.5-269.9-224.5-149 0-269.9 100.5-269.9 224.5S540.9 847.5 690 847.5c30.8 0 60.6-4.4 88.1-12.3 2.6-.8 5.2-1.2 7.9-1.2 5.2 0 9.9 1.6 14.3 4.1l59.1 34c1.7 1 3.3 1.7 5.2 1.7a9 9 0 0 0 6.4-2.6 9 9 0 0 0 2.6-6.4c0-2.2-.9-4.4-1.4-6.6-.3-1.2-7.6-28.3-12.2-45.3-.5-1.9-.9-3.8-.9-5.7.1-5.9 3.1-11.2 7.6-14.5zM600.2 587.2c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9c0 19.8-16.2 35.9-36 35.9zm179.9 0c-19.9 0-36-16.1-36-35.9 0-19.8 16.1-35.9 36-35.9s36 16.1 36 35.9a36.08 36.08 0 0 1-36 35.9z'));\nexports.WeiboCircleOutline = getIcon('weibo-circle', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-44.4 672C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-93-32.2c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zm34.9-14.5c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z'));\nexports.WeiboSquareOutline = getIcon('weibo-square', outline, getNode(newViewBox, 'M433.6 595.1c-14.2-5.9-32.4.2-41.2 13.9-8.8 13.8-4.7 30.2 9.3 36.6 14.3 6.5 33.2.3 42-13.8 8.8-14.3 4.2-30.6-10.1-36.7zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM467.6 736C353.1 736 236 680.4 236 588.9c0-47.8 30.2-103.1 82.3-155.3 69.5-69.6 150.6-101.4 181.1-70.8 13.5 13.5 14.8 36.8 6.1 64.6-4.5 14 13.1 6.3 13.1 6.3 56.2-23.6 105.2-25 123.1.7 9.6 13.7 8.6 32.8-.2 55.1-4.1 10.2 1.3 11.8 9 14.1 31.7 9.8 66.9 33.6 66.9 75.5.2 69.5-99.7 156.9-249.8 156.9zm207.3-290.8a34.9 34.9 0 0 0-7.2-34.1 34.68 34.68 0 0 0-33.1-10.7 18.24 18.24 0 0 1-7.6-35.7c24.1-5.1 50.1 2.3 67.7 21.9 17.7 19.6 22.4 46.3 14.9 69.8a18.13 18.13 0 0 1-22.9 11.7 18.18 18.18 0 0 1-11.8-22.9zm106 34.3s0 .1 0 0a21.1 21.1 0 0 1-26.6 13.7 21.19 21.19 0 0 1-13.6-26.7c11-34.2 4-73.2-21.7-101.8a104.04 104.04 0 0 0-98.9-32.1 21.14 21.14 0 0 1-25.1-16.3 21.07 21.07 0 0 1 16.2-25.1c49.4-10.5 102.8 4.8 139.1 45.1 36.3 40.2 46.1 95.1 30.6 143.2zm-334.5 6.1c-91.4 9-160.7 65.1-154.7 125.2 5.9 60.1 84.8 101.5 176.2 92.5 91.4-9.1 160.7-65.1 154.7-125.3-5.9-60.1-84.8-101.5-176.2-92.4zm80.2 141.7c-18.7 42.3-72.3 64.8-117.8 50.1-43.9-14.2-62.5-57.7-43.3-96.8 18.9-38.4 68-60.1 111.5-48.8 45 11.7 68 54.2 49.6 95.5zm-58.1-46.7c-5.4-2.2-12.2.5-15.4 5.8-3.1 5.4-1.4 11.5 4.1 13.8 5.5 2.3 12.6-.3 15.8-5.8 3-5.6 1-11.8-4.5-13.8z'));\nexports.WindowsOutline = getIcon('windows', outline, getNode(newViewBox, 'M120.1 770.6L443 823.2V543.8H120.1v226.8zm63.4-163.5h196.2v141.6l-196.2-31.9V607.1zm340.3 226.5l382 62.2v-352h-382v289.8zm63.4-226.5h255.3v214.4l-255.3-41.6V607.1zm-63.4-415.7v288.8h382V128.1l-382 63.3zm318.7 225.5H587.3V245l255.3-42.3v214.2zm-722.4 63.3H443V201.9l-322.9 53.5v224.8zM183.5 309l196.2-32.5v140.4H183.5V309z'));\nexports.YahooOutline = getIcon('yahoo', outline, getNode(newViewBox, 'M859.9 681.4h-14.1c-27.1 0-49.2 22.2-49.2 49.3v14.1c0 27.1 22.2 49.3 49.2 49.3h14.1c27.1 0 49.2-22.2 49.2-49.3v-14.1c0-27.1-22.2-49.3-49.2-49.3zM402.6 231C216.2 231 65 357 65 512.5S216.2 794 402.6 794s337.6-126 337.6-281.5S589.1 231 402.6 231zm0 507C245.1 738 121 634.6 121 512.5c0-62.3 32.3-119.7 84.9-161v48.4h37l159.8 159.9v65.3h-84.4v56.3h225.1v-56.3H459v-65.3l103.5-103.6h65.3v-56.3H459v65.3l-28.1 28.1-93.4-93.5h37v-56.3H216.4c49.4-35 114.3-56.6 186.2-56.6 157.6 0 281.6 103.4 281.6 225.5S560.2 738 402.6 738zm534.7-507H824.7c-15.5 0-27.7 12.6-27.1 28.1l13.1 366h84.4l65.4-366.4c2.7-15.2-7.8-27.7-23.2-27.7z'));\nexports.YoutubeOutline = getIcon('youtube', outline, getNode(newViewBox, 'M960 509.2c0-2.2 0-4.7-.1-7.6-.1-8.1-.3-17.2-.5-26.9-.8-27.9-2.2-55.7-4.4-81.9-3-36.1-7.4-66.2-13.4-88.8a139.52 139.52 0 0 0-98.3-98.5c-28.3-7.6-83.7-12.3-161.7-15.2-37.1-1.4-76.8-2.3-116.5-2.8-13.9-.2-26.8-.3-38.4-.4h-29.4c-11.6.1-24.5.2-38.4.4-39.7.5-79.4 1.4-116.5 2.8-78 3-133.5 7.7-161.7 15.2A139.35 139.35 0 0 0 82.4 304C76.3 326.6 72 356.7 69 392.8c-2.2 26.2-3.6 54-4.4 81.9-.3 9.7-.4 18.8-.5 26.9 0 2.9-.1 5.4-.1 7.6v5.6c0 2.2 0 4.7.1 7.6.1 8.1.3 17.2.5 26.9.8 27.9 2.2 55.7 4.4 81.9 3 36.1 7.4 66.2 13.4 88.8 12.8 47.9 50.4 85.7 98.3 98.5 28.2 7.6 83.7 12.3 161.7 15.2 37.1 1.4 76.8 2.3 116.5 2.8 13.9.2 26.8.3 38.4.4h29.4c11.6-.1 24.5-.2 38.4-.4 39.7-.5 79.4-1.4 116.5-2.8 78-3 133.5-7.7 161.7-15.2 47.9-12.8 85.5-50.5 98.3-98.5 6.1-22.6 10.4-52.7 13.4-88.8 2.2-26.2 3.6-54 4.4-81.9.3-9.7.4-18.8.5-26.9 0-2.9.1-5.4.1-7.6v-5.6zm-72 5.2c0 2.1 0 4.4-.1 7.1-.1 7.8-.3 16.4-.5 25.7-.7 26.6-2.1 53.2-4.2 77.9-2.7 32.2-6.5 58.6-11.2 76.3-6.2 23.1-24.4 41.4-47.4 47.5-21 5.6-73.9 10.1-145.8 12.8-36.4 1.4-75.6 2.3-114.7 2.8-13.7.2-26.4.3-37.8.3h-28.6l-37.8-.3c-39.1-.5-78.2-1.4-114.7-2.8-71.9-2.8-124.9-7.2-145.8-12.8-23-6.2-41.2-24.4-47.4-47.5-4.7-17.7-8.5-44.1-11.2-76.3-2.1-24.7-3.4-51.3-4.2-77.9-.3-9.3-.4-18-.5-25.7 0-2.7-.1-5.1-.1-7.1v-4.8c0-2.1 0-4.4.1-7.1.1-7.8.3-16.4.5-25.7.7-26.6 2.1-53.2 4.2-77.9 2.7-32.2 6.5-58.6 11.2-76.3 6.2-23.1 24.4-41.4 47.4-47.5 21-5.6 73.9-10.1 145.8-12.8 36.4-1.4 75.6-2.3 114.7-2.8 13.7-.2 26.4-.3 37.8-.3h28.6l37.8.3c39.1.5 78.2 1.4 114.7 2.8 71.9 2.8 124.9 7.2 145.8 12.8 23 6.2 41.2 24.4 47.4 47.5 4.7 17.7 8.5 44.1 11.2 76.3 2.1 24.7 3.4 51.3 4.2 77.9.3 9.3.4 18 .5 25.7 0 2.7.1 5.1.1 7.1v4.8zM423 646l232-135-232-133z'));\nexports.YuqueOutline = getIcon('yuque', outline, getNode(newViewBox, 'M854.6 370.6c-9.9-39.4 9.9-102.2 73.4-124.4l-67.9-3.6s-25.7-90-143.6-98c-117.8-8.1-194.9-3-195-3 .1 0 87.4 55.6 52.4 154.7-25.6 52.5-65.8 95.6-108.8 144.7-1.3 1.3-2.5 2.6-3.5 3.7C319.4 605 96 860 96 860c245.9 64.4 410.7-6.3 508.2-91.1 20.5-.2 35.9-.3 46.3-.3 135.8 0 250.6-117.6 245.9-248.4-3.2-89.9-31.9-110.2-41.8-149.6zm-204.1 334c-10.6 0-26.2.1-46.8.3l-23.6.2-17.8 15.5c-47.1 41-104.4 71.5-171.4 87.6-52.5 12.6-110 16.2-172.7 9.6 18-20.5 36.5-41.6 55.4-63.1 92-104.6 173.8-197.5 236.9-268.5l1.4-1.4 1.3-1.5c4.1-4.6 20.6-23.3 24.7-28.1 9.7-11.1 17.3-19.9 24.5-28.6 30.7-36.7 52.2-67.8 69-102.2l1.6-3.3 1.2-3.4c13.7-38.8 15.4-76.9 6.2-112.8 22.5.7 46.5 1.9 71.7 3.6 33.3 2.3 55.5 12.9 71.1 29.2 5.8 6 10.2 12.5 13.4 18.7 1 2 1.7 3.6 2.3 5l5 17.7c-15.7 34.5-19.9 73.3-11.4 107.2 3 11.8 6.9 22.4 12.3 34.4 2.1 4.7 9.5 20.1 11 23.3 10.3 22.7 15.4 43 16.7 78.7 3.3 94.6-82.7 181.9-182 181.9z'));\nexports.AlibabaOutline = getIcon('alibaba', outline, getNode(newViewBox, 'M602.9 669.8c-37.2 2.6-33.6-17.3-11.5-46.2 50.4-67.2 143.7-158.5 147.9-225.2 5.8-86.6-81.3-113.4-171-113.4-62.4 1.6-127 18.9-171 34.6-151.6 53.5-246.6 137.5-306.9 232-62.4 93.4-43 183.2 91.8 185.8 101.8-4.2 170.5-32.5 239.7-68.2.5 0-192.5 55.1-263.9 14.7-7.9-4.2-15.7-10-17.8-26.2 0-33.1 54.6-67.7 86.6-78.7v-56.7c64.5 22.6 140.6 16.3 205.7-32 2.1 5.8 4.2 13.1 3.7 21h11c2.6-22.6-12.6-44.6-37.8-46.2 7.3 5.8 12.6 10.5 15.2 14.7l-1 1-.5.5c-83.9 58.8-165.3 31.5-173.1 29.9l46.7-45.7-13.1-33.1c92.9-32.5 169.5-56.2 296.9-78.7l-28.5-23 14.7-8.9c75.5 21 126.4 36.7 123.8 76.6-1 6.8-3.7 14.7-7.9 23.1C660.1 466.1 594 538 567.2 569c-17.3 20.5-34.6 39.4-46.7 58.3-13.6 19.4-20.5 37.3-21 53.5 2.6 131.8 391.4-61.9 468-112.9-111.7 47.8-232.9 93.5-364.6 101.9zm85-302.9c2.8 5.2 4.1 11.6 4.1 19.1-.1-6.8-1.4-13.3-4.1-19.1z'));\nexports.AlignCenterOutline = getIcon('align-center', outline, getNode(newViewBox, 'M264 230h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm496 424c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496zm144 140H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.AlignLeftOutline = getIcon('align-left', outline, getNode(newViewBox, 'M120 230h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 424h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm784 140H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.AlignRightOutline = getIcon('align-right', outline, getNode(newViewBox, 'M904 158H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 424H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 212H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-424H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.AlipayOutline = getIcon('alipay', outline, getNode(newViewBox, 'M789 610.3c-38.7-12.9-90.7-32.7-148.5-53.6 34.8-60.3 62.5-129 80.7-203.6H530.5v-68.6h233.6v-38.3H530.5V132h-95.4c-16.7 0-16.7 16.5-16.7 16.5v97.8H182.2v38.3h236.3v68.6H223.4v38.3h378.4a667.18 667.18 0 0 1-54.5 132.9c-122.8-40.4-253.8-73.2-336.1-53-52.6 13-86.5 36.1-106.5 60.3-91.4 111-25.9 279.6 167.2 279.6C386 811.2 496 747.6 581.2 643 708.3 704 960 808.7 960 808.7V659.4s-31.6-2.5-171-49.1zM253.9 746.6c-150.5 0-195-118.3-120.6-183.1 24.8-21.9 70.2-32.6 94.4-35 89.4-8.8 172.2 25.2 269.9 72.8-68.8 89.5-156.3 145.3-243.7 145.3z'));\nexports.AliyunOutline = getIcon('aliyun', outline, getNode(newViewBox, 'M959.2 383.9c-.3-82.1-66.9-148.6-149.1-148.6H575.9l21.6 85.2 201 43.7a42.58 42.58 0 0 1 32.9 39.7c.1.5.1 216.1 0 216.6a42.58 42.58 0 0 1-32.9 39.7l-201 43.7-21.6 85.3h234.2c82.1 0 148.8-66.5 149.1-148.6V383.9zM225.5 660.4a42.58 42.58 0 0 1-32.9-39.7c-.1-.6-.1-216.1 0-216.6.8-19.4 14.6-35.5 32.9-39.7l201-43.7 21.6-85.2H213.8c-82.1 0-148.8 66.4-149.1 148.6V641c.3 82.1 67 148.6 149.1 148.6H448l-21.6-85.3-200.9-43.9zm200.9-158.8h171v21.3h-171z'));\nexports.AmazonOutline = getIcon('amazon', outline, getNode(newViewBox, 'M825 768.9c-3.3-.9-7.3-.4-11.9 1.3-61.6 28.2-121.5 48.3-179.7 60.2C507.7 856 385.2 842.6 266 790.3c-33.1-14.6-79.1-39.2-138-74a9.36 9.36 0 0 0-5.3-2c-2-.1-3.7.1-5.3.9-1.6.8-2.8 1.8-3.7 3.1-.9 1.3-1.1 3.1-.4 5.4.6 2.2 2.1 4.7 4.6 7.4 10.4 12.2 23.3 25.2 38.6 39s35.6 29.4 60.9 46.8c25.3 17.4 51.8 32.9 79.3 46.4 27.6 13.5 59.6 24.9 96.1 34.1s73 13.8 109.4 13.8c36.2 0 71.4-3.7 105.5-10.9 34.2-7.3 63-15.9 86.5-25.9 23.4-9.9 45-21 64.8-33 19.8-12 34.4-22.2 43.9-30.3 9.5-8.2 16.3-14.6 20.2-19.4 4.6-5.7 6.9-10.6 6.9-14.9.1-4.5-1.7-7.1-5-7.9zM527.4 348.1c-15.2 1.3-33.5 4.1-55 8.3-21.5 4.1-41.4 9.3-59.8 15.4s-37.2 14.6-56.3 25.4c-19.2 10.8-35.5 23.2-49 37s-24.5 31.1-33.1 52c-8.6 20.8-12.9 43.7-12.9 68.7 0 27.1 4.7 51.2 14.3 72.5 9.5 21.3 22.2 38 38.2 50.4 15.9 12.4 34 22.1 54 29.2 20 7.1 41.2 10.3 63.2 9.4 22-.9 43.5-4.3 64.4-10.3 20.8-5.9 40.4-15.4 58.6-28.3 18.2-12.9 33.1-28.2 44.8-45.7 4.3 6.6 8.1 11.5 11.5 14.7l8.7 8.9c5.8 5.9 14.7 14.6 26.7 26.1 11.9 11.5 24.1 22.7 36.3 33.7l104.4-99.9-6-4.9c-4.3-3.3-9.4-8-15.2-14.3-5.8-6.2-11.6-13.1-17.2-20.5-5.7-7.4-10.6-16.1-14.7-25.9-4.1-9.8-6.2-19.3-6.2-28.5V258.7c0-10.1-1.9-21-5.7-32.8-3.9-11.7-10.7-24.5-20.7-38.3-10-13.8-22.4-26.2-37.2-37-14.9-10.8-34.7-20-59.6-27.4-24.8-7.4-52.6-11.1-83.2-11.1-31.3 0-60.4 3.7-87.6 10.9-27.1 7.3-50.3 17-69.7 29.2-19.3 12.2-35.9 26.3-49.7 42.4-13.8 16.1-24.1 32.9-30.8 50.4-6.7 17.5-10.1 35.2-10.1 53.1L408 310c5.5-16.4 12.9-30.6 22-42.8 9.2-12.2 17.9-21 25.8-26.5 8-5.5 16.6-9.9 25.7-13.2 9.2-3.3 15.4-5 18.6-5.4 3.2-.3 5.7-.4 7.6-.4 26.7 0 45.2 7.9 55.6 23.6 6.5 9.5 9.7 23.9 9.7 43.3v56.6c-15.2.6-30.4 1.6-45.6 2.9zM573.1 500c0 16.6-2.2 31.7-6.5 45-9.2 29.1-26.7 47.4-52.4 54.8-22.4 6.6-43.7 3.3-63.9-9.8-21.5-14-32.2-33.8-32.2-59.3 0-19.9 5-36.9 15-51.1 10-14.1 23.3-24.7 40-31.7s33-12 49-14.9c15.9-3 33-4.8 51-5.4V500zm335.2 218.9c-4.3-5.4-15.9-8.9-34.9-10.7-19-1.8-35.5-1.7-49.7.4-15.3 1.8-31.1 6.2-47.3 13.4-16.3 7.1-23.4 13.1-21.6 17.8l.7 1.3.9.7 1.4.2h4.6c.8 0 1.8-.1 3.2-.2 1.4-.1 2.7-.3 3.9-.4 1.2-.1 2.9-.3 5.1-.4 2.1-.1 4.1-.4 6-.7.3 0 3.7-.3 10.3-.9 6.6-.6 11.4-1 14.3-1.3 2.9-.3 7.8-.6 14.5-.9 6.7-.3 12.1-.3 16.1 0 4 .3 8.5.7 13.6 1.1 5.1.4 9.2 1.3 12.4 2.7 3.2 1.3 5.6 3 7.1 5.1 5.2 6.6 4.2 21.2-3 43.9s-14 40.8-20.4 54.2c-2.8 5.7-2.8 9.2 0 10.7s6.7.1 11.9-4c15.6-12.2 28.6-30.6 39.1-55.3 6.1-14.6 10.5-29.8 13.1-45.7 2.4-15.9 2-26.2-1.3-31z'));\nexports.AntCloudOutline = getIcon('ant-cloud', outline, getNode(newViewBox, 'M378.9 738c-3.1 0-6.1-.5-8.8-1.5l4.4 30.7h26.3l-15.5-29.9c-2.1.5-4.2.7-6.4.7zm421-291.2c-12.6 0-24.8 1.5-36.5 4.2-21.4-38.4-62.3-64.3-109.3-64.3-6.9 0-13.6.6-20.2 1.6-35.4-77.4-113.4-131.1-203.9-131.1-112.3 0-205.3 82.6-221.6 190.4C127.3 455.5 64 523.8 64 607c0 88.4 71.6 160.1 160 160.2h50l13.2-27.6c-26.2-8.3-43.3-29-39.1-48.8 4.6-21.6 32.8-33.9 63.1-27.5 22.9 4.9 40.4 19.1 45.5 35.1a26.1 26.1 0 0 1 22.1-12.4h.2c-.8-3.2-1.2-6.5-1.2-9.9 0-20.1 14.8-36.7 34.1-39.6v-25.4c0-4.4 3.6-8 8-8s8 3.6 8 8v26.3c4.6 1.2 8.8 3.2 12.6 5.8l19.5-21.4c3-3.3 8-3.5 11.3-.5 3.3 3 3.5 8 .5 11.3l-20 22-.2.2a40 40 0 0 1-46.9 59.2c-.4 5.6-2.6 10.7-6 14.8l20 38.4H804v-.1c86.5-2.2 156-73 156-160.1 0-88.5-71.7-160.2-160.1-160.2zM338.2 737.2l-4.3 30h24.4l-5.9-41.5c-3.5 4.6-8.3 8.5-14.2 11.5zM797.5 305a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-65.7 61.3a24 24 0 1 0 48 0 24 24 0 1 0-48 0zM303.4 742.9l-11.6 24.3h26l3.5-24.7c-5.7.8-11.7 1-17.9.4z'));\nexports.AntDesignOutline = getIcon('ant-design', outline, getNode(newViewBox, 'M716.3 313.8c19-18.9 19-49.7 0-68.6l-69.9-69.9.1.1c-18.5-18.5-50.3-50.3-95.3-95.2-21.2-20.7-55.5-20.5-76.5.5L80.9 474.2a53.84 53.84 0 0 0 0 76.4L474.6 944a54.14 54.14 0 0 0 76.5 0l165.1-165c19-18.9 19-49.7 0-68.6a48.7 48.7 0 0 0-68.7 0l-125 125.2c-5.2 5.2-13.3 5.2-18.5 0L189.5 521.4c-5.2-5.2-5.2-13.3 0-18.5l314.4-314.2c.4-.4.9-.7 1.3-1.1 5.2-4.1 12.4-3.7 17.2 1.1l125.2 125.1c19 19 49.8 19 68.7 0zM408.6 514.4a106.3 106.2 0 1 0 212.6 0 106.3 106.2 0 1 0-212.6 0zm536.2-38.6L821.9 353.5c-19-18.9-49.8-18.9-68.7.1a48.4 48.4 0 0 0 0 68.6l83 82.9c5.2 5.2 5.2 13.3 0 18.5l-81.8 81.7a48.4 48.4 0 0 0 0 68.6 48.7 48.7 0 0 0 68.7 0l121.8-121.7a53.93 53.93 0 0 0-.1-76.4z'));\nexports.ApartmentOutline = getIcon('apartment', outline, getNode(newViewBox, 'M908 640H804V488c0-4.4-3.6-8-8-8H548v-96h108c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h108v96H228c-4.4 0-8 3.6-8 8v152H116c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V656c0-8.8-7.2-16-16-16H292v-88h440v88H620c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V656c0-8.8-7.2-16-16-16zm-564 76v168H176V716h168zm84-408V140h168v168H428zm420 576H680V716h168v168z'));\nexports.AreaChartOutline = getIcon('area-chart', outline, getNode(newViewBox, 'M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-616-64h536c4.4 0 8-3.6 8-8V284c0-7.2-8.7-10.7-13.7-5.7L592 488.6l-125.4-124a8.03 8.03 0 0 0-11.3 0l-189 189.6a7.87 7.87 0 0 0-2.3 5.6V720c0 4.4 3.6 8 8 8z'));\nexports.ArrowLeftOutline = getIcon('arrow-left', outline, getNode(newViewBox, 'M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 0 0 0 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z'));\nexports.ArrowRightOutline = getIcon('arrow-right', outline, getNode(newViewBox, 'M869 487.8L491.2 159.9c-2.9-2.5-6.6-3.9-10.5-3.9h-88.5c-7.4 0-10.8 9.2-5.2 14l350.2 304H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h585.1L386.9 854c-5.6 4.9-2.2 14 5.2 14h91.5c1.9 0 3.8-.7 5.2-2L869 536.2a32.07 32.07 0 0 0 0-48.4z'));\nexports.ArrowUpOutline = getIcon('arrow-up', outline, getNode(newViewBox, 'M868 545.5L536.1 163a31.96 31.96 0 0 0-48.3 0L156 545.5a7.97 7.97 0 0 0 6 13.2h81c4.6 0 9-2 12.1-5.5L474 300.9V864c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V300.9l218.9 252.3c3 3.5 7.4 5.5 12.1 5.5h81c6.8 0 10.5-8 6-13.2z'));\nexports.ArrowsAltOutline = getIcon('arrows-alt', outline, getNode(newViewBox, 'M855 160.1l-189.2 23.5c-6.6.8-9.3 8.8-4.7 13.5l54.7 54.7-153.5 153.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l153.6-153.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L863.9 169a7.9 7.9 0 0 0-8.9-8.9zM416.6 562.3a8.03 8.03 0 0 0-11.3 0L251.8 715.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L160.1 855c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 153.6-153.6c3.1-3.1 3.1-8.2 0-11.3l-45.2-45z'));\nexports.AuditOutline = getIcon('audit', outline, getNode(newViewBox, 'M296 250c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 144H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 458H208V148h560v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm440-88H728v-36.6c46.3-13.8 80-56.6 80-107.4 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 50.7 33.7 93.6 80 107.4V764H520c-8.8 0-16 7.2-16 16v152c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16V780c0-8.8-7.2-16-16-16zM646 620c0-27.6 22.4-50 50-50s50 22.4 50 50-22.4 50-50 50-50-22.4-50-50zm180 266H566v-60h260v60z'));\nexports.ArrowDownOutline = getIcon('arrow-down', outline, getNode(newViewBox, 'M862 465.3h-81c-4.6 0-9 2-12.1 5.5L550 723.1V160c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v563.1L255.1 470.8c-3-3.5-7.4-5.5-12.1-5.5h-81c-6.8 0-10.5 8.1-6 13.2L487.9 861a31.96 31.96 0 0 0 48.3 0L868 478.5c4.5-5.2.8-13.2-6-13.2z'));\nexports.BarChartOutline = getIcon('bar-chart', outline, getNode(newViewBox, 'M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-600-80h56c4.4 0 8-3.6 8-8V560c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V384c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v320c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V462c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v242c0 4.4 3.6 8 8 8zm152 0h56c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v400c0 4.4 3.6 8 8 8z'));\nexports.BarcodeOutline = getIcon('barcode', outline, getNode(newViewBox, 'M120 160H72c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zm833 0h-48c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zM200 736h112c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm321 0h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm126 0h178c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8H647c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm-255 0h48c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8zm-79 64H201c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm257 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm256 0H648c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h178c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-385 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'));\nexports.BarsOutline = getIcon('bars', outline, getNode(normalViewBox, 'M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z'));\nexports.BehanceOutline = getIcon('behance', outline, getNode(newViewBox, 'M634 294.3h199.5v48.4H634zM434.1 485.8c44.1-21.1 67.2-53.2 67.2-102.8 0-98.1-73-121.9-157.3-121.9H112v492.4h238.5c89.4 0 173.3-43 173.3-143 0-61.8-29.2-107.5-89.7-124.7zM220.2 345.1h101.5c39.1 0 74.2 10.9 74.2 56.3 0 41.8-27.3 58.6-66 58.6H220.2V345.1zm115.5 324.8H220.1V534.3H338c47.6 0 77.7 19.9 77.7 70.3 0 49.6-35.9 65.3-80 65.3zm575.8-89.5c0-105.5-61.7-193.4-173.3-193.4-108.5 0-182.3 81.7-182.3 188.8 0 111 69.9 187.2 182.3 187.2 85.1 0 140.2-38.3 166.7-120h-86.3c-9.4 30.5-47.6 46.5-77.3 46.5-57.4 0-87.4-33.6-87.4-90.7h256.9c.3-5.9.7-12.1.7-18.4zM653.9 537c3.1-46.9 34.4-76.2 81.2-76.2 49.2 0 73.8 28.9 78.1 76.2H653.9z'));\nexports.BgColorsOutline = getIcon('bg-colors', outline, getNode(newViewBox, 'M766.4 744.3c43.7 0 79.4-36.2 79.4-80.5 0-53.5-79.4-140.8-79.4-140.8S687 610.3 687 663.8c0 44.3 35.7 80.5 79.4 80.5zm-377.1-44.1c7.1 7.1 18.6 7.1 25.6 0l256.1-256c7.1-7.1 7.1-18.6 0-25.6l-256-256c-.6-.6-1.3-1.2-2-1.7l-78.2-78.2a9.11 9.11 0 0 0-12.8 0l-48 48a9.11 9.11 0 0 0 0 12.8l67.2 67.2-207.8 207.9c-7.1 7.1-7.1 18.6 0 25.6l255.9 256zm12.9-448.6l178.9 178.9H223.4l178.8-178.9zM904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8z'));\nexports.BlockOutline = getIcon('block', outline, getNode(newViewBox, 'M856 376H648V168c0-8.8-7.2-16-16-16H168c-8.8 0-16 7.2-16 16v464c0 8.8 7.2 16 16 16h208v208c0 8.8 7.2 16 16 16h464c8.8 0 16-7.2 16-16V392c0-8.8-7.2-16-16-16zm-480 16v188H220V220h360v156H392c-8.8 0-16 7.2-16 16zm204 52v136H444V444h136zm224 360H444V648h188c8.8 0 16-7.2 16-16V444h156v360z'));\nexports.BoldOutline = getIcon('bold', outline, getNode(newViewBox, 'M697.8 481.4c33.6-35 54.2-82.3 54.2-134.3v-10.2C752 229.3 663.9 142 555.3 142H259.4c-15.1 0-27.4 12.3-27.4 27.4v679.1c0 16.3 13.2 29.5 29.5 29.5h318.7c117 0 211.8-94.2 211.8-210.5v-11c0-73-37.4-137.3-94.2-175.1zM328 238h224.7c57.1 0 103.3 44.4 103.3 99.3v9.5c0 54.8-46.3 99.3-103.3 99.3H328V238zm366.6 429.4c0 62.9-51.7 113.9-115.5 113.9H328V542.7h251.1c63.8 0 115.5 51 115.5 113.9v10.8z'));\nexports.BorderHorizontalOutline = getIcon('border-horizontal', outline, getNode(newViewBox, 'M540 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-664 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm664 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.BorderBottomOutline = getIcon('border-bottom', outline, getNode(newViewBox, 'M872 808H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-720-94h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-498h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm166 166h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 332h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm222-72h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388 426h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm388-404h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-388 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z'));\nexports.BorderInnerOutline = getIcon('border-inner', outline, getNode(newViewBox, 'M872 476H548V144h-72v332H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h324v332h72V548h324c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-664h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM650 216h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-592h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-166 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-426h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 260h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.BorderLeftOutline = getIcon('border-left', outline, getNode(newViewBox, 'M208 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM540 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.BorderOuterOutline = getIcon('border-outer', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656zM484 366h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM302 548h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm364 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-182 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0 182h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z'));\nexports.BorderRightOutline = getIcon('border-right', outline, getNode(newViewBox, 'M872 144h-56c-4.4 0-8 3.6-8 8v720c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V152c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-498 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm498 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM374 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.BorderTopOutline = getIcon('border-top', outline, getNode(newViewBox, 'M872 144H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM208 310h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm166 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332-498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 332h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.BorderVerticleOutline = getIcon('border-verticle', outline, getNode(newViewBox, 'M872 476H152c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-166h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-664h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 498h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM650 216h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm56 592h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-56-592h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-166 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM208 808h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM152 382h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm332 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM208 642h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm332 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.BorderOutline = getIcon('border', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'));\nexports.CheckOutline = getIcon('check', outline, getNode(newViewBox, 'M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z'));\nexports.BranchesOutline = getIcon('branches', outline, getNode(newViewBox, 'M740 161c-61.8 0-112 50.2-112 112 0 50.1 33.1 92.6 78.5 106.9v95.9L320 602.4V318.1c44.2-15 76-56.9 76-106.1 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-27.8l423.5-138.7a50.52 50.52 0 0 0 34.9-48.2V378.2c42.9-15.8 73.6-57 73.6-105.2 0-61.8-50.2-112-112-112zm-504 51a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm96 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm408-491a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'));\nexports.CiOutline = getIcon('ci', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm218-572.1h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z'));\nexports.CloseOutline = getIcon('close', outline, getNode(newViewBox, 'M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 0 0 203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z'));\nexports.CloudDownloadOutline = getIcon('cloud-download', outline, getNode(newViewBox, 'M624 706.3h-74.1V464c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v242.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.7a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9z', 'M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 0 1-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z'));\nexports.CloudServerOutline = getIcon('cloud-server', outline, getNode(newViewBox, 'M704 446H320c-4.4 0-8 3.6-8 8v402c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8V454c0-4.4-3.6-8-8-8zm-328 64h272v117H376V510zm272 290H376V683h272v117z', 'M424 748a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm0-178a32 32 0 1 0 64 0 32 32 0 1 0-64 0z', 'M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z'));\nexports.CloudSyncOutline = getIcon('cloud-sync', outline, getNode(newViewBox, 'M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z', 'M376.9 656.4c1.8-33.5 15.7-64.7 39.5-88.6 25.4-25.5 60-39.8 96-39.8 36.2 0 70.3 14.1 96 39.8 1.4 1.4 2.7 2.8 4.1 4.3l-25 19.6a8 8 0 0 0 3 14.1l98.2 24c5 1.2 9.9-2.6 9.9-7.7l.5-101.3c0-6.7-7.6-10.5-12.9-6.3L663 532.7c-36.6-42-90.4-68.6-150.5-68.6-107.4 0-195 85.1-199.4 191.7-.2 4.5 3.4 8.3 8 8.3H369c4.2-.1 7.7-3.4 7.9-7.7zM703 664h-47.9c-4.2 0-7.7 3.3-8 7.6-1.8 33.5-15.7 64.7-39.5 88.6-25.4 25.5-60 39.8-96 39.8-36.2 0-70.3-14.1-96-39.8-1.4-1.4-2.7-2.8-4.1-4.3l25-19.6a8 8 0 0 0-3-14.1l-98.2-24c-5-1.2-9.9 2.6-9.9 7.7l-.4 101.4c0 6.7 7.6 10.5 12.9 6.3l23.2-18.2c36.6 42 90.4 68.6 150.5 68.6 107.4 0 195-85.1 199.4-191.7.2-4.5-3.4-8.3-8-8.3z'));\nexports.CloudUploadOutline = getIcon('cloud-upload', outline, getNode(newViewBox, 'M518.3 459a8 8 0 0 0-12.6 0l-112 141.7a7.98 7.98 0 0 0 6.3 12.9h73.9V856c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V613.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 459z', 'M811.4 366.7C765.6 245.9 648.9 160 512.2 160S258.8 245.8 213 366.6C127.3 389.1 64 467.2 64 560c0 110.5 89.5 200 199.9 200H304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8h-40.1c-33.7 0-65.4-13.4-89-37.7-23.5-24.2-36-56.8-34.9-90.6.9-26.4 9.9-51.2 26.2-72.1 16.7-21.3 40.1-36.8 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10C846.1 454.5 884 503.8 884 560c0 33.1-12.9 64.3-36.3 87.7a123.07 123.07 0 0 1-87.6 36.3H720c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h40.1C870.5 760 960 670.5 960 560c0-92.7-63.1-170.7-148.6-193.3z'));\nexports.ClusterOutline = getIcon('cluster', outline, getNode(newViewBox, 'M888 680h-54V540H546v-92h238c8.8 0 16-7.2 16-16V168c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h238v92H190v140h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8h-54v-72h220v72h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8h-54v-72h220v72h-54c-4.4 0-8 3.6-8 8v176c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V688c0-4.4-3.6-8-8-8zM256 805.3c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zm288 0c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zM288 384V216h448v168H288zm544 421.3c0 1.5-1.2 2.7-2.7 2.7h-58.7c-1.5 0-2.7-1.2-2.7-2.7v-58.7c0-1.5 1.2-2.7 2.7-2.7h58.7c1.5 0 2.7 1.2 2.7 2.7v58.7zM360 300a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'));\nexports.CodeSandboxOutline = getIcon('code-sandbox', outline, getNode(newViewBox, 'M709.6 210l.4-.2h.2L512 96 313.9 209.8h-.2l.7.3L151.5 304v416L512 928l360.5-208V304l-162.9-94zM482.7 843.6L339.6 761V621.4L210 547.8V372.9l272.7 157.3v313.4zM238.2 321.5l134.7-77.8 138.9 79.7 139.1-79.9 135.2 78-273.9 158-274-158zM814 548.3l-128.8 73.1v139.1l-143.9 83V530.4L814 373.1v175.2z'));\nexports.CodepenOutline = getIcon('codepen', outline, getNode(newViewBox, 'M911.7 385.3l-.3-1.5c-.2-1-.3-1.9-.6-2.9-.2-.6-.4-1.1-.5-1.7-.3-.8-.5-1.7-.9-2.5-.2-.6-.5-1.1-.8-1.7-.4-.8-.8-1.5-1.2-2.3-.3-.5-.6-1.1-1-1.6-.8-1.2-1.7-2.4-2.6-3.6-.5-.6-1.1-1.3-1.7-1.9-.4-.5-.9-.9-1.4-1.3-.6-.6-1.3-1.1-1.9-1.6-.5-.4-1-.8-1.6-1.2-.2-.1-.4-.3-.6-.4L531.1 117.8a34.3 34.3 0 0 0-38.1 0L127.3 361.3c-.2.1-.4.3-.6.4-.5.4-1 .8-1.6 1.2-.7.5-1.3 1.1-1.9 1.6-.5.4-.9.9-1.4 1.3-.6.6-1.2 1.2-1.7 1.9-1 1.1-1.8 2.3-2.6 3.6-.3.5-.7 1-1 1.6-.4.7-.8 1.5-1.2 2.3-.3.5-.5 1.1-.8 1.7-.3.8-.6 1.7-.9 2.5-.2.6-.4 1.1-.5 1.7-.2.9-.4 1.9-.6 2.9l-.3 1.5c-.2 1.5-.3 3-.3 4.5v243.5c0 1.5.1 3 .3 4.5l.3 1.5.6 2.9c.2.6.3 1.1.5 1.7.3.9.6 1.7.9 2.5.2.6.5 1.1.8 1.7.4.8.7 1.5 1.2 2.3.3.5.6 1.1 1 1.6.5.7.9 1.4 1.5 2.1l1.2 1.5c.5.6 1.1 1.3 1.7 1.9.4.5.9.9 1.4 1.3.6.6 1.3 1.1 1.9 1.6.5.4 1 .8 1.6 1.2.2.1.4.3.6.4L493 905.7c5.6 3.8 12.3 5.8 19.1 5.8 6.6 0 13.3-1.9 19.1-5.8l365.6-243.5c.2-.1.4-.3.6-.4.5-.4 1-.8 1.6-1.2.7-.5 1.3-1.1 1.9-1.6.5-.4.9-.9 1.4-1.3.6-.6 1.2-1.2 1.7-1.9l1.2-1.5 1.5-2.1c.3-.5.7-1 1-1.6.4-.8.8-1.5 1.2-2.3.3-.5.5-1.1.8-1.7.3-.8.6-1.7.9-2.5.2-.5.4-1.1.5-1.7.3-.9.4-1.9.6-2.9l.3-1.5c.2-1.5.3-3 .3-4.5V389.8c-.3-1.5-.4-3-.6-4.5zM546.4 210.5l269.4 179.4-120.3 80.4-149-99.6V210.5zm-68.8 0v160.2l-149 99.6-120.3-80.4 269.3-179.4zM180.7 454.1l86 57.5-86 57.5v-115zm296.9 358.5L208.3 633.2l120.3-80.4 149 99.6v160.2zM512 592.8l-121.6-81.2L512 430.3l121.6 81.2L512 592.8zm34.4 219.8V652.4l149-99.6 120.3 80.4-269.3 179.4zM843.3 569l-86-57.5 86-57.5v115z'));\nexports.CoffeeOutline = getIcon('coffee', outline, getNode(normalViewBox, 'M275 281c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36zm613 144H768c0-39.8-32.2-72-72-72H200c-39.8 0-72 32.2-72 72v248c0 3.4.2 6.7.7 9.9-.5 7-.7 14-.7 21.1 0 176.7 143.3 320 320 320 160.1 0 292.7-117.5 316.3-271H888c39.8 0 72-32.2 72-72V497c0-39.8-32.2-72-72-72zM696 681h-1.1c.7 7.6 1.1 15.2 1.1 23 0 137-111 248-248 248S200 841 200 704c0-7.8.4-15.4 1.1-23H200V425h496v256zm192-8H776V497h112v176zM613 281c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36zm-170 0c19.9 0 36-16.1 36-36V36c0-19.9-16.1-36-36-36s-36 16.1-36 36v209c0 19.9 16.1 36 36 36z'));\nexports.ColumHeightOutline = getIcon('colum-height', outline, getNode(newViewBox, 'M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z'));\nexports.ColumnWidthOutline = getIcon('column-width', outline, getNode(newViewBox, 'M180 176h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zm724 0h-60c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8zM785.3 504.3L657.7 403.6a7.23 7.23 0 0 0-11.7 5.7V476H378v-62.8c0-6-7-9.4-11.7-5.7L238.7 508.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h268v62.8c0 6 7 9.4 11.7 5.7l127.5-100.8c3.8-2.9 3.8-8.5.2-11.4z'));\nexports.CopyrightOutline = getIcon('copyright', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm5.6-532.7c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z'));\nexports.DashOutline = getIcon('dash', outline, getNode(newViewBox, 'M112 476h160v72H112zm320 0h160v72H432zm320 0h160v72H752z'));\nexports.DeploymentUnitOutline = getIcon('deployment-unit', outline, getNode(newViewBox, 'M888.3 693.2c-42.5-24.6-94.3-18-129.2 12.8l-53-30.7V523.6c0-15.7-8.4-30.3-22-38.1l-136-78.3v-67.1c44.2-15 76-56.8 76-106.1 0-61.9-50.1-112-112-112s-112 50.1-112 112c0 49.3 31.8 91.1 76 106.1v67.1l-136 78.3c-13.6 7.8-22 22.4-22 38.1v151.6l-53 30.7c-34.9-30.8-86.8-37.4-129.2-12.8-53.5 31-71.7 99.4-41 152.9 30.8 53.5 98.9 71.9 152.2 41 42.5-24.6 62.7-73 53.6-118.8l48.7-28.3 140.6 81c6.8 3.9 14.4 5.9 22 5.9s15.2-2 22-5.9L674.5 740l48.7 28.3c-9.1 45.7 11.2 94.2 53.6 118.8 53.3 30.9 121.5 12.6 152.2-41 30.8-53.6 12.6-122-40.7-152.9zm-673 138.4a47.6 47.6 0 0 1-65.2-17.6c-13.2-22.9-5.4-52.3 17.5-65.5a47.6 47.6 0 0 1 65.2 17.6c13.2 22.9 5.4 52.3-17.5 65.5zM522 463.8zM464 234a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm170 446.2l-122 70.3-122-70.3V539.8l122-70.3 122 70.3v140.4zm239.9 133.9c-13.2 22.9-42.4 30.8-65.2 17.6-22.8-13.2-30.7-42.6-17.5-65.5s42.4-30.8 65.2-17.6c22.9 13.2 30.7 42.5 17.5 65.5z'));\nexports.DesktopOutline = getIcon('desktop', outline, getNode(newViewBox, 'M928 140H96c-17.7 0-32 14.3-32 32v496c0 17.7 14.3 32 32 32h380v112H304c-8.8 0-16 7.2-16 16v48c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-48c0-8.8-7.2-16-16-16H548V700h380c17.7 0 32-14.3 32-32V172c0-17.7-14.3-32-32-32zm-40 488H136V212h752v416z'));\nexports.DingdingOutline = getIcon('dingding', outline, getNode(newViewBox, 'M573.7 252.5C422.5 197.4 201.3 96.7 201.3 96.7c-15.7-4.1-17.9 11.1-17.9 11.1-5 61.1 33.6 160.5 53.6 182.8 19.9 22.3 319.1 113.7 319.1 113.7S326 357.9 270.5 341.9c-55.6-16-37.9 17.8-37.9 17.8 11.4 61.7 64.9 131.8 107.2 138.4 42.2 6.6 220.1 4 220.1 4s-35.5 4.1-93.2 11.9c-42.7 5.8-97 12.5-111.1 17.8-33.1 12.5 24 62.6 24 62.6 84.7 76.8 129.7 50.5 129.7 50.5 33.3-10.7 61.4-18.5 85.2-24.2L565 743.1h84.6L603 928l205.3-271.9H700.8l22.3-38.7c.3.5.4.8.4.8S799.8 496.1 829 433.8l.6-1h-.1c5-10.8 8.6-19.7 10-25.8 17-71.3-114.5-99.4-265.8-154.5z'));\nexports.DisconnectOutline = getIcon('disconnect', outline, getNode(newViewBox, 'M832.6 191.4c-84.6-84.6-221.5-84.6-306 0l-96.9 96.9 51 51 96.9-96.9c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204l-96.9 96.9 51.1 51.1 96.9-96.9c84.4-84.6 84.4-221.5-.1-306.1zM446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l96.9-96.9-51.1-51.1-96.9 96.9c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l96.9-96.9-51-51-96.8 97zM260.3 209.4a8.03 8.03 0 0 0-11.3 0L209.4 249a8.03 8.03 0 0 0 0 11.3l554.4 554.4c3.1 3.1 8.2 3.1 11.3 0l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3L260.3 209.4z'));\nexports.DollarOutline = getIcon('dollar', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm47.7-395.2l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z'));\nexports.DotChartOutline = getIcon('dot-chart', outline, getNode(newViewBox, 'M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm118-224a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm158 228a96 96 0 1 0 192 0 96 96 0 1 0-192 0zm148-314a56 56 0 1 0 112 0 56 56 0 1 0-112 0z'));\nexports.DoubleLeftOutline = getIcon('double-left', outline, getNode(newViewBox, 'M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 0 0 0 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 0 0 0 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z'));\nexports.DoubleRightOutline = getIcon('double-right', outline, getNode(newViewBox, 'M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 0 0 188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 0 0 492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z'));\nexports.DownOutline = getIcon('down', outline, getNode(newViewBox, 'M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z'));\nexports.DownloadOutline = getIcon('download', outline, getNode(newViewBox, 'M505.7 661a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z'));\nexports.DragOutline = getIcon('drag', outline, getNode(newViewBox, 'M909.3 506.3L781.7 405.6a7.23 7.23 0 0 0-11.7 5.7V476H548V254h64.8c6 0 9.4-7 5.7-11.7L517.7 114.7a7.14 7.14 0 0 0-11.3 0L405.6 242.3a7.23 7.23 0 0 0 5.7 11.7H476v222H254v-64.8c0-6-7-9.4-11.7-5.7L114.7 506.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V548h222v222h-64.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V548h222v64.8c0 6 7 9.4 11.7 5.7l127.5-100.8a7.3 7.3 0 0 0 .1-11.4z'));\nexports.DribbbleOutline = getIcon('dribbble', outline, getNode(newViewBox, 'M512 96C282.6 96 96 282.6 96 512s186.6 416 416 416 416-186.6 416-416S741.4 96 512 96zm275.1 191.8c49.5 60.5 79.5 137.5 80.2 221.4-11.7-2.5-129.2-26.3-247.4-11.4-2.5-6.1-5-12.2-7.6-18.3-7.4-17.3-15.3-34.6-23.6-51.5C720 374.3 779.6 298 787.1 287.8zM512 157.2c90.3 0 172.8 33.9 235.5 89.5-6.4 9.1-59.9 81-186.2 128.4-58.2-107-122.7-194.8-132.6-208 27.3-6.6 55.2-9.9 83.3-9.9zM360.9 191c9.4 12.8 72.9 100.9 131.7 205.5C326.4 440.6 180 440 164.1 439.8c23.1-110.3 97.4-201.9 196.8-248.8zM156.7 512.5c0-3.6.1-7.3.2-10.9 15.5.3 187.7 2.5 365.2-50.6 10.2 19.9 19.9 40.1 28.8 60.3-4.7 1.3-9.4 2.7-14 4.2C353.6 574.9 256.1 736.4 248 750.1c-56.7-63-91.3-146.3-91.3-237.6zM512 867.8c-82.2 0-157.9-28-218.1-75 6.4-13.1 78.3-152 278.7-221.9l2.3-.8c49.9 129.6 70.5 238.3 75.8 269.5A350.46 350.46 0 0 1 512 867.8zm198.5-60.7c-3.6-21.6-22.5-125.6-69-253.3C752.9 536 850.7 565.2 862.8 569c-15.8 98.8-72.5 184.2-152.3 238.1z'));\nexports.DropboxOutline = getIcon('dropbox', outline, getNode(newViewBox, 'M64 556.9l264.2 173.5L512.5 577 246.8 412.7zm896-290.3zm0 0L696.8 95 512.5 248.5l265.2 164.2L512.5 577l184.3 153.4L960 558.8 777.7 412.7zM513 609.8L328.2 763.3l-79.4-51.5v57.8L513 928l263.7-158.4v-57.8l-78.9 51.5zM328.2 95L64 265.1l182.8 147.6 265.7-164.2zM64 556.9z'));\nexports.EllipsisOutline = getIcon('ellipsis', outline, getNode(newViewBox, 'M176 511a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm280 0a56 56 0 1 0 112 0 56 56 0 1 0-112 0z'));\nexports.EnterOutline = getIcon('enter', outline, getNode(newViewBox, 'M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 0 0 0 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z'));\nexports.EuroOutline = getIcon('euro', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm117.7-588.6c-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H344c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H344c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H439.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H447.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8z'));\nexports.ExceptionOutline = getIcon('exception', outline, getNode(newViewBox, 'M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM640 812a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm12-64h40c4.4 0 8-3.6 8-8V628c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.ExclamationOutline = getIcon('exclamation', outline, getNode(newViewBox, 'M448 804a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm32-168h64c4.4 0 8-3.6 8-8V164c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z'));\nexports.ExportOutline = getIcon('export', outline, getNode(newViewBox, 'M888.3 757.4h-53.8c-4.2 0-7.7 3.5-7.7 7.7v61.8H197.1V197.1h629.8v61.8c0 4.2 3.5 7.7 7.7 7.7h53.8c4.2 0 7.7-3.4 7.7-7.7V158.7c0-17-13.7-30.7-30.7-30.7H158.7c-17 0-30.7 13.7-30.7 30.7v706.6c0 17 13.7 30.7 30.7 30.7h706.6c17 0 30.7-13.7 30.7-30.7V765.1c0-4.3-3.5-7.7-7.7-7.7zm18.6-251.7L765 393.7c-5.3-4.2-13-.4-13 6.3v76H438c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 0 0 0-12.6z'));\nexports.FallOutline = getIcon('fall', outline, getNode(newViewBox, 'M925.9 804l-24-199.2c-.8-6.6-8.9-9.4-13.6-4.7L829 659.5 557.7 388.3c-6.3-6.2-16.4-6.2-22.6 0L433.3 490 156.6 213.3a8.03 8.03 0 0 0-11.3 0l-45 45.2a8.03 8.03 0 0 0 0 11.3L422 591.7c6.2 6.3 16.4 6.3 22.6 0L546.4 490l226.1 226-59.3 59.3a8.01 8.01 0 0 0 4.7 13.6l199.2 24c5.1.7 9.5-3.7 8.8-8.9z'));\nexports.FileDoneOutline = getIcon('file-done', outline, getNode(newViewBox, 'M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm376 116c-119.3 0-216 96.7-216 216s96.7 216 216 216 216-96.7 216-216-96.7-216-216-216zm107.5 323.5C750.8 868.2 712.6 884 672 884s-78.8-15.8-107.5-44.5C535.8 810.8 520 772.6 520 732s15.8-78.8 44.5-107.5C593.2 595.8 631.4 580 672 580s78.8 15.8 107.5 44.5C808.2 653.2 824 691.4 824 732s-15.8 78.8-44.5 107.5zM761 656h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-23.1-31.9a7.92 7.92 0 0 0-6.5-3.3H573c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.9-5.3.1-12.7-6.4-12.7zM440 852H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.FileJpgOutline = getIcon('file-jpg', outline, getNode(normalViewBox, 'M874.6 301.8L596.8 21.3c-4.5-4.5-9.4-8.3-14.7-11.5-1.4-.8-2.8-1.6-4.3-2.3-.9-.5-1.9-.9-2.8-1.3-9-4-18.9-6.2-29-6.2H201c-39.8 0-73 32.2-73 72v880c0 39.8 33.2 72 73 72h623c39.8 0 71-32.2 71-72V352.5c0-19-7-37.2-20.4-50.7zM583 110.4L783.8 312H583V110.4zM823 952H200V72h311v240c0 39.8 33.2 72 73 72h239v568zM350 696.5c0 24.2-7.5 31.4-21.9 31.4-9 0-18.4-5.8-24.8-18.5L272.9 732c13.4 22.9 32.3 34.2 61.3 34.2 41.6 0 60.8-29.9 60.8-66.2V577h-45v119.5zM501.3 577H437v186h44v-62h21.6c39.1 0 73.1-19.6 73.1-63.6 0-45.8-33.5-60.4-74.4-60.4zm-.8 89H481v-53h18.2c21.5 0 33.4 6.2 33.4 24.9 0 18.1-10.5 28.1-32.1 28.1zm182.5-9v36h30v30.1c-4 2.9-11 4.7-17.7 4.7-34.3 0-50.7-21.4-50.7-58.2 0-36.1 19.7-57.4 47.1-57.4 15.3 0 25 6.2 34 14.4l23.7-28.3c-12.7-12.8-32.1-24.2-59.2-24.2-49.6 0-91.1 35.3-91.1 97 0 62.7 40 95.1 91.5 95.1 25.9 0 49.2-10.2 61.5-22.6V657H683z'));\nexports.FileProtectOutline = getIcon('file-protect', outline, getNode(newViewBox, 'M644.7 669.2a7.92 7.92 0 0 0-6.5-3.3H594c-6.5 0-10.3 7.4-6.5 12.7l73.8 102.1c3.2 4.4 9.7 4.4 12.9 0l114.2-158c3.8-5.3 0-12.7-6.5-12.7h-44.3c-2.6 0-5 1.2-6.5 3.3l-63.5 87.8-22.9-31.9zM688 306v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm184 458H208V148h560v296c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h312c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm402.6-320.8l-192-66.7c-.9-.3-1.7-.4-2.6-.4s-1.8.1-2.6.4l-192 66.7a7.96 7.96 0 0 0-5.4 7.5v251.1c0 2.5 1.1 4.8 3.1 6.3l192 150.2c1.4 1.1 3.2 1.7 4.9 1.7s3.5-.6 4.9-1.7l192-150.2c1.9-1.5 3.1-3.8 3.1-6.3V538.7c0-3.4-2.2-6.4-5.4-7.5zM826 763.7L688 871.6 550 763.7V577l138-48 138 48v186.7z'));\nexports.FileSearchOutline = getIcon('file-search', outline, getNode(newViewBox, 'M688 312v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8zm-392 88c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm144 452H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm445.7 51.5l-93.3-93.3C814.7 780.7 828 743.9 828 704c0-97.2-78.8-176-176-176s-176 78.8-176 176 78.8 176 176 176c35.8 0 69-10.7 96.8-29l94.7 94.7c1.6 1.6 3.6 2.3 5.6 2.3s4.1-.8 5.6-2.3l31-31a7.9 7.9 0 0 0 0-11.2zM652 816c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z'));\nexports.FileSyncOutline = getIcon('file-sync', outline, getNode(newViewBox, 'M296 256c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H296zm192 200v-48c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8zm-48 396H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h272c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm104.1-115.6c1.8-34.5 16.2-66.8 40.8-91.4 26.2-26.2 62-41 99.1-41 37.4 0 72.6 14.6 99.1 41 3.2 3.2 6.3 6.6 9.2 10.1L769.2 673a8 8 0 0 0 3 14.1l93.3 22.5c5 1.2 9.8-2.6 9.9-7.7l.6-95.4a8 8 0 0 0-12.9-6.4l-20.3 15.8C805.4 569.6 748.1 540 684 540c-109.9 0-199.6 86.9-204 195.7-.2 4.5 3.5 8.3 8 8.3h48.1c4.3 0 7.8-3.3 8-7.6zM880 744h-48.1c-4.3 0-7.8 3.3-8 7.6-1.8 34.5-16.2 66.8-40.8 91.4-26.2 26.2-62 41-99.1 41-37.4 0-72.6-14.6-99.1-41-3.2-3.2-6.3-6.6-9.2-10.1l23.1-17.9a8 8 0 0 0-3-14.1l-93.3-22.5c-5-1.2-9.8 2.6-9.9 7.7l-.6 95.4a8 8 0 0 0 12.9 6.4l20.3-15.8C562.6 918.4 619.9 948 684 948c109.9 0 199.6-86.9 204-195.7.2-4.5-3.5-8.3-8-8.3z'));\nexports.FontColorsOutline = getIcon('font-colors', outline, getNode(newViewBox, 'M904 816H120c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8zm-650.3-80h85c4.2 0 8-2.7 9.3-6.8l53.7-166h219.2l53.2 166c1.3 4 5 6.8 9.3 6.8h89.1c1.1 0 2.2-.2 3.2-.5a9.7 9.7 0 0 0 6-12.4L573.6 118.6a9.9 9.9 0 0 0-9.2-6.6H462.1c-4.2 0-7.9 2.6-9.2 6.6L244.5 723.1c-.4 1-.5 2.1-.5 3.2-.1 5.3 4.3 9.7 9.7 9.7zm255.9-516.1h4.1l83.8 263.8H424.9l84.7-263.8z'));\nexports.FontSizeOutline = getIcon('font-size', outline, getNode(newViewBox, 'M920 416H616c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h60v320h-46c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h164c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-46V480h60v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V424c0-4.4-3.6-8-8-8zM656 296V168c0-4.4-3.6-8-8-8H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8z'));\nexports.ForkOutline = getIcon('fork', outline, getNode(newViewBox, 'M752 100c-61.8 0-112 50.2-112 112 0 47.7 29.9 88.5 72 104.6v27.6L512 601.4 312 344.2v-27.6c42.1-16.1 72-56.9 72-104.6 0-61.8-50.2-112-112-112s-112 50.2-112 112c0 50.6 33.8 93.5 80 107.3v34.4c0 9.7 3.3 19.3 9.3 27L476 672.3v33.6c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1v-33.6l226.7-291.6c6-7.7 9.3-17.3 9.3-27v-34.4c46.2-13.8 80-56.7 80-107.3 0-61.8-50.2-112-112-112zM224 212a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm336 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm192-552a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'));\nexports.FormOutline = getIcon('form', outline, getNode(newViewBox, 'M904 512h-56c-4.4 0-8 3.6-8 8v320H184V184h320c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V520c0-4.4-3.6-8-8-8z', 'M355.9 534.9L354 653.8c-.1 8.9 7.1 16.2 16 16.2h.4l118-2.9c2-.1 4-.9 5.4-2.3l415.9-415c3.1-3.1 3.1-8.2 0-11.3L785.4 114.3c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-415.8 415a8.3 8.3 0 0 0-2.3 5.6zm63.5 23.6L779.7 199l45.2 45.1-360.5 359.7-45.7 1.1.7-46.4z'));\nexports.FullscreenExitOutline = getIcon('fullscreen-exit', outline, getNode(newViewBox, 'M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 0 0 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 0 0 391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6 877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 0 0-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z'));\nexports.FullscreenOutline = getIcon('fullscreen', outline, getNode(newViewBox, 'M290 236.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7a8.01 8.01 0 0 0 13.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 0 0 0 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 0 0-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z'));\nexports.GatewayOutline = getIcon('gateway', outline, getNode(newViewBox, 'M928 392c8.8 0 16-7.2 16-16V192c0-8.8-7.2-16-16-16H744c-8.8 0-16 7.2-16 16v56H296v-56c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v184c0 8.8 7.2 16 16 16h56v240H96c-8.8 0-16 7.2-16 16v184c0 8.8 7.2 16 16 16h184c8.8 0 16-7.2 16-16v-56h432v56c0 8.8 7.2 16 16 16h184c8.8 0 16-7.2 16-16V648c0-8.8-7.2-16-16-16h-56V392h56zM792 240h88v88h-88v-88zm-648 88v-88h88v88h-88zm88 456h-88v-88h88v88zm648-88v88h-88v-88h88zm-80-64h-56c-8.8 0-16 7.2-16 16v56H296v-56c0-8.8-7.2-16-16-16h-56V392h56c8.8 0 16-7.2 16-16v-56h432v56c0 8.8 7.2 16 16 16h56v240z'));\nexports.GlobalOutline = getIcon('global', outline, getNode(newViewBox, 'M854.4 800.9c.2-.3.5-.6.7-.9C920.6 722.1 960 621.7 960 512s-39.4-210.1-104.8-288c-.2-.3-.5-.5-.7-.8-1.1-1.3-2.1-2.5-3.2-3.7-.4-.5-.8-.9-1.2-1.4l-4.1-4.7-.1-.1c-1.5-1.7-3.1-3.4-4.6-5.1l-.1-.1c-3.2-3.4-6.4-6.8-9.7-10.1l-.1-.1-4.8-4.8-.3-.3c-1.5-1.5-3-2.9-4.5-4.3-.5-.5-1-1-1.6-1.5-1-1-2-1.9-3-2.8-.3-.3-.7-.6-1-1C736.4 109.2 629.5 64 512 64s-224.4 45.2-304.3 119.2c-.3.3-.7.6-1 1-1 .9-2 1.9-3 2.9-.5.5-1 1-1.6 1.5-1.5 1.4-3 2.9-4.5 4.3l-.3.3-4.8 4.8-.1.1c-3.3 3.3-6.5 6.7-9.7 10.1l-.1.1c-1.6 1.7-3.1 3.4-4.6 5.1l-.1.1c-1.4 1.5-2.8 3.1-4.1 4.7-.4.5-.8.9-1.2 1.4-1.1 1.2-2.1 2.5-3.2 3.7-.2.3-.5.5-.7.8C103.4 301.9 64 402.3 64 512s39.4 210.1 104.8 288c.2.3.5.6.7.9l3.1 3.7c.4.5.8.9 1.2 1.4l4.1 4.7c0 .1.1.1.1.2 1.5 1.7 3 3.4 4.6 5l.1.1c3.2 3.4 6.4 6.8 9.6 10.1l.1.1c1.6 1.6 3.1 3.2 4.7 4.7l.3.3c3.3 3.3 6.7 6.5 10.1 9.6 80.1 74 187 119.2 304.5 119.2s224.4-45.2 304.3-119.2a300 300 0 0 0 10-9.6l.3-.3c1.6-1.6 3.2-3.1 4.7-4.7l.1-.1c3.3-3.3 6.5-6.7 9.6-10.1l.1-.1c1.5-1.7 3.1-3.3 4.6-5 0-.1.1-.1.1-.2 1.4-1.5 2.8-3.1 4.1-4.7.4-.5.8-.9 1.2-1.4a99 99 0 0 0 3.3-3.7zm4.1-142.6c-13.8 32.6-32 62.8-54.2 90.2a444.07 444.07 0 0 0-81.5-55.9c11.6-46.9 18.8-98.4 20.7-152.6H887c-3 40.9-12.6 80.6-28.5 118.3zM887 484H743.5c-1.9-54.2-9.1-105.7-20.7-152.6 29.3-15.6 56.6-34.4 81.5-55.9A373.86 373.86 0 0 1 887 484zM658.3 165.5c39.7 16.8 75.8 40 107.6 69.2a394.72 394.72 0 0 1-59.4 41.8c-15.7-45-35.8-84.1-59.2-115.4 3.7 1.4 7.4 2.9 11 4.4zm-90.6 700.6c-9.2 7.2-18.4 12.7-27.7 16.4V697a389.1 389.1 0 0 1 115.7 26.2c-8.3 24.6-17.9 47.3-29 67.8-17.4 32.4-37.8 58.3-59 75.1zm59-633.1c11 20.6 20.7 43.3 29 67.8A389.1 389.1 0 0 1 540 327V141.6c9.2 3.7 18.5 9.1 27.7 16.4 21.2 16.7 41.6 42.6 59 75zM540 640.9V540h147.5c-1.6 44.2-7.1 87.1-16.3 127.8l-.3 1.2A445.02 445.02 0 0 0 540 640.9zm0-156.9V383.1c45.8-2.8 89.8-12.5 130.9-28.1l.3 1.2c9.2 40.7 14.7 83.5 16.3 127.8H540zm-56 56v100.9c-45.8 2.8-89.8 12.5-130.9 28.1l-.3-1.2c-9.2-40.7-14.7-83.5-16.3-127.8H484zm-147.5-56c1.6-44.2 7.1-87.1 16.3-127.8l.3-1.2c41.1 15.6 85 25.3 130.9 28.1V484H336.5zM484 697v185.4c-9.2-3.7-18.5-9.1-27.7-16.4-21.2-16.7-41.7-42.7-59.1-75.1-11-20.6-20.7-43.3-29-67.8 37.2-14.6 75.9-23.3 115.8-26.1zm0-370a389.1 389.1 0 0 1-115.7-26.2c8.3-24.6 17.9-47.3 29-67.8 17.4-32.4 37.8-58.4 59.1-75.1 9.2-7.2 18.4-12.7 27.7-16.4V327zM365.7 165.5c3.7-1.5 7.3-3 11-4.4-23.4 31.3-43.5 70.4-59.2 115.4-21-12-40.9-26-59.4-41.8 31.8-29.2 67.9-52.4 107.6-69.2zM165.5 365.7c13.8-32.6 32-62.8 54.2-90.2 24.9 21.5 52.2 40.3 81.5 55.9-11.6 46.9-18.8 98.4-20.7 152.6H137c3-40.9 12.6-80.6 28.5-118.3zM137 540h143.5c1.9 54.2 9.1 105.7 20.7 152.6a444.07 444.07 0 0 0-81.5 55.9A373.86 373.86 0 0 1 137 540zm228.7 318.5c-39.7-16.8-75.8-40-107.6-69.2 18.5-15.8 38.4-29.7 59.4-41.8 15.7 45 35.8 84.1 59.2 115.4-3.7-1.4-7.4-2.9-11-4.4zm292.6 0c-3.7 1.5-7.3 3-11 4.4 23.4-31.3 43.5-70.4 59.2-115.4 21 12 40.9 26 59.4 41.8a373.81 373.81 0 0 1-107.6 69.2z'));\nexports.GoldOutline = getIcon('gold', outline, getNode(newViewBox, 'M342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8zm91.2-196h159.5l20.7 128h-201l20.8-128zm2.5 282.7c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zm709.4 58.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5z'));\nexports.GooglePlusOutline = getIcon('google-plus', outline, getNode(newViewBox, 'M879.5 470.4c-.3-27-.4-54.2-.5-81.3h-80.8c-.3 27-.5 54.1-.7 81.3-27.2.1-54.2.3-81.2.6v80.9c27 .3 54.2.5 81.2.8.3 27 .3 54.1.5 81.1h80.9c.1-27 .3-54.1.5-81.3 27.2-.3 54.2-.4 81.2-.7v-80.9c-26.9-.2-54.1-.2-81.1-.5zm-530 .4c-.1 32.3 0 64.7.1 97 54.2 1.8 108.5 1 162.7 1.8-23.9 120.3-187.4 159.3-273.9 80.7-89-68.9-84.8-220 7.7-284 64.7-51.6 156.6-38.9 221.3 5.8 25.4-23.5 49.2-48.7 72.1-74.7-53.8-42.9-119.8-73.5-190-70.3-146.6-4.9-281.3 123.5-283.7 270.2-9.4 119.9 69.4 237.4 180.6 279.8 110.8 42.7 252.9 13.6 323.7-86 46.7-62.9 56.8-143.9 51.3-220-90.7-.7-181.3-.6-271.9-.3z'));\nexports.GoogleOutline = getIcon('google', outline, getNode(newViewBox, 'M881 442.4H519.7v148.5h206.4c-8.9 48-35.9 88.6-76.6 115.8-34.4 23-78.3 36.6-129.9 36.6-99.9 0-184.4-67.5-214.6-158.2-7.6-23-12-47.6-12-72.9s4.4-49.9 12-72.9c30.3-90.6 114.8-158.1 214.7-158.1 56.3 0 106.8 19.4 146.6 57.4l110-110.1c-66.5-62-153.2-100-256.6-100-149.9 0-279.6 86-342.7 211.4-26 51.8-40.8 110.4-40.8 172.4S151 632.8 177 684.6C240.1 810 369.8 896 519.7 896c103.6 0 190.4-34.4 253.8-93 72.5-66.8 114.4-165.2 114.4-282.1 0-27.2-2.4-53.3-6.9-78.5z'));\nexports.HeatMapOutline = getIcon('heat-map', outline, getNode(newViewBox, 'M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-790.4-23.9L512 231.9 858.7 832H165.3zm319-474.1l-228 394c-12.3 21.3 3.1 48 27.7 48h455.8c24.7 0 40.1-26.7 27.7-48L539.7 358c-6.2-10.7-17-16-27.7-16-10.8 0-21.6 5.3-27.7 16zm214 386H325.7L512 422l186.3 322zm-214-194.1l-57 98.4C415 669.5 430.4 696 455 696h114c24.6 0 39.9-26.5 27.7-47.7l-57-98.4c-6.1-10.6-16.9-15.9-27.7-15.9s-21.5 5.3-27.7 15.9zm57.1 98.4h-58.7l29.4-50.7 29.3 50.7z'));\nexports.IeOutline = getIcon('ie', outline, getNode(newViewBox, 'M852.6 367.6c16.3-36.9 32.1-90.7 32.1-131.8 0-109.1-119.5-147.6-314.5-57.9-161.4-10.8-316.8 110.5-355.6 279.7 46.3-52.3 117.4-123.4 183-151.7C316.1 378.3 246.7 470 194 565.6c-31.1 56.9-66 148.8-66 217.5 0 147.9 139.3 129.8 270.4 63 47.1 23.1 99.8 23.4 152.5 23.4 145.7 0 276.4-81.4 325.2-219H694.9c-78.8 132.9-295.2 79.5-295.2-71.2h493.2c9.6-65.4-2.5-143.6-40.3-211.7zM224.8 648.3c26.6 76.7 80.6 143.8 150.4 185-133.1 73.4-259.9 43.6-150.4-185zm174-163.3c3-82.7 75.4-142.3 156-142.3 80.1 0 153 59.6 156 142.3h-312zm276.8-281.4c32.1-15.4 72.8-33 108.8-33 47.1 0 81.4 32.6 81.4 80.6 0 30-11.1 73.5-21.9 101.8-39.3-63.5-98.9-122.4-168.3-149.4z'));\nexports.ImportOutline = getIcon('import', outline, getNode(newViewBox, 'M888.3 757.4h-53.8c-4.2 0-7.7 3.5-7.7 7.7v61.8H197.1V197.1h629.8v61.8c0 4.2 3.5 7.7 7.7 7.7h53.8c4.2 0 7.7-3.4 7.7-7.7V158.7c0-17-13.7-30.7-30.7-30.7H158.7c-17 0-30.7 13.7-30.7 30.7v706.6c0 17 13.7 30.7 30.7 30.7h706.6c17 0 30.7-13.7 30.7-30.7V765.1c0-4.3-3.5-7.7-7.7-7.7zM902 476H588v-76c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 0 0 0 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-76h314c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.InboxOutline = getIcon('inbox', outline, getNode(normalViewBox, 'M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0 0 60.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z'));\nexports.InfoOutline = getIcon('info', outline, getNode(newViewBox, 'M448 224a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm96 168h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V400c0-4.4-3.6-8-8-8z'));\nexports.IssuesCloseOutline = getIcon('issues-close', outline, getNode(newViewBox, 'M464 688a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72-112c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48zm400-188h-59.3c-2.6 0-5 1.2-6.5 3.3L763.7 538.1l-49.9-68.8a7.92 7.92 0 0 0-6.5-3.3H648c-6.5 0-10.3 7.4-6.5 12.7l109.2 150.7a16.1 16.1 0 0 0 26 0l165.8-228.7c3.8-5.3 0-12.7-6.5-12.7zm-44 306h-64.2c-5.5 0-10.6 2.9-13.6 7.5a352.2 352.2 0 0 1-49.8 62.2A355.92 355.92 0 0 1 651.1 840a355 355 0 0 1-138.7 27.9c-48.1 0-94.8-9.4-138.7-27.9a355.92 355.92 0 0 1-113.3-76.3A353.06 353.06 0 0 1 184 650.5c-18.6-43.8-28-90.5-28-138.5s9.4-94.7 28-138.5c17.9-42.4 43.6-80.5 76.4-113.2 32.8-32.7 70.9-58.4 113.3-76.3a355 355 0 0 1 138.7-27.9c48.1 0 94.8 9.4 138.7 27.9 42.4 17.9 80.5 43.6 113.3 76.3 19 19 35.6 39.8 49.8 62.2 2.9 4.7 8.1 7.5 13.6 7.5H892c6 0 9.8-6.3 7.2-11.6C828.8 178.5 684.7 82 517.7 80 278.9 77.2 80.5 272.5 80 511.2 79.5 750.1 273.3 944 512.4 944c169.2 0 315.6-97 386.7-238.4A8 8 0 0 0 892 694z'));\nexports.ItalicOutline = getIcon('italic', outline, getNode(newViewBox, 'M798 160H366c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h181.2l-156 544H229c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8H474.4l156-544H798c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z'));\nexports.KeyOutline = getIcon('key', outline, getNode(newViewBox, 'M608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5l-41.1 41.1-62.3-62.3a8.15 8.15 0 0 0-11.4 0l-39.8 39.8a8.15 8.15 0 0 0 0 11.4l62.3 62.3-44.9 44.9-62.3-62.3a8.15 8.15 0 0 0-11.4 0l-39.8 39.8a8.15 8.15 0 0 0 0 11.4l62.3 62.3-65.3 65.3a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6A304.06 304.06 0 0 0 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644c-60.9 0-118.2-23.7-161.2-66.8-43.1-43-66.8-100.3-66.8-161.2 0-60.9 23.7-118.2 66.8-161.2 43-43.1 100.3-66.8 161.2-66.8 60.9 0 118.2 23.7 161.2 66.8 43.1 43 66.8 100.3 66.8 161.2 0 60.9-23.7 118.2-66.8 161.2z'));\nexports.LaptopOutline = getIcon('laptop', outline, getNode(newViewBox, 'M956.9 845.1L896.4 632V168c0-17.7-14.3-32-32-32h-704c-17.7 0-32 14.3-32 32v464L67.9 845.1C60.4 866 75.8 888 98 888h828.8c22.2 0 37.6-22 30.1-42.9zM200.4 208h624v395h-624V208zm228.3 608l8.1-37h150.3l8.1 37H428.7zm224 0l-19.1-86.7c-.8-3.7-4.1-6.3-7.8-6.3H398.2c-3.8 0-7 2.6-7.8 6.3L371.3 816H151l42.3-149h638.2l42.3 149H652.7z'));\nexports.LeftOutline = getIcon('left', outline, getNode(newViewBox, 'M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 0 0 0 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z'));\nexports.LineChartOutline = getIcon('line-chart', outline, getNode(newViewBox, 'M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM305.8 637.7c3.1 3.1 8.1 3.1 11.3 0l138.3-137.6L583 628.5c3.1 3.1 8.2 3.1 11.3 0l275.4-275.3c3.1-3.1 3.1-8.2 0-11.3l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-230 229.9L461.4 404a8.03 8.03 0 0 0-11.3 0L266.3 586.7a8.03 8.03 0 0 0 0 11.3l39.5 39.7z'));\nexports.LineHeightOutline = getIcon('line-height', outline, getNode(newViewBox, 'M648 160H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V168c0-4.4-3.6-8-8-8zm272.8 546H856V318h64.8c6 0 9.4-7 5.7-11.7L825.7 178.7a7.14 7.14 0 0 0-11.3 0L713.6 306.3a7.23 7.23 0 0 0 5.7 11.7H784v388h-64.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5a7.2 7.2 0 0 0-5.6-11.7z'));\nexports.LineOutline = getIcon('line', outline, getNode(newViewBox, 'M904 476H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.LinkOutline = getIcon('link', outline, getNode(newViewBox, 'M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z'));\nexports.Loading3QuartersOutline = getIcon('loading-3-quarters', outline, getNode(normalViewBox, 'M512 1024c-69.1 0-136.2-13.5-199.3-40.2C251.7 958 197 921 150 874c-47-47-84-101.7-109.8-162.7C13.5 648.2 0 581.1 0 512c0-19.9 16.1-36 36-36s36 16.1 36 36c0 59.4 11.6 117 34.6 171.3 22.2 52.4 53.9 99.5 94.3 139.9 40.4 40.4 87.5 72.2 139.9 94.3C395 940.4 452.6 952 512 952c59.4 0 117-11.6 171.3-34.6 52.4-22.2 99.5-53.9 139.9-94.3 40.4-40.4 72.2-87.5 94.3-139.9C940.4 629 952 571.4 952 512c0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.2C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3s-13.5 136.2-40.2 199.3C958 772.3 921 827 874 874c-47 47-101.8 83.9-162.7 109.7-63.1 26.8-130.2 40.3-199.3 40.3z'));\nexports.LoadingOutline = getIcon('loading', outline, getNode(normalViewBox, 'M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 0 0-94.3-139.9 437.71 437.71 0 0 0-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z'));\nexports.LoginOutline = getIcon('login', outline, getNode(newViewBox, 'M521.7 82c-152.5-.4-286.7 78.5-363.4 197.7-3.4 5.3.4 12.3 6.7 12.3h70.3c4.8 0 9.3-2.1 12.3-5.8 7-8.5 14.5-16.7 22.4-24.5 32.6-32.5 70.5-58.1 112.7-75.9 43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 32.6 32.5 58.1 70.4 76 112.5C865.7 417.8 875 464.1 875 512c0 47.9-9.4 94.2-27.8 137.8-17.8 42.1-43.4 80-76 112.5s-70.5 58.1-112.7 75.9A352.8 352.8 0 0 1 520.6 866c-47.9 0-94.3-9.4-137.9-27.8A353.84 353.84 0 0 1 270 762.3c-7.9-7.9-15.3-16.1-22.4-24.5-3-3.7-7.6-5.8-12.3-5.8H165c-6.3 0-10.2 7-6.7 12.3C234.9 863.2 368.5 942 520.6 942c236.2 0 428-190.1 430.4-425.6C953.4 277.1 761.3 82.6 521.7 82zM395.02 624v-76h-314c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h314v-76c0-6.7 7.8-10.5 13-6.3l141.9 112a8 8 0 0 1 0 12.6l-141.9 112c-5.2 4.1-13 .4-13-6.3z'));\nexports.LogoutOutline = getIcon('logout', outline, getNode(newViewBox, 'M868 732h-70.3c-4.8 0-9.3 2.1-12.3 5.8-7 8.5-14.5 16.7-22.4 24.5a353.84 353.84 0 0 1-112.7 75.9A352.8 352.8 0 0 1 512.4 866c-47.9 0-94.3-9.4-137.9-27.8a353.84 353.84 0 0 1-112.7-75.9 353.28 353.28 0 0 1-76-112.5C167.3 606.2 158 559.9 158 512s9.4-94.2 27.8-137.8c17.8-42.1 43.4-80 76-112.5s70.5-58.1 112.7-75.9c43.6-18.4 90-27.8 137.9-27.8 47.9 0 94.3 9.3 137.9 27.8 42.2 17.8 80.1 43.4 112.7 75.9 7.9 7.9 15.3 16.1 22.4 24.5 3 3.7 7.6 5.8 12.3 5.8H868c6.3 0 10.2-7 6.7-12.3C798 160.5 663.8 81.6 511.3 82 271.7 82.6 79.6 277.1 82 516.4 84.4 751.9 276.2 942 512.4 942c152.1 0 285.7-78.8 362.3-197.7 3.4-5.3-.4-12.3-6.7-12.3zm88.9-226.3L815 393.7c-5.3-4.2-13-.4-13 6.3v76H488c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h314v76c0 6.7 7.8 10.5 13 6.3l141.9-112a8 8 0 0 0 0-12.6z'));\nexports.ManOutline = getIcon('man', outline, getNode(newViewBox, 'M874 120H622c-3.3 0-6 2.7-6 6v56c0 3.3 2.7 6 6 6h160.4L583.1 387.3c-50-38.5-111-59.3-175.1-59.3-76.9 0-149.3 30-203.6 84.4S120 539.1 120 616s30 149.3 84.4 203.6C258.7 874 331.1 904 408 904s149.3-30 203.6-84.4C666 765.3 696 692.9 696 616c0-64.1-20.8-124.9-59.2-174.9L836 241.9V402c0 3.3 2.7 6 6 6h56c3.3 0 6-2.7 6-6V150c0-16.5-13.5-30-30-30zM408 828c-116.9 0-212-95.1-212-212s95.1-212 212-212 212 95.1 212 212-95.1 212-212 212z'));\nexports.MediumWorkmarkOutline = getIcon('medium-workmark', outline, getNode(normalViewBox, 'M517.2 590.55c0 3.55 0 4.36 2.4 6.55l13.43 13.25v.57h-59.57v-25.47a41.44 41.44 0 0 1-39.5 27.65c-30.61 0-52.84-24.25-52.84-68.87 0-41.8 23.99-69.69 57.65-69.69a35.15 35.15 0 0 1 34.61 21.67v-56.19a6.99 6.99 0 0 0-2.71-6.79l-12.8-12.45v-.56l59.33-7.04v177.37zm-43.74-8.09v-83.83a22.2 22.2 0 0 0-17.74-8.4c-14.48 0-28.47 13.25-28.47 52.62 0 36.86 12.07 49.88 27.1 49.88a23.91 23.91 0 0 0 19.11-10.27zm83.23 28.46V497.74a7.65 7.65 0 0 0-2.4-6.79l-13.19-13.74v-.57h59.56v114.8c0 3.55 0 4.36 2.4 6.54l13.12 12.45v.57l-59.49-.08zm-2.16-175.67c0-13.4 10.74-24.25 23.99-24.25 13.25 0 23.98 10.86 23.98 24.25 0 13.4-10.73 24.25-23.98 24.25s-23.99-10.85-23.99-24.25zm206.83 155.06c0 3.55 0 4.6 2.4 6.79l13.43 13.25v.57h-59.88V581.9a43.4 43.4 0 0 1-41.01 31.2c-26.55 0-40.78-19.56-40.78-56.59 0-17.86 0-37.43.56-59.41a6.91 6.91 0 0 0-2.4-6.55L620.5 477.2v-.57h59.09v73.81c0 24.25 3.51 40.42 18.54 40.42a23.96 23.96 0 0 0 19.35-12.2v-80.85a7.65 7.65 0 0 0-2.4-6.79l-13.27-13.82v-.57h59.56V590.3zm202.76 20.6c0-4.36.8-59.97.8-72.75 0-24.25-3.76-40.98-20.63-40.98a26.7 26.7 0 0 0-21.19 11.64 99.68 99.68 0 0 1 2.4 23.04c0 16.81-.56 38.23-.8 59.66a6.91 6.91 0 0 0 2.4 6.55l13.43 12.45v.56h-60.12c0-4.04.8-59.98.8-72.76 0-24.65-3.76-40.98-20.39-40.98-8.2.3-15.68 4.8-19.83 11.96v82.46c0 3.56 0 4.37 2.4 6.55l13.11 12.45v.56h-59.48V498.15a7.65 7.65 0 0 0-2.4-6.8l-13.19-14.14v-.57H841v28.78c5.53-19 23.13-31.76 42.7-30.96 19.82 0 33.26 11.16 38.93 32.34a46.41 46.41 0 0 1 44.77-32.34c26.55 0 41.58 19.8 41.58 57.23 0 17.87-.56 38.24-.8 59.66a6.5 6.5 0 0 0 2.72 6.55l13.11 12.45v.57h-59.88zM215.87 593.3l17.66 17.05v.57h-89.62v-.57l17.99-17.05a6.91 6.91 0 0 0 2.4-6.55V477.69c0-4.6 0-10.83.8-16.16L104.66 613.1h-.72l-62.6-139.45c-1.37-3.47-1.77-3.72-2.65-6.06v91.43a32.08 32.08 0 0 0 2.96 17.87l25.19 33.46v.57H0v-.57l25.18-33.55a32.16 32.16 0 0 0 2.96-17.78V457.97A19.71 19.71 0 0 0 24 444.15L6.16 420.78v-.56h63.96l53.56 118.1 47.17-118.1h62.6v.56l-17.58 19.8a6.99 6.99 0 0 0-2.72 6.8v139.37a6.5 6.5 0 0 0 2.72 6.55zm70.11-54.65v.56c0 34.6 17.67 48.5 38.38 48.5a43.5 43.5 0 0 0 40.77-24.97h.56c-7.2 34.2-28.14 50.36-59.48 50.36-33.82 0-65.72-20.61-65.72-68.39 0-50.2 31.98-70.25 67.32-70.25 28.46 0 58.76 13.58 58.76 57.24v6.95h-80.59zm0-6.95h39.42v-7.04c0-35.57-7.28-45.03-18.23-45.03-13.27 0-21.35 14.15-21.35 52.07h.16z'));\nexports.MediumOutline = getIcon('medium', outline, getNode(newViewBox, 'M834.7 279.8l61.3-58.9V208H683.7L532.4 586.4 360.3 208H137.7v12.9l71.6 86.6c7 6.4 10.6 15.8 9.7 25.2V673c2.2 12.3-1.7 24.8-10.3 33.7L128 805v12.7h228.6v-12.9l-80.6-98a39.99 39.99 0 0 1-11.1-33.7V378.7l200.7 439.2h23.3l172.6-439.2v349.9c0 9.2 0 11.1-6 17.2l-62.1 60.3V819h301.2v-12.9l-59.9-58.9c-5.2-4-7.9-10.7-6.8-17.2V297a18.1 18.1 0 0 1 6.8-17.2z'));\nexports.MenuFoldOutline = getIcon('menu-fold', outline, getNode(newViewBox, 'M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z'));\nexports.MenuUnfoldOutline = getIcon('menu-unfold', outline, getNode(newViewBox, 'M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z'));\nexports.MenuOutline = getIcon('menu', outline, getNode(newViewBox, 'M904 160H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0 624H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0-312H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z'));\nexports.MinusOutline = getIcon('minus', outline, getNode(newViewBox, 'M872 474H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z'));\nexports.MonitorOutline = getIcon('monitor', outline, getNode(newViewBox, 'M692.8 412.7l.2-.2-34.6-44.3a7.97 7.97 0 0 0-11.2-1.4l-50.4 39.3-70.5-90.1a7.97 7.97 0 0 0-11.2-1.4l-37.9 29.7a7.97 7.97 0 0 0-1.4 11.2l70.5 90.2-.2.1 34.6 44.3c2.7 3.5 7.7 4.1 11.2 1.4l50.4-39.3 64.1 82c2.7 3.5 7.7 4.1 11.2 1.4l37.9-29.6c3.5-2.7 4.1-7.7 1.4-11.2l-64.1-82.1zM608 112c-167.9 0-304 136.1-304 304 0 70.3 23.9 135 63.9 186.5L114.3 856.1a8.03 8.03 0 0 0 0 11.3l42.3 42.3c3.1 3.1 8.2 3.1 11.3 0l253.6-253.6C473 696.1 537.7 720 608 720c167.9 0 304-136.1 304-304S775.9 112 608 112zm161.2 465.2C726.2 620.3 668.9 644 608 644s-118.2-23.7-161.2-66.8C403.7 534.2 380 476.9 380 416s23.7-118.2 66.8-161.2c43-43.1 100.3-66.8 161.2-66.8s118.2 23.7 161.2 66.8c43.1 43 66.8 100.3 66.8 161.2s-23.7 118.2-66.8 161.2z'));\nexports.MoreOutline = getIcon('more', outline, getNode(newViewBox, 'M456 231a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 280a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 280a56 56 0 1 0 112 0 56 56 0 1 0-112 0z'));\nexports.MrOutline = getIcon('mr', outline, getNode(newViewBox, 'M788 705.9V192c0-8.8-7.2-16-16-16H602v-68.8c0-6-7-9.4-11.7-5.7L462.7 202.3a7.14 7.14 0 0 0 0 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V240h114v465.9c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c.1-49.2-31.7-91-75.9-106.1zM752 860a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zM384 212c0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1V318.1c44.2-15.1 76-56.9 76-106.1zm-160 0a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm96 600a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0z'));\nexports.NumberOutline = getIcon('number', outline, getNode(newViewBox, 'M872 394c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H708V152c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v166H400V152c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v166H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h168v236H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h168v166c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V706h228v166c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V706h164c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H708V394h164zM628 630H400V394h228v236z'));\nexports.OrderedListOutline = getIcon('ordered-list', outline, getNode(newViewBox, 'M920 760H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-568H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H336c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM216 712H100c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h72.4v20.5h-35.7c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h35.7V838H100c-2.2 0-4 1.8-4 4v34c0 2.2 1.8 4 4 4h116c2.2 0 4-1.8 4-4V716c0-2.2-1.8-4-4-4zM100 188h38v120c0 2.2 1.8 4 4 4h40c2.2 0 4-1.8 4-4V152c0-4.4-3.6-8-8-8h-78c-2.2 0-4 1.8-4 4v36c0 2.2 1.8 4 4 4zm116 240H100c-2.2 0-4 1.8-4 4v36c0 2.2 1.8 4 4 4h68.4l-70.3 77.7a8.3 8.3 0 0 0-2.1 5.4V592c0 2.2 1.8 4 4 4h116c2.2 0 4-1.8 4-4v-36c0-2.2-1.8-4-4-4h-68.4l70.3-77.7a8.3 8.3 0 0 0 2.1-5.4V432c0-2.2-1.8-4-4-4z'));\nexports.PaperClipOutline = getIcon('paper-clip', outline, getNode(newViewBox, 'M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0 0 12.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0 0 12.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 0 0 174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z'));\nexports.PauseOutline = getIcon('pause', outline, getNode(newViewBox, 'M304 176h80v672h-80zm408 0h-64c-4.4 0-8 3.6-8 8v656c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V184c0-4.4-3.6-8-8-8z'));\nexports.PercentageOutline = getIcon('percentage', outline, getNode(newViewBox, 'M855.7 210.8l-42.4-42.4a8.03 8.03 0 0 0-11.3 0L168.3 801.9a8.03 8.03 0 0 0 0 11.3l42.4 42.4c3.1 3.1 8.2 3.1 11.3 0L855.6 222c3.2-3 3.2-8.1.1-11.2zM304 448c79.4 0 144-64.6 144-144s-64.6-144-144-144-144 64.6-144 144 64.6 144 144 144zm0-216c39.7 0 72 32.3 72 72s-32.3 72-72 72-72-32.3-72-72 32.3-72 72-72zm416 344c-79.4 0-144 64.6-144 144s64.6 144 144 144 144-64.6 144-144-64.6-144-144-144zm0 216c-39.7 0-72-32.3-72-72s32.3-72 72-72 72 32.3 72 72-32.3 72-72 72z'));\nexports.PicCenterOutline = getIcon('pic-center', outline, getNode(newViewBox, 'M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM848 660c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h672zM232 436h560v152H232V436z'));\nexports.PicLeftOutline = getIcon('pic-left', outline, getNode(newViewBox, 'M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM608 660c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h512zM152 436h400v152H152V436zm552 210c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H712c-4.4 0-8 3.6-8 8v56zm8-204h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H712c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z'));\nexports.PicRightOutline = getIcon('pic-right', outline, getNode(newViewBox, 'M952 792H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-632H72c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h880c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-24 500c8.8 0 16-7.2 16-16V380c0-8.8-7.2-16-16-16H416c-8.8 0-16 7.2-16 16v264c0 8.8 7.2 16 16 16h512zM472 436h400v152H472V436zM80 646c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H88c-4.4 0-8 3.6-8 8v56zm8-204h224c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H88c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8z'));\nexports.PlusOutline = getIcon('plus', outline, getNode(newViewBox, 'M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z', 'M176 474h672q8 0 8 8v60q0 8-8 8H176q-8 0-8-8v-60q0-8 8-8z'));\nexports.PoundOutline = getIcon('pound', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm138-209.8H469.8v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.9-5.3-41H607c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8H495c-7.2-22.6-13.4-45.7-13.4-70.5 0-43.5 34-70.2 87.3-70.2 21.5 0 42.5 4.1 60.4 10.5 5.2 1.9 10.6-2 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.8-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.3 6.9 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.1c3.4 14.7 5.9 29.4 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8V722c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z'));\nexports.PoweroffOutline = getIcon('poweroff', outline, getNode(newViewBox, 'M705.6 124.9a8 8 0 0 0-11.6 7.2v64.2c0 5.5 2.9 10.6 7.5 13.6a352.2 352.2 0 0 1 62.2 49.8c32.7 32.8 58.4 70.9 76.3 113.3a355 355 0 0 1 27.9 138.7c0 48.1-9.4 94.8-27.9 138.7a355.92 355.92 0 0 1-76.3 113.3 353.06 353.06 0 0 1-113.2 76.4c-43.8 18.6-90.5 28-138.5 28s-94.7-9.4-138.5-28a353.06 353.06 0 0 1-113.2-76.4A355.92 355.92 0 0 1 184 650.4a355 355 0 0 1-27.9-138.7c0-48.1 9.4-94.8 27.9-138.7 17.9-42.4 43.6-80.5 76.3-113.3 19-19 39.8-35.6 62.2-49.8 4.7-2.9 7.5-8.1 7.5-13.6V132c0-6-6.3-9.8-11.6-7.2C178.5 195.2 82 339.3 80 506.3 77.2 745.1 272.5 943.5 511.2 944c239 .5 432.8-193.3 432.8-432.4 0-169.2-97-315.7-238.4-386.7zM480 560h64c4.4 0 8-3.6 8-8V88c0-4.4-3.6-8-8-8h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8z'));\nexports.QqOutline = getIcon('qq', outline, getNode(newViewBox, 'M824.8 613.2c-16-51.4-34.4-94.6-62.7-165.3C766.5 262.2 689.3 112 511.5 112 331.7 112 256.2 265.2 261 447.9c-28.4 70.8-46.7 113.7-62.7 165.3-34 109.5-23 154.8-14.6 155.8 18 2.2 70.1-82.4 70.1-82.4 0 49 25.2 112.9 79.8 159-26.4 8.1-85.7 29.9-71.6 53.8 11.4 19.3 196.2 12.3 249.5 6.3 53.3 6 238.1 13 249.5-6.3 14.1-23.8-45.3-45.7-71.6-53.8 54.6-46.2 79.8-110.1 79.8-159 0 0 52.1 84.6 70.1 82.4 8.5-1.1 19.5-46.4-14.5-155.8z'));\nexports.QrcodeOutline = getIcon('qrcode', outline, getNode(newViewBox, 'M468 128H160c-17.7 0-32 14.3-32 32v308c0 4.4 3.6 8 8 8h332c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zm-56 284H192V192h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm194 210H136c-4.4 0-8 3.6-8 8v308c0 17.7 14.3 32 32 32h308c4.4 0 8-3.6 8-8V556c0-4.4-3.6-8-8-8zm-56 284H192V612h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm590-630H556c-4.4 0-8 3.6-8 8v332c0 4.4 3.6 8 8 8h332c4.4 0 8-3.6 8-8V160c0-17.7-14.3-32-32-32zm-32 284H612V192h220v220zm-138-74h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm194 210h-48c-4.4 0-8 3.6-8 8v134h-78V556c0-4.4-3.6-8-8-8H556c-4.4 0-8 3.6-8 8v332c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h78v102c0 4.4 3.6 8 8 8h190c4.4 0 8-3.6 8-8V556c0-4.4-3.6-8-8-8zM746 832h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm142 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'));\nexports.QuestionOutline = getIcon('question', outline, getNode(newViewBox, 'M764 280.9c-14-30.6-33.9-58.1-59.3-81.6C653.1 151.4 584.6 125 512 125s-141.1 26.4-192.7 74.2c-25.4 23.6-45.3 51-59.3 81.7-14.6 32-22 65.9-22 100.9v27c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-27c0-99.5 88.6-180.4 197.6-180.4s197.6 80.9 197.6 180.4c0 40.8-14.5 79.2-42 111.2-27.2 31.7-65.6 54.4-108.1 64-24.3 5.5-46.2 19.2-61.7 38.8a110.85 110.85 0 0 0-23.9 68.6v31.4c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-31.4c0-15.7 10.9-29.5 26-32.9 58.4-13.2 111.4-44.7 149.3-88.7 19.1-22.3 34-47.1 44.3-74 10.7-27.9 16.1-57.2 16.1-87 0-35-7.4-69-22-100.9zM512 787c-30.9 0-56 25.1-56 56s25.1 56 56 56 56-25.1 56-56-25.1-56-56-56z'));\nexports.RadarChartOutline = getIcon('radar-chart', outline, getNode(newViewBox, 'M926.8 397.1l-396-288a31.81 31.81 0 0 0-37.6 0l-396 288a31.99 31.99 0 0 0-11.6 35.8l151.3 466a32 32 0 0 0 30.4 22.1h489.5c13.9 0 26.1-8.9 30.4-22.1l151.3-466c4.2-13.2-.5-27.6-11.7-35.8zM838.6 417l-98.5 32-200-144.7V199.9L838.6 417zM466 567.2l-89.1 122.3-55.2-169.2L466 567.2zm-116.3-96.8L484 373.3v140.8l-134.3-43.7zM512 599.2l93.9 128.9H418.1L512 599.2zm28.1-225.9l134.2 97.1L540.1 514V373.3zM558 567.2l144.3-46.9-55.2 169.2L558 567.2zm-74-367.3v104.4L283.9 449l-98.5-32L484 199.9zM169.3 470.8l86.5 28.1 80.4 246.4-53.8 73.9-113.1-348.4zM327.1 853l50.3-69h269.3l50.3 69H327.1zm414.5-33.8l-53.8-73.9 80.4-246.4 86.5-28.1-113.1 348.4z'));\nexports.RadiusBottomleftOutline = getIcon('radius-bottomleft', outline, getNode(newViewBox, 'M712 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm2-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM136 374h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm0-174h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm752 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-230 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 624H358c-87.3 0-158-70.7-158-158V484c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v182c0 127 103 230 230 230h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.RadiusBottomrightOutline = getIcon('radius-bottomright', outline, getNode(newViewBox, 'M368 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-58-624h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm578 102h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 824h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm292 72h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm174 0h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm230 276h-56c-4.4 0-8 3.6-8 8v182c0 87.3-70.7 158-158 158H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c127 0 230-103 230-230V484c0-4.4-3.6-8-8-8z'));\nexports.RadiusSettingOutline = getIcon('radius-setting', outline, getNode(newViewBox, 'M396 140h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-44 684h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm524-204h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 344h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 160h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm320 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm160 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm140-284c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V370c0-127-103-230-230-230H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h170c87.3 0 158 70.7 158 158v170zM236 96H92c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8V104c0-4.4-3.6-8-8-8zm-48 101.6c0 1.3-1.1 2.4-2.4 2.4h-43.2c-1.3 0-2.4-1.1-2.4-2.4v-43.2c0-1.3 1.1-2.4 2.4-2.4h43.2c1.3 0 2.4 1.1 2.4 2.4v43.2zM920 780H776c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h144c4.4 0 8-3.6 8-8V788c0-4.4-3.6-8-8-8zm-48 101.6c0 1.3-1.1 2.4-2.4 2.4h-43.2c-1.3 0-2.4-1.1-2.4-2.4v-43.2c0-1.3 1.1-2.4 2.4-2.4h43.2c1.3 0 2.4 1.1 2.4 2.4v43.2z'));\nexports.RadiusUpleftOutline = getIcon('radius-upleft', outline, getNode(newViewBox, 'M656 200h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm58 624h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 650h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm696-696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174-696H358c-127 0-230 103-230 230v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-87.3 70.7-158 158-158h182c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.RadiusUprightOutline = getIcon('radius-upright', outline, getNode(newViewBox, 'M368 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-2 696h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm522-174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM192 128h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 174h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm348 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm174 0h-56c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm-48-696H484c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h182c87.3 0 158 70.7 158 158v182c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V358c0-127-103-230-230-230z'));\nexports.RedditOutline = getIcon('reddit', outline, getNode(newViewBox, 'M288 568a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm338.7 119.7c-23.1 18.2-68.9 37.8-114.7 37.8s-91.6-19.6-114.7-37.8c-14.4-11.3-35.3-8.9-46.7 5.5s-8.9 35.3 5.5 46.7C396.3 771.6 457.5 792 512 792s115.7-20.4 155.9-52.1a33.25 33.25 0 1 0-41.2-52.2zM960 456c0-61.9-50.1-112-112-112-42.1 0-78.7 23.2-97.9 57.6-57.6-31.5-127.7-51.8-204.1-56.5L612.9 195l127.9 36.9c11.5 32.6 42.6 56.1 79.2 56.1 46.4 0 84-37.6 84-84s-37.6-84-84-84c-32 0-59.8 17.9-74 44.2L603.5 123a33.2 33.2 0 0 0-39.6 18.4l-90.8 203.9c-74.5 5.2-142.9 25.4-199.2 56.2A111.94 111.94 0 0 0 176 344c-61.9 0-112 50.1-112 112 0 45.8 27.5 85.1 66.8 102.5-7.1 21-10.8 43-10.8 65.5 0 154.6 175.5 280 392 280s392-125.4 392-280c0-22.6-3.8-44.5-10.8-65.5C932.5 541.1 960 501.8 960 456zM820 172.5a31.5 31.5 0 1 1 0 63 31.5 31.5 0 0 1 0-63zM120 456c0-30.9 25.1-56 56-56a56 56 0 0 1 50.6 32.1c-29.3 22.2-53.5 47.8-71.5 75.9a56.23 56.23 0 0 1-35.1-52zm392 381.5c-179.8 0-325.5-95.6-325.5-213.5S332.2 410.5 512 410.5 837.5 506.1 837.5 624 691.8 837.5 512 837.5zM868.8 508c-17.9-28.1-42.2-53.7-71.5-75.9 9-18.9 28.3-32.1 50.6-32.1 30.9 0 56 25.1 56 56 .1 23.5-14.5 43.7-35.1 52zM624 568a56 56 0 1 0 112 0 56 56 0 1 0-112 0z'));\nexports.RedoOutline = getIcon('redo', outline, getNode(newViewBox, 'M758.2 839.1C851.8 765.9 912 651.9 912 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1-8.1-6.6-15.9-13.7-23.4-21.2a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-9.3 9.3-19.1 18-29.3 26L668.2 724a8 8 0 0 0-14.1 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 .8c6.7 0 10.5-7.7 6.3-12.9l-37.3-47.9z'));\nexports.ReloadTimeOutline = getIcon('reload-time', outline, getNode(newViewBox, 'M536.1 273H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.3 120.7c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.7-3.7 1.9-8.7-1.7-11.2L544.1 528.5V281c0-4.4-3.6-8-8-8zm219.8 75.2l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3L752.9 334.1a8 8 0 0 0 3 14.1zm167.7 301.1l-56.7-19.5a8 8 0 0 0-10.1 4.8c-1.9 5.1-3.9 10.1-6 15.1-17.8 42.1-43.3 80-75.9 112.5a353 353 0 0 1-112.5 75.9 352.18 352.18 0 0 1-137.7 27.8c-47.8 0-94.1-9.3-137.7-27.8a353 353 0 0 1-112.5-75.9c-32.5-32.5-58-70.4-75.9-112.5A353.44 353.44 0 0 1 171 512c0-47.8 9.3-94.2 27.8-137.8 17.8-42.1 43.3-80 75.9-112.5a353 353 0 0 1 112.5-75.9C430.6 167.3 477 158 524.8 158s94.1 9.3 137.7 27.8A353 353 0 0 1 775 261.7c10.2 10.3 19.8 21 28.6 32.3l59.8-46.8C784.7 146.6 662.2 81.9 524.6 82 285 82.1 92.6 276.7 95 516.4 97.4 751.9 288.9 942 524.8 942c185.5 0 343.5-117.6 403.7-282.3 1.5-4.2-.7-8.9-4.9-10.4z'));\nexports.ReloadOutline = getIcon('reload', outline, getNode(newViewBox, 'M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 0 0-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 0 1 655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 0 1 279 755.2a342.16 342.16 0 0 1-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 0 1 109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 0 0 3 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z'));\nexports.RetweetOutline = getIcon('retweet', outline, getNode(normalViewBox, 'M136 552h63.6c4.4 0 8-3.6 8-8V288.7h528.6v72.6c0 1.9.6 3.7 1.8 5.2a8.3 8.3 0 0 0 11.7 1.4L893 255.4c4.3-5 3.6-10.3 0-13.2L749.7 129.8a8.22 8.22 0 0 0-5.2-1.8c-4.6 0-8.4 3.8-8.4 8.4V209H199.7c-39.5 0-71.7 32.2-71.7 71.8V544c0 4.4 3.6 8 8 8zm752-80h-63.6c-4.4 0-8 3.6-8 8v255.3H287.8v-72.6c0-1.9-.6-3.7-1.8-5.2a8.3 8.3 0 0 0-11.7-1.4L131 768.6c-4.3 5-3.6 10.3 0 13.2l143.3 112.4c1.5 1.2 3.3 1.8 5.2 1.8 4.6 0 8.4-3.8 8.4-8.4V815h536.6c39.5 0 71.7-32.2 71.7-71.8V480c-.2-4.4-3.8-8-8.2-8z'));\nexports.RightOutline = getIcon('right', outline, getNode(newViewBox, 'M765.7 486.8L314.9 134.7A7.97 7.97 0 0 0 302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 0 0 0-50.4z'));\nexports.RiseOutline = getIcon('rise', outline, getNode(newViewBox, 'M917 211.1l-199.2 24c-6.6.8-9.4 8.9-4.7 13.6l59.3 59.3-226 226-101.8-101.7c-6.3-6.3-16.4-6.2-22.6 0L100.3 754.1a8.03 8.03 0 0 0 0 11.3l45 45.2c3.1 3.1 8.2 3.1 11.3 0L433.3 534 535 635.7c6.3 6.2 16.4 6.2 22.6 0L829 364.5l59.3 59.3a8.01 8.01 0 0 0 13.6-4.7l24-199.2c.7-5.1-3.7-9.5-8.9-8.8z'));\nexports.RobotOutline = getIcon('robot', outline, getNode(newViewBox, 'M300 328a60 60 0 1 0 120 0 60 60 0 1 0-120 0zM852 64H172c-17.7 0-32 14.3-32 32v660c0 17.7 14.3 32 32 32h680c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-32 660H204V128h616v596zM604 328a60 60 0 1 0 120 0 60 60 0 1 0-120 0zm250.2 556H169.8c-16.5 0-29.8 14.3-29.8 32v36c0 4.4 3.3 8 7.4 8h729.1c4.1 0 7.4-3.6 7.4-8v-36c.1-17.7-13.2-32-29.7-32zM664 508H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z'));\nexports.RollbackOutline = getIcon('rollback', outline, getNode(newViewBox, 'M793 242H366v-74c0-6.7-7.7-10.4-12.9-6.3l-142 112a8 8 0 0 0 0 12.6l142 112c5.2 4.1 12.9.4 12.9-6.3v-74h415v470H175c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h618c35.3 0 64-28.7 64-64V306c0-35.3-28.7-64-64-64z'));\nexports.SafetyOutline = getIcon('safety', outline, getNode(normalViewBox, 'M512 64L128 192v384c0 212.1 171.9 384 384 384s384-171.9 384-384V192L512 64zm312 512c0 172.3-139.7 312-312 312S200 748.3 200 576V246l312-110 312 110v330z', 'M378.4 475.1a35.91 35.91 0 0 0-50.9 0 35.91 35.91 0 0 0 0 50.9l129.4 129.4 2.1 2.1a33.98 33.98 0 0 0 48.1 0L730.6 434a33.98 33.98 0 0 0 0-48.1l-2.8-2.8a33.98 33.98 0 0 0-48.1 0L483 579.7 378.4 475.1z'));\nexports.ScanOutline = getIcon('scan', outline, getNode(newViewBox, 'M136 384h56c4.4 0 8-3.6 8-8V200h176c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-37.6 0-68 30.4-68 68v180c0 4.4 3.6 8 8 8zm512-184h176v176c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V196c0-37.6-30.4-68-68-68H648c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zM376 824H200V648c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v180c0 37.6 30.4 68 68 68h180c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm512-184h-56c-4.4 0-8 3.6-8 8v176H648c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h180c37.6 0 68-30.4 68-68V648c0-4.4-3.6-8-8-8zm16-164H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.ScissorOutline = getIcon('scissor', outline, getNode(newViewBox, 'M567.1 512l318.5-319.3c5-5 1.5-13.7-5.6-13.7h-90.5c-2.1 0-4.2.8-5.6 2.3l-273.3 274-90.2-90.5c12.5-22.1 19.7-47.6 19.7-74.8 0-83.9-68.1-152-152-152s-152 68.1-152 152 68.1 152 152 152c27.7 0 53.6-7.4 75.9-20.3l90 90.3-90.1 90.3A151.04 151.04 0 0 0 288 582c-83.9 0-152 68.1-152 152s68.1 152 152 152 152-68.1 152-152c0-27.2-7.2-52.7-19.7-74.8l90.2-90.5 273.3 274c1.5 1.5 3.5 2.3 5.6 2.3H880c7.1 0 10.7-8.6 5.6-13.7L567.1 512zM288 370c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm0 444c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z'));\nexports.SearchOutline = getIcon('search', outline, getNode(newViewBox, 'M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0 0 11.6 0l43.6-43.5a8.2 8.2 0 0 0 0-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z'));\nexports.SelectOutline = getIcon('select', outline, getNode(newViewBox, 'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h360c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H184V184h656v320c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32zM653.3 599.4l52.2-52.2a8.01 8.01 0 0 0-4.7-13.6l-179.4-21c-5.1-.6-9.5 3.7-8.9 8.9l21 179.4c.8 6.6 8.9 9.4 13.6 4.7l52.4-52.4 256.2 256.2c3.1 3.1 8.2 3.1 11.3 0l42.4-42.4c3.1-3.1 3.1-8.2 0-11.3L653.3 599.4z'));\nexports.ShakeOutline = getIcon('shake', outline, getNode(newViewBox, 'M324 666a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm616.7-309.6L667.6 83.2C655.2 70.9 638.7 64 621.1 64s-34.1 6.8-46.5 19.2L83.3 574.5a65.85 65.85 0 0 0 0 93.1l273.2 273.2c12.3 12.3 28.9 19.2 46.5 19.2s34.1-6.8 46.5-19.2l491.3-491.3c25.6-25.7 25.6-67.5-.1-93.1zM403 880.1L143.9 621l477.2-477.2 259 259.2L403 880.1zM152.8 373.7a7.9 7.9 0 0 0 11.2 0L373.7 164a7.9 7.9 0 0 0 0-11.2l-38.4-38.4a7.9 7.9 0 0 0-11.2 0L114.3 323.9a7.9 7.9 0 0 0 0 11.2l38.5 38.6zm718.6 276.6a7.9 7.9 0 0 0-11.2 0L650.3 860.1a7.9 7.9 0 0 0 0 11.2l38.4 38.4a7.9 7.9 0 0 0 11.2 0L909.7 700a7.9 7.9 0 0 0 0-11.2l-38.3-38.5z'));\nexports.ShareAltOutline = getIcon('share-alt', outline, getNode(newViewBox, 'M752 664c-28.5 0-54.8 10-75.4 26.7L469.4 540.8a160.68 160.68 0 0 0 0-57.6l207.2-149.9C697.2 350 723.5 360 752 360c66.2 0 120-53.8 120-120s-53.8-120-120-120-120 53.8-120 120c0 11.6 1.6 22.7 4.7 33.3L439.9 415.8C410.7 377.1 364.3 352 312 352c-88.4 0-160 71.6-160 160s71.6 160 160 160c52.3 0 98.7-25.1 127.9-63.8l196.8 142.5c-3.1 10.6-4.7 21.8-4.7 33.3 0 66.2 53.8 120 120 120s120-53.8 120-120-53.8-120-120-120zm0-476c28.7 0 52 23.3 52 52s-23.3 52-52 52-52-23.3-52-52 23.3-52 52-52zM312 600c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88zm440 236c-28.7 0-52-23.3-52-52s23.3-52 52-52 52 23.3 52 52-23.3 52-52 52z'));\nexports.ShoppingCartOutline = getIcon('shopping-cart', outline, getNode(normalViewBox, 'M922.9 701.9H327.4l29.9-60.9 496.8-.9c16.8 0 31.2-12 34.2-28.6l68.8-385.1c1.8-10.1-.9-20.5-7.5-28.4a34.99 34.99 0 0 0-26.6-12.5l-632-2.1-5.4-25.4c-3.4-16.2-18-28-34.6-28H96.5a35.3 35.3 0 1 0 0 70.6h125.9L246 312.8l58.1 281.3-74.8 122.1a34.96 34.96 0 0 0-3 36.8c6 11.9 18.1 19.4 31.5 19.4h62.8a102.43 102.43 0 0 0-20.6 61.7c0 56.6 46 102.6 102.6 102.6s102.6-46 102.6-102.6c0-22.3-7.4-44-20.6-61.7h161.1a102.43 102.43 0 0 0-20.6 61.7c0 56.6 46 102.6 102.6 102.6s102.6-46 102.6-102.6c0-22.3-7.4-44-20.6-61.7H923c19.4 0 35.3-15.8 35.3-35.3a35.42 35.42 0 0 0-35.4-35.2zM305.7 253l575.8 1.9-56.4 315.8-452.3.8L305.7 253zm96.9 612.7c-17.4 0-31.6-14.2-31.6-31.6 0-17.4 14.2-31.6 31.6-31.6s31.6 14.2 31.6 31.6a31.6 31.6 0 0 1-31.6 31.6zm325.1 0c-17.4 0-31.6-14.2-31.6-31.6 0-17.4 14.2-31.6 31.6-31.6s31.6 14.2 31.6 31.6a31.6 31.6 0 0 1-31.6 31.6z'));\nexports.ShrinkOutline = getIcon('shrink', outline, getNode(newViewBox, 'M881.7 187.4l-45.1-45.1a8.03 8.03 0 0 0-11.3 0L667.8 299.9l-54.7-54.7a7.94 7.94 0 0 0-13.5 4.7L576.1 439c-.6 5.2 3.7 9.5 8.9 8.9l189.2-23.5c6.6-.8 9.3-8.8 4.7-13.5l-54.7-54.7 157.6-157.6c3-3 3-8.1-.1-11.2zM439 576.1l-189.2 23.5c-6.6.8-9.3 8.9-4.7 13.5l54.7 54.7-157.5 157.5a8.03 8.03 0 0 0 0 11.3l45.1 45.1c3.1 3.1 8.2 3.1 11.3 0l157.6-157.6 54.7 54.7a7.94 7.94 0 0 0 13.5-4.7L447.9 585a7.9 7.9 0 0 0-8.9-8.9z'));\nexports.SketchOutline = getIcon('sketch', outline, getNode(newViewBox, 'M925.6 405.1l-203-253.7a6.5 6.5 0 0 0-5-2.4H306.4c-1.9 0-3.8.9-5 2.4l-203 253.7a6.5 6.5 0 0 0 .2 8.3l408.6 459.5c1.2 1.4 3 2.1 4.8 2.1 1.8 0 3.5-.8 4.8-2.1l408.6-459.5a6.5 6.5 0 0 0 .2-8.3zM645.2 206.4l34.4 133.9-132.5-133.9h98.1zm8.2 178.5H370.6L512 242l141.4 142.9zM378.8 206.4h98.1L344.3 340.3l34.5-133.9zm-53.4 7l-44.1 171.5h-93.1l137.2-171.5zM194.6 434.9H289l125.8 247.7-220.2-247.7zM512 763.4L345.1 434.9h333.7L512 763.4zm97.1-80.8L735 434.9h94.4L609.1 682.6zm133.6-297.7l-44.1-171.5 137.2 171.5h-93.1z'));\nexports.SlackOutline = getIcon('slack', outline, getNode(newViewBox, 'M409.4 128c-42.4 0-76.7 34.4-76.7 76.8 0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5h76.7v-76.8c0-42.3-34.3-76.7-76.7-76.8zm0 204.8H204.7c-42.4 0-76.7 34.4-76.7 76.8s34.4 76.8 76.7 76.8h204.6c42.4 0 76.7-34.4 76.7-76.8.1-42.4-34.3-76.8-76.6-76.8zM614 486.4c42.4 0 76.8-34.4 76.7-76.8V204.8c0-42.4-34.3-76.8-76.7-76.8-42.4 0-76.7 34.4-76.7 76.8v204.8c0 42.5 34.3 76.8 76.7 76.8zm281.4-76.8c0-42.4-34.4-76.8-76.7-76.8S742 367.2 742 409.6v76.8h76.7c42.3 0 76.7-34.4 76.7-76.8zm-76.8 128H614c-42.4 0-76.7 34.4-76.7 76.8 0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5h204.6c42.4 0 76.7-34.4 76.7-76.8.1-42.4-34.3-76.7-76.7-76.8zM614 742.4h-76.7v76.8c0 42.4 34.4 76.8 76.7 76.8 42.4 0 76.8-34.4 76.7-76.8.1-42.4-34.3-76.7-76.7-76.8zM409.4 537.6c-42.4 0-76.7 34.4-76.7 76.8v204.8c0 42.4 34.4 76.8 76.7 76.8 42.4 0 76.8-34.4 76.7-76.8V614.4c0-20.3-8.1-39.9-22.4-54.3a76.92 76.92 0 0 0-54.3-22.5zM128 614.4c0 20.3 8.1 39.9 22.4 54.3a76.74 76.74 0 0 0 54.3 22.5c42.4 0 76.8-34.4 76.7-76.8v-76.8h-76.7c-42.3 0-76.7 34.4-76.7 76.8z'));\nexports.SolutionOutline = getIcon('solution', outline, getNode(newViewBox, 'M688 264c0-4.4-3.6-8-8-8H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48zm-8 136H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM480 544H296c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-48 308H208V148h560v344c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V108c0-17.7-14.3-32-32-32H168c-17.7 0-32 14.3-32 32v784c0 17.7 14.3 32 32 32h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm356.8-74.4c29-26.3 47.2-64.3 47.2-106.6 0-79.5-64.5-144-144-144s-144 64.5-144 144c0 42.3 18.2 80.3 47.2 106.6-57 32.5-96.2 92.7-99.2 162.1-.2 4.5 3.5 8.3 8 8.3h48.1c4.2 0 7.7-3.3 8-7.6C564 871.2 621.7 816 692 816s128 55.2 131.9 124.4c.2 4.2 3.7 7.6 8 7.6H880c4.6 0 8.2-3.8 8-8.3-2.9-69.5-42.2-129.6-99.2-162.1zM692 591c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z'));\nexports.SmallDashOutline = getIcon('small-dash', outline, getNode(newViewBox, 'M112 476h72v72h-72zm182 0h72v72h-72zm364 0h72v72h-72zm182 0h72v72h-72zm-364 0h72v72h-72z'));\nexports.SortAscendingOutline = getIcon('sort-ascending', outline, getNode(newViewBox, 'M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM416 702h-76V172c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v530h-76c-6.7 0-10.5 7.8-6.3 13l112 141.9a8 8 0 0 0 12.6 0l112-141.9c4.1-5.2.4-13-6.3-13z'));\nexports.SortDescendingOutline = getIcon('sort-descending', outline, getNode(newViewBox, 'M839.6 433.8L749 150.5a9.24 9.24 0 0 0-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-.3.9-.5 1.9-.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-.1 2.8-.4 2.4-.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2zm143.5 492.9H677.2v-.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v.4L587.7 828.9a9.35 9.35 0 0 0-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43a9.2 9.2 0 0 0-9.2-9.3zM310.3 167.1a8 8 0 0 0-12.6 0L185.7 309c-4.2 5.3-.4 13 6.3 13h76v530c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V322h76c6.7 0 10.5-7.8 6.3-13l-112-141.9z'));\nexports.StockOutline = getIcon('stock', outline, getNode(newViewBox, 'M904 747H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM165.7 621.8l39.7 39.5c3.1 3.1 8.2 3.1 11.3 0l234.7-233.9 97.6 97.3a32.11 32.11 0 0 0 45.2 0l264.2-263.2c3.1-3.1 3.1-8.2 0-11.3l-39.7-39.6a8.03 8.03 0 0 0-11.3 0l-235.7 235-97.7-97.3a32.11 32.11 0 0 0-45.2 0L165.7 610.5a7.94 7.94 0 0 0 0 11.3z'));\nexports.StrikethroughOutline = getIcon('strikethrough', outline, getNode(newViewBox, 'M952 474H569.9c-10-2-20.5-4-31.6-6-15.9-2.9-22.2-4.1-30.8-5.8-51.3-10-82.2-20-106.8-34.2-35.1-20.5-52.2-48.3-52.2-85.1 0-37 15.2-67.7 44-89 28.4-21 68.8-32.1 116.8-32.1 54.8 0 97.1 14.4 125.8 42.8 14.6 14.4 25.3 32.1 31.8 52.6 1.3 4.1 2.8 10 4.3 17.8.9 4.8 5.2 8.2 9.9 8.2h72.8c5.6 0 10.1-4.6 10.1-10.1v-1c-.7-6.8-1.3-12.1-2-16-7.3-43.5-28-81.7-59.7-110.3-44.4-40.5-109.7-61.8-188.7-61.8-72.3 0-137.4 18.1-183.3 50.9-25.6 18.4-45.4 41.2-58.6 67.7-13.5 27.1-20.3 58.4-20.3 92.9 0 29.5 5.7 54.5 17.3 76.5 8.3 15.7 19.6 29.5 34.1 42H72c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h433.2c2.1.4 3.9.8 5.9 1.2 30.9 6.2 49.5 10.4 66.6 15.2 23 6.5 40.6 13.3 55.2 21.5 35.8 20.2 53.3 49.2 53.3 89 0 35.3-15.5 66.8-43.6 88.8-30.5 23.9-75.6 36.4-130.5 36.4-43.7 0-80.7-8.5-110.2-25-29.1-16.3-49.1-39.8-59.7-69.5-.8-2.2-1.7-5.2-2.7-9-1.2-4.4-5.3-7.5-9.7-7.5h-79.7c-5.6 0-10.1 4.6-10.1 10.1v1c.2 2.3.4 4.2.6 5.7 6.5 48.8 30.3 88.8 70.7 118.8 47.1 34.8 113.4 53.2 191.8 53.2 84.2 0 154.8-19.8 204.2-57.3 25-18.9 44.2-42.2 57.1-69 13-27.1 19.7-57.9 19.7-91.5 0-31.8-5.8-58.4-17.8-81.4-5.8-11.2-13.1-21.5-21.8-30.8H952c4.4 0 8-3.6 8-8v-60a8 8 0 0 0-8-7.9z'));\nexports.SwapLeftOutline = getIcon('swap-left', outline, getNode(normalViewBox, 'M872 572H266.8l144.3-183c4.1-5.2.4-13-6.3-13H340c-9.8 0-19.1 4.5-25.1 12.2l-164 208c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z'));\nexports.SwapRightOutline = getIcon('swap-right', outline, getNode(normalViewBox, 'M873.1 596.2l-164-208A32 32 0 0 0 684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z'));\nexports.SwapOutline = getIcon('swap', outline, getNode(newViewBox, 'M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z'));\nexports.SyncOutline = getIcon('sync', outline, getNode(newViewBox, 'M168 504.2c1-43.7 10-86.1 26.9-126 17.3-41 42.1-77.7 73.7-109.4S337 212.3 378 195c42.4-17.9 87.4-27 133.9-27s91.5 9.1 133.8 27A341.5 341.5 0 0 1 755 268.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 0 0 3 14.1l175.7 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c0-6.7-7.7-10.5-12.9-6.3l-56.4 44.1C765.8 155.1 646.2 92 511.8 92 282.7 92 96.3 275.6 92 503.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8zm756 7.8h-60c-4.4 0-7.9 3.5-8 7.8-1 43.7-10 86.1-26.9 126-17.3 41-42.1 77.8-73.7 109.4A342.45 342.45 0 0 1 512.1 856a342.24 342.24 0 0 1-243.2-100.8c-9.9-9.9-19.2-20.4-27.8-31.4l60.2-47a8 8 0 0 0-3-14.1l-175.7-43c-5-1.2-9.9 2.6-9.9 7.7l-.7 181c0 6.7 7.7 10.5 12.9 6.3l56.4-44.1C258.2 868.9 377.8 932 512.2 932c229.2 0 415.5-183.7 419.8-411.8a8 8 0 0 0-8-8.2z'));\nexports.TableOutline = getIcon('table', outline, getNode(newViewBox, 'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 208H676V232h212v136zm0 224H676V432h212v160zM412 432h200v160H412V432zm200-64H412V232h200v136zm-476 64h212v160H136V432zm0-200h212v136H136V232zm0 424h212v136H136V656zm276 0h200v136H412V656zm476 136H676V656h212v136z'));\nexports.TaobaoOutline = getIcon('taobao', outline, getNode(newViewBox, 'M168.5 273.7a68.7 68.7 0 1 0 137.4 0 68.7 68.7 0 1 0-137.4 0zm730 79.2s-23.7-184.4-426.9-70.1c17.3-30 25.6-49.5 25.6-49.5L396.4 205s-40.6 132.6-113 194.4c0 0 70.1 40.6 69.4 39.4 20.1-20.1 38.2-40.6 53.7-60.4 16.1-7 31.5-13.6 46.7-19.8-18.6 33.5-48.7 83.8-78.8 115.6l42.4 37s28.8-27.7 60.4-61.2h36v61.8H372.9v49.5h140.3v118.5c-1.7 0-3.6 0-5.4-.2-15.4-.7-39.5-3.3-49-18.2-11.5-18.1-3-51.5-2.4-71.9h-97l-3.4 1.8s-35.5 159.1 102.3 155.5c129.1 3.6 203-36 238.6-63.1l14.2 52.6 79.6-33.2-53.9-131.9-64.6 20.1 12.1 45.2c-16.6 12.4-35.6 21.7-56.2 28.4V561.3h137.1v-49.5H628.1V450h137.6v-49.5H521.3c17.6-21.4 31.5-41.1 35-53.6l-42.5-11.6c182.8-65.5 284.5-54.2 283.6 53.2v282.8s10.8 97.1-100.4 90.1l-60.2-12.9-14.2 57.1S882.5 880 903.7 680.2c21.3-200-5.2-327.3-5.2-327.3zm-707.4 18.3l-45.4 69.7 83.6 52.1s56 28.5 29.4 81.9C233.8 625.5 112 736.3 112 736.3l109 68.1c75.4-163.7 70.5-142 89.5-200.7 19.5-60.1 23.7-105.9-9.4-139.1-42.4-42.6-47-46.6-110-93.4z'));\nexports.TeamOutline = getIcon('team', outline, getNode(newViewBox, 'M824.2 699.9a301.55 301.55 0 0 0-86.4-60.4C783.1 602.8 812 546.8 812 484c0-110.8-92.4-201.7-203.2-200-109.1 1.7-197 90.6-197 200 0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C345 754.6 314 826.8 312 903.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5A226.62 226.62 0 0 1 612 684c60.9 0 118.2 23.7 161.3 66.8C814.5 792 838 846.3 840 904.3c.1 4.3 3.7 7.7 8 7.7h56a8 8 0 0 0 8-8.2c-2-77-33-149.2-87.8-203.9zM612 612c-34.2 0-66.4-13.3-90.5-37.5a126.86 126.86 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4 0 34.2-13.3 66.3-37.5 90.5A127.3 127.3 0 0 1 612 612zM361.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7z'));\nexports.TrademarkOutline = getIcon('trademark', outline, getNode(newViewBox, 'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372zm87.5-334.7c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.5-131.1-144.2-131.1H378c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.5c4.4 0 8-3.6 8-8V561.2h88.7l74.6 159.2c1.3 2.8 4.1 4.6 7.2 4.6h62a7.9 7.9 0 0 0 7.1-11.5l-80.6-164.2zM522 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.5 0 46.9-29.8 72.5-82.8 72.5z'));\nexports.ToTopOutline = getIcon('to-top', outline, getNode(newViewBox, 'M885 780H165c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM400 325.7h73.9V664c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V325.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 171a8 8 0 0 0-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13z'));\nexports.TransactionOutline = getIcon('transaction', outline, getNode(newViewBox, 'M668.6 320c0-4.4-3.6-8-8-8h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.5-1.1.9-2.4.9-3.7zM157.9 504.2a352.7 352.7 0 0 1 103.5-242.4c32.5-32.5 70.3-58.1 112.4-75.9 43.6-18.4 89.9-27.8 137.6-27.8 47.8 0 94.1 9.3 137.6 27.8 42.1 17.8 79.9 43.4 112.4 75.9 10 10 19.3 20.5 27.9 31.4l-50 39.1a8 8 0 0 0 3 14.1l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3l-47.8 37.4C770.7 146.3 648.6 82 511.5 82 277 82 86.3 270.1 82 503.8a8 8 0 0 0 8 8.2h60c4.3 0 7.8-3.5 7.9-7.8zM934 512h-60c-4.3 0-7.9 3.5-8 7.8a352.7 352.7 0 0 1-103.5 242.4 352.57 352.57 0 0 1-112.4 75.9c-43.6 18.4-89.9 27.8-137.6 27.8s-94.1-9.3-137.6-27.8a352.57 352.57 0 0 1-112.4-75.9c-10-10-19.3-20.5-27.9-31.4l49.9-39.1a8 8 0 0 0-3-14.1l-156.8-38.3c-5-1.2-9.9 2.6-9.9 7.7l-.8 161.7c0 6.7 7.7 10.5 12.9 6.3l47.8-37.4C253.3 877.7 375.4 942 512.5 942 747 942 937.7 753.9 942 520.2a8 8 0 0 0-8-8.2z'));\nexports.TwitterOutline = getIcon('twitter', outline, getNode(newViewBox, 'M928 254.3c-30.6 13.2-63.9 22.7-98.2 26.4a170.1 170.1 0 0 0 75-94 336.64 336.64 0 0 1-108.2 41.2A170.1 170.1 0 0 0 672 174c-94.5 0-170.5 76.6-170.5 170.6 0 13.2 1.6 26.4 4.2 39.1-141.5-7.4-267.7-75-351.6-178.5a169.32 169.32 0 0 0-23.2 86.1c0 59.2 30.1 111.4 76 142.1a172 172 0 0 1-77.1-21.7v2.1c0 82.9 58.6 151.6 136.7 167.4a180.6 180.6 0 0 1-44.9 5.8c-11.1 0-21.6-1.1-32.2-2.6C211 652 273.9 701.1 348.8 702.7c-58.6 45.9-132 72.9-211.7 72.9-14.3 0-27.5-.5-41.2-2.1C171.5 822 261.2 850 357.8 850 671.4 850 843 590.2 843 364.7c0-7.4 0-14.8-.5-22.2 33.2-24.3 62.3-54.4 85.5-88.2z'));\nexports.UnderlineOutline = getIcon('underline', outline, getNode(newViewBox, 'M824 804H200c-4.4 0-8 3.4-8 7.6v60.8c0 4.2 3.6 7.6 8 7.6h624c4.4 0 8-3.4 8-7.6v-60.8c0-4.2-3.6-7.6-8-7.6zm-312-76c69.4 0 134.6-27.1 183.8-76.2C745 602.7 772 537.4 772 468V156c0-6.6-5.4-12-12-12h-60c-6.6 0-12 5.4-12 12v312c0 97-79 176-176 176s-176-79-176-176V156c0-6.6-5.4-12-12-12h-60c-6.6 0-12 5.4-12 12v312c0 69.4 27.1 134.6 76.2 183.8C377.3 701 442.6 728 512 728z'));\nexports.UndoOutline = getIcon('undo', outline, getNode(newViewBox, 'M511.4 124C290.5 124.3 112 303 112 523.9c0 128 60.2 242 153.8 315.2l-37.5 48c-4.1 5.3-.3 13 6.3 12.9l167-.8c5.2 0 9-4.9 7.7-9.9L369.8 727a8 8 0 0 0-14.1-3L315 776.1c-10.2-8-20-16.7-29.3-26a318.64 318.64 0 0 1-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 0 1-68.6 101.7c-7.5 7.5-15.3 14.5-23.4 21.2a7.93 7.93 0 0 0-1.2 11.1l39.4 50.5c2.8 3.5 7.9 4.1 11.4 1.3C854.5 760.8 912 649.1 912 523.9c0-221.1-179.4-400.2-400.6-399.9z'));\nexports.UnorderedListOutline = getIcon('unordered-list', outline, getNode(newViewBox, 'M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z'));\nexports.UpOutline = getIcon('up', outline, getNode(newViewBox, 'M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 0 0 140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z'));\nexports.UploadOutline = getIcon('upload', outline, getNode(newViewBox, 'M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 0 0-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z'));\nexports.UserAddOutline = getIcon('user-add', outline, getNode(newViewBox, 'M678.3 642.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 0 0-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 505 759.6 431.7 759.6 349c0-137-110.8-248-247.5-248S264.7 212 264.7 349c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 0 0-80.4 119.5A373.6 373.6 0 0 0 137 888.8a8 8 0 0 0 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 628.2 432.2 597 512.2 597c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 0 0 8.1.3zM512.2 521c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 0 1 340.5 349c0-45.9 17.9-89.1 50.3-121.6S466.3 177 512.2 177s88.9 17.9 121.4 50.4A171.2 171.2 0 0 1 683.9 349c0 45.9-17.9 89.1-50.3 121.6C601.1 503.1 558 521 512.2 521zM880 759h-84v-84c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v84h-84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h84v84c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-84h84c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.UserDeleteOutline = getIcon('user-delete', outline, getNode(newViewBox, 'M678.3 655.4c24.2-13 51.9-20.4 81.4-20.4h.1c3 0 4.4-3.6 2.2-5.6a371.67 371.67 0 0 0-103.7-65.8c-.4-.2-.8-.3-1.2-.5C719.2 518 759.6 444.7 759.6 362c0-137-110.8-248-247.5-248S264.7 225 264.7 362c0 82.7 40.4 156 102.6 201.1-.4.2-.8.3-1.2.5-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 0 0-80.4 119.5A373.6 373.6 0 0 0 137 901.8a8 8 0 0 0 8 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C357 641.2 432.2 610 512.2 610c56.7 0 111.1 15.7 158 45.1a8.1 8.1 0 0 0 8.1.3zM512.2 534c-45.8 0-88.9-17.9-121.4-50.4A171.2 171.2 0 0 1 340.5 362c0-45.9 17.9-89.1 50.3-121.6S466.3 190 512.2 190s88.9 17.9 121.4 50.4A171.2 171.2 0 0 1 683.9 362c0 45.9-17.9 89.1-50.3 121.6C601.1 516.1 558 534 512.2 534zM880 772H640c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z'));\nexports.UserOutline = getIcon('user', outline, getNode(newViewBox, 'M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z'));\nexports.UsergroupAddOutline = getIcon('usergroup-add', outline, getNode(newViewBox, 'M892 772h-80v-80c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v80h-80c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h80v80c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-80h80c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 498.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.8-1.7-203.2 89.2-203.2 200 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.8-1.1 6.4-4.8 5.9-8.8zM824 472c0-109.4-87.9-198.3-196.9-200C516.3 270.3 424 361.2 424 472c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C357 742.6 326 814.8 324 891.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 695.7 563 672 624 672c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 586.7 658.2 600 624 600s-66.3-13.3-90.5-37.5a127.26 127.26 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z'));\nexports.UsergroupDeleteOutline = getIcon('usergroup-delete', outline, getNode(newViewBox, 'M888 784H664c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h224c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM373.5 510.4c-.9-8.7-1.4-17.5-1.4-26.4 0-15.9 1.5-31.4 4.3-46.5.7-3.6-1.2-7.3-4.5-8.8-13.6-6.1-26.1-14.5-36.9-25.1a127.54 127.54 0 0 1-38.7-95.4c.9-32.1 13.8-62.6 36.3-85.6 24.7-25.3 57.9-39.1 93.2-38.7 31.9.3 62.7 12.6 86 34.4 7.9 7.4 14.7 15.6 20.4 24.4 2 3.1 5.9 4.4 9.3 3.2 17.6-6.1 36.2-10.4 55.3-12.4 5.6-.6 8.8-6.6 6.3-11.6-32.5-64.3-98.9-108.7-175.7-109.9-110.9-1.7-203.3 89.2-203.3 199.9 0 62.8 28.9 118.8 74.2 155.5-31.8 14.7-61.1 35-86.5 60.4-54.8 54.7-85.8 126.9-87.8 204a8 8 0 0 0 8 8.2h56.1c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5 29.4-29.4 65.4-49.8 104.7-59.7 3.9-1 6.5-4.7 6-8.7zM824 484c0-109.4-87.9-198.3-196.9-200C516.3 282.3 424 373.2 424 484c0 62.8 29 118.8 74.2 155.5a300.95 300.95 0 0 0-86.4 60.4C357 754.6 326 826.8 324 903.8a8 8 0 0 0 8 8.2h56c4.3 0 7.9-3.4 8-7.7 1.9-58 25.4-112.3 66.7-153.5C505.8 707.7 563 684 624 684c110.4 0 200-89.5 200-200zm-109.5 90.5C690.3 598.7 658.2 612 624 612s-66.3-13.3-90.5-37.5a127.26 127.26 0 0 1-37.5-91.8c.3-32.8 13.4-64.5 36.3-88 24-24.6 56.1-38.3 90.4-38.7 33.9-.3 66.8 12.9 91 36.6 24.8 24.3 38.4 56.8 38.4 91.4-.1 34.2-13.4 66.3-37.6 90.5z'));\nexports.VerticalAlignBottomOutline = getIcon('vertical-align-bottom', outline, getNode(newViewBox, 'M859.9 780H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM505.7 669a8 8 0 0 0 12.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V176c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8z'));\nexports.VerticalAlignMiddleOutline = getIcon('vertical-align-middle', outline, getNode(newViewBox, 'M859.9 474H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zm-353.6-74.7c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H550V104c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v156h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.6zm11.4 225.4a7.14 7.14 0 0 0-11.3 0L405.6 752.3a7.23 7.23 0 0 0 5.7 11.7H474v156c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V764h62.8c6 0 9.4-7 5.7-11.7L517.7 624.7z'));\nexports.VerticalAlignTopOutline = getIcon('vertical-align-top', outline, getNode(newViewBox, 'M859.9 168H164.1c-4.5 0-8.1 3.6-8.1 8v60c0 4.4 3.6 8 8.1 8h695.8c4.5 0 8.1-3.6 8.1-8v-60c0-4.4-3.6-8-8.1-8zM518.3 355a8 8 0 0 0-12.6 0l-112 141.7a7.98 7.98 0 0 0 6.3 12.9h73.9V848c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V509.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 355z'));\nexports.VerticalLeftOutline = getIcon('vertical-left', outline, getNode(newViewBox, 'M762 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm-508 0v72.4c0 9.5 4.2 18.4 11.4 24.5L564.6 512 265.4 763.1c-7.2 6.1-11.4 15-11.4 24.5V860c0 6.8 7.9 10.5 13.1 6.1L689 512 267.1 157.9A7.95 7.95 0 0 0 254 164z'));\nexports.VerticalRightOutline = getIcon('vertical-right', outline, getNode(newViewBox, 'M326 164h-64c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V172c0-4.4-3.6-8-8-8zm444 72.4V164c0-6.8-7.9-10.5-13.1-6.1L335 512l421.9 354.1c5.2 4.4 13.1.7 13.1-6.1v-72.4c0-9.4-4.2-18.4-11.4-24.5L459.4 512l299.2-251.1c7.2-6.1 11.4-15.1 11.4-24.5z'));\nexports.WeiboOutline = getIcon('weibo', outline, getNode(newViewBox, 'M457.3 543c-68.1-17.7-145 16.2-174.6 76.2-30.1 61.2-1 129.1 67.8 151.3 71.2 23 155.2-12.2 184.4-78.3 28.7-64.6-7.2-131-77.6-149.2zm-52 156.2c-13.8 22.1-43.5 31.7-65.8 21.6-22-10-28.5-35.7-14.6-57.2 13.7-21.4 42.3-31 64.4-21.7 22.4 9.5 29.6 35 16 57.3zm45.5-58.5c-5 8.6-16.1 12.7-24.7 9.1-8.5-3.5-11.2-13.1-6.4-21.5 5-8.4 15.6-12.4 24.1-9.1 8.7 3.2 11.8 12.9 7 21.5zm334.5-197.2c15 4.8 31-3.4 35.9-18.3 11.8-36.6 4.4-78.4-23.2-109a111.39 111.39 0 0 0-106-34.3 28.45 28.45 0 0 0-21.9 33.8 28.39 28.39 0 0 0 33.8 21.8c18.4-3.9 38.3 1.8 51.9 16.7a54.2 54.2 0 0 1 11.3 53.3 28.45 28.45 0 0 0 18.2 36zm99.8-206c-56.7-62.9-140.4-86.9-217.7-70.5a32.98 32.98 0 0 0-25.4 39.3 33.12 33.12 0 0 0 39.3 25.5c55-11.7 114.4 5.4 154.8 50.1 40.3 44.7 51.2 105.7 34 159.1-5.6 17.4 3.9 36 21.3 41.7 17.4 5.6 36-3.9 41.6-21.2v-.1c24.1-75.4 8.9-161.1-47.9-223.9zM729 499c-12.2-3.6-20.5-6.1-14.1-22.1 13.8-34.7 15.2-64.7.3-86-28-40.1-104.8-37.9-192.8-1.1 0 0-27.6 12.1-20.6-9.8 13.5-43.5 11.5-79.9-9.6-101-47.7-47.8-174.6 1.8-283.5 110.6C127.3 471.1 80 557.5 80 632.2 80 775.1 263.2 862 442.5 862c235 0 391.3-136.5 391.3-245 0-65.5-55.2-102.6-104.8-118zM443 810.8c-143 14.1-266.5-50.5-275.8-144.5-9.3-93.9 99.2-181.5 242.2-195.6 143-14.2 266.5 50.5 275.8 144.4C694.4 709 586 796.6 443 810.8z'));\nexports.WifiOutline = getIcon('wifi', outline, getNode(newViewBox, 'M723 620.5C666.8 571.6 593.4 542 513 542s-153.8 29.6-210.1 78.6a8.1 8.1 0 0 0-.8 11.2l36 42.9c2.9 3.4 8 3.8 11.4.9C393.1 637.2 450.3 614 513 614s119.9 23.2 163.5 61.5c3.4 2.9 8.5 2.5 11.4-.9l36-42.9c2.8-3.3 2.4-8.3-.9-11.2zm117.4-140.1C751.7 406.5 637.6 362 513 362s-238.7 44.5-327.5 118.4a8.05 8.05 0 0 0-1 11.3l36 42.9c2.8 3.4 7.9 3.8 11.2 1C308 472.2 406.1 434 513 434s205 38.2 281.2 101.6c3.4 2.8 8.4 2.4 11.2-1l36-42.9c2.8-3.4 2.4-8.5-1-11.3zm116.7-139C835.7 241.8 680.3 182 511 182c-168.2 0-322.6 59-443.7 157.4a8 8 0 0 0-1.1 11.4l36 42.9c2.8 3.3 7.8 3.8 11.1 1.1C222 306.7 360.3 254 511 254c151.8 0 291 53.5 400 142.7 3.4 2.8 8.4 2.3 11.2-1.1l36-42.9c2.9-3.4 2.4-8.5-1.1-11.3zM448 778a64 64 0 1 0 128 0 64 64 0 1 0-128 0z'));\nexports.ZhihuOutline = getIcon('zhihu', outline, getNode(newViewBox, 'M564.7 230.1V803h60l25.2 71.4L756.3 803h131.5V230.1H564.7zm247.7 497h-59.9l-75.1 50.4-17.8-50.4h-18V308.3h170.7v418.8zM526.1 486.9H393.3c2.1-44.9 4.3-104.3 6.6-172.9h130.9l-.1-8.1c0-.6-.2-14.7-2.3-29.1-2.1-15-6.6-34.9-21-34.9H287.8c4.4-20.6 15.7-69.7 29.4-93.8l6.4-11.2-12.9-.7c-.8 0-19.6-.9-41.4 10.6-35.7 19-51.7 56.4-58.7 84.4-18.4 73.1-44.6 123.9-55.7 145.6-3.3 6.4-5.3 10.2-6.2 12.8-1.8 4.9-.8 9.8 2.8 13 10.5 9.5 38.2-2.9 38.5-3 .6-.3 1.3-.6 2.2-1 13.9-6.3 55.1-25 69.8-84.5h56.7c.7 32.2 3.1 138.4 2.9 172.9h-141l-2.1 1.5c-23.1 16.9-30.5 63.2-30.8 65.2l-1.4 9.2h167c-12.3 78.3-26.5 113.4-34 127.4-3.7 7-7.3 14-10.7 20.8-21.3 42.2-43.4 85.8-126.3 153.6-3.6 2.8-7 8-4.8 13.7 2.4 6.3 9.3 9.1 24.6 9.1 5.4 0 11.8-.3 19.4-1 49.9-4.4 100.8-18 135.1-87.6 17-35.1 31.7-71.7 43.9-108.9L497 850l5-12c.8-1.9 19-46.3 5.1-95.9l-.5-1.8-108.1-123-22 16.6c6.4-26.1 10.6-49.9 12.5-71.1h158.7v-8c0-40.1-18.5-63.9-19.2-64.9l-2.4-3z'));\nexports.WomanOutline = getIcon('woman', outline, getNode(newViewBox, 'M712.8 548.8c53.6-53.6 83.2-125 83.2-200.8 0-75.9-29.5-147.2-83.2-200.8C659.2 93.6 587.8 64 512 64s-147.2 29.5-200.8 83.2C257.6 200.9 228 272.1 228 348c0 63.8 20.9 124.4 59.4 173.9 7.3 9.4 15.2 18.3 23.7 26.9 8.5 8.5 17.5 16.4 26.8 23.7 39.6 30.8 86.3 50.4 136.1 57V736H360c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h114v140c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V812h114c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8H550V629.5c61.5-8.2 118.2-36.1 162.8-80.7zM512 556c-55.6 0-107.7-21.6-147.1-60.9C325.6 455.8 304 403.6 304 348s21.6-107.7 60.9-147.1C404.2 161.5 456.4 140 512 140s107.7 21.6 147.1 60.9C698.4 240.2 720 292.4 720 348s-21.6 107.7-60.9 147.1C619.7 534.4 567.6 556 512 556z'));\nexports.ZoomInOutline = getIcon('zoom-in', outline, getNode(newViewBox, 'M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z'));\nexports.ZoomOutOutline = getIcon('zoom-out', outline, getNode(newViewBox, 'M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z'));\nexports.AccountBookTwoTone = getIcon('account-book', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v584h656V256H712v48zm-65.6 121.8l-89.3 164.1h49.1c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4v33.7h65.4c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4V752c0 4.4-3.6 8-8 8h-41.3c-4.4 0-8-3.6-8-8v-53.8h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8h65.1v-33.7h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8H467l-89.3-164c-2.1-3.9-.7-8.8 3.2-10.9 1.1-.7 2.5-1 3.8-1h46a8 8 0 0 1 7.1 4.4l73.4 145.4h2.8l73.4-145.4c1.3-2.7 4.1-4.4 7.1-4.4h45c4.5 0 8 3.6 7.9 8 0 1.3-.4 2.6-1 3.8z'\n    ], [\n        primaryColor,\n        'M639.5 414h-45c-3 0-5.8 1.7-7.1 4.4L514 563.8h-2.8l-73.4-145.4a8 8 0 0 0-7.1-4.4h-46c-1.3 0-2.7.3-3.8 1-3.9 2.1-5.3 7-3.2 10.9l89.3 164h-48.6c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1v33.7h-65.1c-4.4 0-8 3.6-8 8v21.3c0 4.4 3.6 8 8 8h65.1V752c0 4.4 3.6 8 8 8h41.3c4.4 0 8-3.6 8-8v-53.8h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-65.4v-33.7h65.4c4.4 0 8-3.6 8-8v-21.3c0-4.4-3.6-8-8-8h-49.1l89.3-164.1c.6-1.2 1-2.5 1-3.8.1-4.4-3.4-8-7.9-8z'\n    ], [\n        primaryColor,\n        'M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584z'\n    ]);\n});\nexports.AlertTwoTone = getIcon('alert', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M340 585c0-5.5 4.5-10 10-10h44c5.5 0 10 4.5 10 10v171h355V563c0-136.4-110.6-247-247-247S265 426.6 265 563v193h75V585z'\n    ], [\n        primaryColor,\n        'M216.9 310.5l39.6-39.6c3.1-3.1 3.1-8.2 0-11.3l-67.9-67.9a8.03 8.03 0 0 0-11.3 0l-39.6 39.6a8.03 8.03 0 0 0 0 11.3l67.9 67.9c3.1 3.1 8.1 3.1 11.3 0zm669.6-79.2l-39.6-39.6a8.03 8.03 0 0 0-11.3 0l-67.9 67.9a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l67.9-67.9c3.1-3.2 3.1-8.2 0-11.3zM484 180h56c4.4 0 8-3.6 8-8V76c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8zm348 712H192c-17.7 0-32 14.3-32 32v24c0 4.4 3.6 8 8 8h688c4.4 0 8-3.6 8-8v-24c0-17.7-14.3-32-32-32zm-639-96c0 17.7 14.3 32 32 32h574c17.7 0 32-14.3 32-32V563c0-176.2-142.8-319-319-319S193 386.8 193 563v233zm72-233c0-136.4 110.6-247 247-247s247 110.6 247 247v193H404V585c0-5.5-4.5-10-10-10h-44c-5.5 0-10 4.5-10 10v171h-75V563z'\n    ]);\n});\nexports.ApiTwoTone = getIcon('api', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M148.2 674.6zm106.7-92.3c-25 25-38.7 58.1-38.7 93.4s13.8 68.5 38.7 93.4c25 25 58.1 38.7 93.4 38.7 35.3 0 68.5-13.8 93.4-38.7l59.4-59.4-186.8-186.8-59.4 59.4zm420.8-366.1c-35.3 0-68.5 13.8-93.4 38.7l-59.4 59.4 186.8 186.8 59.4-59.4c24.9-25 38.7-58.1 38.7-93.4s-13.8-68.5-38.7-93.4c-25-25-58.1-38.7-93.4-38.7z'\n    ], [\n        primaryColor,\n        'M578.9 546.7a8.03 8.03 0 0 0-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 0 0-11.3 0L363 475.3l-43-43a7.85 7.85 0 0 0-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2a199.45 199.45 0 0 0-58.6 140.4c-.2 39.5 11.2 79.1 34.3 113.1l-76.1 76.1a8.03 8.03 0 0 0 0 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 0 1-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7-24.9-24.9-38.7-58.1-38.7-93.4s13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4zm476-620.3l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 0 0-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 0 0 0 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7s68.4 13.7 93.4 38.7c24.9 24.9 38.7 58.1 38.7 93.4s-13.8 68.4-38.7 93.4z'\n    ]);\n});\nexports.AppstoreTwoTone = getIcon('appstore', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M864 144H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm52-668H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z'\n    ], [\n        secondaryColor,\n        'M212 212h200v200H212zm400 0h200v200H612zM212 612h200v200H212zm400 0h200v200H612z'\n    ]);\n});\nexports.AudioTwoTone = getIcon('audio', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 552c54.3 0 98-43.2 98-96V232c0-52.8-43.7-96-98-96s-98 43.2-98 96v224c0 52.8 43.7 96 98 96z'\n    ], [\n        primaryColor,\n        'M842 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 140.3-113.7 254-254 254S258 594.3 258 454c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 168.7 126.6 307.9 290 327.6V884H326.7c-13.7 0-24.7 14.3-24.7 32v36c0 4.4 2.8 8 6.2 8h407.6c3.4 0 6.2-3.6 6.2-8v-36c0-17.7-11-32-24.7-32H548V782.1c165.3-18 294-158 294-328.1z'\n    ], [\n        primaryColor,\n        'M512 624c93.9 0 170-75.2 170-168V232c0-92.8-76.1-168-170-168s-170 75.2-170 168v224c0 92.8 76.1 168 170 168zm-98-392c0-52.8 43.7-96 98-96s98 43.2 98 96v224c0 52.8-43.7 96-98 96s-98-43.2-98-96V232z'\n    ]);\n});\nexports.BankTwoTone = getIcon('bank', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M240.9 393.9h542.2L512 196.7z'], [\n        primaryColor,\n        'M894 462c30.9 0 43.8-39.7 18.7-58L530.8 126.2a31.81 31.81 0 0 0-37.6 0L111.3 404c-25.1 18.2-12.2 58 18.8 58H192v374h-72c-4.4 0-8 3.6-8 8v52c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-52c0-4.4-3.6-8-8-8h-72V462h62zM381 836H264V462h117v374zm189 0H453V462h117v374zm190 0H642V462h118v374zM240.9 393.9L512 196.7l271.1 197.2H240.9z'\n    ]);\n});\nexports.BellTwoTone = getIcon('bell', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 220c-55.6 0-107.8 21.6-147.1 60.9S304 372.4 304 428v340h416V428c0-55.6-21.6-107.8-60.9-147.1S567.6 220 512 220zm280 208c0-141.1-104.3-257.8-240-277.2v.1c135.7 19.4 240 136 240 277.1zM472 150.9v-.1C336.3 170.2 232 286.9 232 428c0-141.1 104.3-257.7 240-277.1z'\n    ], [\n        primaryColor,\n        'M816 768h-24V428c0-141.1-104.3-257.7-240-277.1V112c0-22.1-17.9-40-40-40s-40 17.9-40 40v38.9c-135.7 19.4-240 136-240 277.1v340h-24c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h216c0 61.8 50.2 112 112 112s112-50.2 112-112h216c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM512 888c-26.5 0-48-21.5-48-48h96c0 26.5-21.5 48-48 48zm208-120H304V428c0-55.6 21.6-107.8 60.9-147.1S456.4 220 512 220c55.6 0 107.8 21.6 147.1 60.9S720 372.4 720 428v340z'\n    ]);\n});\nexports.BookTwoTone = getIcon('book', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-260 72h96v209.9L621.5 312 572 347.4V136zM232 888V136h280v296.9c0 3.3 1 6.6 3 9.3a15.9 15.9 0 0 0 22.3 3.7l83.8-59.9 81.4 59.4c2.7 2 6 3.1 9.4 3.1 8.8 0 16-7.2 16-16V136h64v752H232z'\n    ], [secondaryColor, 'M668 345.9V136h-96v211.4l49.5-35.4z'], [\n        secondaryColor,\n        'M727.9 136v296.5c0 8.8-7.2 16-16 16-3.4 0-6.7-1.1-9.4-3.1L621.1 386l-83.8 59.9a15.9 15.9 0 0 1-22.3-3.7c-2-2.7-3-6-3-9.3V136H232v752h559.9V136h-64z'\n    ]);\n});\nexports.BuildTwoTone = getIcon('build', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M144 546h200v200H144zm268-268h200v200H412z'], [\n        primaryColor,\n        'M916 210H376c-17.7 0-32 14.3-32 32v236H108c-17.7 0-32 14.3-32 32v272c0 17.7 14.3 32 32 32h540c17.7 0 32-14.3 32-32V546h236c17.7 0 32-14.3 32-32V242c0-17.7-14.3-32-32-32zM344 746H144V546h200v200zm268 0H412V546h200v200zm0-268H412V278h200v200zm268 0H680V278h200v200z'\n    ]);\n});\nexports.BoxPlotTwoTone = getIcon('box-plot', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M296 368h88v288h-88zm152 0h280v288H448z'], [\n        primaryColor,\n        'M952 224h-52c-4.4 0-8 3.6-8 8v248h-92V304c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v176h-92V232c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V548h92v172c0 4.4 3.6 8 8 8h560c4.4 0 8-3.6 8-8V548h92v244c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zM384 656h-88V368h88v288zm344 0H448V368h280v288z'\n    ]);\n});\nexports.BulbTwoTone = getIcon('bulb', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 136c-141.4 0-256 114.6-256 256 0 92.5 49.4 176.3 128.1 221.8l35.9 20.8V752h184V634.6l35.9-20.8C718.6 568.3 768 484.5 768 392c0-141.4-114.6-256-256-256z'\n    ], [\n        primaryColor,\n        'M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z'\n    ]);\n});\nexports.CalculatorTwoTone = getIcon('calculator', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm256.2-75h-50.8c-2.2 0-4.5-1.1-5.9-2.9L348 718.6l-35.5 43.5a7.38 7.38 0 0 1-5.9 2.9h-50.8c-6.6 0-10.2-7.9-5.8-13.1l62.7-76.8-61.2-74.9c-4.3-5.2-.7-13.1 5.9-13.1h50.9c2.2 0 4.5 1.1 5.9 2.9l34 41.6 34-41.6c1.5-1.9 3.6-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 675l62.7 76.8c4.2 5.3.6 13.2-6 13.2zM576 335c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zm0 265c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zm0 104c0-2.2 1.4-4 3.2-4h193.5c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48zM248 335c0-2.2 1.4-4 3.2-4H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.2V331h68.7c1.9 0 3.3 1.8 3.3 4v48c0 2.2-1.4 4-3.2 4H376v68.7c0 1.9-1.8 3.3-4 3.3h-48c-2.2 0-4-1.4-4-3.2V387h-68.8c-1.8 0-3.2-1.8-3.2-4v-48z'\n    ], [\n        primaryColor,\n        'M383.5 675l61.3-74.8c4.3-5.2.7-13.1-5.9-13.1h-50.8c-2.3 0-4.4 1-5.9 2.9l-34 41.6-34-41.6a7.69 7.69 0 0 0-5.9-2.9h-50.9c-6.6 0-10.2 7.9-5.9 13.1l61.2 74.9-62.7 76.8c-4.4 5.2-.8 13.1 5.8 13.1h50.8c2.3 0 4.4-1 5.9-2.9l35.5-43.5 35.5 43.5c1.4 1.8 3.7 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 6-13.2L383.5 675zM251.2 387H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.3V387h68.8c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H376v-68.8c0-1.8-1.8-3.2-4-3.2h-48c-2.2 0-4 1.4-4 3.2V331h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm328 369h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0-104h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4zm0-265h193.6c1.8 0 3.2-1.8 3.2-4v-48c0-2.2-1.4-4-3.3-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4z'\n    ]);\n});\nexports.CarTwoTone = getIcon('car', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M199.6 474L184 517v237h656V517l-15.6-43H199.6zM264 621c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm388 75c0 4.4-3.6 8-8 8H380c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v36h168v-36c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v84zm108-75c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z'\n    ], [primaryColor, 'M720 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'], [\n        primaryColor,\n        'M959 413.4L935.3 372a8 8 0 0 0-10.9-2.9l-50.7 29.6-78.3-216.2a63.9 63.9 0 0 0-60.9-44.4H301.2c-34.7 0-65.5 22.4-76.2 55.5l-74.6 205.2-50.8-29.6a8 8 0 0 0-10.9 2.9L65 413.4c-2.2 3.8-.9 8.6 2.9 10.8l60.4 35.2-14.5 40c-1.2 3.2-1.8 6.6-1.8 10v348.2c0 15.7 11.8 28.4 26.3 28.4h67.6c12.3 0 23-9.3 25.6-22.3l7.7-37.7h545.6l7.7 37.7c2.7 13 13.3 22.3 25.6 22.3h67.6c14.5 0 26.3-12.7 26.3-28.4V509.4c0-3.4-.6-6.8-1.8-10l-14.5-40 60.3-35.2a8 8 0 0 0 3-10.8zM292.7 218.1l.5-1.3.4-1.3c1.1-3.3 4.1-5.5 7.6-5.5h427.6l75.4 208H220l72.7-199.9zM840 754H184V517l15.6-43h624.8l15.6 43v237z'\n    ], [\n        primaryColor,\n        'M224 581a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm420 23h-40c-4.4 0-8 3.6-8 8v36H428v-36c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-84c0-4.4-3.6-8-8-8z'\n    ]);\n});\nexports.CameraTwoTone = getIcon('camera', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M864 320H677.2l-17.1-47.8-22.9-64.2H386.7l-22.9 64.2-17.1 47.8H160c-4.4 0-8 3.6-8 8v456c0 4.4 3.6 8 8 8h704c4.4 0 8-3.6 8-8V328c0-4.4-3.6-8-8-8zM512 704c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160z'\n    ], [\n        primaryColor,\n        'M512 384c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zm0 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z'\n    ], [\n        primaryColor,\n        'M864 248H728l-32.4-90.8a32.07 32.07 0 0 0-30.2-21.2H358.6c-13.5 0-25.6 8.5-30.1 21.2L296 248H160c-44.2 0-80 35.8-80 80v456c0 44.2 35.8 80 80 80h704c44.2 0 80-35.8 80-80V328c0-44.2-35.8-80-80-80zm8 536c0 4.4-3.6 8-8 8H160c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h186.7l17.1-47.8 22.9-64.2h250.5l22.9 64.2 17.1 47.8H864c4.4 0 8 3.6 8 8v456z'\n    ]);\n});\nexports.CarryOutTwoTone = getIcon('carry-out', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v584z'\n    ], [\n        secondaryColor,\n        'M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v584h656V256H712v48zm-17.5 128.8L481.9 725.5a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.2 0 10 2.5 13 6.6l64.7 89 150.9-207.8c3-4.1 7.9-6.6 13-6.6H688c6.5 0 10.3 7.4 6.5 12.8z'\n    ], [\n        primaryColor,\n        'M688 420h-55.2c-5.1 0-10 2.5-13 6.6L468.9 634.4l-64.7-89c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.4 0-12.8-6.5-12.8z'\n    ]);\n});\nexports.CheckCircleTwoTone = getIcon('check-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm193.4 225.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L318.5 484.9c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 5 25.9 13.3l71.2 98.8 157.2-218c6-8.4 15.7-13.3 25.9-13.3H699c6.5 0 10.3 7.4 6.4 12.7z'\n    ], [\n        primaryColor,\n        'M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0 0 51.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z'\n    ]);\n});\nexports.CheckSquareTwoTone = getIcon('check-square', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm130-367.8h46.9c10.2 0 19.9 4.9 25.9 13.3l71.2 98.8 157.2-218c6-8.3 15.6-13.3 25.9-13.3H688c6.5 0 10.3 7.4 6.5 12.7l-210.6 292a31.8 31.8 0 0 1-51.7 0L307.5 484.9c-3.8-5.3 0-12.7 6.5-12.7z'\n    ], [\n        primaryColor,\n        'M432.2 657.7a31.8 31.8 0 0 0 51.7 0l210.6-292c3.8-5.3 0-12.7-6.5-12.7h-46.9c-10.3 0-19.9 5-25.9 13.3L458 584.3l-71.2-98.8c-6-8.4-15.7-13.3-25.9-13.3H314c-6.5 0-10.3 7.4-6.5 12.7l124.7 172.8z'\n    ]);\n});\nexports.ClockCircleTwoTone = getIcon('clock-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm176.5 509.7l-28.6 39a7.99 7.99 0 0 1-11.2 1.7L483.3 569.8a7.92 7.92 0 0 1-3.3-6.5V288c0-4.4 3.6-8 8-8h48.1c4.4 0 8 3.6 8 8v247.5l142.6 103.1c3.6 2.5 4.4 7.5 1.8 11.1z'\n    ], [\n        primaryColor,\n        'M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.6-3.6 1.8-8.6-1.8-11.1z'\n    ]);\n});\nexports.CloseCircleTwoTone = getIcon('close-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm171.8 527.1c1.2 1.5 1.9 3.3 1.9 5.2 0 4.5-3.6 8-8 8l-66-.3-99.3-118.4-99.3 118.5-66.1.3c-4.4 0-8-3.6-8-8 0-1.9.7-3.7 1.9-5.2L471 512.3l-130.1-155a8.32 8.32 0 0 1-1.9-5.2c0-4.5 3.6-8 8-8l66.1.3 99.3 118.4 99.4-118.5 66-.3c4.4 0 8 3.6 8 8 0 1.9-.6 3.8-1.8 5.2l-130.1 155 129.9 154.9z'\n    ], [\n        primaryColor,\n        'M685.8 352c0-4.4-3.6-8-8-8l-66 .3-99.4 118.5-99.3-118.4-66.1-.3c-4.4 0-8 3.5-8 8 0 1.9.7 3.7 1.9 5.2l130.1 155-130.1 154.9a8.32 8.32 0 0 0-1.9 5.2c0 4.4 3.6 8 8 8l66.1-.3 99.3-118.5L611.7 680l66 .3c4.4 0 8-3.5 8-8 0-1.9-.7-3.7-1.9-5.2L553.9 512.2l130.1-155c1.2-1.4 1.8-3.3 1.8-5.2z'\n    ]);\n});\nexports.CloseSquareTwoTone = getIcon('close-square', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm163.9-473.9A7.95 7.95 0 0 1 354 353h58.9c4.7 0 9.2 2.1 12.3 5.7L512 462.2l86.8-103.5c3-3.6 7.5-5.7 12.3-5.7H670c6.8 0 10.5 7.9 6.1 13.1L553.8 512l122.3 145.9c4.4 5.2.7 13.1-6.1 13.1h-58.9c-4.7 0-9.2-2.1-12.3-5.7L512 561.8l-86.8 103.5c-3 3.6-7.5 5.7-12.3 5.7H354c-6.8 0-10.5-7.9-6.1-13.1L470.2 512 347.9 366.1z'\n    ], [\n        primaryColor,\n        'M354 671h58.9c4.8 0 9.3-2.1 12.3-5.7L512 561.8l86.8 103.5c3.1 3.6 7.6 5.7 12.3 5.7H670c6.8 0 10.5-7.9 6.1-13.1L553.8 512l122.3-145.9c4.4-5.2.7-13.1-6.1-13.1h-58.9c-4.8 0-9.3 2.1-12.3 5.7L512 462.2l-86.8-103.5c-3.1-3.6-7.6-5.7-12.3-5.7H354c-6.8 0-10.5 7.9-6.1 13.1L470.2 512 347.9 657.9A7.95 7.95 0 0 0 354 671z'\n    ]);\n});\nexports.CloudTwoTone = getIcon('cloud', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M791.9 492l-37.8-10-13.8-36.5c-8.6-22.7-20.6-44.1-35.7-63.4a245.73 245.73 0 0 0-52.4-49.9c-41.1-28.9-89.5-44.2-140-44.2s-98.9 15.3-140 44.2a245.6 245.6 0 0 0-52.4 49.9 240.47 240.47 0 0 0-35.7 63.4l-13.9 36.6-37.9 9.9a125.7 125.7 0 0 0-66.1 43.7A123.1 123.1 0 0 0 140 612c0 33.1 12.9 64.3 36.3 87.7 23.4 23.4 54.5 36.3 87.6 36.3h496.2c33.1 0 64.2-12.9 87.6-36.3A123.3 123.3 0 0 0 884 612c0-56.2-37.8-105.5-92.1-120z'\n    ], [\n        primaryColor,\n        'M811.4 418.7C765.6 297.9 648.9 212 512.2 212S258.8 297.8 213 418.6C127.3 441.1 64 519.1 64 612c0 110.5 89.5 200 199.9 200h496.2C870.5 812 960 722.5 960 612c0-92.7-63.1-170.7-148.6-193.3zm36.3 281a123.07 123.07 0 0 1-87.6 36.3H263.9c-33.1 0-64.2-12.9-87.6-36.3A123.3 123.3 0 0 1 140 612c0-28 9.1-54.3 26.2-76.3a125.7 125.7 0 0 1 66.1-43.7l37.9-9.9 13.9-36.6c8.6-22.8 20.6-44.1 35.7-63.4a245.6 245.6 0 0 1 52.4-49.9c41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.2c19.9 14 37.5 30.8 52.4 49.9 15.1 19.3 27.1 40.7 35.7 63.4l13.8 36.5 37.8 10c54.3 14.5 92.1 63.8 92.1 120 0 33.1-12.9 64.3-36.3 87.7z'\n    ]);\n});\nexports.CodeTwoTone = getIcon('code', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm339.5-223h185c4.1 0 7.5 3.6 7.5 8v48c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48c0-4.4 3.4-8 7.5-8zM308 610.3c0-2.3 1.1-4.6 2.9-6.1L420.7 512l-109.8-92.2a7.63 7.63 0 0 1-2.9-6.1V351c0-6.8 7.9-10.5 13.1-6.1l192 160.9c3.9 3.2 3.9 9.1 0 12.3l-192 161c-5.2 4.4-13.1.7-13.1-6.1v-62.7z'\n    ], [\n        primaryColor,\n        'M321.1 679.1l192-161c3.9-3.2 3.9-9.1 0-12.3l-192-160.9A7.95 7.95 0 0 0 308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 0 0-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48z'\n    ]);\n});\nexports.CompassTwoTone = getIcon('compass', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM327.6 701.7c-2 .9-4.4 0-5.3-2.1-.4-1-.4-2.2 0-3.2L421 470.9 553.1 603l-225.5 98.7zm375.1-375.1L604 552.1 471.9 420l225.5-98.7c2-.9 4.4 0 5.3 2.1.4 1 .4 2.1 0 3.2z'\n    ], [\n        primaryColor,\n        'M322.3 696.4c-.4 1-.4 2.2 0 3.2.9 2.1 3.3 3 5.3 2.1L553.1 603 421 470.9l-98.7 225.5zm375.1-375.1L471.9 420 604 552.1l98.7-225.5c.4-1.1.4-2.2 0-3.2-.9-2.1-3.3-3-5.3-2.1z'\n    ], [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ]);\n});\nexports.ContactsTwoTone = getIcon('contacts', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M460.3 526a51.7 52 0 1 0 103.4 0 51.7 52 0 1 0-103.4 0z'\n    ], [\n        secondaryColor,\n        'M768 352c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H136v496h752V296H768v56zM661 736h-43.8c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 39.9-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5h-43.9a8 8 0 0 1-8-8.4c2.8-53.3 31.9-99.6 74.6-126.1-18.1-20-29.1-46.4-29.1-75.5 0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.6-29.1 75.5 42.7 26.4 71.9 72.8 74.7 126.1a8 8 0 0 1-8 8.4z'\n    ], [\n        primaryColor,\n        'M594.3 601.5a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1 8 8 0 0 0 8 8.4H407c4.2 0 7.6-3.3 7.9-7.5 3.8-50.6 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H661a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.7-126.1zM512 578c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52z'\n    ], [\n        primaryColor,\n        'M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z'\n    ]);\n});\nexports.ContainerTwoTone = getIcon('container', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M635 771.7c-34.5 28.6-78.2 44.3-123 44.3s-88.5-15.8-123-44.3a194.02 194.02 0 0 1-59.1-84.7H232v201h560V687h-97.9c-11.6 32.8-32 62.3-59.1 84.7z'\n    ], [\n        primaryColor,\n        'M320 501h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z'\n    ], [\n        primaryColor,\n        'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v201zm0-264H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v488z'\n    ], [\n        primaryColor,\n        'M320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z'\n    ]);\n});\nexports.ControlTwoTone = getIcon('control', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M616 440a36 36 0 1 0 72 0 36 36 0 1 0-72 0zM340.4 601.5l1.5 2.4c0 .1.1.1.1.2l.9 1.2c.1.1.2.2.2.3 1 1.3 2 2.5 3.2 3.6l.2.2c.4.4.8.8 1.2 1.1.8.8 1.7 1.5 2.6 2.1h.1l1.2.9c.1.1.3.2.4.3 1.2.8 2.5 1.6 3.9 2.2.2.1.5.2.7.4.4.2.7.3 1.1.5.3.1.7.3 1 .4.5.2 1 .4 1.5.5.4.1.9.3 1.3.4l.9.3 1.4.3c.2.1.5.1.7.2.7.1 1.4.3 2.1.4.2 0 .4 0 .6.1.6.1 1.1.1 1.7.2.2 0 .4 0 .7.1.8 0 1.5.1 2.3.1s1.5 0 2.3-.1c.2 0 .4 0 .7-.1.6 0 1.2-.1 1.7-.2.2 0 .4 0 .6-.1.7-.1 1.4-.2 2.1-.4.2-.1.5-.1.7-.2l1.4-.3.9-.3c.4-.1.9-.3 1.3-.4.5-.2 1-.4 1.5-.5.3-.1.7-.3 1-.4.4-.2.7-.3 1.1-.5.2-.1.5-.2.7-.4 1.3-.7 2.6-1.4 3.9-2.2.1-.1.3-.2.4-.3l1.2-.9h.1c.9-.7 1.8-1.4 2.6-2.1.4-.4.8-.7 1.2-1.1l.2-.2c1.1-1.1 2.2-2.4 3.2-3.6.1-.1.2-.2.2-.3l.9-1.2c0-.1.1-.1.1-.2l1.5-2.4c.1-.2.2-.3.3-.5 2.7-5.1 4.3-10.9 4.3-17s-1.6-12-4.3-17c-.1-.2-.2-.4-.3-.5l-1.5-2.4c0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.1-.2-.2-.2-.3-1-1.3-2-2.5-3.2-3.6l-.2-.2c-.4-.4-.8-.8-1.2-1.1-.8-.8-1.7-1.5-2.6-2.1h-.1l-1.2-.9c-.1-.1-.3-.2-.4-.3-1.2-.8-2.5-1.6-3.9-2.2-.2-.1-.5-.2-.7-.4-.4-.2-.7-.3-1.1-.5-.3-.1-.7-.3-1-.4-.5-.2-1-.4-1.5-.5-.4-.1-.9-.3-1.3-.4l-.9-.3-1.4-.3c-.2-.1-.5-.1-.7-.2-.7-.1-1.4-.3-2.1-.4-.2 0-.4 0-.6-.1-.6-.1-1.1-.1-1.7-.2-.2 0-.4 0-.7-.1-.8 0-1.5-.1-2.3-.1s-1.5 0-2.3.1c-.2 0-.4 0-.7.1-.6 0-1.2.1-1.7.2-.2 0-.4 0-.6.1-.7.1-1.4.2-2.1.4-.2.1-.5.1-.7.2l-1.4.3-.9.3c-.4.1-.9.3-1.3.4-.5.2-1 .4-1.5.5-.3.1-.7.3-1 .4-.4.2-.7.3-1.1.5-.2.1-.5.2-.7.4-1.3.7-2.6 1.4-3.9 2.2-.1.1-.3.2-.4.3l-1.2.9h-.1c-.9.7-1.8 1.4-2.6 2.1-.4.4-.8.7-1.2 1.1l-.2.2a54.8 54.8 0 0 0-3.2 3.6c-.1.1-.2.2-.2.3l-.9 1.2c0 .1-.1.1-.1.2l-1.5 2.4c-.1.2-.2.3-.3.5-2.7 5.1-4.3 10.9-4.3 17s1.6 12 4.3 17c.1.2.2.3.3.5z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm436.4-499.1c-.2 0-.3.1-.4.1v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-.2 0-.3-.1-.4-.1 42 13.4 72.4 52.7 72.4 99.1 0 46.4-30.4 85.7-72.4 99.1.2 0 .3-.1.4-.1v221c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V539c.2 0 .3.1.4.1-42-13.4-72.4-52.7-72.4-99.1 0-46.4 30.4-85.7 72.4-99.1zM340 485V264c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v221c41.7 13.6 72 52.8 72 99s-30.3 85.5-72 99v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c-41.7-13.6-72-52.8-72-99s30.3-85.5 72-99z'\n    ], [\n        primaryColor,\n        'M340 683v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c41.7-13.5 72-52.8 72-99s-30.3-85.4-72-99V264c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v221c-41.7 13.5-72 52.8-72 99s30.3 85.4 72 99zm.1-116c.1-.2.2-.3.3-.5l1.5-2.4c0-.1.1-.1.1-.2l.9-1.2c0-.1.1-.2.2-.3 1-1.2 2.1-2.5 3.2-3.6l.2-.2c.4-.4.8-.7 1.2-1.1.8-.7 1.7-1.4 2.6-2.1h.1l1.2-.9c.1-.1.3-.2.4-.3 1.3-.8 2.6-1.5 3.9-2.2.2-.2.5-.3.7-.4.4-.2.7-.3 1.1-.5.3-.1.7-.3 1-.4.5-.1 1-.3 1.5-.5.4-.1.9-.3 1.3-.4l.9-.3 1.4-.3c.2-.1.5-.1.7-.2.7-.2 1.4-.3 2.1-.4.2-.1.4-.1.6-.1.5-.1 1.1-.2 1.7-.2.3-.1.5-.1.7-.1.8-.1 1.5-.1 2.3-.1s1.5.1 2.3.1c.3.1.5.1.7.1.6.1 1.1.1 1.7.2.2.1.4.1.6.1.7.1 1.4.3 2.1.4.2.1.5.1.7.2l1.4.3.9.3c.4.1.9.3 1.3.4.5.1 1 .3 1.5.5.3.1.7.3 1 .4.4.2.7.3 1.1.5.2.2.5.3.7.4 1.4.6 2.7 1.4 3.9 2.2.1.1.3.2.4.3l1.2.9h.1c.9.6 1.8 1.3 2.6 2.1.4.3.8.7 1.2 1.1l.2.2c1.2 1.1 2.2 2.3 3.2 3.6 0 .1.1.2.2.3l.9 1.2c0 .1.1.1.1.2l1.5 2.4A36.03 36.03 0 0 1 408 584c0 6.1-1.6 11.9-4.3 17-.1.2-.2.3-.3.5l-1.5 2.4c0 .1-.1.1-.1.2l-.9 1.2c0 .1-.1.2-.2.3-1 1.2-2.1 2.5-3.2 3.6l-.2.2c-.4.4-.8.7-1.2 1.1-.8.7-1.7 1.4-2.6 2.1h-.1l-1.2.9c-.1.1-.3.2-.4.3-1.3.8-2.6 1.5-3.9 2.2-.2.2-.5.3-.7.4-.4.2-.7.3-1.1.5-.3.1-.7.3-1 .4-.5.1-1 .3-1.5.5-.4.1-.9.3-1.3.4l-.9.3-1.4.3c-.2.1-.5.1-.7.2-.7.2-1.4.3-2.1.4-.2.1-.4.1-.6.1-.5.1-1.1.2-1.7.2-.3.1-.5.1-.7.1-.8.1-1.5.1-2.3.1s-1.5-.1-2.3-.1c-.3-.1-.5-.1-.7-.1-.6-.1-1.1-.1-1.7-.2-.2-.1-.4-.1-.6-.1-.7-.1-1.4-.3-2.1-.4-.2-.1-.5-.1-.7-.2l-1.4-.3-.9-.3c-.4-.1-.9-.3-1.3-.4-.5-.1-1-.3-1.5-.5-.3-.1-.7-.3-1-.4-.4-.2-.7-.3-1.1-.5-.2-.2-.5-.3-.7-.4-1.4-.6-2.7-1.4-3.9-2.2-.1-.1-.3-.2-.4-.3l-1.2-.9h-.1c-.9-.6-1.8-1.3-2.6-2.1-.4-.3-.8-.7-1.2-1.1l-.2-.2c-1.2-1.1-2.2-2.3-3.2-3.6 0-.1-.1-.2-.2-.3l-.9-1.2c0-.1-.1-.1-.1-.2l-1.5-2.4c-.1-.2-.2-.3-.3-.5-2.7-5-4.3-10.9-4.3-17s1.6-11.9 4.3-17zm280.3-27.9c-.1 0-.2-.1-.4-.1v221c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V539c-.1 0-.2.1-.4.1 42-13.4 72.4-52.7 72.4-99.1 0-46.4-30.4-85.7-72.4-99.1.1 0 .2.1.4.1v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c.1 0 .2-.1.4-.1-42 13.4-72.4 52.7-72.4 99.1 0 46.4 30.4 85.7 72.4 99.1zM652 404c19.9 0 36 16.1 36 36s-16.1 36-36 36-36-16.1-36-36 16.1-36 36-36z'\n    ]);\n});\nexports.CopyTwoTone = getIcon('copy', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M232 706h142c22.1 0 40 17.9 40 40v142h250V264H232v442z'], [\n        primaryColor,\n        'M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32z'\n    ], [\n        primaryColor,\n        'M704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z'\n    ]);\n});\nexports.CreditCardTwoTone = getIcon('credit-card', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M136 792h752V440H136v352zm507-144c0-4.4 3.6-8 8-8h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72zM136 232h752v120H136z'\n    ], [\n        primaryColor,\n        'M651 728h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72c0 4.4 3.6 8 8 8z'\n    ], [\n        primaryColor,\n        'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V440h752v352zm0-440H136V232h752v120z'\n    ]);\n});\nexports.CrownTwoTone = getIcon('crown', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M911.9 283.9v.5L835.5 865c-1 8-7.9 14-15.9 14H204.5c-8.1 0-14.9-6.1-16-14l-76.4-580.6v-.6 1.6L188.5 866c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6c.1-.5.1-1 0-1.5z'\n    ], [\n        secondaryColor,\n        'M773.6 810.6l53.9-409.4-139.8 86.1L512 252.9 336.3 487.3l-139.8-86.1 53.8 409.4h523.3zm-374.2-189c0-62.1 50.5-112.6 112.6-112.6s112.6 50.5 112.6 112.6v1c0 62.1-50.5 112.6-112.6 112.6s-112.6-50.5-112.6-112.6v-1z'\n    ], [\n        primaryColor,\n        'M512 734.2c61.9 0 112.3-50.2 112.6-112.1v-.5c0-62.1-50.5-112.6-112.6-112.6s-112.6 50.5-112.6 112.6v.5c.3 61.9 50.7 112.1 112.6 112.1zm0-160.9c26.6 0 48.2 21.6 48.2 48.3 0 26.6-21.6 48.3-48.2 48.3s-48.2-21.6-48.2-48.3c0-26.6 21.6-48.3 48.2-48.3z'\n    ], [\n        primaryColor,\n        'M188.5 865c1.1 7.9 7.9 14 16 14h615.1c8 0 14.9-6 15.9-14l76.4-580.6v-.5c.3-6.4-6.7-10.8-12.3-7.4L705 396.4 518.4 147.5a8.06 8.06 0 0 0-12.9 0L319 396.4 124.3 276.5c-5.5-3.4-12.6.9-12.2 7.3v.6L188.5 865zm147.8-377.7L512 252.9l175.7 234.4 139.8-86.1-53.9 409.4H250.3l-53.8-409.4 139.8 86.1z'\n    ]);\n});\nexports.CustomerServiceTwoTone = getIcon('customer-service', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M696 632h128v192H696zm-496 0h128v192H200z'], [\n        primaryColor,\n        'M512 128c-212.1 0-384 171.9-384 384v360c0 13.3 10.7 24 24 24h184c35.3 0 64-28.7 64-64V624c0-35.3-28.7-64-64-64H200v-48c0-172.3 139.7-312 312-312s312 139.7 312 312v48H688c-35.3 0-64 28.7-64 64v208c0 35.3 28.7 64 64 64h184c13.3 0 24-10.7 24-24V512c0-212.1-171.9-384-384-384zM328 632v192H200V632h128zm496 192H696V632h128v192z'\n    ]);\n});\nexports.DashboardTwoTone = getIcon('dashboard', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 188c-99.3 0-192.7 38.7-263 109-70.3 70.2-109 163.6-109 263 0 105.6 44.5 205.5 122.6 276h498.8A371.12 371.12 0 0 0 884 560c0-99.3-38.7-192.7-109-263-70.2-70.3-163.6-109-263-109zm-30 44c0-4.4 3.6-8 8-8h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80zM270 582c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44zm90.7-204.4l-31.1 31.1a8.03 8.03 0 0 1-11.3 0l-56.6-56.6a8.03 8.03 0 0 1 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zm291.1 83.5l-84.5 84.5c5 18.7.2 39.4-14.5 54.1a55.95 55.95 0 0 1-79.2 0 55.95 55.95 0 0 1 0-79.2 55.87 55.87 0 0 1 54.1-14.5l84.5-84.5c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3c3.1 3.1 3.1 8.2 0 11.3zm43-52.4l-31.1-31.1a8.03 8.03 0 0 1 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6a8.03 8.03 0 0 1-11.3 0zM846 538v44c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8z'\n    ], [\n        primaryColor,\n        'M623.5 421.5a8.03 8.03 0 0 0-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 0 0 0 79.2 55.95 55.95 0 0 0 79.2 0 55.87 55.87 0 0 0 14.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8z'\n    ], [\n        primaryColor,\n        'M924.8 385.6a446.7 446.7 0 0 0-96-142.4 446.7 446.7 0 0 0-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 0 0-142.4 96 446.7 446.7 0 0 0-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 0 1 140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276z'\n    ], [\n        primaryColor,\n        'M762.7 340.8l-31.1-31.1a8.03 8.03 0 0 0-11.3 0l-56.6 56.6a8.03 8.03 0 0 0 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zM750 538v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zM304.1 309.7a8.03 8.03 0 0 0-11.3 0l-31.1 31.1a8.03 8.03 0 0 0 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z'\n    ]);\n});\nexports.DatabaseTwoTone = getIcon('database', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M232 616h560V408H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 888h560V680H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 344h560V136H232v208zm112-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z'\n    ], [\n        primaryColor,\n        'M304 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0 272a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-544a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'\n    ], [\n        primaryColor,\n        'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V680h560v208zm0-272H232V408h560v208zm0-272H232V136h560v208z'\n    ]);\n});\nexports.DeleteTwoTone = getIcon('delete', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M292.7 840h438.6l24.2-512h-487z'], [\n        primaryColor,\n        'M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-504-72h304v72H360v-72zm371.3 656H292.7l-24.2-512h487l-24.2 512z'\n    ]);\n});\nexports.DiffTwoTone = getIcon('diff', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M232 264v624h432V413.8L514.2 264H232zm336 489c0 3.8-3.4 7-7.5 7h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42zm0-262v42c0 3.8-3.4 7-7.5 7H476v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V540h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V484h84.5c4.1 0 7.5 3.1 7.5 7z'\n    ], [\n        primaryColor,\n        'M854.2 306.6L611.3 72.9c-6-5.7-13.9-8.9-22.2-8.9H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h277l219 210.6V824c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V329.6c0-8.7-3.5-17-9.8-23z'\n    ], [\n        primaryColor,\n        'M553.4 201.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v704c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V397.3c0-8.5-3.4-16.6-9.4-22.6L553.4 201.4zM664 888H232V264h282.2L664 413.8V888z'\n    ], [\n        primaryColor,\n        'M476 399.1c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V484h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V540h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H476v-84.9zM560.5 704h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42c0-3.8-3.4-7-7.5-7z'\n    ]);\n});\nexports.DislikeTwoTone = getIcon('dislike', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M273 100.1v428h.3l-.3-428zM820.4 525l-21.9-19 14-25.5a56.2 56.2 0 0 0 6.9-27.3c0-16.5-7.1-32.2-19.6-43l-21.9-19 13.9-25.4a56.2 56.2 0 0 0 6.9-27.3c0-16.5-7.1-32.2-19.6-43l-21.9-19 13.9-25.4a56.2 56.2 0 0 0 6.9-27.3c0-22.4-13.2-42.6-33.6-51.8H345v345.2c18.6 67.2 46.4 168 83.5 302.5a44.28 44.28 0 0 0 42.2 32.3c7.5.1 15-2.2 21.1-6.7 9.9-7.4 15.2-18.6 14.6-30.5l-9.6-198.4h314.4C829 605.5 840 587.1 840 568c0-16.5-7.1-32.2-19.6-43z'\n    ], [\n        primaryColor,\n        'M112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32zm773.9 358.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 0 0-26.5-5.4H273l.3 428 85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zm-74.7 126.1H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 0 1-42.2-32.3c-37.1-134.4-64.9-235.2-83.5-302.5V172h399.4a56.85 56.85 0 0 1 33.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0 1 19.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0 1 19.6 43c0 19.1-11 37.5-28.8 48.4z'\n    ]);\n});\nexports.DownCircleTwoTone = getIcon('down-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm184.4 277.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7h46.9c10.3 0 19.9 4.9 25.9 13.2L512 563.6l105.2-145.4c6-8.3 15.7-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.4 12.7z'\n    ], [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        primaryColor,\n        'M690 405h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 563.6 406.8 418.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7z'\n    ]);\n});\nexports.DownSquareTwoTone = getIcon('down-square', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm150-440h46.9c10.3 0 19.9 4.9 25.9 13.2L512 558.6l105.2-145.4c6-8.3 15.7-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.4 12.7l-178 246a7.95 7.95 0 0 1-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7z'\n    ], [\n        primaryColor,\n        'M505.5 658.7c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3.1-12.7-6.4-12.7h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 558.6 406.8 413.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246z'\n    ]);\n});\nexports.EditTwoTone = getIcon('edit', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M761.1 288.3L687.8 215 325.1 577.6l-15.6 89 88.9-15.7z'], [\n        primaryColor,\n        'M880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32zm-622.3-84c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89z'\n    ]);\n});\nexports.EnvironmentTwoTone = getIcon('environment', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M724.4 224.9C667.7 169.5 592.3 139 512 139s-155.7 30.5-212.4 85.8C243.1 280 212 353.2 212 431.1c0 241.3 234.1 407.2 300 449.1 65.9-41.9 300-207.8 300-449.1 0-77.9-31.1-151.1-87.6-206.2zM512 615c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z'\n    ], [\n        primaryColor,\n        'M512 263c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 0 1 512 551c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 439c0-29.9 11.7-58 32.8-79.2C454 338.6 482.1 327 512 327c29.9 0 58 11.6 79.2 32.8S624 409.1 624 439c0 29.9-11.6 58-32.8 79.2z'\n    ], [\n        primaryColor,\n        'M854.6 289.1a362.49 362.49 0 0 0-79.9-115.7 370.83 370.83 0 0 0-118.2-77.8C610.7 76.6 562.1 67 512 67c-50.1 0-98.7 9.6-144.5 28.5-44.3 18.3-84 44.5-118.2 77.8A363.6 363.6 0 0 0 169.4 289c-19.5 45-29.4 92.8-29.4 142 0 70.6 16.9 140.9 50.1 208.7 26.7 54.5 64 107.6 111 158.1 80.3 86.2 164.5 138.9 188.4 153a43.9 43.9 0 0 0 22.4 6.1c7.8 0 15.5-2 22.4-6.1 23.9-14.1 108.1-66.8 188.4-153 47-50.4 84.3-103.6 111-158.1C867.1 572 884 501.8 884 431.1c0-49.2-9.9-97-29.4-142zM512 880.2c-65.9-41.9-300-207.8-300-449.1 0-77.9 31.1-151.1 87.6-206.3C356.3 169.5 431.7 139 512 139s155.7 30.5 212.4 85.9C780.9 280 812 353.2 812 431.1c0 241.3-234.1 407.2-300 449.1z'\n    ]);\n});\nexports.ExclamationCircleTwoTone = getIcon('exclamation-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-32 156c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'\n    ], [\n        primaryColor,\n        'M488 576h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8zm-24 112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z'\n    ]);\n});\nexports.ExperimentTwoTone = getIcon('experiment', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M551.9 513c19.6 0 35.9-14.2 39.3-32.8A40.02 40.02 0 0 1 552 512a40 40 0 0 1-40-39.4v.5c0 22 17.9 39.9 39.9 39.9zM752 687.8l-.3-.3c-29-17.5-62.3-26.8-97-26.8-44.9 0-87.2 15.7-121 43.8a256.27 256.27 0 0 1-164.9 59.9c-41.2 0-81-9.8-116.7-28L210.5 844h603l-59.9-155.2-1.6-1z'\n    ], [\n        primaryColor,\n        'M879 824.9L696.3 352V178H768v-68H256v68h71.7v174L145 824.9c-2.8 7.4-4.3 15.2-4.3 23.1 0 35.3 28.7 64 64 64h614.6c7.9 0 15.7-1.5 23.1-4.3 33-12.7 49.4-49.8 36.6-82.8zM395.7 364.7V180h232.6v184.7L719.2 600c-20.7-5.3-42.1-8-63.9-8-61.2 0-119.2 21.5-165.3 60a188.78 188.78 0 0 1-121.3 43.9c-32.7 0-64.1-8.3-91.8-23.7l118.8-307.5zM210.5 844l41.6-107.6.1-.2c35.7 18.1 75.4 27.8 116.6 27.8 61.2 0 119.2-21.5 165.3-60 33.9-28.2 76.3-43.9 121.3-43.9 35 0 68.4 9.5 97.6 27.1l.6 1.6L813.5 844h-603z'\n    ], [\n        primaryColor,\n        'M552 512c19.3 0 35.4-13.6 39.2-31.8.6-2.7.8-5.4.8-8.2 0-22.1-17.9-40-40-40s-40 17.9-40 40v.6a40 40 0 0 0 40 39.4z'\n    ]);\n});\nexports.EyeInvisibleTwoTone = getIcon('eye-invisible', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M254.89 758.85l125.57-125.57a176 176 0 0 1 248.82-248.82L757 256.72Q651.69 186.07 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q69.27 145.91 173.09 221.05zM942.2 486.2Q889.46 375.11 816.7 305L672.48 449.27a176.09 176.09 0 0 1-227.22 227.21L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5z'\n    ], [\n        primaryColor,\n        'M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 0 0 0-51.5zM878.63 165.56L836 122.88a8 8 0 0 0-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 0 0 0 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 0 0 0 11.31L155.17 889a8 8 0 0 0 11.31 0l712.15-712.12a8 8 0 0 0 0-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 0 0-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 0 1 146.2-106.69L401.31 546.2A112 112 0 0 1 396 512z'\n    ], [\n        primaryColor,\n        'M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 0 0 227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 0 1-112 112z'\n    ]);\n});\nexports.EyeTwoTone = getIcon('eye', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M81.8 537.8a60.3 60.3 0 0 1 0-51.5C176.6 286.5 319.8 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c-192.1 0-335.4-100.5-430.2-300.2z'\n    ], [\n        secondaryColor,\n        'M512 258c-161.3 0-279.4 81.8-362.7 254C232.6 684.2 350.7 766 512 766c161.4 0 279.5-81.8 362.7-254C791.4 339.8 673.3 258 512 258zm-4 430c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z'\n    ], [\n        primaryColor,\n        'M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258s279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766z'\n    ], [\n        primaryColor,\n        'M508 336c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z'\n    ]);\n});\nexports.FileAddTwoTone = getIcon('file-add', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm126 236v48c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V644H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V472c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8z'\n    ], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M544 472c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V644h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V472z'\n    ]);\n});\nexports.FileExcelTwoTone = getIcon('file-excel', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm51.6 120h35.7a12.04 12.04 0 0 1 10.1 18.5L546.1 623l84 130.4c3.6 5.6 2 13-3.6 16.6-2 1.2-4.2 1.9-6.5 1.9h-37.5c-4.1 0-8-2.1-10.2-5.7L510 664.8l-62.7 101.5c-2.2 3.5-6 5.7-10.2 5.7h-34.5a12.04 12.04 0 0 1-10.2-18.4l83.4-132.8-82.3-130.4c-3.6-5.7-1.9-13.1 3.7-16.6 1.9-1.3 4.1-1.9 6.4-1.9H442c4.2 0 8.1 2.2 10.3 5.8l61.8 102.4 61.2-102.3c2.2-3.6 6.1-5.8 10.3-5.8z'\n    ], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M514.1 580.1l-61.8-102.4c-2.2-3.6-6.1-5.8-10.3-5.8h-38.4c-2.3 0-4.5.6-6.4 1.9-5.6 3.5-7.3 10.9-3.7 16.6l82.3 130.4-83.4 132.8a12.04 12.04 0 0 0 10.2 18.4h34.5c4.2 0 8-2.2 10.2-5.7L510 664.8l62.3 101.4c2.2 3.6 6.1 5.7 10.2 5.7H620c2.3 0 4.5-.7 6.5-1.9 5.6-3.6 7.2-11 3.6-16.6l-84-130.4 85.3-132.5a12.04 12.04 0 0 0-10.1-18.5h-35.7c-4.2 0-8.1 2.2-10.3 5.8l-61.2 102.3z'\n    ]);\n});\nexports.FileExclamationTwoTone = getIcon('file-exclamation', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-54 96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V448zm32 336c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z'\n    ], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M488 640h48c4.4 0 8-3.6 8-8V448c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm-16 104a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'\n    ]);\n});\nexports.FileImageTwoTone = getIcon('file-image', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-134 50c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm296 294H328.1c-6.7 0-10.4-7.7-6.3-12.9l99.8-127.2a8 8 0 0 1 12.6 0l41.1 52.4 77.8-99.2a8.1 8.1 0 0 1 12.7 0l136.5 174c4.1 5.2.4 12.9-6.3 12.9z'\n    ], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M553.1 509.1l-77.8 99.2-41.1-52.4a8 8 0 0 0-12.6 0l-99.8 127.2a7.98 7.98 0 0 0 6.3 12.9H696c6.7 0 10.4-7.7 6.3-12.9l-136.5-174a8.1 8.1 0 0 0-12.7 0zM360 442a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'\n    ]);\n});\nexports.FilePdfTwoTone = getIcon('file-pdf', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M509.2 490.8c-.7-1.3-1.4-1.9-2.2-2-2.9 3.3-2.2 31.5 2.7 51.4 4-13.6 4.7-40.5-.5-49.4zm-1.6 120.5c-7.7 20-18.8 47.3-32.1 71.4 4-1.6 8.1-3.3 12.3-5 17.6-7.2 37.3-15.3 58.9-20.2-14.9-11.8-28.4-27.7-39.1-46.2z'\n    ], [\n        secondaryColor,\n        'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm55 287.6c16.1-1.9 30.6-2.8 44.3-2.3 12.8.4 23.6 2 32 5.1.2.1.3.1.5.2.4.2.8.3 1.2.5.5.2 1.1.4 1.6.7.1.1.3.1.4.2 4.1 1.8 7.5 4 10.1 6.6 9.1 9.1 11.8 26.1 6.2 39.6-3.2 7.7-11.7 20.5-33.3 20.5-21.8 0-53.9-9.7-82.1-24.8-25.5 4.3-53.7 13.9-80.9 23.1-5.8 2-11.8 4-17.6 5.9-38 65.2-66.5 79.4-84.1 79.4-4.2 0-7.8-.9-10.8-2-6.9-2.6-12.8-8-16.5-15-.9-1.7-1.6-3.4-2.2-5.2-1.6-4.8-2.1-9.6-1.3-13.6l.6-2.7c.1-.2.1-.4.2-.6.2-.7.4-1.4.7-2.1 0-.1.1-.2.1-.3 4.1-11.9 13.6-23.4 27.7-34.6 12.3-9.8 27.1-18.7 45.9-28.4 15.9-28 37.6-75.1 51.2-107.4-10.8-41.8-16.7-74.6-10.1-98.6.9-3.3 2.5-6.4 4.6-9.1.2-.2.3-.4.5-.6.1-.1.1-.2.2-.2 6.3-7.5 16.9-11.9 28.1-11.5 16.6.7 29.7 11.5 33 30.1 1.7 8 2.2 16.5 1.9 25.7v.7c0 .5 0 1-.1 1.5-.7 13.3-3 26.6-7.3 44.7-.4 1.6-.8 3.2-1.2 5.2l-1 4.1-.1.3c.1.2.1.3.2.5l1.8 4.5c.1.3.3.7.4 1 .7 1.6 1.4 3.3 2.1 4.8v.1c8.7 18.8 19.7 33.4 33.9 45.1 4.3 3.5 8.9 6.7 13.9 9.8 1.8-.5 3.5-.7 5.3-.9z'\n    ], [\n        secondaryColor,\n        'M391.5 761c5.7-4.4 16.2-14.5 30.1-34.7-10.3 9.4-23.4 22.4-30.1 34.7zm270.9-83l.2-.3h.2c.6-.4.5-.7.4-.9-.1-.1-4.5-9.3-45.1-7.4 35.3 13.9 43.5 9.1 44.3 8.6z'\n    ], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M535.9 585.3c-.8-1.7-1.5-3.3-2.2-4.9-.1-.3-.3-.7-.4-1l-1.8-4.5c-.1-.2-.1-.3-.2-.5l.1-.3.2-1.1c4-16.3 8.6-35.3 9.4-54.4v-.7c.3-8.6-.2-17.2-2-25.6-3.8-21.3-19.5-29.6-32.9-30.2-11.3-.5-21.8 4-28.1 11.4-.1.1-.1.2-.2.2-.2.2-.4.4-.5.6-2.1 2.7-3.7 5.8-4.6 9.1-6.6 24-.7 56.8 10.1 98.6-13.6 32.4-35.3 79.4-51.2 107.4v.1c-27.7 14.3-64.1 35.8-73.6 62.9 0 .1-.1.2-.1.3-.2.7-.5 1.4-.7 2.1-.1.2-.1.4-.2.6-.2.9-.5 1.8-.6 2.7-.9 4-.4 8.8 1.3 13.6.6 1.8 1.3 3.5 2.2 5.2 3.7 7 9.6 12.4 16.5 15 3 1.1 6.6 2 10.8 2 17.6 0 46.1-14.2 84.1-79.4 5.8-1.9 11.8-3.9 17.6-5.9 27.2-9.2 55.4-18.8 80.9-23.1 28.2 15.1 60.3 24.8 82.1 24.8 21.6 0 30.1-12.8 33.3-20.5 5.6-13.5 2.9-30.5-6.2-39.6-2.6-2.6-6-4.8-10.1-6.6-.1-.1-.3-.1-.4-.2-.5-.2-1.1-.4-1.6-.7-.4-.2-.8-.3-1.2-.5-.2-.1-.3-.1-.5-.2-16.2-5.8-41.7-6.7-76.3-2.8l-5.3.6c-5-3-9.6-6.3-13.9-9.8-14.2-11.3-25.1-25.8-33.8-44.7zM391.5 761c6.7-12.3 19.8-25.3 30.1-34.7-13.9 20.2-24.4 30.3-30.1 34.7zM507 488.8c.8.1 1.5.7 2.2 2 5.2 8.9 4.5 35.8.5 49.4-4.9-19.9-5.6-48.1-2.7-51.4zm-19.2 188.9c-4.2 1.7-8.3 3.4-12.3 5 13.3-24.1 24.4-51.4 32.1-71.4 10.7 18.5 24.2 34.4 39.1 46.2-21.6 4.9-41.3 13-58.9 20.2zm175.4-.9c.1.2.2.5-.4.9h-.2l-.2.3c-.8.5-9 5.3-44.3-8.6 40.6-1.9 45 7.3 45.1 7.4z'\n    ]);\n});\nexports.FileMarkdownTwoTone = getIcon('file-markdown', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm72.3 122H641c6.6 0 12 5.4 12 12v272c0 6.6-5.4 12-12 12h-27.2c-6.6 0-12-5.4-12-12V581.7L535 732.3c-2 4.3-6.3 7.1-11 7.1h-24.1a12 12 0 0 1-11-7.1l-66.8-150.2V758c0 6.6-5.4 12-12 12H383c-6.6 0-12-5.4-12-12V486c0-6.6 5.4-12 12-12h35c4.8 0 9.1 2.8 11 7.2l83.2 191 83.1-191c1.9-4.4 6.2-7.2 11-7.2z'\n    ], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M429 481.2c-1.9-4.4-6.2-7.2-11-7.2h-35c-6.6 0-12 5.4-12 12v272c0 6.6 5.4 12 12 12h27.1c6.6 0 12-5.4 12-12V582.1l66.8 150.2a12 12 0 0 0 11 7.1H524c4.7 0 9-2.8 11-7.1l66.8-150.6V758c0 6.6 5.4 12 12 12H641c6.6 0 12-5.4 12-12V486c0-6.6-5.4-12-12-12h-34.7c-4.8 0-9.1 2.8-11 7.2l-83.1 191-83.2-191z'\n    ]);\n});\nexports.FilePptTwoTone = getIcon('file-ppt', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M464.5 516.2v108.4h38.9c44.7 0 71.2-10.9 71.2-54.3 0-34.4-20.1-54.1-53.9-54.1h-56.2z'\n    ], [\n        secondaryColor,\n        'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm90 218.4c0 55.2-36.8 94.1-96.2 94.1h-63.3V760c0 4.4-3.6 8-8 8H424c-4.4 0-8-3.6-8-8V484c0-4.4 3.6-8 8-8v.1h104c59.7 0 96 39.8 96 94.3z'\n    ], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M424 476.1c-4.4-.1-8 3.5-8 7.9v276c0 4.4 3.6 8 8 8h32.5c4.4 0 8-3.6 8-8v-95.5h63.3c59.4 0 96.2-38.9 96.2-94.1 0-54.5-36.3-94.3-96-94.3H424zm150.6 94.2c0 43.4-26.5 54.3-71.2 54.3h-38.9V516.2h56.2c33.8 0 53.9 19.7 53.9 54.1z'\n    ]);\n});\nexports.FileTextTwoTone = getIcon('file-text', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-22 322c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm200-184v48c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8z'\n    ], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8zm192 128H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'\n    ]);\n});\nexports.FileUnknownTwoTone = getIcon('file-unknown', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm-22 424c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm110-228.4c.7 44.9-29.7 84.5-74.3 98.9-5.7 1.8-9.7 7.3-9.7 13.3V672c0 5.5-4.5 10-10 10h-32c-5.5 0-10-4.5-10-10v-32c.2-19.8 15.4-37.3 34.7-40.1C549 596.2 570 574.3 570 549c0-28.1-25.8-51.5-58-51.5s-58 23.4-58 51.6c0 5.2-4.4 9.4-9.8 9.4h-32.4c-5.4 0-9.8-4.1-9.8-9.5 0-57.4 50.1-103.7 111.5-103 59.3.8 107.7 46.1 108.5 101.6z'\n    ], [\n        primaryColor,\n        'M854.6 288.7L639.4 73.4c-6-6-14.2-9.4-22.7-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.6-9.4-22.6zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M480 744a32 32 0 1 0 64 0 32 32 0 1 0-64 0zm-78-195c0 5.4 4.4 9.5 9.8 9.5h32.4c5.4 0 9.8-4.2 9.8-9.4 0-28.2 25.8-51.6 58-51.6s58 23.4 58 51.5c0 25.3-21 47.2-49.3 50.9-19.3 2.8-34.5 20.3-34.7 40.1v32c0 5.5 4.5 10 10 10h32c5.5 0 10-4.5 10-10v-12.2c0-6 4-11.5 9.7-13.3 44.6-14.4 75-54 74.3-98.9-.8-55.5-49.2-100.8-108.5-101.6-61.4-.7-111.5 45.6-111.5 103z'\n    ]);\n});\nexports.FileWordTwoTone = getIcon('file-word', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42zm101.3 129.3c1.3-5.4 6.1-9.3 11.7-9.3h35.6a12.04 12.04 0 0 1 11.6 15.1l-74.4 276c-1.4 5.3-6.2 8.9-11.6 8.9h-31.8c-5.4 0-10.2-3.7-11.6-8.9l-52.8-197-52.8 197c-1.4 5.3-6.2 8.9-11.6 8.9h-32c-5.4 0-10.2-3.7-11.6-8.9l-74.2-276a12.02 12.02 0 0 1 11.6-15.1h35.4c5.6 0 10.4 3.9 11.7 9.3L434.6 680l49.7-198.9c1.3-5.4 6.1-9.1 11.6-9.1h32.2c5.5 0 10.3 3.7 11.6 9.1l49.8 199.3 45.8-199.1z'\n    ], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M528.1 472h-32.2c-5.5 0-10.3 3.7-11.6 9.1L434.6 680l-46.1-198.7c-1.3-5.4-6.1-9.3-11.7-9.3h-35.4a12.02 12.02 0 0 0-11.6 15.1l74.2 276c1.4 5.2 6.2 8.9 11.6 8.9h32c5.4 0 10.2-3.6 11.6-8.9l52.8-197 52.8 197c1.4 5.2 6.2 8.9 11.6 8.9h31.8c5.4 0 10.2-3.6 11.6-8.9l74.4-276a12.04 12.04 0 0 0-11.6-15.1H647c-5.6 0-10.4 3.9-11.7 9.3l-45.8 199.1-49.8-199.3c-1.3-5.4-6.1-9.1-11.6-9.1z'\n    ]);\n});\nexports.FileZipTwoTone = getIcon('file-zip', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M344 630h32v2h-32z'], [\n        secondaryColor,\n        'M534 352V136H360v64h64v64h-64v64h64v64h-64v64h64v64h-64v62h64v160H296V520h64v-64h-64v-64h64v-64h-64v-64h64v-64h-64v-64h-64v752h560V394H576a42 42 0 0 1-42-42z'\n    ], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h64v64h64v-64h174v216a42 42 0 0 0 42 42h216v494z'\n    ], [\n        primaryColor,\n        'M296 392h64v64h-64zm0-128h64v64h-64zm0 318v160h128V582h-64v-62h-64v62zm48 50v-2h32v64h-32v-62zm16-432h64v64h-64zm0 256h64v64h-64zm0-128h64v64h-64z'\n    ]);\n});\nexports.FileTwoTone = getIcon('file', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M534 352V136H232v752h560V394H576a42 42 0 0 1-42-42z'], [\n        primaryColor,\n        'M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0 0 42 42h216v494z'\n    ]);\n});\nexports.FilterTwoTone = getIcon('filter', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M420.6 798h182.9V642H420.6zM411 561.4l9.5 16.6h183l9.5-16.6L811.3 226H212.7z'\n    ], [\n        primaryColor,\n        'M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 597.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V597.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.5 798H420.6V642h182.9v156zm9.5-236.6l-9.5 16.6h-183l-9.5-16.6L212.7 226h598.6L613 561.4z'\n    ]);\n});\nexports.FireTwoTone = getIcon('fire', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M737 438.6c-9.6 15.5-21.1 30.7-34.4 45.6a73.1 73.1 0 0 1-51 24.4 73.36 73.36 0 0 1-53.4-18.8 74.01 74.01 0 0 1-24.4-59.8c3-47.4-12.4-103.1-45.8-165.7-16.9-31.4-37.1-58.2-61.2-80.4a240 240 0 0 1-12.1 46.5 354.26 354.26 0 0 1-58.2 101 349.6 349.6 0 0 1-58.6 56.8c-34 26.1-62 60-80.8 97.9a275.96 275.96 0 0 0-29.1 124c0 74.9 29.5 145.3 83 198.4 53.7 53.2 125 82.4 201 82.4s147.3-29.2 201-82.4c53.5-53 83-123.5 83-198.4 0-39.2-8.1-77.3-24-113.1-9.3-21-21-40.5-35-58.4z'\n    ], [\n        primaryColor,\n        'M834.1 469.2A347.49 347.49 0 0 0 751.2 354l-29.1-26.7a8.09 8.09 0 0 0-13 3.3l-13 37.3c-8.1 23.4-23 47.3-44.1 70.8-1.4 1.5-3 1.9-4.1 2-1.1.1-2.8-.1-4.3-1.5-1.4-1.2-2.1-3-2-4.8 3.7-60.2-14.3-128.1-53.7-202C555.3 171 510 123.1 453.4 89.7l-41.3-24.3c-5.4-3.2-12.3 1-12 7.3l2.2 48c1.5 32.8-2.3 61.8-11.3 85.9-11 29.5-26.8 56.9-47 81.5a295.64 295.64 0 0 1-47.5 46.1 352.6 352.6 0 0 0-100.3 121.5A347.75 347.75 0 0 0 160 610c0 47.2 9.3 92.9 27.7 136a349.4 349.4 0 0 0 75.5 110.9c32.4 32 70 57.2 111.9 74.7C418.5 949.8 464.5 959 512 959s93.5-9.2 136.9-27.3A348.6 348.6 0 0 0 760.8 857c32.4-32 57.8-69.4 75.5-110.9a344.2 344.2 0 0 0 27.7-136c0-48.8-10-96.2-29.9-140.9zM713 808.5c-53.7 53.2-125 82.4-201 82.4s-147.3-29.2-201-82.4c-53.5-53.1-83-123.5-83-198.4 0-43.5 9.8-85.2 29.1-124 18.8-37.9 46.8-71.8 80.8-97.9a349.6 349.6 0 0 0 58.6-56.8c25-30.5 44.6-64.5 58.2-101a240 240 0 0 0 12.1-46.5c24.1 22.2 44.3 49 61.2 80.4 33.4 62.6 48.8 118.3 45.8 165.7a74.01 74.01 0 0 0 24.4 59.8 73.36 73.36 0 0 0 53.4 18.8c19.7-1 37.8-9.7 51-24.4 13.3-14.9 24.8-30.1 34.4-45.6 14 17.9 25.7 37.4 35 58.4 15.9 35.8 24 73.9 24 113.1 0 74.9-29.5 145.4-83 198.4z'\n    ]);\n});\nexports.FlagTwoTone = getIcon('flag', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M184 232h368v336H184z'], [secondaryColor, 'M624 632c0 4.4-3.6 8-8 8H504v73h336V377H624v255z'], [\n        primaryColor,\n        'M880 305H624V192c0-17.7-14.3-32-32-32H184v-40c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v784c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V640h248v113c0 17.7 14.3 32 32 32h416c17.7 0 32-14.3 32-32V337c0-17.7-14.3-32-32-32zM184 568V232h368v336H184zm656 145H504v-73h112c4.4 0 8-3.6 8-8V377h216v336z'\n    ]);\n});\nexports.FolderAddTwoTone = getIcon('folder-add', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M372.5 256H184v512h656V370.4H492.1L372.5 256zM540 443.1V528h84.5c4.1 0 7.5 3.1 7.5 7v42c0 3.8-3.4 7-7.5 7H540v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V584h-84.5c-4.1 0-7.5-3.2-7.5-7v-42c0-3.9 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1z'\n    ], [\n        primaryColor,\n        'M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z'\n    ], [\n        primaryColor,\n        'M484 443.1V528h-84.5c-4.1 0-7.5 3.1-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V584h84.5c4.1 0 7.5-3.2 7.5-7v-42c0-3.9-3.4-7-7.5-7H540v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1z'\n    ]);\n});\nexports.FolderOpenTwoTone = getIcon('folder-open', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M159 768h612.3l103.4-256H262.3z'], [\n        primaryColor,\n        'M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z'\n    ]);\n});\nexports.FolderTwoTone = getIcon('folder', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z'\n    ], [secondaryColor, 'M372.5 256H184v512h656V370.4H492.1z']);\n});\nexports.FrownTwoTone = getIcon('frown', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm376 272h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 636.1 562.5 597 512 597s-92.1 39.1-95.8 88.6c-.3 4.2-3.9 7.4-8.1 7.4H360a8 8 0 0 1-8-8.4c4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6a8 8 0 0 1-8 8.4zm24-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'\n    ], [\n        primaryColor,\n        'M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm224 112c-85.5 0-155.6 67.3-160 151.6a8 8 0 0 0 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4 3.7-49.5 45.3-88.6 95.8-88.6s92 39.1 95.8 88.6c.3 4.2 3.9 7.4 8.1 7.4H664a8 8 0 0 0 8-8.4C667.6 600.3 597.5 533 512 533zm128-112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z'\n    ]);\n});\nexports.FundTwoTone = getIcon('fund', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560z'\n    ], [\n        secondaryColor,\n        'M136 792h752V232H136v560zm56.4-130.5l214.9-215c3.1-3.1 8.2-3.1 11.3 0L533 561l254.5-254.6c3.1-3.1 8.2-3.1 11.3 0l36.8 36.8c3.1 3.1 3.1 8.2 0 11.3l-297 297.2a8.03 8.03 0 0 1-11.3 0L412.9 537.2 240.4 709.7a8.03 8.03 0 0 1-11.3 0l-36.7-36.9a8.03 8.03 0 0 1 0-11.3z'\n    ], [\n        primaryColor,\n        'M229.1 709.7c3.1 3.1 8.2 3.1 11.3 0l172.5-172.5 114.4 114.5c3.1 3.1 8.2 3.1 11.3 0l297-297.2c3.1-3.1 3.1-8.2 0-11.3l-36.8-36.8a8.03 8.03 0 0 0-11.3 0L533 561 418.6 446.5a8.03 8.03 0 0 0-11.3 0l-214.9 215a8.03 8.03 0 0 0 0 11.3l36.7 36.9z'\n    ]);\n});\nexports.FunnelPlotTwoTone = getIcon('funnel-plot', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M420.6 798h182.9V650H420.6zM297.7 374h428.6l85-148H212.7zm113.2 197.4l8.4 14.6h185.3l8.4-14.6L689.6 438H334.4z'\n    ], [\n        primaryColor,\n        'M880.1 154H143.9c-24.5 0-39.8 26.7-27.5 48L349 607.4V838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V607.4L907.7 202c12.2-21.3-3.1-48-27.6-48zM603.5 798H420.6V650h182.9v148zm9.5-226.6l-8.4 14.6H419.3l-8.4-14.6L334.4 438h355.2L613 571.4zM726.3 374H297.7l-85-148h598.6l-85 148z'\n    ]);\n});\nexports.GiftTwoTone = getIcon('gift', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M546 378h298v104H546zM228 550h250v308H228zm-48-172h298v104H180zm366 172h250v308H546z'\n    ], [\n        primaryColor,\n        'M880 310H732.4c13.6-21.4 21.6-46.8 21.6-74 0-76.1-61.9-138-138-138-41.4 0-78.7 18.4-104 47.4-25.3-29-62.6-47.4-104-47.4-76.1 0-138 61.9-138 138 0 27.2 7.9 52.6 21.6 74H144c-17.7 0-32 14.3-32 32v200c0 4.4 3.6 8 8 8h40v344c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V550h40c4.4 0 8-3.6 8-8V342c0-17.7-14.3-32-32-32zM478 858H228V550h250v308zm0-376H180V378h298v104zm0-176h-70c-38.6 0-70-31.4-70-70s31.4-70 70-70 70 31.4 70 70v70zm68-70c0-38.6 31.4-70 70-70s70 31.4 70 70-31.4 70-70 70h-70v-70zm250 622H546V550h250v308zm48-376H546V378h298v104z'\n    ]);\n});\nexports.HddTwoTone = getIcon('hdd', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M232 888h560V680H232v208zm448-140c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zM232 616h560V408H232v208zm72-128c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48zm-72-144h560V136H232v208zm72-128c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48z'\n    ], [\n        primaryColor,\n        'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V680h560v208zm0-272H232V408h560v208zm0-272H232V136h560v208z'\n    ], [\n        primaryColor,\n        'M312 544h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-272h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm328 516a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'\n    ]);\n});\nexports.HeartTwoTone = getIcon('heart', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M923 283.6a260.04 260.04 0 0 0-56.9-82.8 264.4 264.4 0 0 0-84-55.5A265.34 265.34 0 0 0 679.7 125c-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5a258.44 258.44 0 0 0-56.9 82.8c-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3.1-35.3-7-69.6-20.9-101.9zM512 814.8S156 586.7 156 385.5C156 283.6 240.3 201 344.3 201c73.1 0 136.5 40.8 167.7 100.4C543.2 241.8 606.6 201 679.7 201c104 0 188.3 82.6 188.3 184.5 0 201.2-356 429.3-356 429.3z'\n    ], [\n        secondaryColor,\n        'M679.7 201c-73.1 0-136.5 40.8-167.7 100.4C480.8 241.8 417.4 201 344.3 201c-104 0-188.3 82.6-188.3 184.5 0 201.2 356 429.3 356 429.3s356-228.1 356-429.3C868 283.6 783.7 201 679.7 201z'\n    ]);\n});\nexports.HighlightTwoTone = getIcon('highlight', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M229.6 796.3h160.2l54.3-54.1-80.1-78.9zm220.7-397.1l262.8 258.9 147.3-145-262.8-259zm-77.1 166.1l171.4 168.9 68.6-67.6-171.4-168.9z'\n    ], [\n        primaryColor,\n        'M957.6 507.5L603.2 158.3a7.9 7.9 0 0 0-11.2 0L353.3 393.5a8.03 8.03 0 0 0-.1 11.3l.1.1 40 39.4-117.2 115.3a8.03 8.03 0 0 0-.1 11.3l.1.1 39.5 38.9-189.1 187H72.1c-4.4 0-8.1 3.6-8.1 8v55.2c0 4.4 3.6 8 8 8h344.9c2.1 0 4.1-.8 5.6-2.3l76.1-75.6L539 830a7.9 7.9 0 0 0 11.2 0l117.1-115.6 40.1 39.5a7.9 7.9 0 0 0 11.2 0l238.7-235.2c3.4-3 3.4-8 .3-11.2zM389.8 796.3H229.6l134.4-133 80.1 78.9-54.3 54.1zm154.8-62.1L373.2 565.3l68.6-67.6 171.4 168.9-68.6 67.6zm168.5-76.1L450.3 399.2l147.3-145.1 262.8 259-147.3 145z'\n    ]);\n});\nexports.HourglassTwoTone = getIcon('hourglass', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 548c-42.2 0-81.9 16.4-111.7 46.3A156.63 156.63 0 0 0 354 706v134h316V706c0-42.2-16.4-81.9-46.3-111.7A156.63 156.63 0 0 0 512 548zM354 318c0 42.2 16.4 81.9 46.3 111.7C430.1 459.6 469.8 476 512 476s81.9-16.4 111.7-46.3C653.6 399.9 670 360.2 670 318V184H354v134z'\n    ], [\n        primaryColor,\n        'M742 318V184h86c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H196c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h86v134c0 81.5 42.4 153.2 106.4 194-64 40.8-106.4 112.5-106.4 194v134h-86c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h632c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-86V706c0-81.5-42.4-153.2-106.4-194 64-40.8 106.4-112.5 106.4-194zm-72 388v134H354V706c0-42.2 16.4-81.9 46.3-111.7C430.1 564.4 469.8 548 512 548s81.9 16.4 111.7 46.3C653.6 624.1 670 663.8 670 706zm0-388c0 42.2-16.4 81.9-46.3 111.7C593.9 459.6 554.2 476 512 476s-81.9-16.4-111.7-46.3A156.63 156.63 0 0 1 354 318V184h316v134z'\n    ]);\n});\nexports.HomeTwoTone = getIcon('home', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512.1 172.6l-370 369.7h96V868H392V640c0-22.1 17.9-40 40-40h160c22.1 0 40 17.9 40 40v228h153.9V542.3H882L535.2 195.7l-23.1-23.1zm434.5 422.9c-6 6-13.1 10.8-20.8 13.9 7.7-3.2 14.8-7.9 20.8-13.9zm-887-34.7c5 30.3 31.4 53.5 63.1 53.5h.9c-31.9 0-58.9-23-64-53.5zm-.9-10.5v-1.9 1.9zm.1-2.6c.1-3.1.5-6.1 1-9.1-.6 2.9-.9 6-1 9.1z'\n    ], [\n        primaryColor,\n        'M951 510c0-.1-.1-.1-.1-.2l-1.8-2.1c-.1-.1-.2-.3-.4-.4-.7-.8-1.5-1.6-2.2-2.4L560.1 118.8l-25.9-25.9a31.5 31.5 0 0 0-44.4 0L77.5 505a63.6 63.6 0 0 0-16 26.6l-.6 2.1-.3 1.1-.3 1.2c-.2.7-.3 1.4-.4 2.1 0 .1 0 .3-.1.4-.6 3-.9 6-1 9.1v3.3c0 .5 0 1 .1 1.5 0 .5 0 .9.1 1.4 0 .5.1 1 .1 1.5 0 .6.1 1.2.2 1.8 0 .3.1.6.1.9l.3 2.5v.1c5.1 30.5 32.2 53.5 64 53.5h42.5V940h691.7V614.3h43.4c8.6 0 16.9-1.7 24.5-4.9s14.7-7.9 20.8-13.9a63.6 63.6 0 0 0 18.7-45.3c0-14.7-5-28.8-14.3-40.2zM568 868H456V664h112v204zm217.9-325.7V868H632V640c0-22.1-17.9-40-40-40H432c-22.1 0-40 17.9-40 40v228H238.1V542.3h-96l370-369.7 23.1 23.1L882 542.3h-96.1z'\n    ]);\n});\nexports.Html5TwoTone = getIcon('html5', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M145 96l66 746.6L511.8 928l299.6-85.4L878.7 96H145zm610.9 700.6l-244.1 69.6-245.2-69.6-56.7-641.2h603.8l-57.8 641.2z'\n    ], [\n        secondaryColor,\n        'M209.9 155.4l56.7 641.2 245.2 69.6 244.1-69.6 57.8-641.2H209.9zm530.4 117.9l-4.8 47.2-1.7 19.5H381.7l8.2 94.2H511v-.2h214.7l-3.2 24.3-21.2 242.2-1.7 16.3-187.7 51.7v.4h-1.7l-188.6-52-11.3-144.7h91l6.5 73.2 102.4 27.7h.8v-.2l102.4-27.7 11.4-118.5H511.9v.1H305.4l-22.7-253.5L281 249h461l-1.7 24.3z'\n    ], [\n        primaryColor,\n        'M281 249l1.7 24.3 22.7 253.5h206.5v-.1h112.9l-11.4 118.5L511 672.9v.2h-.8l-102.4-27.7-6.5-73.2h-91l11.3 144.7 188.6 52h1.7v-.4l187.7-51.7 1.7-16.3 21.2-242.2 3.2-24.3H511v.2H389.9l-8.2-94.2h352.1l1.7-19.5 4.8-47.2L742 249H511z'\n    ]);\n});\nexports.IdcardTwoTone = getIcon('idcard', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136V232h752v560z'\n    ], [\n        secondaryColor,\n        'M136 792h752V232H136v560zm472-372c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm0 144c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48c0 4.4-3.2 8-7.1 8H615.1c-3.9 0-7.1-3.6-7.1-8v-48zM216.2 664.6c2.8-53.3 31.9-99.6 74.6-126.1-18.1-20-29.1-46.4-29.1-75.5 0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.6-29.1 75.5 42.6 26.4 71.8 72.8 74.6 126.1a8 8 0 0 1-8 8.4h-43.9c-4.2 0-7.6-3.3-7.9-7.5-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224c-4.6 0-8.2-3.8-7.8-8.4z'\n    ], [\n        secondaryColor,\n        'M321.3 463a51.7 52 0 1 0 103.4 0 51.7 52 0 1 0-103.4 0z'\n    ], [\n        primaryColor,\n        'M610.3 476h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48c0 4.4 1 8 2.3 8zm4.8 144h185.7c3.9 0 7.1-3.6 7.1-8v-48c0-4.4-3.2-8-7.1-8H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8zM224 673h43.9c4.2 0 7.6-3.3 7.9-7.5 3.8-50.5 46-90.5 97.2-90.5s93.4 40 97.2 90.5c.3 4.2 3.7 7.5 7.9 7.5H522a8 8 0 0 0 8-8.4c-2.8-53.3-32-99.7-74.6-126.1a111.8 111.8 0 0 0 29.1-75.5c0-61.9-49.9-112-111.4-112s-111.4 50.1-111.4 112c0 29.1 11 55.5 29.1 75.5a158.09 158.09 0 0 0-74.6 126.1c-.4 4.6 3.2 8.4 7.8 8.4zm149-262c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52-51.7-23.3-51.7-52 23.2-52 51.7-52z'\n    ]);\n});\nexports.InfoCircleTwoTone = getIcon('info-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm32 588c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'\n    ], [\n        primaryColor,\n        'M464 336a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z'\n    ]);\n});\nexports.InsuranceTwoTone = getIcon('insurance', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z'\n    ], [secondaryColor, 'M521.9 358.8h97.9v41.6h-97.9z'], [\n        secondaryColor,\n        'M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM413.3 656h-.2c0 4.4-3.6 8-8 8h-37.3c-4.4 0-8-3.6-8-8V471.4c-7.7 9.2-15.4 17.9-23.1 26a6.04 6.04 0 0 1-10.2-2.4l-13.2-43.5c-.6-2-.2-4.1 1.2-5.6 37-43.4 64.7-95.1 82.2-153.6 1.1-3.5 5-5.3 8.4-3.7l38.6 18.3c2.7 1.3 4.1 4.4 3.2 7.2a429.2 429.2 0 0 1-33.6 79V656zm257.9-340v127.2c0 4.4-3.6 8-8 8h-66.7v18.6h98.8c4.4 0 8 3.6 8 8v35.6c0 4.4-3.6 8-8 8h-59c18.1 29.1 41.8 54.3 72.3 76.9 2.6 2.1 3.2 5.9 1.2 8.5l-26.3 35.3a5.92 5.92 0 0 1-8.9.7c-30.6-29.3-56.8-65.2-78.1-106.9V656c0 4.4-3.6 8-8 8h-36.2c-4.4 0-8-3.6-8-8V536c-22 44.7-49 80.8-80.6 107.6a6.38 6.38 0 0 1-4.8 1.4c-1.7-.3-3.2-1.3-4.1-2.8L432 605.7a6 6 0 0 1 1.6-8.1c28.6-20.3 51.9-45.2 71-76h-55.1c-4.4 0-8-3.6-8-8V478c0-4.4 3.6-8 8-8h94.9v-18.6h-65.9c-4.4 0-8-3.6-8-8V316c0-4.4 3.6-8 8-8h184.7c4.4 0 8 3.6 8 8z'\n    ], [\n        primaryColor,\n        'M443.7 306.9l-38.6-18.3c-3.4-1.6-7.3.2-8.4 3.7-17.5 58.5-45.2 110.2-82.2 153.6a5.7 5.7 0 0 0-1.2 5.6l13.2 43.5c1.4 4.5 7 5.8 10.2 2.4 7.7-8.1 15.4-16.8 23.1-26V656c0 4.4 3.6 8 8 8h37.3c4.4 0 8-3.6 8-8h.2V393.1a429.2 429.2 0 0 0 33.6-79c.9-2.8-.5-5.9-3.2-7.2zm26.8 9.1v127.4c0 4.4 3.6 8 8 8h65.9V470h-94.9c-4.4 0-8 3.6-8 8v35.6c0 4.4 3.6 8 8 8h55.1c-19.1 30.8-42.4 55.7-71 76a6 6 0 0 0-1.6 8.1l22.8 36.5c.9 1.5 2.4 2.5 4.1 2.8 1.7.3 3.5-.2 4.8-1.4 31.6-26.8 58.6-62.9 80.6-107.6v120c0 4.4 3.6 8 8 8h36.2c4.4 0 8-3.6 8-8V535.9c21.3 41.7 47.5 77.6 78.1 106.9 2.6 2.5 6.7 2.2 8.9-.7l26.3-35.3c2-2.6 1.4-6.4-1.2-8.5-30.5-22.6-54.2-47.8-72.3-76.9h59c4.4 0 8-3.6 8-8v-35.6c0-4.4-3.6-8-8-8h-98.8v-18.6h66.7c4.4 0 8-3.6 8-8V316c0-4.4-3.6-8-8-8H478.5c-4.4 0-8 3.6-8 8zm51.4 42.8h97.9v41.6h-97.9v-41.6z'\n    ]);\n});\nexports.InterationTwoTone = getIcon('interation', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm114-401.9c0-55.3 44.6-100.1 99.7-100.1h205.8v-53.4c0-5.6 6.5-8.8 10.9-5.3L723.5 365c3.5 2.7 3.5 8 0 10.7l-109.1 85.7c-4.4 3.5-10.9.4-10.9-5.3v-53.4H397.8c-19.6 0-35.5 15.9-35.5 35.6v78.9c0 3.8-3.1 6.8-6.8 6.8h-50.7c-3.8 0-6.8-3-6.8-7v-78.9zm2.6 210.3l109.1-85.7c4.4-3.5 10.9-.4 10.9 5.3v53.4h205.6c19.6 0 35.5-15.9 35.5-35.6v-78.9c0-3.8 3.1-6.8 6.8-6.8h50.7c3.8 0 6.8 3.1 6.8 6.8v78.9c0 55.3-44.6 100.1-99.7 100.1H420.6v53.4c0 5.6-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.7-3.5-8 0-10.5z'\n    ], [\n        primaryColor,\n        'M304.8 524h50.7c3.7 0 6.8-3 6.8-6.8v-78.9c0-19.7 15.9-35.6 35.5-35.6h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.5-2.7 3.5-8 0-10.7l-109.1-85.7c-4.4-3.5-10.9-.3-10.9 5.3V338H397.7c-55.1 0-99.7 44.8-99.7 100.1V517c0 4 3 7 6.8 7zm-4.2 134.9l109.1 85.7c4.4 3.5 10.9.3 10.9-5.3v-53.4h205.7c55.1 0 99.7-44.8 99.7-100.1v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 19.7-15.9 35.6-35.5 35.6H420.6V568c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.5-3.5 7.8 0 10.5z'\n    ]);\n});\nexports.LeftCircleTwoTone = getIcon('left-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm104 240.9c0 10.3-4.9 19.9-13.2 25.9L457.4 512l145.4 105.1c8.3 6 13.2 15.7 13.2 25.9v46.9c0 6.5-7.4 10.3-12.7 6.5l-246-178a7.95 7.95 0 0 1 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9z'\n    ], [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        primaryColor,\n        'M603.3 327.5l-246 178a7.95 7.95 0 0 0 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5V643c0-10.2-4.9-19.9-13.2-25.9L457.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5z'\n    ]);\n});\nexports.LeftSquareTwoTone = getIcon('left-square', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm181.3-334.5l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9c0 10.3-4.9 19.9-13.2 25.9L465.4 512l145.4 105.2c8.3 6 13.2 15.7 13.2 25.9V690c0 6.5-7.4 10.3-12.7 6.4l-246-178a7.95 7.95 0 0 1 0-12.9z'\n    ], [\n        primaryColor,\n        'M365.3 518.4l246 178c5.3 3.9 12.7.1 12.7-6.4v-46.9c0-10.2-4.9-19.9-13.2-25.9L465.4 512l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V334c0-6.5-7.4-10.3-12.7-6.5l-246 178a7.95 7.95 0 0 0 0 12.9z'\n    ]);\n});\nexports.LikeTwoTone = getIcon('like', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M273 495.9v428l.3-428zm538.2-88.3H496.8l9.6-198.4c.6-11.9-4.7-23.1-14.6-30.5-6.1-4.5-13.6-6.8-21.1-6.7-19.6.1-36.9 13.4-42.2 32.3-37.1 134.4-64.9 235.2-83.5 302.5V852h399.4a56.85 56.85 0 0 0 33.6-51.8c0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19a56.76 56.76 0 0 0 19.6-43c0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19a56.76 56.76 0 0 0 19.6-43c0-9.7-2.3-18.9-6.9-27.3l-14-25.5 21.9-19a56.76 56.76 0 0 0 19.6-43c0-19.1-11-37.5-28.8-48.4z'\n    ], [\n        primaryColor,\n        'M112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32zm773.9 5.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.5-65.5-111a67.67 67.67 0 0 0-34.3-9.3H572.3l6-122.9c1.5-29.7-9-57.9-29.5-79.4a106.4 106.4 0 0 0-77.9-33.4c-52 0-98 35-111.8 85.1l-85.8 310.8-.3 428h472.1c9.3 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37zM820.4 499l-21.9 19 14 25.5a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.1 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 16.5-7.1 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 0 1 6.9 27.3c0 22.4-13.2 42.6-33.6 51.8H345V506.8c18.6-67.2 46.4-168 83.5-302.5a44.28 44.28 0 0 1 42.2-32.3c7.5-.1 15 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.1 32.2-19.6 43z'\n    ]);\n});\nexports.LayoutTwoTone = getIcon('layout', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M384 185h456v136H384zm-200 0h136v656H184zm696-73H144c-17.7 0-32 14.3-32 32v1c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32v-1c0-17.7-14.3-32-32-32zM384 385h456v456H384z'\n    ], [\n        primaryColor,\n        'M880 113H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V145c0-17.7-14.3-32-32-32zM320 841H184V185h136v656zm520 0H384V385h456v456zm0-520H384V185h456v136z'\n    ]);\n});\nexports.LockTwoTone = getIcon('lock', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304z'\n    ], [\n        secondaryColor,\n        'M232 840h560V536H232v304zm280-226a48.01 48.01 0 0 1 28 87v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 0 1 28-87z'\n    ], [\n        primaryColor,\n        'M484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z'\n    ]);\n});\nexports.MailTwoTone = getIcon('mail', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M477.5 536.3L135.9 270.7l-27.5-21.4 27.6 21.5V792h752V270.8L546.2 536.3a55.99 55.99 0 0 1-68.7 0z'\n    ], [secondaryColor, 'M876.3 198.8l39.3 50.5-27.6 21.5 27.7-21.5-39.3-50.5z'], [\n        primaryColor,\n        'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-94.5 72.1L512 482 190.5 232.1h643zm54.5 38.7V792H136V270.8l-27.6-21.5 27.5 21.4 341.6 265.6a55.99 55.99 0 0 0 68.7 0L888 270.8l27.6-21.5-39.3-50.5h.1l39.3 50.5-27.7 21.5z'\n    ]);\n});\nexports.MedicineBoxTwoTone = getIcon('medicine-box', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M244.3 328L184 513.4V840h656V513.4L779.7 328H244.3zM660 628c0 4.4-3.6 8-8 8H544v108c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V636H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108V464c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v108h108c4.4 0 8 3.6 8 8v48z'\n    ], [\n        primaryColor,\n        'M652 572H544V464c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v108H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108v108c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V636h108c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'\n    ], [\n        primaryColor,\n        'M839.2 278.1a32 32 0 0 0-30.4-22.1H736V144c0-17.7-14.3-32-32-32H320c-17.7 0-32 14.3-32 32v112h-72.8a31.9 31.9 0 0 0-30.4 22.1L112 502v378c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V502l-72.8-223.9zM360 184h304v72H360v-72zm480 656H184V513.4L244.3 328h535.4L840 513.4V840z'\n    ]);\n});\nexports.MehTwoTone = getIcon('meh', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm384 200c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48zm16-152a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'\n    ], [\n        primaryColor,\n        'M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm376 144H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm-24-144a48 48 0 1 0 96 0 48 48 0 1 0-96 0z'\n    ]);\n});\nexports.MessageTwoTone = getIcon('message', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M775.3 248.9a369.62 369.62 0 0 0-119-80A370.2 370.2 0 0 0 512.1 140h-1.7c-99.7.4-193 39.4-262.8 109.9-69.9 70.5-108 164.1-107.6 263.8.3 60.3 15.3 120.2 43.5 173.1l4.5 8.4V836h140.8l8.4 4.5c52.9 28.2 112.8 43.2 173.1 43.5h1.7c99 0 192-38.2 262.1-107.6 70.4-69.8 109.5-163.1 110.1-262.7.2-50.6-9.5-99.6-28.9-145.8a370.15 370.15 0 0 0-80-119zM312 560a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zm200 0a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96zm200 0a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'\n    ], [\n        primaryColor,\n        'M664 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm-400 0a48 48 0 1 0 96 0 48 48 0 1 0-96 0z'\n    ], [\n        primaryColor,\n        'M925.2 338.4c-22.6-53.7-55-101.9-96.3-143.3a444.35 444.35 0 0 0-143.3-96.3C630.6 75.7 572.2 64 512 64h-2c-60.6.3-119.3 12.3-174.5 35.9a445.35 445.35 0 0 0-142 96.5c-40.9 41.3-73 89.3-95.2 142.8-23 55.4-34.6 114.3-34.3 174.9A449.4 449.4 0 0 0 112 714v152a46 46 0 0 0 46 46h152.1A449.4 449.4 0 0 0 510 960h2.1c59.9 0 118-11.6 172.7-34.3a444.48 444.48 0 0 0 142.8-95.2c41.3-40.9 73.8-88.7 96.5-142 23.6-55.2 35.6-113.9 35.9-174.5.3-60.9-11.5-120-34.8-175.6zm-151.1 438C704 845.8 611 884 512 884h-1.7c-60.3-.3-120.2-15.3-173.1-43.5l-8.4-4.5H188V695.2l-4.5-8.4C155.3 633.9 140.3 574 140 513.7c-.4-99.7 37.7-193.3 107.6-263.8 69.8-70.5 163.1-109.5 262.8-109.9h1.7c50 0 98.5 9.7 144.2 28.9 44.6 18.7 84.6 45.6 119 80 34.3 34.3 61.3 74.4 80 119 19.4 46.2 29.1 95.2 28.9 145.8-.6 99.6-39.7 192.9-110.1 262.7z'\n    ], [primaryColor, 'M464 512a48 48 0 1 0 96 0 48 48 0 1 0-96 0z']);\n});\nexports.MinusCircleTwoTone = getIcon('minus-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm192 396c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48z'\n    ], [\n        primaryColor,\n        'M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'\n    ]);\n});\nexports.MinusSquareTwoTone = getIcon('minus-square', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm136-352c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48z'\n    ], [\n        primaryColor,\n        'M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z'\n    ]);\n});\nexports.MobileTwoTone = getIcon('mobile', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M744 64H280c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h464c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H288V136h448v752z'\n    ], [\n        secondaryColor,\n        'M288 888h448V136H288v752zm224-142c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z'\n    ], [primaryColor, 'M472 786a40 40 0 1 0 80 0 40 40 0 1 0-80 0z']);\n});\nexports.MoneyCollectTwoTone = getIcon('money-collect', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M256 744.4l256 93.1 256-93.1V184H256v560.4zM359.7 313c1.2-.7 2.5-1 3.8-1h55.7a8 8 0 0 1 7.1 4.4L511 485.2h3.3L599 316.4c1.3-2.7 4.1-4.4 7.1-4.4h54.5c4.4 0 8 3.6 8.1 7.9 0 1.3-.4 2.6-1 3.8L564 515.3h57.6c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3V704c0 4.4-3.6 8-8 8h-49.9c-4.4 0-8-3.6-8-8v-63.4h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h57L356.5 323.8c-2.1-3.8-.7-8.7 3.2-10.8z'\n    ], [\n        primaryColor,\n        'M911.5 700.7a8 8 0 0 0-10.3-4.8L840 718.2V180c0-37.6-30.4-68-68-68H252c-37.6 0-68 30.4-68 68v538.2l-61.3-22.3c-.9-.3-1.8-.5-2.7-.5-4.4 0-8 3.6-8 8V763c0 3.3 2.1 6.3 5.3 7.5L501 910.1c7.1 2.6 14.8 2.6 21.9 0l383.8-139.5c3.2-1.2 5.3-4.2 5.3-7.5v-59.6c0-1-.2-1.9-.5-2.8zM768 744.4l-256 93.1-256-93.1V184h512v560.4z'\n    ], [\n        primaryColor,\n        'M460.4 515.4h-57c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76V704c0 4.4 3.6 8 8 8h49.9c4.4 0 8-3.6 8-8v-63.5h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8H564l103.7-191.6c.6-1.2 1-2.5 1-3.8-.1-4.3-3.7-7.9-8.1-7.9h-54.5c-3 0-5.8 1.7-7.1 4.4l-84.7 168.8H511l-84.7-168.8a8 8 0 0 0-7.1-4.4h-55.7c-1.3 0-2.6.3-3.8 1-3.9 2.1-5.3 7-3.2 10.8l103.9 191.6z'\n    ]);\n});\nexports.NotificationTwoTone = getIcon('notification', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M229.6 678.1c-3.7 11.6-5.6 23.9-5.6 36.4 0-12.5 2-24.8 5.7-36.4h-.1zm76.3-260.2H184v188.2h121.9l12.9 5.2L840 820.7V203.3L318.8 412.7z'\n    ], [\n        primaryColor,\n        'M880 112c-3.8 0-7.7.7-11.6 2.3L292 345.9H128c-8.8 0-16 7.4-16 16.6v299c0 9.2 7.2 16.6 16 16.6h101.7c-3.7 11.6-5.7 23.9-5.7 36.4 0 65.9 53.8 119.5 120 119.5 55.4 0 102.1-37.6 115.9-88.4l408.6 164.2c3.9 1.5 7.8 2.3 11.6 2.3 16.9 0 32-14.2 32-33.2V145.2C912 126.2 897 112 880 112zM344 762.3c-26.5 0-48-21.4-48-47.8 0-11.2 3.9-21.9 11-30.4l84.9 34.1c-2 24.6-22.7 44.1-47.9 44.1zm496 58.4L318.8 611.3l-12.9-5.2H184V417.9h121.9l12.9-5.2L840 203.3v617.4z'\n    ]);\n});\nexports.PauseCircleTwoTone = getIcon('pause-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-80 524c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm224 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V360c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z'\n    ], [\n        primaryColor,\n        'M424 352h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zm224 0h-48c-4.4 0-8 3.6-8 8v304c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z'\n    ]);\n});\nexports.PhoneTwoTone = getIcon('phone', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M721.7 184.9L610.9 295.8l120.8 120.7-8 21.6A481.29 481.29 0 0 1 438 723.9l-21.6 8-.9-.9-119.8-120-110.8 110.9 104.5 104.5c10.8 10.7 26 15.7 40.8 13.2 117.9-19.5 235.4-82.9 330.9-178.4s158.9-213.1 178.4-331c2.5-14.8-2.5-30-13.3-40.8L721.7 184.9z'\n    ], [\n        primaryColor,\n        'M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 0 1-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 0 0-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 0 0 285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z'\n    ]);\n});\nexports.PictureTwoTone = getIcon('picture', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z'\n    ], [\n        secondaryColor,\n        'M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z'\n    ], [\n        secondaryColor,\n        'M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 1 1 0 176 88 88 0 0 1 0-176z'\n    ], [secondaryColor, 'M276 368a28 28 0 1 0 56 0 28 28 0 1 0-56 0z'], [\n        primaryColor,\n        'M304 456a88 88 0 1 0 0-176 88 88 0 0 0 0 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z'\n    ]);\n});\nexports.PieChartTwoTone = getIcon('pie-chart', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M316.2 920.5c-47.6-20.1-90.4-49-127.1-85.7a398.19 398.19 0 0 1-85.7-127.1A397.12 397.12 0 0 1 72 552.2v.2a398.57 398.57 0 0 0 117 282.5c36.7 36.7 79.4 65.5 127 85.6A396.64 396.64 0 0 0 471.6 952c27 0 53.6-2.7 79.7-7.9-25.9 5.2-52.4 7.8-79.3 7.8-54 .1-106.4-10.5-155.8-31.4zM560 472c-4.4 0-8-3.6-8-8V79.9c0-1.3.3-2.5.9-3.6-.9 1.3-1.5 2.9-1.5 4.6v383.7c0 4.4 3.6 8 8 8l383.6-1c1.6 0 3.1-.5 4.4-1.3-1 .5-2.2.7-3.4.7l-384 1z'\n    ], [\n        secondaryColor,\n        'M619.8 147.6v256.6l256.4-.7c-13-62.5-44.3-120.5-90-166.1a332.24 332.24 0 0 0-166.4-89.8z'\n    ], [\n        secondaryColor,\n        'M438 221.7c-75.9 7.6-146.2 40.9-200.8 95.5C174.5 379.9 140 463.3 140 552s34.5 172.1 97.2 234.8c62.3 62.3 145.1 96.8 233.2 97.2 88.2.4 172.7-34.1 235.3-96.2C761 733 794.6 662.3 802.3 586H438V221.7z'\n    ], [\n        primaryColor,\n        'M864 518H506V160c0-4.4-3.6-8-8-8h-26a398.46 398.46 0 0 0-282.8 117.1 398.19 398.19 0 0 0-85.7 127.1A397.61 397.61 0 0 0 72 552v.2c0 53.9 10.6 106.2 31.4 155.5 20.1 47.6 49 90.4 85.7 127.1 36.7 36.7 79.5 65.6 127.1 85.7A397.61 397.61 0 0 0 472 952c26.9 0 53.4-2.6 79.3-7.8 26.1-5.3 51.7-13.1 76.4-23.6 47.6-20.1 90.4-49 127.1-85.7 36.7-36.7 65.6-79.5 85.7-127.1A397.61 397.61 0 0 0 872 552v-26c0-4.4-3.6-8-8-8zM705.7 787.8A331.59 331.59 0 0 1 470.4 884c-88.1-.4-170.9-34.9-233.2-97.2C174.5 724.1 140 640.7 140 552s34.5-172.1 97.2-234.8c54.6-54.6 124.9-87.9 200.8-95.5V586h364.3c-7.7 76.3-41.3 147-96.6 201.8z'\n    ], [\n        primaryColor,\n        'M952 462.4l-2.6-28.2c-8.5-92.1-49.4-179-115.2-244.6A399.4 399.4 0 0 0 589 74.6L560.7 72c-3.4-.3-6.4 1.5-7.8 4.3a8.7 8.7 0 0 0-.9 3.6V464c0 4.4 3.6 8 8 8l384-1c1.2 0 2.3-.3 3.4-.7a8.1 8.1 0 0 0 4.6-7.9zm-332.2-58.2V147.6a332.24 332.24 0 0 1 166.4 89.8c45.7 45.6 77 103.6 90 166.1l-256.4.7z'\n    ]);\n});\nexports.PlayCircleTwoTone = getIcon('play-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm164.1 378.2L457.7 677.1a8.02 8.02 0 0 1-12.7-6.5V353a8 8 0 0 1 12.7-6.5l218.4 158.8a7.9 7.9 0 0 1 0 12.9z'\n    ], [\n        primaryColor,\n        'M676.1 505.3L457.7 346.5A8 8 0 0 0 445 353v317.6a8.02 8.02 0 0 0 12.7 6.5l218.4-158.9a7.9 7.9 0 0 0 0-12.9z'\n    ]);\n});\nexports.PlaySquareTwoTone = getIcon('play-square', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm240-484.7c0-9.4 10.9-14.7 18.3-8.8l199.4 156.7a11.2 11.2 0 0 1 0 17.6L442.3 677.6c-7.4 5.8-18.3.6-18.3-8.8V355.3z'\n    ], [\n        primaryColor,\n        'M442.3 677.6l199.4-156.8a11.2 11.2 0 0 0 0-17.6L442.3 346.5c-7.4-5.9-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.6 18.3 8.8z'\n    ]);\n});\nexports.PlusCircleTwoTone = getIcon('plus-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm192 396c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48z'\n    ], [\n        primaryColor,\n        'M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'\n    ]);\n});\nexports.PoundCircleTwoTone = getIcon('pound-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm146 582.1c0 4.4-3.6 8-8 8H376.2c-4.4 0-8-3.6-8-8v-38.5c0-3.7 2.5-6.9 6.1-7.8 44-10.9 72.8-49 72.8-94.2 0-14.7-2.5-29.4-5.9-44.2H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h53.7c-7.8-25.1-14.6-50.7-14.6-77.1 0-75.8 58.6-120.3 151.5-120.3 26.5 0 51.4 5.5 70.3 12.7 3.1 1.2 5.2 4.2 5.2 7.5v39.5a8 8 0 0 1-10.6 7.6c-17.9-6.4-39-10.5-60.4-10.5-53.3 0-87.3 26.6-87.3 70.2 0 24.7 6.2 47.9 13.4 70.5h112c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8h-98.6c3.1 13.2 5.3 26.9 5.3 41 0 40.7-16.5 73.9-43.9 91.1v4.7h180c4.4 0 8 3.6 8 8v39.8z'\n    ], [\n        primaryColor,\n        'M650 674.3H470v-4.7c27.4-17.2 43.9-50.4 43.9-91.1 0-14.1-2.2-27.8-5.3-41h98.6c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8h-112c-7.2-22.6-13.4-45.8-13.4-70.5 0-43.6 34-70.2 87.3-70.2 21.4 0 42.5 4.1 60.4 10.5a8 8 0 0 0 10.6-7.6v-39.5c0-3.3-2.1-6.3-5.2-7.5-18.9-7.2-43.8-12.7-70.3-12.7-92.9 0-151.5 44.5-151.5 120.3 0 26.4 6.8 52 14.6 77.1H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h67.2c3.4 14.8 5.9 29.5 5.9 44.2 0 45.2-28.8 83.3-72.8 94.2-3.6.9-6.1 4.1-6.1 7.8v38.5c0 4.4 3.6 8 8 8H650c4.4 0 8-3.6 8-8v-39.8c0-4.4-3.6-8-8-8z'\n    ]);\n});\nexports.ProfileTwoTone = getIcon('profile', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm300-496c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zm0 144c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zm0 144c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48zM380 328c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z'\n    ], [\n        primaryColor,\n        'M340 656a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm0-144a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm152 320h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0-144h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z'\n    ]);\n});\nexports.PlusSquareTwoTone = getIcon('plus-square', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm136-352c0-4.4 3.6-8 8-8h152V328c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v152h152c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H544v152c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V544H328c-4.4 0-8-3.6-8-8v-48z'\n    ], [\n        primaryColor,\n        'M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z'\n    ]);\n});\nexports.ProjectTwoTone = getIcon('project', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm472-560c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280zm-192 0c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280zm-192 0c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280z'\n    ], [\n        primaryColor,\n        'M280 752h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8zm192-280h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v184c0 4.4 3.6 8 8 8zm192 72h80c4.4 0 8-3.6 8-8V280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v256c0 4.4 3.6 8 8 8z'\n    ]);\n});\nexports.PrinterTwoTone = getIcon('printer', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M360 180h304v152H360zm492 220H172c-6.6 0-12 5.4-12 12v292h132V500h440v204h132V412c0-6.6-5.4-12-12-12zm-24 84c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40z'\n    ], [\n        primaryColor,\n        'M852 332H732V120c0-4.4-3.6-8-8-8H300c-4.4 0-8 3.6-8 8v212H172c-44.2 0-80 35.8-80 80v328c0 17.7 14.3 32 32 32h168v132c0 4.4 3.6 8 8 8h424c4.4 0 8-3.6 8-8V772h168c17.7 0 32-14.3 32-32V412c0-44.2-35.8-80-80-80zM360 180h304v152H360V180zm304 664H360V568h304v276zm200-140H732V500H292v204H160V412c0-6.6 5.4-12 12-12h680c6.6 0 12 5.4 12 12v292z'\n    ], [\n        primaryColor,\n        'M820 436h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40c0-4.4-3.6-8-8-8z'\n    ]);\n});\nexports.PropertySafetyTwoTone = getIcon('property-safety', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z'\n    ], [\n        secondaryColor,\n        'M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM593.9 318h45c5.5 0 10 4.5 10 10 .1 1.7-.3 3.3-1.1 4.8l-87.7 161.1h45.7c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4V658c0 5.5-4.5 10-10 10h-41.3c-5.5 0-10-4.5-10-10v-51.8H418c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7H418c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h45.2l-88-161.1c-2.6-4.8-.9-10.9 4-13.6 1.5-.8 3.1-1.2 4.8-1.2h46c3.8 0 7.2 2.1 8.9 5.5l72.9 144.3L585 323.5a10 10 0 0 1 8.9-5.5z'\n    ], [\n        primaryColor,\n        'M438.9 323.5a9.88 9.88 0 0 0-8.9-5.5h-46c-1.7 0-3.3.4-4.8 1.2-4.9 2.7-6.6 8.8-4 13.6l88 161.1H418c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7H418c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1V658c0 5.5 4.5 10 10 10h41.3c5.5 0 10-4.5 10-10v-51.8h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-45.7l87.7-161.1c.8-1.5 1.2-3.1 1.1-4.8 0-5.5-4.5-10-10-10h-45a10 10 0 0 0-8.9 5.5l-73.2 144.3-72.9-144.3z'\n    ]);\n});\nexports.PushpinTwoTone = getIcon('pushpin', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M474.8 357.7l-24.5 24.5-34.4-3.8c-9.6-1.1-19.3-1.6-28.9-1.6-29 0-57.5 4.7-84.7 14.1-14 4.8-27.4 10.8-40.3 17.9l353.1 353.3a259.92 259.92 0 0 0 30.4-153.9l-3.8-34.4 24.5-24.5L800 415.5 608.5 224 474.8 357.7z'\n    ], [\n        primaryColor,\n        'M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z'\n    ]);\n});\nexports.QuestionCircleTwoTone = getIcon('question-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm0 632c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm62.9-219.5a48.3 48.3 0 0 0-30.9 44.8V620c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-21.5c0-23.1 6.7-45.9 19.9-64.9 12.9-18.6 30.9-32.8 52.1-40.9 34-13.1 56-41.6 56-72.7 0-44.1-43.1-80-96-80s-96 35.9-96 80v7.6c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V420c0-39.3 17.2-76 48.4-103.3C430.4 290.4 470 276 512 276s81.6 14.5 111.6 40.7C654.8 344 672 380.7 672 420c0 57.8-38.1 109.8-97.1 132.5z'\n    ], [\n        primaryColor,\n        'M472 732a40 40 0 1 0 80 0 40 40 0 1 0-80 0zm151.6-415.3C593.6 290.5 554 276 512 276s-81.6 14.4-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.2 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0 1 30.9-44.8c59-22.7 97.1-74.7 97.1-132.5 0-39.3-17.2-76-48.4-103.3z'\n    ]);\n});\nexports.ReconciliationTwoTone = getIcon('reconciliation', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M740 344H404V240H304v160h176c17.7 0 32 14.3 32 32v360h328V240H740v104zM584 448c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56zm92 301c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92zm92-341v96c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8z'\n    ], [secondaryColor, 'M642 657a34 34 0 1 0 68 0 34 34 0 1 0-68 0z'], [\n        primaryColor,\n        'M592 512h48c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm112-104v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z'\n    ], [\n        primaryColor,\n        'M880 168H668c0-30.9-25.1-56-56-56h-80c-30.9 0-56 25.1-56 56H264c-17.7 0-32 14.3-32 32v200h-88c-17.7 0-32 14.3-32 32v448c0 17.7 14.3 32 32 32h336c17.7 0 32-14.3 32-32v-16h368c17.7 0 32-14.3 32-32V200c0-17.7-14.3-32-32-32zm-412 64h72v-56h64v56h72v48H468v-48zm-20 616H176V616h272v232zm0-296H176v-88h272v88zm392 240H512V432c0-17.7-14.3-32-32-32H304V240h100v104h336V240h100v552z'\n    ], [\n        primaryColor,\n        'M676 565c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92zm0 126c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34z'\n    ]);\n});\nexports.RedEnvelopeTwoTone = getIcon('red-envelope', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V193.1l260.3 204.1c11.6 9.1 27.9 9.1 39.5 0L792 193.1V888zm0-751.3h-31.7L512 331.3 263.7 136.7H232v-.7h560v.7z'\n    ], [\n        secondaryColor,\n        'M492.3 397.2L232 193.1V888h560V193.1L531.8 397.2a31.99 31.99 0 0 1-39.5 0zm99.4 60.9h47.8a8.45 8.45 0 0 1 7.4 12.4l-87.2 161h45.9c4.6 0 8.4 3.8 8.4 8.4V665c0 4.6-3.8 8.4-8.4 8.4h-63.3V702h63.3c4.6 0 8.4 3.8 8.4 8.4v25c.2 4.7-3.5 8.5-8.2 8.5h-63.3v49.9c0 4.6-3.8 8.4-8.4 8.4h-43.7c-4.6 0-8.4-3.8-8.4-8.4v-49.9h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-28.6h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h45.4L377 470.4a8.4 8.4 0 0 1 3.4-11.4c1.3-.6 2.6-1 3.9-1h48.8c3.2 0 6.1 1.8 7.5 4.6l71.7 142 71.9-141.9a8.6 8.6 0 0 1 7.5-4.6z'\n    ], [secondaryColor, 'M232 136.7h31.7L512 331.3l248.3-194.6H792v-.7H232z'], [\n        primaryColor,\n        'M440.6 462.6a8.38 8.38 0 0 0-7.5-4.6h-48.8c-1.3 0-2.6.4-3.9 1a8.4 8.4 0 0 0-3.4 11.4l87.4 161.1H419c-4.6 0-8.4 3.8-8.4 8.4V665c0 4.6 3.8 8.4 8.4 8.4h63V702h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v49.9c0 4.6 3.8 8.4 8.4 8.4h43.7c4.6 0 8.4-3.8 8.4-8.4v-49.9h63.3c4.7 0 8.4-3.8 8.2-8.5v-25c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-45.9l87.2-161a8.45 8.45 0 0 0-7.4-12.4h-47.8c-3.1 0-6 1.8-7.5 4.6l-71.9 141.9-71.7-142z'\n    ]);\n});\nexports.RestTwoTone = getIcon('rest', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M326.4 844h363.2l44.3-520H282l44.4 520zM508 416c79.5 0 144 64.5 144 144s-64.5 144-144 144-144-64.5-144-144 64.5-144 144-144z'\n    ], [\n        primaryColor,\n        'M508 704c79.5 0 144-64.5 144-144s-64.5-144-144-144-144 64.5-144 144 64.5 144 144 144zm0-224c44.2 0 80 35.8 80 80s-35.8 80-80 80-80-35.8-80-80 35.8-80 80-80z'\n    ], [\n        primaryColor,\n        'M832 256h-28.1l-35.7-120.9c-4-13.7-16.5-23.1-30.7-23.1h-451c-14.3 0-26.8 9.4-30.7 23.1L220.1 256H192c-17.7 0-32 14.3-32 32v28c0 4.4 3.6 8 8 8h45.8l47.7 558.7a32 32 0 0 0 31.9 29.3h429.2a32 32 0 0 0 31.9-29.3L802.2 324H856c4.4 0 8-3.6 8-8v-28c0-17.7-14.3-32-32-32zm-518.6-76h397.2l22.4 76H291l22.4-76zm376.2 664H326.4L282 324h451.9l-44.3 520z'\n    ]);\n});\nexports.RightCircleTwoTone = getIcon('right-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm154.7 378.4l-246 178c-5.3 3.8-12.7 0-12.7-6.5V643c0-10.2 4.9-19.9 13.2-25.9L566.6 512 421.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.7 0 12.9z'\n    ], [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        primaryColor,\n        'M666.7 505.5l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.3 4.9 19.9 13.2 25.9L566.6 512 421.2 617.1c-8.3 6-13.2 15.7-13.2 25.9v46.9c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.7 0-12.9z'\n    ]);\n});\nexports.RightSquareTwoTone = getIcon('right-square', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm216-196.9c0-10.2 4.9-19.9 13.2-25.9L558.6 512 413.2 406.8c-8.3-6-13.2-15.6-13.2-25.9V334c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.7 0 12.9l-246 178c-5.3 3.9-12.7.1-12.7-6.4v-46.9z'\n    ], [\n        primaryColor,\n        'M412.7 696.4l246-178c4.4-3.2 4.4-9.7 0-12.9l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.3 4.9 19.9 13.2 25.9L558.6 512 413.2 617.2c-8.3 6-13.2 15.7-13.2 25.9V690c0 6.5 7.4 10.3 12.7 6.4z'\n    ]);\n});\nexports.RocketTwoTone = getIcon('rocket', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M261.7 621.4c-9.4 14.6-17 30.3-22.5 46.6H324V558.7c-24.8 16.2-46 37.5-62.3 62.7zM700 558.7V668h84.8c-5.5-16.3-13.1-32-22.5-46.6a211.6 211.6 0 0 0-62.3-62.7zm-64-239.9l-124-147-124 147V668h248V318.8zM512 448a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'\n    ], [\n        primaryColor,\n        'M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 0 0-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0 0 43.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0 0 43.1-30.5 97.52 97.52 0 0 0 21.4-60.8c0-8.4-1.1-16.4-3.1-23.8L864 736zm-540-68h-84.8c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668zm64-184.9V318.8l124-147 124 147V668H388V483.1zm240.1 301.1c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5s-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 0 1-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM700 668V558.7a211.6 211.6 0 0 1 62.3 62.7c9.4 14.6 17 30.3 22.5 46.6H700z'\n    ], [primaryColor, 'M464 400a48 48 0 1 0 96 0 48 48 0 1 0-96 0z']);\n});\nexports.SafetyCertificateTwoTone = getIcon('safety-certificate', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z'\n    ], [\n        secondaryColor,\n        'M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zM632.8 328H688c6.5 0 10.3 7.4 6.5 12.7L481.9 633.4a16.1 16.1 0 0 1-26 0l-126.4-174c-3.8-5.3 0-12.7 6.5-12.7h55.2c5.2 0 10 2.5 13 6.6l64.7 89.1 150.9-207.8c3-4.1 7.9-6.6 13-6.6z'\n    ], [\n        primaryColor,\n        'M404.2 453.3c-3-4.1-7.8-6.6-13-6.6H336c-6.5 0-10.3 7.4-6.5 12.7l126.4 174a16.1 16.1 0 0 0 26 0l212.6-292.7c3.8-5.3 0-12.7-6.5-12.7h-55.2c-5.1 0-10 2.5-13 6.6L468.9 542.4l-64.7-89.1z'\n    ]);\n});\nexports.SaveTwoTone = getIcon('save', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M704 320c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V184H184v656h656V341.8l-136-136V320zM512 730c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144z'\n    ], [\n        primaryColor,\n        'M512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z'\n    ], [\n        primaryColor,\n        'M893.3 293.3L730.7 130.7c-.7-.7-1.4-1.3-2.1-2-.1-.1-.3-.2-.4-.3-.7-.7-1.5-1.3-2.2-1.9a64 64 0 0 0-22-11.7V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840z'\n    ]);\n});\nexports.ScheduleTwoTone = getIcon('schedule', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M768 352c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H136v496h752V296H768v56zM424 688c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm0-136c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48zm374.4-91.2l-165 228.7a15.9 15.9 0 0 1-25.8 0L493.5 531.3c-3.8-5.3 0-12.7 6.5-12.7h54.9c5.1 0 9.9 2.4 12.9 6.6l52.8 73.1 103.6-143.7c3-4.1 7.8-6.6 12.8-6.5h54.9c6.5 0 10.3 7.4 6.5 12.7z'\n    ], [\n        primaryColor,\n        'M724.2 454.6L620.6 598.3l-52.8-73.1c-3-4.2-7.8-6.6-12.9-6.6H500c-6.5 0-10.3 7.4-6.5 12.7l114.1 158.2a15.9 15.9 0 0 0 25.8 0l165-228.7c3.8-5.3 0-12.7-6.5-12.7H737c-5-.1-9.8 2.4-12.8 6.5zM416 496H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'\n    ], [\n        primaryColor,\n        'M928 224H768v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H548v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H328v-56c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v56H96c-17.7 0-32 14.3-32 32v576c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32zm-40 568H136V296h120v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h148v56c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-56h120v496z'\n    ], [\n        primaryColor,\n        'M416 632H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'\n    ]);\n});\nexports.SecurityScanTwoTone = getIcon('security-scan', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M866.9 169.9L527.1 54.1C523 52.7 517.5 52 512 52s-11 .7-15.1 2.1L157.1 169.9c-8.3 2.8-15.1 12.4-15.1 21.2v482.4c0 8.8 5.7 20.4 12.6 25.9L499.3 968c3.5 2.7 8 4.1 12.6 4.1s9.2-1.4 12.6-4.1l344.7-268.6c6.9-5.4 12.6-17 12.6-25.9V191.1c.2-8.8-6.6-18.3-14.9-21.2zM810 654.3L512 886.5 214 654.3V226.7l298-101.6 298 101.6v427.6z'\n    ], [\n        secondaryColor,\n        'M460.7 451.1a80.1 80.1 0 1 0 160.2 0 80.1 80.1 0 1 0-160.2 0z'\n    ], [\n        secondaryColor,\n        'M214 226.7v427.6l298 232.2 298-232.2V226.7L512 125.1 214 226.7zm428.7 122.5c56.3 56.3 56.3 147.5 0 203.8-48.5 48.5-123 55.2-178.6 20.1l-77.5 77.5a8.03 8.03 0 0 1-11.3 0l-34-34a8.03 8.03 0 0 1 0-11.3l77.5-77.5c-35.1-55.7-28.4-130.1 20.1-178.6 56.3-56.3 147.5-56.3 203.8 0z'\n    ], [\n        primaryColor,\n        'M418.8 527.8l-77.5 77.5a8.03 8.03 0 0 0 0 11.3l34 34c3.1 3.1 8.2 3.1 11.3 0l77.5-77.5c55.6 35.1 130.1 28.4 178.6-20.1 56.3-56.3 56.3-147.5 0-203.8-56.3-56.3-147.5-56.3-203.8 0-48.5 48.5-55.2 122.9-20.1 178.6zm65.4-133.3a80.1 80.1 0 0 1 113.3 0 80.1 80.1 0 0 1 0 113.3c-31.3 31.3-82 31.3-113.3 0s-31.3-82 0-113.3z'\n    ]);\n});\nexports.SettingTwoTone = getIcon('setting', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M859.3 569.7l.2.1c3.1-18.9 4.6-38.2 4.6-57.3 0-17.1-1.3-34.3-3.7-51.1 2.4 16.7 3.6 33.6 3.6 50.5 0 19.4-1.6 38.8-4.7 57.8zM99 398.1c-.5-.4-.9-.8-1.4-1.3.7.7 1.4 1.4 2.2 2.1l65.5 55.9v-.1L99 398.1zm536.6-216h.1l-15.5-83.8c-.2-1-.4-1.9-.7-2.8.1.5.3 1.1.4 1.6l15.7 85zm54 546.5l31.4-25.8 92.8 32.9c17-22.9 31.3-47.5 42.6-73.6l-74.7-63.9 6.6-40.1c2.5-15.1 3.8-30.6 3.8-46.1s-1.3-31-3.8-46.1l-6.5-39.9 74.7-63.9c-11.4-26-25.6-50.7-42.6-73.6l-92.8 32.9-31.4-25.8c-23.9-19.6-50.6-35-79.3-45.8l-38.1-14.3-17.9-97a377.5 377.5 0 0 0-85 0l-17.9 97.2-37.9 14.3c-28.5 10.8-55 26.2-78.7 45.7l-31.4 25.9-93.4-33.2c-17 22.9-31.3 47.5-42.6 73.6l75.5 64.5-6.5 40c-2.5 14.9-3.7 30.2-3.7 45.5 0 15.2 1.3 30.6 3.7 45.5l6.5 40-75.5 64.5c11.4 26 25.6 50.7 42.6 73.6l93.4-33.2 31.4 25.9c23.7 19.5 50.2 34.9 78.7 45.7l37.8 14.5 17.9 97.2c28.2 3.2 56.9 3.2 85 0l17.9-97 38.1-14.3c28.8-10.8 55.4-26.2 79.3-45.8zm-177.1-50.3c-30.5 0-59.2-7.8-84.3-21.5C373.3 627 336 568.9 336 502c0-97.2 78.8-176 176-176 66.9 0 125 37.3 154.8 92.2 13.7 25 21.5 53.7 21.5 84.3 0 97.1-78.7 175.8-175.8 175.8zM207.2 812.8c-5.5 1.9-11.2 2.3-16.6 1.2 5.7 1.2 11.7 1 17.5-1l81.4-29c-.1-.1-.3-.2-.4-.3l-81.9 29.1zm717.6-414.7l-65.5 56c0 .2.1.5.1.7l65.4-55.9c7.1-6.1 11.1-14.9 11.2-24-.3 8.8-4.3 17.3-11.2 23.2z'\n    ], [\n        secondaryColor,\n        'M935.8 646.6c.5 4.7 0 9.5-1.7 14.1l-.9 2.6a446.02 446.02 0 0 1-79.7 137.9l-1.8 2.1a32 32 0 0 1-35.1 9.5l-81.3-28.9a350 350 0 0 1-99.7 57.6l-15.7 85a32.05 32.05 0 0 1-25.8 25.7l-2.7.5a445.2 445.2 0 0 1-79.2 7.1h.3c26.7 0 53.4-2.4 79.4-7.1l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-84.9c36.2-13.6 69.6-32.9 99.6-57.5l81.2 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.5-87.4 79.6-137.7l.9-2.6c1.6-4.7 2.1-9.7 1.5-14.5z'\n    ], [\n        primaryColor,\n        'M688 502c0-30.3-7.7-58.9-21.2-83.8C637 363.3 578.9 326 512 326c-97.2 0-176 78.8-176 176 0 66.9 37.3 125 92.2 154.8 24.9 13.5 53.4 21.2 83.8 21.2 97.2 0 176-78.8 176-176zm-288 0c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502z'\n    ], [\n        primaryColor,\n        'M594.1 952.2a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c1.7-4.6 2.2-9.4 1.7-14.1-.9-7.9-4.7-15.4-11-20.9l-65.3-55.9-.2-.1c3.1-19 4.7-38.4 4.7-57.8 0-16.9-1.2-33.9-3.6-50.5-.3-2.2-.7-4.4-1-6.6 0-.2-.1-.5-.1-.7l65.5-56c6.9-5.9 10.9-14.4 11.2-23.2.1-4-.5-8.1-1.9-12l-.9-2.6a443.74 443.74 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.4-44-99.6-57.6h-.1l-15.7-85c-.1-.5-.2-1.1-.4-1.6a32.08 32.08 0 0 0-25.4-24.1l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.86 351.86 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446.02 446.02 0 0 0-79.7 137.9l-.9 2.6a32.09 32.09 0 0 0 7.9 33.9c.5.4.9.9 1.4 1.3l66.3 56.6v.1c-3.1 18.8-4.6 37.9-4.6 57 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1c4.9 5.7 11.4 9.4 18.5 10.7 5.4 1 11.1.7 16.6-1.2l81.9-29.1c.1.1.3.2.4.3 29.7 24.3 62.8 43.6 98.6 57.1l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5c26.1 4.7 52.8 7.1 79.5 7.1h.3c26.6 0 53.3-2.4 79.2-7.1l2.7-.5zm-39.8-66.5a377.5 377.5 0 0 1-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97z'\n    ]);\n});\nexports.ShopTwoTone = getIcon('shop', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M839.5 344h-655c-.3 0-.5.2-.5.5v91.2c0 59.8 49 108.3 109.3 108.3 40.7 0 76.2-22 95.1-54.7 2.9-5.1 8.4-8.3 14.3-8.3s11.3 3.2 14.3 8.3c18.8 32.7 54.3 54.7 95 54.7 40.8 0 76.4-22.1 95.1-54.9 2.9-5 8.2-8.1 13.9-8.1h.6c5.8 0 11 3.1 13.9 8.1 18.8 32.8 54.4 54.9 95.2 54.9C791 544 840 495.5 840 435.7v-91.2c0-.3-.2-.5-.5-.5z'\n    ], [\n        primaryColor,\n        'M882 272.1V144c0-17.7-14.3-32-32-32H174c-17.7 0-32 14.3-32 32v128.1c-16.7 1-30 14.9-30 31.9v131.7a177 177 0 0 0 14.4 70.4c4.3 10.2 9.6 19.8 15.6 28.9v345c0 17.6 14.3 32 32 32h676c17.7 0 32-14.3 32-32V535a175 175 0 0 0 15.6-28.9c9.5-22.3 14.4-46 14.4-70.4V304c0-17-13.3-30.9-30-31.9zM214 184h596v88H214v-88zm362 656.1H448V736h128v104.1zm234.4 0H640V704c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v136.1H214V597.9c2.9 1.4 5.9 2.8 9 4 22.3 9.4 46 14.1 70.4 14.1 24.4 0 48-4.7 70.4-14.1 13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c13.8-5.8 26.8-13.2 38.7-22.1.2-.1.4-.1.6 0a180.4 180.4 0 0 0 38.7 22.1c22.3 9.4 46 14.1 70.4 14.1s48-4.7 70.4-14.1c3-1.3 6-2.6 9-4v242.2zM840 435.7c0 59.8-49 108.3-109.3 108.3-40.8 0-76.4-22.1-95.2-54.9-2.9-5-8.1-8.1-13.9-8.1h-.6c-5.7 0-11 3.1-13.9 8.1A109.24 109.24 0 0 1 512 544c-40.7 0-76.2-22-95-54.7-3-5.1-8.4-8.3-14.3-8.3s-11.4 3.2-14.3 8.3a109.63 109.63 0 0 1-95.1 54.7C233 544 184 495.5 184 435.7v-91.2c0-.3.2-.5.5-.5h655c.3 0 .5.2.5.5v91.2z'\n    ]);\n});\nexports.ShoppingTwoTone = getIcon('shopping', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M696 472c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-88H400v88c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-88h-96v456h560V384h-96v88z'\n    ], [\n        primaryColor,\n        'M832 312H696v-16c0-101.6-82.4-184-184-184s-184 82.4-184 184v16H192c-17.7 0-32 14.3-32 32v536c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V344c0-17.7-14.3-32-32-32zm-432-16c0-61.9 50.1-112 112-112s112 50.1 112 112v16H400v-16zm392 544H232V384h96v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h224v88c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-88h96v456z'\n    ]);\n});\nexports.SkinTwoTone = getIcon('skin', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 318c-79.2 0-148.5-48.8-176.7-120H182v196h119v432h422V394h119V198H688.7c-28.2 71.2-97.5 120-176.7 120z'\n    ], [\n        primaryColor,\n        'M870 126H663.8c-17.4 0-32.9 11.9-37 29.3C614.3 208.1 567 246 512 246s-102.3-37.9-114.8-90.7a37.93 37.93 0 0 0-37-29.3H154a44 44 0 0 0-44 44v252a44 44 0 0 0 44 44h75v388a44 44 0 0 0 44 44h478a44 44 0 0 0 44-44V466h75a44 44 0 0 0 44-44V170a44 44 0 0 0-44-44zm-28 268H723v432H301V394H182V198h153.3c28.2 71.2 97.5 120 176.7 120s148.5-48.8 176.7-120H842v196z'\n    ]);\n});\nexports.SlidersTwoTone = getIcon('sliders', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M180 292h80v440h-80zm369 180h-74a3 3 0 0 0-3 3v74a3 3 0 0 0 3 3h74a3 3 0 0 0 3-3v-74a3 3 0 0 0-3-3zm215-108h80v296h-80z'\n    ], [\n        primaryColor,\n        'M904 296h-66v-96c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v96h-66c-4.4 0-8 3.6-8 8v416c0 4.4 3.6 8 8 8h66v96c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-96h66c4.4 0 8-3.6 8-8V304c0-4.4-3.6-8-8-8zm-60 364h-80V364h80v296zM612 404h-66V232c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v172h-66c-4.4 0-8 3.6-8 8v200c0 4.4 3.6 8 8 8h66v172c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8V620h66c4.4 0 8-3.6 8-8V412c0-4.4-3.6-8-8-8zm-60 145a3 3 0 0 1-3 3h-74a3 3 0 0 1-3-3v-74a3 3 0 0 1 3-3h74a3 3 0 0 1 3 3v74zM320 224h-66v-56c0-4.4-3.6-8-8-8h-52c-4.4 0-8 3.6-8 8v56h-66c-4.4 0-8 3.6-8 8v560c0 4.4 3.6 8 8 8h66v56c0 4.4 3.6 8 8 8h52c4.4 0 8-3.6 8-8v-56h66c4.4 0 8-3.6 8-8V232c0-4.4-3.6-8-8-8zm-60 508h-80V292h80v440z'\n    ]);\n});\nexports.SmileTwoTone = getIcon('smile', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM288 421a48.01 48.01 0 0 1 96 0 48.01 48.01 0 0 1-96 0zm224 272c-85.5 0-155.6-67.3-160-151.6a8 8 0 0 1 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 589.9 461.5 629 512 629s92.1-39.1 95.8-88.6c.3-4.2 3.9-7.4 8.1-7.4H664a8 8 0 0 1 8 8.4C667.6 625.7 597.5 693 512 693zm176-224a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z'\n    ], [\n        primaryColor,\n        'M288 421a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm376 112h-48.1c-4.2 0-7.8 3.2-8.1 7.4-3.7 49.5-45.3 88.6-95.8 88.6s-92-39.1-95.8-88.6c-.3-4.2-3.9-7.4-8.1-7.4H360a8 8 0 0 0-8 8.4c4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6a8 8 0 0 0-8-8.4zm-24-112a48 48 0 1 0 96 0 48 48 0 1 0-96 0z'\n    ]);\n});\nexports.SnippetsTwoTone = getIcon('snippets', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M450 510V336H232v552h432V550H490c-22.1 0-40-17.9-40-40z'\n    ], [\n        primaryColor,\n        'M832 112H724V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H500V72c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v40H320c-17.7 0-32 14.3-32 32v120h-96c-17.7 0-32 14.3-32 32v632c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32v-96h96c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM664 888H232V336h218v174c0 22.1 17.9 40 40 40h174v338zm0-402H514V336h.2L664 485.8v.2zm128 274h-56V456L544 264H360v-80h68v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h152v32c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-32h68v576z'\n    ]);\n});\nexports.SoundTwoTone = getIcon('sound', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M275.4 424H146v176h129.4l18 11.7L586 803V221L293.3 412.3z'\n    ], [\n        primaryColor,\n        'M892.1 737.8l-110.3-63.7a15.9 15.9 0 0 0-21.7 5.9l-19.9 34.5c-4.4 7.6-1.8 17.4 5.8 21.8L856.3 800a15.9 15.9 0 0 0 21.7-5.9l19.9-34.5c4.4-7.6 1.7-17.4-5.8-21.8zM934 476H806c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16zM760 344a15.9 15.9 0 0 0 21.7 5.9L892 286.2c7.6-4.4 10.2-14.2 5.8-21.8L878 230a15.9 15.9 0 0 0-21.7-5.9L746 287.8a15.99 15.99 0 0 0-5.8 21.8L760 344zM625.9 115c-5.9 0-11.9 1.6-17.4 5.3L254 352H90c-8.8 0-16 7.2-16 16v288c0 8.8 7.2 16 16 16h164l354.5 231.7c5.5 3.6 11.6 5.3 17.4 5.3 16.7 0 32.1-13.3 32.1-32.1V147.1c0-18.8-15.4-32.1-32.1-32.1zM586 803L293.4 611.7l-18-11.7H146V424h129.4l17.9-11.7L586 221v582z'\n    ]);\n});\nexports.StarTwoTone = getIcon('star', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512.5 190.4l-94.4 191.3-211.2 30.7 152.8 149-36.1 210.3 188.9-99.3 188.9 99.2-36.1-210.3 152.8-148.9-211.2-30.7z'\n    ], [\n        primaryColor,\n        'M908.6 352.8l-253.9-36.9L541.2 85.8c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L370.3 315.9l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 0 0 .6 45.3l183.7 179.1L239 839.4a31.95 31.95 0 0 0 46.4 33.7l227.1-119.4 227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM665.3 561.3l36.1 210.3-188.9-99.2-188.9 99.3 36.1-210.3-152.8-149 211.2-30.7 94.4-191.3 94.4 191.3 211.2 30.7-152.8 148.9z'\n    ]);\n});\nexports.StopTwoTone = getIcon('stop', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm288.5 682.8L277.7 224C258 240 240 258 224 277.7l522.8 522.8C682.8 852.7 601 884 512 884c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372c0 89-31.3 170.8-83.5 234.8z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372c89 0 170.8-31.3 234.8-83.5L224 277.7c16-19.7 34-37.7 53.7-53.7l522.8 522.8C852.7 682.8 884 601 884 512c0-205.4-166.6-372-372-372z'\n    ]);\n});\nexports.SwitcherTwoTone = getIcon('switcher', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [secondaryColor, 'M184 840h528V312H184v528zm116-290h296v64H300v-64z'], [\n        primaryColor,\n        'M880 112H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z'\n    ], [\n        primaryColor,\n        'M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zm-40 600H184V312h528v528z'\n    ], [primaryColor, 'M300 550h296v64H300z']);\n});\nexports.TabletTwoTone = getIcon('tablet', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M800 64H224c-35.3 0-64 28.7-64 64v768c0 35.3 28.7 64 64 64h576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zm-8 824H232V136h560v752z'\n    ], [\n        secondaryColor,\n        'M232 888h560V136H232v752zm280-144c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z'\n    ], [primaryColor, 'M472 784a40 40 0 1 0 80 0 40 40 0 1 0-80 0z']);\n});\nexports.TagTwoTone = getIcon('tag', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M589 164.6L189.3 564.3l270.4 270.4L859.4 435 836 188l-247-23.4zM680 432c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88z'\n    ], [\n        primaryColor,\n        'M680 256c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm0 120c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z'\n    ], [\n        primaryColor,\n        'M938 458.8l-29.6-312.6c-1.5-16.2-14.4-29-30.6-30.6L565.2 86h-.4c-3.2 0-5.7 1-7.6 2.9L88.9 557.2a9.96 9.96 0 0 0 0 14.1l363.8 363.8a9.9 9.9 0 0 0 7.1 2.9c2.7 0 5.2-1 7.1-2.9l468.3-468.3c2-2.1 3-5 2.8-8zM459.7 834.7L189.3 564.3 589 164.6 836 188l23.4 247-399.7 399.7z'\n    ]);\n});\nexports.TagsTwoTone = getIcon('tags', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M477.5 694l311.9-311.8-19-224.6-224.6-19-311.9 311.9L477.5 694zm116-415.5a47.81 47.81 0 0 1 33.9-33.9c16.6-4.4 34.2.3 46.4 12.4a47.93 47.93 0 0 1 12.4 46.4 47.81 47.81 0 0 1-33.9 33.9c-16.6 4.4-34.2-.3-46.4-12.4a48.3 48.3 0 0 1-12.4-46.4z'\n    ], [\n        secondaryColor,\n        'M476.6 792.6c-1.7-.2-3.4-1-4.7-2.3L137.7 456.1a8.03 8.03 0 0 1 0-11.3L515.9 66.6c1.2-1.3 2.9-2.1 4.7-2.3h-.4c-2.3-.2-4.7.6-6.3 2.3L135.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c1.8 1.9 4.3 2.6 6.7 2.3z'\n    ], [\n        primaryColor,\n        'M889.7 539.8l-39.6-39.5a8.03 8.03 0 0 0-11.3 0l-362 361.3-237.6-237a8.03 8.03 0 0 0-11.3 0l-39.6 39.5a8.03 8.03 0 0 0 0 11.3l243.2 242.8 39.6 39.5c3.1 3.1 8.2 3.1 11.3 0l407.3-406.6c3.1-3.1 3.1-8.2 0-11.3zM652.3 337.3a47.81 47.81 0 0 0 33.9-33.9c4.4-16.6-.3-34.2-12.4-46.4a47.93 47.93 0 0 0-46.4-12.4 47.81 47.81 0 0 0-33.9 33.9c-4.4 16.6.3 34.2 12.4 46.4a48.3 48.3 0 0 0 46.4 12.4z'\n    ], [\n        primaryColor,\n        'M137.7 444.8a8.03 8.03 0 0 0 0 11.3l334.2 334.2c1.3 1.3 2.9 2.1 4.7 2.3 2.4.3 4.8-.5 6.6-2.3L861.4 412c1.7-1.7 2.5-4 2.3-6.3l-25.5-301.4c-.7-7.8-6.8-13.9-14.6-14.6L522.2 64.3h-1.6c-1.8.2-3.4 1-4.7 2.3L137.7 444.8zm408.1-306.2l224.6 19 19 224.6L477.5 694 233.9 450.5l311.9-311.9z'\n    ]);\n});\nexports.ThunderboltTwoTone = getIcon('thunderbolt', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M695.4 164.1H470.8L281.2 491.5h157.4l-60.3 241 319.8-305.1h-211z'\n    ], [\n        primaryColor,\n        'M848.1 359.3H627.8L825.9 109c4.1-5.3.4-13-6.3-13H436.1c-2.8 0-5.5 1.5-6.9 4L170.1 547.5c-3.1 5.3.7 12 6.9 12h174.4L262 917.1c-1.9 7.8 7.5 13.3 13.3 7.7L853.6 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.3 732.5l60.3-241H281.2l189.6-327.4h224.6L487.1 427.4h211L378.3 732.5z'\n    ]);\n});\nexports.ToolTwoTone = getIcon('tool', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M706.8 488.7a32.05 32.05 0 0 1-45.3 0L537 364.2a32.05 32.05 0 0 1 0-45.3l132.9-132.8a184.2 184.2 0 0 0-144 53.5c-58.1 58.1-69.3 145.3-33.6 214.6L439.5 507c-.1 0-.1-.1-.1-.1L209.3 737l79.2 79.2 274-274.1.1.1 8.8-8.8c69.3 35.7 156.5 24.5 214.6-33.6 39.2-39.1 57.3-92.1 53.6-143.9L706.8 488.7z'\n    ], [\n        primaryColor,\n        'M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 0 1 144-53.5L537 318.9a32.05 32.05 0 0 0 0 45.3l124.5 124.5a32.05 32.05 0 0 0 45.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z'\n    ]);\n});\nexports.TrademarkCircleTwoTone = getIcon('trademark-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm170.7 584.2c-1.1.5-2.3.8-3.5.8h-62c-3.1 0-5.9-1.8-7.2-4.6l-74.6-159.2h-88.7V717c0 4.4-3.6 8-8 8H384c-4.4 0-8-3.6-8-8V307c0-4.4 3.6-8 8-8h155.6c98.8 0 144.2 59.9 144.2 131.1 0 70.2-43.6 106.4-78.4 119.2l80.8 164.2c2.1 3.9.4 8.7-3.5 10.7z'\n    ], [\n        secondaryColor,\n        'M529.9 357h-83.4v148H528c53 0 82.8-25.6 82.8-72.4 0-50.3-32.9-75.6-80.9-75.6z'\n    ], [\n        primaryColor,\n        'M605.4 549.3c34.8-12.8 78.4-49 78.4-119.2 0-71.2-45.4-131.1-144.2-131.1H384c-4.4 0-8 3.6-8 8v410c0 4.4 3.6 8 8 8h54.7c4.4 0 8-3.6 8-8V561.2h88.7L610 720.4c1.3 2.8 4.1 4.6 7.2 4.6h62c1.2 0 2.4-.3 3.5-.8 3.9-2 5.6-6.8 3.5-10.7l-80.8-164.2zM528 505h-81.5V357h83.4c48 0 80.9 25.3 80.9 75.6 0 46.8-29.8 72.4-82.8 72.4z'\n    ]);\n});\nexports.TrophyTwoTone = getIcon('trophy', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M320 480c0 49.1 19.1 95.3 53.9 130.1 34.7 34.8 81 53.9 130.1 53.9h16c49.1 0 95.3-19.1 130.1-53.9 34.8-34.7 53.9-81 53.9-130.1V184H320v296zM184 352c0 41 26.9 75.8 64 87.6-37.1-11.9-64-46.7-64-87.6zm364 382.5C665 721.8 758.4 630.2 773.8 514 758.3 630.2 665 721.7 548 734.5zM250.2 514C265.6 630.2 359 721.8 476 734.5 359 721.7 265.7 630.2 250.2 514z'\n    ], [\n        primaryColor,\n        'M868 160h-92v-40c0-4.4-3.6-8-8-8H256c-4.4 0-8 3.6-8 8v40h-92a44 44 0 0 0-44 44v148c0 81.7 60 149.6 138.2 162C265.7 630.2 359 721.7 476 734.5v105.2H280c-17.7 0-32 14.3-32 32V904c0 4.4 3.6 8 8 8h512c4.4 0 8-3.6 8-8v-32.3c0-17.7-14.3-32-32-32H548V734.5C665 721.7 758.3 630.2 773.8 514 852 501.6 912 433.7 912 352V204a44 44 0 0 0-44-44zM248 439.6a91.99 91.99 0 0 1-64-87.6V232h64v207.6zM704 480c0 49.1-19.1 95.4-53.9 130.1-34.8 34.8-81 53.9-130.1 53.9h-16c-49.1 0-95.4-19.1-130.1-53.9-34.8-34.8-53.9-81-53.9-130.1V184h384v296zm136-128c0 41-26.9 75.8-64 87.6V232h64v120z'\n    ]);\n});\nexports.UnlockTwoTone = getIcon('unlock', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M232 840h560V536H232v304zm280-226a48.01 48.01 0 0 1 28 87v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 0 1 28-87z'\n    ], [\n        primaryColor,\n        'M484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z'\n    ], [\n        primaryColor,\n        'M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304z'\n    ]);\n});\nexports.UpCircleTwoTone = getIcon('up-circle', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm178 479h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 460.4 406.8 605.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7z'\n    ], [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        primaryColor,\n        'M518.4 360.3a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7h46.9c10.3 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.7 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.4-12.7l-178-246z'\n    ]);\n});\nexports.UpSquareTwoTone = getIcon('up-square', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z'\n    ], [\n        secondaryColor,\n        'M184 840h656V184H184v656zm143.5-228.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3.1 12.7-6.4 12.7h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 465.4 406.8 610.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7z'\n    ], [\n        primaryColor,\n        'M334 624h46.9c10.3 0 19.9-4.9 25.9-13.2L512 465.4l105.2 145.4c6 8.3 15.7 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.4-12.7l-178-246a7.95 7.95 0 0 0-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7z'\n    ]);\n});\nexports.UsbTwoTone = getIcon('usb', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M759.9 504H264.1c-26.5 0-48.1 19.7-48.1 44v292h592V548c0-24.3-21.6-44-48.1-44z'\n    ], [\n        primaryColor,\n        'M456 248h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z'\n    ], [\n        primaryColor,\n        'M760 432V144c0-17.7-14.3-32-32-32H296c-17.7 0-32 14.3-32 32v288c-66.2 0-120 52.1-120 116v356c0 4.4 3.6 8 8 8h720c4.4 0 8-3.6 8-8V548c0-63.9-53.8-116-120-116zM336 184h352v248H336V184zm472 656H216V548c0-24.3 21.6-44 48.1-44h495.8c26.5 0 48.1 19.7 48.1 44v292z'\n    ]);\n});\nexports.VideoCameraTwoTone = getIcon('video-camera', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M136 792h576V232H136v560zm64-488c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48z'\n    ], [\n        primaryColor,\n        'M912 302.3L784 376V224c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v576c0 35.3 28.7 64 64 64h592c35.3 0 64-28.7 64-64V648l128 73.7c21.3 12.3 48-3.1 48-27.6V330c0-24.6-26.7-40-48-27.7zM712 792H136V232h576v560zm176-167l-104-59.8V458.9L888 399v226z'\n    ], [\n        primaryColor,\n        'M208 360h112c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z'\n    ]);\n});\nexports.WalletTwoTone = getIcon('wallet', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 464H528V448h312v128zm0-192H496c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h344v200H184V184h656v200z'\n    ], [\n        secondaryColor,\n        'M528 576h312V448H528v128zm92-104c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40z'\n    ], [primaryColor, 'M580 512a40 40 0 1 0 80 0 40 40 0 1 0-80 0z'], [\n        secondaryColor,\n        'M184 840h656V640H496c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32h344V184H184v656z'\n    ]);\n});\nexports.WarningTwoTone = getIcon('warning', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zm-783.5-27.9L512 239.9l339.8 588.2H172.2z'\n    ], [\n        secondaryColor,\n        'M172.2 828.1h679.6L512 239.9 172.2 828.1zM560 720a48.01 48.01 0 0 1-96 0 48.01 48.01 0 0 1 96 0zm-16-304v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8z'\n    ], [\n        primaryColor,\n        'M464 720a48 48 0 1 0 96 0 48 48 0 1 0-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z'\n    ]);\n});\nexports.CiTwoTone = getIcon('ci', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm-63.5 522.8c49.3 0 82.8-29.4 87-72.4.4-4.1 3.8-7.3 8-7.3h52.7c2.4 0 4.4 2 4.4 4.4 0 77.4-64.3 132.5-152.3 132.5C345.4 720 286 651.4 286 537.4v-49C286 373.5 345.4 304 448.3 304c88.3 0 152.3 56.9 152.3 138.1 0 2.4-2 4.4-4.4 4.4h-52.6c-4.2 0-7.6-3.2-8-7.4-3.9-46.1-37.5-77.6-87-77.6-61.1 0-95.6 45.4-95.7 126.8v49.3c0 80.3 34.5 125.2 95.6 125.2zM738 704.1c0 4.4-3.6 8-8 8h-50.4c-4.4 0-8-3.6-8-8V319.9c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8v384.2z'\n    ], [\n        primaryColor,\n        'M730 311.9h-50.4c-4.4 0-8 3.6-8 8v384.2c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8V319.9c0-4.4-3.6-8-8-8zm-281.4 49.6c49.5 0 83.1 31.5 87 77.6.4 4.2 3.8 7.4 8 7.4h52.6c2.4 0 4.4-2 4.4-4.4 0-81.2-64-138.1-152.3-138.1C345.4 304 286 373.5 286 488.4v49c0 114 59.4 182.6 162.3 182.6 88 0 152.3-55.1 152.3-132.5 0-2.4-2-4.4-4.4-4.4h-52.7c-4.2 0-7.6 3.2-8 7.3-4.2 43-37.7 72.4-87 72.4-61.1 0-95.6-44.9-95.6-125.2v-49.3c.1-81.4 34.6-126.8 95.7-126.8z'\n    ]);\n});\nexports.CopyrightTwoTone = getIcon('copyright', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm5.5 533c52.9 0 88.8-31.7 93-77.8.4-4.1 3.8-7.3 8-7.3h56.8c2.6 0 4.7 2.1 4.7 4.7 0 82.6-68.7 141.4-162.7 141.4C407.4 734 344 660.8 344 539.1v-52.3C344 364.2 407.4 290 517.3 290c94.3 0 162.7 60.7 162.7 147.4 0 2.6-2.1 4.7-4.7 4.7h-56.7c-4.2 0-7.7-3.2-8-7.4-4-49.6-40-83.4-93-83.4-65.2 0-102.1 48.5-102.2 135.5v52.6c0 85.7 36.8 133.6 102.1 133.6z'\n    ], [\n        primaryColor,\n        'M517.6 351.3c53 0 89 33.8 93 83.4.3 4.2 3.8 7.4 8 7.4h56.7c2.6 0 4.7-2.1 4.7-4.7 0-86.7-68.4-147.4-162.7-147.4C407.4 290 344 364.2 344 486.8v52.3C344 660.8 407.4 734 517.3 734c94 0 162.7-58.8 162.7-141.4 0-2.6-2.1-4.7-4.7-4.7h-56.8c-4.2 0-7.6 3.2-8 7.3-4.2 46.1-40.1 77.8-93 77.8-65.3 0-102.1-47.9-102.1-133.6v-52.6c.1-87 37-135.5 102.2-135.5z'\n    ]);\n});\nexports.DollarTwoTone = getIcon('dollar', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M426.6 410.3c0 25.4 15.7 45.1 49.5 57.3 4.7 1.9 9.4 3.4 15 5v-124c-37 4.7-64.5 25.4-64.5 61.7zm116.5 135.2c-2.9-.6-5.7-1.3-8.8-2.2V677c42.6-3.8 72-27.3 72-66.4 0-30.7-15.9-50.7-63.2-65.1z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm22.4 589.2l.2 31.7c0 4.5-3.6 8.1-8 8.1h-28.4c-4.4 0-8-3.6-8-8v-31.4c-89-6.5-130.7-57.1-135.2-112.1-.4-4.7 3.3-8.7 8-8.7h46.2c3.9 0 7.3 2.8 7.9 6.6 5.1 31.8 29.9 55.4 74.1 61.3V534l-24.7-6.3c-52.3-12.5-102.1-45.1-102.1-112.7 0-73 55.4-112.1 126.2-119v-33c0-4.4 3.6-8 8-8h28.1c4.4 0 8 3.6 8 8v32.7c68.5 6.9 119.8 46.9 125.9 109.2a8.1 8.1 0 0 1-8 8.8h-44.9c-4 0-7.4-2.9-7.9-6.9-4-29.2-27.5-53-65.5-58.2v134.3l25.4 5.9c64.8 16 108.9 47 109 116.4 0 75.2-56 117.1-134.3 124z'\n    ], [\n        primaryColor,\n        'M559.7 488.8l-25.4-5.9V348.6c38 5.2 61.5 29 65.5 58.2.5 4 3.9 6.9 7.9 6.9h44.9c4.7 0 8.4-4.1 8-8.8-6.1-62.3-57.4-102.3-125.9-109.2V263c0-4.4-3.6-8-8-8h-28.1c-4.4 0-8 3.6-8 8v33c-70.8 6.9-126.2 46-126.2 119 0 67.6 49.8 100.2 102.1 112.7l24.7 6.3v142.7c-44.2-5.9-69-29.5-74.1-61.3-.6-3.8-4-6.6-7.9-6.6H363c-4.7 0-8.4 4-8 8.7 4.5 55 46.2 105.6 135.2 112.1V761c0 4.4 3.6 8 8 8h28.4c4.4 0 8-3.6 8-8.1l-.2-31.7c78.3-6.9 134.3-48.8 134.3-124-.1-69.4-44.2-100.4-109-116.4zm-68.6-16.2c-5.6-1.6-10.3-3.1-15-5-33.8-12.2-49.5-31.9-49.5-57.3 0-36.3 27.5-57 64.5-61.7v124zM534.3 677V543.3c3.1.9 5.9 1.6 8.8 2.2 47.3 14.4 63.2 34.4 63.2 65.1 0 39.1-29.4 62.6-72 66.4z'\n    ]);\n});\nexports.EuroTwoTone = getIcon('euro', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z'\n    ], [\n        secondaryColor,\n        'M512 140c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm117.1 581.1c0 3.8-2.7 7-6.4 7.8-15.9 3.4-34.4 5.1-55.3 5.1-109.8 0-183-58.8-200.2-158H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.1v-36.9c0-4.4 0-8.7.3-12.8H337c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h31.8C388.5 345.7 460.7 290 567.4 290c20.9 0 39.4 1.9 55.3 5.4 3.7.8 6.3 4 6.3 7.8V346a8 8 0 0 1-9.6 7.8c-14.6-2.9-31.8-4.4-51.7-4.4-65.3 0-110.4 33.5-127.6 90.4h128.3c4.4 0 8 3.6 8 8V475c0 4.4-3.6 8-8 8H432.5c-.3 4.4-.3 9.1-.3 13.8v36h136.4c4.4 0 8 3.6 8 8V568c0 4.4-3.6 8-8 8H438c15.3 62 61.3 98.6 129.8 98.6 19.9 0 37.1-1.3 51.8-4.1 4.9-1 9.5 2.8 9.5 7.8v42.8z'\n    ], [\n        primaryColor,\n        'M619.6 670.5c-14.7 2.8-31.9 4.1-51.8 4.1-68.5 0-114.5-36.6-129.8-98.6h130.6c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H432.2v-36c0-4.7 0-9.4.3-13.8h135.9c4.4 0 8-3.6 8-8v-27.2c0-4.4-3.6-8-8-8H440.1c17.2-56.9 62.3-90.4 127.6-90.4 19.9 0 37.1 1.5 51.7 4.4a8 8 0 0 0 9.6-7.8v-42.8c0-3.8-2.6-7-6.3-7.8-15.9-3.5-34.4-5.4-55.3-5.4-106.7 0-178.9 55.7-198.6 149.9H337c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.4c-.3 4.1-.3 8.4-.3 12.8v36.9H337c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h30.2c17.2 99.2 90.4 158 200.2 158 20.9 0 39.4-1.7 55.3-5.1 3.7-.8 6.4-4 6.4-7.8v-42.8c0-5-4.6-8.8-9.5-7.8z'\n    ]);\n});\nexports.GoldTwoTone = getIcon('gold', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        primaryColor,\n        'M435.7 558.7c-.6-3.9-4-6.7-7.9-6.7H166.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248zM196.5 748l20.7-128h159.5l20.7 128H196.5zm709.4 58.7l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H596.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8h342c.4 0 .9 0 1.3-.1 4.3-.7 7.3-4.8 6.6-9.2zM626.5 748l20.7-128h159.5l20.7 128H626.5zM342 472h342c.4 0 .9 0 1.3-.1 4.4-.7 7.3-4.8 6.6-9.2l-40.2-248c-.6-3.9-4-6.7-7.9-6.7H382.2c-3.9 0-7.3 2.8-7.9 6.7l-40.2 248c-.1.4-.1.9-.1 1.3 0 4.4 3.6 8 8 8zm91.2-196h159.5l20.7 128h-201l20.8-128z'\n    ], [\n        secondaryColor,\n        'M592.7 276H433.2l-20.8 128h201zM217.2 620l-20.7 128h200.9l-20.7-128zm430 0l-20.7 128h200.9l-20.7-128z'\n    ]);\n});\nexports.CanlendarTwoTone = getIcon('canlendar', twotone, function (primaryColor, secondaryColor) {\n    return getNode(newViewBox, [\n        secondaryColor,\n        'M712 304c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H384v48c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-48H184v136h656V256H712v48z'\n    ], [\n        primaryColor,\n        'M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zm0-448H184V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136z'\n    ]);\n});\n\n\n/***/ }),\n/* 463 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(353);\n\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_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"].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\n/* harmony default export */ __webpack_exports__[\"a\"] = (nodeUtil);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(459)(module)))\n\n/***/ }),\n/* 464 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/classCallCheck.js\nvar classCallCheck = __webpack_require__(11);\nvar classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/createClass.js\nvar createClass = __webpack_require__(22);\nvar createClass_default = /*#__PURE__*/__webpack_require__.n(createClass);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\nvar possibleConstructorReturn = __webpack_require__(10);\nvar possibleConstructorReturn_default = /*#__PURE__*/__webpack_require__.n(possibleConstructorReturn);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/inherits.js\nvar inherits = __webpack_require__(12);\nvar inherits_default = /*#__PURE__*/__webpack_require__.n(inherits);\n\n// EXTERNAL MODULE: external \"react\"\nvar external_react_ = __webpack_require__(0);\nvar external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);\n\n// EXTERNAL MODULE: ./node_modules/prop-types/index.js\nvar prop_types = __webpack_require__(1);\nvar prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);\n\n// EXTERNAL MODULE: external \"react-dom\"\nvar external_react_dom_ = __webpack_require__(19);\nvar external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_);\n\n// CONCATENATED MODULE: ./node_modules/dom-align/dist-web/index.js\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\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\n  return obj;\n}\n\nvar vendorPrefix;\nvar jsCssMap = {\n  Webkit: '-webkit-',\n  Moz: '-moz-',\n  // IE did it wrong again ...\n  ms: '-ms-',\n  O: '-o-'\n};\n\nfunction getVendorPrefix() {\n  if (vendorPrefix !== undefined) {\n    return vendorPrefix;\n  }\n\n  vendorPrefix = '';\n  var style = document.createElement('p').style;\n  var testProp = 'Transform';\n\n  for (var key in jsCssMap) {\n    if (key + testProp in style) {\n      vendorPrefix = key;\n    }\n  }\n\n  return vendorPrefix;\n}\n\nfunction getTransitionName() {\n  return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"TransitionProperty\") : 'transitionProperty';\n}\n\nfunction getTransformName() {\n  return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"Transform\") : 'transform';\n}\nfunction setTransitionProperty(node, value) {\n  var name = getTransitionName();\n\n  if (name) {\n    node.style[name] = value;\n\n    if (name !== 'transitionProperty') {\n      node.style.transitionProperty = value;\n    }\n  }\n}\n\nfunction setTransform(node, value) {\n  var name = getTransformName();\n\n  if (name) {\n    node.style[name] = value;\n\n    if (name !== 'transform') {\n      node.style.transform = value;\n    }\n  }\n}\n\nfunction getTransitionProperty(node) {\n  return node.style.transitionProperty || node.style[getTransitionName()];\n}\nfunction getTransformXY(node) {\n  var style = window.getComputedStyle(node, null);\n  var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n  if (transform && transform !== 'none') {\n    var matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n    return {\n      x: parseFloat(matrix[12] || matrix[4], 0),\n      y: parseFloat(matrix[13] || matrix[5], 0)\n    };\n  }\n\n  return {\n    x: 0,\n    y: 0\n  };\n}\nvar matrix2d = /matrix\\((.*)\\)/;\nvar matrix3d = /matrix3d\\((.*)\\)/;\nfunction setTransformXY(node, xy) {\n  var style = window.getComputedStyle(node, null);\n  var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n  if (transform && transform !== 'none') {\n    var arr;\n    var match2d = transform.match(matrix2d);\n\n    if (match2d) {\n      match2d = match2d[1];\n      arr = match2d.split(',').map(function (item) {\n        return parseFloat(item, 10);\n      });\n      arr[4] = xy.x;\n      arr[5] = xy.y;\n      setTransform(node, \"matrix(\".concat(arr.join(','), \")\"));\n    } else {\n      var match3d = transform.match(matrix3d)[1];\n      arr = match3d.split(',').map(function (item) {\n        return parseFloat(item, 10);\n      });\n      arr[12] = xy.x;\n      arr[13] = xy.y;\n      setTransform(node, \"matrix3d(\".concat(arr.join(','), \")\"));\n    }\n  } else {\n    setTransform(node, \"translateX(\".concat(xy.x, \"px) translateY(\").concat(xy.y, \"px) translateZ(0)\"));\n  }\n}\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\nvar getComputedStyleX; // https://stackoverflow.com/a/3485654/3040605\n\nfunction forceRelayout(elem) {\n  var originalStyle = elem.style.display;\n  elem.style.display = 'none';\n  elem.offsetHeight; // eslint-disable-line\n\n  elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n  var value = v;\n\n  if (_typeof(name) === 'object') {\n    for (var i in name) {\n      if (name.hasOwnProperty(i)) {\n        css(el, i, name[i]);\n      }\n    }\n\n    return undefined;\n  }\n\n  if (typeof value !== 'undefined') {\n    if (typeof value === 'number') {\n      value = \"\".concat(value, \"px\");\n    }\n\n    el.style[name] = value;\n    return undefined;\n  }\n\n  return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n  var box;\n  var x;\n  var y;\n  var doc = elem.ownerDocument;\n  var body = doc.body;\n  var docElem = doc && doc.documentElement; // 根据 GBS 最新数据，A-Grade Browsers 都已支持 getBoundingClientRect 方法，不用再考虑传统的实现方式\n\n  box = elem.getBoundingClientRect(); // 注：jQuery 还考虑减去 docElem.clientLeft/clientTop\n  // 但测试发现，这样反而会导致当 html 和 body 有边距/边框样式时，获取的值不正确\n  // 此外，ie6 会忽略 html 的 margin 值，幸运地是没有谁会去设置 html 的 margin\n\n  x = Math.floor(box.left);\n  y = Math.floor(box.top); // In IE, most of the time, 2 extra pixels are added to the top and left\n  // due to the implicit 2-pixel inset border.  In IE6/7 quirks mode and\n  // IE6 standards mode, this border can be overridden by setting the\n  // document element's border to zero -- thus, we cannot rely on the\n  // offset always being 2 pixels.\n  // In quirks mode, the offset can be determined by querying the body's\n  // clientLeft/clientTop, but in standards mode, it is found by querying\n  // the document element's clientLeft/clientTop.  Since we already called\n  // getClientBoundingRect we have already forced a reflow, so it is not\n  // too expensive just to query them all.\n  // ie 下应该减去窗口的边框吧，毕竟默认 absolute 都是相对窗口定位的\n  // 窗口边框标准是设 documentElement ,quirks 时设置 body\n  // 最好禁止在 body 和 html 上边框 ，但 ie < 9 html 默认有 2px ，减去\n  // 但是非 ie 不可能设置窗口边框，body html 也不是窗口 ,ie 可以通过 html,body 设置\n  // 标准 ie 下 docElem.clientTop 就是 border-top\n  // ie7 html 即窗口边框改变不了。永远为 2\n  // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框，即使设了 border-top 也为 0\n\n  x -= docElem.clientLeft || body.clientLeft || 0;\n  y -= docElem.clientTop || body.clientTop || 0;\n  return {\n    left: x,\n    top: y\n  };\n}\n\nfunction getScroll(w, top) {\n  var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n  var method = \"scroll\".concat(top ? 'Top' : 'Left');\n\n  if (typeof ret !== 'number') {\n    var d = w.document; // ie6,7,8 standard mode\n\n    ret = d.documentElement[method];\n\n    if (typeof ret !== 'number') {\n      // quirks mode\n      ret = d.body[method];\n    }\n  }\n\n  return ret;\n}\n\nfunction getScrollLeft(w) {\n  return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n  return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n  var pos = getClientPosition(el);\n  var doc = el.ownerDocument;\n  var w = doc.defaultView || doc.parentWindow;\n  pos.left += getScrollLeft(w);\n  pos.top += getScrollTop(w);\n  return pos;\n}\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\n\n\nfunction isWindow(obj) {\n  // must use == for ie8\n\n  /* eslint eqeqeq:0 */\n  return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n  if (isWindow(node)) {\n    return node.document;\n  }\n\n  if (node.nodeType === 9) {\n    return node;\n  }\n\n  return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n  var computedStyle = cs;\n  var val = '';\n  var d = getDocument(elem);\n  computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null); // https://github.com/kissyteam/kissy/issues/61\n\n  if (computedStyle) {\n    val = computedStyle.getPropertyValue(name) || computedStyle[name];\n  }\n\n  return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp(\"^(\".concat(RE_NUM, \")(?!px)[a-z%]+$\"), 'i');\n\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n  // currentStyle maybe null\n  // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n  var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; // 当 width/height 设置为百分比时，通过 pixelLeft 方式转换的 width/height 值\n  // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n  // 在 ie 下不对，需要直接用 offset 方式\n  // borderWidth 等值也有问题，但考虑到 borderWidth 设为百分比的概率很小，这里就不考虑了\n  // From the awesome hack by Dean Edwards\n  // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n  // If we're not dealing with a regular pixel number\n  // but a number that has a weird ending, we need to convert it to pixels\n  // exclude left right for relativity\n\n  if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n    // Remember the original values\n    var style = elem.style;\n    var left = style[LEFT];\n    var rsLeft = elem[RUNTIME_STYLE][LEFT]; // prevent flashing of content\n\n    elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; // Put in the new values to get a computed value out\n\n    style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n    ret = style.pixelLeft + PX; // Revert the changed values\n\n    style[LEFT] = left;\n    elem[RUNTIME_STYLE][LEFT] = rsLeft;\n  }\n\n  return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n  getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n  if (dir === 'left') {\n    return option.useCssRight ? 'right' : dir;\n  }\n\n  return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n  if (dir === 'left') {\n    return 'right';\n  } else if (dir === 'right') {\n    return 'left';\n  } else if (dir === 'top') {\n    return 'bottom';\n  } else if (dir === 'bottom') {\n    return 'top';\n  }\n} // 设置 elem 相对 elem.ownerDocument 的坐标\n\n\nfunction setLeftTop(elem, offset, option) {\n  // set position first, in-case top/left are set even on static elem\n  if (css(elem, 'position') === 'static') {\n    elem.style.position = 'relative';\n  }\n\n  var presetH = -999;\n  var presetV = -999;\n  var horizontalProperty = getOffsetDirection('left', option);\n  var verticalProperty = getOffsetDirection('top', option);\n  var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty);\n  var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n  if (horizontalProperty !== 'left') {\n    presetH = 999;\n  }\n\n  if (verticalProperty !== 'top') {\n    presetV = 999;\n  }\n\n  var originalTransition = '';\n  var originalOffset = getOffset(elem);\n\n  if ('left' in offset || 'top' in offset) {\n    originalTransition = getTransitionProperty(elem) || '';\n    setTransitionProperty(elem, 'none');\n  }\n\n  if ('left' in offset) {\n    elem.style[oppositeHorizontalProperty] = '';\n    elem.style[horizontalProperty] = \"\".concat(presetH, \"px\");\n  }\n\n  if ('top' in offset) {\n    elem.style[oppositeVerticalProperty] = '';\n    elem.style[verticalProperty] = \"\".concat(presetV, \"px\");\n  } // force relayout\n\n\n  forceRelayout(elem);\n  var old = getOffset(elem);\n  var originalStyle = {};\n\n  for (var key in offset) {\n    if (offset.hasOwnProperty(key)) {\n      var dir = getOffsetDirection(key, option);\n      var preset = key === 'left' ? presetH : presetV;\n      var off = originalOffset[key] - old[key];\n\n      if (dir === key) {\n        originalStyle[dir] = preset + off;\n      } else {\n        originalStyle[dir] = preset - off;\n      }\n    }\n  }\n\n  css(elem, originalStyle); // force relayout\n\n  forceRelayout(elem);\n\n  if ('left' in offset || 'top' in offset) {\n    setTransitionProperty(elem, originalTransition);\n  }\n\n  var ret = {};\n\n  for (var _key in offset) {\n    if (offset.hasOwnProperty(_key)) {\n      var _dir = getOffsetDirection(_key, option);\n\n      var _off = offset[_key] - originalOffset[_key];\n\n      if (_key === _dir) {\n        ret[_dir] = originalStyle[_dir] + _off;\n      } else {\n        ret[_dir] = originalStyle[_dir] - _off;\n      }\n    }\n  }\n\n  css(elem, ret);\n}\n\nfunction setTransform$1(elem, offset) {\n  var originalOffset = getOffset(elem);\n  var originalXY = getTransformXY(elem);\n  var resultXY = {\n    x: originalXY.x,\n    y: originalXY.y\n  };\n\n  if ('left' in offset) {\n    resultXY.x = originalXY.x + offset.left - originalOffset.left;\n  }\n\n  if ('top' in offset) {\n    resultXY.y = originalXY.y + offset.top - originalOffset.top;\n  }\n\n  setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n  if (option.ignoreShake) {\n    var oriOffset = getOffset(elem);\n    var oLeft = oriOffset.left.toFixed(0);\n    var oTop = oriOffset.top.toFixed(0);\n    var tLeft = offset.left.toFixed(0);\n    var tTop = offset.top.toFixed(0);\n\n    if (oLeft === tLeft && oTop === tTop) {\n      return;\n    }\n  }\n\n  if (option.useCssRight || option.useCssBottom) {\n    setLeftTop(elem, offset, option);\n  } else if (option.useCssTransform && getTransformName() in document.body.style) {\n    setTransform$1(elem, offset);\n  } else {\n    setLeftTop(elem, offset, option);\n  }\n}\n\nfunction each(arr, fn) {\n  for (var i = 0; i < arr.length; i++) {\n    fn(arr[i]);\n  }\n}\n\nfunction isBorderBoxFn(elem) {\n  return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n  var old = {};\n  var style = elem.style;\n  var name; // Remember the old values, and insert the new ones\n\n  for (name in options) {\n    if (options.hasOwnProperty(name)) {\n      old[name] = style[name];\n      style[name] = options[name];\n    }\n  }\n\n  callback.call(elem); // Revert the old values\n\n  for (name in options) {\n    if (options.hasOwnProperty(name)) {\n      style[name] = old[name];\n    }\n  }\n}\n\nfunction getPBMWidth(elem, props, which) {\n  var value = 0;\n  var prop;\n  var j;\n  var i;\n\n  for (j = 0; j < props.length; j++) {\n    prop = props[j];\n\n    if (prop) {\n      for (i = 0; i < which.length; i++) {\n        var cssProp = void 0;\n\n        if (prop === 'border') {\n          cssProp = \"\".concat(prop).concat(which[i], \"Width\");\n        } else {\n          cssProp = prop + which[i];\n        }\n\n        value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n      }\n    }\n  }\n\n  return value;\n}\n\nvar domUtils = {\n  getParent: function getParent(element) {\n    var parent = element;\n\n    do {\n      if (parent.nodeType === 11 && parent.host) {\n        parent = parent.host;\n      } else {\n        parent = parent.parentNode;\n      }\n    } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n\n    return parent;\n  }\n};\neach(['Width', 'Height'], function (name) {\n  domUtils[\"doc\".concat(name)] = function (refWin) {\n    var d = refWin.document;\n    return Math.max( // firefox chrome documentElement.scrollHeight< body.scrollHeight\n    // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n    d.documentElement[\"scroll\".concat(name)], // quirks : documentElement.scrollHeight 最大等于可视窗口多一点？\n    d.body[\"scroll\".concat(name)], domUtils[\"viewport\".concat(name)](d));\n  };\n\n  domUtils[\"viewport\".concat(name)] = function (win) {\n    // pc browser includes scrollbar in window.innerWidth\n    var prop = \"client\".concat(name);\n    var doc = win.document;\n    var body = doc.body;\n    var documentElement = doc.documentElement;\n    var documentElementProp = documentElement[prop]; // 标准模式取 documentElement\n    // backcompat 取 body\n\n    return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n  };\n});\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra]  'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\n\nfunction getWH(elem, name, ex) {\n  var extra = ex;\n\n  if (isWindow(elem)) {\n    return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n  } else if (elem.nodeType === 9) {\n    return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n  }\n\n  var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n  var borderBoxValue = name === 'width' ? Math.floor(elem.getBoundingClientRect().width) : Math.floor(elem.getBoundingClientRect().height);\n  var isBorderBox = isBorderBoxFn(elem);\n  var cssBoxValue = 0;\n\n  if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {\n    borderBoxValue = undefined; // Fall back to computed then un computed css if necessary\n\n    cssBoxValue = getComputedStyleX(elem, name);\n\n    if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {\n      cssBoxValue = elem.style[name] || 0;\n    } // Normalize '', auto, and prepare for extra\n\n\n    cssBoxValue = parseFloat(cssBoxValue) || 0;\n  }\n\n  if (extra === undefined) {\n    extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n  }\n\n  var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n  var val = borderBoxValue || cssBoxValue;\n\n  if (extra === CONTENT_INDEX) {\n    if (borderBoxValueOrIsBorderBox) {\n      return val - getPBMWidth(elem, ['border', 'padding'], which);\n    }\n\n    return cssBoxValue;\n  } else if (borderBoxValueOrIsBorderBox) {\n    if (extra === BORDER_INDEX) {\n      return val;\n    }\n\n    return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which));\n  }\n\n  return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nvar cssShow = {\n  position: 'absolute',\n  visibility: 'hidden',\n  display: 'block'\n}; // fix #119 : https://github.com/kissyteam/kissy/issues/119\n\nfunction getWHIgnoreDisplay() {\n  for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  var val;\n  var elem = args[0]; // in case elem is window\n  // elem.offsetWidth === undefined\n\n  if (elem.offsetWidth !== 0) {\n    val = getWH.apply(undefined, args);\n  } else {\n    swap(elem, cssShow, function () {\n      val = getWH.apply(undefined, args);\n    });\n  }\n\n  return val;\n}\n\neach(['width', 'height'], function (name) {\n  var first = name.charAt(0).toUpperCase() + name.slice(1);\n\n  domUtils[\"outer\".concat(first)] = function (el, includeMargin) {\n    return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n  };\n\n  var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n  domUtils[name] = function (elem, v) {\n    var val = v;\n\n    if (val !== undefined) {\n      if (elem) {\n        var isBorderBox = isBorderBoxFn(elem);\n\n        if (isBorderBox) {\n          val += getPBMWidth(elem, ['padding', 'border'], which);\n        }\n\n        return css(elem, name, val);\n      }\n\n      return undefined;\n    }\n\n    return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n  };\n});\n\nfunction mix(to, from) {\n  for (var i in from) {\n    if (from.hasOwnProperty(i)) {\n      to[i] = from[i];\n    }\n  }\n\n  return to;\n}\n\nvar utils = {\n  getWindow: function getWindow(node) {\n    if (node && node.document && node.setTimeout) {\n      return node;\n    }\n\n    var doc = node.ownerDocument || node;\n    return doc.defaultView || doc.parentWindow;\n  },\n  getDocument: getDocument,\n  offset: function offset(el, value, option) {\n    if (typeof value !== 'undefined') {\n      setOffset(el, value, option || {});\n    } else {\n      return getOffset(el);\n    }\n  },\n  isWindow: isWindow,\n  each: each,\n  css: css,\n  clone: function clone(obj) {\n    var i;\n    var ret = {};\n\n    for (i in obj) {\n      if (obj.hasOwnProperty(i)) {\n        ret[i] = obj[i];\n      }\n    }\n\n    var overflow = obj.overflow;\n\n    if (overflow) {\n      for (i in obj) {\n        if (obj.hasOwnProperty(i)) {\n          ret.overflow[i] = obj.overflow[i];\n        }\n      }\n    }\n\n    return ret;\n  },\n  mix: mix,\n  getWindowScrollLeft: function getWindowScrollLeft(w) {\n    return getScrollLeft(w);\n  },\n  getWindowScrollTop: function getWindowScrollTop(w) {\n    return getScrollTop(w);\n  },\n  merge: function merge() {\n    var ret = {};\n\n    for (var i = 0; i < arguments.length; i++) {\n      utils.mix(ret, i < 0 || arguments.length <= i ? undefined : arguments[i]);\n    }\n\n    return ret;\n  },\n  viewportWidth: 0,\n  viewportHeight: 0\n};\nmix(utils, domUtils);\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\n\nvar getParent = utils.getParent;\n\nfunction getOffsetParent(element) {\n  if (utils.isWindow(element) || element.nodeType === 9) {\n    return null;\n  } // ie 这个也不是完全可行\n\n  /*\n   <div style=\"width: 50px;height: 100px;overflow: hidden\">\n   <div style=\"width: 50px;height: 100px;position: relative;\" id=\"d6\">\n   元素 6 高 100px 宽 50px<br/>\n   </div>\n   </div>\n   */\n  // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n  //  In other browsers it only includes elements with position absolute, relative or\n  // fixed, not elements with overflow set to auto or scroll.\n  //        if (UA.ie && ieMode < 8) {\n  //            return element.offsetParent;\n  //        }\n  // 统一的 offsetParent 方法\n\n\n  var doc = utils.getDocument(element);\n  var body = doc.body;\n  var parent;\n  var positionStyle = utils.css(element, 'position');\n  var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n  if (!skipStatic) {\n    return element.nodeName.toLowerCase() === 'html' ? null : getParent(element);\n  }\n\n  for (parent = getParent(element); parent && parent !== body && parent.nodeType !== 9; parent = getParent(parent)) {\n    positionStyle = utils.css(parent, 'position');\n\n    if (positionStyle !== 'static') {\n      return parent;\n    }\n  }\n\n  return null;\n}\n\nvar getParent$1 = utils.getParent;\nfunction isAncestorFixed(element) {\n  if (utils.isWindow(element) || element.nodeType === 9) {\n    return false;\n  }\n\n  var doc = utils.getDocument(element);\n  var body = doc.body;\n  var parent = null;\n\n  for (parent = getParent$1(element); // 修复元素位于 document.documentElement 下导致崩溃问题\n  parent && parent !== body && parent !== doc; parent = getParent$1(parent)) {\n    var positionStyle = utils.css(parent, 'position');\n\n    if (positionStyle === 'fixed') {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n * 获得元素的显示部分的区域\n */\n\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n  var visibleRect = {\n    left: 0,\n    right: Infinity,\n    top: 0,\n    bottom: Infinity\n  };\n  var el = getOffsetParent(element);\n  var doc = utils.getDocument(element);\n  var win = doc.defaultView || doc.parentWindow;\n  var body = doc.body;\n  var documentElement = doc.documentElement; // Determine the size of the visible rect by climbing the dom accounting for\n  // all scrollable containers.\n\n  while (el) {\n    // clientWidth is zero for inline block elements in ie.\n    if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) && // body may have overflow set on it, yet we still get the entire\n    // viewport. In some browsers, el.offsetParent may be\n    // document.documentElement, so check for that too.\n    el !== body && el !== documentElement && utils.css(el, 'overflow') !== 'visible') {\n      var pos = utils.offset(el); // add border\n\n      pos.left += el.clientLeft;\n      pos.top += el.clientTop;\n      visibleRect.top = Math.max(visibleRect.top, pos.top);\n      visibleRect.right = Math.min(visibleRect.right, // consider area without scrollBar\n      pos.left + el.clientWidth);\n      visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight);\n      visibleRect.left = Math.max(visibleRect.left, pos.left);\n    } else if (el === body || el === documentElement) {\n      break;\n    }\n\n    el = getOffsetParent(el);\n  } // Set element position to fixed\n  // make sure absolute element itself don't affect it's visible area\n  // https://github.com/ant-design/ant-design/issues/7601\n\n\n  var originalPosition = null;\n\n  if (!utils.isWindow(element) && element.nodeType !== 9) {\n    originalPosition = element.style.position;\n    var position = utils.css(element, 'position');\n\n    if (position === 'absolute') {\n      element.style.position = 'fixed';\n    }\n  }\n\n  var scrollX = utils.getWindowScrollLeft(win);\n  var scrollY = utils.getWindowScrollTop(win);\n  var viewportWidth = utils.viewportWidth(win);\n  var viewportHeight = utils.viewportHeight(win);\n  var documentWidth = documentElement.scrollWidth;\n  var documentHeight = documentElement.scrollHeight; // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n  // We should cut this ourself.\n\n  var bodyStyle = window.getComputedStyle(body);\n\n  if (bodyStyle.overflowX === 'hidden') {\n    documentWidth = win.innerWidth;\n  }\n\n  if (bodyStyle.overflowY === 'hidden') {\n    documentHeight = win.innerHeight;\n  } // Reset element position after calculate the visible area\n\n\n  if (element.style) {\n    element.style.position = originalPosition;\n  }\n\n  if (alwaysByViewport || isAncestorFixed(element)) {\n    // Clip by viewport's size.\n    visibleRect.left = Math.max(visibleRect.left, scrollX);\n    visibleRect.top = Math.max(visibleRect.top, scrollY);\n    visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n    visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n  } else {\n    // Clip by document's size.\n    var maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n    visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n    var maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n    visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n  }\n\n  return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;\n}\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n  var pos = utils.clone(elFuturePos);\n  var size = {\n    width: elRegion.width,\n    height: elRegion.height\n  };\n\n  if (overflow.adjustX && pos.left < visibleRect.left) {\n    pos.left = visibleRect.left;\n  } // Left edge inside and right edge outside viewport, try to resize it.\n\n\n  if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {\n    size.width -= pos.left + size.width - visibleRect.right;\n  } // Right edge outside viewport, try to move it.\n\n\n  if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n    // 保证左边界和可视区域左边界对齐\n    pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n  } // Top edge outside viewport, try to move it.\n\n\n  if (overflow.adjustY && pos.top < visibleRect.top) {\n    pos.top = visibleRect.top;\n  } // Top edge inside and bottom edge outside viewport, try to resize it.\n\n\n  if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {\n    size.height -= pos.top + size.height - visibleRect.bottom;\n  } // Bottom edge outside viewport, try to move it.\n\n\n  if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n    // 保证上边界和可视区域上边界对齐\n    pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n  }\n\n  return utils.mix(pos, size);\n}\n\nfunction getRegion(node) {\n  var offset;\n  var w;\n  var h;\n\n  if (!utils.isWindow(node) && node.nodeType !== 9) {\n    offset = utils.offset(node);\n    w = utils.outerWidth(node);\n    h = utils.outerHeight(node);\n  } else {\n    var win = utils.getWindow(node);\n    offset = {\n      left: utils.getWindowScrollLeft(win),\n      top: utils.getWindowScrollTop(win)\n    };\n    w = utils.viewportWidth(win);\n    h = utils.viewportHeight(win);\n  }\n\n  offset.width = w;\n  offset.height = h;\n  return offset;\n}\n\n/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\nfunction getAlignOffset(region, align) {\n  var V = align.charAt(0);\n  var H = align.charAt(1);\n  var w = region.width;\n  var h = region.height;\n  var x = region.left;\n  var y = region.top;\n\n  if (V === 'c') {\n    y += h / 2;\n  } else if (V === 'b') {\n    y += h;\n  }\n\n  if (H === 'c') {\n    x += w / 2;\n  } else if (H === 'r') {\n    x += w;\n  }\n\n  return {\n    left: x,\n    top: y\n  };\n}\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n  var p1 = getAlignOffset(refNodeRegion, points[1]);\n  var p2 = getAlignOffset(elRegion, points[0]);\n  var diff = [p2.left - p1.left, p2.top - p1.top];\n  return {\n    left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n    top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1])\n  };\n}\n\n/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n  return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right;\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n  return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n  return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n  return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;\n}\n\nfunction flip(points, reg, map) {\n  var ret = [];\n  utils.each(points, function (p) {\n    ret.push(p.replace(reg, function (m) {\n      return map[m];\n    }));\n  });\n  return ret;\n}\n\nfunction flipOffset(offset, index) {\n  offset[index] = -offset[index];\n  return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n  var n;\n\n  if (/%$/.test(str)) {\n    n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen;\n  } else {\n    n = parseInt(str, 10);\n  }\n\n  return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n  offset[0] = convertOffset(offset[0], el.width);\n  offset[1] = convertOffset(offset[1], el.height);\n}\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\n\n\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n  var points = align.points;\n  var offset = align.offset || [0, 0];\n  var targetOffset = align.targetOffset || [0, 0];\n  var overflow = align.overflow;\n  var source = align.source || el;\n  offset = [].concat(offset);\n  targetOffset = [].concat(targetOffset);\n  overflow = overflow || {};\n  var newOverflowCfg = {};\n  var fail = 0;\n  var alwaysByViewport = !!(overflow && overflow.alwaysByViewport); // 当前节点可以被放置的显示区域\n\n  var visibleRect = getVisibleRectForElement(source, alwaysByViewport); // 当前节点所占的区域, left/top/width/height\n\n  var elRegion = getRegion(source); // 将 offset 转换成数值，支持百分比\n\n  normalizeOffset(offset, elRegion);\n  normalizeOffset(targetOffset, tgtRegion); // 当前节点将要被放置的位置\n\n  var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset); // 当前节点将要所处的区域\n\n  var newElRegion = utils.merge(elRegion, elFuturePos); // 如果可视区域不能完全放置当前节点时允许调整\n\n  if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTgtRegionVisible) {\n    if (overflow.adjustX) {\n      // 如果横向不能放下\n      if (isFailX(elFuturePos, elRegion, visibleRect)) {\n        // 对齐位置反下\n        var newPoints = flip(points, /[lr]/gi, {\n          l: 'r',\n          r: 'l'\n        }); // 偏移量也反下\n\n        var newOffset = flipOffset(offset, 0);\n        var newTargetOffset = flipOffset(targetOffset, 0);\n        var newElFuturePos = getElFuturePos(elRegion, tgtRegion, newPoints, newOffset, newTargetOffset);\n\n        if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n          fail = 1;\n          points = newPoints;\n          offset = newOffset;\n          targetOffset = newTargetOffset;\n        }\n      }\n    }\n\n    if (overflow.adjustY) {\n      // 如果纵向不能放下\n      if (isFailY(elFuturePos, elRegion, visibleRect)) {\n        // 对齐位置反下\n        var _newPoints = flip(points, /[tb]/gi, {\n          t: 'b',\n          b: 't'\n        }); // 偏移量也反下\n\n\n        var _newOffset = flipOffset(offset, 1);\n\n        var _newTargetOffset = flipOffset(targetOffset, 1);\n\n        var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset);\n\n        if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {\n          fail = 1;\n          points = _newPoints;\n          offset = _newOffset;\n          targetOffset = _newTargetOffset;\n        }\n      }\n    } // 如果失败，重新计算当前节点将要被放置的位置\n\n\n    if (fail) {\n      elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);\n      utils.mix(newElRegion, elFuturePos);\n    }\n\n    var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n    var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect); // 检查反下后的位置是否可以放下了，如果仍然放不下：\n    // 1. 复原修改过的定位参数\n\n    if (isStillFailX || isStillFailY) {\n      var _newPoints2 = points; // 重置对应部分的翻转逻辑\n\n      if (isStillFailX) {\n        _newPoints2 = flip(points, /[lr]/gi, {\n          l: 'r',\n          r: 'l'\n        });\n      }\n\n      if (isStillFailY) {\n        _newPoints2 = flip(points, /[tb]/gi, {\n          t: 'b',\n          b: 't'\n        });\n      }\n\n      points = _newPoints2;\n      offset = align.offset || [0, 0];\n      targetOffset = align.targetOffset || [0, 0];\n    } // 2. 只有指定了可以调整当前方向才调整\n\n\n    newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n    newOverflowCfg.adjustY = overflow.adjustY && isStillFailY; // 确实要调整，甚至可能会调整高度宽度\n\n    if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n      newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);\n    }\n  } // need judge to in case set fixed with in css on height auto element\n\n\n  if (newElRegion.width !== elRegion.width) {\n    utils.css(source, 'width', utils.width(source) + newElRegion.width - elRegion.width);\n  }\n\n  if (newElRegion.height !== elRegion.height) {\n    utils.css(source, 'height', utils.height(source) + newElRegion.height - elRegion.height);\n  } // https://github.com/kissyteam/kissy/issues/190\n  // 相对于屏幕位置没变，而 left/top 变了\n  // 例如 <div 'relative'><el absolute></div>\n\n\n  utils.offset(source, {\n    left: newElRegion.left,\n    top: newElRegion.top\n  }, {\n    useCssRight: align.useCssRight,\n    useCssBottom: align.useCssBottom,\n    useCssTransform: align.useCssTransform,\n    ignoreShake: align.ignoreShake\n  });\n  return {\n    points: points,\n    offset: offset,\n    targetOffset: targetOffset,\n    overflow: newOverflowCfg\n  };\n}\n/**\n *  2012-04-26 yiminghe@gmail.com\n *   - 优化智能对齐算法\n *   - 慎用 resizeXX\n *\n *  2011-07-13 yiminghe@gmail.com note:\n *   - 增加智能对齐，以及大小调整选项\n **/\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n  var visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n  var targetRegion = getRegion(target);\n  return !visibleRect || targetRegion.left + targetRegion.width <= visibleRect.left || targetRegion.top + targetRegion.height <= visibleRect.top || targetRegion.left >= visibleRect.right || targetRegion.top >= visibleRect.bottom;\n}\n\nfunction alignElement(el, refNode, align) {\n  var target = align.target || refNode;\n  var refNodeRegion = getRegion(target);\n  var isTargetNotOutOfVisible = !isOutOfVisibleRect(target, align.overflow && align.overflow.alwaysByViewport);\n  return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n  var pageX;\n  var pageY;\n  var doc = utils.getDocument(el);\n  var win = doc.defaultView || doc.parentWindow;\n  var scrollX = utils.getWindowScrollLeft(win);\n  var scrollY = utils.getWindowScrollTop(win);\n  var viewportWidth = utils.viewportWidth(win);\n  var viewportHeight = utils.viewportHeight(win);\n\n  if ('pageX' in tgtPoint) {\n    pageX = tgtPoint.pageX;\n  } else {\n    pageX = scrollX + tgtPoint.clientX;\n  }\n\n  if ('pageY' in tgtPoint) {\n    pageY = tgtPoint.pageY;\n  } else {\n    pageY = scrollY + tgtPoint.clientY;\n  }\n\n  var tgtRegion = {\n    left: pageX,\n    top: pageY,\n    width: 0,\n    height: 0\n  };\n  var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight; // Provide default target point\n\n  var points = [align.points[0], 'cc'];\n  return doAlign(el, tgtRegion, _objectSpread2(_objectSpread2({}, align), {}, {\n    points: points\n  }), pointInView);\n}\n\n/* harmony default export */ var dist_web = (alignElement);\n\n\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/Dom/addEventListener.js\nvar addEventListener = __webpack_require__(76);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/Dom/contains.js\nvar contains = __webpack_require__(191);\n\n// CONCATENATED MODULE: ./node_modules/rc-align/es/util.js\n\n\nfunction buffer(fn, ms) {\n  var timer = void 0;\n\n  function clear() {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  }\n\n  function bufferFn() {\n    clear();\n    timer = setTimeout(fn, ms);\n  }\n\n  bufferFn.clear = clear;\n\n  return bufferFn;\n}\n\nfunction isSamePoint(prev, next) {\n  if (prev === next) return true;\n  if (!prev || !next) return false;\n\n  if ('pageX' in next && 'pageY' in next) {\n    return prev.pageX === next.pageX && prev.pageY === next.pageY;\n  }\n\n  if ('clientX' in next && 'clientY' in next) {\n    return prev.clientX === next.clientX && prev.clientY === next.clientY;\n  }\n\n  return false;\n}\n\nfunction util_isWindow(obj) {\n  return obj && typeof obj === 'object' && obj.window === obj;\n}\n\nfunction isSimilarValue(val1, val2) {\n  var int1 = Math.floor(val1);\n  var int2 = Math.floor(val2);\n  return Math.abs(int1 - int2) <= 1;\n}\n\nfunction restoreFocus(activeElement, container) {\n  // Focus back if is in the container\n  if (activeElement !== document.activeElement && Object(contains[\"a\" /* default */])(container, activeElement)) {\n    activeElement.focus();\n  }\n}\n// CONCATENATED MODULE: ./node_modules/rc-align/es/Align.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getElement(func) {\n  if (typeof func !== 'function' || !func) return null;\n  return func();\n}\n\nfunction getPoint(point) {\n  if (typeof point !== 'object' || !point) return null;\n  return point;\n}\n\nvar Align_Align = function (_Component) {\n  inherits_default()(Align, _Component);\n\n  function Align() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    classCallCheck_default()(this, Align);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = possibleConstructorReturn_default()(this, (_ref = Align.__proto__ || Object.getPrototypeOf(Align)).call.apply(_ref, [this].concat(args))), _this), _this.forceAlign = function () {\n      var _this$props = _this.props,\n          disabled = _this$props.disabled,\n          target = _this$props.target,\n          align = _this$props.align,\n          onAlign = _this$props.onAlign;\n\n      if (!disabled && target) {\n        var source = external_react_dom_default.a.findDOMNode(_this);\n\n        var result = void 0;\n        var element = getElement(target);\n        var point = getPoint(target);\n\n        // IE lose focus after element realign\n        // We should record activeElement and restore later\n        var activeElement = document.activeElement;\n\n        if (element) {\n          result = alignElement(source, element, align);\n        } else if (point) {\n          result = alignPoint(source, point, align);\n        }\n\n        restoreFocus(activeElement, source);\n\n        if (onAlign) {\n          onAlign(source, result);\n        }\n      }\n    }, _temp), possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  createClass_default()(Align, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var props = this.props;\n      // if parent ref not attached .... use document.getElementById\n      this.forceAlign();\n      if (!props.disabled && props.monitorWindowResize) {\n        this.startMonitorWindowResize();\n      }\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps) {\n      var reAlign = false;\n      var props = this.props;\n\n      if (!props.disabled) {\n        var source = external_react_dom_default.a.findDOMNode(this);\n        var sourceRect = source ? source.getBoundingClientRect() : null;\n\n        if (prevProps.disabled) {\n          reAlign = true;\n        } else {\n          var lastElement = getElement(prevProps.target);\n          var currentElement = getElement(props.target);\n          var lastPoint = getPoint(prevProps.target);\n          var currentPoint = getPoint(props.target);\n\n          if (util_isWindow(lastElement) && util_isWindow(currentElement)) {\n            // Skip if is window\n            reAlign = false;\n          } else if (lastElement !== currentElement || // Element change\n          lastElement && !currentElement && currentPoint || // Change from element to point\n          lastPoint && currentPoint && currentElement || // Change from point to element\n          currentPoint && !isSamePoint(lastPoint, currentPoint)) {\n            reAlign = true;\n          }\n\n          // If source element size changed\n          var preRect = this.sourceRect || {};\n          if (!reAlign && source && (!isSimilarValue(preRect.width, sourceRect.width) || !isSimilarValue(preRect.height, sourceRect.height))) {\n            reAlign = true;\n          }\n        }\n\n        this.sourceRect = sourceRect;\n      }\n\n      if (reAlign) {\n        this.forceAlign();\n      }\n\n      if (props.monitorWindowResize && !props.disabled) {\n        this.startMonitorWindowResize();\n      } else {\n        this.stopMonitorWindowResize();\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.stopMonitorWindowResize();\n    }\n  }, {\n    key: 'startMonitorWindowResize',\n    value: function startMonitorWindowResize() {\n      if (!this.resizeHandler) {\n        this.bufferMonitor = buffer(this.forceAlign, this.props.monitorBufferTime);\n        this.resizeHandler = Object(addEventListener[\"a\" /* default */])(window, 'resize', this.bufferMonitor);\n      }\n    }\n  }, {\n    key: 'stopMonitorWindowResize',\n    value: function stopMonitorWindowResize() {\n      if (this.resizeHandler) {\n        this.bufferMonitor.clear();\n        this.resizeHandler.remove();\n        this.resizeHandler = null;\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          childrenProps = _props.childrenProps,\n          children = _props.children;\n\n      var child = external_react_default.a.Children.only(children);\n      if (childrenProps) {\n        var newProps = {};\n        var propList = Object.keys(childrenProps);\n        propList.forEach(function (prop) {\n          newProps[prop] = _this2.props[childrenProps[prop]];\n        });\n\n        return external_react_default.a.cloneElement(child, newProps);\n      }\n      return child;\n    }\n  }]);\n\n  return Align;\n}(external_react_[\"Component\"]);\n\nAlign_Align.propTypes = {\n  childrenProps: prop_types_default.a.object,\n  align: prop_types_default.a.object.isRequired,\n  target: prop_types_default.a.oneOfType([prop_types_default.a.func, prop_types_default.a.shape({\n    clientX: prop_types_default.a.number,\n    clientY: prop_types_default.a.number,\n    pageX: prop_types_default.a.number,\n    pageY: prop_types_default.a.number\n  })]),\n  onAlign: prop_types_default.a.func,\n  monitorBufferTime: prop_types_default.a.number,\n  monitorWindowResize: prop_types_default.a.bool,\n  disabled: prop_types_default.a.bool,\n  children: prop_types_default.a.any\n};\nAlign_Align.defaultProps = {\n  target: function target() {\n    return window;\n  },\n  monitorBufferTime: 50,\n  monitorWindowResize: false,\n  disabled: false\n};\n\n\n/* harmony default export */ var es_Align = (Align_Align);\n// CONCATENATED MODULE: ./node_modules/rc-align/es/index.js\n// export this package's api\n\n\n/* harmony default export */ var es = __webpack_exports__[\"a\"] = (es_Align);\n\n/***/ }),\n/* 465 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(195);\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n/* 466 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(38);\nvar isCallable = __webpack_require__(43);\nvar isObject = __webpack_require__(39);\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 $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n/* 467 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar fails = __webpack_require__(16);\nvar createElement = __webpack_require__(279);\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\n\n/***/ }),\n/* 468 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar fails = __webpack_require__(16);\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-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n\n\n/***/ }),\n/* 469 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar isCallable = __webpack_require__(43);\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n\n\n/***/ }),\n/* 470 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\nvar hasOwn = __webpack_require__(44);\nvar toIndexedObject = __webpack_require__(92);\nvar indexOf = __webpack_require__(230).indexOf;\nvar hiddenKeys = __webpack_require__(229);\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\n\n/***/ }),\n/* 471 */\n/***/ (function(module, exports) {\n\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-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n\n\n/***/ }),\n/* 472 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(59);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n/* 473 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(41);\n\nexports.f = wellKnownSymbol;\n\n\n/***/ }),\n/* 474 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\n\nmodule.exports = global;\n\n\n/***/ }),\n/* 475 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(38);\nvar getBuiltIn = __webpack_require__(59);\nvar wellKnownSymbol = __webpack_require__(41);\nvar defineBuiltIn = __webpack_require__(62);\n\nmodule.exports = function () {\n  var Symbol = getBuiltIn('Symbol');\n  var SymbolPrototype = Symbol && Symbol.prototype;\n  var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n  var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n  if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n    // `Symbol.prototype[@@toPrimitive]` method\n    // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n    // eslint-disable-next-line no-unused-vars -- required for .length\n    defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n      return call(valueOf, this);\n    }, { arity: 1 });\n  }\n};\n\n\n/***/ }),\n/* 476 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_SYMBOL = __webpack_require__(195);\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n\n\n/***/ }),\n/* 477 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar getBuiltIn = __webpack_require__(59);\nvar apply = __webpack_require__(114);\nvar call = __webpack_require__(38);\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\nvar isArray = __webpack_require__(149);\nvar isCallable = __webpack_require__(43);\nvar isObject = __webpack_require__(39);\nvar isSymbol = __webpack_require__(168);\nvar arraySlice = __webpack_require__(170);\nvar NATIVE_SYMBOL = __webpack_require__(195);\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n  var symbol = getBuiltIn('Symbol')();\n  // MS Edge converts symbol values to JSON as {}\n  return $stringify([symbol]) != '[null]'\n    // WebKit converts symbol values to JSON as null\n    || $stringify({ a: symbol }) != '{}'\n    // V8 throws on boxed symbols\n    || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n  return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n    || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n  var args = arraySlice(arguments);\n  var $replacer = replacer;\n  if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n  if (!isArray(replacer)) replacer = function (key, value) {\n    if (isCallable($replacer)) value = call($replacer, this, key, value);\n    if (!isSymbol(value)) return value;\n  };\n  args[1] = replacer;\n  return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n  var prev = charAt(string, offset - 1);\n  var next = charAt(string, offset + 1);\n  if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n    return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n  } return match;\n};\n\nif ($stringify) {\n  // `JSON.stringify` method\n  // https://tc39.es/ecma262/#sec-json.stringify\n  $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n      return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n    }\n  });\n}\n\n\n/***/ }),\n/* 478 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(59);\nvar hasOwn = __webpack_require__(44);\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar isPrototypeOf = __webpack_require__(113);\nvar setPrototypeOf = __webpack_require__(124);\nvar copyConstructorProperties = __webpack_require__(281);\nvar proxyAccessor = __webpack_require__(480);\nvar inheritIfRequired = __webpack_require__(200);\nvar normalizeStringArgument = __webpack_require__(235);\nvar installErrorCause = __webpack_require__(481);\nvar clearErrorStack = __webpack_require__(283);\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(366);\nvar DESCRIPTORS = __webpack_require__(30);\nvar IS_PURE = __webpack_require__(69);\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n  var STACK_TRACE_LIMIT = 'stackTraceLimit';\n  var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n  var path = FULL_NAME.split('.');\n  var ERROR_NAME = path[path.length - 1];\n  var OriginalError = getBuiltIn.apply(null, path);\n\n  if (!OriginalError) return;\n\n  var OriginalErrorPrototype = OriginalError.prototype;\n\n  // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n  if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n  if (!FORCED) return OriginalError;\n\n  var BaseError = getBuiltIn('Error');\n\n  var WrappedError = wrapper(function (a, b) {\n    var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n    var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n    if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n    if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(result, 'stack', clearErrorStack(result.stack, 2));\n    if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n    if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n    return result;\n  });\n\n  WrappedError.prototype = OriginalErrorPrototype;\n\n  if (ERROR_NAME !== 'Error') {\n    if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n    else copyConstructorProperties(WrappedError, BaseError, { name: true });\n  } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n    proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n    proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n  }\n\n  copyConstructorProperties(WrappedError, OriginalError);\n\n  if (!IS_PURE) try {\n    // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n    if (OriginalErrorPrototype.name !== ERROR_NAME) {\n      createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n    }\n    OriginalErrorPrototype.constructor = WrappedError;\n  } catch (error) { /* empty */ }\n\n  return WrappedError;\n};\n\n\n/***/ }),\n/* 479 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(43);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n/***/ }),\n/* 480 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(48).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\n\n/***/ }),\n/* 481 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(39);\nvar createNonEnumerableProperty = __webpack_require__(94);\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n  if (isObject(options) && 'cause' in options) {\n    createNonEnumerableProperty(O, 'cause', options.cause);\n  }\n};\n\n\n/***/ }),\n/* 482 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar fails = __webpack_require__(16);\nvar anObject = __webpack_require__(35);\nvar create = __webpack_require__(101);\nvar normalizeStringArgument = __webpack_require__(235);\n\nvar nativeErrorToString = Error.prototype.toString;\n\nvar INCORRECT_TO_STRING = fails(function () {\n  if (DESCRIPTORS) {\n    // Chrome 32- incorrectly call accessor\n    // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n    var object = create(Object.defineProperty({}, 'name', { get: function () {\n      return this === object;\n    } }));\n    if (nativeErrorToString.call(object) !== 'true') return true;\n  }\n  // FF10- does not properly handle non-strings\n  return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1'\n    // IE8 does not properly handle defaults\n    || nativeErrorToString.call({}) !== 'Error';\n});\n\nmodule.exports = INCORRECT_TO_STRING ? function toString() {\n  var O = anObject(this);\n  var name = normalizeStringArgument(O.name, 'Error');\n  var message = normalizeStringArgument(O.message);\n  return !name ? message : !message ? name : name + ': ' + message;\n} : nativeErrorToString;\n\n\n/***/ }),\n/* 483 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(38);\nvar anObject = __webpack_require__(35);\nvar getMethod = __webpack_require__(136);\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\n\n/***/ }),\n/* 484 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(47);\nvar toAbsoluteIndex = __webpack_require__(137);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar deletePropertyOrThrow = __webpack_require__(285);\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-x/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\n\n/***/ }),\n/* 485 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $find = __webpack_require__(84).find;\nvar addToUnscopables = __webpack_require__(119);\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\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\n\n/***/ }),\n/* 486 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar isArray = __webpack_require__(149);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar doesNotExceedSafeInteger = __webpack_require__(238);\nvar bind = __webpack_require__(118);\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#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\n\n/***/ }),\n/* 487 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $forEach = __webpack_require__(84).forEach;\nvar arrayMethodIsStrict = __webpack_require__(140);\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-x/no-array-prototype-foreach -- safe\n} : [].forEach;\n\n\n/***/ }),\n/* 488 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(118);\nvar call = __webpack_require__(38);\nvar toObject = __webpack_require__(47);\nvar callWithSafeIterationClosing = __webpack_require__(730);\nvar isArrayIteratorMethod = __webpack_require__(368);\nvar isConstructor = __webpack_require__(199);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar createProperty = __webpack_require__(139);\nvar getIterator = __webpack_require__(284);\nvar getIteratorMethod = __webpack_require__(237);\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    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\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\n\n/***/ }),\n/* 489 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar $indexOf = __webpack_require__(230).indexOf;\nvar arrayMethodIsStrict = __webpack_require__(140);\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\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\n\n/***/ }),\n/* 490 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar isArray = __webpack_require__(149);\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n\n\n/***/ }),\n/* 491 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(16);\nvar isCallable = __webpack_require__(43);\nvar isObject = __webpack_require__(39);\nvar create = __webpack_require__(101);\nvar getPrototypeOf = __webpack_require__(115);\nvar defineBuiltIn = __webpack_require__(62);\nvar wellKnownSymbol = __webpack_require__(41);\nvar IS_PURE = __webpack_require__(69);\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-x/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\n\n/***/ }),\n/* 492 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/* eslint-disable es-x/no-array-prototype-lastindexof -- safe */\nvar apply = __webpack_require__(114);\nvar toIndexedObject = __webpack_require__(92);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar arrayMethodIsStrict = __webpack_require__(140);\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  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\n\n/***/ }),\n/* 493 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(135);\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n\n\n/***/ }),\n/* 494 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar UA = __webpack_require__(135);\n\nmodule.exports = /MSIE|Trident/.test(UA);\n\n\n/***/ }),\n/* 495 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar toLength = __webpack_require__(100);\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n  if (it === undefined) return 0;\n  var number = toIntegerOrInfinity(it);\n  var length = toLength(number);\n  if (number !== length) throw $RangeError('Wrong length or index');\n  return length;\n};\n\n\n/***/ }),\n/* 496 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar fails = __webpack_require__(16);\nvar toObject = __webpack_require__(47);\nvar toPrimitive = __webpack_require__(278);\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\n\n/***/ }),\n/* 497 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar uncurryThis = __webpack_require__(20);\nvar aCallable = __webpack_require__(77);\nvar isObject = __webpack_require__(39);\nvar hasOwn = __webpack_require__(44);\nvar arraySlice = __webpack_require__(170);\nvar NATIVE_BIND = __webpack_require__(228);\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    for (var list = [], i = 0; 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\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\n\n/***/ }),\n/* 498 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true }, {\n  globalThis: global\n});\n\n\n/***/ }),\n/* 499 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar defineProperty = __webpack_require__(48).f;\nvar create = __webpack_require__(101);\nvar defineBuiltIns = __webpack_require__(241);\nvar bind = __webpack_require__(118);\nvar anInstance = __webpack_require__(127);\nvar isNullOrUndefined = __webpack_require__(93);\nvar iterate = __webpack_require__(125);\nvar defineIterator = __webpack_require__(370);\nvar setSpecies = __webpack_require__(201);\nvar DESCRIPTORS = __webpack_require__(30);\nvar fastKey = __webpack_require__(172).fastKey;\nvar InternalStateModule = __webpack_require__(73);\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        index: create(null),\n        first: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: undefined,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (DESCRIPTORS) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key == key) return entry;\n      }\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ Map, Set }.prototype.clear()` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.clear\n      // https://tc39.es/ecma262/#sec-set.prototype.clear\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\n        if (DESCRIPTORS) state.size = 0;\n        else that.size = 0;\n      },\n      // `{ Map, Set }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.delete\n      // https://tc39.es/ecma262/#sec-set.prototype.delete\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first == entry) state.first = next;\n          if (state.last == entry) state.last = prev;\n          if (DESCRIPTORS) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.foreach\n      // https://tc39.es/ecma262/#sec-set.prototype.foreach\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // `{ Map, Set}.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.has\n      // https://tc39.es/ecma262/#sec-set.prototype.has\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `Map.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.get\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // `Map.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.set\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // `Set.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-set.prototype.add\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return Constructor;\n  },\n  setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n    // https://tc39.es/ecma262/#sec-map.prototype.entries\n    // https://tc39.es/ecma262/#sec-map.prototype.keys\n    // https://tc39.es/ecma262/#sec-map.prototype.values\n    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n    // https://tc39.es/ecma262/#sec-set.prototype.entries\n    // https://tc39.es/ecma262/#sec-set.prototype.keys\n    // https://tc39.es/ecma262/#sec-set.prototype.values\n    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n    defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: undefined\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = undefined;\n        return { value: undefined, done: true };\n      }\n      // return step by kind\n      if (kind == 'keys') return { value: entry.key, done: false };\n      if (kind == 'values') return { value: entry.value, done: false };\n      return { value: [entry.key, entry.value], done: false };\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // `{ Map, Set }.prototype[@@species]` accessors\n    // https://tc39.es/ecma262/#sec-get-map-@@species\n    // https://tc39.es/ecma262/#sec-get-set-@@species\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n\n\n/***/ }),\n/* 500 */\n/***/ (function(module, exports) {\n\nvar log = Math.log;\n\n// `Math.log1p` method implementation\n// https://tc39.es/ecma262/#sec-math.log1p\n// eslint-disable-next-line es-x/no-math-log1p -- safe\nmodule.exports = Math.log1p || function log1p(x) {\n  var n = +x;\n  return n > -1e-8 && n < 1e-8 ? n - n * n / 2 : log(1 + n);\n};\n\n\n/***/ }),\n/* 501 */\n/***/ (function(module, exports) {\n\nvar log = Math.log;\nvar LOG10E = Math.LOG10E;\n\n// eslint-disable-next-line es-x/no-math-log10 -- safe\nmodule.exports = Math.log10 || function log10(x) {\n  return log(x) * LOG10E;\n};\n\n\n/***/ }),\n/* 502 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar fails = __webpack_require__(16);\nvar uncurryThis = __webpack_require__(20);\nvar toString = __webpack_require__(42);\nvar trim = __webpack_require__(203).trim;\nvar whitespaces = __webpack_require__(300);\n\nvar charAt = uncurryThis(''.charAt);\nvar $parseFloat = global.parseFloat;\nvar Symbol = global.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\n\n/***/ }),\n/* 503 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar fails = __webpack_require__(16);\nvar uncurryThis = __webpack_require__(20);\nvar toString = __webpack_require__(42);\nvar trim = __webpack_require__(203).trim;\nvar whitespaces = __webpack_require__(300);\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.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\n/***/ }),\n/* 504 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar thisNumberValue = __webpack_require__(299);\nvar $repeat = __webpack_require__(294);\nvar fails = __webpack_require__(16);\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar nativeToFixed = uncurryThis(1.0.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 $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\n\n/***/ }),\n/* 505 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar uncurryThis = __webpack_require__(20);\nvar call = __webpack_require__(38);\nvar fails = __webpack_require__(16);\nvar objectKeys = __webpack_require__(232);\nvar getOwnPropertySymbolsModule = __webpack_require__(282);\nvar propertyIsEnumerableModule = __webpack_require__(277);\nvar toObject = __webpack_require__(47);\nvar IndexedObject = __webpack_require__(194);\n\n// eslint-disable-next-line es-x/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es-x/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-x/no-symbol -- safe\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\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\n\n/***/ }),\n/* 506 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar uncurryThis = __webpack_require__(20);\nvar objectKeys = __webpack_require__(232);\nvar toIndexedObject = __webpack_require__(92);\nvar $propertyIsEnumerable = __webpack_require__(277).f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n  return function (it) {\n    var O = toIndexedObject(it);\n    var keys = objectKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) {\n      key = keys[i++];\n      if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n        push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n      }\n    }\n    return result;\n  };\n};\n\nmodule.exports = {\n  // `Object.entries` method\n  // https://tc39.es/ecma262/#sec-object.entries\n  entries: createMethod(true),\n  // `Object.values` method\n  // https://tc39.es/ecma262/#sec-object.values\n  values: createMethod(false)\n};\n\n\n/***/ }),\n/* 507 */\n/***/ (function(module, exports) {\n\n// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es-x/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\n\n/***/ }),\n/* 508 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(135);\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n\n\n/***/ }),\n/* 509 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar bind = __webpack_require__(118);\nvar getOwnPropertyDescriptor = __webpack_require__(85).f;\nvar macrotask = __webpack_require__(303).set;\nvar IS_IOS = __webpack_require__(508);\nvar IS_IOS_PEBBLE = __webpack_require__(815);\nvar IS_WEBOS_WEBKIT = __webpack_require__(816);\nvar IS_NODE = __webpack_require__(141);\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n  flush = function () {\n    var parent, fn;\n    if (IS_NODE && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (error) {\n        if (head) notify();\n        else last = undefined;\n        throw error;\n      }\n    } last = undefined;\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    // strange IE + webpack dev server bug - use .bind(global)\n    macrotask = bind(macrotask, global);\n    notify = function () {\n      macrotask(flush);\n    };\n  }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n  var task = { fn: fn, next: undefined };\n  if (last) last.next = task;\n  if (!head) {\n    head = task;\n    notify();\n  } last = task;\n};\n\n\n/***/ }),\n/* 510 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_DENO = __webpack_require__(382);\nvar IS_NODE = __webpack_require__(141);\n\nmodule.exports = !IS_DENO && !IS_NODE\n  && typeof window == 'object'\n  && typeof document == 'object';\n\n\n/***/ }),\n/* 511 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NativePromiseConstructor = __webpack_require__(206);\nvar checkCorrectnessOfIteration = __webpack_require__(289);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(245).CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n  NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n\n\n/***/ }),\n/* 512 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(35);\nvar isObject = __webpack_require__(39);\nvar newPromiseCapability = __webpack_require__(173);\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\n\n/***/ }),\n/* 513 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hasOwn = __webpack_require__(44);\n\nmodule.exports = function (descriptor) {\n  return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\n};\n\n\n/***/ }),\n/* 514 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\nvar global = __webpack_require__(25);\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.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\n\n/***/ }),\n/* 515 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar toAbsoluteIndex = __webpack_require__(137);\n\nvar $RangeError = RangeError;\nvar fromCharCode = String.fromCharCode;\n// eslint-disable-next-line es-x/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 $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\n\n/***/ }),\n/* 516 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// https://github.com/zloirock/core-js/issues/280\nvar userAgent = __webpack_require__(135);\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n\n/***/ }),\n/* 517 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(20);\nvar toObject = __webpack_require__(47);\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\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\n/***/ }),\n/* 518 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar call = __webpack_require__(38);\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(308);\nvar anObject = __webpack_require__(35);\nvar isNullOrUndefined = __webpack_require__(93);\nvar requireObjectCoercible = __webpack_require__(72);\nvar sameValue = __webpack_require__(507);\nvar toString = __webpack_require__(42);\nvar getMethod = __webpack_require__(136);\nvar regExpExec = __webpack_require__(250);\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 = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH);\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\n\n/***/ }),\n/* 519 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar getOwnPropertyDescriptor = __webpack_require__(85).f;\nvar toLength = __webpack_require__(100);\nvar toString = __webpack_require__(42);\nvar notARegExp = __webpack_require__(385);\nvar requireObjectCoercible = __webpack_require__(72);\nvar correctIsRegExpLogic = __webpack_require__(386);\nvar IS_PURE = __webpack_require__(69);\n\n// eslint-disable-next-line es-x/no-string-prototype-startswith -- safe\nvar nativeStartsWith = uncurryThis(''.startsWith);\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 nativeStartsWith\n      ? nativeStartsWith(that, search, index)\n      : stringSlice(that, index, index + search.length) === search;\n  }\n});\n\n\n/***/ }),\n/* 520 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $trimEnd = __webpack_require__(203).end;\nvar forcedStringTrimMethod = __webpack_require__(387);\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-x/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimEnd;\n\n\n/***/ }),\n/* 521 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $trimStart = __webpack_require__(203).start;\nvar forcedStringTrimMethod = __webpack_require__(387);\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-x/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimStart;\n\n\n/***/ }),\n/* 522 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toPositiveInteger = __webpack_require__(878);\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n  var offset = toPositiveInteger(it);\n  if (offset % BYTES) throw $RangeError('Wrong offset');\n  return offset;\n};\n\n\n/***/ }),\n/* 523 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(118);\nvar call = __webpack_require__(38);\nvar aConstructor = __webpack_require__(376);\nvar toObject = __webpack_require__(47);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar getIterator = __webpack_require__(284);\nvar getIteratorMethod = __webpack_require__(237);\nvar isArrayIteratorMethod = __webpack_require__(368);\nvar aTypedArrayConstructor = __webpack_require__(45).aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n  var C = aConstructor(this);\n  var O = toObject(source);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  var iteratorMethod = getIteratorMethod(O);\n  var i, length, result, step, iterator, next;\n  if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    O = [];\n    while (!(step = call(next, iterator)).done) {\n      O.push(step.value);\n    }\n  }\n  if (mapping && argumentsLength > 2) {\n    mapfn = bind(mapfn, arguments[2]);\n  }\n  length = lengthOfArrayLike(O);\n  result = new (aTypedArrayConstructor(C))(length);\n  for (i = 0; length > i; i++) {\n    result[i] = mapping ? mapfn(O[i], i) : O[i];\n  }\n  return result;\n};\n\n\n/***/ }),\n/* 524 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar uncurryThis = __webpack_require__(20);\nvar defineBuiltIns = __webpack_require__(241);\nvar getWeakData = __webpack_require__(172).getWeakData;\nvar anInstance = __webpack_require__(127);\nvar anObject = __webpack_require__(35);\nvar isNullOrUndefined = __webpack_require__(93);\nvar isObject = __webpack_require__(39);\nvar iterate = __webpack_require__(125);\nvar ArrayIterationModule = __webpack_require__(84);\nvar hasOwn = __webpack_require__(44);\nvar InternalStateModule = __webpack_require__(73);\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar splice = uncurryThis([].splice);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n  return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n  this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n  return find(store.entries, function (it) {\n    return it[0] === key;\n  });\n};\n\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.entries.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = findIndex(this.entries, function (it) {\n      return it[0] === key;\n    });\n    if (~index) splice(this.entries, index, 1);\n    return !!~index;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        id: id++,\n        frozen: undefined\n      });\n      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var data = getWeakData(anObject(key), true);\n      if (data === true) uncaughtFrozenStore(state).set(key, value);\n      else data[state.id] = value;\n      return that;\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n      // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n      'delete': function (key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n        return data && hasOwn(data, state.id) && delete data[state.id];\n      },\n      // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n      // https://tc39.es/ecma262/#sec-weakset.prototype.has\n      has: function has(key) {\n        var state = getInternalState(this);\n        if (!isObject(key)) return false;\n        var data = getWeakData(key);\n        if (data === true) return uncaughtFrozenStore(state).has(key);\n        return data && hasOwn(data, state.id);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `WeakMap.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n      get: function get(key) {\n        var state = getInternalState(this);\n        if (isObject(key)) {\n          var data = getWeakData(key);\n          if (data === true) return uncaughtFrozenStore(state).get(key);\n          return data ? data[state.id] : undefined;\n        }\n      },\n      // `WeakMap.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n      set: function set(key, value) {\n        return define(this, key, value);\n      }\n    } : {\n      // `WeakSet.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-weakset.prototype.add\n      add: function add(value) {\n        return define(this, value, true);\n      }\n    });\n\n    return Constructor;\n  }\n};\n\n\n/***/ }),\n/* 525 */\n/***/ (function(module, exports) {\n\nvar itoc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nvar ctoi = {};\n\nfor (var index = 0; index < 66; index++) ctoi[itoc.charAt(index)] = index;\n\nmodule.exports = {\n  itoc: itoc,\n  ctoi: ctoi\n};\n\n\n/***/ }),\n/* 526 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 527 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = __webpack_require__(279);\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n\n\n/***/ }),\n/* 528 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\n  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n\n\n/***/ }),\n/* 529 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar apply = __webpack_require__(114);\nvar isCallable = __webpack_require__(43);\nvar userAgent = __webpack_require__(135);\nvar arraySlice = __webpack_require__(170);\nvar validateArgumentsLength = __webpack_require__(151);\n\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar Function = global.Function;\n\nvar wrap = function (scheduler) {\n  return MSIE ? function (handler, timeout /* , ...arguments */) {\n    var boundArgs = validateArgumentsLength(arguments.length, 1) > 2;\n    var fn = isCallable(handler) ? handler : Function(handler);\n    var args = boundArgs ? arraySlice(arguments, 2) : undefined;\n    return scheduler(boundArgs ? function () {\n      apply(fn, this, args);\n    } : fn, timeout);\n  } : scheduler;\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\nmodule.exports = {\n  // `setTimeout` method\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n  setTimeout: wrap(global.setTimeout),\n  // `setInterval` method\n  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n  setInterval: wrap(global.setInterval)\n};\n\n\n/***/ }),\n/* 530 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(16);\nvar wellKnownSymbol = __webpack_require__(41);\nvar IS_PURE = __webpack_require__(69);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n  var url = new URL('b?a=1&b=2&c=3', 'http://a');\n  var searchParams = url.searchParams;\n  var result = '';\n  url.pathname = 'c%20d';\n  searchParams.forEach(function (value, key) {\n    searchParams['delete']('b');\n    result += key + value;\n  });\n  return (IS_PURE && !url.toJSON)\n    || !searchParams.sort\n    || url.href !== 'http://a/c%20d?a=1&c=3'\n    || searchParams.get('c') !== '3'\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\n    || !searchParams[ITERATOR]\n    // throws in Edge\n    || new URL('https://a@b').username !== 'a'\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n    // not punycoded in Edge\n    || new URL('http://тест').host !== 'xn--e1aybc'\n    // not escaped in Chrome 62-\n    || new URL('http://a#б').hash !== '#%D0%B1'\n    // fails in Chrome 66-\n    || result !== 'a1c3'\n    // throws in Safari\n    || new URL('http://x', undefined).host !== 'x';\n});\n\n\n/***/ }),\n/* 531 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(290);\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar call = __webpack_require__(38);\nvar uncurryThis = __webpack_require__(20);\nvar DESCRIPTORS = __webpack_require__(30);\nvar USE_NATIVE_URL = __webpack_require__(530);\nvar defineBuiltIn = __webpack_require__(62);\nvar defineBuiltIns = __webpack_require__(241);\nvar setToStringTag = __webpack_require__(102);\nvar createIteratorConstructor = __webpack_require__(371);\nvar InternalStateModule = __webpack_require__(73);\nvar anInstance = __webpack_require__(127);\nvar isCallable = __webpack_require__(43);\nvar hasOwn = __webpack_require__(44);\nvar bind = __webpack_require__(118);\nvar classof = __webpack_require__(138);\nvar anObject = __webpack_require__(35);\nvar isObject = __webpack_require__(39);\nvar $toString = __webpack_require__(42);\nvar create = __webpack_require__(101);\nvar createPropertyDescriptor = __webpack_require__(112);\nvar getIterator = __webpack_require__(284);\nvar getIteratorMethod = __webpack_require__(237);\nvar validateArgumentsLength = __webpack_require__(151);\nvar wellKnownSymbol = __webpack_require__(41);\nvar arraySort = __webpack_require__(373);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n  if (!DESCRIPTORS) return global[name];\n  var descriptor = getOwnPropertyDescriptor(global, name);\n  return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n  return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n  try {\n    return decodeURIComponent(sequence);\n  } catch (error) {\n    return sequence;\n  }\n};\n\nvar deserialize = function (it) {\n  var result = replace(it, plus, ' ');\n  var bytes = 4;\n  try {\n    return decodeURIComponent(result);\n  } catch (error) {\n    while (bytes) {\n      result = replace(result, percentSequence(bytes--), percentDecode);\n    }\n    return result;\n  }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+'\n};\n\nvar replacer = function (match) {\n  return replacements[match];\n};\n\nvar serialize = function (it) {\n  return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n  setInternalState(this, {\n    type: URL_SEARCH_PARAMS_ITERATOR,\n    iterator: getIterator(getInternalParamsState(params).entries),\n    kind: kind\n  });\n}, 'Iterator', function next() {\n  var state = getInternalIteratorState(this);\n  var kind = state.kind;\n  var step = state.iterator.next();\n  var entry = step.value;\n  if (!step.done) {\n    step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n  } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n  this.entries = [];\n  this.url = null;\n\n  if (init !== undefined) {\n    if (isObject(init)) this.parseObject(init);\n    else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n  }\n};\n\nURLSearchParamsState.prototype = {\n  type: URL_SEARCH_PARAMS,\n  bindURL: function (url) {\n    this.url = url;\n    this.update();\n  },\n  parseObject: function (object) {\n    var iteratorMethod = getIteratorMethod(object);\n    var iterator, next, step, entryIterator, entryNext, first, second;\n\n    if (iteratorMethod) {\n      iterator = getIterator(object, iteratorMethod);\n      next = iterator.next;\n      while (!(step = call(next, iterator)).done) {\n        entryIterator = getIterator(anObject(step.value));\n        entryNext = entryIterator.next;\n        if (\n          (first = call(entryNext, entryIterator)).done ||\n          (second = call(entryNext, entryIterator)).done ||\n          !call(entryNext, entryIterator).done\n        ) throw TypeError('Expected sequence with length 2');\n        push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n      }\n    } else for (var key in object) if (hasOwn(object, key)) {\n      push(this.entries, { key: key, value: $toString(object[key]) });\n    }\n  },\n  parseQuery: function (query) {\n    if (query) {\n      var attributes = split(query, '&');\n      var index = 0;\n      var attribute, entry;\n      while (index < attributes.length) {\n        attribute = attributes[index++];\n        if (attribute.length) {\n          entry = split(attribute, '=');\n          push(this.entries, {\n            key: deserialize(shift(entry)),\n            value: deserialize(join(entry, '='))\n          });\n        }\n      }\n    }\n  },\n  serialize: function () {\n    var entries = this.entries;\n    var result = [];\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      push(result, serialize(entry.key) + '=' + serialize(entry.value));\n    } return join(result, '&');\n  },\n  update: function () {\n    this.entries.length = 0;\n    this.parseQuery(this.url.query);\n  },\n  updateURL: function () {\n    if (this.url) this.url.update();\n  }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n  anInstance(this, URLSearchParamsPrototype);\n  var init = arguments.length > 0 ? arguments[0] : undefined;\n  setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n  // `URLSearchParams.prototype.append` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n  append: function append(name, value) {\n    validateArgumentsLength(arguments.length, 2);\n    var state = getInternalParamsState(this);\n    push(state.entries, { key: $toString(name), value: $toString(value) });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.delete` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n  'delete': function (name) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var key = $toString(name);\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index].key === key) splice(entries, index, 1);\n      else index++;\n    }\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.get` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n  get: function get(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) return entries[index].value;\n    }\n    return null;\n  },\n  // `URLSearchParams.prototype.getAll` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n  getAll: function getAll(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var result = [];\n    var index = 0;\n    for (; index < entries.length; index++) {\n      if (entries[index].key === key) push(result, entries[index].value);\n    }\n    return result;\n  },\n  // `URLSearchParams.prototype.has` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n  has: function has(name) {\n    validateArgumentsLength(arguments.length, 1);\n    var entries = getInternalParamsState(this).entries;\n    var key = $toString(name);\n    var index = 0;\n    while (index < entries.length) {\n      if (entries[index++].key === key) return true;\n    }\n    return false;\n  },\n  // `URLSearchParams.prototype.set` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n  set: function set(name, value) {\n    validateArgumentsLength(arguments.length, 1);\n    var state = getInternalParamsState(this);\n    var entries = state.entries;\n    var found = false;\n    var key = $toString(name);\n    var val = $toString(value);\n    var index = 0;\n    var entry;\n    for (; index < entries.length; index++) {\n      entry = entries[index];\n      if (entry.key === key) {\n        if (found) splice(entries, index--, 1);\n        else {\n          found = true;\n          entry.value = val;\n        }\n      }\n    }\n    if (!found) push(entries, { key: key, value: val });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.sort` method\n  // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n  sort: function sort() {\n    var state = getInternalParamsState(this);\n    arraySort(state.entries, function (a, b) {\n      return a.key > b.key ? 1 : -1;\n    });\n    state.updateURL();\n  },\n  // `URLSearchParams.prototype.forEach` method\n  forEach: function forEach(callback /* , thisArg */) {\n    var entries = getInternalParamsState(this).entries;\n    var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n    var index = 0;\n    var entry;\n    while (index < entries.length) {\n      entry = entries[index++];\n      boundFunction(entry.value, entry.key, this);\n    }\n  },\n  // `URLSearchParams.prototype.keys` method\n  keys: function keys() {\n    return new URLSearchParamsIterator(this, 'keys');\n  },\n  // `URLSearchParams.prototype.values` method\n  values: function values() {\n    return new URLSearchParamsIterator(this, 'values');\n  },\n  // `URLSearchParams.prototype.entries` method\n  entries: function entries() {\n    return new URLSearchParamsIterator(this, 'entries');\n  }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n  return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n  URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n  var headersHas = uncurryThis(HeadersPrototype.has);\n  var headersSet = uncurryThis(HeadersPrototype.set);\n\n  var wrapRequestOptions = function (init) {\n    if (isObject(init)) {\n      var body = init.body;\n      var headers;\n      if (classof(body) === URL_SEARCH_PARAMS) {\n        headers = init.headers ? new Headers(init.headers) : new Headers();\n        if (!headersHas(headers, 'content-type')) {\n          headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n        }\n        return create(init, {\n          body: createPropertyDescriptor(0, $toString(body)),\n          headers: createPropertyDescriptor(0, headers)\n        });\n      }\n    } return init;\n  };\n\n  if (isCallable(nativeFetch)) {\n    $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n      fetch: function fetch(input /* , init */) {\n        return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n      }\n    });\n  }\n\n  if (isCallable(NativeRequest)) {\n    var RequestConstructor = function Request(input /* , init */) {\n      anInstance(this, RequestPrototype);\n      return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n    };\n\n    RequestPrototype.constructor = RequestConstructor;\n    RequestConstructor.prototype = RequestPrototype;\n\n    $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n      Request: RequestConstructor\n    });\n  }\n}\n\nmodule.exports = {\n  URLSearchParams: URLSearchParamsConstructor,\n  getState: getInternalParamsState\n};\n\n\n/***/ }),\n/* 532 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n  toJSON: function toJSON() {\n    return call(URL.prototype.toString, this);\n  }\n});\n\n\n/***/ }),\n/* 533 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91)))\n\n/***/ }),\n/* 534 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseTrim = __webpack_require__(944),\n    isObject = __webpack_require__(106),\n    isSymbol = __webpack_require__(251);\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\nmodule.exports = toNumber;\n\n\n/***/ }),\n/* 535 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 536 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar SetCache = __webpack_require__(537),\n    arraySome = __webpack_require__(987),\n    cacheHas = __webpack_require__(538);\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\n\n/***/ }),\n/* 537 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MapCache = __webpack_require__(392),\n    setCacheAdd = __webpack_require__(985),\n    setCacheHas = __webpack_require__(986);\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\n\n/***/ }),\n/* 538 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 539 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(120);\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n/***/ }),\n/* 540 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetAllKeys = __webpack_require__(541),\n    getSymbols = __webpack_require__(395),\n    keys = __webpack_require__(252);\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\n\n/***/ }),\n/* 541 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayPush = __webpack_require__(394),\n    isArray = __webpack_require__(97);\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\n\n/***/ }),\n/* 542 */\n/***/ (function(module, exports) {\n\n/**\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\n\n/***/ }),\n/* 543 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseTimes = __webpack_require__(992),\n    isArguments = __webpack_require__(317),\n    isArray = __webpack_require__(97),\n    isBuffer = __webpack_require__(318),\n    isIndex = __webpack_require__(319),\n    isTypedArray = __webpack_require__(396);\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\n\n/***/ }),\n/* 544 */\n/***/ (function(module, exports) {\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\nmodule.exports = overArg;\n\n\n/***/ }),\n/* 545 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(175),\n    root = __webpack_require__(120);\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n/***/ }),\n/* 546 */\n/***/ (function(module, exports) {\n\n/**\n * zrender: 生成唯一id\n *\n * @author errorrik (errorrik@gmail.com)\n */\nvar idStart = 0x0907;\n\nfunction _default() {\n  return idStart++;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 547 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar env = __webpack_require__(66);\n\nvar _fourPointsTransform = __webpack_require__(1003);\n\nvar buildTransformer = _fourPointsTransform.buildTransformer;\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\n/**\n * Transform \"local coord\" from `elFrom` to `elTarget`.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n *     the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support when CSS transform is used.\n *\n * Having the `out` (that is, `[outX, outY]`), we can create an DOM element\n * and set the CSS style as \"left: outX; top: outY;\" and append it to `elTarge`\n * to locate the element.\n *\n * For example, this code below positions a child of `document.body` on the event\n * point, no matter whether `body` has `margin`/`paddin`/`transfrom`/... :\n * ```js\n * transformLocalCoord(out, container, document.body, event.offsetX, event.offsetY);\n * if (!eqNaN(out[0])) {\n *     // Then locate the tip element on the event point.\n *     var tipEl = document.createElement('div');\n *     tipEl.style.cssText = 'position: absolute; left:' + out[0] + ';top:' + out[1] + ';';\n *     document.body.appendChild(tipEl);\n * }\n * ```\n *\n * Notice: In some env this method is not supported. If called, `out` will be `[NaN, NaN]`.\n *\n * @param {Array.<number>} out [inX: number, inY: number] The output..\n *        If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} elFrom The `[inX, inY]` is based on elFrom.\n * @param {HTMLElement} elTarget The `out` is based on elTarget.\n * @param {number} inX\n * @param {number} inY\n * @return {boolean} Whether transform successfully.\n */\n\nfunction transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n  return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true) && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\n/**\n * Transform between a \"viewport coord\" and a \"local coord\".\n * \"viewport coord\": the coord based on the left-top corner of the viewport\n *     of the browser.\n * \"local coord\": the coord based on the input `el`. The origin point is at\n *     the position of \"left: 0; top: 0;\" in the `el`.\n *\n * Support the case when CSS transform is used on el.\n *\n * @param {Array.<number>} out [inX: number, inY: number] The output. If `inverse: false`,\n *        it represents \"local coord\", otherwise \"vireport coord\".\n *        If can not transform, `out` will not be modified but return `false`.\n * @param {HTMLElement} el The \"local coord\" is based on the `el`, see comment above.\n * @param {number} inX If `inverse: false`,\n *        it represents \"vireport coord\", otherwise \"local coord\".\n * @param {number} inY If `inverse: false`,\n *        it represents \"vireport coord\", otherwise \"local coord\".\n * @param {boolean} [inverse=false]\n *        `true`: from \"viewport coord\" to \"local coord\".\n *        `false`: from \"local coord\" to \"viewport coord\".\n * @return {boolean} Whether transform successfully.\n */\n\n\nfunction transformCoordWithViewport(out, el, inX, inY, inverse) {\n  if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\n    var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n    var markers = prepareCoordMarkers(el, saved);\n    var transformer = preparePointerTransformer(markers, saved, inverse);\n\n    if (transformer) {\n      transformer(out, inX, inY);\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction prepareCoordMarkers(el, saved) {\n  var markers = saved.markers;\n\n  if (markers) {\n    return markers;\n  }\n\n  markers = saved.markers = [];\n  var propLR = ['left', 'right'];\n  var propTB = ['top', 'bottom'];\n\n  for (var i = 0; i < 4; i++) {\n    var marker = document.createElement('div');\n    var stl = marker.style;\n    var idxLR = i % 2;\n    var idxTB = (i >> 1) % 2;\n    stl.cssText = ['position: absolute', 'visibility: hidden', 'padding: 0', 'margin: 0', 'border-width: 0', 'user-select: none', 'width:0', 'height:0', // 'width: 5px',\n    // 'height: 5px',\n    propLR[idxLR] + ':0', propTB[idxTB] + ':0', propLR[1 - idxLR] + ':auto', propTB[1 - idxTB] + ':auto', ''].join('!important;');\n    el.appendChild(marker);\n    markers.push(marker);\n  }\n\n  return markers;\n}\n\nfunction preparePointerTransformer(markers, saved, inverse) {\n  var transformerName = inverse ? 'invTrans' : 'trans';\n  var transformer = saved[transformerName];\n  var oldSrcCoords = saved.srcCoords;\n  var oldCoordTheSame = true;\n  var srcCoords = [];\n  var destCoords = [];\n\n  for (var i = 0; i < 4; i++) {\n    var rect = markers[i].getBoundingClientRect();\n    var ii = 2 * i;\n    var x = rect.left;\n    var y = rect.top;\n    srcCoords.push(x, y);\n    oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n    destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n  } // Cache to avoid time consuming of `buildTransformer`.\n\n\n  return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer(destCoords, srcCoords) : buildTransformer(srcCoords, destCoords));\n}\n\nfunction isCanvasEl(el) {\n  return el.nodeName.toUpperCase() === 'CANVAS';\n}\n\nexports.transformLocalCoord = transformLocalCoord;\nexports.transformCoordWithViewport = transformCoordWithViewport;\nexports.isCanvasEl = isCanvasEl;\n\n/***/ }),\n/* 548 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar guid = __webpack_require__(546);\n\nvar Eventful = __webpack_require__(176);\n\nvar Transformable = __webpack_require__(323);\n\nvar Animatable = __webpack_require__(1006);\n\nvar zrUtil = __webpack_require__(2);\n\n/**\n * @alias module:zrender/Element\n * @constructor\n * @extends {module:zrender/mixin/Animatable}\n * @extends {module:zrender/mixin/Transformable}\n * @extends {module:zrender/mixin/Eventful}\n */\nvar Element = function (opts) {\n  // jshint ignore:line\n  Transformable.call(this, opts);\n  Eventful.call(this, opts);\n  Animatable.call(this, opts);\n  /**\n   * 画布元素ID\n   * @type {string}\n   */\n\n  this.id = opts.id || guid();\n};\n\nElement.prototype = {\n  /**\n   * 元素类型\n   * Element type\n   * @type {string}\n   */\n  type: 'element',\n\n  /**\n   * 元素名字\n   * Element name\n   * @type {string}\n   */\n  name: '',\n\n  /**\n   * ZRender 实例对象，会在 element 添加到 zrender 实例中后自动赋值\n   * ZRender instance will be assigned when element is associated with zrender\n   * @name module:/zrender/Element#__zr\n   * @type {module:zrender/ZRender}\n   */\n  __zr: null,\n\n  /**\n   * 图形是否忽略，为true时忽略图形的绘制以及事件触发\n   * If ignore drawing and events of the element object\n   * @name module:/zrender/Element#ignore\n   * @type {boolean}\n   * @default false\n   */\n  ignore: false,\n\n  /**\n   * 用于裁剪的路径(shape)，所有 Group 内的路径在绘制时都会被这个路径裁剪\n   * 该路径会继承被裁减对象的变换\n   * @type {module:zrender/graphic/Path}\n   * @see http://www.w3.org/TR/2dcontext/#clipping-region\n   * @readOnly\n   */\n  clipPath: null,\n\n  /**\n   * 是否是 Group\n   * @type {boolean}\n   */\n  isGroup: false,\n\n  /**\n   * Drift element\n   * @param  {number} dx dx on the global space\n   * @param  {number} dy dy on the global space\n   */\n  drift: function (dx, dy) {\n    switch (this.draggable) {\n      case 'horizontal':\n        dy = 0;\n        break;\n\n      case 'vertical':\n        dx = 0;\n        break;\n    }\n\n    var m = this.transform;\n\n    if (!m) {\n      m = this.transform = [1, 0, 0, 1, 0, 0];\n    }\n\n    m[4] += dx;\n    m[5] += dy;\n    this.decomposeTransform();\n    this.dirty(false);\n  },\n\n  /**\n   * Hook before update\n   */\n  beforeUpdate: function () {},\n\n  /**\n   * Hook after update\n   */\n  afterUpdate: function () {},\n\n  /**\n   * Update each frame\n   */\n  update: function () {\n    this.updateTransform();\n  },\n\n  /**\n   * @param  {Function} cb\n   * @param  {}   context\n   */\n  traverse: function (cb, context) {},\n\n  /**\n   * @protected\n   */\n  attrKV: function (key, value) {\n    if (key === 'position' || key === 'scale' || key === 'origin') {\n      // Copy the array\n      if (value) {\n        var target = this[key];\n\n        if (!target) {\n          target = this[key] = [];\n        }\n\n        target[0] = value[0];\n        target[1] = value[1];\n      }\n    } else {\n      this[key] = value;\n    }\n  },\n\n  /**\n   * Hide the element\n   */\n  hide: function () {\n    this.ignore = true;\n    this.__zr && this.__zr.refresh();\n  },\n\n  /**\n   * Show the element\n   */\n  show: function () {\n    this.ignore = false;\n    this.__zr && this.__zr.refresh();\n  },\n\n  /**\n   * @param {string|Object} key\n   * @param {*} value\n   */\n  attr: function (key, value) {\n    if (typeof key === 'string') {\n      this.attrKV(key, value);\n    } else if (zrUtil.isObject(key)) {\n      for (var name in key) {\n        if (key.hasOwnProperty(name)) {\n          this.attrKV(name, key[name]);\n        }\n      }\n    }\n\n    this.dirty(false);\n    return this;\n  },\n\n  /**\n   * @param {module:zrender/graphic/Path} clipPath\n   */\n  setClipPath: function (clipPath) {\n    var zr = this.__zr;\n\n    if (zr) {\n      clipPath.addSelfToZr(zr);\n    } // Remove previous clip path\n\n\n    if (this.clipPath && this.clipPath !== clipPath) {\n      this.removeClipPath();\n    }\n\n    this.clipPath = clipPath;\n    clipPath.__zr = zr;\n    clipPath.__clipTarget = this;\n    this.dirty(false);\n  },\n\n  /**\n   */\n  removeClipPath: function () {\n    var clipPath = this.clipPath;\n\n    if (clipPath) {\n      if (clipPath.__zr) {\n        clipPath.removeSelfFromZr(clipPath.__zr);\n      }\n\n      clipPath.__zr = null;\n      clipPath.__clipTarget = null;\n      this.clipPath = null;\n      this.dirty(false);\n    }\n  },\n\n  /**\n   * Add self from zrender instance.\n   * Not recursively because it will be invoked when element added to storage.\n   * @param {module:zrender/ZRender} zr\n   */\n  addSelfToZr: function (zr) {\n    this.__zr = zr; // 添加动画\n\n    var animators = this.animators;\n\n    if (animators) {\n      for (var i = 0; i < animators.length; i++) {\n        zr.animation.addAnimator(animators[i]);\n      }\n    }\n\n    if (this.clipPath) {\n      this.clipPath.addSelfToZr(zr);\n    }\n  },\n\n  /**\n   * Remove self from zrender instance.\n   * Not recursively because it will be invoked when element added to storage.\n   * @param {module:zrender/ZRender} zr\n   */\n  removeSelfFromZr: function (zr) {\n    this.__zr = null; // 移除动画\n\n    var animators = this.animators;\n\n    if (animators) {\n      for (var i = 0; i < animators.length; i++) {\n        zr.animation.removeAnimator(animators[i]);\n      }\n    }\n\n    if (this.clipPath) {\n      this.clipPath.removeSelfFromZr(zr);\n    }\n  }\n};\nzrUtil.mixin(Element, Animatable);\nzrUtil.mixin(Element, Transformable);\nzrUtil.mixin(Element, Eventful);\nvar _default = Element;\nmodule.exports = _default;\n\n/***/ }),\n/* 549 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Clip = __webpack_require__(1007);\n\nvar color = __webpack_require__(130);\n\nvar _util = __webpack_require__(2);\n\nvar isArrayLike = _util.isArrayLike;\n\n/**\n * @module echarts/animation/Animator\n */\nvar arraySlice = Array.prototype.slice;\n\nfunction defaultGetter(target, key) {\n  return target[key];\n}\n\nfunction defaultSetter(target, key, value) {\n  target[key] = value;\n}\n/**\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} percent\n * @return {number}\n */\n\n\nfunction interpolateNumber(p0, p1, percent) {\n  return (p1 - p0) * percent + p0;\n}\n/**\n * @param  {string} p0\n * @param  {string} p1\n * @param  {number} percent\n * @return {string}\n */\n\n\nfunction interpolateString(p0, p1, percent) {\n  return percent > 0.5 ? p1 : p0;\n}\n/**\n * @param  {Array} p0\n * @param  {Array} p1\n * @param  {number} percent\n * @param  {Array} out\n * @param  {number} arrDim\n */\n\n\nfunction interpolateArray(p0, p1, percent, out, arrDim) {\n  var len = p0.length;\n\n  if (arrDim === 1) {\n    for (var i = 0; i < len; i++) {\n      out[i] = interpolateNumber(p0[i], p1[i], percent);\n    }\n  } else {\n    var len2 = len && p0[0].length;\n\n    for (var i = 0; i < len; i++) {\n      for (var j = 0; j < len2; j++) {\n        out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n      }\n    }\n  }\n} // arr0 is source array, arr1 is target array.\n// Do some preprocess to avoid error happened when interpolating from arr0 to arr1\n\n\nfunction fillArr(arr0, arr1, arrDim) {\n  var arr0Len = arr0.length;\n  var arr1Len = arr1.length;\n\n  if (arr0Len !== arr1Len) {\n    // FIXME Not work for TypedArray\n    var isPreviousLarger = arr0Len > arr1Len;\n\n    if (isPreviousLarger) {\n      // Cut the previous\n      arr0.length = arr1Len;\n    } else {\n      // Fill the previous\n      for (var i = arr0Len; i < arr1Len; i++) {\n        arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n      }\n    }\n  } // Handling NaN value\n\n\n  var len2 = arr0[0] && arr0[0].length;\n\n  for (var i = 0; i < arr0.length; i++) {\n    if (arrDim === 1) {\n      if (isNaN(arr0[i])) {\n        arr0[i] = arr1[i];\n      }\n    } else {\n      for (var j = 0; j < len2; j++) {\n        if (isNaN(arr0[i][j])) {\n          arr0[i][j] = arr1[i][j];\n        }\n      }\n    }\n  }\n}\n/**\n * @param  {Array} arr0\n * @param  {Array} arr1\n * @param  {number} arrDim\n * @return {boolean}\n */\n\n\nfunction isArraySame(arr0, arr1, arrDim) {\n  if (arr0 === arr1) {\n    return true;\n  }\n\n  var len = arr0.length;\n\n  if (len !== arr1.length) {\n    return false;\n  }\n\n  if (arrDim === 1) {\n    for (var i = 0; i < len; i++) {\n      if (arr0[i] !== arr1[i]) {\n        return false;\n      }\n    }\n  } else {\n    var len2 = arr0[0].length;\n\n    for (var i = 0; i < len; i++) {\n      for (var j = 0; j < len2; j++) {\n        if (arr0[i][j] !== arr1[i][j]) {\n          return false;\n        }\n      }\n    }\n  }\n\n  return true;\n}\n/**\n * Catmull Rom interpolate array\n * @param  {Array} p0\n * @param  {Array} p1\n * @param  {Array} p2\n * @param  {Array} p3\n * @param  {number} t\n * @param  {number} t2\n * @param  {number} t3\n * @param  {Array} out\n * @param  {number} arrDim\n */\n\n\nfunction catmullRomInterpolateArray(p0, p1, p2, p3, t, t2, t3, out, arrDim) {\n  var len = p0.length;\n\n  if (arrDim === 1) {\n    for (var i = 0; i < len; i++) {\n      out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\n    }\n  } else {\n    var len2 = p0[0].length;\n\n    for (var i = 0; i < len; i++) {\n      for (var j = 0; j < len2; j++) {\n        out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\n      }\n    }\n  }\n}\n/**\n * Catmull Rom interpolate number\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {number} t\n * @param  {number} t2\n * @param  {number} t3\n * @return {number}\n */\n\n\nfunction catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\n  var v0 = (p2 - p0) * 0.5;\n  var v1 = (p3 - p1) * 0.5;\n  return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nfunction cloneValue(value) {\n  if (isArrayLike(value)) {\n    var len = value.length;\n\n    if (isArrayLike(value[0])) {\n      var ret = [];\n\n      for (var i = 0; i < len; i++) {\n        ret.push(arraySlice.call(value[i]));\n      }\n\n      return ret;\n    }\n\n    return arraySlice.call(value);\n  }\n\n  return value;\n}\n\nfunction rgba2String(rgba) {\n  rgba[0] = Math.floor(rgba[0]);\n  rgba[1] = Math.floor(rgba[1]);\n  rgba[2] = Math.floor(rgba[2]);\n  return 'rgba(' + rgba.join(',') + ')';\n}\n\nfunction getArrayDim(keyframes) {\n  var lastValue = keyframes[keyframes.length - 1].value;\n  return isArrayLike(lastValue && lastValue[0]) ? 2 : 1;\n}\n\nfunction createTrackClip(animator, easing, oneTrackDone, keyframes, propName, forceAnimate) {\n  var getter = animator._getter;\n  var setter = animator._setter;\n  var useSpline = easing === 'spline';\n  var trackLen = keyframes.length;\n\n  if (!trackLen) {\n    return;\n  } // Guess data type\n\n\n  var firstVal = keyframes[0].value;\n  var isValueArray = isArrayLike(firstVal);\n  var isValueColor = false;\n  var isValueString = false; // For vertices morphing\n\n  var arrDim = isValueArray ? getArrayDim(keyframes) : 0;\n  var trackMaxTime; // Sort keyframe as ascending\n\n  keyframes.sort(function (a, b) {\n    return a.time - b.time;\n  });\n  trackMaxTime = keyframes[trackLen - 1].time; // Percents of each keyframe\n\n  var kfPercents = []; // Value of each keyframe\n\n  var kfValues = [];\n  var prevValue = keyframes[0].value;\n  var isAllValueEqual = true;\n\n  for (var i = 0; i < trackLen; i++) {\n    kfPercents.push(keyframes[i].time / trackMaxTime); // Assume value is a color when it is a string\n\n    var value = keyframes[i].value; // Check if value is equal, deep check if value is array\n\n    if (!(isValueArray && isArraySame(value, prevValue, arrDim) || !isValueArray && value === prevValue)) {\n      isAllValueEqual = false;\n    }\n\n    prevValue = value; // Try converting a string to a color array\n\n    if (typeof value === 'string') {\n      var colorArray = color.parse(value);\n\n      if (colorArray) {\n        value = colorArray;\n        isValueColor = true;\n      } else {\n        isValueString = true;\n      }\n    }\n\n    kfValues.push(value);\n  }\n\n  if (!forceAnimate && isAllValueEqual) {\n    return;\n  }\n\n  var lastValue = kfValues[trackLen - 1]; // Polyfill array and NaN value\n\n  for (var i = 0; i < trackLen - 1; i++) {\n    if (isValueArray) {\n      fillArr(kfValues[i], lastValue, arrDim);\n    } else {\n      if (isNaN(kfValues[i]) && !isNaN(lastValue) && !isValueString && !isValueColor) {\n        kfValues[i] = lastValue;\n      }\n    }\n  }\n\n  isValueArray && fillArr(getter(animator._target, propName), lastValue, arrDim); // Cache the key of last frame to speed up when\n  // animation playback is sequency\n\n  var lastFrame = 0;\n  var lastFramePercent = 0;\n  var start;\n  var w;\n  var p0;\n  var p1;\n  var p2;\n  var p3;\n\n  if (isValueColor) {\n    var rgba = [0, 0, 0, 0];\n  }\n\n  var onframe = function (target, percent) {\n    // Find the range keyframes\n    // kf1-----kf2---------current--------kf3\n    // find kf2 and kf3 and do interpolation\n    var frame; // In the easing function like elasticOut, percent may less than 0\n\n    if (percent < 0) {\n      frame = 0;\n    } else if (percent < lastFramePercent) {\n      // Start from next key\n      // PENDING start from lastFrame ?\n      start = Math.min(lastFrame + 1, trackLen - 1);\n\n      for (frame = start; frame >= 0; frame--) {\n        if (kfPercents[frame] <= percent) {\n          break;\n        }\n      } // PENDING really need to do this ?\n\n\n      frame = Math.min(frame, trackLen - 2);\n    } else {\n      for (frame = lastFrame; frame < trackLen; frame++) {\n        if (kfPercents[frame] > percent) {\n          break;\n        }\n      }\n\n      frame = Math.min(frame - 1, trackLen - 2);\n    }\n\n    lastFrame = frame;\n    lastFramePercent = percent;\n    var range = kfPercents[frame + 1] - kfPercents[frame];\n\n    if (range === 0) {\n      return;\n    } else {\n      w = (percent - kfPercents[frame]) / range;\n    }\n\n    if (useSpline) {\n      p1 = kfValues[frame];\n      p0 = kfValues[frame === 0 ? frame : frame - 1];\n      p2 = kfValues[frame > trackLen - 2 ? trackLen - 1 : frame + 1];\n      p3 = kfValues[frame > trackLen - 3 ? trackLen - 1 : frame + 2];\n\n      if (isValueArray) {\n        catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, getter(target, propName), arrDim);\n      } else {\n        var value;\n\n        if (isValueColor) {\n          value = catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, rgba, 1);\n          value = rgba2String(rgba);\n        } else if (isValueString) {\n          // String is step(0.5)\n          return interpolateString(p1, p2, w);\n        } else {\n          value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\n        }\n\n        setter(target, propName, value);\n      }\n    } else {\n      if (isValueArray) {\n        interpolateArray(kfValues[frame], kfValues[frame + 1], w, getter(target, propName), arrDim);\n      } else {\n        var value;\n\n        if (isValueColor) {\n          interpolateArray(kfValues[frame], kfValues[frame + 1], w, rgba, 1);\n          value = rgba2String(rgba);\n        } else if (isValueString) {\n          // String is step(0.5)\n          return interpolateString(kfValues[frame], kfValues[frame + 1], w);\n        } else {\n          value = interpolateNumber(kfValues[frame], kfValues[frame + 1], w);\n        }\n\n        setter(target, propName, value);\n      }\n    }\n  };\n\n  var clip = new Clip({\n    target: animator._target,\n    life: trackMaxTime,\n    loop: animator._loop,\n    delay: animator._delay,\n    onframe: onframe,\n    ondestroy: oneTrackDone\n  });\n\n  if (easing && easing !== 'spline') {\n    clip.easing = easing;\n  }\n\n  return clip;\n}\n/**\n * @alias module:zrender/animation/Animator\n * @constructor\n * @param {Object} target\n * @param {boolean} loop\n * @param {Function} getter\n * @param {Function} setter\n */\n\n\nvar Animator = function (target, loop, getter, setter) {\n  this._tracks = {};\n  this._target = target;\n  this._loop = loop || false;\n  this._getter = getter || defaultGetter;\n  this._setter = setter || defaultSetter;\n  this._clipCount = 0;\n  this._delay = 0;\n  this._doneList = [];\n  this._onframeList = [];\n  this._clipList = [];\n};\n\nAnimator.prototype = {\n  /**\n   * Set Animation keyframe\n   * @param  {number} time 关键帧时间，单位是ms\n   * @param  {Object} props 关键帧的属性值，key-value表示\n   * @return {module:zrender/animation/Animator}\n   */\n  when: function (time\n  /* ms */\n  , props) {\n    var tracks = this._tracks;\n\n    for (var propName in props) {\n      if (!props.hasOwnProperty(propName)) {\n        continue;\n      }\n\n      if (!tracks[propName]) {\n        tracks[propName] = []; // Invalid value\n\n        var value = this._getter(this._target, propName);\n\n        if (value == null) {\n          // zrLog('Invalid property ' + propName);\n          continue;\n        } // If time is 0\n        //  Then props is given initialize value\n        // Else\n        //  Initialize value from current prop value\n\n\n        if (time !== 0) {\n          tracks[propName].push({\n            time: 0,\n            value: cloneValue(value)\n          });\n        }\n      }\n\n      tracks[propName].push({\n        time: time,\n        value: props[propName]\n      });\n    }\n\n    return this;\n  },\n\n  /**\n   * 添加动画每一帧的回调函数\n   * @param  {Function} callback\n   * @return {module:zrender/animation/Animator}\n   */\n  during: function (callback) {\n    this._onframeList.push(callback);\n\n    return this;\n  },\n  pause: function () {\n    for (var i = 0; i < this._clipList.length; i++) {\n      this._clipList[i].pause();\n    }\n\n    this._paused = true;\n  },\n  resume: function () {\n    for (var i = 0; i < this._clipList.length; i++) {\n      this._clipList[i].resume();\n    }\n\n    this._paused = false;\n  },\n  isPaused: function () {\n    return !!this._paused;\n  },\n  _doneCallback: function () {\n    // Clear all tracks\n    this._tracks = {}; // Clear all clips\n\n    this._clipList.length = 0;\n    var doneList = this._doneList;\n    var len = doneList.length;\n\n    for (var i = 0; i < len; i++) {\n      doneList[i].call(this);\n    }\n  },\n\n  /**\n   * Start the animation\n   * @param  {string|Function} [easing]\n   *         动画缓动函数，详见{@link module:zrender/animation/easing}\n   * @param  {boolean} forceAnimate\n   * @return {module:zrender/animation/Animator}\n   */\n  start: function (easing, forceAnimate) {\n    var self = this;\n    var clipCount = 0;\n\n    var oneTrackDone = function () {\n      clipCount--;\n\n      if (!clipCount) {\n        self._doneCallback();\n      }\n    };\n\n    var lastClip;\n\n    for (var propName in this._tracks) {\n      if (!this._tracks.hasOwnProperty(propName)) {\n        continue;\n      }\n\n      var clip = createTrackClip(this, easing, oneTrackDone, this._tracks[propName], propName, forceAnimate);\n\n      if (clip) {\n        this._clipList.push(clip);\n\n        clipCount++; // If start after added to animation\n\n        if (this.animation) {\n          this.animation.addClip(clip);\n        }\n\n        lastClip = clip;\n      }\n    } // Add during callback on the last clip\n\n\n    if (lastClip) {\n      var oldOnFrame = lastClip.onframe;\n\n      lastClip.onframe = function (target, percent) {\n        oldOnFrame(target, percent);\n\n        for (var i = 0; i < self._onframeList.length; i++) {\n          self._onframeList[i](target, percent);\n        }\n      };\n    } // This optimization will help the case that in the upper application\n    // the view may be refreshed frequently, where animation will be\n    // called repeatly but nothing changed.\n\n\n    if (!clipCount) {\n      this._doneCallback();\n    }\n\n    return this;\n  },\n\n  /**\n   * Stop animation\n   * @param {boolean} forwardToLast If move to last frame before stop\n   */\n  stop: function (forwardToLast) {\n    var clipList = this._clipList;\n    var animation = this.animation;\n\n    for (var i = 0; i < clipList.length; i++) {\n      var clip = clipList[i];\n\n      if (forwardToLast) {\n        // Move to last frame before stop\n        clip.onframe(this._target, 1);\n      }\n\n      animation && animation.removeClip(clip);\n    }\n\n    clipList.length = 0;\n  },\n\n  /**\n   * Set when animation delay starts\n   * @param  {number} time 单位ms\n   * @return {module:zrender/animation/Animator}\n   */\n  delay: function (time) {\n    this._delay = time;\n    return this;\n  },\n\n  /**\n   * Add callback for animation end\n   * @param  {Function} cb\n   * @return {module:zrender/animation/Animator}\n   */\n  done: function (cb) {\n    if (cb) {\n      this._doneList.push(cb);\n    }\n\n    return this;\n  },\n\n  /**\n   * @return {Array.<module:zrender/animation/Clip>}\n   */\n  getClips: function () {\n    return this._clipList;\n  }\n};\nvar _default = Animator;\nmodule.exports = _default;\n\n/***/ }),\n/* 550 */\n/***/ (function(module, exports) {\n\n// Simple LRU cache use doubly linked list\n// @module zrender/core/LRU\n\n/**\n * Simple double linked list. Compared with array, it has O(1) remove operation.\n * @constructor\n */\nvar LinkedList = function () {\n  /**\n   * @type {module:zrender/core/LRU~Entry}\n   */\n  this.head = null;\n  /**\n   * @type {module:zrender/core/LRU~Entry}\n   */\n\n  this.tail = null;\n  this._len = 0;\n};\n\nvar linkedListProto = LinkedList.prototype;\n/**\n * Insert a new value at the tail\n * @param  {} val\n * @return {module:zrender/core/LRU~Entry}\n */\n\nlinkedListProto.insert = function (val) {\n  var entry = new Entry(val);\n  this.insertEntry(entry);\n  return entry;\n};\n/**\n * Insert an entry at the tail\n * @param  {module:zrender/core/LRU~Entry} entry\n */\n\n\nlinkedListProto.insertEntry = function (entry) {\n  if (!this.head) {\n    this.head = this.tail = entry;\n  } else {\n    this.tail.next = entry;\n    entry.prev = this.tail;\n    entry.next = null;\n    this.tail = entry;\n  }\n\n  this._len++;\n};\n/**\n * Remove entry.\n * @param  {module:zrender/core/LRU~Entry} entry\n */\n\n\nlinkedListProto.remove = function (entry) {\n  var prev = entry.prev;\n  var next = entry.next;\n\n  if (prev) {\n    prev.next = next;\n  } else {\n    // Is head\n    this.head = next;\n  }\n\n  if (next) {\n    next.prev = prev;\n  } else {\n    // Is tail\n    this.tail = prev;\n  }\n\n  entry.next = entry.prev = null;\n  this._len--;\n};\n/**\n * @return {number}\n */\n\n\nlinkedListProto.len = function () {\n  return this._len;\n};\n/**\n * Clear list\n */\n\n\nlinkedListProto.clear = function () {\n  this.head = this.tail = null;\n  this._len = 0;\n};\n/**\n * @constructor\n * @param {} val\n */\n\n\nvar Entry = function (val) {\n  /**\n   * @type {}\n   */\n  this.value = val;\n  /**\n   * @type {module:zrender/core/LRU~Entry}\n   */\n\n  this.next;\n  /**\n   * @type {module:zrender/core/LRU~Entry}\n   */\n\n  this.prev;\n};\n/**\n * LRU Cache\n * @constructor\n * @alias module:zrender/core/LRU\n */\n\n\nvar LRU = function (maxSize) {\n  this._list = new LinkedList();\n  this._map = {};\n  this._maxSize = maxSize || 10;\n  this._lastRemovedEntry = null;\n};\n\nvar LRUProto = LRU.prototype;\n/**\n * @param  {string} key\n * @param  {} value\n * @return {} Removed value\n */\n\nLRUProto.put = function (key, value) {\n  var list = this._list;\n  var map = this._map;\n  var removed = null;\n\n  if (map[key] == null) {\n    var len = list.len(); // Reuse last removed entry\n\n    var entry = this._lastRemovedEntry;\n\n    if (len >= this._maxSize && len > 0) {\n      // Remove the least recently used\n      var leastUsedEntry = list.head;\n      list.remove(leastUsedEntry);\n      delete map[leastUsedEntry.key];\n      removed = leastUsedEntry.value;\n      this._lastRemovedEntry = leastUsedEntry;\n    }\n\n    if (entry) {\n      entry.value = value;\n    } else {\n      entry = new Entry(value);\n    }\n\n    entry.key = key;\n    list.insertEntry(entry);\n    map[key] = entry;\n  }\n\n  return removed;\n};\n/**\n * @param  {string} key\n * @return {}\n */\n\n\nLRUProto.get = function (key) {\n  var entry = this._map[key];\n  var list = this._list;\n\n  if (entry != null) {\n    // Put the latest used entry in the tail\n    if (entry !== list.tail) {\n      list.remove(entry);\n      list.insertEntry(entry);\n    }\n\n    return entry.value;\n  }\n};\n/**\n * Clear the cache\n */\n\n\nLRUProto.clear = function () {\n  this._list.clear();\n\n  this._map = {};\n};\n\nvar _default = LRU;\nmodule.exports = _default;\n\n/***/ }),\n/* 551 */\n/***/ (function(module, exports) {\n\nvar SHADOW_PROPS = {\n  'shadowBlur': 1,\n  'shadowOffsetX': 1,\n  'shadowOffsetY': 1,\n  'textShadowBlur': 1,\n  'textShadowOffsetX': 1,\n  'textShadowOffsetY': 1,\n  'textBoxShadowBlur': 1,\n  'textBoxShadowOffsetX': 1,\n  'textBoxShadowOffsetY': 1\n};\n\nfunction _default(ctx, propName, value) {\n  if (SHADOW_PROPS.hasOwnProperty(propName)) {\n    return value *= ctx.dpr;\n  }\n\n  return value;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 552 */\n/***/ (function(module, exports) {\n\nvar Pattern = function (image, repeat) {\n  // Should do nothing more in this constructor. Because gradient can be\n  // declard by `color: {image: ...}`, where this constructor will not be called.\n  this.image = image;\n  this.repeat = repeat; // Can be cloned\n\n  this.type = 'pattern';\n};\n\nPattern.prototype.getCanvasPattern = function (ctx) {\n  return ctx.createPattern(this.image, this.repeat || 'repeat');\n};\n\nvar _default = Pattern;\nmodule.exports = _default;\n\n/***/ }),\n/* 553 */\n/***/ (function(module, exports) {\n\nvar _default = typeof window !== 'undefined' && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || // https://github.com/ecomfe/zrender/issues/189#issuecomment-224919809\nwindow.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function (func) {\n  setTimeout(func, 16);\n};\n\nmodule.exports = _default;\n\n/***/ }),\n/* 554 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar textHelper = __webpack_require__(326);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar _constant = __webpack_require__(325);\n\nvar WILL_BE_RESTORED = _constant.WILL_BE_RESTORED;\n\n/**\n * Mixin for drawing text in a element bounding rect\n * @module zrender/mixin/RectText\n */\nvar tmpRect = new BoundingRect();\n\nvar RectText = function () {};\n\nRectText.prototype = {\n  constructor: RectText,\n\n  /**\n   * Draw text in a rect with specified position.\n   * @param  {CanvasRenderingContext2D} ctx\n   * @param  {Object} rect Displayable rect\n   */\n  drawRectText: function (ctx, rect) {\n    var style = this.style;\n    rect = style.textRect || rect; // Optimize, avoid normalize every time.\n\n    this.__dirty && textHelper.normalizeTextStyle(style, true);\n    var text = style.text; // Convert to string\n\n    text != null && (text += '');\n\n    if (!textHelper.needDrawText(text, style)) {\n      return;\n    } // FIXME\n    // Do not provide prevEl to `textHelper.renderText` for ctx prop cache,\n    // but use `ctx.save()` and `ctx.restore()`. Because the cache for rect\n    // text propably break the cache for its host elements.\n\n\n    ctx.save(); // Transform rect to view space\n\n    var transform = this.transform;\n\n    if (!style.transformText) {\n      if (transform) {\n        tmpRect.copy(rect);\n        tmpRect.applyTransform(transform);\n        rect = tmpRect;\n      }\n    } else {\n      this.setTransform(ctx);\n    } // transformText and textRotation can not be used at the same time.\n\n\n    textHelper.renderText(this, ctx, text, style, rect, WILL_BE_RESTORED);\n    ctx.restore();\n  }\n};\nvar _default = RectText;\nmodule.exports = _default;\n\n/***/ }),\n/* 555 */\n/***/ (function(module, exports) {\n\n/**\n * @param {Object} ctx\n * @param {Object} shape\n * @param {number} shape.x\n * @param {number} shape.y\n * @param {number} shape.width\n * @param {number} shape.height\n * @param {number} shape.r\n */\nfunction buildPath(ctx, shape) {\n  var x = shape.x;\n  var y = shape.y;\n  var width = shape.width;\n  var height = shape.height;\n  var r = shape.r;\n  var r1;\n  var r2;\n  var r3;\n  var r4; // Convert width and height to positive for better borderRadius\n\n  if (width < 0) {\n    x = x + width;\n    width = -width;\n  }\n\n  if (height < 0) {\n    y = y + height;\n    height = -height;\n  }\n\n  if (typeof r === 'number') {\n    r1 = r2 = r3 = r4 = r;\n  } else if (r instanceof Array) {\n    if (r.length === 1) {\n      r1 = r2 = r3 = r4 = r[0];\n    } else if (r.length === 2) {\n      r1 = r3 = r[0];\n      r2 = r4 = r[1];\n    } else if (r.length === 3) {\n      r1 = r[0];\n      r2 = r4 = r[1];\n      r3 = r[2];\n    } else {\n      r1 = r[0];\n      r2 = r[1];\n      r3 = r[2];\n      r4 = r[3];\n    }\n  } else {\n    r1 = r2 = r3 = r4 = 0;\n  }\n\n  var total;\n\n  if (r1 + r2 > width) {\n    total = r1 + r2;\n    r1 *= width / total;\n    r2 *= width / total;\n  }\n\n  if (r3 + r4 > width) {\n    total = r3 + r4;\n    r3 *= width / total;\n    r4 *= width / total;\n  }\n\n  if (r2 + r3 > height) {\n    total = r2 + r3;\n    r2 *= height / total;\n    r3 *= height / total;\n  }\n\n  if (r1 + r4 > height) {\n    total = r1 + r4;\n    r1 *= height / total;\n    r4 *= height / total;\n  }\n\n  ctx.moveTo(x + r1, y);\n  ctx.lineTo(x + width - r2, y);\n  r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n  ctx.lineTo(x + width, y + height - r3);\n  r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n  ctx.lineTo(x + r4, y + height);\n  r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n  ctx.lineTo(x, y + r1);\n  r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n}\n\nexports.buildPath = buildPath;\n\n/***/ }),\n/* 556 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\nvar filter = _util.filter;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar indexOf = _util.indexOf;\nvar isObject = _util.isObject;\nvar isString = _util.isString;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\nvar clone = _util.clone;\nvar merge = _util.merge;\nvar extend = _util.extend;\nvar mixin = _util.mixin;\n\nvar modelUtil = __webpack_require__(31);\n\nvar Model = __webpack_require__(67);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar globalDefault = __webpack_require__(1030);\n\nvar colorPaletteMixin = __webpack_require__(568);\n\nvar _sourceHelper = __webpack_require__(144);\n\nvar resetSourceDefaulter = _sourceHelper.resetSourceDefaulter;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * ECharts global model\n *\n * @module {echarts/model/Global}\n */\n\n/**\n * Caution: If the mechanism should be changed some day, these cases\n * should be considered:\n *\n * (1) In `merge option` mode, if using the same option to call `setOption`\n * many times, the result should be the same (try our best to ensure that).\n * (2) In `merge option` mode, if a component has no id/name specified, it\n * will be merged by index, and the result sequence of the components is\n * consistent to the original sequence.\n * (3) `reset` feature (in toolbox). Find detailed info in comments about\n * `mergeOption` in module:echarts/model/OptionManager.\n */\nvar OPTION_INNER_KEY = '\\0_ec_inner';\n/**\n * @alias module:echarts/model/Global\n *\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {Object} theme\n */\n\nvar GlobalModel = Model.extend({\n  init: function (option, parentModel, theme, optionManager) {\n    theme = theme || {};\n    this.option = null; // Mark as not initialized.\n\n    /**\n     * @type {module:echarts/model/Model}\n     * @private\n     */\n\n    this._theme = new Model(theme);\n    /**\n     * @type {module:echarts/model/OptionManager}\n     */\n\n    this._optionManager = optionManager;\n  },\n  setOption: function (option, optionPreprocessorFuncs) {\n    assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\n\n    this._optionManager.setOption(option, optionPreprocessorFuncs);\n\n    this.resetOption(null);\n  },\n\n  /**\n   * @param {string} type null/undefined: reset all.\n   *                      'recreate': force recreate all.\n   *                      'timeline': only reset timeline option\n   *                      'media': only reset media query option\n   * @return {boolean} Whether option changed.\n   */\n  resetOption: function (type) {\n    var optionChanged = false;\n    var optionManager = this._optionManager;\n\n    if (!type || type === 'recreate') {\n      var baseOption = optionManager.mountOption(type === 'recreate');\n\n      if (!this.option || type === 'recreate') {\n        initBase.call(this, baseOption);\n      } else {\n        this.restoreData();\n        this.mergeOption(baseOption);\n      }\n\n      optionChanged = true;\n    }\n\n    if (type === 'timeline' || type === 'media') {\n      this.restoreData();\n    }\n\n    if (!type || type === 'recreate' || type === 'timeline') {\n      var timelineOption = optionManager.getTimelineOption(this);\n      timelineOption && (this.mergeOption(timelineOption), optionChanged = true);\n    }\n\n    if (!type || type === 'recreate' || type === 'media') {\n      var mediaOptions = optionManager.getMediaOption(this, this._api);\n\n      if (mediaOptions.length) {\n        each(mediaOptions, function (mediaOption) {\n          this.mergeOption(mediaOption, optionChanged = true);\n        }, this);\n      }\n    }\n\n    return optionChanged;\n  },\n\n  /**\n   * @protected\n   */\n  mergeOption: function (newOption) {\n    var option = this.option;\n    var componentsMap = this._componentsMap;\n    var newCptTypes = [];\n    resetSourceDefaulter(this); // If no component class, merge directly.\n    // For example: color, animaiton options, etc.\n\n    each(newOption, function (componentOption, mainType) {\n      if (componentOption == null) {\n        return;\n      }\n\n      if (!ComponentModel.hasClass(mainType)) {\n        // globalSettingTask.dirty();\n        option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true);\n      } else if (mainType) {\n        newCptTypes.push(mainType);\n      }\n    });\n    ComponentModel.topologicalTravel(newCptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\n\n    function visitComponent(mainType, dependencies) {\n      var newCptOptionList = modelUtil.normalizeToArray(newOption[mainType]);\n      var mapResult = modelUtil.mappingToExists(componentsMap.get(mainType), newCptOptionList);\n      modelUtil.makeIdAndName(mapResult); // Set mainType and complete subType.\n\n      each(mapResult, function (item, index) {\n        var opt = item.option;\n\n        if (isObject(opt)) {\n          item.keyInfo.mainType = mainType;\n          item.keyInfo.subType = determineSubType(mainType, opt, item.exist);\n        }\n      });\n      var dependentModels = getComponentsByTypes(componentsMap, dependencies);\n      option[mainType] = [];\n      componentsMap.set(mainType, []);\n      each(mapResult, function (resultItem, index) {\n        var componentModel = resultItem.exist;\n        var newCptOption = resultItem.option;\n        assert(isObject(newCptOption) || componentModel, 'Empty component definition'); // Consider where is no new option and should be merged using {},\n        // see removeEdgeAndAdd in topologicalTravel and\n        // ComponentModel.getAllClassMainTypes.\n\n        if (!newCptOption) {\n          componentModel.mergeOption({}, this);\n          componentModel.optionUpdated({}, false);\n        } else {\n          var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\n\n          if (componentModel && componentModel.constructor === ComponentModelClass) {\n            componentModel.name = resultItem.keyInfo.name; // componentModel.settingTask && componentModel.settingTask.dirty();\n\n            componentModel.mergeOption(newCptOption, this);\n            componentModel.optionUpdated(newCptOption, false);\n          } else {\n            // PENDING Global as parent ?\n            var extraOpt = extend({\n              dependentModels: dependentModels,\n              componentIndex: index\n            }, resultItem.keyInfo);\n            componentModel = new ComponentModelClass(newCptOption, this, this, extraOpt);\n            extend(componentModel, extraOpt);\n            componentModel.init(newCptOption, this, this, extraOpt); // Call optionUpdated after init.\n            // newCptOption has been used as componentModel.option\n            // and may be merged with theme and default, so pass null\n            // to avoid confusion.\n\n            componentModel.optionUpdated(null, true);\n          }\n        }\n\n        componentsMap.get(mainType)[index] = componentModel;\n        option[mainType][index] = componentModel.option;\n      }, this); // Backup series for filtering.\n\n      if (mainType === 'series') {\n        createSeriesIndices(this, componentsMap.get('series'));\n      }\n    }\n\n    this._seriesIndicesMap = createHashMap(this._seriesIndices = this._seriesIndices || []);\n  },\n\n  /**\n   * Get option for output (cloned option and inner info removed)\n   * @public\n   * @return {Object}\n   */\n  getOption: function () {\n    var option = clone(this.option);\n    each(option, function (opts, mainType) {\n      if (ComponentModel.hasClass(mainType)) {\n        var opts = modelUtil.normalizeToArray(opts);\n\n        for (var i = opts.length - 1; i >= 0; i--) {\n          // Remove options with inner id.\n          if (modelUtil.isIdInner(opts[i])) {\n            opts.splice(i, 1);\n          }\n        }\n\n        option[mainType] = opts;\n      }\n    });\n    delete option[OPTION_INNER_KEY];\n    return option;\n  },\n\n  /**\n   * @return {module:echarts/model/Model}\n   */\n  getTheme: function () {\n    return this._theme;\n  },\n\n  /**\n   * @param {string} mainType\n   * @param {number} [idx=0]\n   * @return {module:echarts/model/Component}\n   */\n  getComponent: function (mainType, idx) {\n    var list = this._componentsMap.get(mainType);\n\n    if (list) {\n      return list[idx || 0];\n    }\n  },\n\n  /**\n   * If none of index and id and name used, return all components with mainType.\n   * @param {Object} condition\n   * @param {string} condition.mainType\n   * @param {string} [condition.subType] If ignore, only query by mainType\n   * @param {number|Array.<number>} [condition.index] Either input index or id or name.\n   * @param {string|Array.<string>} [condition.id] Either input index or id or name.\n   * @param {string|Array.<string>} [condition.name] Either input index or id or name.\n   * @return {Array.<module:echarts/model/Component>}\n   */\n  queryComponents: function (condition) {\n    var mainType = condition.mainType;\n\n    if (!mainType) {\n      return [];\n    }\n\n    var index = condition.index;\n    var id = condition.id;\n    var name = condition.name;\n\n    var cpts = this._componentsMap.get(mainType);\n\n    if (!cpts || !cpts.length) {\n      return [];\n    }\n\n    var result;\n\n    if (index != null) {\n      if (!isArray(index)) {\n        index = [index];\n      }\n\n      result = filter(map(index, function (idx) {\n        return cpts[idx];\n      }), function (val) {\n        return !!val;\n      });\n    } else if (id != null) {\n      var isIdArray = isArray(id);\n      result = filter(cpts, function (cpt) {\n        return isIdArray && indexOf(id, cpt.id) >= 0 || !isIdArray && cpt.id === id;\n      });\n    } else if (name != null) {\n      var isNameArray = isArray(name);\n      result = filter(cpts, function (cpt) {\n        return isNameArray && indexOf(name, cpt.name) >= 0 || !isNameArray && cpt.name === name;\n      });\n    } else {\n      // Return all components with mainType\n      result = cpts.slice();\n    }\n\n    return filterBySubType(result, condition);\n  },\n\n  /**\n   * The interface is different from queryComponents,\n   * which is convenient for inner usage.\n   *\n   * @usage\n   * var result = findComponents(\n   *     {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}\n   * );\n   * var result = findComponents(\n   *     {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}\n   * );\n   * var result = findComponents(\n   *     {mainType: 'series',\n   *     filter: function (model, index) {...}}\n   * );\n   * // result like [component0, componnet1, ...]\n   *\n   * @param {Object} condition\n   * @param {string} condition.mainType Mandatory.\n   * @param {string} [condition.subType] Optional.\n   * @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName},\n   *        where xxx is mainType.\n   *        If query attribute is null/undefined or has no index/id/name,\n   *        do not filtering by query conditions, which is convenient for\n   *        no-payload situations or when target of action is global.\n   * @param {Function} [condition.filter] parameter: component, return boolean.\n   * @return {Array.<module:echarts/model/Component>}\n   */\n  findComponents: function (condition) {\n    var query = condition.query;\n    var mainType = condition.mainType;\n    var queryCond = getQueryCond(query);\n    var result = queryCond ? this.queryComponents(queryCond) : this._componentsMap.get(mainType);\n    return doFilter(filterBySubType(result, condition));\n\n    function getQueryCond(q) {\n      var indexAttr = mainType + 'Index';\n      var idAttr = mainType + 'Id';\n      var nameAttr = mainType + 'Name';\n      return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? {\n        mainType: mainType,\n        // subType will be filtered finally.\n        index: q[indexAttr],\n        id: q[idAttr],\n        name: q[nameAttr]\n      } : null;\n    }\n\n    function doFilter(res) {\n      return condition.filter ? filter(res, condition.filter) : res;\n    }\n  },\n\n  /**\n   * @usage\n   * eachComponent('legend', function (legendModel, index) {\n   *     ...\n   * });\n   * eachComponent(function (componentType, model, index) {\n   *     // componentType does not include subType\n   *     // (componentType is 'xxx' but not 'xxx.aa')\n   * });\n   * eachComponent(\n   *     {mainType: 'dataZoom', query: {dataZoomId: 'abc'}},\n   *     function (model, index) {...}\n   * );\n   * eachComponent(\n   *     {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}},\n   *     function (model, index) {...}\n   * );\n   *\n   * @param {string|Object=} mainType When mainType is object, the definition\n   *                                  is the same as the method 'findComponents'.\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachComponent: function (mainType, cb, context) {\n    var componentsMap = this._componentsMap;\n\n    if (typeof mainType === 'function') {\n      context = cb;\n      cb = mainType;\n      componentsMap.each(function (components, componentType) {\n        each(components, function (component, index) {\n          cb.call(context, componentType, component, index);\n        });\n      });\n    } else if (isString(mainType)) {\n      each(componentsMap.get(mainType), cb, context);\n    } else if (isObject(mainType)) {\n      var queryResult = this.findComponents(mainType);\n      each(queryResult, cb, context);\n    }\n  },\n\n  /**\n   * @param {string} name\n   * @return {Array.<module:echarts/model/Series>}\n   */\n  getSeriesByName: function (name) {\n    var series = this._componentsMap.get('series');\n\n    return filter(series, function (oneSeries) {\n      return oneSeries.name === name;\n    });\n  },\n\n  /**\n   * @param {number} seriesIndex\n   * @return {module:echarts/model/Series}\n   */\n  getSeriesByIndex: function (seriesIndex) {\n    return this._componentsMap.get('series')[seriesIndex];\n  },\n\n  /**\n   * Get series list before filtered by type.\n   * FIXME: rename to getRawSeriesByType?\n   *\n   * @param {string} subType\n   * @return {Array.<module:echarts/model/Series>}\n   */\n  getSeriesByType: function (subType) {\n    var series = this._componentsMap.get('series');\n\n    return filter(series, function (oneSeries) {\n      return oneSeries.subType === subType;\n    });\n  },\n\n  /**\n   * @return {Array.<module:echarts/model/Series>}\n   */\n  getSeries: function () {\n    return this._componentsMap.get('series').slice();\n  },\n\n  /**\n   * @return {number}\n   */\n  getSeriesCount: function () {\n    return this._componentsMap.get('series').length;\n  },\n\n  /**\n   * After filtering, series may be different\n   * frome raw series.\n   *\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachSeries: function (cb, context) {\n    assertSeriesInitialized(this);\n    each(this._seriesIndices, function (rawSeriesIndex) {\n      var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n      cb.call(context, series, rawSeriesIndex);\n    }, this);\n  },\n\n  /**\n   * Iterate raw series before filtered.\n   *\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachRawSeries: function (cb, context) {\n    each(this._componentsMap.get('series'), cb, context);\n  },\n\n  /**\n   * After filtering, series may be different.\n   * frome raw series.\n   *\n   * @param {string} subType.\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachSeriesByType: function (subType, cb, context) {\n    assertSeriesInitialized(this);\n    each(this._seriesIndices, function (rawSeriesIndex) {\n      var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n      if (series.subType === subType) {\n        cb.call(context, series, rawSeriesIndex);\n      }\n    }, this);\n  },\n\n  /**\n   * Iterate raw series before filtered of given type.\n   *\n   * @parma {string} subType\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachRawSeriesByType: function (subType, cb, context) {\n    return each(this.getSeriesByType(subType), cb, context);\n  },\n\n  /**\n   * @param {module:echarts/model/Series} seriesModel\n   */\n  isSeriesFiltered: function (seriesModel) {\n    assertSeriesInitialized(this);\n    return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\n  },\n\n  /**\n   * @return {Array.<number>}\n   */\n  getCurrentSeriesIndices: function () {\n    return (this._seriesIndices || []).slice();\n  },\n\n  /**\n   * @param {Function} cb\n   * @param {*} context\n   */\n  filterSeries: function (cb, context) {\n    assertSeriesInitialized(this);\n    var filteredSeries = filter(this._componentsMap.get('series'), cb, context);\n    createSeriesIndices(this, filteredSeries);\n  },\n  restoreData: function (payload) {\n    var componentsMap = this._componentsMap;\n    createSeriesIndices(this, componentsMap.get('series'));\n    var componentTypes = [];\n    componentsMap.each(function (components, componentType) {\n      componentTypes.push(componentType);\n    });\n    ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType, dependencies) {\n      each(componentsMap.get(componentType), function (component) {\n        (componentType !== 'series' || !isNotTargetSeries(component, payload)) && component.restoreData();\n      });\n    });\n  }\n});\n\nfunction isNotTargetSeries(seriesModel, payload) {\n  if (payload) {\n    var index = payload.seiresIndex;\n    var id = payload.seriesId;\n    var name = payload.seriesName;\n    return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name != null && seriesModel.name !== name;\n  }\n}\n/**\n * @inner\n */\n\n\nfunction mergeTheme(option, theme) {\n  // PENDING\n  // NOT use `colorLayer` in theme if option has `color`\n  var notMergeColorLayer = option.color && !option.colorLayer;\n  each(theme, function (themeItem, name) {\n    if (name === 'colorLayer' && notMergeColorLayer) {\n      return;\n    } // 如果有 component model 则把具体的 merge 逻辑交给该 model 处理\n\n\n    if (!ComponentModel.hasClass(name)) {\n      if (typeof themeItem === 'object') {\n        option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false);\n      } else {\n        if (option[name] == null) {\n          option[name] = themeItem;\n        }\n      }\n    }\n  });\n}\n\nfunction initBase(baseOption) {\n  baseOption = baseOption; // Using OPTION_INNER_KEY to mark that this option can not be used outside,\n  // i.e. `chart.setOption(chart.getModel().option);` is forbiden.\n\n  this.option = {};\n  this.option[OPTION_INNER_KEY] = 1;\n  /**\n   * Init with series: [], in case of calling findSeries method\n   * before series initialized.\n   * @type {Object.<string, Array.<module:echarts/model/Model>>}\n   * @private\n   */\n\n  this._componentsMap = createHashMap({\n    series: []\n  });\n  /**\n   * Mapping between filtered series list and raw series list.\n   * key: filtered series indices, value: raw series indices.\n   * @type {Array.<nubmer>}\n   * @private\n   */\n\n  this._seriesIndices;\n  this._seriesIndicesMap;\n  mergeTheme(baseOption, this._theme.option); // TODO Needs clone when merging to the unexisted property\n\n  merge(baseOption, globalDefault, false);\n  this.mergeOption(baseOption);\n}\n/**\n * @inner\n * @param {Array.<string>|string} types model types\n * @return {Object} key: {string} type, value: {Array.<Object>} models\n */\n\n\nfunction getComponentsByTypes(componentsMap, types) {\n  if (!isArray(types)) {\n    types = types ? [types] : [];\n  }\n\n  var ret = {};\n  each(types, function (type) {\n    ret[type] = (componentsMap.get(type) || []).slice();\n  });\n  return ret;\n}\n/**\n * @inner\n */\n\n\nfunction determineSubType(mainType, newCptOption, existComponent) {\n  var subType = newCptOption.type ? newCptOption.type : existComponent ? existComponent.subType // Use determineSubType only when there is no existComponent.\n  : ComponentModel.determineSubType(mainType, newCptOption); // tooltip, markline, markpoint may always has no subType\n\n  return subType;\n}\n/**\n * @inner\n */\n\n\nfunction createSeriesIndices(ecModel, seriesModels) {\n  ecModel._seriesIndicesMap = createHashMap(ecModel._seriesIndices = map(seriesModels, function (series) {\n    return series.componentIndex;\n  }) || []);\n}\n/**\n * @inner\n */\n\n\nfunction filterBySubType(components, condition) {\n  // Using hasOwnProperty for restrict. Consider\n  // subType is undefined in user payload.\n  return condition.hasOwnProperty('subType') ? filter(components, function (cpt) {\n    return cpt.subType === condition.subType;\n  }) : components;\n}\n/**\n * @inner\n */\n\n\nfunction assertSeriesInitialized(ecModel) {}\n\nmixin(GlobalModel, colorPaletteMixin);\nvar _default = GlobalModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 557 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\nvar PathProxy = __webpack_require__(213);\n\nvar transformPath = __webpack_require__(1019);\n\n// command chars\n// var cc = [\n//     'm', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z',\n//     'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'\n// ];\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\n\nvar vMag = function (v) {\n  return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n};\n\nvar vRatio = function (u, v) {\n  return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n};\n\nvar vAngle = function (u, v) {\n  return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n};\n\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n  var psi = psiDeg * (PI / 180.0);\n  var xp = mathCos(psi) * (x1 - x2) / 2.0 + mathSin(psi) * (y1 - y2) / 2.0;\n  var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + mathCos(psi) * (y1 - y2) / 2.0;\n  var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n\n  if (lambda > 1) {\n    rx *= mathSqrt(lambda);\n    ry *= mathSqrt(lambda);\n  }\n\n  var f = (fa === fs ? -1 : 1) * mathSqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;\n  var cxp = f * rx * yp / ry;\n  var cyp = f * -ry * xp / rx;\n  var cx = (x1 + x2) / 2.0 + mathCos(psi) * cxp - mathSin(psi) * cyp;\n  var cy = (y1 + y2) / 2.0 + mathSin(psi) * cxp + mathCos(psi) * cyp;\n  var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n  var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n  var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n  var dTheta = vAngle(u, v);\n\n  if (vRatio(u, v) <= -1) {\n    dTheta = PI;\n  }\n\n  if (vRatio(u, v) >= 1) {\n    dTheta = 0;\n  }\n\n  if (fs === 0 && dTheta > 0) {\n    dTheta = dTheta - 2 * PI;\n  }\n\n  if (fs === 1 && dTheta < 0) {\n    dTheta = dTheta + 2 * PI;\n  }\n\n  path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\n\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig; // Consider case:\n// (1) delimiter can be comma or space, where continuous commas\n// or spaces should be seen as one comma.\n// (2) value can be like:\n// '2e-4', 'l.5.9' (ignore 0), 'M-10-10', 'l-2.43e-1,34.9983',\n// 'l-.5E1,54', '121-23-44-11' (no delimiter)\n\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g; // var valueSplitReg = /[\\s,]+/;\n\nfunction createPathProxyFromString(data) {\n  if (!data) {\n    return new PathProxy();\n  } // var data = data.replace(/-/g, ' -')\n  //     .replace(/  /g, ' ')\n  //     .replace(/ /g, ',')\n  //     .replace(/,,/g, ',');\n  // var n;\n  // create pipes so that we can split the data\n  // for (n = 0; n < cc.length; n++) {\n  //     cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n  // }\n  // data = data.replace(/-/g, ',-');\n  // create array\n  // var arr = cs.split('|');\n  // init context point\n\n\n  var cpx = 0;\n  var cpy = 0;\n  var subpathX = cpx;\n  var subpathY = cpy;\n  var prevCmd;\n  var path = new PathProxy();\n  var CMD = PathProxy.CMD; // commandReg.lastIndex = 0;\n  // var cmdResult;\n  // while ((cmdResult = commandReg.exec(data)) != null) {\n  //     var cmdStr = cmdResult[1];\n  //     var cmdContent = cmdResult[2];\n\n  var cmdList = data.match(commandReg);\n\n  for (var l = 0; l < cmdList.length; l++) {\n    var cmdText = cmdList[l];\n    var cmdStr = cmdText.charAt(0);\n    var cmd; // String#split is faster a little bit than String#replace or RegExp#exec.\n    // var p = cmdContent.split(valueSplitReg);\n    // var pLen = 0;\n    // for (var i = 0; i < p.length; i++) {\n    //     // '' and other invalid str => NaN\n    //     var val = parseFloat(p[i]);\n    //     !isNaN(val) && (p[pLen++] = val);\n    // }\n\n    var p = cmdText.match(numberReg) || [];\n    var pLen = p.length;\n\n    for (var i = 0; i < pLen; i++) {\n      p[i] = parseFloat(p[i]);\n    }\n\n    var off = 0;\n\n    while (off < pLen) {\n      var ctlPtx;\n      var ctlPty;\n      var rx;\n      var ry;\n      var psi;\n      var fa;\n      var fs;\n      var x1 = cpx;\n      var y1 = cpy; // convert l, H, h, V, and v to L\n\n      switch (cmdStr) {\n        case 'l':\n          cpx += p[off++];\n          cpy += p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'L':\n          cpx = p[off++];\n          cpy = p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'm':\n          cpx += p[off++];\n          cpy += p[off++];\n          cmd = CMD.M;\n          path.addData(cmd, cpx, cpy);\n          subpathX = cpx;\n          subpathY = cpy;\n          cmdStr = 'l';\n          break;\n\n        case 'M':\n          cpx = p[off++];\n          cpy = p[off++];\n          cmd = CMD.M;\n          path.addData(cmd, cpx, cpy);\n          subpathX = cpx;\n          subpathY = cpy;\n          cmdStr = 'L';\n          break;\n\n        case 'h':\n          cpx += p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'H':\n          cpx = p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'v':\n          cpy += p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'V':\n          cpy = p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'C':\n          cmd = CMD.C;\n          path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n          cpx = p[off - 2];\n          cpy = p[off - 1];\n          break;\n\n        case 'c':\n          cmd = CMD.C;\n          path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n          cpx += p[off - 2];\n          cpy += p[off - 1];\n          break;\n\n        case 'S':\n          ctlPtx = cpx;\n          ctlPty = cpy;\n          var len = path.len();\n          var pathData = path.data;\n\n          if (prevCmd === CMD.C) {\n            ctlPtx += cpx - pathData[len - 4];\n            ctlPty += cpy - pathData[len - 3];\n          }\n\n          cmd = CMD.C;\n          x1 = p[off++];\n          y1 = p[off++];\n          cpx = p[off++];\n          cpy = p[off++];\n          path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n          break;\n\n        case 's':\n          ctlPtx = cpx;\n          ctlPty = cpy;\n          var len = path.len();\n          var pathData = path.data;\n\n          if (prevCmd === CMD.C) {\n            ctlPtx += cpx - pathData[len - 4];\n            ctlPty += cpy - pathData[len - 3];\n          }\n\n          cmd = CMD.C;\n          x1 = cpx + p[off++];\n          y1 = cpy + p[off++];\n          cpx += p[off++];\n          cpy += p[off++];\n          path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n          break;\n\n        case 'Q':\n          x1 = p[off++];\n          y1 = p[off++];\n          cpx = p[off++];\n          cpy = p[off++];\n          cmd = CMD.Q;\n          path.addData(cmd, x1, y1, cpx, cpy);\n          break;\n\n        case 'q':\n          x1 = p[off++] + cpx;\n          y1 = p[off++] + cpy;\n          cpx += p[off++];\n          cpy += p[off++];\n          cmd = CMD.Q;\n          path.addData(cmd, x1, y1, cpx, cpy);\n          break;\n\n        case 'T':\n          ctlPtx = cpx;\n          ctlPty = cpy;\n          var len = path.len();\n          var pathData = path.data;\n\n          if (prevCmd === CMD.Q) {\n            ctlPtx += cpx - pathData[len - 4];\n            ctlPty += cpy - pathData[len - 3];\n          }\n\n          cpx = p[off++];\n          cpy = p[off++];\n          cmd = CMD.Q;\n          path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n          break;\n\n        case 't':\n          ctlPtx = cpx;\n          ctlPty = cpy;\n          var len = path.len();\n          var pathData = path.data;\n\n          if (prevCmd === CMD.Q) {\n            ctlPtx += cpx - pathData[len - 4];\n            ctlPty += cpy - pathData[len - 3];\n          }\n\n          cpx += p[off++];\n          cpy += p[off++];\n          cmd = CMD.Q;\n          path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n          break;\n\n        case 'A':\n          rx = p[off++];\n          ry = p[off++];\n          psi = p[off++];\n          fa = p[off++];\n          fs = p[off++];\n          x1 = cpx, y1 = cpy;\n          cpx = p[off++];\n          cpy = p[off++];\n          cmd = CMD.A;\n          processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n          break;\n\n        case 'a':\n          rx = p[off++];\n          ry = p[off++];\n          psi = p[off++];\n          fa = p[off++];\n          fs = p[off++];\n          x1 = cpx, y1 = cpy;\n          cpx += p[off++];\n          cpy += p[off++];\n          cmd = CMD.A;\n          processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n          break;\n      }\n    }\n\n    if (cmdStr === 'z' || cmdStr === 'Z') {\n      cmd = CMD.Z;\n      path.addData(cmd); // z may be in the middle of the path.\n\n      cpx = subpathX;\n      cpy = subpathY;\n    }\n\n    prevCmd = cmd;\n  }\n\n  path.toStatic();\n  return path;\n} // TODO Optimize double memory cost problem\n\n\nfunction createPathOptions(str, opts) {\n  var pathProxy = createPathProxyFromString(str);\n  opts = opts || {};\n\n  opts.buildPath = function (path) {\n    if (path.setData) {\n      path.setData(pathProxy.data); // Svg and vml renderer don't have context\n\n      var ctx = path.getContext();\n\n      if (ctx) {\n        path.rebuildPath(ctx);\n      }\n    } else {\n      var ctx = path;\n      pathProxy.rebuildPath(ctx);\n    }\n  };\n\n  opts.applyTransform = function (m) {\n    transformPath(pathProxy, m);\n    this.dirty(true);\n  };\n\n  return opts;\n}\n/**\n * Create a Path object from path string data\n * http://www.w3.org/TR/SVG/paths.html#PathData\n * @param  {Object} opts Other options\n */\n\n\nfunction createFromString(str, opts) {\n  return new Path(createPathOptions(str, opts));\n}\n/**\n * Create a Path class from path string data\n * @param  {string} str\n * @param  {Object} opts Other options\n */\n\n\nfunction extendFromString(str, opts) {\n  return Path.extend(createPathOptions(str, opts));\n}\n/**\n * Merge multiple paths\n */\n// TODO Apply transform\n// TODO stroke dash\n// TODO Optimize double memory cost problem\n\n\nfunction mergePath(pathEls, opts) {\n  var pathList = [];\n  var len = pathEls.length;\n\n  for (var i = 0; i < len; i++) {\n    var pathEl = pathEls[i];\n\n    if (!pathEl.path) {\n      pathEl.createPathProxy();\n    }\n\n    if (pathEl.__dirtyPath) {\n      pathEl.buildPath(pathEl.path, pathEl.shape, true);\n    }\n\n    pathList.push(pathEl.path);\n  }\n\n  var pathBundle = new Path(opts); // Need path proxy.\n\n  pathBundle.createPathProxy();\n\n  pathBundle.buildPath = function (path) {\n    path.appendPath(pathList); // Svg and vml renderer don't have context\n\n    var ctx = path.getContext();\n\n    if (ctx) {\n      path.rebuildPath(ctx);\n    }\n  };\n\n  return pathBundle;\n}\n\nexports.createFromString = createFromString;\nexports.extendFromString = extendFromString;\nexports.mergePath = mergePath;\n\n/***/ }),\n/* 558 */\n/***/ (function(module, exports) {\n\n/**\n * 线段包含判断\n * @param  {number}  x0\n * @param  {number}  y0\n * @param  {number}  x1\n * @param  {number}  y1\n * @param  {number}  lineWidth\n * @param  {number}  x\n * @param  {number}  y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, lineWidth, x, y) {\n  if (lineWidth === 0) {\n    return false;\n  }\n\n  var _l = lineWidth;\n  var _a = 0;\n  var _b = x0; // Quick reject\n\n  if (y > y0 + _l && y > y1 + _l || y < y0 - _l && y < y1 - _l || x > x0 + _l && x > x1 + _l || x < x0 - _l && x < x1 - _l) {\n    return false;\n  }\n\n  if (x0 !== x1) {\n    _a = (y0 - y1) / (x0 - x1);\n    _b = (x0 * y1 - x1 * y0) / (x0 - x1);\n  } else {\n    return Math.abs(x - x0) <= _l / 2;\n  }\n\n  var tmp = _a * x - y + _b;\n\n  var _s = tmp * tmp / (_a * _a + 1);\n\n  return _s <= _l / 2 * _l / 2;\n}\n\nexports.containStroke = containStroke;\n\n/***/ }),\n/* 559 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _curve = __webpack_require__(152);\n\nvar quadraticProjectPoint = _curve.quadraticProjectPoint;\n\n/**\n * 二次贝塞尔曲线描边包含判断\n * @param  {number}  x0\n * @param  {number}  y0\n * @param  {number}  x1\n * @param  {number}  y1\n * @param  {number}  x2\n * @param  {number}  y2\n * @param  {number}  lineWidth\n * @param  {number}  x\n * @param  {number}  y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n  if (lineWidth === 0) {\n    return false;\n  }\n\n  var _l = lineWidth; // Quick reject\n\n  if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) {\n    return false;\n  }\n\n  var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n  return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;\n\n/***/ }),\n/* 560 */\n/***/ (function(module, exports) {\n\nvar PI2 = Math.PI * 2;\n\nfunction normalizeRadian(angle) {\n  angle %= PI2;\n\n  if (angle < 0) {\n    angle += PI2;\n  }\n\n  return angle;\n}\n\nexports.normalizeRadian = normalizeRadian;\n\n/***/ }),\n/* 561 */\n/***/ (function(module, exports) {\n\nfunction windingLine(x0, y0, x1, y1, x, y) {\n  if (y > y0 && y > y1 || y < y0 && y < y1) {\n    return 0;\n  } // Ignore horizontal line\n\n\n  if (y1 === y0) {\n    return 0;\n  }\n\n  var dir = y1 < y0 ? 1 : -1;\n  var t = (y - y0) / (y1 - y0); // Avoid winding error when intersection point is the connect point of two line of polygon\n\n  if (t === 1 || t === 0) {\n    dir = y1 < y0 ? 0.5 : -0.5;\n  }\n\n  var x_ = t * (x1 - x0) + x0; // If (x, y) on the line, considered as \"contain\".\n\n  return x_ === x ? Infinity : x_ > x ? dir : 0;\n}\n\nmodule.exports = windingLine;\n\n/***/ }),\n/* 562 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\n/**\n * 圆形\n * @module zrender/shape/Circle\n */\nvar _default = Path.extend({\n  type: 'circle',\n  shape: {\n    cx: 0,\n    cy: 0,\n    r: 0\n  },\n  buildPath: function (ctx, shape, inBundle) {\n    // Better stroking in ShapeBundle\n    // Always do it may have performence issue ( fill may be 2x more cost)\n    if (inBundle) {\n      ctx.moveTo(shape.cx + shape.r, shape.cy);\n    } // else {\n    //     if (ctx.allocate && !ctx.data.length) {\n    //         ctx.allocate(ctx.CMD_MEM_SIZE.A);\n    //     }\n    // }\n    // Better stroking in ShapeBundle\n    // ctx.moveTo(shape.cx + shape.r, shape.cy);\n\n\n    ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2, true);\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 563 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar env = __webpack_require__(66);\n\n// Fix weird bug in some version of IE11 (like 11.0.9600.178**),\n// where exception \"unexpected call to method or property access\"\n// might be thrown when calling ctx.fill or ctx.stroke after a path\n// whose area size is zero is drawn and ctx.clip() is called and\n// shadowBlur is set. See #4572, #3112, #5777.\n// (e.g.,\n//  ctx.moveTo(10, 10);\n//  ctx.lineTo(20, 10);\n//  ctx.closePath();\n//  ctx.clip();\n//  ctx.shadowBlur = 10;\n//  ...\n//  ctx.fill();\n// )\nvar shadowTemp = [['shadowBlur', 0], ['shadowColor', '#000'], ['shadowOffsetX', 0], ['shadowOffsetY', 0]];\n\nfunction _default(orignalBrush) {\n  // version string can be: '11.0'\n  return env.browser.ie && env.browser.version >= 11 ? function () {\n    var clipPaths = this.__clipPaths;\n    var style = this.style;\n    var modified;\n\n    if (clipPaths) {\n      for (var i = 0; i < clipPaths.length; i++) {\n        var clipPath = clipPaths[i];\n        var shape = clipPath && clipPath.shape;\n        var type = clipPath && clipPath.type;\n\n        if (shape && (type === 'sector' && shape.startAngle === shape.endAngle || type === 'rect' && (!shape.width || !shape.height))) {\n          for (var j = 0; j < shadowTemp.length; j++) {\n            // It is save to put shadowTemp static, because shadowTemp\n            // will be all modified each item brush called.\n            shadowTemp[j][2] = style[shadowTemp[j][0]];\n            style[shadowTemp[j][0]] = shadowTemp[j][1];\n          }\n\n          modified = true;\n          break;\n        }\n      }\n    }\n\n    orignalBrush.apply(this, arguments);\n\n    if (modified) {\n      for (var j = 0; j < shadowTemp.length; j++) {\n        style[shadowTemp[j][0]] = shadowTemp[j][2];\n      }\n    }\n  } : orignalBrush;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 564 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\nvar polyHelper = __webpack_require__(565);\n\n/**\n * 多边形\n * @module zrender/shape/Polygon\n */\nvar _default = Path.extend({\n  type: 'polygon',\n  shape: {\n    points: null,\n    smooth: false,\n    smoothConstraint: null\n  },\n  buildPath: function (ctx, shape) {\n    polyHelper.buildPath(ctx, shape, true);\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 565 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar smoothSpline = __webpack_require__(1022);\n\nvar smoothBezier = __webpack_require__(1023);\n\nfunction buildPath(ctx, shape, closePath) {\n  var points = shape.points;\n  var smooth = shape.smooth;\n\n  if (points && points.length >= 2) {\n    if (smooth && smooth !== 'spline') {\n      var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\n      ctx.moveTo(points[0][0], points[0][1]);\n      var len = points.length;\n\n      for (var i = 0; i < (closePath ? len : len - 1); i++) {\n        var cp1 = controlPoints[i * 2];\n        var cp2 = controlPoints[i * 2 + 1];\n        var p = points[(i + 1) % len];\n        ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\n      }\n    } else {\n      if (smooth === 'spline') {\n        points = smoothSpline(points, closePath);\n      }\n\n      ctx.moveTo(points[0][0], points[0][1]);\n\n      for (var i = 1, l = points.length; i < l; i++) {\n        ctx.lineTo(points[i][0], points[i][1]);\n      }\n    }\n\n    closePath && ctx.closePath();\n  }\n}\n\nexports.buildPath = buildPath;\n\n/***/ }),\n/* 566 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\nvar polyHelper = __webpack_require__(565);\n\n/**\n * @module zrender/graphic/shape/Polyline\n */\nvar _default = Path.extend({\n  type: 'polyline',\n  shape: {\n    points: null,\n    smooth: false,\n    smoothConstraint: null\n  },\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  buildPath: function (ctx, shape) {\n    polyHelper.buildPath(ctx, shape, false);\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 567 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\nvar _subPixelOptimize = __webpack_require__(404);\n\nvar subPixelOptimizeLine = _subPixelOptimize.subPixelOptimizeLine;\n\n/**\n * 直线\n * @module zrender/graphic/shape/Line\n */\n// Avoid create repeatly.\nvar subPixelOptimizeOutputShape = {};\n\nvar _default = Path.extend({\n  type: 'line',\n  shape: {\n    // Start point\n    x1: 0,\n    y1: 0,\n    // End point\n    x2: 0,\n    y2: 0,\n    percent: 1\n  },\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  buildPath: function (ctx, shape) {\n    var x1;\n    var y1;\n    var x2;\n    var y2;\n\n    if (this.subPixelOptimize) {\n      subPixelOptimizeLine(subPixelOptimizeOutputShape, shape, this.style);\n      x1 = subPixelOptimizeOutputShape.x1;\n      y1 = subPixelOptimizeOutputShape.y1;\n      x2 = subPixelOptimizeOutputShape.x2;\n      y2 = subPixelOptimizeOutputShape.y2;\n    } else {\n      x1 = shape.x1;\n      y1 = shape.y1;\n      x2 = shape.x2;\n      y2 = shape.y2;\n    }\n\n    var percent = shape.percent;\n\n    if (percent === 0) {\n      return;\n    }\n\n    ctx.moveTo(x1, y1);\n\n    if (percent < 1) {\n      x2 = x1 * (1 - percent) + x2 * percent;\n      y2 = y1 * (1 - percent) + y2 * percent;\n    }\n\n    ctx.lineTo(x2, y2);\n  },\n\n  /**\n   * Get point at percent\n   * @param  {number} percent\n   * @return {Array.<number>}\n   */\n  pointAt: function (p) {\n    var shape = this.shape;\n    return [shape.x1 * (1 - p) + shape.x2 * p, shape.y1 * (1 - p) + shape.y2 * p];\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 568 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\n\nfunction getNearestColorPalette(colors, requestColorNum) {\n  var paletteNum = colors.length; // TODO colors must be in order\n\n  for (var i = 0; i < paletteNum; i++) {\n    if (colors[i].length > requestColorNum) {\n      return colors[i];\n    }\n  }\n\n  return colors[paletteNum - 1];\n}\n\nvar _default = {\n  clearColorPalette: function () {\n    inner(this).colorIdx = 0;\n    inner(this).colorNameMap = {};\n  },\n\n  /**\n   * @param {string} name MUST NOT be null/undefined. Otherwise call this function\n   *                 twise with the same parameters will get different result.\n   * @param {Object} [scope=this]\n   * @param {Object} [requestColorNum]\n   * @return {string} color string.\n   */\n  getColorFromPalette: function (name, scope, requestColorNum) {\n    scope = scope || this;\n    var scopeFields = inner(scope);\n    var colorIdx = scopeFields.colorIdx || 0;\n    var colorNameMap = scopeFields.colorNameMap = scopeFields.colorNameMap || {}; // Use `hasOwnProperty` to avoid conflict with Object.prototype.\n\n    if (colorNameMap.hasOwnProperty(name)) {\n      return colorNameMap[name];\n    }\n\n    var defaultColorPalette = normalizeToArray(this.get('color', true));\n    var layeredColorPalette = this.get('colorLayer', true);\n    var colorPalette = requestColorNum == null || !layeredColorPalette ? defaultColorPalette : getNearestColorPalette(layeredColorPalette, requestColorNum); // In case can't find in layered color palette.\n\n    colorPalette = colorPalette || defaultColorPalette;\n\n    if (!colorPalette || !colorPalette.length) {\n      return;\n    }\n\n    var color = colorPalette[colorIdx];\n\n    if (name) {\n      colorNameMap[name] = color;\n    }\n\n    scopeFields.colorIdx = (colorIdx + 1) % colorPalette.length;\n    return color;\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 569 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar echartsAPIList = ['getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isDisposed', 'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption', 'getViewOfComponentModel', 'getViewOfSeriesModel']; // And `getCoordinateSystems` and `getComponentByElement` will be injected in echarts.js\n\nfunction ExtensionAPI(chartInstance) {\n  zrUtil.each(echartsAPIList, function (name) {\n    this[name] = zrUtil.bind(chartInstance[name], chartInstance);\n  }, this);\n}\n\nvar _default = ExtensionAPI;\nmodule.exports = _default;\n\n/***/ }),\n/* 570 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentModel = __webpack_require__(74);\n\nvar ComponentView = __webpack_require__(328);\n\nvar _sourceHelper = __webpack_require__(144);\n\nvar detectSourceFormat = _sourceHelper.detectSourceFormat;\n\nvar _sourceType = __webpack_require__(258);\n\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * This module is imported by echarts directly.\n *\n * Notice:\n * Always keep this file exists for backward compatibility.\n * Because before 4.1.0, dataset is an optional component,\n * some users may import this module manually.\n */\nComponentModel.extend({\n  type: 'dataset',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    // 'row', 'column'\n    seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n    // null/'auto': auto detect header, see \"module:echarts/data/helper/sourceHelper\"\n    sourceHeader: null,\n    dimensions: null,\n    source: null\n  },\n  optionUpdated: function () {\n    detectSourceFormat(this);\n  }\n});\nComponentView.extend({\n  type: 'dataset'\n});\n\n/***/ }),\n/* 571 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Group = __webpack_require__(177);\n\nvar ZImage = __webpack_require__(211);\n\nvar Text = __webpack_require__(178);\n\nvar Circle = __webpack_require__(562);\n\nvar Rect = __webpack_require__(403);\n\nvar Ellipse = __webpack_require__(1041);\n\nvar Line = __webpack_require__(567);\n\nvar Path = __webpack_require__(63);\n\nvar Polygon = __webpack_require__(564);\n\nvar Polyline = __webpack_require__(566);\n\nvar LinearGradient = __webpack_require__(405);\n\nvar Style = __webpack_require__(401);\n\nvar matrix = __webpack_require__(89);\n\nvar _path = __webpack_require__(557);\n\nvar createFromString = _path.createFromString;\n\nvar _util = __webpack_require__(2);\n\nvar isString = _util.isString;\nvar extend = _util.extend;\nvar defaults = _util.defaults;\nvar trim = _util.trim;\nvar each = _util.each;\n// import RadialGradient from '../graphic/RadialGradient';\n// import Pattern from '../graphic/Pattern';\n// import * as vector from '../core/vector';\n// Most of the values can be separated by comma and/or white space.\nvar DILIMITER_REG = /[\\s,]+/;\n/**\n * For big svg string, this method might be time consuming.\n *\n * @param {string} svg xml string\n * @return {Object} xml root.\n */\n\nfunction parseXML(svg) {\n  if (isString(svg)) {\n    var parser = new DOMParser();\n    svg = parser.parseFromString(svg, 'text/xml');\n  } // Document node. If using $.get, doc node may be input.\n\n\n  if (svg.nodeType === 9) {\n    svg = svg.firstChild;\n  } // nodeName of <!DOCTYPE svg> is also 'svg'.\n\n\n  while (svg.nodeName.toLowerCase() !== 'svg' || svg.nodeType !== 1) {\n    svg = svg.nextSibling;\n  }\n\n  return svg;\n}\n\nfunction SVGParser() {\n  this._defs = {};\n  this._root = null;\n  this._isDefine = false;\n  this._isText = false;\n}\n\nSVGParser.prototype.parse = function (xml, opt) {\n  opt = opt || {};\n  var svg = parseXML(xml);\n\n  if (!svg) {\n    throw new Error('Illegal svg');\n  }\n\n  var root = new Group();\n  this._root = root; // parse view port\n\n  var viewBox = svg.getAttribute('viewBox') || ''; // If width/height not specified, means \"100%\" of `opt.width/height`.\n  // TODO: Other percent value not supported yet.\n\n  var width = parseFloat(svg.getAttribute('width') || opt.width);\n  var height = parseFloat(svg.getAttribute('height') || opt.height); // If width/height not specified, set as null for output.\n\n  isNaN(width) && (width = null);\n  isNaN(height) && (height = null); // Apply inline style on svg element.\n\n  parseAttributes(svg, root, null, true);\n  var child = svg.firstChild;\n\n  while (child) {\n    this._parseNode(child, root);\n\n    child = child.nextSibling;\n  }\n\n  var viewBoxRect;\n  var viewBoxTransform;\n\n  if (viewBox) {\n    var viewBoxArr = trim(viewBox).split(DILIMITER_REG); // Some invalid case like viewBox: 'none'.\n\n    if (viewBoxArr.length >= 4) {\n      viewBoxRect = {\n        x: parseFloat(viewBoxArr[0] || 0),\n        y: parseFloat(viewBoxArr[1] || 0),\n        width: parseFloat(viewBoxArr[2]),\n        height: parseFloat(viewBoxArr[3])\n      };\n    }\n  }\n\n  if (viewBoxRect && width != null && height != null) {\n    viewBoxTransform = makeViewBoxTransform(viewBoxRect, width, height);\n\n    if (!opt.ignoreViewBox) {\n      // If set transform on the output group, it probably bring trouble when\n      // some users only intend to show the clipped content inside the viewBox,\n      // but not intend to transform the output group. So we keep the output\n      // group no transform. If the user intend to use the viewBox as a\n      // camera, just set `opt.ignoreViewBox` as `true` and set transfrom\n      // manually according to the viewBox info in the output of this method.\n      var elRoot = root;\n      root = new Group();\n      root.add(elRoot);\n      elRoot.scale = viewBoxTransform.scale.slice();\n      elRoot.position = viewBoxTransform.position.slice();\n    }\n  } // Some shapes might be overflow the viewport, which should be\n  // clipped despite whether the viewBox is used, as the SVG does.\n\n\n  if (!opt.ignoreRootClip && width != null && height != null) {\n    root.setClipPath(new Rect({\n      shape: {\n        x: 0,\n        y: 0,\n        width: width,\n        height: height\n      }\n    }));\n  } // Set width/height on group just for output the viewport size.\n\n\n  return {\n    root: root,\n    width: width,\n    height: height,\n    viewBoxRect: viewBoxRect,\n    viewBoxTransform: viewBoxTransform\n  };\n};\n\nSVGParser.prototype._parseNode = function (xmlNode, parentGroup) {\n  var nodeName = xmlNode.nodeName.toLowerCase(); // TODO\n  // support <style>...</style> in svg, where nodeName is 'style',\n  // CSS classes is defined globally wherever the style tags are declared.\n\n  if (nodeName === 'defs') {\n    // define flag\n    this._isDefine = true;\n  } else if (nodeName === 'text') {\n    this._isText = true;\n  }\n\n  var el;\n\n  if (this._isDefine) {\n    var parser = defineParsers[nodeName];\n\n    if (parser) {\n      var def = parser.call(this, xmlNode);\n      var id = xmlNode.getAttribute('id');\n\n      if (id) {\n        this._defs[id] = def;\n      }\n    }\n  } else {\n    var parser = nodeParsers[nodeName];\n\n    if (parser) {\n      el = parser.call(this, xmlNode, parentGroup);\n      parentGroup.add(el);\n    }\n  }\n\n  var child = xmlNode.firstChild;\n\n  while (child) {\n    if (child.nodeType === 1) {\n      this._parseNode(child, el);\n    } // Is text\n\n\n    if (child.nodeType === 3 && this._isText) {\n      this._parseText(child, el);\n    }\n\n    child = child.nextSibling;\n  } // Quit define\n\n\n  if (nodeName === 'defs') {\n    this._isDefine = false;\n  } else if (nodeName === 'text') {\n    this._isText = false;\n  }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n  if (xmlNode.nodeType === 1) {\n    var dx = xmlNode.getAttribute('dx') || 0;\n    var dy = xmlNode.getAttribute('dy') || 0;\n    this._textX += parseFloat(dx);\n    this._textY += parseFloat(dy);\n  }\n\n  var text = new Text({\n    style: {\n      text: xmlNode.textContent,\n      transformText: true\n    },\n    position: [this._textX || 0, this._textY || 0]\n  });\n  inheritStyle(parentGroup, text);\n  parseAttributes(xmlNode, text, this._defs);\n  var fontSize = text.style.fontSize;\n\n  if (fontSize && fontSize < 9) {\n    // PENDING\n    text.style.fontSize = 9;\n    text.scale = text.scale || [1, 1];\n    text.scale[0] *= fontSize / 9;\n    text.scale[1] *= fontSize / 9;\n  }\n\n  var rect = text.getBoundingRect();\n  this._textX += rect.width;\n  parentGroup.add(text);\n  return text;\n};\n\nvar nodeParsers = {\n  'g': function (xmlNode, parentGroup) {\n    var g = new Group();\n    inheritStyle(parentGroup, g);\n    parseAttributes(xmlNode, g, this._defs);\n    return g;\n  },\n  'rect': function (xmlNode, parentGroup) {\n    var rect = new Rect();\n    inheritStyle(parentGroup, rect);\n    parseAttributes(xmlNode, rect, this._defs);\n    rect.setShape({\n      x: parseFloat(xmlNode.getAttribute('x') || 0),\n      y: parseFloat(xmlNode.getAttribute('y') || 0),\n      width: parseFloat(xmlNode.getAttribute('width') || 0),\n      height: parseFloat(xmlNode.getAttribute('height') || 0)\n    }); // console.log(xmlNode.getAttribute('transform'));\n    // console.log(rect.transform);\n\n    return rect;\n  },\n  'circle': function (xmlNode, parentGroup) {\n    var circle = new Circle();\n    inheritStyle(parentGroup, circle);\n    parseAttributes(xmlNode, circle, this._defs);\n    circle.setShape({\n      cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n      cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n      r: parseFloat(xmlNode.getAttribute('r') || 0)\n    });\n    return circle;\n  },\n  'line': function (xmlNode, parentGroup) {\n    var line = new Line();\n    inheritStyle(parentGroup, line);\n    parseAttributes(xmlNode, line, this._defs);\n    line.setShape({\n      x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n      y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n      x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n      y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n    });\n    return line;\n  },\n  'ellipse': function (xmlNode, parentGroup) {\n    var ellipse = new Ellipse();\n    inheritStyle(parentGroup, ellipse);\n    parseAttributes(xmlNode, ellipse, this._defs);\n    ellipse.setShape({\n      cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n      cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n      rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n      ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n    });\n    return ellipse;\n  },\n  'polygon': function (xmlNode, parentGroup) {\n    var points = xmlNode.getAttribute('points');\n\n    if (points) {\n      points = parsePoints(points);\n    }\n\n    var polygon = new Polygon({\n      shape: {\n        points: points || []\n      }\n    });\n    inheritStyle(parentGroup, polygon);\n    parseAttributes(xmlNode, polygon, this._defs);\n    return polygon;\n  },\n  'polyline': function (xmlNode, parentGroup) {\n    var path = new Path();\n    inheritStyle(parentGroup, path);\n    parseAttributes(xmlNode, path, this._defs);\n    var points = xmlNode.getAttribute('points');\n\n    if (points) {\n      points = parsePoints(points);\n    }\n\n    var polyline = new Polyline({\n      shape: {\n        points: points || []\n      }\n    });\n    return polyline;\n  },\n  'image': function (xmlNode, parentGroup) {\n    var img = new ZImage();\n    inheritStyle(parentGroup, img);\n    parseAttributes(xmlNode, img, this._defs);\n    img.setStyle({\n      image: xmlNode.getAttribute('xlink:href'),\n      x: xmlNode.getAttribute('x'),\n      y: xmlNode.getAttribute('y'),\n      width: xmlNode.getAttribute('width'),\n      height: xmlNode.getAttribute('height')\n    });\n    return img;\n  },\n  'text': function (xmlNode, parentGroup) {\n    var x = xmlNode.getAttribute('x') || 0;\n    var y = xmlNode.getAttribute('y') || 0;\n    var dx = xmlNode.getAttribute('dx') || 0;\n    var dy = xmlNode.getAttribute('dy') || 0;\n    this._textX = parseFloat(x) + parseFloat(dx);\n    this._textY = parseFloat(y) + parseFloat(dy);\n    var g = new Group();\n    inheritStyle(parentGroup, g);\n    parseAttributes(xmlNode, g, this._defs);\n    return g;\n  },\n  'tspan': function (xmlNode, parentGroup) {\n    var x = xmlNode.getAttribute('x');\n    var y = xmlNode.getAttribute('y');\n\n    if (x != null) {\n      // new offset x\n      this._textX = parseFloat(x);\n    }\n\n    if (y != null) {\n      // new offset y\n      this._textY = parseFloat(y);\n    }\n\n    var dx = xmlNode.getAttribute('dx') || 0;\n    var dy = xmlNode.getAttribute('dy') || 0;\n    var g = new Group();\n    inheritStyle(parentGroup, g);\n    parseAttributes(xmlNode, g, this._defs);\n    this._textX += dx;\n    this._textY += dy;\n    return g;\n  },\n  'path': function (xmlNode, parentGroup) {\n    // TODO svg fill rule\n    // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n    // path.style.globalCompositeOperation = 'xor';\n    var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n    var path = createFromString(d);\n    inheritStyle(parentGroup, path);\n    parseAttributes(xmlNode, path, this._defs);\n    return path;\n  }\n};\nvar defineParsers = {\n  'lineargradient': function (xmlNode) {\n    var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n    var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n    var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n    var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n    var gradient = new LinearGradient(x1, y1, x2, y2);\n\n    _parseGradientColorStops(xmlNode, gradient);\n\n    return gradient;\n  },\n  'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n  var stop = xmlNode.firstChild;\n\n  while (stop) {\n    if (stop.nodeType === 1) {\n      var offset = stop.getAttribute('offset');\n\n      if (offset.indexOf('%') > 0) {\n        // percentage\n        offset = parseInt(offset, 10) / 100;\n      } else if (offset) {\n        // number from 0 to 1\n        offset = parseFloat(offset);\n      } else {\n        offset = 0;\n      }\n\n      var stopColor = stop.getAttribute('stop-color') || '#000000';\n      gradient.addColorStop(offset, stopColor);\n    }\n\n    stop = stop.nextSibling;\n  }\n}\n\nfunction inheritStyle(parent, child) {\n  if (parent && parent.__inheritedStyle) {\n    if (!child.__inheritedStyle) {\n      child.__inheritedStyle = {};\n    }\n\n    defaults(child.__inheritedStyle, parent.__inheritedStyle);\n  }\n}\n\nfunction parsePoints(pointsString) {\n  var list = trim(pointsString).split(DILIMITER_REG);\n  var points = [];\n\n  for (var i = 0; i < list.length; i += 2) {\n    var x = parseFloat(list[i]);\n    var y = parseFloat(list[i + 1]);\n    points.push([x, y]);\n  }\n\n  return points;\n}\n\nvar attributesMap = {\n  'fill': 'fill',\n  'stroke': 'stroke',\n  'stroke-width': 'lineWidth',\n  'opacity': 'opacity',\n  'fill-opacity': 'fillOpacity',\n  'stroke-opacity': 'strokeOpacity',\n  'stroke-dasharray': 'lineDash',\n  'stroke-dashoffset': 'lineDashOffset',\n  'stroke-linecap': 'lineCap',\n  'stroke-linejoin': 'lineJoin',\n  'stroke-miterlimit': 'miterLimit',\n  'font-family': 'fontFamily',\n  'font-size': 'fontSize',\n  'font-style': 'fontStyle',\n  'font-weight': 'fontWeight',\n  'text-align': 'textAlign',\n  'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n  var zrStyle = el.__inheritedStyle || {};\n  var isTextEl = el.type === 'text'; // TODO Shadow\n\n  if (xmlNode.nodeType === 1) {\n    parseTransformAttribute(xmlNode, el);\n    extend(zrStyle, parseStyleAttribute(xmlNode));\n\n    if (!onlyInlineStyle) {\n      for (var svgAttrName in attributesMap) {\n        if (attributesMap.hasOwnProperty(svgAttrName)) {\n          var attrValue = xmlNode.getAttribute(svgAttrName);\n\n          if (attrValue != null) {\n            zrStyle[attributesMap[svgAttrName]] = attrValue;\n          }\n        }\n      }\n    }\n  }\n\n  var elFillProp = isTextEl ? 'textFill' : 'fill';\n  var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n  el.style = el.style || new Style();\n  var elStyle = el.style;\n  zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n  zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n  each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n    var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n    zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n  });\n\n  if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n    zrStyle.textBaseline = 'alphabetic';\n  }\n\n  if (zrStyle.textBaseline === 'alphabetic') {\n    zrStyle.textBaseline = 'bottom';\n  }\n\n  if (zrStyle.textAlign === 'start') {\n    zrStyle.textAlign = 'left';\n  }\n\n  if (zrStyle.textAlign === 'end') {\n    zrStyle.textAlign = 'right';\n  }\n\n  each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n    zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n  });\n\n  if (zrStyle.lineDash) {\n    el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n  }\n\n  if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n    // enable stroke\n    el[elStrokeProp] = true;\n  }\n\n  el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n  // if (str === 'none') {\n  //     return;\n  // }\n  var urlMatch = defs && str && str.match(urlRegex);\n\n  if (urlMatch) {\n    var url = trim(urlMatch[1]);\n    var def = defs[url];\n    return def;\n  }\n\n  return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n  var transform = xmlNode.getAttribute('transform');\n\n  if (transform) {\n    transform = transform.replace(/,/g, ' ');\n    var m = null;\n    var transformOps = [];\n    transform.replace(transformRegex, function (str, type, value) {\n      transformOps.push(type, value);\n    });\n\n    for (var i = transformOps.length - 1; i > 0; i -= 2) {\n      var value = transformOps[i];\n      var type = transformOps[i - 1];\n      m = m || matrix.create();\n\n      switch (type) {\n        case 'translate':\n          value = trim(value).split(DILIMITER_REG);\n          matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n          break;\n\n        case 'scale':\n          value = trim(value).split(DILIMITER_REG);\n          matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n          break;\n\n        case 'rotate':\n          value = trim(value).split(DILIMITER_REG);\n          matrix.rotate(m, m, parseFloat(value[0]));\n          break;\n\n        case 'skew':\n          value = trim(value).split(DILIMITER_REG);\n          console.warn('Skew transform is not supported yet');\n          break;\n\n        case 'matrix':\n          var value = trim(value).split(DILIMITER_REG);\n          m[0] = parseFloat(value[0]);\n          m[1] = parseFloat(value[1]);\n          m[2] = parseFloat(value[2]);\n          m[3] = parseFloat(value[3]);\n          m[4] = parseFloat(value[4]);\n          m[5] = parseFloat(value[5]);\n          break;\n      }\n    }\n\n    node.setLocalTransform(m);\n  }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n  var style = xmlNode.getAttribute('style');\n  var result = {};\n\n  if (!style) {\n    return result;\n  }\n\n  var styleList = {};\n  styleRegex.lastIndex = 0;\n  var styleRegResult;\n\n  while ((styleRegResult = styleRegex.exec(style)) != null) {\n    styleList[styleRegResult[1]] = styleRegResult[2];\n  }\n\n  for (var svgAttrName in attributesMap) {\n    if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n      result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n    }\n  }\n\n  return result;\n}\n/**\n * @param {Array.<number>} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n  var scaleX = width / viewBoxRect.width;\n  var scaleY = height / viewBoxRect.height;\n  var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n  var viewBoxScale = [scale, scale];\n  var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n  return {\n    scale: viewBoxScale,\n    position: viewBoxPosition\n  };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n *     root: Group, The root of the the result tree of zrender shapes,\n *     width: number, the viewport width of the SVG,\n *     height: number, the viewport height of the SVG,\n *     viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n *     viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n  var parser = new SVGParser();\n  return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;\n\n/***/ }),\n/* 572 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrender = __webpack_require__(322);\n\nexports.zrender = zrender;\n\nvar matrix = __webpack_require__(89);\n\nexports.matrix = matrix;\n\nvar vector = __webpack_require__(56);\n\nexports.vector = vector;\n\nvar zrUtil = __webpack_require__(2);\n\nvar colorTool = __webpack_require__(130);\n\nexports.color = colorTool;\n\nvar graphicUtil = __webpack_require__(23);\n\nvar numberUtil = __webpack_require__(26);\n\nexports.number = numberUtil;\n\nvar formatUtil = __webpack_require__(50);\n\nexports.format = formatUtil;\n\nvar _throttle = __webpack_require__(153);\n\nvar throttle = _throttle.throttle;\nexports.throttle = _throttle.throttle;\n\nvar ecHelper = __webpack_require__(1042);\n\nexports.helper = ecHelper;\n\nvar parseGeoJSON = __webpack_require__(578);\n\nexports.parseGeoJSON = parseGeoJSON;\n\nvar _List = __webpack_require__(116);\n\nexports.List = _List;\n\nvar _Model = __webpack_require__(67);\n\nexports.Model = _Model;\n\nvar _Axis = __webpack_require__(155);\n\nexports.Axis = _Axis;\n\nvar _env = __webpack_require__(66);\n\nexports.env = _env;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Do not mount those modules on 'src/echarts' for better tree shaking.\n */\nvar parseGeoJson = parseGeoJSON;\nvar ecUtil = {};\nzrUtil.each(['map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter', 'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction', 'extend', 'defaults', 'clone', 'merge'], function (name) {\n  ecUtil[name] = zrUtil[name];\n});\nvar graphic = {};\nzrUtil.each(['extendShape', 'extendPath', 'makePath', 'makeImage', 'mergePath', 'resizePath', 'createIcon', 'setHoverStyle', 'setLabelStyle', 'setTextStyle', 'setText', 'getFont', 'updateProps', 'initProps', 'getTransform', 'clipPointsByRect', 'clipRectByRect', 'registerShape', 'getShapeClass', 'Group', 'Image', 'Text', 'Circle', 'Sector', 'Ring', 'Polygon', 'Polyline', 'Rect', 'Line', 'BezierCurve', 'Arc', 'IncrementalDisplayable', 'CompoundPath', 'LinearGradient', 'RadialGradient', 'BoundingRect'], function (name) {\n  graphic[name] = graphicUtil[name];\n});\nexports.parseGeoJson = parseGeoJson;\nexports.util = ecUtil;\nexports.graphic = graphic;\n\n/***/ }),\n/* 573 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @class\n * @param {Object|DataDimensionInfo} [opt] All of the fields will be shallow copied.\n */\nfunction DataDimensionInfo(opt) {\n  if (opt != null) {\n    zrUtil.extend(this, opt);\n  }\n  /**\n   * Dimension name.\n   * Mandatory.\n   * @type {string}\n   */\n  // this.name;\n\n  /**\n   * The origin name in dimsDef, see source helper.\n   * If displayName given, the tooltip will displayed vertically.\n   * Optional.\n   * @type {string}\n   */\n  // this.displayName;\n\n  /**\n   * Which coordSys dimension this dimension mapped to.\n   * A `coordDim` can be a \"coordSysDim\" that the coordSys required\n   * (for example, an item in `coordSysDims` of `model/referHelper#CoordSysInfo`),\n   * or an generated \"extra coord name\" if does not mapped to any \"coordSysDim\"\n   * (That is determined by whether `isExtraCoord` is `true`).\n   * Mandatory.\n   * @type {string}\n   */\n  // this.coordDim;\n\n  /**\n   * The index of this dimension in `series.encode[coordDim]`.\n   * Mandatory.\n   * @type {number}\n   */\n  // this.coordDimIndex;\n\n  /**\n   * Dimension type. The enumerable values are the key of\n   * `dataCtors` of `data/List`.\n   * Optional.\n   * @type {string}\n   */\n  // this.type;\n\n  /**\n   * This index of this dimension info in `data/List#_dimensionInfos`.\n   * Mandatory after added to `data/List`.\n   * @type {number}\n   */\n  // this.index;\n\n  /**\n   * The format of `otherDims` is:\n   * ```js\n   * {\n   *     tooltip: number optional,\n   *     label: number optional,\n   *     itemName: number optional,\n   *     seriesName: number optional,\n   * }\n   * ```\n   *\n   * A `series.encode` can specified these fields:\n   * ```js\n   * encode: {\n   *     // \"3, 1, 5\" is the index of data dimension.\n   *     tooltip: [3, 1, 5],\n   *     label: [0, 3],\n   *     ...\n   * }\n   * ```\n   * `otherDims` is the parse result of the `series.encode` above, like:\n   * ```js\n   * // Suppose the index of this data dimension is `3`.\n   * this.otherDims = {\n   *     // `3` is at the index `0` of the `encode.tooltip`\n   *     tooltip: 0,\n   *     // `3` is at the index `1` of the `encode.tooltip`\n   *     label: 1\n   * };\n   * ```\n   *\n   * This prop should never be `null`/`undefined` after initialized.\n   * @type {Object}\n   */\n\n\n  this.otherDims = {};\n  /**\n   * Be `true` if this dimension is not mapped to any \"coordSysDim\" that the\n   * \"coordSys\" required.\n   * Mandatory.\n   * @type {boolean}\n   */\n  // this.isExtraCoord;\n\n  /**\n   * @type {module:data/OrdinalMeta}\n   */\n  // this.ordinalMeta;\n\n  /**\n   * Whether to create inverted indices.\n   * @type {boolean}\n   */\n  // this.createInvertedIndices;\n}\n\n;\nvar _default = DataDimensionInfo;\nmodule.exports = _default;\n\n/***/ }),\n/* 574 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar isString = _util.isString;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar isObject = _util.isObject;\nvar clone = _util.clone;\n\nvar _model = __webpack_require__(31);\n\nvar normalizeToArray = _model.normalizeToArray;\n\nvar _sourceHelper = __webpack_require__(144);\n\nvar guessOrdinal = _sourceHelper.guessOrdinal;\nvar BE_ORDINAL = _sourceHelper.BE_ORDINAL;\n\nvar Source = __webpack_require__(257);\n\nvar _dimensionHelper = __webpack_require__(259);\n\nvar OTHER_DIMENSIONS = _dimensionHelper.OTHER_DIMENSIONS;\n\nvar DataDimensionInfo = __webpack_require__(573);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @deprecated\n * Use `echarts/data/helper/createDimensions` instead.\n */\n\n/**\n * @see {module:echarts/test/ut/spec/data/completeDimensions}\n *\n * This method builds the relationship between:\n * + \"what the coord sys or series requires (see `sysDims`)\",\n * + \"what the user defines (in `encode` and `dimensions`, see `opt.dimsDef` and `opt.encodeDef`)\"\n * + \"what the data source provids (see `source`)\".\n *\n * Some guess strategy will be adapted if user does not define something.\n * If no 'value' dimension specified, the first no-named dimension will be\n * named as 'value'.\n *\n * @param {Array.<string>} sysDims Necessary dimensions, like ['x', 'y'], which\n *      provides not only dim template, but also default order.\n *      properties: 'name', 'type', 'displayName'.\n *      `name` of each item provides default coord name.\n *      [{dimsDef: [string|Object, ...]}, ...] dimsDef of sysDim item provides default dim name, and\n *                                    provide dims count that the sysDim required.\n *      [{ordinalMeta}] can be specified.\n * @param {module:echarts/data/Source|Array|Object} source or data (for compatibal with pervious)\n * @param {Object} [opt]\n * @param {Array.<Object|string>} [opt.dimsDef] option.series.dimensions User defined dimensions\n *      For example: ['asdf', {name, type}, ...].\n * @param {Object|HashMap} [opt.encodeDef] option.series.encode {x: 2, y: [3, 1], tooltip: [1, 2], label: 3}\n * @param {Function} [opt.encodeDefaulter] Called if no `opt.encodeDef` exists.\n *      If not specified, auto find the next available data dim.\n *      param source {module:data/Source}\n *      param dimCount {number}\n *      return {Object} encode Never be `null/undefined`.\n * @param {string} [opt.generateCoord] Generate coord dim with the given name.\n *      If not specified, extra dim names will be:\n *      'value', 'value0', 'value1', ...\n * @param {number} [opt.generateCoordCount] By default, the generated dim name is `generateCoord`.\n *      If `generateCoordCount` specified, the generated dim names will be:\n *      `generateCoord` + 0, `generateCoord` + 1, ...\n *      can be Infinity, indicate that use all of the remain columns.\n * @param {number} [opt.dimCount] If not specified, guess by the first data item.\n * @return {Array.<module:data/DataDimensionInfo>}\n */\nfunction completeDimensions(sysDims, source, opt) {\n  if (!Source.isInstance(source)) {\n    source = Source.seriesDataToSource(source);\n  }\n\n  opt = opt || {};\n  sysDims = (sysDims || []).slice();\n  var dimsDef = (opt.dimsDef || []).slice();\n  var dataDimNameMap = createHashMap();\n  var coordDimNameMap = createHashMap(); // var valueCandidate;\n\n  var result = [];\n  var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount); // Apply user defined dims (`name` and `type`) and init result.\n\n  for (var i = 0; i < dimCount; i++) {\n    var dimDefItem = dimsDef[i] = extend({}, isObject(dimsDef[i]) ? dimsDef[i] : {\n      name: dimsDef[i]\n    });\n    var userDimName = dimDefItem.name;\n    var resultItem = result[i] = new DataDimensionInfo(); // Name will be applied later for avoiding duplication.\n\n    if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\n      // Only if `series.dimensions` is defined in option\n      // displayName, will be set, and dimension will be diplayed vertically in\n      // tooltip by default.\n      resultItem.name = resultItem.displayName = userDimName;\n      dataDimNameMap.set(userDimName, i);\n    }\n\n    dimDefItem.type != null && (resultItem.type = dimDefItem.type);\n    dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\n  }\n\n  var encodeDef = opt.encodeDef;\n\n  if (!encodeDef && opt.encodeDefaulter) {\n    encodeDef = opt.encodeDefaulter(source, dimCount);\n  }\n\n  encodeDef = createHashMap(encodeDef); // Set `coordDim` and `coordDimIndex` by `encodeDef` and normalize `encodeDef`.\n\n  encodeDef.each(function (dataDims, coordDim) {\n    dataDims = normalizeToArray(dataDims).slice(); // Note: It is allowed that `dataDims.length` is `0`, e.g., options is\n    // `{encode: {x: -1, y: 1}}`. Should not filter anything in\n    // this case.\n\n    if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\n      encodeDef.set(coordDim, false);\n      return;\n    }\n\n    var validDataDims = encodeDef.set(coordDim, []);\n    each(dataDims, function (resultDimIdx, idx) {\n      // The input resultDimIdx can be dim name or index.\n      isString(resultDimIdx) && (resultDimIdx = dataDimNameMap.get(resultDimIdx));\n\n      if (resultDimIdx != null && resultDimIdx < dimCount) {\n        validDataDims[idx] = resultDimIdx;\n        applyDim(result[resultDimIdx], coordDim, idx);\n      }\n    });\n  }); // Apply templetes and default order from `sysDims`.\n\n  var availDimIdx = 0;\n  each(sysDims, function (sysDimItem, sysDimIndex) {\n    var coordDim;\n    var sysDimItem;\n    var sysDimItemDimsDef;\n    var sysDimItemOtherDims;\n\n    if (isString(sysDimItem)) {\n      coordDim = sysDimItem;\n      sysDimItem = {};\n    } else {\n      coordDim = sysDimItem.name;\n      var ordinalMeta = sysDimItem.ordinalMeta;\n      sysDimItem.ordinalMeta = null;\n      sysDimItem = clone(sysDimItem);\n      sysDimItem.ordinalMeta = ordinalMeta; // `coordDimIndex` should not be set directly.\n\n      sysDimItemDimsDef = sysDimItem.dimsDef;\n      sysDimItemOtherDims = sysDimItem.otherDims;\n      sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;\n    }\n\n    var dataDims = encodeDef.get(coordDim); // negative resultDimIdx means no need to mapping.\n\n    if (dataDims === false) {\n      return;\n    }\n\n    var dataDims = normalizeToArray(dataDims); // dimensions provides default dim sequences.\n\n    if (!dataDims.length) {\n      for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\n        while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\n          availDimIdx++;\n        }\n\n        availDimIdx < result.length && dataDims.push(availDimIdx++);\n      }\n    } // Apply templates.\n\n\n    each(dataDims, function (resultDimIdx, coordDimIndex) {\n      var resultItem = result[resultDimIdx];\n      applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\n\n      if (resultItem.name == null && sysDimItemDimsDef) {\n        var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\n        !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {\n          name: sysDimItemDimsDefItem\n        });\n        resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\n        resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\n      } // FIXME refactor, currently only used in case: {otherDims: {tooltip: false}}\n\n\n      sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\n    });\n  });\n\n  function applyDim(resultItem, coordDim, coordDimIndex) {\n    if (OTHER_DIMENSIONS.get(coordDim) != null) {\n      resultItem.otherDims[coordDim] = coordDimIndex;\n    } else {\n      resultItem.coordDim = coordDim;\n      resultItem.coordDimIndex = coordDimIndex;\n      coordDimNameMap.set(coordDim, true);\n    }\n  } // Make sure the first extra dim is 'value'.\n\n\n  var generateCoord = opt.generateCoord;\n  var generateCoordCount = opt.generateCoordCount;\n  var fromZero = generateCoordCount != null;\n  generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;\n  var extra = generateCoord || 'value'; // Set dim `name` and other `coordDim` and other props.\n\n  for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\n    var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\n    var coordDim = resultItem.coordDim;\n\n    if (coordDim == null) {\n      resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\n      resultItem.coordDimIndex = 0;\n\n      if (!generateCoord || generateCoordCount <= 0) {\n        resultItem.isExtraCoord = true;\n      }\n\n      generateCoordCount--;\n    }\n\n    resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap));\n\n    if (resultItem.type == null && (guessOrdinal(source, resultDimIdx, resultItem.name) === BE_ORDINAL.Must // Consider the case:\n    // {\n    //    dataset: {source: [\n    //        ['2001', 123],\n    //        ['2002', 456],\n    //        ...\n    //        ['The others', 987],\n    //    ]},\n    //    series: {type: 'pie'}\n    // }\n    // The first colum should better be treated as a \"ordinal\" although it\n    // might not able to be detected as an \"ordinal\" by `guessOrdinal`.\n    || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {\n      resultItem.type = 'ordinal';\n    }\n  }\n\n  return result;\n} // ??? TODO\n// Originally detect dimCount by data[0]. Should we\n// optimize it to only by sysDims and dimensions and encode.\n// So only necessary dims will be initialized.\n// But\n// (1) custom series should be considered. where other dims\n// may be visited.\n// (2) sometimes user need to calcualte bubble size or use visualMap\n// on other dimensions besides coordSys needed.\n// So, dims that is not used by system, should be shared in storage?\n\n\nfunction getDimCount(source, sysDims, dimsDef, optDimCount) {\n  // Note that the result dimCount should not small than columns count\n  // of data, otherwise `dataDimNameMap` checking will be incorrect.\n  var dimCount = Math.max(source.dimensionsDetectCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\n  each(sysDims, function (sysDimItem) {\n    var sysDimItemDimsDef = sysDimItem.dimsDef;\n    sysDimItemDimsDef && (dimCount = Math.max(dimCount, sysDimItemDimsDef.length));\n  });\n  return dimCount;\n}\n\nfunction genName(name, map, fromZero) {\n  if (fromZero || map.get(name) != null) {\n    var i = 0;\n\n    while (map.get(name + i) != null) {\n      i++;\n    }\n\n    name += i;\n  }\n\n  map.set(name, true);\n  return name;\n}\n\nvar _default = completeDimensions;\nmodule.exports = _default;\n\n/***/ }),\n/* 575 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar createHashMap = _util.createHashMap;\nvar isObject = _util.isObject;\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @constructor\n * @param {Object} [opt]\n * @param {Object} [opt.categories=[]]\n * @param {Object} [opt.needCollect=false]\n * @param {Object} [opt.deduplication=false]\n */\nfunction OrdinalMeta(opt) {\n  /**\n   * @readOnly\n   * @type {Array.<string>}\n   */\n  this.categories = opt.categories || [];\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._needCollect = opt.needCollect;\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._deduplication = opt.deduplication;\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._map;\n}\n/**\n * @param {module:echarts/model/Model} axisModel\n * @return {module:echarts/data/OrdinalMeta}\n */\n\n\nOrdinalMeta.createByAxisModel = function (axisModel) {\n  var option = axisModel.option;\n  var data = option.data;\n  var categories = data && map(data, getName);\n  return new OrdinalMeta({\n    categories: categories,\n    needCollect: !categories,\n    // deduplication is default in axis.\n    deduplication: option.dedplication !== false\n  });\n};\n\nvar proto = OrdinalMeta.prototype;\n/**\n * @param {string} category\n * @return {number} ordinal\n */\n\nproto.getOrdinal = function (category) {\n  return getOrCreateMap(this).get(category);\n};\n/**\n * @param {*} category\n * @return {number} The ordinal. If not found, return NaN.\n */\n\n\nproto.parseAndCollect = function (category) {\n  var index;\n  var needCollect = this._needCollect; // The value of category dim can be the index of the given category set.\n  // This feature is only supported when !needCollect, because we should\n  // consider a common case: a value is 2017, which is a number but is\n  // expected to be tread as a category. This case usually happen in dataset,\n  // where it happent to be no need of the index feature.\n\n  if (typeof category !== 'string' && !needCollect) {\n    return category;\n  } // Optimize for the scenario:\n  // category is ['2012-01-01', '2012-01-02', ...], where the input\n  // data has been ensured not duplicate and is large data.\n  // Notice, if a dataset dimension provide categroies, usually echarts\n  // should remove duplication except user tell echarts dont do that\n  // (set axis.deduplication = false), because echarts do not know whether\n  // the values in the category dimension has duplication (consider the\n  // parallel-aqi example)\n\n\n  if (needCollect && !this._deduplication) {\n    index = this.categories.length;\n    this.categories[index] = category;\n    return index;\n  }\n\n  var map = getOrCreateMap(this);\n  index = map.get(category);\n\n  if (index == null) {\n    if (needCollect) {\n      index = this.categories.length;\n      this.categories[index] = category;\n      map.set(category, index);\n    } else {\n      index = NaN;\n    }\n  }\n\n  return index;\n}; // Consider big data, do not create map until needed.\n\n\nfunction getOrCreateMap(ordinalMeta) {\n  return ordinalMeta._map || (ordinalMeta._map = createHashMap(ordinalMeta.categories));\n}\n\nfunction getName(obj) {\n  if (isObject(obj) && obj.value != null) {\n    return obj.value;\n  } else {\n    return obj + '';\n  }\n}\n\nvar _default = OrdinalMeta;\nmodule.exports = _default;\n\n/***/ }),\n/* 576 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar numberUtil = __webpack_require__(26);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * For testable.\n */\nvar roundNumber = numberUtil.round;\n/**\n * @param {Array.<number>} extent Both extent[0] and extent[1] should be valid number.\n *                                Should be extent[0] < extent[1].\n * @param {number} splitNumber splitNumber should be >= 1.\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n * @return {Object} {interval, intervalPrecision, niceTickExtent}\n */\n\nfunction intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\n  var result = {};\n  var span = extent[1] - extent[0];\n  var interval = result.interval = numberUtil.nice(span / splitNumber, true);\n\n  if (minInterval != null && interval < minInterval) {\n    interval = result.interval = minInterval;\n  }\n\n  if (maxInterval != null && interval > maxInterval) {\n    interval = result.interval = maxInterval;\n  } // Tow more digital for tick.\n\n\n  var precision = result.intervalPrecision = getIntervalPrecision(interval); // Niced extent inside original extent\n\n  var niceTickExtent = result.niceTickExtent = [roundNumber(Math.ceil(extent[0] / interval) * interval, precision), roundNumber(Math.floor(extent[1] / interval) * interval, precision)];\n  fixExtent(niceTickExtent, extent);\n  return result;\n}\n/**\n * @param {number} interval\n * @return {number} interval precision\n */\n\n\nfunction getIntervalPrecision(interval) {\n  // Tow more digital for tick.\n  return numberUtil.getPrecisionSafe(interval) + 2;\n}\n\nfunction clamp(niceTickExtent, idx, extent) {\n  niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\n} // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent.\n\n\nfunction fixExtent(niceTickExtent, extent) {\n  !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\n  !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\n  clamp(niceTickExtent, 0, extent);\n  clamp(niceTickExtent, 1, extent);\n\n  if (niceTickExtent[0] > niceTickExtent[1]) {\n    niceTickExtent[0] = niceTickExtent[1];\n  }\n}\n\nexports.intervalScaleNiceTicks = intervalScaleNiceTicks;\nexports.getIntervalPrecision = getIntervalPrecision;\nexports.fixExtent = fixExtent;\n\n/***/ }),\n/* 577 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Scale = __webpack_require__(329);\n\nvar numberUtil = __webpack_require__(26);\n\nvar IntervalScale = __webpack_require__(330);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Log scale\n * @module echarts/scale/Log\n */\n// Use some method of IntervalScale\nvar scaleProto = Scale.prototype;\nvar intervalScaleProto = IntervalScale.prototype;\nvar getPrecisionSafe = numberUtil.getPrecisionSafe;\nvar roundingErrorFix = numberUtil.round;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar mathPow = Math.pow;\nvar mathLog = Math.log;\nvar LogScale = Scale.extend({\n  type: 'log',\n  base: 10,\n  $constructor: function () {\n    Scale.apply(this, arguments);\n    this._originalScale = new IntervalScale();\n  },\n\n  /**\n   * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n   * @return {Array.<number>}\n   */\n  getTicks: function (expandToNicedExtent) {\n    var originalScale = this._originalScale;\n    var extent = this._extent;\n    var originalExtent = originalScale.getExtent();\n    return zrUtil.map(intervalScaleProto.getTicks.call(this, expandToNicedExtent), function (val) {\n      var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n      powVal = val === extent[0] && originalScale.__fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n      powVal = val === extent[1] && originalScale.__fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n      return powVal;\n    }, this);\n  },\n\n  /**\n   * @param {number} splitNumber\n   * @return {Array.<Array.<number>>}\n   */\n  getMinorTicks: intervalScaleProto.getMinorTicks,\n\n  /**\n   * @param {number} val\n   * @return {string}\n   */\n  getLabel: intervalScaleProto.getLabel,\n\n  /**\n   * @param  {number} val\n   * @return {number}\n   */\n  scale: function (val) {\n    val = scaleProto.scale.call(this, val);\n    return mathPow(this.base, val);\n  },\n\n  /**\n   * @param {number} start\n   * @param {number} end\n   */\n  setExtent: function (start, end) {\n    var base = this.base;\n    start = mathLog(start) / mathLog(base);\n    end = mathLog(end) / mathLog(base);\n    intervalScaleProto.setExtent.call(this, start, end);\n  },\n\n  /**\n   * @return {number} end\n   */\n  getExtent: function () {\n    var base = this.base;\n    var extent = scaleProto.getExtent.call(this);\n    extent[0] = mathPow(base, extent[0]);\n    extent[1] = mathPow(base, extent[1]); // Fix #4158\n\n    var originalScale = this._originalScale;\n    var originalExtent = originalScale.getExtent();\n    originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n    originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n    return extent;\n  },\n\n  /**\n   * @param  {Array.<number>} extent\n   */\n  unionExtent: function (extent) {\n    this._originalScale.unionExtent(extent);\n\n    var base = this.base;\n    extent[0] = mathLog(extent[0]) / mathLog(base);\n    extent[1] = mathLog(extent[1]) / mathLog(base);\n    scaleProto.unionExtent.call(this, extent);\n  },\n\n  /**\n   * @override\n   */\n  unionExtentFromData: function (data, dim) {\n    // TODO\n    // filter value that <= 0\n    this.unionExtent(data.getApproximateExtent(dim));\n  },\n\n  /**\n   * Update interval and extent of intervals for nice ticks\n   * @param  {number} [approxTickNum = 10] Given approx tick number\n   */\n  niceTicks: function (approxTickNum) {\n    approxTickNum = approxTickNum || 10;\n    var extent = this._extent;\n    var span = extent[1] - extent[0];\n\n    if (span === Infinity || span <= 0) {\n      return;\n    }\n\n    var interval = numberUtil.quantity(span);\n    var err = approxTickNum / span * interval; // Filter ticks to get closer to the desired count.\n\n    if (err <= 0.5) {\n      interval *= 10;\n    } // Interval should be integer\n\n\n    while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\n      interval *= 10;\n    }\n\n    var niceExtent = [numberUtil.round(mathCeil(extent[0] / interval) * interval), numberUtil.round(mathFloor(extent[1] / interval) * interval)];\n    this._interval = interval;\n    this._niceExtent = niceExtent;\n  },\n\n  /**\n   * Nice extent.\n   * @override\n   */\n  niceExtent: function (opt) {\n    intervalScaleProto.niceExtent.call(this, opt);\n    var originalScale = this._originalScale;\n    originalScale.__fixMin = opt.fixMin;\n    originalScale.__fixMax = opt.fixMax;\n  }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n  LogScale.prototype[methodName] = function (val) {\n    val = mathLog(val) / mathLog(this.base);\n    return scaleProto[methodName].call(this, val);\n  };\n});\n\nLogScale.create = function () {\n  return new LogScale();\n};\n\nfunction fixRoundingError(val, originalVal) {\n  return roundingErrorFix(val, getPrecisionSafe(originalVal));\n}\n\nvar _default = LogScale;\nmodule.exports = _default;\n\n/***/ }),\n/* 578 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Region = __webpack_require__(579);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parse and decode geo json\n * @module echarts/coord/geo/parseGeoJson\n */\nfunction decode(json) {\n  if (!json.UTF8Encoding) {\n    return json;\n  }\n\n  var encodeScale = json.UTF8Scale;\n\n  if (encodeScale == null) {\n    encodeScale = 1024;\n  }\n\n  var features = json.features;\n\n  for (var f = 0; f < features.length; f++) {\n    var feature = features[f];\n    var geometry = feature.geometry;\n    var coordinates = geometry.coordinates;\n    var encodeOffsets = geometry.encodeOffsets;\n\n    for (var c = 0; c < coordinates.length; c++) {\n      var coordinate = coordinates[c];\n\n      if (geometry.type === 'Polygon') {\n        coordinates[c] = decodePolygon(coordinate, encodeOffsets[c], encodeScale);\n      } else if (geometry.type === 'MultiPolygon') {\n        for (var c2 = 0; c2 < coordinate.length; c2++) {\n          var polygon = coordinate[c2];\n          coordinate[c2] = decodePolygon(polygon, encodeOffsets[c][c2], encodeScale);\n        }\n      }\n    }\n  } // Has been decoded\n\n\n  json.UTF8Encoding = false;\n  return json;\n}\n\nfunction decodePolygon(coordinate, encodeOffsets, encodeScale) {\n  var result = [];\n  var prevX = encodeOffsets[0];\n  var prevY = encodeOffsets[1];\n\n  for (var i = 0; i < coordinate.length; i += 2) {\n    var x = coordinate.charCodeAt(i) - 64;\n    var y = coordinate.charCodeAt(i + 1) - 64; // ZigZag decoding\n\n    x = x >> 1 ^ -(x & 1);\n    y = y >> 1 ^ -(y & 1); // Delta deocding\n\n    x += prevX;\n    y += prevY;\n    prevX = x;\n    prevY = y; // Dequantize\n\n    result.push([x / encodeScale, y / encodeScale]);\n  }\n\n  return result;\n}\n/**\n * @alias module:echarts/coord/geo/parseGeoJson\n * @param {Object} geoJson\n * @param {string} nameProperty\n * @return {module:zrender/container/Group}\n */\n\n\nfunction _default(geoJson, nameProperty) {\n  decode(geoJson);\n  return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {\n    // Output of mapshaper may have geometry null\n    return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;\n  }), function (featureObj) {\n    var properties = featureObj.properties;\n    var geo = featureObj.geometry;\n    var coordinates = geo.coordinates;\n    var geometries = [];\n\n    if (geo.type === 'Polygon') {\n      geometries.push({\n        type: 'polygon',\n        // According to the GeoJSON specification.\n        // First must be exterior, and the rest are all interior(holes).\n        exterior: coordinates[0],\n        interiors: coordinates.slice(1)\n      });\n    }\n\n    if (geo.type === 'MultiPolygon') {\n      zrUtil.each(coordinates, function (item) {\n        if (item[0]) {\n          geometries.push({\n            type: 'polygon',\n            exterior: item[0],\n            interiors: item.slice(1)\n          });\n        }\n      });\n    }\n\n    var region = new Region(properties[nameProperty || 'name'], geometries, properties.cp);\n    region.properties = properties;\n    return region;\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 579 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BoundingRect = __webpack_require__(57);\n\nvar bbox = __webpack_require__(255);\n\nvar vec2 = __webpack_require__(56);\n\nvar polygonContain = __webpack_require__(580);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/coord/geo/Region\n */\n\n/**\n * @param {string|Region} name\n * @param {Array} geometries\n * @param {Array.<number>} cp\n */\nfunction Region(name, geometries, cp) {\n  /**\n   * @type {string}\n   * @readOnly\n   */\n  this.name = name;\n  /**\n   * @type {Array.<Array>}\n   * @readOnly\n   */\n\n  this.geometries = geometries;\n\n  if (!cp) {\n    var rect = this.getBoundingRect();\n    cp = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n  } else {\n    cp = [cp[0], cp[1]];\n  }\n  /**\n   * @type {Array.<number>}\n   */\n\n\n  this.center = cp;\n}\n\nRegion.prototype = {\n  constructor: Region,\n  properties: null,\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getBoundingRect: function () {\n    var rect = this._rect;\n\n    if (rect) {\n      return rect;\n    }\n\n    var MAX_NUMBER = Number.MAX_VALUE;\n    var min = [MAX_NUMBER, MAX_NUMBER];\n    var max = [-MAX_NUMBER, -MAX_NUMBER];\n    var min2 = [];\n    var max2 = [];\n    var geometries = this.geometries;\n\n    for (var i = 0; i < geometries.length; i++) {\n      // Only support polygon\n      if (geometries[i].type !== 'polygon') {\n        continue;\n      } // Doesn't consider hole\n\n\n      var exterior = geometries[i].exterior;\n      bbox.fromPoints(exterior, min2, max2);\n      vec2.min(min, min, min2);\n      vec2.max(max, max, max2);\n    } // No data\n\n\n    if (i === 0) {\n      min[0] = min[1] = max[0] = max[1] = 0;\n    }\n\n    return this._rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n  },\n\n  /**\n   * @param {<Array.<number>} coord\n   * @return {boolean}\n   */\n  contain: function (coord) {\n    var rect = this.getBoundingRect();\n    var geometries = this.geometries;\n\n    if (!rect.contain(coord[0], coord[1])) {\n      return false;\n    }\n\n    loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n      // Only support polygon.\n      if (geometries[i].type !== 'polygon') {\n        continue;\n      }\n\n      var exterior = geometries[i].exterior;\n      var interiors = geometries[i].interiors;\n\n      if (polygonContain.contain(exterior, coord[0], coord[1])) {\n        // Not in the region if point is in the hole.\n        for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n          if (polygonContain.contain(interiors[k])) {\n            continue loopGeo;\n          }\n        }\n\n        return true;\n      }\n    }\n\n    return false;\n  },\n  transformTo: function (x, y, width, height) {\n    var rect = this.getBoundingRect();\n    var aspect = rect.width / rect.height;\n\n    if (!width) {\n      width = aspect * height;\n    } else if (!height) {\n      height = width / aspect;\n    }\n\n    var target = new BoundingRect(x, y, width, height);\n    var transform = rect.calculateTransform(target);\n    var geometries = this.geometries;\n\n    for (var i = 0; i < geometries.length; i++) {\n      // Only support polygon.\n      if (geometries[i].type !== 'polygon') {\n        continue;\n      }\n\n      var exterior = geometries[i].exterior;\n      var interiors = geometries[i].interiors;\n\n      for (var p = 0; p < exterior.length; p++) {\n        vec2.applyTransform(exterior[p], exterior[p], transform);\n      }\n\n      for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\n        for (var p = 0; p < interiors[h].length; p++) {\n          vec2.applyTransform(interiors[h][p], interiors[h][p], transform);\n        }\n      }\n    }\n\n    rect = this._rect;\n    rect.copy(target); // Update center\n\n    this.center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n  },\n  cloneShallow: function (name) {\n    name == null && (name = this.name);\n    var newRegion = new Region(name, this.geometries, this.center);\n    newRegion._rect = this._rect;\n    newRegion.transformTo = null; // Simply avoid to be called.\n\n    return newRegion;\n  }\n};\nvar _default = Region;\nmodule.exports = _default;\n\n/***/ }),\n/* 580 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar windingLine = __webpack_require__(561);\n\nvar EPSILON = 1e-8;\n\nfunction isAroundEqual(a, b) {\n  return Math.abs(a - b) < EPSILON;\n}\n\nfunction contain(points, x, y) {\n  var w = 0;\n  var p = points[0];\n\n  if (!p) {\n    return false;\n  }\n\n  for (var i = 1; i < points.length; i++) {\n    var p2 = points[i];\n    w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n    p = p2;\n  } // Close polygon\n\n\n  var p0 = points[0];\n\n  if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n    w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n  }\n\n  return w !== 0;\n}\n\nexports.contain = contain;\n\n/***/ }),\n/* 581 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataStackHelper = __webpack_require__(132);\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar _util = __webpack_require__(2);\n\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} coordSys\n * @param {module:echarts/data/List} data\n * @param {string} valueOrigin lineSeries.option.areaStyle.origin\n */\nfunction prepareDataCoordInfo(coordSys, data, valueOrigin) {\n  var baseAxis = coordSys.getBaseAxis();\n  var valueAxis = coordSys.getOtherAxis(baseAxis);\n  var valueStart = getValueStart(valueAxis, valueOrigin);\n  var baseAxisDim = baseAxis.dim;\n  var valueAxisDim = valueAxis.dim;\n  var valueDim = data.mapDimension(valueAxisDim);\n  var baseDim = data.mapDimension(baseAxisDim);\n  var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n  var dims = map(coordSys.dimensions, function (coordDim) {\n    return data.mapDimension(coordDim);\n  });\n  var stacked;\n  var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n  if (stacked |= isDimensionStacked(data, dims[0]\n  /*, dims[1]*/\n  )) {\n    // jshint ignore:line\n    dims[0] = stackResultDim;\n  }\n\n  if (stacked |= isDimensionStacked(data, dims[1]\n  /*, dims[0]*/\n  )) {\n    // jshint ignore:line\n    dims[1] = stackResultDim;\n  }\n\n  return {\n    dataDimsForPoint: dims,\n    valueStart: valueStart,\n    valueAxisDim: valueAxisDim,\n    baseAxisDim: baseAxisDim,\n    stacked: !!stacked,\n    valueDim: valueDim,\n    baseDim: baseDim,\n    baseDataOffset: baseDataOffset,\n    stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n  };\n}\n\nfunction getValueStart(valueAxis, valueOrigin) {\n  var valueStart = 0;\n  var extent = valueAxis.scale.getExtent();\n\n  if (valueOrigin === 'start') {\n    valueStart = extent[0];\n  } else if (valueOrigin === 'end') {\n    valueStart = extent[1];\n  } // auto\n  else {\n      // Both positive\n      if (extent[0] > 0) {\n        valueStart = extent[0];\n      } // Both negative\n      else if (extent[1] < 0) {\n          valueStart = extent[1];\n        } // If is one positive, and one negative, onZero shall be true\n\n    }\n\n  return valueStart;\n}\n\nfunction getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n  var value = NaN;\n\n  if (dataCoordInfo.stacked) {\n    value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n  }\n\n  if (isNaN(value)) {\n    value = dataCoordInfo.valueStart;\n  }\n\n  var baseDataOffset = dataCoordInfo.baseDataOffset;\n  var stackedData = [];\n  stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n  stackedData[1 - baseDataOffset] = value;\n  return coordSys.dataToPoint(stackedData);\n}\n\nexports.prepareDataCoordInfo = prepareDataCoordInfo;\nexports.getStackedOnPoint = getStackedOnPoint;\n\n/***/ }),\n/* 582 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Path = __webpack_require__(63);\n\nvar vec2 = __webpack_require__(56);\n\nvar fixClipWithShadow = __webpack_require__(563);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Poly path support NaN point\nvar vec2Min = vec2.min;\nvar vec2Max = vec2.max;\nvar scaleAndAdd = vec2.scaleAndAdd;\nvar v2Copy = vec2.copy; // Temporary variable\n\nvar v = [];\nvar cp0 = [];\nvar cp1 = [];\n\nfunction isPointNull(p) {\n  return isNaN(p[0]) || isNaN(p[1]);\n}\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n  // if (smoothMonotone == null) {\n  //     if (isMono(points, 'x')) {\n  //         return drawMono(ctx, points, start, segLen, allLen,\n  //             dir, smoothMin, smoothMax, smooth, 'x', connectNulls);\n  //     }\n  //     else if (isMono(points, 'y')) {\n  //         return drawMono(ctx, points, start, segLen, allLen,\n  //             dir, smoothMin, smoothMax, smooth, 'y', connectNulls);\n  //     }\n  //     else {\n  //         return drawNonMono.apply(this, arguments);\n  //     }\n  // }\n  // else if (smoothMonotone !== 'none' && isMono(points, smoothMonotone)) {\n  //     return drawMono.apply(this, arguments);\n  // }\n  // else {\n  //     return drawNonMono.apply(this, arguments);\n  // }\n  if (smoothMonotone === 'none' || !smoothMonotone) {\n    return drawNonMono.apply(this, arguments);\n  } else {\n    return drawMono.apply(this, arguments);\n  }\n}\n/**\n * Check if points is in monotone.\n *\n * @param {number[][]} points         Array of points which is in [x, y] form\n * @param {string}     smoothMonotone 'x', 'y', or 'none', stating for which\n *                                    dimension that is checking.\n *                                    If is 'none', `drawNonMono` should be\n *                                    called.\n *                                    If is undefined, either being monotone\n *                                    in 'x' or 'y' will call `drawMono`.\n */\n// function isMono(points, smoothMonotone) {\n//     if (points.length <= 1) {\n//         return true;\n//     }\n//     var dim = smoothMonotone === 'x' ? 0 : 1;\n//     var last = points[0][dim];\n//     var lastDiff = 0;\n//     for (var i = 1; i < points.length; ++i) {\n//         var diff = points[i][dim] - last;\n//         if (!isNaN(diff) && !isNaN(lastDiff)\n//             && diff !== 0 && lastDiff !== 0\n//             && ((diff >= 0) !== (lastDiff >= 0))\n//         ) {\n//             return false;\n//         }\n//         if (!isNaN(diff) && diff !== 0) {\n//             lastDiff = diff;\n//             last = points[i][dim];\n//         }\n//     }\n//     return true;\n// }\n\n/**\n * Draw smoothed line in monotone, in which only vertical or horizontal bezier\n * control points will be used. This should be used when points are monotone\n * either in x or y dimension.\n */\n\n\nfunction drawMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n  var prevIdx = 0;\n  var idx = start;\n\n  for (var k = 0; k < segLen; k++) {\n    var p = points[idx];\n\n    if (idx >= allLen || idx < 0) {\n      break;\n    }\n\n    if (isPointNull(p)) {\n      if (connectNulls) {\n        idx += dir;\n        continue;\n      }\n\n      break;\n    }\n\n    if (idx === start) {\n      ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n    } else {\n      if (smooth > 0) {\n        var prevP = points[prevIdx];\n        var dim = smoothMonotone === 'y' ? 1 : 0; // Length of control point to p, either in x or y, but not both\n\n        var ctrlLen = (p[dim] - prevP[dim]) * smooth;\n        v2Copy(cp0, prevP);\n        cp0[dim] = prevP[dim] + ctrlLen;\n        v2Copy(cp1, p);\n        cp1[dim] = p[dim] - ctrlLen;\n        ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\n      } else {\n        ctx.lineTo(p[0], p[1]);\n      }\n    }\n\n    prevIdx = idx;\n    idx += dir;\n  }\n\n  return k;\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\n\n\nfunction drawNonMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n  var prevIdx = 0;\n  var idx = start;\n\n  for (var k = 0; k < segLen; k++) {\n    var p = points[idx];\n\n    if (idx >= allLen || idx < 0) {\n      break;\n    }\n\n    if (isPointNull(p)) {\n      if (connectNulls) {\n        idx += dir;\n        continue;\n      }\n\n      break;\n    }\n\n    if (idx === start) {\n      ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n      v2Copy(cp0, p);\n    } else {\n      if (smooth > 0) {\n        var nextIdx = idx + dir;\n        var nextP = points[nextIdx];\n\n        if (connectNulls) {\n          // Find next point not null\n          while (nextP && isPointNull(points[nextIdx])) {\n            nextIdx += dir;\n            nextP = points[nextIdx];\n          }\n        }\n\n        var ratioNextSeg = 0.5;\n        var prevP = points[prevIdx];\n        var nextP = points[nextIdx]; // Last point\n\n        if (!nextP || isPointNull(nextP)) {\n          v2Copy(cp1, p);\n        } else {\n          // If next data is null in not connect case\n          if (isPointNull(nextP) && !connectNulls) {\n            nextP = p;\n          }\n\n          vec2.sub(v, nextP, prevP);\n          var lenPrevSeg;\n          var lenNextSeg;\n\n          if (smoothMonotone === 'x' || smoothMonotone === 'y') {\n            var dim = smoothMonotone === 'x' ? 0 : 1;\n            lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\n            lenNextSeg = Math.abs(p[dim] - nextP[dim]);\n          } else {\n            lenPrevSeg = vec2.dist(p, prevP);\n            lenNextSeg = vec2.dist(p, nextP);\n          } // Use ratio of seg length\n\n\n          ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n          scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg));\n        } // Smooth constraint\n\n\n        vec2Min(cp0, cp0, smoothMax);\n        vec2Max(cp0, cp0, smoothMin);\n        vec2Min(cp1, cp1, smoothMax);\n        vec2Max(cp1, cp1, smoothMin);\n        ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]); // cp0 of next segment\n\n        scaleAndAdd(cp0, p, v, smooth * ratioNextSeg);\n      } else {\n        ctx.lineTo(p[0], p[1]);\n      }\n    }\n\n    prevIdx = idx;\n    idx += dir;\n  }\n\n  return k;\n}\n\nfunction getBoundingBox(points, smoothConstraint) {\n  var ptMin = [Infinity, Infinity];\n  var ptMax = [-Infinity, -Infinity];\n\n  if (smoothConstraint) {\n    for (var i = 0; i < points.length; i++) {\n      var pt = points[i];\n\n      if (pt[0] < ptMin[0]) {\n        ptMin[0] = pt[0];\n      }\n\n      if (pt[1] < ptMin[1]) {\n        ptMin[1] = pt[1];\n      }\n\n      if (pt[0] > ptMax[0]) {\n        ptMax[0] = pt[0];\n      }\n\n      if (pt[1] > ptMax[1]) {\n        ptMax[1] = pt[1];\n      }\n    }\n  }\n\n  return {\n    min: smoothConstraint ? ptMin : ptMax,\n    max: smoothConstraint ? ptMax : ptMin\n  };\n}\n\nvar Polyline = Path.extend({\n  type: 'ec-polyline',\n  shape: {\n    points: [],\n    smooth: 0,\n    smoothConstraint: true,\n    smoothMonotone: null,\n    connectNulls: false\n  },\n  style: {\n    fill: null,\n    stroke: '#000'\n  },\n  brush: fixClipWithShadow(Path.prototype.brush),\n  buildPath: function (ctx, shape) {\n    var points = shape.points;\n    var i = 0;\n    var len = points.length;\n    var result = getBoundingBox(points, shape.smoothConstraint);\n\n    if (shape.connectNulls) {\n      // Must remove first and last null values avoid draw error in polygon\n      for (; len > 0; len--) {\n        if (!isPointNull(points[len - 1])) {\n          break;\n        }\n      }\n\n      for (; i < len; i++) {\n        if (!isPointNull(points[i])) {\n          break;\n        }\n      }\n    }\n\n    while (i < len) {\n      i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n    }\n  }\n});\nvar Polygon = Path.extend({\n  type: 'ec-polygon',\n  shape: {\n    points: [],\n    // Offset between stacked base points and points\n    stackedOnPoints: [],\n    smooth: 0,\n    stackedOnSmooth: 0,\n    smoothConstraint: true,\n    smoothMonotone: null,\n    connectNulls: false\n  },\n  brush: fixClipWithShadow(Path.prototype.brush),\n  buildPath: function (ctx, shape) {\n    var points = shape.points;\n    var stackedOnPoints = shape.stackedOnPoints;\n    var i = 0;\n    var len = points.length;\n    var smoothMonotone = shape.smoothMonotone;\n    var bbox = getBoundingBox(points, shape.smoothConstraint);\n    var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\n\n    if (shape.connectNulls) {\n      // Must remove first and last null values avoid draw error in polygon\n      for (; len > 0; len--) {\n        if (!isPointNull(points[len - 1])) {\n          break;\n        }\n      }\n\n      for (; i < len; i++) {\n        if (!isPointNull(points[i])) {\n          break;\n        }\n      }\n    }\n\n    while (i < len) {\n      var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\n      drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n      i += k + 1;\n      ctx.closePath();\n    }\n  }\n});\nexports.Polyline = Polyline;\nexports.Polygon = Polygon;\n\n/***/ }),\n/* 583 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar axisModelCreator = __webpack_require__(333);\n\nvar axisModelCommonMixin = __webpack_require__(216);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisModel = ComponentModel.extend({\n  type: 'cartesian2dAxis',\n\n  /**\n   * @type {module:echarts/coord/cartesian/Axis2D}\n   */\n  axis: null,\n\n  /**\n   * @override\n   */\n  init: function () {\n    AxisModel.superApply(this, 'init', arguments);\n    this.resetRange();\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function () {\n    AxisModel.superApply(this, 'mergeOption', arguments);\n    this.resetRange();\n  },\n\n  /**\n   * @override\n   */\n  restoreData: function () {\n    AxisModel.superApply(this, 'restoreData', arguments);\n    this.resetRange();\n  },\n\n  /**\n   * @override\n   * @return {module:echarts/model/Component}\n   */\n  getCoordSysModel: function () {\n    return this.ecModel.queryComponents({\n      mainType: 'grid',\n      index: this.option.gridIndex,\n      id: this.option.gridId\n    })[0];\n  }\n});\n\nfunction getAxisType(axisDim, option) {\n  // Default axis with data is category axis\n  return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\nvar extraOption = {\n  // gridIndex: 0,\n  // gridId: '',\n  // Offset is for multiple axis on the same position\n  offset: 0\n};\naxisModelCreator('x', AxisModel, getAxisType, extraOption);\naxisModelCreator('y', AxisModel, getAxisType, extraOption);\nvar _default = AxisModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 584 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar defaultOption = {\n  show: true,\n  zlevel: 0,\n  z: 0,\n  // Inverse the axis.\n  inverse: false,\n  // Axis name displayed.\n  name: '',\n  // 'start' | 'middle' | 'end'\n  nameLocation: 'end',\n  // By degree. By default auto rotate by nameLocation.\n  nameRotate: null,\n  nameTruncate: {\n    maxWidth: null,\n    ellipsis: '...',\n    placeholder: '.'\n  },\n  // Use global text style by default.\n  nameTextStyle: {},\n  // The gap between axisName and axisLine.\n  nameGap: 15,\n  // Default `false` to support tooltip.\n  silent: false,\n  // Default `false` to avoid legacy user event listener fail.\n  triggerEvent: false,\n  tooltip: {\n    show: false\n  },\n  axisPointer: {},\n  axisLine: {\n    show: true,\n    onZero: true,\n    onZeroAxisIndex: null,\n    lineStyle: {\n      color: '#333',\n      width: 1,\n      type: 'solid'\n    },\n    // The arrow at both ends the the axis.\n    symbol: ['none', 'none'],\n    symbolSize: [10, 15]\n  },\n  axisTick: {\n    show: true,\n    // Whether axisTick is inside the grid or outside the grid.\n    inside: false,\n    // The length of axisTick.\n    length: 5,\n    lineStyle: {\n      width: 1\n    }\n  },\n  axisLabel: {\n    show: true,\n    // Whether axisLabel is inside the grid or outside the grid.\n    inside: false,\n    rotate: 0,\n    // true | false | null/undefined (auto)\n    showMinLabel: null,\n    // true | false | null/undefined (auto)\n    showMaxLabel: null,\n    margin: 8,\n    // formatter: null,\n    fontSize: 12\n  },\n  splitLine: {\n    show: true,\n    lineStyle: {\n      color: ['#ccc'],\n      width: 1,\n      type: 'solid'\n    }\n  },\n  splitArea: {\n    show: false,\n    areaStyle: {\n      color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)']\n    }\n  }\n};\nvar axisDefault = {};\naxisDefault.categoryAxis = zrUtil.merge({\n  // The gap at both ends of the axis. For categoryAxis, boolean.\n  boundaryGap: true,\n  // Set false to faster category collection.\n  // Only usefull in the case like: category is\n  // ['2012-01-01', '2012-01-02', ...], where the input\n  // data has been ensured not duplicate and is large data.\n  // null means \"auto\":\n  // if axis.data provided, do not deduplication,\n  // else do deduplication.\n  deduplication: null,\n  // splitArea: {\n  // show: false\n  // },\n  splitLine: {\n    show: false\n  },\n  axisTick: {\n    // If tick is align with label when boundaryGap is true\n    alignWithLabel: false,\n    interval: 'auto'\n  },\n  axisLabel: {\n    interval: 'auto'\n  }\n}, defaultOption);\naxisDefault.valueAxis = zrUtil.merge({\n  // The gap at both ends of the axis. For value axis, [GAP, GAP], where\n  // `GAP` can be an absolute pixel number (like `35`), or percent (like `'30%'`)\n  boundaryGap: [0, 0],\n  // TODO\n  // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60]\n  // Min value of the axis. can be:\n  // + a number\n  // + 'dataMin': use the min value in data.\n  // + null/undefined: auto decide min value (consider pretty look and boundaryGap).\n  // min: null,\n  // Max value of the axis. can be:\n  // + a number\n  // + 'dataMax': use the max value in data.\n  // + null/undefined: auto decide max value (consider pretty look and boundaryGap).\n  // max: null,\n  // Readonly prop, specifies start value of the range when using data zoom.\n  // rangeStart: null\n  // Readonly prop, specifies end value of the range when using data zoom.\n  // rangeEnd: null\n  // Optional value can be:\n  // + `false`: always include value 0.\n  // + `true`: the extent do not consider value 0.\n  // scale: false,\n  // AxisTick and axisLabel and splitLine are caculated based on splitNumber.\n  splitNumber: 5,\n  // Interval specifies the span of the ticks is mandatorily.\n  // interval: null\n  // Specify min interval when auto calculate tick interval.\n  // minInterval: null\n  // Specify max interval when auto calculate tick interval.\n  // maxInterval: null\n  minorTick: {\n    // Minor tick, not available for cateogry axis.\n    show: false,\n    // Split number of minor ticks. The value should be in range of (0, 100)\n    splitNumber: 5,\n    // Lenght of minor tick\n    length: 3,\n    // Same inside with axisTick\n    // Line style\n    lineStyle: {// Default to be same with axisTick\n    }\n  },\n  minorSplitLine: {\n    show: false,\n    lineStyle: {\n      color: '#eee',\n      width: 1\n    }\n  }\n}, defaultOption);\naxisDefault.timeAxis = zrUtil.defaults({\n  scale: true,\n  min: 'dataMin',\n  max: 'dataMax'\n}, axisDefault.valueAxis);\naxisDefault.logAxis = zrUtil.defaults({\n  scale: true,\n  logBase: 10\n}, axisDefault.valueAxis);\nvar _default = axisDefault;\nmodule.exports = _default;\n\n/***/ }),\n/* 585 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Can only be called after coordinate system creation stage.\n * (Can be called before coordinate system update stage).\n *\n * @param {Object} opt {labelInside}\n * @return {Object} {\n *  position, rotation, labelDirection, labelOffset,\n *  tickDirection, labelRotate, z2\n * }\n */\nfunction layout(gridModel, axisModel, opt) {\n  opt = opt || {};\n  var grid = gridModel.coordinateSystem;\n  var axis = axisModel.axis;\n  var layout = {};\n  var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\n  var rawAxisPosition = axis.position;\n  var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\n  var axisDim = axis.dim;\n  var rect = grid.getRect();\n  var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n  var idx = {\n    left: 0,\n    right: 1,\n    top: 0,\n    bottom: 1,\n    onZero: 2\n  };\n  var axisOffset = axisModel.get('offset') || 0;\n  var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\n\n  if (otherAxisOnZeroOf) {\n    var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\n    posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\n  } // Axis position\n\n\n  layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; // Axis rotation\n\n  layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); // Tick and label direction, x y is axisDim\n\n  var dirMap = {\n    top: -1,\n    bottom: 1,\n    left: -1,\n    right: 1\n  };\n  layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\n  layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\n\n  if (axisModel.get('axisTick.inside')) {\n    layout.tickDirection = -layout.tickDirection;\n  }\n\n  if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n    layout.labelDirection = -layout.labelDirection;\n  } // Special label rotation\n\n\n  var labelRotate = axisModel.get('axisLabel.rotate');\n  layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; // Over splitLine and splitArea\n\n  layout.z2 = 1;\n  return layout;\n}\n\nexports.layout = layout;\n\n/***/ }),\n/* 586 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\n  var axis = axisModel.axis;\n\n  if (axis.scale.isBlank()) {\n    return;\n  }\n\n  var splitAreaModel = axisModel.getModel('splitArea');\n  var areaStyleModel = splitAreaModel.getModel('areaStyle');\n  var areaColors = areaStyleModel.get('color');\n  var gridRect = gridModel.coordinateSystem.getRect();\n  var ticksCoords = axis.getTicksCoords({\n    tickModel: splitAreaModel,\n    clamp: true\n  });\n\n  if (!ticksCoords.length) {\n    return;\n  } // For Making appropriate splitArea animation, the color and anid\n  // should be corresponding to previous one if possible.\n\n\n  var areaColorsLen = areaColors.length;\n  var lastSplitAreaColors = axisView.__splitAreaColors;\n  var newSplitAreaColors = zrUtil.createHashMap();\n  var colorIndex = 0;\n\n  if (lastSplitAreaColors) {\n    for (var i = 0; i < ticksCoords.length; i++) {\n      var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\n\n      if (cIndex != null) {\n        colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\n        break;\n      }\n    }\n  }\n\n  var prev = axis.toGlobalCoord(ticksCoords[0].coord);\n  var areaStyle = areaStyleModel.getAreaStyle();\n  areaColors = zrUtil.isArray(areaColors) ? areaColors : [areaColors];\n\n  for (var i = 1; i < ticksCoords.length; i++) {\n    var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n    var x;\n    var y;\n    var width;\n    var height;\n\n    if (axis.isHorizontal()) {\n      x = prev;\n      y = gridRect.y;\n      width = tickCoord - x;\n      height = gridRect.height;\n      prev = x + width;\n    } else {\n      x = gridRect.x;\n      y = prev;\n      width = gridRect.width;\n      height = tickCoord - y;\n      prev = y + height;\n    }\n\n    var tickValue = ticksCoords[i - 1].tickValue;\n    tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\n    axisGroup.add(new graphic.Rect({\n      anid: tickValue != null ? 'area_' + tickValue : null,\n      shape: {\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      },\n      style: zrUtil.defaults({\n        fill: areaColors[colorIndex]\n      }, areaStyle),\n      silent: true\n    }));\n    colorIndex = (colorIndex + 1) % areaColorsLen;\n  }\n\n  axisView.__splitAreaColors = newSplitAreaColors;\n}\n\nfunction rectCoordAxisHandleRemove(axisView) {\n  axisView.__splitAreaColors = null;\n}\n\nexports.rectCoordAxisBuildSplitArea = rectCoordAxisBuildSplitArea;\nexports.rectCoordAxisHandleRemove = rectCoordAxisHandleRemove;\n\n/***/ }),\n/* 587 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(75);\n\nvar createListFromArray = __webpack_require__(145);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n  type: 'series.__base_bar__',\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this, {\n      useEncodeDefaulter: true\n    });\n  },\n  getMarkerPosition: function (value) {\n    var coordSys = this.coordinateSystem;\n\n    if (coordSys) {\n      // PENDING if clamp ?\n      var pt = coordSys.dataToPoint(coordSys.clampData(value));\n      var data = this.getData();\n      var offset = data.getLayout('offset');\n      var size = data.getLayout('size');\n      var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\n      pt[offsetIndex] += offset + size / 2;\n      return pt;\n    }\n\n    return [NaN, NaN];\n  },\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 2,\n    // 二级层叠\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    // stack: null\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // 最小高度改为0\n    barMinHeight: 0,\n    // 最小角度为0，仅对极坐标系下的柱状图有效\n    barMinAngle: 0,\n    // cursor: null,\n    large: false,\n    largeThreshold: 400,\n    progressive: 3e3,\n    progressiveChunkMode: 'mod',\n    // barMaxWidth: null,\n    // In cartesian, the default value is 1. Otherwise null.\n    // barMinWidth: null,\n    // 默认自适应\n    // barWidth: null,\n    // 柱间距离，默认为柱形宽度的30%，可设固定值\n    // barGap: '30%',\n    // 类目间柱形距离，默认为类目间距的20%，可设固定值\n    // barCategoryGap: '20%',\n    // label: {\n    //      show: false\n    // },\n    itemStyle: {},\n    emphasis: {}\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 588 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar _labelHelper = __webpack_require__(410);\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction setLabel(normalStyle, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside) {\n  var labelModel = itemModel.getModel('label');\n  var hoverLabelModel = itemModel.getModel('emphasis.label');\n  graphic.setLabelStyle(normalStyle, hoverStyle, labelModel, hoverLabelModel, {\n    labelFetcher: seriesModel,\n    labelDataIndex: dataIndex,\n    defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n    isRectText: true,\n    autoColor: color\n  });\n  fixPosition(normalStyle);\n  fixPosition(hoverStyle);\n}\n\nfunction fixPosition(style, labelPositionOutside) {\n  if (style.textPosition === 'outside') {\n    style.textPosition = labelPositionOutside;\n  }\n}\n\nexports.setLabel = setLabel;\n\n/***/ }),\n/* 589 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType, actionInfos) {\n  zrUtil.each(actionInfos, function (actionInfo) {\n    actionInfo.update = 'updateView';\n    /**\n     * @payload\n     * @property {string} seriesName\n     * @property {string} name\n     */\n\n    echarts.registerAction(actionInfo, function (payload, ecModel) {\n      var selected = {};\n      ecModel.eachComponent({\n        mainType: 'series',\n        subType: seriesType,\n        query: payload\n      }, function (seriesModel) {\n        if (seriesModel[actionInfo.method]) {\n          seriesModel[actionInfo.method](payload.name, payload.dataIndex);\n        }\n\n        var data = seriesModel.getData(); // Create selected map\n\n        data.each(function (idx) {\n          var name = data.getName(idx);\n          selected[name] = seriesModel.isSelected(name) || false;\n        });\n      });\n      return {\n        name: payload.name,\n        selected: selected,\n        seriesId: payload.seriesId\n      };\n    });\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 590 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar RoamController = __webpack_require__(266);\n\nvar roamHelper = __webpack_require__(413);\n\nvar _cursorHelper = __webpack_require__(337);\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphic = __webpack_require__(23);\n\nvar geoSourceManager = __webpack_require__(336);\n\nvar _component = __webpack_require__(256);\n\nvar getUID = _component.getUID;\n\nvar Transformable = __webpack_require__(323);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getFixedItemStyle(model) {\n  var itemStyle = model.getItemStyle();\n  var areaColor = model.get('areaColor'); // If user want the color not to be changed when hover,\n  // they should both set areaColor and color to be null.\n\n  if (areaColor != null) {\n    itemStyle.fill = areaColor;\n  }\n\n  return itemStyle;\n}\n\nfunction updateMapSelectHandler(mapDraw, mapOrGeoModel, regionsGroup, api, fromView) {\n  regionsGroup.off('click');\n  regionsGroup.off('mousedown');\n\n  if (mapOrGeoModel.get('selectedMode')) {\n    regionsGroup.on('mousedown', function () {\n      mapDraw._mouseDownFlag = true;\n    });\n    regionsGroup.on('click', function (e) {\n      if (!mapDraw._mouseDownFlag) {\n        return;\n      }\n\n      mapDraw._mouseDownFlag = false;\n      var el = e.target;\n\n      while (!el.__regions) {\n        el = el.parent;\n      }\n\n      if (!el) {\n        return;\n      }\n\n      var action = {\n        type: (mapOrGeoModel.mainType === 'geo' ? 'geo' : 'map') + 'ToggleSelect',\n        batch: zrUtil.map(el.__regions, function (region) {\n          return {\n            name: region.name,\n            from: fromView.uid\n          };\n        })\n      };\n      action[mapOrGeoModel.mainType + 'Id'] = mapOrGeoModel.id;\n      api.dispatchAction(action);\n      updateMapSelected(mapOrGeoModel, regionsGroup);\n    });\n  }\n}\n\nfunction updateMapSelected(mapOrGeoModel, regionsGroup) {\n  // FIXME\n  regionsGroup.eachChild(function (otherRegionEl) {\n    zrUtil.each(otherRegionEl.__regions, function (region) {\n      otherRegionEl.trigger(mapOrGeoModel.isSelected(region.name) ? 'emphasis' : 'normal');\n    });\n  });\n}\n/**\n * @alias module:echarts/component/helper/MapDraw\n * @param {module:echarts/ExtensionAPI} api\n * @param {boolean} updateGroup\n */\n\n\nfunction MapDraw(api, updateGroup) {\n  var group = new graphic.Group();\n  /**\n   * @type {string}\n   * @private\n   */\n\n  this.uid = getUID('ec_map_draw');\n  /**\n   * @type {module:echarts/component/helper/RoamController}\n   * @private\n   */\n\n  this._controller = new RoamController(api.getZr());\n  /**\n   * @type {Object} {target, zoom, zoomLimit}\n   * @private\n   */\n\n  this._controllerHost = {\n    target: updateGroup ? group : null\n  };\n  /**\n   * @type {module:zrender/container/Group}\n   * @readOnly\n   */\n\n  this.group = group;\n  /**\n   * @type {boolean}\n   * @private\n   */\n\n  this._updateGroup = updateGroup;\n  /**\n   * This flag is used to make sure that only one among\n   * `pan`, `zoom`, `click` can occurs, otherwise 'selected'\n   * action may be triggered when `pan`, which is unexpected.\n   * @type {booelan}\n   */\n\n  this._mouseDownFlag;\n  /**\n   * @type {string}\n   */\n\n  this._mapName;\n  /**\n   * @type {boolean}\n   */\n\n  this._initialized;\n  /**\n   * @type {module:zrender/container/Group}\n   */\n\n  group.add(this._regionsGroup = new graphic.Group());\n  /**\n   * @type {module:zrender/container/Group}\n   */\n\n  group.add(this._backgroundGroup = new graphic.Group());\n}\n\nMapDraw.prototype = {\n  constructor: MapDraw,\n  draw: function (mapOrGeoModel, ecModel, api, fromView, payload) {\n    var isGeo = mapOrGeoModel.mainType === 'geo'; // Map series has data. GEO model that controlled by map series\n    // will be assigned with map data. Other GEO model has no data.\n\n    var data = mapOrGeoModel.getData && mapOrGeoModel.getData();\n    isGeo && ecModel.eachComponent({\n      mainType: 'series',\n      subType: 'map'\n    }, function (mapSeries) {\n      if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {\n        data = mapSeries.getData();\n      }\n    });\n    var geo = mapOrGeoModel.coordinateSystem;\n\n    this._updateBackground(geo);\n\n    var regionsGroup = this._regionsGroup;\n    var group = this.group;\n    var transformInfo = geo.getTransformInfo(); // No animation when first draw or in action\n\n    var isFirstDraw = !regionsGroup.childAt(0) || payload;\n    var targetScale;\n\n    if (isFirstDraw) {\n      group.transform = transformInfo.roamTransform;\n      group.decomposeTransform();\n      group.dirty();\n    } else {\n      var target = new Transformable();\n      target.transform = transformInfo.roamTransform;\n      target.decomposeTransform();\n      var props = {\n        scale: target.scale,\n        position: target.position\n      };\n      targetScale = target.scale;\n      graphic.updateProps(group, props, mapOrGeoModel);\n    }\n\n    var scale = transformInfo.rawScale;\n    var position = transformInfo.rawPosition;\n    regionsGroup.removeAll();\n    var itemStyleAccessPath = ['itemStyle'];\n    var hoverItemStyleAccessPath = ['emphasis', 'itemStyle'];\n    var labelAccessPath = ['label'];\n    var hoverLabelAccessPath = ['emphasis', 'label'];\n    var nameMap = zrUtil.createHashMap();\n    zrUtil.each(geo.regions, function (region) {\n      // Consider in GeoJson properties.name may be duplicated, for example,\n      // there is multiple region named \"United Kindom\" or \"France\" (so many\n      // colonies). And it is not appropriate to merge them in geo, which\n      // will make them share the same label and bring trouble in label\n      // location calculation.\n      var regionGroup = nameMap.get(region.name) || nameMap.set(region.name, new graphic.Group());\n      var compoundPath = new graphic.CompoundPath({\n        segmentIgnoreThreshold: 1,\n        shape: {\n          paths: []\n        }\n      });\n      regionGroup.add(compoundPath);\n      var regionModel = mapOrGeoModel.getRegionModel(region.name) || mapOrGeoModel;\n      var itemStyleModel = regionModel.getModel(itemStyleAccessPath);\n      var hoverItemStyleModel = regionModel.getModel(hoverItemStyleAccessPath);\n      var itemStyle = getFixedItemStyle(itemStyleModel);\n      var hoverItemStyle = getFixedItemStyle(hoverItemStyleModel);\n      var labelModel = regionModel.getModel(labelAccessPath);\n      var hoverLabelModel = regionModel.getModel(hoverLabelAccessPath);\n      var dataIdx; // Use the itemStyle in data if has data\n\n      if (data) {\n        dataIdx = data.indexOfName(region.name); // Only visual color of each item will be used. It can be encoded by dataRange\n        // But visual color of series is used in symbol drawing\n        //\n        // Visual color for each series is for the symbol draw\n\n        var visualColor = data.getItemVisual(dataIdx, 'color', true);\n\n        if (visualColor) {\n          itemStyle.fill = visualColor;\n        }\n      }\n\n      var transformPoint = function (point) {\n        return [point[0] * scale[0] + position[0], point[1] * scale[1] + position[1]];\n      };\n\n      zrUtil.each(region.geometries, function (geometry) {\n        if (geometry.type !== 'polygon') {\n          return;\n        }\n\n        var points = [];\n\n        for (var i = 0; i < geometry.exterior.length; ++i) {\n          points.push(transformPoint(geometry.exterior[i]));\n        }\n\n        compoundPath.shape.paths.push(new graphic.Polygon({\n          segmentIgnoreThreshold: 1,\n          shape: {\n            points: points\n          }\n        }));\n\n        for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); ++i) {\n          var interior = geometry.interiors[i];\n          var points = [];\n\n          for (var j = 0; j < interior.length; ++j) {\n            points.push(transformPoint(interior[j]));\n          }\n\n          compoundPath.shape.paths.push(new graphic.Polygon({\n            segmentIgnoreThreshold: 1,\n            shape: {\n              points: points\n            }\n          }));\n        }\n      });\n      compoundPath.setStyle(itemStyle);\n      compoundPath.style.strokeNoScale = true;\n      compoundPath.culling = true; // Label\n\n      var showLabel = labelModel.get('show');\n      var hoverShowLabel = hoverLabelModel.get('show');\n      var isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx));\n      var itemLayout = data && data.getItemLayout(dataIdx); // In the following cases label will be drawn\n      // 1. In map series and data value is NaN\n      // 2. In geo component\n      // 4. Region has no series legendSymbol, which will be add a showLabel flag in mapSymbolLayout\n\n      if (isGeo || isDataNaN && (showLabel || hoverShowLabel) || itemLayout && itemLayout.showLabel) {\n        var query = !isGeo ? dataIdx : region.name;\n        var labelFetcher; // Consider dataIdx not found.\n\n        if (!data || dataIdx >= 0) {\n          labelFetcher = mapOrGeoModel;\n        }\n\n        var textEl = new graphic.Text({\n          position: transformPoint(region.center.slice()),\n          // FIXME\n          // label rotation is not support yet in geo or regions of series-map\n          // that has no data. The rotation will be effected by this `scale`.\n          // So needed to change to RectText?\n          scale: [1 / group.scale[0], 1 / group.scale[1]],\n          z2: 10,\n          silent: true\n        });\n        graphic.setLabelStyle(textEl.style, textEl.hoverStyle = {}, labelModel, hoverLabelModel, {\n          labelFetcher: labelFetcher,\n          labelDataIndex: query,\n          defaultText: region.name,\n          useInsideStyle: false\n        }, {\n          textAlign: 'center',\n          textVerticalAlign: 'middle'\n        });\n\n        if (!isFirstDraw) {\n          // Text animation\n          var textScale = [1 / targetScale[0], 1 / targetScale[1]];\n          graphic.updateProps(textEl, {\n            scale: textScale\n          }, mapOrGeoModel);\n        }\n\n        regionGroup.add(textEl);\n      } // setItemGraphicEl, setHoverStyle after all polygons and labels\n      // are added to the rigionGroup\n\n\n      if (data) {\n        data.setItemGraphicEl(dataIdx, regionGroup);\n      } else {\n        var regionModel = mapOrGeoModel.getRegionModel(region.name); // Package custom mouse event for geo component\n\n        compoundPath.eventData = {\n          componentType: 'geo',\n          componentIndex: mapOrGeoModel.componentIndex,\n          geoIndex: mapOrGeoModel.componentIndex,\n          name: region.name,\n          region: regionModel && regionModel.option || {}\n        };\n      }\n\n      var groupRegions = regionGroup.__regions || (regionGroup.__regions = []);\n      groupRegions.push(region);\n      regionGroup.highDownSilentOnTouch = !!mapOrGeoModel.get('selectedMode');\n      graphic.setHoverStyle(regionGroup, hoverItemStyle);\n      regionsGroup.add(regionGroup);\n    });\n\n    this._updateController(mapOrGeoModel, ecModel, api);\n\n    updateMapSelectHandler(this, mapOrGeoModel, regionsGroup, api, fromView);\n    updateMapSelected(mapOrGeoModel, regionsGroup);\n  },\n  remove: function () {\n    this._regionsGroup.removeAll();\n\n    this._backgroundGroup.removeAll();\n\n    this._controller.dispose();\n\n    this._mapName && geoSourceManager.removeGraphic(this._mapName, this.uid);\n    this._mapName = null;\n    this._controllerHost = {};\n  },\n  _updateBackground: function (geo) {\n    var mapName = geo.map;\n\n    if (this._mapName !== mapName) {\n      zrUtil.each(geoSourceManager.makeGraphic(mapName, this.uid), function (root) {\n        this._backgroundGroup.add(root);\n      }, this);\n    }\n\n    this._mapName = mapName;\n  },\n  _updateController: function (mapOrGeoModel, ecModel, api) {\n    var geo = mapOrGeoModel.coordinateSystem;\n    var controller = this._controller;\n    var controllerHost = this._controllerHost;\n    controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit');\n    controllerHost.zoom = geo.getZoom(); // roamType is will be set default true if it is null\n\n    controller.enable(mapOrGeoModel.get('roam') || false);\n    var mainType = mapOrGeoModel.mainType;\n\n    function makeActionBase() {\n      var action = {\n        type: 'geoRoam',\n        componentType: mainType\n      };\n      action[mainType + 'Id'] = mapOrGeoModel.id;\n      return action;\n    }\n\n    controller.off('pan').on('pan', function (e) {\n      this._mouseDownFlag = false;\n      roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n      api.dispatchAction(zrUtil.extend(makeActionBase(), {\n        dx: e.dx,\n        dy: e.dy\n      }));\n    }, this);\n    controller.off('zoom').on('zoom', function (e) {\n      this._mouseDownFlag = false;\n      roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n      api.dispatchAction(zrUtil.extend(makeActionBase(), {\n        zoom: e.scale,\n        originX: e.originX,\n        originY: e.originY\n      }));\n\n      if (this._updateGroup) {\n        var scale = this.group.scale;\n\n        this._regionsGroup.traverse(function (el) {\n          if (el.type === 'text') {\n            el.attr('scale', [1 / scale[0], 1 / scale[1]]);\n          }\n        });\n      }\n    }, this);\n    controller.setPointerChecker(function (e, x, y) {\n      return geo.getViewRectAfterRoam().contain(x, y) && !onIrrelevantElement(e, api, mapOrGeoModel);\n    });\n  }\n};\nvar _default = MapDraw;\nmodule.exports = _default;\n\n/***/ }),\n/* 591 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ATTR = '\\0_ec_interaction_mutex';\n\nfunction take(zr, resourceKey, userKey) {\n  var store = getStore(zr);\n  store[resourceKey] = userKey;\n}\n\nfunction release(zr, resourceKey, userKey) {\n  var store = getStore(zr);\n  var uKey = store[resourceKey];\n\n  if (uKey === userKey) {\n    store[resourceKey] = null;\n  }\n}\n\nfunction isTaken(zr, resourceKey) {\n  return !!getStore(zr)[resourceKey];\n}\n\nfunction getStore(zr) {\n  return zr[ATTR] || (zr[ATTR] = {});\n}\n/**\n * payload: {\n *     type: 'takeGlobalCursor',\n *     key: 'dataZoomSelect', or 'brush', or ...,\n *         If no userKey, release global cursor.\n * }\n */\n\n\necharts.registerAction({\n  type: 'takeGlobalCursor',\n  event: 'globalCursorTaken',\n  update: 'update'\n}, function () {});\nexports.take = take;\nexports.release = release;\nexports.isTaken = isTaken;\n\n/***/ }),\n/* 592 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _roamHelper = __webpack_require__(414);\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @payload\n * @property {string} [componentType=series]\n * @property {number} [dx]\n * @property {number} [dy]\n * @property {number} [zoom]\n * @property {number} [originX]\n * @property {number} [originY]\n */\necharts.registerAction({\n  type: 'geoRoam',\n  event: 'geoRoam',\n  update: 'updateTransform'\n}, function (payload, ecModel) {\n  var componentType = payload.componentType || 'series';\n  ecModel.eachComponent({\n    mainType: componentType,\n    query: payload\n  }, function (componentModel) {\n    var geo = componentModel.coordinateSystem;\n\n    if (geo.type !== 'geo') {\n      return;\n    }\n\n    var res = updateCenterAndZoom(geo, payload, componentModel.get('scaleLimit'));\n    componentModel.setCenter && componentModel.setCenter(res.center);\n    componentModel.setZoom && componentModel.setZoom(res.zoom); // All map series with same `map` use the same geo coordinate system\n    // So the center and zoom must be in sync. Include the series not selected by legend\n\n    if (componentType === 'series') {\n      zrUtil.each(componentModel.seriesGroup, function (seriesModel) {\n        seriesModel.setCenter(res.center);\n        seriesModel.setZoom(res.zoom);\n      });\n    }\n  });\n});\n\n/***/ }),\n/* 593 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Link lists and struct (graph or tree)\n */\nvar each = zrUtil.each;\nvar DATAS = '\\0__link_datas';\nvar MAIN_DATA = '\\0__link_mainData'; // Caution:\n// In most case, either list or its shallow clones (see list.cloneShallow)\n// is active in echarts process. So considering heap memory consumption,\n// we do not clone tree or graph, but share them among list and its shallow clones.\n// But in some rare case, we have to keep old list (like do animation in chart). So\n// please take care that both the old list and the new list share the same tree/graph.\n\n/**\n * @param {Object} opt\n * @param {module:echarts/data/List} opt.mainData\n * @param {Object} [opt.struct] For example, instance of Graph or Tree.\n * @param {string} [opt.structAttr] designation: list[structAttr] = struct;\n * @param {Object} [opt.datas] {dataType: data},\n *                 like: {node: nodeList, edge: edgeList}.\n *                 Should contain mainData.\n * @param {Object} [opt.datasAttr] {dataType: attr},\n *                 designation: struct[datasAttr[dataType]] = list;\n */\n\nfunction linkList(opt) {\n  var mainData = opt.mainData;\n  var datas = opt.datas;\n\n  if (!datas) {\n    datas = {\n      main: mainData\n    };\n    opt.datasAttr = {\n      main: 'data'\n    };\n  }\n\n  opt.datas = opt.mainData = null;\n  linkAll(mainData, datas, opt); // Porxy data original methods.\n\n  each(datas, function (data) {\n    each(mainData.TRANSFERABLE_METHODS, function (methodName) {\n      data.wrapMethod(methodName, zrUtil.curry(transferInjection, opt));\n    });\n  }); // Beyond transfer, additional features should be added to `cloneShallow`.\n\n  mainData.wrapMethod('cloneShallow', zrUtil.curry(cloneShallowInjection, opt)); // Only mainData trigger change, because struct.update may trigger\n  // another changable methods, which may bring about dead lock.\n\n  each(mainData.CHANGABLE_METHODS, function (methodName) {\n    mainData.wrapMethod(methodName, zrUtil.curry(changeInjection, opt));\n  }); // Make sure datas contains mainData.\n\n  zrUtil.assert(datas[mainData.dataType] === mainData);\n}\n\nfunction transferInjection(opt, res) {\n  if (isMainData(this)) {\n    // Transfer datas to new main data.\n    var datas = zrUtil.extend({}, this[DATAS]);\n    datas[this.dataType] = res;\n    linkAll(res, datas, opt);\n  } else {\n    // Modify the reference in main data to point newData.\n    linkSingle(res, this.dataType, this[MAIN_DATA], opt);\n  }\n\n  return res;\n}\n\nfunction changeInjection(opt, res) {\n  opt.struct && opt.struct.update(this);\n  return res;\n}\n\nfunction cloneShallowInjection(opt, res) {\n  // cloneShallow, which brings about some fragilities, may be inappropriate\n  // to be exposed as an API. So for implementation simplicity we can make\n  // the restriction that cloneShallow of not-mainData should not be invoked\n  // outside, but only be invoked here.\n  each(res[DATAS], function (data, dataType) {\n    data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);\n  });\n  return res;\n}\n/**\n * Supplement method to List.\n *\n * @public\n * @param {string} [dataType] If not specified, return mainData.\n * @return {module:echarts/data/List}\n */\n\n\nfunction getLinkedData(dataType) {\n  var mainData = this[MAIN_DATA];\n  return dataType == null || mainData == null ? mainData : mainData[DATAS][dataType];\n}\n\nfunction isMainData(data) {\n  return data[MAIN_DATA] === data;\n}\n\nfunction linkAll(mainData, datas, opt) {\n  mainData[DATAS] = {};\n  each(datas, function (data, dataType) {\n    linkSingle(data, dataType, mainData, opt);\n  });\n}\n\nfunction linkSingle(data, dataType, mainData, opt) {\n  mainData[DATAS][dataType] = data;\n  data[MAIN_DATA] = mainData;\n  data.dataType = dataType;\n\n  if (opt.struct) {\n    data[opt.structAttr] = opt.struct;\n    opt.struct[opt.datasAttr[dataType]] = data;\n  } // Supplement method.\n\n\n  data.getLinkedData = getLinkedData;\n}\n\nvar _default = linkList;\nmodule.exports = _default;\n\n/***/ }),\n/* 594 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar layout = __webpack_require__(49);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The tree layoutHelper implementation was originally copied from\n* \"d3.js\"(https://github.com/d3/d3-hierarchy) with\n* some modifications made for this project.\n* (see more details in the comment of the specific method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the licence of \"d3.js\" (BSD-3Clause, see\n* </licenses/LICENSE-d3>).\n*/\n\n/**\n * @file The layout algorithm of node-link tree diagrams. Here we using Reingold-Tilford algorithm to drawing\n *       the tree.\n */\n\n/**\n * Initialize all computational message for following algorithm.\n *\n * @param  {module:echarts/data/Tree~TreeNode} root   The virtual root of the tree.\n */\nfunction init(root) {\n  root.hierNode = {\n    defaultAncestor: null,\n    ancestor: root,\n    prelim: 0,\n    modifier: 0,\n    change: 0,\n    shift: 0,\n    i: 0,\n    thread: null\n  };\n  var nodes = [root];\n  var node;\n  var children;\n\n  while (node = nodes.pop()) {\n    // jshint ignore:line\n    children = node.children;\n\n    if (node.isExpand && children.length) {\n      var n = children.length;\n\n      for (var i = n - 1; i >= 0; i--) {\n        var child = children[i];\n        child.hierNode = {\n          defaultAncestor: null,\n          ancestor: child,\n          prelim: 0,\n          modifier: 0,\n          change: 0,\n          shift: 0,\n          i: i,\n          thread: null\n        };\n        nodes.push(child);\n      }\n    }\n  }\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Computes a preliminary x coordinate for node. Before that, this function is\n * applied recursively to the children of node, as well as the function\n * apportion(). After spacing out the children by calling executeShifts(), the\n * node is placed to the midpoint of its outermost children.\n *\n * @param  {module:echarts/data/Tree~TreeNode} node\n * @param {Function} separation\n */\n\n\nfunction firstWalk(node, separation) {\n  var children = node.isExpand ? node.children : [];\n  var siblings = node.parentNode.children;\n  var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;\n\n  if (children.length) {\n    executeShifts(node);\n    var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;\n\n    if (subtreeW) {\n      node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n      node.hierNode.modifier = node.hierNode.prelim - midPoint;\n    } else {\n      node.hierNode.prelim = midPoint;\n    }\n  } else if (subtreeW) {\n    node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n  }\n\n  node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation);\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Computes all real x-coordinates by summing up the modifiers recursively.\n *\n * @param  {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction secondWalk(node) {\n  var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;\n  node.setLayout({\n    x: nodeX\n  }, true);\n  node.hierNode.modifier += node.parentNode.hierNode.modifier;\n}\n\nfunction separation(cb) {\n  return arguments.length ? cb : defaultSeparation;\n}\n/**\n * Transform the common coordinate to radial coordinate.\n *\n * @param  {number} x\n * @param  {number} y\n * @return {Object}\n */\n\n\nfunction radialCoordinate(x, y) {\n  var radialCoor = {};\n  x -= Math.PI / 2;\n  radialCoor.x = y * Math.cos(x);\n  radialCoor.y = y * Math.sin(x);\n  return radialCoor;\n}\n/**\n * Get the layout position of the whole view.\n *\n * @param {module:echarts/model/Series} seriesModel  the model object of sankey series\n * @param {module:echarts/ExtensionAPI} api  provide the API list that the developer can call\n * @return {module:zrender/core/BoundingRect}  size of rect to draw the sankey view\n */\n\n\nfunction getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n/**\n * All other shifts, applied to the smaller subtrees between w- and w+, are\n * performed by this function.\n *\n * The implementation of this function was originally copied from \"d3.js\"\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * @param  {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction executeShifts(node) {\n  var children = node.children;\n  var n = children.length;\n  var shift = 0;\n  var change = 0;\n\n  while (--n >= 0) {\n    var child = children[n];\n    child.hierNode.prelim += shift;\n    child.hierNode.modifier += shift;\n    change += child.hierNode.change;\n    shift += child.hierNode.shift + change;\n  }\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * The core of the algorithm. Here, a new subtree is combined with the\n * previous subtrees. Threads are used to traverse the inside and outside\n * contours of the left and right subtree up to the highest common level.\n * Whenever two nodes of the inside contours conflict, we compute the left\n * one of the greatest uncommon ancestors using the function nextAncestor()\n * and call moveSubtree() to shift the subtree and prepare the shifts of\n * smaller subtrees. Finally, we add a new thread (if necessary).\n *\n * @param  {module:echarts/data/Tree~TreeNode} subtreeV\n * @param  {module:echarts/data/Tree~TreeNode} subtreeW\n * @param  {module:echarts/data/Tree~TreeNode} ancestor\n * @param  {Function} separation\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction apportion(subtreeV, subtreeW, ancestor, separation) {\n  if (subtreeW) {\n    var nodeOutRight = subtreeV;\n    var nodeInRight = subtreeV;\n    var nodeOutLeft = nodeInRight.parentNode.children[0];\n    var nodeInLeft = subtreeW;\n    var sumOutRight = nodeOutRight.hierNode.modifier;\n    var sumInRight = nodeInRight.hierNode.modifier;\n    var sumOutLeft = nodeOutLeft.hierNode.modifier;\n    var sumInLeft = nodeInLeft.hierNode.modifier;\n\n    while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {\n      nodeOutRight = nextRight(nodeOutRight);\n      nodeOutLeft = nextLeft(nodeOutLeft);\n      nodeOutRight.hierNode.ancestor = subtreeV;\n      var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation(nodeInLeft, nodeInRight);\n\n      if (shift > 0) {\n        moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);\n        sumInRight += shift;\n        sumOutRight += shift;\n      }\n\n      sumInLeft += nodeInLeft.hierNode.modifier;\n      sumInRight += nodeInRight.hierNode.modifier;\n      sumOutRight += nodeOutRight.hierNode.modifier;\n      sumOutLeft += nodeOutLeft.hierNode.modifier;\n    }\n\n    if (nodeInLeft && !nextRight(nodeOutRight)) {\n      nodeOutRight.hierNode.thread = nodeInLeft;\n      nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;\n    }\n\n    if (nodeInRight && !nextLeft(nodeOutLeft)) {\n      nodeOutLeft.hierNode.thread = nodeInRight;\n      nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;\n      ancestor = subtreeV;\n    }\n  }\n\n  return ancestor;\n}\n/**\n * This function is used to traverse the right contour of a subtree.\n * It returns the rightmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n *\n * @param  {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextRight(node) {\n  var children = node.children;\n  return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;\n}\n/**\n * This function is used to traverse the left contour of a subtree (or a subforest).\n * It returns the leftmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n *\n * @param  {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextLeft(node) {\n  var children = node.children;\n  return children.length && node.isExpand ? children[0] : node.hierNode.thread;\n}\n/**\n * If nodeInLeft’s ancestor is a sibling of node, returns nodeInLeft’s ancestor.\n * Otherwise, returns the specified ancestor.\n *\n * @param  {module:echarts/data/Tree~TreeNode} nodeInLeft\n * @param  {module:echarts/data/Tree~TreeNode} node\n * @param  {module:echarts/data/Tree~TreeNode} ancestor\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextAncestor(nodeInLeft, node, ancestor) {\n  return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor;\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Shifts the current subtree rooted at wr.\n * This is done by increasing prelim(w+) and modifier(w+) by shift.\n *\n * @param  {module:echarts/data/Tree~TreeNode} wl\n * @param  {module:echarts/data/Tree~TreeNode} wr\n * @param  {number} shift [description]\n */\n\n\nfunction moveSubtree(wl, wr, shift) {\n  var change = shift / (wr.hierNode.i - wl.hierNode.i);\n  wr.hierNode.change -= change;\n  wr.hierNode.shift += shift;\n  wr.hierNode.modifier += shift;\n  wr.hierNode.prelim += shift;\n  wl.hierNode.change += change;\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * <https://github.com/d3/d3-hierarchy/blob/4c1f038f2725d6eae2e49b61d01456400694bac4/src/tree.js>\n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\n\nfunction defaultSeparation(node1, node2) {\n  return node1.parentNode === node2.parentNode ? 1 : 2;\n}\n\nexports.init = init;\nexports.firstWalk = firstWalk;\nexports.secondWalk = secondWalk;\nexports.separation = separation;\nexports.radialCoordinate = radialCoordinate;\nexports.getViewRect = getViewRect;\n\n/***/ }),\n/* 595 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar List = __webpack_require__(116);\n\nvar Graph = __webpack_require__(1112);\n\nvar linkList = __webpack_require__(593);\n\nvar createDimensions = __webpack_require__(215);\n\nvar CoordinateSystem = __webpack_require__(121);\n\nvar createListFromArray = __webpack_require__(145);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(nodes, edges, seriesModel, directed, beforeLink) {\n  // ??? TODO\n  // support dataset?\n  var graph = new Graph(directed);\n\n  for (var i = 0; i < nodes.length; i++) {\n    graph.addNode(zrUtil.retrieve( // Id, name, dataIndex\n    nodes[i].id, nodes[i].name, i), i);\n  }\n\n  var linkNameList = [];\n  var validEdges = [];\n  var linkCount = 0;\n\n  for (var i = 0; i < edges.length; i++) {\n    var link = edges[i];\n    var source = link.source;\n    var target = link.target; // addEdge may fail when source or target not exists\n\n    if (graph.addEdge(source, target, linkCount)) {\n      validEdges.push(link);\n      linkNameList.push(zrUtil.retrieve(link.id, source + ' > ' + target));\n      linkCount++;\n    }\n  }\n\n  var coordSys = seriesModel.get('coordinateSystem');\n  var nodeData;\n\n  if (coordSys === 'cartesian2d' || coordSys === 'polar') {\n    nodeData = createListFromArray(nodes, seriesModel);\n  } else {\n    var coordSysCtor = CoordinateSystem.get(coordSys);\n    var coordDimensions = coordSysCtor && coordSysCtor.type !== 'view' ? coordSysCtor.dimensions || [] : []; // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs\n    // `value` dimension, but graph need `value` dimension. It's better to\n    // uniform this behavior.\n\n    if (zrUtil.indexOf(coordDimensions, 'value') < 0) {\n      coordDimensions.concat(['value']);\n    }\n\n    var dimensionNames = createDimensions(nodes, {\n      coordDimensions: coordDimensions\n    });\n    nodeData = new List(dimensionNames, seriesModel);\n    nodeData.initData(nodes);\n  }\n\n  var edgeData = new List(['value'], seriesModel);\n  edgeData.initData(validEdges, linkNameList);\n  beforeLink && beforeLink(nodeData, edgeData);\n  linkList({\n    mainData: nodeData,\n    struct: graph,\n    structAttr: 'graph',\n    datas: {\n      node: nodeData,\n      edge: edgeData\n    },\n    datasAttr: {\n      node: 'data',\n      edge: 'edgeData'\n    }\n  }); // Update dataIndex of nodes and edges because invalid edge may be removed\n\n  graph.update();\n  return graph;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 596 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n * @property {number} [dataIndex]\n */\necharts.registerAction({\n  type: 'focusNodeAdjacency',\n  event: 'focusNodeAdjacency',\n  update: 'series:focusNodeAdjacency'\n}, function () {});\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n */\n\necharts.registerAction({\n  type: 'unfocusNodeAdjacency',\n  event: 'unfocusNodeAdjacency',\n  update: 'series:unfocusNodeAdjacency'\n}, function () {});\n\n/***/ }),\n/* 597 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar vec2 = __webpack_require__(56);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _multipleGraphEdgeHelper = __webpack_require__(338);\n\nvar getCurvenessForEdge = _multipleGraphEdgeHelper.getCurvenessForEdge;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction simpleLayout(seriesModel) {\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (coordSys && coordSys.type !== 'view') {\n    return;\n  }\n\n  var graph = seriesModel.getGraph();\n  graph.eachNode(function (node) {\n    var model = node.getModel();\n    node.setLayout([+model.get('x'), +model.get('y')]);\n  });\n  simpleLayoutEdge(graph, seriesModel);\n}\n\nfunction simpleLayoutEdge(graph, seriesModel) {\n  graph.eachEdge(function (edge, index) {\n    var curveness = zrUtil.retrieve3(edge.getModel().get('lineStyle.curveness'), -getCurvenessForEdge(edge, seriesModel, index, true), 0);\n    var p1 = vec2.clone(edge.node1.getLayout());\n    var p2 = vec2.clone(edge.node2.getLayout());\n    var points = [p1, p2];\n\n    if (+curveness) {\n      points.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);\n    }\n\n    edge.setLayout(points);\n  });\n}\n\nexports.simpleLayout = simpleLayout;\nexports.simpleLayoutEdge = simpleLayoutEdge;\n\n/***/ }),\n/* 598 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar vec2 = __webpack_require__(56);\n\nvar _graphHelper = __webpack_require__(420);\n\nvar getSymbolSize = _graphHelper.getSymbolSize;\nvar getNodeGlobalScale = _graphHelper.getNodeGlobalScale;\n\nvar zrUtil = __webpack_require__(2);\n\nvar _multipleGraphEdgeHelper = __webpack_require__(338);\n\nvar getCurvenessForEdge = _multipleGraphEdgeHelper.getCurvenessForEdge;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\nvar _symbolRadiansHalf = [];\n/**\n * `basedOn` can be:\n * 'value':\n *     This layout is not accurate and have same bad case. For example,\n *     if the min value is very smaller than the max value, the nodes\n *     with the min value probably overlap even though there is enough\n *     space to layout them. So we only use this approach in the as the\n *     init layout of the force layout.\n *     FIXME\n *     Probably we do not need this method any more but use\n *     `basedOn: 'symbolSize'` in force layout if\n *     delay its init operations to GraphView.\n * 'symbolSize':\n *     This approach work only if all of the symbol size calculated.\n *     That is, the progressive rendering is not applied to graph.\n *     FIXME\n *     If progressive rendering is applied to graph some day,\n *     probably we have to use `basedOn: 'value'`.\n *\n * @param {module:echarts/src/model/Series} seriesModel\n * @param {string} basedOn 'value' or 'symbolSize'\n */\n\nfunction circularLayout(seriesModel, basedOn) {\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (coordSys && coordSys.type !== 'view') {\n    return;\n  }\n\n  var rect = coordSys.getBoundingRect();\n  var nodeData = seriesModel.getData();\n  var graph = nodeData.graph;\n  var cx = rect.width / 2 + rect.x;\n  var cy = rect.height / 2 + rect.y;\n  var r = Math.min(rect.width, rect.height) / 2;\n  var count = nodeData.count();\n  nodeData.setLayout({\n    cx: cx,\n    cy: cy\n  });\n\n  if (!count) {\n    return;\n  }\n\n  _layoutNodesBasedOn[basedOn](seriesModel, coordSys, graph, nodeData, r, cx, cy, count);\n\n  graph.eachEdge(function (edge, index) {\n    var curveness = zrUtil.retrieve3(edge.getModel().get('lineStyle.curveness'), getCurvenessForEdge(edge, seriesModel, index), 0);\n    var p1 = vec2.clone(edge.node1.getLayout());\n    var p2 = vec2.clone(edge.node2.getLayout());\n    var cp1;\n    var x12 = (p1[0] + p2[0]) / 2;\n    var y12 = (p1[1] + p2[1]) / 2;\n\n    if (+curveness) {\n      curveness *= 3;\n      cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)];\n    }\n\n    edge.setLayout([p1, p2, cp1]);\n  });\n}\n\nvar _layoutNodesBasedOn = {\n  value: function (seriesModel, coordSys, graph, nodeData, r, cx, cy, count) {\n    var angle = 0;\n    var sum = nodeData.getSum('value');\n    var unitAngle = Math.PI * 2 / (sum || count);\n    graph.eachNode(function (node) {\n      var value = node.getValue('value');\n      var radianHalf = unitAngle * (sum ? value : 1) / 2;\n      angle += radianHalf;\n      node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n      angle += radianHalf;\n    });\n  },\n  symbolSize: function (seriesModel, coordSys, graph, nodeData, r, cx, cy, count) {\n    var sumRadian = 0;\n    _symbolRadiansHalf.length = count;\n    var nodeScale = getNodeGlobalScale(seriesModel);\n    graph.eachNode(function (node) {\n      var symbolSize = getSymbolSize(node); // Normally this case will not happen, but we still add\n      // some the defensive code (2px is an arbitrary value).\n\n      isNaN(symbolSize) && (symbolSize = 2);\n      symbolSize < 0 && (symbolSize = 0);\n      symbolSize *= nodeScale;\n      var symbolRadianHalf = Math.asin(symbolSize / 2 / r); // when `symbolSize / 2` is bigger than `r`.\n\n      isNaN(symbolRadianHalf) && (symbolRadianHalf = PI / 2);\n      _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf;\n      sumRadian += symbolRadianHalf * 2;\n    });\n    var halfRemainRadian = (2 * PI - sumRadian) / count / 2;\n    var angle = 0;\n    graph.eachNode(function (node) {\n      var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex];\n      angle += radianHalf;\n      node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n      angle += radianHalf;\n    });\n  }\n};\nexports.circularLayout = circularLayout;\n\n/***/ }),\n/* 599 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar throttleUtil = __webpack_require__(153);\n\nvar parallelPreprocessor = __webpack_require__(1134);\n\n__webpack_require__(600);\n\n__webpack_require__(1137);\n\n__webpack_require__(1139);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CLICK_THRESHOLD = 5; // > 4\n// Parallel view\n\necharts.extendComponentView({\n  type: 'parallel',\n  render: function (parallelModel, ecModel, api) {\n    this._model = parallelModel;\n    this._api = api;\n\n    if (!this._handlers) {\n      this._handlers = {};\n      zrUtil.each(handlers, function (handler, eventName) {\n        api.getZr().on(eventName, this._handlers[eventName] = zrUtil.bind(handler, this));\n      }, this);\n    }\n\n    throttleUtil.createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate');\n  },\n  dispose: function (ecModel, api) {\n    zrUtil.each(this._handlers, function (handler, eventName) {\n      api.getZr().off(eventName, handler);\n    });\n    this._handlers = null;\n  },\n\n  /**\n   * @param {Object} [opt] If null, cancle the last action triggering for debounce.\n   */\n  _throttledDispatchExpand: function (opt) {\n    this._dispatchExpand(opt);\n  },\n  _dispatchExpand: function (opt) {\n    opt && this._api.dispatchAction(zrUtil.extend({\n      type: 'parallelAxisExpand'\n    }, opt));\n  }\n});\nvar handlers = {\n  mousedown: function (e) {\n    if (checkTrigger(this, 'click')) {\n      this._mouseDownPoint = [e.offsetX, e.offsetY];\n    }\n  },\n  mouseup: function (e) {\n    var mouseDownPoint = this._mouseDownPoint;\n\n    if (checkTrigger(this, 'click') && mouseDownPoint) {\n      var point = [e.offsetX, e.offsetY];\n      var dist = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2);\n\n      if (dist > CLICK_THRESHOLD) {\n        return;\n      }\n\n      var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n\n      result.behavior !== 'none' && this._dispatchExpand({\n        axisExpandWindow: result.axisExpandWindow\n      });\n    }\n\n    this._mouseDownPoint = null;\n  },\n  mousemove: function (e) {\n    // Should do nothing when brushing.\n    if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {\n      return;\n    }\n\n    var model = this._model;\n    var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n    var behavior = result.behavior;\n    behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce'));\n\n    this._throttledDispatchExpand(behavior === 'none' ? null // Cancle the last trigger, in case that mouse slide out of the area quickly.\n    : {\n      axisExpandWindow: result.axisExpandWindow,\n      // Jumping uses animation, and sliding suppresses animation.\n      animation: behavior === 'jump' ? null : false\n    });\n  }\n};\n\nfunction checkTrigger(view, triggerOn) {\n  var model = view._model;\n  return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;\n}\n\necharts.registerPreprocessor(parallelPreprocessor);\n\n/***/ }),\n/* 600 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Parallel = __webpack_require__(1135);\n\nvar CoordinateSystem = __webpack_require__(121);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parallel coordinate system creater.\n */\nfunction create(ecModel, api) {\n  var coordSysList = [];\n  ecModel.eachComponent('parallel', function (parallelModel, idx) {\n    var coordSys = new Parallel(parallelModel, ecModel, api);\n    coordSys.name = 'parallel_' + idx;\n    coordSys.resize(parallelModel, api);\n    parallelModel.coordinateSystem = coordSys;\n    coordSys.model = parallelModel;\n    coordSysList.push(coordSys);\n  }); // Inject the coordinateSystems into seriesModel\n\n  ecModel.eachSeries(function (seriesModel) {\n    if (seriesModel.get('coordinateSystem') === 'parallel') {\n      var parallelModel = ecModel.queryComponents({\n        mainType: 'parallel',\n        index: seriesModel.get('parallelIndex'),\n        id: seriesModel.get('parallelId')\n      })[0];\n      seriesModel.coordinateSystem = parallelModel.coordinateSystem;\n    }\n  });\n  return coordSysList;\n}\n\nCoordinateSystem.register('parallel', {\n  create: create\n});\n\n/***/ }),\n/* 601 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BoundingRect = __webpack_require__(57);\n\nvar _cursorHelper = __webpack_require__(337);\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphicUtil = __webpack_require__(23);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction makeRectPanelClipPath(rect) {\n  rect = normalizeRect(rect);\n  return function (localPoints, transform) {\n    return graphicUtil.clipPointsByRect(localPoints, rect);\n  };\n}\n\nfunction makeLinearBrushOtherExtent(rect, specifiedXYIndex) {\n  rect = normalizeRect(rect);\n  return function (xyIndex) {\n    var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;\n    var brushWidth = idx ? rect.width : rect.height;\n    var base = idx ? rect.x : rect.y;\n    return [base, base + (brushWidth || 0)];\n  };\n}\n\nfunction makeRectIsTargetByCursor(rect, api, targetModel) {\n  rect = normalizeRect(rect);\n  return function (e, localCursorPoint, transform) {\n    return rect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e, api, targetModel);\n  };\n} // Consider width/height is negative.\n\n\nfunction normalizeRect(rect) {\n  return BoundingRect.create(rect);\n}\n\nexports.makeRectPanelClipPath = makeRectPanelClipPath;\nexports.makeLinearBrushOtherExtent = makeLinearBrushOtherExtent;\nexports.makeRectIsTargetByCursor = makeRectIsTargetByCursor;\n\n/***/ }),\n/* 602 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListSimply = __webpack_require__(217);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _dimensionHelper = __webpack_require__(259);\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _sourceHelper = __webpack_require__(144);\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar seriesModelMixin = {\n  /**\n   * @private\n   * @type {string}\n   */\n  _baseAxisDim: null,\n\n  /**\n   * @override\n   */\n  getInitialData: function (option, ecModel) {\n    // When both types of xAxis and yAxis are 'value', layout is\n    // needed to be specified by user. Otherwise, layout can be\n    // judged by which axis is category.\n    var ordinalMeta;\n    var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\n    var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\n    var xAxisType = xAxisModel.get('type');\n    var yAxisType = yAxisModel.get('type');\n    var addOrdinal; // FIXME\n    // Consider time axis.\n\n    if (xAxisType === 'category') {\n      option.layout = 'horizontal';\n      ordinalMeta = xAxisModel.getOrdinalMeta();\n      addOrdinal = true;\n    } else if (yAxisType === 'category') {\n      option.layout = 'vertical';\n      ordinalMeta = yAxisModel.getOrdinalMeta();\n      addOrdinal = true;\n    } else {\n      option.layout = option.layout || 'horizontal';\n    }\n\n    var coordDims = ['x', 'y'];\n    var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\n    var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\n    var otherAxisDim = coordDims[1 - baseAxisDimIndex];\n    var axisModels = [xAxisModel, yAxisModel];\n    var baseAxisType = axisModels[baseAxisDimIndex].get('type');\n    var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\n    var data = option.data; // ??? FIXME make a stage to perform data transfrom.\n    // MUST create a new data, consider setOption({}) again.\n\n    if (data && addOrdinal) {\n      var newOptionData = [];\n      zrUtil.each(data, function (item, index) {\n        var newItem;\n\n        if (item.value && zrUtil.isArray(item.value)) {\n          newItem = item.value.slice();\n          item.value.unshift(index);\n        } else if (zrUtil.isArray(item)) {\n          newItem = item.slice();\n          item.unshift(index);\n        } else {\n          newItem = item;\n        }\n\n        newOptionData.push(newItem);\n      });\n      option.data = newOptionData;\n    }\n\n    var defaultValueDimensions = this.defaultValueDimensions;\n    var coordDimensions = [{\n      name: baseAxisDim,\n      type: getDimensionTypeByAxis(baseAxisType),\n      ordinalMeta: ordinalMeta,\n      otherDims: {\n        tooltip: false,\n        itemName: 0\n      },\n      dimsDef: ['base']\n    }, {\n      name: otherAxisDim,\n      type: getDimensionTypeByAxis(otherAxisType),\n      dimsDef: defaultValueDimensions.slice()\n    }];\n    return createListSimply(this, {\n      coordDimensions: coordDimensions,\n      dimensionsCount: defaultValueDimensions.length + 1,\n      encodeDefaulter: zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)\n    });\n  },\n\n  /**\n   * If horizontal, base axis is x, otherwise y.\n   * @override\n   */\n  getBaseAxis: function () {\n    var dim = this._baseAxisDim;\n    return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\n  }\n};\nexports.seriesModelMixin = seriesModelMixin;\n\n/***/ }),\n/* 603 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar Line = __webpack_require__(419);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _symbol = __webpack_require__(117);\n\nvar createSymbol = _symbol.createSymbol;\n\nvar vec2 = __webpack_require__(56);\n\nvar curveUtil = __webpack_require__(152);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\nfunction EffectLine(lineData, idx, seriesScope) {\n  graphic.Group.call(this);\n  this.add(this.createLine(lineData, idx, seriesScope));\n\n  this._updateEffectSymbol(lineData, idx);\n}\n\nvar effectLineProto = EffectLine.prototype;\n\neffectLineProto.createLine = function (lineData, idx, seriesScope) {\n  return new Line(lineData, idx, seriesScope);\n};\n\neffectLineProto._updateEffectSymbol = function (lineData, idx) {\n  var itemModel = lineData.getItemModel(idx);\n  var effectModel = itemModel.getModel('effect');\n  var size = effectModel.get('symbolSize');\n  var symbolType = effectModel.get('symbol');\n\n  if (!zrUtil.isArray(size)) {\n    size = [size, size];\n  }\n\n  var color = effectModel.get('color') || lineData.getItemVisual(idx, 'color');\n  var symbol = this.childAt(1);\n\n  if (this._symbolType !== symbolType) {\n    // Remove previous\n    this.remove(symbol);\n    symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);\n    symbol.z2 = 100;\n    symbol.culling = true;\n    this.add(symbol);\n  } // Symbol may be removed if loop is false\n\n\n  if (!symbol) {\n    return;\n  } // Shadow color is same with color in default\n\n\n  symbol.setStyle('shadowColor', color);\n  symbol.setStyle(effectModel.getItemStyle(['color']));\n  symbol.attr('scale', size);\n  symbol.setColor(color);\n  symbol.attr('scale', size);\n  this._symbolType = symbolType;\n  this._symbolScale = size;\n\n  this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\neffectLineProto._updateEffectAnimation = function (lineData, effectModel, idx) {\n  var symbol = this.childAt(1);\n\n  if (!symbol) {\n    return;\n  }\n\n  var self = this;\n  var points = lineData.getItemLayout(idx);\n  var period = effectModel.get('period') * 1000;\n  var loop = effectModel.get('loop');\n  var constantSpeed = effectModel.get('constantSpeed');\n  var delayExpr = zrUtil.retrieve(effectModel.get('delay'), function (idx) {\n    return idx / lineData.count() * period / 3;\n  });\n  var isDelayFunc = typeof delayExpr === 'function'; // Ignore when updating\n\n  symbol.ignore = true;\n  this.updateAnimationPoints(symbol, points);\n\n  if (constantSpeed > 0) {\n    period = this.getLineLength(symbol) / constantSpeed * 1000;\n  }\n\n  if (period !== this._period || loop !== this._loop) {\n    symbol.stopAnimation();\n    var delay = delayExpr;\n\n    if (isDelayFunc) {\n      delay = delayExpr(idx);\n    }\n\n    if (symbol.__t > 0) {\n      delay = -period * symbol.__t;\n    }\n\n    symbol.__t = 0;\n    var animator = symbol.animate('', loop).when(period, {\n      __t: 1\n    }).delay(delay).during(function () {\n      self.updateSymbolPosition(symbol);\n    });\n\n    if (!loop) {\n      animator.done(function () {\n        self.remove(symbol);\n      });\n    }\n\n    animator.start();\n  }\n\n  this._period = period;\n  this._loop = loop;\n};\n\neffectLineProto.getLineLength = function (symbol) {\n  // Not so accurate\n  return vec2.dist(symbol.__p1, symbol.__cp1) + vec2.dist(symbol.__cp1, symbol.__p2);\n};\n\neffectLineProto.updateAnimationPoints = function (symbol, points) {\n  symbol.__p1 = points[0];\n  symbol.__p2 = points[1];\n  symbol.__cp1 = points[2] || [(points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2];\n};\n\neffectLineProto.updateData = function (lineData, idx, seriesScope) {\n  this.childAt(0).updateData(lineData, idx, seriesScope);\n\n  this._updateEffectSymbol(lineData, idx);\n};\n\neffectLineProto.updateSymbolPosition = function (symbol) {\n  var p1 = symbol.__p1;\n  var p2 = symbol.__p2;\n  var cp1 = symbol.__cp1;\n  var t = symbol.__t;\n  var pos = symbol.position;\n  var lastPos = [pos[0], pos[1]];\n  var quadraticAt = curveUtil.quadraticAt;\n  var quadraticDerivativeAt = curveUtil.quadraticDerivativeAt;\n  pos[0] = quadraticAt(p1[0], cp1[0], p2[0], t);\n  pos[1] = quadraticAt(p1[1], cp1[1], p2[1], t); // Tangent\n\n  var tx = quadraticDerivativeAt(p1[0], cp1[0], p2[0], t);\n  var ty = quadraticDerivativeAt(p1[1], cp1[1], p2[1], t);\n  symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; // enable continuity trail for 'line', 'rect', 'roundRect' symbolType\n\n  if (this._symbolType === 'line' || this._symbolType === 'rect' || this._symbolType === 'roundRect') {\n    if (symbol.__lastT !== undefined && symbol.__lastT < symbol.__t) {\n      var scaleY = vec2.dist(lastPos, pos) * 1.05;\n      symbol.attr('scale', [symbol.scale[0], scaleY]); // make sure the last segment render within endPoint\n\n      if (t === 1) {\n        pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;\n        pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;\n      }\n    } else if (symbol.__lastT === 1) {\n      // After first loop, symbol.__t does NOT start with 0, so connect p1 to pos directly.\n      var scaleY = 2 * vec2.dist(p1, pos);\n      symbol.attr('scale', [symbol.scale[0], scaleY]);\n    } else {\n      symbol.attr('scale', this._symbolScale);\n    }\n  }\n\n  symbol.__lastT = symbol.__t;\n  symbol.ignore = false;\n};\n\neffectLineProto.updateLayout = function (lineData, idx) {\n  this.childAt(0).updateLayout(lineData, idx);\n  var effectModel = lineData.getItemModel(idx).getModel('effect');\n\n  this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\nzrUtil.inherits(EffectLine, graphic.Group);\nvar _default = EffectLine;\nmodule.exports = _default;\n\n/***/ }),\n/* 604 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Line\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction Polyline(lineData, idx, seriesScope) {\n  graphic.Group.call(this);\n\n  this._createPolyline(lineData, idx, seriesScope);\n}\n\nvar polylineProto = Polyline.prototype;\n\npolylineProto._createPolyline = function (lineData, idx, seriesScope) {\n  // var seriesModel = lineData.hostModel;\n  var points = lineData.getItemLayout(idx);\n  var line = new graphic.Polyline({\n    shape: {\n      points: points\n    }\n  });\n  this.add(line);\n\n  this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto.updateData = function (lineData, idx, seriesScope) {\n  var seriesModel = lineData.hostModel;\n  var line = this.childAt(0);\n  var target = {\n    shape: {\n      points: lineData.getItemLayout(idx)\n    }\n  };\n  graphic.updateProps(line, target, seriesModel, idx);\n\n  this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n  var line = this.childAt(0);\n  var itemModel = lineData.getItemModel(idx);\n  var visualColor = lineData.getItemVisual(idx, 'color');\n  var lineStyle = seriesScope && seriesScope.lineStyle;\n  var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n\n  if (!seriesScope || lineData.hasItemOption) {\n    lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n    hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n  }\n\n  line.useStyle(zrUtil.defaults({\n    strokeNoScale: true,\n    fill: 'none',\n    stroke: visualColor\n  }, lineStyle));\n  line.hoverStyle = hoverLineStyle;\n  graphic.setHoverStyle(this);\n};\n\npolylineProto.updateLayout = function (lineData, idx) {\n  var polyline = this.childAt(0);\n  polyline.setShape('points', lineData.getItemLayout(idx));\n};\n\nzrUtil.inherits(Polyline, graphic.Group);\nvar _default = Polyline;\nmodule.exports = _default;\n\n/***/ }),\n/* 605 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createRenderPlanner = __webpack_require__(214);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar _default = {\n  seriesType: 'lines',\n  plan: createRenderPlanner(),\n  reset: function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var isPolyline = seriesModel.get('polyline');\n    var isLarge = seriesModel.pipelineContext.large;\n\n    function progress(params, lineData) {\n      var lineCoords = [];\n\n      if (isLarge) {\n        var points;\n        var segCount = params.end - params.start;\n\n        if (isPolyline) {\n          var totalCoordsCount = 0;\n\n          for (var i = params.start; i < params.end; i++) {\n            totalCoordsCount += seriesModel.getLineCoordsCount(i);\n          }\n\n          points = new Float32Array(segCount + totalCoordsCount * 2);\n        } else {\n          points = new Float32Array(segCount * 4);\n        }\n\n        var offset = 0;\n        var pt = [];\n\n        for (var i = params.start; i < params.end; i++) {\n          var len = seriesModel.getLineCoords(i, lineCoords);\n\n          if (isPolyline) {\n            points[offset++] = len;\n          }\n\n          for (var k = 0; k < len; k++) {\n            pt = coordSys.dataToPoint(lineCoords[k], false, pt);\n            points[offset++] = pt[0];\n            points[offset++] = pt[1];\n          }\n        }\n\n        lineData.setLayout('linesPoints', points);\n      } else {\n        for (var i = params.start; i < params.end; i++) {\n          var itemModel = lineData.getItemModel(i);\n          var len = seriesModel.getLineCoords(i, lineCoords);\n          var pts = [];\n\n          if (isPolyline) {\n            for (var j = 0; j < len; j++) {\n              pts.push(coordSys.dataToPoint(lineCoords[j]));\n            }\n          } else {\n            pts[0] = coordSys.dataToPoint(lineCoords[0]);\n            pts[1] = coordSys.dataToPoint(lineCoords[1]);\n            var curveness = itemModel.get('lineStyle.curveness');\n\n            if (+curveness) {\n              pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness];\n            }\n          }\n\n          lineData.setItemLayout(i, pts);\n        }\n      }\n    }\n\n    return {\n      progress: progress\n    };\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 606 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1180);\n\n__webpack_require__(1183);\n\n__webpack_require__(1184);\n\n__webpack_require__(267);\n\n__webpack_require__(1188);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.extendComponentView({\n  type: 'single'\n});\n\n/***/ }),\n/* 607 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} opt {labelInside}\n * @return {Object} {\n *  position, rotation, labelDirection, labelOffset,\n *  tickDirection, labelRotate, z2\n * }\n */\nfunction layout(axisModel, opt) {\n  opt = opt || {};\n  var single = axisModel.coordinateSystem;\n  var axis = axisModel.axis;\n  var layout = {};\n  var axisPosition = axis.position;\n  var orient = axis.orient;\n  var rect = single.getRect();\n  var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n  var positionMap = {\n    horizontal: {\n      top: rectBound[2],\n      bottom: rectBound[3]\n    },\n    vertical: {\n      left: rectBound[0],\n      right: rectBound[1]\n    }\n  };\n  layout.position = [orient === 'vertical' ? positionMap.vertical[axisPosition] : rectBound[0], orient === 'horizontal' ? positionMap.horizontal[axisPosition] : rectBound[3]];\n  var r = {\n    horizontal: 0,\n    vertical: 1\n  };\n  layout.rotation = Math.PI / 2 * r[orient];\n  var directionMap = {\n    top: -1,\n    bottom: 1,\n    right: 1,\n    left: -1\n  };\n  layout.labelDirection = layout.tickDirection = layout.nameDirection = directionMap[axisPosition];\n\n  if (axisModel.get('axisTick.inside')) {\n    layout.tickDirection = -layout.tickDirection;\n  }\n\n  if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n    layout.labelDirection = -layout.labelDirection;\n  }\n\n  var labelRotation = opt.rotate;\n  labelRotation == null && (labelRotation = axisModel.get('axisLabel.rotate'));\n  layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;\n  layout.z2 = 1;\n  return layout;\n}\n\nexports.layout = layout;\n\n/***/ }),\n/* 608 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar modelUtil = __webpack_require__(31);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} {point: [x, y], el: ...} point Will not be null.\n */\nfunction _default(finder, ecModel) {\n  var point = [];\n  var seriesIndex = finder.seriesIndex;\n  var seriesModel;\n\n  if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n    return {\n      point: []\n    };\n  }\n\n  var data = seriesModel.getData();\n  var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n  if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n    return {\n      point: []\n    };\n  }\n\n  var el = data.getItemGraphicEl(dataIndex);\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (seriesModel.getTooltipPosition) {\n    point = seriesModel.getTooltipPosition(dataIndex) || [];\n  } else if (coordSys && coordSys.dataToPoint) {\n    point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n      return data.mapDimension(dim);\n    }), dataIndex, true)) || [];\n  } else if (el) {\n    // Use graphic bounding rect\n    var rect = el.getBoundingRect().clone();\n    rect.applyTransform(el.transform);\n    point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n  }\n\n  return {\n    point: point,\n    el: el\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 609 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar env = __webpack_require__(66);\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar each = zrUtil.each;\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n * @param {Function} handler\n *      param: {string} currTrigger\n *      param: {Array.<number>} point\n */\n\nfunction register(key, api, handler) {\n  if (env.node) {\n    return;\n  }\n\n  var zr = api.getZr();\n  inner(zr).records || (inner(zr).records = {});\n  initGlobalListeners(zr, api);\n  var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n  record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n  if (inner(zr).initialized) {\n    return;\n  }\n\n  inner(zr).initialized = true;\n  useHandler('click', zrUtil.curry(doEnter, 'click'));\n  useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n  useHandler('globalout', onLeave);\n\n  function useHandler(eventType, cb) {\n    zr.on(eventType, function (e) {\n      var dis = makeDispatchAction(api);\n      each(inner(zr).records, function (record) {\n        record && cb(record, e, dis.dispatchAction);\n      });\n      dispatchTooltipFinally(dis.pendings, api);\n    });\n  }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n  var showLen = pendings.showTip.length;\n  var hideLen = pendings.hideTip.length;\n  var actuallyPayload;\n\n  if (showLen) {\n    actuallyPayload = pendings.showTip[showLen - 1];\n  } else if (hideLen) {\n    actuallyPayload = pendings.hideTip[hideLen - 1];\n  }\n\n  if (actuallyPayload) {\n    actuallyPayload.dispatchAction = null;\n    api.dispatchAction(actuallyPayload);\n  }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n  record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n  record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n  var pendings = {\n    showTip: [],\n    hideTip: []\n  }; // FIXME\n  // better approach?\n  // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n  // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n  // So we have to add \"final stage\" to merge those dispatched actions.\n\n  var dispatchAction = function (payload) {\n    var pendingList = pendings[payload.type];\n\n    if (pendingList) {\n      pendingList.push(payload);\n    } else {\n      payload.dispatchAction = dispatchAction;\n      api.dispatchAction(payload);\n    }\n  };\n\n  return {\n    dispatchAction: dispatchAction,\n    pendings: pendings\n  };\n}\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction unregister(key, api) {\n  if (env.node) {\n    return;\n  }\n\n  var zr = api.getZr();\n  var record = (inner(zr).records || {})[key];\n\n  if (record) {\n    inner(zr).records[key] = null;\n  }\n}\n\nexports.register = register;\nexports.unregister = unregister;\n\n/***/ }),\n/* 610 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseAxisPointer = __webpack_require__(422);\n\nvar viewHelper = __webpack_require__(339);\n\nvar cartesianAxisHelper = __webpack_require__(585);\n\nvar AxisView = __webpack_require__(182);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CartesianAxisPointer = BaseAxisPointer.extend({\n  /**\n   * @override\n   */\n  makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n    var axis = axisModel.axis;\n    var grid = axis.grid;\n    var axisPointerType = axisPointerModel.get('type');\n    var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n    var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n    if (axisPointerType && axisPointerType !== 'none') {\n      var elStyle = viewHelper.buildElStyle(axisPointerModel);\n      var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n      pointerOption.style = elStyle;\n      elOption.graphicKey = pointerOption.type;\n      elOption.pointer = pointerOption;\n    }\n\n    var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n    viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n  },\n\n  /**\n   * @override\n   */\n  getHandleTransform: function (value, axisModel, axisPointerModel) {\n    var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n      labelInside: false\n    });\n    layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n    return {\n      position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n      rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n    };\n  },\n\n  /**\n   * @override\n   */\n  updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n    var axis = axisModel.axis;\n    var grid = axis.grid;\n    var axisExtent = axis.getGlobalExtent(true);\n    var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n    var dimIndex = axis.dim === 'x' ? 0 : 1;\n    var currPosition = transform.position;\n    currPosition[dimIndex] += delta[dimIndex];\n    currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n    currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n    var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n    var cursorPoint = [cursorOtherValue, cursorOtherValue];\n    cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n    var tooltipOptions = [{\n      verticalAlign: 'middle'\n    }, {\n      align: 'center'\n    }];\n    return {\n      position: currPosition,\n      rotation: transform.rotation,\n      cursorPoint: cursorPoint,\n      tooltipOption: tooltipOptions[dimIndex]\n    };\n  }\n});\n\nfunction getCartesian(grid, axis) {\n  var opt = {};\n  opt[axis.dim + 'AxisIndex'] = axis.index;\n  return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n  line: function (axis, pixelValue, otherExtent) {\n    var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n    return {\n      type: 'Line',\n      subPixelOptimize: true,\n      shape: targetShape\n    };\n  },\n  shadow: function (axis, pixelValue, otherExtent) {\n    var bandWidth = Math.max(1, axis.getBandWidth());\n    var span = otherExtent[1] - otherExtent[0];\n    return {\n      type: 'Rect',\n      shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n    };\n  }\n};\n\nfunction getAxisDimIndex(axis) {\n  return axis.dim === 'x' ? 0 : 1;\n}\n\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\nvar _default = CartesianAxisPointer;\nmodule.exports = _default;\n\n/***/ }),\n/* 611 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _layout = __webpack_require__(49);\n\nvar getLayoutRect = _layout.getLayoutRect;\nvar layoutBox = _layout.box;\nvar positionElement = _layout.positionElement;\n\nvar formatUtil = __webpack_require__(50);\n\nvar graphic = __webpack_require__(23);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Layout list like component.\n * It will box layout each items in group of component and then position the whole group in the viewport\n * @param {module:zrender/group/Group} group\n * @param {module:echarts/model/Component} componentModel\n * @param {module:echarts/ExtensionAPI}\n */\nfunction layout(group, componentModel, api) {\n  var boxLayoutParams = componentModel.getBoxLayoutParams();\n  var padding = componentModel.get('padding');\n  var viewportSize = {\n    width: api.getWidth(),\n    height: api.getHeight()\n  };\n  var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\n  layoutBox(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\n  positionElement(group, boxLayoutParams, viewportSize, padding);\n}\n\nfunction makeBackground(rect, componentModel) {\n  var padding = formatUtil.normalizeCssArray(componentModel.get('padding'));\n  var style = componentModel.getItemStyle(['color', 'opacity']);\n  style.fill = componentModel.get('backgroundColor');\n  var rect = new graphic.Rect({\n    shape: {\n      x: rect.x - padding[3],\n      y: rect.y - padding[0],\n      width: rect.width + padding[1] + padding[3],\n      height: rect.height + padding[0] + padding[2],\n      r: componentModel.get('borderRadius')\n    },\n    style: style,\n    silent: true,\n    z2: -1\n  }); // FIXME\n  // `subPixelOptimizeRect` may bring some gap between edge of viewpart\n  // and background rect when setting like `left: 0`, `top: 0`.\n  // graphic.subPixelOptimizeRect(rect);\n\n  return rect;\n}\n\nexports.layout = layout;\nexports.makeBackground = makeBackground;\n\n/***/ }),\n/* 612 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar modelUtil = __webpack_require__(31);\n\nvar brushHelper = __webpack_require__(601);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar indexOf = zrUtil.indexOf;\nvar curry = zrUtil.curry;\nvar COORD_CONVERTS = ['dataToPoint', 'pointToData']; // FIXME\n// how to genarialize to more coordinate systems.\n\nvar INCLUDE_FINDER_MAIN_TYPES = ['grid', 'xAxis', 'yAxis', 'geo', 'graph', 'polar', 'radiusAxis', 'angleAxis', 'bmap'];\n/**\n * [option in constructor]:\n * {\n *     Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.\n * }\n *\n *\n * [targetInfo]:\n *\n * There can be multiple axes in a single targetInfo. Consider the case\n * of `grid` component, a targetInfo represents a grid which contains one or more\n * cartesian and one or more axes. And consider the case of parallel system,\n * which has multiple axes in a coordinate system.\n * Can be {\n *     panelId: ...,\n *     coordSys: <a representitive cartesian in grid (first cartesian by default)>,\n *     coordSyses: all cartesians.\n *     gridModel: <grid component>\n *     xAxes: correspond to coordSyses on index\n *     yAxes: correspond to coordSyses on index\n * }\n * or {\n *     panelId: ...,\n *     coordSys: <geo coord sys>\n *     coordSyses: [<geo coord sys>]\n *     geoModel: <geo component>\n * }\n *\n *\n * [panelOpt]:\n *\n * Make from targetInfo. Input to BrushController.\n * {\n *     panelId: ...,\n *     rect: ...\n * }\n *\n *\n * [area]:\n *\n * Generated by BrushController or user input.\n * {\n *     panelId: Used to locate coordInfo directly. If user inpput, no panelId.\n *     brushType: determine how to convert to/from coord('rect' or 'polygon' or 'lineX/Y').\n *     Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.\n *     range: pixel range.\n *     coordRange: representitive coord range (the first one of coordRanges).\n *     coordRanges: <Array> coord ranges, used in multiple cartesian in one grid.\n * }\n */\n\n/**\n * @param {Object} option contains Index/Id/Name of xAxis/yAxis/geo/grid\n *        Each can be {number|Array.<number>}. like: {xAxisIndex: [3, 4]}\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} [opt]\n * @param {Array.<string>} [opt.include] include coordinate system types.\n */\n\nfunction BrushTargetManager(option, ecModel, opt) {\n  /**\n   * @private\n   * @type {Array.<Object>}\n   */\n  var targetInfoList = this._targetInfoList = [];\n  var info = {};\n  var foundCpts = parseFinder(ecModel, option);\n  each(targetInfoBuilders, function (builder, type) {\n    if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {\n      builder(foundCpts, targetInfoList, info);\n    }\n  });\n}\n\nvar proto = BrushTargetManager.prototype;\n\nproto.setOutputRanges = function (areas, ecModel) {\n  this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n    (area.coordRanges || (area.coordRanges = [])).push(coordRange); // area.coordRange is the first of area.coordRanges\n\n    if (!area.coordRange) {\n      area.coordRange = coordRange; // In 'category' axis, coord to pixel is not reversible, so we can not\n      // rebuild range by coordRange accrately, which may bring trouble when\n      // brushing only one item. So we use __rangeOffset to rebuilding range\n      // by coordRange. And this it only used in brush component so it is no\n      // need to be adapted to coordRanges.\n\n      var result = coordConvert[area.brushType](0, coordSys, coordRange);\n      area.__rangeOffset = {\n        offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),\n        xyMinMax: result.xyMinMax\n      };\n    }\n  });\n};\n\nproto.matchOutputRanges = function (areas, ecModel, cb) {\n  each(areas, function (area) {\n    var targetInfo = this.findTargetInfo(area, ecModel);\n\n    if (targetInfo && targetInfo !== true) {\n      zrUtil.each(targetInfo.coordSyses, function (coordSys) {\n        var result = coordConvert[area.brushType](1, coordSys, area.range);\n        cb(area, result.values, coordSys, ecModel);\n      });\n    }\n  }, this);\n};\n\nproto.setInputRanges = function (areas, ecModel) {\n  each(areas, function (area) {\n    var targetInfo = this.findTargetInfo(area, ecModel);\n    area.range = area.range || []; // convert coordRange to global range and set panelId.\n\n    if (targetInfo && targetInfo !== true) {\n      area.panelId = targetInfo.panelId; // (1) area.range shoule always be calculate from coordRange but does\n      // not keep its original value, for the sake of the dataZoom scenario,\n      // where area.coordRange remains unchanged but area.range may be changed.\n      // (2) Only support converting one coordRange to pixel range in brush\n      // component. So do not consider `coordRanges`.\n      // (3) About __rangeOffset, see comment above.\n\n      var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);\n      var rangeOffset = area.__rangeOffset;\n      area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values;\n    }\n  }, this);\n};\n\nproto.makePanelOpts = function (api, getDefaultBrushType) {\n  return zrUtil.map(this._targetInfoList, function (targetInfo) {\n    var rect = targetInfo.getPanelRect();\n    return {\n      panelId: targetInfo.panelId,\n      defaultBrushType: getDefaultBrushType && getDefaultBrushType(targetInfo),\n      clipPath: brushHelper.makeRectPanelClipPath(rect),\n      isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),\n      getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect)\n    };\n  });\n};\n\nproto.controlSeries = function (area, seriesModel, ecModel) {\n  // Check whether area is bound in coord, and series do not belong to that coord.\n  // If do not do this check, some brush (like lineX) will controll all axes.\n  var targetInfo = this.findTargetInfo(area, ecModel);\n  return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0;\n};\n/**\n * If return Object, a coord found.\n * If reutrn true, global found.\n * Otherwise nothing found.\n *\n * @param {Object} area\n * @param {Array} targetInfoList\n * @return {Object|boolean}\n */\n\n\nproto.findTargetInfo = function (area, ecModel) {\n  var targetInfoList = this._targetInfoList;\n  var foundCpts = parseFinder(ecModel, area);\n\n  for (var i = 0; i < targetInfoList.length; i++) {\n    var targetInfo = targetInfoList[i];\n    var areaPanelId = area.panelId;\n\n    if (areaPanelId) {\n      if (targetInfo.panelId === areaPanelId) {\n        return targetInfo;\n      }\n    } else {\n      for (var i = 0; i < targetInfoMatchers.length; i++) {\n        if (targetInfoMatchers[i](foundCpts, targetInfo)) {\n          return targetInfo;\n        }\n      }\n    }\n  }\n\n  return true;\n};\n\nfunction formatMinMax(minMax) {\n  minMax[0] > minMax[1] && minMax.reverse();\n  return minMax;\n}\n\nfunction parseFinder(ecModel, option) {\n  return modelUtil.parseFinder(ecModel, option, {\n    includeMainTypes: INCLUDE_FINDER_MAIN_TYPES\n  });\n}\n\nvar targetInfoBuilders = {\n  grid: function (foundCpts, targetInfoList) {\n    var xAxisModels = foundCpts.xAxisModels;\n    var yAxisModels = foundCpts.yAxisModels;\n    var gridModels = foundCpts.gridModels; // Remove duplicated.\n\n    var gridModelMap = zrUtil.createHashMap();\n    var xAxesHas = {};\n    var yAxesHas = {};\n\n    if (!xAxisModels && !yAxisModels && !gridModels) {\n      return;\n    }\n\n    each(xAxisModels, function (axisModel) {\n      var gridModel = axisModel.axis.grid.model;\n      gridModelMap.set(gridModel.id, gridModel);\n      xAxesHas[gridModel.id] = true;\n    });\n    each(yAxisModels, function (axisModel) {\n      var gridModel = axisModel.axis.grid.model;\n      gridModelMap.set(gridModel.id, gridModel);\n      yAxesHas[gridModel.id] = true;\n    });\n    each(gridModels, function (gridModel) {\n      gridModelMap.set(gridModel.id, gridModel);\n      xAxesHas[gridModel.id] = true;\n      yAxesHas[gridModel.id] = true;\n    });\n    gridModelMap.each(function (gridModel) {\n      var grid = gridModel.coordinateSystem;\n      var cartesians = [];\n      each(grid.getCartesians(), function (cartesian, index) {\n        if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0 || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0) {\n          cartesians.push(cartesian);\n        }\n      });\n      targetInfoList.push({\n        panelId: 'grid--' + gridModel.id,\n        gridModel: gridModel,\n        coordSysModel: gridModel,\n        // Use the first one as the representitive coordSys.\n        coordSys: cartesians[0],\n        coordSyses: cartesians,\n        getPanelRect: panelRectBuilder.grid,\n        xAxisDeclared: xAxesHas[gridModel.id],\n        yAxisDeclared: yAxesHas[gridModel.id]\n      });\n    });\n  },\n  geo: function (foundCpts, targetInfoList) {\n    each(foundCpts.geoModels, function (geoModel) {\n      var coordSys = geoModel.coordinateSystem;\n      targetInfoList.push({\n        panelId: 'geo--' + geoModel.id,\n        geoModel: geoModel,\n        coordSysModel: geoModel,\n        coordSys: coordSys,\n        coordSyses: [coordSys],\n        getPanelRect: panelRectBuilder.geo\n      });\n    });\n  }\n};\nvar targetInfoMatchers = [// grid\nfunction (foundCpts, targetInfo) {\n  var xAxisModel = foundCpts.xAxisModel;\n  var yAxisModel = foundCpts.yAxisModel;\n  var gridModel = foundCpts.gridModel;\n  !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);\n  !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);\n  return gridModel && gridModel === targetInfo.gridModel;\n}, // geo\nfunction (foundCpts, targetInfo) {\n  var geoModel = foundCpts.geoModel;\n  return geoModel && geoModel === targetInfo.geoModel;\n}];\nvar panelRectBuilder = {\n  grid: function () {\n    // grid is not Transformable.\n    return this.coordSys.grid.getRect().clone();\n  },\n  geo: function () {\n    var coordSys = this.coordSys;\n    var rect = coordSys.getBoundingRect().clone(); // geo roam and zoom transform\n\n    rect.applyTransform(graphic.getTransform(coordSys));\n    return rect;\n  }\n};\nvar coordConvert = {\n  lineX: curry(axisConvert, 0),\n  lineY: curry(axisConvert, 1),\n  rect: function (to, coordSys, rangeOrCoordRange) {\n    var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]);\n    var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]);\n    var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])];\n    return {\n      values: values,\n      xyMinMax: values\n    };\n  },\n  polygon: function (to, coordSys, rangeOrCoordRange) {\n    var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];\n    var values = zrUtil.map(rangeOrCoordRange, function (item) {\n      var p = coordSys[COORD_CONVERTS[to]](item);\n      xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);\n      xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);\n      xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);\n      xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);\n      return p;\n    });\n    return {\n      values: values,\n      xyMinMax: xyMinMax\n    };\n  }\n};\n\nfunction axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {\n  var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);\n  var values = formatMinMax(zrUtil.map([0, 1], function (i) {\n    return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i])) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));\n  }));\n  var xyMinMax = [];\n  xyMinMax[axisNameIndex] = values;\n  xyMinMax[1 - axisNameIndex] = [NaN, NaN];\n  return {\n    values: values,\n    xyMinMax: xyMinMax\n  };\n}\n\nvar diffProcessor = {\n  lineX: curry(axisDiffProcessor, 0),\n  lineY: curry(axisDiffProcessor, 1),\n  rect: function (values, refer, scales) {\n    return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]];\n  },\n  polygon: function (values, refer, scales) {\n    return zrUtil.map(values, function (item, idx) {\n      return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];\n    });\n  }\n};\n\nfunction axisDiffProcessor(axisNameIndex, values, refer, scales) {\n  return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]];\n} // We have to process scale caused by dataZoom manually,\n// although it might be not accurate.\n\n\nfunction getScales(xyMinMaxCurr, xyMinMaxOrigin) {\n  var sizeCurr = getSize(xyMinMaxCurr);\n  var sizeOrigin = getSize(xyMinMaxOrigin);\n  var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];\n  isNaN(scales[0]) && (scales[0] = 1);\n  isNaN(scales[1]) && (scales[1] = 1);\n  return scales;\n}\n\nfunction getSize(xyMinMax) {\n  return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN];\n}\n\nvar _default = BrushTargetManager;\nmodule.exports = _default;\n\n/***/ }),\n/* 613 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar ATTR = '\\0_ec_hist_store';\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} newSnapshot {dataZoomId, batch: [payloadInfo, ...]}\n */\n\nfunction push(ecModel, newSnapshot) {\n  var store = giveStore(ecModel); // If previous dataZoom can not be found,\n  // complete an range with current range.\n\n  each(newSnapshot, function (batchItem, dataZoomId) {\n    var i = store.length - 1;\n\n    for (; i >= 0; i--) {\n      var snapshot = store[i];\n\n      if (snapshot[dataZoomId]) {\n        break;\n      }\n    }\n\n    if (i < 0) {\n      // No origin range set, create one by current range.\n      var dataZoomModel = ecModel.queryComponents({\n        mainType: 'dataZoom',\n        subType: 'select',\n        id: dataZoomId\n      })[0];\n\n      if (dataZoomModel) {\n        var percentRange = dataZoomModel.getPercentRange();\n        store[0][dataZoomId] = {\n          dataZoomId: dataZoomId,\n          start: percentRange[0],\n          end: percentRange[1]\n        };\n      }\n    }\n  });\n  store.push(newSnapshot);\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} snapshot\n */\n\n\nfunction pop(ecModel) {\n  var store = giveStore(ecModel);\n  var head = store[store.length - 1];\n  store.length > 1 && store.pop(); // Find top for all dataZoom.\n\n  var snapshot = {};\n  each(head, function (batchItem, dataZoomId) {\n    for (var i = store.length - 1; i >= 0; i--) {\n      var batchItem = store[i][dataZoomId];\n\n      if (batchItem) {\n        snapshot[dataZoomId] = batchItem;\n        break;\n      }\n    }\n  });\n  return snapshot;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction clear(ecModel) {\n  ecModel[ATTR] = null;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {number} records. always >= 1.\n */\n\n\nfunction count(ecModel) {\n  return giveStore(ecModel).length;\n}\n/**\n * [{key: dataZoomId, value: {dataZoomId, range}}, ...]\n * History length of each dataZoom may be different.\n * this._history[0] is used to store origin range.\n * @type {Array.<Object>}\n */\n\n\nfunction giveStore(ecModel) {\n  var store = ecModel[ATTR];\n\n  if (!store) {\n    store = ecModel[ATTR] = [{}];\n  }\n\n  return store;\n}\n\nexports.push = push;\nexports.pop = pop;\nexports.clear = clear;\nexports.count = count;\n\n/***/ }),\n/* 614 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar visualSolution = __webpack_require__(340);\n\nvar selector = __webpack_require__(1245);\n\nvar throttleUtil = __webpack_require__(153);\n\nvar BrushTargetManager = __webpack_require__(612);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar STATE_LIST = ['inBrush', 'outOfBrush'];\nvar DISPATCH_METHOD = '__ecBrushSelect';\nvar DISPATCH_FLAG = '__ecInBrushSelectEvent';\nvar PRIORITY_BRUSH = echarts.PRIORITY.VISUAL.BRUSH;\n/**\n * Layout for visual, the priority higher than other layout, and before brush visual.\n */\n\necharts.registerLayout(PRIORITY_BRUSH, function (ecModel, api, payload) {\n  ecModel.eachComponent({\n    mainType: 'brush'\n  }, function (brushModel) {\n    payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption(payload.key === 'brush' ? payload.brushOption : {\n      brushType: false\n    });\n  });\n  layoutCovers(ecModel);\n});\n\nfunction layoutCovers(ecModel) {\n  ecModel.eachComponent({\n    mainType: 'brush'\n  }, function (brushModel) {\n    var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);\n    brushTargetManager.setInputRanges(brushModel.areas, ecModel);\n  });\n}\n/**\n * Register the visual encoding if this modules required.\n */\n\n\necharts.registerVisual(PRIORITY_BRUSH, function (ecModel, api, payload) {\n  var brushSelected = [];\n  var throttleType;\n  var throttleDelay;\n  ecModel.eachComponent({\n    mainType: 'brush'\n  }, function (brushModel, brushIndex) {\n    var thisBrushSelected = {\n      brushId: brushModel.id,\n      brushIndex: brushIndex,\n      brushName: brushModel.name,\n      areas: zrUtil.clone(brushModel.areas),\n      selected: []\n    }; // Every brush component exists in event params, convenient\n    // for user to find by index.\n\n    brushSelected.push(thisBrushSelected);\n    var brushOption = brushModel.option;\n    var brushLink = brushOption.brushLink;\n    var linkedSeriesMap = [];\n    var selectedDataIndexForLink = [];\n    var rangeInfoBySeries = [];\n    var hasBrushExists = 0;\n\n    if (!brushIndex) {\n      // Only the first throttle setting works.\n      throttleType = brushOption.throttleType;\n      throttleDelay = brushOption.throttleDelay;\n    } // Add boundingRect and selectors to range.\n\n\n    var areas = zrUtil.map(brushModel.areas, function (area) {\n      return bindSelector(zrUtil.defaults({\n        boundingRect: boundingRectBuilders[area.brushType](area)\n      }, area));\n    });\n    var visualMappings = visualSolution.createVisualMappings(brushModel.option, STATE_LIST, function (mappingOption) {\n      mappingOption.mappingMethod = 'fixed';\n    });\n    zrUtil.isArray(brushLink) && zrUtil.each(brushLink, function (seriesIndex) {\n      linkedSeriesMap[seriesIndex] = 1;\n    });\n\n    function linkOthers(seriesIndex) {\n      return brushLink === 'all' || linkedSeriesMap[seriesIndex];\n    } // If no supported brush or no brush on the series,\n    // all visuals should be in original state.\n\n\n    function brushed(rangeInfoList) {\n      return !!rangeInfoList.length;\n    }\n    /**\n     * Logic for each series: (If the logic has to be modified one day, do it carefully!)\n     *\n     * ( brushed ┬ && ┬hasBrushExist ┬ && linkOthers  ) => StepA: ┬record, ┬ StepB: ┬visualByRecord.\n     *   !brushed┘    ├hasBrushExist ┤                            └nothing,┘        ├visualByRecord.\n     *                └!hasBrushExist┘                                              └nothing.\n     * ( !brushed  && ┬hasBrushExist ┬ && linkOthers  ) => StepA:  nothing,  StepB: ┬visualByRecord.\n     *                └!hasBrushExist┘                                              └nothing.\n     * ( brushed ┬ &&                     !linkOthers ) => StepA:  nothing,  StepB: ┬visualByCheck.\n     *   !brushed┘                                                                  └nothing.\n     * ( !brushed  &&                     !linkOthers ) => StepA:  nothing,  StepB:  nothing.\n     */\n    // Step A\n\n\n    ecModel.eachSeries(function (seriesModel, seriesIndex) {\n      var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];\n      seriesModel.subType === 'parallel' ? stepAParallel(seriesModel, seriesIndex, rangeInfoList) : stepAOthers(seriesModel, seriesIndex, rangeInfoList);\n    });\n\n    function stepAParallel(seriesModel, seriesIndex) {\n      var coordSys = seriesModel.coordinateSystem;\n      hasBrushExists |= coordSys.hasAxisBrushed();\n      linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function (activeState, dataIndex) {\n        activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1);\n      });\n    }\n\n    function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {\n      var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n\n      if (!selectorsByBrushType || brushModelNotControll(brushModel, seriesIndex)) {\n        return;\n      }\n\n      zrUtil.each(areas, function (area) {\n        selectorsByBrushType[area.brushType] && brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel) && rangeInfoList.push(area);\n        hasBrushExists |= brushed(rangeInfoList);\n      });\n\n      if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {\n        var data = seriesModel.getData();\n        data.each(function (dataIndex) {\n          if (checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex)) {\n            selectedDataIndexForLink[dataIndex] = 1;\n          }\n        });\n      }\n    } // Step B\n\n\n    ecModel.eachSeries(function (seriesModel, seriesIndex) {\n      var seriesBrushSelected = {\n        seriesId: seriesModel.id,\n        seriesIndex: seriesIndex,\n        seriesName: seriesModel.name,\n        dataIndex: []\n      }; // Every series exists in event params, convenient\n      // for user to find series by seriesIndex.\n\n      thisBrushSelected.selected.push(seriesBrushSelected);\n      var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n      var rangeInfoList = rangeInfoBySeries[seriesIndex];\n      var data = seriesModel.getData();\n      var getValueState = linkOthers(seriesIndex) ? function (dataIndex) {\n        return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n      } : function (dataIndex) {\n        return checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n      }; // If no supported brush or no brush, all visuals are in original state.\n\n      (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && visualSolution.applyVisual(STATE_LIST, visualMappings, data, getValueState);\n    });\n  });\n  dispatchAction(api, throttleType, throttleDelay, brushSelected, payload);\n});\n\nfunction dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) {\n  // This event will not be triggered when `setOpion`, otherwise dead lock may\n  // triggered when do `setOption` in event listener, which we do not find\n  // satisfactory way to solve yet. Some considered resolutions:\n  // (a) Diff with prevoius selected data ant only trigger event when changed.\n  // But store previous data and diff precisely (i.e., not only by dataIndex, but\n  // also detect value changes in selected data) might bring complexity or fragility.\n  // (b) Use spectial param like `silent` to suppress event triggering.\n  // But such kind of volatile param may be weird in `setOption`.\n  if (!payload) {\n    return;\n  }\n\n  var zr = api.getZr();\n\n  if (zr[DISPATCH_FLAG]) {\n    return;\n  }\n\n  if (!zr[DISPATCH_METHOD]) {\n    zr[DISPATCH_METHOD] = doDispatch;\n  }\n\n  var fn = throttleUtil.createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);\n  fn(api, brushSelected);\n}\n\nfunction doDispatch(api, brushSelected) {\n  if (!api.isDisposed()) {\n    var zr = api.getZr();\n    zr[DISPATCH_FLAG] = true;\n    api.dispatchAction({\n      type: 'brushSelect',\n      batch: brushSelected\n    });\n    zr[DISPATCH_FLAG] = false;\n  }\n}\n\nfunction checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) {\n  for (var i = 0, len = rangeInfoList.length; i < len; i++) {\n    var area = rangeInfoList[i];\n\n    if (selectorsByBrushType[area.brushType](dataIndex, data, area.selectors, area)) {\n      return true;\n    }\n  }\n}\n\nfunction getSelectorsByBrushType(seriesModel) {\n  var brushSelector = seriesModel.brushSelector;\n\n  if (zrUtil.isString(brushSelector)) {\n    var sels = [];\n    zrUtil.each(selector, function (selectorsByElementType, brushType) {\n      sels[brushType] = function (dataIndex, data, selectors, area) {\n        var itemLayout = data.getItemLayout(dataIndex);\n        return selectorsByElementType[brushSelector](itemLayout, selectors, area);\n      };\n    });\n    return sels;\n  } else if (zrUtil.isFunction(brushSelector)) {\n    var bSelector = {};\n    zrUtil.each(selector, function (sel, brushType) {\n      bSelector[brushType] = brushSelector;\n    });\n    return bSelector;\n  }\n\n  return brushSelector;\n}\n\nfunction brushModelNotControll(brushModel, seriesIndex) {\n  var seriesIndices = brushModel.option.seriesIndex;\n  return seriesIndices != null && seriesIndices !== 'all' && (zrUtil.isArray(seriesIndices) ? zrUtil.indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices);\n}\n\nfunction bindSelector(area) {\n  var selectors = area.selectors = {};\n  zrUtil.each(selector[area.brushType], function (selFn, elType) {\n    // Do not use function binding or curry for performance.\n    selectors[elType] = function (itemLayout) {\n      return selFn(itemLayout, selectors, area);\n    };\n  });\n  return area;\n}\n\nvar boundingRectBuilders = {\n  lineX: zrUtil.noop,\n  lineY: zrUtil.noop,\n  rect: function (area) {\n    return getBoundingRectFromMinMax(area.range);\n  },\n  polygon: function (area) {\n    var minMax;\n    var range = area.range;\n\n    for (var i = 0, len = range.length; i < len; i++) {\n      minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];\n      var rg = range[i];\n      rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]);\n      rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]);\n      rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]);\n      rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]);\n    }\n\n    return minMax && getBoundingRectFromMinMax(minMax);\n  }\n};\n\nfunction getBoundingRectFromMinMax(minMax) {\n  return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);\n}\n\nexports.layoutCovers = layoutCovers;\n\n/***/ }),\n/* 615 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(616);\n\n__webpack_require__(1270);\n\n__webpack_require__(617);\n\nvar legendFilter = __webpack_require__(1271);\n\nvar Component = __webpack_require__(74);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Do not contain scrollable legend, for sake of file size.\n// Series Filter\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\nComponent.registerSubTypeDefaulter('legend', function () {\n  // Default 'plain' when no type specified.\n  return 'plain';\n});\n\n/***/ }),\n/* 616 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar Model = __webpack_require__(67);\n\nvar _model = __webpack_require__(31);\n\nvar isNameSpecified = _model.isNameSpecified;\n\nvar lang = __webpack_require__(154);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar langSelector = lang.legend.selector;\nvar defaultSelectorOption = {\n  all: {\n    type: 'all',\n    title: zrUtil.clone(langSelector.all)\n  },\n  inverse: {\n    type: 'inverse',\n    title: zrUtil.clone(langSelector.inverse)\n  }\n};\nvar LegendModel = echarts.extendComponentModel({\n  type: 'legend.plain',\n  dependencies: ['series'],\n  layoutMode: {\n    type: 'box',\n    // legend.width/height are maxWidth/maxHeight actually,\n    // whereas realy width/height is calculated by its content.\n    // (Setting {left: 10, right: 10} does not make sense).\n    // So consider the case:\n    // `setOption({legend: {left: 10});`\n    // then `setOption({legend: {right: 10});`\n    // The previous `left` should be cleared by setting `ignoreSize`.\n    ignoreSize: true\n  },\n  init: function (option, parentModel, ecModel) {\n    this.mergeDefaultAndTheme(option, ecModel);\n    option.selected = option.selected || {};\n\n    this._updateSelector(option);\n  },\n  mergeOption: function (option) {\n    LegendModel.superCall(this, 'mergeOption', option);\n\n    this._updateSelector(option);\n  },\n  _updateSelector: function (option) {\n    var selector = option.selector;\n\n    if (selector === true) {\n      selector = option.selector = ['all', 'inverse'];\n    }\n\n    if (zrUtil.isArray(selector)) {\n      zrUtil.each(selector, function (item, index) {\n        zrUtil.isString(item) && (item = {\n          type: item\n        });\n        selector[index] = zrUtil.merge(item, defaultSelectorOption[item.type]);\n      });\n    }\n  },\n  optionUpdated: function () {\n    this._updateData(this.ecModel);\n\n    var legendData = this._data; // If selectedMode is single, try to select one\n\n    if (legendData[0] && this.get('selectedMode') === 'single') {\n      var hasSelected = false; // If has any selected in option.selected\n\n      for (var i = 0; i < legendData.length; i++) {\n        var name = legendData[i].get('name');\n\n        if (this.isSelected(name)) {\n          // Force to unselect others\n          this.select(name);\n          hasSelected = true;\n          break;\n        }\n      } // Try select the first if selectedMode is single\n\n\n      !hasSelected && this.select(legendData[0].get('name'));\n    }\n  },\n  _updateData: function (ecModel) {\n    var potentialData = [];\n    var availableNames = [];\n    ecModel.eachRawSeries(function (seriesModel) {\n      var seriesName = seriesModel.name;\n      availableNames.push(seriesName);\n      var isPotential;\n\n      if (seriesModel.legendVisualProvider) {\n        var provider = seriesModel.legendVisualProvider;\n        var names = provider.getAllNames();\n\n        if (!ecModel.isSeriesFiltered(seriesModel)) {\n          availableNames = availableNames.concat(names);\n        }\n\n        if (names.length) {\n          potentialData = potentialData.concat(names);\n        } else {\n          isPotential = true;\n        }\n      } else {\n        isPotential = true;\n      }\n\n      if (isPotential && isNameSpecified(seriesModel)) {\n        potentialData.push(seriesModel.name);\n      }\n    });\n    /**\n     * @type {Array.<string>}\n     * @private\n     */\n\n    this._availableNames = availableNames; // If legend.data not specified in option, use availableNames as data,\n    // which is convinient for user preparing option.\n\n    var rawData = this.get('data') || potentialData;\n    var legendData = zrUtil.map(rawData, function (dataItem) {\n      // Can be string or number\n      if (typeof dataItem === 'string' || typeof dataItem === 'number') {\n        dataItem = {\n          name: dataItem\n        };\n      }\n\n      return new Model(dataItem, this, this.ecModel);\n    }, this);\n    /**\n     * @type {Array.<module:echarts/model/Model>}\n     * @private\n     */\n\n    this._data = legendData;\n  },\n\n  /**\n   * @return {Array.<module:echarts/model/Model>}\n   */\n  getData: function () {\n    return this._data;\n  },\n\n  /**\n   * @param {string} name\n   */\n  select: function (name) {\n    var selected = this.option.selected;\n    var selectedMode = this.get('selectedMode');\n\n    if (selectedMode === 'single') {\n      var data = this._data;\n      zrUtil.each(data, function (dataItem) {\n        selected[dataItem.get('name')] = false;\n      });\n    }\n\n    selected[name] = true;\n  },\n\n  /**\n   * @param {string} name\n   */\n  unSelect: function (name) {\n    if (this.get('selectedMode') !== 'single') {\n      this.option.selected[name] = false;\n    }\n  },\n\n  /**\n   * @param {string} name\n   */\n  toggleSelected: function (name) {\n    var selected = this.option.selected; // Default is true\n\n    if (!selected.hasOwnProperty(name)) {\n      selected[name] = true;\n    }\n\n    this[selected[name] ? 'unSelect' : 'select'](name);\n  },\n  allSelect: function () {\n    var data = this._data;\n    var selected = this.option.selected;\n    zrUtil.each(data, function (dataItem) {\n      selected[dataItem.get('name', true)] = true;\n    });\n  },\n  inverseSelect: function () {\n    var data = this._data;\n    var selected = this.option.selected;\n    zrUtil.each(data, function (dataItem) {\n      var name = dataItem.get('name', true); // Initially, default value is true\n\n      if (!selected.hasOwnProperty(name)) {\n        selected[name] = true;\n      }\n\n      selected[name] = !selected[name];\n    });\n  },\n\n  /**\n   * @param {string} name\n   */\n  isSelected: function (name) {\n    var selected = this.option.selected;\n    return !(selected.hasOwnProperty(name) && !selected[name]) && zrUtil.indexOf(this._availableNames, name) >= 0;\n  },\n  getOrient: function () {\n    return this.get('orient') === 'vertical' ? {\n      index: 1,\n      name: 'vertical'\n    } : {\n      index: 0,\n      name: 'horizontal'\n    };\n  },\n  defaultOption: {\n    // 一级层叠\n    zlevel: 0,\n    // 二级层叠\n    z: 4,\n    show: true,\n    // 布局方式，默认为水平布局，可选为：\n    // 'horizontal' | 'vertical'\n    orient: 'horizontal',\n    left: 'center',\n    // right: 'center',\n    top: 0,\n    // bottom: null,\n    // 水平对齐\n    // 'auto' | 'left' | 'right'\n    // 默认为 'auto', 根据 x 的位置判断是左对齐还是右对齐\n    align: 'auto',\n    backgroundColor: 'rgba(0,0,0,0)',\n    // 图例边框颜色\n    borderColor: '#ccc',\n    borderRadius: 0,\n    // 图例边框线宽，单位px，默认为0（无边框）\n    borderWidth: 0,\n    // 图例内边距，单位px，默认各方向内边距为5，\n    // 接受数组分别设定上右下左边距，同css\n    padding: 5,\n    // 各个item之间的间隔，单位px，默认为10，\n    // 横向布局时为水平间隔，纵向布局时为纵向间隔\n    itemGap: 10,\n    // the width of legend symbol\n    itemWidth: 25,\n    // the height of legend symbol\n    itemHeight: 14,\n    // the color of unselected legend symbol\n    inactiveColor: '#ccc',\n    // the borderColor of unselected legend symbol\n    inactiveBorderColor: '#ccc',\n    itemStyle: {\n      // the default borderWidth of legend symbol\n      borderWidth: 0\n    },\n    textStyle: {\n      // 图例文字颜色\n      color: '#333'\n    },\n    // formatter: '',\n    // 选择模式，默认开启图例开关\n    selectedMode: true,\n    // 配置默认选中状态，可配合LEGEND.SELECTED事件做动态数据载入\n    // selected: null,\n    // 图例内容（详见legend.data，数组中每一项代表一个item\n    // data: [],\n    // Usage:\n    // selector: [{type: 'all or inverse', title: xxx}]\n    // or\n    // selector: true\n    // or\n    // selector: ['all', 'inverse']\n    selector: false,\n    selectorLabel: {\n      show: true,\n      borderRadius: 10,\n      padding: [3, 5, 3, 5],\n      fontSize: 12,\n      fontFamily: ' sans-serif',\n      color: '#666',\n      borderWidth: 1,\n      borderColor: '#666'\n    },\n    emphasis: {\n      selectorLabel: {\n        show: true,\n        color: '#eee',\n        backgroundColor: '#666'\n      }\n    },\n    // Value can be 'start' or 'end'\n    selectorPosition: 'auto',\n    selectorItemGap: 7,\n    selectorButtonGap: 10,\n    // Tooltip 相关配置\n    tooltip: {\n      show: false\n    }\n  }\n});\nvar _default = LegendModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 617 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _symbol = __webpack_require__(117);\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = __webpack_require__(23);\n\nvar _listComponent = __webpack_require__(611);\n\nvar makeBackground = _listComponent.makeBackground;\n\nvar layoutUtil = __webpack_require__(49);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar Group = graphic.Group;\n\nvar _default = echarts.extendComponentView({\n  type: 'legend.plain',\n  newlineDisabled: false,\n\n  /**\n   * @override\n   */\n  init: function () {\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n    this.group.add(this._contentGroup = new Group());\n    /**\n     * @private\n     * @type {module:zrender/Element}\n     */\n\n    this._backgroundEl;\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n\n    this.group.add(this._selectorGroup = new Group());\n    /**\n     * If first rendering, `contentGroup.position` is [0, 0], which\n     * does not make sense and may cause unexepcted animation if adopted.\n     * @private\n     * @type {boolean}\n     */\n\n    this._isFirstRender = true;\n  },\n\n  /**\n   * @protected\n   */\n  getContentGroup: function () {\n    return this._contentGroup;\n  },\n\n  /**\n   * @protected\n   */\n  getSelectorGroup: function () {\n    return this._selectorGroup;\n  },\n\n  /**\n   * @override\n   */\n  render: function (legendModel, ecModel, api) {\n    var isFirstRender = this._isFirstRender;\n    this._isFirstRender = false;\n    this.resetInner();\n\n    if (!legendModel.get('show', true)) {\n      return;\n    }\n\n    var itemAlign = legendModel.get('align');\n    var orient = legendModel.get('orient');\n\n    if (!itemAlign || itemAlign === 'auto') {\n      itemAlign = legendModel.get('left') === 'right' && orient === 'vertical' ? 'right' : 'left';\n    }\n\n    var selector = legendModel.get('selector', true);\n    var selectorPosition = legendModel.get('selectorPosition', true);\n\n    if (selector && (!selectorPosition || selectorPosition === 'auto')) {\n      selectorPosition = orient === 'horizontal' ? 'end' : 'start';\n    }\n\n    this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); // Perform layout.\n\n    var positionInfo = legendModel.getBoxLayoutParams();\n    var viewportSize = {\n      width: api.getWidth(),\n      height: api.getHeight()\n    };\n    var padding = legendModel.get('padding');\n    var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding);\n    var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); // Place mainGroup, based on the calculated `mainRect`.\n\n    var layoutRect = layoutUtil.getLayoutRect(zrUtil.defaults({\n      width: mainRect.width,\n      height: mainRect.height\n    }, positionInfo), viewportSize, padding);\n    this.group.attr('position', [layoutRect.x - mainRect.x, layoutRect.y - mainRect.y]); // Render background after group is layout.\n\n    this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\n  },\n\n  /**\n   * @protected\n   */\n  resetInner: function () {\n    this.getContentGroup().removeAll();\n    this._backgroundEl && this.group.remove(this._backgroundEl);\n    this.getSelectorGroup().removeAll();\n  },\n\n  /**\n   * @protected\n   */\n  renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n    var contentGroup = this.getContentGroup();\n    var legendDrawnMap = zrUtil.createHashMap();\n    var selectMode = legendModel.get('selectedMode');\n    var excludeSeriesId = [];\n    ecModel.eachRawSeries(function (seriesModel) {\n      !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\n    });\n    each(legendModel.getData(), function (itemModel, dataIndex) {\n      var name = itemModel.get('name'); // Use empty string or \\n as a newline string\n\n      if (!this.newlineDisabled && (name === '' || name === '\\n')) {\n        contentGroup.add(new Group({\n          newline: true\n        }));\n        return;\n      } // Representitive series.\n\n\n      var seriesModel = ecModel.getSeriesByName(name)[0];\n\n      if (legendDrawnMap.get(name)) {\n        // Have been drawed\n        return;\n      } // Legend to control series.\n\n\n      if (seriesModel) {\n        var data = seriesModel.getData();\n        var color = data.getVisual('color');\n        var borderColor = data.getVisual('borderColor'); // If color is a callback function\n\n        if (typeof color === 'function') {\n          // Use the first data\n          color = color(seriesModel.getDataParams(0));\n        } // If borderColor is a callback function\n\n\n        if (typeof borderColor === 'function') {\n          // Use the first data\n          borderColor = borderColor(seriesModel.getDataParams(0));\n        } // Using rect symbol defaultly\n\n\n        var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect';\n        var symbolType = data.getVisual('symbol');\n\n        var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode);\n\n        itemGroup.on('click', curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on('mouseover', curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\n        legendDrawnMap.set(name, true);\n      } else {\n        // Legend to control data. In pie and funnel.\n        ecModel.eachRawSeries(function (seriesModel) {\n          // In case multiple series has same data name\n          if (legendDrawnMap.get(name)) {\n            return;\n          }\n\n          if (seriesModel.legendVisualProvider) {\n            var provider = seriesModel.legendVisualProvider;\n\n            if (!provider.containName(name)) {\n              return;\n            }\n\n            var idx = provider.indexOfName(name);\n            var color = provider.getItemVisual(idx, 'color');\n            var borderColor = provider.getItemVisual(idx, 'borderColor');\n            var legendSymbolType = 'roundRect';\n\n            var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, null, itemAlign, color, borderColor, selectMode); // FIXME: consider different series has items with the same name.\n\n\n            itemGroup.on('click', curry(dispatchSelectAction, null, name, api, excludeSeriesId)) // Should not specify the series name, consider legend controls\n            // more than one pie series.\n            .on('mouseover', curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, null, name, api, excludeSeriesId));\n            legendDrawnMap.set(name, true);\n          }\n        }, this);\n      }\n    }, this);\n\n    if (selector) {\n      this._createSelector(selector, legendModel, api, orient, selectorPosition);\n    }\n  },\n  _createSelector: function (selector, legendModel, api, orient, selectorPosition) {\n    var selectorGroup = this.getSelectorGroup();\n    each(selector, function (selectorItem) {\n      createSelectorButton(selectorItem);\n    });\n\n    function createSelectorButton(selectorItem) {\n      var type = selectorItem.type;\n      var labelText = new graphic.Text({\n        style: {\n          x: 0,\n          y: 0,\n          align: 'center',\n          verticalAlign: 'middle'\n        },\n        onclick: function () {\n          api.dispatchAction({\n            type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\n          });\n        }\n      });\n      selectorGroup.add(labelText);\n      var labelModel = legendModel.getModel('selectorLabel');\n      var emphasisLabelModel = legendModel.getModel('emphasis.selectorLabel');\n      graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, emphasisLabelModel, {\n        defaultText: selectorItem.title,\n        isRectText: false\n      });\n      graphic.setHoverStyle(labelText);\n    }\n  },\n  _createItem: function (name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode) {\n    var itemWidth = legendModel.get('itemWidth');\n    var itemHeight = legendModel.get('itemHeight');\n    var inactiveColor = legendModel.get('inactiveColor');\n    var inactiveBorderColor = legendModel.get('inactiveBorderColor');\n    var symbolKeepAspect = legendModel.get('symbolKeepAspect');\n    var legendModelItemStyle = legendModel.getModel('itemStyle');\n    var isSelected = legendModel.isSelected(name);\n    var itemGroup = new Group();\n    var textStyleModel = itemModel.getModel('textStyle');\n    var itemIcon = itemModel.get('icon');\n    var tooltipModel = itemModel.getModel('tooltip');\n    var legendGlobalTooltipModel = tooltipModel.parentModel; // Use user given icon first\n\n    legendSymbolType = itemIcon || legendSymbolType;\n    var legendSymbol = createSymbol(legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n    symbolKeepAspect == null ? true : symbolKeepAspect);\n    itemGroup.add(setSymbolStyle(legendSymbol, legendSymbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected)); // Compose symbols\n    // PENDING\n\n    if (!itemIcon && symbolType // At least show one symbol, can't be all none\n    && (symbolType !== legendSymbolType || symbolType === 'none')) {\n      var size = itemHeight * 0.8;\n\n      if (symbolType === 'none') {\n        symbolType = 'circle';\n      }\n\n      var legendSymbolCenter = createSymbol(symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n      symbolKeepAspect == null ? true : symbolKeepAspect); // Put symbol in the center\n\n      itemGroup.add(setSymbolStyle(legendSymbolCenter, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected));\n    }\n\n    var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\n    var textAlign = itemAlign;\n    var formatter = legendModel.get('formatter');\n    var content = name;\n\n    if (typeof formatter === 'string' && formatter) {\n      content = formatter.replace('{name}', name != null ? name : '');\n    } else if (typeof formatter === 'function') {\n      content = formatter(name);\n    }\n\n    itemGroup.add(new graphic.Text({\n      style: graphic.setTextStyle({}, textStyleModel, {\n        text: content,\n        x: textX,\n        y: itemHeight / 2,\n        textFill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\n        textAlign: textAlign,\n        textVerticalAlign: 'middle'\n      })\n    })); // Add a invisible rect to increase the area of mouse hover\n\n    var hitRect = new graphic.Rect({\n      shape: itemGroup.getBoundingRect(),\n      invisible: true,\n      tooltip: tooltipModel.get('show') ? zrUtil.extend({\n        content: name,\n        // Defaul formatter\n        formatter: legendGlobalTooltipModel.get('formatter', true) || function () {\n          return name;\n        },\n        formatterParams: {\n          componentType: 'legend',\n          legendIndex: legendModel.componentIndex,\n          name: name,\n          $vars: ['name']\n        }\n      }, tooltipModel.option) : null\n    });\n    itemGroup.add(hitRect);\n    itemGroup.eachChild(function (child) {\n      child.silent = true;\n    });\n    hitRect.silent = !selectMode;\n    this.getContentGroup().add(itemGroup);\n    graphic.setHoverStyle(itemGroup);\n    itemGroup.__legendDataIndex = dataIndex;\n    return itemGroup;\n  },\n\n  /**\n   * @protected\n   */\n  layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n    var contentGroup = this.getContentGroup();\n    var selectorGroup = this.getSelectorGroup(); // Place items in contentGroup.\n\n    layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\n    var contentRect = contentGroup.getBoundingRect();\n    var contentPos = [-contentRect.x, -contentRect.y];\n\n    if (selector) {\n      // Place buttons in selectorGroup\n      layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n      'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n      var selectorRect = selectorGroup.getBoundingRect();\n      var selectorPos = [-selectorRect.x, -selectorRect.y];\n      var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n      var orientIdx = legendModel.getOrient().index;\n      var wh = orientIdx === 0 ? 'width' : 'height';\n      var hw = orientIdx === 0 ? 'height' : 'width';\n      var yx = orientIdx === 0 ? 'y' : 'x';\n\n      if (selectorPosition === 'end') {\n        selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\n      } else {\n        contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\n      } //Always align selector to content as 'middle'\n\n\n      selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\n      selectorGroup.attr('position', selectorPos);\n      contentGroup.attr('position', contentPos);\n      var mainRect = {\n        x: 0,\n        y: 0\n      };\n      mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\n      mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\n      mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\n      return mainRect;\n    } else {\n      contentGroup.attr('position', contentPos);\n      return this.group.getBoundingRect();\n    }\n  },\n\n  /**\n   * @protected\n   */\n  remove: function () {\n    this.getContentGroup().removeAll();\n    this._isFirstRender = true;\n  }\n});\n\nfunction setSymbolStyle(symbol, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected) {\n  var itemStyle;\n\n  if (symbolType !== 'line' && symbolType.indexOf('empty') < 0) {\n    itemStyle = legendModelItemStyle.getItemStyle();\n    symbol.style.stroke = borderColor;\n\n    if (!isSelected) {\n      itemStyle.stroke = inactiveBorderColor;\n    }\n  } else {\n    itemStyle = legendModelItemStyle.getItemStyle(['borderWidth', 'borderColor']);\n  }\n\n  return symbol.setStyle(itemStyle);\n}\n\nfunction dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\n  // downplay before unselect\n  dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\n  api.dispatchAction({\n    type: 'legendToggleSelect',\n    name: seriesName != null ? seriesName : dataName\n  }); // highlight after select\n\n  dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\n}\n\nfunction dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\n  // If element hover will move to a hoverLayer.\n  var el = api.getZr().storage.getDisplayList()[0];\n\n  if (!(el && el.useHoverLayer)) {\n    api.dispatchAction({\n      type: 'highlight',\n      seriesName: seriesName,\n      name: dataName,\n      excludeSeriesId: excludeSeriesId\n    });\n  }\n}\n\nfunction dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\n  // If element hover will move to a hoverLayer.\n  var el = api.getZr().storage.getDisplayList()[0];\n\n  if (!(el && el.useHoverLayer)) {\n    api.dispatchAction({\n      type: 'downplay',\n      seriesName: seriesName,\n      name: dataName,\n      excludeSeriesId: excludeSeriesId\n    });\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 618 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(424);\n\n__webpack_require__(219);\n\n__webpack_require__(220);\n\n__webpack_require__(1276);\n\n__webpack_require__(1277);\n\n__webpack_require__(426);\n\n__webpack_require__(427);\n\n/***/ }),\n/* 619 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(424);\n\n__webpack_require__(219);\n\n__webpack_require__(220);\n\n__webpack_require__(1278);\n\n__webpack_require__(1279);\n\n__webpack_require__(426);\n\n__webpack_require__(427);\n\n/***/ }),\n/* 620 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar preprocessor = __webpack_require__(621);\n\n__webpack_require__(622);\n\n__webpack_require__(623);\n\n__webpack_require__(1282);\n\n__webpack_require__(1283);\n\n__webpack_require__(628);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);\n\n/***/ }),\n/* 621 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\n\nfunction _default(option) {\n  var visualMap = option && option.visualMap;\n\n  if (!zrUtil.isArray(visualMap)) {\n    visualMap = visualMap ? [visualMap] : [];\n  }\n\n  each(visualMap, function (opt) {\n    if (!opt) {\n      return;\n    } // rename splitList to pieces\n\n\n    if (has(opt, 'splitList') && !has(opt, 'pieces')) {\n      opt.pieces = opt.splitList;\n      delete opt.splitList;\n    }\n\n    var pieces = opt.pieces;\n\n    if (pieces && zrUtil.isArray(pieces)) {\n      each(pieces, function (piece) {\n        if (zrUtil.isObject(piece)) {\n          if (has(piece, 'start') && !has(piece, 'min')) {\n            piece.min = piece.start;\n          }\n\n          if (has(piece, 'end') && !has(piece, 'max')) {\n            piece.max = piece.end;\n          }\n        }\n      });\n    }\n  });\n}\n\nfunction has(obj, name) {\n  return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 622 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = __webpack_require__(74);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nComponent.registerSubTypeDefaulter('visualMap', function (option) {\n  // Compatible with ec2, when splitNumber === 0, continuous visualMap will be used.\n  return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? 'continuous' : 'piecewise';\n});\n\n/***/ }),\n/* 623 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar visualSolution = __webpack_require__(340);\n\nvar VisualMapping = __webpack_require__(184);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar VISUAL_PRIORITY = echarts.PRIORITY.VISUAL.COMPONENT;\necharts.registerVisual(VISUAL_PRIORITY, {\n  createOnAllSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var resetDefines = [];\n    ecModel.eachComponent('visualMap', function (visualMapModel) {\n      var pipelineContext = seriesModel.pipelineContext;\n\n      if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) {\n        return;\n      }\n\n      resetDefines.push(visualSolution.incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, zrUtil.bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimension(seriesModel.getData())));\n    });\n    return resetDefines;\n  }\n}); // Only support color.\n\necharts.registerVisual(VISUAL_PRIORITY, {\n  createOnAllSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var data = seriesModel.getData();\n    var visualMetaList = [];\n    ecModel.eachComponent('visualMap', function (visualMapModel) {\n      if (visualMapModel.isTargetSeries(seriesModel)) {\n        var visualMeta = visualMapModel.getVisualMeta(zrUtil.bind(getColorVisual, null, seriesModel, visualMapModel)) || {\n          stops: [],\n          outerColors: []\n        };\n        var concreteDim = visualMapModel.getDataDimension(data);\n        var dimInfo = data.getDimensionInfo(concreteDim);\n\n        if (dimInfo != null) {\n          // visualMeta.dimension should be dimension index, but not concrete dimension.\n          visualMeta.dimension = dimInfo.index;\n          visualMetaList.push(visualMeta);\n        }\n      }\n    }); // console.log(JSON.stringify(visualMetaList.map(a => a.stops)));\n\n    seriesModel.getData().setVisual('visualMeta', visualMetaList);\n  }\n}); // FIXME\n// performance and export for heatmap?\n// value can be Infinity or -Infinity\n\nfunction getColorVisual(seriesModel, visualMapModel, value, valueState) {\n  var mappings = visualMapModel.targetVisuals[valueState];\n  var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n  var resultVisual = {\n    color: seriesModel.getData().getVisual('color') // default color.\n\n  };\n\n  for (var i = 0, len = visualTypes.length; i < len; i++) {\n    var type = visualTypes[i];\n    var mapping = mappings[type === 'opacity' ? '__alphaForOpacity' : type];\n    mapping && mapping.applyVisual(value, getVisual, setVisual);\n  }\n\n  return resultVisual.color;\n\n  function getVisual(key) {\n    return resultVisual[key];\n  }\n\n  function setVisual(key, value) {\n    resultVisual[key] = value;\n  }\n}\n\n/***/ }),\n/* 624 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar env = __webpack_require__(66);\n\nvar visualDefault = __webpack_require__(625);\n\nvar VisualMapping = __webpack_require__(184);\n\nvar visualSolution = __webpack_require__(340);\n\nvar modelUtil = __webpack_require__(31);\n\nvar numberUtil = __webpack_require__(26);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar mapVisual = VisualMapping.mapVisual;\nvar eachVisual = VisualMapping.eachVisual;\nvar isArray = zrUtil.isArray;\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\nvar linearMap = numberUtil.linearMap;\nvar noop = zrUtil.noop;\nvar VisualMapModel = echarts.extendComponentModel({\n  type: 'visualMap',\n  dependencies: ['series'],\n\n  /**\n   * @readOnly\n   * @type {Array.<string>}\n   */\n  stateList: ['inRange', 'outOfRange'],\n\n  /**\n   * @readOnly\n   * @type {Array.<string>}\n   */\n  replacableOptionKeys: ['inRange', 'outOfRange', 'target', 'controller', 'color'],\n\n  /**\n   * [lowerBound, upperBound]\n   *\n   * @readOnly\n   * @type {Array.<number>}\n   */\n  dataBound: [-Infinity, Infinity],\n\n  /**\n   * @readOnly\n   * @type {string|Object}\n   */\n  layoutMode: {\n    type: 'box',\n    ignoreSize: true\n  },\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    show: true,\n    zlevel: 0,\n    z: 4,\n    seriesIndex: 'all',\n    // 'all' or null/undefined: all series.\n    // A number or an array of number: the specified series.\n    // set min: 0, max: 200, only for campatible with ec2.\n    // In fact min max should not have default value.\n    min: 0,\n    // min value, must specified if pieces is not specified.\n    max: 200,\n    // max value, must specified if pieces is not specified.\n    dimension: null,\n    inRange: null,\n    // 'color', 'colorHue', 'colorSaturation', 'colorLightness', 'colorAlpha',\n    // 'symbol', 'symbolSize'\n    outOfRange: null,\n    // 'color', 'colorHue', 'colorSaturation',\n    // 'colorLightness', 'colorAlpha',\n    // 'symbol', 'symbolSize'\n    left: 0,\n    // 'center' ¦ 'left' ¦ 'right' ¦ {number} (px)\n    right: null,\n    // The same as left.\n    top: null,\n    // 'top' ¦ 'bottom' ¦ 'center' ¦ {number} (px)\n    bottom: 0,\n    // The same as top.\n    itemWidth: null,\n    itemHeight: null,\n    inverse: false,\n    orient: 'vertical',\n    // 'horizontal' ¦ 'vertical'\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderColor: '#ccc',\n    // 值域边框颜色\n    contentColor: '#5793f3',\n    inactiveColor: '#aaa',\n    borderWidth: 0,\n    // 值域边框线宽，单位px，默认为0（无边框）\n    padding: 5,\n    // 值域内边距，单位px，默认各方向内边距为5，\n    // 接受数组分别设定上右下左边距，同css\n    textGap: 10,\n    //\n    precision: 0,\n    // 小数精度，默认为0，无小数点\n    color: null,\n    //颜色（deprecated，兼容ec2，顺序同pieces，不同于inRange/outOfRange）\n    formatter: null,\n    text: null,\n    // 文本，如['高', '低']，兼容ec2，text[0]对应高值，text[1]对应低值\n    textStyle: {\n      color: '#333' // 值域文字颜色\n\n    }\n  },\n\n  /**\n   * @protected\n   */\n  init: function (option, parentModel, ecModel) {\n    /**\n     * @private\n     * @type {Array.<number>}\n     */\n    this._dataExtent;\n    /**\n     * @readOnly\n     */\n\n    this.targetVisuals = {};\n    /**\n     * @readOnly\n     */\n\n    this.controllerVisuals = {};\n    /**\n     * @readOnly\n     */\n\n    this.textStyleModel;\n    /**\n     * [width, height]\n     * @readOnly\n     * @type {Array.<number>}\n     */\n\n    this.itemSize;\n    this.mergeDefaultAndTheme(option, ecModel);\n  },\n\n  /**\n   * @protected\n   */\n  optionUpdated: function (newOption, isInit) {\n    var thisOption = this.option; // FIXME\n    // necessary?\n    // Disable realtime view update if canvas is not supported.\n\n    if (!env.canvasSupported) {\n      thisOption.realtime = false;\n    }\n\n    !isInit && visualSolution.replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);\n    this.textStyleModel = this.getModel('textStyle');\n    this.resetItemSize();\n    this.completeVisualOption();\n  },\n\n  /**\n   * @protected\n   */\n  resetVisual: function (supplementVisualOption) {\n    var stateList = this.stateList;\n    supplementVisualOption = zrUtil.bind(supplementVisualOption, this);\n    this.controllerVisuals = visualSolution.createVisualMappings(this.option.controller, stateList, supplementVisualOption);\n    this.targetVisuals = visualSolution.createVisualMappings(this.option.target, stateList, supplementVisualOption);\n  },\n\n  /**\n   * @protected\n   * @return {Array.<number>} An array of series indices.\n   */\n  getTargetSeriesIndices: function () {\n    var optionSeriesIndex = this.option.seriesIndex;\n    var seriesIndices = [];\n\n    if (optionSeriesIndex == null || optionSeriesIndex === 'all') {\n      this.ecModel.eachSeries(function (seriesModel, index) {\n        seriesIndices.push(index);\n      });\n    } else {\n      seriesIndices = modelUtil.normalizeToArray(optionSeriesIndex);\n    }\n\n    return seriesIndices;\n  },\n\n  /**\n   * @public\n   */\n  eachTargetSeries: function (callback, context) {\n    zrUtil.each(this.getTargetSeriesIndices(), function (seriesIndex) {\n      callback.call(context, this.ecModel.getSeriesByIndex(seriesIndex));\n    }, this);\n  },\n\n  /**\n   * @pubilc\n   */\n  isTargetSeries: function (seriesModel) {\n    var is = false;\n    this.eachTargetSeries(function (model) {\n      model === seriesModel && (is = true);\n    });\n    return is;\n  },\n\n  /**\n   * @example\n   * this.formatValueText(someVal); // format single numeric value to text.\n   * this.formatValueText(someVal, true); // format single category value to text.\n   * this.formatValueText([min, max]); // format numeric min-max to text.\n   * this.formatValueText([this.dataBound[0], max]); // using data lower bound.\n   * this.formatValueText([min, this.dataBound[1]]); // using data upper bound.\n   *\n   * @param {number|Array.<number>} value Real value, or this.dataBound[0 or 1].\n   * @param {boolean} [isCategory=false] Only available when value is number.\n   * @param {Array.<string>} edgeSymbols Open-close symbol when value is interval.\n   * @return {string}\n   * @protected\n   */\n  formatValueText: function (value, isCategory, edgeSymbols) {\n    var option = this.option;\n    var precision = option.precision;\n    var dataBound = this.dataBound;\n    var formatter = option.formatter;\n    var isMinMax;\n    var textValue;\n    edgeSymbols = edgeSymbols || ['<', '>'];\n\n    if (zrUtil.isArray(value)) {\n      value = value.slice();\n      isMinMax = true;\n    }\n\n    textValue = isCategory ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value);\n\n    if (zrUtil.isString(formatter)) {\n      return formatter.replace('{value}', isMinMax ? textValue[0] : textValue).replace('{value2}', isMinMax ? textValue[1] : textValue);\n    } else if (zrUtil.isFunction(formatter)) {\n      return isMinMax ? formatter(value[0], value[1]) : formatter(value);\n    }\n\n    if (isMinMax) {\n      if (value[0] === dataBound[0]) {\n        return edgeSymbols[0] + ' ' + textValue[1];\n      } else if (value[1] === dataBound[1]) {\n        return edgeSymbols[1] + ' ' + textValue[0];\n      } else {\n        return textValue[0] + ' - ' + textValue[1];\n      }\n    } else {\n      // Format single value (includes category case).\n      return textValue;\n    }\n\n    function toFixed(val) {\n      return val === dataBound[0] ? 'min' : val === dataBound[1] ? 'max' : (+val).toFixed(Math.min(precision, 20));\n    }\n  },\n\n  /**\n   * @protected\n   */\n  resetExtent: function () {\n    var thisOption = this.option; // Can not calculate data extent by data here.\n    // Because series and data may be modified in processing stage.\n    // So we do not support the feature \"auto min/max\".\n\n    var extent = asc([thisOption.min, thisOption.max]);\n    this._dataExtent = extent;\n  },\n\n  /**\n   * @public\n   * @param {module:echarts/data/List} list\n   * @return {string} Concrete dimention. If return null/undefined,\n   *                  no dimension used.\n   */\n  getDataDimension: function (list) {\n    var optDim = this.option.dimension;\n    var listDimensions = list.dimensions;\n\n    if (optDim == null && !listDimensions.length) {\n      return;\n    }\n\n    if (optDim != null) {\n      return list.getDimension(optDim);\n    }\n\n    var dimNames = list.dimensions;\n\n    for (var i = dimNames.length - 1; i >= 0; i--) {\n      var dimName = dimNames[i];\n      var dimInfo = list.getDimensionInfo(dimName);\n\n      if (!dimInfo.isCalculationCoord) {\n        return dimName;\n      }\n    }\n  },\n\n  /**\n   * @public\n   * @override\n   */\n  getExtent: function () {\n    return this._dataExtent.slice();\n  },\n\n  /**\n   * @protected\n   */\n  completeVisualOption: function () {\n    var ecModel = this.ecModel;\n    var thisOption = this.option;\n    var base = {\n      inRange: thisOption.inRange,\n      outOfRange: thisOption.outOfRange\n    };\n    var target = thisOption.target || (thisOption.target = {});\n    var controller = thisOption.controller || (thisOption.controller = {});\n    zrUtil.merge(target, base); // Do not override\n\n    zrUtil.merge(controller, base); // Do not override\n\n    var isCategory = this.isCategory();\n    completeSingle.call(this, target);\n    completeSingle.call(this, controller);\n    completeInactive.call(this, target, 'inRange', 'outOfRange'); // completeInactive.call(this, target, 'outOfRange', 'inRange');\n\n    completeController.call(this, controller);\n\n    function completeSingle(base) {\n      // Compatible with ec2 dataRange.color.\n      // The mapping order of dataRange.color is: [high value, ..., low value]\n      // whereas inRange.color and outOfRange.color is [low value, ..., high value]\n      // Notice: ec2 has no inverse.\n      if (isArray(thisOption.color) // If there has been inRange: {symbol: ...}, adding color is a mistake.\n      // So adding color only when no inRange defined.\n      && !base.inRange) {\n        base.inRange = {\n          color: thisOption.color.slice().reverse()\n        };\n      } // Compatible with previous logic, always give a defautl color, otherwise\n      // simple config with no inRange and outOfRange will not work.\n      // Originally we use visualMap.color as the default color, but setOption at\n      // the second time the default color will be erased. So we change to use\n      // constant DEFAULT_COLOR.\n      // If user do not want the default color, set inRange: {color: null}.\n\n\n      base.inRange = base.inRange || {\n        color: ecModel.get('gradientColor')\n      }; // If using shortcut like: {inRange: 'symbol'}, complete default value.\n\n      each(this.stateList, function (state) {\n        var visualType = base[state];\n\n        if (zrUtil.isString(visualType)) {\n          var defa = visualDefault.get(visualType, 'active', isCategory);\n\n          if (defa) {\n            base[state] = {};\n            base[state][visualType] = defa;\n          } else {\n            // Mark as not specified.\n            delete base[state];\n          }\n        }\n      }, this);\n    }\n\n    function completeInactive(base, stateExist, stateAbsent) {\n      var optExist = base[stateExist];\n      var optAbsent = base[stateAbsent];\n\n      if (optExist && !optAbsent) {\n        optAbsent = base[stateAbsent] = {};\n        each(optExist, function (visualData, visualType) {\n          if (!VisualMapping.isValidType(visualType)) {\n            return;\n          }\n\n          var defa = visualDefault.get(visualType, 'inactive', isCategory);\n\n          if (defa != null) {\n            optAbsent[visualType] = defa; // Compatibable with ec2:\n            // Only inactive color to rgba(0,0,0,0) can not\n            // make label transparent, so use opacity also.\n\n            if (visualType === 'color' && !optAbsent.hasOwnProperty('opacity') && !optAbsent.hasOwnProperty('colorAlpha')) {\n              optAbsent.opacity = [0, 0];\n            }\n          }\n        });\n      }\n    }\n\n    function completeController(controller) {\n      var symbolExists = (controller.inRange || {}).symbol || (controller.outOfRange || {}).symbol;\n      var symbolSizeExists = (controller.inRange || {}).symbolSize || (controller.outOfRange || {}).symbolSize;\n      var inactiveColor = this.get('inactiveColor');\n      each(this.stateList, function (state) {\n        var itemSize = this.itemSize;\n        var visuals = controller[state]; // Set inactive color for controller if no other color\n        // attr (like colorAlpha) specified.\n\n        if (!visuals) {\n          visuals = controller[state] = {\n            color: isCategory ? inactiveColor : [inactiveColor]\n          };\n        } // Consistent symbol and symbolSize if not specified.\n\n\n        if (visuals.symbol == null) {\n          visuals.symbol = symbolExists && zrUtil.clone(symbolExists) || (isCategory ? 'roundRect' : ['roundRect']);\n        }\n\n        if (visuals.symbolSize == null) {\n          visuals.symbolSize = symbolSizeExists && zrUtil.clone(symbolSizeExists) || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]);\n        } // Filter square and none.\n\n\n        visuals.symbol = mapVisual(visuals.symbol, function (symbol) {\n          return symbol === 'none' || symbol === 'square' ? 'roundRect' : symbol;\n        }); // Normalize symbolSize\n\n        var symbolSize = visuals.symbolSize;\n\n        if (symbolSize != null) {\n          var max = -Infinity; // symbolSize can be object when categories defined.\n\n          eachVisual(symbolSize, function (value) {\n            value > max && (max = value);\n          });\n          visuals.symbolSize = mapVisual(symbolSize, function (value) {\n            return linearMap(value, [0, max], [0, itemSize[0]], true);\n          });\n        }\n      }, this);\n    }\n  },\n\n  /**\n   * @protected\n   */\n  resetItemSize: function () {\n    this.itemSize = [parseFloat(this.get('itemWidth')), parseFloat(this.get('itemHeight'))];\n  },\n\n  /**\n   * @public\n   */\n  isCategory: function () {\n    return !!this.option.categories;\n  },\n\n  /**\n   * @public\n   * @abstract\n   */\n  setSelected: noop,\n\n  /**\n   * @public\n   * @abstract\n   * @param {*|module:echarts/data/List} valueOrData\n   * @param {number} dataIndex\n   * @return {string} state See this.stateList\n   */\n  getValueState: noop,\n\n  /**\n   * FIXME\n   * Do not publish to thirt-part-dev temporarily\n   * util the interface is stable. (Should it return\n   * a function but not visual meta?)\n   *\n   * @pubilc\n   * @abstract\n   * @param {Function} getColorVisual\n   *        params: value, valueState\n   *        return: color\n   * @return {Object} visualMeta\n   *        should includes {stops, outerColors}\n   *        outerColor means [colorBeyondMinValue, colorBeyondMaxValue]\n   */\n  getVisualMeta: noop\n});\nvar _default = VisualMapModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 625 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Visual mapping.\n */\nvar visualDefault = {\n  /**\n   * @public\n   */\n  get: function (visualType, key, isCategory) {\n    var value = zrUtil.clone((defaultOption[visualType] || {})[key]);\n    return isCategory ? zrUtil.isArray(value) ? value[value.length - 1] : value : value;\n  }\n};\nvar defaultOption = {\n  color: {\n    active: ['#006edd', '#e0ffff'],\n    inactive: ['rgba(0,0,0,0)']\n  },\n  colorHue: {\n    active: [0, 360],\n    inactive: [0, 0]\n  },\n  colorSaturation: {\n    active: [0.3, 1],\n    inactive: [0, 0]\n  },\n  colorLightness: {\n    active: [0.9, 0.5],\n    inactive: [0, 0]\n  },\n  colorAlpha: {\n    active: [0.3, 1],\n    inactive: [0, 0]\n  },\n  opacity: {\n    active: [0.3, 1],\n    inactive: [0, 0]\n  },\n  symbol: {\n    active: ['circle', 'roundRect', 'diamond'],\n    inactive: ['none']\n  },\n  symbolSize: {\n    active: [10, 50],\n    inactive: [0, 0]\n  }\n};\nvar _default = visualDefault;\nmodule.exports = _default;\n\n/***/ }),\n/* 626 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar formatUtil = __webpack_require__(50);\n\nvar layout = __webpack_require__(49);\n\nvar VisualMapping = __webpack_require__(184);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n  type: 'visualMap',\n\n  /**\n   * @readOnly\n   * @type {Object}\n   */\n  autoPositionValues: {\n    left: 1,\n    right: 1,\n    top: 1,\n    bottom: 1\n  },\n  init: function (ecModel, api) {\n    /**\n     * @readOnly\n     * @type {module:echarts/model/Global}\n     */\n    this.ecModel = ecModel;\n    /**\n     * @readOnly\n     * @type {module:echarts/ExtensionAPI}\n     */\n\n    this.api = api;\n    /**\n     * @readOnly\n     * @type {module:echarts/component/visualMap/visualMapModel}\n     */\n\n    this.visualMapModel;\n  },\n\n  /**\n   * @protected\n   */\n  render: function (visualMapModel, ecModel, api, payload) {\n    this.visualMapModel = visualMapModel;\n\n    if (visualMapModel.get('show') === false) {\n      this.group.removeAll();\n      return;\n    }\n\n    this.doRender.apply(this, arguments);\n  },\n\n  /**\n   * @protected\n   */\n  renderBackground: function (group) {\n    var visualMapModel = this.visualMapModel;\n    var padding = formatUtil.normalizeCssArray(visualMapModel.get('padding') || 0);\n    var rect = group.getBoundingRect();\n    group.add(new graphic.Rect({\n      z2: -1,\n      // Lay background rect on the lowest layer.\n      silent: true,\n      shape: {\n        x: rect.x - padding[3],\n        y: rect.y - padding[0],\n        width: rect.width + padding[3] + padding[1],\n        height: rect.height + padding[0] + padding[2]\n      },\n      style: {\n        fill: visualMapModel.get('backgroundColor'),\n        stroke: visualMapModel.get('borderColor'),\n        lineWidth: visualMapModel.get('borderWidth')\n      }\n    }));\n  },\n\n  /**\n   * @protected\n   * @param {number} targetValue can be Infinity or -Infinity\n   * @param {string=} visualCluster Only can be 'color' 'opacity' 'symbol' 'symbolSize'\n   * @param {Object} [opts]\n   * @param {string=} [opts.forceState] Specify state, instead of using getValueState method.\n   * @param {string=} [opts.convertOpacityToAlpha=false] For color gradient in controller widget.\n   * @return {*} Visual value.\n   */\n  getControllerVisual: function (targetValue, visualCluster, opts) {\n    opts = opts || {};\n    var forceState = opts.forceState;\n    var visualMapModel = this.visualMapModel;\n    var visualObj = {}; // Default values.\n\n    if (visualCluster === 'symbol') {\n      visualObj.symbol = visualMapModel.get('itemSymbol');\n    }\n\n    if (visualCluster === 'color') {\n      var defaultColor = visualMapModel.get('contentColor');\n      visualObj.color = defaultColor;\n    }\n\n    function getter(key) {\n      return visualObj[key];\n    }\n\n    function setter(key, value) {\n      visualObj[key] = value;\n    }\n\n    var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];\n    var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n    zrUtil.each(visualTypes, function (type) {\n      var visualMapping = mappings[type];\n\n      if (opts.convertOpacityToAlpha && type === 'opacity') {\n        type = 'colorAlpha';\n        visualMapping = mappings.__alphaForOpacity;\n      }\n\n      if (VisualMapping.dependsOn(type, visualCluster)) {\n        visualMapping && visualMapping.applyVisual(targetValue, getter, setter);\n      }\n    });\n    return visualObj[visualCluster];\n  },\n\n  /**\n   * @protected\n   */\n  positionGroup: function (group) {\n    var model = this.visualMapModel;\n    var api = this.api;\n    layout.positionElement(group, model.getBoxLayoutParams(), {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n  },\n\n  /**\n   * @protected\n   * @abstract\n   */\n  doRender: zrUtil.noop\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 627 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar _layout = __webpack_require__(49);\n\nvar getLayoutRect = _layout.getLayoutRect;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/component/visualMap/VisualMapModel} visualMapModel\\\n * @param {module:echarts/ExtensionAPI} api\n * @param {Array.<number>} itemSize always [short, long]\n * @return {string} 'left' or 'right' or 'top' or 'bottom'\n */\nfunction getItemAlign(visualMapModel, api, itemSize) {\n  var modelOption = visualMapModel.option;\n  var itemAlign = modelOption.align;\n\n  if (itemAlign != null && itemAlign !== 'auto') {\n    return itemAlign;\n  } // Auto decision align.\n\n\n  var ecSize = {\n    width: api.getWidth(),\n    height: api.getHeight()\n  };\n  var realIndex = modelOption.orient === 'horizontal' ? 1 : 0;\n  var paramsSet = [['left', 'right', 'width'], ['top', 'bottom', 'height']];\n  var reals = paramsSet[realIndex];\n  var fakeValue = [0, null, 10];\n  var layoutInput = {};\n\n  for (var i = 0; i < 3; i++) {\n    layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];\n    layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];\n  }\n\n  var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex];\n  var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);\n  return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1];\n}\n/**\n * Prepare dataIndex for outside usage, where dataIndex means rawIndex, and\n * dataIndexInside means filtered index.\n */\n\n\nfunction makeHighDownBatch(batch, visualMapModel) {\n  zrUtil.each(batch || [], function (batchItem) {\n    if (batchItem.dataIndex != null) {\n      batchItem.dataIndexInside = batchItem.dataIndex;\n      batchItem.dataIndex = null;\n    }\n\n    batchItem.highlightKey = 'visualMap' + (visualMapModel ? visualMapModel.componentIndex : '');\n  });\n  return batch;\n}\n\nexports.getItemAlign = getItemAlign;\nexports.makeHighDownBatch = makeHighDownBatch;\n\n/***/ }),\n/* 628 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar actionInfo = {\n  type: 'selectDataRange',\n  event: 'dataRangeSelected',\n  // FIXME use updateView appears wrong\n  update: 'update'\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'visualMap',\n    query: payload\n  }, function (model) {\n    model.setSelected(payload.selected);\n  });\n});\n\n/***/ }),\n/* 629 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar preprocessor = __webpack_require__(621);\n\n__webpack_require__(622);\n\n__webpack_require__(623);\n\n__webpack_require__(1284);\n\n__webpack_require__(1285);\n\n__webpack_require__(628);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);\n\n/***/ }),\n/* 630 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar env = __webpack_require__(66);\n\nvar urn = 'urn:schemas-microsoft-com:vml';\nvar win = typeof window === 'undefined' ? null : window;\nvar vmlInited = false;\nvar doc = win && win.document;\n\nfunction createNode(tagName) {\n  return doCreateNode(tagName);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nvar doCreateNode;\n\nif (doc && !env.canvasSupported) {\n  try {\n    !doc.namespaces.zrvml && doc.namespaces.add('zrvml', urn);\n\n    doCreateNode = function (tagName) {\n      return doc.createElement('<zrvml:' + tagName + ' class=\"zrvml\">');\n    };\n  } catch (e) {\n    doCreateNode = function (tagName) {\n      return doc.createElement('<' + tagName + ' xmlns=\"' + urn + '\" class=\"zrvml\">');\n    };\n  }\n} // From raphael\n\n\nfunction initVML() {\n  if (vmlInited || !doc) {\n    return;\n  }\n\n  vmlInited = true;\n  var styleSheets = doc.styleSheets;\n\n  if (styleSheets.length < 31) {\n    doc.createStyleSheet().addRule('.zrvml', 'behavior:url(#default#VML)');\n  } else {\n    // http://msdn.microsoft.com/en-us/library/ms531194%28VS.85%29.aspx\n    styleSheets[0].addRule('.zrvml', 'behavior:url(#default#VML)');\n  }\n}\n\nexports.doc = doc;\nexports.createNode = createNode;\nexports.initVML = initVML;\n\n/***/ }),\n/* 631 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(161) && !__webpack_require__(224)(function () {\n  return Object.defineProperty(__webpack_require__(632)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n/* 632 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(223);\nvar document = __webpack_require__(159).document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n/* 633 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(187);\nvar toIObject = __webpack_require__(188);\nvar arrayIndexOf = __webpack_require__(1318)(false);\nvar IE_PROTO = __webpack_require__(441)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n/* 634 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(438);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n/* 635 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(440);\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n/* 636 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $at = __webpack_require__(1322)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(637)(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n\n\n/***/ }),\n/* 637 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(342);\nvar $export = __webpack_require__(158);\nvar redefine = __webpack_require__(638);\nvar hide = __webpack_require__(221);\nvar Iterators = __webpack_require__(270);\nvar $iterCreate = __webpack_require__(1323);\nvar setToStringTag = __webpack_require__(446);\nvar getPrototypeOf = __webpack_require__(639);\nvar ITERATOR = __webpack_require__(133)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n\n/***/ }),\n/* 638 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(221);\n\n\n/***/ }),\n/* 639 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(187);\nvar toObject = __webpack_require__(269);\nvar IE_PROTO = __webpack_require__(441)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n/* 640 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(633);\nvar hiddenKeys = __webpack_require__(443).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n\n\n/***/ }),\n/* 641 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\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\n\n/***/ }),\n/* 642 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(1349), __esModule: true };\n\n/***/ }),\n/* 643 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(arr, obj){\n  if (arr.indexOf) return arr.indexOf(obj);\n  for (var i = 0; i < arr.length; ++i) {\n    if (arr[i] === obj) return i;\n  }\n  return -1;\n};\n\n/***/ }),\n/* 644 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {// @flow\n\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n  return global[key] = (global[key] || 0) + 1;\n};\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91)))\n\n/***/ }),\n/* 645 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.storeShape = undefined;\n\nvar _propTypes = __webpack_require__(1);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar storeShape = exports.storeShape = _propTypes2.default.shape({\n  subscribe: _propTypes2.default.func.isRequired,\n  setState: _propTypes2.default.func.isRequired,\n  getState: _propTypes2.default.func.isRequired\n});\n\n/***/ }),\n/* 646 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar castPath = __webpack_require__(450),\n    isArguments = __webpack_require__(317),\n    isArray = __webpack_require__(97),\n    isIndex = __webpack_require__(319),\n    isLength = __webpack_require__(397),\n    toKey = __webpack_require__(271);\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\n\n/***/ }),\n/* 647 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _util = __webpack_require__(70);\n\nvar util = _interopRequireWildcard(_util);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\n/**\n *  Rule for validating required fields.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction required(rule, value, source, errors, options, type) {\n  if (rule.required && (!source.hasOwnProperty(rule.field) || util.isEmptyValue(value, type || rule.type))) {\n    errors.push(util.format(options.messages.required, rule.fullField));\n  }\n}\n\nexports['default'] = required;\n\n/***/ }),\n/* 648 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(175);\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\n\n/***/ }),\n/* 649 */\n/***/ (function(module, exports) {\n\n/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n    var i      = 0,\n        length = collection.length,\n        cont;\n\n    for(i; i < length; i++) {\n        cont = fn(collection[i], i);\n        if(cont === false) {\n            break; //allow early exit\n        }\n    }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n    return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n    return typeof target === 'function';\n}\n\nmodule.exports = {\n    isFunction : isFunction,\n    isArray : isArray,\n    each : each\n};\n\n\n/***/ }),\n/* 650 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(158);\nvar core = __webpack_require__(109);\nvar fails = __webpack_require__(224);\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n/* 651 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFor = __webpack_require__(652),\n    keys = __webpack_require__(252);\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\n\n/***/ }),\n/* 652 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createBaseFor = __webpack_require__(1545);\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\n\n/***/ }),\n/* 653 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(174),\n    getPrototype = __webpack_require__(457),\n    isObjectLike = __webpack_require__(128);\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\n\n/***/ }),\n/* 654 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(106);\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\n\n/***/ }),\n/* 655 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 656 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseEach = __webpack_require__(1557),\n    isArrayLike = __webpack_require__(210);\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\n\n/***/ }),\n/* 657 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(120);\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && 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\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 658 */\n/***/ (function(module, exports) {\n\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\nmodule.exports = copyArray;\n\n\n/***/ }),\n/* 659 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayPush = __webpack_require__(394),\n    getPrototype = __webpack_require__(457),\n    getSymbols = __webpack_require__(395),\n    stubArray = __webpack_require__(542);\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\n\n/***/ }),\n/* 660 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar cloneArrayBuffer = __webpack_require__(458);\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\n\n/***/ }),\n/* 661 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseCreate = __webpack_require__(1575),\n    getPrototype = __webpack_require__(457),\n    isPrototype = __webpack_require__(399);\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\n\n/***/ }),\n/* 662 */\n/***/ (function(module, exports) {\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\n\n/***/ }),\n/* 663 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar identity = __webpack_require__(272),\n    overRest = __webpack_require__(1600),\n    setToString = __webpack_require__(1602);\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\n\n/***/ }),\n/* 664 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar eq = __webpack_require__(190),\n    isArrayLike = __webpack_require__(210),\n    isIndex = __webpack_require__(319),\n    isObject = __webpack_require__(106);\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\n\n/***/ }),\n/* 665 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, module) {/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\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 value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_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    asyncTag = '[object AsyncFunction]',\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    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    undefinedTag = '[object Undefined]',\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 =  true && 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 && 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 `_.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\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\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\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 * 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\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 * 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 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 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 * 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/** 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 Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    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 == 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/**\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\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\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  this.size += this.has(key) ? 0 : 1;\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 == 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/**\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\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\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    ++this.size;\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 == 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/**\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\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\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  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\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 == null ? 0 : values.length;\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  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\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  this.size = 0;\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  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\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 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\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  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\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 `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\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\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\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\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\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\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\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 {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  // 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 & 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\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\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  // 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, 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\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\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 * 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\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\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\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 `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\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\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 */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\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 * 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\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\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\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 != null && (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 != null && 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\n/**\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\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 = isEqual;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91), __webpack_require__(107)(module)))\n\n/***/ }),\n/* 666 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar editorOptions = [\n    \"minLines\",\n    \"maxLines\",\n    \"readOnly\",\n    \"highlightActiveLine\",\n    \"tabSize\",\n    \"enableBasicAutocompletion\",\n    \"enableLiveAutocompletion\",\n    \"enableSnippets\"\n];\nexports.editorOptions = editorOptions;\nvar editorEvents = [\n    \"onChange\",\n    \"onFocus\",\n    \"onInput\",\n    \"onBlur\",\n    \"onCopy\",\n    \"onPaste\",\n    \"onSelectionChange\",\n    \"onCursorChange\",\n    \"onScroll\",\n    \"handleOptions\",\n    \"updateRef\"\n];\nexports.editorEvents = editorEvents;\nvar getAceInstance = function () {\n    var ace;\n    // Fallback for ace.require when vanilla ACE is hosted over a CDN\n    if (window.ace) {\n        ace = window.ace;\n        ace.acequire = window.ace.require || window.ace.acequire;\n    }\n    else {\n        ace = __webpack_require__(667);\n    }\n    return ace;\n};\nexports.getAceInstance = getAceInstance;\nvar debounce = function (fn, delay) {\n    var timer = null;\n    return function () {\n        var context = this;\n        var args = arguments;\n        clearTimeout(timer);\n        timer = setTimeout(function () {\n            fn.apply(context, args);\n        }, delay);\n    };\n};\nexports.debounce = debounce;\n\n\n/***/ }),\n/* 667 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *     * Redistributions of source code must retain the above copyright\n *       notice, this list of conditions and the following disclaimer.\n *     * Redistributions in binary form must reproduce the above copyright\n *       notice, this list of conditions and the following disclaimer in the\n *       documentation and/or other materials provided with the distribution.\n *     * Neither the name of Ajax.org B.V. nor the\n *       names of its contributors may be used to endorse or promote products\n *       derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n    return;\n\n\nvar define = function(module, deps, payload) {\n    if (typeof module !== \"string\") {\n        if (define.original)\n            define.original.apply(this, arguments);\n        else {\n            console.error(\"dropping module because define wasn\\'t a string.\");\n            console.trace();\n        }\n        return;\n    }\n    if (arguments.length == 2)\n        payload = deps;\n    if (!define.modules[module]) {\n        define.payloads[module] = payload;\n        define.modules[module] = null;\n    }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n    if (typeof module === \"string\") {\n        var payload = lookup(parentId, module);\n        if (payload != undefined) {\n            callback && callback();\n            return payload;\n        }\n    } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n        var params = [];\n        for (var i = 0, l = module.length; i < l; ++i) {\n            var dep = lookup(parentId, module[i]);\n            if (dep == undefined && require.original)\n                return;\n            params.push(dep);\n        }\n        return callback && callback.apply(null, params) || true;\n    }\n};\n\nvar require = function(module, callback) {\n    var packagedModule = _require(\"\", module, callback);\n    if (packagedModule == undefined && require.original)\n        return require.original.apply(this, arguments);\n    return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n    // normalize plugin requires\n    if (moduleName.indexOf(\"!\") !== -1) {\n        var chunks = moduleName.split(\"!\");\n        return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n    }\n    // normalize relative requires\n    if (moduleName.charAt(0) == \".\") {\n        var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n        moduleName = base + \"/\" + moduleName;\n\n        while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n            var previous = moduleName;\n            moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n        }\n    }\n    return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n    moduleName = normalizeModule(parentId, moduleName);\n\n    var module = define.modules[moduleName];\n    if (!module) {\n        module = define.payloads[moduleName];\n        if (typeof module === 'function') {\n            var exports = {};\n            var mod = {\n                id: moduleName,\n                uri: '',\n                exports: exports,\n                packaged: true\n            };\n\n            var req = function(module, callback) {\n                return _require(moduleName, module, callback);\n            };\n\n            var returnValue = module(req, exports, mod);\n            exports = returnValue || mod.exports;\n            define.modules[moduleName] = exports;\n            delete define.payloads[moduleName];\n        }\n        module = define.modules[moduleName] = exports || module;\n    }\n    return module;\n};\n\nfunction exportAce(ns) {\n    var root = global;\n    if (ns) {\n        if (!global[ns])\n            global[ns] = {};\n        root = global[ns];\n    }\n\n    if (!root.define || !root.define.packaged) {\n        define.original = root.define;\n        root.define = define;\n        root.define.packaged = true;\n    }\n\n    if (!root.require || !root.require.packaged) {\n        require.original = root.require;\n        root.require = require;\n        root.require.packaged = true;\n    }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/es6-shim\",[\"require\",\"exports\",\"module\"], function(require, exports, module){function defineProp(obj, name, val) {\n    Object.defineProperty(obj, name, {\n        value: val,\n        enumerable: false,\n        writable: true,\n        configurable: true\n    });\n}\nif (!String.prototype.startsWith) {\n    defineProp(String.prototype, \"startsWith\", function (searchString, position) {\n        position = position || 0;\n        return this.lastIndexOf(searchString, position) === position;\n    });\n}\nif (!String.prototype.endsWith) {\n    defineProp(String.prototype, \"endsWith\", function (searchString, position) {\n        var subjectString = this;\n        if (position === undefined || position > subjectString.length) {\n            position = subjectString.length;\n        }\n        position -= searchString.length;\n        var lastIndex = subjectString.indexOf(searchString, position);\n        return lastIndex !== -1 && lastIndex === position;\n    });\n}\nif (!String.prototype.repeat) {\n    defineProp(String.prototype, \"repeat\", function (count) {\n        var result = \"\";\n        var string = this;\n        while (count > 0) {\n            if (count & 1)\n                result += string;\n            if ((count >>= 1))\n                string += string;\n        }\n        return result;\n    });\n}\nif (!String.prototype.includes) {\n    defineProp(String.prototype, \"includes\", function (str, position) {\n        return this.indexOf(str, position) != -1;\n    });\n}\nif (!Object.assign) {\n    Object.assign = function (target) {\n        if (target === undefined || target === null) {\n            throw new TypeError(\"Cannot convert undefined or null to object\");\n        }\n        var output = Object(target);\n        for (var index = 1; index < arguments.length; index++) {\n            var source = arguments[index];\n            if (source !== undefined && source !== null) {\n                Object.keys(source).forEach(function (key) {\n                    output[key] = source[key];\n                });\n            }\n        }\n        return output;\n    };\n}\nif (!Object.values) {\n    Object.values = function (o) {\n        return Object.keys(o).map(function (k) {\n            return o[k];\n        });\n    };\n}\nif (!Array.prototype.find) {\n    defineProp(Array.prototype, \"find\", function (predicate) {\n        var len = this.length;\n        var thisArg = arguments[1];\n        for (var k = 0; k < len; k++) {\n            var kValue = this[k];\n            if (predicate.call(thisArg, kValue, k, this)) {\n                return kValue;\n            }\n        }\n    });\n}\nif (!Array.prototype.findIndex) {\n    defineProp(Array.prototype, \"findIndex\", function (predicate) {\n        var len = this.length;\n        var thisArg = arguments[1];\n        for (var k = 0; k < len; k++) {\n            var kValue = this[k];\n            if (predicate.call(thisArg, kValue, k, this)) {\n                return k;\n            }\n        }\n    });\n}\nif (!Array.prototype.includes) {\n    defineProp(Array.prototype, \"includes\", function (item, position) {\n        return this.indexOf(item, position) != -1;\n    });\n}\nif (!Array.prototype.fill) {\n    defineProp(Array.prototype, \"fill\", function (value) {\n        var O = this;\n        var len = O.length >>> 0;\n        var start = arguments[1];\n        var relativeStart = start >> 0;\n        var k = relativeStart < 0\n            ? Math.max(len + relativeStart, 0)\n            : Math.min(relativeStart, len);\n        var end = arguments[2];\n        var relativeEnd = end === undefined ? len : end >> 0;\n        var final = relativeEnd < 0\n            ? Math.max(len + relativeEnd, 0)\n            : Math.min(relativeEnd, len);\n        while (k < final) {\n            O[k] = value;\n            k++;\n        }\n        return O;\n    });\n}\nif (!Array.of) {\n    defineProp(Array, \"of\", function () {\n        return Array.prototype.slice.call(arguments);\n    });\n}\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/es6-shim\"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st:\n\"use strict\";\nrequire(\"./es6-shim\");\n\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n    return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n    return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n    var result = '';\n    while (count > 0) {\n        if (count & 1)\n            result += string;\n        if (count >>= 1)\n            string += string;\n    }\n    return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n    return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n    return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n    var copy = {};\n    for (var key in obj) {\n        copy[key] = obj[key];\n    }\n    return copy;\n};\nexports.copyArray = function (array) {\n    var copy = [];\n    for (var i = 0, l = array.length; i < l; i++) {\n        if (array[i] && typeof array[i] == \"object\")\n            copy[i] = this.copyObject(array[i]);\n        else\n            copy[i] = array[i];\n    }\n    return copy;\n};\nexports.deepCopy = function deepCopy(obj) {\n    if (typeof obj !== \"object\" || !obj)\n        return obj;\n    var copy;\n    if (Array.isArray(obj)) {\n        copy = [];\n        for (var key = 0; key < obj.length; key++) {\n            copy[key] = deepCopy(obj[key]);\n        }\n        return copy;\n    }\n    if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n        return obj;\n    copy = {};\n    for (var key in obj)\n        copy[key] = deepCopy(obj[key]);\n    return copy;\n};\nexports.arrayToMap = function (arr) {\n    var map = {};\n    for (var i = 0; i < arr.length; i++) {\n        map[arr[i]] = 1;\n    }\n    return map;\n};\nexports.createMap = function (props) {\n    var map = Object.create(null);\n    for (var i in props) {\n        map[i] = props[i];\n    }\n    return map;\n};\nexports.arrayRemove = function (array, value) {\n    for (var i = 0; i <= array.length; i++) {\n        if (value === array[i]) {\n            array.splice(i, 1);\n        }\n    }\n};\nexports.escapeRegExp = function (str) {\n    return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n    return (\"\" + str).replace(/&/g, \"&#38;\").replace(/\"/g, \"&#34;\").replace(/'/g, \"&#39;\").replace(/</g, \"&#60;\");\n};\nexports.getMatchOffsets = function (string, regExp) {\n    var matches = [];\n    string.replace(regExp, function (str) {\n        matches.push({\n            offset: arguments[arguments.length - 2],\n            length: str.length\n        });\n    });\n    return matches;\n};\nexports.deferredCall = function (fcn) {\n    var timer = null;\n    var callback = function () {\n        timer = null;\n        fcn();\n    };\n    var deferred = function (timeout) {\n        deferred.cancel();\n        timer = setTimeout(callback, timeout || 0);\n        return deferred;\n    };\n    deferred.schedule = deferred;\n    deferred.call = function () {\n        this.cancel();\n        fcn();\n        return deferred;\n    };\n    deferred.cancel = function () {\n        clearTimeout(timer);\n        timer = null;\n        return deferred;\n    };\n    deferred.isPending = function () {\n        return timer;\n    };\n    return deferred;\n};\nexports.delayedCall = function (fcn, defaultTimeout) {\n    var timer = null;\n    var callback = function () {\n        timer = null;\n        fcn();\n    };\n    var _self = function (timeout) {\n        if (timer == null)\n            timer = setTimeout(callback, timeout || defaultTimeout);\n    };\n    _self.delay = function (timeout) {\n        timer && clearTimeout(timer);\n        timer = setTimeout(callback, timeout || defaultTimeout);\n    };\n    _self.schedule = _self;\n    _self.call = function () {\n        this.cancel();\n        fcn();\n    };\n    _self.cancel = function () {\n        timer && clearTimeout(timer);\n        timer = null;\n    };\n    _self.isPending = function () {\n        return timer;\n    };\n    return _self;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n    ctor.super_ = superCtor;\n    ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n            value: ctor,\n            enumerable: false,\n            writable: true,\n            configurable: true\n        }\n    });\n};\nexports.mixin = function (obj, mixin) {\n    for (var key in mixin) {\n        obj[key] = mixin[key];\n    }\n    return obj;\n};\nexports.implement = function (proto, mixin) {\n    exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nexports.OS = {\n    LINUX: \"LINUX\",\n    MAC: \"MAC\",\n    WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function () {\n    if (exports.isMac) {\n        return exports.OS.MAC;\n    }\n    else if (exports.isLinux) {\n        return exports.OS.LINUX;\n    }\n    else {\n        return exports.OS.WINDOWS;\n    }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE =\n    (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n        ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1])\n        : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/) || [])[1]); // for ie\nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\nif (exports.isIOS)\n    exports.isMac = true;\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"./useragent\");\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\nexports.buildDom = function buildDom(arr, parent, refs) {\n    if (typeof arr == \"string\" && arr) {\n        var txt = document.createTextNode(arr);\n        if (parent)\n            parent.appendChild(txt);\n        return txt;\n    }\n    if (!Array.isArray(arr)) {\n        if (arr && arr.appendChild && parent)\n            parent.appendChild(arr);\n        return arr;\n    }\n    if (typeof arr[0] != \"string\" || !arr[0]) {\n        var els = [];\n        for (var i = 0; i < arr.length; i++) {\n            var ch = buildDom(arr[i], parent, refs);\n            ch && els.push(ch);\n        }\n        return els;\n    }\n    var el = document.createElement(arr[0]);\n    var options = arr[1];\n    var childIndex = 1;\n    if (options && typeof options == \"object\" && !Array.isArray(options))\n        childIndex = 2;\n    for (var i = childIndex; i < arr.length; i++)\n        buildDom(arr[i], el, refs);\n    if (childIndex == 2) {\n        Object.keys(options).forEach(function (n) {\n            var val = options[n];\n            if (n === \"class\") {\n                el.className = Array.isArray(val) ? val.join(\" \") : val;\n            }\n            else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n                el[n] = val;\n            }\n            else if (n === \"ref\") {\n                if (refs)\n                    refs[val] = el;\n            }\n            else if (n === \"style\") {\n                if (typeof val == \"string\")\n                    el.style.cssText = val;\n            }\n            else if (val != null) {\n                el.setAttribute(n, val);\n            }\n        });\n    }\n    if (parent)\n        parent.appendChild(el);\n    return el;\n};\nexports.getDocumentHead = function (doc) {\n    if (!doc)\n        doc = document;\n    return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\nexports.createElement = function (tag, ns) {\n    return document.createElementNS ?\n        document.createElementNS(ns || XHTML_NS, tag) :\n        document.createElement(tag);\n};\nexports.removeChildren = function (element) {\n    element.innerHTML = \"\";\n};\nexports.createTextNode = function (textContent, element) {\n    var doc = element ? element.ownerDocument : document;\n    return doc.createTextNode(textContent);\n};\nexports.createFragment = function (element) {\n    var doc = element ? element.ownerDocument : document;\n    return doc.createDocumentFragment();\n};\nexports.hasCssClass = function (el, name) {\n    var classes = (el.className + \"\").split(/\\s+/g);\n    return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function (el, name) {\n    if (!exports.hasCssClass(el, name)) {\n        el.className += \" \" + name;\n    }\n};\nexports.removeCssClass = function (el, name) {\n    var classes = el.className.split(/\\s+/g);\n    while (true) {\n        var index = classes.indexOf(name);\n        if (index == -1) {\n            break;\n        }\n        classes.splice(index, 1);\n    }\n    el.className = classes.join(\" \");\n};\nexports.toggleCssClass = function (el, name) {\n    var classes = el.className.split(/\\s+/g), add = true;\n    while (true) {\n        var index = classes.indexOf(name);\n        if (index == -1) {\n            break;\n        }\n        add = false;\n        classes.splice(index, 1);\n    }\n    if (add)\n        classes.push(name);\n    el.className = classes.join(\" \");\n    return add;\n};\nexports.setCssClass = function (node, className, include) {\n    if (include) {\n        exports.addCssClass(node, className);\n    }\n    else {\n        exports.removeCssClass(node, className);\n    }\n};\nexports.hasCssString = function (id, doc) {\n    var index = 0, sheets;\n    doc = doc || document;\n    if ((sheets = doc.querySelectorAll(\"style\"))) {\n        while (index < sheets.length) {\n            if (sheets[index++].id === id) {\n                return true;\n            }\n        }\n    }\n};\nexports.removeElementById = function (id, doc) {\n    doc = doc || document;\n    if (doc.getElementById(id)) {\n        doc.getElementById(id).remove();\n    }\n};\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function (value) {\n    strictCSP = value;\n    if (value == false)\n        insertPendingStyles();\n    else if (!cssCache)\n        cssCache = [];\n};\nfunction insertPendingStyles() {\n    var cache = cssCache;\n    cssCache = null;\n    cache && cache.forEach(function (item) {\n        importCssString(item[0], item[1]);\n    });\n}\nfunction importCssString(cssText, id, target) {\n    if (typeof document == \"undefined\")\n        return;\n    if (cssCache) {\n        if (target) {\n            insertPendingStyles();\n        }\n        else if (target === false) {\n            return cssCache.push([cssText, id]);\n        }\n    }\n    if (strictCSP)\n        return;\n    var container = target;\n    if (!target || !target.getRootNode) {\n        container = document;\n    }\n    else {\n        container = target.getRootNode();\n        if (!container || container == target)\n            container = document;\n    }\n    var doc = container.ownerDocument || container;\n    if (id && exports.hasCssString(id, container))\n        return null;\n    if (id)\n        cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n    var style = exports.createElement(\"style\");\n    style.appendChild(doc.createTextNode(cssText));\n    if (id)\n        style.id = id;\n    if (container == doc)\n        container = exports.getDocumentHead(doc);\n    container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\nexports.importCssStylsheet = function (uri, doc) {\n    exports.buildDom([\"link\", { rel: \"stylesheet\", href: uri }], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function (document) {\n    var inner = exports.createElement(\"ace_inner\");\n    inner.style.width = \"100%\";\n    inner.style.minWidth = \"0px\";\n    inner.style.height = \"200px\";\n    inner.style.display = \"block\";\n    var outer = exports.createElement(\"ace_outer\");\n    var style = outer.style;\n    style.position = \"absolute\";\n    style.left = \"-10000px\";\n    style.overflow = \"hidden\";\n    style.width = \"200px\";\n    style.minWidth = \"0px\";\n    style.height = \"150px\";\n    style.display = \"block\";\n    outer.appendChild(inner);\n    var body = document.documentElement;\n    body.appendChild(outer);\n    var noScrollbar = inner.offsetWidth;\n    style.overflow = \"scroll\";\n    var withScrollbar = inner.offsetWidth;\n    if (noScrollbar == withScrollbar) {\n        withScrollbar = outer.clientWidth;\n    }\n    body.removeChild(outer);\n    return noScrollbar - withScrollbar;\n};\nexports.computedStyle = function (element, style) {\n    return window.getComputedStyle(element, \"\") || {};\n};\nexports.setStyle = function (styles, property, value) {\n    if (styles[property] !== value) {\n        styles[property] = value;\n    }\n};\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n    ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n    : true;\nif (useragent.isChromeOS)\n    exports.HI_DPI = false;\nif (typeof document !== \"undefined\") {\n    var div = document.createElement(\"div\");\n    if (exports.HI_DPI && div.style.transform !== undefined)\n        exports.HAS_CSS_TRANSFORMS = true;\n    if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n        exports.HAS_CSS_ANIMATION = true;\n    div = null;\n}\nif (exports.HAS_CSS_TRANSFORMS) {\n    exports.translate = function (element, tx, ty) {\n        element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) + \"px)\";\n    };\n}\nelse {\n    exports.translate = function (element, tx, ty) {\n        element.style.top = Math.round(ty) + \"px\";\n        element.style.left = Math.round(tx) + \"px\";\n    };\n}\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){/*\n * based on code from:\n *\n * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n\"use strict\";\nvar dom = require(\"./dom\");\nexports.get = function (url, callback) {\n    var xhr = new XMLHttpRequest();\n    xhr.open('GET', url, true);\n    xhr.onreadystatechange = function () {\n        if (xhr.readyState === 4) {\n            callback(xhr.responseText);\n        }\n    };\n    xhr.send(null);\n};\nexports.loadScript = function (path, callback) {\n    var head = dom.getDocumentHead();\n    var s = document.createElement('script');\n    s.src = path;\n    head.appendChild(s);\n    s.onload = s.onreadystatechange = function (_, isAbort) {\n        if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n            s = s.onload = s.onreadystatechange = null;\n            if (!isAbort)\n                callback();\n        }\n    };\n};\nexports.qualifyURL = function (url) {\n    var a = document.createElement('a');\n    a.href = url;\n    return a.href;\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n    EventEmitter._dispatchEvent = function (eventName, e) {\n        this._eventRegistry || (this._eventRegistry = {});\n        this._defaultHandlers || (this._defaultHandlers = {});\n        var listeners = this._eventRegistry[eventName] || [];\n        var defaultHandler = this._defaultHandlers[eventName];\n        if (!listeners.length && !defaultHandler)\n            return;\n        if (typeof e != \"object\" || !e)\n            e = {};\n        if (!e.type)\n            e.type = eventName;\n        if (!e.stopPropagation)\n            e.stopPropagation = stopPropagation;\n        if (!e.preventDefault)\n            e.preventDefault = preventDefault;\n        listeners = listeners.slice();\n        for (var i = 0; i < listeners.length; i++) {\n            listeners[i](e, this);\n            if (e.propagationStopped)\n                break;\n        }\n        if (defaultHandler && !e.defaultPrevented)\n            return defaultHandler(e, this);\n    };\nEventEmitter._signal = function (eventName, e) {\n    var listeners = (this._eventRegistry || {})[eventName];\n    if (!listeners)\n        return;\n    listeners = listeners.slice();\n    for (var i = 0; i < listeners.length; i++)\n        listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n    var _self = this;\n    this.on(eventName, function newCallback() {\n        _self.off(eventName, newCallback);\n        callback.apply(null, arguments);\n    });\n    if (!callback) {\n        return new Promise(function (resolve) {\n            callback = resolve;\n        });\n    }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n    var handlers = this._defaultHandlers;\n    if (!handlers)\n        handlers = this._defaultHandlers = { _disabled_: {} };\n    if (handlers[eventName]) {\n        var old = handlers[eventName];\n        var disabled = handlers._disabled_[eventName];\n        if (!disabled)\n            handlers._disabled_[eventName] = disabled = [];\n        disabled.push(old);\n        var i = disabled.indexOf(callback);\n        if (i != -1)\n            disabled.splice(i, 1);\n    }\n    handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n    var handlers = this._defaultHandlers;\n    if (!handlers)\n        return;\n    var disabled = handlers._disabled_[eventName];\n    if (handlers[eventName] == callback) {\n        if (disabled)\n            this.setDefaultHandler(eventName, disabled.pop());\n    }\n    else if (disabled) {\n        var i = disabled.indexOf(callback);\n        if (i != -1)\n            disabled.splice(i, 1);\n    }\n};\nEventEmitter.on =\n    EventEmitter.addEventListener = function (eventName, callback, capturing) {\n        this._eventRegistry = this._eventRegistry || {};\n        var listeners = this._eventRegistry[eventName];\n        if (!listeners)\n            listeners = this._eventRegistry[eventName] = [];\n        if (listeners.indexOf(callback) == -1)\n            listeners[capturing ? \"unshift\" : \"push\"](callback);\n        return callback;\n    };\nEventEmitter.off =\n    EventEmitter.removeListener =\n        EventEmitter.removeEventListener = function (eventName, callback) {\n            this._eventRegistry = this._eventRegistry || {};\n            var listeners = this._eventRegistry[eventName];\n            if (!listeners)\n                return;\n            var index = listeners.indexOf(callback);\n            if (index !== -1)\n                listeners.splice(index, 1);\n        };\nEventEmitter.removeAllListeners = function (eventName) {\n    if (!eventName)\n        this._eventRegistry = this._defaultHandlers = undefined;\n    if (this._eventRegistry)\n        this._eventRegistry[eventName] = undefined;\n    if (this._defaultHandlers)\n        this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/lib/app_config\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"no use strict\";\nvar oop = require(\"./oop\");\nvar EventEmitter = require(\"./event_emitter\").EventEmitter;\nvar optionsProvider = {\n    setOptions: function (optList) {\n        Object.keys(optList).forEach(function (key) {\n            this.setOption(key, optList[key]);\n        }, this);\n    },\n    getOptions: function (optionNames) {\n        var result = {};\n        if (!optionNames) {\n            var options = this.$options;\n            optionNames = Object.keys(options).filter(function (key) {\n                return !options[key].hidden;\n            });\n        }\n        else if (!Array.isArray(optionNames)) {\n            result = optionNames;\n            optionNames = Object.keys(result);\n        }\n        optionNames.forEach(function (key) {\n            result[key] = this.getOption(key);\n        }, this);\n        return result;\n    },\n    setOption: function (name, value) {\n        if (this[\"$\" + name] === value)\n            return;\n        var opt = this.$options[name];\n        if (!opt) {\n            return warn('misspelled option \"' + name + '\"');\n        }\n        if (opt.forwardTo)\n            return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value);\n        if (!opt.handlesSet)\n            this[\"$\" + name] = value;\n        if (opt && opt.set)\n            opt.set.call(this, value);\n    },\n    getOption: function (name) {\n        var opt = this.$options[name];\n        if (!opt) {\n            return warn('misspelled option \"' + name + '\"');\n        }\n        if (opt.forwardTo)\n            return this[opt.forwardTo] && this[opt.forwardTo].getOption(name);\n        return opt && opt.get ? opt.get.call(this) : this[\"$\" + name];\n    }\n};\nfunction warn(message) {\n    if (typeof console != \"undefined\" && console.warn)\n        console.warn.apply(console, arguments);\n}\nfunction reportError(msg, data) {\n    var e = new Error(msg);\n    e.data = data;\n    if (typeof console == \"object\" && console.error)\n        console.error(e);\n    setTimeout(function () { throw e; });\n}\nvar AppConfig = function () {\n    this.$defaultOptions = {};\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.defineOptions = function (obj, path, options) {\n        if (!obj.$options)\n            this.$defaultOptions[path] = obj.$options = {};\n        Object.keys(options).forEach(function (key) {\n            var opt = options[key];\n            if (typeof opt == \"string\")\n                opt = { forwardTo: opt };\n            opt.name || (opt.name = key);\n            obj.$options[opt.name] = opt;\n            if (\"initialValue\" in opt)\n                obj[\"$\" + opt.name] = opt.initialValue;\n        });\n        oop.implement(obj, optionsProvider);\n        return this;\n    };\n    this.resetOptions = function (obj) {\n        Object.keys(obj.$options).forEach(function (key) {\n            var opt = obj.$options[key];\n            if (\"value\" in opt)\n                obj.setOption(key, opt.value);\n        });\n    };\n    this.setDefaultValue = function (path, name, value) {\n        if (!path) {\n            for (path in this.$defaultOptions)\n                if (this.$defaultOptions[path][name])\n                    break;\n            if (!this.$defaultOptions[path][name])\n                return false;\n        }\n        var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {});\n        if (opts[name]) {\n            if (opts.forwardTo)\n                this.setDefaultValue(opts.forwardTo, name, value);\n            else\n                opts[name].value = value;\n        }\n    };\n    this.setDefaultValues = function (path, optionHash) {\n        Object.keys(optionHash).forEach(function (key) {\n            this.setDefaultValue(path, key, optionHash[key]);\n        }, this);\n    };\n    this.warn = warn;\n    this.reportError = reportError;\n}).call(AppConfig.prototype);\nexports.AppConfig = AppConfig;\n\n});\n\nace.define(\"ace/theme/textmate.css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \".ace-tm .ace_gutter {\\n  background: #f0f0f0;\\n  color: #333;\\n}\\n\\n.ace-tm .ace_print-margin {\\n  width: 1px;\\n  background: #e8e8e8;\\n}\\n\\n.ace-tm .ace_fold {\\n    background-color: #6B72E6;\\n}\\n\\n.ace-tm {\\n  background-color: #FFFFFF;\\n  color: black;\\n}\\n\\n.ace-tm .ace_cursor {\\n  color: black;\\n}\\n        \\n.ace-tm .ace_invisible {\\n  color: rgb(191, 191, 191);\\n}\\n\\n.ace-tm .ace_storage,\\n.ace-tm .ace_keyword {\\n  color: blue;\\n}\\n\\n.ace-tm .ace_constant {\\n  color: rgb(197, 6, 11);\\n}\\n\\n.ace-tm .ace_constant.ace_buildin {\\n  color: rgb(88, 72, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_language {\\n  color: rgb(88, 92, 246);\\n}\\n\\n.ace-tm .ace_constant.ace_library {\\n  color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_invalid {\\n  background-color: rgba(255, 0, 0, 0.1);\\n  color: red;\\n}\\n\\n.ace-tm .ace_support.ace_function {\\n  color: rgb(60, 76, 114);\\n}\\n\\n.ace-tm .ace_support.ace_constant {\\n  color: rgb(6, 150, 14);\\n}\\n\\n.ace-tm .ace_support.ace_type,\\n.ace-tm .ace_support.ace_class {\\n  color: rgb(109, 121, 222);\\n}\\n\\n.ace-tm .ace_keyword.ace_operator {\\n  color: rgb(104, 118, 135);\\n}\\n\\n.ace-tm .ace_string {\\n  color: rgb(3, 106, 7);\\n}\\n\\n.ace-tm .ace_comment {\\n  color: rgb(76, 136, 107);\\n}\\n\\n.ace-tm .ace_comment.ace_doc {\\n  color: rgb(0, 102, 255);\\n}\\n\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\n  color: rgb(128, 159, 191);\\n}\\n\\n.ace-tm .ace_constant.ace_numeric {\\n  color: rgb(0, 0, 205);\\n}\\n\\n.ace-tm .ace_variable {\\n  color: rgb(49, 132, 149);\\n}\\n\\n.ace-tm .ace_xml-pe {\\n  color: rgb(104, 104, 91);\\n}\\n\\n.ace-tm .ace_entity.ace_name.ace_function {\\n  color: #0000A2;\\n}\\n\\n\\n.ace-tm .ace_heading {\\n  color: rgb(12, 7, 255);\\n}\\n\\n.ace-tm .ace_list {\\n  color:rgb(185, 6, 144);\\n}\\n\\n.ace-tm .ace_meta.ace_tag {\\n  color:rgb(0, 22, 142);\\n}\\n\\n.ace-tm .ace_string.ace_regex {\\n  color: rgb(255, 0, 0)\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selection {\\n  background: rgb(181, 213, 255);\\n}\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\n  box-shadow: 0 0 3px 0px white;\\n}\\n.ace-tm .ace_marker-layer .ace_step {\\n  background: rgb(252, 255, 0);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_stack {\\n  background: rgb(164, 229, 101);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_bracket {\\n  margin: -1px 0 0 -1px;\\n  border: 1px solid rgb(192, 192, 192);\\n}\\n\\n.ace-tm .ace_marker-layer .ace_active-line {\\n  background: rgba(0, 0, 0, 0.07);\\n}\\n\\n.ace-tm .ace_gutter-active-line {\\n    background-color : #dcdcdc;\\n}\\n\\n.ace-tm .ace_marker-layer .ace_selected-word {\\n  background: rgb(250, 250, 255);\\n  border: 1px solid rgb(200, 200, 250);\\n}\\n\\n.ace-tm .ace_indent-guide {\\n  background: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\n}\\n\";\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/theme/textmate.css\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = require(\"./textmate.css\");\nexports.$id = \"ace/theme/textmate\";\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n\n});\n\nace.define(\"ace/config\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/dom\",\"ace/lib/app_config\",\"ace/theme/textmate\"], function(require, exports, module){\"no use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar net = require(\"./lib/net\");\nvar dom = require(\"./lib/dom\");\nvar AppConfig = require(\"./lib/app_config\").AppConfig;\nmodule.exports = exports = new AppConfig();\nvar options = {\n    packaged: false,\n    workerPath: null,\n    modePath: null,\n    themePath: null,\n    basePath: \"\",\n    suffix: \".js\",\n    $moduleUrls: {},\n    loadWorkerFromBlob: true,\n    sharedPopups: false,\n    useStrictCSP: null\n};\nexports.get = function (key) {\n    if (!options.hasOwnProperty(key))\n        throw new Error(\"Unknown config key: \" + key);\n    return options[key];\n};\nexports.set = function (key, value) {\n    if (options.hasOwnProperty(key))\n        options[key] = value;\n    else if (this.setDefaultValue(\"\", key, value) == false)\n        throw new Error(\"Unknown config key: \" + key);\n    if (key == \"useStrictCSP\")\n        dom.useStrictCSP(value);\n};\nexports.all = function () {\n    return lang.copyObject(options);\n};\nexports.$modes = {};\nexports.moduleUrl = function (name, component) {\n    if (options.$moduleUrls[name])\n        return options.$moduleUrls[name];\n    var parts = name.split(\"/\");\n    component = component || parts[parts.length - 2] || \"\";\n    var sep = component == \"snippets\" ? \"/\" : \"-\";\n    var base = parts[parts.length - 1];\n    if (component == \"worker\" && sep == \"-\") {\n        var re = new RegExp(\"^\" + component + \"[\\\\-_]|[\\\\-_]\" + component + \"$\", \"g\");\n        base = base.replace(re, \"\");\n    }\n    if ((!base || base == component) && parts.length > 1)\n        base = parts[parts.length - 2];\n    var path = options[component + \"Path\"];\n    if (path == null) {\n        path = options.basePath;\n    }\n    else if (sep == \"/\") {\n        component = sep = \"\";\n    }\n    if (path && path.slice(-1) != \"/\")\n        path += \"/\";\n    return path + component + sep + base + this.get(\"suffix\");\n};\nexports.setModuleUrl = function (name, subst) {\n    return options.$moduleUrls[name] = subst;\n};\nvar loader = function (moduleName, cb) {\n    if (moduleName == \"ace/theme/textmate\")\n        return cb(null, require(\"./theme/textmate\"));\n    return console.error(\"loader is not configured\");\n};\nexports.setLoader = function (cb) {\n    loader = cb;\n};\nexports.$loading = {};\nexports.loadModule = function (moduleName, onLoad) {\n    var module, moduleType;\n    if (Array.isArray(moduleName)) {\n        moduleType = moduleName[0];\n        moduleName = moduleName[1];\n    }\n    try {\n        module = require(moduleName);\n    }\n    catch (e) { }\n    if (module && !exports.$loading[moduleName])\n        return onLoad && onLoad(module);\n    if (!exports.$loading[moduleName])\n        exports.$loading[moduleName] = [];\n    exports.$loading[moduleName].push(onLoad);\n    if (exports.$loading[moduleName].length > 1)\n        return;\n    var afterLoad = function () {\n        loader(moduleName, function (err, module) {\n            exports._emit(\"load.module\", { name: moduleName, module: module });\n            var listeners = exports.$loading[moduleName];\n            exports.$loading[moduleName] = null;\n            listeners.forEach(function (onLoad) {\n                onLoad && onLoad(module);\n            });\n        });\n    };\n    if (!exports.get(\"packaged\"))\n        return afterLoad();\n    net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n    reportErrorIfPathIsNotConfigured();\n};\nvar reportErrorIfPathIsNotConfigured = function () {\n    if (!options.basePath && !options.workerPath\n        && !options.modePath && !options.themePath\n        && !Object.keys(options.$moduleUrls).length) {\n        console.error(\"Unable to infer path to ace from script src,\", \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\", \"or with webpack use ace/webpack-resolver\");\n        reportErrorIfPathIsNotConfigured = function () { };\n    }\n};\nexports.version = \"1.9.6\";\n\n});\n\nace.define(\"ace/loader_build\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\nvar config = require(\"./config\");\nconfig.setLoader(function(moduleName, cb) {\n    require([moduleName], function(module) {\n        cb(null, module);\n    });\n});\n\nvar global = (function() {\n    return this || typeof window != \"undefined\" && window;\n})();\n\nmodule.exports = function(ace) {\n    config.init = init;\n    ace.require = require;\n\n    if (true)\n        ace.define = __webpack_require__(668);\n};\ninit(true);function init(packaged) {\n\n    if (!global || !global.document)\n        return;\n    \n    config.set(\"packaged\", packaged || require.packaged || module.packaged || (global.define && __webpack_require__(668).packaged));\n\n    var scriptOptions = {};\n    var scriptUrl = \"\";\n    var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n    var currentDocument = currentScript && currentScript.ownerDocument || document;\n    \n    var scripts = currentDocument.getElementsByTagName(\"script\");\n    for (var i=0; i<scripts.length; i++) {\n        var script = scripts[i];\n\n        var src = script.src || script.getAttribute(\"src\");\n        if (!src)\n            continue;\n\n        var attributes = script.attributes;\n        for (var j=0, l=attributes.length; j < l; j++) {\n            var attr = attributes[j];\n            if (attr.name.indexOf(\"data-ace-\") === 0) {\n                scriptOptions[deHyphenate(attr.name.replace(/^data-ace-/, \"\"))] = attr.value;\n            }\n        }\n\n        var m = src.match(/^(.*)\\/ace(\\-\\w+)?\\.js(\\?|$)/);\n        if (m)\n            scriptUrl = m[1];\n    }\n\n    if (scriptUrl) {\n        scriptOptions.base = scriptOptions.base || scriptUrl;\n        scriptOptions.packaged = true;\n    }\n\n    scriptOptions.basePath = scriptOptions.base;\n    scriptOptions.workerPath = scriptOptions.workerPath || scriptOptions.base;\n    scriptOptions.modePath = scriptOptions.modePath || scriptOptions.base;\n    scriptOptions.themePath = scriptOptions.themePath || scriptOptions.base;\n    delete scriptOptions.base;\n\n    for (var key in scriptOptions)\n        if (typeof scriptOptions[key] !== \"undefined\")\n            config.set(key, scriptOptions[key]);\n}\n\nfunction deHyphenate(str) {\n    return str.replace(/-(.)/g, function(m, m1) { return m1.toUpperCase(); });\n}\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module){/*! @license\n==========================================================================\nSproutCore -- JavaScript Application Framework\ncopyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished 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\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n\nSproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc.\n\nFor more information about SproutCore, visit http://www.sproutcore.com\n\n\n==========================================================================\n@license */\n\"use strict\";\nvar oop = require(\"./oop\");\nvar Keys = (function () {\n    var ret = {\n        MODIFIER_KEYS: {\n            16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n            91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n        },\n        KEY_MODS: {\n            \"ctrl\": 1, \"alt\": 2, \"option\": 2, \"shift\": 4,\n            \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8,\n            \"control\": 1\n        },\n        FUNCTION_KEYS: {\n            8: \"Backspace\",\n            9: \"Tab\",\n            13: \"Return\",\n            19: \"Pause\",\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            44: \"Print\",\n            45: \"Insert\",\n            46: \"Delete\",\n            96: \"Numpad0\",\n            97: \"Numpad1\",\n            98: \"Numpad2\",\n            99: \"Numpad3\",\n            100: \"Numpad4\",\n            101: \"Numpad5\",\n            102: \"Numpad6\",\n            103: \"Numpad7\",\n            104: \"Numpad8\",\n            105: \"Numpad9\",\n            '-13': \"NumpadEnter\",\n            112: \"F1\",\n            113: \"F2\",\n            114: \"F3\",\n            115: \"F4\",\n            116: \"F5\",\n            117: \"F6\",\n            118: \"F7\",\n            119: \"F8\",\n            120: \"F9\",\n            121: \"F10\",\n            122: \"F11\",\n            123: \"F12\",\n            144: \"Numlock\",\n            145: \"Scrolllock\"\n        },\n        PRINTABLE_KEYS: {\n            32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n            54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n            66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n            73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n            80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n            87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n            186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n            219: '[', 220: '\\\\', 221: ']', 222: \"'\", 111: '/', 106: '*'\n        }\n    };\n    var name, i;\n    for (i in ret.FUNCTION_KEYS) {\n        name = ret.FUNCTION_KEYS[i].toLowerCase();\n        ret[name] = parseInt(i, 10);\n    }\n    for (i in ret.PRINTABLE_KEYS) {\n        name = ret.PRINTABLE_KEYS[i].toLowerCase();\n        ret[name] = parseInt(i, 10);\n    }\n    oop.mixin(ret, ret.MODIFIER_KEYS);\n    oop.mixin(ret, ret.PRINTABLE_KEYS);\n    oop.mixin(ret, ret.FUNCTION_KEYS);\n    ret.enter = ret[\"return\"];\n    ret.escape = ret.esc;\n    ret.del = ret[\"delete\"];\n    ret[173] = '-';\n    (function () {\n        var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n        for (var i = Math.pow(2, mods.length); i--;) {\n            ret.KEY_MODS[i] = mods.filter(function (x) {\n                return i & ret.KEY_MODS[x];\n            }).join(\"-\") + \"-\";\n        }\n    })();\n    ret.KEY_MODS[0] = \"\";\n    ret.KEY_MODS[-1] = \"input-\";\n    return ret;\n})();\noop.mixin(exports, Keys);\nexports.keyCodeToString = function (keyCode) {\n    var keyString = Keys[keyCode];\n    if (typeof keyString != \"string\")\n        keyString = String.fromCharCode(keyCode);\n    return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\nvar pressedKeys = null;\nvar ts = 0;\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n    activeListenerOptions = false;\n    try {\n        document.createComment(\"\").addEventListener(\"test\", function () { }, {\n            get passive() {\n                activeListenerOptions = { passive: false };\n            }\n        });\n    }\n    catch (e) { }\n}\nfunction getListenerOptions() {\n    if (activeListenerOptions == undefined)\n        detectListenerOptionsSupport();\n    return activeListenerOptions;\n}\nfunction EventListener(elem, type, callback) {\n    this.elem = elem;\n    this.type = type;\n    this.callback = callback;\n}\nEventListener.prototype.destroy = function () {\n    removeListener(this.elem, this.type, this.callback);\n    this.elem = this.type = this.callback = undefined;\n};\nvar addListener = exports.addListener = function (elem, type, callback, destroyer) {\n    elem.addEventListener(type, callback, getListenerOptions());\n    if (destroyer)\n        destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\nvar removeListener = exports.removeListener = function (elem, type, callback) {\n    elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function (e) {\n    exports.stopPropagation(e);\n    exports.preventDefault(e);\n    return false;\n};\nexports.stopPropagation = function (e) {\n    if (e.stopPropagation)\n        e.stopPropagation();\n};\nexports.preventDefault = function (e) {\n    if (e.preventDefault)\n        e.preventDefault();\n};\nexports.getButton = function (e) {\n    if (e.type == \"dblclick\")\n        return 0;\n    if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n        return 2;\n    return e.button;\n};\nexports.capture = function (el, eventHandler, releaseCaptureHandler) {\n    var ownerDocument = el && el.ownerDocument || document;\n    function onMouseUp(e) {\n        eventHandler && eventHandler(e);\n        releaseCaptureHandler && releaseCaptureHandler(e);\n        removeListener(ownerDocument, \"mousemove\", eventHandler);\n        removeListener(ownerDocument, \"mouseup\", onMouseUp);\n        removeListener(ownerDocument, \"dragstart\", onMouseUp);\n    }\n    addListener(ownerDocument, \"mousemove\", eventHandler);\n    addListener(ownerDocument, \"mouseup\", onMouseUp);\n    addListener(ownerDocument, \"dragstart\", onMouseUp);\n    return onMouseUp;\n};\nexports.addMouseWheelListener = function (el, callback, destroyer) {\n    addListener(el, \"wheel\", function (e) {\n        var factor = 0.15;\n        var deltaX = e.deltaX || 0;\n        var deltaY = e.deltaY || 0;\n        switch (e.deltaMode) {\n            case e.DOM_DELTA_PIXEL:\n                e.wheelX = deltaX * factor;\n                e.wheelY = deltaY * factor;\n                break;\n            case e.DOM_DELTA_LINE:\n                var linePixels = 15;\n                e.wheelX = deltaX * linePixels;\n                e.wheelY = deltaY * linePixels;\n                break;\n            case e.DOM_DELTA_PAGE:\n                var pagePixels = 150;\n                e.wheelX = deltaX * pagePixels;\n                e.wheelY = deltaY * pagePixels;\n                break;\n        }\n        callback(e);\n    }, destroyer);\n};\nexports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) {\n    var clicks = 0;\n    var startX, startY, timer;\n    var eventNames = {\n        2: \"dblclick\",\n        3: \"tripleclick\",\n        4: \"quadclick\"\n    };\n    function onMousedown(e) {\n        if (exports.getButton(e) !== 0) {\n            clicks = 0;\n        }\n        else if (e.detail > 1) {\n            clicks++;\n            if (clicks > 4)\n                clicks = 1;\n        }\n        else {\n            clicks = 1;\n        }\n        if (useragent.isIE) {\n            var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n            if (!timer || isNewClick)\n                clicks = 1;\n            if (timer)\n                clearTimeout(timer);\n            timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600);\n            if (clicks == 1) {\n                startX = e.clientX;\n                startY = e.clientY;\n            }\n        }\n        e._clicks = clicks;\n        eventHandler[callbackName](\"mousedown\", e);\n        if (clicks > 4)\n            clicks = 0;\n        else if (clicks > 1)\n            return eventHandler[callbackName](eventNames[clicks], e);\n    }\n    if (!Array.isArray(elements))\n        elements = [elements];\n    elements.forEach(function (el) {\n        addListener(el, \"mousedown\", onMousedown, destroyer);\n    });\n};\nvar getModifierHash = function (e) {\n    return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\nexports.getModifierString = function (e) {\n    return keys.KEY_MODS[getModifierHash(e)];\n};\nfunction normalizeCommandKeys(callback, e, keyCode) {\n    var hashId = getModifierHash(e);\n    if (!useragent.isMac && pressedKeys) {\n        if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n            hashId |= 8;\n        if (pressedKeys.altGr) {\n            if ((3 & hashId) != 3)\n                pressedKeys.altGr = 0;\n            else\n                return;\n        }\n        if (keyCode === 18 || keyCode === 17) {\n            var location = \"location\" in e ? e.location : e.keyLocation;\n            if (keyCode === 17 && location === 1) {\n                if (pressedKeys[keyCode] == 1)\n                    ts = e.timeStamp;\n            }\n            else if (keyCode === 18 && hashId === 3 && location === 2) {\n                var dt = e.timeStamp - ts;\n                if (dt < 50)\n                    pressedKeys.altGr = true;\n            }\n        }\n    }\n    if (keyCode in keys.MODIFIER_KEYS) {\n        keyCode = -1;\n    }\n    if (!hashId && keyCode === 13) {\n        var location = \"location\" in e ? e.location : e.keyLocation;\n        if (location === 3) {\n            callback(e, hashId, -keyCode);\n            if (e.defaultPrevented)\n                return;\n        }\n    }\n    if (useragent.isChromeOS && hashId & 8) {\n        callback(e, hashId, keyCode);\n        if (e.defaultPrevented)\n            return;\n        else\n            hashId &= ~8;\n    }\n    if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n        return false;\n    }\n    return callback(e, hashId, keyCode);\n}\nexports.addCommandKeyListener = function (el, callback, destroyer) {\n    if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n        var lastKeyDownKeyCode = null;\n        addListener(el, \"keydown\", function (e) {\n            lastKeyDownKeyCode = e.keyCode;\n        }, destroyer);\n        addListener(el, \"keypress\", function (e) {\n            return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n        }, destroyer);\n    }\n    else {\n        var lastDefaultPrevented = null;\n        addListener(el, \"keydown\", function (e) {\n            pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n            var result = normalizeCommandKeys(callback, e, e.keyCode);\n            lastDefaultPrevented = e.defaultPrevented;\n            return result;\n        }, destroyer);\n        addListener(el, \"keypress\", function (e) {\n            if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n                exports.stopEvent(e);\n                lastDefaultPrevented = null;\n            }\n        }, destroyer);\n        addListener(el, \"keyup\", function (e) {\n            pressedKeys[e.keyCode] = null;\n        }, destroyer);\n        if (!pressedKeys) {\n            resetPressedKeys();\n            addListener(window, \"focus\", resetPressedKeys);\n        }\n    }\n};\nfunction resetPressedKeys() {\n    pressedKeys = Object.create(null);\n}\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n    var postMessageId = 1;\n    exports.nextTick = function (callback, win) {\n        win = win || window;\n        var messageName = \"zero-timeout-message-\" + (postMessageId++);\n        var listener = function (e) {\n            if (e.data == messageName) {\n                exports.stopPropagation(e);\n                removeListener(win, \"message\", listener);\n                callback();\n            }\n        };\n        addListener(win, \"message\", listener);\n        win.postMessage(messageName, \"*\");\n    };\n}\nexports.$idleBlocked = false;\nexports.onIdle = function (cb, timeout) {\n    return setTimeout(function handler() {\n        if (!exports.$idleBlocked) {\n            cb();\n        }\n        else {\n            setTimeout(handler, 100);\n        }\n    }, timeout);\n};\nexports.$idleBlockId = null;\nexports.blockIdle = function (delay) {\n    if (exports.$idleBlockId)\n        clearTimeout(exports.$idleBlockId);\n    exports.$idleBlocked = true;\n    exports.$idleBlockId = setTimeout(function () {\n        exports.$idleBlocked = false;\n    }, delay || 100);\n};\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n    || window.mozRequestAnimationFrame\n    || window.webkitRequestAnimationFrame\n    || window.msRequestAnimationFrame\n    || window.oRequestAnimationFrame);\nif (exports.nextFrame)\n    exports.nextFrame = exports.nextFrame.bind(window);\nelse\n    exports.nextFrame = function (callback) {\n        setTimeout(callback, 17);\n    };\n\n});\n\nace.define(\"ace/range\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar comparePoints = function (p1, p2) {\n    return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = function (startRow, startColumn, endRow, endColumn) {\n    this.start = {\n        row: startRow,\n        column: startColumn\n    };\n    this.end = {\n        row: endRow,\n        column: endColumn\n    };\n};\n(function () {\n    this.isEqual = function (range) {\n        return this.start.row === range.start.row &&\n            this.end.row === range.end.row &&\n            this.start.column === range.start.column &&\n            this.end.column === range.end.column;\n    };\n    this.toString = function () {\n        return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n            \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n    };\n    this.contains = function (row, column) {\n        return this.compare(row, column) == 0;\n    };\n    this.compareRange = function (range) {\n        var cmp, end = range.end, start = range.start;\n        cmp = this.compare(end.row, end.column);\n        if (cmp == 1) {\n            cmp = this.compare(start.row, start.column);\n            if (cmp == 1) {\n                return 2;\n            }\n            else if (cmp == 0) {\n                return 1;\n            }\n            else {\n                return 0;\n            }\n        }\n        else if (cmp == -1) {\n            return -2;\n        }\n        else {\n            cmp = this.compare(start.row, start.column);\n            if (cmp == -1) {\n                return -1;\n            }\n            else if (cmp == 1) {\n                return 42;\n            }\n            else {\n                return 0;\n            }\n        }\n    };\n    this.comparePoint = function (p) {\n        return this.compare(p.row, p.column);\n    };\n    this.containsRange = function (range) {\n        return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n    };\n    this.intersects = function (range) {\n        var cmp = this.compareRange(range);\n        return (cmp == -1 || cmp == 0 || cmp == 1);\n    };\n    this.isEnd = function (row, column) {\n        return this.end.row == row && this.end.column == column;\n    };\n    this.isStart = function (row, column) {\n        return this.start.row == row && this.start.column == column;\n    };\n    this.setStart = function (row, column) {\n        if (typeof row == \"object\") {\n            this.start.column = row.column;\n            this.start.row = row.row;\n        }\n        else {\n            this.start.row = row;\n            this.start.column = column;\n        }\n    };\n    this.setEnd = function (row, column) {\n        if (typeof row == \"object\") {\n            this.end.column = row.column;\n            this.end.row = row.row;\n        }\n        else {\n            this.end.row = row;\n            this.end.column = column;\n        }\n    };\n    this.inside = function (row, column) {\n        if (this.compare(row, column) == 0) {\n            if (this.isEnd(row, column) || this.isStart(row, column)) {\n                return false;\n            }\n            else {\n                return true;\n            }\n        }\n        return false;\n    };\n    this.insideStart = function (row, column) {\n        if (this.compare(row, column) == 0) {\n            if (this.isEnd(row, column)) {\n                return false;\n            }\n            else {\n                return true;\n            }\n        }\n        return false;\n    };\n    this.insideEnd = function (row, column) {\n        if (this.compare(row, column) == 0) {\n            if (this.isStart(row, column)) {\n                return false;\n            }\n            else {\n                return true;\n            }\n        }\n        return false;\n    };\n    this.compare = function (row, column) {\n        if (!this.isMultiLine()) {\n            if (row === this.start.row) {\n                return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n            }\n        }\n        if (row < this.start.row)\n            return -1;\n        if (row > this.end.row)\n            return 1;\n        if (this.start.row === row)\n            return column >= this.start.column ? 0 : -1;\n        if (this.end.row === row)\n            return column <= this.end.column ? 0 : 1;\n        return 0;\n    };\n    this.compareStart = function (row, column) {\n        if (this.start.row == row && this.start.column == column) {\n            return -1;\n        }\n        else {\n            return this.compare(row, column);\n        }\n    };\n    this.compareEnd = function (row, column) {\n        if (this.end.row == row && this.end.column == column) {\n            return 1;\n        }\n        else {\n            return this.compare(row, column);\n        }\n    };\n    this.compareInside = function (row, column) {\n        if (this.end.row == row && this.end.column == column) {\n            return 1;\n        }\n        else if (this.start.row == row && this.start.column == column) {\n            return -1;\n        }\n        else {\n            return this.compare(row, column);\n        }\n    };\n    this.clipRows = function (firstRow, lastRow) {\n        if (this.end.row > lastRow)\n            var end = { row: lastRow + 1, column: 0 };\n        else if (this.end.row < firstRow)\n            var end = { row: firstRow, column: 0 };\n        if (this.start.row > lastRow)\n            var start = { row: lastRow + 1, column: 0 };\n        else if (this.start.row < firstRow)\n            var start = { row: firstRow, column: 0 };\n        return Range.fromPoints(start || this.start, end || this.end);\n    };\n    this.extend = function (row, column) {\n        var cmp = this.compare(row, column);\n        if (cmp == 0)\n            return this;\n        else if (cmp == -1)\n            var start = { row: row, column: column };\n        else\n            var end = { row: row, column: column };\n        return Range.fromPoints(start || this.start, end || this.end);\n    };\n    this.isEmpty = function () {\n        return (this.start.row === this.end.row && this.start.column === this.end.column);\n    };\n    this.isMultiLine = function () {\n        return (this.start.row !== this.end.row);\n    };\n    this.clone = function () {\n        return Range.fromPoints(this.start, this.end);\n    };\n    this.collapseRows = function () {\n        if (this.end.column == 0)\n            return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n        else\n            return new Range(this.start.row, 0, this.end.row, 0);\n    };\n    this.toScreenRange = function (session) {\n        var screenPosStart = session.documentToScreenPosition(this.start);\n        var screenPosEnd = session.documentToScreenPosition(this.end);\n        return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n    };\n    this.moveBy = function (row, column) {\n        this.start.row += row;\n        this.start.column += column;\n        this.end.row += row;\n        this.end.column += column;\n    };\n}).call(Range.prototype);\nRange.fromPoints = function (start, end) {\n    return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n    return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/clipboard\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar $cancelT;\nmodule.exports = {\n    lineMode: false,\n    pasteCancelled: function () {\n        if ($cancelT && $cancelT > Date.now() - 50)\n            return true;\n        return $cancelT = false;\n    },\n    cancel: function () {\n        $cancelT = Date.now();\n    }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\nvar TextInput = function (parentNode, host) {\n    var text = dom.createElement(\"textarea\");\n    text.className = \"ace_text-input\";\n    text.setAttribute(\"wrap\", \"off\");\n    text.setAttribute(\"autocorrect\", \"off\");\n    text.setAttribute(\"autocapitalize\", \"off\");\n    text.setAttribute(\"spellcheck\", false);\n    text.style.opacity = \"0\";\n    parentNode.insertBefore(text, parentNode.firstChild);\n    var copied = false;\n    var pasted = false;\n    var inComposition = false;\n    var sendingText = false;\n    var tempStyle = '';\n    if (!isMobile)\n        text.style.fontSize = \"1px\";\n    var commandMode = false;\n    var ignoreFocusEvents = false;\n    var lastValue = \"\";\n    var lastSelectionStart = 0;\n    var lastSelectionEnd = 0;\n    var lastRestoreEnd = 0;\n    try {\n        var isFocused = document.activeElement === text;\n    }\n    catch (e) { }\n    event.addListener(text, \"blur\", function (e) {\n        if (ignoreFocusEvents)\n            return;\n        host.onBlur(e);\n        isFocused = false;\n    }, host);\n    event.addListener(text, \"focus\", function (e) {\n        if (ignoreFocusEvents)\n            return;\n        isFocused = true;\n        if (useragent.isEdge) {\n            try {\n                if (!document.hasFocus())\n                    return;\n            }\n            catch (e) { }\n        }\n        host.onFocus(e);\n        if (useragent.isEdge)\n            setTimeout(resetSelection);\n        else\n            resetSelection();\n    }, host);\n    this.$focusScroll = false;\n    this.focus = function () {\n        if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n            return text.focus({ preventScroll: true });\n        var top = text.style.top;\n        text.style.position = \"fixed\";\n        text.style.top = \"0px\";\n        try {\n            var isTransformed = text.getBoundingClientRect().top != 0;\n        }\n        catch (e) {\n            return;\n        }\n        var ancestors = [];\n        if (isTransformed) {\n            var t = text.parentElement;\n            while (t && t.nodeType == 1) {\n                ancestors.push(t);\n                t.setAttribute(\"ace_nocontext\", true);\n                if (!t.parentElement && t.getRootNode)\n                    t = t.getRootNode().host;\n                else\n                    t = t.parentElement;\n            }\n        }\n        text.focus({ preventScroll: true });\n        if (isTransformed) {\n            ancestors.forEach(function (p) {\n                p.removeAttribute(\"ace_nocontext\");\n            });\n        }\n        setTimeout(function () {\n            text.style.position = \"\";\n            if (text.style.top == \"0px\")\n                text.style.top = top;\n        }, 0);\n    };\n    this.blur = function () {\n        text.blur();\n    };\n    this.isFocused = function () {\n        return isFocused;\n    };\n    host.on(\"beforeEndOperation\", function () {\n        var curOp = host.curOp;\n        var commandName = curOp && curOp.command && curOp.command.name;\n        if (commandName == \"insertstring\")\n            return;\n        var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n        if (inComposition && isUserAction) {\n            lastValue = text.value = \"\";\n            onCompositionEnd();\n        }\n        resetSelection();\n    });\n    var resetSelection = isIOS\n        ? function (value) {\n            if (!isFocused || (copied && !value) || sendingText)\n                return;\n            if (!value)\n                value = \"\";\n            var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n            if (newValue != text.value)\n                text.value = lastValue = newValue;\n            var selectionStart = 4;\n            var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n            if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n                text.setSelectionRange(selectionStart, selectionEnd);\n            }\n            lastSelectionStart = selectionStart;\n            lastSelectionEnd = selectionEnd;\n        }\n        : function () {\n            if (inComposition || sendingText)\n                return;\n            if (!isFocused && !afterContextMenu)\n                return;\n            inComposition = true;\n            var selectionStart = 0;\n            var selectionEnd = 0;\n            var line = \"\";\n            if (host.session) {\n                var selection = host.selection;\n                var range = selection.getRange();\n                var row = selection.cursor.row;\n                selectionStart = range.start.column;\n                selectionEnd = range.end.column;\n                line = host.session.getLine(row);\n                if (range.start.row != row) {\n                    var prevLine = host.session.getLine(row - 1);\n                    selectionStart = range.start.row < row - 1 ? 0 : selectionStart;\n                    selectionEnd += prevLine.length + 1;\n                    line = prevLine + \"\\n\" + line;\n                }\n                else if (range.end.row != row) {\n                    var nextLine = host.session.getLine(row + 1);\n                    selectionEnd = range.end.row > row + 1 ? nextLine.length : selectionEnd;\n                    selectionEnd += line.length + 1;\n                    line = line + \"\\n\" + nextLine;\n                }\n                else if (isMobile && row > 0) {\n                    line = \"\\n\" + line;\n                    selectionEnd += 1;\n                    selectionStart += 1;\n                }\n                if (line.length > MAX_LINE_LENGTH) {\n                    if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n                        line = line.slice(0, MAX_LINE_LENGTH);\n                    }\n                    else {\n                        line = \"\\n\";\n                        if (selectionStart == selectionEnd) {\n                            selectionStart = selectionEnd = 0;\n                        }\n                        else {\n                            selectionStart = 0;\n                            selectionEnd = 1;\n                        }\n                    }\n                }\n            }\n            var newValue = line + \"\\n\\n\";\n            if (newValue != lastValue) {\n                text.value = lastValue = newValue;\n                lastSelectionStart = lastSelectionEnd = newValue.length;\n            }\n            if (afterContextMenu) {\n                lastSelectionStart = text.selectionStart;\n                lastSelectionEnd = text.selectionEnd;\n            }\n            if (lastSelectionEnd != selectionEnd\n                || lastSelectionStart != selectionStart\n                || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n            ) {\n                try {\n                    text.setSelectionRange(selectionStart, selectionEnd);\n                    lastSelectionStart = selectionStart;\n                    lastSelectionEnd = selectionEnd;\n                }\n                catch (e) { }\n            }\n            inComposition = false;\n        };\n    this.resetSelection = resetSelection;\n    if (isFocused)\n        host.onFocus();\n    var isAllSelected = function (text) {\n        return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n            && text.value === lastValue && lastValue\n            && text.selectionEnd !== lastSelectionEnd;\n    };\n    var onSelect = function (e) {\n        if (inComposition)\n            return;\n        if (copied) {\n            copied = false;\n        }\n        else if (isAllSelected(text)) {\n            host.selectAll();\n            resetSelection();\n        }\n        else if (isMobile && text.selectionStart != lastSelectionStart) {\n            resetSelection();\n        }\n    };\n    var inputHandler = null;\n    this.setInputHandler = function (cb) { inputHandler = cb; };\n    this.getInputHandler = function () { return inputHandler; };\n    var afterContextMenu = false;\n    var sendText = function (value, fromInput) {\n        if (afterContextMenu)\n            afterContextMenu = false;\n        if (pasted) {\n            resetSelection();\n            if (value)\n                host.onPaste(value);\n            pasted = false;\n            return \"\";\n        }\n        else {\n            var selectionStart = text.selectionStart;\n            var selectionEnd = text.selectionEnd;\n            var extendLeft = lastSelectionStart;\n            var extendRight = lastValue.length - lastSelectionEnd;\n            var inserted = value;\n            var restoreStart = value.length - selectionStart;\n            var restoreEnd = value.length - selectionEnd;\n            var i = 0;\n            while (extendLeft > 0 && lastValue[i] == value[i]) {\n                i++;\n                extendLeft--;\n            }\n            inserted = inserted.slice(i);\n            i = 1;\n            while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n                i++;\n                extendRight--;\n            }\n            restoreStart -= i - 1;\n            restoreEnd -= i - 1;\n            var endIndex = inserted.length - i + 1;\n            if (endIndex < 0) {\n                extendLeft = -endIndex;\n                endIndex = 0;\n            }\n            inserted = inserted.slice(0, endIndex);\n            if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n                return \"\";\n            sendingText = true;\n            var shouldReset = false;\n            if (useragent.isAndroid && inserted == \". \") {\n                inserted = \"  \";\n                shouldReset = true;\n            }\n            if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n                host.onTextInput(inserted);\n            }\n            else {\n                host.onTextInput(inserted, {\n                    extendLeft: extendLeft,\n                    extendRight: extendRight,\n                    restoreStart: restoreStart,\n                    restoreEnd: restoreEnd\n                });\n            }\n            sendingText = false;\n            lastValue = value;\n            lastSelectionStart = selectionStart;\n            lastSelectionEnd = selectionEnd;\n            lastRestoreEnd = restoreEnd;\n            return shouldReset ? \"\\n\" : inserted;\n        }\n    };\n    var onInput = function (e) {\n        if (inComposition)\n            return onCompositionUpdate();\n        if (e && e.inputType) {\n            if (e.inputType == \"historyUndo\")\n                return host.execCommand(\"undo\");\n            if (e.inputType == \"historyRedo\")\n                return host.execCommand(\"redo\");\n        }\n        var data = text.value;\n        var inserted = sendText(data, true);\n        if (data.length > MAX_LINE_LENGTH + 100\n            || valueResetRegex.test(inserted)\n            || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) {\n            resetSelection();\n        }\n    };\n    var handleClipboardData = function (e, data, forceIEMime) {\n        var clipboardData = e.clipboardData || window.clipboardData;\n        if (!clipboardData || BROKEN_SETDATA)\n            return;\n        var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n        try {\n            if (data) {\n                return clipboardData.setData(mime, data) !== false;\n            }\n            else {\n                return clipboardData.getData(mime);\n            }\n        }\n        catch (e) {\n            if (!forceIEMime)\n                return handleClipboardData(e, data, true);\n        }\n    };\n    var doCopy = function (e, isCut) {\n        var data = host.getCopyText();\n        if (!data)\n            return event.preventDefault(e);\n        if (handleClipboardData(e, data)) {\n            if (isIOS) {\n                resetSelection(data);\n                copied = data;\n                setTimeout(function () {\n                    copied = false;\n                }, 10);\n            }\n            isCut ? host.onCut() : host.onCopy();\n            event.preventDefault(e);\n        }\n        else {\n            copied = true;\n            text.value = data;\n            text.select();\n            setTimeout(function () {\n                copied = false;\n                resetSelection();\n                isCut ? host.onCut() : host.onCopy();\n            });\n        }\n    };\n    var onCut = function (e) {\n        doCopy(e, true);\n    };\n    var onCopy = function (e) {\n        doCopy(e, false);\n    };\n    var onPaste = function (e) {\n        var data = handleClipboardData(e);\n        if (clipboard.pasteCancelled())\n            return;\n        if (typeof data == \"string\") {\n            if (data)\n                host.onPaste(data, e);\n            if (useragent.isIE)\n                setTimeout(resetSelection);\n            event.preventDefault(e);\n        }\n        else {\n            text.value = \"\";\n            pasted = true;\n        }\n    };\n    event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n    event.addListener(text, \"select\", onSelect, host);\n    event.addListener(text, \"input\", onInput, host);\n    event.addListener(text, \"cut\", onCut, host);\n    event.addListener(text, \"copy\", onCopy, host);\n    event.addListener(text, \"paste\", onPaste, host);\n    if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n        event.addListener(parentNode, \"keydown\", function (e) {\n            if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n                return;\n            switch (e.keyCode) {\n                case 67:\n                    onCopy(e);\n                    break;\n                case 86:\n                    onPaste(e);\n                    break;\n                case 88:\n                    onCut(e);\n                    break;\n            }\n        }, host);\n    }\n    var onCompositionStart = function (e) {\n        if (inComposition || !host.onCompositionStart || host.$readOnly)\n            return;\n        inComposition = {};\n        if (commandMode)\n            return;\n        if (e.data)\n            inComposition.useTextareaForIME = false;\n        setTimeout(onCompositionUpdate, 0);\n        host._signal(\"compositionStart\");\n        host.on(\"mousedown\", cancelComposition);\n        var range = host.getSelectionRange();\n        range.end.row = range.start.row;\n        range.end.column = range.start.column;\n        inComposition.markerRange = range;\n        inComposition.selectionStart = lastSelectionStart;\n        host.onCompositionStart(inComposition);\n        if (inComposition.useTextareaForIME) {\n            lastValue = text.value = \"\";\n            lastSelectionStart = 0;\n            lastSelectionEnd = 0;\n        }\n        else {\n            if (text.msGetInputContext)\n                inComposition.context = text.msGetInputContext();\n            if (text.getInputContext)\n                inComposition.context = text.getInputContext();\n        }\n    };\n    var onCompositionUpdate = function () {\n        if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n            return;\n        if (commandMode)\n            return cancelComposition();\n        if (inComposition.useTextareaForIME) {\n            host.onCompositionUpdate(text.value);\n        }\n        else {\n            var data = text.value;\n            sendText(data);\n            if (inComposition.markerRange) {\n                if (inComposition.context) {\n                    inComposition.markerRange.start.column = inComposition.selectionStart\n                        = inComposition.context.compositionStartOffset;\n                }\n                inComposition.markerRange.end.column = inComposition.markerRange.start.column\n                    + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n            }\n        }\n    };\n    var onCompositionEnd = function (e) {\n        if (!host.onCompositionEnd || host.$readOnly)\n            return;\n        inComposition = false;\n        host.onCompositionEnd();\n        host.off(\"mousedown\", cancelComposition);\n        if (e)\n            onInput();\n    };\n    function cancelComposition() {\n        ignoreFocusEvents = true;\n        text.blur();\n        text.focus();\n        ignoreFocusEvents = false;\n    }\n    var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n    function onKeyup(e) {\n        if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n            if (!inComposition)\n                lastValue = text.value;\n            lastSelectionStart = lastSelectionEnd = -1;\n            resetSelection();\n        }\n        syncComposition();\n    }\n    event.addListener(text, \"compositionstart\", onCompositionStart, host);\n    event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n    event.addListener(text, \"keyup\", onKeyup, host);\n    event.addListener(text, \"keydown\", syncComposition, host);\n    event.addListener(text, \"compositionend\", onCompositionEnd, host);\n    this.getElement = function () {\n        return text;\n    };\n    this.setCommandMode = function (value) {\n        commandMode = value;\n        text.readOnly = false;\n    };\n    this.setReadOnly = function (readOnly) {\n        if (!commandMode)\n            text.readOnly = readOnly;\n    };\n    this.setCopyWithEmptySelection = function (value) {\n    };\n    this.onContextMenu = function (e) {\n        afterContextMenu = true;\n        resetSelection();\n        host._emit(\"nativecontextmenu\", { target: host, domEvent: e });\n        this.moveToMouse(e, true);\n    };\n    this.moveToMouse = function (e, bringToFront) {\n        if (!tempStyle)\n            tempStyle = text.style.cssText;\n        text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n            + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n            + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n        var rect = host.container.getBoundingClientRect();\n        var style = dom.computedStyle(host.container);\n        var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n        var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n        var maxTop = rect.bottom - top - text.clientHeight - 2;\n        var move = function (e) {\n            dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n        };\n        move(e);\n        if (e.type != \"mousedown\")\n            return;\n        host.renderer.$isMousePressed = true;\n        clearTimeout(closeTimeout);\n        if (useragent.isWin)\n            event.capture(host.container, move, onContextMenuClose);\n    };\n    this.onContextMenuClose = onContextMenuClose;\n    var closeTimeout;\n    function onContextMenuClose() {\n        clearTimeout(closeTimeout);\n        closeTimeout = setTimeout(function () {\n            if (tempStyle) {\n                text.style.cssText = tempStyle;\n                tempStyle = '';\n            }\n            host.renderer.$isMousePressed = false;\n            if (host.renderer.$keepTextAreaAtCursor)\n                host.renderer.$moveTextAreaToCursor();\n        }, 0);\n    }\n    var onContextMenu = function (e) {\n        host.textInput.onContextMenu(e);\n        onContextMenuClose();\n    };\n    event.addListener(text, \"mouseup\", onContextMenu, host);\n    event.addListener(text, \"mousedown\", function (e) {\n        e.preventDefault();\n        onContextMenuClose();\n    }, host);\n    event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n    event.addListener(text, \"contextmenu\", onContextMenu, host);\n    if (isIOS)\n        addIosSelectionHandler(parentNode, host, text);\n    function addIosSelectionHandler(parentNode, host, text) {\n        var typingResetTimeout = null;\n        var typing = false;\n        text.addEventListener(\"keydown\", function (e) {\n            if (typingResetTimeout)\n                clearTimeout(typingResetTimeout);\n            typing = true;\n        }, true);\n        text.addEventListener(\"keyup\", function (e) {\n            typingResetTimeout = setTimeout(function () {\n                typing = false;\n            }, 100);\n        }, true);\n        var detectArrowKeys = function (e) {\n            if (document.activeElement !== text)\n                return;\n            if (typing || inComposition || host.$mouseHandler.isMousePressed)\n                return;\n            if (copied) {\n                return;\n            }\n            var selectionStart = text.selectionStart;\n            var selectionEnd = text.selectionEnd;\n            var key = null;\n            var modifier = 0;\n            if (selectionStart == 0) {\n                key = KEYS.up;\n            }\n            else if (selectionStart == 1) {\n                key = KEYS.home;\n            }\n            else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n                key = KEYS.end;\n            }\n            else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n                key = KEYS.left;\n                modifier = MODS.option;\n            }\n            else if (selectionStart < lastSelectionStart\n                || (selectionStart == lastSelectionStart\n                    && lastSelectionEnd != lastSelectionStart\n                    && selectionStart == selectionEnd)) {\n                key = KEYS.left;\n            }\n            else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n                key = KEYS.down;\n            }\n            else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n                key = KEYS.right;\n                modifier = MODS.option;\n            }\n            else if (selectionEnd > lastSelectionEnd\n                || (selectionEnd == lastSelectionEnd\n                    && lastSelectionEnd != lastSelectionStart\n                    && selectionStart == selectionEnd)) {\n                key = KEYS.right;\n            }\n            if (selectionStart !== selectionEnd)\n                modifier |= MODS.shift;\n            if (key) {\n                var result = host.onCommandKey({}, modifier, key);\n                if (!result && host.commands) {\n                    key = KEYS.keyCodeToString(key);\n                    var command = host.commands.findKeyCommand(modifier, key);\n                    if (command)\n                        host.execCommand(command);\n                }\n                lastSelectionStart = selectionStart;\n                lastSelectionEnd = selectionEnd;\n                resetSelection(\"\");\n            }\n        };\n        document.addEventListener(\"selectionchange\", detectArrowKeys);\n        host.on(\"destroy\", function () {\n            document.removeEventListener(\"selectionchange\", detectArrowKeys);\n        });\n    }\n    this.destroy = function () {\n        if (text.parentElement)\n            text.parentElement.removeChild(text);\n    };\n};\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function (_isMobile, _isIOS) {\n    isMobile = _isMobile;\n    isIOS = _isIOS;\n};\n\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar useragent = require(\"../lib/useragent\");\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\nfunction DefaultHandlers(mouseHandler) {\n    mouseHandler.$clickSelection = null;\n    var editor = mouseHandler.editor;\n    editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n    editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n    editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n    editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n    editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n    var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n        \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n    exports.forEach(function (x) {\n        mouseHandler[x] = this[x];\n    }, this);\n    mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n    mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n}\n(function () {\n    this.onMouseDown = function (ev) {\n        var inSelection = ev.inSelection();\n        var pos = ev.getDocumentPosition();\n        this.mousedownEvent = ev;\n        var editor = this.editor;\n        var button = ev.getButton();\n        if (button !== 0) {\n            var selectionRange = editor.getSelectionRange();\n            var selectionEmpty = selectionRange.isEmpty();\n            if (selectionEmpty || button == 1)\n                editor.selection.moveToPosition(pos);\n            if (button == 2) {\n                editor.textInput.onContextMenu(ev.domEvent);\n                if (!useragent.isMozilla)\n                    ev.preventDefault();\n            }\n            return;\n        }\n        this.mousedownEvent.time = Date.now();\n        if (inSelection && !editor.isFocused()) {\n            editor.focus();\n            if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n                this.setState(\"focusWait\");\n                this.captureMouse(ev);\n                return;\n            }\n        }\n        this.captureMouse(ev);\n        this.startSelect(pos, ev.domEvent._clicks > 1);\n        return ev.preventDefault();\n    };\n    this.startSelect = function (pos, waitForClickSelection) {\n        pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n        var editor = this.editor;\n        if (!this.mousedownEvent)\n            return;\n        if (this.mousedownEvent.getShiftKey())\n            editor.selection.selectToPosition(pos);\n        else if (!waitForClickSelection)\n            editor.selection.moveToPosition(pos);\n        if (!waitForClickSelection)\n            this.select();\n        if (editor.renderer.scroller.setCapture) {\n            editor.renderer.scroller.setCapture();\n        }\n        editor.setStyle(\"ace_selecting\");\n        this.setState(\"select\");\n    };\n    this.select = function () {\n        var anchor, editor = this.editor;\n        var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n        if (this.$clickSelection) {\n            var cmp = this.$clickSelection.comparePoint(cursor);\n            if (cmp == -1) {\n                anchor = this.$clickSelection.end;\n            }\n            else if (cmp == 1) {\n                anchor = this.$clickSelection.start;\n            }\n            else {\n                var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n                cursor = orientedRange.cursor;\n                anchor = orientedRange.anchor;\n            }\n            editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n        }\n        editor.selection.selectToPosition(cursor);\n        editor.renderer.scrollCursorIntoView();\n    };\n    this.extendSelectionBy = function (unitName) {\n        var anchor, editor = this.editor;\n        var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n        var range = editor.selection[unitName](cursor.row, cursor.column);\n        if (this.$clickSelection) {\n            var cmpStart = this.$clickSelection.comparePoint(range.start);\n            var cmpEnd = this.$clickSelection.comparePoint(range.end);\n            if (cmpStart == -1 && cmpEnd <= 0) {\n                anchor = this.$clickSelection.end;\n                if (range.end.row != cursor.row || range.end.column != cursor.column)\n                    cursor = range.start;\n            }\n            else if (cmpEnd == 1 && cmpStart >= 0) {\n                anchor = this.$clickSelection.start;\n                if (range.start.row != cursor.row || range.start.column != cursor.column)\n                    cursor = range.end;\n            }\n            else if (cmpStart == -1 && cmpEnd == 1) {\n                cursor = range.end;\n                anchor = range.start;\n            }\n            else {\n                var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n                cursor = orientedRange.cursor;\n                anchor = orientedRange.anchor;\n            }\n            editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n        }\n        editor.selection.selectToPosition(cursor);\n        editor.renderer.scrollCursorIntoView();\n    };\n    this.selectEnd =\n        this.selectAllEnd =\n            this.selectByWordsEnd =\n                this.selectByLinesEnd = function () {\n                    this.$clickSelection = null;\n                    this.editor.unsetStyle(\"ace_selecting\");\n                    if (this.editor.renderer.scroller.releaseCapture) {\n                        this.editor.renderer.scroller.releaseCapture();\n                    }\n                };\n    this.focusWait = function () {\n        var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n        var time = Date.now();\n        if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n            this.startSelect(this.mousedownEvent.getDocumentPosition());\n    };\n    this.onDoubleClick = function (ev) {\n        var pos = ev.getDocumentPosition();\n        var editor = this.editor;\n        var session = editor.session;\n        var range = session.getBracketRange(pos);\n        if (range) {\n            if (range.isEmpty()) {\n                range.start.column--;\n                range.end.column++;\n            }\n            this.setState(\"select\");\n        }\n        else {\n            range = editor.selection.getWordRange(pos.row, pos.column);\n            this.setState(\"selectByWords\");\n        }\n        this.$clickSelection = range;\n        this.select();\n    };\n    this.onTripleClick = function (ev) {\n        var pos = ev.getDocumentPosition();\n        var editor = this.editor;\n        this.setState(\"selectByLines\");\n        var range = editor.getSelectionRange();\n        if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n            this.$clickSelection = editor.selection.getLineRange(range.start.row);\n            this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n        }\n        else {\n            this.$clickSelection = editor.selection.getLineRange(pos.row);\n        }\n        this.select();\n    };\n    this.onQuadClick = function (ev) {\n        var editor = this.editor;\n        editor.selectAll();\n        this.$clickSelection = editor.getSelectionRange();\n        this.setState(\"selectAll\");\n    };\n    this.onMouseWheel = function (ev) {\n        if (ev.getAccelKey())\n            return;\n        if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n            ev.wheelX = ev.wheelY;\n            ev.wheelY = 0;\n        }\n        var editor = this.editor;\n        if (!this.$lastScroll)\n            this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n        var prevScroll = this.$lastScroll;\n        var t = ev.domEvent.timeStamp;\n        var dt = t - prevScroll.t;\n        var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n        var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n        if (dt < SCROLL_COOLDOWN_T) {\n            vx = (vx + prevScroll.vx) / 2;\n            vy = (vy + prevScroll.vy) / 2;\n        }\n        var direction = Math.abs(vx / vy);\n        var canScroll = false;\n        if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n            canScroll = true;\n        if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n            canScroll = true;\n        if (canScroll) {\n            prevScroll.allowed = t;\n        }\n        else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n            var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n                && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n            if (isSlower) {\n                canScroll = true;\n                prevScroll.allowed = t;\n            }\n            else {\n                prevScroll.allowed = 0;\n            }\n        }\n        prevScroll.t = t;\n        prevScroll.vx = vx;\n        prevScroll.vy = vy;\n        if (canScroll) {\n            editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n            return ev.stop();\n        }\n    };\n}).call(DefaultHandlers.prototype);\nexports.DefaultHandlers = DefaultHandlers;\nfunction calcDistance(ax, ay, bx, by) {\n    return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nfunction calcRangeOrientation(range, cursor) {\n    if (range.start.row == range.end.row)\n        var cmp = 2 * cursor.column - range.start.column - range.end.column;\n    else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n        var cmp = cursor.column - 4;\n    else\n        var cmp = 2 * cursor.row - range.start.row - range.end.row;\n    if (cmp < 0)\n        return { cursor: range.start, anchor: range.end };\n    else\n        return { cursor: range.end, anchor: range.start };\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar CLASSNAME = \"ace_tooltip\";\nfunction Tooltip(parentNode) {\n    this.isOpen = false;\n    this.$element = null;\n    this.$parentNode = parentNode;\n}\n(function () {\n    this.$init = function () {\n        this.$element = dom.createElement(\"div\");\n        this.$element.className = CLASSNAME;\n        this.$element.style.display = \"none\";\n        this.$parentNode.appendChild(this.$element);\n        return this.$element;\n    };\n    this.getElement = function () {\n        return this.$element || this.$init();\n    };\n    this.setText = function (text) {\n        this.getElement().textContent = text;\n    };\n    this.setHtml = function (html) {\n        this.getElement().innerHTML = html;\n    };\n    this.setPosition = function (x, y) {\n        this.getElement().style.left = x + \"px\";\n        this.getElement().style.top = y + \"px\";\n    };\n    this.setClassName = function (className) {\n        dom.addCssClass(this.getElement(), className);\n    };\n    this.show = function (text, x, y) {\n        if (text != null)\n            this.setText(text);\n        if (x != null && y != null)\n            this.setPosition(x, y);\n        if (!this.isOpen) {\n            this.getElement().style.display = \"block\";\n            this.isOpen = true;\n        }\n    };\n    this.hide = function () {\n        if (this.isOpen) {\n            this.getElement().style.display = \"none\";\n            this.getElement().className = CLASSNAME;\n            this.isOpen = false;\n        }\n    };\n    this.getHeight = function () {\n        return this.getElement().offsetHeight;\n    };\n    this.getWidth = function () {\n        return this.getElement().offsetWidth;\n    };\n    this.destroy = function () {\n        this.isOpen = false;\n        if (this.$element && this.$element.parentNode) {\n            this.$element.parentNode.removeChild(this.$element);\n        }\n    };\n}).call(Tooltip.prototype);\nexports.Tooltip = Tooltip;\n\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\nfunction GutterHandler(mouseHandler) {\n    var editor = mouseHandler.editor;\n    var gutter = editor.renderer.$gutterLayer;\n    var tooltip = new GutterTooltip(editor.container);\n    mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function (e) {\n        if (!editor.isFocused() || e.getButton() != 0)\n            return;\n        var gutterRegion = gutter.getRegion(e);\n        if (gutterRegion == \"foldWidgets\")\n            return;\n        var row = e.getDocumentPosition().row;\n        var selection = editor.session.selection;\n        if (e.getShiftKey())\n            selection.selectTo(row, 0);\n        else {\n            if (e.domEvent.detail == 2) {\n                editor.selectAll();\n                return e.preventDefault();\n            }\n            mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n        }\n        mouseHandler.setState(\"selectByLines\");\n        mouseHandler.captureMouse(e);\n        return e.preventDefault();\n    });\n    var tooltipTimeout, mouseEvent, tooltipAnnotation;\n    function showTooltip() {\n        var row = mouseEvent.getDocumentPosition().row;\n        var annotation = gutter.$annotations[row];\n        if (!annotation)\n            return hideTooltip();\n        var maxRow = editor.session.getLength();\n        if (row == maxRow) {\n            var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n            var pos = mouseEvent.$pos;\n            if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n                return hideTooltip();\n        }\n        if (tooltipAnnotation == annotation)\n            return;\n        tooltipAnnotation = annotation.text.join(\"<br/>\");\n        tooltip.setHtml(tooltipAnnotation);\n        var annotationClassName = annotation.className;\n        if (annotationClassName) {\n            tooltip.setClassName(annotationClassName.trim());\n        }\n        tooltip.show();\n        editor._signal(\"showGutterTooltip\", tooltip);\n        editor.on(\"mousewheel\", hideTooltip);\n        if (mouseHandler.$tooltipFollowsMouse) {\n            moveTooltip(mouseEvent);\n        }\n        else {\n            var gutterElement = mouseEvent.domEvent.target;\n            var rect = gutterElement.getBoundingClientRect();\n            var style = tooltip.getElement().style;\n            style.left = rect.right + \"px\";\n            style.top = rect.bottom + \"px\";\n        }\n    }\n    function hideTooltip() {\n        if (tooltipTimeout)\n            tooltipTimeout = clearTimeout(tooltipTimeout);\n        if (tooltipAnnotation) {\n            tooltip.hide();\n            tooltipAnnotation = null;\n            editor._signal(\"hideGutterTooltip\", tooltip);\n            editor.off(\"mousewheel\", hideTooltip);\n        }\n    }\n    function moveTooltip(e) {\n        tooltip.setPosition(e.x, e.y);\n    }\n    mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function (e) {\n        var target = e.domEvent.target || e.domEvent.srcElement;\n        if (dom.hasCssClass(target, \"ace_fold-widget\"))\n            return hideTooltip();\n        if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\n            moveTooltip(e);\n        mouseEvent = e;\n        if (tooltipTimeout)\n            return;\n        tooltipTimeout = setTimeout(function () {\n            tooltipTimeout = null;\n            if (mouseEvent && !mouseHandler.isMousePressed)\n                showTooltip();\n            else\n                hideTooltip();\n        }, 50);\n    });\n    event.addListener(editor.renderer.$gutter, \"mouseout\", function (e) {\n        mouseEvent = null;\n        if (!tooltipAnnotation || tooltipTimeout)\n            return;\n        tooltipTimeout = setTimeout(function () {\n            tooltipTimeout = null;\n            hideTooltip();\n        }, 50);\n    }, editor);\n    editor.on(\"changeSession\", hideTooltip);\n}\nfunction GutterTooltip(parentNode) {\n    Tooltip.call(this, parentNode);\n}\noop.inherits(GutterTooltip, Tooltip);\n(function () {\n    this.setPosition = function (x, y) {\n        var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n        var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n        var width = this.getWidth();\n        var height = this.getHeight();\n        x += 15;\n        y += 15;\n        if (x + width > windowWidth) {\n            x -= (x + width) - windowWidth;\n        }\n        if (y + height > windowHeight) {\n            y -= 20 + height;\n        }\n        Tooltip.prototype.setPosition.call(this, x, y);\n    };\n}).call(GutterTooltip.prototype);\nexports.GutterHandler = GutterHandler;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = exports.MouseEvent = function (domEvent, editor) {\n    this.domEvent = domEvent;\n    this.editor = editor;\n    this.x = this.clientX = domEvent.clientX;\n    this.y = this.clientY = domEvent.clientY;\n    this.$pos = null;\n    this.$inSelection = null;\n    this.propagationStopped = false;\n    this.defaultPrevented = false;\n};\n(function () {\n    this.stopPropagation = function () {\n        event.stopPropagation(this.domEvent);\n        this.propagationStopped = true;\n    };\n    this.preventDefault = function () {\n        event.preventDefault(this.domEvent);\n        this.defaultPrevented = true;\n    };\n    this.stop = function () {\n        this.stopPropagation();\n        this.preventDefault();\n    };\n    this.getDocumentPosition = function () {\n        if (this.$pos)\n            return this.$pos;\n        this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n        return this.$pos;\n    };\n    this.inSelection = function () {\n        if (this.$inSelection !== null)\n            return this.$inSelection;\n        var editor = this.editor;\n        var selectionRange = editor.getSelectionRange();\n        if (selectionRange.isEmpty())\n            this.$inSelection = false;\n        else {\n            var pos = this.getDocumentPosition();\n            this.$inSelection = selectionRange.contains(pos.row, pos.column);\n        }\n        return this.$inSelection;\n    };\n    this.getButton = function () {\n        return event.getButton(this.domEvent);\n    };\n    this.getShiftKey = function () {\n        return this.domEvent.shiftKey;\n    };\n    this.getAccelKey = useragent.isMac\n        ? function () { return this.domEvent.metaKey; }\n        : function () { return this.domEvent.ctrlKey; };\n}).call(MouseEvent.prototype);\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\nfunction DragdropHandler(mouseHandler) {\n    var editor = mouseHandler.editor;\n    var dragImage = dom.createElement(\"div\");\n    dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n    dragImage.textContent = \"\\xa0\";\n    var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n    exports.forEach(function (x) {\n        mouseHandler[x] = this[x];\n    }, this);\n    editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n    var mouseTarget = editor.container;\n    var dragSelectionMarker, x, y;\n    var timerId, range;\n    var dragCursor, counter = 0;\n    var dragOperation;\n    var isInternal;\n    var autoScrollStartTime;\n    var cursorMovedTime;\n    var cursorPointOnCaretMoved;\n    this.onDragStart = function (e) {\n        if (this.cancelDrag || !mouseTarget.draggable) {\n            var self = this;\n            setTimeout(function () {\n                self.startSelect();\n                self.captureMouse(e);\n            }, 0);\n            return e.preventDefault();\n        }\n        range = editor.getSelectionRange();\n        var dataTransfer = e.dataTransfer;\n        dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n        editor.container.appendChild(dragImage);\n        dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n        setTimeout(function () {\n            editor.container.removeChild(dragImage);\n        });\n        dataTransfer.clearData();\n        dataTransfer.setData(\"Text\", editor.session.getTextRange());\n        isInternal = true;\n        this.setState(\"drag\");\n    };\n    this.onDragEnd = function (e) {\n        mouseTarget.draggable = false;\n        isInternal = false;\n        this.setState(null);\n        if (!editor.getReadOnly()) {\n            var dropEffect = e.dataTransfer.dropEffect;\n            if (!dragOperation && dropEffect == \"move\")\n                editor.session.remove(editor.getSelectionRange());\n            editor.$resetCursorStyle();\n        }\n        this.editor.unsetStyle(\"ace_dragging\");\n        this.editor.renderer.setCursorStyle(\"\");\n    };\n    this.onDragEnter = function (e) {\n        if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n            return;\n        x = e.clientX;\n        y = e.clientY;\n        if (!dragSelectionMarker)\n            addDragMarker();\n        counter++;\n        e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n        return event.preventDefault(e);\n    };\n    this.onDragOver = function (e) {\n        if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n            return;\n        x = e.clientX;\n        y = e.clientY;\n        if (!dragSelectionMarker) {\n            addDragMarker();\n            counter++;\n        }\n        if (onMouseMoveTimer !== null)\n            onMouseMoveTimer = null;\n        e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n        return event.preventDefault(e);\n    };\n    this.onDragLeave = function (e) {\n        counter--;\n        if (counter <= 0 && dragSelectionMarker) {\n            clearDragMarker();\n            dragOperation = null;\n            return event.preventDefault(e);\n        }\n    };\n    this.onDrop = function (e) {\n        if (!dragCursor)\n            return;\n        var dataTransfer = e.dataTransfer;\n        if (isInternal) {\n            switch (dragOperation) {\n                case \"move\":\n                    if (range.contains(dragCursor.row, dragCursor.column)) {\n                        range = {\n                            start: dragCursor,\n                            end: dragCursor\n                        };\n                    }\n                    else {\n                        range = editor.moveText(range, dragCursor);\n                    }\n                    break;\n                case \"copy\":\n                    range = editor.moveText(range, dragCursor, true);\n                    break;\n            }\n        }\n        else {\n            var dropData = dataTransfer.getData('Text');\n            range = {\n                start: dragCursor,\n                end: editor.session.insert(dragCursor, dropData)\n            };\n            editor.focus();\n            dragOperation = null;\n        }\n        clearDragMarker();\n        return event.preventDefault(e);\n    };\n    event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n    event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n    event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n    event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n    event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n    event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n    function scrollCursorIntoView(cursor, prevCursor) {\n        var now = Date.now();\n        var vMovement = !prevCursor || cursor.row != prevCursor.row;\n        var hMovement = !prevCursor || cursor.column != prevCursor.column;\n        if (!cursorMovedTime || vMovement || hMovement) {\n            editor.moveCursorToPosition(cursor);\n            cursorMovedTime = now;\n            cursorPointOnCaretMoved = { x: x, y: y };\n        }\n        else {\n            var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n            if (distance > SCROLL_CURSOR_HYSTERESIS) {\n                cursorMovedTime = null;\n            }\n            else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n                editor.renderer.scrollCursorIntoView();\n                cursorMovedTime = null;\n            }\n        }\n    }\n    function autoScroll(cursor, prevCursor) {\n        var now = Date.now();\n        var lineHeight = editor.renderer.layerConfig.lineHeight;\n        var characterWidth = editor.renderer.layerConfig.characterWidth;\n        var editorRect = editor.renderer.scroller.getBoundingClientRect();\n        var offsets = {\n            x: {\n                left: x - editorRect.left,\n                right: editorRect.right - x\n            },\n            y: {\n                top: y - editorRect.top,\n                bottom: editorRect.bottom - y\n            }\n        };\n        var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n        var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n        var scrollCursor = { row: cursor.row, column: cursor.column };\n        if (nearestXOffset / characterWidth <= 2) {\n            scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n        }\n        if (nearestYOffset / lineHeight <= 1) {\n            scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n        }\n        var vScroll = cursor.row != scrollCursor.row;\n        var hScroll = cursor.column != scrollCursor.column;\n        var vMovement = !prevCursor || cursor.row != prevCursor.row;\n        if (vScroll || (hScroll && !vMovement)) {\n            if (!autoScrollStartTime)\n                autoScrollStartTime = now;\n            else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n                editor.renderer.scrollCursorIntoView(scrollCursor);\n        }\n        else {\n            autoScrollStartTime = null;\n        }\n    }\n    function onDragInterval() {\n        var prevCursor = dragCursor;\n        dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n        scrollCursorIntoView(dragCursor, prevCursor);\n        autoScroll(dragCursor, prevCursor);\n    }\n    function addDragMarker() {\n        range = editor.selection.toOrientedRange();\n        dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n        editor.clearSelection();\n        if (editor.isFocused())\n            editor.renderer.$cursorLayer.setBlinking(false);\n        clearInterval(timerId);\n        onDragInterval();\n        timerId = setInterval(onDragInterval, 20);\n        counter = 0;\n        event.addListener(document, \"mousemove\", onMouseMove);\n    }\n    function clearDragMarker() {\n        clearInterval(timerId);\n        editor.session.removeMarker(dragSelectionMarker);\n        dragSelectionMarker = null;\n        editor.selection.fromOrientedRange(range);\n        if (editor.isFocused() && !isInternal)\n            editor.$resetCursorStyle();\n        range = null;\n        dragCursor = null;\n        counter = 0;\n        autoScrollStartTime = null;\n        cursorMovedTime = null;\n        event.removeListener(document, \"mousemove\", onMouseMove);\n    }\n    var onMouseMoveTimer = null;\n    function onMouseMove() {\n        if (onMouseMoveTimer == null) {\n            onMouseMoveTimer = setTimeout(function () {\n                if (onMouseMoveTimer != null && dragSelectionMarker)\n                    clearDragMarker();\n            }, 20);\n        }\n    }\n    function canAccept(dataTransfer) {\n        var types = dataTransfer.types;\n        return !types || Array.prototype.some.call(types, function (type) {\n            return type == 'text/plain' || type == 'Text';\n        });\n    }\n    function getDropEffect(e) {\n        var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n        var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n        var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n        var effectAllowed = \"uninitialized\";\n        try {\n            effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n        }\n        catch (e) { }\n        var dropEffect = \"none\";\n        if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n            dropEffect = \"copy\";\n        else if (moveAllowed.indexOf(effectAllowed) >= 0)\n            dropEffect = \"move\";\n        else if (copyAllowed.indexOf(effectAllowed) >= 0)\n            dropEffect = \"copy\";\n        return dropEffect;\n    }\n}\n(function () {\n    this.dragWait = function () {\n        var interval = Date.now() - this.mousedownEvent.time;\n        if (interval > this.editor.getDragDelay())\n            this.startDrag();\n    };\n    this.dragWaitEnd = function () {\n        var target = this.editor.container;\n        target.draggable = false;\n        this.startSelect(this.mousedownEvent.getDocumentPosition());\n        this.selectEnd();\n    };\n    this.dragReadyEnd = function (e) {\n        this.editor.$resetCursorStyle();\n        this.editor.unsetStyle(\"ace_dragging\");\n        this.editor.renderer.setCursorStyle(\"\");\n        this.dragWaitEnd();\n    };\n    this.startDrag = function () {\n        this.cancelDrag = false;\n        var editor = this.editor;\n        var target = editor.container;\n        target.draggable = true;\n        editor.renderer.$cursorLayer.setBlinking(false);\n        editor.setStyle(\"ace_dragging\");\n        var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n        editor.renderer.setCursorStyle(cursorStyle);\n        this.setState(\"dragReady\");\n    };\n    this.onMouseDrag = function (e) {\n        var target = this.editor.container;\n        if (useragent.isIE && this.state == \"dragReady\") {\n            var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n            if (distance > 3)\n                target.dragDrop();\n        }\n        if (this.state === \"dragWait\") {\n            var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n            if (distance > 0) {\n                target.draggable = false;\n                this.startSelect(this.mousedownEvent.getDocumentPosition());\n            }\n        }\n    };\n    this.onMouseDown = function (e) {\n        if (!this.$dragEnabled)\n            return;\n        this.mousedownEvent = e;\n        var editor = this.editor;\n        var inSelection = e.inSelection();\n        var button = e.getButton();\n        var clickCount = e.domEvent.detail || 1;\n        if (clickCount === 1 && button === 0 && inSelection) {\n            if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n                return;\n            this.mousedownEvent.time = Date.now();\n            var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n            if (\"unselectable\" in eventTarget)\n                eventTarget.unselectable = \"on\";\n            if (editor.getDragDelay()) {\n                if (useragent.isWebKit) {\n                    this.cancelDrag = true;\n                    var mouseTarget = editor.container;\n                    mouseTarget.draggable = true;\n                }\n                this.setState(\"dragWait\");\n            }\n            else {\n                this.startDrag();\n            }\n            this.captureMouse(e, this.onMouseDrag.bind(this));\n            e.defaultPrevented = true;\n        }\n    };\n}).call(DragdropHandler.prototype);\nfunction calcDistance(ax, ay, bx, by) {\n    return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\nexports.addTouchListeners = function (el, editor) {\n    var mode = \"scroll\";\n    var startX;\n    var startY;\n    var touchStartT;\n    var lastT;\n    var longTouchTimer;\n    var animationTimer;\n    var animationSteps = 0;\n    var pos;\n    var clickCount = 0;\n    var vX = 0;\n    var vY = 0;\n    var pressed;\n    var contextMenu;\n    function createContextMenu() {\n        var clipboard = window.navigator && window.navigator.clipboard;\n        var isOpen = false;\n        var updateMenu = function () {\n            var selected = editor.getCopyText();\n            var hasUndo = editor.session.getUndoManager().hasUndo();\n            contextMenu.replaceChild(dom.buildDom(isOpen ? [\"span\",\n                !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n                selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n                selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n                clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n                hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n                [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n                [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPallete\" }, \"Pallete\"]\n            ] : [\"span\"]), contextMenu.firstChild);\n        };\n        var handleClick = function (e) {\n            var action = e.target.getAttribute(\"action\");\n            if (action == \"more\" || !isOpen) {\n                isOpen = !isOpen;\n                return updateMenu();\n            }\n            if (action == \"paste\") {\n                clipboard.readText().then(function (text) {\n                    editor.execCommand(action, text);\n                });\n            }\n            else if (action) {\n                if (action == \"cut\" || action == \"copy\") {\n                    if (clipboard)\n                        clipboard.writeText(editor.getCopyText());\n                    else\n                        document.execCommand(\"copy\");\n                }\n                editor.execCommand(action);\n            }\n            contextMenu.firstChild.style.display = \"none\";\n            isOpen = false;\n            if (action != \"openCommandPallete\")\n                editor.focus();\n        };\n        contextMenu = dom.buildDom([\"div\",\n            {\n                class: \"ace_mobile-menu\",\n                ontouchstart: function (e) {\n                    mode = \"menu\";\n                    e.stopPropagation();\n                    e.preventDefault();\n                    editor.textInput.focus();\n                },\n                ontouchend: function (e) {\n                    e.stopPropagation();\n                    e.preventDefault();\n                    handleClick(e);\n                },\n                onclick: handleClick\n            },\n            [\"span\"],\n            [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n        ], editor.container);\n    }\n    function showContextMenu() {\n        if (!contextMenu)\n            createContextMenu();\n        var cursor = editor.selection.cursor;\n        var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n        var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n        var scrollLeft = editor.renderer.scrollLeft;\n        var rect = editor.container.getBoundingClientRect();\n        contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n        if (pagePos.pageX - rect.left < rect.width - 70) {\n            contextMenu.style.left = \"\";\n            contextMenu.style.right = \"10px\";\n        }\n        else {\n            contextMenu.style.right = \"\";\n            contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n        }\n        contextMenu.style.display = \"\";\n        contextMenu.firstChild.style.display = \"none\";\n        editor.on(\"input\", hideContextMenu);\n    }\n    function hideContextMenu(e) {\n        if (contextMenu)\n            contextMenu.style.display = \"none\";\n        editor.off(\"input\", hideContextMenu);\n    }\n    function handleLongTap() {\n        longTouchTimer = null;\n        clearTimeout(longTouchTimer);\n        var range = editor.selection.getRange();\n        var inSelection = range.contains(pos.row, pos.column);\n        if (range.isEmpty() || !inSelection) {\n            editor.selection.moveToPosition(pos);\n            editor.selection.selectWord();\n        }\n        mode = \"wait\";\n        showContextMenu();\n    }\n    function switchToSelectionMode() {\n        longTouchTimer = null;\n        clearTimeout(longTouchTimer);\n        editor.selection.moveToPosition(pos);\n        var range = clickCount >= 2\n            ? editor.selection.getLineRange(pos.row)\n            : editor.session.getBracketRange(pos);\n        if (range && !range.isEmpty()) {\n            editor.selection.setRange(range);\n        }\n        else {\n            editor.selection.selectWord();\n        }\n        mode = \"wait\";\n    }\n    event.addListener(el, \"contextmenu\", function (e) {\n        if (!pressed)\n            return;\n        var textarea = editor.textInput.getElement();\n        textarea.focus();\n    }, editor);\n    event.addListener(el, \"touchstart\", function (e) {\n        var touches = e.touches;\n        if (longTouchTimer || touches.length > 1) {\n            clearTimeout(longTouchTimer);\n            longTouchTimer = null;\n            touchStartT = -1;\n            mode = \"zoom\";\n            return;\n        }\n        pressed = editor.$mouseHandler.isMousePressed = true;\n        var h = editor.renderer.layerConfig.lineHeight;\n        var w = editor.renderer.layerConfig.lineHeight;\n        var t = e.timeStamp;\n        lastT = t;\n        var touchObj = touches[0];\n        var x = touchObj.clientX;\n        var y = touchObj.clientY;\n        if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n            touchStartT = -1;\n        startX = e.clientX = x;\n        startY = e.clientY = y;\n        vX = vY = 0;\n        var ev = new MouseEvent(e, editor);\n        pos = ev.getDocumentPosition();\n        if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n            clickCount++;\n            e.preventDefault();\n            e.button = 0;\n            switchToSelectionMode();\n        }\n        else {\n            clickCount = 0;\n            var cursor = editor.selection.cursor;\n            var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n            var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n            var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n            var rect = editor.renderer.scroller.getBoundingClientRect();\n            var offsetTop = editor.renderer.layerConfig.offset;\n            var offsetLeft = editor.renderer.scrollLeft;\n            var weightedDistance = function (x, y) {\n                x = x / w;\n                y = y / h - 0.75;\n                return x * x + y * y;\n            };\n            if (e.clientX < rect.left) {\n                mode = \"zoom\";\n                return;\n            }\n            var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop);\n            var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop);\n            if (diff1 < 3.5 && diff2 < 3.5)\n                mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n            if (diff2 < 3.5)\n                mode = \"anchor\";\n            else if (diff1 < 3.5)\n                mode = \"cursor\";\n            else\n                mode = \"scroll\";\n            longTouchTimer = setTimeout(handleLongTap, 450);\n        }\n        touchStartT = t;\n    }, editor);\n    event.addListener(el, \"touchend\", function (e) {\n        pressed = editor.$mouseHandler.isMousePressed = false;\n        if (animationTimer)\n            clearInterval(animationTimer);\n        if (mode == \"zoom\") {\n            mode = \"\";\n            animationSteps = 0;\n        }\n        else if (longTouchTimer) {\n            editor.selection.moveToPosition(pos);\n            animationSteps = 0;\n            showContextMenu();\n        }\n        else if (mode == \"scroll\") {\n            animate();\n            hideContextMenu();\n        }\n        else {\n            showContextMenu();\n        }\n        clearTimeout(longTouchTimer);\n        longTouchTimer = null;\n    }, editor);\n    event.addListener(el, \"touchmove\", function (e) {\n        if (longTouchTimer) {\n            clearTimeout(longTouchTimer);\n            longTouchTimer = null;\n        }\n        var touches = e.touches;\n        if (touches.length > 1 || mode == \"zoom\")\n            return;\n        var touchObj = touches[0];\n        var wheelX = startX - touchObj.clientX;\n        var wheelY = startY - touchObj.clientY;\n        if (mode == \"wait\") {\n            if (wheelX * wheelX + wheelY * wheelY > 4)\n                mode = \"cursor\";\n            else\n                return e.preventDefault();\n        }\n        startX = touchObj.clientX;\n        startY = touchObj.clientY;\n        e.clientX = touchObj.clientX;\n        e.clientY = touchObj.clientY;\n        var t = e.timeStamp;\n        var dt = t - lastT;\n        lastT = t;\n        if (mode == \"scroll\") {\n            var mouseEvent = new MouseEvent(e, editor);\n            mouseEvent.speed = 1;\n            mouseEvent.wheelX = wheelX;\n            mouseEvent.wheelY = wheelY;\n            if (10 * Math.abs(wheelX) < Math.abs(wheelY))\n                wheelX = 0;\n            if (10 * Math.abs(wheelY) < Math.abs(wheelX))\n                wheelY = 0;\n            if (dt != 0) {\n                vX = wheelX / dt;\n                vY = wheelY / dt;\n            }\n            editor._emit(\"mousewheel\", mouseEvent);\n            if (!mouseEvent.propagationStopped) {\n                vX = vY = 0;\n            }\n        }\n        else {\n            var ev = new MouseEvent(e, editor);\n            var pos = ev.getDocumentPosition();\n            if (mode == \"cursor\")\n                editor.selection.moveCursorToPosition(pos);\n            else if (mode == \"anchor\")\n                editor.selection.setSelectionAnchor(pos.row, pos.column);\n            editor.renderer.scrollCursorIntoView(pos);\n            e.preventDefault();\n        }\n    }, editor);\n    function animate() {\n        animationSteps += 60;\n        animationTimer = setInterval(function () {\n            if (animationSteps-- <= 0) {\n                clearInterval(animationTimer);\n                animationTimer = null;\n            }\n            if (Math.abs(vX) < 0.01)\n                vX = 0;\n            if (Math.abs(vY) < 0.01)\n                vY = 0;\n            if (animationSteps < 20)\n                vX = 0.9 * vX;\n            if (animationSteps < 20)\n                vY = 0.9 * vY;\n            var oldScrollTop = editor.session.getScrollTop();\n            editor.renderer.scrollBy(10 * vX, 10 * vY);\n            if (oldScrollTop == editor.session.getScrollTop())\n                animationSteps = 0;\n        }, 10);\n    }\n};\n\n});\n\nace.define(\"ace/mouse/mouse_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/mouse/default_handlers\",\"ace/mouse/default_gutter_handler\",\"ace/mouse/mouse_event\",\"ace/mouse/dragdrop_handler\",\"ace/mouse/touch_handler\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar DefaultHandlers = require(\"./default_handlers\").DefaultHandlers;\nvar DefaultGutterHandler = require(\"./default_gutter_handler\").GutterHandler;\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar DragdropHandler = require(\"./dragdrop_handler\").DragdropHandler;\nvar addTouchListeners = require(\"./touch_handler\").addTouchListeners;\nvar config = require(\"../config\");\nvar MouseHandler = function (editor) {\n    var _self = this;\n    this.editor = editor;\n    new DefaultHandlers(this);\n    new DefaultGutterHandler(this);\n    new DragdropHandler(this);\n    var focusEditor = function (e) {\n        var windowBlurred = !document.hasFocus || !document.hasFocus()\n            || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement());\n        if (windowBlurred)\n            window.focus();\n        editor.focus();\n        setTimeout(function () {\n            if (!editor.isFocused())\n                editor.focus();\n        });\n    };\n    var mouseTarget = editor.renderer.getMouseEventTarget();\n    event.addListener(mouseTarget, \"click\", this.onMouseEvent.bind(this, \"click\"), editor);\n    event.addListener(mouseTarget, \"mousemove\", this.onMouseMove.bind(this, \"mousemove\"), editor);\n    event.addMultiMouseDownListener([\n        mouseTarget,\n        editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner,\n        editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner,\n        editor.textInput && editor.textInput.getElement()\n    ].filter(Boolean), [400, 300, 250], this, \"onMouseEvent\", editor);\n    event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, \"mousewheel\"), editor);\n    addTouchListeners(editor.container, editor);\n    var gutterEl = editor.renderer.$gutter;\n    event.addListener(gutterEl, \"mousedown\", this.onMouseEvent.bind(this, \"guttermousedown\"), editor);\n    event.addListener(gutterEl, \"click\", this.onMouseEvent.bind(this, \"gutterclick\"), editor);\n    event.addListener(gutterEl, \"dblclick\", this.onMouseEvent.bind(this, \"gutterdblclick\"), editor);\n    event.addListener(gutterEl, \"mousemove\", this.onMouseEvent.bind(this, \"guttermousemove\"), editor);\n    event.addListener(mouseTarget, \"mousedown\", focusEditor, editor);\n    event.addListener(gutterEl, \"mousedown\", focusEditor, editor);\n    if (useragent.isIE && editor.renderer.scrollBarV) {\n        event.addListener(editor.renderer.scrollBarV.element, \"mousedown\", focusEditor, editor);\n        event.addListener(editor.renderer.scrollBarH.element, \"mousedown\", focusEditor, editor);\n    }\n    editor.on(\"mousemove\", function (e) {\n        if (_self.state || _self.$dragDelay || !_self.$dragEnabled)\n            return;\n        var character = editor.renderer.screenToTextCoordinates(e.x, e.y);\n        var range = editor.session.selection.getRange();\n        var renderer = editor.renderer;\n        if (!range.isEmpty() && range.insideStart(character.row, character.column)) {\n            renderer.setCursorStyle(\"default\");\n        }\n        else {\n            renderer.setCursorStyle(\"\");\n        }\n    }, editor);\n};\n(function () {\n    this.onMouseEvent = function (name, e) {\n        if (!this.editor.session)\n            return;\n        this.editor._emit(name, new MouseEvent(e, this.editor));\n    };\n    this.onMouseMove = function (name, e) {\n        var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove;\n        if (!listeners || !listeners.length)\n            return;\n        this.editor._emit(name, new MouseEvent(e, this.editor));\n    };\n    this.onMouseWheel = function (name, e) {\n        var mouseEvent = new MouseEvent(e, this.editor);\n        mouseEvent.speed = this.$scrollSpeed * 2;\n        mouseEvent.wheelX = e.wheelX;\n        mouseEvent.wheelY = e.wheelY;\n        this.editor._emit(name, mouseEvent);\n    };\n    this.setState = function (state) {\n        this.state = state;\n    };\n    this.captureMouse = function (ev, mouseMoveHandler) {\n        this.x = ev.x;\n        this.y = ev.y;\n        this.isMousePressed = true;\n        var editor = this.editor;\n        var renderer = this.editor.renderer;\n        renderer.$isMousePressed = true;\n        var self = this;\n        var onMouseMove = function (e) {\n            if (!e)\n                return;\n            if (useragent.isWebKit && !e.which && self.releaseMouse)\n                return self.releaseMouse();\n            self.x = e.clientX;\n            self.y = e.clientY;\n            mouseMoveHandler && mouseMoveHandler(e);\n            self.mouseEvent = new MouseEvent(e, self.editor);\n            self.$mouseMoved = true;\n        };\n        var onCaptureEnd = function (e) {\n            editor.off(\"beforeEndOperation\", onOperationEnd);\n            clearInterval(timerId);\n            if (editor.session)\n                onCaptureInterval();\n            self[self.state + \"End\"] && self[self.state + \"End\"](e);\n            self.state = \"\";\n            self.isMousePressed = renderer.$isMousePressed = false;\n            if (renderer.$keepTextAreaAtCursor)\n                renderer.$moveTextAreaToCursor();\n            self.$onCaptureMouseMove = self.releaseMouse = null;\n            e && self.onMouseEvent(\"mouseup\", e);\n            editor.endOperation();\n        };\n        var onCaptureInterval = function () {\n            self[self.state] && self[self.state]();\n            self.$mouseMoved = false;\n        };\n        if (useragent.isOldIE && ev.domEvent.type == \"dblclick\") {\n            return setTimeout(function () { onCaptureEnd(ev); });\n        }\n        var onOperationEnd = function (e) {\n            if (!self.releaseMouse)\n                return;\n            if (editor.curOp.command.name && editor.curOp.selectionChanged) {\n                self[self.state + \"End\"] && self[self.state + \"End\"]();\n                self.state = \"\";\n                self.releaseMouse();\n            }\n        };\n        editor.on(\"beforeEndOperation\", onOperationEnd);\n        editor.startOperation({ command: { name: \"mouse\" } });\n        self.$onCaptureMouseMove = onMouseMove;\n        self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd);\n        var timerId = setInterval(onCaptureInterval, 20);\n    };\n    this.releaseMouse = null;\n    this.cancelContextMenu = function () {\n        var stop = function (e) {\n            if (e && e.domEvent && e.domEvent.type != \"contextmenu\")\n                return;\n            this.editor.off(\"nativecontextmenu\", stop);\n            if (e && e.domEvent)\n                event.stopEvent(e.domEvent);\n        }.bind(this);\n        setTimeout(stop, 10);\n        this.editor.on(\"nativecontextmenu\", stop);\n    };\n    this.destroy = function () {\n        if (this.releaseMouse)\n            this.releaseMouse();\n    };\n}).call(MouseHandler.prototype);\nconfig.defineOptions(MouseHandler.prototype, \"mouseHandler\", {\n    scrollSpeed: { initialValue: 2 },\n    dragDelay: { initialValue: (useragent.isMac ? 150 : 0) },\n    dragEnabled: { initialValue: true },\n    focusTimeout: { initialValue: 0 },\n    tooltipFollowsMouse: { initialValue: true }\n});\nexports.MouseHandler = MouseHandler;\n\n});\n\nace.define(\"ace/mouse/fold_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nfunction FoldHandler(editor) {\n    editor.on(\"click\", function (e) {\n        var position = e.getDocumentPosition();\n        var session = editor.session;\n        var fold = session.getFoldAt(position.row, position.column, 1);\n        if (fold) {\n            if (e.getAccelKey())\n                session.removeFold(fold);\n            else\n                session.expandFold(fold);\n            e.stop();\n        }\n        var target = e.domEvent && e.domEvent.target;\n        if (target && dom.hasCssClass(target, \"ace_inline_button\")) {\n            if (dom.hasCssClass(target, \"ace_toggle_wrap\")) {\n                session.setOption(\"wrap\", !session.getUseWrapMode());\n                editor.renderer.scrollCursorIntoView();\n            }\n        }\n    });\n    editor.on(\"gutterclick\", function (e) {\n        var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n        if (gutterRegion == \"foldWidgets\") {\n            var row = e.getDocumentPosition().row;\n            var session = editor.session;\n            if (session.foldWidgets && session.foldWidgets[row])\n                editor.session.onFoldWidgetClick(row, e);\n            if (!editor.isFocused())\n                editor.focus();\n            e.stop();\n        }\n    });\n    editor.on(\"gutterdblclick\", function (e) {\n        var gutterRegion = editor.renderer.$gutterLayer.getRegion(e);\n        if (gutterRegion == \"foldWidgets\") {\n            var row = e.getDocumentPosition().row;\n            var session = editor.session;\n            var data = session.getParentFoldRangeData(row, true);\n            var range = data.range || data.firstRange;\n            if (range) {\n                row = range.start.row;\n                var fold = session.getFoldAt(row, session.getLine(row).length, 1);\n                if (fold) {\n                    session.removeFold(fold);\n                }\n                else {\n                    session.addFold(\"...\", range);\n                    editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 });\n                }\n            }\n            e.stop();\n        }\n    });\n}\nexports.FoldHandler = FoldHandler;\n\n});\n\nace.define(\"ace/keyboard/keybinding\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar event = require(\"../lib/event\");\nvar KeyBinding = function (editor) {\n    this.$editor = editor;\n    this.$data = { editor: editor };\n    this.$handlers = [];\n    this.setDefaultHandler(editor.commands);\n};\n(function () {\n    this.setDefaultHandler = function (kb) {\n        this.removeKeyboardHandler(this.$defaultHandler);\n        this.$defaultHandler = kb;\n        this.addKeyboardHandler(kb, 0);\n    };\n    this.setKeyboardHandler = function (kb) {\n        var h = this.$handlers;\n        if (h[h.length - 1] == kb)\n            return;\n        while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler)\n            this.removeKeyboardHandler(h[h.length - 1]);\n        this.addKeyboardHandler(kb, 1);\n    };\n    this.addKeyboardHandler = function (kb, pos) {\n        if (!kb)\n            return;\n        if (typeof kb == \"function\" && !kb.handleKeyboard)\n            kb.handleKeyboard = kb;\n        var i = this.$handlers.indexOf(kb);\n        if (i != -1)\n            this.$handlers.splice(i, 1);\n        if (pos == undefined)\n            this.$handlers.push(kb);\n        else\n            this.$handlers.splice(pos, 0, kb);\n        if (i == -1 && kb.attach)\n            kb.attach(this.$editor);\n    };\n    this.removeKeyboardHandler = function (kb) {\n        var i = this.$handlers.indexOf(kb);\n        if (i == -1)\n            return false;\n        this.$handlers.splice(i, 1);\n        kb.detach && kb.detach(this.$editor);\n        return true;\n    };\n    this.getKeyboardHandler = function () {\n        return this.$handlers[this.$handlers.length - 1];\n    };\n    this.getStatusText = function () {\n        var data = this.$data;\n        var editor = data.editor;\n        return this.$handlers.map(function (h) {\n            return h.getStatusText && h.getStatusText(editor, data) || \"\";\n        }).filter(Boolean).join(\" \");\n    };\n    this.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) {\n        var toExecute;\n        var success = false;\n        var commands = this.$editor.commands;\n        for (var i = this.$handlers.length; i--;) {\n            toExecute = this.$handlers[i].handleKeyboard(this.$data, hashId, keyString, keyCode, e);\n            if (!toExecute || !toExecute.command)\n                continue;\n            if (toExecute.command == \"null\") {\n                success = true;\n            }\n            else {\n                success = commands.exec(toExecute.command, this.$editor, toExecute.args, e);\n            }\n            if (success && e && hashId != -1 &&\n                toExecute.passEvent != true && toExecute.command.passEvent != true) {\n                event.stopEvent(e);\n            }\n            if (success)\n                break;\n        }\n        if (!success && hashId == -1) {\n            toExecute = { command: \"insertstring\" };\n            success = commands.exec(\"insertstring\", this.$editor, keyString);\n        }\n        if (success && this.$editor._signal)\n            this.$editor._signal(\"keyboardActivity\", toExecute);\n        return success;\n    };\n    this.onCommandKey = function (e, hashId, keyCode) {\n        var keyString = keyUtil.keyCodeToString(keyCode);\n        return this.$callKeyboardHandlers(hashId, keyString, keyCode, e);\n    };\n    this.onTextInput = function (text) {\n        return this.$callKeyboardHandlers(-1, text);\n    };\n}).call(KeyBinding.prototype);\nexports.KeyBinding = KeyBinding;\n\n});\n\nace.define(\"ace/lib/bidiutil\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar ArabicAlefBetIntervalsBegine = ['\\u0621', '\\u0641'];\nvar ArabicAlefBetIntervalsEnd = ['\\u063A', '\\u064a'];\nvar dir = 0, hiLevel = 0;\nvar lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false;\nvar impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]\n];\nvar impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1]\n];\nvar LTR = 0, RTL = 1;\nvar L = 0;\nvar R = 1;\nvar EN = 2;\nvar AN = 3;\nvar ON = 4;\nvar B = 5;\nvar S = 6;\nvar AL = 7;\nvar WS = 8;\nvar CS = 9;\nvar ES = 10;\nvar ET = 11;\nvar NSM = 12;\nvar LRE = 13;\nvar RLE = 14;\nvar PDF = 15;\nvar LRO = 16;\nvar RLO = 17;\nvar BN = 18;\nvar UnicodeTBL00 = [\n    BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN,\n    BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S,\n    WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS,\n    EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON,\n    ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n    L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON,\n    ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,\n    L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN,\n    BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n    BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN,\n    CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON,\n    ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON\n];\nvar UnicodeTBL20 = [\n    WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R,\n    ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n    ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS,\n    ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n    ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON,\n    ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS\n];\nfunction _computeLevels(chars, levels, len, charTypes) {\n    var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = [];\n    if (!charTypes) {\n        for (i = 0, charTypes = []; i < len; i++) {\n            charTypes[i] = _getCharacterType(chars[i]);\n        }\n    }\n    hiLevel = dir;\n    lastArabic = false;\n    hasUBAT_AL = false;\n    hasUBAT_B = false;\n    hasUBAT_S = false;\n    for (ix = 0; ix < len; ix++) {\n        prevState = newState;\n        classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix);\n        newState = impTab[prevState][newClass];\n        action = newState & 0xF0;\n        newState &= 0x0F;\n        levels[ix] = newLevel = impTab[newState][5];\n        if (action > 0) {\n            if (action == 0x10) {\n                for (i = condPos; i < ix; i++) {\n                    levels[i] = 1;\n                }\n                condPos = -1;\n            }\n            else {\n                condPos = -1;\n            }\n        }\n        cond = impTab[newState][6];\n        if (cond) {\n            if (condPos == -1) {\n                condPos = ix;\n            }\n        }\n        else {\n            if (condPos > -1) {\n                for (i = condPos; i < ix; i++) {\n                    levels[i] = newLevel;\n                }\n                condPos = -1;\n            }\n        }\n        if (charTypes[ix] == B) {\n            levels[ix] = 0;\n        }\n        hiLevel |= newLevel;\n    }\n    if (hasUBAT_S) {\n        for (i = 0; i < len; i++) {\n            if (charTypes[i] == S) {\n                levels[i] = dir;\n                for (var j = i - 1; j >= 0; j--) {\n                    if (charTypes[j] == WS) {\n                        levels[j] = dir;\n                    }\n                    else {\n                        break;\n                    }\n                }\n            }\n        }\n    }\n}\nfunction _invertLevel(lev, levels, _array) {\n    if (hiLevel < lev) {\n        return;\n    }\n    if (lev == 1 && dir == RTL && !hasUBAT_B) {\n        _array.reverse();\n        return;\n    }\n    var len = _array.length, start = 0, end, lo, hi, tmp;\n    while (start < len) {\n        if (levels[start] >= lev) {\n            end = start + 1;\n            while (end < len && levels[end] >= lev) {\n                end++;\n            }\n            for (lo = start, hi = end - 1; lo < hi; lo++, hi--) {\n                tmp = _array[lo];\n                _array[lo] = _array[hi];\n                _array[hi] = tmp;\n            }\n            start = end;\n        }\n        start++;\n    }\n}\nfunction _getCharClass(chars, types, classes, ix) {\n    var cType = types[ix], wType, nType, len, i;\n    switch (cType) {\n        case L:\n        case R:\n            lastArabic = false;\n        case ON:\n        case AN:\n            return cType;\n        case EN:\n            return lastArabic ? AN : EN;\n        case AL:\n            lastArabic = true;\n            hasUBAT_AL = true;\n            return R;\n        case WS:\n            return ON;\n        case CS:\n            if (ix < 1 || (ix + 1) >= types.length ||\n                ((wType = classes[ix - 1]) != EN && wType != AN) ||\n                ((nType = types[ix + 1]) != EN && nType != AN)) {\n                return ON;\n            }\n            if (lastArabic) {\n                nType = AN;\n            }\n            return nType == wType ? nType : ON;\n        case ES:\n            wType = ix > 0 ? classes[ix - 1] : B;\n            if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) {\n                return EN;\n            }\n            return ON;\n        case ET:\n            if (ix > 0 && classes[ix - 1] == EN) {\n                return EN;\n            }\n            if (lastArabic) {\n                return ON;\n            }\n            i = ix + 1;\n            len = types.length;\n            while (i < len && types[i] == ET) {\n                i++;\n            }\n            if (i < len && types[i] == EN) {\n                return EN;\n            }\n            return ON;\n        case NSM:\n            len = types.length;\n            i = ix + 1;\n            while (i < len && types[i] == NSM) {\n                i++;\n            }\n            if (i < len) {\n                var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n                wType = types[i];\n                if (rtlCandidate && (wType == R || wType == AL)) {\n                    return R;\n                }\n            }\n            if (ix < 1 || (wType = types[ix - 1]) == B) {\n                return ON;\n            }\n            return classes[ix - 1];\n        case B:\n            lastArabic = false;\n            hasUBAT_B = true;\n            return dir;\n        case S:\n            hasUBAT_S = true;\n            return ON;\n        case LRE:\n        case RLE:\n        case LRO:\n        case RLO:\n        case PDF:\n            lastArabic = false;\n        case BN:\n            return ON;\n    }\n}\nfunction _getCharacterType(ch) {\n    var uc = ch.charCodeAt(0), hi = uc >> 8;\n    if (hi == 0) {\n        return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n    }\n    else if (hi == 5) {\n        return (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n    }\n    else if (hi == 6) {\n        if (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n            return NSM;\n        else if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n            return AN;\n        else if (uc == 0x066A)\n            return ET;\n        else if (/[\\u06f0-\\u06f9]/.test(ch))\n            return EN;\n        else\n            return AL;\n    }\n    else if (hi == 0x20 && uc <= 0x205F) {\n        return UnicodeTBL20[uc & 0xFF];\n    }\n    else if (hi == 0xFE) {\n        return (uc >= 0xFE70 ? AL : ON);\n    }\n    return ON;\n}\nfunction _isArabicDiacritics(ch) {\n    return (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function (text, textCharTypes, isRtl) {\n    if (text.length < 2)\n        return {};\n    var chars = text.split(\"\"), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = [];\n    dir = isRtl ? RTL : LTR;\n    _computeLevels(chars, levels, chars.length, textCharTypes);\n    for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++)\n        ;\n    _invertLevel(2, levels, logicalFromVisual);\n    _invertLevel(1, levels, logicalFromVisual);\n    for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n        if (textCharTypes[i] === AN) {\n            levels[i] = exports.AN;\n        }\n        else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n            || textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n            levels[i] = exports.ON_R;\n        }\n        else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n            levels[i - 1] = levels[i] = exports.R_H;\n            i++;\n        }\n    }\n    if (chars[chars.length - 1] === exports.DOT)\n        levels[chars.length - 1] = exports.B;\n    if (chars[0] === '\\u202B')\n        levels[0] = exports.RLE;\n    for (var i = 0; i < logicalFromVisual.length; i++) {\n        bidiLevels[i] = levels[logicalFromVisual[i]];\n    }\n    return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels };\n};\nexports.hasBidiCharacters = function (text, textCharTypes) {\n    var ret = false;\n    for (var i = 0; i < text.length; i++) {\n        textCharTypes[i] = _getCharacterType(text.charAt(i));\n        if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n            ret = true;\n    }\n    return ret;\n};\nexports.getVisualFromLogicalIdx = function (logIdx, rowMap) {\n    for (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n        if (rowMap.logicalFromVisual[i] == logIdx)\n            return i;\n    }\n    return 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = function (session) {\n    this.session = session;\n    this.bidiMap = {};\n    this.currentRow = null;\n    this.bidiUtil = bidiUtil;\n    this.charWidths = [];\n    this.EOL = \"\\xAC\";\n    this.showInvisibles = true;\n    this.isRtlDir = false;\n    this.$isRtl = false;\n    this.line = \"\";\n    this.wrapIndent = 0;\n    this.EOF = \"\\xB6\";\n    this.RLE = \"\\u202B\";\n    this.contentWidth = 0;\n    this.fontMetrics = null;\n    this.rtlLineOffset = 0;\n    this.wrapOffset = 0;\n    this.isMoveLeftOperation = false;\n    this.seenBidi = bidiRE.test(session.getValue());\n};\n(function () {\n    this.isBidiRow = function (screenRow, docRow, splitIndex) {\n        if (!this.seenBidi)\n            return false;\n        if (screenRow !== this.currentRow) {\n            this.currentRow = screenRow;\n            this.updateRowLine(docRow, splitIndex);\n            this.updateBidiMap();\n        }\n        return this.bidiMap.bidiLevels;\n    };\n    this.onChange = function (delta) {\n        if (!this.seenBidi) {\n            if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n                this.seenBidi = true;\n                this.currentRow = null;\n            }\n        }\n        else {\n            this.currentRow = null;\n        }\n    };\n    this.getDocumentRow = function () {\n        var docRow = 0;\n        var rowCache = this.session.$screenRowCache;\n        if (rowCache.length) {\n            var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n            if (index >= 0)\n                docRow = this.session.$docRowCache[index];\n        }\n        return docRow;\n    };\n    this.getSplitIndex = function () {\n        var splitIndex = 0;\n        var rowCache = this.session.$screenRowCache;\n        if (rowCache.length) {\n            var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n            while (this.currentRow - splitIndex > 0) {\n                currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n                if (currentIndex !== prevIndex)\n                    break;\n                prevIndex = currentIndex;\n                splitIndex++;\n            }\n        }\n        else {\n            splitIndex = this.currentRow;\n        }\n        return splitIndex;\n    };\n    this.updateRowLine = function (docRow, splitIndex) {\n        if (docRow === undefined)\n            docRow = this.getDocumentRow();\n        var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL;\n        this.wrapIndent = 0;\n        this.line = this.session.getLine(docRow);\n        this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n        if (this.session.$useWrapMode) {\n            var splits = this.session.$wrapData[docRow];\n            if (splits) {\n                if (splitIndex === undefined)\n                    splitIndex = this.getSplitIndex();\n                if (splitIndex > 0 && splits.length) {\n                    this.wrapIndent = splits.indent;\n                    this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n                    this.line = (splitIndex < splits.length) ?\n                        this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n                        this.line.substring(splits[splits.length - 1]);\n                }\n                else {\n                    this.line = this.line.substring(0, splits[splitIndex]);\n                }\n                if (splitIndex == splits.length) {\n                    this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n                }\n            }\n        }\n        else {\n            this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n        }\n        var session = this.session, shift = 0, size;\n        this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function (ch, i) {\n            if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n                size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n                shift += size - 1;\n                return lang.stringRepeat(bidiUtil.DOT, size);\n            }\n            return ch;\n        });\n        if (this.isRtlDir) {\n            this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n            this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n        }\n    };\n    this.updateBidiMap = function () {\n        var textCharTypes = [];\n        if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n            this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n        }\n        else {\n            this.bidiMap = {};\n        }\n    };\n    this.markAsDirty = function () {\n        this.currentRow = null;\n    };\n    this.updateCharacterWidths = function (fontMetrics) {\n        if (this.characterWidth === fontMetrics.$characterSize.width)\n            return;\n        this.fontMetrics = fontMetrics;\n        var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n        var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n        this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n        this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n        this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n        this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n        this.currentRow = null;\n    };\n    this.setShowInvisibles = function (showInvisibles) {\n        this.showInvisibles = showInvisibles;\n        this.currentRow = null;\n    };\n    this.setEolChar = function (eolChar) {\n        this.EOL = eolChar;\n    };\n    this.setContentWidth = function (width) {\n        this.contentWidth = width;\n    };\n    this.isRtlLine = function (row) {\n        if (this.$isRtl)\n            return true;\n        if (row != undefined)\n            return (this.session.getLine(row).charAt(0) == this.RLE);\n        else\n            return this.isRtlDir;\n    };\n    this.setRtlDirection = function (editor, isRtlDir) {\n        var cursor = editor.getCursorPosition();\n        for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n            if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n                editor.session.doc.removeInLine(row, 0, 1);\n            else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n                editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE);\n        }\n    };\n    this.getPosLeft = function (col) {\n        col -= this.wrapIndent;\n        var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n        var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n        var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0;\n        if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n            visualIdx++;\n        for (var i = 0; i < visualIdx; i++) {\n            left += this.charWidths[levels[i]];\n        }\n        if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n            left += this.charWidths[levels[visualIdx]];\n        if (this.wrapIndent)\n            left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n        if (this.isRtlDir)\n            left += this.rtlLineOffset;\n        return left;\n    };\n    this.getSelections = function (startCol, endCol) {\n        var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0;\n        if (this.wrapIndent)\n            offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n        for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n            logIdx = map.logicalFromVisual[visIdx];\n            level = levels[visIdx];\n            isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n            if (isSelected && !isSelectedPrev) {\n                selectionStart = offset;\n            }\n            else if (!isSelected && isSelectedPrev) {\n                selections.push({ left: selectionStart, width: offset - selectionStart });\n            }\n            offset += this.charWidths[level];\n            isSelectedPrev = isSelected;\n        }\n        if (isSelected && (visIdx === levels.length)) {\n            selections.push({ left: selectionStart, width: offset - selectionStart });\n        }\n        if (this.isRtlDir) {\n            for (var i = 0; i < selections.length; i++) {\n                selections[i].left += this.rtlLineOffset;\n            }\n        }\n        return selections;\n    };\n    this.offsetToCol = function (posX) {\n        if (this.isRtlDir)\n            posX -= this.rtlLineOffset;\n        var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]];\n        if (this.wrapIndent)\n            posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n        while (posX > offset + charWidth / 2) {\n            offset += charWidth;\n            if (visualIdx === levels.length - 1) {\n                charWidth = 0;\n                break;\n            }\n            charWidth = this.charWidths[levels[++visualIdx]];\n        }\n        if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) {\n            if (posX < offset)\n                visualIdx--;\n            logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n        }\n        else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) {\n            logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n                : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n        }\n        else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n            || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) {\n            logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n        }\n        else {\n            if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n                visualIdx--;\n            logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n        }\n        if (logicalIdx === 0 && this.isRtlDir)\n            logicalIdx++;\n        return (logicalIdx + this.wrapIndent);\n    };\n}).call(BidiHandler.prototype);\nexports.BidiHandler = BidiHandler;\n\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = function (session) {\n    this.session = session;\n    this.doc = session.getDocument();\n    this.clearSelection();\n    this.cursor = this.lead = this.doc.createAnchor(0, 0);\n    this.anchor = this.doc.createAnchor(0, 0);\n    this.$silent = false;\n    var self = this;\n    this.cursor.on(\"change\", function (e) {\n        self.$cursorChanged = true;\n        if (!self.$silent)\n            self._emit(\"changeCursor\");\n        if (!self.$isEmpty && !self.$silent)\n            self._emit(\"changeSelection\");\n        if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n            self.$desiredColumn = null;\n    });\n    this.anchor.on(\"change\", function () {\n        self.$anchorChanged = true;\n        if (!self.$isEmpty && !self.$silent)\n            self._emit(\"changeSelection\");\n    });\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.isEmpty = function () {\n        return this.$isEmpty || (this.anchor.row == this.lead.row &&\n            this.anchor.column == this.lead.column);\n    };\n    this.isMultiLine = function () {\n        return !this.$isEmpty && this.anchor.row != this.cursor.row;\n    };\n    this.getCursor = function () {\n        return this.lead.getPosition();\n    };\n    this.setSelectionAnchor = function (row, column) {\n        this.$isEmpty = false;\n        this.anchor.setPosition(row, column);\n    };\n    this.getAnchor =\n        this.getSelectionAnchor = function () {\n            if (this.$isEmpty)\n                return this.getSelectionLead();\n            return this.anchor.getPosition();\n        };\n    this.getSelectionLead = function () {\n        return this.lead.getPosition();\n    };\n    this.isBackwards = function () {\n        var anchor = this.anchor;\n        var lead = this.lead;\n        return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n    };\n    this.getRange = function () {\n        var anchor = this.anchor;\n        var lead = this.lead;\n        if (this.$isEmpty)\n            return Range.fromPoints(lead, lead);\n        return this.isBackwards()\n            ? Range.fromPoints(lead, anchor)\n            : Range.fromPoints(anchor, lead);\n    };\n    this.clearSelection = function () {\n        if (!this.$isEmpty) {\n            this.$isEmpty = true;\n            this._emit(\"changeSelection\");\n        }\n    };\n    this.selectAll = function () {\n        this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n    };\n    this.setRange =\n        this.setSelectionRange = function (range, reverse) {\n            var start = reverse ? range.end : range.start;\n            var end = reverse ? range.start : range.end;\n            this.$setSelection(start.row, start.column, end.row, end.column);\n        };\n    this.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) {\n        if (this.$silent)\n            return;\n        var wasEmpty = this.$isEmpty;\n        var wasMultiselect = this.inMultiSelectMode;\n        this.$silent = true;\n        this.$cursorChanged = this.$anchorChanged = false;\n        this.anchor.setPosition(anchorRow, anchorColumn);\n        this.cursor.setPosition(cursorRow, cursorColumn);\n        this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n        this.$silent = false;\n        if (this.$cursorChanged)\n            this._emit(\"changeCursor\");\n        if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n            this._emit(\"changeSelection\");\n    };\n    this.$moveSelection = function (mover) {\n        var lead = this.lead;\n        if (this.$isEmpty)\n            this.setSelectionAnchor(lead.row, lead.column);\n        mover.call(this);\n    };\n    this.selectTo = function (row, column) {\n        this.$moveSelection(function () {\n            this.moveCursorTo(row, column);\n        });\n    };\n    this.selectToPosition = function (pos) {\n        this.$moveSelection(function () {\n            this.moveCursorToPosition(pos);\n        });\n    };\n    this.moveTo = function (row, column) {\n        this.clearSelection();\n        this.moveCursorTo(row, column);\n    };\n    this.moveToPosition = function (pos) {\n        this.clearSelection();\n        this.moveCursorToPosition(pos);\n    };\n    this.selectUp = function () {\n        this.$moveSelection(this.moveCursorUp);\n    };\n    this.selectDown = function () {\n        this.$moveSelection(this.moveCursorDown);\n    };\n    this.selectRight = function () {\n        this.$moveSelection(this.moveCursorRight);\n    };\n    this.selectLeft = function () {\n        this.$moveSelection(this.moveCursorLeft);\n    };\n    this.selectLineStart = function () {\n        this.$moveSelection(this.moveCursorLineStart);\n    };\n    this.selectLineEnd = function () {\n        this.$moveSelection(this.moveCursorLineEnd);\n    };\n    this.selectFileEnd = function () {\n        this.$moveSelection(this.moveCursorFileEnd);\n    };\n    this.selectFileStart = function () {\n        this.$moveSelection(this.moveCursorFileStart);\n    };\n    this.selectWordRight = function () {\n        this.$moveSelection(this.moveCursorWordRight);\n    };\n    this.selectWordLeft = function () {\n        this.$moveSelection(this.moveCursorWordLeft);\n    };\n    this.getWordRange = function (row, column) {\n        if (typeof column == \"undefined\") {\n            var cursor = row || this.lead;\n            row = cursor.row;\n            column = cursor.column;\n        }\n        return this.session.getWordRange(row, column);\n    };\n    this.selectWord = function () {\n        this.setSelectionRange(this.getWordRange());\n    };\n    this.selectAWord = function () {\n        var cursor = this.getCursor();\n        var range = this.session.getAWordRange(cursor.row, cursor.column);\n        this.setSelectionRange(range);\n    };\n    this.getLineRange = function (row, excludeLastChar) {\n        var rowStart = typeof row == \"number\" ? row : this.lead.row;\n        var rowEnd;\n        var foldLine = this.session.getFoldLine(rowStart);\n        if (foldLine) {\n            rowStart = foldLine.start.row;\n            rowEnd = foldLine.end.row;\n        }\n        else {\n            rowEnd = rowStart;\n        }\n        if (excludeLastChar === true)\n            return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n        else\n            return new Range(rowStart, 0, rowEnd + 1, 0);\n    };\n    this.selectLine = function () {\n        this.setSelectionRange(this.getLineRange());\n    };\n    this.moveCursorUp = function () {\n        this.moveCursorBy(-1, 0);\n    };\n    this.moveCursorDown = function () {\n        this.moveCursorBy(1, 0);\n    };\n    this.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) {\n        var start = cursor.column;\n        var end = cursor.column + tabSize;\n        if (direction < 0) {\n            start = cursor.column - tabSize;\n            end = cursor.column;\n        }\n        return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length - 1 == tabSize;\n    };\n    this.moveCursorLeft = function () {\n        var cursor = this.lead.getPosition(), fold;\n        if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n            this.moveCursorTo(fold.start.row, fold.start.column);\n        }\n        else if (cursor.column === 0) {\n            if (cursor.row > 0) {\n                this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n            }\n        }\n        else {\n            var tabSize = this.session.getTabSize();\n            if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n                this.moveCursorBy(0, -tabSize);\n            }\n            else {\n                this.moveCursorBy(0, -1);\n            }\n        }\n    };\n    this.moveCursorRight = function () {\n        var cursor = this.lead.getPosition(), fold;\n        if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n            this.moveCursorTo(fold.end.row, fold.end.column);\n        }\n        else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n            if (this.lead.row < this.doc.getLength() - 1) {\n                this.moveCursorTo(this.lead.row + 1, 0);\n            }\n        }\n        else {\n            var tabSize = this.session.getTabSize();\n            var cursor = this.lead;\n            if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n                this.moveCursorBy(0, tabSize);\n            }\n            else {\n                this.moveCursorBy(0, 1);\n            }\n        }\n    };\n    this.moveCursorLineStart = function () {\n        var row = this.lead.row;\n        var column = this.lead.column;\n        var screenRow = this.session.documentToScreenRow(row, column);\n        var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n        var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column);\n        var leadingSpace = beforeCursor.match(/^\\s*/);\n        if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n            firstColumnPosition.column += leadingSpace[0].length;\n        this.moveCursorToPosition(firstColumnPosition);\n    };\n    this.moveCursorLineEnd = function () {\n        var lead = this.lead;\n        var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n        if (this.lead.column == lineEnd.column) {\n            var line = this.session.getLine(lineEnd.row);\n            if (lineEnd.column == line.length) {\n                var textEnd = line.search(/\\s+$/);\n                if (textEnd > 0)\n                    lineEnd.column = textEnd;\n            }\n        }\n        this.moveCursorTo(lineEnd.row, lineEnd.column);\n    };\n    this.moveCursorFileEnd = function () {\n        var row = this.doc.getLength() - 1;\n        var column = this.doc.getLine(row).length;\n        this.moveCursorTo(row, column);\n    };\n    this.moveCursorFileStart = function () {\n        this.moveCursorTo(0, 0);\n    };\n    this.moveCursorLongWordRight = function () {\n        var row = this.lead.row;\n        var column = this.lead.column;\n        var line = this.doc.getLine(row);\n        var rightOfCursor = line.substring(column);\n        this.session.nonTokenRe.lastIndex = 0;\n        this.session.tokenRe.lastIndex = 0;\n        var fold = this.session.getFoldAt(row, column, 1);\n        if (fold) {\n            this.moveCursorTo(fold.end.row, fold.end.column);\n            return;\n        }\n        if (this.session.nonTokenRe.exec(rightOfCursor)) {\n            column += this.session.nonTokenRe.lastIndex;\n            this.session.nonTokenRe.lastIndex = 0;\n            rightOfCursor = line.substring(column);\n        }\n        if (column >= line.length) {\n            this.moveCursorTo(row, line.length);\n            this.moveCursorRight();\n            if (row < this.doc.getLength() - 1)\n                this.moveCursorWordRight();\n            return;\n        }\n        if (this.session.tokenRe.exec(rightOfCursor)) {\n            column += this.session.tokenRe.lastIndex;\n            this.session.tokenRe.lastIndex = 0;\n        }\n        this.moveCursorTo(row, column);\n    };\n    this.moveCursorLongWordLeft = function () {\n        var row = this.lead.row;\n        var column = this.lead.column;\n        var fold;\n        if (fold = this.session.getFoldAt(row, column, -1)) {\n            this.moveCursorTo(fold.start.row, fold.start.column);\n            return;\n        }\n        var str = this.session.getFoldStringAt(row, column, -1);\n        if (str == null) {\n            str = this.doc.getLine(row).substring(0, column);\n        }\n        var leftOfCursor = lang.stringReverse(str);\n        this.session.nonTokenRe.lastIndex = 0;\n        this.session.tokenRe.lastIndex = 0;\n        if (this.session.nonTokenRe.exec(leftOfCursor)) {\n            column -= this.session.nonTokenRe.lastIndex;\n            leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n            this.session.nonTokenRe.lastIndex = 0;\n        }\n        if (column <= 0) {\n            this.moveCursorTo(row, 0);\n            this.moveCursorLeft();\n            if (row > 0)\n                this.moveCursorWordLeft();\n            return;\n        }\n        if (this.session.tokenRe.exec(leftOfCursor)) {\n            column -= this.session.tokenRe.lastIndex;\n            this.session.tokenRe.lastIndex = 0;\n        }\n        this.moveCursorTo(row, column);\n    };\n    this.$shortWordEndIndex = function (rightOfCursor) {\n        var index = 0, ch;\n        var whitespaceRe = /\\s/;\n        var tokenRe = this.session.tokenRe;\n        tokenRe.lastIndex = 0;\n        if (this.session.tokenRe.exec(rightOfCursor)) {\n            index = this.session.tokenRe.lastIndex;\n        }\n        else {\n            while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n                index++;\n            if (index < 1) {\n                tokenRe.lastIndex = 0;\n                while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n                    tokenRe.lastIndex = 0;\n                    index++;\n                    if (whitespaceRe.test(ch)) {\n                        if (index > 2) {\n                            index--;\n                            break;\n                        }\n                        else {\n                            while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n                                index++;\n                            if (index > 2)\n                                break;\n                        }\n                    }\n                }\n            }\n        }\n        tokenRe.lastIndex = 0;\n        return index;\n    };\n    this.moveCursorShortWordRight = function () {\n        var row = this.lead.row;\n        var column = this.lead.column;\n        var line = this.doc.getLine(row);\n        var rightOfCursor = line.substring(column);\n        var fold = this.session.getFoldAt(row, column, 1);\n        if (fold)\n            return this.moveCursorTo(fold.end.row, fold.end.column);\n        if (column == line.length) {\n            var l = this.doc.getLength();\n            do {\n                row++;\n                rightOfCursor = this.doc.getLine(row);\n            } while (row < l && /^\\s*$/.test(rightOfCursor));\n            if (!/^\\s+/.test(rightOfCursor))\n                rightOfCursor = \"\";\n            column = 0;\n        }\n        var index = this.$shortWordEndIndex(rightOfCursor);\n        this.moveCursorTo(row, column + index);\n    };\n    this.moveCursorShortWordLeft = function () {\n        var row = this.lead.row;\n        var column = this.lead.column;\n        var fold;\n        if (fold = this.session.getFoldAt(row, column, -1))\n            return this.moveCursorTo(fold.start.row, fold.start.column);\n        var line = this.session.getLine(row).substring(0, column);\n        if (column === 0) {\n            do {\n                row--;\n                line = this.doc.getLine(row);\n            } while (row > 0 && /^\\s*$/.test(line));\n            column = line.length;\n            if (!/\\s+$/.test(line))\n                line = \"\";\n        }\n        var leftOfCursor = lang.stringReverse(line);\n        var index = this.$shortWordEndIndex(leftOfCursor);\n        return this.moveCursorTo(row, column - index);\n    };\n    this.moveCursorWordRight = function () {\n        if (this.session.$selectLongWords)\n            this.moveCursorLongWordRight();\n        else\n            this.moveCursorShortWordRight();\n    };\n    this.moveCursorWordLeft = function () {\n        if (this.session.$selectLongWords)\n            this.moveCursorLongWordLeft();\n        else\n            this.moveCursorShortWordLeft();\n    };\n    this.moveCursorBy = function (rows, chars) {\n        var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column);\n        var offsetX;\n        if (chars === 0) {\n            if (rows !== 0) {\n                if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n                    offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n                    screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n                }\n                else {\n                    offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n                }\n            }\n            if (this.$desiredColumn)\n                screenPos.column = this.$desiredColumn;\n            else\n                this.$desiredColumn = screenPos.column;\n        }\n        if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n            var widget = this.session.lineWidgets[this.lead.row];\n            if (rows < 0)\n                rows -= widget.rowsAbove || 0;\n            else if (rows > 0)\n                rows += widget.rowCount - (widget.rowsAbove || 0);\n        }\n        var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n        if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n        }\n        this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n    };\n    this.moveCursorToPosition = function (position) {\n        this.moveCursorTo(position.row, position.column);\n    };\n    this.moveCursorTo = function (row, column, keepDesiredColumn) {\n        var fold = this.session.getFoldAt(row, column, 1);\n        if (fold) {\n            row = fold.start.row;\n            column = fold.start.column;\n        }\n        this.$keepDesiredColumnOnChange = true;\n        var line = this.session.getLine(row);\n        if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n            if (this.lead.row == row && this.lead.column == column + 1)\n                column = column - 1;\n            else\n                column = column + 1;\n        }\n        this.lead.setPosition(row, column);\n        this.$keepDesiredColumnOnChange = false;\n        if (!keepDesiredColumn)\n            this.$desiredColumn = null;\n    };\n    this.moveCursorToScreen = function (row, column, keepDesiredColumn) {\n        var pos = this.session.screenToDocumentPosition(row, column);\n        this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n    };\n    this.detach = function () {\n        this.lead.detach();\n        this.anchor.detach();\n    };\n    this.fromOrientedRange = function (range) {\n        this.setSelectionRange(range, range.cursor == range.start);\n        this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n    };\n    this.toOrientedRange = function (range) {\n        var r = this.getRange();\n        if (range) {\n            range.start.column = r.start.column;\n            range.start.row = r.start.row;\n            range.end.column = r.end.column;\n            range.end.row = r.end.row;\n        }\n        else {\n            range = r;\n        }\n        range.cursor = this.isBackwards() ? range.start : range.end;\n        range.desiredColumn = this.$desiredColumn;\n        return range;\n    };\n    this.getRangeOfMovements = function (func) {\n        var start = this.getCursor();\n        try {\n            func(this);\n            var end = this.getCursor();\n            return Range.fromPoints(start, end);\n        }\n        catch (e) {\n            return Range.fromPoints(start, start);\n        }\n        finally {\n            this.moveCursorToPosition(start);\n        }\n    };\n    this.toJSON = function () {\n        if (this.rangeCount) {\n            var data = this.ranges.map(function (r) {\n                var r1 = r.clone();\n                r1.isBackwards = r.cursor == r.start;\n                return r1;\n            });\n        }\n        else {\n            var data = this.getRange();\n            data.isBackwards = this.isBackwards();\n        }\n        return data;\n    };\n    this.fromJSON = function (data) {\n        if (data.start == undefined) {\n            if (this.rangeList && data.length > 1) {\n                this.toSingleRange(data[0]);\n                for (var i = data.length; i--;) {\n                    var r = Range.fromPoints(data[i].start, data[i].end);\n                    if (data[i].isBackwards)\n                        r.cursor = r.start;\n                    this.addRange(r, true);\n                }\n                return;\n            }\n            else {\n                data = data[0];\n            }\n        }\n        if (this.rangeList)\n            this.toSingleRange(data);\n        this.setSelectionRange(data, data.isBackwards);\n    };\n    this.isEqual = function (data) {\n        if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n            return false;\n        if (!data.length || !this.ranges)\n            return this.getRange().isEqual(data);\n        for (var i = this.ranges.length; i--;) {\n            if (!this.ranges[i].isEqual(data[i]))\n                return false;\n        }\n        return true;\n    };\n}).call(Selection.prototype);\nexports.Selection = Selection;\n\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"], function(require, exports, module){\"use strict\";\nvar config = require(\"./config\");\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = function (rules) {\n    this.states = rules;\n    this.regExps = {};\n    this.matchMappings = {};\n    for (var key in this.states) {\n        var state = this.states[key];\n        var ruleRegExps = [];\n        var matchTotal = 0;\n        var mapping = this.matchMappings[key] = { defaultToken: \"text\" };\n        var flag = \"g\";\n        var splitterRurles = [];\n        for (var i = 0; i < state.length; i++) {\n            var rule = state[i];\n            if (rule.defaultToken)\n                mapping.defaultToken = rule.defaultToken;\n            if (rule.caseInsensitive && flag.indexOf(\"i\") === -1)\n                flag += \"i\";\n            if (rule.unicode && flag.indexOf(\"u\") === -1)\n                flag += \"u\";\n            if (rule.regex == null)\n                continue;\n            if (rule.regex instanceof RegExp)\n                rule.regex = rule.regex.toString().slice(1, -1);\n            var adjustedregex = rule.regex;\n            var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n            if (Array.isArray(rule.token)) {\n                if (rule.token.length == 1 || matchcount == 1) {\n                    rule.token = rule.token[0];\n                }\n                else if (matchcount - 1 != rule.token.length) {\n                    this.reportError(\"number of classes and regexp groups doesn't match\", {\n                        rule: rule,\n                        groupCount: matchcount - 1\n                    });\n                    rule.token = rule.token[0];\n                }\n                else {\n                    rule.tokenArray = rule.token;\n                    rule.token = null;\n                    rule.onMatch = this.$arrayTokens;\n                }\n            }\n            else if (typeof rule.token == \"function\" && !rule.onMatch) {\n                if (matchcount > 1)\n                    rule.onMatch = this.$applyToken;\n                else\n                    rule.onMatch = rule.token;\n            }\n            if (matchcount > 1) {\n                if (/\\\\\\d/.test(rule.regex)) {\n                    adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function (match, digit) {\n                        return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n                    });\n                }\n                else {\n                    matchcount = 1;\n                    adjustedregex = this.removeCapturingGroups(rule.regex);\n                }\n                if (!rule.splitRegex && typeof rule.token != \"string\")\n                    splitterRurles.push(rule); // flag will be known only at the very end\n            }\n            mapping[matchTotal] = i;\n            matchTotal += matchcount;\n            ruleRegExps.push(adjustedregex);\n            if (!rule.onMatch)\n                rule.onMatch = null;\n        }\n        if (!ruleRegExps.length) {\n            mapping[0] = 0;\n            ruleRegExps.push(\"$\");\n        }\n        splitterRurles.forEach(function (rule) {\n            rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n        }, this);\n        this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n    }\n};\n(function () {\n    this.$setMaxTokenCount = function (m) {\n        MAX_TOKEN_COUNT = m | 0;\n    };\n    this.$applyToken = function (str) {\n        var values = this.splitRegex.exec(str).slice(1);\n        var types = this.token.apply(this, values);\n        if (typeof types === \"string\")\n            return [{ type: types, value: str }];\n        var tokens = [];\n        for (var i = 0, l = types.length; i < l; i++) {\n            if (values[i])\n                tokens[tokens.length] = {\n                    type: types[i],\n                    value: values[i]\n                };\n        }\n        return tokens;\n    };\n    this.$arrayTokens = function (str) {\n        if (!str)\n            return [];\n        var values = this.splitRegex.exec(str);\n        if (!values)\n            return \"text\";\n        var tokens = [];\n        var types = this.tokenArray;\n        for (var i = 0, l = types.length; i < l; i++) {\n            if (values[i + 1])\n                tokens[tokens.length] = {\n                    type: types[i],\n                    value: values[i + 1]\n                };\n        }\n        return tokens;\n    };\n    this.removeCapturingGroups = function (src) {\n        var r = src.replace(/\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g, function (x, y) { return y ? \"(?:\" : x; });\n        return r;\n    };\n    this.createSplitterRegexp = function (src, flag) {\n        if (src.indexOf(\"(?=\") != -1) {\n            var stack = 0;\n            var inChClass = false;\n            var lastCapture = {};\n            src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function (m, esc, parenOpen, parenClose, square, index) {\n                if (inChClass) {\n                    inChClass = square != \"]\";\n                }\n                else if (square) {\n                    inChClass = true;\n                }\n                else if (parenClose) {\n                    if (stack == lastCapture.stack) {\n                        lastCapture.end = index + 1;\n                        lastCapture.stack = -1;\n                    }\n                    stack--;\n                }\n                else if (parenOpen) {\n                    stack++;\n                    if (parenOpen.length != 1) {\n                        lastCapture.stack = stack;\n                        lastCapture.start = index;\n                    }\n                }\n                return m;\n            });\n            if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n                src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n        }\n        if (src.charAt(0) != \"^\")\n            src = \"^\" + src;\n        if (src.charAt(src.length - 1) != \"$\")\n            src += \"$\";\n        return new RegExp(src, (flag || \"\").replace(\"g\", \"\"));\n    };\n    this.getLineTokens = function (line, startState) {\n        if (startState && typeof startState != \"string\") {\n            var stack = startState.slice(0);\n            startState = stack[0];\n            if (startState === \"#tmp\") {\n                stack.shift();\n                startState = stack.shift();\n            }\n        }\n        else\n            var stack = [];\n        var currentState = startState || \"start\";\n        var state = this.states[currentState];\n        if (!state) {\n            currentState = \"start\";\n            state = this.states[currentState];\n        }\n        var mapping = this.matchMappings[currentState];\n        var re = this.regExps[currentState];\n        re.lastIndex = 0;\n        var match, tokens = [];\n        var lastIndex = 0;\n        var matchAttempts = 0;\n        var token = { type: null, value: \"\" };\n        while (match = re.exec(line)) {\n            var type = mapping.defaultToken;\n            var rule = null;\n            var value = match[0];\n            var index = re.lastIndex;\n            if (index - value.length > lastIndex) {\n                var skipped = line.substring(lastIndex, index - value.length);\n                if (token.type == type) {\n                    token.value += skipped;\n                }\n                else {\n                    if (token.type)\n                        tokens.push(token);\n                    token = { type: type, value: skipped };\n                }\n            }\n            for (var i = 0; i < match.length - 2; i++) {\n                if (match[i + 1] === undefined)\n                    continue;\n                rule = state[mapping[i]];\n                if (rule.onMatch)\n                    type = rule.onMatch(value, currentState, stack, line);\n                else\n                    type = rule.token;\n                if (rule.next) {\n                    if (typeof rule.next == \"string\") {\n                        currentState = rule.next;\n                    }\n                    else {\n                        currentState = rule.next(currentState, stack);\n                    }\n                    state = this.states[currentState];\n                    if (!state) {\n                        this.reportError(\"state doesn't exist\", currentState);\n                        currentState = \"start\";\n                        state = this.states[currentState];\n                    }\n                    mapping = this.matchMappings[currentState];\n                    lastIndex = index;\n                    re = this.regExps[currentState];\n                    re.lastIndex = index;\n                }\n                if (rule.consumeLineEnd)\n                    lastIndex = index;\n                break;\n            }\n            if (value) {\n                if (typeof type === \"string\") {\n                    if ((!rule || rule.merge !== false) && token.type === type) {\n                        token.value += value;\n                    }\n                    else {\n                        if (token.type)\n                            tokens.push(token);\n                        token = { type: type, value: value };\n                    }\n                }\n                else if (type) {\n                    if (token.type)\n                        tokens.push(token);\n                    token = { type: null, value: \"\" };\n                    for (var i = 0; i < type.length; i++)\n                        tokens.push(type[i]);\n                }\n            }\n            if (lastIndex == line.length)\n                break;\n            lastIndex = index;\n            if (matchAttempts++ > MAX_TOKEN_COUNT) {\n                if (matchAttempts > 2 * line.length) {\n                    this.reportError(\"infinite loop with in ace tokenizer\", {\n                        startState: startState,\n                        line: line\n                    });\n                }\n                while (lastIndex < line.length) {\n                    if (token.type)\n                        tokens.push(token);\n                    token = {\n                        value: line.substring(lastIndex, lastIndex += 500),\n                        type: \"overflow\"\n                    };\n                }\n                currentState = \"start\";\n                stack = [];\n                break;\n            }\n        }\n        if (token.type)\n            tokens.push(token);\n        if (stack.length > 1) {\n            if (stack[0] !== currentState)\n                stack.unshift(\"#tmp\", currentState);\n        }\n        return {\n            tokens: tokens,\n            state: stack.length ? stack : currentState\n        };\n    };\n    this.reportError = config.reportError;\n}).call(Tokenizer.prototype);\nexports.Tokenizer = Tokenizer;\n\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = function () {\n    this.$rules = {\n        \"start\": [{\n                token: \"empty_line\",\n                regex: '^$'\n            }, {\n                defaultToken: \"text\"\n            }]\n    };\n};\n(function () {\n    this.addRules = function (rules, prefix) {\n        if (!prefix) {\n            for (var key in rules)\n                this.$rules[key] = rules[key];\n            return;\n        }\n        for (var key in rules) {\n            var state = rules[key];\n            for (var i = 0; i < state.length; i++) {\n                var rule = state[i];\n                if (rule.next || rule.onMatch) {\n                    if (typeof rule.next == \"string\") {\n                        if (rule.next.indexOf(prefix) !== 0)\n                            rule.next = prefix + rule.next;\n                    }\n                    if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n                        rule.nextState = prefix + rule.nextState;\n                }\n            }\n            this.$rules[prefix + key] = state;\n        }\n    };\n    this.getRules = function () {\n        return this.$rules;\n    };\n    this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n        var embedRules = typeof HighlightRules == \"function\"\n            ? new HighlightRules().getRules()\n            : HighlightRules;\n        if (states) {\n            for (var i = 0; i < states.length; i++)\n                states[i] = prefix + states[i];\n        }\n        else {\n            states = [];\n            for (var key in embedRules)\n                states.push(prefix + key);\n        }\n        this.addRules(embedRules, prefix);\n        if (escapeRules) {\n            var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n            for (var i = 0; i < states.length; i++)\n                addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\n        }\n        if (!this.$embeds)\n            this.$embeds = [];\n        this.$embeds.push(prefix);\n    };\n    this.getEmbeds = function () {\n        return this.$embeds;\n    };\n    var pushState = function (currentState, stack) {\n        if (currentState != \"start\" || stack.length)\n            stack.unshift(this.nextState, currentState);\n        return this.nextState;\n    };\n    var popState = function (currentState, stack) {\n        stack.shift();\n        return stack.shift() || \"start\";\n    };\n    this.normalizeRules = function () {\n        var id = 0;\n        var rules = this.$rules;\n        function processState(key) {\n            var state = rules[key];\n            state.processed = true;\n            for (var i = 0; i < state.length; i++) {\n                var rule = state[i];\n                var toInsert = null;\n                if (Array.isArray(rule)) {\n                    toInsert = rule;\n                    rule = {};\n                }\n                if (!rule.regex && rule.start) {\n                    rule.regex = rule.start;\n                    if (!rule.next)\n                        rule.next = [];\n                    rule.next.push({\n                        defaultToken: rule.token\n                    }, {\n                        token: rule.token + \".end\",\n                        regex: rule.end || rule.start,\n                        next: \"pop\"\n                    });\n                    rule.token = rule.token + \".start\";\n                    rule.push = true;\n                }\n                var next = rule.next || rule.push;\n                if (next && Array.isArray(next)) {\n                    var stateName = rule.stateName;\n                    if (!stateName) {\n                        stateName = rule.token;\n                        if (typeof stateName != \"string\")\n                            stateName = stateName[0] || \"\";\n                        if (rules[stateName])\n                            stateName += id++;\n                    }\n                    rules[stateName] = next;\n                    rule.next = stateName;\n                    processState(stateName);\n                }\n                else if (next == \"pop\") {\n                    rule.next = popState;\n                }\n                if (rule.push) {\n                    rule.nextState = rule.next || rule.push;\n                    rule.next = pushState;\n                    delete rule.push;\n                }\n                if (rule.rules) {\n                    for (var r in rule.rules) {\n                        if (rules[r]) {\n                            if (rules[r].push)\n                                rules[r].push.apply(rules[r], rule.rules[r]);\n                        }\n                        else {\n                            rules[r] = rule.rules[r];\n                        }\n                    }\n                }\n                var includeName = typeof rule == \"string\" ? rule : rule.include;\n                if (includeName) {\n                    if (Array.isArray(includeName))\n                        toInsert = includeName.map(function (x) { return rules[x]; });\n                    else\n                        toInsert = rules[includeName];\n                }\n                if (toInsert) {\n                    var args = [i, 1].concat(toInsert);\n                    if (rule.noEscape)\n                        args = args.filter(function (x) { return !x.next; });\n                    state.splice.apply(state, args);\n                    i--;\n                }\n                if (rule.keywordMap) {\n                    rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive);\n                    delete rule.defaultToken;\n                }\n            }\n        }\n        Object.keys(rules).forEach(processState, this);\n    };\n    this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) {\n        var keywords = Object.create(null);\n        this.$keywordList = [];\n        Object.keys(map).forEach(function (className) {\n            var a = map[className];\n            var list = a.split(splitChar || \"|\");\n            for (var i = list.length; i--;) {\n                var word = list[i];\n                this.$keywordList.push(word);\n                if (ignoreCase)\n                    word = word.toLowerCase();\n                keywords[word] = className;\n            }\n        }, this);\n        map = null;\n        return ignoreCase\n            ? function (value) { return keywords[value.toLowerCase()] || defaultToken; }\n            : function (value) { return keywords[value] || defaultToken; };\n    };\n    this.getKeywords = function () {\n        return this.$keywords;\n    };\n}).call(TextHighlightRules.prototype);\nexports.TextHighlightRules = TextHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar Behaviour = function () {\n    this.$behaviours = {};\n};\n(function () {\n    this.add = function (name, action, callback) {\n        switch (undefined) {\n            case this.$behaviours:\n                this.$behaviours = {};\n            case this.$behaviours[name]:\n                this.$behaviours[name] = {};\n        }\n        this.$behaviours[name][action] = callback;\n    };\n    this.addBehaviours = function (behaviours) {\n        for (var key in behaviours) {\n            for (var action in behaviours[key]) {\n                this.add(key, action, behaviours[key][action]);\n            }\n        }\n    };\n    this.remove = function (name) {\n        if (this.$behaviours && this.$behaviours[name]) {\n            delete this.$behaviours[name];\n        }\n    };\n    this.inherit = function (mode, filter) {\n        if (typeof mode === \"function\") {\n            var behaviours = new mode().getBehaviours(filter);\n        }\n        else {\n            var behaviours = mode.getBehaviours(filter);\n        }\n        this.addBehaviours(behaviours);\n    };\n    this.getBehaviours = function (filter) {\n        if (!filter) {\n            return this.$behaviours;\n        }\n        else {\n            var ret = {};\n            for (var i = 0; i < filter.length; i++) {\n                if (this.$behaviours[filter[i]]) {\n                    ret[filter[i]] = this.$behaviours[filter[i]];\n                }\n            }\n            return ret;\n        }\n    };\n}).call(Behaviour.prototype);\nexports.Behaviour = Behaviour;\n\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar TokenIterator = function (session, initialRow, initialColumn) {\n    this.$session = session;\n    this.$row = initialRow;\n    this.$rowTokens = session.getTokens(initialRow);\n    var token = session.getTokenAt(initialRow, initialColumn);\n    this.$tokenIndex = token ? token.index : -1;\n};\n(function () {\n    this.stepBackward = function () {\n        this.$tokenIndex -= 1;\n        while (this.$tokenIndex < 0) {\n            this.$row -= 1;\n            if (this.$row < 0) {\n                this.$row = 0;\n                return null;\n            }\n            this.$rowTokens = this.$session.getTokens(this.$row);\n            this.$tokenIndex = this.$rowTokens.length - 1;\n        }\n        return this.$rowTokens[this.$tokenIndex];\n    };\n    this.stepForward = function () {\n        this.$tokenIndex += 1;\n        var rowCount;\n        while (this.$tokenIndex >= this.$rowTokens.length) {\n            this.$row += 1;\n            if (!rowCount)\n                rowCount = this.$session.getLength();\n            if (this.$row >= rowCount) {\n                this.$row = rowCount - 1;\n                return null;\n            }\n            this.$rowTokens = this.$session.getTokens(this.$row);\n            this.$tokenIndex = 0;\n        }\n        return this.$rowTokens[this.$tokenIndex];\n    };\n    this.getCurrentToken = function () {\n        return this.$rowTokens[this.$tokenIndex];\n    };\n    this.getCurrentTokenRow = function () {\n        return this.$row;\n    };\n    this.getCurrentTokenColumn = function () {\n        var rowTokens = this.$rowTokens;\n        var tokenIndex = this.$tokenIndex;\n        var column = rowTokens[tokenIndex].start;\n        if (column !== undefined)\n            return column;\n        column = 0;\n        while (tokenIndex > 0) {\n            tokenIndex -= 1;\n            column += rowTokens[tokenIndex].value.length;\n        }\n        return column;\n    };\n    this.getCurrentTokenPosition = function () {\n        return { row: this.$row, column: this.getCurrentTokenColumn() };\n    };\n    this.getCurrentTokenRange = function () {\n        var token = this.$rowTokens[this.$tokenIndex];\n        var column = this.getCurrentTokenColumn();\n        return new Range(this.$row, column, this.$row, column + token.value.length);\n    };\n}).call(TokenIterator.prototype);\nexports.TokenIterator = TokenIterator;\n\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nvar SAFE_INSERT_IN_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS = [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\nvar context;\nvar contextCache = {};\nvar defaultQuotes = { '\"': '\"', \"'\": \"'\" };\nvar initContext = function (editor) {\n    var id = -1;\n    if (editor.multiSelect) {\n        id = editor.selection.index;\n        if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n            contextCache = { rangeCount: editor.multiSelect.rangeCount };\n    }\n    if (contextCache[id])\n        return context = contextCache[id];\n    context = contextCache[id] = {\n        autoInsertedBrackets: 0,\n        autoInsertedRow: -1,\n        autoInsertedLineEnd: \"\",\n        maybeInsertedBrackets: 0,\n        maybeInsertedRow: -1,\n        maybeInsertedLineStart: \"\",\n        maybeInsertedLineEnd: \"\"\n    };\n};\nvar getWrapped = function (selection, selected, opening, closing) {\n    var rowDiff = selection.end.row - selection.start.row;\n    return {\n        text: opening + selected + closing,\n        selection: [\n            0,\n            selection.start.column + 1,\n            rowDiff,\n            selection.end.column + (rowDiff ? 0 : 1)\n        ]\n    };\n};\nvar CstyleBehaviour = function (options) {\n    this.add(\"braces\", \"insertion\", function (state, action, editor, session, text) {\n        var cursor = editor.getCursorPosition();\n        var line = session.doc.getLine(cursor.row);\n        if (text == '{') {\n            initContext(editor);\n            var selection = editor.getSelectionRange();\n            var selected = session.doc.getTextRange(selection);\n            if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n                return getWrapped(selection, selected, '{', '}');\n            }\n            else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n                if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) {\n                    CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n                    return {\n                        text: '{}',\n                        selection: [1, 1]\n                    };\n                }\n                else {\n                    CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n                    return {\n                        text: '{',\n                        selection: [1, 1]\n                    };\n                }\n            }\n        }\n        else if (text == '}') {\n            initContext(editor);\n            var rightChar = line.substring(cursor.column, cursor.column + 1);\n            if (rightChar == '}') {\n                var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row });\n                if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n                    CstyleBehaviour.popAutoInsertedClosing();\n                    return {\n                        text: '',\n                        selection: [1, 1]\n                    };\n                }\n            }\n        }\n        else if (text == \"\\n\" || text == \"\\r\\n\") {\n            initContext(editor);\n            var closing = \"\";\n            if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n                closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n                CstyleBehaviour.clearMaybeInsertedClosing();\n            }\n            var rightChar = line.substring(cursor.column, cursor.column + 1);\n            if (rightChar === '}') {\n                var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}');\n                if (!openBracePos)\n                    return null;\n                var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n            }\n            else if (closing) {\n                var next_indent = this.$getIndent(line);\n            }\n            else {\n                CstyleBehaviour.clearMaybeInsertedClosing();\n                return;\n            }\n            var indent = next_indent + session.getTabString();\n            return {\n                text: '\\n' + indent + '\\n' + next_indent + closing,\n                selection: [1, indent.length, 1, indent.length]\n            };\n        }\n        else {\n            CstyleBehaviour.clearMaybeInsertedClosing();\n        }\n    });\n    this.add(\"braces\", \"deletion\", function (state, action, editor, session, range) {\n        var selected = session.doc.getTextRange(range);\n        if (!range.isMultiLine() && selected == '{') {\n            initContext(editor);\n            var line = session.doc.getLine(range.start.row);\n            var rightChar = line.substring(range.end.column, range.end.column + 1);\n            if (rightChar == '}') {\n                range.end.column++;\n                return range;\n            }\n            else {\n                context.maybeInsertedBrackets--;\n            }\n        }\n    });\n    this.add(\"parens\", \"insertion\", function (state, action, editor, session, text) {\n        if (text == '(') {\n            initContext(editor);\n            var selection = editor.getSelectionRange();\n            var selected = session.doc.getTextRange(selection);\n            if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n                return getWrapped(selection, selected, '(', ')');\n            }\n            else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n                CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n                return {\n                    text: '()',\n                    selection: [1, 1]\n                };\n            }\n        }\n        else if (text == ')') {\n            initContext(editor);\n            var cursor = editor.getCursorPosition();\n            var line = session.doc.getLine(cursor.row);\n            var rightChar = line.substring(cursor.column, cursor.column + 1);\n            if (rightChar == ')') {\n                var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row });\n                if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n                    CstyleBehaviour.popAutoInsertedClosing();\n                    return {\n                        text: '',\n                        selection: [1, 1]\n                    };\n                }\n            }\n        }\n    });\n    this.add(\"parens\", \"deletion\", function (state, action, editor, session, range) {\n        var selected = session.doc.getTextRange(range);\n        if (!range.isMultiLine() && selected == '(') {\n            initContext(editor);\n            var line = session.doc.getLine(range.start.row);\n            var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n            if (rightChar == ')') {\n                range.end.column++;\n                return range;\n            }\n        }\n    });\n    this.add(\"brackets\", \"insertion\", function (state, action, editor, session, text) {\n        if (text == '[') {\n            initContext(editor);\n            var selection = editor.getSelectionRange();\n            var selected = session.doc.getTextRange(selection);\n            if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n                return getWrapped(selection, selected, '[', ']');\n            }\n            else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n                CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n                return {\n                    text: '[]',\n                    selection: [1, 1]\n                };\n            }\n        }\n        else if (text == ']') {\n            initContext(editor);\n            var cursor = editor.getCursorPosition();\n            var line = session.doc.getLine(cursor.row);\n            var rightChar = line.substring(cursor.column, cursor.column + 1);\n            if (rightChar == ']') {\n                var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row });\n                if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n                    CstyleBehaviour.popAutoInsertedClosing();\n                    return {\n                        text: '',\n                        selection: [1, 1]\n                    };\n                }\n            }\n        }\n    });\n    this.add(\"brackets\", \"deletion\", function (state, action, editor, session, range) {\n        var selected = session.doc.getTextRange(range);\n        if (!range.isMultiLine() && selected == '[') {\n            initContext(editor);\n            var line = session.doc.getLine(range.start.row);\n            var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n            if (rightChar == ']') {\n                range.end.column++;\n                return range;\n            }\n        }\n    });\n    this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n        var quotes = session.$mode.$quotes || defaultQuotes;\n        if (text.length == 1 && quotes[text]) {\n            if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n                return;\n            initContext(editor);\n            var quote = text;\n            var selection = editor.getSelectionRange();\n            var selected = session.doc.getTextRange(selection);\n            if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n                return getWrapped(selection, selected, quote, quote);\n            }\n            else if (!selected) {\n                var cursor = editor.getCursorPosition();\n                var line = session.doc.getLine(cursor.row);\n                var leftChar = line.substring(cursor.column - 1, cursor.column);\n                var rightChar = line.substring(cursor.column, cursor.column + 1);\n                var token = session.getTokenAt(cursor.row, cursor.column);\n                var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n                if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n                    return null;\n                var stringBefore = token && /string|escape/.test(token.type);\n                var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n                var pair;\n                if (rightChar == quote) {\n                    pair = stringBefore !== stringAfter;\n                    if (pair && /string\\.end/.test(rightToken.type))\n                        pair = false;\n                }\n                else {\n                    if (stringBefore && !stringAfter)\n                        return null; // wrap string with different quote\n                    if (stringBefore && stringAfter)\n                        return null; // do not pair quotes inside strings\n                    var wordRe = session.$mode.tokenRe;\n                    wordRe.lastIndex = 0;\n                    var isWordBefore = wordRe.test(leftChar);\n                    wordRe.lastIndex = 0;\n                    var isWordAfter = wordRe.test(leftChar);\n                    if (isWordBefore || isWordAfter)\n                        return null; // before or after alphanumeric\n                    if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n                        return null; // there is rightChar and it isn't closing\n                    var charBefore = line[cursor.column - 2];\n                    if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n                        return null;\n                    pair = true;\n                }\n                return {\n                    text: pair ? quote + quote : \"\",\n                    selection: [1, 1]\n                };\n            }\n        }\n    });\n    this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n        var quotes = session.$mode.$quotes || defaultQuotes;\n        var selected = session.doc.getTextRange(range);\n        if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n            initContext(editor);\n            var line = session.doc.getLine(range.start.row);\n            var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n            if (rightChar == selected) {\n                range.end.column++;\n                return range;\n            }\n        }\n    });\n};\nCstyleBehaviour.isSaneInsertion = function (editor, session) {\n    var cursor = editor.getCursorPosition();\n    var iterator = new TokenIterator(session, cursor.row, cursor.column);\n    if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n        if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n            return true;\n        var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n        if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n            return false;\n    }\n    iterator.stepForward();\n    return iterator.getCurrentTokenRow() !== cursor.row ||\n        this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\nCstyleBehaviour.$matchTokenType = function (token, types) {\n    return types.indexOf(token.type || token) > -1;\n};\nCstyleBehaviour.recordAutoInsert = function (editor, session, bracket) {\n    var cursor = editor.getCursorPosition();\n    var line = session.doc.getLine(cursor.row);\n    if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n        context.autoInsertedBrackets = 0;\n    context.autoInsertedRow = cursor.row;\n    context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n    context.autoInsertedBrackets++;\n};\nCstyleBehaviour.recordMaybeInsert = function (editor, session, bracket) {\n    var cursor = editor.getCursorPosition();\n    var line = session.doc.getLine(cursor.row);\n    if (!this.isMaybeInsertedClosing(cursor, line))\n        context.maybeInsertedBrackets = 0;\n    context.maybeInsertedRow = cursor.row;\n    context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n    context.maybeInsertedLineEnd = line.substr(cursor.column);\n    context.maybeInsertedBrackets++;\n};\nCstyleBehaviour.isAutoInsertedClosing = function (cursor, line, bracket) {\n    return context.autoInsertedBrackets > 0 &&\n        cursor.row === context.autoInsertedRow &&\n        bracket === context.autoInsertedLineEnd[0] &&\n        line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\nCstyleBehaviour.isMaybeInsertedClosing = function (cursor, line) {\n    return context.maybeInsertedBrackets > 0 &&\n        cursor.row === context.maybeInsertedRow &&\n        line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n        line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\nCstyleBehaviour.popAutoInsertedClosing = function () {\n    context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n    context.autoInsertedBrackets--;\n};\nCstyleBehaviour.clearMaybeInsertedClosing = function () {\n    if (context) {\n        context.maybeInsertedBrackets = 0;\n        context.maybeInsertedRow = -1;\n    }\n};\noop.inherits(CstyleBehaviour, Behaviour);\nexports.CstyleBehaviour = CstyleBehaviour;\n\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2];\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n    str.push(code += wordChars[i]);\n    if (wordChars[i + 1])\n        str.push(45, code += wordChars[i + 1]);\n}\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar config = require(\"../config\");\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nvar Mode = function () {\n    this.HighlightRules = TextHighlightRules;\n};\n(function () {\n    this.$defaultBehaviour = new CstyleBehaviour();\n    this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n    this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n    this.getTokenizer = function () {\n        if (!this.$tokenizer) {\n            this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n            this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n        }\n        return this.$tokenizer;\n    };\n    this.lineCommentStart = \"\";\n    this.blockComment = \"\";\n    this.toggleCommentLines = function (state, session, startRow, endRow) {\n        var doc = session.doc;\n        var ignoreBlankLines = true;\n        var shouldRemove = true;\n        var minIndent = Infinity;\n        var tabSize = session.getTabSize();\n        var insertAtTabStop = false;\n        if (!this.lineCommentStart) {\n            if (!this.blockComment)\n                return false;\n            var lineCommentStart = this.blockComment.start;\n            var lineCommentEnd = this.blockComment.end;\n            var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n            var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n            var comment = function (line, i) {\n                if (testRemove(line, i))\n                    return;\n                if (!ignoreBlankLines || /\\S/.test(line)) {\n                    doc.insertInLine({ row: i, column: line.length }, lineCommentEnd);\n                    doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n                }\n            };\n            var uncomment = function (line, i) {\n                var m;\n                if (m = line.match(regexpEnd))\n                    doc.removeInLine(i, line.length - m[0].length, line.length);\n                if (m = line.match(regexpStart))\n                    doc.removeInLine(i, m[1].length, m[0].length);\n            };\n            var testRemove = function (line, row) {\n                if (regexpStart.test(line))\n                    return true;\n                var tokens = session.getTokens(row);\n                for (var i = 0; i < tokens.length; i++) {\n                    if (tokens[i].type === \"comment\")\n                        return true;\n                }\n            };\n        }\n        else {\n            if (Array.isArray(this.lineCommentStart)) {\n                var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n                var lineCommentStart = this.lineCommentStart[0];\n            }\n            else {\n                var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n                var lineCommentStart = this.lineCommentStart;\n            }\n            regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n            insertAtTabStop = session.getUseSoftTabs();\n            var uncomment = function (line, i) {\n                var m = line.match(regexpStart);\n                if (!m)\n                    return;\n                var start = m[1].length, end = m[0].length;\n                if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n                    end--;\n                doc.removeInLine(i, start, end);\n            };\n            var commentWithSpace = lineCommentStart + \" \";\n            var comment = function (line, i) {\n                if (!ignoreBlankLines || /\\S/.test(line)) {\n                    if (shouldInsertSpace(line, minIndent, minIndent))\n                        doc.insertInLine({ row: i, column: minIndent }, commentWithSpace);\n                    else\n                        doc.insertInLine({ row: i, column: minIndent }, lineCommentStart);\n                }\n            };\n            var testRemove = function (line, i) {\n                return regexpStart.test(line);\n            };\n            var shouldInsertSpace = function (line, before, after) {\n                var spaces = 0;\n                while (before-- && line.charAt(before) == \" \")\n                    spaces++;\n                if (spaces % tabSize != 0)\n                    return false;\n                var spaces = 0;\n                while (line.charAt(after++) == \" \")\n                    spaces++;\n                if (tabSize > 2)\n                    return spaces % tabSize != tabSize - 1;\n                else\n                    return spaces % tabSize == 0;\n            };\n        }\n        function iter(fun) {\n            for (var i = startRow; i <= endRow; i++)\n                fun(doc.getLine(i), i);\n        }\n        var minEmptyLength = Infinity;\n        iter(function (line, i) {\n            var indent = line.search(/\\S/);\n            if (indent !== -1) {\n                if (indent < minIndent)\n                    minIndent = indent;\n                if (shouldRemove && !testRemove(line, i))\n                    shouldRemove = false;\n            }\n            else if (minEmptyLength > line.length) {\n                minEmptyLength = line.length;\n            }\n        });\n        if (minIndent == Infinity) {\n            minIndent = minEmptyLength;\n            ignoreBlankLines = false;\n            shouldRemove = false;\n        }\n        if (insertAtTabStop && minIndent % tabSize != 0)\n            minIndent = Math.floor(minIndent / tabSize) * tabSize;\n        iter(shouldRemove ? uncomment : comment);\n    };\n    this.toggleBlockComment = function (state, session, range, cursor) {\n        var comment = this.blockComment;\n        if (!comment)\n            return;\n        if (!comment.start && comment[0])\n            comment = comment[0];\n        var iterator = new TokenIterator(session, cursor.row, cursor.column);\n        var token = iterator.getCurrentToken();\n        var sel = session.selection;\n        var initialRange = session.selection.toOrientedRange();\n        var startRow, colDiff;\n        if (token && /comment/.test(token.type)) {\n            var startRange, endRange;\n            while (token && /comment/.test(token.type)) {\n                var i = token.value.indexOf(comment.start);\n                if (i != -1) {\n                    var row = iterator.getCurrentTokenRow();\n                    var column = iterator.getCurrentTokenColumn() + i;\n                    startRange = new Range(row, column, row, column + comment.start.length);\n                    break;\n                }\n                token = iterator.stepBackward();\n            }\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            while (token && /comment/.test(token.type)) {\n                var i = token.value.indexOf(comment.end);\n                if (i != -1) {\n                    var row = iterator.getCurrentTokenRow();\n                    var column = iterator.getCurrentTokenColumn() + i;\n                    endRange = new Range(row, column, row, column + comment.end.length);\n                    break;\n                }\n                token = iterator.stepForward();\n            }\n            if (endRange)\n                session.remove(endRange);\n            if (startRange) {\n                session.remove(startRange);\n                startRow = startRange.start.row;\n                colDiff = -comment.start.length;\n            }\n        }\n        else {\n            colDiff = comment.start.length;\n            startRow = range.start.row;\n            session.insert(range.end, comment.end);\n            session.insert(range.start, comment.start);\n        }\n        if (initialRange.start.row == startRow)\n            initialRange.start.column += colDiff;\n        if (initialRange.end.row == startRow)\n            initialRange.end.column += colDiff;\n        session.selection.fromOrientedRange(initialRange);\n    };\n    this.getNextLineIndent = function (state, line, tab) {\n        return this.$getIndent(line);\n    };\n    this.checkOutdent = function (state, line, input) {\n        return false;\n    };\n    this.autoOutdent = function (state, doc, row) {\n    };\n    this.$getIndent = function (line) {\n        return line.match(/^\\s*/)[0];\n    };\n    this.createWorker = function (session) {\n        return null;\n    };\n    this.createModeDelegates = function (mapping) {\n        this.$embeds = [];\n        this.$modes = {};\n        for (var i in mapping) {\n            if (mapping[i]) {\n                var Mode = mapping[i];\n                var id = Mode.prototype.$id;\n                var mode = config.$modes[id];\n                if (!mode)\n                    config.$modes[id] = mode = new Mode();\n                if (!config.$modes[i])\n                    config.$modes[i] = mode;\n                this.$embeds.push(i);\n                this.$modes[i] = mode;\n            }\n        }\n        var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\",\n            \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n        for (var i = 0; i < delegations.length; i++) {\n            (function (scope) {\n                var functionName = delegations[i];\n                var defaultHandler = scope[functionName];\n                scope[delegations[i]] = function () {\n                    return this.$delegator(functionName, arguments, defaultHandler);\n                };\n            }(this));\n        }\n    };\n    this.$delegator = function (method, args, defaultHandler) {\n        var state = args[0] || \"start\";\n        if (typeof state != \"string\") {\n            if (Array.isArray(state[2])) {\n                var language = state[2][state[2].length - 1];\n                var mode = this.$modes[language];\n                if (mode)\n                    return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n            }\n            state = state[0] || \"start\";\n        }\n        for (var i = 0; i < this.$embeds.length; i++) {\n            if (!this.$modes[this.$embeds[i]])\n                continue;\n            var split = state.split(this.$embeds[i]);\n            if (!split[0] && split[1]) {\n                args[0] = split[1];\n                var mode = this.$modes[this.$embeds[i]];\n                return mode[method].apply(mode, args);\n            }\n        }\n        var ret = defaultHandler.apply(this, args);\n        return defaultHandler ? ret : undefined;\n    };\n    this.transformAction = function (state, action, editor, session, param) {\n        if (this.$behaviour) {\n            var behaviours = this.$behaviour.getBehaviours();\n            for (var key in behaviours) {\n                if (behaviours[key][action]) {\n                    var ret = behaviours[key][action].apply(this, arguments);\n                    if (ret) {\n                        return ret;\n                    }\n                }\n            }\n        }\n    };\n    this.getKeywords = function (append) {\n        if (!this.completionKeywords) {\n            var rules = this.$tokenizer.rules;\n            var completionKeywords = [];\n            for (var rule in rules) {\n                var ruleItr = rules[rule];\n                for (var r = 0, l = ruleItr.length; r < l; r++) {\n                    if (typeof ruleItr[r].token === \"string\") {\n                        if (/keyword|support|storage/.test(ruleItr[r].token))\n                            completionKeywords.push(ruleItr[r].regex);\n                    }\n                    else if (typeof ruleItr[r].token === \"object\") {\n                        for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) {\n                            if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n                                var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n                                completionKeywords.push(rule.substr(1, rule.length - 2));\n                            }\n                        }\n                    }\n                }\n            }\n            this.completionKeywords = completionKeywords;\n        }\n        if (!append)\n            return this.$keywordList;\n        return completionKeywords.concat(this.$keywordList || []);\n    };\n    this.$createKeywordList = function () {\n        if (!this.$highlightRules)\n            this.getTokenizer();\n        return this.$keywordList = this.$highlightRules.$keywordList || [];\n    };\n    this.getCompletions = function (state, session, pos, prefix) {\n        var keywords = this.$keywordList || this.$createKeywordList();\n        return keywords.map(function (word) {\n            return {\n                name: word,\n                value: word,\n                score: 0,\n                meta: \"keyword\"\n            };\n        });\n    };\n    this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n    console.log(\"Invalid Delta:\", delta);\n    throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n    return position.row >= 0 && position.row < docLines.length &&\n        position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n    if (delta.action != \"insert\" && delta.action != \"remove\")\n        throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n    if (!(delta.lines instanceof Array))\n        throwDeltaError(delta, \"delta.lines must be an Array\");\n    if (!delta.start || !delta.end)\n        throwDeltaError(delta, \"delta.start/end must be an present\");\n    var start = delta.start;\n    if (!positionInDocument(docLines, delta.start))\n        throwDeltaError(delta, \"delta.start must be contained in document\");\n    var end = delta.end;\n    if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n        throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n    var numRangeRows = end.row - start.row;\n    var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n    if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n        throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n    var row = delta.start.row;\n    var startColumn = delta.start.column;\n    var line = docLines[row] || \"\";\n    switch (delta.action) {\n        case \"insert\":\n            var lines = delta.lines;\n            if (lines.length === 1) {\n                docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n            }\n            else {\n                var args = [row, 1].concat(delta.lines);\n                docLines.splice.apply(docLines, args);\n                docLines[row] = line.substring(0, startColumn) + docLines[row];\n                docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n            }\n            break;\n        case \"remove\":\n            var endColumn = delta.end.column;\n            var endRow = delta.end.row;\n            if (row === endRow) {\n                docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n            }\n            else {\n                docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n            }\n            break;\n    }\n};\n\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = exports.Anchor = function (doc, row, column) {\n    this.$onChange = this.onChange.bind(this);\n    this.attach(doc);\n    if (typeof column == \"undefined\")\n        this.setPosition(row.row, row.column);\n    else\n        this.setPosition(row, column);\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.getPosition = function () {\n        return this.$clipPositionToDocument(this.row, this.column);\n    };\n    this.getDocument = function () {\n        return this.document;\n    };\n    this.$insertRight = false;\n    this.onChange = function (delta) {\n        if (delta.start.row == delta.end.row && delta.start.row != this.row)\n            return;\n        if (delta.start.row > this.row)\n            return;\n        var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n        this.setPosition(point.row, point.column, true);\n    };\n    function $pointsInOrder(point1, point2, equalPointsInOrder) {\n        var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n        return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n    }\n    function $getTransformedPoint(delta, point, moveIfEqual) {\n        var deltaIsInsert = delta.action == \"insert\";\n        var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n        var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n        var deltaStart = delta.start;\n        var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n        if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n            return {\n                row: point.row,\n                column: point.column\n            };\n        }\n        if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n            return {\n                row: point.row + deltaRowShift,\n                column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n            };\n        }\n        return {\n            row: deltaStart.row,\n            column: deltaStart.column\n        };\n    }\n    this.setPosition = function (row, column, noClip) {\n        var pos;\n        if (noClip) {\n            pos = {\n                row: row,\n                column: column\n            };\n        }\n        else {\n            pos = this.$clipPositionToDocument(row, column);\n        }\n        if (this.row == pos.row && this.column == pos.column)\n            return;\n        var old = {\n            row: this.row,\n            column: this.column\n        };\n        this.row = pos.row;\n        this.column = pos.column;\n        this._signal(\"change\", {\n            old: old,\n            value: pos\n        });\n    };\n    this.detach = function () {\n        this.document.off(\"change\", this.$onChange);\n    };\n    this.attach = function (doc) {\n        this.document = doc || this.document;\n        this.document.on(\"change\", this.$onChange);\n    };\n    this.$clipPositionToDocument = function (row, column) {\n        var pos = {};\n        if (row >= this.document.getLength()) {\n            pos.row = Math.max(0, this.document.getLength() - 1);\n            pos.column = this.document.getLine(pos.row).length;\n        }\n        else if (row < 0) {\n            pos.row = 0;\n            pos.column = 0;\n        }\n        else {\n            pos.row = row;\n            pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n        }\n        if (column < 0)\n            pos.column = 0;\n        return pos;\n    };\n}).call(Anchor.prototype);\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = function (textOrLines) {\n    this.$lines = [\"\"];\n    if (textOrLines.length === 0) {\n        this.$lines = [\"\"];\n    }\n    else if (Array.isArray(textOrLines)) {\n        this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n    }\n    else {\n        this.insert({ row: 0, column: 0 }, textOrLines);\n    }\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.setValue = function (text) {\n        var len = this.getLength() - 1;\n        this.remove(new Range(0, 0, len, this.getLine(len).length));\n        this.insert({ row: 0, column: 0 }, text);\n    };\n    this.getValue = function () {\n        return this.getAllLines().join(this.getNewLineCharacter());\n    };\n    this.createAnchor = function (row, column) {\n        return new Anchor(this, row, column);\n    };\n    if (\"aaa\".split(/a/).length === 0) {\n        this.$split = function (text) {\n            return text.replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\n        };\n    }\n    else {\n        this.$split = function (text) {\n            return text.split(/\\r\\n|\\r|\\n/);\n        };\n    }\n    this.$detectNewLine = function (text) {\n        var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n        this.$autoNewLine = match ? match[1] : \"\\n\";\n        this._signal(\"changeNewLineMode\");\n    };\n    this.getNewLineCharacter = function () {\n        switch (this.$newLineMode) {\n            case \"windows\":\n                return \"\\r\\n\";\n            case \"unix\":\n                return \"\\n\";\n            default:\n                return this.$autoNewLine || \"\\n\";\n        }\n    };\n    this.$autoNewLine = \"\";\n    this.$newLineMode = \"auto\";\n    this.setNewLineMode = function (newLineMode) {\n        if (this.$newLineMode === newLineMode)\n            return;\n        this.$newLineMode = newLineMode;\n        this._signal(\"changeNewLineMode\");\n    };\n    this.getNewLineMode = function () {\n        return this.$newLineMode;\n    };\n    this.isNewLine = function (text) {\n        return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n    };\n    this.getLine = function (row) {\n        return this.$lines[row] || \"\";\n    };\n    this.getLines = function (firstRow, lastRow) {\n        return this.$lines.slice(firstRow, lastRow + 1);\n    };\n    this.getAllLines = function () {\n        return this.getLines(0, this.getLength());\n    };\n    this.getLength = function () {\n        return this.$lines.length;\n    };\n    this.getTextRange = function (range) {\n        return this.getLinesForRange(range).join(this.getNewLineCharacter());\n    };\n    this.getLinesForRange = function (range) {\n        var lines;\n        if (range.start.row === range.end.row) {\n            lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n        }\n        else {\n            lines = this.getLines(range.start.row, range.end.row);\n            lines[0] = (lines[0] || \"\").substring(range.start.column);\n            var l = lines.length - 1;\n            if (range.end.row - range.start.row == l)\n                lines[l] = lines[l].substring(0, range.end.column);\n        }\n        return lines;\n    };\n    this.insertLines = function (row, lines) {\n        console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n        return this.insertFullLines(row, lines);\n    };\n    this.removeLines = function (firstRow, lastRow) {\n        console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n        return this.removeFullLines(firstRow, lastRow);\n    };\n    this.insertNewLine = function (position) {\n        console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n        return this.insertMergedLines(position, [\"\", \"\"]);\n    };\n    this.insert = function (position, text) {\n        if (this.getLength() <= 1)\n            this.$detectNewLine(text);\n        return this.insertMergedLines(position, this.$split(text));\n    };\n    this.insertInLine = function (position, text) {\n        var start = this.clippedPos(position.row, position.column);\n        var end = this.pos(position.row, position.column + text.length);\n        this.applyDelta({\n            start: start,\n            end: end,\n            action: \"insert\",\n            lines: [text]\n        }, true);\n        return this.clonePos(end);\n    };\n    this.clippedPos = function (row, column) {\n        var length = this.getLength();\n        if (row === undefined) {\n            row = length;\n        }\n        else if (row < 0) {\n            row = 0;\n        }\n        else if (row >= length) {\n            row = length - 1;\n            column = undefined;\n        }\n        var line = this.getLine(row);\n        if (column == undefined)\n            column = line.length;\n        column = Math.min(Math.max(column, 0), line.length);\n        return { row: row, column: column };\n    };\n    this.clonePos = function (pos) {\n        return { row: pos.row, column: pos.column };\n    };\n    this.pos = function (row, column) {\n        return { row: row, column: column };\n    };\n    this.$clipPosition = function (position) {\n        var length = this.getLength();\n        if (position.row >= length) {\n            position.row = Math.max(0, length - 1);\n            position.column = this.getLine(length - 1).length;\n        }\n        else {\n            position.row = Math.max(0, position.row);\n            position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n        }\n        return position;\n    };\n    this.insertFullLines = function (row, lines) {\n        row = Math.min(Math.max(row, 0), this.getLength());\n        var column = 0;\n        if (row < this.getLength()) {\n            lines = lines.concat([\"\"]);\n            column = 0;\n        }\n        else {\n            lines = [\"\"].concat(lines);\n            row--;\n            column = this.$lines[row].length;\n        }\n        this.insertMergedLines({ row: row, column: column }, lines);\n    };\n    this.insertMergedLines = function (position, lines) {\n        var start = this.clippedPos(position.row, position.column);\n        var end = {\n            row: start.row + lines.length - 1,\n            column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n        };\n        this.applyDelta({\n            start: start,\n            end: end,\n            action: \"insert\",\n            lines: lines\n        });\n        return this.clonePos(end);\n    };\n    this.remove = function (range) {\n        var start = this.clippedPos(range.start.row, range.start.column);\n        var end = this.clippedPos(range.end.row, range.end.column);\n        this.applyDelta({\n            start: start,\n            end: end,\n            action: \"remove\",\n            lines: this.getLinesForRange({ start: start, end: end })\n        });\n        return this.clonePos(start);\n    };\n    this.removeInLine = function (row, startColumn, endColumn) {\n        var start = this.clippedPos(row, startColumn);\n        var end = this.clippedPos(row, endColumn);\n        this.applyDelta({\n            start: start,\n            end: end,\n            action: \"remove\",\n            lines: this.getLinesForRange({ start: start, end: end })\n        }, true);\n        return this.clonePos(start);\n    };\n    this.removeFullLines = function (firstRow, lastRow) {\n        firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n        lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n        var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n        var deleteLastNewLine = lastRow < this.getLength() - 1;\n        var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n        var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n        var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n        var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n        var range = new Range(startRow, startCol, endRow, endCol);\n        var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n        this.applyDelta({\n            start: range.start,\n            end: range.end,\n            action: \"remove\",\n            lines: this.getLinesForRange(range)\n        });\n        return deletedLines;\n    };\n    this.removeNewLine = function (row) {\n        if (row < this.getLength() - 1 && row >= 0) {\n            this.applyDelta({\n                start: this.pos(row, this.getLine(row).length),\n                end: this.pos(row + 1, 0),\n                action: \"remove\",\n                lines: [\"\", \"\"]\n            });\n        }\n    };\n    this.replace = function (range, text) {\n        if (!(range instanceof Range))\n            range = Range.fromPoints(range.start, range.end);\n        if (text.length === 0 && range.isEmpty())\n            return range.start;\n        if (text == this.getTextRange(range))\n            return range.end;\n        this.remove(range);\n        var end;\n        if (text) {\n            end = this.insert(range.start, text);\n        }\n        else {\n            end = range.start;\n        }\n        return end;\n    };\n    this.applyDeltas = function (deltas) {\n        for (var i = 0; i < deltas.length; i++) {\n            this.applyDelta(deltas[i]);\n        }\n    };\n    this.revertDeltas = function (deltas) {\n        for (var i = deltas.length - 1; i >= 0; i--) {\n            this.revertDelta(deltas[i]);\n        }\n    };\n    this.applyDelta = function (delta, doNotValidate) {\n        var isInsert = delta.action == \"insert\";\n        if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n            : !Range.comparePoints(delta.start, delta.end)) {\n            return;\n        }\n        if (isInsert && delta.lines.length > 20000) {\n            this.$splitAndapplyLargeDelta(delta, 20000);\n        }\n        else {\n            applyDelta(this.$lines, delta, doNotValidate);\n            this._signal(\"change\", delta);\n        }\n    };\n    this.$safeApplyDelta = function (delta) {\n        var docLength = this.$lines.length;\n        if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n            || delta.action == \"insert\" && delta.start.row <= docLength) {\n            this.applyDelta(delta);\n        }\n    };\n    this.$splitAndapplyLargeDelta = function (delta, MAX) {\n        var lines = delta.lines;\n        var l = lines.length - MAX + 1;\n        var row = delta.start.row;\n        var column = delta.start.column;\n        for (var from = 0, to = 0; from < l; from = to) {\n            to += MAX - 1;\n            var chunk = lines.slice(from, to);\n            chunk.push(\"\");\n            this.applyDelta({\n                start: this.pos(row + from, column),\n                end: this.pos(row + to, column = 0),\n                action: delta.action,\n                lines: chunk\n            }, true);\n        }\n        delta.lines = lines.slice(from);\n        delta.start.row = row + from;\n        delta.start.column = column;\n        this.applyDelta(delta, true);\n    };\n    this.revertDelta = function (delta) {\n        this.$safeApplyDelta({\n            start: this.clonePos(delta.start),\n            end: this.clonePos(delta.end),\n            action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n            lines: delta.lines.slice()\n        });\n    };\n    this.indexToPosition = function (index, startRow) {\n        var lines = this.$lines || this.getAllLines();\n        var newlineLength = this.getNewLineCharacter().length;\n        for (var i = startRow || 0, l = lines.length; i < l; i++) {\n            index -= lines[i].length + newlineLength;\n            if (index < 0)\n                return { row: i, column: index + lines[i].length + newlineLength };\n        }\n        return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n    };\n    this.positionToIndex = function (pos, startRow) {\n        var lines = this.$lines || this.getAllLines();\n        var newlineLength = this.getNewLineCharacter().length;\n        var index = 0;\n        var row = Math.min(pos.row, lines.length);\n        for (var i = startRow || 0; i < row; ++i)\n            index += lines[i].length + newlineLength;\n        return index + pos.column;\n    };\n}).call(Document.prototype);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar BackgroundTokenizer = function (tokenizer, editor) {\n    this.running = false;\n    this.lines = [];\n    this.states = [];\n    this.currentLine = 0;\n    this.tokenizer = tokenizer;\n    var self = this;\n    this.$worker = function () {\n        if (!self.running) {\n            return;\n        }\n        var workerStart = new Date();\n        var currentLine = self.currentLine;\n        var endLine = -1;\n        var doc = self.doc;\n        var startLine = currentLine;\n        while (self.lines[currentLine])\n            currentLine++;\n        var len = doc.getLength();\n        var processedLines = 0;\n        self.running = false;\n        while (currentLine < len) {\n            self.$tokenizeRow(currentLine);\n            endLine = currentLine;\n            do {\n                currentLine++;\n            } while (self.lines[currentLine]);\n            processedLines++;\n            if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n                self.running = setTimeout(self.$worker, 20);\n                break;\n            }\n        }\n        self.currentLine = currentLine;\n        if (endLine == -1)\n            endLine = currentLine;\n        if (startLine <= endLine)\n            self.fireUpdateEvent(startLine, endLine);\n    };\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.setTokenizer = function (tokenizer) {\n        this.tokenizer = tokenizer;\n        this.lines = [];\n        this.states = [];\n        this.start(0);\n    };\n    this.setDocument = function (doc) {\n        this.doc = doc;\n        this.lines = [];\n        this.states = [];\n        this.stop();\n    };\n    this.fireUpdateEvent = function (firstRow, lastRow) {\n        var data = {\n            first: firstRow,\n            last: lastRow\n        };\n        this._signal(\"update\", { data: data });\n    };\n    this.start = function (startRow) {\n        this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n        this.lines.splice(this.currentLine, this.lines.length);\n        this.states.splice(this.currentLine, this.states.length);\n        this.stop();\n        this.running = setTimeout(this.$worker, 700);\n    };\n    this.scheduleStart = function () {\n        if (!this.running)\n            this.running = setTimeout(this.$worker, 700);\n    };\n    this.$updateOnChange = function (delta) {\n        var startRow = delta.start.row;\n        var len = delta.end.row - startRow;\n        if (len === 0) {\n            this.lines[startRow] = null;\n        }\n        else if (delta.action == \"remove\") {\n            this.lines.splice(startRow, len + 1, null);\n            this.states.splice(startRow, len + 1, null);\n        }\n        else {\n            var args = Array(len + 1);\n            args.unshift(startRow, 1);\n            this.lines.splice.apply(this.lines, args);\n            this.states.splice.apply(this.states, args);\n        }\n        this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n        this.stop();\n    };\n    this.stop = function () {\n        if (this.running)\n            clearTimeout(this.running);\n        this.running = false;\n    };\n    this.getTokens = function (row) {\n        return this.lines[row] || this.$tokenizeRow(row);\n    };\n    this.getState = function (row) {\n        if (this.currentLine == row)\n            this.$tokenizeRow(row);\n        return this.states[row] || \"start\";\n    };\n    this.$tokenizeRow = function (row) {\n        var line = this.doc.getLine(row);\n        var state = this.states[row - 1];\n        var data = this.tokenizer.getLineTokens(line, state, row);\n        if (this.states[row] + \"\" !== data.state + \"\") {\n            this.states[row] = data.state;\n            this.lines[row + 1] = null;\n            if (this.currentLine > row + 1)\n                this.currentLine = row + 1;\n        }\n        else if (this.currentLine == row) {\n            this.currentLine = row + 1;\n        }\n        return this.lines[row] = data.tokens;\n    };\n    this.cleanup = function () {\n        this.running = false;\n        this.lines = [];\n        this.states = [];\n        this.currentLine = 0;\n        this.removeAllListeners();\n    };\n}).call(BackgroundTokenizer.prototype);\nexports.BackgroundTokenizer = BackgroundTokenizer;\n\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar SearchHighlight = function (regExp, clazz, type) {\n    this.setRegexp(regExp);\n    this.clazz = clazz;\n    this.type = type || \"text\";\n};\n(function () {\n    this.MAX_RANGES = 500;\n    this.setRegexp = function (regExp) {\n        if (this.regExp + \"\" == regExp + \"\")\n            return;\n        this.regExp = regExp;\n        this.cache = [];\n    };\n    this.update = function (html, markerLayer, session, config) {\n        if (!this.regExp)\n            return;\n        var start = config.firstRow, end = config.lastRow;\n        var renderedMarkerRanges = {};\n        for (var i = start; i <= end; i++) {\n            var ranges = this.cache[i];\n            if (ranges == null) {\n                ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n                if (ranges.length > this.MAX_RANGES)\n                    ranges = ranges.slice(0, this.MAX_RANGES);\n                ranges = ranges.map(function (match) {\n                    return new Range(i, match.offset, i, match.offset + match.length);\n                });\n                this.cache[i] = ranges.length ? ranges : \"\";\n            }\n            for (var j = ranges.length; j--;) {\n                var rangeToAddMarkerTo = ranges[j].toScreenRange(session);\n                var rangeAsString = rangeToAddMarkerTo.toString();\n                if (renderedMarkerRanges[rangeAsString])\n                    continue;\n                renderedMarkerRanges[rangeAsString] = true;\n                markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config);\n            }\n        }\n    };\n}).call(SearchHighlight.prototype);\nexports.SearchHighlight = SearchHighlight;\n\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nfunction FoldLine(foldData, folds) {\n    this.foldData = foldData;\n    if (Array.isArray(folds)) {\n        this.folds = folds;\n    }\n    else {\n        folds = this.folds = [folds];\n    }\n    var last = folds[folds.length - 1];\n    this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column);\n    this.start = this.range.start;\n    this.end = this.range.end;\n    this.folds.forEach(function (fold) {\n        fold.setFoldLine(this);\n    }, this);\n}\n(function () {\n    this.shiftRow = function (shift) {\n        this.start.row += shift;\n        this.end.row += shift;\n        this.folds.forEach(function (fold) {\n            fold.start.row += shift;\n            fold.end.row += shift;\n        });\n    };\n    this.addFold = function (fold) {\n        if (fold.sameRow) {\n            if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n                throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n            }\n            this.folds.push(fold);\n            this.folds.sort(function (a, b) {\n                return -a.range.compareEnd(b.start.row, b.start.column);\n            });\n            if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n                this.end.row = fold.end.row;\n                this.end.column = fold.end.column;\n            }\n            else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n                this.start.row = fold.start.row;\n                this.start.column = fold.start.column;\n            }\n        }\n        else if (fold.start.row == this.end.row) {\n            this.folds.push(fold);\n            this.end.row = fold.end.row;\n            this.end.column = fold.end.column;\n        }\n        else if (fold.end.row == this.start.row) {\n            this.folds.unshift(fold);\n            this.start.row = fold.start.row;\n            this.start.column = fold.start.column;\n        }\n        else {\n            throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n        }\n        fold.foldLine = this;\n    };\n    this.containsRow = function (row) {\n        return row >= this.start.row && row <= this.end.row;\n    };\n    this.walk = function (callback, endRow, endColumn) {\n        var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true;\n        if (endRow == null) {\n            endRow = this.end.row;\n            endColumn = this.end.column;\n        }\n        for (var i = 0; i < folds.length; i++) {\n            fold = folds[i];\n            cmp = fold.range.compareStart(endRow, endColumn);\n            if (cmp == -1) {\n                callback(null, endRow, endColumn, lastEnd, isNewRow);\n                return;\n            }\n            stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n            stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n            if (stop || cmp === 0) {\n                return;\n            }\n            isNewRow = !fold.sameRow;\n            lastEnd = fold.end.column;\n        }\n        callback(null, endRow, endColumn, lastEnd, isNewRow);\n    };\n    this.getNextFoldTo = function (row, column) {\n        var fold, cmp;\n        for (var i = 0; i < this.folds.length; i++) {\n            fold = this.folds[i];\n            cmp = fold.range.compareEnd(row, column);\n            if (cmp == -1) {\n                return {\n                    fold: fold,\n                    kind: \"after\"\n                };\n            }\n            else if (cmp === 0) {\n                return {\n                    fold: fold,\n                    kind: \"inside\"\n                };\n            }\n        }\n        return null;\n    };\n    this.addRemoveChars = function (row, column, len) {\n        var ret = this.getNextFoldTo(row, column), fold, folds;\n        if (ret) {\n            fold = ret.fold;\n            if (ret.kind == \"inside\"\n                && fold.start.column != column\n                && fold.start.row != row) {\n                window.console && window.console.log(row, column, fold);\n            }\n            else if (fold.start.row == row) {\n                folds = this.folds;\n                var i = folds.indexOf(fold);\n                if (i === 0) {\n                    this.start.column += len;\n                }\n                for (i; i < folds.length; i++) {\n                    fold = folds[i];\n                    fold.start.column += len;\n                    if (!fold.sameRow) {\n                        return;\n                    }\n                    fold.end.column += len;\n                }\n                this.end.column += len;\n            }\n        }\n    };\n    this.split = function (row, column) {\n        var pos = this.getNextFoldTo(row, column);\n        if (!pos || pos.kind == \"inside\")\n            return null;\n        var fold = pos.fold;\n        var folds = this.folds;\n        var foldData = this.foldData;\n        var i = folds.indexOf(fold);\n        var foldBefore = folds[i - 1];\n        this.end.row = foldBefore.end.row;\n        this.end.column = foldBefore.end.column;\n        folds = folds.splice(i, folds.length - i);\n        var newFoldLine = new FoldLine(foldData, folds);\n        foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n        return newFoldLine;\n    };\n    this.merge = function (foldLineNext) {\n        var folds = foldLineNext.folds;\n        for (var i = 0; i < folds.length; i++) {\n            this.addFold(folds[i]);\n        }\n        var foldData = this.foldData;\n        foldData.splice(foldData.indexOf(foldLineNext), 1);\n    };\n    this.toString = function () {\n        var ret = [this.range.toString() + \": [\"];\n        this.folds.forEach(function (fold) {\n            ret.push(\"  \" + fold.toString());\n        });\n        ret.push(\"]\");\n        return ret.join(\"\\n\");\n    };\n    this.idxToPosition = function (idx) {\n        var lastFoldEndColumn = 0;\n        for (var i = 0; i < this.folds.length; i++) {\n            var fold = this.folds[i];\n            idx -= fold.start.column - lastFoldEndColumn;\n            if (idx < 0) {\n                return {\n                    row: fold.start.row,\n                    column: fold.start.column + idx\n                };\n            }\n            idx -= fold.placeholder.length;\n            if (idx < 0) {\n                return fold.start;\n            }\n            lastFoldEndColumn = fold.end.column;\n        }\n        return {\n            row: this.end.row,\n            column: this.end.column + idx\n        };\n    };\n}).call(FoldLine.prototype);\nexports.FoldLine = FoldLine;\n\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\nvar RangeList = function () {\n    this.ranges = [];\n    this.$bias = 1;\n};\n(function () {\n    this.comparePoints = comparePoints;\n    this.pointIndex = function (pos, excludeEdges, startIndex) {\n        var list = this.ranges;\n        for (var i = startIndex || 0; i < list.length; i++) {\n            var range = list[i];\n            var cmpEnd = comparePoints(pos, range.end);\n            if (cmpEnd > 0)\n                continue;\n            var cmpStart = comparePoints(pos, range.start);\n            if (cmpEnd === 0)\n                return excludeEdges && cmpStart !== 0 ? -i - 2 : i;\n            if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n                return i;\n            return -i - 1;\n        }\n        return -i - 1;\n    };\n    this.add = function (range) {\n        var excludeEdges = !range.isEmpty();\n        var startIndex = this.pointIndex(range.start, excludeEdges);\n        if (startIndex < 0)\n            startIndex = -startIndex - 1;\n        var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n        if (endIndex < 0)\n            endIndex = -endIndex - 1;\n        else\n            endIndex++;\n        return this.ranges.splice(startIndex, endIndex - startIndex, range);\n    };\n    this.addList = function (list) {\n        var removed = [];\n        for (var i = list.length; i--;) {\n            removed.push.apply(removed, this.add(list[i]));\n        }\n        return removed;\n    };\n    this.substractPoint = function (pos) {\n        var i = this.pointIndex(pos);\n        if (i >= 0)\n            return this.ranges.splice(i, 1);\n    };\n    this.merge = function () {\n        var removed = [];\n        var list = this.ranges;\n        list = list.sort(function (a, b) {\n            return comparePoints(a.start, b.start);\n        });\n        var next = list[0], range;\n        for (var i = 1; i < list.length; i++) {\n            range = next;\n            next = list[i];\n            var cmp = comparePoints(range.end, next.start);\n            if (cmp < 0)\n                continue;\n            if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n                continue;\n            if (comparePoints(range.end, next.end) < 0) {\n                range.end.row = next.end.row;\n                range.end.column = next.end.column;\n            }\n            list.splice(i, 1);\n            removed.push(next);\n            next = range;\n            i--;\n        }\n        this.ranges = list;\n        return removed;\n    };\n    this.contains = function (row, column) {\n        return this.pointIndex({ row: row, column: column }) >= 0;\n    };\n    this.containsPoint = function (pos) {\n        return this.pointIndex(pos) >= 0;\n    };\n    this.rangeAtPoint = function (pos) {\n        var i = this.pointIndex(pos);\n        if (i >= 0)\n            return this.ranges[i];\n    };\n    this.clipRows = function (startRow, endRow) {\n        var list = this.ranges;\n        if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n            return [];\n        var startIndex = this.pointIndex({ row: startRow, column: 0 });\n        if (startIndex < 0)\n            startIndex = -startIndex - 1;\n        var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex);\n        if (endIndex < 0)\n            endIndex = -endIndex - 1;\n        var clipped = [];\n        for (var i = startIndex; i < endIndex; i++) {\n            clipped.push(list[i]);\n        }\n        return clipped;\n    };\n    this.removeAll = function () {\n        return this.ranges.splice(0, this.ranges.length);\n    };\n    this.attach = function (session) {\n        if (this.session)\n            this.detach();\n        this.session = session;\n        this.onChange = this.$onChange.bind(this);\n        this.session.on('change', this.onChange);\n    };\n    this.detach = function () {\n        if (!this.session)\n            return;\n        this.session.removeListener('change', this.onChange);\n        this.session = null;\n    };\n    this.$onChange = function (delta) {\n        var start = delta.start;\n        var end = delta.end;\n        var startRow = start.row;\n        var endRow = end.row;\n        var ranges = this.ranges;\n        for (var i = 0, n = ranges.length; i < n; i++) {\n            var r = ranges[i];\n            if (r.end.row >= startRow)\n                break;\n        }\n        if (delta.action == \"insert\") {\n            var lineDif = endRow - startRow;\n            var colDiff = -start.column + end.column;\n            for (; i < n; i++) {\n                var r = ranges[i];\n                if (r.start.row > startRow)\n                    break;\n                if (r.start.row == startRow && r.start.column >= start.column) {\n                    if (r.start.column == start.column && this.$bias <= 0) {\n                    }\n                    else {\n                        r.start.column += colDiff;\n                        r.start.row += lineDif;\n                    }\n                }\n                if (r.end.row == startRow && r.end.column >= start.column) {\n                    if (r.end.column == start.column && this.$bias < 0) {\n                        continue;\n                    }\n                    if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n                        if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column)\n                            r.end.column -= colDiff;\n                    }\n                    r.end.column += colDiff;\n                    r.end.row += lineDif;\n                }\n            }\n        }\n        else {\n            var lineDif = startRow - endRow;\n            var colDiff = start.column - end.column;\n            for (; i < n; i++) {\n                var r = ranges[i];\n                if (r.start.row > endRow)\n                    break;\n                if (r.end.row < endRow\n                    && (startRow < r.end.row\n                        || startRow == r.end.row && start.column < r.end.column)) {\n                    r.end.row = startRow;\n                    r.end.column = start.column;\n                }\n                else if (r.end.row == endRow) {\n                    if (r.end.column <= end.column) {\n                        if (lineDif || r.end.column > start.column) {\n                            r.end.column = start.column;\n                            r.end.row = start.row;\n                        }\n                    }\n                    else {\n                        r.end.column += colDiff;\n                        r.end.row += lineDif;\n                    }\n                }\n                else if (r.end.row > endRow) {\n                    r.end.row += lineDif;\n                }\n                if (r.start.row < endRow\n                    && (startRow < r.start.row\n                        || startRow == r.start.row && start.column < r.start.column)) {\n                    r.start.row = startRow;\n                    r.start.column = start.column;\n                }\n                else if (r.start.row == endRow) {\n                    if (r.start.column <= end.column) {\n                        if (lineDif || r.start.column > start.column) {\n                            r.start.column = start.column;\n                            r.start.row = start.row;\n                        }\n                    }\n                    else {\n                        r.start.column += colDiff;\n                        r.start.row += lineDif;\n                    }\n                }\n                else if (r.start.row > endRow) {\n                    r.start.row += lineDif;\n                }\n            }\n        }\n        if (lineDif != 0 && i < n) {\n            for (; i < n; i++) {\n                var r = ranges[i];\n                r.start.row += lineDif;\n                r.end.row += lineDif;\n            }\n        }\n    };\n}).call(RangeList.prototype);\nexports.RangeList = RangeList;\n\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar RangeList = require(\"../range_list\").RangeList;\nvar oop = require(\"../lib/oop\");\nvar Fold = exports.Fold = function (range, placeholder) {\n    this.foldLine = null;\n    this.placeholder = placeholder;\n    this.range = range;\n    this.start = range.start;\n    this.end = range.end;\n    this.sameRow = range.start.row == range.end.row;\n    this.subFolds = this.ranges = [];\n};\noop.inherits(Fold, RangeList);\n(function () {\n    this.toString = function () {\n        return '\"' + this.placeholder + '\" ' + this.range.toString();\n    };\n    this.setFoldLine = function (foldLine) {\n        this.foldLine = foldLine;\n        this.subFolds.forEach(function (fold) {\n            fold.setFoldLine(foldLine);\n        });\n    };\n    this.clone = function () {\n        var range = this.range.clone();\n        var fold = new Fold(range, this.placeholder);\n        this.subFolds.forEach(function (subFold) {\n            fold.subFolds.push(subFold.clone());\n        });\n        fold.collapseChildren = this.collapseChildren;\n        return fold;\n    };\n    this.addSubFold = function (fold) {\n        if (this.range.isEqual(fold))\n            return;\n        consumeRange(fold, this.start);\n        var row = fold.start.row, column = fold.start.column;\n        for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n            cmp = this.subFolds[i].range.compare(row, column);\n            if (cmp != 1)\n                break;\n        }\n        var afterStart = this.subFolds[i];\n        var firstConsumed = 0;\n        if (cmp == 0) {\n            if (afterStart.range.containsRange(fold))\n                return afterStart.addSubFold(fold);\n            else\n                firstConsumed = 1;\n        }\n        var row = fold.range.end.row, column = fold.range.end.column;\n        for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n            cmp = this.subFolds[j].range.compare(row, column);\n            if (cmp != 1)\n                break;\n        }\n        if (cmp == 0)\n            j++;\n        var consumedFolds = this.subFolds.splice(i, j - i, fold);\n        var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n        for (var k = firstConsumed; k < last; k++) {\n            fold.addSubFold(consumedFolds[k]);\n        }\n        fold.setFoldLine(this.foldLine);\n        return fold;\n    };\n    this.restoreRange = function (range) {\n        return restoreRange(range, this.start);\n    };\n}).call(Fold.prototype);\nfunction consumePoint(point, anchor) {\n    point.row -= anchor.row;\n    if (point.row == 0)\n        point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n    consumePoint(range.start, anchor);\n    consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n    if (point.row == 0)\n        point.column += anchor.column;\n    point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n    restorePoint(range.start, anchor);\n    restorePoint(range.end, anchor);\n}\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nfunction Folding() {\n    this.getFoldAt = function (row, column, side) {\n        var foldLine = this.getFoldLine(row);\n        if (!foldLine)\n            return null;\n        var folds = foldLine.folds;\n        for (var i = 0; i < folds.length; i++) {\n            var range = folds[i].range;\n            if (range.contains(row, column)) {\n                if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n                    continue;\n                }\n                else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n                    continue;\n                }\n                return folds[i];\n            }\n        }\n    };\n    this.getFoldsInRange = function (range) {\n        var start = range.start;\n        var end = range.end;\n        var foldLines = this.$foldData;\n        var foundFolds = [];\n        start.column += 1;\n        end.column -= 1;\n        for (var i = 0; i < foldLines.length; i++) {\n            var cmp = foldLines[i].range.compareRange(range);\n            if (cmp == 2) {\n                continue;\n            }\n            else if (cmp == -2) {\n                break;\n            }\n            var folds = foldLines[i].folds;\n            for (var j = 0; j < folds.length; j++) {\n                var fold = folds[j];\n                cmp = fold.range.compareRange(range);\n                if (cmp == -2) {\n                    break;\n                }\n                else if (cmp == 2) {\n                    continue;\n                }\n                else \n                if (cmp == 42) {\n                    break;\n                }\n                foundFolds.push(fold);\n            }\n        }\n        start.column -= 1;\n        end.column += 1;\n        return foundFolds;\n    };\n    this.getFoldsInRangeList = function (ranges) {\n        if (Array.isArray(ranges)) {\n            var folds = [];\n            ranges.forEach(function (range) {\n                folds = folds.concat(this.getFoldsInRange(range));\n            }, this);\n        }\n        else {\n            var folds = this.getFoldsInRange(ranges);\n        }\n        return folds;\n    };\n    this.getAllFolds = function () {\n        var folds = [];\n        var foldLines = this.$foldData;\n        for (var i = 0; i < foldLines.length; i++)\n            for (var j = 0; j < foldLines[i].folds.length; j++)\n                folds.push(foldLines[i].folds[j]);\n        return folds;\n    };\n    this.getFoldStringAt = function (row, column, trim, foldLine) {\n        foldLine = foldLine || this.getFoldLine(row);\n        if (!foldLine)\n            return null;\n        var lastFold = {\n            end: { column: 0 }\n        };\n        var str, fold;\n        for (var i = 0; i < foldLine.folds.length; i++) {\n            fold = foldLine.folds[i];\n            var cmp = fold.range.compareEnd(row, column);\n            if (cmp == -1) {\n                str = this\n                    .getLine(fold.start.row)\n                    .substring(lastFold.end.column, fold.start.column);\n                break;\n            }\n            else if (cmp === 0) {\n                return null;\n            }\n            lastFold = fold;\n        }\n        if (!str)\n            str = this.getLine(fold.start.row).substring(lastFold.end.column);\n        if (trim == -1)\n            return str.substring(0, column - lastFold.end.column);\n        else if (trim == 1)\n            return str.substring(column - lastFold.end.column);\n        else\n            return str;\n    };\n    this.getFoldLine = function (docRow, startFoldLine) {\n        var foldData = this.$foldData;\n        var i = 0;\n        if (startFoldLine)\n            i = foldData.indexOf(startFoldLine);\n        if (i == -1)\n            i = 0;\n        for (i; i < foldData.length; i++) {\n            var foldLine = foldData[i];\n            if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n                return foldLine;\n            }\n            else if (foldLine.end.row > docRow) {\n                return null;\n            }\n        }\n        return null;\n    };\n    this.getNextFoldLine = function (docRow, startFoldLine) {\n        var foldData = this.$foldData;\n        var i = 0;\n        if (startFoldLine)\n            i = foldData.indexOf(startFoldLine);\n        if (i == -1)\n            i = 0;\n        for (i; i < foldData.length; i++) {\n            var foldLine = foldData[i];\n            if (foldLine.end.row >= docRow) {\n                return foldLine;\n            }\n        }\n        return null;\n    };\n    this.getFoldedRowCount = function (first, last) {\n        var foldData = this.$foldData, rowCount = last - first + 1;\n        for (var i = 0; i < foldData.length; i++) {\n            var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row;\n            if (end >= last) {\n                if (start < last) {\n                    if (start >= first)\n                        rowCount -= last - start;\n                    else\n                        rowCount = 0; // in one fold\n                }\n                break;\n            }\n            else if (end >= first) {\n                if (start >= first) // fold inside range\n                    rowCount -= end - start;\n                else\n                    rowCount -= end - first + 1;\n            }\n        }\n        return rowCount;\n    };\n    this.$addFoldLine = function (foldLine) {\n        this.$foldData.push(foldLine);\n        this.$foldData.sort(function (a, b) {\n            return a.start.row - b.start.row;\n        });\n        return foldLine;\n    };\n    this.addFold = function (placeholder, range) {\n        var foldData = this.$foldData;\n        var added = false;\n        var fold;\n        if (placeholder instanceof Fold)\n            fold = placeholder;\n        else {\n            fold = new Fold(range, placeholder);\n            fold.collapseChildren = range.collapseChildren;\n        }\n        this.$clipRangeToDocument(fold.range);\n        var startRow = fold.start.row;\n        var startColumn = fold.start.column;\n        var endRow = fold.end.row;\n        var endColumn = fold.end.column;\n        var startFold = this.getFoldAt(startRow, startColumn, 1);\n        var endFold = this.getFoldAt(endRow, endColumn, -1);\n        if (startFold && endFold == startFold)\n            return startFold.addSubFold(fold);\n        if (startFold && !startFold.range.isStart(startRow, startColumn))\n            this.removeFold(startFold);\n        if (endFold && !endFold.range.isEnd(endRow, endColumn))\n            this.removeFold(endFold);\n        var folds = this.getFoldsInRange(fold.range);\n        if (folds.length > 0) {\n            this.removeFolds(folds);\n            if (!fold.collapseChildren) {\n                folds.forEach(function (subFold) {\n                    fold.addSubFold(subFold);\n                });\n            }\n        }\n        for (var i = 0; i < foldData.length; i++) {\n            var foldLine = foldData[i];\n            if (endRow == foldLine.start.row) {\n                foldLine.addFold(fold);\n                added = true;\n                break;\n            }\n            else if (startRow == foldLine.end.row) {\n                foldLine.addFold(fold);\n                added = true;\n                if (!fold.sameRow) {\n                    var foldLineNext = foldData[i + 1];\n                    if (foldLineNext && foldLineNext.start.row == endRow) {\n                        foldLine.merge(foldLineNext);\n                        break;\n                    }\n                }\n                break;\n            }\n            else if (endRow <= foldLine.start.row) {\n                break;\n            }\n        }\n        if (!added)\n            foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n        if (this.$useWrapMode)\n            this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n        else\n            this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n        this.$modified = true;\n        this._signal(\"changeFold\", { data: fold, action: \"add\" });\n        return fold;\n    };\n    this.addFolds = function (folds) {\n        folds.forEach(function (fold) {\n            this.addFold(fold);\n        }, this);\n    };\n    this.removeFold = function (fold) {\n        var foldLine = fold.foldLine;\n        var startRow = foldLine.start.row;\n        var endRow = foldLine.end.row;\n        var foldLines = this.$foldData;\n        var folds = foldLine.folds;\n        if (folds.length == 1) {\n            foldLines.splice(foldLines.indexOf(foldLine), 1);\n        }\n        else \n        if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n            folds.pop();\n            foldLine.end.row = folds[folds.length - 1].end.row;\n            foldLine.end.column = folds[folds.length - 1].end.column;\n        }\n        else \n        if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n            folds.shift();\n            foldLine.start.row = folds[0].start.row;\n            foldLine.start.column = folds[0].start.column;\n        }\n        else \n        if (fold.sameRow) {\n            folds.splice(folds.indexOf(fold), 1);\n        }\n        else \n        {\n            var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n            folds = newFoldLine.folds;\n            folds.shift();\n            newFoldLine.start.row = folds[0].start.row;\n            newFoldLine.start.column = folds[0].start.column;\n        }\n        if (!this.$updating) {\n            if (this.$useWrapMode)\n                this.$updateWrapData(startRow, endRow);\n            else\n                this.$updateRowLengthCache(startRow, endRow);\n        }\n        this.$modified = true;\n        this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n    };\n    this.removeFolds = function (folds) {\n        var cloneFolds = [];\n        for (var i = 0; i < folds.length; i++) {\n            cloneFolds.push(folds[i]);\n        }\n        cloneFolds.forEach(function (fold) {\n            this.removeFold(fold);\n        }, this);\n        this.$modified = true;\n    };\n    this.expandFold = function (fold) {\n        this.removeFold(fold);\n        fold.subFolds.forEach(function (subFold) {\n            fold.restoreRange(subFold);\n            this.addFold(subFold);\n        }, this);\n        if (fold.collapseChildren > 0) {\n            this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1);\n        }\n        fold.subFolds = [];\n    };\n    this.expandFolds = function (folds) {\n        folds.forEach(function (fold) {\n            this.expandFold(fold);\n        }, this);\n    };\n    this.unfold = function (location, expandInner) {\n        var range, folds;\n        if (location == null) {\n            range = new Range(0, 0, this.getLength(), 0);\n            if (expandInner == null)\n                expandInner = true;\n        }\n        else if (typeof location == \"number\") {\n            range = new Range(location, 0, location, this.getLine(location).length);\n        }\n        else if (\"row\" in location) {\n            range = Range.fromPoints(location, location);\n        }\n        else if (Array.isArray(location)) {\n            folds = [];\n            location.forEach(function (range) {\n                folds = folds.concat(this.unfold(range));\n            }, this);\n            return folds;\n        }\n        else {\n            range = location;\n        }\n        folds = this.getFoldsInRangeList(range);\n        var outermostFolds = folds;\n        while (folds.length == 1\n            && Range.comparePoints(folds[0].start, range.start) < 0\n            && Range.comparePoints(folds[0].end, range.end) > 0) {\n            this.expandFolds(folds);\n            folds = this.getFoldsInRangeList(range);\n        }\n        if (expandInner != false) {\n            this.removeFolds(folds);\n        }\n        else {\n            this.expandFolds(folds);\n        }\n        if (outermostFolds.length)\n            return outermostFolds;\n    };\n    this.isRowFolded = function (docRow, startFoldRow) {\n        return !!this.getFoldLine(docRow, startFoldRow);\n    };\n    this.getRowFoldEnd = function (docRow, startFoldRow) {\n        var foldLine = this.getFoldLine(docRow, startFoldRow);\n        return foldLine ? foldLine.end.row : docRow;\n    };\n    this.getRowFoldStart = function (docRow, startFoldRow) {\n        var foldLine = this.getFoldLine(docRow, startFoldRow);\n        return foldLine ? foldLine.start.row : docRow;\n    };\n    this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) {\n        if (startRow == null)\n            startRow = foldLine.start.row;\n        if (startColumn == null)\n            startColumn = 0;\n        if (endRow == null)\n            endRow = foldLine.end.row;\n        if (endColumn == null)\n            endColumn = this.getLine(endRow).length;\n        var doc = this.doc;\n        var textLine = \"\";\n        foldLine.walk(function (placeholder, row, column, lastColumn) {\n            if (row < startRow)\n                return;\n            if (row == startRow) {\n                if (column < startColumn)\n                    return;\n                lastColumn = Math.max(startColumn, lastColumn);\n            }\n            if (placeholder != null) {\n                textLine += placeholder;\n            }\n            else {\n                textLine += doc.getLine(row).substring(lastColumn, column);\n            }\n        }, endRow, endColumn);\n        return textLine;\n    };\n    this.getDisplayLine = function (row, endColumn, startRow, startColumn) {\n        var foldLine = this.getFoldLine(row);\n        if (!foldLine) {\n            var line;\n            line = this.doc.getLine(row);\n            return line.substring(startColumn || 0, endColumn || line.length);\n        }\n        else {\n            return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn);\n        }\n    };\n    this.$cloneFoldData = function () {\n        var fd = [];\n        fd = this.$foldData.map(function (foldLine) {\n            var folds = foldLine.folds.map(function (fold) {\n                return fold.clone();\n            });\n            return new FoldLine(fd, folds);\n        });\n        return fd;\n    };\n    this.toggleFold = function (tryToUnfold) {\n        var selection = this.selection;\n        var range = selection.getRange();\n        var fold;\n        var bracketPos;\n        if (range.isEmpty()) {\n            var cursor = range.start;\n            fold = this.getFoldAt(cursor.row, cursor.column);\n            if (fold) {\n                this.expandFold(fold);\n                return;\n            }\n            else if (bracketPos = this.findMatchingBracket(cursor)) {\n                if (range.comparePoint(bracketPos) == 1) {\n                    range.end = bracketPos;\n                }\n                else {\n                    range.start = bracketPos;\n                    range.start.column++;\n                    range.end.column--;\n                }\n            }\n            else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) {\n                if (range.comparePoint(bracketPos) == 1)\n                    range.end = bracketPos;\n                else\n                    range.start = bracketPos;\n                range.start.column++;\n            }\n            else {\n                range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n            }\n        }\n        else {\n            var folds = this.getFoldsInRange(range);\n            if (tryToUnfold && folds.length) {\n                this.expandFolds(folds);\n                return;\n            }\n            else if (folds.length == 1) {\n                fold = folds[0];\n            }\n        }\n        if (!fold)\n            fold = this.getFoldAt(range.start.row, range.start.column);\n        if (fold && fold.range.toString() == range.toString()) {\n            this.expandFold(fold);\n            return;\n        }\n        var placeholder = \"...\";\n        if (!range.isMultiLine()) {\n            placeholder = this.getTextRange(range);\n            if (placeholder.length < 4)\n                return;\n            placeholder = placeholder.trim().substring(0, 2) + \"..\";\n        }\n        this.addFold(placeholder, range);\n    };\n    this.getCommentFoldRange = function (row, column, dir) {\n        var iterator = new TokenIterator(this, row, column);\n        var token = iterator.getCurrentToken();\n        var type = token && token.type;\n        if (token && /^comment|string/.test(type)) {\n            type = type.match(/comment|string/)[0];\n            if (type == \"comment\")\n                type += \"|doc-start\";\n            var re = new RegExp(type);\n            var range = new Range();\n            if (dir != 1) {\n                do {\n                    token = iterator.stepBackward();\n                } while (token && re.test(token.type));\n                iterator.stepForward();\n            }\n            range.start.row = iterator.getCurrentTokenRow();\n            range.start.column = iterator.getCurrentTokenColumn() + 2;\n            iterator = new TokenIterator(this, row, column);\n            if (dir != -1) {\n                var lastRow = -1;\n                do {\n                    token = iterator.stepForward();\n                    if (lastRow == -1) {\n                        var state = this.getState(iterator.$row);\n                        if (!re.test(state))\n                            lastRow = iterator.$row;\n                    }\n                    else if (iterator.$row > lastRow) {\n                        break;\n                    }\n                } while (token && re.test(token.type));\n                token = iterator.stepBackward();\n            }\n            else\n                token = iterator.getCurrentToken();\n            range.end.row = iterator.getCurrentTokenRow();\n            range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\n            return range;\n        }\n    };\n    this.foldAll = function (startRow, endRow, depth, test) {\n        if (depth == undefined)\n            depth = 100000; // JSON.stringify doesn't hanle Infinity\n        var foldWidgets = this.foldWidgets;\n        if (!foldWidgets)\n            return; // mode doesn't support folding\n        endRow = endRow || this.getLength();\n        startRow = startRow || 0;\n        for (var row = startRow; row < endRow; row++) {\n            if (foldWidgets[row] == null)\n                foldWidgets[row] = this.getFoldWidget(row);\n            if (foldWidgets[row] != \"start\")\n                continue;\n            if (test && !test(row))\n                continue;\n            var range = this.getFoldWidgetRange(row);\n            if (range && range.isMultiLine()\n                && range.end.row <= endRow\n                && range.start.row >= startRow) {\n                row = range.end.row;\n                range.collapseChildren = depth;\n                this.addFold(\"...\", range);\n            }\n        }\n    };\n    this.foldToLevel = function (level) {\n        this.foldAll();\n        while (level-- > 0)\n            this.unfold(null, false);\n    };\n    this.foldAllComments = function () {\n        var session = this;\n        this.foldAll(null, null, null, function (row) {\n            var tokens = session.getTokens(row);\n            for (var i = 0; i < tokens.length; i++) {\n                var token = tokens[i];\n                if (token.type == \"text\" && /^\\s+$/.test(token.value))\n                    continue;\n                if (/comment/.test(token.type))\n                    return true;\n                return false;\n            }\n        });\n    };\n    this.$foldStyles = {\n        \"manual\": 1,\n        \"markbegin\": 1,\n        \"markbeginend\": 1\n    };\n    this.$foldStyle = \"markbegin\";\n    this.setFoldStyle = function (style) {\n        if (!this.$foldStyles[style])\n            throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n        if (this.$foldStyle == style)\n            return;\n        this.$foldStyle = style;\n        if (style == \"manual\")\n            this.unfold();\n        var mode = this.$foldMode;\n        this.$setFolding(null);\n        this.$setFolding(mode);\n    };\n    this.$setFolding = function (foldMode) {\n        if (this.$foldMode == foldMode)\n            return;\n        this.$foldMode = foldMode;\n        this.off('change', this.$updateFoldWidgets);\n        this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n        this._signal(\"changeAnnotation\");\n        if (!foldMode || this.$foldStyle == \"manual\") {\n            this.foldWidgets = null;\n            return;\n        }\n        this.foldWidgets = [];\n        this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n        this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n        this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n        this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n        this.on('change', this.$updateFoldWidgets);\n        this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n    };\n    this.getParentFoldRangeData = function (row, ignoreCurrent) {\n        var fw = this.foldWidgets;\n        if (!fw || (ignoreCurrent && fw[row]))\n            return {};\n        var i = row - 1, firstRange;\n        while (i >= 0) {\n            var c = fw[i];\n            if (c == null)\n                c = fw[i] = this.getFoldWidget(i);\n            if (c == \"start\") {\n                var range = this.getFoldWidgetRange(i);\n                if (!firstRange)\n                    firstRange = range;\n                if (range && range.end.row >= row)\n                    break;\n            }\n            i--;\n        }\n        return {\n            range: i !== -1 && range,\n            firstRange: firstRange\n        };\n    };\n    this.onFoldWidgetClick = function (row, e) {\n        e = e.domEvent;\n        var options = {\n            children: e.shiftKey,\n            all: e.ctrlKey || e.metaKey,\n            siblings: e.altKey\n        };\n        var range = this.$toggleFoldWidget(row, options);\n        if (!range) {\n            var el = (e.target || e.srcElement);\n            if (el && /ace_fold-widget/.test(el.className))\n                el.className += \" ace_invalid\";\n        }\n    };\n    this.$toggleFoldWidget = function (row, options) {\n        if (!this.getFoldWidget)\n            return;\n        var type = this.getFoldWidget(row);\n        var line = this.getLine(row);\n        var dir = type === \"end\" ? -1 : 1;\n        var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n        if (fold) {\n            if (options.children || options.all)\n                this.removeFold(fold);\n            else\n                this.expandFold(fold);\n            return fold;\n        }\n        var range = this.getFoldWidgetRange(row, true);\n        if (range && !range.isMultiLine()) {\n            fold = this.getFoldAt(range.start.row, range.start.column, 1);\n            if (fold && range.isEqual(fold.range)) {\n                this.removeFold(fold);\n                return fold;\n            }\n        }\n        if (options.siblings) {\n            var data = this.getParentFoldRangeData(row);\n            if (data.range) {\n                var startRow = data.range.start.row + 1;\n                var endRow = data.range.end.row;\n            }\n            this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n        }\n        else if (options.children) {\n            endRow = range ? range.end.row : this.getLength();\n            this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n        }\n        else if (range) {\n            if (options.all)\n                range.collapseChildren = 10000;\n            this.addFold(\"...\", range);\n        }\n        return range;\n    };\n    this.toggleFoldWidget = function (toggleParent) {\n        var row = this.selection.getCursor().row;\n        row = this.getRowFoldStart(row);\n        var range = this.$toggleFoldWidget(row, {});\n        if (range)\n            return;\n        var data = this.getParentFoldRangeData(row, true);\n        range = data.range || data.firstRange;\n        if (range) {\n            row = range.start.row;\n            var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n            if (fold) {\n                this.removeFold(fold);\n            }\n            else {\n                this.addFold(\"...\", range);\n            }\n        }\n    };\n    this.updateFoldWidgets = function (delta) {\n        var firstRow = delta.start.row;\n        var len = delta.end.row - firstRow;\n        if (len === 0) {\n            this.foldWidgets[firstRow] = null;\n        }\n        else if (delta.action == 'remove') {\n            this.foldWidgets.splice(firstRow, len + 1, null);\n        }\n        else {\n            var args = Array(len + 1);\n            args.unshift(firstRow, 1);\n            this.foldWidgets.splice.apply(this.foldWidgets, args);\n        }\n    };\n    this.tokenizerUpdateFoldWidgets = function (e) {\n        var rows = e.data;\n        if (rows.first != rows.last) {\n            if (this.foldWidgets.length > rows.first)\n                this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n        }\n    };\n}\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\nfunction BracketMatch() {\n    this.findMatchingBracket = function (position, chr) {\n        if (position.column == 0)\n            return null;\n        var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1);\n        if (charBeforeCursor == \"\")\n            return null;\n        var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n        if (!match)\n            return null;\n        if (match[1])\n            return this.$findClosingBracket(match[1], position);\n        else\n            return this.$findOpeningBracket(match[2], position);\n    };\n    this.getBracketRange = function (pos) {\n        var line = this.getLine(pos.row);\n        var before = true, range;\n        var chr = line.charAt(pos.column - 1);\n        var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n        if (!match) {\n            chr = line.charAt(pos.column);\n            pos = { row: pos.row, column: pos.column + 1 };\n            match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n            before = false;\n        }\n        if (!match)\n            return null;\n        if (match[1]) {\n            var bracketPos = this.$findClosingBracket(match[1], pos);\n            if (!bracketPos)\n                return null;\n            range = Range.fromPoints(pos, bracketPos);\n            if (!before) {\n                range.end.column++;\n                range.start.column--;\n            }\n            range.cursor = range.end;\n        }\n        else {\n            var bracketPos = this.$findOpeningBracket(match[2], pos);\n            if (!bracketPos)\n                return null;\n            range = Range.fromPoints(bracketPos, pos);\n            if (!before) {\n                range.start.column++;\n                range.end.column--;\n            }\n            range.cursor = range.start;\n        }\n        return range;\n    };\n    this.getMatchingBracketRanges = function (pos) {\n        var line = this.getLine(pos.row);\n        var chr = line.charAt(pos.column - 1);\n        var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n        if (!match) {\n            chr = line.charAt(pos.column);\n            pos = { row: pos.row, column: pos.column + 1 };\n            match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n        }\n        if (!match)\n            return null;\n        var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n        var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n            : this.$findOpeningBracket(match[2], pos);\n        if (!bracketPos)\n            return [startRange];\n        var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n        return [startRange, endRange];\n    };\n    this.$brackets = {\n        \")\": \"(\",\n        \"(\": \")\",\n        \"]\": \"[\",\n        \"[\": \"]\",\n        \"{\": \"}\",\n        \"}\": \"{\",\n        \"<\": \">\",\n        \">\": \"<\"\n    };\n    this.$findOpeningBracket = function (bracket, position, typeRe) {\n        var openBracket = this.$brackets[bracket];\n        var depth = 1;\n        var iterator = new TokenIterator(this, position.row, position.column);\n        var token = iterator.getCurrentToken();\n        if (!token)\n            token = iterator.stepForward();\n        if (!token)\n            return;\n        if (!typeRe) {\n            typeRe = new RegExp(\"(\\\\.?\" +\n                token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n                    .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n                + \")+\");\n        }\n        var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n        var value = token.value;\n        while (true) {\n            while (valueIndex >= 0) {\n                var chr = value.charAt(valueIndex);\n                if (chr == openBracket) {\n                    depth -= 1;\n                    if (depth == 0) {\n                        return { row: iterator.getCurrentTokenRow(),\n                            column: valueIndex + iterator.getCurrentTokenColumn() };\n                    }\n                }\n                else if (chr == bracket) {\n                    depth += 1;\n                }\n                valueIndex -= 1;\n            }\n            do {\n                token = iterator.stepBackward();\n            } while (token && !typeRe.test(token.type));\n            if (token == null)\n                break;\n            value = token.value;\n            valueIndex = value.length - 1;\n        }\n        return null;\n    };\n    this.$findClosingBracket = function (bracket, position, typeRe) {\n        var closingBracket = this.$brackets[bracket];\n        var depth = 1;\n        var iterator = new TokenIterator(this, position.row, position.column);\n        var token = iterator.getCurrentToken();\n        if (!token)\n            token = iterator.stepForward();\n        if (!token)\n            return;\n        if (!typeRe) {\n            typeRe = new RegExp(\"(\\\\.?\" +\n                token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n                    .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n                + \")+\");\n        }\n        var valueIndex = position.column - iterator.getCurrentTokenColumn();\n        while (true) {\n            var value = token.value;\n            var valueLength = value.length;\n            while (valueIndex < valueLength) {\n                var chr = value.charAt(valueIndex);\n                if (chr == closingBracket) {\n                    depth -= 1;\n                    if (depth == 0) {\n                        return { row: iterator.getCurrentTokenRow(),\n                            column: valueIndex + iterator.getCurrentTokenColumn() };\n                    }\n                }\n                else if (chr == bracket) {\n                    depth += 1;\n                }\n                valueIndex += 1;\n            }\n            do {\n                token = iterator.stepForward();\n            } while (token && !typeRe.test(token.type));\n            if (token == null)\n                break;\n            valueIndex = 0;\n        }\n        return null;\n    };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\nvar EditSession = function (text, mode) {\n    this.$breakpoints = [];\n    this.$decorations = [];\n    this.$frontMarkers = {};\n    this.$backMarkers = {};\n    this.$markerId = 1;\n    this.$undoSelect = true;\n    this.$foldData = [];\n    this.id = \"session\" + (++EditSession.$uid);\n    this.$foldData.toString = function () {\n        return this.join(\"\\n\");\n    };\n    this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this);\n    var _self = this;\n    this.bgTokenizer.on(\"update\", function (e) {\n        _self._signal(\"tokenizerUpdate\", e);\n    });\n    this.on(\"changeFold\", this.onChangeFold.bind(this));\n    this.$onChange = this.onChange.bind(this);\n    if (typeof text != \"object\" || !text.getLine)\n        text = new Document(text);\n    this.setDocument(text);\n    this.selection = new Selection(this);\n    this.$bidiHandler = new BidiHandler(this);\n    config.resetOptions(this);\n    this.setMode(mode);\n    config._signal(\"session\", this);\n    this.destroyed = false;\n};\nEditSession.$uid = 0;\n(function () {\n    oop.implement(this, EventEmitter);\n    this.setDocument = function (doc) {\n        if (this.doc)\n            this.doc.off(\"change\", this.$onChange);\n        this.doc = doc;\n        doc.on(\"change\", this.$onChange, true);\n        this.bgTokenizer.setDocument(this.getDocument());\n        this.resetCaches();\n    };\n    this.getDocument = function () {\n        return this.doc;\n    };\n    this.$resetRowCache = function (docRow) {\n        if (!docRow) {\n            this.$docRowCache = [];\n            this.$screenRowCache = [];\n            return;\n        }\n        var l = this.$docRowCache.length;\n        var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n        if (l > i) {\n            this.$docRowCache.splice(i, l);\n            this.$screenRowCache.splice(i, l);\n        }\n    };\n    this.$getRowCacheIndex = function (cacheArray, val) {\n        var low = 0;\n        var hi = cacheArray.length - 1;\n        while (low <= hi) {\n            var mid = (low + hi) >> 1;\n            var c = cacheArray[mid];\n            if (val > c)\n                low = mid + 1;\n            else if (val < c)\n                hi = mid - 1;\n            else\n                return mid;\n        }\n        return low - 1;\n    };\n    this.resetCaches = function () {\n        this.$modified = true;\n        this.$wrapData = [];\n        this.$rowLengthCache = [];\n        this.$resetRowCache(0);\n        if (!this.destroyed)\n            this.bgTokenizer.start(0);\n    };\n    this.onChangeFold = function (e) {\n        var fold = e.data;\n        this.$resetRowCache(fold.start.row);\n    };\n    this.onChange = function (delta) {\n        this.$modified = true;\n        this.$bidiHandler.onChange(delta);\n        this.$resetRowCache(delta.start.row);\n        var removedFolds = this.$updateInternalDataOnChange(delta);\n        if (!this.$fromUndo && this.$undoManager) {\n            if (removedFolds && removedFolds.length) {\n                this.$undoManager.add({\n                    action: \"removeFolds\",\n                    folds: removedFolds\n                }, this.mergeUndoDeltas);\n                this.mergeUndoDeltas = true;\n            }\n            this.$undoManager.add(delta, this.mergeUndoDeltas);\n            this.mergeUndoDeltas = true;\n            this.$informUndoManager.schedule();\n        }\n        this.bgTokenizer.$updateOnChange(delta);\n        this._signal(\"change\", delta);\n    };\n    this.setValue = function (text) {\n        this.doc.setValue(text);\n        this.selection.moveTo(0, 0);\n        this.$resetRowCache(0);\n        this.setUndoManager(this.$undoManager);\n        this.getUndoManager().reset();\n    };\n    this.getValue =\n        this.toString = function () {\n            return this.doc.getValue();\n        };\n    this.getSelection = function () {\n        return this.selection;\n    };\n    this.getState = function (row) {\n        return this.bgTokenizer.getState(row);\n    };\n    this.getTokens = function (row) {\n        return this.bgTokenizer.getTokens(row);\n    };\n    this.getTokenAt = function (row, column) {\n        var tokens = this.bgTokenizer.getTokens(row);\n        var token, c = 0;\n        if (column == null) {\n            var i = tokens.length - 1;\n            c = this.getLine(row).length;\n        }\n        else {\n            for (var i = 0; i < tokens.length; i++) {\n                c += tokens[i].value.length;\n                if (c >= column)\n                    break;\n            }\n        }\n        token = tokens[i];\n        if (!token)\n            return null;\n        token.index = i;\n        token.start = c - token.value.length;\n        return token;\n    };\n    this.setUndoManager = function (undoManager) {\n        this.$undoManager = undoManager;\n        if (this.$informUndoManager)\n            this.$informUndoManager.cancel();\n        if (undoManager) {\n            var self = this;\n            undoManager.addSession(this);\n            this.$syncInformUndoManager = function () {\n                self.$informUndoManager.cancel();\n                self.mergeUndoDeltas = false;\n            };\n            this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n        }\n        else {\n            this.$syncInformUndoManager = function () { };\n        }\n    };\n    this.markUndoGroup = function () {\n        if (this.$syncInformUndoManager)\n            this.$syncInformUndoManager();\n    };\n    this.$defaultUndoManager = {\n        undo: function () { },\n        redo: function () { },\n        hasUndo: function () { },\n        hasRedo: function () { },\n        reset: function () { },\n        add: function () { },\n        addSelection: function () { },\n        startNewGroup: function () { },\n        addSession: function () { }\n    };\n    this.getUndoManager = function () {\n        return this.$undoManager || this.$defaultUndoManager;\n    };\n    this.getTabString = function () {\n        if (this.getUseSoftTabs()) {\n            return lang.stringRepeat(\" \", this.getTabSize());\n        }\n        else {\n            return \"\\t\";\n        }\n    };\n    this.setUseSoftTabs = function (val) {\n        this.setOption(\"useSoftTabs\", val);\n    };\n    this.getUseSoftTabs = function () {\n        return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n    };\n    this.setTabSize = function (tabSize) {\n        this.setOption(\"tabSize\", tabSize);\n    };\n    this.getTabSize = function () {\n        return this.$tabSize;\n    };\n    this.isTabStop = function (position) {\n        return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n    };\n    this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n        this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n    };\n    this.getNavigateWithinSoftTabs = function () {\n        return this.$navigateWithinSoftTabs;\n    };\n    this.$overwrite = false;\n    this.setOverwrite = function (overwrite) {\n        this.setOption(\"overwrite\", overwrite);\n    };\n    this.getOverwrite = function () {\n        return this.$overwrite;\n    };\n    this.toggleOverwrite = function () {\n        this.setOverwrite(!this.$overwrite);\n    };\n    this.addGutterDecoration = function (row, className) {\n        if (!this.$decorations[row])\n            this.$decorations[row] = \"\";\n        this.$decorations[row] += \" \" + className;\n        this._signal(\"changeBreakpoint\", {});\n    };\n    this.removeGutterDecoration = function (row, className) {\n        this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n        this._signal(\"changeBreakpoint\", {});\n    };\n    this.getBreakpoints = function () {\n        return this.$breakpoints;\n    };\n    this.setBreakpoints = function (rows) {\n        this.$breakpoints = [];\n        for (var i = 0; i < rows.length; i++) {\n            this.$breakpoints[rows[i]] = \"ace_breakpoint\";\n        }\n        this._signal(\"changeBreakpoint\", {});\n    };\n    this.clearBreakpoints = function () {\n        this.$breakpoints = [];\n        this._signal(\"changeBreakpoint\", {});\n    };\n    this.setBreakpoint = function (row, className) {\n        if (className === undefined)\n            className = \"ace_breakpoint\";\n        if (className)\n            this.$breakpoints[row] = className;\n        else\n            delete this.$breakpoints[row];\n        this._signal(\"changeBreakpoint\", {});\n    };\n    this.clearBreakpoint = function (row) {\n        delete this.$breakpoints[row];\n        this._signal(\"changeBreakpoint\", {});\n    };\n    this.addMarker = function (range, clazz, type, inFront) {\n        var id = this.$markerId++;\n        var marker = {\n            range: range,\n            type: type || \"line\",\n            renderer: typeof type == \"function\" ? type : null,\n            clazz: clazz,\n            inFront: !!inFront,\n            id: id\n        };\n        if (inFront) {\n            this.$frontMarkers[id] = marker;\n            this._signal(\"changeFrontMarker\");\n        }\n        else {\n            this.$backMarkers[id] = marker;\n            this._signal(\"changeBackMarker\");\n        }\n        return id;\n    };\n    this.addDynamicMarker = function (marker, inFront) {\n        if (!marker.update)\n            return;\n        var id = this.$markerId++;\n        marker.id = id;\n        marker.inFront = !!inFront;\n        if (inFront) {\n            this.$frontMarkers[id] = marker;\n            this._signal(\"changeFrontMarker\");\n        }\n        else {\n            this.$backMarkers[id] = marker;\n            this._signal(\"changeBackMarker\");\n        }\n        return marker;\n    };\n    this.removeMarker = function (markerId) {\n        var marker = this.$frontMarkers[markerId] || this.$backMarkers[markerId];\n        if (!marker)\n            return;\n        var markers = marker.inFront ? this.$frontMarkers : this.$backMarkers;\n        delete (markers[markerId]);\n        this._signal(marker.inFront ? \"changeFrontMarker\" : \"changeBackMarker\");\n    };\n    this.getMarkers = function (inFront) {\n        return inFront ? this.$frontMarkers : this.$backMarkers;\n    };\n    this.highlight = function (re) {\n        if (!this.$searchHighlight) {\n            var highlight = new SearchHighlight(null, \"ace_selected-word\", \"text\");\n            this.$searchHighlight = this.addDynamicMarker(highlight);\n        }\n        this.$searchHighlight.setRegexp(re);\n    };\n    this.highlightLines = function (startRow, endRow, clazz, inFront) {\n        if (typeof endRow != \"number\") {\n            clazz = endRow;\n            endRow = startRow;\n        }\n        if (!clazz)\n            clazz = \"ace_step\";\n        var range = new Range(startRow, 0, endRow, Infinity);\n        range.id = this.addMarker(range, clazz, \"fullLine\", inFront);\n        return range;\n    };\n    this.setAnnotations = function (annotations) {\n        this.$annotations = annotations;\n        this._signal(\"changeAnnotation\", {});\n    };\n    this.getAnnotations = function () {\n        return this.$annotations || [];\n    };\n    this.clearAnnotations = function () {\n        this.setAnnotations([]);\n    };\n    this.$detectNewLine = function (text) {\n        var match = text.match(/^.*?(\\r?\\n)/m);\n        if (match) {\n            this.$autoNewLine = match[1];\n        }\n        else {\n            this.$autoNewLine = \"\\n\";\n        }\n    };\n    this.getWordRange = function (row, column) {\n        var line = this.getLine(row);\n        var inToken = false;\n        if (column > 0)\n            inToken = !!line.charAt(column - 1).match(this.tokenRe);\n        if (!inToken)\n            inToken = !!line.charAt(column).match(this.tokenRe);\n        if (inToken)\n            var re = this.tokenRe;\n        else if (/^\\s+$/.test(line.slice(column - 1, column + 1)))\n            var re = /\\s/;\n        else\n            var re = this.nonTokenRe;\n        var start = column;\n        if (start > 0) {\n            do {\n                start--;\n            } while (start >= 0 && line.charAt(start).match(re));\n            start++;\n        }\n        var end = column;\n        while (end < line.length && line.charAt(end).match(re)) {\n            end++;\n        }\n        return new Range(row, start, row, end);\n    };\n    this.getAWordRange = function (row, column) {\n        var wordRange = this.getWordRange(row, column);\n        var line = this.getLine(wordRange.end.row);\n        while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n            wordRange.end.column += 1;\n        }\n        return wordRange;\n    };\n    this.setNewLineMode = function (newLineMode) {\n        this.doc.setNewLineMode(newLineMode);\n    };\n    this.getNewLineMode = function () {\n        return this.doc.getNewLineMode();\n    };\n    this.setUseWorker = function (useWorker) { this.setOption(\"useWorker\", useWorker); };\n    this.getUseWorker = function () { return this.$useWorker; };\n    this.onReloadTokenizer = function (e) {\n        var rows = e.data;\n        this.bgTokenizer.start(rows.first);\n        this._signal(\"tokenizerUpdate\", e);\n    };\n    this.$modes = config.$modes;\n    this.$mode = null;\n    this.$modeId = null;\n    this.setMode = function (mode, cb) {\n        if (mode && typeof mode === \"object\") {\n            if (mode.getTokenizer)\n                return this.$onChangeMode(mode);\n            var options = mode;\n            var path = options.path;\n        }\n        else {\n            path = mode || \"ace/mode/text\";\n        }\n        if (!this.$modes[\"ace/mode/text\"])\n            this.$modes[\"ace/mode/text\"] = new TextMode();\n        if (this.$modes[path] && !options) {\n            this.$onChangeMode(this.$modes[path]);\n            cb && cb();\n            return;\n        }\n        this.$modeId = path;\n        config.loadModule([\"mode\", path], function (m) {\n            if (this.$modeId !== path)\n                return cb && cb();\n            if (this.$modes[path] && !options) {\n                this.$onChangeMode(this.$modes[path]);\n            }\n            else if (m && m.Mode) {\n                m = new m.Mode(options);\n                if (!options) {\n                    this.$modes[path] = m;\n                    m.$id = path;\n                }\n                this.$onChangeMode(m);\n            }\n            cb && cb();\n        }.bind(this));\n        if (!this.$mode)\n            this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n    };\n    this.$onChangeMode = function (mode, $isPlaceholder) {\n        if (!$isPlaceholder)\n            this.$modeId = mode.$id;\n        if (this.$mode === mode)\n            return;\n        var oldMode = this.$mode;\n        this.$mode = mode;\n        this.$stopWorker();\n        if (this.$useWorker)\n            this.$startWorker();\n        var tokenizer = mode.getTokenizer();\n        if (tokenizer.on !== undefined) {\n            var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n            tokenizer.on(\"update\", onReloadTokenizer);\n        }\n        this.bgTokenizer.setTokenizer(tokenizer);\n        this.bgTokenizer.setDocument(this.getDocument());\n        this.tokenRe = mode.tokenRe;\n        this.nonTokenRe = mode.nonTokenRe;\n        if (!$isPlaceholder) {\n            if (mode.attachToSession)\n                mode.attachToSession(this);\n            this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n            this.$setFolding(mode.foldingRules);\n            this.bgTokenizer.start(0);\n            this._emit(\"changeMode\", { oldMode: oldMode, mode: mode });\n        }\n    };\n    this.$stopWorker = function () {\n        if (this.$worker) {\n            this.$worker.terminate();\n            this.$worker = null;\n        }\n    };\n    this.$startWorker = function () {\n        try {\n            this.$worker = this.$mode.createWorker(this);\n        }\n        catch (e) {\n            config.warn(\"Could not load worker\", e);\n            this.$worker = null;\n        }\n    };\n    this.getMode = function () {\n        return this.$mode;\n    };\n    this.$scrollTop = 0;\n    this.setScrollTop = function (scrollTop) {\n        if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n            return;\n        this.$scrollTop = scrollTop;\n        this._signal(\"changeScrollTop\", scrollTop);\n    };\n    this.getScrollTop = function () {\n        return this.$scrollTop;\n    };\n    this.$scrollLeft = 0;\n    this.setScrollLeft = function (scrollLeft) {\n        if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n            return;\n        this.$scrollLeft = scrollLeft;\n        this._signal(\"changeScrollLeft\", scrollLeft);\n    };\n    this.getScrollLeft = function () {\n        return this.$scrollLeft;\n    };\n    this.getScreenWidth = function () {\n        this.$computeWidth();\n        if (this.lineWidgets)\n            return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n        return this.screenWidth;\n    };\n    this.getLineWidgetMaxWidth = function () {\n        if (this.lineWidgetsWidth != null)\n            return this.lineWidgetsWidth;\n        var width = 0;\n        this.lineWidgets.forEach(function (w) {\n            if (w && w.screenWidth > width)\n                width = w.screenWidth;\n        });\n        return this.lineWidgetWidth = width;\n    };\n    this.$computeWidth = function (force) {\n        if (this.$modified || force) {\n            this.$modified = false;\n            if (this.$useWrapMode)\n                return this.screenWidth = this.$wrapLimit;\n            var lines = this.doc.getAllLines();\n            var cache = this.$rowLengthCache;\n            var longestScreenLine = 0;\n            var foldIndex = 0;\n            var foldLine = this.$foldData[foldIndex];\n            var foldStart = foldLine ? foldLine.start.row : Infinity;\n            var len = lines.length;\n            for (var i = 0; i < len; i++) {\n                if (i > foldStart) {\n                    i = foldLine.end.row + 1;\n                    if (i >= len)\n                        break;\n                    foldLine = this.$foldData[foldIndex++];\n                    foldStart = foldLine ? foldLine.start.row : Infinity;\n                }\n                if (cache[i] == null)\n                    cache[i] = this.$getStringScreenWidth(lines[i])[0];\n                if (cache[i] > longestScreenLine)\n                    longestScreenLine = cache[i];\n            }\n            this.screenWidth = longestScreenLine;\n        }\n    };\n    this.getLine = function (row) {\n        return this.doc.getLine(row);\n    };\n    this.getLines = function (firstRow, lastRow) {\n        return this.doc.getLines(firstRow, lastRow);\n    };\n    this.getLength = function () {\n        return this.doc.getLength();\n    };\n    this.getTextRange = function (range) {\n        return this.doc.getTextRange(range || this.selection.getRange());\n    };\n    this.insert = function (position, text) {\n        return this.doc.insert(position, text);\n    };\n    this.remove = function (range) {\n        return this.doc.remove(range);\n    };\n    this.removeFullLines = function (firstRow, lastRow) {\n        return this.doc.removeFullLines(firstRow, lastRow);\n    };\n    this.undoChanges = function (deltas, dontSelect) {\n        if (!deltas.length)\n            return;\n        this.$fromUndo = true;\n        for (var i = deltas.length - 1; i != -1; i--) {\n            var delta = deltas[i];\n            if (delta.action == \"insert\" || delta.action == \"remove\") {\n                this.doc.revertDelta(delta);\n            }\n            else if (delta.folds) {\n                this.addFolds(delta.folds);\n            }\n        }\n        if (!dontSelect && this.$undoSelect) {\n            if (deltas.selectionBefore)\n                this.selection.fromJSON(deltas.selectionBefore);\n            else\n                this.selection.setRange(this.$getUndoSelection(deltas, true));\n        }\n        this.$fromUndo = false;\n    };\n    this.redoChanges = function (deltas, dontSelect) {\n        if (!deltas.length)\n            return;\n        this.$fromUndo = true;\n        for (var i = 0; i < deltas.length; i++) {\n            var delta = deltas[i];\n            if (delta.action == \"insert\" || delta.action == \"remove\") {\n                this.doc.$safeApplyDelta(delta);\n            }\n        }\n        if (!dontSelect && this.$undoSelect) {\n            if (deltas.selectionAfter)\n                this.selection.fromJSON(deltas.selectionAfter);\n            else\n                this.selection.setRange(this.$getUndoSelection(deltas, false));\n        }\n        this.$fromUndo = false;\n    };\n    this.setUndoSelect = function (enable) {\n        this.$undoSelect = enable;\n    };\n    this.$getUndoSelection = function (deltas, isUndo) {\n        function isInsert(delta) {\n            return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n        }\n        var range, point;\n        for (var i = 0; i < deltas.length; i++) {\n            var delta = deltas[i];\n            if (!delta.start)\n                continue; // skip folds\n            if (!range) {\n                if (isInsert(delta)) {\n                    range = Range.fromPoints(delta.start, delta.end);\n                }\n                else {\n                    range = Range.fromPoints(delta.start, delta.start);\n                }\n                continue;\n            }\n            if (isInsert(delta)) {\n                point = delta.start;\n                if (range.compare(point.row, point.column) == -1) {\n                    range.setStart(point);\n                }\n                point = delta.end;\n                if (range.compare(point.row, point.column) == 1) {\n                    range.setEnd(point);\n                }\n            }\n            else {\n                point = delta.start;\n                if (range.compare(point.row, point.column) == -1) {\n                    range = Range.fromPoints(delta.start, delta.start);\n                }\n            }\n        }\n        return range;\n    };\n    this.replace = function (range, text) {\n        return this.doc.replace(range, text);\n    };\n    this.moveText = function (fromRange, toPosition, copy) {\n        var text = this.getTextRange(fromRange);\n        var folds = this.getFoldsInRange(fromRange);\n        var toRange = Range.fromPoints(toPosition, toPosition);\n        if (!copy) {\n            this.remove(fromRange);\n            var rowDiff = fromRange.start.row - fromRange.end.row;\n            var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n            if (collDiff) {\n                if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n                    toRange.start.column += collDiff;\n                if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n                    toRange.end.column += collDiff;\n            }\n            if (rowDiff && toRange.start.row >= fromRange.end.row) {\n                toRange.start.row += rowDiff;\n                toRange.end.row += rowDiff;\n            }\n        }\n        toRange.end = this.insert(toRange.start, text);\n        if (folds.length) {\n            var oldStart = fromRange.start;\n            var newStart = toRange.start;\n            var rowDiff = newStart.row - oldStart.row;\n            var collDiff = newStart.column - oldStart.column;\n            this.addFolds(folds.map(function (x) {\n                x = x.clone();\n                if (x.start.row == oldStart.row)\n                    x.start.column += collDiff;\n                if (x.end.row == oldStart.row)\n                    x.end.column += collDiff;\n                x.start.row += rowDiff;\n                x.end.row += rowDiff;\n                return x;\n            }));\n        }\n        return toRange;\n    };\n    this.indentRows = function (startRow, endRow, indentString) {\n        indentString = indentString.replace(/\\t/g, this.getTabString());\n        for (var row = startRow; row <= endRow; row++)\n            this.doc.insertInLine({ row: row, column: 0 }, indentString);\n    };\n    this.outdentRows = function (range) {\n        var rowRange = range.collapseRows();\n        var deleteRange = new Range(0, 0, 0, 0);\n        var size = this.getTabSize();\n        for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n            var line = this.getLine(i);\n            deleteRange.start.row = i;\n            deleteRange.end.row = i;\n            for (var j = 0; j < size; ++j)\n                if (line.charAt(j) != ' ')\n                    break;\n            if (j < size && line.charAt(j) == '\\t') {\n                deleteRange.start.column = j;\n                deleteRange.end.column = j + 1;\n            }\n            else {\n                deleteRange.start.column = 0;\n                deleteRange.end.column = j;\n            }\n            this.remove(deleteRange);\n        }\n    };\n    this.$moveLines = function (firstRow, lastRow, dir) {\n        firstRow = this.getRowFoldStart(firstRow);\n        lastRow = this.getRowFoldEnd(lastRow);\n        if (dir < 0) {\n            var row = this.getRowFoldStart(firstRow + dir);\n            if (row < 0)\n                return 0;\n            var diff = row - firstRow;\n        }\n        else if (dir > 0) {\n            var row = this.getRowFoldEnd(lastRow + dir);\n            if (row > this.doc.getLength() - 1)\n                return 0;\n            var diff = row - lastRow;\n        }\n        else {\n            firstRow = this.$clipRowToDocument(firstRow);\n            lastRow = this.$clipRowToDocument(lastRow);\n            var diff = lastRow - firstRow + 1;\n        }\n        var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n        var folds = this.getFoldsInRange(range).map(function (x) {\n            x = x.clone();\n            x.start.row += diff;\n            x.end.row += diff;\n            return x;\n        });\n        var lines = dir == 0\n            ? this.doc.getLines(firstRow, lastRow)\n            : this.doc.removeFullLines(firstRow, lastRow);\n        this.doc.insertFullLines(firstRow + diff, lines);\n        folds.length && this.addFolds(folds);\n        return diff;\n    };\n    this.moveLinesUp = function (firstRow, lastRow) {\n        return this.$moveLines(firstRow, lastRow, -1);\n    };\n    this.moveLinesDown = function (firstRow, lastRow) {\n        return this.$moveLines(firstRow, lastRow, 1);\n    };\n    this.duplicateLines = function (firstRow, lastRow) {\n        return this.$moveLines(firstRow, lastRow, 0);\n    };\n    this.$clipRowToDocument = function (row) {\n        return Math.max(0, Math.min(row, this.doc.getLength() - 1));\n    };\n    this.$clipColumnToRow = function (row, column) {\n        if (column < 0)\n            return 0;\n        return Math.min(this.doc.getLine(row).length, column);\n    };\n    this.$clipPositionToDocument = function (row, column) {\n        column = Math.max(0, column);\n        if (row < 0) {\n            row = 0;\n            column = 0;\n        }\n        else {\n            var len = this.doc.getLength();\n            if (row >= len) {\n                row = len - 1;\n                column = this.doc.getLine(len - 1).length;\n            }\n            else {\n                column = Math.min(this.doc.getLine(row).length, column);\n            }\n        }\n        return {\n            row: row,\n            column: column\n        };\n    };\n    this.$clipRangeToDocument = function (range) {\n        if (range.start.row < 0) {\n            range.start.row = 0;\n            range.start.column = 0;\n        }\n        else {\n            range.start.column = this.$clipColumnToRow(range.start.row, range.start.column);\n        }\n        var len = this.doc.getLength() - 1;\n        if (range.end.row > len) {\n            range.end.row = len;\n            range.end.column = this.doc.getLine(len).length;\n        }\n        else {\n            range.end.column = this.$clipColumnToRow(range.end.row, range.end.column);\n        }\n        return range;\n    };\n    this.$wrapLimit = 80;\n    this.$useWrapMode = false;\n    this.$wrapLimitRange = {\n        min: null,\n        max: null\n    };\n    this.setUseWrapMode = function (useWrapMode) {\n        if (useWrapMode != this.$useWrapMode) {\n            this.$useWrapMode = useWrapMode;\n            this.$modified = true;\n            this.$resetRowCache(0);\n            if (useWrapMode) {\n                var len = this.getLength();\n                this.$wrapData = Array(len);\n                this.$updateWrapData(0, len - 1);\n            }\n            this._signal(\"changeWrapMode\");\n        }\n    };\n    this.getUseWrapMode = function () {\n        return this.$useWrapMode;\n    };\n    this.setWrapLimitRange = function (min, max) {\n        if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n            this.$wrapLimitRange = { min: min, max: max };\n            this.$modified = true;\n            this.$bidiHandler.markAsDirty();\n            if (this.$useWrapMode)\n                this._signal(\"changeWrapMode\");\n        }\n    };\n    this.adjustWrapLimit = function (desiredLimit, $printMargin) {\n        var limits = this.$wrapLimitRange;\n        if (limits.max < 0)\n            limits = { min: $printMargin, max: $printMargin };\n        var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n        if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n            this.$wrapLimit = wrapLimit;\n            this.$modified = true;\n            if (this.$useWrapMode) {\n                this.$updateWrapData(0, this.getLength() - 1);\n                this.$resetRowCache(0);\n                this._signal(\"changeWrapLimit\");\n            }\n            return true;\n        }\n        return false;\n    };\n    this.$constrainWrapLimit = function (wrapLimit, min, max) {\n        if (min)\n            wrapLimit = Math.max(min, wrapLimit);\n        if (max)\n            wrapLimit = Math.min(max, wrapLimit);\n        return wrapLimit;\n    };\n    this.getWrapLimit = function () {\n        return this.$wrapLimit;\n    };\n    this.setWrapLimit = function (limit) {\n        this.setWrapLimitRange(limit, limit);\n    };\n    this.getWrapLimitRange = function () {\n        return {\n            min: this.$wrapLimitRange.min,\n            max: this.$wrapLimitRange.max\n        };\n    };\n    this.$updateInternalDataOnChange = function (delta) {\n        var useWrapMode = this.$useWrapMode;\n        var action = delta.action;\n        var start = delta.start;\n        var end = delta.end;\n        var firstRow = start.row;\n        var lastRow = end.row;\n        var len = lastRow - firstRow;\n        var removedFolds = null;\n        this.$updating = true;\n        if (len != 0) {\n            if (action === \"remove\") {\n                this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n                var foldLines = this.$foldData;\n                removedFolds = this.getFoldsInRange(delta);\n                this.removeFolds(removedFolds);\n                var foldLine = this.getFoldLine(end.row);\n                var idx = 0;\n                if (foldLine) {\n                    foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n                    foldLine.shiftRow(-len);\n                    var foldLineBefore = this.getFoldLine(firstRow);\n                    if (foldLineBefore && foldLineBefore !== foldLine) {\n                        foldLineBefore.merge(foldLine);\n                        foldLine = foldLineBefore;\n                    }\n                    idx = foldLines.indexOf(foldLine) + 1;\n                }\n                for (idx; idx < foldLines.length; idx++) {\n                    var foldLine = foldLines[idx];\n                    if (foldLine.start.row >= end.row) {\n                        foldLine.shiftRow(-len);\n                    }\n                }\n                lastRow = firstRow;\n            }\n            else {\n                var args = Array(len);\n                args.unshift(firstRow, 0);\n                var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n                arr.splice.apply(arr, args);\n                var foldLines = this.$foldData;\n                var foldLine = this.getFoldLine(firstRow);\n                var idx = 0;\n                if (foldLine) {\n                    var cmp = foldLine.range.compareInside(start.row, start.column);\n                    if (cmp == 0) {\n                        foldLine = foldLine.split(start.row, start.column);\n                        if (foldLine) {\n                            foldLine.shiftRow(len);\n                            foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n                        }\n                    }\n                    else \n                    if (cmp == -1) {\n                        foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n                        foldLine.shiftRow(len);\n                    }\n                    idx = foldLines.indexOf(foldLine) + 1;\n                }\n                for (idx; idx < foldLines.length; idx++) {\n                    var foldLine = foldLines[idx];\n                    if (foldLine.start.row >= firstRow) {\n                        foldLine.shiftRow(len);\n                    }\n                }\n            }\n        }\n        else {\n            len = Math.abs(delta.start.column - delta.end.column);\n            if (action === \"remove\") {\n                removedFolds = this.getFoldsInRange(delta);\n                this.removeFolds(removedFolds);\n                len = -len;\n            }\n            var foldLine = this.getFoldLine(firstRow);\n            if (foldLine) {\n                foldLine.addRemoveChars(firstRow, start.column, len);\n            }\n        }\n        if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n            console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n        }\n        this.$updating = false;\n        if (useWrapMode)\n            this.$updateWrapData(firstRow, lastRow);\n        else\n            this.$updateRowLengthCache(firstRow, lastRow);\n        return removedFolds;\n    };\n    this.$updateRowLengthCache = function (firstRow, lastRow, b) {\n        this.$rowLengthCache[firstRow] = null;\n        this.$rowLengthCache[lastRow] = null;\n    };\n    this.$updateWrapData = function (firstRow, lastRow) {\n        var lines = this.doc.getAllLines();\n        var tabSize = this.getTabSize();\n        var wrapData = this.$wrapData;\n        var wrapLimit = this.$wrapLimit;\n        var tokens;\n        var foldLine;\n        var row = firstRow;\n        lastRow = Math.min(lastRow, lines.length - 1);\n        while (row <= lastRow) {\n            foldLine = this.getFoldLine(row, foldLine);\n            if (!foldLine) {\n                tokens = this.$getDisplayTokens(lines[row]);\n                wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n                row++;\n            }\n            else {\n                tokens = [];\n                foldLine.walk(function (placeholder, row, column, lastColumn) {\n                    var walkTokens;\n                    if (placeholder != null) {\n                        walkTokens = this.$getDisplayTokens(placeholder, tokens.length);\n                        walkTokens[0] = PLACEHOLDER_START;\n                        for (var i = 1; i < walkTokens.length; i++) {\n                            walkTokens[i] = PLACEHOLDER_BODY;\n                        }\n                    }\n                    else {\n                        walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length);\n                    }\n                    tokens = tokens.concat(walkTokens);\n                }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1);\n                wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n                row = foldLine.end.row + 1;\n            }\n        }\n    };\n    var CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12;\n    this.$computeWrapSplits = function (tokens, wrapLimit, tabSize) {\n        if (tokens.length == 0) {\n            return [];\n        }\n        var splits = [];\n        var displayLength = tokens.length;\n        var lastSplit = 0, lastDocSplit = 0;\n        var isCode = this.$wrapAsCode;\n        var indentedSoftWrap = this.$indentedSoftWrap;\n        var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n            || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n        function getWrapIndent() {\n            var indentation = 0;\n            if (maxIndent === 0)\n                return indentation;\n            if (indentedSoftWrap) {\n                for (var i = 0; i < tokens.length; i++) {\n                    var token = tokens[i];\n                    if (token == SPACE)\n                        indentation += 1;\n                    else if (token == TAB)\n                        indentation += tabSize;\n                    else if (token == TAB_SPACE)\n                        continue;\n                    else\n                        break;\n                }\n            }\n            if (isCode && indentedSoftWrap !== false)\n                indentation += tabSize;\n            return Math.min(indentation, maxIndent);\n        }\n        function addSplit(screenPos) {\n            var len = screenPos - lastSplit;\n            for (var i = lastSplit; i < screenPos; i++) {\n                var ch = tokens[i];\n                if (ch === 12 || ch === 2)\n                    len -= 1;\n            }\n            if (!splits.length) {\n                indent = getWrapIndent();\n                splits.indent = indent;\n            }\n            lastDocSplit += len;\n            splits.push(lastDocSplit);\n            lastSplit = screenPos;\n        }\n        var indent = 0;\n        while (displayLength - lastSplit > wrapLimit - indent) {\n            var split = lastSplit + wrapLimit - indent;\n            if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n                addSplit(split);\n                continue;\n            }\n            if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n                for (split; split != lastSplit - 1; split--) {\n                    if (tokens[split] == PLACEHOLDER_START) {\n                        break;\n                    }\n                }\n                if (split > lastSplit) {\n                    addSplit(split);\n                    continue;\n                }\n                split = lastSplit + wrapLimit;\n                for (split; split < tokens.length; split++) {\n                    if (tokens[split] != PLACEHOLDER_BODY) {\n                        break;\n                    }\n                }\n                if (split == tokens.length) {\n                    break; // Breaks the while-loop.\n                }\n                addSplit(split);\n                continue;\n            }\n            var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1);\n            while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n                split--;\n            }\n            if (isCode) {\n                while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n                    split--;\n                }\n                while (split > minSplit && tokens[split] == PUNCTUATION) {\n                    split--;\n                }\n            }\n            else {\n                while (split > minSplit && tokens[split] < SPACE) {\n                    split--;\n                }\n            }\n            if (split > minSplit) {\n                addSplit(++split);\n                continue;\n            }\n            split = lastSplit + wrapLimit;\n            if (tokens[split] == CHAR_EXT)\n                split--;\n            addSplit(split - indent);\n        }\n        return splits;\n    };\n    this.$getDisplayTokens = function (str, offset) {\n        var arr = [];\n        var tabSize;\n        offset = offset || 0;\n        for (var i = 0; i < str.length; i++) {\n            var c = str.charCodeAt(i);\n            if (c == 9) {\n                tabSize = this.getScreenTabSize(arr.length + offset);\n                arr.push(TAB);\n                for (var n = 1; n < tabSize; n++) {\n                    arr.push(TAB_SPACE);\n                }\n            }\n            else if (c == 32) {\n                arr.push(SPACE);\n            }\n            else if ((c > 39 && c < 48) || (c > 57 && c < 64)) {\n                arr.push(PUNCTUATION);\n            }\n            else if (c >= 0x1100 && isFullWidth(c)) {\n                arr.push(CHAR, CHAR_EXT);\n            }\n            else {\n                arr.push(CHAR);\n            }\n        }\n        return arr;\n    };\n    this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n        if (maxScreenColumn == 0)\n            return [0, 0];\n        if (maxScreenColumn == null)\n            maxScreenColumn = Infinity;\n        screenColumn = screenColumn || 0;\n        var c, column;\n        for (column = 0; column < str.length; column++) {\n            c = str.charCodeAt(column);\n            if (c == 9) {\n                screenColumn += this.getScreenTabSize(screenColumn);\n            }\n            else if (c >= 0x1100 && isFullWidth(c)) {\n                screenColumn += 2;\n            }\n            else {\n                screenColumn += 1;\n            }\n            if (screenColumn > maxScreenColumn) {\n                break;\n            }\n        }\n        return [screenColumn, column];\n    };\n    this.lineWidgets = null;\n    this.getRowLength = function (row) {\n        var h = 1;\n        if (this.lineWidgets)\n            h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n        if (!this.$useWrapMode || !this.$wrapData[row])\n            return h;\n        else\n            return this.$wrapData[row].length + h;\n    };\n    this.getRowLineCount = function (row) {\n        if (!this.$useWrapMode || !this.$wrapData[row]) {\n            return 1;\n        }\n        else {\n            return this.$wrapData[row].length + 1;\n        }\n    };\n    this.getRowWrapIndent = function (screenRow) {\n        if (this.$useWrapMode) {\n            var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n            var splits = this.$wrapData[pos.row];\n            return splits.length && splits[0] < pos.column ? splits.indent : 0;\n        }\n        else {\n            return 0;\n        }\n    };\n    this.getScreenLastRowColumn = function (screenRow) {\n        var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n        return this.documentToScreenColumn(pos.row, pos.column);\n    };\n    this.getDocumentLastRowColumn = function (docRow, docColumn) {\n        var screenRow = this.documentToScreenRow(docRow, docColumn);\n        return this.getScreenLastRowColumn(screenRow);\n    };\n    this.getDocumentLastRowColumnPosition = function (docRow, docColumn) {\n        var screenRow = this.documentToScreenRow(docRow, docColumn);\n        return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n    };\n    this.getRowSplitData = function (row) {\n        if (!this.$useWrapMode) {\n            return undefined;\n        }\n        else {\n            return this.$wrapData[row];\n        }\n    };\n    this.getScreenTabSize = function (screenColumn) {\n        return this.$tabSize - (screenColumn % this.$tabSize | 0);\n    };\n    this.screenToDocumentRow = function (screenRow, screenColumn) {\n        return this.screenToDocumentPosition(screenRow, screenColumn).row;\n    };\n    this.screenToDocumentColumn = function (screenRow, screenColumn) {\n        return this.screenToDocumentPosition(screenRow, screenColumn).column;\n    };\n    this.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) {\n        if (screenRow < 0)\n            return { row: 0, column: 0 };\n        var line;\n        var docRow = 0;\n        var docColumn = 0;\n        var column;\n        var row = 0;\n        var rowLength = 0;\n        var rowCache = this.$screenRowCache;\n        var i = this.$getRowCacheIndex(rowCache, screenRow);\n        var l = rowCache.length;\n        if (l && i >= 0) {\n            var row = rowCache[i];\n            var docRow = this.$docRowCache[i];\n            var doCache = screenRow > rowCache[l - 1];\n        }\n        else {\n            var doCache = !l;\n        }\n        var maxRow = this.getLength() - 1;\n        var foldLine = this.getNextFoldLine(docRow);\n        var foldStart = foldLine ? foldLine.start.row : Infinity;\n        while (row <= screenRow) {\n            rowLength = this.getRowLength(docRow);\n            if (row + rowLength > screenRow || docRow >= maxRow) {\n                break;\n            }\n            else {\n                row += rowLength;\n                docRow++;\n                if (docRow > foldStart) {\n                    docRow = foldLine.end.row + 1;\n                    foldLine = this.getNextFoldLine(docRow, foldLine);\n                    foldStart = foldLine ? foldLine.start.row : Infinity;\n                }\n            }\n            if (doCache) {\n                this.$docRowCache.push(docRow);\n                this.$screenRowCache.push(row);\n            }\n        }\n        if (foldLine && foldLine.start.row <= docRow) {\n            line = this.getFoldDisplayLine(foldLine);\n            docRow = foldLine.start.row;\n        }\n        else if (row + rowLength <= screenRow || docRow > maxRow) {\n            return {\n                row: maxRow,\n                column: this.getLine(maxRow).length\n            };\n        }\n        else {\n            line = this.getLine(docRow);\n            foldLine = null;\n        }\n        var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n        if (this.$useWrapMode) {\n            var splits = this.$wrapData[docRow];\n            if (splits) {\n                column = splits[splitIndex];\n                if (splitIndex > 0 && splits.length) {\n                    wrapIndent = splits.indent;\n                    docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n                    line = line.substring(docColumn);\n                }\n            }\n        }\n        if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n            screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n        docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n        if (this.$useWrapMode && docColumn >= column)\n            docColumn = column - 1;\n        if (foldLine)\n            return foldLine.idxToPosition(docColumn);\n        return { row: docRow, column: docColumn };\n    };\n    this.documentToScreenPosition = function (docRow, docColumn) {\n        if (typeof docColumn === \"undefined\")\n            var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n        else\n            pos = this.$clipPositionToDocument(docRow, docColumn);\n        docRow = pos.row;\n        docColumn = pos.column;\n        var screenRow = 0;\n        var foldStartRow = null;\n        var fold = null;\n        fold = this.getFoldAt(docRow, docColumn, 1);\n        if (fold) {\n            docRow = fold.start.row;\n            docColumn = fold.start.column;\n        }\n        var rowEnd, row = 0;\n        var rowCache = this.$docRowCache;\n        var i = this.$getRowCacheIndex(rowCache, docRow);\n        var l = rowCache.length;\n        if (l && i >= 0) {\n            var row = rowCache[i];\n            var screenRow = this.$screenRowCache[i];\n            var doCache = docRow > rowCache[l - 1];\n        }\n        else {\n            var doCache = !l;\n        }\n        var foldLine = this.getNextFoldLine(row);\n        var foldStart = foldLine ? foldLine.start.row : Infinity;\n        while (row < docRow) {\n            if (row >= foldStart) {\n                rowEnd = foldLine.end.row + 1;\n                if (rowEnd > docRow)\n                    break;\n                foldLine = this.getNextFoldLine(rowEnd, foldLine);\n                foldStart = foldLine ? foldLine.start.row : Infinity;\n            }\n            else {\n                rowEnd = row + 1;\n            }\n            screenRow += this.getRowLength(row);\n            row = rowEnd;\n            if (doCache) {\n                this.$docRowCache.push(row);\n                this.$screenRowCache.push(screenRow);\n            }\n        }\n        var textLine = \"\";\n        if (foldLine && row >= foldStart) {\n            textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n            foldStartRow = foldLine.start.row;\n        }\n        else {\n            textLine = this.getLine(docRow).substring(0, docColumn);\n            foldStartRow = docRow;\n        }\n        var wrapIndent = 0;\n        if (this.$useWrapMode) {\n            var wrapRow = this.$wrapData[foldStartRow];\n            if (wrapRow) {\n                var screenRowOffset = 0;\n                while (textLine.length >= wrapRow[screenRowOffset]) {\n                    screenRow++;\n                    screenRowOffset++;\n                }\n                textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length);\n                wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n            }\n        }\n        if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n            screenRow += this.lineWidgets[row].rowsAbove;\n        return {\n            row: screenRow,\n            column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n        };\n    };\n    this.documentToScreenColumn = function (row, docColumn) {\n        return this.documentToScreenPosition(row, docColumn).column;\n    };\n    this.documentToScreenRow = function (docRow, docColumn) {\n        return this.documentToScreenPosition(docRow, docColumn).row;\n    };\n    this.getScreenLength = function () {\n        var screenRows = 0;\n        var fold = null;\n        if (!this.$useWrapMode) {\n            screenRows = this.getLength();\n            var foldData = this.$foldData;\n            for (var i = 0; i < foldData.length; i++) {\n                fold = foldData[i];\n                screenRows -= fold.end.row - fold.start.row;\n            }\n        }\n        else {\n            var lastRow = this.$wrapData.length;\n            var row = 0, i = 0;\n            var fold = this.$foldData[i++];\n            var foldStart = fold ? fold.start.row : Infinity;\n            while (row < lastRow) {\n                var splits = this.$wrapData[row];\n                screenRows += splits ? splits.length + 1 : 1;\n                row++;\n                if (row > foldStart) {\n                    row = fold.end.row + 1;\n                    fold = this.$foldData[i++];\n                    foldStart = fold ? fold.start.row : Infinity;\n                }\n            }\n        }\n        if (this.lineWidgets)\n            screenRows += this.$getWidgetScreenLength();\n        return screenRows;\n    };\n    this.$setFontMetrics = function (fm) {\n        if (!this.$enableVarChar)\n            return;\n        this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) {\n            if (maxScreenColumn === 0)\n                return [0, 0];\n            if (!maxScreenColumn)\n                maxScreenColumn = Infinity;\n            screenColumn = screenColumn || 0;\n            var c, column;\n            for (column = 0; column < str.length; column++) {\n                c = str.charAt(column);\n                if (c === \"\\t\") {\n                    screenColumn += this.getScreenTabSize(screenColumn);\n                }\n                else {\n                    screenColumn += fm.getCharacterWidth(c);\n                }\n                if (screenColumn > maxScreenColumn) {\n                    break;\n                }\n            }\n            return [screenColumn, column];\n        };\n    };\n    this.destroy = function () {\n        if (!this.destroyed) {\n            this.bgTokenizer.setDocument(null);\n            this.bgTokenizer.cleanup();\n            this.destroyed = true;\n        }\n        this.$stopWorker();\n        this.removeAllListeners();\n        if (this.doc) {\n            this.doc.off(\"change\", this.$onChange);\n        }\n        this.selection.detach();\n    };\n    this.isFullWidth = isFullWidth;\n    function isFullWidth(c) {\n        if (c < 0x1100)\n            return false;\n        return c >= 0x1100 && c <= 0x115F ||\n            c >= 0x11A3 && c <= 0x11A7 ||\n            c >= 0x11FA && c <= 0x11FF ||\n            c >= 0x2329 && c <= 0x232A ||\n            c >= 0x2E80 && c <= 0x2E99 ||\n            c >= 0x2E9B && c <= 0x2EF3 ||\n            c >= 0x2F00 && c <= 0x2FD5 ||\n            c >= 0x2FF0 && c <= 0x2FFB ||\n            c >= 0x3000 && c <= 0x303E ||\n            c >= 0x3041 && c <= 0x3096 ||\n            c >= 0x3099 && c <= 0x30FF ||\n            c >= 0x3105 && c <= 0x312D ||\n            c >= 0x3131 && c <= 0x318E ||\n            c >= 0x3190 && c <= 0x31BA ||\n            c >= 0x31C0 && c <= 0x31E3 ||\n            c >= 0x31F0 && c <= 0x321E ||\n            c >= 0x3220 && c <= 0x3247 ||\n            c >= 0x3250 && c <= 0x32FE ||\n            c >= 0x3300 && c <= 0x4DBF ||\n            c >= 0x4E00 && c <= 0xA48C ||\n            c >= 0xA490 && c <= 0xA4C6 ||\n            c >= 0xA960 && c <= 0xA97C ||\n            c >= 0xAC00 && c <= 0xD7A3 ||\n            c >= 0xD7B0 && c <= 0xD7C6 ||\n            c >= 0xD7CB && c <= 0xD7FB ||\n            c >= 0xF900 && c <= 0xFAFF ||\n            c >= 0xFE10 && c <= 0xFE19 ||\n            c >= 0xFE30 && c <= 0xFE52 ||\n            c >= 0xFE54 && c <= 0xFE66 ||\n            c >= 0xFE68 && c <= 0xFE6B ||\n            c >= 0xFF01 && c <= 0xFF60 ||\n            c >= 0xFFE0 && c <= 0xFFE6;\n    }\n}).call(EditSession.prototype);\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\nconfig.defineOptions(EditSession.prototype, \"session\", {\n    wrap: {\n        set: function (value) {\n            if (!value || value == \"off\")\n                value = false;\n            else if (value == \"free\")\n                value = true;\n            else if (value == \"printMargin\")\n                value = -1;\n            else if (typeof value == \"string\")\n                value = parseInt(value, 10) || false;\n            if (this.$wrap == value)\n                return;\n            this.$wrap = value;\n            if (!value) {\n                this.setUseWrapMode(false);\n            }\n            else {\n                var col = typeof value == \"number\" ? value : null;\n                this.setWrapLimitRange(col, col);\n                this.setUseWrapMode(true);\n            }\n        },\n        get: function () {\n            if (this.getUseWrapMode()) {\n                if (this.$wrap == -1)\n                    return \"printMargin\";\n                if (!this.getWrapLimitRange().min)\n                    return \"free\";\n                return this.$wrap;\n            }\n            return \"off\";\n        },\n        handlesSet: true\n    },\n    wrapMethod: {\n        set: function (val) {\n            val = val == \"auto\"\n                ? this.$mode.type != \"text\"\n                : val != \"text\";\n            if (val != this.$wrapAsCode) {\n                this.$wrapAsCode = val;\n                if (this.$useWrapMode) {\n                    this.$useWrapMode = false;\n                    this.setUseWrapMode(true);\n                }\n            }\n        },\n        initialValue: \"auto\"\n    },\n    indentedSoftWrap: {\n        set: function () {\n            if (this.$useWrapMode) {\n                this.$useWrapMode = false;\n                this.setUseWrapMode(true);\n            }\n        },\n        initialValue: true\n    },\n    firstLineNumber: {\n        set: function () { this._signal(\"changeBreakpoint\"); },\n        initialValue: 1\n    },\n    useWorker: {\n        set: function (useWorker) {\n            this.$useWorker = useWorker;\n            this.$stopWorker();\n            if (useWorker)\n                this.$startWorker();\n        },\n        initialValue: true\n    },\n    useSoftTabs: { initialValue: true },\n    tabSize: {\n        set: function (tabSize) {\n            tabSize = parseInt(tabSize);\n            if (tabSize > 0 && this.$tabSize !== tabSize) {\n                this.$modified = true;\n                this.$rowLengthCache = [];\n                this.$tabSize = tabSize;\n                this._signal(\"changeTabSize\");\n            }\n        },\n        initialValue: 4,\n        handlesSet: true\n    },\n    navigateWithinSoftTabs: { initialValue: false },\n    foldStyle: {\n        set: function (val) { this.setFoldStyle(val); },\n        handlesSet: true\n    },\n    overwrite: {\n        set: function (val) { this._signal(\"changeOverwrite\"); },\n        initialValue: false\n    },\n    newLineMode: {\n        set: function (val) { this.doc.setNewLineMode(val); },\n        get: function () { return this.doc.getNewLineMode(); },\n        handlesSet: true\n    },\n    mode: {\n        set: function (val) { this.setMode(val); },\n        get: function () { return this.$modeId; },\n        handlesSet: true\n    }\n});\nexports.EditSession = EditSession;\n\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\nvar Search = function () {\n    this.$options = {};\n};\n(function () {\n    this.set = function (options) {\n        oop.mixin(this.$options, options);\n        return this;\n    };\n    this.getOptions = function () {\n        return lang.copyObject(this.$options);\n    };\n    this.setOptions = function (options) {\n        this.$options = options;\n    };\n    this.find = function (session) {\n        var options = this.$options;\n        var iterator = this.$matchIterator(session, options);\n        if (!iterator)\n            return false;\n        var firstRange = null;\n        iterator.forEach(function (sr, sc, er, ec) {\n            firstRange = new Range(sr, sc, er, ec);\n            if (sc == ec && options.start && options.start.start\n                && options.skipCurrent != false && firstRange.isEqual(options.start)) {\n                firstRange = null;\n                return false;\n            }\n            return true;\n        });\n        return firstRange;\n    };\n    this.findAll = function (session) {\n        var options = this.$options;\n        if (!options.needle)\n            return [];\n        this.$assembleRegExp(options);\n        var range = options.range;\n        var lines = range\n            ? session.getLines(range.start.row, range.end.row)\n            : session.doc.getAllLines();\n        var ranges = [];\n        var re = options.re;\n        if (options.$isMultiLine) {\n            var len = re.length;\n            var maxRow = lines.length - len;\n            var prevRange;\n            outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n                for (var j = 0; j < len; j++)\n                    if (lines[row + j].search(re[j]) == -1)\n                        continue outer;\n                var startLine = lines[row];\n                var line = lines[row + len - 1];\n                var startIndex = startLine.length - startLine.match(re[0])[0].length;\n                var endIndex = line.match(re[len - 1])[0].length;\n                if (prevRange && prevRange.end.row === row &&\n                    prevRange.end.column > startIndex) {\n                    continue;\n                }\n                ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex));\n                if (len > 2)\n                    row = row + len - 2;\n            }\n        }\n        else {\n            for (var i = 0; i < lines.length; i++) {\n                var matches = lang.getMatchOffsets(lines[i], re);\n                for (var j = 0; j < matches.length; j++) {\n                    var match = matches[j];\n                    ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n                }\n            }\n        }\n        if (range) {\n            var startColumn = range.start.column;\n            var endColumn = range.start.column;\n            var i = 0, j = ranges.length - 1;\n            while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\n                i++;\n            while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\n                j--;\n            ranges = ranges.slice(i, j + 1);\n            for (i = 0, j = ranges.length; i < j; i++) {\n                ranges[i].start.row += range.start.row;\n                ranges[i].end.row += range.start.row;\n            }\n        }\n        return ranges;\n    };\n    this.replace = function (input, replacement) {\n        var options = this.$options;\n        var re = this.$assembleRegExp(options);\n        if (options.$isMultiLine)\n            return replacement;\n        if (!re)\n            return;\n        var match = re.exec(input);\n        if (!match || match[0].length != input.length)\n            return null;\n        replacement = input.replace(re, replacement);\n        if (options.preserveCase) {\n            replacement = replacement.split(\"\");\n            for (var i = Math.min(input.length, input.length); i--;) {\n                var ch = input[i];\n                if (ch && ch.toLowerCase() != ch)\n                    replacement[i] = replacement[i].toUpperCase();\n                else\n                    replacement[i] = replacement[i].toLowerCase();\n            }\n            replacement = replacement.join(\"\");\n        }\n        return replacement;\n    };\n    this.$assembleRegExp = function (options, $disableFakeMultiline) {\n        if (options.needle instanceof RegExp)\n            return options.re = options.needle;\n        var needle = options.needle;\n        if (!options.needle)\n            return options.re = false;\n        if (!options.regExp)\n            needle = lang.escapeRegExp(needle);\n        if (options.wholeWord)\n            needle = addWordBoundary(needle, options);\n        var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n        options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n        if (options.$isMultiLine)\n            return options.re = this.$assembleMultilineRegExp(needle, modifier);\n        try {\n            var re = new RegExp(needle, modifier);\n        }\n        catch (e) {\n            re = false;\n        }\n        return options.re = re;\n    };\n    this.$assembleMultilineRegExp = function (needle, modifier) {\n        var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n        var re = [];\n        for (var i = 0; i < parts.length; i++)\n            try {\n                re.push(new RegExp(parts[i], modifier));\n            }\n            catch (e) {\n                return false;\n            }\n        return re;\n    };\n    this.$matchIterator = function (session, options) {\n        var re = this.$assembleRegExp(options);\n        if (!re)\n            return false;\n        var backwards = options.backwards == true;\n        var skipCurrent = options.skipCurrent != false;\n        var range = options.range;\n        var start = options.start;\n        if (!start)\n            start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n        if (start.start)\n            start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n        var firstRow = range ? range.start.row : 0;\n        var lastRow = range ? range.end.row : session.getLength() - 1;\n        if (backwards) {\n            var forEach = function (callback) {\n                var row = start.row;\n                if (forEachInLine(row, start.column, callback))\n                    return;\n                for (row--; row >= firstRow; row--)\n                    if (forEachInLine(row, Number.MAX_VALUE, callback))\n                        return;\n                if (options.wrap == false)\n                    return;\n                for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n                    if (forEachInLine(row, Number.MAX_VALUE, callback))\n                        return;\n            };\n        }\n        else {\n            var forEach = function (callback) {\n                var row = start.row;\n                if (forEachInLine(row, start.column, callback))\n                    return;\n                for (row = row + 1; row <= lastRow; row++)\n                    if (forEachInLine(row, 0, callback))\n                        return;\n                if (options.wrap == false)\n                    return;\n                for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n                    if (forEachInLine(row, 0, callback))\n                        return;\n            };\n        }\n        if (options.$isMultiLine) {\n            var len = re.length;\n            var forEachInLine = function (row, offset, callback) {\n                var startRow = backwards ? row - len + 1 : row;\n                if (startRow < 0 || startRow + len > session.getLength())\n                    return;\n                var line = session.getLine(startRow);\n                var startIndex = line.search(re[0]);\n                if (!backwards && startIndex < offset || startIndex === -1)\n                    return;\n                for (var i = 1; i < len; i++) {\n                    line = session.getLine(startRow + i);\n                    if (line.search(re[i]) == -1)\n                        return;\n                }\n                var endIndex = line.match(re[len - 1])[0].length;\n                if (backwards && endIndex > offset)\n                    return;\n                if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n                    return true;\n            };\n        }\n        else if (backwards) {\n            var forEachInLine = function (row, endIndex, callback) {\n                var line = session.getLine(row);\n                var matches = [];\n                var m, last = 0;\n                re.lastIndex = 0;\n                while ((m = re.exec(line))) {\n                    var length = m[0].length;\n                    last = m.index;\n                    if (!length) {\n                        if (last >= line.length)\n                            break;\n                        re.lastIndex = last += 1;\n                    }\n                    if (m.index + length > endIndex)\n                        break;\n                    matches.push(m.index, length);\n                }\n                for (var i = matches.length - 1; i >= 0; i -= 2) {\n                    var column = matches[i - 1];\n                    var length = matches[i];\n                    if (callback(row, column, row, column + length))\n                        return true;\n                }\n            };\n        }\n        else {\n            var forEachInLine = function (row, startIndex, callback) {\n                var line = session.getLine(row);\n                var last;\n                var m;\n                re.lastIndex = startIndex;\n                while ((m = re.exec(line))) {\n                    var length = m[0].length;\n                    last = m.index;\n                    if (callback(row, last, row, last + length))\n                        return true;\n                    if (!length) {\n                        re.lastIndex = last += 1;\n                        if (last >= line.length)\n                            return false;\n                    }\n                }\n            };\n        }\n        return { forEach: forEach };\n    };\n}).call(Search.prototype);\nfunction addWordBoundary(needle, options) {\n    function wordBoundary(c) {\n        if (/\\w/.test(c) || options.regExp)\n            return \"\\\\b\";\n        return \"\";\n    }\n    return wordBoundary(needle[0]) + needle\n        + wordBoundary(needle[needle.length - 1]);\n}\nexports.Search = Search;\n\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\nfunction HashHandler(config, platform) {\n    this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n    this.commands = {};\n    this.commandKeyBinding = {};\n    this.addCommands(config);\n    this.$singleCommand = true;\n}\nfunction MultiHashHandler(config, platform) {\n    HashHandler.call(this, config, platform);\n    this.$singleCommand = false;\n}\nMultiHashHandler.prototype = HashHandler.prototype;\n(function () {\n    this.addCommand = function (command) {\n        if (this.commands[command.name])\n            this.removeCommand(command);\n        this.commands[command.name] = command;\n        if (command.bindKey)\n            this._buildKeyHash(command);\n    };\n    this.removeCommand = function (command, keepCommand) {\n        var name = command && (typeof command === 'string' ? command : command.name);\n        command = this.commands[name];\n        if (!keepCommand)\n            delete this.commands[name];\n        var ckb = this.commandKeyBinding;\n        for (var keyId in ckb) {\n            var cmdGroup = ckb[keyId];\n            if (cmdGroup == command) {\n                delete ckb[keyId];\n            }\n            else if (Array.isArray(cmdGroup)) {\n                var i = cmdGroup.indexOf(command);\n                if (i != -1) {\n                    cmdGroup.splice(i, 1);\n                    if (cmdGroup.length == 1)\n                        ckb[keyId] = cmdGroup[0];\n                }\n            }\n        }\n    };\n    this.bindKey = function (key, command, position) {\n        if (typeof key == \"object\" && key) {\n            if (position == undefined)\n                position = key.position;\n            key = key[this.platform];\n        }\n        if (!key)\n            return;\n        if (typeof command == \"function\")\n            return this.addCommand({ exec: command, bindKey: key, name: command.name || key });\n        key.split(\"|\").forEach(function (keyPart) {\n            var chain = \"\";\n            if (keyPart.indexOf(\" \") != -1) {\n                var parts = keyPart.split(/\\s+/);\n                keyPart = parts.pop();\n                parts.forEach(function (keyPart) {\n                    var binding = this.parseKeys(keyPart);\n                    var id = KEY_MODS[binding.hashId] + binding.key;\n                    chain += (chain ? \" \" : \"\") + id;\n                    this._addCommandToBinding(chain, \"chainKeys\");\n                }, this);\n                chain += \" \";\n            }\n            var binding = this.parseKeys(keyPart);\n            var id = KEY_MODS[binding.hashId] + binding.key;\n            this._addCommandToBinding(chain + id, command, position);\n        }, this);\n    };\n    function getPosition(command) {\n        return typeof command == \"object\" && command.bindKey\n            && command.bindKey.position\n            || (command.isDefault ? -100 : 0);\n    }\n    this._addCommandToBinding = function (keyId, command, position) {\n        var ckb = this.commandKeyBinding, i;\n        if (!command) {\n            delete ckb[keyId];\n        }\n        else if (!ckb[keyId] || this.$singleCommand) {\n            ckb[keyId] = command;\n        }\n        else {\n            if (!Array.isArray(ckb[keyId])) {\n                ckb[keyId] = [ckb[keyId]];\n            }\n            else if ((i = ckb[keyId].indexOf(command)) != -1) {\n                ckb[keyId].splice(i, 1);\n            }\n            if (typeof position != \"number\") {\n                position = getPosition(command);\n            }\n            var commands = ckb[keyId];\n            for (i = 0; i < commands.length; i++) {\n                var other = commands[i];\n                var otherPos = getPosition(other);\n                if (otherPos > position)\n                    break;\n            }\n            commands.splice(i, 0, command);\n        }\n    };\n    this.addCommands = function (commands) {\n        commands && Object.keys(commands).forEach(function (name) {\n            var command = commands[name];\n            if (!command)\n                return;\n            if (typeof command === \"string\")\n                return this.bindKey(command, name);\n            if (typeof command === \"function\")\n                command = { exec: command };\n            if (typeof command !== \"object\")\n                return;\n            if (!command.name)\n                command.name = name;\n            this.addCommand(command);\n        }, this);\n    };\n    this.removeCommands = function (commands) {\n        Object.keys(commands).forEach(function (name) {\n            this.removeCommand(commands[name]);\n        }, this);\n    };\n    this.bindKeys = function (keyList) {\n        Object.keys(keyList).forEach(function (key) {\n            this.bindKey(key, keyList[key]);\n        }, this);\n    };\n    this._buildKeyHash = function (command) {\n        this.bindKey(command.bindKey, command);\n    };\n    this.parseKeys = function (keys) {\n        var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function (x) { return x; });\n        var key = parts.pop();\n        var keyCode = keyUtil[key];\n        if (keyUtil.FUNCTION_KEYS[keyCode])\n            key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n        else if (!parts.length)\n            return { key: key, hashId: -1 };\n        else if (parts.length == 1 && parts[0] == \"shift\")\n            return { key: key.toUpperCase(), hashId: -1 };\n        var hashId = 0;\n        for (var i = parts.length; i--;) {\n            var modifier = keyUtil.KEY_MODS[parts[i]];\n            if (modifier == null) {\n                if (typeof console != \"undefined\")\n                    console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n                return false;\n            }\n            hashId |= modifier;\n        }\n        return { key: key, hashId: hashId };\n    };\n    this.findKeyCommand = function findKeyCommand(hashId, keyString) {\n        var key = KEY_MODS[hashId] + keyString;\n        return this.commandKeyBinding[key];\n    };\n    this.handleKeyboard = function (data, hashId, keyString, keyCode) {\n        if (keyCode < 0)\n            return;\n        var key = KEY_MODS[hashId] + keyString;\n        var command = this.commandKeyBinding[key];\n        if (data.$keyChain) {\n            data.$keyChain += \" \" + key;\n            command = this.commandKeyBinding[data.$keyChain] || command;\n        }\n        if (command) {\n            if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n                data.$keyChain = data.$keyChain || key;\n                return { command: \"null\" };\n            }\n        }\n        if (data.$keyChain) {\n            if ((!hashId || hashId == 4) && keyString.length == 1)\n                data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n            else if (hashId == -1 || keyCode > 0)\n                data.$keyChain = \"\"; // reset keyChain\n        }\n        return { command: command };\n    };\n    this.getStatusText = function (editor, data) {\n        return data.$keyChain || \"\";\n    };\n}).call(HashHandler.prototype);\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CommandManager = function (platform, commands) {\n    MultiHashHandler.call(this, commands, platform);\n    this.byName = this.commands;\n    this.setDefaultHandler(\"exec\", function (e) {\n        if (!e.args) {\n            return e.command.exec(e.editor, {}, e.event, true);\n        }\n        return e.command.exec(e.editor, e.args, e.event, false);\n    });\n};\noop.inherits(CommandManager, MultiHashHandler);\n(function () {\n    oop.implement(this, EventEmitter);\n    this.exec = function (command, editor, args) {\n        if (Array.isArray(command)) {\n            for (var i = command.length; i--;) {\n                if (this.exec(command[i], editor, args))\n                    return true;\n            }\n            return false;\n        }\n        if (typeof command === \"string\")\n            command = this.commands[command];\n        if (!command)\n            return false;\n        if (editor && editor.$readOnly && !command.readOnly)\n            return false;\n        if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n            return false;\n        var e = { editor: editor, command: command, args: args };\n        e.returnValue = this._emit(\"exec\", e);\n        this._signal(\"afterExec\", e);\n        return e.returnValue === false ? false : true;\n    };\n    this.toggleRecording = function (editor) {\n        if (this.$inReplay)\n            return;\n        editor && editor._emit(\"changeStatus\");\n        if (this.recording) {\n            this.macro.pop();\n            this.off(\"exec\", this.$addCommandToMacro);\n            if (!this.macro.length)\n                this.macro = this.oldMacro;\n            return this.recording = false;\n        }\n        if (!this.$addCommandToMacro) {\n            this.$addCommandToMacro = function (e) {\n                this.macro.push([e.command, e.args]);\n            }.bind(this);\n        }\n        this.oldMacro = this.macro;\n        this.macro = [];\n        this.on(\"exec\", this.$addCommandToMacro);\n        return this.recording = true;\n    };\n    this.replay = function (editor) {\n        if (this.$inReplay || !this.macro)\n            return;\n        if (this.recording)\n            return this.toggleRecording(editor);\n        try {\n            this.$inReplay = true;\n            this.macro.forEach(function (x) {\n                if (typeof x == \"string\")\n                    this.exec(x, editor);\n                else\n                    this.exec(x[0], editor, x[1]);\n            }, this);\n        }\n        finally {\n            this.$inReplay = false;\n        }\n    };\n    this.trimMacro = function (m) {\n        return m.map(function (x) {\n            if (typeof x[0] != \"string\")\n                x[0] = x[0].name;\n            if (!x[1])\n                x = x[0];\n            return x;\n        });\n    };\n}).call(CommandManager.prototype);\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\nfunction bindKey(win, mac) {\n    return { win: win, mac: mac };\n}\nexports.commands = [{\n        name: \"showSettingsMenu\",\n        description: \"Show settings menu\",\n        bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n        exec: function (editor) {\n            config.loadModule(\"ace/ext/settings_menu\", function (module) {\n                module.init(editor);\n                editor.showSettingsMenu();\n            });\n        },\n        readOnly: true\n    }, {\n        name: \"goToNextError\",\n        description: \"Go to next error\",\n        bindKey: bindKey(\"Alt-E\", \"F4\"),\n        exec: function (editor) {\n            config.loadModule(\"./ext/error_marker\", function (module) {\n                module.showErrorMarker(editor, 1);\n            });\n        },\n        scrollIntoView: \"animate\",\n        readOnly: true\n    }, {\n        name: \"goToPreviousError\",\n        description: \"Go to previous error\",\n        bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n        exec: function (editor) {\n            config.loadModule(\"./ext/error_marker\", function (module) {\n                module.showErrorMarker(editor, -1);\n            });\n        },\n        scrollIntoView: \"animate\",\n        readOnly: true\n    }, {\n        name: \"selectall\",\n        description: \"Select all\",\n        bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n        exec: function (editor) { editor.selectAll(); },\n        readOnly: true\n    }, {\n        name: \"centerselection\",\n        description: \"Center selection\",\n        bindKey: bindKey(null, \"Ctrl-L\"),\n        exec: function (editor) { editor.centerSelection(); },\n        readOnly: true\n    }, {\n        name: \"gotoline\",\n        description: \"Go to line...\",\n        bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n        exec: function (editor, line) {\n            if (typeof line === \"number\" && !isNaN(line))\n                editor.gotoLine(line);\n            editor.prompt({ $type: \"gotoLine\" });\n        },\n        readOnly: true\n    }, {\n        name: \"fold\",\n        bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n        exec: function (editor) { editor.session.toggleFold(false); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"center\",\n        readOnly: true\n    }, {\n        name: \"unfold\",\n        bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n        exec: function (editor) { editor.session.toggleFold(true); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"center\",\n        readOnly: true\n    }, {\n        name: \"toggleFoldWidget\",\n        description: \"Toggle fold widget\",\n        bindKey: bindKey(\"F2\", \"F2\"),\n        exec: function (editor) { editor.session.toggleFoldWidget(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"center\",\n        readOnly: true\n    }, {\n        name: \"toggleParentFoldWidget\",\n        description: \"Toggle parent fold widget\",\n        bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n        exec: function (editor) { editor.session.toggleFoldWidget(true); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"center\",\n        readOnly: true\n    }, {\n        name: \"foldall\",\n        description: \"Fold all\",\n        bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n        exec: function (editor) { editor.session.foldAll(); },\n        scrollIntoView: \"center\",\n        readOnly: true\n    }, {\n        name: \"foldAllComments\",\n        description: \"Fold all comments\",\n        bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n        exec: function (editor) { editor.session.foldAllComments(); },\n        scrollIntoView: \"center\",\n        readOnly: true\n    }, {\n        name: \"foldOther\",\n        description: \"Fold other\",\n        bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n        exec: function (editor) {\n            editor.session.foldAll();\n            editor.session.unfold(editor.selection.getAllRanges());\n        },\n        scrollIntoView: \"center\",\n        readOnly: true\n    }, {\n        name: \"unfoldall\",\n        description: \"Unfold all\",\n        bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n        exec: function (editor) { editor.session.unfold(); },\n        scrollIntoView: \"center\",\n        readOnly: true\n    }, {\n        name: \"findnext\",\n        description: \"Find next\",\n        bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n        exec: function (editor) { editor.findNext(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"center\",\n        readOnly: true\n    }, {\n        name: \"findprevious\",\n        description: \"Find previous\",\n        bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n        exec: function (editor) { editor.findPrevious(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"center\",\n        readOnly: true\n    }, {\n        name: \"selectOrFindNext\",\n        description: \"Select or find next\",\n        bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n        exec: function (editor) {\n            if (editor.selection.isEmpty())\n                editor.selection.selectWord();\n            else\n                editor.findNext();\n        },\n        readOnly: true\n    }, {\n        name: \"selectOrFindPrevious\",\n        description: \"Select or find previous\",\n        bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n        exec: function (editor) {\n            if (editor.selection.isEmpty())\n                editor.selection.selectWord();\n            else\n                editor.findPrevious();\n        },\n        readOnly: true\n    }, {\n        name: \"find\",\n        description: \"Find\",\n        bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n        exec: function (editor) {\n            config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor); });\n        },\n        readOnly: true\n    }, {\n        name: \"overwrite\",\n        description: \"Overwrite\",\n        bindKey: \"Insert\",\n        exec: function (editor) { editor.toggleOverwrite(); },\n        readOnly: true\n    }, {\n        name: \"selecttostart\",\n        description: \"Select to start\",\n        bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n        exec: function (editor) { editor.getSelection().selectFileStart(); },\n        multiSelectAction: \"forEach\",\n        readOnly: true,\n        scrollIntoView: \"animate\",\n        aceCommandGroup: \"fileJump\"\n    }, {\n        name: \"gotostart\",\n        description: \"Go to start\",\n        bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n        exec: function (editor) { editor.navigateFileStart(); },\n        multiSelectAction: \"forEach\",\n        readOnly: true,\n        scrollIntoView: \"animate\",\n        aceCommandGroup: \"fileJump\"\n    }, {\n        name: \"selectup\",\n        description: \"Select up\",\n        bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n        exec: function (editor) { editor.getSelection().selectUp(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"golineup\",\n        description: \"Go line up\",\n        bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n        exec: function (editor, args) { editor.navigateUp(args.times); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selecttoend\",\n        description: \"Select to end\",\n        bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n        exec: function (editor) { editor.getSelection().selectFileEnd(); },\n        multiSelectAction: \"forEach\",\n        readOnly: true,\n        scrollIntoView: \"animate\",\n        aceCommandGroup: \"fileJump\"\n    }, {\n        name: \"gotoend\",\n        description: \"Go to end\",\n        bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n        exec: function (editor) { editor.navigateFileEnd(); },\n        multiSelectAction: \"forEach\",\n        readOnly: true,\n        scrollIntoView: \"animate\",\n        aceCommandGroup: \"fileJump\"\n    }, {\n        name: \"selectdown\",\n        description: \"Select down\",\n        bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n        exec: function (editor) { editor.getSelection().selectDown(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"golinedown\",\n        description: \"Go line down\",\n        bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n        exec: function (editor, args) { editor.navigateDown(args.times); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selectwordleft\",\n        description: \"Select word left\",\n        bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n        exec: function (editor) { editor.getSelection().selectWordLeft(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"gotowordleft\",\n        description: \"Go to word left\",\n        bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n        exec: function (editor) { editor.navigateWordLeft(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selecttolinestart\",\n        description: \"Select to line start\",\n        bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n        exec: function (editor) { editor.getSelection().selectLineStart(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"gotolinestart\",\n        description: \"Go to line start\",\n        bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n        exec: function (editor) { editor.navigateLineStart(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selectleft\",\n        description: \"Select left\",\n        bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n        exec: function (editor) { editor.getSelection().selectLeft(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"gotoleft\",\n        description: \"Go to left\",\n        bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n        exec: function (editor, args) { editor.navigateLeft(args.times); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selectwordright\",\n        description: \"Select word right\",\n        bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n        exec: function (editor) { editor.getSelection().selectWordRight(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"gotowordright\",\n        description: \"Go to word right\",\n        bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n        exec: function (editor) { editor.navigateWordRight(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selecttolineend\",\n        description: \"Select to line end\",\n        bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n        exec: function (editor) { editor.getSelection().selectLineEnd(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"gotolineend\",\n        description: \"Go to line end\",\n        bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n        exec: function (editor) { editor.navigateLineEnd(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selectright\",\n        description: \"Select right\",\n        bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n        exec: function (editor) { editor.getSelection().selectRight(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"gotoright\",\n        description: \"Go to right\",\n        bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n        exec: function (editor, args) { editor.navigateRight(args.times); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selectpagedown\",\n        description: \"Select page down\",\n        bindKey: \"Shift-PageDown\",\n        exec: function (editor) { editor.selectPageDown(); },\n        readOnly: true\n    }, {\n        name: \"pagedown\",\n        description: \"Page down\",\n        bindKey: bindKey(null, \"Option-PageDown\"),\n        exec: function (editor) { editor.scrollPageDown(); },\n        readOnly: true\n    }, {\n        name: \"gotopagedown\",\n        description: \"Go to page down\",\n        bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n        exec: function (editor) { editor.gotoPageDown(); },\n        readOnly: true\n    }, {\n        name: \"selectpageup\",\n        description: \"Select page up\",\n        bindKey: \"Shift-PageUp\",\n        exec: function (editor) { editor.selectPageUp(); },\n        readOnly: true\n    }, {\n        name: \"pageup\",\n        description: \"Page up\",\n        bindKey: bindKey(null, \"Option-PageUp\"),\n        exec: function (editor) { editor.scrollPageUp(); },\n        readOnly: true\n    }, {\n        name: \"gotopageup\",\n        description: \"Go to page up\",\n        bindKey: \"PageUp\",\n        exec: function (editor) { editor.gotoPageUp(); },\n        readOnly: true\n    }, {\n        name: \"scrollup\",\n        description: \"Scroll up\",\n        bindKey: bindKey(\"Ctrl-Up\", null),\n        exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n        readOnly: true\n    }, {\n        name: \"scrolldown\",\n        description: \"Scroll down\",\n        bindKey: bindKey(\"Ctrl-Down\", null),\n        exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n        readOnly: true\n    }, {\n        name: \"selectlinestart\",\n        description: \"Select line start\",\n        bindKey: \"Shift-Home\",\n        exec: function (editor) { editor.getSelection().selectLineStart(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selectlineend\",\n        description: \"Select line end\",\n        bindKey: \"Shift-End\",\n        exec: function (editor) { editor.getSelection().selectLineEnd(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"togglerecording\",\n        description: \"Toggle recording\",\n        bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n        exec: function (editor) { editor.commands.toggleRecording(editor); },\n        readOnly: true\n    }, {\n        name: \"replaymacro\",\n        description: \"Replay macro\",\n        bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n        exec: function (editor) { editor.commands.replay(editor); },\n        readOnly: true\n    }, {\n        name: \"jumptomatching\",\n        description: \"Jump to matching\",\n        bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n        exec: function (editor) { editor.jumpToMatching(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"animate\",\n        readOnly: true\n    }, {\n        name: \"selecttomatching\",\n        description: \"Select to matching\",\n        bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n        exec: function (editor) { editor.jumpToMatching(true); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"animate\",\n        readOnly: true\n    }, {\n        name: \"expandToMatching\",\n        description: \"Expand to matching\",\n        bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n        exec: function (editor) { editor.jumpToMatching(true, true); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"animate\",\n        readOnly: true\n    }, {\n        name: \"passKeysToBrowser\",\n        description: \"Pass keys to browser\",\n        bindKey: bindKey(null, null),\n        exec: function () { },\n        passEvent: true,\n        readOnly: true\n    }, {\n        name: \"copy\",\n        description: \"Copy\",\n        exec: function (editor) {\n        },\n        readOnly: true\n    },\n    {\n        name: \"cut\",\n        description: \"Cut\",\n        exec: function (editor) {\n            var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n            var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n            editor._emit(\"cut\", range);\n            if (!range.isEmpty())\n                editor.session.remove(range);\n            editor.clearSelection();\n        },\n        scrollIntoView: \"cursor\",\n        multiSelectAction: \"forEach\"\n    }, {\n        name: \"paste\",\n        description: \"Paste\",\n        exec: function (editor, args) {\n            editor.$handlePaste(args);\n        },\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"removeline\",\n        description: \"Remove line\",\n        bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n        exec: function (editor) { editor.removeLines(); },\n        scrollIntoView: \"cursor\",\n        multiSelectAction: \"forEachLine\"\n    }, {\n        name: \"duplicateSelection\",\n        description: \"Duplicate selection\",\n        bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n        exec: function (editor) { editor.duplicateSelection(); },\n        scrollIntoView: \"cursor\",\n        multiSelectAction: \"forEach\"\n    }, {\n        name: \"sortlines\",\n        description: \"Sort lines\",\n        bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n        exec: function (editor) { editor.sortLines(); },\n        scrollIntoView: \"selection\",\n        multiSelectAction: \"forEachLine\"\n    }, {\n        name: \"togglecomment\",\n        description: \"Toggle comment\",\n        bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n        exec: function (editor) { editor.toggleCommentLines(); },\n        multiSelectAction: \"forEachLine\",\n        scrollIntoView: \"selectionPart\"\n    }, {\n        name: \"toggleBlockComment\",\n        description: \"Toggle block comment\",\n        bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n        exec: function (editor) { editor.toggleBlockComment(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"selectionPart\"\n    }, {\n        name: \"modifyNumberUp\",\n        description: \"Modify number up\",\n        bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n        exec: function (editor) { editor.modifyNumber(1); },\n        scrollIntoView: \"cursor\",\n        multiSelectAction: \"forEach\"\n    }, {\n        name: \"modifyNumberDown\",\n        description: \"Modify number down\",\n        bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n        exec: function (editor) { editor.modifyNumber(-1); },\n        scrollIntoView: \"cursor\",\n        multiSelectAction: \"forEach\"\n    }, {\n        name: \"replace\",\n        description: \"Replace\",\n        bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n        exec: function (editor) {\n            config.loadModule(\"ace/ext/searchbox\", function (e) { e.Search(editor, true); });\n        }\n    }, {\n        name: \"undo\",\n        description: \"Undo\",\n        bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n        exec: function (editor) { editor.undo(); }\n    }, {\n        name: \"redo\",\n        description: \"Redo\",\n        bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n        exec: function (editor) { editor.redo(); }\n    }, {\n        name: \"copylinesup\",\n        description: \"Copy lines up\",\n        bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n        exec: function (editor) { editor.copyLinesUp(); },\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"movelinesup\",\n        description: \"Move lines up\",\n        bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n        exec: function (editor) { editor.moveLinesUp(); },\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"copylinesdown\",\n        description: \"Copy lines down\",\n        bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n        exec: function (editor) { editor.copyLinesDown(); },\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"movelinesdown\",\n        description: \"Move lines down\",\n        bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n        exec: function (editor) { editor.moveLinesDown(); },\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"del\",\n        description: \"Delete\",\n        bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n        exec: function (editor) { editor.remove(\"right\"); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"backspace\",\n        description: \"Backspace\",\n        bindKey: bindKey(\"Shift-Backspace|Backspace\", \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"),\n        exec: function (editor) { editor.remove(\"left\"); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"cut_or_delete\",\n        description: \"Cut or delete\",\n        bindKey: bindKey(\"Shift-Delete\", null),\n        exec: function (editor) {\n            if (editor.selection.isEmpty()) {\n                editor.remove(\"left\");\n            }\n            else {\n                return false;\n            }\n        },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"removetolinestart\",\n        description: \"Remove to line start\",\n        bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n        exec: function (editor) { editor.removeToLineStart(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"removetolineend\",\n        description: \"Remove to line end\",\n        bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n        exec: function (editor) { editor.removeToLineEnd(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"removetolinestarthard\",\n        description: \"Remove to line start hard\",\n        bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n        exec: function (editor) {\n            var range = editor.selection.getRange();\n            range.start.column = 0;\n            editor.session.remove(range);\n        },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"removetolineendhard\",\n        description: \"Remove to line end hard\",\n        bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n        exec: function (editor) {\n            var range = editor.selection.getRange();\n            range.end.column = Number.MAX_VALUE;\n            editor.session.remove(range);\n        },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"removewordleft\",\n        description: \"Remove word left\",\n        bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n        exec: function (editor) { editor.removeWordLeft(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"removewordright\",\n        description: \"Remove word right\",\n        bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n        exec: function (editor) { editor.removeWordRight(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"outdent\",\n        description: \"Outdent\",\n        bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n        exec: function (editor) { editor.blockOutdent(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"selectionPart\"\n    }, {\n        name: \"indent\",\n        description: \"Indent\",\n        bindKey: bindKey(\"Tab\", \"Tab\"),\n        exec: function (editor) { editor.indent(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"selectionPart\"\n    }, {\n        name: \"blockoutdent\",\n        description: \"Block outdent\",\n        bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n        exec: function (editor) { editor.blockOutdent(); },\n        multiSelectAction: \"forEachLine\",\n        scrollIntoView: \"selectionPart\"\n    }, {\n        name: \"blockindent\",\n        description: \"Block indent\",\n        bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n        exec: function (editor) { editor.blockIndent(); },\n        multiSelectAction: \"forEachLine\",\n        scrollIntoView: \"selectionPart\"\n    }, {\n        name: \"insertstring\",\n        description: \"Insert string\",\n        exec: function (editor, str) { editor.insert(str); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"inserttext\",\n        description: \"Insert text\",\n        exec: function (editor, args) {\n            editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n        },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"splitline\",\n        description: \"Split line\",\n        bindKey: bindKey(null, \"Ctrl-O\"),\n        exec: function (editor) { editor.splitLine(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"transposeletters\",\n        description: \"Transpose letters\",\n        bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n        exec: function (editor) { editor.transposeLetters(); },\n        multiSelectAction: function (editor) { editor.transposeSelections(1); },\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"touppercase\",\n        description: \"To uppercase\",\n        bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n        exec: function (editor) { editor.toUpperCase(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"tolowercase\",\n        description: \"To lowercase\",\n        bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n        exec: function (editor) { editor.toLowerCase(); },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"autoindent\",\n        description: \"Auto Indent\",\n        bindKey: bindKey(null, null),\n        exec: function (editor) { editor.autoIndent(); },\n        multiSelectAction: \"forEachLine\",\n        scrollIntoView: \"animate\"\n    }, {\n        name: \"expandtoline\",\n        description: \"Expand to line\",\n        bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n        exec: function (editor) {\n            var range = editor.selection.getRange();\n            range.start.column = range.end.column = 0;\n            range.end.row++;\n            editor.selection.setRange(range, false);\n        },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"joinlines\",\n        description: \"Join lines\",\n        bindKey: bindKey(null, null),\n        exec: function (editor) {\n            var isBackwards = editor.selection.isBackwards();\n            var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n            var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n            var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n            var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n            var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n            var insertLine = editor.session.doc.getLine(selectionStart.row);\n            for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n                var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n                if (curLine.length !== 0) {\n                    curLine = \" \" + curLine;\n                }\n                insertLine += curLine;\n            }\n            if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n                insertLine += editor.session.doc.getNewLineCharacter();\n            }\n            editor.clearSelection();\n            editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n            if (selectedCount > 0) {\n                editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n                editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n            }\n            else {\n                firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n                editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n            }\n        },\n        multiSelectAction: \"forEach\",\n        readOnly: true\n    }, {\n        name: \"invertSelection\",\n        description: \"Invert selection\",\n        bindKey: bindKey(null, null),\n        exec: function (editor) {\n            var endRow = editor.session.doc.getLength() - 1;\n            var endCol = editor.session.doc.getLine(endRow).length;\n            var ranges = editor.selection.rangeList.ranges;\n            var newRanges = [];\n            if (ranges.length < 1) {\n                ranges = [editor.selection.getRange()];\n            }\n            for (var i = 0; i < ranges.length; i++) {\n                if (i == (ranges.length - 1)) {\n                    if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n                        newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n                    }\n                }\n                if (i === 0) {\n                    if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n                        newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n                    }\n                }\n                else {\n                    newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column));\n                }\n            }\n            editor.exitMultiSelectMode();\n            editor.clearSelection();\n            for (var i = 0; i < newRanges.length; i++) {\n                editor.selection.addRange(newRanges[i], false);\n            }\n        },\n        readOnly: true,\n        scrollIntoView: \"none\"\n    }, {\n        name: \"addLineAfter\",\n        description: \"Add new line after the current line\",\n        exec: function (editor) {\n            editor.selection.clearSelection();\n            editor.navigateLineEnd();\n            editor.insert(\"\\n\");\n        },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"addLineBefore\",\n        description: \"Add new line before the current line\",\n        exec: function (editor) {\n            editor.selection.clearSelection();\n            var cursor = editor.getCursorPosition();\n            editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n            editor.insert(\"\\n\");\n            if (cursor.row === 0)\n                editor.navigateUp();\n        },\n        multiSelectAction: \"forEach\",\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"openCommandPallete\",\n        description: \"Open command pallete\",\n        bindKey: bindKey(\"F1\", \"F1\"),\n        exec: function (editor) {\n            editor.prompt({ $type: \"commands\" });\n        },\n        readOnly: true\n    }, {\n        name: \"modeSelect\",\n        description: \"Change language mode...\",\n        bindKey: bindKey(null, null),\n        exec: function (editor) {\n            editor.prompt({ $type: \"modes\" });\n        },\n        readOnly: true\n    }];\nfor (var i = 1; i < 9; i++) {\n    exports.commands.push({\n        name: \"foldToLevel\" + i,\n        description: \"Fold To Level \" + i,\n        level: i,\n        exec: function (editor) { editor.session.foldToLevel(this.level); },\n        scrollIntoView: \"center\",\n        readOnly: true\n    });\n}\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/clipboard\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\nvar clipboard = require(\"./clipboard\");\nvar Editor = function (renderer, session, options) {\n    this.$toDestroy = [];\n    var container = renderer.getContainerElement();\n    this.container = container;\n    this.renderer = renderer;\n    this.id = \"editor\" + (++Editor.$uid);\n    this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n    if (typeof document == \"object\") {\n        this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n        this.renderer.textarea = this.textInput.getElement();\n        this.$mouseHandler = new MouseHandler(this);\n        new FoldHandler(this);\n    }\n    this.keyBinding = new KeyBinding(this);\n    this.$search = new Search().set({\n        wrap: true\n    });\n    this.$historyTracker = this.$historyTracker.bind(this);\n    this.commands.on(\"exec\", this.$historyTracker);\n    this.$initOperationListeners();\n    this._$emitInputEvent = lang.delayedCall(function () {\n        this._signal(\"input\", {});\n        if (this.session && !this.session.destroyed)\n            this.session.bgTokenizer.scheduleStart();\n    }.bind(this));\n    this.on(\"change\", function (_, _self) {\n        _self._$emitInputEvent.schedule(31);\n    });\n    this.setSession(session || options && options.session || new EditSession(\"\"));\n    config.resetOptions(this);\n    if (options)\n        this.setOptions(options);\n    config._signal(\"editor\", this);\n};\nEditor.$uid = 0;\n(function () {\n    oop.implement(this, EventEmitter);\n    this.$initOperationListeners = function () {\n        this.commands.on(\"exec\", this.startOperation.bind(this), true);\n        this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n        this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n        this.on(\"change\", function () {\n            if (!this.curOp) {\n                this.startOperation();\n                this.curOp.selectionBefore = this.$lastSel;\n            }\n            this.curOp.docChanged = true;\n        }.bind(this), true);\n        this.on(\"changeSelection\", function () {\n            if (!this.curOp) {\n                this.startOperation();\n                this.curOp.selectionBefore = this.$lastSel;\n            }\n            this.curOp.selectionChanged = true;\n        }.bind(this), true);\n    };\n    this.curOp = null;\n    this.prevOp = {};\n    this.startOperation = function (commandEvent) {\n        if (this.curOp) {\n            if (!commandEvent || this.curOp.command)\n                return;\n            this.prevOp = this.curOp;\n        }\n        if (!commandEvent) {\n            this.previousCommand = null;\n            commandEvent = {};\n        }\n        this.$opResetTimer.schedule();\n        this.curOp = this.session.curOp = {\n            command: commandEvent.command || {},\n            args: commandEvent.args,\n            scrollTop: this.renderer.scrollTop\n        };\n        this.curOp.selectionBefore = this.selection.toJSON();\n    };\n    this.endOperation = function (e) {\n        if (this.curOp && this.session) {\n            if (e && e.returnValue === false || !this.session)\n                return (this.curOp = null);\n            if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n                return;\n            this._signal(\"beforeEndOperation\");\n            if (!this.curOp)\n                return;\n            var command = this.curOp.command;\n            var scrollIntoView = command && command.scrollIntoView;\n            if (scrollIntoView) {\n                switch (scrollIntoView) {\n                    case \"center-animate\":\n                        scrollIntoView = \"animate\";\n                    case \"center\":\n                        this.renderer.scrollCursorIntoView(null, 0.5);\n                        break;\n                    case \"animate\":\n                    case \"cursor\":\n                        this.renderer.scrollCursorIntoView();\n                        break;\n                    case \"selectionPart\":\n                        var range = this.selection.getRange();\n                        var config = this.renderer.layerConfig;\n                        if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n                            this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n                        }\n                        break;\n                    default:\n                        break;\n                }\n                if (scrollIntoView == \"animate\")\n                    this.renderer.animateScrolling(this.curOp.scrollTop);\n            }\n            var sel = this.selection.toJSON();\n            this.curOp.selectionAfter = sel;\n            this.$lastSel = this.selection.toJSON();\n            this.session.getUndoManager().addSelection(sel);\n            this.prevOp = this.curOp;\n            this.curOp = null;\n        }\n    };\n    this.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\n    this.$historyTracker = function (e) {\n        if (!this.$mergeUndoDeltas)\n            return;\n        var prev = this.prevOp;\n        var mergeableCommands = this.$mergeableCommands;\n        var shouldMerge = prev.command && (e.command.name == prev.command.name);\n        if (e.command.name == \"insertstring\") {\n            var text = e.args;\n            if (this.mergeNextCommand === undefined)\n                this.mergeNextCommand = true;\n            shouldMerge = shouldMerge\n                && this.mergeNextCommand // previous command allows to coalesce with\n                && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n            this.mergeNextCommand = true;\n        }\n        else {\n            shouldMerge = shouldMerge\n                && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n        }\n        if (this.$mergeUndoDeltas != \"always\"\n            && Date.now() - this.sequenceStartTime > 2000) {\n            shouldMerge = false; // the sequence is too long\n        }\n        if (shouldMerge)\n            this.session.mergeUndoDeltas = true;\n        else if (mergeableCommands.indexOf(e.command.name) !== -1)\n            this.sequenceStartTime = Date.now();\n    };\n    this.setKeyboardHandler = function (keyboardHandler, cb) {\n        if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n            this.$keybindingId = keyboardHandler;\n            var _self = this;\n            config.loadModule([\"keybinding\", keyboardHandler], function (module) {\n                if (_self.$keybindingId == keyboardHandler)\n                    _self.keyBinding.setKeyboardHandler(module && module.handler);\n                cb && cb();\n            });\n        }\n        else {\n            this.$keybindingId = null;\n            this.keyBinding.setKeyboardHandler(keyboardHandler);\n            cb && cb();\n        }\n    };\n    this.getKeyboardHandler = function () {\n        return this.keyBinding.getKeyboardHandler();\n    };\n    this.setSession = function (session) {\n        if (this.session == session)\n            return;\n        if (this.curOp)\n            this.endOperation();\n        this.curOp = {};\n        var oldSession = this.session;\n        if (oldSession) {\n            this.session.off(\"change\", this.$onDocumentChange);\n            this.session.off(\"changeMode\", this.$onChangeMode);\n            this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n            this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n            this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n            this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n            this.session.off(\"changeFold\", this.$onChangeFold);\n            this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n            this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n            this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n            this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n            this.session.off(\"changeOverwrite\", this.$onCursorChange);\n            this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n            this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n            var selection = this.session.getSelection();\n            selection.off(\"changeCursor\", this.$onCursorChange);\n            selection.off(\"changeSelection\", this.$onSelectionChange);\n        }\n        this.session = session;\n        if (session) {\n            this.$onDocumentChange = this.onDocumentChange.bind(this);\n            session.on(\"change\", this.$onDocumentChange);\n            this.renderer.setSession(session);\n            this.$onChangeMode = this.onChangeMode.bind(this);\n            session.on(\"changeMode\", this.$onChangeMode);\n            this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n            session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n            this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n            session.on(\"changeTabSize\", this.$onChangeTabSize);\n            this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n            session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n            this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n            session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n            this.$onChangeFold = this.onChangeFold.bind(this);\n            session.on(\"changeFold\", this.$onChangeFold);\n            this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n            this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n            this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n            this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n            this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n            this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n            this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n            this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n            this.$onCursorChange = this.onCursorChange.bind(this);\n            this.session.on(\"changeOverwrite\", this.$onCursorChange);\n            this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n            this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n            this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n            this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n            this.selection = session.getSelection();\n            this.selection.on(\"changeCursor\", this.$onCursorChange);\n            this.$onSelectionChange = this.onSelectionChange.bind(this);\n            this.selection.on(\"changeSelection\", this.$onSelectionChange);\n            this.onChangeMode();\n            this.onCursorChange();\n            this.onScrollTopChange();\n            this.onScrollLeftChange();\n            this.onSelectionChange();\n            this.onChangeFrontMarker();\n            this.onChangeBackMarker();\n            this.onChangeBreakpoint();\n            this.onChangeAnnotation();\n            this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n            this.renderer.updateFull();\n        }\n        else {\n            this.selection = null;\n            this.renderer.setSession(session);\n        }\n        this._signal(\"changeSession\", {\n            session: session,\n            oldSession: oldSession\n        });\n        this.curOp = null;\n        oldSession && oldSession._signal(\"changeEditor\", { oldEditor: this });\n        session && session._signal(\"changeEditor\", { editor: this });\n        if (session && !session.destroyed)\n            session.bgTokenizer.scheduleStart();\n    };\n    this.getSession = function () {\n        return this.session;\n    };\n    this.setValue = function (val, cursorPos) {\n        this.session.doc.setValue(val);\n        if (!cursorPos)\n            this.selectAll();\n        else if (cursorPos == 1)\n            this.navigateFileEnd();\n        else if (cursorPos == -1)\n            this.navigateFileStart();\n        return val;\n    };\n    this.getValue = function () {\n        return this.session.getValue();\n    };\n    this.getSelection = function () {\n        return this.selection;\n    };\n    this.resize = function (force) {\n        this.renderer.onResize(force);\n    };\n    this.setTheme = function (theme, cb) {\n        this.renderer.setTheme(theme, cb);\n    };\n    this.getTheme = function () {\n        return this.renderer.getTheme();\n    };\n    this.setStyle = function (style) {\n        this.renderer.setStyle(style);\n    };\n    this.unsetStyle = function (style) {\n        this.renderer.unsetStyle(style);\n    };\n    this.getFontSize = function () {\n        return this.getOption(\"fontSize\") ||\n            dom.computedStyle(this.container).fontSize;\n    };\n    this.setFontSize = function (size) {\n        this.setOption(\"fontSize\", size);\n    };\n    this.$highlightBrackets = function () {\n        if (this.$highlightPending) {\n            return;\n        }\n        var self = this;\n        this.$highlightPending = true;\n        setTimeout(function () {\n            self.$highlightPending = false;\n            var session = self.session;\n            if (!session || session.destroyed)\n                return;\n            if (session.$bracketHighlight) {\n                session.$bracketHighlight.markerIds.forEach(function (id) {\n                    session.removeMarker(id);\n                });\n                session.$bracketHighlight = null;\n            }\n            var ranges = session.getMatchingBracketRanges(self.getCursorPosition());\n            if (!ranges && session.$mode.getMatching)\n                ranges = session.$mode.getMatching(self.session);\n            if (!ranges)\n                return;\n            var markerType = \"ace_bracket\";\n            if (!Array.isArray(ranges)) {\n                ranges = [ranges];\n            }\n            else if (ranges.length == 1) {\n                markerType = \"ace_error_bracket\";\n            }\n            if (ranges.length == 2) {\n                if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n                    ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n                else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n                    ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n            }\n            session.$bracketHighlight = {\n                ranges: ranges,\n                markerIds: ranges.map(function (range) {\n                    return session.addMarker(range, markerType, \"text\");\n                })\n            };\n        }, 50);\n    };\n    this.$highlightTags = function () {\n        if (this.$highlightTagPending)\n            return;\n        var self = this;\n        this.$highlightTagPending = true;\n        setTimeout(function () {\n            self.$highlightTagPending = false;\n            var session = self.session;\n            if (!session || session.destroyed)\n                return;\n            var pos = self.getCursorPosition();\n            var iterator = new TokenIterator(self.session, pos.row, pos.column);\n            var token = iterator.getCurrentToken();\n            if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\n                session.removeMarker(session.$tagHighlight);\n                session.$tagHighlight = null;\n                return;\n            }\n            if (token.type.indexOf(\"tag-open\") !== -1) {\n                token = iterator.stepForward();\n                if (!token)\n                    return;\n            }\n            var tag = token.value;\n            var currentTag = token.value;\n            var depth = 0;\n            var prevToken = iterator.stepBackward();\n            if (prevToken.value === '<') {\n                do {\n                    prevToken = token;\n                    token = iterator.stepForward();\n                    if (token) {\n                        if (token.type.indexOf('tag-name') !== -1) {\n                            currentTag = token.value;\n                            if (tag === currentTag) {\n                                if (prevToken.value === '<') {\n                                    depth++;\n                                }\n                                else if (prevToken.value === '</') {\n                                    depth--;\n                                }\n                            }\n                        }\n                        else if (tag === currentTag && token.value === '/>') { // self closing tag\n                            depth--;\n                        }\n                    }\n                } while (token && depth >= 0);\n            }\n            else {\n                do {\n                    token = prevToken;\n                    prevToken = iterator.stepBackward();\n                    if (token) {\n                        if (token.type.indexOf('tag-name') !== -1) {\n                            if (tag === token.value) {\n                                if (prevToken.value === '<') {\n                                    depth++;\n                                }\n                                else if (prevToken.value === '</') {\n                                    depth--;\n                                }\n                            }\n                        }\n                        else if (token.value === '/>') { // self closing tag\n                            var stepCount = 0;\n                            var tmpToken = prevToken;\n                            while (tmpToken) {\n                                if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n                                    depth--;\n                                    break;\n                                }\n                                else if (tmpToken.value === '<') {\n                                    break;\n                                }\n                                tmpToken = iterator.stepBackward();\n                                stepCount++;\n                            }\n                            for (var i = 0; i < stepCount; i++) {\n                                iterator.stepForward();\n                            }\n                        }\n                    }\n                } while (prevToken && depth <= 0);\n                iterator.stepForward();\n            }\n            if (!token) {\n                session.removeMarker(session.$tagHighlight);\n                session.$tagHighlight = null;\n                return;\n            }\n            var row = iterator.getCurrentTokenRow();\n            var column = iterator.getCurrentTokenColumn();\n            var range = new Range(row, column, row, column + token.value.length);\n            var sbm = session.$backMarkers[session.$tagHighlight];\n            if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) {\n                session.removeMarker(session.$tagHighlight);\n                session.$tagHighlight = null;\n            }\n            if (!session.$tagHighlight)\n                session.$tagHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\n        }, 50);\n    };\n    this.focus = function () {\n        this.textInput.focus();\n    };\n    this.isFocused = function () {\n        return this.textInput.isFocused();\n    };\n    this.blur = function () {\n        this.textInput.blur();\n    };\n    this.onFocus = function (e) {\n        if (this.$isFocused)\n            return;\n        this.$isFocused = true;\n        this.renderer.showCursor();\n        this.renderer.visualizeFocus();\n        this._emit(\"focus\", e);\n    };\n    this.onBlur = function (e) {\n        if (!this.$isFocused)\n            return;\n        this.$isFocused = false;\n        this.renderer.hideCursor();\n        this.renderer.visualizeBlur();\n        this._emit(\"blur\", e);\n    };\n    this.$cursorChange = function () {\n        this.renderer.updateCursor();\n        this.$highlightBrackets();\n        this.$highlightTags();\n        this.$updateHighlightActiveLine();\n    };\n    this.onDocumentChange = function (delta) {\n        var wrap = this.session.$useWrapMode;\n        var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n        this.renderer.updateLines(delta.start.row, lastRow, wrap);\n        this._signal(\"change\", delta);\n        this.$cursorChange();\n    };\n    this.onTokenizerUpdate = function (e) {\n        var rows = e.data;\n        this.renderer.updateLines(rows.first, rows.last);\n    };\n    this.onScrollTopChange = function () {\n        this.renderer.scrollToY(this.session.getScrollTop());\n    };\n    this.onScrollLeftChange = function () {\n        this.renderer.scrollToX(this.session.getScrollLeft());\n    };\n    this.onCursorChange = function () {\n        this.$cursorChange();\n        this._signal(\"changeSelection\");\n    };\n    this.$updateHighlightActiveLine = function () {\n        var session = this.getSession();\n        var highlight;\n        if (this.$highlightActiveLine) {\n            if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n                highlight = this.getCursorPosition();\n            if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n                highlight = false;\n            if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n                highlight = false;\n        }\n        if (session.$highlightLineMarker && !highlight) {\n            session.removeMarker(session.$highlightLineMarker.id);\n            session.$highlightLineMarker = null;\n        }\n        else if (!session.$highlightLineMarker && highlight) {\n            var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n            range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n            session.$highlightLineMarker = range;\n        }\n        else if (highlight) {\n            session.$highlightLineMarker.start.row = highlight.row;\n            session.$highlightLineMarker.end.row = highlight.row;\n            session.$highlightLineMarker.start.column = highlight.column;\n            session._signal(\"changeBackMarker\");\n        }\n    };\n    this.onSelectionChange = function (e) {\n        var session = this.session;\n        if (session.$selectionMarker) {\n            session.removeMarker(session.$selectionMarker);\n        }\n        session.$selectionMarker = null;\n        if (!this.selection.isEmpty()) {\n            var range = this.selection.getRange();\n            var style = this.getSelectionStyle();\n            session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n        }\n        else {\n            this.$updateHighlightActiveLine();\n        }\n        var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n        this.session.highlight(re);\n        this._signal(\"changeSelection\");\n    };\n    this.$getSelectionHighLightRegexp = function () {\n        var session = this.session;\n        var selection = this.getSelectionRange();\n        if (selection.isEmpty() || selection.isMultiLine())\n            return;\n        var startColumn = selection.start.column;\n        var endColumn = selection.end.column;\n        var line = session.getLine(selection.start.row);\n        var needle = line.substring(startColumn, endColumn);\n        if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n            return;\n        var re = this.$search.$assembleRegExp({\n            wholeWord: true,\n            caseSensitive: true,\n            needle: needle\n        });\n        var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n        if (!re.test(wordWithBoundary))\n            return;\n        return re;\n    };\n    this.onChangeFrontMarker = function () {\n        this.renderer.updateFrontMarkers();\n    };\n    this.onChangeBackMarker = function () {\n        this.renderer.updateBackMarkers();\n    };\n    this.onChangeBreakpoint = function () {\n        this.renderer.updateBreakpoints();\n    };\n    this.onChangeAnnotation = function () {\n        this.renderer.setAnnotations(this.session.getAnnotations());\n    };\n    this.onChangeMode = function (e) {\n        this.renderer.updateText();\n        this._emit(\"changeMode\", e);\n    };\n    this.onChangeWrapLimit = function () {\n        this.renderer.updateFull();\n    };\n    this.onChangeWrapMode = function () {\n        this.renderer.onResize(true);\n    };\n    this.onChangeFold = function () {\n        this.$updateHighlightActiveLine();\n        this.renderer.updateFull();\n    };\n    this.getSelectedText = function () {\n        return this.session.getTextRange(this.getSelectionRange());\n    };\n    this.getCopyText = function () {\n        var text = this.getSelectedText();\n        var nl = this.session.doc.getNewLineCharacter();\n        var copyLine = false;\n        if (!text && this.$copyWithEmptySelection) {\n            copyLine = true;\n            var ranges = this.selection.getAllRanges();\n            for (var i = 0; i < ranges.length; i++) {\n                var range = ranges[i];\n                if (i && ranges[i - 1].start.row == range.start.row)\n                    continue;\n                text += this.session.getLine(range.start.row) + nl;\n            }\n        }\n        var e = { text: text };\n        this._signal(\"copy\", e);\n        clipboard.lineMode = copyLine ? e.text : false;\n        return e.text;\n    };\n    this.onCopy = function () {\n        this.commands.exec(\"copy\", this);\n    };\n    this.onCut = function () {\n        this.commands.exec(\"cut\", this);\n    };\n    this.onPaste = function (text, event) {\n        var e = { text: text, event: event };\n        this.commands.exec(\"paste\", this, e);\n    };\n    this.$handlePaste = function (e) {\n        if (typeof e == \"string\")\n            e = { text: e };\n        this._signal(\"paste\", e);\n        var text = e.text;\n        var lineMode = text === clipboard.lineMode;\n        var session = this.session;\n        if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n            if (lineMode)\n                session.insert({ row: this.selection.lead.row, column: 0 }, text);\n            else\n                this.insert(text);\n        }\n        else if (lineMode) {\n            this.selection.rangeList.ranges.forEach(function (range) {\n                session.insert({ row: range.start.row, column: 0 }, text);\n            });\n        }\n        else {\n            var lines = text.split(/\\r\\n|\\r|\\n/);\n            var ranges = this.selection.rangeList.ranges;\n            var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n            if (lines.length != ranges.length || isFullLine)\n                return this.commands.exec(\"insertstring\", this, text);\n            for (var i = ranges.length; i--;) {\n                var range = ranges[i];\n                if (!range.isEmpty())\n                    session.remove(range);\n                session.insert(range.start, lines[i]);\n            }\n        }\n    };\n    this.execCommand = function (command, args) {\n        return this.commands.exec(command, this, args);\n    };\n    this.insert = function (text, pasted) {\n        var session = this.session;\n        var mode = session.getMode();\n        var cursor = this.getCursorPosition();\n        if (this.getBehavioursEnabled() && !pasted) {\n            var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n            if (transform) {\n                if (text !== transform.text) {\n                    if (!this.inVirtualSelectionMode) {\n                        this.session.mergeUndoDeltas = false;\n                        this.mergeNextCommand = false;\n                    }\n                }\n                text = transform.text;\n            }\n        }\n        if (text == \"\\t\")\n            text = this.session.getTabString();\n        if (!this.selection.isEmpty()) {\n            var range = this.getSelectionRange();\n            cursor = this.session.remove(range);\n            this.clearSelection();\n        }\n        else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n            var range = new Range.fromPoints(cursor, cursor);\n            range.end.column += text.length;\n            this.session.remove(range);\n        }\n        if (text == \"\\n\" || text == \"\\r\\n\") {\n            var line = session.getLine(cursor.row);\n            if (cursor.column > line.search(/\\S|$/)) {\n                var d = line.substr(cursor.column).search(/\\S|$/);\n                session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n            }\n        }\n        this.clearSelection();\n        var start = cursor.column;\n        var lineState = session.getState(cursor.row);\n        var line = session.getLine(cursor.row);\n        var shouldOutdent = mode.checkOutdent(lineState, line, text);\n        session.insert(cursor, text);\n        if (transform && transform.selection) {\n            if (transform.selection.length == 2) { // Transform relative to the current column\n                this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1]));\n            }\n            else { // Transform relative to the current row.\n                this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3]));\n            }\n        }\n        if (this.$enableAutoIndent) {\n            if (session.getDocument().isNewLine(text)) {\n                var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n                session.insert({ row: cursor.row + 1, column: 0 }, lineIndent);\n            }\n            if (shouldOutdent)\n                mode.autoOutdent(lineState, session, cursor.row);\n        }\n    };\n    this.autoIndent = function () {\n        var session = this.session;\n        var mode = session.getMode();\n        var startRow, endRow;\n        if (this.selection.isEmpty()) {\n            startRow = 0;\n            endRow = session.doc.getLength() - 1;\n        }\n        else {\n            var selectedRange = this.getSelectionRange();\n            startRow = selectedRange.start.row;\n            endRow = selectedRange.end.row;\n        }\n        var prevLineState = \"\";\n        var prevLine = \"\";\n        var lineIndent = \"\";\n        var line, currIndent, range;\n        var tab = session.getTabString();\n        for (var row = startRow; row <= endRow; row++) {\n            if (row > 0) {\n                prevLineState = session.getState(row - 1);\n                prevLine = session.getLine(row - 1);\n                lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n            }\n            line = session.getLine(row);\n            currIndent = mode.$getIndent(line);\n            if (lineIndent !== currIndent) {\n                if (currIndent.length > 0) {\n                    range = new Range(row, 0, row, currIndent.length);\n                    session.remove(range);\n                }\n                if (lineIndent.length > 0) {\n                    session.insert({ row: row, column: 0 }, lineIndent);\n                }\n            }\n            mode.autoOutdent(prevLineState, session, row);\n        }\n    };\n    this.onTextInput = function (text, composition) {\n        if (!composition)\n            return this.keyBinding.onTextInput(text);\n        this.startOperation({ command: { name: \"insertstring\" } });\n        var applyComposition = this.applyComposition.bind(this, text, composition);\n        if (this.selection.rangeCount)\n            this.forEachSelection(applyComposition);\n        else\n            applyComposition();\n        this.endOperation();\n    };\n    this.applyComposition = function (text, composition) {\n        if (composition.extendLeft || composition.extendRight) {\n            var r = this.selection.getRange();\n            r.start.column -= composition.extendLeft;\n            r.end.column += composition.extendRight;\n            if (r.start.column < 0) {\n                r.start.row--;\n                r.start.column += this.session.getLine(r.start.row).length + 1;\n            }\n            this.selection.setRange(r);\n            if (!text && !r.isEmpty())\n                this.remove();\n        }\n        if (text || !this.selection.isEmpty())\n            this.insert(text, true);\n        if (composition.restoreStart || composition.restoreEnd) {\n            var r = this.selection.getRange();\n            r.start.column -= composition.restoreStart;\n            r.end.column -= composition.restoreEnd;\n            this.selection.setRange(r);\n        }\n    };\n    this.onCommandKey = function (e, hashId, keyCode) {\n        return this.keyBinding.onCommandKey(e, hashId, keyCode);\n    };\n    this.setOverwrite = function (overwrite) {\n        this.session.setOverwrite(overwrite);\n    };\n    this.getOverwrite = function () {\n        return this.session.getOverwrite();\n    };\n    this.toggleOverwrite = function () {\n        this.session.toggleOverwrite();\n    };\n    this.setScrollSpeed = function (speed) {\n        this.setOption(\"scrollSpeed\", speed);\n    };\n    this.getScrollSpeed = function () {\n        return this.getOption(\"scrollSpeed\");\n    };\n    this.setDragDelay = function (dragDelay) {\n        this.setOption(\"dragDelay\", dragDelay);\n    };\n    this.getDragDelay = function () {\n        return this.getOption(\"dragDelay\");\n    };\n    this.setSelectionStyle = function (val) {\n        this.setOption(\"selectionStyle\", val);\n    };\n    this.getSelectionStyle = function () {\n        return this.getOption(\"selectionStyle\");\n    };\n    this.setHighlightActiveLine = function (shouldHighlight) {\n        this.setOption(\"highlightActiveLine\", shouldHighlight);\n    };\n    this.getHighlightActiveLine = function () {\n        return this.getOption(\"highlightActiveLine\");\n    };\n    this.setHighlightGutterLine = function (shouldHighlight) {\n        this.setOption(\"highlightGutterLine\", shouldHighlight);\n    };\n    this.getHighlightGutterLine = function () {\n        return this.getOption(\"highlightGutterLine\");\n    };\n    this.setHighlightSelectedWord = function (shouldHighlight) {\n        this.setOption(\"highlightSelectedWord\", shouldHighlight);\n    };\n    this.getHighlightSelectedWord = function () {\n        return this.$highlightSelectedWord;\n    };\n    this.setAnimatedScroll = function (shouldAnimate) {\n        this.renderer.setAnimatedScroll(shouldAnimate);\n    };\n    this.getAnimatedScroll = function () {\n        return this.renderer.getAnimatedScroll();\n    };\n    this.setShowInvisibles = function (showInvisibles) {\n        this.renderer.setShowInvisibles(showInvisibles);\n    };\n    this.getShowInvisibles = function () {\n        return this.renderer.getShowInvisibles();\n    };\n    this.setDisplayIndentGuides = function (display) {\n        this.renderer.setDisplayIndentGuides(display);\n    };\n    this.getDisplayIndentGuides = function () {\n        return this.renderer.getDisplayIndentGuides();\n    };\n    this.setShowPrintMargin = function (showPrintMargin) {\n        this.renderer.setShowPrintMargin(showPrintMargin);\n    };\n    this.getShowPrintMargin = function () {\n        return this.renderer.getShowPrintMargin();\n    };\n    this.setPrintMarginColumn = function (showPrintMargin) {\n        this.renderer.setPrintMarginColumn(showPrintMargin);\n    };\n    this.getPrintMarginColumn = function () {\n        return this.renderer.getPrintMarginColumn();\n    };\n    this.setReadOnly = function (readOnly) {\n        this.setOption(\"readOnly\", readOnly);\n    };\n    this.getReadOnly = function () {\n        return this.getOption(\"readOnly\");\n    };\n    this.setBehavioursEnabled = function (enabled) {\n        this.setOption(\"behavioursEnabled\", enabled);\n    };\n    this.getBehavioursEnabled = function () {\n        return this.getOption(\"behavioursEnabled\");\n    };\n    this.setWrapBehavioursEnabled = function (enabled) {\n        this.setOption(\"wrapBehavioursEnabled\", enabled);\n    };\n    this.getWrapBehavioursEnabled = function () {\n        return this.getOption(\"wrapBehavioursEnabled\");\n    };\n    this.setShowFoldWidgets = function (show) {\n        this.setOption(\"showFoldWidgets\", show);\n    };\n    this.getShowFoldWidgets = function () {\n        return this.getOption(\"showFoldWidgets\");\n    };\n    this.setFadeFoldWidgets = function (fade) {\n        this.setOption(\"fadeFoldWidgets\", fade);\n    };\n    this.getFadeFoldWidgets = function () {\n        return this.getOption(\"fadeFoldWidgets\");\n    };\n    this.remove = function (dir) {\n        if (this.selection.isEmpty()) {\n            if (dir == \"left\")\n                this.selection.selectLeft();\n            else\n                this.selection.selectRight();\n        }\n        var range = this.getSelectionRange();\n        if (this.getBehavioursEnabled()) {\n            var session = this.session;\n            var state = session.getState(range.start.row);\n            var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n            if (range.end.column === 0) {\n                var text = session.getTextRange(range);\n                if (text[text.length - 1] == \"\\n\") {\n                    var line = session.getLine(range.end.row);\n                    if (/^\\s+$/.test(line)) {\n                        range.end.column = line.length;\n                    }\n                }\n            }\n            if (new_range)\n                range = new_range;\n        }\n        this.session.remove(range);\n        this.clearSelection();\n    };\n    this.removeWordRight = function () {\n        if (this.selection.isEmpty())\n            this.selection.selectWordRight();\n        this.session.remove(this.getSelectionRange());\n        this.clearSelection();\n    };\n    this.removeWordLeft = function () {\n        if (this.selection.isEmpty())\n            this.selection.selectWordLeft();\n        this.session.remove(this.getSelectionRange());\n        this.clearSelection();\n    };\n    this.removeToLineStart = function () {\n        if (this.selection.isEmpty())\n            this.selection.selectLineStart();\n        if (this.selection.isEmpty())\n            this.selection.selectLeft();\n        this.session.remove(this.getSelectionRange());\n        this.clearSelection();\n    };\n    this.removeToLineEnd = function () {\n        if (this.selection.isEmpty())\n            this.selection.selectLineEnd();\n        var range = this.getSelectionRange();\n        if (range.start.column == range.end.column && range.start.row == range.end.row) {\n            range.end.column = 0;\n            range.end.row++;\n        }\n        this.session.remove(range);\n        this.clearSelection();\n    };\n    this.splitLine = function () {\n        if (!this.selection.isEmpty()) {\n            this.session.remove(this.getSelectionRange());\n            this.clearSelection();\n        }\n        var cursor = this.getCursorPosition();\n        this.insert(\"\\n\");\n        this.moveCursorToPosition(cursor);\n    };\n    this.transposeLetters = function () {\n        if (!this.selection.isEmpty()) {\n            return;\n        }\n        var cursor = this.getCursorPosition();\n        var column = cursor.column;\n        if (column === 0)\n            return;\n        var line = this.session.getLine(cursor.row);\n        var swap, range;\n        if (column < line.length) {\n            swap = line.charAt(column) + line.charAt(column - 1);\n            range = new Range(cursor.row, column - 1, cursor.row, column + 1);\n        }\n        else {\n            swap = line.charAt(column - 1) + line.charAt(column - 2);\n            range = new Range(cursor.row, column - 2, cursor.row, column);\n        }\n        this.session.replace(range, swap);\n        this.session.selection.moveToPosition(range.end);\n    };\n    this.toLowerCase = function () {\n        var originalRange = this.getSelectionRange();\n        if (this.selection.isEmpty()) {\n            this.selection.selectWord();\n        }\n        var range = this.getSelectionRange();\n        var text = this.session.getTextRange(range);\n        this.session.replace(range, text.toLowerCase());\n        this.selection.setSelectionRange(originalRange);\n    };\n    this.toUpperCase = function () {\n        var originalRange = this.getSelectionRange();\n        if (this.selection.isEmpty()) {\n            this.selection.selectWord();\n        }\n        var range = this.getSelectionRange();\n        var text = this.session.getTextRange(range);\n        this.session.replace(range, text.toUpperCase());\n        this.selection.setSelectionRange(originalRange);\n    };\n    this.indent = function () {\n        var session = this.session;\n        var range = this.getSelectionRange();\n        if (range.start.row < range.end.row) {\n            var rows = this.$getSelectedRows();\n            session.indentRows(rows.first, rows.last, \"\\t\");\n            return;\n        }\n        else if (range.start.column < range.end.column) {\n            var text = session.getTextRange(range);\n            if (!/^\\s+$/.test(text)) {\n                var rows = this.$getSelectedRows();\n                session.indentRows(rows.first, rows.last, \"\\t\");\n                return;\n            }\n        }\n        var line = session.getLine(range.start.row);\n        var position = range.start;\n        var size = session.getTabSize();\n        var column = session.documentToScreenColumn(position.row, position.column);\n        if (this.session.getUseSoftTabs()) {\n            var count = (size - column % size);\n            var indentString = lang.stringRepeat(\" \", count);\n        }\n        else {\n            var count = column % size;\n            while (line[range.start.column - 1] == \" \" && count) {\n                range.start.column--;\n                count--;\n            }\n            this.selection.setSelectionRange(range);\n            indentString = \"\\t\";\n        }\n        return this.insert(indentString);\n    };\n    this.blockIndent = function () {\n        var rows = this.$getSelectedRows();\n        this.session.indentRows(rows.first, rows.last, \"\\t\");\n    };\n    this.blockOutdent = function () {\n        var selection = this.session.getSelection();\n        this.session.outdentRows(selection.getRange());\n    };\n    this.sortLines = function () {\n        var rows = this.$getSelectedRows();\n        var session = this.session;\n        var lines = [];\n        for (var i = rows.first; i <= rows.last; i++)\n            lines.push(session.getLine(i));\n        lines.sort(function (a, b) {\n            if (a.toLowerCase() < b.toLowerCase())\n                return -1;\n            if (a.toLowerCase() > b.toLowerCase())\n                return 1;\n            return 0;\n        });\n        var deleteRange = new Range(0, 0, 0, 0);\n        for (var i = rows.first; i <= rows.last; i++) {\n            var line = session.getLine(i);\n            deleteRange.start.row = i;\n            deleteRange.end.row = i;\n            deleteRange.end.column = line.length;\n            session.replace(deleteRange, lines[i - rows.first]);\n        }\n    };\n    this.toggleCommentLines = function () {\n        var state = this.session.getState(this.getCursorPosition().row);\n        var rows = this.$getSelectedRows();\n        this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n    };\n    this.toggleBlockComment = function () {\n        var cursor = this.getCursorPosition();\n        var state = this.session.getState(cursor.row);\n        var range = this.getSelectionRange();\n        this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n    };\n    this.getNumberAt = function (row, column) {\n        var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n        _numberRx.lastIndex = 0;\n        var s = this.session.getLine(row);\n        while (_numberRx.lastIndex < column) {\n            var m = _numberRx.exec(s);\n            if (m.index <= column && m.index + m[0].length >= column) {\n                var number = {\n                    value: m[0],\n                    start: m.index,\n                    end: m.index + m[0].length\n                };\n                return number;\n            }\n        }\n        return null;\n    };\n    this.modifyNumber = function (amount) {\n        var row = this.selection.getCursor().row;\n        var column = this.selection.getCursor().column;\n        var charRange = new Range(row, column - 1, row, column);\n        var c = this.session.getTextRange(charRange);\n        if (!isNaN(parseFloat(c)) && isFinite(c)) {\n            var nr = this.getNumberAt(row, column);\n            if (nr) {\n                var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n                var decimals = nr.start + nr.value.length - fp;\n                var t = parseFloat(nr.value);\n                t *= Math.pow(10, decimals);\n                if (fp !== nr.end && column < fp) {\n                    amount *= Math.pow(10, nr.end - column - 1);\n                }\n                else {\n                    amount *= Math.pow(10, nr.end - column);\n                }\n                t += amount;\n                t /= Math.pow(10, decimals);\n                var nnr = t.toFixed(decimals);\n                var replaceRange = new Range(row, nr.start, row, nr.end);\n                this.session.replace(replaceRange, nnr);\n                this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length));\n            }\n        }\n        else {\n            this.toggleWord();\n        }\n    };\n    this.$toggleWordPairs = [\n        [\"first\", \"last\"],\n        [\"true\", \"false\"],\n        [\"yes\", \"no\"],\n        [\"width\", \"height\"],\n        [\"top\", \"bottom\"],\n        [\"right\", \"left\"],\n        [\"on\", \"off\"],\n        [\"x\", \"y\"],\n        [\"get\", \"set\"],\n        [\"max\", \"min\"],\n        [\"horizontal\", \"vertical\"],\n        [\"show\", \"hide\"],\n        [\"add\", \"remove\"],\n        [\"up\", \"down\"],\n        [\"before\", \"after\"],\n        [\"even\", \"odd\"],\n        [\"in\", \"out\"],\n        [\"inside\", \"outside\"],\n        [\"next\", \"previous\"],\n        [\"increase\", \"decrease\"],\n        [\"attach\", \"detach\"],\n        [\"&&\", \"||\"],\n        [\"==\", \"!=\"]\n    ];\n    this.toggleWord = function () {\n        var row = this.selection.getCursor().row;\n        var column = this.selection.getCursor().column;\n        this.selection.selectWord();\n        var currentState = this.getSelectedText();\n        var currWordStart = this.selection.getWordRange().start.column;\n        var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n        var delta = column - currWordStart - 1;\n        if (delta < 0)\n            delta = 0;\n        var curLength = 0, itLength = 0;\n        var that = this;\n        if (currentState.match(/[A-Za-z0-9_]+/)) {\n            wordParts.forEach(function (item, i) {\n                itLength = curLength + item.length;\n                if (delta >= curLength && delta <= itLength) {\n                    currentState = item;\n                    that.selection.clearSelection();\n                    that.moveCursorTo(row, curLength + currWordStart);\n                    that.selection.selectTo(row, itLength + currWordStart);\n                }\n                curLength = itLength;\n            });\n        }\n        var wordPairs = this.$toggleWordPairs;\n        var reg;\n        for (var i = 0; i < wordPairs.length; i++) {\n            var item = wordPairs[i];\n            for (var j = 0; j <= 1; j++) {\n                var negate = +!j;\n                var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n                if (firstCondition) {\n                    var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n                    if (secondCondition) {\n                        reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n                            var res = item[negate];\n                            if (result.toUpperCase() == result) {\n                                res = res.toUpperCase();\n                            }\n                            else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n                                res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n                            }\n                            return res;\n                        });\n                        this.insert(reg);\n                        reg = \"\";\n                    }\n                }\n            }\n        }\n    };\n    this.removeLines = function () {\n        var rows = this.$getSelectedRows();\n        this.session.removeFullLines(rows.first, rows.last);\n        this.clearSelection();\n    };\n    this.duplicateSelection = function () {\n        var sel = this.selection;\n        var doc = this.session;\n        var range = sel.getRange();\n        var reverse = sel.isBackwards();\n        if (range.isEmpty()) {\n            var row = range.start.row;\n            doc.duplicateLines(row, row);\n        }\n        else {\n            var point = reverse ? range.start : range.end;\n            var endPoint = doc.insert(point, doc.getTextRange(range), false);\n            range.start = point;\n            range.end = endPoint;\n            sel.setSelectionRange(range, reverse);\n        }\n    };\n    this.moveLinesDown = function () {\n        this.$moveLines(1, false);\n    };\n    this.moveLinesUp = function () {\n        this.$moveLines(-1, false);\n    };\n    this.moveText = function (range, toPosition, copy) {\n        return this.session.moveText(range, toPosition, copy);\n    };\n    this.copyLinesUp = function () {\n        this.$moveLines(-1, true);\n    };\n    this.copyLinesDown = function () {\n        this.$moveLines(1, true);\n    };\n    this.$moveLines = function (dir, copy) {\n        var rows, moved;\n        var selection = this.selection;\n        if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n            var range = selection.toOrientedRange();\n            rows = this.$getSelectedRows(range);\n            moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n            if (copy && dir == -1)\n                moved = 0;\n            range.moveBy(moved, 0);\n            selection.fromOrientedRange(range);\n        }\n        else {\n            var ranges = selection.rangeList.ranges;\n            selection.rangeList.detach(this.session);\n            this.inVirtualSelectionMode = true;\n            var diff = 0;\n            var totalDiff = 0;\n            var l = ranges.length;\n            for (var i = 0; i < l; i++) {\n                var rangeIndex = i;\n                ranges[i].moveBy(diff, 0);\n                rows = this.$getSelectedRows(ranges[i]);\n                var first = rows.first;\n                var last = rows.last;\n                while (++i < l) {\n                    if (totalDiff)\n                        ranges[i].moveBy(totalDiff, 0);\n                    var subRows = this.$getSelectedRows(ranges[i]);\n                    if (copy && subRows.first != last)\n                        break;\n                    else if (!copy && subRows.first > last + 1)\n                        break;\n                    last = subRows.last;\n                }\n                i--;\n                diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n                if (copy && dir == -1)\n                    rangeIndex = i + 1;\n                while (rangeIndex <= i) {\n                    ranges[rangeIndex].moveBy(diff, 0);\n                    rangeIndex++;\n                }\n                if (!copy)\n                    diff = 0;\n                totalDiff += diff;\n            }\n            selection.fromOrientedRange(selection.ranges[0]);\n            selection.rangeList.attach(this.session);\n            this.inVirtualSelectionMode = false;\n        }\n    };\n    this.$getSelectedRows = function (range) {\n        range = (range || this.getSelectionRange()).collapseRows();\n        return {\n            first: this.session.getRowFoldStart(range.start.row),\n            last: this.session.getRowFoldEnd(range.end.row)\n        };\n    };\n    this.onCompositionStart = function (compositionState) {\n        this.renderer.showComposition(compositionState);\n    };\n    this.onCompositionUpdate = function (text) {\n        this.renderer.setCompositionText(text);\n    };\n    this.onCompositionEnd = function () {\n        this.renderer.hideComposition();\n    };\n    this.getFirstVisibleRow = function () {\n        return this.renderer.getFirstVisibleRow();\n    };\n    this.getLastVisibleRow = function () {\n        return this.renderer.getLastVisibleRow();\n    };\n    this.isRowVisible = function (row) {\n        return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n    };\n    this.isRowFullyVisible = function (row) {\n        return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n    };\n    this.$getVisibleRowCount = function () {\n        return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n    };\n    this.$moveByPage = function (dir, select) {\n        var renderer = this.renderer;\n        var config = this.renderer.layerConfig;\n        var rows = dir * Math.floor(config.height / config.lineHeight);\n        if (select === true) {\n            this.selection.$moveSelection(function () {\n                this.moveCursorBy(rows, 0);\n            });\n        }\n        else if (select === false) {\n            this.selection.moveCursorBy(rows, 0);\n            this.selection.clearSelection();\n        }\n        var scrollTop = renderer.scrollTop;\n        renderer.scrollBy(0, rows * config.lineHeight);\n        if (select != null)\n            renderer.scrollCursorIntoView(null, 0.5);\n        renderer.animateScrolling(scrollTop);\n    };\n    this.selectPageDown = function () {\n        this.$moveByPage(1, true);\n    };\n    this.selectPageUp = function () {\n        this.$moveByPage(-1, true);\n    };\n    this.gotoPageDown = function () {\n        this.$moveByPage(1, false);\n    };\n    this.gotoPageUp = function () {\n        this.$moveByPage(-1, false);\n    };\n    this.scrollPageDown = function () {\n        this.$moveByPage(1);\n    };\n    this.scrollPageUp = function () {\n        this.$moveByPage(-1);\n    };\n    this.scrollToRow = function (row) {\n        this.renderer.scrollToRow(row);\n    };\n    this.scrollToLine = function (line, center, animate, callback) {\n        this.renderer.scrollToLine(line, center, animate, callback);\n    };\n    this.centerSelection = function () {\n        var range = this.getSelectionRange();\n        var pos = {\n            row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n            column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n        };\n        this.renderer.alignCursor(pos, 0.5);\n    };\n    this.getCursorPosition = function () {\n        return this.selection.getCursor();\n    };\n    this.getCursorPositionScreen = function () {\n        return this.session.documentToScreenPosition(this.getCursorPosition());\n    };\n    this.getSelectionRange = function () {\n        return this.selection.getRange();\n    };\n    this.selectAll = function () {\n        this.selection.selectAll();\n    };\n    this.clearSelection = function () {\n        this.selection.clearSelection();\n    };\n    this.moveCursorTo = function (row, column) {\n        this.selection.moveCursorTo(row, column);\n    };\n    this.moveCursorToPosition = function (pos) {\n        this.selection.moveCursorToPosition(pos);\n    };\n    this.jumpToMatching = function (select, expand) {\n        var cursor = this.getCursorPosition();\n        var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n        var prevToken = iterator.getCurrentToken();\n        var token = prevToken || iterator.stepForward();\n        if (!token)\n            return;\n        var matchType;\n        var found = false;\n        var depth = {};\n        var i = cursor.column - token.start;\n        var bracketType;\n        var brackets = {\n            \")\": \"(\",\n            \"(\": \"(\",\n            \"]\": \"[\",\n            \"[\": \"[\",\n            \"{\": \"{\",\n            \"}\": \"{\"\n        };\n        do {\n            if (token.value.match(/[{}()\\[\\]]/g)) {\n                for (; i < token.value.length && !found; i++) {\n                    if (!brackets[token.value[i]]) {\n                        continue;\n                    }\n                    bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n                    if (isNaN(depth[bracketType])) {\n                        depth[bracketType] = 0;\n                    }\n                    switch (token.value[i]) {\n                        case '(':\n                        case '[':\n                        case '{':\n                            depth[bracketType]++;\n                            break;\n                        case ')':\n                        case ']':\n                        case '}':\n                            depth[bracketType]--;\n                            if (depth[bracketType] === -1) {\n                                matchType = 'bracket';\n                                found = true;\n                            }\n                            break;\n                    }\n                }\n            }\n            else if (token.type.indexOf('tag-name') !== -1) {\n                if (isNaN(depth[token.value])) {\n                    depth[token.value] = 0;\n                }\n                if (prevToken.value === '<') {\n                    depth[token.value]++;\n                }\n                else if (prevToken.value === '</') {\n                    depth[token.value]--;\n                }\n                if (depth[token.value] === -1) {\n                    matchType = 'tag';\n                    found = true;\n                }\n            }\n            if (!found) {\n                prevToken = token;\n                token = iterator.stepForward();\n                i = 0;\n            }\n        } while (token && !found);\n        if (!matchType)\n            return;\n        var range, pos;\n        if (matchType === 'bracket') {\n            range = this.session.getBracketRange(cursor);\n            if (!range) {\n                range = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + i - 1, iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + i - 1);\n                pos = range.start;\n                if (expand || pos.row === cursor.row && Math.abs(pos.column - cursor.column) < 2)\n                    range = this.session.getBracketRange(pos);\n            }\n        }\n        else if (matchType === 'tag') {\n            if (token && token.type.indexOf('tag-name') !== -1)\n                var tag = token.value;\n            else\n                return;\n            range = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() - 2, iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() - 2);\n            if (range.compare(cursor.row, cursor.column) === 0) {\n                found = false;\n                do {\n                    token = prevToken;\n                    prevToken = iterator.stepBackward();\n                    if (prevToken) {\n                        if (prevToken.type.indexOf('tag-close') !== -1) {\n                            range.setEnd(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1);\n                        }\n                        if (token.value === tag && token.type.indexOf('tag-name') !== -1) {\n                            if (prevToken.value === '<') {\n                                depth[tag]++;\n                            }\n                            else if (prevToken.value === '</') {\n                                depth[tag]--;\n                            }\n                            if (depth[tag] === 0)\n                                found = true;\n                        }\n                    }\n                } while (prevToken && !found);\n            }\n            if (token && token.type.indexOf('tag-name')) {\n                pos = range.start;\n                if (pos.row == cursor.row && Math.abs(pos.column - cursor.column) < 2)\n                    pos = range.end;\n            }\n        }\n        pos = range && range.cursor || pos;\n        if (pos) {\n            if (select) {\n                if (range && expand) {\n                    this.selection.setRange(range);\n                }\n                else if (range && range.isEqual(this.getSelectionRange())) {\n                    this.clearSelection();\n                }\n                else {\n                    this.selection.selectTo(pos.row, pos.column);\n                }\n            }\n            else {\n                this.selection.moveTo(pos.row, pos.column);\n            }\n        }\n    };\n    this.gotoLine = function (lineNumber, column, animate) {\n        this.selection.clearSelection();\n        this.session.unfold({ row: lineNumber - 1, column: column || 0 });\n        this.exitMultiSelectMode && this.exitMultiSelectMode();\n        this.moveCursorTo(lineNumber - 1, column || 0);\n        if (!this.isRowFullyVisible(lineNumber - 1))\n            this.scrollToLine(lineNumber - 1, true, animate);\n    };\n    this.navigateTo = function (row, column) {\n        this.selection.moveTo(row, column);\n    };\n    this.navigateUp = function (times) {\n        if (this.selection.isMultiLine() && !this.selection.isBackwards()) {\n            var selectionStart = this.selection.anchor.getPosition();\n            return this.moveCursorToPosition(selectionStart);\n        }\n        this.selection.clearSelection();\n        this.selection.moveCursorBy(-times || -1, 0);\n    };\n    this.navigateDown = function (times) {\n        if (this.selection.isMultiLine() && this.selection.isBackwards()) {\n            var selectionEnd = this.selection.anchor.getPosition();\n            return this.moveCursorToPosition(selectionEnd);\n        }\n        this.selection.clearSelection();\n        this.selection.moveCursorBy(times || 1, 0);\n    };\n    this.navigateLeft = function (times) {\n        if (!this.selection.isEmpty()) {\n            var selectionStart = this.getSelectionRange().start;\n            this.moveCursorToPosition(selectionStart);\n        }\n        else {\n            times = times || 1;\n            while (times--) {\n                this.selection.moveCursorLeft();\n            }\n        }\n        this.clearSelection();\n    };\n    this.navigateRight = function (times) {\n        if (!this.selection.isEmpty()) {\n            var selectionEnd = this.getSelectionRange().end;\n            this.moveCursorToPosition(selectionEnd);\n        }\n        else {\n            times = times || 1;\n            while (times--) {\n                this.selection.moveCursorRight();\n            }\n        }\n        this.clearSelection();\n    };\n    this.navigateLineStart = function () {\n        this.selection.moveCursorLineStart();\n        this.clearSelection();\n    };\n    this.navigateLineEnd = function () {\n        this.selection.moveCursorLineEnd();\n        this.clearSelection();\n    };\n    this.navigateFileEnd = function () {\n        this.selection.moveCursorFileEnd();\n        this.clearSelection();\n    };\n    this.navigateFileStart = function () {\n        this.selection.moveCursorFileStart();\n        this.clearSelection();\n    };\n    this.navigateWordRight = function () {\n        this.selection.moveCursorWordRight();\n        this.clearSelection();\n    };\n    this.navigateWordLeft = function () {\n        this.selection.moveCursorWordLeft();\n        this.clearSelection();\n    };\n    this.replace = function (replacement, options) {\n        if (options)\n            this.$search.set(options);\n        var range = this.$search.find(this.session);\n        var replaced = 0;\n        if (!range)\n            return replaced;\n        if (this.$tryReplace(range, replacement)) {\n            replaced = 1;\n        }\n        this.selection.setSelectionRange(range);\n        this.renderer.scrollSelectionIntoView(range.start, range.end);\n        return replaced;\n    };\n    this.replaceAll = function (replacement, options) {\n        if (options) {\n            this.$search.set(options);\n        }\n        var ranges = this.$search.findAll(this.session);\n        var replaced = 0;\n        if (!ranges.length)\n            return replaced;\n        var selection = this.getSelectionRange();\n        this.selection.moveTo(0, 0);\n        for (var i = ranges.length - 1; i >= 0; --i) {\n            if (this.$tryReplace(ranges[i], replacement)) {\n                replaced++;\n            }\n        }\n        this.selection.setSelectionRange(selection);\n        return replaced;\n    };\n    this.$tryReplace = function (range, replacement) {\n        var input = this.session.getTextRange(range);\n        replacement = this.$search.replace(input, replacement);\n        if (replacement !== null) {\n            range.end = this.session.replace(range, replacement);\n            return range;\n        }\n        else {\n            return null;\n        }\n    };\n    this.getLastSearchOptions = function () {\n        return this.$search.getOptions();\n    };\n    this.find = function (needle, options, animate) {\n        if (!options)\n            options = {};\n        if (typeof needle == \"string\" || needle instanceof RegExp)\n            options.needle = needle;\n        else if (typeof needle == \"object\")\n            oop.mixin(options, needle);\n        var range = this.selection.getRange();\n        if (options.needle == null) {\n            needle = this.session.getTextRange(range)\n                || this.$search.$options.needle;\n            if (!needle) {\n                range = this.session.getWordRange(range.start.row, range.start.column);\n                needle = this.session.getTextRange(range);\n            }\n            this.$search.set({ needle: needle });\n        }\n        this.$search.set(options);\n        if (!options.start)\n            this.$search.set({ start: range });\n        var newRange = this.$search.find(this.session);\n        if (options.preventScroll)\n            return newRange;\n        if (newRange) {\n            this.revealRange(newRange, animate);\n            return newRange;\n        }\n        if (options.backwards)\n            range.start = range.end;\n        else\n            range.end = range.start;\n        this.selection.setRange(range);\n    };\n    this.findNext = function (options, animate) {\n        this.find({ skipCurrent: true, backwards: false }, options, animate);\n    };\n    this.findPrevious = function (options, animate) {\n        this.find(options, { skipCurrent: true, backwards: true }, animate);\n    };\n    this.revealRange = function (range, animate) {\n        this.session.unfold(range);\n        this.selection.setSelectionRange(range);\n        var scrollTop = this.renderer.scrollTop;\n        this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n        if (animate !== false)\n            this.renderer.animateScrolling(scrollTop);\n    };\n    this.undo = function () {\n        this.session.getUndoManager().undo(this.session);\n        this.renderer.scrollCursorIntoView(null, 0.5);\n    };\n    this.redo = function () {\n        this.session.getUndoManager().redo(this.session);\n        this.renderer.scrollCursorIntoView(null, 0.5);\n    };\n    this.destroy = function () {\n        if (this.$toDestroy) {\n            this.$toDestroy.forEach(function (el) {\n                el.destroy();\n            });\n            this.$toDestroy = null;\n        }\n        if (this.$mouseHandler)\n            this.$mouseHandler.destroy();\n        this.renderer.destroy();\n        this._signal(\"destroy\", this);\n        if (this.session)\n            this.session.destroy();\n        if (this._$emitInputEvent)\n            this._$emitInputEvent.cancel();\n        this.removeAllListeners();\n    };\n    this.setAutoScrollEditorIntoView = function (enable) {\n        if (!enable)\n            return;\n        var rect;\n        var self = this;\n        var shouldScroll = false;\n        if (!this.$scrollAnchor)\n            this.$scrollAnchor = document.createElement(\"div\");\n        var scrollAnchor = this.$scrollAnchor;\n        scrollAnchor.style.cssText = \"position:absolute\";\n        this.container.insertBefore(scrollAnchor, this.container.firstChild);\n        var onChangeSelection = this.on(\"changeSelection\", function () {\n            shouldScroll = true;\n        });\n        var onBeforeRender = this.renderer.on(\"beforeRender\", function () {\n            if (shouldScroll)\n                rect = self.renderer.container.getBoundingClientRect();\n        });\n        var onAfterRender = this.renderer.on(\"afterRender\", function () {\n            if (shouldScroll && rect && (self.isFocused()\n                || self.searchBox && self.searchBox.isFocused())) {\n                var renderer = self.renderer;\n                var pos = renderer.$cursorLayer.$pixelPos;\n                var config = renderer.layerConfig;\n                var top = pos.top - config.offset;\n                if (pos.top >= 0 && top + rect.top < 0) {\n                    shouldScroll = true;\n                }\n                else if (pos.top < config.height &&\n                    pos.top + rect.top + config.lineHeight > window.innerHeight) {\n                    shouldScroll = false;\n                }\n                else {\n                    shouldScroll = null;\n                }\n                if (shouldScroll != null) {\n                    scrollAnchor.style.top = top + \"px\";\n                    scrollAnchor.style.left = pos.left + \"px\";\n                    scrollAnchor.style.height = config.lineHeight + \"px\";\n                    scrollAnchor.scrollIntoView(shouldScroll);\n                }\n                shouldScroll = rect = null;\n            }\n        });\n        this.setAutoScrollEditorIntoView = function (enable) {\n            if (enable)\n                return;\n            delete this.setAutoScrollEditorIntoView;\n            this.off(\"changeSelection\", onChangeSelection);\n            this.renderer.off(\"afterRender\", onAfterRender);\n            this.renderer.off(\"beforeRender\", onBeforeRender);\n        };\n    };\n    this.$resetCursorStyle = function () {\n        var style = this.$cursorStyle || \"ace\";\n        var cursorLayer = this.renderer.$cursorLayer;\n        if (!cursorLayer)\n            return;\n        cursorLayer.setSmoothBlinking(/smooth/.test(style));\n        cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n        dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n    };\n    this.prompt = function (message, options, callback) {\n        var editor = this;\n        config.loadModule(\"./ext/prompt\", function (module) {\n            module.prompt(editor, message, options, callback);\n        });\n    };\n}).call(Editor.prototype);\nconfig.defineOptions(Editor.prototype, \"editor\", {\n    selectionStyle: {\n        set: function (style) {\n            this.onSelectionChange();\n            this._signal(\"changeSelectionStyle\", { data: style });\n        },\n        initialValue: \"line\"\n    },\n    highlightActiveLine: {\n        set: function () { this.$updateHighlightActiveLine(); },\n        initialValue: true\n    },\n    highlightSelectedWord: {\n        set: function (shouldHighlight) { this.$onSelectionChange(); },\n        initialValue: true\n    },\n    readOnly: {\n        set: function (readOnly) {\n            this.textInput.setReadOnly(readOnly);\n            this.$resetCursorStyle();\n        },\n        initialValue: false\n    },\n    copyWithEmptySelection: {\n        set: function (value) {\n            this.textInput.setCopyWithEmptySelection(value);\n        },\n        initialValue: false\n    },\n    cursorStyle: {\n        set: function (val) { this.$resetCursorStyle(); },\n        values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n        initialValue: \"ace\"\n    },\n    mergeUndoDeltas: {\n        values: [false, true, \"always\"],\n        initialValue: true\n    },\n    behavioursEnabled: { initialValue: true },\n    wrapBehavioursEnabled: { initialValue: true },\n    enableAutoIndent: { initialValue: true },\n    autoScrollEditorIntoView: {\n        set: function (val) { this.setAutoScrollEditorIntoView(val); }\n    },\n    keyboardHandler: {\n        set: function (val) { this.setKeyboardHandler(val); },\n        get: function () { return this.$keybindingId; },\n        handlesSet: true\n    },\n    value: {\n        set: function (val) { this.session.setValue(val); },\n        get: function () { return this.getValue(); },\n        handlesSet: true,\n        hidden: true\n    },\n    session: {\n        set: function (val) { this.setSession(val); },\n        get: function () { return this.session; },\n        handlesSet: true,\n        hidden: true\n    },\n    showLineNumbers: {\n        set: function (show) {\n            this.renderer.$gutterLayer.setShowLineNumbers(show);\n            this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n            if (show && this.$relativeLineNumbers)\n                relativeNumberRenderer.attach(this);\n            else\n                relativeNumberRenderer.detach(this);\n        },\n        initialValue: true\n    },\n    relativeLineNumbers: {\n        set: function (value) {\n            if (this.$showLineNumbers && value)\n                relativeNumberRenderer.attach(this);\n            else\n                relativeNumberRenderer.detach(this);\n        }\n    },\n    placeholder: {\n        set: function (message) {\n            if (!this.$updatePlaceholder) {\n                this.$updatePlaceholder = function () {\n                    var value = this.session && (this.renderer.$composition || this.getValue());\n                    if (value && this.renderer.placeholderNode) {\n                        this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n                        dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n                        this.renderer.placeholderNode.remove();\n                        this.renderer.placeholderNode = null;\n                    }\n                    else if (!value && !this.renderer.placeholderNode) {\n                        this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n                        dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n                        var el = dom.createElement(\"div\");\n                        el.className = \"ace_placeholder\";\n                        el.textContent = this.$placeholder || \"\";\n                        this.renderer.placeholderNode = el;\n                        this.renderer.content.appendChild(this.renderer.placeholderNode);\n                    }\n                    else if (!value && this.renderer.placeholderNode) {\n                        this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n                    }\n                }.bind(this);\n                this.on(\"input\", this.$updatePlaceholder);\n            }\n            this.$updatePlaceholder();\n        }\n    },\n    hScrollBarAlwaysVisible: \"renderer\",\n    vScrollBarAlwaysVisible: \"renderer\",\n    highlightGutterLine: \"renderer\",\n    animatedScroll: \"renderer\",\n    showInvisibles: \"renderer\",\n    showPrintMargin: \"renderer\",\n    printMarginColumn: \"renderer\",\n    printMargin: \"renderer\",\n    fadeFoldWidgets: \"renderer\",\n    showFoldWidgets: \"renderer\",\n    displayIndentGuides: \"renderer\",\n    showGutter: \"renderer\",\n    fontSize: \"renderer\",\n    fontFamily: \"renderer\",\n    maxLines: \"renderer\",\n    minLines: \"renderer\",\n    scrollPastEnd: \"renderer\",\n    fixedWidthGutter: \"renderer\",\n    theme: \"renderer\",\n    hasCssTransforms: \"renderer\",\n    maxPixelHeight: \"renderer\",\n    useTextareaForIME: \"renderer\",\n    scrollSpeed: \"$mouseHandler\",\n    dragDelay: \"$mouseHandler\",\n    dragEnabled: \"$mouseHandler\",\n    focusTimeout: \"$mouseHandler\",\n    tooltipFollowsMouse: \"$mouseHandler\",\n    firstLineNumber: \"session\",\n    overwrite: \"session\",\n    newLineMode: \"session\",\n    useWorker: \"session\",\n    useSoftTabs: \"session\",\n    navigateWithinSoftTabs: \"session\",\n    tabSize: \"session\",\n    wrap: \"session\",\n    indentedSoftWrap: \"session\",\n    foldStyle: \"session\",\n    mode: \"session\"\n});\nvar relativeNumberRenderer = {\n    getText: function (session, row) {\n        return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n    },\n    getWidth: function (session, lastLineNumber, config) {\n        return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth;\n    },\n    update: function (e, editor) {\n        editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n    },\n    attach: function (editor) {\n        editor.renderer.$gutterLayer.$renderer = this;\n        editor.on(\"changeSelection\", this.update);\n        this.update(null, editor);\n    },\n    detach: function (editor) {\n        if (editor.renderer.$gutterLayer.$renderer == this)\n            editor.renderer.$gutterLayer.$renderer = null;\n        editor.off(\"changeSelection\", this.update);\n        this.update(null, editor);\n    }\n};\nexports.Editor = Editor;\n\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar UndoManager = function () {\n    this.$maxRev = 0;\n    this.$fromUndo = false;\n    this.$undoDepth = Infinity;\n    this.reset();\n};\n(function () {\n    this.addSession = function (session) {\n        this.$session = session;\n    };\n    this.add = function (delta, allowMerge, session) {\n        if (this.$fromUndo)\n            return;\n        if (delta == this.$lastDelta)\n            return;\n        if (!this.$keepRedoStack)\n            this.$redoStack.length = 0;\n        if (allowMerge === false || !this.lastDeltas) {\n            this.lastDeltas = [];\n            var undoStackLength = this.$undoStack.length;\n            if (undoStackLength > this.$undoDepth - 1) {\n                this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1);\n            }\n            this.$undoStack.push(this.lastDeltas);\n            delta.id = this.$rev = ++this.$maxRev;\n        }\n        if (delta.action == \"remove\" || delta.action == \"insert\")\n            this.$lastDelta = delta;\n        this.lastDeltas.push(delta);\n    };\n    this.addSelection = function (selection, rev) {\n        this.selections.push({\n            value: selection,\n            rev: rev || this.$rev\n        });\n    };\n    this.startNewGroup = function () {\n        this.lastDeltas = null;\n        return this.$rev;\n    };\n    this.markIgnored = function (from, to) {\n        if (to == null)\n            to = this.$rev + 1;\n        var stack = this.$undoStack;\n        for (var i = stack.length; i--;) {\n            var delta = stack[i][0];\n            if (delta.id <= from)\n                break;\n            if (delta.id < to)\n                delta.ignore = true;\n        }\n        this.lastDeltas = null;\n    };\n    this.getSelection = function (rev, after) {\n        var stack = this.selections;\n        for (var i = stack.length; i--;) {\n            var selection = stack[i];\n            if (selection.rev < rev) {\n                if (after)\n                    selection = stack[i + 1];\n                return selection;\n            }\n        }\n    };\n    this.getRevision = function () {\n        return this.$rev;\n    };\n    this.getDeltas = function (from, to) {\n        if (to == null)\n            to = this.$rev + 1;\n        var stack = this.$undoStack;\n        var end = null, start = 0;\n        for (var i = stack.length; i--;) {\n            var delta = stack[i][0];\n            if (delta.id < to && !end)\n                end = i + 1;\n            if (delta.id <= from) {\n                start = i + 1;\n                break;\n            }\n        }\n        return stack.slice(start, end);\n    };\n    this.getChangedRanges = function (from, to) {\n        if (to == null)\n            to = this.$rev + 1;\n    };\n    this.getChangedLines = function (from, to) {\n        if (to == null)\n            to = this.$rev + 1;\n    };\n    this.undo = function (session, dontSelect) {\n        this.lastDeltas = null;\n        var stack = this.$undoStack;\n        if (!rearrangeUndoStack(stack, stack.length))\n            return;\n        if (!session)\n            session = this.$session;\n        if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n            this.$redoStack = [];\n        this.$fromUndo = true;\n        var deltaSet = stack.pop();\n        var undoSelectionRange = null;\n        if (deltaSet) {\n            undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n            this.$redoStack.push(deltaSet);\n            this.$syncRev();\n        }\n        this.$fromUndo = false;\n        return undoSelectionRange;\n    };\n    this.redo = function (session, dontSelect) {\n        this.lastDeltas = null;\n        if (!session)\n            session = this.$session;\n        this.$fromUndo = true;\n        if (this.$redoStackBaseRev != this.$rev) {\n            var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n            rebaseRedoStack(this.$redoStack, diff);\n            this.$redoStackBaseRev = this.$rev;\n            this.$redoStack.forEach(function (x) {\n                x[0].id = ++this.$maxRev;\n            }, this);\n        }\n        var deltaSet = this.$redoStack.pop();\n        var redoSelectionRange = null;\n        if (deltaSet) {\n            redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n            this.$undoStack.push(deltaSet);\n            this.$syncRev();\n        }\n        this.$fromUndo = false;\n        return redoSelectionRange;\n    };\n    this.$syncRev = function () {\n        var stack = this.$undoStack;\n        var nextDelta = stack[stack.length - 1];\n        var id = nextDelta && nextDelta[0].id || 0;\n        this.$redoStackBaseRev = id;\n        this.$rev = id;\n    };\n    this.reset = function () {\n        this.lastDeltas = null;\n        this.$lastDelta = null;\n        this.$undoStack = [];\n        this.$redoStack = [];\n        this.$rev = 0;\n        this.mark = 0;\n        this.$redoStackBaseRev = this.$rev;\n        this.selections = [];\n    };\n    this.canUndo = function () {\n        return this.$undoStack.length > 0;\n    };\n    this.canRedo = function () {\n        return this.$redoStack.length > 0;\n    };\n    this.bookmark = function (rev) {\n        if (rev == undefined)\n            rev = this.$rev;\n        this.mark = rev;\n    };\n    this.isAtBookmark = function () {\n        return this.$rev === this.mark;\n    };\n    this.toJSON = function () {\n    };\n    this.fromJSON = function () {\n    };\n    this.hasUndo = this.canUndo;\n    this.hasRedo = this.canRedo;\n    this.isClean = this.isAtBookmark;\n    this.markClean = this.bookmark;\n    this.$prettyPrint = function (delta) {\n        if (delta)\n            return stringifyDelta(delta);\n        return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n    };\n}).call(UndoManager.prototype);\nfunction rearrangeUndoStack(stack, pos) {\n    for (var i = pos; i--;) {\n        var deltaSet = stack[i];\n        if (deltaSet && !deltaSet[0].ignore) {\n            while (i < pos - 1) {\n                var swapped = swapGroups(stack[i], stack[i + 1]);\n                stack[i] = swapped[0];\n                stack[i + 1] = swapped[1];\n                i++;\n            }\n            return true;\n        }\n    }\n}\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\nfunction $updateMarkers(delta) {\n    var isInsert = delta.action == \"insert\";\n    var start = delta.start;\n    var end = delta.end;\n    var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n    var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n    if (isInsert)\n        end = start;\n    for (var i in this.marks) {\n        var point = this.marks[i];\n        var cmp = comparePoints(point, start);\n        if (cmp < 0) {\n            continue; // delta starts after the range\n        }\n        if (cmp === 0) {\n            if (isInsert) {\n                if (point.bias == 1) {\n                    cmp = 1;\n                }\n                else {\n                    point.bias == -1;\n                    continue;\n                }\n            }\n        }\n        var cmp2 = isInsert ? cmp : comparePoints(point, end);\n        if (cmp2 > 0) {\n            point.row += rowShift;\n            point.column += point.row == end.row ? colShift : 0;\n            continue;\n        }\n        if (!isInsert && cmp2 <= 0) {\n            point.row = start.row;\n            point.column = start.column;\n            if (cmp2 === 0)\n                point.bias = 1;\n        }\n    }\n}\nfunction clonePos(pos) {\n    return { row: pos.row, column: pos.column };\n}\nfunction cloneDelta(d) {\n    return {\n        start: clonePos(d.start),\n        end: clonePos(d.end),\n        action: d.action,\n        lines: d.lines.slice()\n    };\n}\nfunction stringifyDelta(d) {\n    d = d || this;\n    if (Array.isArray(d)) {\n        return d.map(stringifyDelta).join(\"\\n\");\n    }\n    var type = \"\";\n    if (d.action) {\n        type = d.action == \"insert\" ? \"+\" : \"-\";\n        type += \"[\" + d.lines + \"]\";\n    }\n    else if (d.value) {\n        if (Array.isArray(d.value)) {\n            type = d.value.map(stringifyRange).join(\"\\n\");\n        }\n        else {\n            type = stringifyRange(d.value);\n        }\n    }\n    if (d.start) {\n        type += stringifyRange(d);\n    }\n    if (d.id || d.rev) {\n        type += \"\\t(\" + (d.id || d.rev) + \")\";\n    }\n    return type;\n}\nfunction stringifyRange(r) {\n    return r.start.row + \":\" + r.start.column\n        + \"=>\" + r.end.row + \":\" + r.end.column;\n}\nfunction swap(d1, d2) {\n    var i1 = d1.action == \"insert\";\n    var i2 = d2.action == \"insert\";\n    if (i1 && i2) {\n        if (cmp(d2.start, d1.end) >= 0) {\n            shift(d2, d1, -1);\n        }\n        else if (cmp(d2.start, d1.start) <= 0) {\n            shift(d1, d2, +1);\n        }\n        else {\n            return null;\n        }\n    }\n    else if (i1 && !i2) {\n        if (cmp(d2.start, d1.end) >= 0) {\n            shift(d2, d1, -1);\n        }\n        else if (cmp(d2.end, d1.start) <= 0) {\n            shift(d1, d2, -1);\n        }\n        else {\n            return null;\n        }\n    }\n    else if (!i1 && i2) {\n        if (cmp(d2.start, d1.start) >= 0) {\n            shift(d2, d1, +1);\n        }\n        else if (cmp(d2.start, d1.start) <= 0) {\n            shift(d1, d2, +1);\n        }\n        else {\n            return null;\n        }\n    }\n    else if (!i1 && !i2) {\n        if (cmp(d2.start, d1.start) >= 0) {\n            shift(d2, d1, +1);\n        }\n        else if (cmp(d2.end, d1.start) <= 0) {\n            shift(d1, d2, -1);\n        }\n        else {\n            return null;\n        }\n    }\n    return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n    for (var i = ds1.length; i--;) {\n        for (var j = 0; j < ds2.length; j++) {\n            if (!swap(ds1[i], ds2[j])) {\n                while (i < ds1.length) {\n                    while (j--) {\n                        swap(ds2[j], ds1[i]);\n                    }\n                    j = ds2.length;\n                    i++;\n                }\n                return [ds1, ds2];\n            }\n        }\n    }\n    ds1.selectionBefore = ds2.selectionBefore =\n        ds1.selectionAfter = ds2.selectionAfter = null;\n    return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n    var i1 = d1.action == \"insert\";\n    var i2 = c1.action == \"insert\";\n    if (i1 && i2) {\n        if (cmp(d1.start, c1.start) < 0) {\n            shift(c1, d1, 1);\n        }\n        else {\n            shift(d1, c1, 1);\n        }\n    }\n    else if (i1 && !i2) {\n        if (cmp(d1.start, c1.end) >= 0) {\n            shift(d1, c1, -1);\n        }\n        else if (cmp(d1.start, c1.start) <= 0) {\n            shift(c1, d1, +1);\n        }\n        else {\n            shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n            shift(c1, d1, +1);\n        }\n    }\n    else if (!i1 && i2) {\n        if (cmp(c1.start, d1.end) >= 0) {\n            shift(c1, d1, -1);\n        }\n        else if (cmp(c1.start, d1.start) <= 0) {\n            shift(d1, c1, +1);\n        }\n        else {\n            shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n            shift(d1, c1, +1);\n        }\n    }\n    else if (!i1 && !i2) {\n        if (cmp(c1.start, d1.end) >= 0) {\n            shift(c1, d1, -1);\n        }\n        else if (cmp(c1.end, d1.start) <= 0) {\n            shift(d1, c1, -1);\n        }\n        else {\n            var before, after;\n            if (cmp(d1.start, c1.start) < 0) {\n                before = d1;\n                d1 = splitDelta(d1, c1.start);\n            }\n            if (cmp(d1.end, c1.end) > 0) {\n                after = splitDelta(d1, c1.end);\n            }\n            shiftPos(c1.end, d1.start, d1.end, -1);\n            if (after && !before) {\n                d1.lines = after.lines;\n                d1.start = after.start;\n                d1.end = after.end;\n                after = d1;\n            }\n            return [c1, before, after].filter(Boolean);\n        }\n    }\n    return [c1, d1];\n}\nfunction shift(d1, d2, dir) {\n    shiftPos(d1.start, d2.start, d2.end, dir);\n    shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n    if (pos.row == (dir == 1 ? start : end).row) {\n        pos.column += dir * (end.column - start.column);\n    }\n    pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n    var lines = c.lines;\n    var end = c.end;\n    c.end = clonePos(pos);\n    var rowsBefore = c.end.row - c.start.row;\n    var otherLines = lines.splice(rowsBefore, lines.length);\n    var col = rowsBefore ? pos.column : pos.column - c.start.column;\n    lines.push(otherLines[0].substring(0, col));\n    otherLines[0] = otherLines[0].substr(col);\n    var rest = {\n        start: clonePos(pos),\n        end: end,\n        lines: otherLines,\n        action: c.action\n    };\n    return rest;\n}\nfunction moveDeltasByOne(redoStack, d) {\n    d = cloneDelta(d);\n    for (var j = redoStack.length; j--;) {\n        var deltaSet = redoStack[j];\n        for (var i = 0; i < deltaSet.length; i++) {\n            var x = deltaSet[i];\n            var xformed = xform(x, d);\n            d = xformed[0];\n            if (xformed.length != 2) {\n                if (xformed[2]) {\n                    deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n                    i++;\n                }\n                else if (!xformed[1]) {\n                    deltaSet.splice(i, 1);\n                    i--;\n                }\n            }\n        }\n        if (!deltaSet.length) {\n            redoStack.splice(j, 1);\n        }\n    }\n    return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n    for (var i = 0; i < deltaSets.length; i++) {\n        var deltas = deltaSets[i];\n        for (var j = 0; j < deltas.length; j++) {\n            moveDeltasByOne(redoStack, deltas[j]);\n        }\n    }\n}\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Lines = function (element, canvasHeight) {\n    this.element = element;\n    this.canvasHeight = canvasHeight || 500000;\n    this.element.style.height = (this.canvasHeight * 2) + \"px\";\n    this.cells = [];\n    this.cellCache = [];\n    this.$offsetCoefficient = 0;\n};\n(function () {\n    this.moveContainer = function (config) {\n        dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n    };\n    this.pageChanged = function (oldConfig, newConfig) {\n        return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n            Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight));\n    };\n    this.computeLineTop = function (row, config, session) {\n        var screenTop = config.firstRowScreen * config.lineHeight;\n        var screenPage = Math.floor(screenTop / this.canvasHeight);\n        var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n        return lineTop - (screenPage * this.canvasHeight);\n    };\n    this.computeLineHeight = function (row, config, session) {\n        return config.lineHeight * session.getRowLineCount(row);\n    };\n    this.getLength = function () {\n        return this.cells.length;\n    };\n    this.get = function (index) {\n        return this.cells[index];\n    };\n    this.shift = function () {\n        this.$cacheCell(this.cells.shift());\n    };\n    this.pop = function () {\n        this.$cacheCell(this.cells.pop());\n    };\n    this.push = function (cell) {\n        if (Array.isArray(cell)) {\n            this.cells.push.apply(this.cells, cell);\n            var fragment = dom.createFragment(this.element);\n            for (var i = 0; i < cell.length; i++) {\n                fragment.appendChild(cell[i].element);\n            }\n            this.element.appendChild(fragment);\n        }\n        else {\n            this.cells.push(cell);\n            this.element.appendChild(cell.element);\n        }\n    };\n    this.unshift = function (cell) {\n        if (Array.isArray(cell)) {\n            this.cells.unshift.apply(this.cells, cell);\n            var fragment = dom.createFragment(this.element);\n            for (var i = 0; i < cell.length; i++) {\n                fragment.appendChild(cell[i].element);\n            }\n            if (this.element.firstChild)\n                this.element.insertBefore(fragment, this.element.firstChild);\n            else\n                this.element.appendChild(fragment);\n        }\n        else {\n            this.cells.unshift(cell);\n            this.element.insertAdjacentElement(\"afterbegin\", cell.element);\n        }\n    };\n    this.last = function () {\n        if (this.cells.length)\n            return this.cells[this.cells.length - 1];\n        else\n            return null;\n    };\n    this.$cacheCell = function (cell) {\n        if (!cell)\n            return;\n        cell.element.remove();\n        this.cellCache.push(cell);\n    };\n    this.createCell = function (row, config, session, initElement) {\n        var cell = this.cellCache.pop();\n        if (!cell) {\n            var element = dom.createElement(\"div\");\n            if (initElement)\n                initElement(element);\n            this.element.appendChild(element);\n            cell = {\n                element: element,\n                text: \"\",\n                row: row\n            };\n        }\n        cell.row = row;\n        return cell;\n    };\n}).call(Lines.prototype);\nexports.Lines = Lines;\n\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/layer/lines\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Lines = require(\"./lines\").Lines;\nvar Gutter = function (parentEl) {\n    this.element = dom.createElement(\"div\");\n    this.element.className = \"ace_layer ace_gutter-layer\";\n    parentEl.appendChild(this.element);\n    this.setShowFoldWidgets(this.$showFoldWidgets);\n    this.gutterWidth = 0;\n    this.$annotations = [];\n    this.$updateAnnotations = this.$updateAnnotations.bind(this);\n    this.$lines = new Lines(this.element);\n    this.$lines.$offsetCoefficient = 1;\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.setSession = function (session) {\n        if (this.session)\n            this.session.off(\"change\", this.$updateAnnotations);\n        this.session = session;\n        if (session)\n            session.on(\"change\", this.$updateAnnotations);\n    };\n    this.addGutterDecoration = function (row, className) {\n        if (window.console)\n            console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n        this.session.addGutterDecoration(row, className);\n    };\n    this.removeGutterDecoration = function (row, className) {\n        if (window.console)\n            console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n        this.session.removeGutterDecoration(row, className);\n    };\n    this.setAnnotations = function (annotations) {\n        this.$annotations = [];\n        for (var i = 0; i < annotations.length; i++) {\n            var annotation = annotations[i];\n            var row = annotation.row;\n            var rowInfo = this.$annotations[row];\n            if (!rowInfo)\n                rowInfo = this.$annotations[row] = { text: [] };\n            var annoText = annotation.text;\n            annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n            if (rowInfo.text.indexOf(annoText) === -1)\n                rowInfo.text.push(annoText);\n            var type = annotation.type;\n            var className = annotation.className;\n            if (className)\n                rowInfo.className = className;\n            else if (type == \"error\")\n                rowInfo.className = \" ace_error\";\n            else if (type == \"warning\" && rowInfo.className != \" ace_error\")\n                rowInfo.className = \" ace_warning\";\n            else if (type == \"info\" && (!rowInfo.className))\n                rowInfo.className = \" ace_info\";\n        }\n    };\n    this.$updateAnnotations = function (delta) {\n        if (!this.$annotations.length)\n            return;\n        var firstRow = delta.start.row;\n        var len = delta.end.row - firstRow;\n        if (len === 0) {\n        }\n        else if (delta.action == 'remove') {\n            this.$annotations.splice(firstRow, len + 1, null);\n        }\n        else {\n            var args = new Array(len + 1);\n            args.unshift(firstRow, 1);\n            this.$annotations.splice.apply(this.$annotations, args);\n        }\n    };\n    this.update = function (config) {\n        this.config = config;\n        var session = this.session;\n        var firstRow = config.firstRow;\n        var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n        session.getLength() - 1);\n        this.oldLastRow = lastRow;\n        this.config = config;\n        this.$lines.moveContainer(config);\n        this.$updateCursorRow();\n        var fold = session.getNextFoldLine(firstRow);\n        var foldStart = fold ? fold.start.row : Infinity;\n        var cell = null;\n        var index = -1;\n        var row = firstRow;\n        while (true) {\n            if (row > foldStart) {\n                row = fold.end.row + 1;\n                fold = session.getNextFoldLine(row, fold);\n                foldStart = fold ? fold.start.row : Infinity;\n            }\n            if (row > lastRow) {\n                while (this.$lines.getLength() > index + 1)\n                    this.$lines.pop();\n                break;\n            }\n            cell = this.$lines.get(++index);\n            if (cell) {\n                cell.row = row;\n            }\n            else {\n                cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n                this.$lines.push(cell);\n            }\n            this.$renderCell(cell, config, fold, row);\n            row++;\n        }\n        this._signal(\"afterRender\");\n        this.$updateGutterWidth(config);\n    };\n    this.$updateGutterWidth = function (config) {\n        var session = this.session;\n        var gutterRenderer = session.gutterRenderer || this.$renderer;\n        var firstLineNumber = session.$firstLineNumber;\n        var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n        if (this.$fixedWidth || session.$useWrapMode)\n            lastLineText = session.getLength() + firstLineNumber - 1;\n        var gutterWidth = gutterRenderer\n            ? gutterRenderer.getWidth(session, lastLineText, config)\n            : lastLineText.toString().length * config.characterWidth;\n        var padding = this.$padding || this.$computePadding();\n        gutterWidth += padding.left + padding.right;\n        if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n            this.gutterWidth = gutterWidth;\n            this.element.parentNode.style.width =\n                this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n            this._signal(\"changeGutterWidth\", gutterWidth);\n        }\n    };\n    this.$updateCursorRow = function () {\n        if (!this.$highlightGutterLine)\n            return;\n        var position = this.session.selection.getCursor();\n        if (this.$cursorRow === position.row)\n            return;\n        this.$cursorRow = position.row;\n    };\n    this.updateLineHighlight = function () {\n        if (!this.$highlightGutterLine)\n            return;\n        var row = this.session.selection.cursor.row;\n        this.$cursorRow = row;\n        if (this.$cursorCell && this.$cursorCell.row == row)\n            return;\n        if (this.$cursorCell)\n            this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n        var cells = this.$lines.cells;\n        this.$cursorCell = null;\n        for (var i = 0; i < cells.length; i++) {\n            var cell = cells[i];\n            if (cell.row >= this.$cursorRow) {\n                if (cell.row > this.$cursorRow) {\n                    var fold = this.session.getFoldLine(this.$cursorRow);\n                    if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n                        cell = cells[i - 1];\n                    else\n                        break;\n                }\n                cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n                this.$cursorCell = cell;\n                break;\n            }\n        }\n    };\n    this.scrollLines = function (config) {\n        var oldConfig = this.config;\n        this.config = config;\n        this.$updateCursorRow();\n        if (this.$lines.pageChanged(oldConfig, config))\n            return this.update(config);\n        this.$lines.moveContainer(config);\n        var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n        this.session.getLength() - 1);\n        var oldLastRow = this.oldLastRow;\n        this.oldLastRow = lastRow;\n        if (!oldConfig || oldLastRow < config.firstRow)\n            return this.update(config);\n        if (lastRow < oldConfig.firstRow)\n            return this.update(config);\n        if (oldConfig.firstRow < config.firstRow)\n            for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n                this.$lines.shift();\n        if (oldLastRow > lastRow)\n            for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--)\n                this.$lines.pop();\n        if (config.firstRow < oldConfig.firstRow) {\n            this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n        }\n        if (lastRow > oldLastRow) {\n            this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n        }\n        this.updateLineHighlight();\n        this._signal(\"afterRender\");\n        this.$updateGutterWidth(config);\n    };\n    this.$renderLines = function (config, firstRow, lastRow) {\n        var fragment = [];\n        var row = firstRow;\n        var foldLine = this.session.getNextFoldLine(row);\n        var foldStart = foldLine ? foldLine.start.row : Infinity;\n        while (true) {\n            if (row > foldStart) {\n                row = foldLine.end.row + 1;\n                foldLine = this.session.getNextFoldLine(row, foldLine);\n                foldStart = foldLine ? foldLine.start.row : Infinity;\n            }\n            if (row > lastRow)\n                break;\n            var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n            this.$renderCell(cell, config, foldLine, row);\n            fragment.push(cell);\n            row++;\n        }\n        return fragment;\n    };\n    this.$renderCell = function (cell, config, fold, row) {\n        var element = cell.element;\n        var session = this.session;\n        var textNode = element.childNodes[0];\n        var foldWidget = element.childNodes[1];\n        var firstLineNumber = session.$firstLineNumber;\n        var breakpoints = session.$breakpoints;\n        var decorations = session.$decorations;\n        var gutterRenderer = session.gutterRenderer || this.$renderer;\n        var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n        var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n        var className = \"ace_gutter-cell \";\n        if (this.$highlightGutterLine) {\n            if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n                className += \"ace_gutter-active-line \";\n                if (this.$cursorCell != cell) {\n                    if (this.$cursorCell)\n                        this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n                    this.$cursorCell = cell;\n                }\n            }\n        }\n        if (breakpoints[row])\n            className += breakpoints[row];\n        if (decorations[row])\n            className += decorations[row];\n        if (this.$annotations[row])\n            className += this.$annotations[row].className;\n        if (element.className != className)\n            element.className = className;\n        if (foldWidgets) {\n            var c = foldWidgets[row];\n            if (c == null)\n                c = foldWidgets[row] = session.getFoldWidget(row);\n        }\n        if (c) {\n            var className = \"ace_fold-widget ace_\" + c;\n            if (c == \"start\" && row == foldStart && row < fold.end.row)\n                className += \" ace_closed\";\n            else\n                className += \" ace_open\";\n            if (foldWidget.className != className)\n                foldWidget.className = className;\n            var foldHeight = config.lineHeight + \"px\";\n            dom.setStyle(foldWidget.style, \"height\", foldHeight);\n            dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n        }\n        else {\n            if (foldWidget) {\n                dom.setStyle(foldWidget.style, \"display\", \"none\");\n            }\n        }\n        var text = (gutterRenderer\n            ? gutterRenderer.getText(session, row)\n            : row + firstLineNumber).toString();\n        if (text !== textNode.data) {\n            textNode.data = text;\n        }\n        dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n        dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n        cell.text = text;\n        return cell;\n    };\n    this.$fixedWidth = false;\n    this.$highlightGutterLine = true;\n    this.$renderer = \"\";\n    this.setHighlightGutterLine = function (highlightGutterLine) {\n        this.$highlightGutterLine = highlightGutterLine;\n    };\n    this.$showLineNumbers = true;\n    this.$renderer = \"\";\n    this.setShowLineNumbers = function (show) {\n        this.$renderer = !show && {\n            getWidth: function () { return 0; },\n            getText: function () { return \"\"; }\n        };\n    };\n    this.getShowLineNumbers = function () {\n        return this.$showLineNumbers;\n    };\n    this.$showFoldWidgets = true;\n    this.setShowFoldWidgets = function (show) {\n        if (show)\n            dom.addCssClass(this.element, \"ace_folding-enabled\");\n        else\n            dom.removeCssClass(this.element, \"ace_folding-enabled\");\n        this.$showFoldWidgets = show;\n        this.$padding = null;\n    };\n    this.getShowFoldWidgets = function () {\n        return this.$showFoldWidgets;\n    };\n    this.$computePadding = function () {\n        if (!this.element.firstChild)\n            return { left: 0, right: 0 };\n        var style = dom.computedStyle(this.element.firstChild);\n        this.$padding = {};\n        this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n            + (parseInt(style.paddingLeft) || 0) + 1;\n        this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n            + (parseInt(style.paddingRight) || 0);\n        return this.$padding;\n    };\n    this.getRegion = function (point) {\n        var padding = this.$padding || this.$computePadding();\n        var rect = this.element.getBoundingClientRect();\n        if (point.x < padding.left + rect.left)\n            return \"markers\";\n        if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n            return \"foldWidgets\";\n    };\n}).call(Gutter.prototype);\nfunction onCreateCell(element) {\n    var textNode = document.createTextNode('');\n    element.appendChild(textNode);\n    var foldWidget = dom.createElement(\"span\");\n    element.appendChild(foldWidget);\n    return element;\n}\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\nvar Marker = function (parentEl) {\n    this.element = dom.createElement(\"div\");\n    this.element.className = \"ace_layer ace_marker-layer\";\n    parentEl.appendChild(this.element);\n};\n(function () {\n    this.$padding = 0;\n    this.setPadding = function (padding) {\n        this.$padding = padding;\n    };\n    this.setSession = function (session) {\n        this.session = session;\n    };\n    this.setMarkers = function (markers) {\n        this.markers = markers;\n    };\n    this.elt = function (className, css) {\n        var x = this.i != -1 && this.element.childNodes[this.i];\n        if (!x) {\n            x = document.createElement(\"div\");\n            this.element.appendChild(x);\n            this.i = -1;\n        }\n        else {\n            this.i++;\n        }\n        x.style.cssText = css;\n        x.className = className;\n    };\n    this.update = function (config) {\n        if (!config)\n            return;\n        this.config = config;\n        this.i = 0;\n        var html;\n        for (var key in this.markers) {\n            var marker = this.markers[key];\n            if (!marker.range) {\n                marker.update(html, this, this.session, config);\n                continue;\n            }\n            var range = marker.range.clipRows(config.firstRow, config.lastRow);\n            if (range.isEmpty())\n                continue;\n            range = range.toScreenRange(this.session);\n            if (marker.renderer) {\n                var top = this.$getTop(range.start.row, config);\n                var left = this.$padding + range.start.column * config.characterWidth;\n                marker.renderer(html, range, left, top, config);\n            }\n            else if (marker.type == \"fullLine\") {\n                this.drawFullLineMarker(html, range, marker.clazz, config);\n            }\n            else if (marker.type == \"screenLine\") {\n                this.drawScreenLineMarker(html, range, marker.clazz, config);\n            }\n            else if (range.isMultiLine()) {\n                if (marker.type == \"text\")\n                    this.drawTextMarker(html, range, marker.clazz, config);\n                else\n                    this.drawMultiLineMarker(html, range, marker.clazz, config);\n            }\n            else {\n                this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n            }\n        }\n        if (this.i != -1) {\n            while (this.i < this.element.childElementCount)\n                this.element.removeChild(this.element.lastChild);\n        }\n    };\n    this.$getTop = function (row, layerConfig) {\n        return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n    };\n    function getBorderClass(tl, tr, br, bl) {\n        return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n    }\n    this.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) {\n        var session = this.session;\n        var start = range.start.row;\n        var end = range.end.row;\n        var row = start;\n        var prev = 0;\n        var curr = 0;\n        var next = session.getScreenLastRowColumn(row);\n        var lineRange = new Range(row, range.start.column, row, curr);\n        for (; row <= end; row++) {\n            lineRange.start.row = lineRange.end.row = row;\n            lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n            lineRange.end.column = next;\n            prev = curr;\n            curr = next;\n            next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n            this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n                + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle);\n        }\n    };\n    this.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n        var padding = this.$padding;\n        var height = config.lineHeight;\n        var top = this.$getTop(range.start.row, config);\n        var left = padding + range.start.column * config.characterWidth;\n        extraStyle = extraStyle || \"\";\n        if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n            var range1 = range.clone();\n            range1.end.row = range1.start.row;\n            range1.end.column = this.session.getLine(range1.start.row).length;\n            this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n        }\n        else {\n            this.elt(clazz + \" ace_br1 ace_start\", \"height:\" + height + \"px;\" + \"right:0;\" + \"top:\" + top + \"px;left:\" + left + \"px;\" + (extraStyle || \"\"));\n        }\n        if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n            var range1 = range.clone();\n            range1.start.row = range1.end.row;\n            range1.start.column = 0;\n            this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n        }\n        else {\n            top = this.$getTop(range.end.row, config);\n            var width = range.end.column * config.characterWidth;\n            this.elt(clazz + \" ace_br12\", \"height:\" + height + \"px;\" +\n                \"width:\" + width + \"px;\" +\n                \"top:\" + top + \"px;\" +\n                \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n        }\n        height = (range.end.row - range.start.row - 1) * config.lineHeight;\n        if (height <= 0)\n            return;\n        top = this.$getTop(range.start.row + 1, config);\n        var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n        this.elt(clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"), \"height:\" + height + \"px;\" +\n            \"right:0;\" +\n            \"top:\" + top + \"px;\" +\n            \"left:\" + padding + \"px;\" + (extraStyle || \"\"));\n    };\n    this.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n        if (this.session.$bidiHandler.isBidiRow(range.start.row))\n            return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n        var height = config.lineHeight;\n        var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n        var top = this.$getTop(range.start.row, config);\n        var left = this.$padding + range.start.column * config.characterWidth;\n        this.elt(clazz, \"height:\" + height + \"px;\" +\n            \"width:\" + width + \"px;\" +\n            \"top:\" + top + \"px;\" +\n            \"left:\" + left + \"px;\" + (extraStyle || \"\"));\n    };\n    this.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) {\n        var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n        var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n        selections.forEach(function (selection) {\n            this.elt(clazz, \"height:\" + height + \"px;\" +\n                \"width:\" + selection.width + (extraLength || 0) + \"px;\" +\n                \"top:\" + top + \"px;\" +\n                \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\"));\n        }, this);\n    };\n    this.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n        var top = this.$getTop(range.start.row, config);\n        var height = config.lineHeight;\n        if (range.start.row != range.end.row)\n            height += this.$getTop(range.end.row, config) - top;\n        this.elt(clazz, \"height:\" + height + \"px;\" +\n            \"top:\" + top + \"px;\" +\n            \"left:0;right:0;\" + (extraStyle || \"\"));\n    };\n    this.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) {\n        var top = this.$getTop(range.start.row, config);\n        var height = config.lineHeight;\n        this.elt(clazz, \"height:\" + height + \"px;\" +\n            \"top:\" + top + \"px;\" +\n            \"left:0;right:0;\" + (extraStyle || \"\"));\n    };\n}).call(Marker.prototype);\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar Text = function (parentEl) {\n    this.dom = dom;\n    this.element = this.dom.createElement(\"div\");\n    this.element.className = \"ace_layer ace_text-layer\";\n    parentEl.appendChild(this.element);\n    this.$updateEolChar = this.$updateEolChar.bind(this);\n    this.$lines = new Lines(this.element);\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.EOF_CHAR = \"\\xB6\";\n    this.EOL_CHAR_LF = \"\\xAC\";\n    this.EOL_CHAR_CRLF = \"\\xa4\";\n    this.EOL_CHAR = this.EOL_CHAR_LF;\n    this.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\n    this.SPACE_CHAR = \"\\xB7\";\n    this.$padding = 0;\n    this.MAX_LINE_LENGTH = 10000;\n    this.$updateEolChar = function () {\n        var doc = this.session.doc;\n        var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n        var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n        if (this.EOL_CHAR != EOL_CHAR) {\n            this.EOL_CHAR = EOL_CHAR;\n            return true;\n        }\n    };\n    this.setPadding = function (padding) {\n        this.$padding = padding;\n        this.element.style.margin = \"0 \" + padding + \"px\";\n    };\n    this.getLineHeight = function () {\n        return this.$fontMetrics.$characterSize.height || 0;\n    };\n    this.getCharacterWidth = function () {\n        return this.$fontMetrics.$characterSize.width || 0;\n    };\n    this.$setFontMetrics = function (measure) {\n        this.$fontMetrics = measure;\n        this.$fontMetrics.on(\"changeCharacterSize\", function (e) {\n            this._signal(\"changeCharacterSize\", e);\n        }.bind(this));\n        this.$pollSizeChanges();\n    };\n    this.checkForSizeChanges = function () {\n        this.$fontMetrics.checkForSizeChanges();\n    };\n    this.$pollSizeChanges = function () {\n        return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n    };\n    this.setSession = function (session) {\n        this.session = session;\n        if (session)\n            this.$computeTabString();\n    };\n    this.showInvisibles = false;\n    this.showSpaces = false;\n    this.showTabs = false;\n    this.showEOL = false;\n    this.setShowInvisibles = function (showInvisibles) {\n        if (this.showInvisibles == showInvisibles)\n            return false;\n        this.showInvisibles = showInvisibles;\n        if (typeof showInvisibles == \"string\") {\n            this.showSpaces = /tab/i.test(showInvisibles);\n            this.showTabs = /space/i.test(showInvisibles);\n            this.showEOL = /eol/i.test(showInvisibles);\n        }\n        else {\n            this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n        }\n        this.$computeTabString();\n        return true;\n    };\n    this.displayIndentGuides = true;\n    this.setDisplayIndentGuides = function (display) {\n        if (this.displayIndentGuides == display)\n            return false;\n        this.displayIndentGuides = display;\n        this.$computeTabString();\n        return true;\n    };\n    this.$tabStrings = [];\n    this.onChangeTabSize =\n        this.$computeTabString = function () {\n            var tabSize = this.session.getTabSize();\n            this.tabSize = tabSize;\n            var tabStr = this.$tabStrings = [0];\n            for (var i = 1; i < tabSize + 1; i++) {\n                if (this.showTabs) {\n                    var span = this.dom.createElement(\"span\");\n                    span.className = \"ace_invisible ace_invisible_tab\";\n                    span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n                    tabStr.push(span);\n                }\n                else {\n                    tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n                }\n            }\n            if (this.displayIndentGuides) {\n                this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n                var className = \"ace_indent-guide\";\n                var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n                var spaceContent = this.showSpaces\n                    ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n                    : lang.stringRepeat(\" \", this.tabSize);\n                var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n                var tabContent = this.showTabs\n                    ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n                    : spaceContent;\n                var span = this.dom.createElement(\"span\");\n                span.className = className + spaceClass;\n                span.textContent = spaceContent;\n                this.$tabStrings[\" \"] = span;\n                var span = this.dom.createElement(\"span\");\n                span.className = className + tabClass;\n                span.textContent = tabContent;\n                this.$tabStrings[\"\\t\"] = span;\n            }\n        };\n    this.updateLines = function (config, firstRow, lastRow) {\n        if (this.config.lastRow != config.lastRow ||\n            this.config.firstRow != config.firstRow) {\n            return this.update(config);\n        }\n        this.config = config;\n        var first = Math.max(firstRow, config.firstRow);\n        var last = Math.min(lastRow, config.lastRow);\n        var lineElements = this.element.childNodes;\n        var lineElementsIdx = 0;\n        for (var row = config.firstRow; row < first; row++) {\n            var foldLine = this.session.getFoldLine(row);\n            if (foldLine) {\n                if (foldLine.containsRow(first)) {\n                    first = foldLine.start.row;\n                    break;\n                }\n                else {\n                    row = foldLine.end.row;\n                }\n            }\n            lineElementsIdx++;\n        }\n        var heightChanged = false;\n        var row = first;\n        var foldLine = this.session.getNextFoldLine(row);\n        var foldStart = foldLine ? foldLine.start.row : Infinity;\n        while (true) {\n            if (row > foldStart) {\n                row = foldLine.end.row + 1;\n                foldLine = this.session.getNextFoldLine(row, foldLine);\n                foldStart = foldLine ? foldLine.start.row : Infinity;\n            }\n            if (row > last)\n                break;\n            var lineElement = lineElements[lineElementsIdx++];\n            if (lineElement) {\n                this.dom.removeChildren(lineElement);\n                this.$renderLine(lineElement, row, row == foldStart ? foldLine : false);\n                if (heightChanged)\n                    lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n                var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n                if (lineElement.style.height != height) {\n                    heightChanged = true;\n                    lineElement.style.height = height;\n                }\n            }\n            row++;\n        }\n        if (heightChanged) {\n            while (lineElementsIdx < this.$lines.cells.length) {\n                var cell = this.$lines.cells[lineElementsIdx++];\n                cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n            }\n        }\n    };\n    this.scrollLines = function (config) {\n        var oldConfig = this.config;\n        this.config = config;\n        if (this.$lines.pageChanged(oldConfig, config))\n            return this.update(config);\n        this.$lines.moveContainer(config);\n        var lastRow = config.lastRow;\n        var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n        if (!oldConfig || oldLastRow < config.firstRow)\n            return this.update(config);\n        if (lastRow < oldConfig.firstRow)\n            return this.update(config);\n        if (!oldConfig || oldConfig.lastRow < config.firstRow)\n            return this.update(config);\n        if (config.lastRow < oldConfig.firstRow)\n            return this.update(config);\n        if (oldConfig.firstRow < config.firstRow)\n            for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--)\n                this.$lines.shift();\n        if (oldConfig.lastRow > config.lastRow)\n            for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--)\n                this.$lines.pop();\n        if (config.firstRow < oldConfig.firstRow) {\n            this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n        }\n        if (config.lastRow > oldConfig.lastRow) {\n            this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n        }\n    };\n    this.$renderLinesFragment = function (config, firstRow, lastRow) {\n        var fragment = [];\n        var row = firstRow;\n        var foldLine = this.session.getNextFoldLine(row);\n        var foldStart = foldLine ? foldLine.start.row : Infinity;\n        while (true) {\n            if (row > foldStart) {\n                row = foldLine.end.row + 1;\n                foldLine = this.session.getNextFoldLine(row, foldLine);\n                foldStart = foldLine ? foldLine.start.row : Infinity;\n            }\n            if (row > lastRow)\n                break;\n            var line = this.$lines.createCell(row, config, this.session);\n            var lineEl = line.element;\n            this.dom.removeChildren(lineEl);\n            dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n            dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n            this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n            if (this.$useLineGroups()) {\n                lineEl.className = \"ace_line_group\";\n            }\n            else {\n                lineEl.className = \"ace_line\";\n            }\n            fragment.push(line);\n            row++;\n        }\n        return fragment;\n    };\n    this.update = function (config) {\n        this.$lines.moveContainer(config);\n        this.config = config;\n        var firstRow = config.firstRow;\n        var lastRow = config.lastRow;\n        var lines = this.$lines;\n        while (lines.getLength())\n            lines.pop();\n        lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n    };\n    this.$textToken = {\n        \"text\": true,\n        \"rparen\": true,\n        \"lparen\": true\n    };\n    this.$renderToken = function (parent, screenColumn, token, value) {\n        var self = this;\n        var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC\\u2066\\u2067\\u2068\\u202A\\u202B\\u202D\\u202E\\u202C\\u2069]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n        var valueFragment = this.dom.createFragment(this.element);\n        var m;\n        var i = 0;\n        while (m = re.exec(value)) {\n            var tab = m[1];\n            var simpleSpace = m[2];\n            var controlCharacter = m[3];\n            var cjkSpace = m[4];\n            var cjk = m[5];\n            if (!self.showSpaces && simpleSpace)\n                continue;\n            var before = i != m.index ? value.slice(i, m.index) : \"\";\n            i = m.index + m[0].length;\n            if (before) {\n                valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n            }\n            if (tab) {\n                var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n                valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n                screenColumn += tabSize - 1;\n            }\n            else if (simpleSpace) {\n                if (self.showSpaces) {\n                    var span = this.dom.createElement(\"span\");\n                    span.className = \"ace_invisible ace_invisible_space\";\n                    span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n                    valueFragment.appendChild(span);\n                }\n                else {\n                    valueFragment.appendChild(this.com.createTextNode(simpleSpace, this.element));\n                }\n            }\n            else if (controlCharacter) {\n                var span = this.dom.createElement(\"span\");\n                span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n                span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n                valueFragment.appendChild(span);\n            }\n            else if (cjkSpace) {\n                screenColumn += 1;\n                var span = this.dom.createElement(\"span\");\n                span.style.width = (self.config.characterWidth * 2) + \"px\";\n                span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n                span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n                valueFragment.appendChild(span);\n            }\n            else if (cjk) {\n                screenColumn += 1;\n                var span = this.dom.createElement(\"span\");\n                span.style.width = (self.config.characterWidth * 2) + \"px\";\n                span.className = \"ace_cjk\";\n                span.textContent = cjk;\n                valueFragment.appendChild(span);\n            }\n        }\n        valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n        if (!this.$textToken[token.type]) {\n            var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n            var span = this.dom.createElement(\"span\");\n            if (token.type == \"fold\")\n                span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n            span.className = classes;\n            span.appendChild(valueFragment);\n            parent.appendChild(span);\n        }\n        else {\n            parent.appendChild(valueFragment);\n        }\n        return screenColumn + value.length;\n    };\n    this.renderIndentGuide = function (parent, value, max) {\n        var cols = value.search(this.$indentGuideRe);\n        if (cols <= 0 || cols >= max)\n            return value;\n        if (value[0] == \" \") {\n            cols -= cols % this.tabSize;\n            var count = cols / this.tabSize;\n            for (var i = 0; i < count; i++) {\n                parent.appendChild(this.$tabStrings[\" \"].cloneNode(true));\n            }\n            return value.substr(cols);\n        }\n        else if (value[0] == \"\\t\") {\n            for (var i = 0; i < cols; i++) {\n                parent.appendChild(this.$tabStrings[\"\\t\"].cloneNode(true));\n            }\n            return value.substr(cols);\n        }\n        return value;\n    };\n    this.$createLineElement = function (parent) {\n        var lineEl = this.dom.createElement(\"div\");\n        lineEl.className = \"ace_line\";\n        lineEl.style.height = this.config.lineHeight + \"px\";\n        return lineEl;\n    };\n    this.$renderWrappedLine = function (parent, tokens, splits) {\n        var chars = 0;\n        var split = 0;\n        var splitChars = splits[0];\n        var screenColumn = 0;\n        var lineEl = this.$createLineElement();\n        parent.appendChild(lineEl);\n        for (var i = 0; i < tokens.length; i++) {\n            var token = tokens[i];\n            var value = token.value;\n            if (i == 0 && this.displayIndentGuides) {\n                chars = value.length;\n                value = this.renderIndentGuide(lineEl, value, splitChars);\n                if (!value)\n                    continue;\n                chars -= value.length;\n            }\n            if (chars + value.length < splitChars) {\n                screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n                chars += value.length;\n            }\n            else {\n                while (chars + value.length >= splitChars) {\n                    screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars));\n                    value = value.substring(splitChars - chars);\n                    chars = splitChars;\n                    lineEl = this.$createLineElement();\n                    parent.appendChild(lineEl);\n                    lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n                    split++;\n                    screenColumn = 0;\n                    splitChars = splits[split] || Number.MAX_VALUE;\n                }\n                if (value.length != 0) {\n                    chars += value.length;\n                    screenColumn = this.$renderToken(lineEl, screenColumn, token, value);\n                }\n            }\n        }\n        if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n            this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n    };\n    this.$renderSimpleLine = function (parent, tokens) {\n        var screenColumn = 0;\n        for (var i = 0; i < tokens.length; i++) {\n            var token = tokens[i];\n            var value = token.value;\n            if (i == 0 && this.displayIndentGuides) {\n                value = this.renderIndentGuide(parent, value);\n                if (!value)\n                    continue;\n            }\n            if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n                return this.$renderOverflowMessage(parent, screenColumn, token, value);\n            screenColumn = this.$renderToken(parent, screenColumn, token, value);\n        }\n    };\n    this.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) {\n        token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n        var overflowEl = this.dom.createElement(\"span\");\n        overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n        overflowEl.textContent = hide ? \"<hide>\" : \"<click to see more...>\";\n        parent.appendChild(overflowEl);\n    };\n    this.$renderLine = function (parent, row, foldLine) {\n        if (!foldLine && foldLine != false)\n            foldLine = this.session.getFoldLine(row);\n        if (foldLine)\n            var tokens = this.$getFoldLineTokens(row, foldLine);\n        else\n            var tokens = this.session.getTokens(row);\n        var lastLineEl = parent;\n        if (tokens.length) {\n            var splits = this.session.getRowSplitData(row);\n            if (splits && splits.length) {\n                this.$renderWrappedLine(parent, tokens, splits);\n                var lastLineEl = parent.lastChild;\n            }\n            else {\n                var lastLineEl = parent;\n                if (this.$useLineGroups()) {\n                    lastLineEl = this.$createLineElement();\n                    parent.appendChild(lastLineEl);\n                }\n                this.$renderSimpleLine(lastLineEl, tokens);\n            }\n        }\n        else if (this.$useLineGroups()) {\n            lastLineEl = this.$createLineElement();\n            parent.appendChild(lastLineEl);\n        }\n        if (this.showEOL && lastLineEl) {\n            if (foldLine)\n                row = foldLine.end.row;\n            var invisibleEl = this.dom.createElement(\"span\");\n            invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n            invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n            lastLineEl.appendChild(invisibleEl);\n        }\n    };\n    this.$getFoldLineTokens = function (row, foldLine) {\n        var session = this.session;\n        var renderTokens = [];\n        function addTokens(tokens, from, to) {\n            var idx = 0, col = 0;\n            while ((col + tokens[idx].value.length) < from) {\n                col += tokens[idx].value.length;\n                idx++;\n                if (idx == tokens.length)\n                    return;\n            }\n            if (col != from) {\n                var value = tokens[idx].value.substring(from - col);\n                if (value.length > (to - from))\n                    value = value.substring(0, to - from);\n                renderTokens.push({\n                    type: tokens[idx].type,\n                    value: value\n                });\n                col = from + value.length;\n                idx += 1;\n            }\n            while (col < to && idx < tokens.length) {\n                var value = tokens[idx].value;\n                if (value.length + col > to) {\n                    renderTokens.push({\n                        type: tokens[idx].type,\n                        value: value.substring(0, to - col)\n                    });\n                }\n                else\n                    renderTokens.push(tokens[idx]);\n                col += value.length;\n                idx += 1;\n            }\n        }\n        var tokens = session.getTokens(row);\n        foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) {\n            if (placeholder != null) {\n                renderTokens.push({\n                    type: \"fold\",\n                    value: placeholder\n                });\n            }\n            else {\n                if (isNewRow)\n                    tokens = session.getTokens(row);\n                if (tokens.length)\n                    addTokens(tokens, lastColumn, column);\n            }\n        }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n        return renderTokens;\n    };\n    this.$useLineGroups = function () {\n        return this.session.getUseWrapMode();\n    };\n    this.destroy = function () { };\n}).call(Text.prototype);\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar Cursor = function (parentEl) {\n    this.element = dom.createElement(\"div\");\n    this.element.className = \"ace_layer ace_cursor-layer\";\n    parentEl.appendChild(this.element);\n    this.isVisible = false;\n    this.isBlinking = true;\n    this.blinkInterval = 1000;\n    this.smoothBlinking = false;\n    this.cursors = [];\n    this.cursor = this.addCursor();\n    dom.addCssClass(this.element, \"ace_hidden-cursors\");\n    this.$updateCursors = this.$updateOpacity.bind(this);\n};\n(function () {\n    this.$updateOpacity = function (val) {\n        var cursors = this.cursors;\n        for (var i = cursors.length; i--;)\n            dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n    };\n    this.$startCssAnimation = function () {\n        var cursors = this.cursors;\n        for (var i = cursors.length; i--;)\n            cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n        this.$isAnimating = true;\n        setTimeout(function () {\n            if (this.$isAnimating) {\n                dom.addCssClass(this.element, \"ace_animate-blinking\");\n            }\n        }.bind(this));\n    };\n    this.$stopCssAnimation = function () {\n        this.$isAnimating = false;\n        dom.removeCssClass(this.element, \"ace_animate-blinking\");\n    };\n    this.$padding = 0;\n    this.setPadding = function (padding) {\n        this.$padding = padding;\n    };\n    this.setSession = function (session) {\n        this.session = session;\n    };\n    this.setBlinking = function (blinking) {\n        if (blinking != this.isBlinking) {\n            this.isBlinking = blinking;\n            this.restartTimer();\n        }\n    };\n    this.setBlinkInterval = function (blinkInterval) {\n        if (blinkInterval != this.blinkInterval) {\n            this.blinkInterval = blinkInterval;\n            this.restartTimer();\n        }\n    };\n    this.setSmoothBlinking = function (smoothBlinking) {\n        if (smoothBlinking != this.smoothBlinking) {\n            this.smoothBlinking = smoothBlinking;\n            dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n            this.$updateCursors(true);\n            this.restartTimer();\n        }\n    };\n    this.addCursor = function () {\n        var el = dom.createElement(\"div\");\n        el.className = \"ace_cursor\";\n        this.element.appendChild(el);\n        this.cursors.push(el);\n        return el;\n    };\n    this.removeCursor = function () {\n        if (this.cursors.length > 1) {\n            var el = this.cursors.pop();\n            el.parentNode.removeChild(el);\n            return el;\n        }\n    };\n    this.hideCursor = function () {\n        this.isVisible = false;\n        dom.addCssClass(this.element, \"ace_hidden-cursors\");\n        this.restartTimer();\n    };\n    this.showCursor = function () {\n        this.isVisible = true;\n        dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n        this.restartTimer();\n    };\n    this.restartTimer = function () {\n        var update = this.$updateCursors;\n        clearInterval(this.intervalId);\n        clearTimeout(this.timeoutId);\n        this.$stopCssAnimation();\n        if (this.smoothBlinking) {\n            this.$isSmoothBlinking = false;\n            dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n        }\n        update(true);\n        if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n            this.$stopCssAnimation();\n            return;\n        }\n        if (this.smoothBlinking) {\n            this.$isSmoothBlinking = true;\n            setTimeout(function () {\n                if (this.$isSmoothBlinking) {\n                    dom.addCssClass(this.element, \"ace_smooth-blinking\");\n                }\n            }.bind(this));\n        }\n        if (dom.HAS_CSS_ANIMATION) {\n            this.$startCssAnimation();\n        }\n        else {\n            var blink = function () {\n                this.timeoutId = setTimeout(function () {\n                    update(false);\n                }, 0.6 * this.blinkInterval);\n            }.bind(this);\n            this.intervalId = setInterval(function () {\n                update(true);\n                blink();\n            }, this.blinkInterval);\n            blink();\n        }\n    };\n    this.getPixelPosition = function (position, onScreen) {\n        if (!this.config || !this.session)\n            return { left: 0, top: 0 };\n        if (!position)\n            position = this.session.selection.getCursor();\n        var pos = this.session.documentToScreenPosition(position);\n        var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n            ? this.session.$bidiHandler.getPosLeft(pos.column)\n            : pos.column * this.config.characterWidth);\n        var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n            this.config.lineHeight;\n        return { left: cursorLeft, top: cursorTop };\n    };\n    this.isCursorInView = function (pixelPos, config) {\n        return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n    };\n    this.update = function (config) {\n        this.config = config;\n        var selections = this.session.$selectionMarkers;\n        var i = 0, cursorIndex = 0;\n        if (selections === undefined || selections.length === 0) {\n            selections = [{ cursor: null }];\n        }\n        for (var i = 0, n = selections.length; i < n; i++) {\n            var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n            if ((pixelPos.top > config.height + config.offset ||\n                pixelPos.top < 0) && i > 1) {\n                continue;\n            }\n            var element = this.cursors[cursorIndex++] || this.addCursor();\n            var style = element.style;\n            if (!this.drawCursor) {\n                if (!this.isCursorInView(pixelPos, config)) {\n                    dom.setStyle(style, \"display\", \"none\");\n                }\n                else {\n                    dom.setStyle(style, \"display\", \"block\");\n                    dom.translate(element, pixelPos.left, pixelPos.top);\n                    dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n                    dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n                }\n            }\n            else {\n                this.drawCursor(element, pixelPos, config, selections[i], this.session);\n            }\n        }\n        while (this.cursors.length > cursorIndex)\n            this.removeCursor();\n        var overwrite = this.session.getOverwrite();\n        this.$setOverwrite(overwrite);\n        this.$pixelPos = pixelPos;\n        this.restartTimer();\n    };\n    this.drawCursor = null;\n    this.$setOverwrite = function (overwrite) {\n        if (overwrite != this.overwrite) {\n            this.overwrite = overwrite;\n            if (overwrite)\n                dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n            else\n                dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n        }\n    };\n    this.destroy = function () {\n        clearInterval(this.intervalId);\n        clearTimeout(this.timeoutId);\n    };\n}).call(Cursor.prototype);\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar ScrollBar = function (parent) {\n    this.element = dom.createElement(\"div\");\n    this.element.className = \"ace_scrollbar ace_scrollbar\" + this.classSuffix;\n    this.inner = dom.createElement(\"div\");\n    this.inner.className = \"ace_scrollbar-inner\";\n    this.inner.textContent = \"\\xa0\";\n    this.element.appendChild(this.inner);\n    parent.appendChild(this.element);\n    this.setVisible(false);\n    this.skipEvent = false;\n    event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n    event.addListener(this.element, \"mousedown\", event.preventDefault);\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.setVisible = function (isVisible) {\n        this.element.style.display = isVisible ? \"\" : \"none\";\n        this.isVisible = isVisible;\n        this.coeff = 1;\n    };\n}).call(ScrollBar.prototype);\nvar VScrollBar = function (parent, renderer) {\n    ScrollBar.call(this, parent);\n    this.scrollTop = 0;\n    this.scrollHeight = 0;\n    renderer.$scrollbarWidth =\n        this.width = dom.scrollbarWidth(parent.ownerDocument);\n    this.inner.style.width =\n        this.element.style.width = (this.width || 15) + 5 + \"px\";\n    this.$minWidth = 0;\n};\noop.inherits(VScrollBar, ScrollBar);\n(function () {\n    this.classSuffix = '-v';\n    this.onScroll = function () {\n        if (!this.skipEvent) {\n            this.scrollTop = this.element.scrollTop;\n            if (this.coeff != 1) {\n                var h = this.element.clientHeight / this.scrollHeight;\n                this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n            }\n            this._emit(\"scroll\", { data: this.scrollTop });\n        }\n        this.skipEvent = false;\n    };\n    this.getWidth = function () {\n        return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n    };\n    this.setHeight = function (height) {\n        this.element.style.height = height + \"px\";\n    };\n    this.setInnerHeight =\n        this.setScrollHeight = function (height) {\n            this.scrollHeight = height;\n            if (height > MAX_SCROLL_H) {\n                this.coeff = MAX_SCROLL_H / height;\n                height = MAX_SCROLL_H;\n            }\n            else if (this.coeff != 1) {\n                this.coeff = 1;\n            }\n            this.inner.style.height = height + \"px\";\n        };\n    this.setScrollTop = function (scrollTop) {\n        if (this.scrollTop != scrollTop) {\n            this.skipEvent = true;\n            this.scrollTop = scrollTop;\n            this.element.scrollTop = scrollTop * this.coeff;\n        }\n    };\n}).call(VScrollBar.prototype);\nvar HScrollBar = function (parent, renderer) {\n    ScrollBar.call(this, parent);\n    this.scrollLeft = 0;\n    this.height = renderer.$scrollbarWidth;\n    this.inner.style.height =\n        this.element.style.height = (this.height || 15) + 5 + \"px\";\n};\noop.inherits(HScrollBar, ScrollBar);\n(function () {\n    this.classSuffix = '-h';\n    this.onScroll = function () {\n        if (!this.skipEvent) {\n            this.scrollLeft = this.element.scrollLeft;\n            this._emit(\"scroll\", { data: this.scrollLeft });\n        }\n        this.skipEvent = false;\n    };\n    this.getHeight = function () {\n        return this.isVisible ? this.height : 0;\n    };\n    this.setWidth = function (width) {\n        this.element.style.width = width + \"px\";\n    };\n    this.setInnerWidth = function (width) {\n        this.inner.style.width = width + \"px\";\n    };\n    this.setScrollWidth = function (width) {\n        this.inner.style.width = width + \"px\";\n    };\n    this.setScrollLeft = function (scrollLeft) {\n        if (this.scrollLeft != scrollLeft) {\n            this.skipEvent = true;\n            this.scrollLeft = this.element.scrollLeft = scrollLeft;\n        }\n    };\n}).call(HScrollBar.prototype);\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module){\"use strict\";\nvar event = require(\"./lib/event\");\nvar RenderLoop = function (onRender, win) {\n    this.onRender = onRender;\n    this.pending = false;\n    this.changes = 0;\n    this.$recursionLimit = 2;\n    this.window = win || window;\n    var _self = this;\n    this._flush = function (ts) {\n        _self.pending = false;\n        var changes = _self.changes;\n        if (changes) {\n            event.blockIdle(100);\n            _self.changes = 0;\n            _self.onRender(changes);\n        }\n        if (_self.changes) {\n            if (_self.$recursionLimit-- < 0)\n                return;\n            _self.schedule();\n        }\n        else {\n            _self.$recursionLimit = 2;\n        }\n    };\n};\n(function () {\n    this.schedule = function (change) {\n        this.changes = this.changes | change;\n        if (this.changes && !this.pending) {\n            event.nextFrame(this._flush);\n            this.pending = true;\n        }\n    };\n    this.clear = function (change) {\n        var changes = this.changes;\n        this.changes = 0;\n        return changes;\n    };\n}).call(RenderLoop.prototype);\nexports.RenderLoop = RenderLoop;\n\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module){var oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar CHAR_COUNT = 256;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\nvar FontMetrics = exports.FontMetrics = function (parentEl) {\n    this.el = dom.createElement(\"div\");\n    this.$setMeasureNodeStyles(this.el.style, true);\n    this.$main = dom.createElement(\"div\");\n    this.$setMeasureNodeStyles(this.$main.style);\n    this.$measureNode = dom.createElement(\"div\");\n    this.$setMeasureNodeStyles(this.$measureNode.style);\n    this.el.appendChild(this.$main);\n    this.el.appendChild(this.$measureNode);\n    parentEl.appendChild(this.el);\n    this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n    this.$characterSize = { width: 0, height: 0 };\n    if (USE_OBSERVER)\n        this.$addObserver();\n    else\n        this.checkForSizeChanges();\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.$characterSize = { width: 0, height: 0 };\n    this.$setMeasureNodeStyles = function (style, isRoot) {\n        style.width = style.height = \"auto\";\n        style.left = style.top = \"0px\";\n        style.visibility = \"hidden\";\n        style.position = \"absolute\";\n        style.whiteSpace = \"pre\";\n        if (useragent.isIE < 8) {\n            style[\"font-family\"] = \"inherit\";\n        }\n        else {\n            style.font = \"inherit\";\n        }\n        style.overflow = isRoot ? \"hidden\" : \"visible\";\n    };\n    this.checkForSizeChanges = function (size) {\n        if (size === undefined)\n            size = this.$measureSizes();\n        if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n            this.$measureNode.style.fontWeight = \"bold\";\n            var boldSize = this.$measureSizes();\n            this.$measureNode.style.fontWeight = \"\";\n            this.$characterSize = size;\n            this.charSizes = Object.create(null);\n            this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n            this._emit(\"changeCharacterSize\", { data: size });\n        }\n    };\n    this.$addObserver = function () {\n        var self = this;\n        this.$observer = new window.ResizeObserver(function (e) {\n            self.checkForSizeChanges();\n        });\n        this.$observer.observe(this.$measureNode);\n    };\n    this.$pollSizeChanges = function () {\n        if (this.$pollSizeChangesTimer || this.$observer)\n            return this.$pollSizeChangesTimer;\n        var self = this;\n        return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n            self.checkForSizeChanges();\n            event.onIdle(cb, 500);\n        }, 500);\n    };\n    this.setPolling = function (val) {\n        if (val) {\n            this.$pollSizeChanges();\n        }\n        else if (this.$pollSizeChangesTimer) {\n            clearInterval(this.$pollSizeChangesTimer);\n            this.$pollSizeChangesTimer = 0;\n        }\n    };\n    this.$measureSizes = function (node) {\n        var size = {\n            height: (node || this.$measureNode).clientHeight,\n            width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n        };\n        if (size.width === 0 || size.height === 0)\n            return null;\n        return size;\n    };\n    this.$measureCharWidth = function (ch) {\n        this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n        var rect = this.$main.getBoundingClientRect();\n        return rect.width / CHAR_COUNT;\n    };\n    this.getCharacterWidth = function (ch) {\n        var w = this.charSizes[ch];\n        if (w === undefined) {\n            w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n        }\n        return w;\n    };\n    this.destroy = function () {\n        clearInterval(this.$pollSizeChangesTimer);\n        if (this.$observer)\n            this.$observer.disconnect();\n        if (this.el && this.el.parentNode)\n            this.el.parentNode.removeChild(this.el);\n    };\n    this.$getZoom = function getZoom(element) {\n        if (!element || !element.parentElement)\n            return 1;\n        return (window.getComputedStyle(element).zoom || 1) * getZoom(element.parentElement);\n    };\n    this.$initTransformMeasureNodes = function () {\n        var t = function (t, l) {\n            return [\"div\", {\n                    style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n                }];\n        };\n        this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n    };\n    this.transformCoordinates = function (clientPos, elPos) {\n        if (clientPos) {\n            var zoom = this.$getZoom(this.el);\n            clientPos = mul(1 / zoom, clientPos);\n        }\n        function solve(l1, l2, r) {\n            var det = l1[1] * l2[0] - l1[0] * l2[1];\n            return [\n                (-l2[1] * r[0] + l2[0] * r[1]) / det,\n                (+l1[1] * r[0] - l1[0] * r[1]) / det\n            ];\n        }\n        function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n        function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n        function mul(a, b) { return [a * b[0], a * b[1]]; }\n        if (!this.els)\n            this.$initTransformMeasureNodes();\n        function p(el) {\n            var r = el.getBoundingClientRect();\n            return [r.left, r.top];\n        }\n        var a = p(this.els[0]);\n        var b = p(this.els[1]);\n        var c = p(this.els[2]);\n        var d = p(this.els[3]);\n        var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n        var m1 = mul(1 + h[0], sub(b, a));\n        var m2 = mul(1 + h[1], sub(c, a));\n        if (elPos) {\n            var x = elPos;\n            var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n            var ut = add(mul(x[0], m1), mul(x[1], m2));\n            return add(mul(1 / k / L, ut), a);\n        }\n        var u = sub(clientPos, a);\n        var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n        return mul(L, f);\n    };\n}).call(FontMetrics.prototype);\n\n});\n\nace.define(\"ace/css/editor.css\",[\"require\",\"exports\",\"module\"], function(require, exports, module){module.exports = \"/*\\nstyles = []\\nfor (var i = 1; i < 16; i++) {\\n    styles.push(\\\".ace_br\\\" + i + \\\"{\\\" + (\\n        [\\\"top-left\\\", \\\"top-right\\\", \\\"bottom-right\\\", \\\"bottom-left\\\"]\\n    ).map(function(x, j) {\\n        return i & (1<<j) ? \\\"border-\\\" + x + \\\"-radius: 3px;\\\" : \\\"\\\" \\n    }).filter(Boolean).join(\\\" \\\") + \\\"}\\\")\\n}\\nstyles.join(\\\"\\\\n\\\")\\n*/\\n.ace_br1 {border-top-left-radius    : 3px;}\\n.ace_br2 {border-top-right-radius   : 3px;}\\n.ace_br3 {border-top-left-radius    : 3px; border-top-right-radius:    3px;}\\n.ace_br4 {border-bottom-right-radius: 3px;}\\n.ace_br5 {border-top-left-radius    : 3px; border-bottom-right-radius: 3px;}\\n.ace_br6 {border-top-right-radius   : 3px; border-bottom-right-radius: 3px;}\\n.ace_br7 {border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px;}\\n.ace_br8 {border-bottom-left-radius : 3px;}\\n.ace_br9 {border-top-left-radius    : 3px; border-bottom-left-radius:  3px;}\\n.ace_br10{border-top-right-radius   : 3px; border-bottom-left-radius:  3px;}\\n.ace_br11{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-left-radius:  3px;}\\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}\\n.ace_br13{border-top-left-radius    : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}\\n.ace_br14{border-top-right-radius   : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}\\n.ace_br15{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\n\\n\\n.ace_editor {\\n    position: relative;\\n    overflow: hidden;\\n    padding: 0;\\n    font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\\n    direction: ltr;\\n    text-align: left;\\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n}\\n\\n.ace_scroller {\\n    position: absolute;\\n    overflow: hidden;\\n    top: 0;\\n    bottom: 0;\\n    background-color: inherit;\\n    -ms-user-select: none;\\n    -moz-user-select: none;\\n    -webkit-user-select: none;\\n    user-select: none;\\n    cursor: text;\\n}\\n\\n.ace_content {\\n    position: absolute;\\n    box-sizing: border-box;\\n    min-width: 100%;\\n    contain: style size layout;\\n    font-variant-ligatures: no-common-ligatures;\\n}\\n\\n.ace_dragging .ace_scroller:before{\\n    position: absolute;\\n    top: 0;\\n    left: 0;\\n    right: 0;\\n    bottom: 0;\\n    content: '';\\n    background: rgba(250, 250, 250, 0.01);\\n    z-index: 1000;\\n}\\n.ace_dragging.ace_dark .ace_scroller:before{\\n    background: rgba(0, 0, 0, 0.01);\\n}\\n\\n.ace_gutter {\\n    position: absolute;\\n    overflow : hidden;\\n    width: auto;\\n    top: 0;\\n    bottom: 0;\\n    left: 0;\\n    cursor: default;\\n    z-index: 4;\\n    -ms-user-select: none;\\n    -moz-user-select: none;\\n    -webkit-user-select: none;\\n    user-select: none;\\n    contain: style size layout;\\n}\\n\\n.ace_gutter-active-line {\\n    position: absolute;\\n    left: 0;\\n    right: 0;\\n}\\n\\n.ace_scroller.ace_scroll-left {\\n    box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\n}\\n\\n.ace_gutter-cell {\\n    position: absolute;\\n    top: 0;\\n    left: 0;\\n    right: 0;\\n    padding-left: 19px;\\n    padding-right: 6px;\\n    background-repeat: no-repeat;\\n}\\n\\n.ace_gutter-cell.ace_error {\\n    background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\\\");\\n    background-repeat: no-repeat;\\n    background-position: 2px center;\\n}\\n\\n.ace_gutter-cell.ace_warning {\\n    background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\\\");\\n    background-position: 2px center;\\n}\\n\\n.ace_gutter-cell.ace_info {\\n    background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\\");\\n    background-position: 2px center;\\n}\\n.ace_dark .ace_gutter-cell.ace_info {\\n    background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_scrollbar {\\n    contain: strict;\\n    position: absolute;\\n    right: 0;\\n    bottom: 0;\\n    z-index: 6;\\n}\\n\\n.ace_scrollbar-inner {\\n    position: absolute;\\n    cursor: text;\\n    left: 0;\\n    top: 0;\\n}\\n\\n.ace_scrollbar-v{\\n    overflow-x: hidden;\\n    overflow-y: scroll;\\n    top: 0;\\n}\\n\\n.ace_scrollbar-h {\\n    overflow-x: scroll;\\n    overflow-y: hidden;\\n    left: 0;\\n}\\n\\n.ace_print-margin {\\n    position: absolute;\\n    height: 100%;\\n}\\n\\n.ace_text-input {\\n    position: absolute;\\n    z-index: 0;\\n    width: 0.5em;\\n    height: 1em;\\n    opacity: 0;\\n    background: transparent;\\n    -moz-appearance: none;\\n    appearance: none;\\n    border: none;\\n    resize: none;\\n    outline: none;\\n    overflow: hidden;\\n    font: inherit;\\n    padding: 0 1px;\\n    margin: 0 -1px;\\n    contain: strict;\\n    -ms-user-select: text;\\n    -moz-user-select: text;\\n    -webkit-user-select: text;\\n    user-select: text;\\n    /*with `pre-line` chrome inserts &nbsp; instead of space*/\\n    white-space: pre!important;\\n}\\n.ace_text-input.ace_composition {\\n    background: transparent;\\n    color: inherit;\\n    z-index: 1000;\\n    opacity: 1;\\n}\\n.ace_composition_placeholder { color: transparent }\\n.ace_composition_marker { \\n    border-bottom: 1px solid;\\n    position: absolute;\\n    border-radius: 0;\\n    margin-top: 1px;\\n}\\n\\n[ace_nocontext=true] {\\n    transform: none!important;\\n    filter: none!important;\\n    clip-path: none!important;\\n    mask : none!important;\\n    contain: none!important;\\n    perspective: none!important;\\n    mix-blend-mode: initial!important;\\n    z-index: auto;\\n}\\n\\n.ace_layer {\\n    z-index: 1;\\n    position: absolute;\\n    overflow: hidden;\\n    /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/\\n    word-wrap: normal;\\n    white-space: pre;\\n    height: 100%;\\n    width: 100%;\\n    box-sizing: border-box;\\n    /* setting pointer-events: auto; on node under the mouse, which changes\\n        during scroll, will break mouse wheel scrolling in Safari */\\n    pointer-events: none;\\n}\\n\\n.ace_gutter-layer {\\n    position: relative;\\n    width: auto;\\n    text-align: right;\\n    pointer-events: auto;\\n    height: 1000000px;\\n    contain: style size layout;\\n}\\n\\n.ace_text-layer {\\n    font: inherit !important;\\n    position: absolute;\\n    height: 1000000px;\\n    width: 1000000px;\\n    contain: style size layout;\\n}\\n\\n.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\\n    contain: style size layout;\\n    position: absolute;\\n    top: 0;\\n    left: 0;\\n    right: 0;\\n}\\n\\n.ace_hidpi .ace_text-layer,\\n.ace_hidpi .ace_gutter-layer,\\n.ace_hidpi .ace_content,\\n.ace_hidpi .ace_gutter {\\n    contain: strict;\\n    will-change: transform;\\n}\\n.ace_hidpi .ace_text-layer > .ace_line, \\n.ace_hidpi .ace_text-layer > .ace_line_group {\\n    contain: strict;\\n}\\n\\n.ace_cjk {\\n    display: inline-block;\\n    text-align: center;\\n}\\n\\n.ace_cursor-layer {\\n    z-index: 4;\\n}\\n\\n.ace_cursor {\\n    z-index: 4;\\n    position: absolute;\\n    box-sizing: border-box;\\n    border-left: 2px solid;\\n    /* workaround for smooth cursor repaintng whole screen in chrome */\\n    transform: translatez(0);\\n}\\n\\n.ace_multiselect .ace_cursor {\\n    border-left-width: 1px;\\n}\\n\\n.ace_slim-cursors .ace_cursor {\\n    border-left-width: 1px;\\n}\\n\\n.ace_overwrite-cursors .ace_cursor {\\n    border-left-width: 0;\\n    border-bottom: 1px solid;\\n}\\n\\n.ace_hidden-cursors .ace_cursor {\\n    opacity: 0.2;\\n}\\n\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\n    opacity: 0;\\n}\\n\\n.ace_smooth-blinking .ace_cursor {\\n    transition: opacity 0.18s;\\n}\\n\\n.ace_animate-blinking .ace_cursor {\\n    animation-duration: 1000ms;\\n    animation-timing-function: step-end;\\n    animation-name: blink-ace-animate;\\n    animation-iteration-count: infinite;\\n}\\n\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\n    animation-duration: 1000ms;\\n    animation-timing-function: ease-in-out;\\n    animation-name: blink-ace-animate-smooth;\\n}\\n    \\n@keyframes blink-ace-animate {\\n    from, to { opacity: 1; }\\n    60% { opacity: 0; }\\n}\\n\\n@keyframes blink-ace-animate-smooth {\\n    from, to { opacity: 1; }\\n    45% { opacity: 1; }\\n    60% { opacity: 0; }\\n    85% { opacity: 0; }\\n}\\n\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\n    position: absolute;\\n    z-index: 3;\\n}\\n\\n.ace_marker-layer .ace_selection {\\n    position: absolute;\\n    z-index: 5;\\n}\\n\\n.ace_marker-layer .ace_bracket {\\n    position: absolute;\\n    z-index: 6;\\n}\\n\\n.ace_marker-layer .ace_error_bracket {\\n    position: absolute;\\n    border-bottom: 1px solid #DE5555;\\n    border-radius: 0;\\n}\\n\\n.ace_marker-layer .ace_active-line {\\n    position: absolute;\\n    z-index: 2;\\n}\\n\\n.ace_marker-layer .ace_selected-word {\\n    position: absolute;\\n    z-index: 4;\\n    box-sizing: border-box;\\n}\\n\\n.ace_line .ace_fold {\\n    box-sizing: border-box;\\n\\n    display: inline-block;\\n    height: 11px;\\n    margin-top: -2px;\\n    vertical-align: middle;\\n\\n    background-image:\\n        url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n        url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\n    background-repeat: no-repeat, repeat-x;\\n    background-position: center center, top left;\\n    color: transparent;\\n\\n    border: 1px solid black;\\n    border-radius: 2px;\\n\\n    cursor: pointer;\\n    pointer-events: auto;\\n}\\n\\n.ace_dark .ace_fold {\\n}\\n\\n.ace_fold:hover{\\n    background-image:\\n        url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\n        url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\n}\\n\\n.ace_tooltip {\\n    background-color: #FFF;\\n    background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\\n    border: 1px solid gray;\\n    border-radius: 1px;\\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\n    color: black;\\n    max-width: 100%;\\n    padding: 3px 4px;\\n    position: fixed;\\n    z-index: 999999;\\n    box-sizing: border-box;\\n    cursor: default;\\n    white-space: pre;\\n    word-wrap: break-word;\\n    line-height: normal;\\n    font-style: normal;\\n    font-weight: normal;\\n    letter-spacing: normal;\\n    pointer-events: none;\\n}\\n\\n.ace_folding-enabled > .ace_gutter-cell {\\n    padding-right: 13px;\\n}\\n\\n.ace_fold-widget {\\n    box-sizing: border-box;\\n\\n    margin: 0 -12px 0 1px;\\n    display: none;\\n    width: 11px;\\n    vertical-align: top;\\n\\n    background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\n    background-repeat: no-repeat;\\n    background-position: center;\\n\\n    border-radius: 3px;\\n    \\n    border: 1px solid transparent;\\n    cursor: pointer;\\n}\\n\\n.ace_folding-enabled .ace_fold-widget {\\n    display: inline-block;   \\n}\\n\\n.ace_fold-widget.ace_end {\\n    background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\n}\\n\\n.ace_fold-widget.ace_closed {\\n    background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\n}\\n\\n.ace_fold-widget:hover {\\n    border: 1px solid rgba(0, 0, 0, 0.3);\\n    background-color: rgba(255, 255, 255, 0.2);\\n    box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\n}\\n\\n.ace_fold-widget:active {\\n    border: 1px solid rgba(0, 0, 0, 0.4);\\n    background-color: rgba(0, 0, 0, 0.05);\\n    box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\n}\\n/**\\n * Dark version for fold widgets\\n */\\n.ace_dark .ace_fold-widget {\\n    background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_end {\\n    background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget.ace_closed {\\n    background-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\n}\\n.ace_dark .ace_fold-widget:hover {\\n    box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n    background-color: rgba(255, 255, 255, 0.1);\\n}\\n.ace_dark .ace_fold-widget:active {\\n    box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\n}\\n\\n.ace_inline_button {\\n    border: 1px solid lightgray;\\n    display: inline-block;\\n    margin: -1px 8px;\\n    padding: 0 5px;\\n    pointer-events: auto;\\n    cursor: pointer;\\n}\\n.ace_inline_button:hover {\\n    border-color: gray;\\n    background: rgba(200,200,200,0.2);\\n    display: inline-block;\\n    pointer-events: auto;\\n}\\n\\n.ace_fold-widget.ace_invalid {\\n    background-color: #FFB4B4;\\n    border-color: #DE5555;\\n}\\n\\n.ace_fade-fold-widgets .ace_fold-widget {\\n    transition: opacity 0.4s ease 0.05s;\\n    opacity: 0;\\n}\\n\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\n    transition: opacity 0.05s ease 0.05s;\\n    opacity:1;\\n}\\n\\n.ace_underline {\\n    text-decoration: underline;\\n}\\n\\n.ace_bold {\\n    font-weight: bold;\\n}\\n\\n.ace_nobold .ace_bold {\\n    font-weight: normal;\\n}\\n\\n.ace_italic {\\n    font-style: italic;\\n}\\n\\n\\n.ace_error-marker {\\n    background-color: rgba(255, 0, 0,0.2);\\n    position: absolute;\\n    z-index: 9;\\n}\\n\\n.ace_highlight-marker {\\n    background-color: rgba(255, 255, 0,0.2);\\n    position: absolute;\\n    z-index: 8;\\n}\\n\\n.ace_mobile-menu {\\n    position: absolute;\\n    line-height: 1.5;\\n    border-radius: 4px;\\n    -ms-user-select: none;\\n    -moz-user-select: none;\\n    -webkit-user-select: none;\\n    user-select: none;\\n    background: white;\\n    box-shadow: 1px 3px 2px grey;\\n    border: 1px solid #dcdcdc;\\n    color: black;\\n}\\n.ace_dark > .ace_mobile-menu {\\n    background: #333;\\n    color: #ccc;\\n    box-shadow: 1px 3px 2px grey;\\n    border: 1px solid #444;\\n\\n}\\n.ace_mobile-button {\\n    padding: 2px;\\n    cursor: pointer;\\n    overflow: hidden;\\n}\\n.ace_mobile-button:hover {\\n    background-color: #eee;\\n    opacity:1;\\n}\\n.ace_mobile-button:active {\\n    background-color: #ddd;\\n}\\n\\n.ace_placeholder {\\n    font-family: arial;\\n    transform: scale(0.9);\\n    transform-origin: left;\\n    white-space: pre;\\n    opacity: 0.7;\\n    margin: 0 10px;\\n}\";\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/css/editor.css\",\"ace/lib/useragent\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = require(\"./css/editor.css\");\nvar useragent = require(\"./lib/useragent\");\nvar HIDE_TEXTAREA = useragent.isIE;\ndom.importCssString(editorCss, \"ace_editor.css\", false);\nvar VirtualRenderer = function (container, theme) {\n    var _self = this;\n    this.container = container || dom.createElement(\"div\");\n    dom.addCssClass(this.container, \"ace_editor\");\n    if (dom.HI_DPI)\n        dom.addCssClass(this.container, \"ace_hidpi\");\n    this.setTheme(theme);\n    if (config.get(\"useStrictCSP\") == null)\n        config.set(\"useStrictCSP\", false);\n    this.$gutter = dom.createElement(\"div\");\n    this.$gutter.className = \"ace_gutter\";\n    this.container.appendChild(this.$gutter);\n    this.$gutter.setAttribute(\"aria-hidden\", true);\n    this.scroller = dom.createElement(\"div\");\n    this.scroller.className = \"ace_scroller\";\n    this.container.appendChild(this.scroller);\n    this.content = dom.createElement(\"div\");\n    this.content.className = \"ace_content\";\n    this.scroller.appendChild(this.content);\n    this.$gutterLayer = new GutterLayer(this.$gutter);\n    this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n    this.$markerBack = new MarkerLayer(this.content);\n    var textLayer = this.$textLayer = new TextLayer(this.content);\n    this.canvas = textLayer.element;\n    this.$markerFront = new MarkerLayer(this.content);\n    this.$cursorLayer = new CursorLayer(this.content);\n    this.$horizScroll = false;\n    this.$vScroll = false;\n    this.scrollBar =\n        this.scrollBarV = new VScrollBar(this.container, this);\n    this.scrollBarH = new HScrollBar(this.container, this);\n    this.scrollBarV.on(\"scroll\", function (e) {\n        if (!_self.$scrollAnimation)\n            _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n    });\n    this.scrollBarH.on(\"scroll\", function (e) {\n        if (!_self.$scrollAnimation)\n            _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n    });\n    this.scrollTop = 0;\n    this.scrollLeft = 0;\n    this.cursorPos = {\n        row: 0,\n        column: 0\n    };\n    this.$fontMetrics = new FontMetrics(this.container);\n    this.$textLayer.$setFontMetrics(this.$fontMetrics);\n    this.$textLayer.on(\"changeCharacterSize\", function (e) {\n        _self.updateCharacterSize();\n        _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n        _self._signal(\"changeCharacterSize\", e);\n    });\n    this.$size = {\n        width: 0,\n        height: 0,\n        scrollerHeight: 0,\n        scrollerWidth: 0,\n        $dirty: true\n    };\n    this.layerConfig = {\n        width: 1,\n        padding: 0,\n        firstRow: 0,\n        firstRowScreen: 0,\n        lastRow: 0,\n        lineHeight: 0,\n        characterWidth: 0,\n        minHeight: 1,\n        maxHeight: 1,\n        offset: 0,\n        height: 1,\n        gutterOffset: 1\n    };\n    this.scrollMargin = {\n        left: 0,\n        right: 0,\n        top: 0,\n        bottom: 0,\n        v: 0,\n        h: 0\n    };\n    this.margin = {\n        left: 0,\n        right: 0,\n        top: 0,\n        bottom: 0,\n        v: 0,\n        h: 0\n    };\n    this.$keepTextAreaAtCursor = !useragent.isIOS;\n    this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView);\n    this.$loop.schedule(this.CHANGE_FULL);\n    this.updateCharacterSize();\n    this.setPadding(4);\n    config.resetOptions(this);\n    config._signal(\"renderer\", this);\n};\n(function () {\n    this.CHANGE_CURSOR = 1;\n    this.CHANGE_MARKER = 2;\n    this.CHANGE_GUTTER = 4;\n    this.CHANGE_SCROLL = 8;\n    this.CHANGE_LINES = 16;\n    this.CHANGE_TEXT = 32;\n    this.CHANGE_SIZE = 64;\n    this.CHANGE_MARKER_BACK = 128;\n    this.CHANGE_MARKER_FRONT = 256;\n    this.CHANGE_FULL = 512;\n    this.CHANGE_H_SCROLL = 1024;\n    oop.implement(this, EventEmitter);\n    this.updateCharacterSize = function () {\n        if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n            this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n            this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n        }\n        this.layerConfig.characterWidth =\n            this.characterWidth = this.$textLayer.getCharacterWidth();\n        this.layerConfig.lineHeight =\n            this.lineHeight = this.$textLayer.getLineHeight();\n        this.$updatePrintMargin();\n        dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n    };\n    this.setSession = function (session) {\n        if (this.session)\n            this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n        this.session = session;\n        if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n            session.setScrollTop(-this.scrollMargin.top);\n        this.$cursorLayer.setSession(session);\n        this.$markerBack.setSession(session);\n        this.$markerFront.setSession(session);\n        this.$gutterLayer.setSession(session);\n        this.$textLayer.setSession(session);\n        if (!session)\n            return;\n        this.$loop.schedule(this.CHANGE_FULL);\n        this.session.$setFontMetrics(this.$fontMetrics);\n        this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n        this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n        this.onChangeNewLineMode();\n        this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n    };\n    this.updateLines = function (firstRow, lastRow, force) {\n        if (lastRow === undefined)\n            lastRow = Infinity;\n        if (!this.$changedLines) {\n            this.$changedLines = {\n                firstRow: firstRow,\n                lastRow: lastRow\n            };\n        }\n        else {\n            if (this.$changedLines.firstRow > firstRow)\n                this.$changedLines.firstRow = firstRow;\n            if (this.$changedLines.lastRow < lastRow)\n                this.$changedLines.lastRow = lastRow;\n        }\n        if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n            if (force)\n                this.$changedLines.lastRow = this.layerConfig.lastRow;\n            else\n                return;\n        }\n        if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n            return;\n        this.$loop.schedule(this.CHANGE_LINES);\n    };\n    this.onChangeNewLineMode = function () {\n        this.$loop.schedule(this.CHANGE_TEXT);\n        this.$textLayer.$updateEolChar();\n        this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n    };\n    this.onChangeTabSize = function () {\n        this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n        this.$textLayer.onChangeTabSize();\n    };\n    this.updateText = function () {\n        this.$loop.schedule(this.CHANGE_TEXT);\n    };\n    this.updateFull = function (force) {\n        if (force)\n            this.$renderChanges(this.CHANGE_FULL, true);\n        else\n            this.$loop.schedule(this.CHANGE_FULL);\n    };\n    this.updateFontSize = function () {\n        this.$textLayer.checkForSizeChanges();\n    };\n    this.$changes = 0;\n    this.$updateSizeAsync = function () {\n        if (this.$loop.pending)\n            this.$size.$dirty = true;\n        else\n            this.onResize();\n    };\n    this.onResize = function (force, gutterWidth, width, height) {\n        if (this.resizing > 2)\n            return;\n        else if (this.resizing > 0)\n            this.resizing++;\n        else\n            this.resizing = force ? 1 : 0;\n        var el = this.container;\n        if (!height)\n            height = el.clientHeight || el.scrollHeight;\n        if (!width)\n            width = el.clientWidth || el.scrollWidth;\n        var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n        if (!this.$size.scrollerHeight || (!width && !height))\n            return this.resizing = 0;\n        if (force)\n            this.$gutterLayer.$padding = null;\n        if (force)\n            this.$renderChanges(changes | this.$changes, true);\n        else\n            this.$loop.schedule(changes | this.$changes);\n        if (this.resizing)\n            this.resizing = 0;\n        this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n    };\n    this.$updateCachedSize = function (force, gutterWidth, width, height) {\n        height -= (this.$extraHeight || 0);\n        var changes = 0;\n        var size = this.$size;\n        var oldSize = {\n            width: size.width,\n            height: size.height,\n            scrollerHeight: size.scrollerHeight,\n            scrollerWidth: size.scrollerWidth\n        };\n        if (height && (force || size.height != height)) {\n            size.height = height;\n            changes |= this.CHANGE_SIZE;\n            size.scrollerHeight = size.height;\n            if (this.$horizScroll)\n                size.scrollerHeight -= this.scrollBarH.getHeight();\n            this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n            changes = changes | this.CHANGE_SCROLL;\n        }\n        if (width && (force || size.width != width)) {\n            changes |= this.CHANGE_SIZE;\n            size.width = width;\n            if (gutterWidth == null)\n                gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n            this.gutterWidth = gutterWidth;\n            dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n            dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n            size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n            dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n            var right = this.scrollBarV.getWidth() + \"px\";\n            dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n            dom.setStyle(this.scroller.style, \"right\", right);\n            dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n            if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n                changes |= this.CHANGE_FULL;\n            }\n        }\n        size.$dirty = !width || !height;\n        if (changes)\n            this._signal(\"resize\", oldSize);\n        return changes;\n    };\n    this.onGutterResize = function (width) {\n        var gutterWidth = this.$showGutter ? width : 0;\n        if (gutterWidth != this.gutterWidth)\n            this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n        if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n            this.$loop.schedule(this.CHANGE_FULL);\n        }\n        else if (this.$size.$dirty) {\n            this.$loop.schedule(this.CHANGE_FULL);\n        }\n        else {\n            this.$computeLayerConfig();\n        }\n    };\n    this.adjustWrapLimit = function () {\n        var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n        var limit = Math.floor(availableWidth / this.characterWidth);\n        return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n    };\n    this.setAnimatedScroll = function (shouldAnimate) {\n        this.setOption(\"animatedScroll\", shouldAnimate);\n    };\n    this.getAnimatedScroll = function () {\n        return this.$animatedScroll;\n    };\n    this.setShowInvisibles = function (showInvisibles) {\n        this.setOption(\"showInvisibles\", showInvisibles);\n        this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n    };\n    this.getShowInvisibles = function () {\n        return this.getOption(\"showInvisibles\");\n    };\n    this.getDisplayIndentGuides = function () {\n        return this.getOption(\"displayIndentGuides\");\n    };\n    this.setDisplayIndentGuides = function (display) {\n        this.setOption(\"displayIndentGuides\", display);\n    };\n    this.setShowPrintMargin = function (showPrintMargin) {\n        this.setOption(\"showPrintMargin\", showPrintMargin);\n    };\n    this.getShowPrintMargin = function () {\n        return this.getOption(\"showPrintMargin\");\n    };\n    this.setPrintMarginColumn = function (showPrintMargin) {\n        this.setOption(\"printMarginColumn\", showPrintMargin);\n    };\n    this.getPrintMarginColumn = function () {\n        return this.getOption(\"printMarginColumn\");\n    };\n    this.getShowGutter = function () {\n        return this.getOption(\"showGutter\");\n    };\n    this.setShowGutter = function (show) {\n        return this.setOption(\"showGutter\", show);\n    };\n    this.getFadeFoldWidgets = function () {\n        return this.getOption(\"fadeFoldWidgets\");\n    };\n    this.setFadeFoldWidgets = function (show) {\n        this.setOption(\"fadeFoldWidgets\", show);\n    };\n    this.setHighlightGutterLine = function (shouldHighlight) {\n        this.setOption(\"highlightGutterLine\", shouldHighlight);\n    };\n    this.getHighlightGutterLine = function () {\n        return this.getOption(\"highlightGutterLine\");\n    };\n    this.$updatePrintMargin = function () {\n        if (!this.$showPrintMargin && !this.$printMarginEl)\n            return;\n        if (!this.$printMarginEl) {\n            var containerEl = dom.createElement(\"div\");\n            containerEl.className = \"ace_layer ace_print-margin-layer\";\n            this.$printMarginEl = dom.createElement(\"div\");\n            this.$printMarginEl.className = \"ace_print-margin\";\n            containerEl.appendChild(this.$printMarginEl);\n            this.content.insertBefore(containerEl, this.content.firstChild);\n        }\n        var style = this.$printMarginEl.style;\n        style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n        style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n        if (this.session && this.session.$wrap == -1)\n            this.adjustWrapLimit();\n    };\n    this.getContainerElement = function () {\n        return this.container;\n    };\n    this.getMouseEventTarget = function () {\n        return this.scroller;\n    };\n    this.getTextAreaContainer = function () {\n        return this.container;\n    };\n    this.$moveTextAreaToCursor = function () {\n        if (this.$isMousePressed)\n            return;\n        var style = this.textarea.style;\n        var composition = this.$composition;\n        if (!this.$keepTextAreaAtCursor && !composition) {\n            dom.translate(this.textarea, -100, 0);\n            return;\n        }\n        var pixelPos = this.$cursorLayer.$pixelPos;\n        if (!pixelPos)\n            return;\n        if (composition && composition.markerRange)\n            pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n        var config = this.layerConfig;\n        var posTop = pixelPos.top;\n        var posLeft = pixelPos.left;\n        posTop -= config.offset;\n        var h = composition && composition.useTextareaForIME ? this.lineHeight : HIDE_TEXTAREA ? 0 : 1;\n        if (posTop < 0 || posTop > config.height - h) {\n            dom.translate(this.textarea, 0, 0);\n            return;\n        }\n        var w = 1;\n        var maxTop = this.$size.height - h;\n        if (!composition) {\n            posTop += this.lineHeight;\n        }\n        else {\n            if (composition.useTextareaForIME) {\n                var val = this.textarea.value;\n                w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n            }\n            else {\n                posTop += this.lineHeight + 2;\n            }\n        }\n        posLeft -= this.scrollLeft;\n        if (posLeft > this.$size.scrollerWidth - w)\n            posLeft = this.$size.scrollerWidth - w;\n        posLeft += this.gutterWidth + this.margin.left;\n        dom.setStyle(style, \"height\", h + \"px\");\n        dom.setStyle(style, \"width\", w + \"px\");\n        dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n    };\n    this.getFirstVisibleRow = function () {\n        return this.layerConfig.firstRow;\n    };\n    this.getFirstFullyVisibleRow = function () {\n        return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n    };\n    this.getLastFullyVisibleRow = function () {\n        var config = this.layerConfig;\n        var lastRow = config.lastRow;\n        var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n        if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n            return lastRow - 1;\n        return lastRow;\n    };\n    this.getLastVisibleRow = function () {\n        return this.layerConfig.lastRow;\n    };\n    this.$padding = null;\n    this.setPadding = function (padding) {\n        this.$padding = padding;\n        this.$textLayer.setPadding(padding);\n        this.$cursorLayer.setPadding(padding);\n        this.$markerFront.setPadding(padding);\n        this.$markerBack.setPadding(padding);\n        this.$loop.schedule(this.CHANGE_FULL);\n        this.$updatePrintMargin();\n    };\n    this.setScrollMargin = function (top, bottom, left, right) {\n        var sm = this.scrollMargin;\n        sm.top = top | 0;\n        sm.bottom = bottom | 0;\n        sm.right = right | 0;\n        sm.left = left | 0;\n        sm.v = sm.top + sm.bottom;\n        sm.h = sm.left + sm.right;\n        if (sm.top && this.scrollTop <= 0 && this.session)\n            this.session.setScrollTop(-sm.top);\n        this.updateFull();\n    };\n    this.setMargin = function (top, bottom, left, right) {\n        var sm = this.margin;\n        sm.top = top | 0;\n        sm.bottom = bottom | 0;\n        sm.right = right | 0;\n        sm.left = left | 0;\n        sm.v = sm.top + sm.bottom;\n        sm.h = sm.left + sm.right;\n        this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n        this.updateFull();\n    };\n    this.getHScrollBarAlwaysVisible = function () {\n        return this.$hScrollBarAlwaysVisible;\n    };\n    this.setHScrollBarAlwaysVisible = function (alwaysVisible) {\n        this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n    };\n    this.getVScrollBarAlwaysVisible = function () {\n        return this.$vScrollBarAlwaysVisible;\n    };\n    this.setVScrollBarAlwaysVisible = function (alwaysVisible) {\n        this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n    };\n    this.$updateScrollBarV = function () {\n        var scrollHeight = this.layerConfig.maxHeight;\n        var scrollerHeight = this.$size.scrollerHeight;\n        if (!this.$maxLines && this.$scrollPastEnd) {\n            scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n            if (this.scrollTop > scrollHeight - scrollerHeight) {\n                scrollHeight = this.scrollTop + scrollerHeight;\n                this.scrollBarV.scrollTop = null;\n            }\n        }\n        this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n        this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n    };\n    this.$updateScrollBarH = function () {\n        this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n        this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n    };\n    this.$frozen = false;\n    this.freeze = function () {\n        this.$frozen = true;\n    };\n    this.unfreeze = function () {\n        this.$frozen = false;\n    };\n    this.$renderChanges = function (changes, force) {\n        if (this.$changes) {\n            changes |= this.$changes;\n            this.$changes = 0;\n        }\n        if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n            this.$changes |= changes;\n            return;\n        }\n        if (this.$size.$dirty) {\n            this.$changes |= changes;\n            return this.onResize(true);\n        }\n        if (!this.lineHeight) {\n            this.$textLayer.checkForSizeChanges();\n        }\n        this._signal(\"beforeRender\", changes);\n        if (this.session && this.session.$bidiHandler)\n            this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n        var config = this.layerConfig;\n        if (changes & this.CHANGE_FULL ||\n            changes & this.CHANGE_SIZE ||\n            changes & this.CHANGE_TEXT ||\n            changes & this.CHANGE_LINES ||\n            changes & this.CHANGE_SCROLL ||\n            changes & this.CHANGE_H_SCROLL) {\n            changes |= this.$computeLayerConfig() | this.$loop.clear();\n            if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n                var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight;\n                if (st > 0) {\n                    this.scrollTop = st;\n                    changes = changes | this.CHANGE_SCROLL;\n                    changes |= this.$computeLayerConfig() | this.$loop.clear();\n                }\n            }\n            config = this.layerConfig;\n            this.$updateScrollBarV();\n            if (changes & this.CHANGE_H_SCROLL)\n                this.$updateScrollBarH();\n            dom.translate(this.content, -this.scrollLeft, -config.offset);\n            var width = config.width + 2 * this.$padding + \"px\";\n            var height = config.minHeight + \"px\";\n            dom.setStyle(this.content.style, \"width\", width);\n            dom.setStyle(this.content.style, \"height\", height);\n        }\n        if (changes & this.CHANGE_H_SCROLL) {\n            dom.translate(this.content, -this.scrollLeft, -config.offset);\n            this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller\" : \"ace_scroller ace_scroll-left\";\n        }\n        if (changes & this.CHANGE_FULL) {\n            this.$changedLines = null;\n            this.$textLayer.update(config);\n            if (this.$showGutter)\n                this.$gutterLayer.update(config);\n            this.$markerBack.update(config);\n            this.$markerFront.update(config);\n            this.$cursorLayer.update(config);\n            this.$moveTextAreaToCursor();\n            this._signal(\"afterRender\", changes);\n            return;\n        }\n        if (changes & this.CHANGE_SCROLL) {\n            this.$changedLines = null;\n            if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n                this.$textLayer.update(config);\n            else\n                this.$textLayer.scrollLines(config);\n            if (this.$showGutter) {\n                if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n                    this.$gutterLayer.update(config);\n                else\n                    this.$gutterLayer.scrollLines(config);\n            }\n            this.$markerBack.update(config);\n            this.$markerFront.update(config);\n            this.$cursorLayer.update(config);\n            this.$moveTextAreaToCursor();\n            this._signal(\"afterRender\", changes);\n            return;\n        }\n        if (changes & this.CHANGE_TEXT) {\n            this.$changedLines = null;\n            this.$textLayer.update(config);\n            if (this.$showGutter)\n                this.$gutterLayer.update(config);\n        }\n        else if (changes & this.CHANGE_LINES) {\n            if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n                this.$gutterLayer.update(config);\n        }\n        else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n            if (this.$showGutter)\n                this.$gutterLayer.update(config);\n        }\n        else if (changes & this.CHANGE_CURSOR) {\n            if (this.$highlightGutterLine)\n                this.$gutterLayer.updateLineHighlight(config);\n        }\n        if (changes & this.CHANGE_CURSOR) {\n            this.$cursorLayer.update(config);\n            this.$moveTextAreaToCursor();\n        }\n        if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n            this.$markerFront.update(config);\n        }\n        if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n            this.$markerBack.update(config);\n        }\n        this._signal(\"afterRender\", changes);\n    };\n    this.$autosize = function () {\n        var height = this.session.getScreenLength() * this.lineHeight;\n        var maxHeight = this.$maxLines * this.lineHeight;\n        var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0);\n        if (this.$horizScroll)\n            desiredHeight += this.scrollBarH.getHeight();\n        if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n            desiredHeight = this.$maxPixelHeight;\n        var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n        var vScroll = !hideScrollbars && height > maxHeight;\n        if (desiredHeight != this.desiredHeight ||\n            this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n            if (vScroll != this.$vScroll) {\n                this.$vScroll = vScroll;\n                this.scrollBarV.setVisible(vScroll);\n            }\n            var w = this.container.clientWidth;\n            this.container.style.height = desiredHeight + \"px\";\n            this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n            this.desiredHeight = desiredHeight;\n            this._signal(\"autosize\");\n        }\n    };\n    this.$computeLayerConfig = function () {\n        var session = this.session;\n        var size = this.$size;\n        var hideScrollbars = size.height <= 2 * this.lineHeight;\n        var screenLines = this.session.getScreenLength();\n        var maxHeight = screenLines * this.lineHeight;\n        var longestLine = this.$getLongestLine();\n        var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n            size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n        var hScrollChanged = this.$horizScroll !== horizScroll;\n        if (hScrollChanged) {\n            this.$horizScroll = horizScroll;\n            this.scrollBarH.setVisible(horizScroll);\n        }\n        var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n        if (this.$maxLines && this.lineHeight > 1)\n            this.$autosize();\n        var minHeight = size.scrollerHeight + this.lineHeight;\n        var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n            ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n            : 0;\n        maxHeight += scrollPastEnd;\n        var sm = this.scrollMargin;\n        this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n        this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n        var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n            size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n        var vScrollChanged = vScrollBefore !== vScroll;\n        if (vScrollChanged) {\n            this.$vScroll = vScroll;\n            this.scrollBarV.setVisible(vScroll);\n        }\n        var offset = this.scrollTop % this.lineHeight;\n        var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n        var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n        var lastRow = firstRow + lineCount;\n        var firstRowScreen, firstRowHeight;\n        var lineHeight = this.lineHeight;\n        firstRow = session.screenToDocumentRow(firstRow, 0);\n        var foldLine = session.getFoldLine(firstRow);\n        if (foldLine) {\n            firstRow = foldLine.start.row;\n        }\n        firstRowScreen = session.documentToScreenRow(firstRow, 0);\n        firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n        lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n        minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n            firstRowHeight;\n        offset = this.scrollTop - firstRowScreen * lineHeight;\n        var changes = 0;\n        if (this.layerConfig.width != longestLine || hScrollChanged)\n            changes = this.CHANGE_H_SCROLL;\n        if (hScrollChanged || vScrollChanged) {\n            changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n            this._signal(\"scrollbarVisibilityChanged\");\n            if (vScrollChanged)\n                longestLine = this.$getLongestLine();\n        }\n        this.layerConfig = {\n            width: longestLine,\n            padding: this.$padding,\n            firstRow: firstRow,\n            firstRowScreen: firstRowScreen,\n            lastRow: lastRow,\n            lineHeight: lineHeight,\n            characterWidth: this.characterWidth,\n            minHeight: minHeight,\n            maxHeight: maxHeight,\n            offset: offset,\n            gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n            height: this.$size.scrollerHeight\n        };\n        if (this.session.$bidiHandler)\n            this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n        return changes;\n    };\n    this.$updateLines = function () {\n        if (!this.$changedLines)\n            return;\n        var firstRow = this.$changedLines.firstRow;\n        var lastRow = this.$changedLines.lastRow;\n        this.$changedLines = null;\n        var layerConfig = this.layerConfig;\n        if (firstRow > layerConfig.lastRow + 1) {\n            return;\n        }\n        if (lastRow < layerConfig.firstRow) {\n            return;\n        }\n        if (lastRow === Infinity) {\n            if (this.$showGutter)\n                this.$gutterLayer.update(layerConfig);\n            this.$textLayer.update(layerConfig);\n            return;\n        }\n        this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n        return true;\n    };\n    this.$getLongestLine = function () {\n        var charCount = this.session.getScreenWidth();\n        if (this.showInvisibles && !this.session.$useWrapMode)\n            charCount += 1;\n        if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n            charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n        return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n    };\n    this.updateFrontMarkers = function () {\n        this.$markerFront.setMarkers(this.session.getMarkers(true));\n        this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n    };\n    this.updateBackMarkers = function () {\n        this.$markerBack.setMarkers(this.session.getMarkers());\n        this.$loop.schedule(this.CHANGE_MARKER_BACK);\n    };\n    this.addGutterDecoration = function (row, className) {\n        this.$gutterLayer.addGutterDecoration(row, className);\n    };\n    this.removeGutterDecoration = function (row, className) {\n        this.$gutterLayer.removeGutterDecoration(row, className);\n    };\n    this.updateBreakpoints = function (rows) {\n        this.$loop.schedule(this.CHANGE_GUTTER);\n    };\n    this.setAnnotations = function (annotations) {\n        this.$gutterLayer.setAnnotations(annotations);\n        this.$loop.schedule(this.CHANGE_GUTTER);\n    };\n    this.updateCursor = function () {\n        this.$loop.schedule(this.CHANGE_CURSOR);\n    };\n    this.hideCursor = function () {\n        this.$cursorLayer.hideCursor();\n    };\n    this.showCursor = function () {\n        this.$cursorLayer.showCursor();\n    };\n    this.scrollSelectionIntoView = function (anchor, lead, offset) {\n        this.scrollCursorIntoView(anchor, offset);\n        this.scrollCursorIntoView(lead, offset);\n    };\n    this.scrollCursorIntoView = function (cursor, offset, $viewMargin) {\n        if (this.$size.scrollerHeight === 0)\n            return;\n        var pos = this.$cursorLayer.getPixelPosition(cursor);\n        var left = pos.left;\n        var top = pos.top;\n        var topMargin = $viewMargin && $viewMargin.top || 0;\n        var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n        var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n        if (scrollTop + topMargin > top) {\n            if (offset && scrollTop + topMargin > top + this.lineHeight)\n                top -= offset * this.$size.scrollerHeight;\n            if (top === 0)\n                top = -this.scrollMargin.top;\n            this.session.setScrollTop(top);\n        }\n        else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) {\n            if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight)\n                top += offset * this.$size.scrollerHeight;\n            this.session.setScrollTop(top + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n        }\n        var scrollLeft = this.scrollLeft;\n        if (scrollLeft > left) {\n            if (left < this.$padding + 2 * this.layerConfig.characterWidth)\n                left = -this.scrollMargin.left;\n            this.session.setScrollLeft(left);\n        }\n        else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {\n            this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));\n        }\n        else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) {\n            this.session.setScrollLeft(0);\n        }\n    };\n    this.getScrollTop = function () {\n        return this.session.getScrollTop();\n    };\n    this.getScrollLeft = function () {\n        return this.session.getScrollLeft();\n    };\n    this.getScrollTopRow = function () {\n        return this.scrollTop / this.lineHeight;\n    };\n    this.getScrollBottomRow = function () {\n        return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n    };\n    this.scrollToRow = function (row) {\n        this.session.setScrollTop(row * this.lineHeight);\n    };\n    this.alignCursor = function (cursor, alignment) {\n        if (typeof cursor == \"number\")\n            cursor = { row: cursor, column: 0 };\n        var pos = this.$cursorLayer.getPixelPosition(cursor);\n        var h = this.$size.scrollerHeight - this.lineHeight;\n        var offset = pos.top - h * (alignment || 0);\n        this.session.setScrollTop(offset);\n        return offset;\n    };\n    this.STEPS = 8;\n    this.$calcSteps = function (fromValue, toValue) {\n        var i = 0;\n        var l = this.STEPS;\n        var steps = [];\n        var func = function (t, x_min, dx) {\n            return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n        };\n        for (i = 0; i < l; ++i)\n            steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n        return steps;\n    };\n    this.scrollToLine = function (line, center, animate, callback) {\n        var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 });\n        var offset = pos.top;\n        if (center)\n            offset -= this.$size.scrollerHeight / 2;\n        var initialScroll = this.scrollTop;\n        this.session.setScrollTop(offset);\n        if (animate !== false)\n            this.animateScrolling(initialScroll, callback);\n    };\n    this.animateScrolling = function (fromValue, callback) {\n        var toValue = this.scrollTop;\n        if (!this.$animatedScroll)\n            return;\n        var _self = this;\n        if (fromValue == toValue)\n            return;\n        if (this.$scrollAnimation) {\n            var oldSteps = this.$scrollAnimation.steps;\n            if (oldSteps.length) {\n                fromValue = oldSteps[0];\n                if (fromValue == toValue)\n                    return;\n            }\n        }\n        var steps = _self.$calcSteps(fromValue, toValue);\n        this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps };\n        clearInterval(this.$timer);\n        _self.session.setScrollTop(steps.shift());\n        _self.session.$scrollTop = toValue;\n        this.$timer = setInterval(function () {\n            if (!_self.session)\n                return clearInterval(_self.$timer);\n            if (steps.length) {\n                _self.session.setScrollTop(steps.shift());\n                _self.session.$scrollTop = toValue;\n            }\n            else if (toValue != null) {\n                _self.session.$scrollTop = -1;\n                _self.session.setScrollTop(toValue);\n                toValue = null;\n            }\n            else {\n                _self.$timer = clearInterval(_self.$timer);\n                _self.$scrollAnimation = null;\n                callback && callback();\n            }\n        }, 10);\n    };\n    this.scrollToY = function (scrollTop) {\n        if (this.scrollTop !== scrollTop) {\n            this.$loop.schedule(this.CHANGE_SCROLL);\n            this.scrollTop = scrollTop;\n        }\n    };\n    this.scrollToX = function (scrollLeft) {\n        if (this.scrollLeft !== scrollLeft)\n            this.scrollLeft = scrollLeft;\n        this.$loop.schedule(this.CHANGE_H_SCROLL);\n    };\n    this.scrollTo = function (x, y) {\n        this.session.setScrollTop(y);\n        this.session.setScrollLeft(x);\n    };\n    this.scrollBy = function (deltaX, deltaY) {\n        deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n        deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n    };\n    this.isScrollableBy = function (deltaX, deltaY) {\n        if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n            return true;\n        if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n            - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n            return true;\n        if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n            return true;\n        if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n            - this.layerConfig.width < -1 + this.scrollMargin.right)\n            return true;\n    };\n    this.pixelToScreenCoordinates = function (x, y) {\n        var canvasPos;\n        if (this.$hasCssTransforms) {\n            canvasPos = { top: 0, left: 0 };\n            var p = this.$fontMetrics.transformCoordinates([x, y]);\n            x = p[1] - this.gutterWidth - this.margin.left;\n            y = p[0];\n        }\n        else {\n            canvasPos = this.scroller.getBoundingClientRect();\n        }\n        var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n        var offset = offsetX / this.characterWidth;\n        var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n        var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n        return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX };\n    };\n    this.screenToTextCoordinates = function (x, y) {\n        var canvasPos;\n        if (this.$hasCssTransforms) {\n            canvasPos = { top: 0, left: 0 };\n            var p = this.$fontMetrics.transformCoordinates([x, y]);\n            x = p[1] - this.gutterWidth - this.margin.left;\n            y = p[0];\n        }\n        else {\n            canvasPos = this.scroller.getBoundingClientRect();\n        }\n        var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n        var offset = offsetX / this.characterWidth;\n        var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n        var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n        return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n    };\n    this.textToScreenCoordinates = function (row, column) {\n        var canvasPos = this.scroller.getBoundingClientRect();\n        var pos = this.session.documentToScreenPosition(row, column);\n        var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n            ? this.session.$bidiHandler.getPosLeft(pos.column)\n            : Math.round(pos.column * this.characterWidth));\n        var y = pos.row * this.lineHeight;\n        return {\n            pageX: canvasPos.left + x - this.scrollLeft,\n            pageY: canvasPos.top + y - this.scrollTop\n        };\n    };\n    this.visualizeFocus = function () {\n        dom.addCssClass(this.container, \"ace_focus\");\n    };\n    this.visualizeBlur = function () {\n        dom.removeCssClass(this.container, \"ace_focus\");\n    };\n    this.showComposition = function (composition) {\n        this.$composition = composition;\n        if (!composition.cssText) {\n            composition.cssText = this.textarea.style.cssText;\n        }\n        if (composition.useTextareaForIME == undefined)\n            composition.useTextareaForIME = this.$useTextareaForIME;\n        if (this.$useTextareaForIME) {\n            dom.addCssClass(this.textarea, \"ace_composition\");\n            this.textarea.style.cssText = \"\";\n            this.$moveTextAreaToCursor();\n            this.$cursorLayer.element.style.display = \"none\";\n        }\n        else {\n            composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n        }\n    };\n    this.setCompositionText = function (text) {\n        var cursor = this.session.selection.cursor;\n        this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n        this.$moveTextAreaToCursor();\n    };\n    this.hideComposition = function () {\n        if (!this.$composition)\n            return;\n        if (this.$composition.markerId)\n            this.session.removeMarker(this.$composition.markerId);\n        dom.removeCssClass(this.textarea, \"ace_composition\");\n        this.textarea.style.cssText = this.$composition.cssText;\n        var cursor = this.session.selection.cursor;\n        this.removeExtraToken(cursor.row, cursor.column);\n        this.$composition = null;\n        this.$cursorLayer.element.style.display = \"\";\n    };\n    this.addToken = function (text, type, row, column) {\n        var session = this.session;\n        session.bgTokenizer.lines[row] = null;\n        var newToken = { type: type, value: text };\n        var tokens = session.getTokens(row);\n        if (column == null) {\n            tokens.push(newToken);\n        }\n        else {\n            var l = 0;\n            for (var i = 0; i < tokens.length; i++) {\n                var token = tokens[i];\n                l += token.value.length;\n                if (column <= l) {\n                    var diff = token.value.length - (l - column);\n                    var before = token.value.slice(0, diff);\n                    var after = token.value.slice(diff);\n                    tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after });\n                    break;\n                }\n            }\n        }\n        this.updateLines(row, row);\n    };\n    this.removeExtraToken = function (row, column) {\n        this.updateLines(row, row);\n    };\n    this.setTheme = function (theme, cb) {\n        var _self = this;\n        this.$themeId = theme;\n        _self._dispatchEvent('themeChange', { theme: theme });\n        if (!theme || typeof theme == \"string\") {\n            var moduleName = theme || this.$options.theme.initialValue;\n            config.loadModule([\"theme\", moduleName], afterLoad);\n        }\n        else {\n            afterLoad(theme);\n        }\n        function afterLoad(module) {\n            if (_self.$themeId != theme)\n                return cb && cb();\n            if (!module || !module.cssClass)\n                throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n            if (module.$id)\n                _self.$themeId = module.$id;\n            dom.importCssString(module.cssText, module.cssClass, _self.container);\n            if (_self.theme)\n                dom.removeCssClass(_self.container, _self.theme.cssClass);\n            var padding = \"padding\" in module ? module.padding\n                : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n            if (_self.$padding && padding != _self.$padding)\n                _self.setPadding(padding);\n            _self.$theme = module.cssClass;\n            _self.theme = module;\n            dom.addCssClass(_self.container, module.cssClass);\n            dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n            if (_self.$size) {\n                _self.$size.width = 0;\n                _self.$updateSizeAsync();\n            }\n            _self._dispatchEvent('themeLoaded', { theme: module });\n            cb && cb();\n        }\n    };\n    this.getTheme = function () {\n        return this.$themeId;\n    };\n    this.setStyle = function (style, include) {\n        dom.setCssClass(this.container, style, include !== false);\n    };\n    this.unsetStyle = function (style) {\n        dom.removeCssClass(this.container, style);\n    };\n    this.setCursorStyle = function (style) {\n        dom.setStyle(this.scroller.style, \"cursor\", style);\n    };\n    this.setMouseCursor = function (cursorStyle) {\n        dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n    };\n    this.attachToShadowRoot = function () {\n        dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n    };\n    this.destroy = function () {\n        this.freeze();\n        this.$fontMetrics.destroy();\n        this.$cursorLayer.destroy();\n        this.removeAllListeners();\n        this.container.textContent = \"\";\n    };\n}).call(VirtualRenderer.prototype);\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n    animatedScroll: { initialValue: false },\n    showInvisibles: {\n        set: function (value) {\n            if (this.$textLayer.setShowInvisibles(value))\n                this.$loop.schedule(this.CHANGE_TEXT);\n        },\n        initialValue: false\n    },\n    showPrintMargin: {\n        set: function () { this.$updatePrintMargin(); },\n        initialValue: true\n    },\n    printMarginColumn: {\n        set: function () { this.$updatePrintMargin(); },\n        initialValue: 80\n    },\n    printMargin: {\n        set: function (val) {\n            if (typeof val == \"number\")\n                this.$printMarginColumn = val;\n            this.$showPrintMargin = !!val;\n            this.$updatePrintMargin();\n        },\n        get: function () {\n            return this.$showPrintMargin && this.$printMarginColumn;\n        }\n    },\n    showGutter: {\n        set: function (show) {\n            this.$gutter.style.display = show ? \"block\" : \"none\";\n            this.$loop.schedule(this.CHANGE_FULL);\n            this.onGutterResize();\n        },\n        initialValue: true\n    },\n    fadeFoldWidgets: {\n        set: function (show) {\n            dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n        },\n        initialValue: false\n    },\n    showFoldWidgets: {\n        set: function (show) {\n            this.$gutterLayer.setShowFoldWidgets(show);\n            this.$loop.schedule(this.CHANGE_GUTTER);\n        },\n        initialValue: true\n    },\n    displayIndentGuides: {\n        set: function (show) {\n            if (this.$textLayer.setDisplayIndentGuides(show))\n                this.$loop.schedule(this.CHANGE_TEXT);\n        },\n        initialValue: true\n    },\n    highlightGutterLine: {\n        set: function (shouldHighlight) {\n            this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n            this.$loop.schedule(this.CHANGE_GUTTER);\n        },\n        initialValue: true\n    },\n    hScrollBarAlwaysVisible: {\n        set: function (val) {\n            if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n                this.$loop.schedule(this.CHANGE_SCROLL);\n        },\n        initialValue: false\n    },\n    vScrollBarAlwaysVisible: {\n        set: function (val) {\n            if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n                this.$loop.schedule(this.CHANGE_SCROLL);\n        },\n        initialValue: false\n    },\n    fontSize: {\n        set: function (size) {\n            if (typeof size == \"number\")\n                size = size + \"px\";\n            this.container.style.fontSize = size;\n            this.updateFontSize();\n        },\n        initialValue: 12\n    },\n    fontFamily: {\n        set: function (name) {\n            this.container.style.fontFamily = name;\n            this.updateFontSize();\n        }\n    },\n    maxLines: {\n        set: function (val) {\n            this.updateFull();\n        }\n    },\n    minLines: {\n        set: function (val) {\n            if (!(this.$minLines < 0x1ffffffffffff))\n                this.$minLines = 0;\n            this.updateFull();\n        }\n    },\n    maxPixelHeight: {\n        set: function (val) {\n            this.updateFull();\n        },\n        initialValue: 0\n    },\n    scrollPastEnd: {\n        set: function (val) {\n            val = +val || 0;\n            if (this.$scrollPastEnd == val)\n                return;\n            this.$scrollPastEnd = val;\n            this.$loop.schedule(this.CHANGE_SCROLL);\n        },\n        initialValue: 0,\n        handlesSet: true\n    },\n    fixedWidthGutter: {\n        set: function (val) {\n            this.$gutterLayer.$fixedWidth = !!val;\n            this.$loop.schedule(this.CHANGE_GUTTER);\n        }\n    },\n    theme: {\n        set: function (val) { this.setTheme(val); },\n        get: function () { return this.$themeId || this.theme; },\n        initialValue: \"./theme/textmate\",\n        handlesSet: true\n    },\n    hasCssTransforms: {},\n    useTextareaForIME: {\n        initialValue: !useragent.isMobile && !useragent.isIE\n    }\n});\nexports.VirtualRenderer = VirtualRenderer;\n\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n    var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n    try {\n        return new Blob([script], {\"type\": \"application/javascript\"});\n    } catch (e) { // Backwards-compatibility\n        var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n        var blobBuilder = new BlobBuilder();\n        blobBuilder.append(script);\n        return blobBuilder.getBlob(\"application/javascript\");\n    }\n}\n\nfunction createWorker(workerUrl) {\n    if (typeof Worker == \"undefined\")\n        return { postMessage: function() {}, terminate: function() {} };\n    if (config.get(\"loadWorkerFromBlob\")) {\n        var blob = $workerBlob(workerUrl);\n        var URL = window.URL || window.webkitURL;\n        var blobURL = URL.createObjectURL(blob);\n        return new Worker(blobURL);\n    }\n    return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n    if (!worker.postMessage)\n        worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n    this.$worker = worker;\n    this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n    this.changeListener = this.changeListener.bind(this);\n    this.onMessage = this.onMessage.bind(this);\n\n    this.callbackId = 1;\n    this.callbacks = {};\n\n    this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n    oop.implement(this, EventEmitter);\n\n    this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n        if (require.nameToUrl && !require.toUrl)\n            require.toUrl = require.nameToUrl;\n\n        if (config.get(\"packaged\") || !require.toUrl) {\n            workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n        } else {\n            var normalizePath = this.$normalizePath;\n            workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n            var tlns = {};\n            topLevelNamespaces.forEach(function(ns) {\n                tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n            });\n        }\n\n        this.$worker = createWorker(workerUrl);\n        if (importScripts) {\n            this.send(\"importScripts\", importScripts);\n        }\n        this.$worker.postMessage({\n            init : true,\n            tlns : tlns,\n            module : mod,\n            classname : classname\n        });\n        return this.$worker;\n    };\n\n    this.onMessage = function(e) {\n        var msg = e.data;\n        switch (msg.type) {\n            case \"event\":\n                this._signal(msg.name, {data: msg.data});\n                break;\n            case \"call\":\n                var callback = this.callbacks[msg.id];\n                if (callback) {\n                    callback(msg.data);\n                    delete this.callbacks[msg.id];\n                }\n                break;\n            case \"error\":\n                this.reportError(msg.data);\n                break;\n            case \"log\":\n                window.console && console.log && console.log.apply(console, msg.data);\n                break;\n        }\n    };\n    \n    this.reportError = function(err) {\n        window.console && console.error && console.error(err);\n    };\n\n    this.$normalizePath = function(path) {\n        return net.qualifyURL(path);\n    };\n\n    this.terminate = function() {\n        this._signal(\"terminate\", {});\n        this.deltaQueue = null;\n        this.$worker.terminate();\n        this.$worker = null;\n        if (this.$doc)\n            this.$doc.off(\"change\", this.changeListener);\n        this.$doc = null;\n    };\n\n    this.send = function(cmd, args) {\n        this.$worker.postMessage({command: cmd, args: args});\n    };\n\n    this.call = function(cmd, args, callback) {\n        if (callback) {\n            var id = this.callbackId++;\n            this.callbacks[id] = callback;\n            args.push(id);\n        }\n        this.send(cmd, args);\n    };\n\n    this.emit = function(event, data) {\n        try {\n            if (data.data && data.data.err)\n                data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n                this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}});\n        }\n        catch(ex) {\n            console.error(ex.stack);\n        }\n    };\n\n    this.attachToDocument = function(doc) {\n        if (this.$doc)\n            this.terminate();\n\n        this.$doc = doc;\n        this.call(\"setValue\", [doc.getValue()]);\n        doc.on(\"change\", this.changeListener, true);\n    };\n\n    this.changeListener = function(delta) {\n        if (!this.deltaQueue) {\n            this.deltaQueue = [];\n            setTimeout(this.$sendDeltaQueue, 0);\n        }\n        if (delta.action == \"insert\")\n            this.deltaQueue.push(delta.start, delta.lines);\n        else\n            this.deltaQueue.push(delta.start, delta.end);\n    };\n\n    this.$sendDeltaQueue = function() {\n        var q = this.deltaQueue;\n        if (!q) return;\n        this.deltaQueue = null;\n        if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n            this.call(\"setValue\", [this.$doc.getValue()]);\n        } else\n            this.emit(\"change\", {data: q});\n    };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n    var main = null;\n    var emitSync = false;\n    var sender = Object.create(EventEmitter);\n\n    var messageBuffer = [];\n    var workerClient = new WorkerClient({\n        messageBuffer: messageBuffer,\n        terminate: function() {},\n        postMessage: function(e) {\n            messageBuffer.push(e);\n            if (!main) return;\n            if (emitSync)\n                setTimeout(processNext);\n            else\n                processNext();\n        }\n    });\n\n    workerClient.setEmitSync = function(val) { emitSync = val; };\n\n    var processNext = function() {\n        var msg = messageBuffer.shift();\n        if (msg.command)\n            main[msg.command].apply(main, msg.args);\n        else if (msg.event)\n            sender._signal(msg.event, msg.data);\n    };\n\n    sender.postMessage = function(msg) {\n        workerClient.onMessage({data: msg});\n    };\n    sender.callback = function(data, callbackId) {\n        this.postMessage({type: \"call\", id: callbackId, data: data});\n    };\n    sender.emit = function(name, data) {\n        this.postMessage({type: \"event\", name: name, data: data});\n    };\n\n    config.loadModule([\"worker\", mod], function(Main) {\n        main = new Main[classname](sender);\n        while (messageBuffer.length)\n            processNext();\n    });\n\n    return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\nvar PlaceHolder = function (session, length, pos, others, mainClass, othersClass) {\n    var _self = this;\n    this.length = length;\n    this.session = session;\n    this.doc = session.getDocument();\n    this.mainClass = mainClass;\n    this.othersClass = othersClass;\n    this.$onUpdate = this.onUpdate.bind(this);\n    this.doc.on(\"change\", this.$onUpdate, true);\n    this.$others = others;\n    this.$onCursorChange = function () {\n        setTimeout(function () {\n            _self.onCursorChange();\n        });\n    };\n    this.$pos = pos;\n    var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || { length: -1 };\n    this.$undoStackDepth = undoStack.length;\n    this.setup();\n    session.selection.on(\"changeCursor\", this.$onCursorChange);\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.setup = function () {\n        var _self = this;\n        var doc = this.doc;\n        var session = this.session;\n        this.selectionBefore = session.selection.toJSON();\n        if (session.selection.inMultiSelectMode)\n            session.selection.toSingleRange();\n        this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n        var pos = this.pos;\n        pos.$insertRight = true;\n        pos.detach();\n        pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n        this.others = [];\n        this.$others.forEach(function (other) {\n            var anchor = doc.createAnchor(other.row, other.column);\n            anchor.$insertRight = true;\n            anchor.detach();\n            _self.others.push(anchor);\n        });\n        session.setUndoSelect(false);\n    };\n    this.showOtherMarkers = function () {\n        if (this.othersActive)\n            return;\n        var session = this.session;\n        var _self = this;\n        this.othersActive = true;\n        this.others.forEach(function (anchor) {\n            anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false);\n        });\n    };\n    this.hideOtherMarkers = function () {\n        if (!this.othersActive)\n            return;\n        this.othersActive = false;\n        for (var i = 0; i < this.others.length; i++) {\n            this.session.removeMarker(this.others[i].markerId);\n        }\n    };\n    this.onUpdate = function (delta) {\n        if (this.$updating)\n            return this.updateAnchors(delta);\n        var range = delta;\n        if (range.start.row !== range.end.row)\n            return;\n        if (range.start.row !== this.pos.row)\n            return;\n        this.$updating = true;\n        var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n        var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n        var distanceFromStart = range.start.column - this.pos.column;\n        this.updateAnchors(delta);\n        if (inMainRange)\n            this.length += lengthDiff;\n        if (inMainRange && !this.session.$fromUndo) {\n            if (delta.action === 'insert') {\n                for (var i = this.others.length - 1; i >= 0; i--) {\n                    var otherPos = this.others[i];\n                    var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n                    this.doc.insertMergedLines(newPos, delta.lines);\n                }\n            }\n            else if (delta.action === 'remove') {\n                for (var i = this.others.length - 1; i >= 0; i--) {\n                    var otherPos = this.others[i];\n                    var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart };\n                    this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n                }\n            }\n        }\n        this.$updating = false;\n        this.updateMarkers();\n    };\n    this.updateAnchors = function (delta) {\n        this.pos.onChange(delta);\n        for (var i = this.others.length; i--;)\n            this.others[i].onChange(delta);\n        this.updateMarkers();\n    };\n    this.updateMarkers = function () {\n        if (this.$updating)\n            return;\n        var _self = this;\n        var session = this.session;\n        var updateMarker = function (pos, className) {\n            session.removeMarker(pos.markerId);\n            pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false);\n        };\n        updateMarker(this.pos, this.mainClass);\n        for (var i = this.others.length; i--;)\n            updateMarker(this.others[i], this.othersClass);\n    };\n    this.onCursorChange = function (event) {\n        if (this.$updating || !this.session)\n            return;\n        var pos = this.session.selection.getCursor();\n        if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n            this.showOtherMarkers();\n            this._emit(\"cursorEnter\", event);\n        }\n        else {\n            this.hideOtherMarkers();\n            this._emit(\"cursorLeave\", event);\n        }\n    };\n    this.detach = function () {\n        this.session.removeMarker(this.pos && this.pos.markerId);\n        this.hideOtherMarkers();\n        this.doc.off(\"change\", this.$onUpdate);\n        this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n        this.session.setUndoSelect(true);\n        this.session = null;\n    };\n    this.cancel = function () {\n        if (this.$undoStackDepth === -1)\n            return;\n        var undoManager = this.session.getUndoManager();\n        var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n        for (var i = 0; i < undosRequired; i++) {\n            undoManager.undo(this.session, true);\n        }\n        if (this.selectionBefore)\n            this.session.selection.fromJSON(this.selectionBefore);\n    };\n}).call(PlaceHolder.prototype);\nexports.PlaceHolder = PlaceHolder;\n\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module){var event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n    return p1.row == p2.row && p1.column == p2.column;\n}\nfunction onMouseDown(e) {\n    var ev = e.domEvent;\n    var alt = ev.altKey;\n    var shift = ev.shiftKey;\n    var ctrl = ev.ctrlKey;\n    var accel = e.getAccelKey();\n    var button = e.getButton();\n    if (ctrl && useragent.isMac)\n        button = ev.button;\n    if (e.editor.inMultiSelectMode && button == 2) {\n        e.editor.textInput.onContextMenu(e.domEvent);\n        return;\n    }\n    if (!ctrl && !alt && !accel) {\n        if (button === 0 && e.editor.inMultiSelectMode)\n            e.editor.exitMultiSelectMode();\n        return;\n    }\n    if (button !== 0)\n        return;\n    var editor = e.editor;\n    var selection = editor.selection;\n    var isMultiSelect = editor.inMultiSelectMode;\n    var pos = e.getDocumentPosition();\n    var cursor = selection.getCursor();\n    var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n    var mouseX = e.x, mouseY = e.y;\n    var onMouseSelection = function (e) {\n        mouseX = e.clientX;\n        mouseY = e.clientY;\n    };\n    var session = editor.session;\n    var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n    var screenCursor = screenAnchor;\n    var selectionMode;\n    if (editor.$mouseHandler.$enableJumpToDef) {\n        if (ctrl && alt || accel && alt)\n            selectionMode = shift ? \"block\" : \"add\";\n        else if (alt && editor.$blockSelectEnabled)\n            selectionMode = \"block\";\n    }\n    else {\n        if (accel && !alt) {\n            selectionMode = \"add\";\n            if (!isMultiSelect && shift)\n                return;\n        }\n        else if (alt && editor.$blockSelectEnabled) {\n            selectionMode = \"block\";\n        }\n    }\n    if (selectionMode && useragent.isMac && ev.ctrlKey) {\n        editor.$mouseHandler.cancelContextMenu();\n    }\n    if (selectionMode == \"add\") {\n        if (!isMultiSelect && inSelection)\n            return; // dragging\n        if (!isMultiSelect) {\n            var range = selection.toOrientedRange();\n            editor.addSelectionMarker(range);\n        }\n        var oldRange = selection.rangeList.rangeAtPoint(pos);\n        editor.inVirtualSelectionMode = true;\n        if (shift) {\n            oldRange = null;\n            range = selection.ranges[0] || range;\n            editor.removeSelectionMarker(range);\n        }\n        editor.once(\"mouseup\", function () {\n            var tmpSel = selection.toOrientedRange();\n            if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n                selection.substractPoint(tmpSel.cursor);\n            else {\n                if (shift) {\n                    selection.substractPoint(range.cursor);\n                }\n                else if (range) {\n                    editor.removeSelectionMarker(range);\n                    selection.addRange(range);\n                }\n                selection.addRange(tmpSel);\n            }\n            editor.inVirtualSelectionMode = false;\n        });\n    }\n    else if (selectionMode == \"block\") {\n        e.stop();\n        editor.inVirtualSelectionMode = true;\n        var initialRange;\n        var rectSel = [];\n        var blockSelect = function () {\n            var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n            var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n            if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n                return;\n            screenCursor = newCursor;\n            editor.selection.moveToPosition(cursor);\n            editor.renderer.scrollCursorIntoView();\n            editor.removeSelectionMarkers(rectSel);\n            rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n            if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n                rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n            rectSel.forEach(editor.addSelectionMarker, editor);\n            editor.updateSelectionMarkers();\n        };\n        if (isMultiSelect && !accel) {\n            selection.toSingleRange();\n        }\n        else if (!isMultiSelect && accel) {\n            initialRange = selection.toOrientedRange();\n            editor.addSelectionMarker(initialRange);\n        }\n        if (shift)\n            screenAnchor = session.documentToScreenPosition(selection.lead);\n        else\n            selection.moveToPosition(pos);\n        screenCursor = { row: -1, column: -1 };\n        var onMouseSelectionEnd = function (e) {\n            blockSelect();\n            clearInterval(timerId);\n            editor.removeSelectionMarkers(rectSel);\n            if (!rectSel.length)\n                rectSel = [selection.toOrientedRange()];\n            if (initialRange) {\n                editor.removeSelectionMarker(initialRange);\n                selection.toSingleRange(initialRange);\n            }\n            for (var i = 0; i < rectSel.length; i++)\n                selection.addRange(rectSel[i]);\n            editor.inVirtualSelectionMode = false;\n            editor.$mouseHandler.$clickSelection = null;\n        };\n        var onSelectionInterval = blockSelect;\n        event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n        var timerId = setInterval(function () { onSelectionInterval(); }, 20);\n        return e.preventDefault();\n    }\n}\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module){// commands to enter multiselect mode\nexports.defaultCommands = [{\n        name: \"addCursorAbove\",\n        description: \"Add cursor above\",\n        exec: function (editor) { editor.selectMoreLines(-1); },\n        bindKey: { win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\" },\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"addCursorBelow\",\n        description: \"Add cursor below\",\n        exec: function (editor) { editor.selectMoreLines(1); },\n        bindKey: { win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\" },\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"addCursorAboveSkipCurrent\",\n        description: \"Add cursor above (skip current)\",\n        exec: function (editor) { editor.selectMoreLines(-1, true); },\n        bindKey: { win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\" },\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"addCursorBelowSkipCurrent\",\n        description: \"Add cursor below (skip current)\",\n        exec: function (editor) { editor.selectMoreLines(1, true); },\n        bindKey: { win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\" },\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selectMoreBefore\",\n        description: \"Select more before\",\n        exec: function (editor) { editor.selectMore(-1); },\n        bindKey: { win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\" },\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selectMoreAfter\",\n        description: \"Select more after\",\n        exec: function (editor) { editor.selectMore(1); },\n        bindKey: { win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\" },\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selectNextBefore\",\n        description: \"Select next before\",\n        exec: function (editor) { editor.selectMore(-1, true); },\n        bindKey: { win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\" },\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"selectNextAfter\",\n        description: \"Select next after\",\n        exec: function (editor) { editor.selectMore(1, true); },\n        bindKey: { win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\" },\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }, {\n        name: \"toggleSplitSelectionIntoLines\",\n        description: \"Split into lines\",\n        exec: function (editor) {\n            if (editor.multiSelect.rangeCount > 1)\n                editor.multiSelect.joinSelections();\n            else\n                editor.multiSelect.splitIntoLines();\n        },\n        bindKey: { win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\" },\n        readOnly: true\n    }, {\n        name: \"splitSelectionIntoLines\",\n        description: \"Split into lines\",\n        exec: function (editor) { editor.multiSelect.splitIntoLines(); },\n        readOnly: true\n    }, {\n        name: \"alignCursors\",\n        description: \"Align cursors\",\n        exec: function (editor) { editor.alignCursors(); },\n        bindKey: { win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\" },\n        scrollIntoView: \"cursor\"\n    }, {\n        name: \"findAll\",\n        description: \"Find all\",\n        exec: function (editor) { editor.findAll(); },\n        bindKey: { win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\" },\n        scrollIntoView: \"cursor\",\n        readOnly: true\n    }];\nexports.multiSelectCommands = [{\n        name: \"singleSelection\",\n        description: \"Single selection\",\n        bindKey: \"esc\",\n        exec: function (editor) { editor.exitMultiSelectMode(); },\n        scrollIntoView: \"cursor\",\n        readOnly: true,\n        isAvailable: function (editor) { return editor && editor.inMultiSelectMode; }\n    }];\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module){var RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\nfunction find(session, needle, dir) {\n    search.$options.wrap = true;\n    search.$options.needle = needle;\n    search.$options.backwards = dir == -1;\n    return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function () {\n    this.getSelectionMarkers = function () {\n        return this.$selectionMarkers;\n    };\n}).call(EditSession.prototype);\n(function () {\n    this.ranges = null;\n    this.rangeList = null;\n    this.addRange = function (range, $blockChangeEvents) {\n        if (!range)\n            return;\n        if (!this.inMultiSelectMode && this.rangeCount === 0) {\n            var oldRange = this.toOrientedRange();\n            this.rangeList.add(oldRange);\n            this.rangeList.add(range);\n            if (this.rangeList.ranges.length != 2) {\n                this.rangeList.removeAll();\n                return $blockChangeEvents || this.fromOrientedRange(range);\n            }\n            this.rangeList.removeAll();\n            this.rangeList.add(oldRange);\n            this.$onAddRange(oldRange);\n        }\n        if (!range.cursor)\n            range.cursor = range.end;\n        var removed = this.rangeList.add(range);\n        this.$onAddRange(range);\n        if (removed.length)\n            this.$onRemoveRange(removed);\n        if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n            this._signal(\"multiSelect\");\n            this.inMultiSelectMode = true;\n            this.session.$undoSelect = false;\n            this.rangeList.attach(this.session);\n        }\n        return $blockChangeEvents || this.fromOrientedRange(range);\n    };\n    this.toSingleRange = function (range) {\n        range = range || this.ranges[0];\n        var removed = this.rangeList.removeAll();\n        if (removed.length)\n            this.$onRemoveRange(removed);\n        range && this.fromOrientedRange(range);\n    };\n    this.substractPoint = function (pos) {\n        var removed = this.rangeList.substractPoint(pos);\n        if (removed) {\n            this.$onRemoveRange(removed);\n            return removed[0];\n        }\n    };\n    this.mergeOverlappingRanges = function () {\n        var removed = this.rangeList.merge();\n        if (removed.length)\n            this.$onRemoveRange(removed);\n    };\n    this.$onAddRange = function (range) {\n        this.rangeCount = this.rangeList.ranges.length;\n        this.ranges.unshift(range);\n        this._signal(\"addRange\", { range: range });\n    };\n    this.$onRemoveRange = function (removed) {\n        this.rangeCount = this.rangeList.ranges.length;\n        if (this.rangeCount == 1 && this.inMultiSelectMode) {\n            var lastRange = this.rangeList.ranges.pop();\n            removed.push(lastRange);\n            this.rangeCount = 0;\n        }\n        for (var i = removed.length; i--;) {\n            var index = this.ranges.indexOf(removed[i]);\n            this.ranges.splice(index, 1);\n        }\n        this._signal(\"removeRange\", { ranges: removed });\n        if (this.rangeCount === 0 && this.inMultiSelectMode) {\n            this.inMultiSelectMode = false;\n            this._signal(\"singleSelect\");\n            this.session.$undoSelect = true;\n            this.rangeList.detach(this.session);\n        }\n        lastRange = lastRange || this.ranges[0];\n        if (lastRange && !lastRange.isEqual(this.getRange()))\n            this.fromOrientedRange(lastRange);\n    };\n    this.$initRangeList = function () {\n        if (this.rangeList)\n            return;\n        this.rangeList = new RangeList();\n        this.ranges = [];\n        this.rangeCount = 0;\n    };\n    this.getAllRanges = function () {\n        return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n    };\n    this.splitIntoLines = function () {\n        var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n        var newRanges = [];\n        for (var i = 0; i < ranges.length; i++) {\n            var range = ranges[i];\n            var row = range.start.row;\n            var endRow = range.end.row;\n            if (row === endRow) {\n                newRanges.push(range.clone());\n            }\n            else {\n                newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n                while (++row < endRow)\n                    newRanges.push(this.getLineRange(row, true));\n                newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n            }\n            if (i == 0 && !this.isBackwards())\n                newRanges = newRanges.reverse();\n        }\n        this.toSingleRange();\n        for (var i = newRanges.length; i--;)\n            this.addRange(newRanges[i]);\n    };\n    this.joinSelections = function () {\n        var ranges = this.rangeList.ranges;\n        var lastRange = ranges[ranges.length - 1];\n        var range = Range.fromPoints(ranges[0].start, lastRange.end);\n        this.toSingleRange();\n        this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n    };\n    this.toggleBlockSelection = function () {\n        if (this.rangeCount > 1) {\n            var ranges = this.rangeList.ranges;\n            var lastRange = ranges[ranges.length - 1];\n            var range = Range.fromPoints(ranges[0].start, lastRange.end);\n            this.toSingleRange();\n            this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n        }\n        else {\n            var cursor = this.session.documentToScreenPosition(this.cursor);\n            var anchor = this.session.documentToScreenPosition(this.anchor);\n            var rectSel = this.rectangularRangeBlock(cursor, anchor);\n            rectSel.forEach(this.addRange, this);\n        }\n    };\n    this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) {\n        var rectSel = [];\n        var xBackwards = screenCursor.column < screenAnchor.column;\n        if (xBackwards) {\n            var startColumn = screenCursor.column;\n            var endColumn = screenAnchor.column;\n            var startOffsetX = screenCursor.offsetX;\n            var endOffsetX = screenAnchor.offsetX;\n        }\n        else {\n            var startColumn = screenAnchor.column;\n            var endColumn = screenCursor.column;\n            var startOffsetX = screenAnchor.offsetX;\n            var endOffsetX = screenCursor.offsetX;\n        }\n        var yBackwards = screenCursor.row < screenAnchor.row;\n        if (yBackwards) {\n            var startRow = screenCursor.row;\n            var endRow = screenAnchor.row;\n        }\n        else {\n            var startRow = screenAnchor.row;\n            var endRow = screenCursor.row;\n        }\n        if (startColumn < 0)\n            startColumn = 0;\n        if (startRow < 0)\n            startRow = 0;\n        if (startRow == endRow)\n            includeEmptyLines = true;\n        var docEnd;\n        for (var row = startRow; row <= endRow; row++) {\n            var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX));\n            if (range.isEmpty()) {\n                if (docEnd && isSamePoint(range.end, docEnd))\n                    break;\n                docEnd = range.end;\n            }\n            range.cursor = xBackwards ? range.start : range.end;\n            rectSel.push(range);\n        }\n        if (yBackwards)\n            rectSel.reverse();\n        if (!includeEmptyLines) {\n            var end = rectSel.length - 1;\n            while (rectSel[end].isEmpty() && end > 0)\n                end--;\n            if (end > 0) {\n                var start = 0;\n                while (rectSel[start].isEmpty())\n                    start++;\n            }\n            for (var i = end; i >= start; i--) {\n                if (rectSel[i].isEmpty())\n                    rectSel.splice(i, 1);\n            }\n        }\n        return rectSel;\n    };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function () {\n    this.updateSelectionMarkers = function () {\n        this.renderer.updateCursor();\n        this.renderer.updateBackMarkers();\n    };\n    this.addSelectionMarker = function (orientedRange) {\n        if (!orientedRange.cursor)\n            orientedRange.cursor = orientedRange.end;\n        var style = this.getSelectionStyle();\n        orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n        this.session.$selectionMarkers.push(orientedRange);\n        this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n        return orientedRange;\n    };\n    this.removeSelectionMarker = function (range) {\n        if (!range.marker)\n            return;\n        this.session.removeMarker(range.marker);\n        var index = this.session.$selectionMarkers.indexOf(range);\n        if (index != -1)\n            this.session.$selectionMarkers.splice(index, 1);\n        this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n    };\n    this.removeSelectionMarkers = function (ranges) {\n        var markerList = this.session.$selectionMarkers;\n        for (var i = ranges.length; i--;) {\n            var range = ranges[i];\n            if (!range.marker)\n                continue;\n            this.session.removeMarker(range.marker);\n            var index = markerList.indexOf(range);\n            if (index != -1)\n                markerList.splice(index, 1);\n        }\n        this.session.selectionMarkerCount = markerList.length;\n    };\n    this.$onAddRange = function (e) {\n        this.addSelectionMarker(e.range);\n        this.renderer.updateCursor();\n        this.renderer.updateBackMarkers();\n    };\n    this.$onRemoveRange = function (e) {\n        this.removeSelectionMarkers(e.ranges);\n        this.renderer.updateCursor();\n        this.renderer.updateBackMarkers();\n    };\n    this.$onMultiSelect = function (e) {\n        if (this.inMultiSelectMode)\n            return;\n        this.inMultiSelectMode = true;\n        this.setStyle(\"ace_multiselect\");\n        this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n        this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n        this.renderer.updateCursor();\n        this.renderer.updateBackMarkers();\n    };\n    this.$onSingleSelect = function (e) {\n        if (this.session.multiSelect.inVirtualMode)\n            return;\n        this.inMultiSelectMode = false;\n        this.unsetStyle(\"ace_multiselect\");\n        this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n        this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n        this.renderer.updateCursor();\n        this.renderer.updateBackMarkers();\n        this._emit(\"changeSelection\");\n    };\n    this.$onMultiSelectExec = function (e) {\n        var command = e.command;\n        var editor = e.editor;\n        if (!editor.multiSelect)\n            return;\n        if (!command.multiSelectAction) {\n            var result = command.exec(editor, e.args || {});\n            editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n            editor.multiSelect.mergeOverlappingRanges();\n        }\n        else if (command.multiSelectAction == \"forEach\") {\n            result = editor.forEachSelection(command, e.args);\n        }\n        else if (command.multiSelectAction == \"forEachLine\") {\n            result = editor.forEachSelection(command, e.args, true);\n        }\n        else if (command.multiSelectAction == \"single\") {\n            editor.exitMultiSelectMode();\n            result = command.exec(editor, e.args || {});\n        }\n        else {\n            result = command.multiSelectAction(editor, e.args || {});\n        }\n        return result;\n    };\n    this.forEachSelection = function (cmd, args, options) {\n        if (this.inVirtualSelectionMode)\n            return;\n        var keepOrder = options && options.keepOrder;\n        var $byLines = options == true || options && options.$byLines;\n        var session = this.session;\n        var selection = this.selection;\n        var rangeList = selection.rangeList;\n        var ranges = (keepOrder ? selection : rangeList).ranges;\n        var result;\n        if (!ranges.length)\n            return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n        var reg = selection._eventRegistry;\n        selection._eventRegistry = {};\n        var tmpSel = new Selection(session);\n        this.inVirtualSelectionMode = true;\n        for (var i = ranges.length; i--;) {\n            if ($byLines) {\n                while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n                    i--;\n            }\n            tmpSel.fromOrientedRange(ranges[i]);\n            tmpSel.index = i;\n            this.selection = session.selection = tmpSel;\n            var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n            if (!result && cmdResult !== undefined)\n                result = cmdResult;\n            tmpSel.toOrientedRange(ranges[i]);\n        }\n        tmpSel.detach();\n        this.selection = session.selection = selection;\n        this.inVirtualSelectionMode = false;\n        selection._eventRegistry = reg;\n        selection.mergeOverlappingRanges();\n        if (selection.ranges[0])\n            selection.fromOrientedRange(selection.ranges[0]);\n        var anim = this.renderer.$scrollAnimation;\n        this.onCursorChange();\n        this.onSelectionChange();\n        if (anim && anim.from == anim.to)\n            this.renderer.animateScrolling(anim.from);\n        return result;\n    };\n    this.exitMultiSelectMode = function () {\n        if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n            return;\n        this.multiSelect.toSingleRange();\n    };\n    this.getSelectedText = function () {\n        var text = \"\";\n        if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n            var ranges = this.multiSelect.rangeList.ranges;\n            var buf = [];\n            for (var i = 0; i < ranges.length; i++) {\n                buf.push(this.session.getTextRange(ranges[i]));\n            }\n            var nl = this.session.getDocument().getNewLineCharacter();\n            text = buf.join(nl);\n            if (text.length == (buf.length - 1) * nl.length)\n                text = \"\";\n        }\n        else if (!this.selection.isEmpty()) {\n            text = this.session.getTextRange(this.getSelectionRange());\n        }\n        return text;\n    };\n    this.$checkMultiselectChange = function (e, anchor) {\n        if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n            var range = this.multiSelect.ranges[0];\n            if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n                return;\n            var pos = anchor == this.multiSelect.anchor\n                ? range.cursor == range.start ? range.end : range.start\n                : range.cursor;\n            if (pos.row != anchor.row\n                || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n                this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n            else\n                this.multiSelect.mergeOverlappingRanges();\n        }\n    };\n    this.findAll = function (needle, options, additive) {\n        options = options || {};\n        options.needle = needle || options.needle;\n        if (options.needle == undefined) {\n            var range = this.selection.isEmpty()\n                ? this.selection.getWordRange()\n                : this.selection.getRange();\n            options.needle = this.session.getTextRange(range);\n        }\n        this.$search.set(options);\n        var ranges = this.$search.findAll(this.session);\n        if (!ranges.length)\n            return 0;\n        var selection = this.multiSelect;\n        if (!additive)\n            selection.toSingleRange(ranges[0]);\n        for (var i = ranges.length; i--;)\n            selection.addRange(ranges[i], true);\n        if (range && selection.rangeList.rangeAtPoint(range.start))\n            selection.addRange(range, true);\n        return ranges.length;\n    };\n    this.selectMoreLines = function (dir, skip) {\n        var range = this.selection.toOrientedRange();\n        var isBackwards = range.cursor == range.end;\n        var screenLead = this.session.documentToScreenPosition(range.cursor);\n        if (this.selection.$desiredColumn)\n            screenLead.column = this.selection.$desiredColumn;\n        var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n        if (!range.isEmpty()) {\n            var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n            var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n        }\n        else {\n            var anchor = lead;\n        }\n        if (isBackwards) {\n            var newRange = Range.fromPoints(lead, anchor);\n            newRange.cursor = newRange.start;\n        }\n        else {\n            var newRange = Range.fromPoints(anchor, lead);\n            newRange.cursor = newRange.end;\n        }\n        newRange.desiredColumn = screenLead.column;\n        if (!this.selection.inMultiSelectMode) {\n            this.selection.addRange(range);\n        }\n        else {\n            if (skip)\n                var toRemove = range.cursor;\n        }\n        this.selection.addRange(newRange);\n        if (toRemove)\n            this.selection.substractPoint(toRemove);\n    };\n    this.transposeSelections = function (dir) {\n        var session = this.session;\n        var sel = session.multiSelect;\n        var all = sel.ranges;\n        for (var i = all.length; i--;) {\n            var range = all[i];\n            if (range.isEmpty()) {\n                var tmp = session.getWordRange(range.start.row, range.start.column);\n                range.start.row = tmp.start.row;\n                range.start.column = tmp.start.column;\n                range.end.row = tmp.end.row;\n                range.end.column = tmp.end.column;\n            }\n        }\n        sel.mergeOverlappingRanges();\n        var words = [];\n        for (var i = all.length; i--;) {\n            var range = all[i];\n            words.unshift(session.getTextRange(range));\n        }\n        if (dir < 0)\n            words.unshift(words.pop());\n        else\n            words.push(words.shift());\n        for (var i = all.length; i--;) {\n            var range = all[i];\n            var tmp = range.clone();\n            session.replace(range, words[i]);\n            range.start.row = tmp.start.row;\n            range.start.column = tmp.start.column;\n        }\n        sel.fromOrientedRange(sel.ranges[0]);\n    };\n    this.selectMore = function (dir, skip, stopAtFirst) {\n        var session = this.session;\n        var sel = session.multiSelect;\n        var range = sel.toOrientedRange();\n        if (range.isEmpty()) {\n            range = session.getWordRange(range.start.row, range.start.column);\n            range.cursor = dir == -1 ? range.start : range.end;\n            this.multiSelect.addRange(range);\n            if (stopAtFirst)\n                return;\n        }\n        var needle = session.getTextRange(range);\n        var newRange = find(session, needle, dir);\n        if (newRange) {\n            newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n            this.session.unfold(newRange);\n            this.multiSelect.addRange(newRange);\n            this.renderer.scrollCursorIntoView(null, 0.5);\n        }\n        if (skip)\n            this.multiSelect.substractPoint(range.cursor);\n    };\n    this.alignCursors = function () {\n        var session = this.session;\n        var sel = session.multiSelect;\n        var ranges = sel.ranges;\n        var row = -1;\n        var sameRowRanges = ranges.filter(function (r) {\n            if (r.cursor.row == row)\n                return true;\n            row = r.cursor.row;\n        });\n        if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n            var range = this.selection.getRange();\n            var fr = range.start.row, lr = range.end.row;\n            var guessRange = fr == lr;\n            if (guessRange) {\n                var max = this.session.getLength();\n                var line;\n                do {\n                    line = this.session.getLine(lr);\n                } while (/[=:]/.test(line) && ++lr < max);\n                do {\n                    line = this.session.getLine(fr);\n                } while (/[=:]/.test(line) && --fr > 0);\n                if (fr < 0)\n                    fr = 0;\n                if (lr >= max)\n                    lr = max - 1;\n            }\n            var lines = this.session.removeFullLines(fr, lr);\n            lines = this.$reAlignText(lines, guessRange);\n            this.session.insert({ row: fr, column: 0 }, lines.join(\"\\n\") + \"\\n\");\n            if (!guessRange) {\n                range.start.column = 0;\n                range.end.column = lines[lines.length - 1].length;\n            }\n            this.selection.setRange(range);\n        }\n        else {\n            sameRowRanges.forEach(function (r) {\n                sel.substractPoint(r.cursor);\n            });\n            var maxCol = 0;\n            var minSpace = Infinity;\n            var spaceOffsets = ranges.map(function (r) {\n                var p = r.cursor;\n                var line = session.getLine(p.row);\n                var spaceOffset = line.substr(p.column).search(/\\S/g);\n                if (spaceOffset == -1)\n                    spaceOffset = 0;\n                if (p.column > maxCol)\n                    maxCol = p.column;\n                if (spaceOffset < minSpace)\n                    minSpace = spaceOffset;\n                return spaceOffset;\n            });\n            ranges.forEach(function (r, i) {\n                var p = r.cursor;\n                var l = maxCol - p.column;\n                var d = spaceOffsets[i] - minSpace;\n                if (l > d)\n                    session.insert(p, lang.stringRepeat(\" \", l - d));\n                else\n                    session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n                r.start.column = r.end.column = maxCol;\n                r.start.row = r.end.row = p.row;\n                r.cursor = r.end;\n            });\n            sel.fromOrientedRange(ranges[0]);\n            this.renderer.updateCursor();\n            this.renderer.updateBackMarkers();\n        }\n    };\n    this.$reAlignText = function (lines, forceLeft) {\n        var isLeftAligned = true, isRightAligned = true;\n        var startW, textW, endW;\n        return lines.map(function (line) {\n            var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n            if (!m)\n                return [line];\n            if (startW == null) {\n                startW = m[1].length;\n                textW = m[2].length;\n                endW = m[3].length;\n                return m;\n            }\n            if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n                isRightAligned = false;\n            if (startW != m[1].length)\n                isLeftAligned = false;\n            if (startW > m[1].length)\n                startW = m[1].length;\n            if (textW < m[2].length)\n                textW = m[2].length;\n            if (endW > m[3].length)\n                endW = m[3].length;\n            return m;\n        }).map(forceLeft ? alignLeft :\n            isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n        function spaces(n) {\n            return lang.stringRepeat(\" \", n);\n        }\n        function alignLeft(m) {\n            return !m[2] ? m[0] : spaces(startW) + m[2]\n                + spaces(textW - m[2].length + endW)\n                + m[4].replace(/^([=:])\\s+/, \"$1 \");\n        }\n        function alignRight(m) {\n            return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n                + spaces(endW)\n                + m[4].replace(/^([=:])\\s+/, \"$1 \");\n        }\n        function unAlign(m) {\n            return !m[2] ? m[0] : spaces(startW) + m[2]\n                + spaces(endW)\n                + m[4].replace(/^([=:])\\s+/, \"$1 \");\n        }\n    };\n}).call(Editor.prototype);\nfunction isSamePoint(p1, p2) {\n    return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function (e) {\n    var session = e.session;\n    if (session && !session.multiSelect) {\n        session.$selectionMarkers = [];\n        session.selection.$initRangeList();\n        session.multiSelect = session.selection;\n    }\n    this.multiSelect = session && session.multiSelect;\n    var oldSession = e.oldSession;\n    if (oldSession) {\n        oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n        oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n        oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n        oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n        oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n        oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n    }\n    if (session) {\n        session.multiSelect.on(\"addRange\", this.$onAddRange);\n        session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n        session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n        session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n        session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n        session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n    }\n    if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n        if (session.selection.inMultiSelectMode)\n            this.$onMultiSelect();\n        else\n            this.$onSingleSelect();\n    }\n};\nfunction MultiSelect(editor) {\n    if (editor.$multiselectOnSessionChange)\n        return;\n    editor.$onAddRange = editor.$onAddRange.bind(editor);\n    editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n    editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n    editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n    editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n    editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n    editor.$multiselectOnSessionChange(editor);\n    editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n    editor.on(\"mousedown\", onMouseDown);\n    editor.commands.addCommands(commands.defaultCommands);\n    addAltCursorListeners(editor);\n}\nfunction addAltCursorListeners(editor) {\n    if (!editor.textInput)\n        return;\n    var el = editor.textInput.getElement();\n    var altCursor = false;\n    event.addListener(el, \"keydown\", function (e) {\n        var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n        if (editor.$blockSelectEnabled && altDown) {\n            if (!altCursor) {\n                editor.renderer.setMouseCursor(\"crosshair\");\n                altCursor = true;\n            }\n        }\n        else if (altCursor) {\n            reset();\n        }\n    }, editor);\n    event.addListener(el, \"keyup\", reset, editor);\n    event.addListener(el, \"blur\", reset, editor);\n    function reset(e) {\n        if (altCursor) {\n            editor.renderer.setMouseCursor(\"\");\n            altCursor = false;\n        }\n    }\n}\nexports.MultiSelect = MultiSelect;\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n    enableMultiselect: {\n        set: function (val) {\n            MultiSelect(this);\n            if (val) {\n                this.on(\"changeSession\", this.$multiselectOnSessionChange);\n                this.on(\"mousedown\", onMouseDown);\n            }\n            else {\n                this.off(\"changeSession\", this.$multiselectOnSessionChange);\n                this.off(\"mousedown\", onMouseDown);\n            }\n        },\n        value: true\n    },\n    enableBlockSelect: {\n        set: function (val) {\n            this.$blockSelectEnabled = val;\n        },\n        value: true\n    }\n});\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../../range\").Range;\nvar FoldMode = exports.FoldMode = function () { };\n(function () {\n    this.foldingStartMarker = null;\n    this.foldingStopMarker = null;\n    this.getFoldWidget = function (session, foldStyle, row) {\n        var line = session.getLine(row);\n        if (this.foldingStartMarker.test(line))\n            return \"start\";\n        if (foldStyle == \"markbeginend\"\n            && this.foldingStopMarker\n            && this.foldingStopMarker.test(line))\n            return \"end\";\n        return \"\";\n    };\n    this.getFoldWidgetRange = function (session, foldStyle, row) {\n        return null;\n    };\n    this.indentationBlock = function (session, row, column) {\n        var re = /\\S/;\n        var line = session.getLine(row);\n        var startLevel = line.search(re);\n        if (startLevel == -1)\n            return;\n        var startColumn = column || line.length;\n        var maxRow = session.getLength();\n        var startRow = row;\n        var endRow = row;\n        while (++row < maxRow) {\n            var level = session.getLine(row).search(re);\n            if (level == -1)\n                continue;\n            if (level <= startLevel) {\n                var token = session.getTokenAt(row, 0);\n                if (!token || token.type !== \"string\")\n                    break;\n            }\n            endRow = row;\n        }\n        if (endRow > startRow) {\n            var endColumn = session.getLine(endRow).length;\n            return new Range(startRow, startColumn, endRow, endColumn);\n        }\n    };\n    this.openingBracketBlock = function (session, bracket, row, column, typeRe) {\n        var start = { row: row, column: column + 1 };\n        var end = session.$findClosingBracket(bracket, start, typeRe);\n        if (!end)\n            return;\n        var fw = session.foldWidgets[end.row];\n        if (fw == null)\n            fw = session.getFoldWidget(end.row);\n        if (fw == \"start\" && end.row > start.row) {\n            end.row--;\n            end.column = session.getLine(end.row).length;\n        }\n        return Range.fromPoints(start, end);\n    };\n    this.closingBracketBlock = function (session, bracket, row, column, typeRe) {\n        var end = { row: row, column: column };\n        var start = session.$findOpeningBracket(bracket, end);\n        if (!start)\n            return;\n        start.column++;\n        end.column--;\n        return Range.fromPoints(start, end);\n    };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module){\"use strict\";\nvar dom = require(\"./lib/dom\");\nfunction LineWidgets(session) {\n    this.session = session;\n    this.session.widgetManager = this;\n    this.session.getRowLength = this.getRowLength;\n    this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n    this.updateOnChange = this.updateOnChange.bind(this);\n    this.renderWidgets = this.renderWidgets.bind(this);\n    this.measureWidgets = this.measureWidgets.bind(this);\n    this.session._changedWidgets = [];\n    this.$onChangeEditor = this.$onChangeEditor.bind(this);\n    this.session.on(\"change\", this.updateOnChange);\n    this.session.on(\"changeFold\", this.updateOnFold);\n    this.session.on(\"changeEditor\", this.$onChangeEditor);\n}\n(function () {\n    this.getRowLength = function (row) {\n        var h;\n        if (this.lineWidgets)\n            h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n        else\n            h = 0;\n        if (!this.$useWrapMode || !this.$wrapData[row]) {\n            return 1 + h;\n        }\n        else {\n            return this.$wrapData[row].length + 1 + h;\n        }\n    };\n    this.$getWidgetScreenLength = function () {\n        var screenRows = 0;\n        this.lineWidgets.forEach(function (w) {\n            if (w && w.rowCount && !w.hidden)\n                screenRows += w.rowCount;\n        });\n        return screenRows;\n    };\n    this.$onChangeEditor = function (e) {\n        this.attach(e.editor);\n    };\n    this.attach = function (editor) {\n        if (editor && editor.widgetManager && editor.widgetManager != this)\n            editor.widgetManager.detach();\n        if (this.editor == editor)\n            return;\n        this.detach();\n        this.editor = editor;\n        if (editor) {\n            editor.widgetManager = this;\n            editor.renderer.on(\"beforeRender\", this.measureWidgets);\n            editor.renderer.on(\"afterRender\", this.renderWidgets);\n        }\n    };\n    this.detach = function (e) {\n        var editor = this.editor;\n        if (!editor)\n            return;\n        this.editor = null;\n        editor.widgetManager = null;\n        editor.renderer.off(\"beforeRender\", this.measureWidgets);\n        editor.renderer.off(\"afterRender\", this.renderWidgets);\n        var lineWidgets = this.session.lineWidgets;\n        lineWidgets && lineWidgets.forEach(function (w) {\n            if (w && w.el && w.el.parentNode) {\n                w._inDocument = false;\n                w.el.parentNode.removeChild(w.el);\n            }\n        });\n    };\n    this.updateOnFold = function (e, session) {\n        var lineWidgets = session.lineWidgets;\n        if (!lineWidgets || !e.action)\n            return;\n        var fold = e.data;\n        var start = fold.start.row;\n        var end = fold.end.row;\n        var hide = e.action == \"add\";\n        for (var i = start + 1; i < end; i++) {\n            if (lineWidgets[i])\n                lineWidgets[i].hidden = hide;\n        }\n        if (lineWidgets[end]) {\n            if (hide) {\n                if (!lineWidgets[start])\n                    lineWidgets[start] = lineWidgets[end];\n                else\n                    lineWidgets[end].hidden = hide;\n            }\n            else {\n                if (lineWidgets[start] == lineWidgets[end])\n                    lineWidgets[start] = undefined;\n                lineWidgets[end].hidden = hide;\n            }\n        }\n    };\n    this.updateOnChange = function (delta) {\n        var lineWidgets = this.session.lineWidgets;\n        if (!lineWidgets)\n            return;\n        var startRow = delta.start.row;\n        var len = delta.end.row - startRow;\n        if (len === 0) {\n        }\n        else if (delta.action == \"remove\") {\n            var removed = lineWidgets.splice(startRow + 1, len);\n            if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n                lineWidgets[startRow] = removed.pop();\n            }\n            removed.forEach(function (w) {\n                w && this.removeLineWidget(w);\n            }, this);\n            this.$updateRows();\n        }\n        else {\n            var args = new Array(len);\n            if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n                if (delta.start.column > lineWidgets[startRow].column)\n                    startRow++;\n            }\n            args.unshift(startRow, 0);\n            lineWidgets.splice.apply(lineWidgets, args);\n            this.$updateRows();\n        }\n    };\n    this.$updateRows = function () {\n        var lineWidgets = this.session.lineWidgets;\n        if (!lineWidgets)\n            return;\n        var noWidgets = true;\n        lineWidgets.forEach(function (w, i) {\n            if (w) {\n                noWidgets = false;\n                w.row = i;\n                while (w.$oldWidget) {\n                    w.$oldWidget.row = i;\n                    w = w.$oldWidget;\n                }\n            }\n        });\n        if (noWidgets)\n            this.session.lineWidgets = null;\n    };\n    this.$registerLineWidget = function (w) {\n        if (!this.session.lineWidgets)\n            this.session.lineWidgets = new Array(this.session.getLength());\n        var old = this.session.lineWidgets[w.row];\n        if (old) {\n            w.$oldWidget = old;\n            if (old.el && old.el.parentNode) {\n                old.el.parentNode.removeChild(old.el);\n                old._inDocument = false;\n            }\n        }\n        this.session.lineWidgets[w.row] = w;\n        return w;\n    };\n    this.addLineWidget = function (w) {\n        this.$registerLineWidget(w);\n        w.session = this.session;\n        if (!this.editor)\n            return w;\n        var renderer = this.editor.renderer;\n        if (w.html && !w.el) {\n            w.el = dom.createElement(\"div\");\n            w.el.innerHTML = w.html;\n        }\n        if (w.el) {\n            dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n            w.el.style.position = \"absolute\";\n            w.el.style.zIndex = 5;\n            renderer.container.appendChild(w.el);\n            w._inDocument = true;\n            if (!w.coverGutter) {\n                w.el.style.zIndex = 3;\n            }\n            if (w.pixelHeight == null) {\n                w.pixelHeight = w.el.offsetHeight;\n            }\n        }\n        if (w.rowCount == null) {\n            w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n        }\n        var fold = this.session.getFoldAt(w.row, 0);\n        w.$fold = fold;\n        if (fold) {\n            var lineWidgets = this.session.lineWidgets;\n            if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n                lineWidgets[fold.start.row] = w;\n            else\n                w.hidden = true;\n        }\n        this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n        this.$updateRows();\n        this.renderWidgets(null, renderer);\n        this.onWidgetChanged(w);\n        return w;\n    };\n    this.removeLineWidget = function (w) {\n        w._inDocument = false;\n        w.session = null;\n        if (w.el && w.el.parentNode)\n            w.el.parentNode.removeChild(w.el);\n        if (w.editor && w.editor.destroy)\n            try {\n                w.editor.destroy();\n            }\n            catch (e) { }\n        if (this.session.lineWidgets) {\n            var w1 = this.session.lineWidgets[w.row];\n            if (w1 == w) {\n                this.session.lineWidgets[w.row] = w.$oldWidget;\n                if (w.$oldWidget)\n                    this.onWidgetChanged(w.$oldWidget);\n            }\n            else {\n                while (w1) {\n                    if (w1.$oldWidget == w) {\n                        w1.$oldWidget = w.$oldWidget;\n                        break;\n                    }\n                    w1 = w1.$oldWidget;\n                }\n            }\n        }\n        this.session._emit(\"changeFold\", { data: { start: { row: w.row } } });\n        this.$updateRows();\n    };\n    this.getWidgetsAtRow = function (row) {\n        var lineWidgets = this.session.lineWidgets;\n        var w = lineWidgets && lineWidgets[row];\n        var list = [];\n        while (w) {\n            list.push(w);\n            w = w.$oldWidget;\n        }\n        return list;\n    };\n    this.onWidgetChanged = function (w) {\n        this.session._changedWidgets.push(w);\n        this.editor && this.editor.renderer.updateFull();\n    };\n    this.measureWidgets = function (e, renderer) {\n        var changedWidgets = this.session._changedWidgets;\n        var config = renderer.layerConfig;\n        if (!changedWidgets || !changedWidgets.length)\n            return;\n        var min = Infinity;\n        for (var i = 0; i < changedWidgets.length; i++) {\n            var w = changedWidgets[i];\n            if (!w || !w.el)\n                continue;\n            if (w.session != this.session)\n                continue;\n            if (!w._inDocument) {\n                if (this.session.lineWidgets[w.row] != w)\n                    continue;\n                w._inDocument = true;\n                renderer.container.appendChild(w.el);\n            }\n            w.h = w.el.offsetHeight;\n            if (!w.fixedWidth) {\n                w.w = w.el.offsetWidth;\n                w.screenWidth = Math.ceil(w.w / config.characterWidth);\n            }\n            var rowCount = w.h / config.lineHeight;\n            if (w.coverLine) {\n                rowCount -= this.session.getRowLineCount(w.row);\n                if (rowCount < 0)\n                    rowCount = 0;\n            }\n            if (w.rowCount != rowCount) {\n                w.rowCount = rowCount;\n                if (w.row < min)\n                    min = w.row;\n            }\n        }\n        if (min != Infinity) {\n            this.session._emit(\"changeFold\", { data: { start: { row: min } } });\n            this.session.lineWidgetWidth = null;\n        }\n        this.session._changedWidgets = [];\n    };\n    this.renderWidgets = function (e, renderer) {\n        var config = renderer.layerConfig;\n        var lineWidgets = this.session.lineWidgets;\n        if (!lineWidgets)\n            return;\n        var first = Math.min(this.firstRow, config.firstRow);\n        var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n        while (first > 0 && !lineWidgets[first])\n            first--;\n        this.firstRow = config.firstRow;\n        this.lastRow = config.lastRow;\n        renderer.$cursorLayer.config = config;\n        for (var i = first; i <= last; i++) {\n            var w = lineWidgets[i];\n            if (!w || !w.el)\n                continue;\n            if (w.hidden) {\n                w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n                continue;\n            }\n            if (!w._inDocument) {\n                w._inDocument = true;\n                renderer.container.appendChild(w.el);\n            }\n            var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top;\n            if (!w.coverLine)\n                top += config.lineHeight * this.session.getRowLineCount(w.row);\n            w.el.style.top = top - config.offset + \"px\";\n            var left = w.coverGutter ? 0 : renderer.gutterWidth;\n            if (!w.fixedWidth)\n                left -= renderer.scrollLeft;\n            w.el.style.left = left + \"px\";\n            if (w.fullWidth && w.screenWidth) {\n                w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n            }\n            if (w.fixedWidth) {\n                w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n            }\n            else {\n                w.el.style.right = \"\";\n            }\n        }\n    };\n}).call(LineWidgets.prototype);\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\nfunction binarySearch(array, needle, comparator) {\n    var first = 0;\n    var last = array.length - 1;\n    while (first <= last) {\n        var mid = (first + last) >> 1;\n        var c = comparator(needle, array[mid]);\n        if (c > 0)\n            first = mid + 1;\n        else if (c < 0)\n            last = mid - 1;\n        else\n            return mid;\n    }\n    return -(first + 1);\n}\nfunction findAnnotations(session, row, dir) {\n    var annotations = session.getAnnotations().sort(Range.comparePoints);\n    if (!annotations.length)\n        return;\n    var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints);\n    if (i < 0)\n        i = -i - 1;\n    if (i >= annotations.length)\n        i = dir > 0 ? 0 : annotations.length - 1;\n    else if (i === 0 && dir < 0)\n        i = annotations.length - 1;\n    var annotation = annotations[i];\n    if (!annotation || !dir)\n        return;\n    if (annotation.row === row) {\n        do {\n            annotation = annotations[i += dir];\n        } while (annotation && annotation.row === row);\n        if (!annotation)\n            return annotations.slice();\n    }\n    var matched = [];\n    row = annotation.row;\n    do {\n        matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n        annotation = annotations[i += dir];\n    } while (annotation && annotation.row == row);\n    return matched.length && matched;\n}\nexports.showErrorMarker = function (editor, dir) {\n    var session = editor.session;\n    if (!session.widgetManager) {\n        session.widgetManager = new LineWidgets(session);\n        session.widgetManager.attach(editor);\n    }\n    var pos = editor.getCursorPosition();\n    var row = pos.row;\n    var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) {\n        return w.type == \"errorMarker\";\n    })[0];\n    if (oldWidget) {\n        oldWidget.destroy();\n    }\n    else {\n        row -= dir;\n    }\n    var annotations = findAnnotations(session, row, dir);\n    var gutterAnno;\n    if (annotations) {\n        var annotation = annotations[0];\n        pos.column = (annotation.pos && typeof annotation.column != \"number\"\n            ? annotation.pos.sc\n            : annotation.column) || 0;\n        pos.row = annotation.row;\n        gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n    }\n    else if (oldWidget) {\n        return;\n    }\n    else {\n        gutterAnno = {\n            text: [\"Looks good!\"],\n            className: \"ace_ok\"\n        };\n    }\n    editor.session.unfold(pos.row);\n    editor.selection.moveToPosition(pos);\n    var w = {\n        row: pos.row,\n        fixedWidth: true,\n        coverGutter: true,\n        el: dom.createElement(\"div\"),\n        type: \"errorMarker\"\n    };\n    var el = w.el.appendChild(dom.createElement(\"div\"));\n    var arrow = w.el.appendChild(dom.createElement(\"div\"));\n    arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n    var left = editor.renderer.$cursorLayer\n        .getPixelPosition(pos).left;\n    arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n    w.el.className = \"error_widget_wrapper\";\n    el.className = \"error_widget \" + gutterAnno.className;\n    el.innerHTML = gutterAnno.text.join(\"<br>\");\n    el.appendChild(dom.createElement(\"div\"));\n    var kb = function (_, hashId, keyString) {\n        if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n            w.destroy();\n            return { command: \"null\" };\n        }\n    };\n    w.destroy = function () {\n        if (editor.$mouseHandler.isMousePressed)\n            return;\n        editor.keyBinding.removeKeyboardHandler(kb);\n        session.widgetManager.removeLineWidget(w);\n        editor.off(\"changeSelection\", w.destroy);\n        editor.off(\"changeSession\", w.destroy);\n        editor.off(\"mouseup\", w.destroy);\n        editor.off(\"change\", w.destroy);\n    };\n    editor.keyBinding.addKeyboardHandler(kb);\n    editor.on(\"changeSelection\", w.destroy);\n    editor.on(\"changeSession\", w.destroy);\n    editor.on(\"mouseup\", w.destroy);\n    editor.on(\"change\", w.destroy);\n    editor.session.widgetManager.addLineWidget(w);\n    w.el.onmousedown = editor.focus.bind(editor);\n    editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight });\n};\ndom.importCssString(\"\\n    .error_widget_wrapper {\\n        background: inherit;\\n        color: inherit;\\n        border:none\\n    }\\n    .error_widget {\\n        border-top: solid 2px;\\n        border-bottom: solid 2px;\\n        margin: 5px 0;\\n        padding: 10px 40px;\\n        white-space: pre-wrap;\\n    }\\n    .error_widget.ace_error, .error_widget_arrow.ace_error{\\n        border-color: #ff5a5a\\n    }\\n    .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\n        border-color: #F1D817\\n    }\\n    .error_widget.ace_info, .error_widget_arrow.ace_info{\\n        border-color: #5a5a5a\\n    }\\n    .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\n        border-color: #5aaa5a\\n    }\\n    .error_widget_arrow {\\n        position: absolute;\\n        border: solid 5px;\\n        border-top-color: transparent!important;\\n        border-right-color: transparent!important;\\n        border-left-color: transparent!important;\\n        top: -5px;\\n    }\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\",\"ace/loader_build\"], function(require, exports, module){/**\n * The main class required to set up an Ace instance in the browser.\n *\n * @class Ace\n **/\n\"use strict\";\nrequire(\"./loader_build\")(exports)\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\nexports.config = require(\"./config\");\nexports.edit = function (el, options) {\n    if (typeof el == \"string\") {\n        var _id = el;\n        el = document.getElementById(_id);\n        if (!el)\n            throw new Error(\"ace.edit can't find div #\" + _id);\n    }\n    if (el && el.env && el.env.editor instanceof Editor)\n        return el.env.editor;\n    var value = \"\";\n    if (el && /input|textarea/i.test(el.tagName)) {\n        var oldNode = el;\n        value = oldNode.value;\n        el = dom.createElement(\"pre\");\n        oldNode.parentNode.replaceChild(el, oldNode);\n    }\n    else if (el) {\n        value = el.textContent;\n        el.innerHTML = \"\";\n    }\n    var doc = exports.createEditSession(value);\n    var editor = new Editor(new Renderer(el), doc, options);\n    var env = {\n        document: doc,\n        editor: editor,\n        onResize: editor.resize.bind(editor, null)\n    };\n    if (oldNode)\n        env.textarea = oldNode;\n    event.addListener(window, \"resize\", env.onResize);\n    editor.on(\"destroy\", function () {\n        event.removeListener(window, \"resize\", env.onResize);\n        env.editor.container.env = null; // prevent memory leak on old ie\n    });\n    editor.container.env = editor.env = env;\n    return editor;\n};\nexports.createEditSession = function (text, mode) {\n    var doc = new EditSession(text, mode);\n    doc.setUndoManager(new UndoManager());\n    return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n\n});            (function() {\n                ace.require([\"ace/ace\"], function(a) {\n                    if (a) {\n                        a.config.init(true);\n                        a.define = ace.define;\n                    }\n                    if (!window.ace)\n                        window.ace = a;\n                    for (var key in a) if (a.hasOwnProperty(key))\n                        window.ace[key] = a[key];\n                    window.ace[\"default\"] = window.ace;\n                    if ( true && module) {\n                        module.exports = window.ace;\n                    }\n                });\n            })();\n        \n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 668 */\n/***/ (function(module, exports) {\n\nmodule.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n\n\n/***/ }),\n/* 669 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 editorOptions_1 = __webpack_require__(666);\nvar ace = editorOptions_1.getAceInstance();\nvar ace_builds_1 = __webpack_require__(667);\nvar ext_split_1 = __webpack_require__(1608);\nvar PropTypes = __webpack_require__(1);\nvar React = __webpack_require__(0);\nvar isEqual = __webpack_require__(665);\nvar get = __webpack_require__(1609);\nvar SplitComponent = /** @class */ (function (_super) {\n    __extends(SplitComponent, _super);\n    function SplitComponent(props) {\n        var _this = _super.call(this, props) || this;\n        editorOptions_1.editorEvents.forEach(function (method) {\n            _this[method] = _this[method].bind(_this);\n        });\n        _this.debounce = editorOptions_1.debounce;\n        return _this;\n    }\n    SplitComponent.prototype.componentDidMount = function () {\n        var _this = this;\n        var _a = this.props, className = _a.className, onBeforeLoad = _a.onBeforeLoad, mode = _a.mode, focus = _a.focus, theme = _a.theme, fontSize = _a.fontSize, value = _a.value, defaultValue = _a.defaultValue, cursorStart = _a.cursorStart, showGutter = _a.showGutter, wrapEnabled = _a.wrapEnabled, showPrintMargin = _a.showPrintMargin, _b = _a.scrollMargin, scrollMargin = _b === void 0 ? [0, 0, 0, 0] : _b, keyboardHandler = _a.keyboardHandler, onLoad = _a.onLoad, commands = _a.commands, annotations = _a.annotations, markers = _a.markers, splits = _a.splits;\n        this.editor = ace.edit(this.refEditor);\n        this.editor.setTheme(\"ace/theme/\" + theme);\n        if (onBeforeLoad) {\n            onBeforeLoad(ace);\n        }\n        var editorProps = Object.keys(this.props.editorProps);\n        var split = new ext_split_1.Split(this.editor.container, \"ace/theme/\" + theme, splits);\n        this.editor.env.split = split;\n        this.splitEditor = split.getEditor(0);\n        this.split = split;\n        // in a split scenario we don't want a print margin for the entire application\n        this.editor.setShowPrintMargin(false);\n        this.editor.renderer.setShowGutter(false);\n        // get a list of possible options to avoid 'misspelled option errors'\n        var availableOptions = this.splitEditor.$options;\n        if (this.props.debounceChangePeriod) {\n            this.onChange = this.debounce(this.onChange, this.props.debounceChangePeriod);\n        }\n        split.forEach(function (editor, index) {\n            for (var i = 0; i < editorProps.length; i++) {\n                editor[editorProps[i]] = _this.props.editorProps[editorProps[i]];\n            }\n            var defaultValueForEditor = get(defaultValue, index);\n            var valueForEditor = get(value, index, \"\");\n            editor.session.setUndoManager(new ace.UndoManager());\n            editor.setTheme(\"ace/theme/\" + theme);\n            editor.renderer.setScrollMargin(scrollMargin[0], scrollMargin[1], scrollMargin[2], scrollMargin[3]);\n            editor.getSession().setMode(\"ace/mode/\" + mode);\n            editor.setFontSize(fontSize);\n            editor.renderer.setShowGutter(showGutter);\n            editor.getSession().setUseWrapMode(wrapEnabled);\n            editor.setShowPrintMargin(showPrintMargin);\n            editor.on(\"focus\", _this.onFocus);\n            editor.on(\"blur\", _this.onBlur);\n            editor.on(\"input\", _this.onInput);\n            editor.on(\"copy\", _this.onCopy);\n            editor.on(\"paste\", _this.onPaste);\n            editor.on(\"change\", _this.onChange);\n            editor\n                .getSession()\n                .selection.on(\"changeSelection\", _this.onSelectionChange);\n            editor.getSession().selection.on(\"changeCursor\", _this.onCursorChange);\n            editor.session.on(\"changeScrollTop\", _this.onScroll);\n            editor.setValue(defaultValueForEditor === undefined\n                ? valueForEditor\n                : defaultValueForEditor, cursorStart);\n            var newAnnotations = get(annotations, index, []);\n            var newMarkers = get(markers, index, []);\n            editor.getSession().setAnnotations(newAnnotations);\n            if (newMarkers && newMarkers.length > 0) {\n                _this.handleMarkers(newMarkers, editor);\n            }\n            for (var i = 0; i < editorOptions_1.editorOptions.length; i++) {\n                var option = editorOptions_1.editorOptions[i];\n                if (availableOptions.hasOwnProperty(option)) {\n                    editor.setOption(option, _this.props[option]);\n                }\n                else if (_this.props[option]) {\n                    console.warn(\"ReaceAce: editor option \" + option + \" was activated but not found. Did you need to import a related tool or did you possibly mispell the option?\");\n                }\n            }\n            _this.handleOptions(_this.props, editor);\n            if (Array.isArray(commands)) {\n                commands.forEach(function (command) {\n                    if (typeof command.exec === \"string\") {\n                        editor.commands.bindKey(command.bindKey, command.exec);\n                    }\n                    else {\n                        editor.commands.addCommand(command);\n                    }\n                });\n            }\n            if (keyboardHandler) {\n                editor.setKeyboardHandler(\"ace/keyboard/\" + keyboardHandler);\n            }\n        });\n        if (className) {\n            this.refEditor.className += \" \" + className;\n        }\n        if (focus) {\n            this.splitEditor.focus();\n        }\n        var sp = this.editor.env.split;\n        sp.setOrientation(this.props.orientation === \"below\" ? sp.BELOW : sp.BESIDE);\n        sp.resize(true);\n        if (onLoad) {\n            onLoad(sp);\n        }\n    };\n    SplitComponent.prototype.componentDidUpdate = function (prevProps) {\n        var _this = this;\n        var oldProps = prevProps;\n        var nextProps = this.props;\n        var split = this.editor.env.split;\n        if (nextProps.splits !== oldProps.splits) {\n            split.setSplits(nextProps.splits);\n        }\n        if (nextProps.orientation !== oldProps.orientation) {\n            split.setOrientation(nextProps.orientation === \"below\" ? split.BELOW : split.BESIDE);\n        }\n        split.forEach(function (editor, index) {\n            if (nextProps.mode !== oldProps.mode) {\n                editor.getSession().setMode(\"ace/mode/\" + nextProps.mode);\n            }\n            if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {\n                if (nextProps.keyboardHandler) {\n                    editor.setKeyboardHandler(\"ace/keyboard/\" + nextProps.keyboardHandler);\n                }\n                else {\n                    editor.setKeyboardHandler(null);\n                }\n            }\n            if (nextProps.fontSize !== oldProps.fontSize) {\n                editor.setFontSize(nextProps.fontSize);\n            }\n            if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {\n                editor.getSession().setUseWrapMode(nextProps.wrapEnabled);\n            }\n            if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {\n                editor.setShowPrintMargin(nextProps.showPrintMargin);\n            }\n            if (nextProps.showGutter !== oldProps.showGutter) {\n                editor.renderer.setShowGutter(nextProps.showGutter);\n            }\n            for (var i = 0; i < editorOptions_1.editorOptions.length; i++) {\n                var option = editorOptions_1.editorOptions[i];\n                if (nextProps[option] !== oldProps[option]) {\n                    editor.setOption(option, nextProps[option]);\n                }\n            }\n            if (!isEqual(nextProps.setOptions, oldProps.setOptions)) {\n                _this.handleOptions(nextProps, editor);\n            }\n            var nextValue = get(nextProps.value, index, \"\");\n            if (editor.getValue() !== nextValue) {\n                // editor.setValue is a synchronous function call, change event is emitted before setValue return.\n                _this.silent = true;\n                var pos = editor.session.selection.toJSON();\n                editor.setValue(nextValue, nextProps.cursorStart);\n                editor.session.selection.fromJSON(pos);\n                _this.silent = false;\n            }\n            var newAnnotations = get(nextProps.annotations, index, []);\n            var oldAnnotations = get(oldProps.annotations, index, []);\n            if (!isEqual(newAnnotations, oldAnnotations)) {\n                editor.getSession().setAnnotations(newAnnotations);\n            }\n            var newMarkers = get(nextProps.markers, index, []);\n            var oldMarkers = get(oldProps.markers, index, []);\n            if (!isEqual(newMarkers, oldMarkers) && Array.isArray(newMarkers)) {\n                _this.handleMarkers(newMarkers, editor);\n            }\n        });\n        if (nextProps.className !== oldProps.className) {\n            var appliedClasses = this.refEditor.className;\n            var appliedClassesArray_1 = appliedClasses.trim().split(\" \");\n            var oldClassesArray = oldProps.className.trim().split(\" \");\n            oldClassesArray.forEach(function (oldClass) {\n                var index = appliedClassesArray_1.indexOf(oldClass);\n                appliedClassesArray_1.splice(index, 1);\n            });\n            this.refEditor.className =\n                \" \" + nextProps.className + \" \" + appliedClassesArray_1.join(\" \");\n        }\n        if (nextProps.theme !== oldProps.theme) {\n            split.setTheme(\"ace/theme/\" + nextProps.theme);\n        }\n        if (nextProps.focus && !oldProps.focus) {\n            this.splitEditor.focus();\n        }\n        if (nextProps.height !== this.props.height ||\n            nextProps.width !== this.props.width) {\n            this.editor.resize();\n        }\n    };\n    SplitComponent.prototype.componentWillUnmount = function () {\n        this.editor.destroy();\n        this.editor = null;\n    };\n    SplitComponent.prototype.onChange = function (event) {\n        if (this.props.onChange && !this.silent) {\n            var value_1 = [];\n            this.editor.env.split.forEach(function (editor) {\n                value_1.push(editor.getValue());\n            });\n            this.props.onChange(value_1, event);\n        }\n    };\n    SplitComponent.prototype.onSelectionChange = function (event) {\n        if (this.props.onSelectionChange) {\n            var value_2 = [];\n            this.editor.env.split.forEach(function (editor) {\n                value_2.push(editor.getSelection());\n            });\n            this.props.onSelectionChange(value_2, event);\n        }\n    };\n    SplitComponent.prototype.onCursorChange = function (event) {\n        if (this.props.onCursorChange) {\n            var value_3 = [];\n            this.editor.env.split.forEach(function (editor) {\n                value_3.push(editor.getSelection());\n            });\n            this.props.onCursorChange(value_3, event);\n        }\n    };\n    SplitComponent.prototype.onFocus = function (event) {\n        if (this.props.onFocus) {\n            this.props.onFocus(event);\n        }\n    };\n    SplitComponent.prototype.onInput = function (event) {\n        if (this.props.onInput) {\n            this.props.onInput(event);\n        }\n    };\n    SplitComponent.prototype.onBlur = function (event) {\n        if (this.props.onBlur) {\n            this.props.onBlur(event);\n        }\n    };\n    SplitComponent.prototype.onCopy = function (text) {\n        if (this.props.onCopy) {\n            this.props.onCopy(text);\n        }\n    };\n    SplitComponent.prototype.onPaste = function (text) {\n        if (this.props.onPaste) {\n            this.props.onPaste(text);\n        }\n    };\n    SplitComponent.prototype.onScroll = function () {\n        if (this.props.onScroll) {\n            this.props.onScroll(this.editor);\n        }\n    };\n    SplitComponent.prototype.handleOptions = function (props, editor) {\n        var setOptions = Object.keys(props.setOptions);\n        for (var y = 0; y < setOptions.length; y++) {\n            editor.setOption(setOptions[y], props.setOptions[setOptions[y]]);\n        }\n    };\n    SplitComponent.prototype.handleMarkers = function (markers, editor) {\n        // remove foreground markers\n        var currentMarkers = editor.getSession().getMarkers(true);\n        for (var i in currentMarkers) {\n            if (currentMarkers.hasOwnProperty(i)) {\n                editor.getSession().removeMarker(currentMarkers[i].id);\n            }\n        }\n        // remove background markers\n        currentMarkers = editor.getSession().getMarkers(false);\n        for (var i in currentMarkers) {\n            if (currentMarkers.hasOwnProperty(i)) {\n                editor.getSession().removeMarker(currentMarkers[i].id);\n            }\n        }\n        // add new markers\n        markers.forEach(function (_a) {\n            var startRow = _a.startRow, startCol = _a.startCol, endRow = _a.endRow, endCol = _a.endCol, className = _a.className, type = _a.type, _b = _a.inFront, inFront = _b === void 0 ? false : _b;\n            var range = new ace_builds_1.Range(startRow, startCol, endRow, endCol);\n            editor\n                .getSession()\n                .addMarker(range, className, type, inFront);\n        });\n    };\n    SplitComponent.prototype.updateRef = function (item) {\n        this.refEditor = item;\n    };\n    SplitComponent.prototype.render = function () {\n        var _a = this.props, name = _a.name, width = _a.width, height = _a.height, style = _a.style;\n        var divStyle = __assign({ width: width, height: height }, style);\n        return React.createElement(\"div\", { ref: this.updateRef, id: name, style: divStyle });\n    };\n    SplitComponent.propTypes = {\n        className: PropTypes.string,\n        debounceChangePeriod: PropTypes.number,\n        defaultValue: PropTypes.arrayOf(PropTypes.string),\n        focus: PropTypes.bool,\n        fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        height: PropTypes.string,\n        mode: PropTypes.string,\n        name: PropTypes.string,\n        onBlur: PropTypes.func,\n        onChange: PropTypes.func,\n        onCopy: PropTypes.func,\n        onFocus: PropTypes.func,\n        onInput: PropTypes.func,\n        onLoad: PropTypes.func,\n        onPaste: PropTypes.func,\n        onScroll: PropTypes.func,\n        orientation: PropTypes.string,\n        showGutter: PropTypes.bool,\n        splits: PropTypes.number,\n        theme: PropTypes.string,\n        value: PropTypes.arrayOf(PropTypes.string),\n        width: PropTypes.string,\n        onSelectionChange: PropTypes.func,\n        onCursorChange: PropTypes.func,\n        onBeforeLoad: PropTypes.func,\n        minLines: PropTypes.number,\n        maxLines: PropTypes.number,\n        readOnly: PropTypes.bool,\n        highlightActiveLine: PropTypes.bool,\n        tabSize: PropTypes.number,\n        showPrintMargin: PropTypes.bool,\n        cursorStart: PropTypes.number,\n        editorProps: PropTypes.object,\n        setOptions: PropTypes.object,\n        style: PropTypes.object,\n        scrollMargin: PropTypes.array,\n        annotations: PropTypes.array,\n        markers: PropTypes.array,\n        keyboardHandler: PropTypes.string,\n        wrapEnabled: PropTypes.bool,\n        enableBasicAutocompletion: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.array\n        ]),\n        enableLiveAutocompletion: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.array\n        ]),\n        commands: PropTypes.array\n    };\n    SplitComponent.defaultProps = {\n        name: \"ace-editor\",\n        focus: false,\n        orientation: \"beside\",\n        splits: 2,\n        mode: \"\",\n        theme: \"\",\n        height: \"500px\",\n        width: \"500px\",\n        value: [],\n        fontSize: 12,\n        showGutter: true,\n        onChange: null,\n        onPaste: null,\n        onLoad: null,\n        onScroll: null,\n        minLines: null,\n        maxLines: null,\n        readOnly: false,\n        highlightActiveLine: true,\n        showPrintMargin: true,\n        tabSize: 4,\n        cursorStart: 1,\n        editorProps: {},\n        style: {},\n        scrollMargin: [0, 0, 0, 0],\n        setOptions: {},\n        wrapEnabled: false,\n        enableBasicAutocompletion: false,\n        enableLiveAutocompletion: false\n    };\n    return SplitComponent;\n}(React.Component));\nexports.default = SplitComponent;\n\n\n/***/ }),\n/* 670 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n    this.$rules = {\n        \"start\": [{\n                token: \"comment.doc.tag\",\n                regex: \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n            },\n            DocCommentHighlightRules.getTagRule(),\n            {\n                defaultToken: \"comment.doc\",\n                caseInsensitive: true\n            }]\n    };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n    return {\n        token: \"comment.doc.tag.storage.type\",\n        regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n    };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n    return {\n        token: \"comment.doc\",\n        regex: \"\\\\/\\\\*(?=\\\\*)\",\n        next: start\n    };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n    return {\n        token: \"comment.doc\",\n        regex: \"\\\\*\\\\/\",\n        next: start\n    };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n    var keywordMapper = this.createKeywordMapper({\n        \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n            \"Namespace|QName|XML|XMLList|\" + // E4X\n            \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n            \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n            \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n            \"SyntaxError|TypeError|URIError|\" +\n            \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n            \"isNaN|parseFloat|parseInt|\" +\n            \"JSON|Math|\" + // Other\n            \"this|arguments|prototype|window|document\",\n        \"keyword\": \"const|yield|import|get|set|async|await|\" +\n            \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n            \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n            \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n            \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n        \"storage.type\": \"const|let|var|function\",\n        \"constant.language\": \"null|Infinity|NaN|undefined\",\n        \"support.function\": \"alert\",\n        \"constant.language.boolean\": \"true|false\"\n    }, \"identifier\");\n    var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n    var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n        \"u[0-9a-fA-F]{4}|\" + // unicode\n        \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n        \"[0-2][0-7]{0,2}|\" + // oct\n        \"3[0-7][0-7]?|\" + // oct\n        \"[4-7][0-7]?|\" + //oct\n        \".)\";\n    this.$rules = {\n        \"no_regex\": [\n            DocCommentHighlightRules.getStartRule(\"doc-start\"),\n            comments(\"no_regex\"),\n            {\n                token: \"string\",\n                regex: \"'(?=.)\",\n                next: \"qstring\"\n            }, {\n                token: \"string\",\n                regex: '\"(?=.)',\n                next: \"qqstring\"\n            }, {\n                token: \"constant.numeric\",\n                regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n            }, {\n                token: \"constant.numeric\",\n                regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"support.function\",\n                    \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n                    \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n                    \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n                    \"keyword.operator\", \"text\",\n                    \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"entity.name.function\", \"text\", \"punctuation.operator\",\n                    \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: \"keyword\",\n                regex: \"from(?=\\\\s*('|\\\"))\"\n            }, {\n                token: \"keyword\",\n                regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n                next: \"start\"\n            }, {\n                token: [\"support.constant\"],\n                regex: /that\\b/\n            }, {\n                token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n                regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n            }, {\n                token: keywordMapper,\n                regex: identifierRe\n            }, {\n                token: \"punctuation.operator\",\n                regex: /[.](?![.])/,\n                next: \"property\"\n            }, {\n                token: \"storage.type\",\n                regex: /=>/,\n                next: \"start\"\n            }, {\n                token: \"keyword.operator\",\n                regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n                next: \"start\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: /[?:,;.]/,\n                next: \"start\"\n            }, {\n                token: \"paren.lparen\",\n                regex: /[\\[({]/,\n                next: \"start\"\n            }, {\n                token: \"paren.rparen\",\n                regex: /[\\])}]/\n            }, {\n                token: \"comment\",\n                regex: /^#!.*$/\n            }\n        ],\n        property: [{\n                token: \"text\",\n                regex: \"\\\\s+\"\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n                    \"keyword.operator\", \"text\",\n                    \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: /[.](?![.])/\n            }, {\n                token: \"support.function\",\n                regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n            }, {\n                token: \"support.function.dom\",\n                regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n            }, {\n                token: \"support.constant\",\n                regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n            }, {\n                token: \"identifier\",\n                regex: identifierRe\n            }, {\n                regex: \"\",\n                token: \"empty\",\n                next: \"no_regex\"\n            }\n        ],\n        \"start\": [\n            DocCommentHighlightRules.getStartRule(\"doc-start\"),\n            comments(\"start\"),\n            {\n                token: \"string.regexp\",\n                regex: \"\\\\/\",\n                next: \"regex\"\n            }, {\n                token: \"text\",\n                regex: \"\\\\s+|^$\",\n                next: \"start\"\n            }, {\n                token: \"empty\",\n                regex: \"\",\n                next: \"no_regex\"\n            }\n        ],\n        \"regex\": [\n            {\n                token: \"regexp.keyword.operator\",\n                regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n            }, {\n                token: \"string.regexp\",\n                regex: \"/[sxngimy]*\",\n                next: \"no_regex\"\n            }, {\n                token: \"invalid\",\n                regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n            }, {\n                token: \"constant.language.escape\",\n                regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n            }, {\n                token: \"constant.language.delimiter\",\n                regex: /\\|/\n            }, {\n                token: \"constant.language.escape\",\n                regex: /\\[\\^?/,\n                next: \"regex_character_class\"\n            }, {\n                token: \"empty\",\n                regex: \"$\",\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string.regexp\"\n            }\n        ],\n        \"regex_character_class\": [\n            {\n                token: \"regexp.charclass.keyword.operator\",\n                regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n            }, {\n                token: \"constant.language.escape\",\n                regex: \"]\",\n                next: \"regex\"\n            }, {\n                token: \"constant.language.escape\",\n                regex: \"-\"\n            }, {\n                token: \"empty\",\n                regex: \"$\",\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string.regexp.charachterclass\"\n            }\n        ],\n        \"function_arguments\": [\n            {\n                token: \"variable.parameter\",\n                regex: identifierRe\n            }, {\n                token: \"punctuation.operator\",\n                regex: \"[, ]+\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: \"$\"\n            }, {\n                token: \"empty\",\n                regex: \"\",\n                next: \"no_regex\"\n            }\n        ],\n        \"qqstring\": [\n            {\n                token: \"constant.language.escape\",\n                regex: escapedRe\n            }, {\n                token: \"string\",\n                regex: \"\\\\\\\\$\",\n                consumeLineEnd: true\n            }, {\n                token: \"string\",\n                regex: '\"|$',\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string\"\n            }\n        ],\n        \"qstring\": [\n            {\n                token: \"constant.language.escape\",\n                regex: escapedRe\n            }, {\n                token: \"string\",\n                regex: \"\\\\\\\\$\",\n                consumeLineEnd: true\n            }, {\n                token: \"string\",\n                regex: \"'|$\",\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string\"\n            }\n        ]\n    };\n    if (!options || !options.noES6) {\n        this.$rules.no_regex.unshift({\n            regex: \"[{}]\", onMatch: function (val, state, stack) {\n                this.next = val == \"{\" ? this.nextState : \"\";\n                if (val == \"{\" && stack.length) {\n                    stack.unshift(\"start\", state);\n                }\n                else if (val == \"}\" && stack.length) {\n                    stack.shift();\n                    this.next = stack.shift();\n                    if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n                        return \"paren.quasi.end\";\n                }\n                return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n            },\n            nextState: \"start\"\n        }, {\n            token: \"string.quasi.start\",\n            regex: /`/,\n            push: [{\n                    token: \"constant.language.escape\",\n                    regex: escapedRe\n                }, {\n                    token: \"paren.quasi.start\",\n                    regex: /\\${/,\n                    push: \"start\"\n                }, {\n                    token: \"string.quasi.end\",\n                    regex: /`/,\n                    next: \"pop\"\n                }, {\n                    defaultToken: \"string.quasi\"\n                }]\n        });\n        if (!options || options.jsx != false)\n            JSX.call(this);\n    }\n    this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n    this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n    var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n    var jsxTag = {\n        onMatch: function (val, state, stack) {\n            var offset = val.charAt(1) == \"/\" ? 2 : 1;\n            if (offset == 1) {\n                if (state != this.nextState)\n                    stack.unshift(this.next, this.nextState, 0);\n                else\n                    stack.unshift(this.next);\n                stack[2]++;\n            }\n            else if (offset == 2) {\n                if (state == this.nextState) {\n                    stack[1]--;\n                    if (!stack[1] || stack[1] < 0) {\n                        stack.shift();\n                        stack.shift();\n                    }\n                }\n            }\n            return [{\n                    type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n                    value: val.slice(0, offset)\n                }, {\n                    type: \"meta.tag.tag-name.xml\",\n                    value: val.substr(offset)\n                }];\n        },\n        regex: \"</?\" + tagRegex + \"\",\n        next: \"jsxAttributes\",\n        nextState: \"jsx\"\n    };\n    this.$rules.start.unshift(jsxTag);\n    var jsxJsRule = {\n        regex: \"{\",\n        token: \"paren.quasi.start\",\n        push: \"start\"\n    };\n    this.$rules.jsx = [\n        jsxJsRule,\n        jsxTag,\n        { include: \"reference\" },\n        { defaultToken: \"string\" }\n    ];\n    this.$rules.jsxAttributes = [{\n            token: \"meta.tag.punctuation.tag-close.xml\",\n            regex: \"/?>\",\n            onMatch: function (value, currentState, stack) {\n                if (currentState == stack[0])\n                    stack.shift();\n                if (value.length == 2) {\n                    if (stack[0] == this.nextState)\n                        stack[1]--;\n                    if (!stack[1] || stack[1] < 0) {\n                        stack.splice(0, 2);\n                    }\n                }\n                this.next = stack[0] || \"start\";\n                return [{ type: this.token, value: value }];\n            },\n            nextState: \"jsx\"\n        },\n        jsxJsRule,\n        comments(\"jsxAttributes\"),\n        {\n            token: \"entity.other.attribute-name.xml\",\n            regex: tagRegex\n        }, {\n            token: \"keyword.operator.attribute-equals.xml\",\n            regex: \"=\"\n        }, {\n            token: \"text.tag-whitespace.xml\",\n            regex: \"\\\\s+\"\n        }, {\n            token: \"string.attribute-value.xml\",\n            regex: \"'\",\n            stateName: \"jsx_attr_q\",\n            push: [\n                { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n                { include: \"reference\" },\n                { defaultToken: \"string.attribute-value.xml\" }\n            ]\n        }, {\n            token: \"string.attribute-value.xml\",\n            regex: '\"',\n            stateName: \"jsx_attr_qq\",\n            push: [\n                { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n                { include: \"reference\" },\n                { defaultToken: \"string.attribute-value.xml\" }\n            ]\n        },\n        jsxTag\n    ];\n    this.$rules.reference = [{\n            token: \"constant.language.escape.reference.xml\",\n            regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n        }];\n}\nfunction comments(next) {\n    return [\n        {\n            token: \"comment\",\n            regex: /\\/\\*/,\n            next: [\n                DocCommentHighlightRules.getTagRule(),\n                { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n                { defaultToken: \"comment\", caseInsensitive: true }\n            ]\n        }, {\n            token: \"comment\",\n            regex: \"\\\\/\\\\/\",\n            next: [\n                DocCommentHighlightRules.getTagRule(),\n                { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n                { defaultToken: \"comment\", caseInsensitive: true }\n            ]\n        }\n    ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n    this.checkOutdent = function (line, input) {\n        if (!/^\\s+$/.test(line))\n            return false;\n        return /^\\s*\\}/.test(input);\n    };\n    this.autoOutdent = function (doc, row) {\n        var line = doc.getLine(row);\n        var match = line.match(/^(\\s*\\})/);\n        if (!match)\n            return 0;\n        var column = match[1].length;\n        var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n        if (!openBracePos || openBracePos.row == row)\n            return 0;\n        var indent = this.$getIndent(doc.getLine(openBracePos.row));\n        doc.replace(new Range(row, 0, row, column - 1), indent);\n    };\n    this.$getIndent = function (line) {\n        return line.match(/^\\s*/)[0];\n    };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n    if (commentRegex) {\n        this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n        this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n    }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n    this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n    this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n    this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n    this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n    this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n    this._getFoldWidgetBase = this.getFoldWidget;\n    this.getFoldWidget = function (session, foldStyle, row) {\n        var line = session.getLine(row);\n        if (this.singleLineBlockCommentRe.test(line)) {\n            if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n                return \"\";\n        }\n        var fw = this._getFoldWidgetBase(session, foldStyle, row);\n        if (!fw && this.startRegionRe.test(line))\n            return \"start\"; // lineCommentRegionStart\n        return fw;\n    };\n    this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n        var line = session.getLine(row);\n        if (this.startRegionRe.test(line))\n            return this.getCommentRegionBlock(session, line, row);\n        var match = line.match(this.foldingStartMarker);\n        if (match) {\n            var i = match.index;\n            if (match[1])\n                return this.openingBracketBlock(session, match[1], row, i);\n            var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n            if (range && !range.isMultiLine()) {\n                if (forceMultiline) {\n                    range = this.getSectionRange(session, row);\n                }\n                else if (foldStyle != \"all\")\n                    range = null;\n            }\n            return range;\n        }\n        if (foldStyle === \"markbegin\")\n            return;\n        var match = line.match(this.foldingStopMarker);\n        if (match) {\n            var i = match.index + match[0].length;\n            if (match[1])\n                return this.closingBracketBlock(session, match[1], row, i);\n            return session.getCommentFoldRange(row, i, -1);\n        }\n    };\n    this.getSectionRange = function (session, row) {\n        var line = session.getLine(row);\n        var startIndent = line.search(/\\S/);\n        var startRow = row;\n        var startColumn = line.length;\n        row = row + 1;\n        var endRow = row;\n        var maxRow = session.getLength();\n        while (++row < maxRow) {\n            line = session.getLine(row);\n            var indent = line.search(/\\S/);\n            if (indent === -1)\n                continue;\n            if (startIndent > indent)\n                break;\n            var subRange = this.getFoldWidgetRange(session, \"all\", row);\n            if (subRange) {\n                if (subRange.start.row <= startRow) {\n                    break;\n                }\n                else if (subRange.isMultiLine()) {\n                    row = subRange.end.row;\n                }\n                else if (startIndent == indent) {\n                    break;\n                }\n            }\n            endRow = row;\n        }\n        return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n    };\n    this.getCommentRegionBlock = function (session, line, row) {\n        var startColumn = line.search(/\\s*$/);\n        var maxRow = session.getLength();\n        var startRow = row;\n        var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n        var depth = 1;\n        while (++row < maxRow) {\n            line = session.getLine(row);\n            var m = re.exec(line);\n            if (!m)\n                continue;\n            if (m[1])\n                depth--;\n            else\n                depth++;\n            if (!depth)\n                break;\n        }\n        var endRow = row;\n        if (endRow > startRow) {\n            return new Range(startRow, startColumn, endRow, line.length);\n        }\n    };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n    this.HighlightRules = JavaScriptHighlightRules;\n    this.$outdent = new MatchingBraceOutdent();\n    this.$behaviour = new CstyleBehaviour();\n    this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n    this.lineCommentStart = \"//\";\n    this.blockComment = { start: \"/*\", end: \"*/\" };\n    this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n    this.getNextLineIndent = function (state, line, tab) {\n        var indent = this.$getIndent(line);\n        var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n        var tokens = tokenizedLine.tokens;\n        var endState = tokenizedLine.state;\n        if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n            return indent;\n        }\n        if (state == \"start\" || state == \"no_regex\") {\n            var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n            if (match) {\n                indent += tab;\n            }\n        }\n        else if (state == \"doc-start\") {\n            if (endState == \"start\" || endState == \"no_regex\") {\n                return \"\";\n            }\n            var match = line.match(/^\\s*(\\/?)\\*/);\n            if (match) {\n                if (match[1]) {\n                    indent += \" \";\n                }\n                indent += \"* \";\n            }\n        }\n        return indent;\n    };\n    this.checkOutdent = function (state, line, input) {\n        return this.$outdent.checkOutdent(line, input);\n    };\n    this.autoOutdent = function (state, doc, row) {\n        this.$outdent.autoOutdent(doc, row);\n    };\n    this.createWorker = function (session) {\n        var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n        worker.attachToDocument(session.getDocument());\n        worker.on(\"annotate\", function (results) {\n            session.setAnnotations(results.data);\n        });\n        worker.on(\"terminate\", function () {\n            session.clearAnnotations();\n        });\n        return worker;\n    };\n    this.$id = \"ace/mode/javascript\";\n    this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n    var keywordMapper = this.createKeywordMapper({\n        \"support.function\": supportFunction,\n        \"support.constant\": supportConstant,\n        \"support.type\": supportType,\n        \"support.constant.color\": supportConstantColor,\n        \"support.constant.fonts\": supportConstantFonts\n    }, \"text\", true);\n    this.$rules = {\n        \"start\": [{\n                include: [\"strings\", \"url\", \"comments\"]\n            }, {\n                token: \"paren.lparen\",\n                regex: \"\\\\{\",\n                next: \"ruleset\"\n            }, {\n                token: \"paren.rparen\",\n                regex: \"\\\\}\"\n            }, {\n                token: \"string\",\n                regex: \"@(?!viewport)\",\n                next: \"media\"\n            }, {\n                token: \"keyword\",\n                regex: \"#[a-z0-9-_]+\"\n            }, {\n                token: \"keyword\",\n                regex: \"%\"\n            }, {\n                token: \"variable\",\n                regex: \"\\\\.[a-z0-9-_]+\"\n            }, {\n                token: \"string\",\n                regex: \":[a-z0-9-_]+\"\n            }, {\n                token: \"constant.numeric\",\n                regex: numRe\n            }, {\n                token: \"constant\",\n                regex: \"[a-z0-9-_]+\"\n            }, {\n                caseInsensitive: true\n            }],\n        \"media\": [{\n                include: [\"strings\", \"url\", \"comments\"]\n            }, {\n                token: \"paren.lparen\",\n                regex: \"\\\\{\",\n                next: \"start\"\n            }, {\n                token: \"paren.rparen\",\n                regex: \"\\\\}\",\n                next: \"start\"\n            }, {\n                token: \"string\",\n                regex: \";\",\n                next: \"start\"\n            }, {\n                token: \"keyword\",\n                regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n                    + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n                    + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n            }],\n        \"comments\": [{\n                token: \"comment\",\n                regex: \"\\\\/\\\\*\",\n                push: [{\n                        token: \"comment\",\n                        regex: \"\\\\*\\\\/\",\n                        next: \"pop\"\n                    }, {\n                        defaultToken: \"comment\"\n                    }]\n            }],\n        \"ruleset\": [{\n                regex: \"-(webkit|ms|moz|o)-\",\n                token: \"text\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: \"[:;]\"\n            }, {\n                token: \"paren.rparen\",\n                regex: \"\\\\}\",\n                next: \"start\"\n            }, {\n                include: [\"strings\", \"url\", \"comments\"]\n            }, {\n                token: [\"constant.numeric\", \"keyword\"],\n                regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n            }, {\n                token: \"constant.numeric\",\n                regex: numRe\n            }, {\n                token: \"constant.numeric\",\n                regex: \"#[a-f0-9]{6}\"\n            }, {\n                token: \"constant.numeric\",\n                regex: \"#[a-f0-9]{3}\"\n            }, {\n                token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n                regex: pseudoElements\n            }, {\n                token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n                regex: pseudoClasses\n            }, {\n                include: \"url\"\n            }, {\n                token: keywordMapper,\n                regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n            }, {\n                caseInsensitive: true\n            }],\n        url: [{\n                token: \"support.function\",\n                regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n                push: [{\n                        token: \"support.function\",\n                        regex: \"\\\\)\",\n                        next: \"pop\"\n                    }, {\n                        defaultToken: \"string\"\n                    }]\n            }],\n        strings: [{\n                token: \"string.start\",\n                regex: \"'\",\n                push: [{\n                        token: \"string.end\",\n                        regex: \"'|$\",\n                        next: \"pop\"\n                    }, {\n                        include: \"escapes\"\n                    }, {\n                        token: \"constant.language.escape\",\n                        regex: /\\\\$/,\n                        consumeLineEnd: true\n                    }, {\n                        defaultToken: \"string\"\n                    }]\n            }, {\n                token: \"string.start\",\n                regex: '\"',\n                push: [{\n                        token: \"string.end\",\n                        regex: '\"|$',\n                        next: \"pop\"\n                    }, {\n                        include: \"escapes\"\n                    }, {\n                        token: \"constant.language.escape\",\n                        regex: /\\\\$/,\n                        consumeLineEnd: true\n                    }, {\n                        defaultToken: \"string\"\n                    }]\n            }],\n        escapes: [{\n                token: \"constant.language.escape\",\n                regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n            }]\n    };\n    this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n    \"background\": { \"#$0\": 1 },\n    \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n    \"background-image\": { \"url('/$0')\": 1 },\n    \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n    \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n    \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n    \"background-size\": { \"cover\": 1, \"contain\": 1 },\n    \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n    \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n    \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n    \"border-color\": { \"#$0\": 1 },\n    \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n    \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n    \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n    \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n    \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n    \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n    \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n    \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n    \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n    \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n    \"font-style\": { \"italic\": 1, \"normal\": 1 },\n    \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n    \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"letter-spacing\": { \"normal\": 1 },\n    \"line-height\": { \"normal\": 1 },\n    \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n    \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n    \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n    \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n    \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n    \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n    \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n    \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n    \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n    \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n    \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n    \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n    \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n    \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n    \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"word-spacing\": { \"normal\": 1 },\n    \"filter\": { \"alpha(opacity=$0100)\": 1 },\n    \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n    \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n    \"-moz-border-radius\": 1,\n    \"-moz-border-radius-topright\": 1,\n    \"-moz-border-radius-bottomright\": 1,\n    \"-moz-border-radius-topleft\": 1,\n    \"-moz-border-radius-bottomleft\": 1,\n    \"-webkit-border-radius\": 1,\n    \"-webkit-border-top-right-radius\": 1,\n    \"-webkit-border-top-left-radius\": 1,\n    \"-webkit-border-bottom-right-radius\": 1,\n    \"-webkit-border-bottom-left-radius\": 1,\n    \"-moz-box-shadow\": 1,\n    \"-webkit-box-shadow\": 1,\n    \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n    \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n    \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n    this.completionsDefined = false;\n    this.defineCompletions = function () {\n        if (document) {\n            var style = document.createElement('c').style;\n            for (var i in style) {\n                if (typeof style[i] !== 'string')\n                    continue;\n                var name = i.replace(/[A-Z]/g, function (x) {\n                    return '-' + x.toLowerCase();\n                });\n                if (!propertyMap.hasOwnProperty(name))\n                    propertyMap[name] = 1;\n            }\n        }\n        this.completionsDefined = true;\n    };\n    this.getCompletions = function (state, session, pos, prefix) {\n        if (!this.completionsDefined) {\n            this.defineCompletions();\n        }\n        if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n            var line = session.getLine(pos.row).substr(0, pos.column);\n            if (/:[^;]+$/.test(line)) {\n                /([\\w\\-]+):[^:]*$/.test(line);\n                return this.getPropertyValueCompletions(state, session, pos, prefix);\n            }\n            else {\n                return this.getPropertyCompletions(state, session, pos, prefix);\n            }\n        }\n        return [];\n    };\n    this.getPropertyCompletions = function (state, session, pos, prefix) {\n        var properties = Object.keys(propertyMap);\n        return properties.map(function (property) {\n            return {\n                caption: property,\n                snippet: property + ': $0;',\n                meta: \"property\",\n                score: 1000000\n            };\n        });\n    };\n    this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n        var line = session.getLine(pos.row).substr(0, pos.column);\n        var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n        if (!property)\n            return [];\n        var values = [];\n        if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n            values = Object.keys(propertyMap[property]);\n        }\n        return values.map(function (value) {\n            return {\n                caption: value,\n                snippet: value,\n                meta: \"property value\",\n                score: 1000000\n            };\n        });\n    };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n    this.inherit(CstyleBehaviour);\n    this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n        if (text === ':' && editor.selection.isEmpty()) {\n            var cursor = editor.getCursorPosition();\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            if (token && token.value.match(/\\s+/)) {\n                token = iterator.stepBackward();\n            }\n            if (token && token.type === 'support.type') {\n                var line = session.doc.getLine(cursor.row);\n                var rightChar = line.substring(cursor.column, cursor.column + 1);\n                if (rightChar === ':') {\n                    return {\n                        text: '',\n                        selection: [1, 1]\n                    };\n                }\n                if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n                    return {\n                        text: ':;',\n                        selection: [1, 1]\n                    };\n                }\n            }\n        }\n    });\n    this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n        var selected = session.doc.getTextRange(range);\n        if (!range.isMultiLine() && selected === ':') {\n            var cursor = editor.getCursorPosition();\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            if (token && token.value.match(/\\s+/)) {\n                token = iterator.stepBackward();\n            }\n            if (token && token.type === 'support.type') {\n                var line = session.doc.getLine(range.start.row);\n                var rightChar = line.substring(range.end.column, range.end.column + 1);\n                if (rightChar === ';') {\n                    range.end.column++;\n                    return range;\n                }\n            }\n        }\n    });\n    this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n        if (text === ';' && editor.selection.isEmpty()) {\n            var cursor = editor.getCursorPosition();\n            var line = session.doc.getLine(cursor.row);\n            var rightChar = line.substring(cursor.column, cursor.column + 1);\n            if (rightChar === ';') {\n                return {\n                    text: '',\n                    selection: [1, 1]\n                };\n            }\n        }\n    });\n    this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n        if (text === '!' && editor.selection.isEmpty()) {\n            var cursor = editor.getCursorPosition();\n            var line = session.doc.getLine(cursor.row);\n            if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n                return {\n                    text: '!important',\n                    selection: [10, 10]\n                };\n            }\n        }\n    });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n    this.HighlightRules = CssHighlightRules;\n    this.$outdent = new MatchingBraceOutdent();\n    this.$behaviour = new CssBehaviour();\n    this.$completer = new CssCompletions();\n    this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n    this.foldingRules = \"cStyle\";\n    this.blockComment = { start: \"/*\", end: \"*/\" };\n    this.getNextLineIndent = function (state, line, tab) {\n        var indent = this.$getIndent(line);\n        var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n        if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n            return indent;\n        }\n        var match = line.match(/^.*\\{\\s*$/);\n        if (match) {\n            indent += tab;\n        }\n        return indent;\n    };\n    this.checkOutdent = function (state, line, input) {\n        return this.$outdent.checkOutdent(line, input);\n    };\n    this.autoOutdent = function (state, doc, row) {\n        this.$outdent.autoOutdent(doc, row);\n    };\n    this.getCompletions = function (state, session, pos, prefix) {\n        return this.$completer.getCompletions(state, session, pos, prefix);\n    };\n    this.createWorker = function (session) {\n        var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n        worker.attachToDocument(session.getDocument());\n        worker.on(\"annotate\", function (e) {\n            session.setAnnotations(e.data);\n        });\n        worker.on(\"terminate\", function () {\n            session.clearAnnotations();\n        });\n        return worker;\n    };\n    this.$id = \"ace/mode/css\";\n    this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n    var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n    this.$rules = {\n        start: [\n            { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n            {\n                token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n                regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n            },\n            { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n            {\n                token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n                regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n            },\n            { include: \"tag\" },\n            { token: \"text.end-tag-open.xml\", regex: \"</\" },\n            { token: \"text.tag-open.xml\", regex: \"<\" },\n            { include: \"reference\" },\n            { defaultToken: \"text.xml\" }\n        ],\n        processing_instruction: [{\n                token: \"entity.other.attribute-name.decl-attribute-name.xml\",\n                regex: tagRegex\n            }, {\n                token: \"keyword.operator.decl-attribute-equals.xml\",\n                regex: \"=\"\n            }, {\n                include: \"whitespace\"\n            }, {\n                include: \"string\"\n            }, {\n                token: \"punctuation.xml-decl.xml\",\n                regex: \"\\\\?>\",\n                next: \"start\"\n            }],\n        doctype: [\n            { include: \"whitespace\" },\n            { include: \"string\" },\n            { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n            { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n            { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n        ],\n        int_subset: [{\n                token: \"text.xml\",\n                regex: \"\\\\s+\"\n            }, {\n                token: \"punctuation.int-subset.xml\",\n                regex: \"]\",\n                next: \"pop\"\n            }, {\n                token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n                regex: \"(<\\\\!)(\" + tagRegex + \")\",\n                push: [{\n                        token: \"text\",\n                        regex: \"\\\\s+\"\n                    },\n                    {\n                        token: \"punctuation.markup-decl.xml\",\n                        regex: \">\",\n                        next: \"pop\"\n                    },\n                    { include: \"string\" }]\n            }],\n        cdata: [\n            { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n            { token: \"text.xml\", regex: \"\\\\s+\" },\n            { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n        ],\n        comment: [\n            { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n            { defaultToken: \"comment.xml\" }\n        ],\n        reference: [{\n                token: \"constant.language.escape.reference.xml\",\n                regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n            }],\n        attr_reference: [{\n                token: \"constant.language.escape.reference.attribute-value.xml\",\n                regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n            }],\n        tag: [{\n                token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n                regex: \"(?:(<)|(</))((?:\" + tagRegex + \":)?\" + tagRegex + \")\",\n                next: [\n                    { include: \"attributes\" },\n                    { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\" }\n                ]\n            }],\n        tag_whitespace: [\n            { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n        ],\n        whitespace: [\n            { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n        ],\n        string: [{\n                token: \"string.xml\",\n                regex: \"'\",\n                push: [\n                    { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n                    { defaultToken: \"string.xml\" }\n                ]\n            }, {\n                token: \"string.xml\",\n                regex: '\"',\n                push: [\n                    { token: \"string.xml\", regex: '\"', next: \"pop\" },\n                    { defaultToken: \"string.xml\" }\n                ]\n            }],\n        attributes: [{\n                token: \"entity.other.attribute-name.xml\",\n                regex: tagRegex\n            }, {\n                token: \"keyword.operator.attribute-equals.xml\",\n                regex: \"=\"\n            }, {\n                include: \"tag_whitespace\"\n            }, {\n                include: \"attribute_value\"\n            }],\n        attribute_value: [{\n                token: \"string.attribute-value.xml\",\n                regex: \"'\",\n                push: [\n                    { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n                    { include: \"attr_reference\" },\n                    { defaultToken: \"string.attribute-value.xml\" }\n                ]\n            }, {\n                token: \"string.attribute-value.xml\",\n                regex: '\"',\n                push: [\n                    { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n                    { include: \"attr_reference\" },\n                    { defaultToken: \"string.attribute-value.xml\" }\n                ]\n            }]\n    };\n    if (this.constructor === XmlHighlightRules)\n        this.normalizeRules();\n};\n(function () {\n    this.embedTagRules = function (HighlightRules, prefix, tag) {\n        this.$rules.tag.unshift({\n            token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n            regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n            next: [\n                { include: \"attributes\" },\n                { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n            ]\n        });\n        this.$rules[tag + \"-end\"] = [\n            { include: \"attributes\" },\n            { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n                onMatch: function (value, currentState, stack) {\n                    stack.splice(0);\n                    return this.token;\n                } }\n        ];\n        this.embedRules(HighlightRules, prefix, [{\n                token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n                regex: \"(</)(\" + tag + \"(?=\\\\s|>|$))\",\n                next: tag + \"-end\"\n            }, {\n                token: \"string.cdata.xml\",\n                regex: \"<\\\\!\\\\[CDATA\\\\[\"\n            }, {\n                token: \"string.cdata.xml\",\n                regex: \"\\\\]\\\\]>\"\n            }]);\n    };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar tagMap = lang.createMap({\n    a: 'anchor',\n    button: 'form',\n    form: 'form',\n    img: 'image',\n    input: 'form',\n    label: 'form',\n    option: 'form',\n    script: 'script',\n    select: 'form',\n    textarea: 'form',\n    style: 'style',\n    table: 'table',\n    tbody: 'table',\n    td: 'table',\n    tfoot: 'table',\n    th: 'table',\n    tr: 'table'\n});\nvar HtmlHighlightRules = function () {\n    XmlHighlightRules.call(this);\n    this.addRules({\n        attributes: [{\n                include: \"tag_whitespace\"\n            }, {\n                token: \"entity.other.attribute-name.xml\",\n                regex: \"[-_a-zA-Z0-9:.]+\"\n            }, {\n                token: \"keyword.operator.attribute-equals.xml\",\n                regex: \"=\",\n                push: [{\n                        include: \"tag_whitespace\"\n                    }, {\n                        token: \"string.unquoted.attribute-value.html\",\n                        regex: \"[^<>='\\\"`\\\\s]+\",\n                        next: \"pop\"\n                    }, {\n                        token: \"empty\",\n                        regex: \"\",\n                        next: \"pop\"\n                    }]\n            }, {\n                include: \"attribute_value\"\n            }],\n        tag: [{\n                token: function (start, tag) {\n                    var group = tagMap[tag];\n                    return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n                        \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n                },\n                regex: \"(</?)([-_a-zA-Z0-9:.]+)\",\n                next: \"tag_stuff\"\n            }],\n        tag_stuff: [\n            { include: \"attributes\" },\n            { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\" }\n        ]\n    });\n    this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n    this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), \"js-\", \"script\");\n    if (this.constructor === HtmlHighlightRules)\n        this.normalizeRules();\n};\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\nexports.HtmlHighlightRules = HtmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nfunction is(token, type) {\n    return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n    this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n        if (text == '\"' || text == \"'\") {\n            var quote = text;\n            var selected = session.doc.getTextRange(editor.getSelectionRange());\n            if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n                return {\n                    text: quote + selected + quote,\n                    selection: false\n                };\n            }\n            var cursor = editor.getCursorPosition();\n            var line = session.doc.getLine(cursor.row);\n            var rightChar = line.substring(cursor.column, cursor.column + 1);\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n                return {\n                    text: \"\",\n                    selection: [1, 1]\n                };\n            }\n            if (!token)\n                token = iterator.stepBackward();\n            if (!token)\n                return;\n            while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n                token = iterator.stepBackward();\n            }\n            var rightSpace = !rightChar || rightChar.match(/\\s/);\n            if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n                return {\n                    text: quote + quote,\n                    selection: [1, 1]\n                };\n            }\n        }\n    });\n    this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n        var selected = session.doc.getTextRange(range);\n        if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n            var line = session.doc.getLine(range.start.row);\n            var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n            if (rightChar == selected) {\n                range.end.column++;\n                return range;\n            }\n        }\n    });\n    this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n        if (text == '>') {\n            var position = editor.getSelectionRange().start;\n            var iterator = new TokenIterator(session, position.row, position.column);\n            var token = iterator.getCurrentToken() || iterator.stepBackward();\n            if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n                return;\n            if (is(token, \"reference.attribute-value\"))\n                return;\n            if (is(token, \"attribute-value\")) {\n                var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n                if (position.column < tokenEndColumn)\n                    return;\n                if (position.column == tokenEndColumn) {\n                    var nextToken = iterator.stepForward();\n                    if (nextToken && is(nextToken, \"attribute-value\"))\n                        return;\n                    iterator.stepBackward();\n                }\n            }\n            if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n                return;\n            while (!is(token, \"tag-name\")) {\n                token = iterator.stepBackward();\n                if (token.value == \"<\") {\n                    token = iterator.stepForward();\n                    break;\n                }\n            }\n            var tokenRow = iterator.getCurrentTokenRow();\n            var tokenColumn = iterator.getCurrentTokenColumn();\n            if (is(iterator.stepBackward(), \"end-tag-open\"))\n                return;\n            var element = token.value;\n            if (tokenRow == position.row)\n                element = element.substring(0, position.column - tokenColumn);\n            if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n                return;\n            return {\n                text: \">\" + \"</\" + element + \">\",\n                selection: [1, 1]\n            };\n        }\n    });\n    this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n        if (text == \"\\n\") {\n            var cursor = editor.getCursorPosition();\n            var line = session.getLine(cursor.row);\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            if (token && token.type.indexOf(\"tag-close\") !== -1) {\n                if (token.value == \"/>\")\n                    return;\n                while (token && token.type.indexOf(\"tag-name\") === -1) {\n                    token = iterator.stepBackward();\n                }\n                if (!token) {\n                    return;\n                }\n                var tag = token.value;\n                var row = iterator.getCurrentTokenRow();\n                token = iterator.stepBackward();\n                if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n                    return;\n                }\n                if (this.voidElements && !this.voidElements[tag]) {\n                    var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n                    var line = session.getLine(row);\n                    var nextIndent = this.$getIndent(line);\n                    var indent = nextIndent + session.getTabString();\n                    if (nextToken && nextToken.value === \"</\") {\n                        return {\n                            text: \"\\n\" + indent + \"\\n\" + nextIndent,\n                            selection: [1, indent.length, 1, indent.length]\n                        };\n                    }\n                    else {\n                        return {\n                            text: \"\\n\" + indent\n                        };\n                    }\n                }\n            }\n        }\n    });\n};\noop.inherits(XmlBehaviour, Behaviour);\nexports.XmlBehaviour = XmlBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/mixed\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (defaultMode, subModes) {\n    this.defaultMode = defaultMode;\n    this.subModes = subModes;\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n    this.$getMode = function (state) {\n        if (typeof state != \"string\")\n            state = state[0];\n        for (var key in this.subModes) {\n            if (state.indexOf(key) === 0)\n                return this.subModes[key];\n        }\n        return null;\n    };\n    this.$tryMode = function (state, session, foldStyle, row) {\n        var mode = this.$getMode(state);\n        return (mode ? mode.getFoldWidget(session, foldStyle, row) : \"\");\n    };\n    this.getFoldWidget = function (session, foldStyle, row) {\n        return (this.$tryMode(session.getState(row - 1), session, foldStyle, row) ||\n            this.$tryMode(session.getState(row), session, foldStyle, row) ||\n            this.defaultMode.getFoldWidget(session, foldStyle, row));\n    };\n    this.getFoldWidgetRange = function (session, foldStyle, row) {\n        var mode = this.$getMode(session.getState(row - 1));\n        if (!mode || !mode.getFoldWidget(session, foldStyle, row))\n            mode = this.$getMode(session.getState(row));\n        if (!mode || !mode.getFoldWidget(session, foldStyle, row))\n            mode = this.defaultMode;\n        return mode.getFoldWidgetRange(session, foldStyle, row);\n    };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/range\",\"ace/mode/folding/fold_mode\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar lang = require(\"../../lib/lang\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar FoldMode = exports.FoldMode = function (voidElements, optionalEndTags) {\n    BaseFoldMode.call(this);\n    this.voidElements = voidElements || {};\n    this.optionalEndTags = oop.mixin({}, this.voidElements);\n    if (optionalEndTags)\n        oop.mixin(this.optionalEndTags, optionalEndTags);\n};\noop.inherits(FoldMode, BaseFoldMode);\nvar Tag = function () {\n    this.tagName = \"\";\n    this.closing = false;\n    this.selfClosing = false;\n    this.start = { row: 0, column: 0 };\n    this.end = { row: 0, column: 0 };\n};\nfunction is(token, type) {\n    return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n(function () {\n    this.getFoldWidget = function (session, foldStyle, row) {\n        var tag = this._getFirstTagInLine(session, row);\n        if (!tag)\n            return this.getCommentFoldWidget(session, row);\n        if (tag.closing || (!tag.tagName && tag.selfClosing))\n            return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n        if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n            return \"\";\n        if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n            return \"\";\n        return \"start\";\n    };\n    this.getCommentFoldWidget = function (session, row) {\n        if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row)))\n            return \"start\";\n        return \"\";\n    };\n    this._getFirstTagInLine = function (session, row) {\n        var tokens = session.getTokens(row);\n        var tag = new Tag();\n        for (var i = 0; i < tokens.length; i++) {\n            var token = tokens[i];\n            if (is(token, \"tag-open\")) {\n                tag.end.column = tag.start.column + token.value.length;\n                tag.closing = is(token, \"end-tag-open\");\n                token = tokens[++i];\n                if (!token)\n                    return null;\n                tag.tagName = token.value;\n                tag.end.column += token.value.length;\n                for (i++; i < tokens.length; i++) {\n                    token = tokens[i];\n                    tag.end.column += token.value.length;\n                    if (is(token, \"tag-close\")) {\n                        tag.selfClosing = token.value == '/>';\n                        break;\n                    }\n                }\n                return tag;\n            }\n            else if (is(token, \"tag-close\")) {\n                tag.selfClosing = token.value == '/>';\n                return tag;\n            }\n            tag.start.column += token.value.length;\n        }\n        return null;\n    };\n    this._findEndTagInLine = function (session, row, tagName, startColumn) {\n        var tokens = session.getTokens(row);\n        var column = 0;\n        for (var i = 0; i < tokens.length; i++) {\n            var token = tokens[i];\n            column += token.value.length;\n            if (column < startColumn)\n                continue;\n            if (is(token, \"end-tag-open\")) {\n                token = tokens[i + 1];\n                if (token && token.value == tagName)\n                    return true;\n            }\n        }\n        return false;\n    };\n    this._readTagForward = function (iterator) {\n        var token = iterator.getCurrentToken();\n        if (!token)\n            return null;\n        var tag = new Tag();\n        do {\n            if (is(token, \"tag-open\")) {\n                tag.closing = is(token, \"end-tag-open\");\n                tag.start.row = iterator.getCurrentTokenRow();\n                tag.start.column = iterator.getCurrentTokenColumn();\n            }\n            else if (is(token, \"tag-name\")) {\n                tag.tagName = token.value;\n            }\n            else if (is(token, \"tag-close\")) {\n                tag.selfClosing = token.value == \"/>\";\n                tag.end.row = iterator.getCurrentTokenRow();\n                tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n                iterator.stepForward();\n                return tag;\n            }\n        } while (token = iterator.stepForward());\n        return null;\n    };\n    this._readTagBackward = function (iterator) {\n        var token = iterator.getCurrentToken();\n        if (!token)\n            return null;\n        var tag = new Tag();\n        do {\n            if (is(token, \"tag-open\")) {\n                tag.closing = is(token, \"end-tag-open\");\n                tag.start.row = iterator.getCurrentTokenRow();\n                tag.start.column = iterator.getCurrentTokenColumn();\n                iterator.stepBackward();\n                return tag;\n            }\n            else if (is(token, \"tag-name\")) {\n                tag.tagName = token.value;\n            }\n            else if (is(token, \"tag-close\")) {\n                tag.selfClosing = token.value == \"/>\";\n                tag.end.row = iterator.getCurrentTokenRow();\n                tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n            }\n        } while (token = iterator.stepBackward());\n        return null;\n    };\n    this._pop = function (stack, tag) {\n        while (stack.length) {\n            var top = stack[stack.length - 1];\n            if (!tag || top.tagName == tag.tagName) {\n                return stack.pop();\n            }\n            else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n                stack.pop();\n                continue;\n            }\n            else {\n                return null;\n            }\n        }\n    };\n    this.getFoldWidgetRange = function (session, foldStyle, row) {\n        var firstTag = this._getFirstTagInLine(session, row);\n        if (!firstTag) {\n            return this.getCommentFoldWidget(session, row)\n                && session.getCommentFoldRange(row, session.getLine(row).length);\n        }\n        var isBackward = firstTag.closing || firstTag.selfClosing;\n        var stack = [];\n        var tag;\n        if (!isBackward) {\n            var iterator = new TokenIterator(session, row, firstTag.start.column);\n            var start = {\n                row: row,\n                column: firstTag.start.column + firstTag.tagName.length + 2\n            };\n            if (firstTag.start.row == firstTag.end.row)\n                start.column = firstTag.end.column;\n            while (tag = this._readTagForward(iterator)) {\n                if (tag.selfClosing) {\n                    if (!stack.length) {\n                        tag.start.column += tag.tagName.length + 2;\n                        tag.end.column -= 2;\n                        return Range.fromPoints(tag.start, tag.end);\n                    }\n                    else\n                        continue;\n                }\n                if (tag.closing) {\n                    this._pop(stack, tag);\n                    if (stack.length == 0)\n                        return Range.fromPoints(start, tag.start);\n                }\n                else {\n                    stack.push(tag);\n                }\n            }\n        }\n        else {\n            var iterator = new TokenIterator(session, row, firstTag.end.column);\n            var end = {\n                row: row,\n                column: firstTag.start.column\n            };\n            while (tag = this._readTagBackward(iterator)) {\n                if (tag.selfClosing) {\n                    if (!stack.length) {\n                        tag.start.column += tag.tagName.length + 2;\n                        tag.end.column -= 2;\n                        return Range.fromPoints(tag.start, tag.end);\n                    }\n                    else\n                        continue;\n                }\n                if (!tag.closing) {\n                    this._pop(stack, tag);\n                    if (stack.length == 0) {\n                        tag.start.column += tag.tagName.length + 2;\n                        if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n                            tag.start.column = tag.end.column;\n                        return Range.fromPoints(tag.start, end);\n                    }\n                }\n                else {\n                    stack.push(tag);\n                }\n            }\n        }\n    };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar MixedFoldMode = require(\"./mixed\").FoldMode;\nvar XmlFoldMode = require(\"./xml\").FoldMode;\nvar CStyleFoldMode = require(\"./cstyle\").FoldMode;\nvar FoldMode = exports.FoldMode = function (voidElements, optionalTags) {\n    MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n        \"js-\": new CStyleFoldMode(),\n        \"css-\": new CStyleFoldMode()\n    });\n};\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar commonAttributes = [\n    \"accesskey\",\n    \"class\",\n    \"contenteditable\",\n    \"contextmenu\",\n    \"dir\",\n    \"draggable\",\n    \"dropzone\",\n    \"hidden\",\n    \"id\",\n    \"inert\",\n    \"itemid\",\n    \"itemprop\",\n    \"itemref\",\n    \"itemscope\",\n    \"itemtype\",\n    \"lang\",\n    \"spellcheck\",\n    \"style\",\n    \"tabindex\",\n    \"title\",\n    \"translate\"\n];\nvar eventAttributes = [\n    \"onabort\",\n    \"onblur\",\n    \"oncancel\",\n    \"oncanplay\",\n    \"oncanplaythrough\",\n    \"onchange\",\n    \"onclick\",\n    \"onclose\",\n    \"oncontextmenu\",\n    \"oncuechange\",\n    \"ondblclick\",\n    \"ondrag\",\n    \"ondragend\",\n    \"ondragenter\",\n    \"ondragleave\",\n    \"ondragover\",\n    \"ondragstart\",\n    \"ondrop\",\n    \"ondurationchange\",\n    \"onemptied\",\n    \"onended\",\n    \"onerror\",\n    \"onfocus\",\n    \"oninput\",\n    \"oninvalid\",\n    \"onkeydown\",\n    \"onkeypress\",\n    \"onkeyup\",\n    \"onload\",\n    \"onloadeddata\",\n    \"onloadedmetadata\",\n    \"onloadstart\",\n    \"onmousedown\",\n    \"onmousemove\",\n    \"onmouseout\",\n    \"onmouseover\",\n    \"onmouseup\",\n    \"onmousewheel\",\n    \"onpause\",\n    \"onplay\",\n    \"onplaying\",\n    \"onprogress\",\n    \"onratechange\",\n    \"onreset\",\n    \"onscroll\",\n    \"onseeked\",\n    \"onseeking\",\n    \"onselect\",\n    \"onshow\",\n    \"onstalled\",\n    \"onsubmit\",\n    \"onsuspend\",\n    \"ontimeupdate\",\n    \"onvolumechange\",\n    \"onwaiting\"\n];\nvar globalAttributes = commonAttributes.concat(eventAttributes);\nvar attributeMap = {\n    \"a\": { \"href\": 1, \"target\": { \"_blank\": 1, \"top\": 1 }, \"ping\": 1, \"rel\": { \"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1 }, \"media\": 1, \"hreflang\": 1, \"type\": 1 },\n    \"abbr\": {},\n    \"address\": {},\n    \"area\": { \"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1 },\n    \"article\": { \"pubdate\": 1 },\n    \"aside\": {},\n    \"audio\": { \"src\": 1, \"autobuffer\": 1, \"autoplay\": { \"autoplay\": 1 }, \"loop\": { \"loop\": 1 }, \"controls\": { \"controls\": 1 }, \"muted\": { \"muted\": 1 }, \"preload\": { \"auto\": 1, \"metadata\": 1, \"none\": 1 } },\n    \"b\": {},\n    \"base\": { \"href\": 1, \"target\": 1 },\n    \"bdi\": {},\n    \"bdo\": {},\n    \"blockquote\": { \"cite\": 1 },\n    \"body\": { \"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1 },\n    \"br\": {},\n    \"button\": { \"autofocus\": 1, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": { \"button\": 1, \"submit\": 1 } },\n    \"canvas\": { \"width\": 1, \"height\": 1 },\n    \"caption\": {},\n    \"cite\": {},\n    \"code\": {},\n    \"col\": { \"span\": 1 },\n    \"colgroup\": { \"span\": 1 },\n    \"command\": { \"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1 },\n    \"data\": {},\n    \"datalist\": {},\n    \"dd\": {},\n    \"del\": { \"cite\": 1, \"datetime\": 1 },\n    \"details\": { \"open\": 1 },\n    \"dfn\": {},\n    \"dialog\": { \"open\": 1 },\n    \"div\": {},\n    \"dl\": {},\n    \"dt\": {},\n    \"em\": {},\n    \"embed\": { \"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1 },\n    \"fieldset\": { \"disabled\": 1, \"form\": 1, \"name\": 1 },\n    \"figcaption\": {},\n    \"figure\": {},\n    \"footer\": {},\n    \"form\": { \"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": { \"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1 }, \"method\": { \"get\": 1, \"post\": 1 }, \"name\": 1, \"novalidate\": 1, \"target\": { \"_blank\": 1, \"top\": 1 } },\n    \"h1\": {},\n    \"h2\": {},\n    \"h3\": {},\n    \"h4\": {},\n    \"h5\": {},\n    \"h6\": {},\n    \"head\": {},\n    \"header\": {},\n    \"hr\": {},\n    \"html\": { \"manifest\": 1 },\n    \"i\": {},\n    \"iframe\": { \"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": { \"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1 }, \"seamless\": { \"seamless\": 1 } },\n    \"img\": { \"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1 },\n    \"input\": {\n        \"type\": { \"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1 },\n        \"accept\": 1, \"alt\": 1, \"autocomplete\": { \"on\": 1, \"off\": 1 }, \"autofocus\": { \"autofocus\": 1 }, \"checked\": { \"checked\": 1 }, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"formaction\": 1, \"formenctype\": { \"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1 }, \"formmethod\": { \"get\": 1, \"post\": 1 }, \"formnovalidate\": { \"formnovalidate\": 1 }, \"formtarget\": { \"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1 }, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": { \"multiple\": 1 }, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": { \"readonly\": 1 }, \"required\": { \"required\": 1 }, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1\n    },\n    \"ins\": { \"cite\": 1, \"datetime\": 1 },\n    \"kbd\": {},\n    \"keygen\": { \"autofocus\": 1, \"challenge\": { \"challenge\": 1 }, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"keytype\": { \"rsa\": 1, \"dsa\": 1, \"ec\": 1 }, \"name\": 1 },\n    \"label\": { \"form\": 1, \"for\": 1 },\n    \"legend\": {},\n    \"li\": { \"value\": 1 },\n    \"link\": { \"href\": 1, \"hreflang\": 1, \"rel\": { \"stylesheet\": 1, \"icon\": 1 }, \"media\": { \"all\": 1, \"screen\": 1, \"print\": 1 }, \"type\": { \"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1 }, \"sizes\": 1 },\n    \"main\": {},\n    \"map\": { \"name\": 1 },\n    \"mark\": {},\n    \"math\": {},\n    \"menu\": { \"type\": 1, \"label\": 1 },\n    \"meta\": { \"http-equiv\": { \"content-type\": 1 }, \"name\": { \"description\": 1, \"keywords\": 1 }, \"content\": { \"text/html; charset=UTF-8\": 1 }, \"charset\": 1 },\n    \"meter\": { \"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1 },\n    \"nav\": {},\n    \"noscript\": { \"href\": 1 },\n    \"object\": { \"param\": 1, \"data\": 1, \"type\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1 },\n    \"ol\": { \"start\": 1, \"reversed\": 1 },\n    \"optgroup\": { \"disabled\": 1, \"label\": 1 },\n    \"option\": { \"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1 },\n    \"output\": { \"for\": 1, \"form\": 1, \"name\": 1 },\n    \"p\": {},\n    \"param\": { \"name\": 1, \"value\": 1 },\n    \"pre\": {},\n    \"progress\": { \"value\": 1, \"max\": 1 },\n    \"q\": { \"cite\": 1 },\n    \"rp\": {},\n    \"rt\": {},\n    \"ruby\": {},\n    \"s\": {},\n    \"samp\": {},\n    \"script\": { \"charset\": 1, \"type\": { \"text/javascript\": 1 }, \"src\": 1, \"defer\": 1, \"async\": 1 },\n    \"select\": { \"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": { \"multiple\": 1 }, \"name\": 1, \"size\": 1, \"readonly\": { \"readonly\": 1 } },\n    \"small\": {},\n    \"source\": { \"src\": 1, \"type\": 1, \"media\": 1 },\n    \"span\": {},\n    \"strong\": {},\n    \"style\": { \"type\": 1, \"media\": { \"all\": 1, \"screen\": 1, \"print\": 1 }, \"scoped\": 1 },\n    \"sub\": {},\n    \"sup\": {},\n    \"svg\": {},\n    \"table\": { \"summary\": 1 },\n    \"tbody\": {},\n    \"td\": { \"headers\": 1, \"rowspan\": 1, \"colspan\": 1 },\n    \"textarea\": { \"autofocus\": { \"autofocus\": 1 }, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": { \"readonly\": 1 }, \"required\": { \"required\": 1 }, \"rows\": 1, \"cols\": 1, \"wrap\": { \"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1 } },\n    \"tfoot\": {},\n    \"th\": { \"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1 },\n    \"thead\": {},\n    \"time\": { \"datetime\": 1 },\n    \"title\": {},\n    \"tr\": {},\n    \"track\": { \"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1 },\n    \"section\": {},\n    \"summary\": {},\n    \"u\": {},\n    \"ul\": {},\n    \"var\": {},\n    \"video\": { \"src\": 1, \"autobuffer\": 1, \"autoplay\": { \"autoplay\": 1 }, \"loop\": { \"loop\": 1 }, \"controls\": { \"controls\": 1 }, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": { \"muted\": 1 }, \"preload\": { \"auto\": 1, \"metadata\": 1, \"none\": 1 } },\n    \"wbr\": {}\n};\nvar elements = Object.keys(attributeMap);\nfunction is(token, type) {\n    return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nfunction findTagName(session, pos) {\n    var iterator = new TokenIterator(session, pos.row, pos.column);\n    var token = iterator.getCurrentToken();\n    while (token && !is(token, \"tag-name\")) {\n        token = iterator.stepBackward();\n    }\n    if (token)\n        return token.value;\n}\nfunction findAttributeName(session, pos) {\n    var iterator = new TokenIterator(session, pos.row, pos.column);\n    var token = iterator.getCurrentToken();\n    while (token && !is(token, \"attribute-name\")) {\n        token = iterator.stepBackward();\n    }\n    if (token)\n        return token.value;\n}\nvar HtmlCompletions = function () {\n};\n(function () {\n    this.getCompletions = function (state, session, pos, prefix) {\n        var token = session.getTokenAt(pos.row, pos.column);\n        if (!token)\n            return [];\n        if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n            return this.getTagCompletions(state, session, pos, prefix);\n        if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n            return this.getAttributeCompletions(state, session, pos, prefix);\n        if (is(token, \"attribute-value\"))\n            return this.getAttributeValueCompletions(state, session, pos, prefix);\n        var line = session.getLine(pos.row).substr(0, pos.column);\n        if (/&[a-z]*$/i.test(line))\n            return this.getHTMLEntityCompletions(state, session, pos, prefix);\n        return [];\n    };\n    this.getTagCompletions = function (state, session, pos, prefix) {\n        return elements.map(function (element) {\n            return {\n                value: element,\n                meta: \"tag\",\n                score: 1000000\n            };\n        });\n    };\n    this.getAttributeCompletions = function (state, session, pos, prefix) {\n        var tagName = findTagName(session, pos);\n        if (!tagName)\n            return [];\n        var attributes = globalAttributes;\n        if (tagName in attributeMap) {\n            attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n        }\n        return attributes.map(function (attribute) {\n            return {\n                caption: attribute,\n                snippet: attribute + '=\"$0\"',\n                meta: \"attribute\",\n                score: 1000000\n            };\n        });\n    };\n    this.getAttributeValueCompletions = function (state, session, pos, prefix) {\n        var tagName = findTagName(session, pos);\n        var attributeName = findAttributeName(session, pos);\n        if (!tagName)\n            return [];\n        var values = [];\n        if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n            values = Object.keys(attributeMap[tagName][attributeName]);\n        }\n        return values.map(function (value) {\n            return {\n                caption: value,\n                snippet: value,\n                meta: \"attribute value\",\n                score: 1000000\n            };\n        });\n    };\n    this.getHTMLEntityCompletions = function (state, session, pos, prefix) {\n        var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n        return values.map(function (value) {\n            return {\n                caption: value,\n                snippet: value,\n                meta: \"html entity\",\n                score: 1000000\n            };\n        });\n    };\n}).call(HtmlCompletions.prototype);\nexports.HtmlCompletions = HtmlCompletions;\n\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptMode = require(\"./javascript\").Mode;\nvar CssMode = require(\"./css\").Mode;\nvar HtmlHighlightRules = require(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = require(\"./folding/html\").FoldMode;\nvar HtmlCompletions = require(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\nvar Mode = function (options) {\n    this.fragmentContext = options && options.fragmentContext;\n    this.HighlightRules = HtmlHighlightRules;\n    this.$behaviour = new XmlBehaviour();\n    this.$completer = new HtmlCompletions();\n    this.createModeDelegates({\n        \"js-\": JavaScriptMode,\n        \"css-\": CssMode\n    });\n    this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n(function () {\n    this.blockComment = { start: \"<!--\", end: \"-->\" };\n    this.voidElements = lang.arrayToMap(voidElements);\n    this.getNextLineIndent = function (state, line, tab) {\n        return this.$getIndent(line);\n    };\n    this.checkOutdent = function (state, line, input) {\n        return false;\n    };\n    this.getCompletions = function (state, session, pos, prefix) {\n        return this.$completer.getCompletions(state, session, pos, prefix);\n    };\n    this.createWorker = function (session) {\n        if (this.constructor != Mode)\n            return;\n        var worker = new WorkerClient([\"ace\"], \"ace/mode/html_worker\", \"Worker\");\n        worker.attachToDocument(session.getDocument());\n        if (this.fragmentContext)\n            worker.call(\"setOptions\", [{ context: this.fragmentContext }]);\n        worker.on(\"error\", function (e) {\n            session.setAnnotations(e.data);\n        });\n        worker.on(\"terminate\", function () {\n            session.clearAnnotations();\n        });\n        return worker;\n    };\n    this.$id = \"ace/mode/html\";\n    this.snippetFileId = \"ace/snippets/html\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});                (function() {\n                    ace.require([\"ace/mode/html\"], function(m) {\n                        if ( true && module) {\n                            module.exports = m;\n                        }\n                    });\n                })();\n            \n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 671 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseAssignValue = __webpack_require__(455),\n    eq = __webpack_require__(190);\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\n\n/***/ }),\n/* 672 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 673 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar prefix = __webpack_require__(1619)\nvar toCamelCase = __webpack_require__(1620)\nvar cache = { 'float': 'cssFloat' }\nvar addPxToStyle = __webpack_require__(1623)\n\nfunction style (element, property, value) {\n  var camel = cache[property]\n  if (typeof camel === 'undefined') {\n    camel = detect(property)\n  }\n\n  // may be false if CSS prop is unsupported\n  if (camel) {\n    if (value === undefined) {\n      return element.style[camel]\n    }\n\n    element.style[camel] = addPxToStyle(camel, value)\n  }\n}\n\nfunction each (element, properties) {\n  for (var k in properties) {\n    if (properties.hasOwnProperty(k)) {\n      style(element, k, properties[k])\n    }\n  }\n}\n\nfunction detect (cssProp) {\n  var camel = toCamelCase(cssProp)\n  var result = prefix(camel)\n  cache[camel] = cache[cssProp] = cache[result] = result\n  return result\n}\n\nfunction set () {\n  if (arguments.length === 2) {\n    if (typeof arguments[1] === 'string') {\n      arguments[0].style.cssText = arguments[1]\n    } else {\n      each(arguments[0], arguments[1])\n    }\n  } else {\n    style(arguments[0], arguments[1], arguments[2])\n  }\n}\n\nmodule.exports = set\nmodule.exports.set = set\n\nmodule.exports.get = function (element, properties) {\n  if (Array.isArray(properties)) {\n    return properties.reduce(function (obj, prop) {\n      obj[prop] = style(element, prop || '')\n      return obj\n    }, {})\n  } else {\n    return style(element, properties || '')\n  }\n}\n\n\n/***/ }),\n/* 674 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.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;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.17.21';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var 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 match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports =  true && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var 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\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\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   */\n  function 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\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\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   */\n  function 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\n  /**\n   * A specialized version of `_.forEachRight` 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   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` 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 {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(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 false;\n      }\n    }\n    return true;\n  }\n\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   */\n  function 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\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   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\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   */\n  function 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\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   */\n  function 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\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   */\n  function 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\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   */\n  function 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\n  /**\n   * A specialized version of `_.reduceRight` 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 last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\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   */\n  function 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\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\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   */\n  function 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\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   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\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   */\n  function 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\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   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` 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 {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\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   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\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   */\n  function 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\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   */\n  function 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\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` 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 {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\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   */\n  function 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 `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\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   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\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   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\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   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\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   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\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   */\n  function 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   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\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   */\n  function 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  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\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   */\n  function 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\n  /**\n   * A specialized version of `_.lastIndexOf` 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   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\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   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\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     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var 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. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\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     */\n    var 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\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function 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    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\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     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\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     */\n    function 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     */\n    function 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     */\n    function 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\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function 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    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\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     */\n    function 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\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     */\n    function 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     */\n    function 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     */\n    function 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\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\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     */\n    function 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    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\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     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\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     */\n    function 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     */\n    function 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     */\n    function 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\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\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     */\n    function 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    /**\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     */\n    function 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     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\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     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\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     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\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     */\n    function 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     */\n    function 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     */\n    function 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\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\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     */\n    function 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\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\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     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\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     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\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     */\n    function 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\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\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     */\n    function 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\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\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     */\n    function 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\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     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` 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     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` 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 all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` 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 {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\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     */\n    function 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\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     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\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     */\n    var baseForRight = createBaseFor(true);\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     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` 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     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\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     */\n    function 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\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     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\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     */\n    function 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\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\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     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\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     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\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     */\n    function 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\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\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     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\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 {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     */\n    function 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\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     */\n    function 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\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     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\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     */\n    function 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\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     */\n    function 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\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\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     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\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     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\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     */\n    function 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\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     */\n    function 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     * 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     */\n    function 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\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\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     */\n    function 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(getIteratee()));\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\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     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\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     */\n    function 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\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     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\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     */\n    function 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\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\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     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\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     */\n    function 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\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\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     */\n    var 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\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\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     */\n    function 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\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     */\n    function 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\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * 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     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      return object == null || delete object[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * 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 values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\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     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\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     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\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     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\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     */\n    function 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\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     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\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     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\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     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\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     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\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     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\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     */\n    function 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\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     */\n    function 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\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\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     */\n    function 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\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     */\n    function 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\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     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\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     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\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     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\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 assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\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     */\n    function 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\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     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\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 {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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\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     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\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     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\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     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : 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     */\n    function 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 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     */\n    function 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\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     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\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     */\n    function 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\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     */\n    var 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\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     */\n    var 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\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((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\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\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     */\n    function 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\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     */\n    function 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\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     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\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     */\n    function 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\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\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     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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\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     */\n    function 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 a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\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     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\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     */\n    function 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     * 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     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\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     */\n    function 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\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     */\n    function 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\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\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     */\n    function 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\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     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\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     */\n    function 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\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     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\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     */\n    function 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\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\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     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\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     */\n    function 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\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\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     */\n    var 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\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     */\n    function 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\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     */\n    function 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     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\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 (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\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     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\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     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\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     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\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     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        result[pair[0]] = pair[1];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but 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 {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\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     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\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     */\n    var 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\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\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     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\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     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, 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     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\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     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.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     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\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     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. 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} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined 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     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\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     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\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     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\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     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. 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} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered 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     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\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 all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\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     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * 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 inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.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     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.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     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.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 {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\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     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\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 _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is 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} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\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     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.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     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\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     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\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 _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\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     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\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     */\n    function 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, getIteratee(predicate, 3));\n    }\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     */\n    var 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\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\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     */\n    function 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`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\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     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\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     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\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     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.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 `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.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 `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= 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     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\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     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` 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 an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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     */\n    function 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     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\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     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\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     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\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     */\n    function 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\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     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\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     */\n    function 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\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\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     */\n    function 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\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\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     */\n    function 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     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (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     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\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     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` 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 five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\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 `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\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 native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\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 `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\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     */\n    function isNil(value) {\n      return value == null;\n    }\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     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\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     */\n    function 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\n    /**\n     * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\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     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\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     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\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     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\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     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\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 `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` 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 weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` 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 weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.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 `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.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 `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\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     */\n    function 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\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     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is 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 convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\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     */\n    function 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\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     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\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     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\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     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\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     */\n    var 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\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\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     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\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     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\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     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\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     */\n    var 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\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     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.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     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.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 `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.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     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.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 `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\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     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\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     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\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     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` 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 of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\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     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\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     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.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 _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\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     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\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     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\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     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\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     */\n    var 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\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * 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     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\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     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\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     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\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 of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\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     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\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     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\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     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(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\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     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.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 {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` 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.6.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 {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\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 values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values 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 values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('déjà vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\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     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\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     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|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     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\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     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\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     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\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     */\n    function stubArray() {\n      return [];\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     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\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     */\n    function 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 = getIteratee(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\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     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\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     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (true) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n      return _;\n    }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else {}\n}.call(this));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91), __webpack_require__(107)(module)))\n\n/***/ }),\n/* 675 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _echarts = __webpack_require__(13);\n\n(function () {\n  for (var key in _echarts) {\n    if (_echarts == null || !_echarts.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n    exports[key] = _echarts[key];\n  }\n})();\n\nvar _export = __webpack_require__(572);\n\n(function () {\n  for (var key in _export) {\n    if (_export == null || !_export.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n    exports[key] = _export[key];\n  }\n})();\n\n__webpack_require__(570);\n\n__webpack_require__(1047);\n\n__webpack_require__(1058);\n\n__webpack_require__(1063);\n\n__webpack_require__(1068);\n\n__webpack_require__(1072);\n\n__webpack_require__(1082);\n\n__webpack_require__(1096);\n\n__webpack_require__(1102);\n\n__webpack_require__(1110);\n\n__webpack_require__(1125);\n\n__webpack_require__(1129);\n\n__webpack_require__(1133);\n\n__webpack_require__(1145);\n\n__webpack_require__(1151);\n\n__webpack_require__(1156);\n\n__webpack_require__(1162);\n\n__webpack_require__(1166);\n\n__webpack_require__(1172);\n\n__webpack_require__(1176);\n\n__webpack_require__(1179);\n\n__webpack_require__(1193);\n\n__webpack_require__(1199);\n\n__webpack_require__(1205);\n\n__webpack_require__(1206);\n\n__webpack_require__(1218);\n\n__webpack_require__(606);\n\n__webpack_require__(599);\n\n__webpack_require__(1221);\n\n__webpack_require__(1225);\n\n__webpack_require__(1226);\n\n__webpack_require__(1238);\n\n__webpack_require__(267);\n\n__webpack_require__(1243);\n\n__webpack_require__(1250);\n\n__webpack_require__(1251);\n\n__webpack_require__(1260);\n\n__webpack_require__(1263);\n\n__webpack_require__(1266);\n\n__webpack_require__(1269);\n\n__webpack_require__(615);\n\n__webpack_require__(1275);\n\n__webpack_require__(619);\n\n__webpack_require__(618);\n\n__webpack_require__(1281);\n\n__webpack_require__(620);\n\n__webpack_require__(629);\n\n__webpack_require__(1286);\n\n__webpack_require__(1289);\n\n/***/ }),\n/* 676 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports['default'] = addEventListener;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _EventObject = __webpack_require__(1347);\n\nvar _EventObject2 = _interopRequireDefault(_EventObject);\n\nfunction addEventListener(target, eventType, callback, option) {\n  function wrapCallback(e) {\n    var ne = new _EventObject2['default'](e);\n    callback.call(target, ne);\n  }\n\n  if (target.addEventListener) {\n    var _ret = (function () {\n      var useCapture = false;\n      if (typeof option === 'object') {\n        useCapture = option.capture || false;\n      } else if (typeof option === 'boolean') {\n        useCapture = option;\n      }\n\n      target.addEventListener(eventType, wrapCallback, option || false);\n\n      return {\n        v: {\n          remove: function remove() {\n            target.removeEventListener(eventType, wrapCallback, useCapture);\n          }\n        }\n      };\n    })();\n\n    if (typeof _ret === 'object') return _ret.v;\n  } else if (target.attachEvent) {\n    target.attachEvent('on' + eventType, wrapCallback);\n    return {\n      remove: function remove() {\n        target.detachEvent('on' + eventType, wrapCallback);\n      }\n    };\n  }\n}\n\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 677 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n  today: 'Today',\n  now: 'Now',\n  backToToday: 'Back to today',\n  ok: 'Ok',\n  clear: 'Clear',\n  month: 'Month',\n  year: 'Year',\n  timeSelect: 'select time',\n  dateSelect: 'select date',\n  weekSelect: 'Choose a week',\n  monthSelect: 'Choose a month',\n  yearSelect: 'Choose a year',\n  decadeSelect: 'Choose a decade',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Previous month (PageUp)',\n  nextMonth: 'Next month (PageDown)',\n  previousYear: 'Last year (Control + left)',\n  nextYear: 'Next year (Control + right)',\n  previousDecade: 'Last decade',\n  nextDecade: 'Next decade',\n  previousCentury: 'Last century',\n  nextCentury: 'Next century'\n});\n\n/***/ }),\n/* 678 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.presetPrimaryColors = exports.presetPalettes = exports.generate = undefined;\n\nvar _generate = __webpack_require__(1354);\n\nvar _generate2 = _interopRequireDefault(_generate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar presetPrimaryColors = {\n  red: '#F5222D',\n  volcano: '#FA541C',\n  orange: '#FA8C16',\n  gold: '#FAAD14',\n  yellow: '#FADB14',\n  lime: '#A0D911',\n  green: '#52C41A',\n  cyan: '#13C2C2',\n  blue: '#1890FF',\n  geekblue: '#2F54EB',\n  purple: '#722ED1',\n  magenta: '#EB2F96',\n  grey: '#666666'\n};\n\nvar presetPalettes = {};\n\nObject.keys(presetPrimaryColors).forEach(function (key) {\n  presetPalettes[key] = (0, _generate2.default)(presetPrimaryColors[key]);\n});\n\nexports.generate = _generate2.default;\nexports.presetPalettes = presetPalettes;\nexports.presetPrimaryColors = presetPrimaryColors;\n\n/***/ }),\n/* 679 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return getScrollBarSize; });\nvar cached;\nfunction getScrollBarSize(fresh) {\n  if (typeof document === 'undefined') {\n    return 0;\n  }\n\n  if (fresh || cached === undefined) {\n    var inner = document.createElement('div');\n    inner.style.width = '100%';\n    inner.style.height = '200px';\n    var outer = document.createElement('div');\n    var outerStyle = outer.style;\n    outerStyle.position = 'absolute';\n    outerStyle.top = 0;\n    outerStyle.left = 0;\n    outerStyle.pointerEvents = 'none';\n    outerStyle.visibility = 'hidden';\n    outerStyle.width = '200px';\n    outerStyle.height = '150px';\n    outerStyle.overflow = 'hidden';\n    outer.appendChild(inner);\n    document.body.appendChild(outer);\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    cached = widthContained - widthScroll;\n  }\n\n  return cached;\n}\n\n/***/ }),\n/* 680 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseHas = __webpack_require__(1493),\n    hasPath = __webpack_require__(646);\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\nmodule.exports = has;\n\n\n/***/ }),\n/* 681 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\n\nvar React = __webpack_require__(0);\nvar factory = __webpack_require__(1508);\n\nif (typeof React === 'undefined') {\n  throw Error(\n    'create-react-class could not find the React object. If you are using script tags, ' +\n      'make sure that React is being loaded before create-react-class.'\n  );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n  React.Component,\n  React.isValidElement,\n  ReactNoopUpdateQueue\n);\n\n\n/***/ }),\n/* 682 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 _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 _util = __webpack_require__(70);\n\nvar _validator = __webpack_require__(1509);\n\nvar _validator2 = _interopRequireDefault(_validator);\n\nvar _messages2 = __webpack_require__(1529);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Encapsulates a validation schema.\n *\n *  @param descriptor An object declaring validation rules\n *  for this schema.\n */\nfunction Schema(descriptor) {\n  this.rules = null;\n  this._messages = _messages2.messages;\n  this.define(descriptor);\n}\n\nSchema.prototype = {\n  messages: function messages(_messages) {\n    if (_messages) {\n      this._messages = (0, _util.deepMerge)((0, _messages2.newMessages)(), _messages);\n    }\n    return this._messages;\n  },\n  define: function define(rules) {\n    if (!rules) {\n      throw new Error('Cannot configure a schema with no rules');\n    }\n    if ((typeof rules === 'undefined' ? 'undefined' : _typeof(rules)) !== 'object' || Array.isArray(rules)) {\n      throw new Error('Rules must be an object');\n    }\n    this.rules = {};\n    var z = void 0;\n    var item = void 0;\n    for (z in rules) {\n      if (rules.hasOwnProperty(z)) {\n        item = rules[z];\n        this.rules[z] = Array.isArray(item) ? item : [item];\n      }\n    }\n  },\n  validate: function validate(source_) {\n    var _this = this;\n\n    var o = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var oc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n\n    var source = source_;\n    var options = o;\n    var callback = oc;\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    if (!this.rules || Object.keys(this.rules).length === 0) {\n      if (callback) {\n        callback();\n      }\n      return Promise.resolve();\n    }\n\n    function complete(results) {\n      var i = void 0;\n      var errors = [];\n      var fields = {};\n\n      function add(e) {\n        if (Array.isArray(e)) {\n          var _errors;\n\n          errors = (_errors = errors).concat.apply(_errors, e);\n        } else {\n          errors.push(e);\n        }\n      }\n\n      for (i = 0; i < results.length; i++) {\n        add(results[i]);\n      }\n      if (!errors.length) {\n        errors = null;\n        fields = null;\n      } else {\n        fields = (0, _util.convertFieldsError)(errors);\n      }\n      callback(errors, fields);\n    }\n\n    if (options.messages) {\n      var messages = this.messages();\n      if (messages === _messages2.messages) {\n        messages = (0, _messages2.newMessages)();\n      }\n      (0, _util.deepMerge)(messages, options.messages);\n      options.messages = messages;\n    } else {\n      options.messages = this.messages();\n    }\n    var arr = void 0;\n    var value = void 0;\n    var series = {};\n    var keys = options.keys || Object.keys(this.rules);\n    keys.forEach(function (z) {\n      arr = _this.rules[z];\n      value = source[z];\n      arr.forEach(function (r) {\n        var rule = r;\n        if (typeof rule.transform === 'function') {\n          if (source === source_) {\n            source = _extends({}, source);\n          }\n          value = source[z] = rule.transform(value);\n        }\n        if (typeof rule === 'function') {\n          rule = {\n            validator: rule\n          };\n        } else {\n          rule = _extends({}, rule);\n        }\n        rule.validator = _this.getValidationMethod(rule);\n        rule.field = z;\n        rule.fullField = rule.fullField || z;\n        rule.type = _this.getType(rule);\n        if (!rule.validator) {\n          return;\n        }\n        series[z] = series[z] || [];\n        series[z].push({\n          rule: rule,\n          value: value,\n          source: source,\n          field: z\n        });\n      });\n    });\n    var errorFields = {};\n    return (0, _util.asyncMap)(series, options, function (data, doIt) {\n      var rule = data.rule;\n      var deep = (rule.type === 'object' || rule.type === 'array') && (_typeof(rule.fields) === 'object' || _typeof(rule.defaultField) === 'object');\n      deep = deep && (rule.required || !rule.required && data.value);\n      rule.field = data.field;\n\n      function addFullfield(key, schema) {\n        return _extends({}, schema, {\n          fullField: rule.fullField + '.' + key\n        });\n      }\n\n      function cb() {\n        var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n        var errors = e;\n        if (!Array.isArray(errors)) {\n          errors = [errors];\n        }\n        if (!options.suppressWarning && errors.length) {\n          Schema.warning('async-validator:', errors);\n        }\n        if (errors.length && rule.message) {\n          errors = [].concat(rule.message);\n        }\n\n        errors = errors.map((0, _util.complementError)(rule));\n\n        if (options.first && errors.length) {\n          errorFields[rule.field] = 1;\n          return doIt(errors);\n        }\n        if (!deep) {\n          doIt(errors);\n        } else {\n          // if rule is required but the target object\n          // does not exist fail at the rule level and don't\n          // go deeper\n          if (rule.required && !data.value) {\n            if (rule.message) {\n              errors = [].concat(rule.message).map((0, _util.complementError)(rule));\n            } else if (options.error) {\n              errors = [options.error(rule, (0, _util.format)(options.messages.required, rule.field))];\n            } else {\n              errors = [];\n            }\n            return doIt(errors);\n          }\n\n          var fieldsSchema = {};\n          if (rule.defaultField) {\n            for (var k in data.value) {\n              if (data.value.hasOwnProperty(k)) {\n                fieldsSchema[k] = rule.defaultField;\n              }\n            }\n          }\n          fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);\n          for (var f in fieldsSchema) {\n            if (fieldsSchema.hasOwnProperty(f)) {\n              var fieldSchema = Array.isArray(fieldsSchema[f]) ? fieldsSchema[f] : [fieldsSchema[f]];\n              fieldsSchema[f] = fieldSchema.map(addFullfield.bind(null, f));\n            }\n          }\n          var schema = new Schema(fieldsSchema);\n          schema.messages(options.messages);\n          if (data.rule.options) {\n            data.rule.options.messages = options.messages;\n            data.rule.options.error = options.error;\n          }\n          schema.validate(data.value, data.rule.options || options, function (errs) {\n            var finalErrors = [];\n            if (errors && errors.length) {\n              finalErrors.push.apply(finalErrors, errors);\n            }\n            if (errs && errs.length) {\n              finalErrors.push.apply(finalErrors, errs);\n            }\n            doIt(finalErrors.length ? finalErrors : null);\n          });\n        }\n      }\n\n      var res = void 0;\n      if (rule.asyncValidator) {\n        res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n      } else if (rule.validator) {\n        res = rule.validator(rule, data.value, cb, data.source, options);\n        if (res === true) {\n          cb();\n        } else if (res === false) {\n          cb(rule.message || rule.field + ' fails');\n        } else if (res instanceof Array) {\n          cb(res);\n        } else if (res instanceof Error) {\n          cb(res.message);\n        }\n      }\n      if (res && res.then) {\n        res.then(function () {\n          return cb();\n        }, function (e) {\n          return cb(e);\n        });\n      }\n    }, function (results) {\n      complete(results);\n    });\n  },\n  getType: function getType(rule) {\n    if (rule.type === undefined && rule.pattern instanceof RegExp) {\n      rule.type = 'pattern';\n    }\n    if (typeof rule.validator !== 'function' && rule.type && !_validator2['default'].hasOwnProperty(rule.type)) {\n      throw new Error((0, _util.format)('Unknown rule type %s', rule.type));\n    }\n    return rule.type || 'string';\n  },\n  getValidationMethod: function getValidationMethod(rule) {\n    if (typeof rule.validator === 'function') {\n      return rule.validator;\n    }\n    var keys = Object.keys(rule);\n    var messageIndex = keys.indexOf('message');\n    if (messageIndex !== -1) {\n      keys.splice(messageIndex, 1);\n    }\n    if (keys.length === 1 && keys[0] === 'required') {\n      return _validator2['default'].required;\n    }\n    return _validator2['default'][this.getType(rule)] || false;\n  }\n};\n\nSchema.register = function register(type, validator) {\n  if (typeof validator !== 'function') {\n    throw new Error('Cannot register a validator by type, validator is not a function');\n  }\n  _validator2['default'][type] = validator;\n};\n\nSchema.warning = _util.warning;\n\nSchema.messages = _messages2.messages;\n\nexports['default'] = Schema;\n\n/***/ }),\n/* 683 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar reactIs = __webpack_require__(164);\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\n\n/***/ }),\n/* 684 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1536);\n\n/***/ }),\n/* 685 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\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\n/* harmony default export */ __webpack_exports__[\"a\"] = (stubFalse);\n\n\n/***/ }),\n/* 686 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(64);\n\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_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"].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\n/* harmony default export */ __webpack_exports__[\"a\"] = (cloneBuffer);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(459)(module)))\n\n/***/ }),\n/* 687 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\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\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n  var _ref$fill = _ref.fill,\n      fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n      _ref$width = _ref.width,\n      width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n      _ref$height = _ref.height,\n      height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n      _ref$style = _ref.style,\n      style = _ref$style === undefined ? {} : _ref$style,\n      props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n  return _react2.default.createElement(\n    'svg',\n    _extends({\n      viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n      style: _extends({ fill: fill, width: width, height: height }, style)\n    }, props),\n    _react2.default.createElement('path', { d: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z' })\n  );\n};\n\n/***/ }),\n/* 688 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\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\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n  var _ref$fill = _ref.fill,\n      fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n      _ref$width = _ref.width,\n      width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n      _ref$height = _ref.height,\n      height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n      _ref$style = _ref.style,\n      style = _ref$style === undefined ? {} : _ref$style,\n      props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n  return _react2.default.createElement(\n    'svg',\n    _extends({\n      viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n      style: _extends({ fill: fill, width: width, height: height }, style)\n    }, props),\n    _react2.default.createElement('path', { d: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z' })\n  );\n};\n\n/***/ }),\n/* 689 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIteratee = __webpack_require__(345),\n    baseUniq = __webpack_require__(1584);\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n\n\n/***/ }),\n/* 690 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFindIndex = __webpack_require__(662),\n    baseIteratee = __webpack_require__(345),\n    toInteger = __webpack_require__(1592);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n *   { 'user': 'barney',  'active': false },\n *   { 'user': 'fred',    'active': false },\n *   { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n  var length = array == null ? 0 : array.length;\n  if (!length) {\n    return -1;\n  }\n  var index = fromIndex == null ? 0 : toInteger(fromIndex);\n  if (index < 0) {\n    index = nativeMax(length + index, 0);\n  }\n  return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n\n\n/***/ }),\n/* 691 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFlatten = __webpack_require__(1594),\n    baseOrderBy = __webpack_require__(1596),\n    baseRest = __webpack_require__(663),\n    isIterateeCall = __webpack_require__(664);\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\n\n/***/ }),\n/* 692 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseMerge = __webpack_require__(1612),\n    createAssigner = __webpack_require__(1616);\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\nmodule.exports = merge;\n\n\n/***/ }),\n/* 693 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-2015, 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\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 warning = function() {};\n\nif (false) {}\n\nmodule.exports = warning;\n\n\n/***/ }),\n/* 694 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Module dependencies\n */\n\nvar matches = __webpack_require__(1617);\n\n/**\n * @param element {Element}\n * @param selector {String}\n * @param context {Element}\n * @return {Element}\n */\nmodule.exports = function (element, selector, context) {\n  context = context || document;\n  // guard against orphans\n  element = { parentNode: element };\n\n  while ((element = element.parentNode) && element !== context) {\n    if (matches(element, selector)) {\n      return element;\n    }\n  }\n};\n\n\n/***/ }),\n/* 695 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Scrollbars = undefined;\n\nvar _Scrollbars = __webpack_require__(1618);\n\nvar _Scrollbars2 = _interopRequireDefault(_Scrollbars);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nexports[\"default\"] = _Scrollbars2[\"default\"];\nexports.Scrollbars = _Scrollbars2[\"default\"];\n\n/***/ }),\n/* 696 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = __webpack_require__(1631);\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 697 */,\n/* 698 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(699);\nmodule.exports = __webpack_require__(1634);\n\n\n/***/ }),\n/* 699 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(71);\n__webpack_require__(365);\n__webpack_require__(705);\n__webpack_require__(706);\n__webpack_require__(707);\n__webpack_require__(708);\n__webpack_require__(709);\n__webpack_require__(710);\n__webpack_require__(711);\n__webpack_require__(712);\n__webpack_require__(713);\n__webpack_require__(714);\n__webpack_require__(715);\n__webpack_require__(716);\n__webpack_require__(717);\n__webpack_require__(718);\n__webpack_require__(719);\n__webpack_require__(720);\n__webpack_require__(722);\n__webpack_require__(723);\n__webpack_require__(33);\n__webpack_require__(724);\n__webpack_require__(725);\n__webpack_require__(103);\n__webpack_require__(54);\n__webpack_require__(485);\n__webpack_require__(286);\n__webpack_require__(726);\n__webpack_require__(727);\n__webpack_require__(728);\n__webpack_require__(729);\n__webpack_require__(51);\n__webpack_require__(288);\n__webpack_require__(240);\n__webpack_require__(489);\n__webpack_require__(490);\n__webpack_require__(290);\n__webpack_require__(731);\n__webpack_require__(732);\n__webpack_require__(87);\n__webpack_require__(733);\n__webpack_require__(734);\n__webpack_require__(150);\n__webpack_require__(735);\n__webpack_require__(736);\n__webpack_require__(292);\n__webpack_require__(126);\n__webpack_require__(737);\n__webpack_require__(738);\n__webpack_require__(171);\n__webpack_require__(739);\n__webpack_require__(740);\n__webpack_require__(741);\n__webpack_require__(742);\n__webpack_require__(744);\n__webpack_require__(745);\n__webpack_require__(746);\n__webpack_require__(748);\n__webpack_require__(749);\n__webpack_require__(750);\n__webpack_require__(751);\n__webpack_require__(752);\n__webpack_require__(496);\n__webpack_require__(754);\n__webpack_require__(295);\n__webpack_require__(756);\n__webpack_require__(242);\n__webpack_require__(757);\n__webpack_require__(96);\n__webpack_require__(498);\n__webpack_require__(477);\n__webpack_require__(758);\n__webpack_require__(759);\n__webpack_require__(761);\n__webpack_require__(762);\n__webpack_require__(763);\n__webpack_require__(764);\n__webpack_require__(765);\n__webpack_require__(766);\n__webpack_require__(767);\n__webpack_require__(768);\n__webpack_require__(770);\n__webpack_require__(771);\n__webpack_require__(772);\n__webpack_require__(773);\n__webpack_require__(774);\n__webpack_require__(775);\n__webpack_require__(776);\n__webpack_require__(777);\n__webpack_require__(778);\n__webpack_require__(779);\n__webpack_require__(780);\n__webpack_require__(781);\n__webpack_require__(782);\n__webpack_require__(784);\n__webpack_require__(785);\n__webpack_require__(786);\n__webpack_require__(787);\n__webpack_require__(788);\n__webpack_require__(789);\n__webpack_require__(790);\n__webpack_require__(791);\n__webpack_require__(504);\n__webpack_require__(792);\n__webpack_require__(88);\n__webpack_require__(793);\n__webpack_require__(794);\n__webpack_require__(79);\n__webpack_require__(80);\n__webpack_require__(795);\n__webpack_require__(796);\n__webpack_require__(797);\n__webpack_require__(798);\n__webpack_require__(81);\n__webpack_require__(82);\n__webpack_require__(799);\n__webpack_require__(800);\n__webpack_require__(801);\n__webpack_require__(802);\n__webpack_require__(803);\n__webpack_require__(804);\n__webpack_require__(805);\n__webpack_require__(55);\n__webpack_require__(806);\n__webpack_require__(807);\n__webpack_require__(808);\n__webpack_require__(809);\n__webpack_require__(810);\n__webpack_require__(811);\n__webpack_require__(24);\n__webpack_require__(381);\n__webpack_require__(813);\n__webpack_require__(205);\n__webpack_require__(302);\n__webpack_require__(824);\n__webpack_require__(825);\n__webpack_require__(826);\n__webpack_require__(827);\n__webpack_require__(34);\n__webpack_require__(828);\n__webpack_require__(829);\n__webpack_require__(830);\n__webpack_require__(831);\n__webpack_require__(832);\n__webpack_require__(833);\n__webpack_require__(834);\n__webpack_require__(835);\n__webpack_require__(836);\n__webpack_require__(837);\n__webpack_require__(838);\n__webpack_require__(839);\n__webpack_require__(840);\n__webpack_require__(841);\n__webpack_require__(207);\n__webpack_require__(842);\n__webpack_require__(843);\n__webpack_require__(844);\n__webpack_require__(306);\n__webpack_require__(845);\n__webpack_require__(847);\n__webpack_require__(848);\n__webpack_require__(849);\n__webpack_require__(515);\n__webpack_require__(248);\n__webpack_require__(249);\n__webpack_require__(850);\n__webpack_require__(851);\n__webpack_require__(852);\n__webpack_require__(853);\n__webpack_require__(854);\n__webpack_require__(855);\n__webpack_require__(856);\n__webpack_require__(857);\n__webpack_require__(518);\n__webpack_require__(858);\n__webpack_require__(519);\n__webpack_require__(859);\n__webpack_require__(860);\n__webpack_require__(861);\n__webpack_require__(863);\n__webpack_require__(865);\n__webpack_require__(866);\n__webpack_require__(867);\n__webpack_require__(868);\n__webpack_require__(869);\n__webpack_require__(870);\n__webpack_require__(871);\n__webpack_require__(872);\n__webpack_require__(310);\n__webpack_require__(873);\n__webpack_require__(874);\n__webpack_require__(875);\n__webpack_require__(876);\n__webpack_require__(877);\n__webpack_require__(879);\n__webpack_require__(880);\n__webpack_require__(881);\n__webpack_require__(882);\n__webpack_require__(883);\n__webpack_require__(884);\n__webpack_require__(885);\n__webpack_require__(886);\n__webpack_require__(887);\n__webpack_require__(888);\n__webpack_require__(889);\n__webpack_require__(890);\n__webpack_require__(892);\n__webpack_require__(895);\n__webpack_require__(896);\n__webpack_require__(897);\n__webpack_require__(898);\n__webpack_require__(899);\n__webpack_require__(900);\n__webpack_require__(901);\n__webpack_require__(902);\n__webpack_require__(903);\n__webpack_require__(904);\n__webpack_require__(905);\n__webpack_require__(906);\n__webpack_require__(907);\n__webpack_require__(908);\n__webpack_require__(909);\n__webpack_require__(910);\n__webpack_require__(911);\n__webpack_require__(912);\n__webpack_require__(913);\n__webpack_require__(914);\n__webpack_require__(915);\n__webpack_require__(916);\n__webpack_require__(917);\n__webpack_require__(918);\n__webpack_require__(919);\n__webpack_require__(921);\n__webpack_require__(923);\n__webpack_require__(924);\n__webpack_require__(52);\n__webpack_require__(925);\n__webpack_require__(926);\n__webpack_require__(928);\n__webpack_require__(929);\n__webpack_require__(930);\n__webpack_require__(933);\n__webpack_require__(934);\n__webpack_require__(208);\n__webpack_require__(937);\n__webpack_require__(532);\n__webpack_require__(940);\n\nmodule.exports = __webpack_require__(474);\n\n\n/***/ }),\n/* 700 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar call = __webpack_require__(38);\nvar uncurryThis = __webpack_require__(20);\nvar IS_PURE = __webpack_require__(69);\nvar DESCRIPTORS = __webpack_require__(30);\nvar NATIVE_SYMBOL = __webpack_require__(195);\nvar fails = __webpack_require__(16);\nvar hasOwn = __webpack_require__(44);\nvar isPrototypeOf = __webpack_require__(113);\nvar anObject = __webpack_require__(35);\nvar toIndexedObject = __webpack_require__(92);\nvar toPropertyKey = __webpack_require__(147);\nvar $toString = __webpack_require__(42);\nvar createPropertyDescriptor = __webpack_require__(112);\nvar nativeObjectCreate = __webpack_require__(101);\nvar objectKeys = __webpack_require__(232);\nvar getOwnPropertyNamesModule = __webpack_require__(148);\nvar getOwnPropertyNamesExternal = __webpack_require__(364);\nvar getOwnPropertySymbolsModule = __webpack_require__(282);\nvar getOwnPropertyDescriptorModule = __webpack_require__(85);\nvar definePropertyModule = __webpack_require__(48);\nvar definePropertiesModule = __webpack_require__(363);\nvar propertyIsEnumerableModule = __webpack_require__(277);\nvar defineBuiltIn = __webpack_require__(62);\nvar shared = __webpack_require__(196);\nvar sharedKey = __webpack_require__(280);\nvar hiddenKeys = __webpack_require__(229);\nvar uid = __webpack_require__(197);\nvar wellKnownSymbol = __webpack_require__(41);\nvar wrappedWellKnownSymbolModule = __webpack_require__(473);\nvar defineWellKnownSymbol = __webpack_require__(95);\nvar defineSymbolToPrimitive = __webpack_require__(475);\nvar setToStringTag = __webpack_require__(102);\nvar InternalStateModule = __webpack_require__(73);\nvar $forEach = __webpack_require__(84).forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  definePropertiesModule.f = $defineProperties;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n/***/ }),\n/* 701 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArray = __webpack_require__(149);\nvar isConstructor = __webpack_require__(199);\nvar isObject = __webpack_require__(39);\nvar wellKnownSymbol = __webpack_require__(41);\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\n\n/***/ }),\n/* 702 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar getBuiltIn = __webpack_require__(59);\nvar hasOwn = __webpack_require__(44);\nvar toString = __webpack_require__(42);\nvar shared = __webpack_require__(196);\nvar NATIVE_SYMBOL_REGISTRY = __webpack_require__(476);\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  'for': function (key) {\n    var string = toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = getBuiltIn('Symbol')(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  }\n});\n\n\n/***/ }),\n/* 703 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar hasOwn = __webpack_require__(44);\nvar isSymbol = __webpack_require__(168);\nvar tryToString = __webpack_require__(169);\nvar shared = __webpack_require__(196);\nvar NATIVE_SYMBOL_REGISTRY = __webpack_require__(476);\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  }\n});\n\n\n/***/ }),\n/* 704 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar NATIVE_SYMBOL = __webpack_require__(195);\nvar fails = __webpack_require__(16);\nvar getOwnPropertySymbolsModule = __webpack_require__(282);\nvar toObject = __webpack_require__(47);\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n    return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n  }\n});\n\n\n/***/ }),\n/* 705 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n\n\n/***/ }),\n/* 706 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n\n\n/***/ }),\n/* 707 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n\n\n/***/ }),\n/* 708 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n\n/***/ }),\n/* 709 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n\n\n/***/ }),\n/* 710 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n\n\n/***/ }),\n/* 711 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n\n\n/***/ }),\n/* 712 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n\n\n/***/ }),\n/* 713 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n\n\n/***/ }),\n/* 714 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n\n\n/***/ }),\n/* 715 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\nvar defineSymbolToPrimitive = __webpack_require__(475);\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n\n/***/ }),\n/* 716 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(59);\nvar defineWellKnownSymbol = __webpack_require__(95);\nvar setToStringTag = __webpack_require__(102);\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n\n\n/***/ }),\n/* 717 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(95);\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n\n\n/***/ }),\n/* 718 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar apply = __webpack_require__(114);\nvar wrapErrorConstructorWithCause = __webpack_require__(478);\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  var O = {};\n  O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n  $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  if (WebAssembly && WebAssembly[ERROR_NAME]) {\n    var O = {};\n    O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n    $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n  }\n};\n\n// https://github.com/tc39/proposal-error-cause\nexportGlobalErrorCauseWrapper('Error', function (init) {\n  return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n  return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n  return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n  return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n  return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n  return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n  return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n  return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n  return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n  return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n\n\n/***/ }),\n/* 719 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineBuiltIn = __webpack_require__(62);\nvar errorToString = __webpack_require__(482);\n\nvar ErrorPrototype = Error.prototype;\n\n// `Error.prototype.toString` method fix\n// https://tc39.es/ecma262/#sec-error.prototype.tostring\nif (ErrorPrototype.toString !== errorToString) {\n  defineBuiltIn(ErrorPrototype, 'toString', errorToString);\n}\n\n\n/***/ }),\n/* 720 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(721);\n\n\n/***/ }),\n/* 721 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar isPrototypeOf = __webpack_require__(113);\nvar getPrototypeOf = __webpack_require__(115);\nvar setPrototypeOf = __webpack_require__(124);\nvar copyConstructorProperties = __webpack_require__(281);\nvar create = __webpack_require__(101);\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar createPropertyDescriptor = __webpack_require__(112);\nvar clearErrorStack = __webpack_require__(283);\nvar installErrorCause = __webpack_require__(481);\nvar iterate = __webpack_require__(125);\nvar normalizeStringArgument = __webpack_require__(235);\nvar wellKnownSymbol = __webpack_require__(41);\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(366);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n  var options = arguments.length > 2 ? arguments[2] : undefined;\n  var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n  var that;\n  if (setPrototypeOf) {\n    that = setPrototypeOf($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  if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n  installErrorCause(that, options);\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\n\n/***/ }),\n/* 722 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar getBuiltIn = __webpack_require__(59);\nvar apply = __webpack_require__(114);\nvar fails = __webpack_require__(16);\nvar wrapErrorConstructorWithCause = __webpack_require__(478);\n\nvar AGGREGATE_ERROR = 'AggregateError';\nvar $AggregateError = getBuiltIn(AGGREGATE_ERROR);\n\nvar FORCED = !fails(function () {\n  return $AggregateError([1]).errors[0] !== 1;\n}) && fails(function () {\n  return $AggregateError([1], AGGREGATE_ERROR, { cause: 7 }).cause !== 7;\n});\n\n// https://github.com/tc39/proposal-error-cause\n$({ global: true, constructor: true, arity: 2, forced: FORCED }, {\n  AggregateError: wrapErrorConstructorWithCause(AGGREGATE_ERROR, function (init) {\n    // eslint-disable-next-line no-unused-vars -- required for functions `.length`\n    return function AggregateError(errors, message) { return apply(init, this, arguments); };\n  }, FORCED, true)\n});\n\n\n/***/ }),\n/* 723 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar toObject = __webpack_require__(47);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar addToUnscopables = __webpack_require__(119);\n\n// `Array.prototype.at` method\n// https://github.com/tc39/proposal-relative-indexing-method\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\n\n/***/ }),\n/* 724 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar copyWithin = __webpack_require__(484);\nvar addToUnscopables = __webpack_require__(119);\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\n\n/***/ }),\n/* 725 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $every = __webpack_require__(84).every;\nvar arrayMethodIsStrict = __webpack_require__(140);\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\n\n/***/ }),\n/* 726 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $findLast = __webpack_require__(287).findLast;\nvar addToUnscopables = __webpack_require__(119);\n\n// `Array.prototype.findLast` method\n// https://github.com/tc39/proposal-array-find-from-last\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\n\n/***/ }),\n/* 727 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $findLastIndex = __webpack_require__(287).findLastIndex;\nvar addToUnscopables = __webpack_require__(119);\n\n// `Array.prototype.findLastIndex` method\n// https://github.com/tc39/proposal-array-find-from-last\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\n\n/***/ }),\n/* 728 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar flattenIntoArray = __webpack_require__(486);\nvar toObject = __webpack_require__(47);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar arraySpeciesCreate = __webpack_require__(234);\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\n\n/***/ }),\n/* 729 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar flattenIntoArray = __webpack_require__(486);\nvar aCallable = __webpack_require__(77);\nvar toObject = __webpack_require__(47);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar arraySpeciesCreate = __webpack_require__(234);\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\n\n/***/ }),\n/* 730 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(35);\nvar iteratorClose = __webpack_require__(483);\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\n\n/***/ }),\n/* 731 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar IndexedObject = __webpack_require__(194);\nvar toIndexedObject = __webpack_require__(92);\nvar arrayMethodIsStrict = __webpack_require__(140);\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n  join: function join(separator) {\n    return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n\n\n/***/ }),\n/* 732 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar lastIndexOf = __webpack_require__(492);\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\n// eslint-disable-next-line es-x/no-array-prototype-lastindexof -- required for testing\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n  lastIndexOf: lastIndexOf\n});\n\n\n/***/ }),\n/* 733 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar fails = __webpack_require__(16);\nvar isConstructor = __webpack_require__(199);\nvar createProperty = __webpack_require__(139);\n\nvar $Array = Array;\n\nvar ISNT_GENERIC = fails(function () {\n  function F() { /* empty */ }\n  // eslint-disable-next-line es-x/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\n\n/***/ }),\n/* 734 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar toObject = __webpack_require__(47);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar setArrayLength = __webpack_require__(372);\nvar doesNotExceedSafeInteger = __webpack_require__(238);\nvar fails = __webpack_require__(16);\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar SILENT_ON_NON_WRITABLE_LENGTH = !function () {\n  try {\n    // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: INCORRECT_TO_LENGTH || SILENT_ON_NON_WRITABLE_LENGTH }, {\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\n\n/***/ }),\n/* 735 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $reduceRight = __webpack_require__(291).right;\nvar arrayMethodIsStrict = __webpack_require__(140);\nvar CHROME_VERSION = __webpack_require__(134);\nvar IS_NODE = __webpack_require__(141);\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduceRight');\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;\n\n// `Array.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduceright\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n  reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n    return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n/* 736 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar isArray = __webpack_require__(149);\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\n\n/***/ }),\n/* 737 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar aCallable = __webpack_require__(77);\nvar toObject = __webpack_require__(47);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar deletePropertyOrThrow = __webpack_require__(285);\nvar toString = __webpack_require__(42);\nvar fails = __webpack_require__(16);\nvar internalSort = __webpack_require__(373);\nvar arrayMethodIsStrict = __webpack_require__(140);\nvar FF = __webpack_require__(493);\nvar IE_OR_EDGE = __webpack_require__(494);\nvar V8 = __webpack_require__(134);\nvar WEBKIT = __webpack_require__(374);\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\n\n/***/ }),\n/* 738 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar setSpecies = __webpack_require__(201);\n\n// `Array[@@species]` getter\n// https://tc39.es/ecma262/#sec-get-array-@@species\nsetSpecies('Array');\n\n\n/***/ }),\n/* 739 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = __webpack_require__(119);\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n\n\n/***/ }),\n/* 740 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = __webpack_require__(119);\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n\n\n/***/ }),\n/* 741 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar toObject = __webpack_require__(47);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar setArrayLength = __webpack_require__(372);\nvar deletePropertyOrThrow = __webpack_require__(285);\nvar doesNotExceedSafeInteger = __webpack_require__(238);\n\n// IE8-\nvar INCORRECT_RESULT = [].unshift(0) !== 1;\n\n// V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError\nvar SILENT_ON_NON_WRITABLE_LENGTH = !function () {\n  try {\n    // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).unshift();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\n// `Array.prototype.unshift` method\n// https://tc39.es/ecma262/#sec-array.prototype.unshift\n$({ target: 'Array', proto: true, arity: 1, forced: INCORRECT_RESULT || SILENT_ON_NON_WRITABLE_LENGTH }, {\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\n\n/***/ }),\n/* 742 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar arrayBufferModule = __webpack_require__(293);\nvar setSpecies = __webpack_require__(201);\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n  ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n\n\n/***/ }),\n/* 743 */\n/***/ (function(module, exports) {\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n  var buffer = $Array(bytes);\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n  var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n  var index = 0;\n  var exponent, mantissa, c;\n  number = abs(number);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (number != number || number === Infinity) {\n    // eslint-disable-next-line no-self-compare -- NaN check\n    mantissa = number != number ? 1 : 0;\n    exponent = eMax;\n  } else {\n    exponent = floor(log(number) / LN2);\n    c = pow(2, -exponent);\n    if (number * c < 1) {\n      exponent--;\n      c *= 2;\n    }\n    if (exponent + eBias >= 1) {\n      number += rt / c;\n    } else {\n      number += rt * pow(2, 1 - eBias);\n    }\n    if (number * c >= 2) {\n      exponent++;\n      c /= 2;\n    }\n    if (exponent + eBias >= eMax) {\n      mantissa = 0;\n      exponent = eMax;\n    } else if (exponent + eBias >= 1) {\n      mantissa = (number * c - 1) * pow(2, mantissaLength);\n      exponent = exponent + eBias;\n    } else {\n      mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n      exponent = 0;\n    }\n  }\n  while (mantissaLength >= 8) {\n    buffer[index++] = mantissa & 255;\n    mantissa /= 256;\n    mantissaLength -= 8;\n  }\n  exponent = exponent << mantissaLength | mantissa;\n  exponentLength += mantissaLength;\n  while (exponentLength > 0) {\n    buffer[index++] = exponent & 255;\n    exponent /= 256;\n    exponentLength -= 8;\n  }\n  buffer[--index] |= sign * 128;\n  return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n  var bytes = buffer.length;\n  var exponentLength = bytes * 8 - mantissaLength - 1;\n  var eMax = (1 << exponentLength) - 1;\n  var eBias = eMax >> 1;\n  var nBits = exponentLength - 7;\n  var index = bytes - 1;\n  var sign = buffer[index--];\n  var exponent = sign & 127;\n  var mantissa;\n  sign >>= 7;\n  while (nBits > 0) {\n    exponent = exponent * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  mantissa = exponent & (1 << -nBits) - 1;\n  exponent >>= -nBits;\n  nBits += mantissaLength;\n  while (nBits > 0) {\n    mantissa = mantissa * 256 + buffer[index--];\n    nBits -= 8;\n  }\n  if (exponent === 0) {\n    exponent = 1 - eBias;\n  } else if (exponent === eMax) {\n    return mantissa ? NaN : sign ? -Infinity : Infinity;\n  } else {\n    mantissa = mantissa + pow(2, mantissaLength);\n    exponent = exponent - eBias;\n  } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n  pack: pack,\n  unpack: unpack\n};\n\n\n/***/ }),\n/* 744 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar ArrayBufferViewCore = __webpack_require__(45);\n\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\n\n// `ArrayBuffer.isView` method\n// https://tc39.es/ecma262/#sec-arraybuffer.isview\n$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n  isView: ArrayBufferViewCore.isView\n});\n\n\n/***/ }),\n/* 745 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\nvar ArrayBufferModule = __webpack_require__(293);\nvar anObject = __webpack_require__(35);\nvar toAbsoluteIndex = __webpack_require__(137);\nvar toLength = __webpack_require__(100);\nvar speciesConstructor = __webpack_require__(202);\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n  return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n  slice: function slice(start, end) {\n    if (nativeArrayBufferSlice && end === undefined) {\n      return nativeArrayBufferSlice(anObject(this), start); // FF fix\n    }\n    var length = anObject(this).byteLength;\n    var first = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n    var viewSource = new DataView(this);\n    var viewTarget = new DataView(result);\n    var index = 0;\n    while (first < fin) {\n      setUint8(viewTarget, index++, getUint8(viewSource, first++));\n    } return result;\n  }\n});\n\n\n/***/ }),\n/* 746 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(747);\n\n\n/***/ }),\n/* 747 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar ArrayBufferModule = __webpack_require__(293);\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(375);\n\n// `DataView` constructor\n// https://tc39.es/ecma262/#sec-dataview-constructor\n$({ global: true, constructor: true, forced: !NATIVE_ARRAY_BUFFER }, {\n  DataView: ArrayBufferModule.DataView\n});\n\n\n/***/ }),\n/* 748 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\n\nvar FORCED = fails(function () {\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\n\n/***/ }),\n/* 749 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\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\n\n/***/ }),\n/* 750 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar toIntegerOrInfinity = __webpack_require__(78);\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 = 0 <= yi && yi <= 99 ? yi + 1900 : yi;\n    return setFullYear(this, yyyy);\n  }\n});\n\n\n/***/ }),\n/* 751 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\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\n\n/***/ }),\n/* 752 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar toISOString = __webpack_require__(753);\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\n\n/***/ }),\n/* 753 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\nvar padStart = __webpack_require__(377).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 $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\n\n/***/ }),\n/* 754 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hasOwn = __webpack_require__(44);\nvar defineBuiltIn = __webpack_require__(62);\nvar dateToPrimitive = __webpack_require__(755);\nvar wellKnownSymbol = __webpack_require__(41);\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\n\n/***/ }),\n/* 755 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar anObject = __webpack_require__(35);\nvar ordinaryToPrimitive = __webpack_require__(466);\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 $TypeError('Incorrect hint');\n  return ordinaryToPrimitive(this, hint);\n};\n\n\n/***/ }),\n/* 756 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar toString = __webpack_require__(42);\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar exec = uncurryThis(/./.exec);\nvar numberToString = uncurryThis(1.0.toString);\nvar toUpperCase = uncurryThis(''.toUpperCase);\n\nvar raw = /[\\w*+\\-./@]/;\n\nvar hex = function (code, length) {\n  var result = numberToString(code, 16);\n  while (result.length < length) result = '0' + result;\n  return result;\n};\n\n// `escape` method\n// https://tc39.es/ecma262/#sec-escape-string\n$({ global: true }, {\n  escape: function escape(string) {\n    var str = toString(string);\n    var result = '';\n    var length = str.length;\n    var index = 0;\n    var chr, code;\n    while (index < length) {\n      chr = charAt(str, index++);\n      if (exec(raw, chr)) {\n        result += chr;\n      } else {\n        code = charCodeAt(chr, 0);\n        if (code < 256) {\n          result += '%' + hex(code, 2);\n        } else {\n          result += '%u' + toUpperCase(hex(code, 4));\n        }\n      }\n    } return result;\n  }\n});\n\n\n/***/ }),\n/* 757 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar isCallable = __webpack_require__(43);\nvar isObject = __webpack_require__(39);\nvar definePropertyModule = __webpack_require__(48);\nvar getPrototypeOf = __webpack_require__(115);\nvar wellKnownSymbol = __webpack_require__(41);\nvar makeBuiltIn = __webpack_require__(358);\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    if (!isObject(P)) return O instanceof this;\n    // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n    while (O = getPrototypeOf(O)) if (P === O) return true;\n    return false;\n  }, HAS_INSTANCE) });\n}\n\n\n/***/ }),\n/* 758 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar setToStringTag = __webpack_require__(102);\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n/***/ }),\n/* 759 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(760);\n\n\n/***/ }),\n/* 760 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar collection = __webpack_require__(296);\nvar collectionStrong = __webpack_require__(499);\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n\n\n/***/ }),\n/* 761 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar log1p = __webpack_require__(500);\n\n// eslint-disable-next-line es-x/no-math-acosh -- required for testing\nvar $acosh = Math.acosh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\nvar LN2 = Math.LN2;\n\nvar FORCED = !$acosh\n  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n  || Math.floor($acosh(Number.MAX_VALUE)) != 710\n  // Tor Browser bug: Math.acosh(Infinity) -> NaN\n  || $acosh(Infinity) != Infinity;\n\n// `Math.acosh` method\n// https://tc39.es/ecma262/#sec-math.acosh\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  acosh: function acosh(x) {\n    var n = +x;\n    return n < 1 ? NaN : n > 94906265.62425156\n      ? log(n) + LN2\n      : log1p(n - 1 + sqrt(n - 1) * sqrt(n + 1));\n  }\n});\n\n\n/***/ }),\n/* 762 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\n\n// eslint-disable-next-line es-x/no-math-asinh -- required for testing\nvar $asinh = Math.asinh;\nvar log = Math.log;\nvar sqrt = Math.sqrt;\n\nfunction asinh(x) {\n  var n = +x;\n  return !isFinite(n) || n == 0 ? n : n < 0 ? -asinh(-n) : log(n + sqrt(n * n + 1));\n}\n\n// `Math.asinh` method\n// https://tc39.es/ecma262/#sec-math.asinh\n// Tor Browser bug: Math.asinh(0) -> -0\n$({ target: 'Math', stat: true, forced: !($asinh && 1 / $asinh(0) > 0) }, {\n  asinh: asinh\n});\n\n\n/***/ }),\n/* 763 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\n\n// eslint-disable-next-line es-x/no-math-atanh -- required for testing\nvar $atanh = Math.atanh;\nvar log = Math.log;\n\n// `Math.atanh` method\n// https://tc39.es/ecma262/#sec-math.atanh\n// Tor Browser bug: Math.atanh(-0) -> 0\n$({ target: 'Math', stat: true, forced: !($atanh && 1 / $atanh(-0) < 0) }, {\n  atanh: function atanh(x) {\n    var n = +x;\n    return n == 0 ? n : log((1 + n) / (1 - n)) / 2;\n  }\n});\n\n\n/***/ }),\n/* 764 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar sign = __webpack_require__(379);\n\nvar abs = Math.abs;\nvar pow = Math.pow;\n\n// `Math.cbrt` method\n// https://tc39.es/ecma262/#sec-math.cbrt\n$({ target: 'Math', stat: true }, {\n  cbrt: function cbrt(x) {\n    var n = +x;\n    return sign(n) * pow(abs(n), 1 / 3);\n  }\n});\n\n\n/***/ }),\n/* 765 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\n\nvar floor = Math.floor;\nvar log = Math.log;\nvar LOG2E = Math.LOG2E;\n\n// `Math.clz32` method\n// https://tc39.es/ecma262/#sec-math.clz32\n$({ target: 'Math', stat: true }, {\n  clz32: function clz32(x) {\n    var n = x >>> 0;\n    return n ? 31 - floor(log(n + 0.5) * LOG2E) : 32;\n  }\n});\n\n\n/***/ }),\n/* 766 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar expm1 = __webpack_require__(298);\n\n// eslint-disable-next-line es-x/no-math-cosh -- required for testing\nvar $cosh = Math.cosh;\nvar abs = Math.abs;\nvar E = Math.E;\n\n// `Math.cosh` method\n// https://tc39.es/ecma262/#sec-math.cosh\n$({ target: 'Math', stat: true, forced: !$cosh || $cosh(710) === Infinity }, {\n  cosh: function cosh(x) {\n    var t = expm1(abs(x) - 1) + 1;\n    return (t + 1 / (t * E * E)) * (E / 2);\n  }\n});\n\n\n/***/ }),\n/* 767 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar expm1 = __webpack_require__(298);\n\n// `Math.expm1` method\n// https://tc39.es/ecma262/#sec-math.expm1\n// eslint-disable-next-line es-x/no-math-expm1 -- required for testing\n$({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 });\n\n\n/***/ }),\n/* 768 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar fround = __webpack_require__(769);\n\n// `Math.fround` method\n// https://tc39.es/ecma262/#sec-math.fround\n$({ target: 'Math', stat: true }, { fround: fround });\n\n\n/***/ }),\n/* 769 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar sign = __webpack_require__(379);\n\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n  return n + 1 / EPSILON - 1 / EPSILON;\n};\n\n// `Math.fround` method implementation\n// https://tc39.es/ecma262/#sec-math.fround\n// eslint-disable-next-line es-x/no-math-fround -- safe\nmodule.exports = Math.fround || function fround(x) {\n  var n = +x;\n  var $abs = abs(n);\n  var $sign = sign(n);\n  var a, result;\n  if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n  a = (1 + EPSILON32 / EPSILON) * $abs;\n  result = a - (a - $abs);\n  // eslint-disable-next-line no-self-compare -- NaN check\n  if (result > MAX32 || result != result) return $sign * Infinity;\n  return $sign * result;\n};\n\n\n/***/ }),\n/* 770 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\n\n// eslint-disable-next-line es-x/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: BUGGY }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  hypot: function hypot(value1, value2) {\n    var sum = 0;\n    var i = 0;\n    var aLen = arguments.length;\n    var larg = 0;\n    var arg, div;\n    while (i < aLen) {\n      arg = abs(arguments[i++]);\n      if (larg < arg) {\n        div = larg / arg;\n        sum = sum * div * div + 1;\n        larg = arg;\n      } else if (arg > 0) {\n        div = arg / larg;\n        sum += div * div;\n      } else sum += arg;\n    }\n    return larg === Infinity ? Infinity : larg * sqrt(sum);\n  }\n});\n\n\n/***/ }),\n/* 771 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar fails = __webpack_require__(16);\n\n// eslint-disable-next-line es-x/no-math-imul -- required for testing\nvar $imul = Math.imul;\n\nvar FORCED = fails(function () {\n  return $imul(0xFFFFFFFF, 5) != -5 || $imul.length != 2;\n});\n\n// `Math.imul` method\n// https://tc39.es/ecma262/#sec-math.imul\n// some WebKit versions fails with big numbers, some has wrong arity\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  imul: function imul(x, y) {\n    var UINT16 = 0xFFFF;\n    var xn = +x;\n    var yn = +y;\n    var xl = UINT16 & xn;\n    var yl = UINT16 & yn;\n    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n  }\n});\n\n\n/***/ }),\n/* 772 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar log10 = __webpack_require__(501);\n\n// `Math.log10` method\n// https://tc39.es/ecma262/#sec-math.log10\n$({ target: 'Math', stat: true }, {\n  log10: log10\n});\n\n\n/***/ }),\n/* 773 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar log1p = __webpack_require__(500);\n\n// `Math.log1p` method\n// https://tc39.es/ecma262/#sec-math.log1p\n$({ target: 'Math', stat: true }, { log1p: log1p });\n\n\n/***/ }),\n/* 774 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\n// `Math.log2` method\n// https://tc39.es/ecma262/#sec-math.log2\n$({ target: 'Math', stat: true }, {\n  log2: function log2(x) {\n    return log(x) / LN2;\n  }\n});\n\n\n/***/ }),\n/* 775 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar sign = __webpack_require__(379);\n\n// `Math.sign` method\n// https://tc39.es/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n  sign: sign\n});\n\n\n/***/ }),\n/* 776 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar fails = __webpack_require__(16);\nvar expm1 = __webpack_require__(298);\n\nvar abs = Math.abs;\nvar exp = Math.exp;\nvar E = Math.E;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es-x/no-math-sinh -- required for testing\n  return Math.sinh(-2e-17) != -2e-17;\n});\n\n// `Math.sinh` method\n// https://tc39.es/ecma262/#sec-math.sinh\n// V8 near Chromium 38 has a problem with very small numbers\n$({ target: 'Math', stat: true, forced: FORCED }, {\n  sinh: function sinh(x) {\n    var n = +x;\n    return abs(n) < 1 ? (expm1(n) - expm1(-n)) / 2 : (exp(n - 1) - exp(-n - 1)) * (E / 2);\n  }\n});\n\n\n/***/ }),\n/* 777 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar expm1 = __webpack_require__(298);\n\nvar exp = Math.exp;\n\n// `Math.tanh` method\n// https://tc39.es/ecma262/#sec-math.tanh\n$({ target: 'Math', stat: true }, {\n  tanh: function tanh(x) {\n    var n = +x;\n    var a = expm1(n);\n    var b = expm1(-n);\n    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(n) + exp(-n));\n  }\n});\n\n\n/***/ }),\n/* 778 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar setToStringTag = __webpack_require__(102);\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n\n\n/***/ }),\n/* 779 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar trunc = __webpack_require__(471);\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n  trunc: trunc\n});\n\n\n/***/ }),\n/* 780 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar global = __webpack_require__(25);\nvar uncurryThis = __webpack_require__(20);\nvar isForced = __webpack_require__(231);\nvar defineBuiltIn = __webpack_require__(62);\nvar hasOwn = __webpack_require__(44);\nvar inheritIfRequired = __webpack_require__(200);\nvar isPrototypeOf = __webpack_require__(113);\nvar isSymbol = __webpack_require__(168);\nvar toPrimitive = __webpack_require__(278);\nvar fails = __webpack_require__(16);\nvar getOwnPropertyNames = __webpack_require__(148).f;\nvar getOwnPropertyDescriptor = __webpack_require__(85).f;\nvar defineProperty = __webpack_require__(48).f;\nvar thisNumberValue = __webpack_require__(299);\nvar trim = __webpack_require__(203).trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = 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 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        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = arraySlice(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\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n  var NumberWrapper = function Number(value) {\n    var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n    var dummy = this;\n    // check on 1..constructor(foo) case\n    return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n      ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n  };\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\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(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n      defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n    }\n  }\n  NumberWrapper.prototype = NumberPrototype;\n  NumberPrototype.constructor = NumberWrapper;\n  defineBuiltIn(global, NUMBER, NumberWrapper, { constructor: true });\n}\n\n\n/***/ }),\n/* 781 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\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\n/***/ }),\n/* 782 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar numberIsFinite = __webpack_require__(783);\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });\n\n\n/***/ }),\n/* 783 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\n\nvar globalIsFinite = global.isFinite;\n\n// `Number.isFinite` method\n// https://tc39.es/ecma262/#sec-number.isfinite\n// eslint-disable-next-line es-x/no-number-isfinite -- safe\nmodule.exports = Number.isFinite || function isFinite(it) {\n  return typeof it == 'number' && globalIsFinite(it);\n};\n\n\n/***/ }),\n/* 784 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar isIntegralNumber = __webpack_require__(380);\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n  isInteger: isIntegralNumber\n});\n\n\n/***/ }),\n/* 785 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\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\n\n/***/ }),\n/* 786 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar isIntegralNumber = __webpack_require__(380);\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\n\n/***/ }),\n/* 787 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\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\n\n/***/ }),\n/* 788 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\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\n\n/***/ }),\n/* 789 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar parseFloat = __webpack_require__(502);\n\n// `Number.parseFloat` method\n// https://tc39.es/ecma262/#sec-number.parseFloat\n// eslint-disable-next-line es-x/no-number-parsefloat -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {\n  parseFloat: parseFloat\n});\n\n\n/***/ }),\n/* 790 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar parseInt = __webpack_require__(503);\n\n// `Number.parseInt` method\n// https://tc39.es/ecma262/#sec-number.parseint\n// eslint-disable-next-line es-x/no-number-parseint -- required for testing\n$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, {\n  parseInt: parseInt\n});\n\n\n/***/ }),\n/* 791 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar thisNumberValue = __webpack_require__(299);\nvar $repeat = __webpack_require__(294);\nvar log10 = __webpack_require__(501);\nvar fails = __webpack_require__(16);\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.0.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 THROWS_ON_INFINITY_FRACTION = fails(function () {\n  nativeToExponential(1, Infinity);\n}) && fails(function () {\n  nativeToExponential(1, -Infinity);\n});\n\n// Safari <11 && FF <50\nvar PROPER_NON_FINITE_THIS_CHECK = !fails(function () {\n  nativeToExponential(Infinity, Infinity);\n}) && !fails(function () {\n  nativeToExponential(NaN, Infinity);\n});\n\nvar FORCED = !ROUNDS_PROPERLY || !THROWS_ON_INFINITY_FRACTION || !PROPER_NON_FINITE_THIS_CHECK;\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 $RangeError('Incorrect fraction digits');\n    if (ROUNDS_PROPERLY) return nativeToExponential(x, f);\n    var s = '';\n    var m = '';\n    var e = 0;\n    var c = '';\n    var 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 n = 0;\n      var w = pow(10, e - f);\n      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\n/***/ }),\n/* 792 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\nvar thisNumberValue = __webpack_require__(299);\n\nvar nativeToPrecision = uncurryThis(1.0.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\n\n/***/ }),\n/* 793 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar create = __webpack_require__(101);\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n\n\n/***/ }),\n/* 794 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar FORCED = __webpack_require__(301);\nvar aCallable = __webpack_require__(77);\nvar toObject = __webpack_require__(47);\nvar definePropertyModule = __webpack_require__(48);\n\n// `Object.prototype.__defineGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __defineGetter__: function __defineGetter__(P, getter) {\n      definePropertyModule.f(toObject(this), P, { get: aCallable(getter), enumerable: true, configurable: true });\n    }\n  });\n}\n\n\n/***/ }),\n/* 795 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar FORCED = __webpack_require__(301);\nvar aCallable = __webpack_require__(77);\nvar toObject = __webpack_require__(47);\nvar definePropertyModule = __webpack_require__(48);\n\n// `Object.prototype.__defineSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __defineSetter__: function __defineSetter__(P, setter) {\n      definePropertyModule.f(toObject(this), P, { set: aCallable(setter), enumerable: true, configurable: true });\n    }\n  });\n}\n\n\n/***/ }),\n/* 796 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar $entries = __webpack_require__(506).entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n  entries: function entries(O) {\n    return $entries(O);\n  }\n});\n\n\n/***/ }),\n/* 797 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar FREEZING = __webpack_require__(243);\nvar fails = __webpack_require__(16);\nvar isObject = __webpack_require__(39);\nvar onFreeze = __webpack_require__(172).onFreeze;\n\n// eslint-disable-next-line es-x/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  freeze: function freeze(it) {\n    return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n  }\n});\n\n\n/***/ }),\n/* 798 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar iterate = __webpack_require__(125);\nvar createProperty = __webpack_require__(139);\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n  fromEntries: function fromEntries(iterable) {\n    var obj = {};\n    iterate(iterable, function (k, v) {\n      createProperty(obj, k, v);\n    }, { AS_ENTRIES: true });\n    return obj;\n  }\n});\n\n\n/***/ }),\n/* 799 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar fails = __webpack_require__(16);\nvar getOwnPropertyNames = __webpack_require__(364).f;\n\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- required for testing\nvar FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); });\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n  getOwnPropertyNames: getOwnPropertyNames\n});\n\n\n/***/ }),\n/* 800 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar fails = __webpack_require__(16);\nvar toObject = __webpack_require__(47);\nvar nativeGetPrototypeOf = __webpack_require__(115);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(367);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(it) {\n    return nativeGetPrototypeOf(toObject(it));\n  }\n});\n\n\n\n/***/ }),\n/* 801 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar hasOwn = __webpack_require__(44);\n\n// `Object.hasOwn` method\n// https://github.com/tc39/proposal-accessible-object-hasownproperty\n$({ target: 'Object', stat: true }, {\n  hasOwn: hasOwn\n});\n\n\n/***/ }),\n/* 802 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar is = __webpack_require__(507);\n\n// `Object.is` method\n// https://tc39.es/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n  is: is\n});\n\n\n/***/ }),\n/* 803 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar $isExtensible = __webpack_require__(297);\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\n$({ target: 'Object', stat: true, forced: Object.isExtensible !== $isExtensible }, {\n  isExtensible: $isExtensible\n});\n\n\n/***/ }),\n/* 804 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar fails = __webpack_require__(16);\nvar isObject = __webpack_require__(39);\nvar classof = __webpack_require__(99);\nvar ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(378);\n\n// eslint-disable-next-line es-x/no-object-isfrozen -- safe\nvar $isFrozen = Object.isFrozen;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isFrozen(1); });\n\n// `Object.isFrozen` method\n// https://tc39.es/ecma262/#sec-object.isfrozen\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE }, {\n  isFrozen: function isFrozen(it) {\n    if (!isObject(it)) return true;\n    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return true;\n    return $isFrozen ? $isFrozen(it) : false;\n  }\n});\n\n\n/***/ }),\n/* 805 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar fails = __webpack_require__(16);\nvar isObject = __webpack_require__(39);\nvar classof = __webpack_require__(99);\nvar ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(378);\n\n// eslint-disable-next-line es-x/no-object-issealed -- safe\nvar $isSealed = Object.isSealed;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isSealed(1); });\n\n// `Object.isSealed` method\n// https://tc39.es/ecma262/#sec-object.issealed\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE }, {\n  isSealed: function isSealed(it) {\n    if (!isObject(it)) return true;\n    if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return true;\n    return $isSealed ? $isSealed(it) : false;\n  }\n});\n\n\n/***/ }),\n/* 806 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar FORCED = __webpack_require__(301);\nvar toObject = __webpack_require__(47);\nvar toPropertyKey = __webpack_require__(147);\nvar getPrototypeOf = __webpack_require__(115);\nvar getOwnPropertyDescriptor = __webpack_require__(85).f;\n\n// `Object.prototype.__lookupGetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __lookupGetter__: function __lookupGetter__(P) {\n      var O = toObject(this);\n      var key = toPropertyKey(P);\n      var desc;\n      do {\n        if (desc = getOwnPropertyDescriptor(O, key)) return desc.get;\n      } while (O = getPrototypeOf(O));\n    }\n  });\n}\n\n\n/***/ }),\n/* 807 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar FORCED = __webpack_require__(301);\nvar toObject = __webpack_require__(47);\nvar toPropertyKey = __webpack_require__(147);\nvar getPrototypeOf = __webpack_require__(115);\nvar getOwnPropertyDescriptor = __webpack_require__(85).f;\n\n// `Object.prototype.__lookupSetter__` method\n// https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__\nif (DESCRIPTORS) {\n  $({ target: 'Object', proto: true, forced: FORCED }, {\n    __lookupSetter__: function __lookupSetter__(P) {\n      var O = toObject(this);\n      var key = toPropertyKey(P);\n      var desc;\n      do {\n        if (desc = getOwnPropertyDescriptor(O, key)) return desc.set;\n      } while (O = getPrototypeOf(O));\n    }\n  });\n}\n\n\n/***/ }),\n/* 808 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar isObject = __webpack_require__(39);\nvar onFreeze = __webpack_require__(172).onFreeze;\nvar FREEZING = __webpack_require__(243);\nvar fails = __webpack_require__(16);\n\n// eslint-disable-next-line es-x/no-object-preventextensions -- safe\nvar $preventExtensions = Object.preventExtensions;\nvar FAILS_ON_PRIMITIVES = fails(function () { $preventExtensions(1); });\n\n// `Object.preventExtensions` method\n// https://tc39.es/ecma262/#sec-object.preventextensions\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  preventExtensions: function preventExtensions(it) {\n    return $preventExtensions && isObject(it) ? $preventExtensions(onFreeze(it)) : it;\n  }\n});\n\n\n/***/ }),\n/* 809 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar defineBuiltInAccessor = __webpack_require__(204);\nvar isObject = __webpack_require__(39);\nvar toObject = __webpack_require__(47);\nvar requireObjectCoercible = __webpack_require__(72);\n\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nvar getPrototypeOf = Object.getPrototypeOf;\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nvar setPrototypeOf = Object.setPrototypeOf;\nvar ObjectPrototype = Object.prototype;\nvar PROTO = '__proto__';\n\n// `Object.prototype.__proto__` accessor\n// https://tc39.es/ecma262/#sec-object.prototype.__proto__\nif (DESCRIPTORS && getPrototypeOf && setPrototypeOf && !(PROTO in ObjectPrototype)) try {\n  defineBuiltInAccessor(ObjectPrototype, PROTO, {\n    configurable: true,\n    get: function __proto__() {\n      return getPrototypeOf(toObject(this));\n    },\n    set: function __proto__(proto) {\n      var O = requireObjectCoercible(this);\n      if (!isObject(proto) && proto !== null || !isObject(O)) return;\n      setPrototypeOf(O, proto);\n    }\n  });\n} catch (error) { /* empty */ }\n\n\n/***/ }),\n/* 810 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar isObject = __webpack_require__(39);\nvar onFreeze = __webpack_require__(172).onFreeze;\nvar FREEZING = __webpack_require__(243);\nvar fails = __webpack_require__(16);\n\n// eslint-disable-next-line es-x/no-object-seal -- safe\nvar $seal = Object.seal;\nvar FAILS_ON_PRIMITIVES = fails(function () { $seal(1); });\n\n// `Object.seal` method\n// https://tc39.es/ecma262/#sec-object.seal\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n  seal: function seal(it) {\n    return $seal && isObject(it) ? $seal(onFreeze(it)) : it;\n  }\n});\n\n\n/***/ }),\n/* 811 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar setPrototypeOf = __webpack_require__(124);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n  setPrototypeOf: setPrototypeOf\n});\n\n\n/***/ }),\n/* 812 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(362);\nvar classof = __webpack_require__(138);\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\n\n/***/ }),\n/* 813 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar $parseFloat = __webpack_require__(502);\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n  parseFloat: $parseFloat\n});\n\n\n/***/ }),\n/* 814 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar IS_PURE = __webpack_require__(69);\nvar IS_NODE = __webpack_require__(141);\nvar global = __webpack_require__(25);\nvar call = __webpack_require__(38);\nvar defineBuiltIn = __webpack_require__(62);\nvar setPrototypeOf = __webpack_require__(124);\nvar setToStringTag = __webpack_require__(102);\nvar setSpecies = __webpack_require__(201);\nvar aCallable = __webpack_require__(77);\nvar isCallable = __webpack_require__(43);\nvar isObject = __webpack_require__(39);\nvar anInstance = __webpack_require__(127);\nvar speciesConstructor = __webpack_require__(202);\nvar task = __webpack_require__(303).set;\nvar microtask = __webpack_require__(509);\nvar hostReportErrors = __webpack_require__(817);\nvar perform = __webpack_require__(244);\nvar Queue = __webpack_require__(818);\nvar InternalStateModule = __webpack_require__(73);\nvar NativePromiseConstructor = __webpack_require__(206);\nvar PromiseConstructorDetection = __webpack_require__(245);\nvar newPromiseCapabilityModule = __webpack_require__(173);\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 = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.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(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    global.dispatchEvent(event);\n  } else event = { promise: promise, reason: reason };\n  if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n  else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n  call(task, global, 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, global, 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 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: undefined\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$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n  Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\n\n/***/ }),\n/* 815 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(135);\nvar global = __webpack_require__(25);\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n\n\n/***/ }),\n/* 816 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(135);\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n\n\n/***/ }),\n/* 817 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\n\nmodule.exports = function (a, b) {\n  var console = global.console;\n  if (console && console.error) {\n    arguments.length == 1 ? console.error(a) : console.error(a, b);\n  }\n};\n\n\n/***/ }),\n/* 818 */\n/***/ (function(module, exports) {\n\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    if (this.head) this.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      this.head = entry.next;\n      if (this.tail === entry) this.tail = null;\n      return entry.item;\n    }\n  }\n};\n\nmodule.exports = Queue;\n\n\n/***/ }),\n/* 819 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar aCallable = __webpack_require__(77);\nvar newPromiseCapabilityModule = __webpack_require__(173);\nvar perform = __webpack_require__(244);\nvar iterate = __webpack_require__(125);\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(511);\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\n\n/***/ }),\n/* 820 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar IS_PURE = __webpack_require__(69);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(245).CONSTRUCTOR;\nvar NativePromiseConstructor = __webpack_require__(206);\nvar getBuiltIn = __webpack_require__(59);\nvar isCallable = __webpack_require__(43);\nvar defineBuiltIn = __webpack_require__(62);\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\n\n/***/ }),\n/* 821 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar aCallable = __webpack_require__(77);\nvar newPromiseCapabilityModule = __webpack_require__(173);\nvar perform = __webpack_require__(244);\nvar iterate = __webpack_require__(125);\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(511);\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\n\n/***/ }),\n/* 822 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar newPromiseCapabilityModule = __webpack_require__(173);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(245).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    call(capability.reject, undefined, r);\n    return capability.promise;\n  }\n});\n\n\n/***/ }),\n/* 823 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar getBuiltIn = __webpack_require__(59);\nvar IS_PURE = __webpack_require__(69);\nvar NativePromiseConstructor = __webpack_require__(206);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(245).CONSTRUCTOR;\nvar promiseResolve = __webpack_require__(512);\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\n/***/ }),\n/* 824 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar aCallable = __webpack_require__(77);\nvar newPromiseCapabilityModule = __webpack_require__(173);\nvar perform = __webpack_require__(244);\nvar iterate = __webpack_require__(125);\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\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\n\n/***/ }),\n/* 825 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar aCallable = __webpack_require__(77);\nvar getBuiltIn = __webpack_require__(59);\nvar newPromiseCapabilityModule = __webpack_require__(173);\nvar perform = __webpack_require__(244);\nvar iterate = __webpack_require__(125);\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 }, {\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\n\n/***/ }),\n/* 826 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar IS_PURE = __webpack_require__(69);\nvar NativePromiseConstructor = __webpack_require__(206);\nvar fails = __webpack_require__(16);\nvar getBuiltIn = __webpack_require__(59);\nvar isCallable = __webpack_require__(43);\nvar speciesConstructor = __webpack_require__(202);\nvar promiseResolve = __webpack_require__(512);\nvar defineBuiltIn = __webpack_require__(62);\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\n\n/***/ }),\n/* 827 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar functionApply = __webpack_require__(114);\nvar aCallable = __webpack_require__(77);\nvar anObject = __webpack_require__(35);\nvar fails = __webpack_require__(16);\n\n// MS Edge argumentsList argument is optional\nvar OPTIONAL_ARGUMENTS_LIST = !fails(function () {\n  // eslint-disable-next-line es-x/no-reflect -- required for testing\n  Reflect.apply(function () { /* empty */ });\n});\n\n// `Reflect.apply` method\n// https://tc39.es/ecma262/#sec-reflect.apply\n$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {\n  apply: function apply(target, thisArgument, argumentsList) {\n    return functionApply(aCallable(target), thisArgument, anObject(argumentsList));\n  }\n});\n\n\n/***/ }),\n/* 828 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar anObject = __webpack_require__(35);\nvar toPropertyKey = __webpack_require__(147);\nvar definePropertyModule = __webpack_require__(48);\nvar fails = __webpack_require__(16);\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\nvar ERROR_INSTEAD_OF_FALSE = fails(function () {\n  // eslint-disable-next-line es-x/no-reflect -- required for testing\n  Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 });\n});\n\n// `Reflect.defineProperty` method\n// https://tc39.es/ecma262/#sec-reflect.defineproperty\n$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {\n  defineProperty: function defineProperty(target, propertyKey, attributes) {\n    anObject(target);\n    var key = toPropertyKey(propertyKey);\n    anObject(attributes);\n    try {\n      definePropertyModule.f(target, key, attributes);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n\n\n/***/ }),\n/* 829 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar anObject = __webpack_require__(35);\nvar getOwnPropertyDescriptor = __webpack_require__(85).f;\n\n// `Reflect.deleteProperty` method\n// https://tc39.es/ecma262/#sec-reflect.deleteproperty\n$({ target: 'Reflect', stat: true }, {\n  deleteProperty: function deleteProperty(target, propertyKey) {\n    var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey);\n    return descriptor && !descriptor.configurable ? false : delete target[propertyKey];\n  }\n});\n\n\n/***/ }),\n/* 830 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar isObject = __webpack_require__(39);\nvar anObject = __webpack_require__(35);\nvar isDataDescriptor = __webpack_require__(513);\nvar getOwnPropertyDescriptorModule = __webpack_require__(85);\nvar getPrototypeOf = __webpack_require__(115);\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n  var receiver = arguments.length < 3 ? target : arguments[2];\n  var descriptor, prototype;\n  if (anObject(target) === receiver) return target[propertyKey];\n  descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);\n  if (descriptor) return isDataDescriptor(descriptor)\n    ? descriptor.value\n    : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);\n  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n  get: get\n});\n\n\n/***/ }),\n/* 831 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar anObject = __webpack_require__(35);\nvar getOwnPropertyDescriptorModule = __webpack_require__(85);\n\n// `Reflect.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor\n$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, {\n  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n    return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n  }\n});\n\n\n/***/ }),\n/* 832 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar anObject = __webpack_require__(35);\nvar objectGetPrototypeOf = __webpack_require__(115);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(367);\n\n// `Reflect.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.getprototypeof\n$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {\n  getPrototypeOf: function getPrototypeOf(target) {\n    return objectGetPrototypeOf(anObject(target));\n  }\n});\n\n\n/***/ }),\n/* 833 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\n\n// `Reflect.has` method\n// https://tc39.es/ecma262/#sec-reflect.has\n$({ target: 'Reflect', stat: true }, {\n  has: function has(target, propertyKey) {\n    return propertyKey in target;\n  }\n});\n\n\n/***/ }),\n/* 834 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar anObject = __webpack_require__(35);\nvar $isExtensible = __webpack_require__(297);\n\n// `Reflect.isExtensible` method\n// https://tc39.es/ecma262/#sec-reflect.isextensible\n$({ target: 'Reflect', stat: true }, {\n  isExtensible: function isExtensible(target) {\n    anObject(target);\n    return $isExtensible(target);\n  }\n});\n\n\n/***/ }),\n/* 835 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar ownKeys = __webpack_require__(360);\n\n// `Reflect.ownKeys` method\n// https://tc39.es/ecma262/#sec-reflect.ownkeys\n$({ target: 'Reflect', stat: true }, {\n  ownKeys: ownKeys\n});\n\n\n/***/ }),\n/* 836 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar getBuiltIn = __webpack_require__(59);\nvar anObject = __webpack_require__(35);\nvar FREEZING = __webpack_require__(243);\n\n// `Reflect.preventExtensions` method\n// https://tc39.es/ecma262/#sec-reflect.preventextensions\n$({ target: 'Reflect', stat: true, sham: !FREEZING }, {\n  preventExtensions: function preventExtensions(target) {\n    anObject(target);\n    try {\n      var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions');\n      if (objectPreventExtensions) objectPreventExtensions(target);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n\n\n/***/ }),\n/* 837 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar anObject = __webpack_require__(35);\nvar isObject = __webpack_require__(39);\nvar isDataDescriptor = __webpack_require__(513);\nvar fails = __webpack_require__(16);\nvar definePropertyModule = __webpack_require__(48);\nvar getOwnPropertyDescriptorModule = __webpack_require__(85);\nvar getPrototypeOf = __webpack_require__(115);\nvar createPropertyDescriptor = __webpack_require__(112);\n\n// `Reflect.set` method\n// https://tc39.es/ecma262/#sec-reflect.set\nfunction set(target, propertyKey, V /* , receiver */) {\n  var receiver = arguments.length < 4 ? target : arguments[3];\n  var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);\n  var existingDescriptor, prototype, setter;\n  if (!ownDescriptor) {\n    if (isObject(prototype = getPrototypeOf(target))) {\n      return set(prototype, propertyKey, V, receiver);\n    }\n    ownDescriptor = createPropertyDescriptor(0);\n  }\n  if (isDataDescriptor(ownDescriptor)) {\n    if (ownDescriptor.writable === false || !isObject(receiver)) return false;\n    if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {\n      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n      existingDescriptor.value = V;\n      definePropertyModule.f(receiver, propertyKey, existingDescriptor);\n    } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));\n  } else {\n    setter = ownDescriptor.set;\n    if (setter === undefined) return false;\n    call(setter, receiver, V);\n  } return true;\n}\n\n// MS Edge 17-18 Reflect.set allows setting the property to object\n// with non-writable property on the prototype\nvar MS_EDGE_BUG = fails(function () {\n  var Constructor = function () { /* empty */ };\n  var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });\n  // eslint-disable-next-line es-x/no-reflect -- required for testing\n  return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;\n});\n\n$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {\n  set: set\n});\n\n\n/***/ }),\n/* 838 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar anObject = __webpack_require__(35);\nvar aPossiblePrototype = __webpack_require__(479);\nvar objectSetPrototypeOf = __webpack_require__(124);\n\n// `Reflect.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-reflect.setprototypeof\nif (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {\n  setPrototypeOf: function setPrototypeOf(target, proto) {\n    anObject(target);\n    aPossiblePrototype(proto);\n    try {\n      objectSetPrototypeOf(target, proto);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  }\n});\n\n\n/***/ }),\n/* 839 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar setToStringTag = __webpack_require__(102);\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n\n\n/***/ }),\n/* 840 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar global = __webpack_require__(25);\nvar uncurryThis = __webpack_require__(20);\nvar isForced = __webpack_require__(231);\nvar inheritIfRequired = __webpack_require__(200);\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar getOwnPropertyNames = __webpack_require__(148).f;\nvar isPrototypeOf = __webpack_require__(113);\nvar isRegExp = __webpack_require__(246);\nvar toString = __webpack_require__(42);\nvar getRegExpFlags = __webpack_require__(247);\nvar stickyHelpers = __webpack_require__(304);\nvar proxyAccessor = __webpack_require__(480);\nvar defineBuiltIn = __webpack_require__(62);\nvar fails = __webpack_require__(16);\nvar hasOwn = __webpack_require__(44);\nvar enforceInternalState = __webpack_require__(73).enforce;\nvar setSpecies = __webpack_require__(201);\nvar wellKnownSymbol = __webpack_require__(41);\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(384);\nvar UNSUPPORTED_NCG = __webpack_require__(514);\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.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    return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || 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 = {};\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 = 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        if (exec(IS_NCG, stringSlice(string, index + 1))) {\n          index += 2;\n          ncg = true;\n        }\n        result += chr;\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(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n\n\n/***/ }),\n/* 841 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(384);\nvar classof = __webpack_require__(99);\nvar defineBuiltInAccessor = __webpack_require__(204);\nvar getInternalState = __webpack_require__(73).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 undefined;\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 $TypeError('Incompatible receiver, RegExp required');\n    }\n  });\n}\n\n\n/***/ }),\n/* 842 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar DESCRIPTORS = __webpack_require__(30);\nvar defineBuiltInAccessor = __webpack_require__(204);\nvar regExpFlags = __webpack_require__(383);\nvar fails = __webpack_require__(16);\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && 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-x/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-x/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n  return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\n\n\n/***/ }),\n/* 843 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(30);\nvar MISSED_STICKY = __webpack_require__(304).MISSED_STICKY;\nvar classof = __webpack_require__(99);\nvar defineBuiltInAccessor = __webpack_require__(204);\nvar getInternalState = __webpack_require__(73).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 undefined;\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 $TypeError('Incompatible receiver, RegExp required');\n    }\n  });\n}\n\n\n/***/ }),\n/* 844 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(207);\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar isCallable = __webpack_require__(43);\nvar anObject = __webpack_require__(35);\nvar toString = __webpack_require__(42);\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\n\n/***/ }),\n/* 845 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(846);\n\n\n/***/ }),\n/* 846 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar collection = __webpack_require__(296);\nvar collectionStrong = __webpack_require__(499);\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n\n\n/***/ }),\n/* 847 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar requireObjectCoercible = __webpack_require__(72);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar toString = __webpack_require__(42);\nvar fails = __webpack_require__(16);\n\nvar charAt = uncurryThis(''.charAt);\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es-x/no-array-string-prototype-at -- safe\n  return '𠮷'.at(-2) !== '\\uD842';\n});\n\n// `String.prototype.at` method\n// https://github.com/tc39/proposal-relative-indexing-method\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\n\n/***/ }),\n/* 848 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar codeAt = __webpack_require__(307).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\n\n/***/ }),\n/* 849 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar getOwnPropertyDescriptor = __webpack_require__(85).f;\nvar toLength = __webpack_require__(100);\nvar toString = __webpack_require__(42);\nvar notARegExp = __webpack_require__(385);\nvar requireObjectCoercible = __webpack_require__(72);\nvar correctIsRegExpLogic = __webpack_require__(386);\nvar IS_PURE = __webpack_require__(69);\n\n// eslint-disable-next-line es-x/no-string-prototype-endswith -- safe\nvar nativeEndsWith = uncurryThis(''.endsWith);\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 nativeEndsWith\n      ? nativeEndsWith(that, search, end)\n      : slice(that, end - search.length, end) === search;\n  }\n});\n\n\n/***/ }),\n/* 850 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar call = __webpack_require__(38);\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(308);\nvar anObject = __webpack_require__(35);\nvar isNullOrUndefined = __webpack_require__(93);\nvar toLength = __webpack_require__(100);\nvar toString = __webpack_require__(42);\nvar requireObjectCoercible = __webpack_require__(72);\nvar getMethod = __webpack_require__(136);\nvar advanceStringIndex = __webpack_require__(309);\nvar regExpExec = __webpack_require__(250);\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 = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\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      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\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\n\n/***/ }),\n/* 851 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/* eslint-disable es-x/no-string-prototype-matchall -- safe */\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar uncurryThis = __webpack_require__(20);\nvar createIteratorConstructor = __webpack_require__(371);\nvar requireObjectCoercible = __webpack_require__(72);\nvar toLength = __webpack_require__(100);\nvar toString = __webpack_require__(42);\nvar anObject = __webpack_require__(35);\nvar isNullOrUndefined = __webpack_require__(93);\nvar classof = __webpack_require__(99);\nvar isRegExp = __webpack_require__(246);\nvar getRegExpFlags = __webpack_require__(247);\nvar getMethod = __webpack_require__(136);\nvar defineBuiltIn = __webpack_require__(62);\nvar fails = __webpack_require__(16);\nvar wellKnownSymbol = __webpack_require__(41);\nvar speciesConstructor = __webpack_require__(202);\nvar advanceStringIndex = __webpack_require__(309);\nvar regExpExec = __webpack_require__(250);\nvar InternalStateModule = __webpack_require__(73);\nvar IS_PURE = __webpack_require__(69);\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 { value: undefined, done: true };\n  var R = state.regexp;\n  var S = state.string;\n  var match = regExpExec(R, S);\n  if (match === null) return { value: undefined, done: state.done = true };\n  if (state.global) {\n    if (toString(match[0]) === '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode);\n    return { value: match, done: false };\n  }\n  state.done = true;\n  return { value: match, done: 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 (!isNullOrUndefined(regexp)) {\n      if (isRegExp(regexp)) {\n        flags = toString(requireObjectCoercible(getRegExpFlags(regexp)));\n        if (!~stringIndexOf(flags, 'g')) throw $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\n\n/***/ }),\n/* 852 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $padEnd = __webpack_require__(377).end;\nvar WEBKIT_BUG = __webpack_require__(516);\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\n\n/***/ }),\n/* 853 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $padStart = __webpack_require__(377).start;\nvar WEBKIT_BUG = __webpack_require__(516);\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\n\n/***/ }),\n/* 854 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar toIndexedObject = __webpack_require__(92);\nvar toObject = __webpack_require__(47);\nvar toString = __webpack_require__(42);\nvar lengthOfArrayLike = __webpack_require__(53);\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    var argumentsLength = arguments.length;\n    var elements = [];\n    var i = 0;\n    while (literalSegments > i) {\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\n\n/***/ }),\n/* 855 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar repeat = __webpack_require__(294);\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\n\n/***/ }),\n/* 856 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar apply = __webpack_require__(114);\nvar call = __webpack_require__(38);\nvar uncurryThis = __webpack_require__(20);\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(308);\nvar fails = __webpack_require__(16);\nvar anObject = __webpack_require__(35);\nvar isCallable = __webpack_require__(43);\nvar isNullOrUndefined = __webpack_require__(93);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar toLength = __webpack_require__(100);\nvar toString = __webpack_require__(42);\nvar requireObjectCoercible = __webpack_require__(72);\nvar advanceStringIndex = __webpack_require__(309);\nvar getMethod = __webpack_require__(136);\nvar getSubstitution = __webpack_require__(517);\nvar regExpExec = __webpack_require__(250);\nvar wellKnownSymbol = __webpack_require__(41);\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 = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\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 global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var 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        // 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          var 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      return accumulatedResult + stringSlice(S, nextSourcePosition);\n    }\n  ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n\n\n/***/ }),\n/* 857 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar call = __webpack_require__(38);\nvar uncurryThis = __webpack_require__(20);\nvar requireObjectCoercible = __webpack_require__(72);\nvar isCallable = __webpack_require__(43);\nvar isNullOrUndefined = __webpack_require__(93);\nvar isRegExp = __webpack_require__(246);\nvar toString = __webpack_require__(42);\nvar getMethod = __webpack_require__(136);\nvar getRegExpFlags = __webpack_require__(247);\nvar getSubstitution = __webpack_require__(517);\nvar wellKnownSymbol = __webpack_require__(41);\nvar IS_PURE = __webpack_require__(69);\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\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n  if (fromIndex > string.length) return -1;\n  if (searchValue === '') return fromIndex;\n  return indexOf(string, searchValue, fromIndex);\n};\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, replacement;\n    var position = 0;\n    var endOfLastMatch = 0;\n    var result = '';\n    if (!isNullOrUndefined(searchValue)) {\n      IS_REG_EXP = isRegExp(searchValue);\n      if (IS_REG_EXP) {\n        flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n        if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes');\n      }\n      replacer = getMethod(searchValue, REPLACE);\n      if (replacer) {\n        return call(replacer, searchValue, O, replaceValue);\n      } else if (IS_PURE && IS_REG_EXP) {\n        return replace(toString(O), searchValue, replaceValue);\n      }\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 = stringIndexOf(string, searchString, 0);\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 = stringIndexOf(string, searchString, position + advanceBy);\n    }\n    if (endOfLastMatch < string.length) {\n      result += stringSlice(string, endOfLastMatch);\n    }\n    return result;\n  }\n});\n\n\n/***/ }),\n/* 858 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar apply = __webpack_require__(114);\nvar call = __webpack_require__(38);\nvar uncurryThis = __webpack_require__(20);\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(308);\nvar anObject = __webpack_require__(35);\nvar isNullOrUndefined = __webpack_require__(93);\nvar isRegExp = __webpack_require__(246);\nvar requireObjectCoercible = __webpack_require__(72);\nvar speciesConstructor = __webpack_require__(202);\nvar advanceStringIndex = __webpack_require__(309);\nvar toLength = __webpack_require__(100);\nvar toString = __webpack_require__(42);\nvar getMethod = __webpack_require__(136);\nvar arraySlice = __webpack_require__(233);\nvar callRegExpExec = __webpack_require__(250);\nvar regexpExec = __webpack_require__(305);\nvar stickyHelpers = __webpack_require__(304);\nvar fails = __webpack_require__(16);\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\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\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n  var internalSplit;\n  if (\n    '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    // based on es5-shim implementation, need to rework it\n    internalSplit = function (separator, limit) {\n      var string = toString(requireObjectCoercible(this));\n      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n      if (lim === 0) return [];\n      if (separator === undefined) return [string];\n      // If `separator` is not a regex, use native split\n      if (!isRegExp(separator)) {\n        return call(nativeSplit, string, separator, lim);\n      }\n      var output = [];\n      var flags = (separator.ignoreCase ? 'i' : '') +\n                  (separator.multiline ? 'm' : '') +\n                  (separator.unicode ? 'u' : '') +\n                  (separator.sticky ? 'y' : '');\n      var lastLastIndex = 0;\n      // Make `global` and avoid `lastIndex` issues by working with a copy\n      var separatorCopy = new RegExp(separator.source, flags + 'g');\n      var match, lastIndex, lastLength;\n      while (match = call(regexpExec, separatorCopy, string)) {\n        lastIndex = separatorCopy.lastIndex;\n        if (lastIndex > lastLastIndex) {\n          push(output, stringSlice(string, lastLastIndex, match.index));\n          if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n          lastLength = match[0].length;\n          lastLastIndex = lastIndex;\n          if (output.length >= lim) break;\n        }\n        if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n      }\n      if (lastLastIndex === string.length) {\n        if (lastLength || !exec(separatorCopy, '')) push(output, '');\n      } else push(output, stringSlice(string, lastLastIndex));\n      return output.length > lim ? arraySlice(output, 0, lim) : output;\n    };\n  // Chakra, V8\n  } else if ('0'.split(undefined, 0).length) {\n    internalSplit = function (separator, limit) {\n      return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n    };\n  } else internalSplit = 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 = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\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      var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n      if (res.done) return res.value;\n\n      var C = speciesConstructor(rx, RegExp);\n\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\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 callRegExpExec(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 = callRegExpExec(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}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n\n\n/***/ }),\n/* 859 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar requireObjectCoercible = __webpack_require__(72);\nvar toIntegerOrInfinity = __webpack_require__(78);\nvar toString = __webpack_require__(42);\n\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\nvar min = Math.min;\n\n// eslint-disable-next-line unicorn/prefer-string-slice, es-x/no-string-prototype-substr -- 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\n\n/***/ }),\n/* 860 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar $trim = __webpack_require__(203).trim;\nvar forcedStringTrimMethod = __webpack_require__(387);\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\n\n/***/ }),\n/* 861 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this line from `core-js@4`\n__webpack_require__(862);\nvar $ = __webpack_require__(3);\nvar trimEnd = __webpack_require__(520);\n\n// `String.prototype.trimEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\n  trimEnd: trimEnd\n});\n\n\n/***/ }),\n/* 862 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar trimEnd = __webpack_require__(520);\n\n// `String.prototype.trimRight` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es-x/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\n  trimRight: trimEnd\n});\n\n\n/***/ }),\n/* 863 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this line from `core-js@4`\n__webpack_require__(864);\nvar $ = __webpack_require__(3);\nvar trimStart = __webpack_require__(521);\n\n// `String.prototype.trimStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// eslint-disable-next-line es-x/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimStart !== trimStart }, {\n  trimStart: trimStart\n});\n\n\n/***/ }),\n/* 864 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar trimStart = __webpack_require__(521);\n\n// `String.prototype.trimLeft` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimleft\n// eslint-disable-next-line es-x/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimLeft !== trimStart }, {\n  trimLeft: trimStart\n});\n\n\n/***/ }),\n/* 865 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n/***/ }),\n/* 866 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 867 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 868 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 869 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 870 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 871 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 872 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 873 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 874 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 875 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 876 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar createHTML = __webpack_require__(104);\nvar forcedStringHTMLMethod = __webpack_require__(105);\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\n\n/***/ }),\n/* 877 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(142);\n\n// `Float32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float32', function (init) {\n  return function Float32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n\n\n/***/ }),\n/* 878 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIntegerOrInfinity = __webpack_require__(78);\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n  var result = toIntegerOrInfinity(it);\n  if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n  return result;\n};\n\n\n/***/ }),\n/* 879 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(142);\n\n// `Float64Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Float64', function (init) {\n  return function Float64Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n\n\n/***/ }),\n/* 880 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(142);\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n  return function Int8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n\n\n/***/ }),\n/* 881 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(142);\n\n// `Int16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int16', function (init) {\n  return function Int16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n\n\n/***/ }),\n/* 882 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(142);\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n  return function Int32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n\n\n/***/ }),\n/* 883 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(142);\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n\n\n/***/ }),\n/* 884 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(142);\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n  return function Uint8ClampedArray(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n}, true);\n\n\n/***/ }),\n/* 885 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(142);\n\n// `Uint16Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint16', function (init) {\n  return function Uint16Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n\n\n/***/ }),\n/* 886 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(142);\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n  return function Uint32Array(data, byteOffset, length) {\n    return init(this, data, byteOffset, length);\n  };\n});\n\n\n/***/ }),\n/* 887 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar toIntegerOrInfinity = __webpack_require__(78);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://github.com/tc39/proposal-relative-indexing-method\nexportTypedArrayMethod('at', function at(index) {\n  var O = aTypedArray(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\n/***/ }),\n/* 888 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar uncurryThis = __webpack_require__(20);\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $ArrayCopyWithin = __webpack_require__(484);\n\nvar u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n  return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n\n\n/***/ }),\n/* 889 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $every = __webpack_require__(84).every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n  return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 890 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $fill = __webpack_require__(369);\nvar toBigInt = __webpack_require__(891);\nvar classof = __webpack_require__(138);\nvar call = __webpack_require__(38);\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n  var count = 0;\n  // eslint-disable-next-line es-x/no-typed-arrays -- safe\n  new Int8Array(2).fill({ valueOf: function () { return count++; } });\n  return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n  var length = arguments.length;\n  aTypedArray(this);\n  var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n  return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n\n\n/***/ }),\n/* 891 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toPrimitive = __webpack_require__(278);\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n  var prim = toPrimitive(argument, 'number');\n  if (typeof prim == 'number') throw $TypeError(\"Can't convert number to bigint\");\n  // eslint-disable-next-line es-x/no-bigint -- safe\n  return BigInt(prim);\n};\n\n\n/***/ }),\n/* 892 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $filter = __webpack_require__(84).filter;\nvar fromSpeciesAndList = __webpack_require__(893);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n  var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  return fromSpeciesAndList(this, list);\n});\n\n\n/***/ }),\n/* 893 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayFromConstructorAndList = __webpack_require__(894);\nvar typedArraySpeciesConstructor = __webpack_require__(311);\n\nmodule.exports = function (instance, list) {\n  return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n\n\n/***/ }),\n/* 894 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar lengthOfArrayLike = __webpack_require__(53);\n\nmodule.exports = function (Constructor, list) {\n  var index = 0;\n  var length = lengthOfArrayLike(list);\n  var result = new Constructor(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n};\n\n\n/***/ }),\n/* 895 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $find = __webpack_require__(84).find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n  return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 896 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $findIndex = __webpack_require__(84).findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n  return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 897 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $findLast = __webpack_require__(287).findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://github.com/tc39/proposal-array-find-from-last\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n  return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 898 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $findLastIndex = __webpack_require__(287).findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://github.com/tc39/proposal-array-find-from-last\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n  return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 899 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $forEach = __webpack_require__(84).forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n  $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 900 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(388);\nvar exportTypedArrayStaticMethod = __webpack_require__(45).exportTypedArrayStaticMethod;\nvar typedArrayFrom = __webpack_require__(523);\n\n// `%TypedArray%.from` method\n// https://tc39.es/ecma262/#sec-%typedarray%.from\nexportTypedArrayStaticMethod('from', typedArrayFrom, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n\n\n/***/ }),\n/* 901 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $includes = __webpack_require__(230).includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n  return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 902 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $indexOf = __webpack_require__(230).indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n  return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 903 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(25);\nvar fails = __webpack_require__(16);\nvar uncurryThis = __webpack_require__(20);\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar ArrayIterators = __webpack_require__(290);\nvar wellKnownSymbol = __webpack_require__(41);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = uncurryThis(ArrayIterators.values);\nvar arrayKeys = uncurryThis(ArrayIterators.keys);\nvar arrayEntries = uncurryThis(ArrayIterators.entries);\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar TypedArrayPrototype = Uint8Array && Uint8Array.prototype;\n\nvar GENERIC = !fails(function () {\n  TypedArrayPrototype[ITERATOR].call([1]);\n});\n\nvar ITERATOR_IS_VALUES = !!TypedArrayPrototype\n  && TypedArrayPrototype.values\n  && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values\n  && TypedArrayPrototype.values.name === 'values';\n\nvar typedArrayValues = function values() {\n  return arrayValues(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n  return arrayEntries(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n  return arrayKeys(aTypedArray(this));\n}, GENERIC);\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' });\n\n\n/***/ }),\n/* 904 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar uncurryThis = __webpack_require__(20);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = uncurryThis([].join);\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\nexportTypedArrayMethod('join', function join(separator) {\n  return $join(aTypedArray(this), separator);\n});\n\n\n/***/ }),\n/* 905 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar apply = __webpack_require__(114);\nvar $lastIndexOf = __webpack_require__(492);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n  var length = arguments.length;\n  return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]);\n});\n\n\n/***/ }),\n/* 906 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $map = __webpack_require__(84).map;\nvar typedArraySpeciesConstructor = __webpack_require__(311);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n  return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n    return new (typedArraySpeciesConstructor(O))(length);\n  });\n});\n\n\n/***/ }),\n/* 907 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(388);\n\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayStaticMethod = ArrayBufferViewCore.exportTypedArrayStaticMethod;\n\n// `%TypedArray%.of` method\n// https://tc39.es/ecma262/#sec-%typedarray%.of\nexportTypedArrayStaticMethod('of', function of(/* ...items */) {\n  var index = 0;\n  var length = arguments.length;\n  var result = new (aTypedArrayConstructor(this))(length);\n  while (length > index) result[index] = arguments[index++];\n  return result;\n}, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);\n\n\n/***/ }),\n/* 908 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $reduce = __webpack_require__(291).left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 909 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $reduceRight = __webpack_require__(291).right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRight` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n  var length = arguments.length;\n  return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 910 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n  var that = this;\n  var length = aTypedArray(that).length;\n  var middle = floor(length / 2);\n  var index = 0;\n  var value;\n  while (index < middle) {\n    value = that[index];\n    that[index++] = that[--length];\n    that[length] = value;\n  } return that;\n});\n\n\n/***/ }),\n/* 911 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(25);\nvar call = __webpack_require__(38);\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar toOffset = __webpack_require__(522);\nvar toIndexedObject = __webpack_require__(47);\nvar fails = __webpack_require__(16);\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () {\n  // eslint-disable-next-line es-x/no-typed-arrays -- required for testing\n  var array = new Uint8ClampedArray(2);\n  call($set, array, { length: 1, 0: 3 }, 1);\n  return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n  var array = new Int8Array(2);\n  array.set(1);\n  array.set('2', 1);\n  return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n  aTypedArray(this);\n  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n  var src = toIndexedObject(arrayLike);\n  if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n  var length = this.length;\n  var len = lengthOfArrayLike(src);\n  var index = 0;\n  if (len + offset > length) throw RangeError('Wrong length');\n  while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n\n\n/***/ }),\n/* 912 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar typedArraySpeciesConstructor = __webpack_require__(311);\nvar fails = __webpack_require__(16);\nvar arraySlice = __webpack_require__(170);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n  // eslint-disable-next-line es-x/no-typed-arrays -- required for testing\n  new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n  var list = arraySlice(aTypedArray(this), start, end);\n  var C = typedArraySpeciesConstructor(this);\n  var index = 0;\n  var length = list.length;\n  var result = new C(length);\n  while (length > index) result[index] = list[index++];\n  return result;\n}, FORCED);\n\n\n/***/ }),\n/* 913 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar $some = __webpack_require__(84).some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n  return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n/* 914 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(25);\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\nvar aCallable = __webpack_require__(77);\nvar internalSort = __webpack_require__(373);\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar FF = __webpack_require__(493);\nvar IE_OR_EDGE = __webpack_require__(494);\nvar V8 = __webpack_require__(134);\nvar WEBKIT = __webpack_require__(374);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n  nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n  nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 74;\n  if (FF) return FF < 67;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 602;\n\n  var array = new Uint16Array(516);\n  var expected = Array(516);\n  var index, mod;\n\n  for (index = 0; index < 516; index++) {\n    mod = index % 4;\n    array[index] = 515 - index;\n    expected[index] = index - 2 * mod + 3;\n  }\n\n  nativeSort(array, function (a, b) {\n    return (a / 4 | 0) - (b / 4 | 0);\n  });\n\n  for (index = 0; index < 516; index++) {\n    if (array[index] !== expected[index]) return true;\n  }\n});\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (y !== y) return -1;\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (x !== x) return 1;\n    if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n    return x > y;\n  };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n  if (comparefn !== undefined) aCallable(comparefn);\n  if (STABLE_SORT) return nativeSort(this, comparefn);\n\n  return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n\n\n/***/ }),\n/* 915 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar toLength = __webpack_require__(100);\nvar toAbsoluteIndex = __webpack_require__(137);\nvar typedArraySpeciesConstructor = __webpack_require__(311);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n  var O = aTypedArray(this);\n  var length = O.length;\n  var beginIndex = toAbsoluteIndex(begin, length);\n  var C = typedArraySpeciesConstructor(O);\n  return new C(\n    O.buffer,\n    O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n    toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n  );\n});\n\n\n/***/ }),\n/* 916 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(25);\nvar apply = __webpack_require__(114);\nvar ArrayBufferViewCore = __webpack_require__(45);\nvar fails = __webpack_require__(16);\nvar arraySlice = __webpack_require__(170);\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n  $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n  return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n  Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n  return apply(\n    $toLocaleString,\n    TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n    arraySlice(arguments)\n  );\n}, FORCED);\n\n\n/***/ }),\n/* 917 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar exportTypedArrayMethod = __webpack_require__(45).exportTypedArrayMethod;\nvar fails = __webpack_require__(16);\nvar global = __webpack_require__(25);\nvar uncurryThis = __webpack_require__(20);\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar join = uncurryThis([].join);\n\nif (fails(function () { arrayToString.call({}); })) {\n  arrayToString = function toString() {\n    return join(this);\n  };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n\n\n/***/ }),\n/* 918 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar uncurryThis = __webpack_require__(20);\nvar toString = __webpack_require__(42);\n\nvar fromCharCode = String.fromCharCode;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar stringSlice = uncurryThis(''.slice);\n\nvar hex2 = /^[\\da-f]{2}$/i;\nvar hex4 = /^[\\da-f]{4}$/i;\n\n// `unescape` method\n// https://tc39.es/ecma262/#sec-unescape-string\n$({ global: true }, {\n  unescape: function unescape(string) {\n    var str = toString(string);\n    var result = '';\n    var length = str.length;\n    var index = 0;\n    var chr, part;\n    while (index < length) {\n      chr = charAt(str, index++);\n      if (chr === '%') {\n        if (charAt(str, index) === 'u') {\n          part = stringSlice(str, index + 1, index + 5);\n          if (exec(hex4, part)) {\n            result += fromCharCode(parseInt(part, 16));\n            index += 5;\n            continue;\n          }\n        } else {\n          part = stringSlice(str, index, index + 2);\n          if (exec(hex2, part)) {\n            result += fromCharCode(parseInt(part, 16));\n            index += 2;\n            continue;\n          }\n        }\n      }\n      result += chr;\n    } return result;\n  }\n});\n\n\n/***/ }),\n/* 919 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(920);\n\n\n/***/ }),\n/* 920 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(25);\nvar uncurryThis = __webpack_require__(20);\nvar defineBuiltIns = __webpack_require__(241);\nvar InternalMetadataModule = __webpack_require__(172);\nvar collection = __webpack_require__(296);\nvar collectionWeak = __webpack_require__(524);\nvar isObject = __webpack_require__(39);\nvar isExtensible = __webpack_require__(297);\nvar enforceInternalState = __webpack_require__(73).enforce;\nvar NATIVE_WEAK_MAP = __webpack_require__(469);\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n  return function WeakMap() {\n    return init(this, arguments.length ? arguments[0] : undefined);\n  };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n  InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n  InternalMetadataModule.enable();\n  var WeakMapPrototype = $WeakMap.prototype;\n  var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n  var nativeHas = uncurryThis(WeakMapPrototype.has);\n  var nativeGet = uncurryThis(WeakMapPrototype.get);\n  var nativeSet = uncurryThis(WeakMapPrototype.set);\n  defineBuiltIns(WeakMapPrototype, {\n    'delete': function (key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeDelete(this, key) || state.frozen['delete'](key);\n      } return nativeDelete(this, key);\n    },\n    has: function has(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas(this, key) || state.frozen.has(key);\n      } return nativeHas(this, key);\n    },\n    get: function get(key) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\n      } return nativeGet(this, key);\n    },\n    set: function set(key, value) {\n      if (isObject(key) && !isExtensible(key)) {\n        var state = enforceInternalState(this);\n        if (!state.frozen) state.frozen = new InternalWeakMap();\n        nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\n      } else nativeSet(this, key, value);\n      return this;\n    }\n  });\n}\n\n\n/***/ }),\n/* 921 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(922);\n\n\n/***/ }),\n/* 922 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar collection = __webpack_require__(296);\nvar collectionWeak = __webpack_require__(524);\n\n// `WeakSet` constructor\n// https://tc39.es/ecma262/#sec-weakset-constructor\ncollection('WeakSet', function (init) {\n  return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionWeak);\n\n\n/***/ }),\n/* 923 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar getBuiltIn = __webpack_require__(59);\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\nvar toString = __webpack_require__(42);\nvar hasOwn = __webpack_require__(44);\nvar validateArgumentsLength = __webpack_require__(151);\nvar ctoi = __webpack_require__(525).ctoi;\n\nvar disallowed = /[^\\d+/a-z]/i;\nvar whitespaces = /[\\t\\n\\f\\r ]+/g;\nvar finalEq = /[=]+$/;\n\nvar $atob = getBuiltIn('atob');\nvar fromCharCode = String.fromCharCode;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar exec = uncurryThis(disallowed.exec);\n\nvar NO_SPACES_IGNORE = fails(function () {\n  return $atob(' ') !== '';\n});\n\nvar NO_ENCODING_CHECK = !fails(function () {\n  $atob('a');\n});\n\nvar NO_ARG_RECEIVING_CHECK = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && !fails(function () {\n  $atob();\n});\n\nvar WRONG_ARITY = !NO_SPACES_IGNORE && !NO_ENCODING_CHECK && $atob.length !== 1;\n\n// `atob` method\n// https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob\n$({ global: true, enumerable: true, forced: NO_SPACES_IGNORE || NO_ENCODING_CHECK || NO_ARG_RECEIVING_CHECK || WRONG_ARITY }, {\n  atob: function atob(data) {\n    validateArgumentsLength(arguments.length, 1);\n    if (NO_ARG_RECEIVING_CHECK || WRONG_ARITY) return $atob(data);\n    var string = replace(toString(data), whitespaces, '');\n    var output = '';\n    var position = 0;\n    var bc = 0;\n    var chr, bs;\n    if (string.length % 4 == 0) {\n      string = replace(string, finalEq, '');\n    }\n    if (string.length % 4 == 1 || exec(disallowed, string)) {\n      throw new (getBuiltIn('DOMException'))('The string is not correctly encoded', 'InvalidCharacterError');\n    }\n    while (chr = charAt(string, position++)) {\n      if (hasOwn(ctoi, chr)) {\n        bs = bc % 4 ? bs * 64 + ctoi[chr] : ctoi[chr];\n        if (bc++ % 4) output += fromCharCode(255 & bs >> (-2 * bc & 6));\n      }\n    } return output;\n  }\n});\n\n\n/***/ }),\n/* 924 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar getBuiltIn = __webpack_require__(59);\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\nvar toString = __webpack_require__(42);\nvar validateArgumentsLength = __webpack_require__(151);\nvar itoc = __webpack_require__(525).itoc;\n\nvar $btoa = getBuiltIn('btoa');\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\nvar NO_ARG_RECEIVING_CHECK = !!$btoa && !fails(function () {\n  $btoa();\n});\n\nvar WRONG_ARG_CONVERSION = !!$btoa && fails(function () {\n  return $btoa(null) !== 'bnVsbA==';\n});\n\nvar WRONG_ARITY = !!$btoa && $btoa.length !== 1;\n\n// `btoa` method\n// https://html.spec.whatwg.org/multipage/webappapis.html#dom-btoa\n$({ global: true, enumerable: true, forced: NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY }, {\n  btoa: function btoa(data) {\n    validateArgumentsLength(arguments.length, 1);\n    if (NO_ARG_RECEIVING_CHECK || WRONG_ARG_CONVERSION || WRONG_ARITY) return $btoa(toString(data));\n    var string = toString(data);\n    var output = '';\n    var position = 0;\n    var map = itoc;\n    var block, charCode;\n    while (charAt(string, position) || (map = '=', position % 1)) {\n      charCode = charCodeAt(string, position += 3 / 4);\n      if (charCode > 0xFF) {\n        throw new (getBuiltIn('DOMException'))('The string contains characters outside of the Latin1 range', 'InvalidCharacterError');\n      }\n      block = block << 8 | charCode;\n      output += charAt(map, 63 & block >> 8 - position % 1 * 8);\n    } return output;\n  }\n});\n\n\n/***/ }),\n/* 925 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(25);\nvar DOMIterables = __webpack_require__(526);\nvar DOMTokenListPrototype = __webpack_require__(527);\nvar ArrayIteratorMethods = __webpack_require__(290);\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar wellKnownSymbol = __webpack_require__(41);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\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    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\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(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n\n\n/***/ }),\n/* 926 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar tryNodeRequire = __webpack_require__(927);\nvar getBuiltIn = __webpack_require__(59);\nvar fails = __webpack_require__(16);\nvar create = __webpack_require__(101);\nvar createPropertyDescriptor = __webpack_require__(112);\nvar defineProperty = __webpack_require__(48).f;\nvar defineBuiltIn = __webpack_require__(62);\nvar defineBuiltInAccessor = __webpack_require__(204);\nvar hasOwn = __webpack_require__(44);\nvar anInstance = __webpack_require__(127);\nvar anObject = __webpack_require__(35);\nvar errorToString = __webpack_require__(482);\nvar normalizeStringArgument = __webpack_require__(235);\nvar DOMExceptionConstants = __webpack_require__(528);\nvar clearErrorStack = __webpack_require__(283);\nvar InternalStateModule = __webpack_require__(73);\nvar DESCRIPTORS = __webpack_require__(30);\nvar IS_PURE = __webpack_require__(69);\n\nvar DOM_EXCEPTION = 'DOMException';\nvar DATA_CLONE_ERR = 'DATA_CLONE_ERR';\nvar Error = getBuiltIn('Error');\n// NodeJS < 17.0 does not expose `DOMException` to global\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () {\n  try {\n    // NodeJS < 15.0 does not expose `MessageChannel` to global\n    var MessageChannel = getBuiltIn('MessageChannel') || tryNodeRequire('worker_threads').MessageChannel;\n    // eslint-disable-next-line es-x/no-weak-map, unicorn/require-post-message-target-origin -- safe\n    new MessageChannel().port1.postMessage(new WeakMap());\n  } catch (error) {\n    if (error.name == DATA_CLONE_ERR && error.code == 25) return error.constructor;\n  }\n})();\nvar NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype;\nvar ErrorPrototype = Error.prototype;\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION);\nvar HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\n\nvar codeFor = function (name) {\n  return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0;\n};\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var code = codeFor(name);\n  setInternalState(this, {\n    type: DOM_EXCEPTION,\n    name: name,\n    message: message,\n    code: code\n  });\n  if (!DESCRIPTORS) {\n    this.name = name;\n    this.message = message;\n    this.code = code;\n  }\n  if (HAS_STACK) {\n    var error = Error(message);\n    error.name = DOM_EXCEPTION;\n    defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  }\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype);\n\nvar createGetterDescriptor = function (get) {\n  return { enumerable: true, configurable: true, get: get };\n};\n\nvar getterFor = function (key) {\n  return createGetterDescriptor(function () {\n    return getInternalState(this)[key];\n  });\n};\n\nif (DESCRIPTORS) {\n  defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code'));\n  defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message'));\n  defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name'));\n}\n\ndefineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException));\n\n// FF36- DOMException is a function, but can't be constructed\nvar INCORRECT_CONSTRUCTOR = fails(function () {\n  return !(new NativeDOMException() instanceof Error);\n});\n\n// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs\nvar INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () {\n  return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1';\n});\n\n// Deno 1.6.3- DOMException.prototype.code just missed\nvar INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () {\n  return new NativeDOMException(1, 'DataCloneError').code !== 25;\n});\n\n// Deno 1.6.3- DOMException constants just missed\nvar MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR\n  || NativeDOMException[DATA_CLONE_ERR] !== 25\n  || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25;\n\nvar FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR;\n\n// `DOMException` constructor\n// https://webidl.spec.whatwg.org/#idl-DOMException\n$({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {\n  defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString);\n}\n\nif (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {\n  defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {\n    return codeFor(anObject(this).name);\n  }));\n}\n\nfor (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n  var constant = DOMExceptionConstants[key];\n  var constantName = constant.s;\n  var descriptor = createPropertyDescriptor(6, constant.c);\n  if (!hasOwn(PolyfilledDOMException, constantName)) {\n    defineProperty(PolyfilledDOMException, constantName, descriptor);\n  }\n  if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) {\n    defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor);\n  }\n}\n\n\n/***/ }),\n/* 927 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_NODE = __webpack_require__(141);\n\nmodule.exports = function (name) {\n  try {\n    // eslint-disable-next-line no-new-func -- safe\n    if (IS_NODE) return Function('return require(\"' + name + '\")')();\n  } catch (error) { /* empty */ }\n};\n\n\n/***/ }),\n/* 928 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar getBuiltIn = __webpack_require__(59);\nvar createPropertyDescriptor = __webpack_require__(112);\nvar defineProperty = __webpack_require__(48).f;\nvar hasOwn = __webpack_require__(44);\nvar anInstance = __webpack_require__(127);\nvar inheritIfRequired = __webpack_require__(200);\nvar normalizeStringArgument = __webpack_require__(235);\nvar DOMExceptionConstants = __webpack_require__(528);\nvar clearErrorStack = __webpack_require__(283);\nvar DESCRIPTORS = __webpack_require__(30);\nvar IS_PURE = __webpack_require__(69);\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n  anInstance(this, DOMExceptionPrototype);\n  var argumentsLength = arguments.length;\n  var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n  var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n  var that = new NativeDOMException(message, name);\n  var error = Error(message);\n  error.name = DOM_EXCEPTION;\n  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n  inheritIfRequired(that, this, $DOMException);\n  return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n  if (!IS_PURE) {\n    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n  }\n\n  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n    var constant = DOMExceptionConstants[key];\n    var constantName = constant.s;\n    if (!hasOwn(PolyfilledDOMException, constantName)) {\n      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n    }\n  }\n}\n\n\n/***/ }),\n/* 929 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(59);\nvar setToStringTag = __webpack_require__(102);\n\nvar DOM_EXCEPTION = 'DOMException';\n\nsetToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION);\n\n\n/***/ }),\n/* 930 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(931);\n__webpack_require__(932);\n\n\n/***/ }),\n/* 931 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar clearImmediate = __webpack_require__(303).clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n  clearImmediate: clearImmediate\n});\n\n\n/***/ }),\n/* 932 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar setImmediate = __webpack_require__(303).set;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n  setImmediate: setImmediate\n});\n\n\n/***/ }),\n/* 933 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar microtask = __webpack_require__(509);\nvar aCallable = __webpack_require__(77);\nvar validateArgumentsLength = __webpack_require__(151);\nvar IS_NODE = __webpack_require__(141);\n\nvar process = global.process;\n\n// `queueMicrotask` method\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask\n$({ global: true, enumerable: true, dontCallGetSet: true }, {\n  queueMicrotask: function queueMicrotask(fn) {\n    validateArgumentsLength(arguments.length, 1);\n    aCallable(fn);\n    var domain = IS_NODE && process.domain;\n    microtask(domain ? domain.bind(fn) : fn);\n  }\n});\n\n\n/***/ }),\n/* 934 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(69);\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar getBuiltin = __webpack_require__(59);\nvar uncurryThis = __webpack_require__(20);\nvar fails = __webpack_require__(16);\nvar uid = __webpack_require__(197);\nvar isCallable = __webpack_require__(43);\nvar isConstructor = __webpack_require__(199);\nvar isNullOrUndefined = __webpack_require__(93);\nvar isObject = __webpack_require__(39);\nvar isSymbol = __webpack_require__(168);\nvar iterate = __webpack_require__(125);\nvar anObject = __webpack_require__(35);\nvar classof = __webpack_require__(138);\nvar hasOwn = __webpack_require__(44);\nvar createProperty = __webpack_require__(139);\nvar createNonEnumerableProperty = __webpack_require__(94);\nvar lengthOfArrayLike = __webpack_require__(53);\nvar validateArgumentsLength = __webpack_require__(151);\nvar getRegExpFlags = __webpack_require__(247);\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(366);\nvar V8 = __webpack_require__(134);\nvar IS_BROWSER = __webpack_require__(510);\nvar IS_DENO = __webpack_require__(382);\nvar IS_NODE = __webpack_require__(141);\n\nvar Object = global.Object;\nvar Date = global.Date;\nvar Error = global.Error;\nvar EvalError = global.EvalError;\nvar RangeError = global.RangeError;\nvar ReferenceError = global.ReferenceError;\nvar SyntaxError = global.SyntaxError;\nvar TypeError = global.TypeError;\nvar URIError = global.URIError;\nvar PerformanceMark = global.PerformanceMark;\nvar WebAssembly = global.WebAssembly;\nvar CompileError = WebAssembly && WebAssembly.CompileError || Error;\nvar LinkError = WebAssembly && WebAssembly.LinkError || Error;\nvar RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error;\nvar DOMException = getBuiltin('DOMException');\nvar Set = getBuiltin('Set');\nvar Map = getBuiltin('Map');\nvar MapPrototype = Map.prototype;\nvar mapHas = uncurryThis(MapPrototype.has);\nvar mapGet = uncurryThis(MapPrototype.get);\nvar mapSet = uncurryThis(MapPrototype.set);\nvar setAdd = uncurryThis(Set.prototype.add);\nvar objectKeys = getBuiltin('Object', 'keys');\nvar push = uncurryThis([].push);\nvar thisBooleanValue = uncurryThis(true.valueOf);\nvar thisNumberValue = uncurryThis(1.0.valueOf);\nvar thisStringValue = uncurryThis(''.valueOf);\nvar thisTimeValue = uncurryThis(Date.prototype.getTime);\nvar PERFORMANCE_MARK = uid('structuredClone');\nvar DATA_CLONE_ERROR = 'DataCloneError';\nvar TRANSFERRING = 'Transferring';\n\nvar checkBasicSemantic = function (structuredCloneImplementation) {\n  return !fails(function () {\n    var set1 = new global.Set([7]);\n    var set2 = structuredCloneImplementation(set1);\n    var number = structuredCloneImplementation(Object(7));\n    return set2 == set1 || !set2.has(7) || typeof number != 'object' || number != 7;\n  }) && structuredCloneImplementation;\n};\n\nvar checkErrorsCloning = function (structuredCloneImplementation, $Error) {\n  return !fails(function () {\n    var error = new $Error();\n    var test = structuredCloneImplementation({ a: error, b: error });\n    return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack);\n  });\n};\n\n// https://github.com/whatwg/html/pull/5749\nvar checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {\n  return !fails(function () {\n    var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));\n    return test.name != 'AggregateError' || test.errors[0] != 1 || test.message != PERFORMANCE_MARK || test.cause != 3;\n  });\n};\n\n// FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+\n// FF<103 and Safari implementations can't clone errors\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\n// FF103 can clone errors, but `.stack` of clone is an empty string\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1778762\n// FF104+ fixed it on usual errors, but not on DOMExceptions\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1777321\n// Chrome <102 returns `null` if cloned object contains multiple references to one error\n// https://bugs.chromium.org/p/v8/issues/detail?id=12542\n// NodeJS implementation can't clone DOMExceptions\n// https://github.com/nodejs/node/issues/41038\n// only FF103+ supports new (html/5749) error cloning semantic\nvar nativeStructuredClone = global.structuredClone;\n\nvar FORCED_REPLACEMENT = IS_PURE\n  || !checkErrorsCloning(nativeStructuredClone, Error)\n  || !checkErrorsCloning(nativeStructuredClone, DOMException)\n  || !checkNewErrorsCloningSemantic(nativeStructuredClone);\n\n// Chrome 82+, Safari 14.1+, Deno 1.11+\n// Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException`\n// Chrome returns `null` if cloned object contains multiple references to one error\n// Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround\n// Safari implementation can't clone errors\n// Deno 1.2-1.10 implementations too naive\n// NodeJS 16.0+ does not have `PerformanceMark` constructor\n// NodeJS <17.2 structured cloning implementation from `performance.mark` is too naive\n// and can't clone, for example, `RegExp` or some boxed primitives\n// https://github.com/nodejs/node/issues/40840\n// no one of those implementations supports new (html/5749) error cloning semantic\nvar structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {\n  return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;\n});\n\nvar nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;\n\nvar throwUncloneable = function (type) {\n  throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR);\n};\n\nvar throwUnpolyfillable = function (type, action) {\n  throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR);\n};\n\nvar createDataTransfer = function () {\n  var dataTransfer;\n  try {\n    dataTransfer = new global.DataTransfer();\n  } catch (error) {\n    try {\n      dataTransfer = new global.ClipboardEvent('').clipboardData;\n    } catch (error2) { /* empty */ }\n  }\n  return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;\n};\n\nvar structuredCloneInternal = function (value, map) {\n  if (isSymbol(value)) throwUncloneable('Symbol');\n  if (!isObject(value)) return value;\n  // effectively preserves circular references\n  if (map) {\n    if (mapHas(map, value)) return mapGet(map, value);\n  } else map = new Map();\n\n  var type = classof(value);\n  var deep = false;\n  var C, name, cloned, dataTransfer, i, length, keys, key, source, target;\n\n  switch (type) {\n    case 'Array':\n      cloned = [];\n      deep = true;\n      break;\n    case 'Object':\n      cloned = {};\n      deep = true;\n      break;\n    case 'Map':\n      cloned = new Map();\n      deep = true;\n      break;\n    case 'Set':\n      cloned = new Set();\n      deep = true;\n      break;\n    case 'RegExp':\n      // in this block because of a Safari 14.1 bug\n      // old FF does not clone regexes passed to the constructor, so get the source and flags directly\n      cloned = new RegExp(value.source, getRegExpFlags(value));\n      break;\n    case 'Error':\n      name = value.name;\n      switch (name) {\n        case 'AggregateError':\n          cloned = getBuiltin('AggregateError')([]);\n          break;\n        case 'EvalError':\n          cloned = EvalError();\n          break;\n        case 'RangeError':\n          cloned = RangeError();\n          break;\n        case 'ReferenceError':\n          cloned = ReferenceError();\n          break;\n        case 'SyntaxError':\n          cloned = SyntaxError();\n          break;\n        case 'TypeError':\n          cloned = TypeError();\n          break;\n        case 'URIError':\n          cloned = URIError();\n          break;\n        case 'CompileError':\n          cloned = CompileError();\n          break;\n        case 'LinkError':\n          cloned = LinkError();\n          break;\n        case 'RuntimeError':\n          cloned = RuntimeError();\n          break;\n        default:\n          cloned = Error();\n      }\n      deep = true;\n      break;\n    case 'DOMException':\n      cloned = new DOMException(value.message, value.name);\n      deep = true;\n      break;\n    case 'DataView':\n    case 'Int8Array':\n    case 'Uint8Array':\n    case 'Uint8ClampedArray':\n    case 'Int16Array':\n    case 'Uint16Array':\n    case 'Int32Array':\n    case 'Uint32Array':\n    case 'Float32Array':\n    case 'Float64Array':\n    case 'BigInt64Array':\n    case 'BigUint64Array':\n      C = global[type];\n      // in some old engines like Safari 9, typeof C is 'object'\n      // on Uint8ClampedArray or some other constructors\n      if (!isObject(C)) throwUnpolyfillable(type);\n      cloned = new C(\n        // this is safe, since arraybuffer cannot have circular references\n        structuredCloneInternal(value.buffer, map),\n        value.byteOffset,\n        type === 'DataView' ? value.byteLength : value.length\n      );\n      break;\n    case 'DOMQuad':\n      try {\n        cloned = new DOMQuad(\n          structuredCloneInternal(value.p1, map),\n          structuredCloneInternal(value.p2, map),\n          structuredCloneInternal(value.p3, map),\n          structuredCloneInternal(value.p4, map)\n        );\n      } catch (error) {\n        if (nativeRestrictedStructuredClone) {\n          cloned = nativeRestrictedStructuredClone(value);\n        } else throwUnpolyfillable(type);\n      }\n      break;\n    case 'FileList':\n      dataTransfer = createDataTransfer();\n      if (dataTransfer) {\n        for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {\n          dataTransfer.items.add(structuredCloneInternal(value[i], map));\n        }\n        cloned = dataTransfer.files;\n      } else if (nativeRestrictedStructuredClone) {\n        cloned = nativeRestrictedStructuredClone(value);\n      } else throwUnpolyfillable(type);\n      break;\n    case 'ImageData':\n      // Safari 9 ImageData is a constructor, but typeof ImageData is 'object'\n      try {\n        cloned = new ImageData(\n          structuredCloneInternal(value.data, map),\n          value.width,\n          value.height,\n          { colorSpace: value.colorSpace }\n        );\n      } catch (error) {\n        if (nativeRestrictedStructuredClone) {\n          cloned = nativeRestrictedStructuredClone(value);\n        } else throwUnpolyfillable(type);\n      } break;\n    default:\n      if (nativeRestrictedStructuredClone) {\n        cloned = nativeRestrictedStructuredClone(value);\n      } else switch (type) {\n        case 'BigInt':\n          // can be a 3rd party polyfill\n          cloned = Object(value.valueOf());\n          break;\n        case 'Boolean':\n          cloned = Object(thisBooleanValue(value));\n          break;\n        case 'Number':\n          cloned = Object(thisNumberValue(value));\n          break;\n        case 'String':\n          cloned = Object(thisStringValue(value));\n          break;\n        case 'Date':\n          cloned = new Date(thisTimeValue(value));\n          break;\n        case 'ArrayBuffer':\n          C = global.DataView;\n          // `ArrayBuffer#slice` is not available in IE10\n          // `ArrayBuffer#slice` and `DataView` are not available in old FF\n          if (!C && typeof value.slice != 'function') throwUnpolyfillable(type);\n          // detached buffers throws in `DataView` and `.slice`\n          try {\n            if (typeof value.slice == 'function') {\n              cloned = value.slice(0);\n            } else {\n              length = value.byteLength;\n              cloned = new ArrayBuffer(length);\n              source = new C(value);\n              target = new C(cloned);\n              for (i = 0; i < length; i++) {\n                target.setUint8(i, source.getUint8(i));\n              }\n            }\n          } catch (error) {\n            throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR);\n          } break;\n        case 'SharedArrayBuffer':\n          // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original\n          cloned = value;\n          break;\n        case 'Blob':\n          try {\n            cloned = value.slice(0, value.size, value.type);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMPoint':\n        case 'DOMPointReadOnly':\n          C = global[type];\n          try {\n            cloned = C.fromPoint\n              ? C.fromPoint(value)\n              : new C(value.x, value.y, value.z, value.w);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMRect':\n        case 'DOMRectReadOnly':\n          C = global[type];\n          try {\n            cloned = C.fromRect\n              ? C.fromRect(value)\n              : new C(value.x, value.y, value.width, value.height);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'DOMMatrix':\n        case 'DOMMatrixReadOnly':\n          C = global[type];\n          try {\n            cloned = C.fromMatrix\n              ? C.fromMatrix(value)\n              : new C(value);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'AudioData':\n        case 'VideoFrame':\n          if (!isCallable(value.clone)) throwUnpolyfillable(type);\n          try {\n            cloned = value.clone();\n          } catch (error) {\n            throwUncloneable(type);\n          } break;\n        case 'File':\n          try {\n            cloned = new File([value], value.name, value);\n          } catch (error) {\n            throwUnpolyfillable(type);\n          } break;\n        case 'CryptoKey':\n        case 'GPUCompilationMessage':\n        case 'GPUCompilationInfo':\n        case 'ImageBitmap':\n        case 'RTCCertificate':\n        case 'WebAssembly.Module':\n          throwUnpolyfillable(type);\n          // break omitted\n        default:\n          throwUncloneable(type);\n      }\n  }\n\n  mapSet(map, value, cloned);\n\n  if (deep) switch (type) {\n    case 'Array':\n    case 'Object':\n      keys = objectKeys(value);\n      for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n        key = keys[i];\n        createProperty(cloned, key, structuredCloneInternal(value[key], map));\n      } break;\n    case 'Map':\n      value.forEach(function (v, k) {\n        mapSet(cloned, structuredCloneInternal(k, map), structuredCloneInternal(v, map));\n      });\n      break;\n    case 'Set':\n      value.forEach(function (v) {\n        setAdd(cloned, structuredCloneInternal(v, map));\n      });\n      break;\n    case 'Error':\n      createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map));\n      if (hasOwn(value, 'cause')) {\n        createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map));\n      }\n      if (name == 'AggregateError') {\n        cloned.errors = structuredCloneInternal(value.errors, map);\n      } // break omitted\n    case 'DOMException':\n      if (ERROR_STACK_INSTALLABLE) {\n        createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map));\n      }\n  }\n\n  return cloned;\n};\n\nvar PROPER_TRANSFER = nativeStructuredClone && !fails(function () {\n  // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n  // https://github.com/zloirock/core-js/issues/679\n  if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;\n  var buffer = new ArrayBuffer(8);\n  var clone = nativeStructuredClone(buffer, { transfer: [buffer] });\n  return buffer.byteLength != 0 || clone.byteLength != 8;\n});\n\nvar tryToTransfer = function (rawTransfer, map) {\n  if (!isObject(rawTransfer)) throw TypeError('Transfer option cannot be converted to a sequence');\n\n  var transfer = [];\n\n  iterate(rawTransfer, function (value) {\n    push(transfer, anObject(value));\n  });\n\n  var i = 0;\n  var length = lengthOfArrayLike(transfer);\n  var value, type, C, transferredArray, transferred, canvas, context;\n\n  if (PROPER_TRANSFER) {\n    transferredArray = nativeStructuredClone(transfer, { transfer: transfer });\n    while (i < length) mapSet(map, transfer[i], transferredArray[i++]);\n  } else while (i < length) {\n    value = transfer[i++];\n    if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n\n    type = classof(value);\n\n    switch (type) {\n      case 'ImageBitmap':\n        C = global.OffscreenCanvas;\n        if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);\n        try {\n          canvas = new C(value.width, value.height);\n          context = canvas.getContext('bitmaprenderer');\n          context.transferFromImageBitmap(value);\n          transferred = canvas.transferToImageBitmap();\n        } catch (error) { /* empty */ }\n        break;\n      case 'AudioData':\n      case 'VideoFrame':\n        if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING);\n        try {\n          transferred = value.clone();\n          value.close();\n        } catch (error) { /* empty */ }\n        break;\n      case 'ArrayBuffer':\n      case 'MessagePort':\n      case 'OffscreenCanvas':\n      case 'ReadableStream':\n      case 'TransformStream':\n      case 'WritableStream':\n        throwUnpolyfillable(type, TRANSFERRING);\n    }\n\n    if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR);\n    mapSet(map, value, transferred);\n  }\n};\n\n$({ global: true, enumerable: true, sham: !PROPER_TRANSFER, forced: FORCED_REPLACEMENT }, {\n  structuredClone: function structuredClone(value /* , { transfer } */) {\n    var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;\n    var transfer = options ? options.transfer : undefined;\n    var map;\n\n    if (transfer !== undefined) {\n      map = new Map();\n      tryToTransfer(transfer, map);\n    }\n\n    return structuredCloneInternal(value, map);\n  }\n});\n\n\n/***/ }),\n/* 935 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar setInterval = __webpack_require__(529).setInterval;\n\n// ie9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: global.setInterval !== setInterval }, {\n  setInterval: setInterval\n});\n\n\n/***/ }),\n/* 936 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\nvar global = __webpack_require__(25);\nvar setTimeout = __webpack_require__(529).setTimeout;\n\n// ie9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {\n  setTimeout: setTimeout\n});\n\n\n/***/ }),\n/* 937 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(938);\n\n\n/***/ }),\n/* 938 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(249);\nvar $ = __webpack_require__(3);\nvar DESCRIPTORS = __webpack_require__(30);\nvar USE_NATIVE_URL = __webpack_require__(530);\nvar global = __webpack_require__(25);\nvar bind = __webpack_require__(118);\nvar uncurryThis = __webpack_require__(20);\nvar defineBuiltIn = __webpack_require__(62);\nvar defineBuiltInAccessor = __webpack_require__(204);\nvar anInstance = __webpack_require__(127);\nvar hasOwn = __webpack_require__(44);\nvar assign = __webpack_require__(505);\nvar arrayFrom = __webpack_require__(488);\nvar arraySlice = __webpack_require__(233);\nvar codeAt = __webpack_require__(307).codeAt;\nvar toASCII = __webpack_require__(939);\nvar $toString = __webpack_require__(42);\nvar setToStringTag = __webpack_require__(102);\nvar validateArgumentsLength = __webpack_require__(151);\nvar URLSearchParamsModule = __webpack_require__(531);\nvar InternalStateModule = __webpack_require__(73);\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n  var parts = split(input, '.');\n  var partsLength, numbers, index, part, radix, number, ipv4;\n  if (parts.length && parts[parts.length - 1] == '') {\n    parts.length--;\n  }\n  partsLength = parts.length;\n  if (partsLength > 4) return input;\n  numbers = [];\n  for (index = 0; index < partsLength; index++) {\n    part = parts[index];\n    if (part == '') return input;\n    radix = 10;\n    if (part.length > 1 && charAt(part, 0) == '0') {\n      radix = exec(HEX_START, part) ? 16 : 8;\n      part = stringSlice(part, radix == 8 ? 1 : 2);\n    }\n    if (part === '') {\n      number = 0;\n    } else {\n      if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n      number = parseInt(part, radix);\n    }\n    push(numbers, number);\n  }\n  for (index = 0; index < partsLength; index++) {\n    number = numbers[index];\n    if (index == partsLength - 1) {\n      if (number >= pow(256, 5 - partsLength)) return null;\n    } else if (number > 255) return null;\n  }\n  ipv4 = pop(numbers);\n  for (index = 0; index < numbers.length; index++) {\n    ipv4 += numbers[index] * pow(256, 3 - index);\n  }\n  return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n  var address = [0, 0, 0, 0, 0, 0, 0, 0];\n  var pieceIndex = 0;\n  var compress = null;\n  var pointer = 0;\n  var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n  var chr = function () {\n    return charAt(input, pointer);\n  };\n\n  if (chr() == ':') {\n    if (charAt(input, 1) != ':') return;\n    pointer += 2;\n    pieceIndex++;\n    compress = pieceIndex;\n  }\n  while (chr()) {\n    if (pieceIndex == 8) return;\n    if (chr() == ':') {\n      if (compress !== null) return;\n      pointer++;\n      pieceIndex++;\n      compress = pieceIndex;\n      continue;\n    }\n    value = length = 0;\n    while (length < 4 && exec(HEX, chr())) {\n      value = value * 16 + parseInt(chr(), 16);\n      pointer++;\n      length++;\n    }\n    if (chr() == '.') {\n      if (length == 0) return;\n      pointer -= length;\n      if (pieceIndex > 6) return;\n      numbersSeen = 0;\n      while (chr()) {\n        ipv4Piece = null;\n        if (numbersSeen > 0) {\n          if (chr() == '.' && numbersSeen < 4) pointer++;\n          else return;\n        }\n        if (!exec(DIGIT, chr())) return;\n        while (exec(DIGIT, chr())) {\n          number = parseInt(chr(), 10);\n          if (ipv4Piece === null) ipv4Piece = number;\n          else if (ipv4Piece == 0) return;\n          else ipv4Piece = ipv4Piece * 10 + number;\n          if (ipv4Piece > 255) return;\n          pointer++;\n        }\n        address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n        numbersSeen++;\n        if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n      }\n      if (numbersSeen != 4) return;\n      break;\n    } else if (chr() == ':') {\n      pointer++;\n      if (!chr()) return;\n    } else if (chr()) return;\n    address[pieceIndex++] = value;\n  }\n  if (compress !== null) {\n    swaps = pieceIndex - compress;\n    pieceIndex = 7;\n    while (pieceIndex != 0 && swaps > 0) {\n      swap = address[pieceIndex];\n      address[pieceIndex--] = address[compress + swaps - 1];\n      address[compress + --swaps] = swap;\n    }\n  } else if (pieceIndex != 8) return;\n  return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n  var maxIndex = null;\n  var maxLength = 1;\n  var currStart = null;\n  var currLength = 0;\n  var index = 0;\n  for (; index < 8; index++) {\n    if (ipv6[index] !== 0) {\n      if (currLength > maxLength) {\n        maxIndex = currStart;\n        maxLength = currLength;\n      }\n      currStart = null;\n      currLength = 0;\n    } else {\n      if (currStart === null) currStart = index;\n      ++currLength;\n    }\n  }\n  if (currLength > maxLength) {\n    maxIndex = currStart;\n    maxLength = currLength;\n  }\n  return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n  var result, index, compress, ignore0;\n  // ipv4\n  if (typeof host == 'number') {\n    result = [];\n    for (index = 0; index < 4; index++) {\n      unshift(result, host % 256);\n      host = floor(host / 256);\n    } return join(result, '.');\n  // ipv6\n  } else if (typeof host == 'object') {\n    result = '';\n    compress = findLongestZeroSequence(host);\n    for (index = 0; index < 8; index++) {\n      if (ignore0 && host[index] === 0) continue;\n      if (ignore0) ignore0 = false;\n      if (compress === index) {\n        result += index ? ':' : '::';\n        ignore0 = true;\n      } else {\n        result += numberToString(host[index], 16);\n        if (index < 7) result += ':';\n      }\n    }\n    return '[' + result + ']';\n  } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n  ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n  '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n  '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n  var code = codeAt(chr, 0);\n  return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n  ftp: 21,\n  file: null,\n  http: 80,\n  https: 443,\n  ws: 80,\n  wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n  var second;\n  return string.length == 2 && exec(ALPHA, charAt(string, 0))\n    && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n  var third;\n  return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n    string.length == 2 ||\n    ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n  );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n  return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n  segment = toLowerCase(segment);\n  return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n  var urlString = $toString(url);\n  var baseState, failure, searchParams;\n  if (isBase) {\n    failure = this.parse(urlString);\n    if (failure) throw TypeError(failure);\n    this.searchParams = null;\n  } else {\n    if (base !== undefined) baseState = new URLState(base, true);\n    failure = this.parse(urlString, null, baseState);\n    if (failure) throw TypeError(failure);\n    searchParams = getInternalSearchParamsState(new URLSearchParams());\n    searchParams.bindURL(this);\n    this.searchParams = searchParams;\n  }\n};\n\nURLState.prototype = {\n  type: 'URL',\n  // https://url.spec.whatwg.org/#url-parsing\n  // eslint-disable-next-line max-statements -- TODO\n  parse: function (input, stateOverride, base) {\n    var url = this;\n    var state = stateOverride || SCHEME_START;\n    var pointer = 0;\n    var buffer = '';\n    var seenAt = false;\n    var seenBracket = false;\n    var seenPasswordToken = false;\n    var codePoints, chr, bufferCodePoints, failure;\n\n    input = $toString(input);\n\n    if (!stateOverride) {\n      url.scheme = '';\n      url.username = '';\n      url.password = '';\n      url.host = null;\n      url.port = null;\n      url.path = [];\n      url.query = null;\n      url.fragment = null;\n      url.cannotBeABaseURL = false;\n      input = replace(input, LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n    }\n\n    input = replace(input, TAB_AND_NEW_LINE, '');\n\n    codePoints = arrayFrom(input);\n\n    while (pointer <= codePoints.length) {\n      chr = codePoints[pointer];\n      switch (state) {\n        case SCHEME_START:\n          if (chr && exec(ALPHA, chr)) {\n            buffer += toLowerCase(chr);\n            state = SCHEME;\n          } else if (!stateOverride) {\n            state = NO_SCHEME;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case SCHEME:\n          if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n            buffer += toLowerCase(chr);\n          } else if (chr == ':') {\n            if (stateOverride && (\n              (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n              (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n              (url.scheme == 'file' && !url.host)\n            )) return;\n            url.scheme = buffer;\n            if (stateOverride) {\n              if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n              return;\n            }\n            buffer = '';\n            if (url.scheme == 'file') {\n              state = FILE;\n            } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n              state = SPECIAL_RELATIVE_OR_AUTHORITY;\n            } else if (url.isSpecial()) {\n              state = SPECIAL_AUTHORITY_SLASHES;\n            } else if (codePoints[pointer + 1] == '/') {\n              state = PATH_OR_AUTHORITY;\n              pointer++;\n            } else {\n              url.cannotBeABaseURL = true;\n              push(url.path, '');\n              state = CANNOT_BE_A_BASE_URL_PATH;\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            state = NO_SCHEME;\n            pointer = 0;\n            continue;\n          } else return INVALID_SCHEME;\n          break;\n\n        case NO_SCHEME:\n          if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n          if (base.cannotBeABaseURL && chr == '#') {\n            url.scheme = base.scheme;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            url.cannotBeABaseURL = true;\n            state = FRAGMENT;\n            break;\n          }\n          state = base.scheme == 'file' ? FILE : RELATIVE;\n          continue;\n\n        case SPECIAL_RELATIVE_OR_AUTHORITY:\n          if (chr == '/' && codePoints[pointer + 1] == '/') {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n            pointer++;\n          } else {\n            state = RELATIVE;\n            continue;\n          } break;\n\n        case PATH_OR_AUTHORITY:\n          if (chr == '/') {\n            state = AUTHORITY;\n            break;\n          } else {\n            state = PATH;\n            continue;\n          }\n\n        case RELATIVE:\n          url.scheme = base.scheme;\n          if (chr == EOF) {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n          } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n            state = RELATIVE_SLASH;\n          } else if (chr == '?') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = '';\n            state = QUERY;\n          } else if (chr == '#') {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.query = base.query;\n            url.fragment = '';\n            state = FRAGMENT;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            url.path = arraySlice(base.path);\n            url.path.length--;\n            state = PATH;\n            continue;\n          } break;\n\n        case RELATIVE_SLASH:\n          if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n            state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          } else if (chr == '/') {\n            state = AUTHORITY;\n          } else {\n            url.username = base.username;\n            url.password = base.password;\n            url.host = base.host;\n            url.port = base.port;\n            state = PATH;\n            continue;\n          } break;\n\n        case SPECIAL_AUTHORITY_SLASHES:\n          state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n          if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n          pointer++;\n          break;\n\n        case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n          if (chr != '/' && chr != '\\\\') {\n            state = AUTHORITY;\n            continue;\n          } break;\n\n        case AUTHORITY:\n          if (chr == '@') {\n            if (seenAt) buffer = '%40' + buffer;\n            seenAt = true;\n            bufferCodePoints = arrayFrom(buffer);\n            for (var i = 0; i < bufferCodePoints.length; i++) {\n              var codePoint = bufferCodePoints[i];\n              if (codePoint == ':' && !seenPasswordToken) {\n                seenPasswordToken = true;\n                continue;\n              }\n              var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n              if (seenPasswordToken) url.password += encodedCodePoints;\n              else url.username += encodedCodePoints;\n            }\n            buffer = '';\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial())\n          ) {\n            if (seenAt && buffer == '') return INVALID_AUTHORITY;\n            pointer -= arrayFrom(buffer).length + 1;\n            buffer = '';\n            state = HOST;\n          } else buffer += chr;\n          break;\n\n        case HOST:\n        case HOSTNAME:\n          if (stateOverride && url.scheme == 'file') {\n            state = FILE_HOST;\n            continue;\n          } else if (chr == ':' && !seenBracket) {\n            if (buffer == '') return INVALID_HOST;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PORT;\n            if (stateOverride == HOSTNAME) return;\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial())\n          ) {\n            if (url.isSpecial() && buffer == '') return INVALID_HOST;\n            if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n            failure = url.parseHost(buffer);\n            if (failure) return failure;\n            buffer = '';\n            state = PATH_START;\n            if (stateOverride) return;\n            continue;\n          } else {\n            if (chr == '[') seenBracket = true;\n            else if (chr == ']') seenBracket = false;\n            buffer += chr;\n          } break;\n\n        case PORT:\n          if (exec(DIGIT, chr)) {\n            buffer += chr;\n          } else if (\n            chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n            (chr == '\\\\' && url.isSpecial()) ||\n            stateOverride\n          ) {\n            if (buffer != '') {\n              var port = parseInt(buffer, 10);\n              if (port > 0xFFFF) return INVALID_PORT;\n              url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n              buffer = '';\n            }\n            if (stateOverride) return;\n            state = PATH_START;\n            continue;\n          } else return INVALID_PORT;\n          break;\n\n        case FILE:\n          url.scheme = 'file';\n          if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n          else if (base && base.scheme == 'file') {\n            if (chr == EOF) {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = base.query;\n            } else if (chr == '?') {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = '';\n              state = QUERY;\n            } else if (chr == '#') {\n              url.host = base.host;\n              url.path = arraySlice(base.path);\n              url.query = base.query;\n              url.fragment = '';\n              state = FRAGMENT;\n            } else {\n              if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n                url.host = base.host;\n                url.path = arraySlice(base.path);\n                url.shortenPath();\n              }\n              state = PATH;\n              continue;\n            }\n          } else {\n            state = PATH;\n            continue;\n          } break;\n\n        case FILE_SLASH:\n          if (chr == '/' || chr == '\\\\') {\n            state = FILE_HOST;\n            break;\n          }\n          if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n            if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n            else url.host = base.host;\n          }\n          state = PATH;\n          continue;\n\n        case FILE_HOST:\n          if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n            if (!stateOverride && isWindowsDriveLetter(buffer)) {\n              state = PATH;\n            } else if (buffer == '') {\n              url.host = '';\n              if (stateOverride) return;\n              state = PATH_START;\n            } else {\n              failure = url.parseHost(buffer);\n              if (failure) return failure;\n              if (url.host == 'localhost') url.host = '';\n              if (stateOverride) return;\n              buffer = '';\n              state = PATH_START;\n            } continue;\n          } else buffer += chr;\n          break;\n\n        case PATH_START:\n          if (url.isSpecial()) {\n            state = PATH;\n            if (chr != '/' && chr != '\\\\') continue;\n          } else if (!stateOverride && chr == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (!stateOverride && chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            state = PATH;\n            if (chr != '/') continue;\n          } break;\n\n        case PATH:\n          if (\n            chr == EOF || chr == '/' ||\n            (chr == '\\\\' && url.isSpecial()) ||\n            (!stateOverride && (chr == '?' || chr == '#'))\n          ) {\n            if (isDoubleDot(buffer)) {\n              url.shortenPath();\n              if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else if (isSingleDot(buffer)) {\n              if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n                push(url.path, '');\n              }\n            } else {\n              if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n                if (url.host) url.host = '';\n                buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n              }\n              push(url.path, buffer);\n            }\n            buffer = '';\n            if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n              while (url.path.length > 1 && url.path[0] === '') {\n                shift(url.path);\n              }\n            }\n            if (chr == '?') {\n              url.query = '';\n              state = QUERY;\n            } else if (chr == '#') {\n              url.fragment = '';\n              state = FRAGMENT;\n            }\n          } else {\n            buffer += percentEncode(chr, pathPercentEncodeSet);\n          } break;\n\n        case CANNOT_BE_A_BASE_URL_PATH:\n          if (chr == '?') {\n            url.query = '';\n            state = QUERY;\n          } else if (chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case QUERY:\n          if (!stateOverride && chr == '#') {\n            url.fragment = '';\n            state = FRAGMENT;\n          } else if (chr != EOF) {\n            if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n            else if (chr == '#') url.query += '%23';\n            else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n          } break;\n\n        case FRAGMENT:\n          if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n          break;\n      }\n\n      pointer++;\n    }\n  },\n  // https://url.spec.whatwg.org/#host-parsing\n  parseHost: function (input) {\n    var result, codePoints, index;\n    if (charAt(input, 0) == '[') {\n      if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n      result = parseIPv6(stringSlice(input, 1, -1));\n      if (!result) return INVALID_HOST;\n      this.host = result;\n    // opaque host\n    } else if (!this.isSpecial()) {\n      if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n      result = '';\n      codePoints = arrayFrom(input);\n      for (index = 0; index < codePoints.length; index++) {\n        result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n      }\n      this.host = result;\n    } else {\n      input = toASCII(input);\n      if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n      result = parseIPv4(input);\n      if (result === null) return INVALID_HOST;\n      this.host = result;\n    }\n  },\n  // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n  cannotHaveUsernamePasswordPort: function () {\n    return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n  },\n  // https://url.spec.whatwg.org/#include-credentials\n  includesCredentials: function () {\n    return this.username != '' || this.password != '';\n  },\n  // https://url.spec.whatwg.org/#is-special\n  isSpecial: function () {\n    return hasOwn(specialSchemes, this.scheme);\n  },\n  // https://url.spec.whatwg.org/#shorten-a-urls-path\n  shortenPath: function () {\n    var path = this.path;\n    var pathSize = path.length;\n    if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n      path.length--;\n    }\n  },\n  // https://url.spec.whatwg.org/#concept-url-serializer\n  serialize: function () {\n    var url = this;\n    var scheme = url.scheme;\n    var username = url.username;\n    var password = url.password;\n    var host = url.host;\n    var port = url.port;\n    var path = url.path;\n    var query = url.query;\n    var fragment = url.fragment;\n    var output = scheme + ':';\n    if (host !== null) {\n      output += '//';\n      if (url.includesCredentials()) {\n        output += username + (password ? ':' + password : '') + '@';\n      }\n      output += serializeHost(host);\n      if (port !== null) output += ':' + port;\n    } else if (scheme == 'file') output += '//';\n    output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n    if (query !== null) output += '?' + query;\n    if (fragment !== null) output += '#' + fragment;\n    return output;\n  },\n  // https://url.spec.whatwg.org/#dom-url-href\n  setHref: function (href) {\n    var failure = this.parse(href);\n    if (failure) throw TypeError(failure);\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-origin\n  getOrigin: function () {\n    var scheme = this.scheme;\n    var port = this.port;\n    if (scheme == 'blob') try {\n      return new URLConstructor(scheme.path[0]).origin;\n    } catch (error) {\n      return 'null';\n    }\n    if (scheme == 'file' || !this.isSpecial()) return 'null';\n    return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n  },\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  getProtocol: function () {\n    return this.scheme + ':';\n  },\n  setProtocol: function (protocol) {\n    this.parse($toString(protocol) + ':', SCHEME_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-username\n  getUsername: function () {\n    return this.username;\n  },\n  setUsername: function (username) {\n    var codePoints = arrayFrom($toString(username));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.username = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-password\n  getPassword: function () {\n    return this.password;\n  },\n  setPassword: function (password) {\n    var codePoints = arrayFrom($toString(password));\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    this.password = '';\n    for (var i = 0; i < codePoints.length; i++) {\n      this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n    }\n  },\n  // https://url.spec.whatwg.org/#dom-url-host\n  getHost: function () {\n    var host = this.host;\n    var port = this.port;\n    return host === null ? ''\n      : port === null ? serializeHost(host)\n      : serializeHost(host) + ':' + port;\n  },\n  setHost: function (host) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(host, HOST);\n  },\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  getHostname: function () {\n    var host = this.host;\n    return host === null ? '' : serializeHost(host);\n  },\n  setHostname: function (hostname) {\n    if (this.cannotBeABaseURL) return;\n    this.parse(hostname, HOSTNAME);\n  },\n  // https://url.spec.whatwg.org/#dom-url-port\n  getPort: function () {\n    var port = this.port;\n    return port === null ? '' : $toString(port);\n  },\n  setPort: function (port) {\n    if (this.cannotHaveUsernamePasswordPort()) return;\n    port = $toString(port);\n    if (port == '') this.port = null;\n    else this.parse(port, PORT);\n  },\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  getPathname: function () {\n    var path = this.path;\n    return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n  },\n  setPathname: function (pathname) {\n    if (this.cannotBeABaseURL) return;\n    this.path = [];\n    this.parse(pathname, PATH_START);\n  },\n  // https://url.spec.whatwg.org/#dom-url-search\n  getSearch: function () {\n    var query = this.query;\n    return query ? '?' + query : '';\n  },\n  setSearch: function (search) {\n    search = $toString(search);\n    if (search == '') {\n      this.query = null;\n    } else {\n      if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n      this.query = '';\n      this.parse(search, QUERY);\n    }\n    this.searchParams.update();\n  },\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  getSearchParams: function () {\n    return this.searchParams.facade;\n  },\n  // https://url.spec.whatwg.org/#dom-url-hash\n  getHash: function () {\n    var fragment = this.fragment;\n    return fragment ? '#' + fragment : '';\n  },\n  setHash: function (hash) {\n    hash = $toString(hash);\n    if (hash == '') {\n      this.fragment = null;\n      return;\n    }\n    if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n    this.fragment = '';\n    this.parse(hash, FRAGMENT);\n  },\n  update: function () {\n    this.query = this.searchParams.serialize() || null;\n  }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n  var that = anInstance(this, URLPrototype);\n  var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n  var state = setInternalState(that, new URLState(url, false, base));\n  if (!DESCRIPTORS) {\n    that.href = state.serialize();\n    that.origin = state.getOrigin();\n    that.protocol = state.getProtocol();\n    that.username = state.getUsername();\n    that.password = state.getPassword();\n    that.host = state.getHost();\n    that.hostname = state.getHostname();\n    that.port = state.getPort();\n    that.pathname = state.getPathname();\n    that.search = state.getSearch();\n    that.searchParams = state.getSearchParams();\n    that.hash = state.getHash();\n  }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n  return {\n    get: function () {\n      return getInternalURLState(this)[getter]();\n    },\n    set: setter && function (value) {\n      return getInternalURLState(this)[setter](value);\n    },\n    configurable: true,\n    enumerable: true\n  };\n};\n\nif (DESCRIPTORS) {\n  // `URL.prototype.href` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-href\n  defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n  // `URL.prototype.origin` getter\n  // https://url.spec.whatwg.org/#dom-url-origin\n  defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n  // `URL.prototype.protocol` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-protocol\n  defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n  // `URL.prototype.username` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-username\n  defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n  // `URL.prototype.password` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-password\n  defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n  // `URL.prototype.host` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-host\n  defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n  // `URL.prototype.hostname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hostname\n  defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n  // `URL.prototype.port` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-port\n  defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n  // `URL.prototype.pathname` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-pathname\n  defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n  // `URL.prototype.search` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-search\n  defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n  // `URL.prototype.searchParams` getter\n  // https://url.spec.whatwg.org/#dom-url-searchparams\n  defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n  // `URL.prototype.hash` accessors pair\n  // https://url.spec.whatwg.org/#dom-url-hash\n  defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n  return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n  var nativeCreateObjectURL = NativeURL.createObjectURL;\n  var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n  // `URL.createObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n  if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n  // `URL.revokeObjectURL` method\n  // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n  if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n  URL: URLConstructor\n});\n\n\n/***/ }),\n/* 939 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = __webpack_require__(20);\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\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'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\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 */\nvar ucs2decode = function (string) {\n  var output = [];\n  var counter = 0;\n  var length = string.length;\n  while (counter < length) {\n    var value = charCodeAt(string, counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      // It's a high surrogate, and there is a next character.\n      var extra = charCodeAt(string, counter++);\n      if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n        push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        // It's an unmatched surrogate; only append this code unit, in case the\n        // next code unit is the high surrogate of a surrogate pair.\n        push(output, value);\n        counter--;\n      }\n    } else {\n      push(output, value);\n    }\n  }\n  return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n  //  0..25 map to ASCII a..z or A..Z\n  // 26..35 map to ASCII 0..9\n  return digit + 22 + 75 * (digit < 26);\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 */\nvar adapt = function (delta, numPoints, firstTime) {\n  var k = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  while (delta > baseMinusTMin * tMax >> 1) {\n    delta = floor(delta / baseMinusTMin);\n    k += base;\n  }\n  return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\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 */\nvar encode = function (input) {\n  var output = [];\n\n  // Convert the input in UCS-2 to an array of Unicode code points.\n  input = ucs2decode(input);\n\n  // Cache the length.\n  var inputLength = input.length;\n\n  // Initialize the state.\n  var n = initialN;\n  var delta = 0;\n  var bias = initialBias;\n  var i, currentValue;\n\n  // Handle the basic code points.\n  for (i = 0; i < input.length; i++) {\n    currentValue = input[i];\n    if (currentValue < 0x80) {\n      push(output, fromCharCode(currentValue));\n    }\n  }\n\n  var basicLength = output.length; // number of basic code points.\n  var handledCPCount = basicLength; // number of code points that have been handled;\n\n  // Finish the basic string with a delimiter unless it's empty.\n  if (basicLength) {\n    push(output, delimiter);\n  }\n\n  // Main encoding loop:\n  while (handledCPCount < inputLength) {\n    // All non-basic code points < n have been handled already. Find the next larger one:\n    var m = maxInt;\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue >= n && currentValue < m) {\n        m = currentValue;\n      }\n    }\n\n    // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n    var handledCPCountPlusOne = handledCPCount + 1;\n    if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      throw $RangeError(OVERFLOW_ERROR);\n    }\n\n    delta += (m - n) * handledCPCountPlusOne;\n    n = m;\n\n    for (i = 0; i < input.length; i++) {\n      currentValue = input[i];\n      if (currentValue < n && ++delta > maxInt) {\n        throw $RangeError(OVERFLOW_ERROR);\n      }\n      if (currentValue == n) {\n        // Represent delta as a generalized variable-length integer.\n        var q = delta;\n        var k = base;\n        while (true) {\n          var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n          if (q < t) break;\n          var qMinusT = q - t;\n          var baseMinusT = base - t;\n          push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n          q = floor(qMinusT / baseMinusT);\n          k += base;\n        }\n\n        push(output, fromCharCode(digitToBasic(q)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n        delta = 0;\n        handledCPCount++;\n      }\n    }\n\n    delta++;\n    n++;\n  }\n  return join(output, '');\n};\n\nmodule.exports = function (input) {\n  var encoded = [];\n  var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n  var i, label;\n  for (i = 0; i < labels.length; i++) {\n    label = labels[i];\n    push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n  }\n  return join(encoded, '.');\n};\n\n\n/***/ }),\n/* 940 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(531);\n\n\n/***/ }),\n/* 941 */\n/***/ (function(module, exports) {\n\nfunction _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 942 */\n/***/ (function(module, exports) {\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 943 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(120);\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n\n\n/***/ }),\n/* 944 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar trimmedEndIndex = __webpack_require__(945);\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\nmodule.exports = baseTrim;\n\n\n/***/ }),\n/* 945 */\n/***/ (function(module, exports) {\n\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\nmodule.exports = trimmedEndIndex;\n\n\n/***/ }),\n/* 946 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(209);\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\n\n/***/ }),\n/* 947 */\n/***/ (function(module, exports) {\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\n\n/***/ }),\n/* 948 */\n/***/ (function(module, exports) {\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 949 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/*!\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\n\nvar base64 = __webpack_require__(950)\nvar ieee754 = __webpack_require__(951)\nvar isArray = __webpack_require__(952)\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\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91)))\n\n/***/ }),\n/* 950 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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  var i\n  for (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(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\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\n\n/***/ }),\n/* 951 */\n/***/ (function(module, exports) {\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.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\n\n/***/ }),\n/* 952 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n\n\n/***/ }),\n/* 953 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 954 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 955 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 956 */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n/* 957 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(347)[\"default\"];\n\nfunction _regeneratorRuntime() {\n  \"use strict\";\n  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n  module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n    return exports;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  var exports = {},\n      Op = Object.prototype,\n      hasOwn = Op.hasOwnProperty,\n      $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n      iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n      asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n      toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    return Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: !0,\n      configurable: !0,\n      writable: !0\n    }), obj[key];\n  }\n\n  try {\n    define({}, \"\");\n  } catch (err) {\n    define = function define(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n        generator = Object.create(protoGenerator.prototype),\n        context = new Context(tryLocsList || []);\n    return generator._invoke = function (innerFn, self, context) {\n      var state = \"suspendedStart\";\n      return function (method, arg) {\n        if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n        if (\"completed\" === state) {\n          if (\"throw\" === method) throw arg;\n          return doneResult();\n        }\n\n        for (context.method = method, context.arg = arg;;) {\n          var delegate = context.delegate;\n\n          if (delegate) {\n            var delegateResult = maybeInvokeDelegate(delegate, context);\n\n            if (delegateResult) {\n              if (delegateResult === ContinueSentinel) continue;\n              return delegateResult;\n            }\n          }\n\n          if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n            if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n            context.dispatchException(context.arg);\n          } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n          state = \"executing\";\n          var record = tryCatch(innerFn, self, context);\n\n          if (\"normal\" === record.type) {\n            if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n            return {\n              value: record.arg,\n              done: context.done\n            };\n          }\n\n          \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n        }\n      };\n    }(innerFn, self, context), generator;\n  }\n\n  function tryCatch(fn, obj, arg) {\n    try {\n      return {\n        type: \"normal\",\n        arg: fn.call(obj, arg)\n      };\n    } catch (err) {\n      return {\n        type: \"throw\",\n        arg: err\n      };\n    }\n  }\n\n  exports.wrap = wrap;\n  var ContinueSentinel = {};\n\n  function Generator() {}\n\n  function GeneratorFunction() {}\n\n  function GeneratorFunctionPrototype() {}\n\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n  var getProto = Object.getPrototypeOf,\n      NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\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  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n\n      if (\"throw\" !== record.type) {\n        var result = record.arg,\n            value = result.value;\n        return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n          invoke(\"next\", value, resolve, reject);\n        }, function (err) {\n          invoke(\"throw\", err, resolve, reject);\n        }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n          result.value = unwrapped, resolve(result);\n        }, function (error) {\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n\n      reject(record.arg);\n    }\n\n    var previousPromise;\n\n    this._invoke = function (method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function (resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n    };\n  }\n\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n\n    if (undefined === method) {\n      if (context.delegate = null, \"throw\" === context.method) {\n        if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n        context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n    if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n    var info = record.arg;\n    return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n  }\n\n  function pushTryEntry(locs) {\n    var entry = {\n      tryLoc: locs[0]\n    };\n    1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\", delete record.arg, entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n  }\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) return iteratorMethod.call(iterable);\n      if (\"function\" == typeof iterable.next) return iterable;\n\n      if (!isNaN(iterable.length)) {\n        var i = -1,\n            next = function next() {\n          for (; ++i < iterable.length;) {\n            if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n          }\n\n          return next.value = undefined, next.done = !0, next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    return {\n      next: doneResult\n    };\n  }\n\n  function doneResult() {\n    return {\n      value: undefined,\n      done: !0\n    };\n  }\n\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n    var ctor = \"function\" == typeof genFun && genFun.constructor;\n    return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n  }, exports.mark = function (genFun) {\n    return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n  }, exports.awrap = function (arg) {\n    return {\n      __await: arg\n    };\n  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    void 0 === PromiseImpl && (PromiseImpl = Promise);\n    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n    return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n      return result.done ? result.value : iter.next();\n    });\n  }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n    return this;\n  }), define(Gp, \"toString\", function () {\n    return \"[object Generator]\";\n  }), exports.keys = function (object) {\n    var keys = [];\n\n    for (var key in object) {\n      keys.push(key);\n    }\n\n    return keys.reverse(), function next() {\n      for (; keys.length;) {\n        var key = keys.pop();\n        if (key in object) return next.value = key, next.done = !1, next;\n      }\n\n      return next.done = !0, next;\n    };\n  }, exports.values = values, Context.prototype = {\n    constructor: Context,\n    reset: function reset(skipTempReset) {\n      if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n        \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n      }\n    },\n    stop: function stop() {\n      this.done = !0;\n      var rootRecord = this.tryEntries[0].completion;\n      if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n      return this.rval;\n    },\n    dispatchException: function dispatchException(exception) {\n      if (this.done) throw exception;\n      var context = this;\n\n      function handle(loc, caught) {\n        return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i],\n            record = entry.completion;\n        if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n              hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n          } else {\n            if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n            if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n\n        if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n      var record = finallyEntry ? finallyEntry.completion : {};\n      return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n    },\n    complete: function complete(record, afterLoc) {\n      if (\"throw\" === record.type) throw record.arg;\n      return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n    },\n    finish: function finish(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n      }\n    },\n    \"catch\": function _catch(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n\n          if (\"throw\" === record.type) {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n\n          return thrown;\n        }\n      }\n\n      throw new Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n      return this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n    }\n  }, exports;\n}\n\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 958 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Stack = __webpack_require__(312),\n    equalArrays = __webpack_require__(536),\n    equalByTag = __webpack_require__(988),\n    equalObjects = __webpack_require__(990),\n    getTag = __webpack_require__(321),\n    isArray = __webpack_require__(97),\n    isBuffer = __webpack_require__(318),\n    isTypedArray = __webpack_require__(396);\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\n\n/***/ }),\n/* 959 */\n/***/ (function(module, exports) {\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  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n\n/***/ }),\n/* 960 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(314);\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\n\n/***/ }),\n/* 961 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(314);\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\n\n/***/ }),\n/* 962 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(314);\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\n\n/***/ }),\n/* 963 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assocIndexOf = __webpack_require__(314);\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\n\n/***/ }),\n/* 964 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ListCache = __webpack_require__(313);\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\n\n/***/ }),\n/* 965 */\n/***/ (function(module, exports) {\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  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n\n\n/***/ }),\n/* 966 */\n/***/ (function(module, exports) {\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\nmodule.exports = stackGet;\n\n\n/***/ }),\n/* 967 */\n/***/ (function(module, exports) {\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\nmodule.exports = stackHas;\n\n\n/***/ }),\n/* 968 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ListCache = __webpack_require__(313),\n    Map = __webpack_require__(390),\n    MapCache = __webpack_require__(392);\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\n/***/ }),\n/* 969 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(391),\n    isMasked = __webpack_require__(970),\n    isObject = __webpack_require__(106),\n    toSource = __webpack_require__(535);\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\n\n/***/ }),\n/* 970 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar coreJsData = __webpack_require__(971);\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\n\n/***/ }),\n/* 971 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(120);\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n/***/ }),\n/* 972 */\n/***/ (function(module, exports) {\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\n\n/***/ }),\n/* 973 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Hash = __webpack_require__(974),\n    ListCache = __webpack_require__(313),\n    Map = __webpack_require__(390);\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\n\n/***/ }),\n/* 974 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hashClear = __webpack_require__(975),\n    hashDelete = __webpack_require__(976),\n    hashGet = __webpack_require__(977),\n    hashHas = __webpack_require__(978),\n    hashSet = __webpack_require__(979);\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\n\n/***/ }),\n/* 975 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(315);\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\n\n/***/ }),\n/* 976 */\n/***/ (function(module, exports) {\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  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\n/***/ }),\n/* 977 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(315);\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\n\n/***/ }),\n/* 978 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(315);\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\n\n/***/ }),\n/* 979 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar nativeCreate = __webpack_require__(315);\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\n\n/***/ }),\n/* 980 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(316);\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\n\n/***/ }),\n/* 981 */\n/***/ (function(module, exports) {\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\n\n/***/ }),\n/* 982 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(316);\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\n\n/***/ }),\n/* 983 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(316);\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\n\n/***/ }),\n/* 984 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getMapData = __webpack_require__(316);\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\n\n/***/ }),\n/* 985 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 986 */\n/***/ (function(module, exports) {\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\nmodule.exports = setCacheHas;\n\n\n/***/ }),\n/* 987 */\n/***/ (function(module, exports) {\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 == 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\n\n/***/ }),\n/* 988 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(209),\n    Uint8Array = __webpack_require__(539),\n    eq = __webpack_require__(190),\n    equalArrays = __webpack_require__(536),\n    mapToArray = __webpack_require__(989),\n    setToArray = __webpack_require__(393);\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\n\n/***/ }),\n/* 989 */\n/***/ (function(module, exports) {\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\nmodule.exports = mapToArray;\n\n\n/***/ }),\n/* 990 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getAllKeys = __webpack_require__(540);\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\n\n/***/ }),\n/* 991 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 992 */\n/***/ (function(module, exports) {\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\nmodule.exports = baseTimes;\n\n\n/***/ }),\n/* 993 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(174),\n    isObjectLike = __webpack_require__(128);\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\n\n/***/ }),\n/* 994 */\n/***/ (function(module, exports) {\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\n/***/ }),\n/* 995 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(174),\n    isLength = __webpack_require__(397),\n    isObjectLike = __webpack_require__(128);\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\n\n/***/ }),\n/* 996 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototype = __webpack_require__(399),\n    nativeKeys = __webpack_require__(997);\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\n\n/***/ }),\n/* 997 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar overArg = __webpack_require__(544);\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\n\n/***/ }),\n/* 998 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(175),\n    root = __webpack_require__(120);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n\n\n/***/ }),\n/* 999 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(175),\n    root = __webpack_require__(120);\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n\n\n/***/ }),\n/* 1000 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(175),\n    root = __webpack_require__(120);\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n/***/ }),\n/* 1001 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar util = __webpack_require__(2);\n\nvar vec2 = __webpack_require__(56);\n\nvar Draggable = __webpack_require__(1002);\n\nvar Eventful = __webpack_require__(176);\n\nvar eventTool = __webpack_require__(129);\n\nvar GestureMgr = __webpack_require__(1004);\n\n/**\n * [The interface between `Handler` and `HandlerProxy`]:\n *\n * The default `HandlerProxy` only support the common standard web environment\n * (e.g., standalone browser, headless browser, embed browser in mobild APP, ...).\n * But `HandlerProxy` can be replaced to support more non-standard environment\n * (e.g., mini app), or to support more feature that the default `HandlerProxy`\n * not provided (like echarts-gl did).\n * So the interface between `Handler` and `HandlerProxy` should be stable. Do not\n * make break changes util inevitable. The interface include the public methods\n * of `Handler` and the events listed in `handlerNames` below, by which `HandlerProxy`\n * drives `Handler`.\n */\n\n/**\n * [Drag outside]:\n *\n * That is, triggering `mousemove` and `mouseup` event when the pointer is out of the\n * zrender area when dragging. That is important for the improvement of the user experience\n * when dragging something near the boundary without being terminated unexpectedly.\n *\n * We originally consider to introduce new events like `pagemovemove` and `pagemouseup`\n * to resolve this issue. But some drawbacks of it is described in\n * https://github.com/ecomfe/zrender/pull/536#issuecomment-560286899\n *\n * Instead, we referenced the specifications:\n * https://www.w3.org/TR/touch-events/#the-touchmove-event\n * https://www.w3.org/TR/2014/WD-DOM-Level-3-Events-20140925/#event-type-mousemove\n * where the the mousemove/touchmove can be continue to fire if the user began a drag\n * operation and the pointer has left the boundary. (for the mouse event, browsers\n * only do it on `document` and when the pointer has left the boundary of the browser.)\n *\n * So the default `HandlerProxy` supports this feature similarly: if it is in the dragging\n * state (see `pointerCapture` in `HandlerProxy`), the `mousemove` and `mouseup` continue\n * to fire until release the pointer. That is implemented by listen to those event on\n * `document`.\n * If we implement some other `HandlerProxy` only for touch device, that would be easier.\n * The touch event support this feature by default.\n *\n * Note:\n * There might be some cases that the mouse event can not be\n * received on `document`. For example,\n * (A) `useCapture` is not supported and some user defined event listeners on the ancestor\n * of zr dom throw Error .\n * (B) `useCapture` is not supported Some user defined event listeners on the ancestor of\n * zr dom call `stopPropagation`.\n * In these cases, the `mousemove` event might be keep triggered event\n * if the mouse is released. We try to reduce the side-effect in those cases.\n * That is, do nothing (especially, `findHover`) in those cases. See `isOutsideBoundary`.\n *\n * Note:\n * If `HandlerProxy` listens to `document` with `useCapture`, `HandlerProxy` needs to\n * make sure `stopPropagation` and `preventDefault` doing nothing if and only if the event\n * target is not zrender dom. Becuase it is dangerous to enable users to call them in\n * `document` capture phase to prevent the propagation to any listener of the webpage.\n * But they are needed to work when the pointer inside the zrender dom.\n */\nvar SILENT = 'silent';\n\nfunction makeEventPacket(eveType, targetInfo, event) {\n  return {\n    type: eveType,\n    event: event,\n    // target can only be an element that is not silent.\n    target: targetInfo.target,\n    // topTarget can be a silent element.\n    topTarget: targetInfo.topTarget,\n    cancelBubble: false,\n    offsetX: event.zrX,\n    offsetY: event.zrY,\n    gestureEvent: event.gestureEvent,\n    pinchX: event.pinchX,\n    pinchY: event.pinchY,\n    pinchScale: event.pinchScale,\n    wheelDelta: event.zrDelta,\n    zrByTouch: event.zrByTouch,\n    which: event.which,\n    stop: stopEvent\n  };\n}\n\nfunction stopEvent() {\n  eventTool.stop(this.event);\n}\n\nfunction EmptyProxy() {}\n\nEmptyProxy.prototype.dispose = function () {};\n\nvar handlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n/**\n * @alias module:zrender/Handler\n * @constructor\n * @extends module:zrender/mixin/Eventful\n * @param {module:zrender/Storage} storage Storage instance.\n * @param {module:zrender/Painter} painter Painter instance.\n * @param {module:zrender/dom/HandlerProxy} proxy HandlerProxy instance.\n * @param {HTMLElement} painterRoot painter.root (not painter.getViewportRoot()).\n */\n\nvar Handler = function (storage, painter, proxy, painterRoot) {\n  Eventful.call(this);\n  this.storage = storage;\n  this.painter = painter;\n  this.painterRoot = painterRoot;\n  proxy = proxy || new EmptyProxy();\n  /**\n   * Proxy of event. can be Dom, WebGLSurface, etc.\n   */\n\n  this.proxy = null;\n  /**\n   * {target, topTarget, x, y}\n   * @private\n   * @type {Object}\n   */\n\n  this._hovered = {};\n  /**\n   * @private\n   * @type {Date}\n   */\n\n  this._lastTouchMoment;\n  /**\n   * @private\n   * @type {number}\n   */\n\n  this._lastX;\n  /**\n   * @private\n   * @type {number}\n   */\n\n  this._lastY;\n  /**\n   * @private\n   * @type {module:zrender/core/GestureMgr}\n   */\n\n  this._gestureMgr;\n  Draggable.call(this);\n  this.setHandlerProxy(proxy);\n};\n\nHandler.prototype = {\n  constructor: Handler,\n  setHandlerProxy: function (proxy) {\n    if (this.proxy) {\n      this.proxy.dispose();\n    }\n\n    if (proxy) {\n      util.each(handlerNames, function (name) {\n        proxy.on && proxy.on(name, this[name], this);\n      }, this); // Attach handler\n\n      proxy.handler = this;\n    }\n\n    this.proxy = proxy;\n  },\n  mousemove: function (event) {\n    var x = event.zrX;\n    var y = event.zrY;\n    var isOutside = isOutsideBoundary(this, x, y);\n    var lastHovered = this._hovered;\n    var lastHoveredTarget = lastHovered.target; // If lastHoveredTarget is removed from zr (detected by '__zr') by some API call\n    // (like 'setOption' or 'dispatchAction') in event handlers, we should find\n    // lastHovered again here. Otherwise 'mouseout' can not be triggered normally.\n    // See #6198.\n\n    if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n      lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n      lastHoveredTarget = lastHovered.target;\n    }\n\n    var hovered = this._hovered = isOutside ? {\n      x: x,\n      y: y\n    } : this.findHover(x, y);\n    var hoveredTarget = hovered.target;\n    var proxy = this.proxy;\n    proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default'); // Mouse out on previous hovered element\n\n    if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n      this.dispatchToElement(lastHovered, 'mouseout', event);\n    } // Mouse moving on one element\n\n\n    this.dispatchToElement(hovered, 'mousemove', event); // Mouse over on a new element\n\n    if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n      this.dispatchToElement(hovered, 'mouseover', event);\n    }\n  },\n  mouseout: function (event) {\n    var eventControl = event.zrEventControl;\n    var zrIsToLocalDOM = event.zrIsToLocalDOM;\n\n    if (eventControl !== 'only_globalout') {\n      this.dispatchToElement(this._hovered, 'mouseout', event);\n    }\n\n    if (eventControl !== 'no_globalout') {\n      // FIXME: if the pointer moving from the extra doms to realy \"outside\",\n      // the `globalout` should have been triggered. But currently not.\n      !zrIsToLocalDOM && this.trigger('globalout', {\n        type: 'globalout',\n        event: event\n      });\n    }\n  },\n\n  /**\n   * Resize\n   */\n  resize: function (event) {\n    this._hovered = {};\n  },\n\n  /**\n   * Dispatch event\n   * @param {string} eventName\n   * @param {event=} eventArgs\n   */\n  dispatch: function (eventName, eventArgs) {\n    var handler = this[eventName];\n    handler && handler.call(this, eventArgs);\n  },\n\n  /**\n   * Dispose\n   */\n  dispose: function () {\n    this.proxy.dispose();\n    this.storage = this.proxy = this.painter = null;\n  },\n\n  /**\n   * 设置默认的cursor style\n   * @param {string} [cursorStyle='default'] 例如 crosshair\n   */\n  setCursorStyle: function (cursorStyle) {\n    var proxy = this.proxy;\n    proxy.setCursor && proxy.setCursor(cursorStyle);\n  },\n\n  /**\n   * 事件分发代理\n   *\n   * @private\n   * @param {Object} targetInfo {target, topTarget} 目标图形元素\n   * @param {string} eventName 事件名称\n   * @param {Object} event 事件对象\n   */\n  dispatchToElement: function (targetInfo, eventName, event) {\n    targetInfo = targetInfo || {};\n    var el = targetInfo.target;\n\n    if (el && el.silent) {\n      return;\n    }\n\n    var eventHandler = 'on' + eventName;\n    var eventPacket = makeEventPacket(eventName, targetInfo, event);\n\n    while (el) {\n      el[eventHandler] && (eventPacket.cancelBubble = el[eventHandler].call(el, eventPacket));\n      el.trigger(eventName, eventPacket);\n      el = el.parent;\n\n      if (eventPacket.cancelBubble) {\n        break;\n      }\n    }\n\n    if (!eventPacket.cancelBubble) {\n      // 冒泡到顶级 zrender 对象\n      this.trigger(eventName, eventPacket); // 分发事件到用户自定义层\n      // 用户有可能在全局 click 事件中 dispose，所以需要判断下 painter 是否存在\n\n      this.painter && this.painter.eachOtherLayer(function (layer) {\n        if (typeof layer[eventHandler] === 'function') {\n          layer[eventHandler].call(layer, eventPacket);\n        }\n\n        if (layer.trigger) {\n          layer.trigger(eventName, eventPacket);\n        }\n      });\n    }\n  },\n\n  /**\n   * @private\n   * @param {number} x\n   * @param {number} y\n   * @param {module:zrender/graphic/Displayable} exclude\n   * @return {model:zrender/Element}\n   * @method\n   */\n  findHover: function (x, y, exclude) {\n    var list = this.storage.getDisplayList();\n    var out = {\n      x: x,\n      y: y\n    };\n\n    for (var i = list.length - 1; i >= 0; i--) {\n      var hoverCheckResult;\n\n      if (list[i] !== exclude // getDisplayList may include ignored item in VML mode\n      && !list[i].ignore && (hoverCheckResult = isHover(list[i], x, y))) {\n        !out.topTarget && (out.topTarget = list[i]);\n\n        if (hoverCheckResult !== SILENT) {\n          out.target = list[i];\n          break;\n        }\n      }\n    }\n\n    return out;\n  },\n  processGesture: function (event, stage) {\n    if (!this._gestureMgr) {\n      this._gestureMgr = new GestureMgr();\n    }\n\n    var gestureMgr = this._gestureMgr;\n    stage === 'start' && gestureMgr.clear();\n    var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\n    stage === 'end' && gestureMgr.clear(); // Do not do any preventDefault here. Upper application do that if necessary.\n\n    if (gestureInfo) {\n      var type = gestureInfo.type;\n      event.gestureEvent = type;\n      this.dispatchToElement({\n        target: gestureInfo.target\n      }, type, gestureInfo.event);\n    }\n  }\n}; // Common handlers\n\nutil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n  Handler.prototype[name] = function (event) {\n    var x = event.zrX;\n    var y = event.zrY;\n    var isOutside = isOutsideBoundary(this, x, y);\n    var hovered;\n    var hoveredTarget;\n\n    if (name !== 'mouseup' || !isOutside) {\n      // Find hover again to avoid click event is dispatched manually. Or click is triggered without mouseover\n      hovered = this.findHover(x, y);\n      hoveredTarget = hovered.target;\n    }\n\n    if (name === 'mousedown') {\n      this._downEl = hoveredTarget;\n      this._downPoint = [event.zrX, event.zrY]; // In case click triggered before mouseup\n\n      this._upEl = hoveredTarget;\n    } else if (name === 'mouseup') {\n      this._upEl = hoveredTarget;\n    } else if (name === 'click') {\n      if (this._downEl !== this._upEl // Original click event is triggered on the whole canvas element,\n      // including the case that `mousedown` - `mousemove` - `mouseup`,\n      // which should be filtered, otherwise it will bring trouble to\n      // pan and zoom.\n      || !this._downPoint // Arbitrary value\n      || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n        return;\n      }\n\n      this._downPoint = null;\n    }\n\n    this.dispatchToElement(hovered, name, event);\n  };\n});\n\nfunction isHover(displayable, x, y) {\n  if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n    var el = displayable;\n    var isSilent;\n\n    while (el) {\n      // If clipped by ancestor.\n      // FIXME: If clipPath has neither stroke nor fill,\n      // el.clipPath.contain(x, y) will always return false.\n      if (el.clipPath && !el.clipPath.contain(x, y)) {\n        return false;\n      }\n\n      if (el.silent) {\n        isSilent = true;\n      }\n\n      el = el.parent;\n    }\n\n    return isSilent ? SILENT : true;\n  }\n\n  return false;\n}\n/**\n * See [Drag outside].\n */\n\n\nfunction isOutsideBoundary(handlerInstance, x, y) {\n  var painter = handlerInstance.painter;\n  return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\n}\n\nutil.mixin(Handler, Eventful);\nutil.mixin(Handler, Draggable);\nvar _default = Handler;\nmodule.exports = _default;\n\n/***/ }),\n/* 1002 */\n/***/ (function(module, exports) {\n\n// TODO Draggable for group\n// FIXME Draggable on element which has parent rotation or scale\nfunction Draggable() {\n  this.on('mousedown', this._dragStart, this);\n  this.on('mousemove', this._drag, this);\n  this.on('mouseup', this._dragEnd, this); // `mosuemove` and `mouseup` can be continue to fire when dragging.\n  // See [Drag outside] in `Handler.js`. So we do not need to trigger\n  // `_dragEnd` when globalout. That would brings better user experience.\n  // this.on('globalout', this._dragEnd, this);\n  // this._dropTarget = null;\n  // this._draggingTarget = null;\n  // this._x = 0;\n  // this._y = 0;\n}\n\nDraggable.prototype = {\n  constructor: Draggable,\n  _dragStart: function (e) {\n    var draggingTarget = e.target; // Find if there is draggable in the ancestor\n\n    while (draggingTarget && !draggingTarget.draggable) {\n      draggingTarget = draggingTarget.parent;\n    }\n\n    if (draggingTarget) {\n      this._draggingTarget = draggingTarget;\n      draggingTarget.dragging = true;\n      this._x = e.offsetX;\n      this._y = e.offsetY;\n      this.dispatchToElement(param(draggingTarget, e), 'dragstart', e.event);\n    }\n  },\n  _drag: function (e) {\n    var draggingTarget = this._draggingTarget;\n\n    if (draggingTarget) {\n      var x = e.offsetX;\n      var y = e.offsetY;\n      var dx = x - this._x;\n      var dy = y - this._y;\n      this._x = x;\n      this._y = y;\n      draggingTarget.drift(dx, dy, e);\n      this.dispatchToElement(param(draggingTarget, e), 'drag', e.event);\n      var dropTarget = this.findHover(x, y, draggingTarget).target;\n      var lastDropTarget = this._dropTarget;\n      this._dropTarget = dropTarget;\n\n      if (draggingTarget !== dropTarget) {\n        if (lastDropTarget && dropTarget !== lastDropTarget) {\n          this.dispatchToElement(param(lastDropTarget, e), 'dragleave', e.event);\n        }\n\n        if (dropTarget && dropTarget !== lastDropTarget) {\n          this.dispatchToElement(param(dropTarget, e), 'dragenter', e.event);\n        }\n      }\n    }\n  },\n  _dragEnd: function (e) {\n    var draggingTarget = this._draggingTarget;\n\n    if (draggingTarget) {\n      draggingTarget.dragging = false;\n    }\n\n    this.dispatchToElement(param(draggingTarget, e), 'dragend', e.event);\n\n    if (this._dropTarget) {\n      this.dispatchToElement(param(this._dropTarget, e), 'drop', e.event);\n    }\n\n    this._draggingTarget = null;\n    this._dropTarget = null;\n  }\n};\n\nfunction param(target, e) {\n  return {\n    target: target,\n    topTarget: e && e.topTarget\n  };\n}\n\nvar _default = Draggable;\nmodule.exports = _default;\n\n/***/ }),\n/* 1003 */\n/***/ (function(module, exports) {\n\n/**\n * The algoritm is learnt from\n * https://franklinta.com/2014/09/08/computing-css-matrix3d-transforms/\n * And we made some optimization for matrix inversion.\n * Other similar approaches:\n * \"cv::getPerspectiveTransform\", \"Direct Linear Transformation\".\n */\nvar LN2 = Math.log(2);\n\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\n  var cacheKey = rowMask + '-' + colMask;\n  var fullRank = rows.length;\n\n  if (detCache.hasOwnProperty(cacheKey)) {\n    return detCache[cacheKey];\n  }\n\n  if (rank === 1) {\n    // In this case the colMask must be like: `11101111`. We can find the place of `0`.\n    var colStart = Math.round(Math.log((1 << fullRank) - 1 & ~colMask) / LN2);\n    return rows[rowStart][colStart];\n  }\n\n  var subRowMask = rowMask | 1 << rowStart;\n  var subRowStart = rowStart + 1;\n\n  while (rowMask & 1 << subRowStart) {\n    subRowStart++;\n  }\n\n  var sum = 0;\n\n  for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\n    var colTag = 1 << j;\n\n    if (!(colTag & colMask)) {\n      sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] // det(subMatrix(0, j))\n      * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\n      colLocalIdx++;\n    }\n  }\n\n  detCache[cacheKey] = sum;\n  return sum;\n}\n/**\n * Usage:\n * ```js\n * var transformer = buildTransformer(\n *     [10, 44, 100, 44, 100, 300, 10, 300],\n *     [50, 54, 130, 14, 140, 330, 14, 220]\n * );\n * var out = [];\n * transformer && transformer([11, 33], out);\n * ```\n *\n * Notice: `buildTransformer` may take more than 10ms in some Android device.\n *\n * @param {Array.<number>} src source four points, [x0, y0, x1, y1, x2, y2, x3, y3]\n * @param {Array.<number>} dest destination four points, [x0, y0, x1, y1, x2, y2, x3, y3]\n * @return {Function} transformer If fail, return null/undefined.\n */\n\n\nfunction buildTransformer(src, dest) {\n  var mA = [[src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]], [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]], [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]], [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]], [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]], [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]], [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]], [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]];\n  var detCache = {};\n  var det = determinant(mA, 8, 0, 0, 0, detCache);\n\n  if (det === 0) {\n    // can not make transformer when and only when\n    // any three of the markers are collinear.\n    return;\n  } // `invert(mA) * dest`, that is, `adj(mA) / det * dest`.\n\n\n  var vh = [];\n\n  for (var i = 0; i < 8; i++) {\n    for (var j = 0; j < 8; j++) {\n      vh[j] == null && (vh[j] = 0);\n      vh[j] += ((i + j) % 2 ? -1 : 1) * // det(subMatrix(i, j))\n      determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache) / det * dest[i];\n    }\n  }\n\n  return function (out, srcPointX, srcPointY) {\n    var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\n    out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\n    out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\n  };\n}\n\nexports.buildTransformer = buildTransformer;\n\n/***/ }),\n/* 1004 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar eventUtil = __webpack_require__(129);\n\n/**\n * Only implements needed gestures for mobile.\n */\nvar GestureMgr = function () {\n  /**\n   * @private\n   * @type {Array.<Object>}\n   */\n  this._track = [];\n};\n\nGestureMgr.prototype = {\n  constructor: GestureMgr,\n  recognize: function (event, target, root) {\n    this._doTrack(event, target, root);\n\n    return this._recognize(event);\n  },\n  clear: function () {\n    this._track.length = 0;\n    return this;\n  },\n  _doTrack: function (event, target, root) {\n    var touches = event.touches;\n\n    if (!touches) {\n      return;\n    }\n\n    var trackItem = {\n      points: [],\n      touches: [],\n      target: target,\n      event: event\n    };\n\n    for (var i = 0, len = touches.length; i < len; i++) {\n      var touch = touches[i];\n      var pos = eventUtil.clientToLocal(root, touch, {});\n      trackItem.points.push([pos.zrX, pos.zrY]);\n      trackItem.touches.push(touch);\n    }\n\n    this._track.push(trackItem);\n  },\n  _recognize: function (event) {\n    for (var eventName in recognizers) {\n      if (recognizers.hasOwnProperty(eventName)) {\n        var gestureInfo = recognizers[eventName](this._track, event);\n\n        if (gestureInfo) {\n          return gestureInfo;\n        }\n      }\n    }\n  }\n};\n\nfunction dist(pointPair) {\n  var dx = pointPair[1][0] - pointPair[0][0];\n  var dy = pointPair[1][1] - pointPair[0][1];\n  return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction center(pointPair) {\n  return [(pointPair[0][0] + pointPair[1][0]) / 2, (pointPair[0][1] + pointPair[1][1]) / 2];\n}\n\nvar recognizers = {\n  pinch: function (track, event) {\n    var trackLen = track.length;\n\n    if (!trackLen) {\n      return;\n    }\n\n    var pinchEnd = (track[trackLen - 1] || {}).points;\n    var pinchPre = (track[trackLen - 2] || {}).points || pinchEnd;\n\n    if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {\n      var pinchScale = dist(pinchEnd) / dist(pinchPre);\n      !isFinite(pinchScale) && (pinchScale = 1);\n      event.pinchScale = pinchScale;\n      var pinchCenter = center(pinchEnd);\n      event.pinchX = pinchCenter[0];\n      event.pinchY = pinchCenter[1];\n      return {\n        type: 'pinch',\n        target: track[0].target,\n        event: event\n      };\n    }\n  } // Only pinch currently.\n\n};\nvar _default = GestureMgr;\nmodule.exports = _default;\n\n/***/ }),\n/* 1005 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar util = __webpack_require__(2);\n\nvar env = __webpack_require__(66);\n\nvar Group = __webpack_require__(177);\n\nvar timsort = __webpack_require__(400);\n\n// Use timsort because in most case elements are partially sorted\n// https://jsfiddle.net/pissang/jr4x7mdm/8/\nfunction shapeCompareFunc(a, b) {\n  if (a.zlevel === b.zlevel) {\n    if (a.z === b.z) {\n      // if (a.z2 === b.z2) {\n      //     // FIXME Slow has renderidx compare\n      //     // http://stackoverflow.com/questions/20883421/sorting-in-javascript-should-every-compare-function-have-a-return-0-statement\n      //     // https://github.com/v8/v8/blob/47cce544a31ed5577ffe2963f67acb4144ee0232/src/js/array.js#L1012\n      //     return a.__renderidx - b.__renderidx;\n      // }\n      return a.z2 - b.z2;\n    }\n\n    return a.z - b.z;\n  }\n\n  return a.zlevel - b.zlevel;\n}\n/**\n * 内容仓库 (M)\n * @alias module:zrender/Storage\n * @constructor\n */\n\n\nvar Storage = function () {\n  // jshint ignore:line\n  this._roots = [];\n  this._displayList = [];\n  this._displayListLen = 0;\n};\n\nStorage.prototype = {\n  constructor: Storage,\n\n  /**\n   * @param  {Function} cb\n   *\n   */\n  traverse: function (cb, context) {\n    for (var i = 0; i < this._roots.length; i++) {\n      this._roots[i].traverse(cb, context);\n    }\n  },\n\n  /**\n   * 返回所有图形的绘制队列\n   * @param {boolean} [update=false] 是否在返回前更新该数组\n   * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组, 在 update 为 true 的时候有效\n   *\n   * 详见{@link module:zrender/graphic/Displayable.prototype.updateDisplayList}\n   * @return {Array.<module:zrender/graphic/Displayable>}\n   */\n  getDisplayList: function (update, includeIgnore) {\n    includeIgnore = includeIgnore || false;\n\n    if (update) {\n      this.updateDisplayList(includeIgnore);\n    }\n\n    return this._displayList;\n  },\n\n  /**\n   * 更新图形的绘制队列。\n   * 每次绘制前都会调用，该方法会先深度优先遍历整个树，更新所有Group和Shape的变换并且把所有可见的Shape保存到数组中，\n   * 最后根据绘制的优先级（zlevel > z > 插入顺序）排序得到绘制队列\n   * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组\n   */\n  updateDisplayList: function (includeIgnore) {\n    this._displayListLen = 0;\n    var roots = this._roots;\n    var displayList = this._displayList;\n\n    for (var i = 0, len = roots.length; i < len; i++) {\n      this._updateAndAddDisplayable(roots[i], null, includeIgnore);\n    }\n\n    displayList.length = this._displayListLen;\n    env.canvasSupported && timsort(displayList, shapeCompareFunc);\n  },\n  _updateAndAddDisplayable: function (el, clipPaths, includeIgnore) {\n    if (el.ignore && !includeIgnore) {\n      return;\n    }\n\n    el.beforeUpdate();\n\n    if (el.__dirty) {\n      el.update();\n    }\n\n    el.afterUpdate();\n    var userSetClipPath = el.clipPath;\n\n    if (userSetClipPath) {\n      // FIXME 效率影响\n      if (clipPaths) {\n        clipPaths = clipPaths.slice();\n      } else {\n        clipPaths = [];\n      }\n\n      var currentClipPath = userSetClipPath;\n      var parentClipPath = el; // Recursively add clip path\n\n      while (currentClipPath) {\n        // clipPath 的变换是基于使用这个 clipPath 的元素\n        currentClipPath.parent = parentClipPath;\n        currentClipPath.updateTransform();\n        clipPaths.push(currentClipPath);\n        parentClipPath = currentClipPath;\n        currentClipPath = currentClipPath.clipPath;\n      }\n    }\n\n    if (el.isGroup) {\n      var children = el._children;\n\n      for (var i = 0; i < children.length; i++) {\n        var child = children[i]; // Force to mark as dirty if group is dirty\n        // FIXME __dirtyPath ?\n\n        if (el.__dirty) {\n          child.__dirty = true;\n        }\n\n        this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\n      } // Mark group clean here\n\n\n      el.__dirty = false;\n    } else {\n      el.__clipPaths = clipPaths;\n      this._displayList[this._displayListLen++] = el;\n    }\n  },\n\n  /**\n   * 添加图形(Shape)或者组(Group)到根节点\n   * @param {module:zrender/Element} el\n   */\n  addRoot: function (el) {\n    if (el.__storage === this) {\n      return;\n    }\n\n    if (el instanceof Group) {\n      el.addChildrenToStorage(this);\n    }\n\n    this.addToStorage(el);\n\n    this._roots.push(el);\n  },\n\n  /**\n   * 删除指定的图形(Shape)或者组(Group)\n   * @param {string|Array.<string>} [el] 如果为空清空整个Storage\n   */\n  delRoot: function (el) {\n    if (el == null) {\n      // 不指定el清空\n      for (var i = 0; i < this._roots.length; i++) {\n        var root = this._roots[i];\n\n        if (root instanceof Group) {\n          root.delChildrenFromStorage(this);\n        }\n      }\n\n      this._roots = [];\n      this._displayList = [];\n      this._displayListLen = 0;\n      return;\n    }\n\n    if (el instanceof Array) {\n      for (var i = 0, l = el.length; i < l; i++) {\n        this.delRoot(el[i]);\n      }\n\n      return;\n    }\n\n    var idx = util.indexOf(this._roots, el);\n\n    if (idx >= 0) {\n      this.delFromStorage(el);\n\n      this._roots.splice(idx, 1);\n\n      if (el instanceof Group) {\n        el.delChildrenFromStorage(this);\n      }\n    }\n  },\n  addToStorage: function (el) {\n    if (el) {\n      el.__storage = this;\n      el.dirty(false);\n    }\n\n    return this;\n  },\n  delFromStorage: function (el) {\n    if (el) {\n      el.__storage = null;\n    }\n\n    return this;\n  },\n\n  /**\n   * 清空并且释放Storage\n   */\n  dispose: function () {\n    this._renderList = this._roots = null;\n  },\n  displayableSortFunc: shapeCompareFunc\n};\nvar _default = Storage;\nmodule.exports = _default;\n\n/***/ }),\n/* 1006 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Animator = __webpack_require__(549);\n\nvar logError = __webpack_require__(253);\n\nvar _util = __webpack_require__(2);\n\nvar isString = _util.isString;\nvar isFunction = _util.isFunction;\nvar isObject = _util.isObject;\nvar isArrayLike = _util.isArrayLike;\nvar indexOf = _util.indexOf;\n\n/**\n * @alias module:zrender/mixin/Animatable\n * @constructor\n */\nvar Animatable = function () {\n  /**\n   * @type {Array.<module:zrender/animation/Animator>}\n   * @readOnly\n   */\n  this.animators = [];\n};\n\nAnimatable.prototype = {\n  constructor: Animatable,\n\n  /**\n   * 动画\n   *\n   * @param {string} path The path to fetch value from object, like 'a.b.c'.\n   * @param {boolean} [loop] Whether to loop animation.\n   * @return {module:zrender/animation/Animator}\n   * @example:\n   *     el.animate('style', false)\n   *         .when(1000, {x: 10} )\n   *         .done(function(){ // Animation done })\n   *         .start()\n   */\n  animate: function (path, loop) {\n    var target;\n    var animatingShape = false;\n    var el = this;\n    var zr = this.__zr;\n\n    if (path) {\n      var pathSplitted = path.split('.');\n      var prop = el; // If animating shape\n\n      animatingShape = pathSplitted[0] === 'shape';\n\n      for (var i = 0, l = pathSplitted.length; i < l; i++) {\n        if (!prop) {\n          continue;\n        }\n\n        prop = prop[pathSplitted[i]];\n      }\n\n      if (prop) {\n        target = prop;\n      }\n    } else {\n      target = el;\n    }\n\n    if (!target) {\n      logError('Property \"' + path + '\" is not existed in element ' + el.id);\n      return;\n    }\n\n    var animators = el.animators;\n    var animator = new Animator(target, loop);\n    animator.during(function (target) {\n      el.dirty(animatingShape);\n    }).done(function () {\n      // FIXME Animator will not be removed if use `Animator#stop` to stop animation\n      animators.splice(indexOf(animators, animator), 1);\n    });\n    animators.push(animator); // If animate after added to the zrender\n\n    if (zr) {\n      zr.animation.addAnimator(animator);\n    }\n\n    return animator;\n  },\n\n  /**\n   * 停止动画\n   * @param {boolean} forwardToLast If move to last frame before stop\n   */\n  stopAnimation: function (forwardToLast) {\n    var animators = this.animators;\n    var len = animators.length;\n\n    for (var i = 0; i < len; i++) {\n      animators[i].stop(forwardToLast);\n    }\n\n    animators.length = 0;\n    return this;\n  },\n\n  /**\n   * Caution: this method will stop previous animation.\n   * So do not use this method to one element twice before\n   * animation starts, unless you know what you are doing.\n   * @param {Object} target\n   * @param {number} [time=500] Time in ms\n   * @param {string} [easing='linear']\n   * @param {number} [delay=0]\n   * @param {Function} [callback]\n   * @param {Function} [forceAnimate] Prevent stop animation and callback\n   *        immediently when target values are the same as current values.\n   *\n   * @example\n   *  // Animate position\n   *  el.animateTo({\n   *      position: [10, 10]\n   *  }, function () { // done })\n   *\n   *  // Animate shape, style and position in 100ms, delayed 100ms, with cubicOut easing\n   *  el.animateTo({\n   *      shape: {\n   *          width: 500\n   *      },\n   *      style: {\n   *          fill: 'red'\n   *      }\n   *      position: [10, 10]\n   *  }, 100, 100, 'cubicOut', function () { // done })\n   */\n  // TODO Return animation key\n  animateTo: function (target, time, delay, easing, callback, forceAnimate) {\n    animateTo(this, target, time, delay, easing, callback, forceAnimate);\n  },\n\n  /**\n   * Animate from the target state to current state.\n   * The params and the return value are the same as `this.animateTo`.\n   */\n  animateFrom: function (target, time, delay, easing, callback, forceAnimate) {\n    animateTo(this, target, time, delay, easing, callback, forceAnimate, true);\n  }\n};\n\nfunction animateTo(animatable, target, time, delay, easing, callback, forceAnimate, reverse) {\n  // animateTo(target, time, easing, callback);\n  if (isString(delay)) {\n    callback = easing;\n    easing = delay;\n    delay = 0;\n  } // animateTo(target, time, delay, callback);\n  else if (isFunction(easing)) {\n      callback = easing;\n      easing = 'linear';\n      delay = 0;\n    } // animateTo(target, time, callback);\n    else if (isFunction(delay)) {\n        callback = delay;\n        delay = 0;\n      } // animateTo(target, callback)\n      else if (isFunction(time)) {\n          callback = time;\n          time = 500;\n        } // animateTo(target)\n        else if (!time) {\n            time = 500;\n          } // Stop all previous animations\n\n\n  animatable.stopAnimation();\n  animateToShallow(animatable, '', animatable, target, time, delay, reverse); // Animators may be removed immediately after start\n  // if there is nothing to animate\n\n  var animators = animatable.animators.slice();\n  var count = animators.length;\n\n  function done() {\n    count--;\n\n    if (!count) {\n      callback && callback();\n    }\n  } // No animators. This should be checked before animators[i].start(),\n  // because 'done' may be executed immediately if no need to animate.\n\n\n  if (!count) {\n    callback && callback();\n  } // Start after all animators created\n  // Incase any animator is done immediately when all animation properties are not changed\n\n\n  for (var i = 0; i < animators.length; i++) {\n    animators[i].done(done).start(easing, forceAnimate);\n  }\n}\n/**\n * @param {string} path=''\n * @param {Object} source=animatable\n * @param {Object} target\n * @param {number} [time=500]\n * @param {number} [delay=0]\n * @param {boolean} [reverse] If `true`, animate\n *        from the `target` to current state.\n *\n * @example\n *  // Animate position\n *  el._animateToShallow({\n *      position: [10, 10]\n *  })\n *\n *  // Animate shape, style and position in 100ms, delayed 100ms\n *  el._animateToShallow({\n *      shape: {\n *          width: 500\n *      },\n *      style: {\n *          fill: 'red'\n *      }\n *      position: [10, 10]\n *  }, 100, 100)\n */\n\n\nfunction animateToShallow(animatable, path, source, target, time, delay, reverse) {\n  var objShallow = {};\n  var propertyCount = 0;\n\n  for (var name in target) {\n    if (!target.hasOwnProperty(name)) {\n      continue;\n    }\n\n    if (source[name] != null) {\n      if (isObject(target[name]) && !isArrayLike(target[name])) {\n        animateToShallow(animatable, path ? path + '.' + name : name, source[name], target[name], time, delay, reverse);\n      } else {\n        if (reverse) {\n          objShallow[name] = source[name];\n          setAttrByPath(animatable, path, name, target[name]);\n        } else {\n          objShallow[name] = target[name];\n        }\n\n        propertyCount++;\n      }\n    } else if (target[name] != null && !reverse) {\n      setAttrByPath(animatable, path, name, target[name]);\n    }\n  }\n\n  if (propertyCount > 0) {\n    animatable.animate(path, false).when(time == null ? 500 : time, objShallow).delay(delay || 0);\n  }\n}\n\nfunction setAttrByPath(el, path, name, value) {\n  // Attr directly if not has property\n  // FIXME, if some property not needed for element ?\n  if (!path) {\n    el.attr(name, value);\n  } else {\n    // Only support set shape or style\n    var props = {};\n    props[path] = {};\n    props[path][name] = value;\n    el.attr(props);\n  }\n}\n\nvar _default = Animatable;\nmodule.exports = _default;\n\n/***/ }),\n/* 1007 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar easingFuncs = __webpack_require__(1008);\n\n/**\n * 动画主控制器\n * @config target 动画对象，可以是数组，如果是数组的话会批量分发onframe等事件\n * @config life(1000) 动画时长\n * @config delay(0) 动画延迟时间\n * @config loop(true)\n * @config gap(0) 循环的间隔时间\n * @config onframe\n * @config easing(optional)\n * @config ondestroy(optional)\n * @config onrestart(optional)\n *\n * TODO pause\n */\nfunction Clip(options) {\n  this._target = options.target; // 生命周期\n\n  this._life = options.life || 1000; // 延时\n\n  this._delay = options.delay || 0; // 开始时间\n  // this._startTime = new Date().getTime() + this._delay;// 单位毫秒\n\n  this._initialized = false; // 是否循环\n\n  this.loop = options.loop == null ? false : options.loop;\n  this.gap = options.gap || 0;\n  this.easing = options.easing || 'Linear';\n  this.onframe = options.onframe;\n  this.ondestroy = options.ondestroy;\n  this.onrestart = options.onrestart;\n  this._pausedTime = 0;\n  this._paused = false;\n}\n\nClip.prototype = {\n  constructor: Clip,\n  step: function (globalTime, deltaTime) {\n    // Set startTime on first step, or _startTime may has milleseconds different between clips\n    // PENDING\n    if (!this._initialized) {\n      this._startTime = globalTime + this._delay;\n      this._initialized = true;\n    }\n\n    if (this._paused) {\n      this._pausedTime += deltaTime;\n      return;\n    }\n\n    var percent = (globalTime - this._startTime - this._pausedTime) / this._life; // 还没开始\n\n    if (percent < 0) {\n      return;\n    }\n\n    percent = Math.min(percent, 1);\n    var easing = this.easing;\n    var easingFunc = typeof easing === 'string' ? easingFuncs[easing] : easing;\n    var schedule = typeof easingFunc === 'function' ? easingFunc(percent) : percent;\n    this.fire('frame', schedule); // 结束\n\n    if (percent === 1) {\n      if (this.loop) {\n        this.restart(globalTime); // 重新开始周期\n        // 抛出而不是直接调用事件直到 stage.update 后再统一调用这些事件\n\n        return 'restart';\n      } // 动画完成将这个控制器标识为待删除\n      // 在Animation.update中进行批量删除\n\n\n      this._needsRemove = true;\n      return 'destroy';\n    }\n\n    return null;\n  },\n  restart: function (globalTime) {\n    var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\n    this._startTime = globalTime - remainder + this.gap;\n    this._pausedTime = 0;\n    this._needsRemove = false;\n  },\n  fire: function (eventType, arg) {\n    eventType = 'on' + eventType;\n\n    if (this[eventType]) {\n      this[eventType](this._target, arg);\n    }\n  },\n  pause: function () {\n    this._paused = true;\n  },\n  resume: function () {\n    this._paused = false;\n  }\n};\nvar _default = Clip;\nmodule.exports = _default;\n\n/***/ }),\n/* 1008 */\n/***/ (function(module, exports) {\n\n/**\n * 缓动代码来自 https://github.com/sole/tween.js/blob/master/src/Tween.js\n * @see http://sole.github.io/tween.js/examples/03_graphs.html\n * @exports zrender/animation/easing\n */\nvar easing = {\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  linear: function (k) {\n    return k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quadraticIn: function (k) {\n    return k * k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quadraticOut: function (k) {\n    return k * (2 - k);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quadraticInOut: function (k) {\n    if ((k *= 2) < 1) {\n      return 0.5 * k * k;\n    }\n\n    return -0.5 * (--k * (k - 2) - 1);\n  },\n  // 三次方的缓动（t^3）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  cubicIn: function (k) {\n    return k * k * k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  cubicOut: function (k) {\n    return --k * k * k + 1;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  cubicInOut: function (k) {\n    if ((k *= 2) < 1) {\n      return 0.5 * k * k * k;\n    }\n\n    return 0.5 * ((k -= 2) * k * k + 2);\n  },\n  // 四次方的缓动（t^4）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quarticIn: function (k) {\n    return k * k * k * k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quarticOut: function (k) {\n    return 1 - --k * k * k * k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quarticInOut: function (k) {\n    if ((k *= 2) < 1) {\n      return 0.5 * k * k * k * k;\n    }\n\n    return -0.5 * ((k -= 2) * k * k * k - 2);\n  },\n  // 五次方的缓动（t^5）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quinticIn: function (k) {\n    return k * k * k * k * k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quinticOut: function (k) {\n    return --k * k * k * k * k + 1;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quinticInOut: function (k) {\n    if ((k *= 2) < 1) {\n      return 0.5 * k * k * k * k * k;\n    }\n\n    return 0.5 * ((k -= 2) * k * k * k * k + 2);\n  },\n  // 正弦曲线的缓动（sin(t)）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  sinusoidalIn: function (k) {\n    return 1 - Math.cos(k * Math.PI / 2);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  sinusoidalOut: function (k) {\n    return Math.sin(k * Math.PI / 2);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  sinusoidalInOut: function (k) {\n    return 0.5 * (1 - Math.cos(Math.PI * k));\n  },\n  // 指数曲线的缓动（2^t）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  exponentialIn: function (k) {\n    return k === 0 ? 0 : Math.pow(1024, k - 1);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  exponentialOut: function (k) {\n    return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  exponentialInOut: function (k) {\n    if (k === 0) {\n      return 0;\n    }\n\n    if (k === 1) {\n      return 1;\n    }\n\n    if ((k *= 2) < 1) {\n      return 0.5 * Math.pow(1024, k - 1);\n    }\n\n    return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n  },\n  // 圆形曲线的缓动（sqrt(1-t^2)）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  circularIn: function (k) {\n    return 1 - Math.sqrt(1 - k * k);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  circularOut: function (k) {\n    return Math.sqrt(1 - --k * k);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  circularInOut: function (k) {\n    if ((k *= 2) < 1) {\n      return -0.5 * (Math.sqrt(1 - k * k) - 1);\n    }\n\n    return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n  },\n  // 创建类似于弹簧在停止前来回振荡的动画\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  elasticIn: function (k) {\n    var s;\n    var a = 0.1;\n    var p = 0.4;\n\n    if (k === 0) {\n      return 0;\n    }\n\n    if (k === 1) {\n      return 1;\n    }\n\n    if (!a || a < 1) {\n      a = 1;\n      s = p / 4;\n    } else {\n      s = p * Math.asin(1 / a) / (2 * Math.PI);\n    }\n\n    return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  elasticOut: function (k) {\n    var s;\n    var a = 0.1;\n    var p = 0.4;\n\n    if (k === 0) {\n      return 0;\n    }\n\n    if (k === 1) {\n      return 1;\n    }\n\n    if (!a || a < 1) {\n      a = 1;\n      s = p / 4;\n    } else {\n      s = p * Math.asin(1 / a) / (2 * Math.PI);\n    }\n\n    return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  elasticInOut: function (k) {\n    var s;\n    var a = 0.1;\n    var p = 0.4;\n\n    if (k === 0) {\n      return 0;\n    }\n\n    if (k === 1) {\n      return 1;\n    }\n\n    if (!a || a < 1) {\n      a = 1;\n      s = p / 4;\n    } else {\n      s = p * Math.asin(1 / a) / (2 * Math.PI);\n    }\n\n    if ((k *= 2) < 1) {\n      return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n    }\n\n    return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n  },\n  // 在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  backIn: function (k) {\n    var s = 1.70158;\n    return k * k * ((s + 1) * k - s);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  backOut: function (k) {\n    var s = 1.70158;\n    return --k * k * ((s + 1) * k + s) + 1;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  backInOut: function (k) {\n    var s = 1.70158 * 1.525;\n\n    if ((k *= 2) < 1) {\n      return 0.5 * (k * k * ((s + 1) * k - s));\n    }\n\n    return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n  },\n  // 创建弹跳效果\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  bounceIn: function (k) {\n    return 1 - easing.bounceOut(1 - k);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  bounceOut: function (k) {\n    if (k < 1 / 2.75) {\n      return 7.5625 * k * k;\n    } else if (k < 2 / 2.75) {\n      return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;\n    } else if (k < 2.5 / 2.75) {\n      return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;\n    } else {\n      return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;\n    }\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  bounceInOut: function (k) {\n    if (k < 0.5) {\n      return easing.bounceIn(k * 2) * 0.5;\n    }\n\n    return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n  }\n};\nvar _default = easing;\nmodule.exports = _default;\n\n/***/ }),\n/* 1009 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _config = __webpack_require__(324);\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar util = __webpack_require__(2);\n\nvar logError = __webpack_require__(253);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar timsort = __webpack_require__(400);\n\nvar Layer = __webpack_require__(1010);\n\nvar requestAnimationFrame = __webpack_require__(553);\n\nvar Image = __webpack_require__(211);\n\nvar env = __webpack_require__(66);\n\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\n\nfunction parseInt10(val) {\n  return parseInt(val, 10);\n}\n\nfunction isLayerValid(layer) {\n  if (!layer) {\n    return false;\n  }\n\n  if (layer.__builtin__) {\n    return true;\n  }\n\n  if (typeof layer.resize !== 'function' || typeof layer.refresh !== 'function') {\n    return false;\n  }\n\n  return true;\n}\n\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\n\nfunction isDisplayableCulled(el, width, height) {\n  tmpRect.copy(el.getBoundingRect());\n\n  if (el.transform) {\n    tmpRect.applyTransform(el.transform);\n  }\n\n  viewRect.width = width;\n  viewRect.height = height;\n  return !tmpRect.intersect(viewRect);\n}\n\nfunction isClipPathChanged(clipPaths, prevClipPaths) {\n  // displayable.__clipPaths can only be `null`/`undefined` or an non-empty array.\n  if (clipPaths === prevClipPaths) {\n    return false;\n  }\n\n  if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) {\n    return true;\n  }\n\n  for (var i = 0; i < clipPaths.length; i++) {\n    if (clipPaths[i] !== prevClipPaths[i]) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction doClip(clipPaths, ctx) {\n  for (var i = 0; i < clipPaths.length; i++) {\n    var clipPath = clipPaths[i];\n    clipPath.setTransform(ctx);\n    ctx.beginPath();\n    clipPath.buildPath(ctx, clipPath.shape);\n    ctx.clip(); // Transform back\n\n    clipPath.restoreTransform(ctx);\n  }\n}\n\nfunction createRoot(width, height) {\n  var domRoot = document.createElement('div'); // domRoot.onselectstart = returnFalse; // Avoid page selected\n\n  domRoot.style.cssText = ['position:relative', // IOS13 safari probably has a compositing bug (z order of the canvas and the consequent\n  // dom does not act as expected) when some of the parent dom has\n  // `-webkit-overflow-scrolling: touch;` and the webpage is longer than one screen and\n  // the canvas is not at the top part of the page.\n  // Check `https://bugs.webkit.org/show_bug.cgi?id=203681` for more details. We remove\n  // this `overflow:hidden` to avoid the bug.\n  // 'overflow:hidden',\n  'width:' + width + 'px', 'height:' + height + 'px', 'padding:0', 'margin:0', 'border-width:0'].join(';') + ';';\n  return domRoot;\n}\n/**\n * @alias module:zrender/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar Painter = function (root, storage, opts) {\n  this.type = 'canvas'; // In node environment using node-canvas\n\n  var singleCanvas = !root.nodeName // In node ?\n  || root.nodeName.toUpperCase() === 'CANVAS';\n  this._opts = opts = util.extend({}, opts || {});\n  /**\n   * @type {number}\n   */\n\n  this.dpr = opts.devicePixelRatio || devicePixelRatio;\n  /**\n   * @type {boolean}\n   * @private\n   */\n\n  this._singleCanvas = singleCanvas;\n  /**\n   * 绘图容器\n   * @type {HTMLElement}\n   */\n\n  this.root = root;\n  var rootStyle = root.style;\n\n  if (rootStyle) {\n    rootStyle['-webkit-tap-highlight-color'] = 'transparent';\n    rootStyle['-webkit-user-select'] = rootStyle['user-select'] = rootStyle['-webkit-touch-callout'] = 'none';\n    root.innerHTML = '';\n  }\n  /**\n   * @type {module:zrender/Storage}\n   */\n\n\n  this.storage = storage;\n  /**\n   * @type {Array.<number>}\n   * @private\n   */\n\n  var zlevelList = this._zlevelList = [];\n  /**\n   * @type {Object.<string, module:zrender/Layer>}\n   * @private\n   */\n\n  var layers = this._layers = {};\n  /**\n   * @type {Object.<string, Object>}\n   * @private\n   */\n\n  this._layerConfig = {};\n  /**\n   * zrender will do compositing when root is a canvas and have multiple zlevels.\n   */\n\n  this._needsManuallyCompositing = false;\n\n  if (!singleCanvas) {\n    this._width = this._getSize(0);\n    this._height = this._getSize(1);\n    var domRoot = this._domRoot = createRoot(this._width, this._height);\n    root.appendChild(domRoot);\n  } else {\n    var width = root.width;\n    var height = root.height;\n\n    if (opts.width != null) {\n      width = opts.width;\n    }\n\n    if (opts.height != null) {\n      height = opts.height;\n    }\n\n    this.dpr = opts.devicePixelRatio || 1; // Use canvas width and height directly\n\n    root.width = width * this.dpr;\n    root.height = height * this.dpr;\n    this._width = width;\n    this._height = height; // Create layer if only one given canvas\n    // Device can be specified to create a high dpi image.\n\n    var mainLayer = new Layer(root, this, this.dpr);\n    mainLayer.__builtin__ = true;\n    mainLayer.initContext(); // FIXME Use canvas width and height\n    // mainLayer.resize(width, height);\n\n    layers[CANVAS_ZLEVEL] = mainLayer;\n    mainLayer.zlevel = CANVAS_ZLEVEL; // Not use common zlevel.\n\n    zlevelList.push(CANVAS_ZLEVEL);\n    this._domRoot = root;\n  }\n  /**\n   * @type {module:zrender/Layer}\n   * @private\n   */\n\n\n  this._hoverlayer = null;\n  this._hoverElements = [];\n};\n\nPainter.prototype = {\n  constructor: Painter,\n  getType: function () {\n    return 'canvas';\n  },\n\n  /**\n   * If painter use a single canvas\n   * @return {boolean}\n   */\n  isSingleCanvas: function () {\n    return this._singleCanvas;\n  },\n\n  /**\n   * @return {HTMLDivElement}\n   */\n  getViewportRoot: function () {\n    return this._domRoot;\n  },\n  getViewportRootOffset: function () {\n    var viewportRoot = this.getViewportRoot();\n\n    if (viewportRoot) {\n      return {\n        offsetLeft: viewportRoot.offsetLeft || 0,\n        offsetTop: viewportRoot.offsetTop || 0\n      };\n    }\n  },\n\n  /**\n   * 刷新\n   * @param {boolean} [paintAll=false] 强制绘制所有displayable\n   */\n  refresh: function (paintAll) {\n    var list = this.storage.getDisplayList(true);\n    var zlevelList = this._zlevelList;\n    this._redrawId = Math.random();\n\n    this._paintList(list, paintAll, this._redrawId); // Paint custum layers\n\n\n    for (var i = 0; i < zlevelList.length; i++) {\n      var z = zlevelList[i];\n      var layer = this._layers[z];\n\n      if (!layer.__builtin__ && layer.refresh) {\n        var clearColor = i === 0 ? this._backgroundColor : null;\n        layer.refresh(clearColor);\n      }\n    }\n\n    this.refreshHover();\n    return this;\n  },\n  addHover: function (el, hoverStyle) {\n    if (el.__hoverMir) {\n      return;\n    }\n\n    var elMirror = new el.constructor({\n      style: el.style,\n      shape: el.shape,\n      z: el.z,\n      z2: el.z2,\n      silent: el.silent\n    });\n    elMirror.__from = el;\n    el.__hoverMir = elMirror;\n    hoverStyle && elMirror.setStyle(hoverStyle);\n\n    this._hoverElements.push(elMirror);\n\n    return elMirror;\n  },\n  removeHover: function (el) {\n    var elMirror = el.__hoverMir;\n    var hoverElements = this._hoverElements;\n    var idx = util.indexOf(hoverElements, elMirror);\n\n    if (idx >= 0) {\n      hoverElements.splice(idx, 1);\n    }\n\n    el.__hoverMir = null;\n  },\n  clearHover: function (el) {\n    var hoverElements = this._hoverElements;\n\n    for (var i = 0; i < hoverElements.length; i++) {\n      var from = hoverElements[i].__from;\n\n      if (from) {\n        from.__hoverMir = null;\n      }\n    }\n\n    hoverElements.length = 0;\n  },\n  refreshHover: function () {\n    var hoverElements = this._hoverElements;\n    var len = hoverElements.length;\n    var hoverLayer = this._hoverlayer;\n    hoverLayer && hoverLayer.clear();\n\n    if (!len) {\n      return;\n    }\n\n    timsort(hoverElements, this.storage.displayableSortFunc); // Use a extream large zlevel\n    // FIXME?\n\n    if (!hoverLayer) {\n      hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n    }\n\n    var scope = {};\n    hoverLayer.ctx.save();\n\n    for (var i = 0; i < len;) {\n      var el = hoverElements[i];\n      var originalEl = el.__from; // Original el is removed\n      // PENDING\n\n      if (!(originalEl && originalEl.__zr)) {\n        hoverElements.splice(i, 1);\n        originalEl.__hoverMir = null;\n        len--;\n        continue;\n      }\n\n      i++; // Use transform\n      // FIXME style and shape ?\n\n      if (!originalEl.invisible) {\n        el.transform = originalEl.transform;\n        el.invTransform = originalEl.invTransform;\n        el.__clipPaths = originalEl.__clipPaths; // el.\n\n        this._doPaintEl(el, hoverLayer, true, scope);\n      }\n    }\n\n    hoverLayer.ctx.restore();\n  },\n  getHoverLayer: function () {\n    return this.getLayer(HOVER_LAYER_ZLEVEL);\n  },\n  _paintList: function (list, paintAll, redrawId) {\n    if (this._redrawId !== redrawId) {\n      return;\n    }\n\n    paintAll = paintAll || false;\n\n    this._updateLayerStatus(list);\n\n    var finished = this._doPaintList(list, paintAll);\n\n    if (this._needsManuallyCompositing) {\n      this._compositeManually();\n    }\n\n    if (!finished) {\n      var self = this;\n      requestAnimationFrame(function () {\n        self._paintList(list, paintAll, redrawId);\n      });\n    }\n  },\n  _compositeManually: function () {\n    var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\n    var width = this._domRoot.width;\n    var height = this._domRoot.height;\n    ctx.clearRect(0, 0, width, height); // PENDING, If only builtin layer?\n\n    this.eachBuiltinLayer(function (layer) {\n      if (layer.virtual) {\n        ctx.drawImage(layer.dom, 0, 0, width, height);\n      }\n    });\n  },\n  _doPaintList: function (list, paintAll) {\n    var layerList = [];\n\n    for (var zi = 0; zi < this._zlevelList.length; zi++) {\n      var zlevel = this._zlevelList[zi];\n      var layer = this._layers[zlevel];\n\n      if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) {\n        layerList.push(layer);\n      }\n    }\n\n    var finished = true;\n\n    for (var k = 0; k < layerList.length; k++) {\n      var layer = layerList[k];\n      var ctx = layer.ctx;\n      var scope = {};\n      ctx.save();\n      var start = paintAll ? layer.__startIndex : layer.__drawIndex;\n      var useTimer = !paintAll && layer.incremental && Date.now;\n      var startTime = useTimer && Date.now();\n      var clearColor = layer.zlevel === this._zlevelList[0] ? this._backgroundColor : null; // All elements in this layer are cleared.\n\n      if (layer.__startIndex === layer.__endIndex) {\n        layer.clear(false, clearColor);\n      } else if (start === layer.__startIndex) {\n        var firstEl = list[start];\n\n        if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n          layer.clear(false, clearColor);\n        }\n      }\n\n      if (start === -1) {\n        console.error('For some unknown reason. drawIndex is -1');\n        start = layer.__startIndex;\n      }\n\n      for (var i = start; i < layer.__endIndex; i++) {\n        var el = list[i];\n\n        this._doPaintEl(el, layer, paintAll, scope);\n\n        el.__dirty = el.__dirtyText = false;\n\n        if (useTimer) {\n          // Date.now can be executed in 13,025,305 ops/second.\n          var dTime = Date.now() - startTime; // Give 15 millisecond to draw.\n          // The rest elements will be drawn in the next frame.\n\n          if (dTime > 15) {\n            break;\n          }\n        }\n      }\n\n      layer.__drawIndex = i;\n\n      if (layer.__drawIndex < layer.__endIndex) {\n        finished = false;\n      }\n\n      if (scope.prevElClipPaths) {\n        // Needs restore the state. If last drawn element is in the clipping area.\n        ctx.restore();\n      }\n\n      ctx.restore();\n    }\n\n    if (env.wxa) {\n      // Flush for weixin application\n      util.each(this._layers, function (layer) {\n        if (layer && layer.ctx && layer.ctx.draw) {\n          layer.ctx.draw();\n        }\n      });\n    }\n\n    return finished;\n  },\n  _doPaintEl: function (el, currentLayer, forcePaint, scope) {\n    var ctx = currentLayer.ctx;\n    var m = el.transform;\n\n    if ((currentLayer.__dirty || forcePaint) && // Ignore invisible element\n    !el.invisible // Ignore transparent element\n    && el.style.opacity !== 0 // Ignore scale 0 element, in some environment like node-canvas\n    // Draw a scale 0 element can cause all following draw wrong\n    // And setTransform with scale 0 will cause set back transform failed.\n    && !(m && !m[0] && !m[3]) // Ignore culled element\n    && !(el.culling && isDisplayableCulled(el, this._width, this._height))) {\n      var clipPaths = el.__clipPaths;\n      var prevElClipPaths = scope.prevElClipPaths; // Optimize when clipping on group with several elements\n\n      if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n        // If has previous clipping state, restore from it\n        if (prevElClipPaths) {\n          ctx.restore();\n          scope.prevElClipPaths = null; // Reset prevEl since context has been restored\n\n          scope.prevEl = null;\n        } // New clipping state\n\n\n        if (clipPaths) {\n          ctx.save();\n          doClip(clipPaths, ctx);\n          scope.prevElClipPaths = clipPaths;\n        }\n      }\n\n      el.beforeBrush && el.beforeBrush(ctx);\n      el.brush(ctx, scope.prevEl || null);\n      scope.prevEl = el;\n      el.afterBrush && el.afterBrush(ctx);\n    }\n  },\n\n  /**\n   * 获取 zlevel 所在层，如果不存在则会创建一个新的层\n   * @param {number} zlevel\n   * @param {boolean} virtual Virtual layer will not be inserted into dom.\n   * @return {module:zrender/Layer}\n   */\n  getLayer: function (zlevel, virtual) {\n    if (this._singleCanvas && !this._needsManuallyCompositing) {\n      zlevel = CANVAS_ZLEVEL;\n    }\n\n    var layer = this._layers[zlevel];\n\n    if (!layer) {\n      // Create a new layer\n      layer = new Layer('zr_' + zlevel, this, this.dpr);\n      layer.zlevel = zlevel;\n      layer.__builtin__ = true;\n\n      if (this._layerConfig[zlevel]) {\n        util.merge(layer, this._layerConfig[zlevel], true);\n      } // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\n      else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\n          util.merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\n        }\n\n      if (virtual) {\n        layer.virtual = virtual;\n      }\n\n      this.insertLayer(zlevel, layer); // Context is created after dom inserted to document\n      // Or excanvas will get 0px clientWidth and clientHeight\n\n      layer.initContext();\n    }\n\n    return layer;\n  },\n  insertLayer: function (zlevel, layer) {\n    var layersMap = this._layers;\n    var zlevelList = this._zlevelList;\n    var len = zlevelList.length;\n    var prevLayer = null;\n    var i = -1;\n    var domRoot = this._domRoot;\n\n    if (layersMap[zlevel]) {\n      logError('ZLevel ' + zlevel + ' has been used already');\n      return;\n    } // Check if is a valid layer\n\n\n    if (!isLayerValid(layer)) {\n      logError('Layer of zlevel ' + zlevel + ' is not valid');\n      return;\n    }\n\n    if (len > 0 && zlevel > zlevelList[0]) {\n      for (i = 0; i < len - 1; i++) {\n        if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) {\n          break;\n        }\n      }\n\n      prevLayer = layersMap[zlevelList[i]];\n    }\n\n    zlevelList.splice(i + 1, 0, zlevel);\n    layersMap[zlevel] = layer; // Vitual layer will not directly show on the screen.\n    // (It can be a WebGL layer and assigned to a ZImage element)\n    // But it still under management of zrender.\n\n    if (!layer.virtual) {\n      if (prevLayer) {\n        var prevDom = prevLayer.dom;\n\n        if (prevDom.nextSibling) {\n          domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n        } else {\n          domRoot.appendChild(layer.dom);\n        }\n      } else {\n        if (domRoot.firstChild) {\n          domRoot.insertBefore(layer.dom, domRoot.firstChild);\n        } else {\n          domRoot.appendChild(layer.dom);\n        }\n      }\n    }\n  },\n  // Iterate each layer\n  eachLayer: function (cb, context) {\n    var zlevelList = this._zlevelList;\n    var z;\n    var i;\n\n    for (i = 0; i < zlevelList.length; i++) {\n      z = zlevelList[i];\n      cb.call(context, this._layers[z], z);\n    }\n  },\n  // Iterate each buildin layer\n  eachBuiltinLayer: function (cb, context) {\n    var zlevelList = this._zlevelList;\n    var layer;\n    var z;\n    var i;\n\n    for (i = 0; i < zlevelList.length; i++) {\n      z = zlevelList[i];\n      layer = this._layers[z];\n\n      if (layer.__builtin__) {\n        cb.call(context, layer, z);\n      }\n    }\n  },\n  // Iterate each other layer except buildin layer\n  eachOtherLayer: function (cb, context) {\n    var zlevelList = this._zlevelList;\n    var layer;\n    var z;\n    var i;\n\n    for (i = 0; i < zlevelList.length; i++) {\n      z = zlevelList[i];\n      layer = this._layers[z];\n\n      if (!layer.__builtin__) {\n        cb.call(context, layer, z);\n      }\n    }\n  },\n\n  /**\n   * 获取所有已创建的层\n   * @param {Array.<module:zrender/Layer>} [prevLayer]\n   */\n  getLayers: function () {\n    return this._layers;\n  },\n  _updateLayerStatus: function (list) {\n    this.eachBuiltinLayer(function (layer, z) {\n      layer.__dirty = layer.__used = false;\n    });\n\n    function updatePrevLayer(idx) {\n      if (prevLayer) {\n        if (prevLayer.__endIndex !== idx) {\n          prevLayer.__dirty = true;\n        }\n\n        prevLayer.__endIndex = idx;\n      }\n    }\n\n    if (this._singleCanvas) {\n      for (var i = 1; i < list.length; i++) {\n        var el = list[i];\n\n        if (el.zlevel !== list[i - 1].zlevel || el.incremental) {\n          this._needsManuallyCompositing = true;\n          break;\n        }\n      }\n    }\n\n    var prevLayer = null;\n    var incrementalLayerCount = 0;\n    var prevZlevel;\n\n    for (var i = 0; i < list.length; i++) {\n      var el = list[i];\n      var zlevel = el.zlevel;\n      var layer;\n\n      if (prevZlevel !== zlevel) {\n        prevZlevel = zlevel;\n        incrementalLayerCount = 0;\n      } // TODO Not use magic number on zlevel.\n      // Each layer with increment element can be separated to 3 layers.\n      //          (Other Element drawn after incremental element)\n      // -----------------zlevel + EL_AFTER_INCREMENTAL_INC--------------------\n      //                      (Incremental element)\n      // ----------------------zlevel + INCREMENTAL_INC------------------------\n      //              (Element drawn before incremental element)\n      // --------------------------------zlevel--------------------------------\n\n\n      if (el.incremental) {\n        layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n        layer.incremental = true;\n        incrementalLayerCount = 1;\n      } else {\n        layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n      }\n\n      if (!layer.__builtin__) {\n        logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n      }\n\n      if (layer !== prevLayer) {\n        layer.__used = true;\n\n        if (layer.__startIndex !== i) {\n          layer.__dirty = true;\n        }\n\n        layer.__startIndex = i;\n\n        if (!layer.incremental) {\n          layer.__drawIndex = i;\n        } else {\n          // Mark layer draw index needs to update.\n          layer.__drawIndex = -1;\n        }\n\n        updatePrevLayer(i);\n        prevLayer = layer;\n      }\n\n      if (el.__dirty) {\n        layer.__dirty = true;\n\n        if (layer.incremental && layer.__drawIndex < 0) {\n          // Start draw from the first dirty element.\n          layer.__drawIndex = i;\n        }\n      }\n    }\n\n    updatePrevLayer(i);\n    this.eachBuiltinLayer(function (layer, z) {\n      // Used in last frame but not in this frame. Needs clear\n      if (!layer.__used && layer.getElementCount() > 0) {\n        layer.__dirty = true;\n        layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n      } // For incremental layer. In case start index changed and no elements are dirty.\n\n\n      if (layer.__dirty && layer.__drawIndex < 0) {\n        layer.__drawIndex = layer.__startIndex;\n      }\n    });\n  },\n\n  /**\n   * 清除hover层外所有内容\n   */\n  clear: function () {\n    this.eachBuiltinLayer(this._clearLayer);\n    return this;\n  },\n  _clearLayer: function (layer) {\n    layer.clear();\n  },\n  setBackgroundColor: function (backgroundColor) {\n    this._backgroundColor = backgroundColor;\n  },\n\n  /**\n   * 修改指定zlevel的绘制参数\n   *\n   * @param {string} zlevel\n   * @param {Object} config 配置对象\n   * @param {string} [config.clearColor=0] 每次清空画布的颜色\n   * @param {string} [config.motionBlur=false] 是否开启动态模糊\n   * @param {number} [config.lastFrameAlpha=0.7]\n   *                 在开启动态模糊的时候使用，与上一帧混合的alpha值，值越大尾迹越明显\n   */\n  configLayer: function (zlevel, config) {\n    if (config) {\n      var layerConfig = this._layerConfig;\n\n      if (!layerConfig[zlevel]) {\n        layerConfig[zlevel] = config;\n      } else {\n        util.merge(layerConfig[zlevel], config, true);\n      }\n\n      for (var i = 0; i < this._zlevelList.length; i++) {\n        var _zlevel = this._zlevelList[i]; // TODO Remove EL_AFTER_INCREMENTAL_INC magic number\n\n        if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\n          var layer = this._layers[_zlevel];\n          util.merge(layer, layerConfig[zlevel], true);\n        }\n      }\n    }\n  },\n\n  /**\n   * 删除指定层\n   * @param {number} zlevel 层所在的zlevel\n   */\n  delLayer: function (zlevel) {\n    var layers = this._layers;\n    var zlevelList = this._zlevelList;\n    var layer = layers[zlevel];\n\n    if (!layer) {\n      return;\n    }\n\n    layer.dom.parentNode.removeChild(layer.dom);\n    delete layers[zlevel];\n    zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n  },\n\n  /**\n   * 区域大小变化后重绘\n   */\n  resize: function (width, height) {\n    if (!this._domRoot.style) {\n      // Maybe in node or worker\n      if (width == null || height == null) {\n        return;\n      }\n\n      this._width = width;\n      this._height = height;\n      this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n    } else {\n      var domRoot = this._domRoot; // FIXME Why ?\n\n      domRoot.style.display = 'none'; // Save input w/h\n\n      var opts = this._opts;\n      width != null && (opts.width = width);\n      height != null && (opts.height = height);\n      width = this._getSize(0);\n      height = this._getSize(1);\n      domRoot.style.display = ''; // 优化没有实际改变的resize\n\n      if (this._width !== width || height !== this._height) {\n        domRoot.style.width = width + 'px';\n        domRoot.style.height = height + 'px';\n\n        for (var id in this._layers) {\n          if (this._layers.hasOwnProperty(id)) {\n            this._layers[id].resize(width, height);\n          }\n        }\n\n        util.each(this._progressiveLayers, function (layer) {\n          layer.resize(width, height);\n        });\n        this.refresh(true);\n      }\n\n      this._width = width;\n      this._height = height;\n    }\n\n    return this;\n  },\n\n  /**\n   * 清除单独的一个层\n   * @param {number} zlevel\n   */\n  clearLayer: function (zlevel) {\n    var layer = this._layers[zlevel];\n\n    if (layer) {\n      layer.clear();\n    }\n  },\n\n  /**\n   * 释放\n   */\n  dispose: function () {\n    this.root.innerHTML = '';\n    this.root = this.storage = this._domRoot = this._layers = null;\n  },\n\n  /**\n   * Get canvas which has all thing rendered\n   * @param {Object} opts\n   * @param {string} [opts.backgroundColor]\n   * @param {number} [opts.pixelRatio]\n   */\n  getRenderedCanvas: function (opts) {\n    opts = opts || {};\n\n    if (this._singleCanvas && !this._compositeManually) {\n      return this._layers[CANVAS_ZLEVEL].dom;\n    }\n\n    var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\n    imageLayer.initContext();\n    imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\n\n    if (opts.pixelRatio <= this.dpr) {\n      this.refresh();\n      var width = imageLayer.dom.width;\n      var height = imageLayer.dom.height;\n      var ctx = imageLayer.ctx;\n      this.eachLayer(function (layer) {\n        if (layer.__builtin__) {\n          ctx.drawImage(layer.dom, 0, 0, width, height);\n        } else if (layer.renderToCanvas) {\n          imageLayer.ctx.save();\n          layer.renderToCanvas(imageLayer.ctx);\n          imageLayer.ctx.restore();\n        }\n      });\n    } else {\n      // PENDING, echarts-gl and incremental rendering.\n      var scope = {};\n      var displayList = this.storage.getDisplayList(true);\n\n      for (var i = 0; i < displayList.length; i++) {\n        var el = displayList[i];\n\n        this._doPaintEl(el, imageLayer, true, scope);\n      }\n    }\n\n    return imageLayer.dom;\n  },\n\n  /**\n   * 获取绘图区域宽度\n   */\n  getWidth: function () {\n    return this._width;\n  },\n\n  /**\n   * 获取绘图区域高度\n   */\n  getHeight: function () {\n    return this._height;\n  },\n  _getSize: function (whIdx) {\n    var opts = this._opts;\n    var wh = ['width', 'height'][whIdx];\n    var cwh = ['clientWidth', 'clientHeight'][whIdx];\n    var plt = ['paddingLeft', 'paddingTop'][whIdx];\n    var prb = ['paddingRight', 'paddingBottom'][whIdx];\n\n    if (opts[wh] != null && opts[wh] !== 'auto') {\n      return parseFloat(opts[wh]);\n    }\n\n    var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n    var stl = document.defaultView.getComputedStyle(root);\n    return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n  },\n  pathToImage: function (path, dpr) {\n    dpr = dpr || this.dpr;\n    var canvas = document.createElement('canvas');\n    var ctx = canvas.getContext('2d');\n    var rect = path.getBoundingRect();\n    var style = path.style;\n    var shadowBlurSize = style.shadowBlur * dpr;\n    var shadowOffsetX = style.shadowOffsetX * dpr;\n    var shadowOffsetY = style.shadowOffsetY * dpr;\n    var lineWidth = style.hasStroke() ? style.lineWidth : 0;\n    var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\n    var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\n    var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\n    var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\n    var width = rect.width + leftMargin + rightMargin;\n    var height = rect.height + topMargin + bottomMargin;\n    canvas.width = width * dpr;\n    canvas.height = height * dpr;\n    ctx.scale(dpr, dpr);\n    ctx.clearRect(0, 0, width, height);\n    ctx.dpr = dpr;\n    var pathTransform = {\n      position: path.position,\n      rotation: path.rotation,\n      scale: path.scale\n    };\n    path.position = [leftMargin - rect.x, topMargin - rect.y];\n    path.rotation = 0;\n    path.scale = [1, 1];\n    path.updateTransform();\n\n    if (path) {\n      path.brush(ctx);\n    }\n\n    var ImageShape = Image;\n    var imgShape = new ImageShape({\n      style: {\n        x: 0,\n        y: 0,\n        image: canvas\n      }\n    });\n\n    if (pathTransform.position != null) {\n      imgShape.position = path.position = pathTransform.position;\n    }\n\n    if (pathTransform.rotation != null) {\n      imgShape.rotation = path.rotation = pathTransform.rotation;\n    }\n\n    if (pathTransform.scale != null) {\n      imgShape.scale = path.scale = pathTransform.scale;\n    }\n\n    return imgShape;\n  }\n};\nvar _default = Painter;\nmodule.exports = _default;\n\n/***/ }),\n/* 1010 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar util = __webpack_require__(2);\n\nvar _config = __webpack_require__(324);\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar Style = __webpack_require__(401);\n\nvar Pattern = __webpack_require__(552);\n\n/**\n * @module zrender/Layer\n * @author pissang(https://www.github.com/pissang)\n */\nfunction returnFalse() {\n  return false;\n}\n/**\n * 创建dom\n *\n * @inner\n * @param {string} id dom id 待用\n * @param {Painter} painter painter instance\n * @param {number} number\n */\n\n\nfunction createDom(id, painter, dpr) {\n  var newDom = util.createCanvas();\n  var width = painter.getWidth();\n  var height = painter.getHeight();\n  var newDomStyle = newDom.style;\n\n  if (newDomStyle) {\n    // In node or some other non-browser environment\n    newDomStyle.position = 'absolute';\n    newDomStyle.left = 0;\n    newDomStyle.top = 0;\n    newDomStyle.width = width + 'px';\n    newDomStyle.height = height + 'px';\n    newDom.setAttribute('data-zr-dom-id', id);\n  }\n\n  newDom.width = width * dpr;\n  newDom.height = height * dpr;\n  return newDom;\n}\n/**\n * @alias module:zrender/Layer\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @param {string} id\n * @param {module:zrender/Painter} painter\n * @param {number} [dpr]\n */\n\n\nvar Layer = function (id, painter, dpr) {\n  var dom;\n  dpr = dpr || devicePixelRatio;\n\n  if (typeof id === 'string') {\n    dom = createDom(id, painter, dpr);\n  } // Not using isDom because in node it will return false\n  else if (util.isObject(id)) {\n      dom = id;\n      id = dom.id;\n    }\n\n  this.id = id;\n  this.dom = dom;\n  var domStyle = dom.style;\n\n  if (domStyle) {\n    // Not in node\n    dom.onselectstart = returnFalse; // 避免页面选中的尴尬\n\n    domStyle['-webkit-user-select'] = 'none';\n    domStyle['user-select'] = 'none';\n    domStyle['-webkit-touch-callout'] = 'none';\n    domStyle['-webkit-tap-highlight-color'] = 'rgba(0,0,0,0)';\n    domStyle['padding'] = 0; // eslint-disable-line dot-notation\n\n    domStyle['margin'] = 0; // eslint-disable-line dot-notation\n\n    domStyle['border-width'] = 0;\n  }\n\n  this.domBack = null;\n  this.ctxBack = null;\n  this.painter = painter;\n  this.config = null; // Configs\n\n  /**\n   * 每次清空画布的颜色\n   * @type {string}\n   * @default 0\n   */\n\n  this.clearColor = 0;\n  /**\n   * 是否开启动态模糊\n   * @type {boolean}\n   * @default false\n   */\n\n  this.motionBlur = false;\n  /**\n   * 在开启动态模糊的时候使用，与上一帧混合的alpha值，值越大尾迹越明显\n   * @type {number}\n   * @default 0.7\n   */\n\n  this.lastFrameAlpha = 0.7;\n  /**\n   * Layer dpr\n   * @type {number}\n   */\n\n  this.dpr = dpr;\n};\n\nLayer.prototype = {\n  constructor: Layer,\n  __dirty: true,\n  __used: false,\n  __drawIndex: 0,\n  __startIndex: 0,\n  __endIndex: 0,\n  incremental: false,\n  getElementCount: function () {\n    return this.__endIndex - this.__startIndex;\n  },\n  initContext: function () {\n    this.ctx = this.dom.getContext('2d');\n    this.ctx.dpr = this.dpr;\n  },\n  createBackBuffer: function () {\n    var dpr = this.dpr;\n    this.domBack = createDom('back-' + this.id, this.painter, dpr);\n    this.ctxBack = this.domBack.getContext('2d');\n\n    if (dpr !== 1) {\n      this.ctxBack.scale(dpr, dpr);\n    }\n  },\n\n  /**\n   * @param  {number} width\n   * @param  {number} height\n   */\n  resize: function (width, height) {\n    var dpr = this.dpr;\n    var dom = this.dom;\n    var domStyle = dom.style;\n    var domBack = this.domBack;\n\n    if (domStyle) {\n      domStyle.width = width + 'px';\n      domStyle.height = height + 'px';\n    }\n\n    dom.width = width * dpr;\n    dom.height = height * dpr;\n\n    if (domBack) {\n      domBack.width = width * dpr;\n      domBack.height = height * dpr;\n\n      if (dpr !== 1) {\n        this.ctxBack.scale(dpr, dpr);\n      }\n    }\n  },\n\n  /**\n   * 清空该层画布\n   * @param {boolean} [clearAll]=false Clear all with out motion blur\n   * @param {Color} [clearColor]\n   */\n  clear: function (clearAll, clearColor) {\n    var dom = this.dom;\n    var ctx = this.ctx;\n    var width = dom.width;\n    var height = dom.height;\n    var clearColor = clearColor || this.clearColor;\n    var haveMotionBLur = this.motionBlur && !clearAll;\n    var lastFrameAlpha = this.lastFrameAlpha;\n    var dpr = this.dpr;\n\n    if (haveMotionBLur) {\n      if (!this.domBack) {\n        this.createBackBuffer();\n      }\n\n      this.ctxBack.globalCompositeOperation = 'copy';\n      this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n    }\n\n    ctx.clearRect(0, 0, width, height);\n\n    if (clearColor && clearColor !== 'transparent') {\n      var clearColorGradientOrPattern; // Gradient\n\n      if (clearColor.colorStops) {\n        // Cache canvas gradient\n        clearColorGradientOrPattern = clearColor.__canvasGradient || Style.getGradient(ctx, clearColor, {\n          x: 0,\n          y: 0,\n          width: width,\n          height: height\n        });\n        clearColor.__canvasGradient = clearColorGradientOrPattern;\n      } // Pattern\n      else if (clearColor.image) {\n          clearColorGradientOrPattern = Pattern.prototype.getCanvasPattern.call(clearColor, ctx);\n        }\n\n      ctx.save();\n      ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n      ctx.fillRect(0, 0, width, height);\n      ctx.restore();\n    }\n\n    if (haveMotionBLur) {\n      var domBack = this.domBack;\n      ctx.save();\n      ctx.globalAlpha = lastFrameAlpha;\n      ctx.drawImage(domBack, 0, 0, width, height);\n      ctx.restore();\n    }\n  }\n};\nvar _default = Layer;\nmodule.exports = _default;\n\n/***/ }),\n/* 1011 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar util = __webpack_require__(2);\n\nvar _event = __webpack_require__(129);\n\nvar Dispatcher = _event.Dispatcher;\n\nvar requestAnimationFrame = __webpack_require__(553);\n\nvar Animator = __webpack_require__(549);\n\n/**\n * Animation main class, dispatch and manage all animation controllers\n *\n * @module zrender/animation/Animation\n * @author pissang(https://github.com/pissang)\n */\n// TODO Additive animation\n// http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/\n// https://developer.apple.com/videos/wwdc2014/#236\n\n/**\n * @typedef {Object} IZRenderStage\n * @property {Function} update\n */\n\n/**\n * @alias module:zrender/animation/Animation\n * @constructor\n * @param {Object} [options]\n * @param {Function} [options.onframe]\n * @param {IZRenderStage} [options.stage]\n * @example\n *     var animation = new Animation();\n *     var obj = {\n *         x: 100,\n *         y: 100\n *     };\n *     animation.animate(node.position)\n *         .when(1000, {\n *             x: 500,\n *             y: 500\n *         })\n *         .when(2000, {\n *             x: 100,\n *             y: 100\n *         })\n *         .start('spline');\n */\nvar Animation = function (options) {\n  options = options || {};\n  this.stage = options.stage || {};\n\n  this.onframe = options.onframe || function () {}; // private properties\n\n\n  this._clips = [];\n  this._running = false;\n  this._time;\n  this._pausedTime;\n  this._pauseStart;\n  this._paused = false;\n  Dispatcher.call(this);\n};\n\nAnimation.prototype = {\n  constructor: Animation,\n\n  /**\n   * Add clip\n   * @param {module:zrender/animation/Clip} clip\n   */\n  addClip: function (clip) {\n    this._clips.push(clip);\n  },\n\n  /**\n   * Add animator\n   * @param {module:zrender/animation/Animator} animator\n   */\n  addAnimator: function (animator) {\n    animator.animation = this;\n    var clips = animator.getClips();\n\n    for (var i = 0; i < clips.length; i++) {\n      this.addClip(clips[i]);\n    }\n  },\n\n  /**\n   * Delete animation clip\n   * @param {module:zrender/animation/Clip} clip\n   */\n  removeClip: function (clip) {\n    var idx = util.indexOf(this._clips, clip);\n\n    if (idx >= 0) {\n      this._clips.splice(idx, 1);\n    }\n  },\n\n  /**\n   * Delete animation clip\n   * @param {module:zrender/animation/Animator} animator\n   */\n  removeAnimator: function (animator) {\n    var clips = animator.getClips();\n\n    for (var i = 0; i < clips.length; i++) {\n      this.removeClip(clips[i]);\n    }\n\n    animator.animation = null;\n  },\n  _update: function () {\n    var time = new Date().getTime() - this._pausedTime;\n\n    var delta = time - this._time;\n    var clips = this._clips;\n    var len = clips.length;\n    var deferredEvents = [];\n    var deferredClips = [];\n\n    for (var i = 0; i < len; i++) {\n      var clip = clips[i];\n      var e = clip.step(time, delta); // Throw out the events need to be called after\n      // stage.update, like destroy\n\n      if (e) {\n        deferredEvents.push(e);\n        deferredClips.push(clip);\n      }\n    } // Remove the finished clip\n\n\n    for (var i = 0; i < len;) {\n      if (clips[i]._needsRemove) {\n        clips[i] = clips[len - 1];\n        clips.pop();\n        len--;\n      } else {\n        i++;\n      }\n    }\n\n    len = deferredEvents.length;\n\n    for (var i = 0; i < len; i++) {\n      deferredClips[i].fire(deferredEvents[i]);\n    }\n\n    this._time = time;\n    this.onframe(delta); // 'frame' should be triggered before stage, because upper application\n    // depends on the sequence (e.g., echarts-stream and finish\n    // event judge)\n\n    this.trigger('frame', delta);\n\n    if (this.stage.update) {\n      this.stage.update();\n    }\n  },\n  _startLoop: function () {\n    var self = this;\n    this._running = true;\n\n    function step() {\n      if (self._running) {\n        requestAnimationFrame(step);\n        !self._paused && self._update();\n      }\n    }\n\n    requestAnimationFrame(step);\n  },\n\n  /**\n   * Start animation.\n   */\n  start: function () {\n    this._time = new Date().getTime();\n    this._pausedTime = 0;\n\n    this._startLoop();\n  },\n\n  /**\n   * Stop animation.\n   */\n  stop: function () {\n    this._running = false;\n  },\n\n  /**\n   * Pause animation.\n   */\n  pause: function () {\n    if (!this._paused) {\n      this._pauseStart = new Date().getTime();\n      this._paused = true;\n    }\n  },\n\n  /**\n   * Resume animation.\n   */\n  resume: function () {\n    if (this._paused) {\n      this._pausedTime += new Date().getTime() - this._pauseStart;\n      this._paused = false;\n    }\n  },\n\n  /**\n   * Clear animation.\n   */\n  clear: function () {\n    this._clips = [];\n  },\n\n  /**\n   * Whether animation finished.\n   */\n  isFinished: function () {\n    return !this._clips.length;\n  },\n\n  /**\n   * Creat animator for a target, whose props can be animated.\n   *\n   * @param  {Object} target\n   * @param  {Object} options\n   * @param  {boolean} [options.loop=false] Whether loop animation.\n   * @param  {Function} [options.getter=null] Get value from target.\n   * @param  {Function} [options.setter=null] Set value to target.\n   * @return {module:zrender/animation/Animation~Animator}\n   */\n  // TODO Gap\n  animate: function (target, options) {\n    options = options || {};\n    var animator = new Animator(target, options.loop, options.getter, options.setter);\n    this.addAnimator(animator);\n    return animator;\n  }\n};\nutil.mixin(Animation, Dispatcher);\nvar _default = Animation;\nmodule.exports = _default;\n\n/***/ }),\n/* 1012 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _event = __webpack_require__(129);\n\nvar addEventListener = _event.addEventListener;\nvar removeEventListener = _event.removeEventListener;\nvar normalizeEvent = _event.normalizeEvent;\nvar getNativeEvent = _event.getNativeEvent;\n\nvar zrUtil = __webpack_require__(2);\n\nvar Eventful = __webpack_require__(176);\n\nvar env = __webpack_require__(66);\n\n/* global document */\nvar TOUCH_CLICK_DELAY = 300;\nvar globalEventSupported = env.domSupported;\n\nvar localNativeListenerNames = function () {\n  var mouseHandlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n  var touchHandlerNames = ['touchstart', 'touchend', 'touchmove'];\n  var pointerEventNameMap = {\n    pointerdown: 1,\n    pointerup: 1,\n    pointermove: 1,\n    pointerout: 1\n  };\n  var pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) {\n    var nm = name.replace('mouse', 'pointer');\n    return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\n  });\n  return {\n    mouse: mouseHandlerNames,\n    touch: touchHandlerNames,\n    pointer: pointerHandlerNames\n  };\n}();\n\nvar globalNativeListenerNames = {\n  mouse: ['mousemove', 'mouseup'],\n  pointer: ['pointermove', 'pointerup']\n};\n\nfunction eventNameFix(name) {\n  return name === 'mousewheel' && env.browser.firefox ? 'DOMMouseScroll' : name;\n}\n\nfunction isPointerFromTouch(event) {\n  var pointerType = event.pointerType;\n  return pointerType === 'pen' || pointerType === 'touch';\n} // function useMSGuesture(handlerProxy, event) {\n//     return isPointerFromTouch(event) && !!handlerProxy._msGesture;\n// }\n// function onMSGestureChange(proxy, event) {\n//     if (event.translationX || event.translationY) {\n//         // mousemove is carried by MSGesture to reduce the sensitivity.\n//         proxy.handler.dispatchToElement(event.target, 'mousemove', event);\n//     }\n//     if (event.scale !== 1) {\n//         event.pinchX = event.offsetX;\n//         event.pinchY = event.offsetY;\n//         event.pinchScale = event.scale;\n//         proxy.handler.dispatchToElement(event.target, 'pinch', event);\n//     }\n// }\n\n/**\n * Prevent mouse event from being dispatched after Touch Events action\n * @see <https://github.com/deltakosh/handjs/blob/master/src/hand.base.js>\n * 1. Mobile browsers dispatch mouse events 300ms after touchend.\n * 2. Chrome for Android dispatch mousedown for long-touch about 650ms\n * Result: Blocking Mouse Events for 700ms.\n *\n * @param {DOMHandlerScope} scope\n */\n\n\nfunction setTouchTimer(scope) {\n  scope.touching = true;\n\n  if (scope.touchTimer != null) {\n    clearTimeout(scope.touchTimer);\n    scope.touchTimer = null;\n  }\n\n  scope.touchTimer = setTimeout(function () {\n    scope.touching = false;\n    scope.touchTimer = null;\n  }, 700);\n} // Mark touch, which is useful in distinguish touch and\n// mouse event in upper applicatoin.\n\n\nfunction markTouch(event) {\n  event && (event.zrByTouch = true);\n} // function markTriggeredFromLocal(event) {\n//     event && (event.__zrIsFromLocal = true);\n// }\n// function isTriggeredFromLocal(instance, event) {\n//     return !!(event && event.__zrIsFromLocal);\n// }\n\n\nfunction normalizeGlobalEvent(instance, event) {\n  // offsetX, offsetY still need to be calculated. They are necessary in the event\n  // handlers of the upper applications. Set `true` to force calculate them.\n  return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\n}\n/**\n * Detect whether the given el is in `painterRoot`.\n */\n\n\nfunction isLocalEl(instance, el) {\n  var elTmp = el;\n  var isLocal = false;\n\n  while (elTmp && elTmp.nodeType !== 9 && !(isLocal = elTmp.domBelongToZr || elTmp !== el && elTmp === instance.painterRoot)) {\n    elTmp = elTmp.parentNode;\n  }\n\n  return isLocal;\n}\n/**\n * Make a fake event but not change the original event,\n * becuase the global event probably be used by other\n * listeners not belonging to zrender.\n * @class\n */\n\n\nfunction FakeGlobalEvent(instance, event) {\n  this.type = event.type;\n  this.target = this.currentTarget = instance.dom;\n  this.pointerType = event.pointerType; // Necessray for the force calculation of zrX, zrY\n\n  this.clientX = event.clientX;\n  this.clientY = event.clientY; // Because we do not mount global listeners to touch events,\n  // we do not copy `targetTouches` and `changedTouches` here.\n}\n\nvar fakeGlobalEventProto = FakeGlobalEvent.prototype; // we make the default methods on the event do nothing,\n// otherwise it is dangerous. See more details in\n// [Drag outside] in `Handler.js`.\n\nfakeGlobalEventProto.stopPropagation = fakeGlobalEventProto.stopImmediatePropagation = fakeGlobalEventProto.preventDefault = zrUtil.noop;\n/**\n * Local DOM Handlers\n * @this {HandlerProxy}\n */\n\nvar localDOMHandlers = {\n  mousedown: function (event) {\n    event = normalizeEvent(this.dom, event);\n    this._mayPointerCapture = [event.zrX, event.zrY];\n    this.trigger('mousedown', event);\n  },\n  mousemove: function (event) {\n    event = normalizeEvent(this.dom, event);\n    var downPoint = this._mayPointerCapture;\n\n    if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\n      togglePointerCapture(this, true);\n    }\n\n    this.trigger('mousemove', event);\n  },\n  mouseup: function (event) {\n    event = normalizeEvent(this.dom, event);\n    togglePointerCapture(this, false);\n    this.trigger('mouseup', event);\n  },\n  mouseout: function (event) {\n    event = normalizeEvent(this.dom, event); // Similarly to the browser did on `document` and touch event,\n    // `globalout` will be delayed to final pointer cature release.\n\n    if (this._pointerCapturing) {\n      event.zrEventControl = 'no_globalout';\n    } // There might be some doms created by upper layer application\n    // at the same level of painter.getViewportRoot() (e.g., tooltip\n    // dom created by echarts), where 'globalout' event should not\n    // be triggered when mouse enters these doms. (But 'mouseout'\n    // should be triggered at the original hovered element as usual).\n\n\n    var element = event.toElement || event.relatedTarget;\n    event.zrIsToLocalDOM = isLocalEl(this, element);\n    this.trigger('mouseout', event);\n  },\n  touchstart: function (event) {\n    // Default mouse behaviour should not be disabled here.\n    // For example, page may needs to be slided.\n    event = normalizeEvent(this.dom, event);\n    markTouch(event);\n    this._lastTouchMoment = new Date();\n    this.handler.processGesture(event, 'start'); // For consistent event listener for both touch device and mouse device,\n    // we simulate \"mouseover-->mousedown\" in touch device. So we trigger\n    // `mousemove` here (to trigger `mouseover` inside), and then trigger\n    // `mousedown`.\n\n    localDOMHandlers.mousemove.call(this, event);\n    localDOMHandlers.mousedown.call(this, event);\n  },\n  touchmove: function (event) {\n    event = normalizeEvent(this.dom, event);\n    markTouch(event);\n    this.handler.processGesture(event, 'change'); // Mouse move should always be triggered no matter whether\n    // there is gestrue event, because mouse move and pinch may\n    // be used at the same time.\n\n    localDOMHandlers.mousemove.call(this, event);\n  },\n  touchend: function (event) {\n    event = normalizeEvent(this.dom, event);\n    markTouch(event);\n    this.handler.processGesture(event, 'end');\n    localDOMHandlers.mouseup.call(this, event); // Do not trigger `mouseout` here, in spite of `mousemove`(`mouseover`) is\n    // triggered in `touchstart`. This seems to be illogical, but by this mechanism,\n    // we can conveniently implement \"hover style\" in both PC and touch device just\n    // by listening to `mouseover` to add \"hover style\" and listening to `mouseout`\n    // to remove \"hover style\" on an element, without any additional code for\n    // compatibility. (`mouseout` will not be triggered in `touchend`, so \"hover\n    // style\" will remain for user view)\n    // click event should always be triggered no matter whether\n    // there is gestrue event. System click can not be prevented.\n\n    if (+new Date() - this._lastTouchMoment < TOUCH_CLICK_DELAY) {\n      localDOMHandlers.click.call(this, event);\n    }\n  },\n  pointerdown: function (event) {\n    localDOMHandlers.mousedown.call(this, event); // if (useMSGuesture(this, event)) {\n    //     this._msGesture.addPointer(event.pointerId);\n    // }\n  },\n  pointermove: function (event) {\n    // FIXME\n    // pointermove is so sensitive that it always triggered when\n    // tap(click) on touch screen, which affect some judgement in\n    // upper application. So, we dont support mousemove on MS touch\n    // device yet.\n    if (!isPointerFromTouch(event)) {\n      localDOMHandlers.mousemove.call(this, event);\n    }\n  },\n  pointerup: function (event) {\n    localDOMHandlers.mouseup.call(this, event);\n  },\n  pointerout: function (event) {\n    // pointerout will be triggered when tap on touch screen\n    // (IE11+/Edge on MS Surface) after click event triggered,\n    // which is inconsistent with the mousout behavior we defined\n    // in touchend. So we unify them.\n    // (check localDOMHandlers.touchend for detailed explanation)\n    if (!isPointerFromTouch(event)) {\n      localDOMHandlers.mouseout.call(this, event);\n    }\n  }\n};\n/**\n * Othere DOM UI Event handlers for zr dom.\n * @this {HandlerProxy}\n */\n\nzrUtil.each(['click', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n  localDOMHandlers[name] = function (event) {\n    event = normalizeEvent(this.dom, event);\n    this.trigger(name, event);\n  };\n});\n/**\n * DOM UI Event handlers for global page.\n *\n * [Caution]:\n * those handlers should both support in capture phase and bubble phase!\n *\n * @this {HandlerProxy}\n */\n\nvar globalDOMHandlers = {\n  pointermove: function (event) {\n    // FIXME\n    // pointermove is so sensitive that it always triggered when\n    // tap(click) on touch screen, which affect some judgement in\n    // upper application. So, we dont support mousemove on MS touch\n    // device yet.\n    if (!isPointerFromTouch(event)) {\n      globalDOMHandlers.mousemove.call(this, event);\n    }\n  },\n  pointerup: function (event) {\n    globalDOMHandlers.mouseup.call(this, event);\n  },\n  mousemove: function (event) {\n    this.trigger('mousemove', event);\n  },\n  mouseup: function (event) {\n    var pointerCaptureReleasing = this._pointerCapturing;\n    togglePointerCapture(this, false);\n    this.trigger('mouseup', event);\n\n    if (pointerCaptureReleasing) {\n      event.zrEventControl = 'only_globalout';\n      this.trigger('mouseout', event);\n    }\n  }\n};\n/**\n * @param {HandlerProxy} instance\n * @param {DOMHandlerScope} scope\n */\n\nfunction mountLocalDOMEventListeners(instance, scope) {\n  var domHandlers = scope.domHandlers;\n\n  if (env.pointerEventsSupported) {\n    // Only IE11+/Edge\n    // 1. On devices that both enable touch and mouse (e.g., MS Surface and lenovo X240),\n    // IE11+/Edge do not trigger touch event, but trigger pointer event and mouse event\n    // at the same time.\n    // 2. On MS Surface, it probablely only trigger mousedown but no mouseup when tap on\n    // screen, which do not occurs in pointer event.\n    // So we use pointer event to both detect touch gesture and mouse behavior.\n    zrUtil.each(localNativeListenerNames.pointer, function (nativeEventName) {\n      mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n        // markTriggeredFromLocal(event);\n        domHandlers[nativeEventName].call(instance, event);\n      });\n    }); // FIXME\n    // Note: MS Gesture require CSS touch-action set. But touch-action is not reliable,\n    // which does not prevent defuault behavior occasionally (which may cause view port\n    // zoomed in but use can not zoom it back). And event.preventDefault() does not work.\n    // So we have to not to use MSGesture and not to support touchmove and pinch on MS\n    // touch screen. And we only support click behavior on MS touch screen now.\n    // MS Gesture Event is only supported on IE11+/Edge and on Windows 8+.\n    // We dont support touch on IE on win7.\n    // See <https://msdn.microsoft.com/en-us/library/dn433243(v=vs.85).aspx>\n    // if (typeof MSGesture === 'function') {\n    //     (this._msGesture = new MSGesture()).target = dom; // jshint ignore:line\n    //     dom.addEventListener('MSGestureChange', onMSGestureChange);\n    // }\n  } else {\n    if (env.touchEventsSupported) {\n      zrUtil.each(localNativeListenerNames.touch, function (nativeEventName) {\n        mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n          // markTriggeredFromLocal(event);\n          domHandlers[nativeEventName].call(instance, event);\n          setTouchTimer(scope);\n        });\n      }); // Handler of 'mouseout' event is needed in touch mode, which will be mounted below.\n      // addEventListener(root, 'mouseout', this._mouseoutHandler);\n    } // 1. Considering some devices that both enable touch and mouse event (like on MS Surface\n    // and lenovo X240, @see #2350), we make mouse event be always listened, otherwise\n    // mouse event can not be handle in those devices.\n    // 2. On MS Surface, Chrome will trigger both touch event and mouse event. How to prevent\n    // mouseevent after touch event triggered, see `setTouchTimer`.\n\n\n    zrUtil.each(localNativeListenerNames.mouse, function (nativeEventName) {\n      mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n        event = getNativeEvent(event);\n\n        if (!scope.touching) {\n          // markTriggeredFromLocal(event);\n          domHandlers[nativeEventName].call(instance, event);\n        }\n      });\n    });\n  }\n}\n/**\n * @param {HandlerProxy} instance\n * @param {DOMHandlerScope} scope\n */\n\n\nfunction mountGlobalDOMEventListeners(instance, scope) {\n  // Only IE11+/Edge. See the comment in `mountLocalDOMEventListeners`.\n  if (env.pointerEventsSupported) {\n    zrUtil.each(globalNativeListenerNames.pointer, mount);\n  } // Touch event has implemented \"drag outside\" so we do not mount global listener for touch event.\n  // (see https://www.w3.org/TR/touch-events/#the-touchmove-event)\n  // We do not consider \"both-support-touch-and-mouse device\" for this feature (see the comment of\n  // `mountLocalDOMEventListeners`) to avoid bugs util some requirements come.\n  else if (!env.touchEventsSupported) {\n      zrUtil.each(globalNativeListenerNames.mouse, mount);\n    }\n\n  function mount(nativeEventName) {\n    function nativeEventListener(event) {\n      event = getNativeEvent(event); // See the reason in [Drag outside] in `Handler.js`\n      // This checking supports both `useCapture` or not.\n      // PENDING: if there is performance issue in some devices,\n      // we probably can not use `useCapture` and change a easier\n      // to judes whether local (mark).\n\n      if (!isLocalEl(instance, event.target)) {\n        event = normalizeGlobalEvent(instance, event);\n        scope.domHandlers[nativeEventName].call(instance, event);\n      }\n    }\n\n    mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, {\n      capture: true\n    } // See [Drag Outside] in `Handler.js`\n    );\n  }\n}\n\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\n  scope.mounted[nativeEventName] = listener;\n  scope.listenerOpts[nativeEventName] = opt;\n  addEventListener(scope.domTarget, eventNameFix(nativeEventName), listener, opt);\n}\n\nfunction unmountDOMEventListeners(scope) {\n  var mounted = scope.mounted;\n\n  for (var nativeEventName in mounted) {\n    if (mounted.hasOwnProperty(nativeEventName)) {\n      removeEventListener(scope.domTarget, eventNameFix(nativeEventName), mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\n    }\n  }\n\n  scope.mounted = {};\n}\n/**\n * See [Drag Outside] in `Handler.js`.\n * @implement\n * @param {boolean} isPointerCapturing Should never be `null`/`undefined`.\n *        `true`: start to capture pointer if it is not capturing.\n *        `false`: end the capture if it is capturing.\n */\n\n\nfunction togglePointerCapture(instance, isPointerCapturing) {\n  instance._mayPointerCapture = null;\n\n  if (globalEventSupported && instance._pointerCapturing ^ isPointerCapturing) {\n    instance._pointerCapturing = isPointerCapturing;\n    var globalHandlerScope = instance._globalHandlerScope;\n    isPointerCapturing ? mountGlobalDOMEventListeners(instance, globalHandlerScope) : unmountDOMEventListeners(globalHandlerScope);\n  }\n}\n/**\n * @inner\n * @class\n */\n\n\nfunction DOMHandlerScope(domTarget, domHandlers) {\n  this.domTarget = domTarget;\n  this.domHandlers = domHandlers; // Key: eventName, value: mounted handler funcitons.\n  // Used for unmount.\n\n  this.mounted = {};\n  this.listenerOpts = {};\n  this.touchTimer = null;\n  this.touching = false;\n}\n/**\n * @public\n * @class\n */\n\n\nfunction HandlerDomProxy(dom, painterRoot) {\n  Eventful.call(this);\n  this.dom = dom;\n  this.painterRoot = painterRoot;\n  this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\n\n  if (globalEventSupported) {\n    this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\n  }\n  /**\n   * @type {boolean}\n   */\n\n\n  this._pointerCapturing = false;\n  /**\n   * @type {Array.<number>} [x, y] or null.\n   */\n\n  this._mayPointerCapture = null;\n  mountLocalDOMEventListeners(this, this._localHandlerScope);\n}\n\nvar handlerDomProxyProto = HandlerDomProxy.prototype;\n\nhandlerDomProxyProto.dispose = function () {\n  unmountDOMEventListeners(this._localHandlerScope);\n\n  if (globalEventSupported) {\n    unmountDOMEventListeners(this._globalHandlerScope);\n  }\n};\n\nhandlerDomProxyProto.setCursor = function (cursorStyle) {\n  this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n};\n\nzrUtil.mixin(HandlerDomProxy, Eventful);\nvar _default = HandlerDomProxy;\nmodule.exports = _default;\n\n/***/ }),\n/* 1013 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = __webpack_require__(212);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getLineStyle = makeStyleMapper([['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n  getLineStyle: function (excludes) {\n    var style = getLineStyle(this, excludes); // Always set lineDash whether dashed, otherwise we can not\n    // erase the previous style when assigning to el.style.\n\n    style.lineDash = this.getLineDash(style.lineWidth);\n    return style;\n  },\n  getLineDash: function (lineWidth) {\n    if (lineWidth == null) {\n      lineWidth = 1;\n    }\n\n    var lineType = this.get('type');\n    var dotSize = Math.max(lineWidth, 2);\n    var dashSize = lineWidth * 4;\n    return lineType === 'solid' || lineType == null ? // Use `false` but not `null` for the solid line here, because `null` might be\n    // ignored when assigning to `el.style`. e.g., when setting `lineStyle.type` as\n    // `'dashed'` and `emphasis.lineStyle.type` as `'solid'` in graph series, the\n    // `lineDash` gotten form the latter one is not able to erase that from the former\n    // one if using `null` here according to the emhpsis strategy in `util/graphic.js`.\n    false : lineType === 'dashed' ? [dashSize, dashSize] : [dotSize, dotSize];\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1014 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = __webpack_require__(212);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getAreaStyle = makeStyleMapper([['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor']]);\nvar _default = {\n  getAreaStyle: function (excludes, includes) {\n    return getAreaStyle(this, excludes, includes);\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1015 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar textContain = __webpack_require__(108);\n\nvar graphicUtil = __webpack_require__(23);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PATH_COLOR = ['textStyle', 'color'];\nvar _default = {\n  /**\n   * Get color property or get color from option.textStyle.color\n   * @param {boolean} [isEmphasis]\n   * @return {string}\n   */\n  getTextColor: function (isEmphasis) {\n    var ecModel = this.ecModel;\n    return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);\n  },\n\n  /**\n   * Create font string from fontStyle, fontWeight, fontSize, fontFamily\n   * @return {string}\n   */\n  getFont: function () {\n    return graphicUtil.getFont({\n      fontStyle: this.getShallow('fontStyle'),\n      fontWeight: this.getShallow('fontWeight'),\n      fontSize: this.getShallow('fontSize'),\n      fontFamily: this.getShallow('fontFamily')\n    }, this.ecModel);\n  },\n  getTextRect: function (text) {\n    return textContain.getBoundingRect(text, this.getFont(), this.getShallow('align'), this.getShallow('verticalAlign') || this.getShallow('baseline'), this.getShallow('padding'), this.getShallow('lineHeight'), this.getShallow('rich'), this.getShallow('truncateText'));\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1016 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar PathProxy = __webpack_require__(213);\n\nvar line = __webpack_require__(558);\n\nvar cubic = __webpack_require__(1017);\n\nvar quadratic = __webpack_require__(559);\n\nvar arc = __webpack_require__(1018);\n\nvar _util = __webpack_require__(560);\n\nvar normalizeRadian = _util.normalizeRadian;\n\nvar curve = __webpack_require__(152);\n\nvar windingLine = __webpack_require__(561);\n\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\n\nfunction isAroundEqual(a, b) {\n  return Math.abs(a - b) < EPSILON;\n} // 临时数组\n\n\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\n\nfunction swapExtrema() {\n  var tmp = extrema[0];\n  extrema[0] = extrema[1];\n  extrema[1] = tmp;\n}\n\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n  // Quick reject\n  if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) {\n    return 0;\n  }\n\n  var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n\n  if (nRoots === 0) {\n    return 0;\n  } else {\n    var w = 0;\n    var nExtrema = -1;\n    var y0_;\n    var y1_;\n\n    for (var i = 0; i < nRoots; i++) {\n      var t = roots[i]; // Avoid winding error when intersection point is the connect point of two line of polygon\n\n      var unit = t === 0 || t === 1 ? 0.5 : 1;\n      var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n\n      if (x_ < x) {\n        // Quick reject\n        continue;\n      }\n\n      if (nExtrema < 0) {\n        nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n\n        if (extrema[1] < extrema[0] && nExtrema > 1) {\n          swapExtrema();\n        }\n\n        y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n\n        if (nExtrema > 1) {\n          y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n        }\n      }\n\n      if (nExtrema === 2) {\n        // 分成三段单调函数\n        if (t < extrema[0]) {\n          w += y0_ < y0 ? unit : -unit;\n        } else if (t < extrema[1]) {\n          w += y1_ < y0_ ? unit : -unit;\n        } else {\n          w += y3 < y1_ ? unit : -unit;\n        }\n      } else {\n        // 分成两段单调函数\n        if (t < extrema[0]) {\n          w += y0_ < y0 ? unit : -unit;\n        } else {\n          w += y3 < y0_ ? unit : -unit;\n        }\n      }\n    }\n\n    return w;\n  }\n}\n\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n  // Quick reject\n  if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) {\n    return 0;\n  }\n\n  var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n\n  if (nRoots === 0) {\n    return 0;\n  } else {\n    var t = curve.quadraticExtremum(y0, y1, y2);\n\n    if (t >= 0 && t <= 1) {\n      var w = 0;\n      var y_ = curve.quadraticAt(y0, y1, y2, t);\n\n      for (var i = 0; i < nRoots; i++) {\n        // Remove one endpoint.\n        var unit = roots[i] === 0 || roots[i] === 1 ? 0.5 : 1;\n        var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n\n        if (x_ < x) {\n          // Quick reject\n          continue;\n        }\n\n        if (roots[i] < t) {\n          w += y_ < y0 ? unit : -unit;\n        } else {\n          w += y2 < y_ ? unit : -unit;\n        }\n      }\n\n      return w;\n    } else {\n      // Remove one endpoint.\n      var unit = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1;\n      var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n\n      if (x_ < x) {\n        // Quick reject\n        return 0;\n      }\n\n      return y2 < y0 ? unit : -unit;\n    }\n  }\n} // TODO\n// Arc 旋转\n\n\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n  y -= cy;\n\n  if (y > r || y < -r) {\n    return 0;\n  }\n\n  var tmp = Math.sqrt(r * r - y * y);\n  roots[0] = -tmp;\n  roots[1] = tmp;\n  var diff = Math.abs(startAngle - endAngle);\n\n  if (diff < 1e-4) {\n    return 0;\n  }\n\n  if (diff % PI2 < 1e-4) {\n    // Is a circle\n    startAngle = 0;\n    endAngle = PI2;\n    var dir = anticlockwise ? 1 : -1;\n\n    if (x >= roots[0] + cx && x <= roots[1] + cx) {\n      return dir;\n    } else {\n      return 0;\n    }\n  }\n\n  if (anticlockwise) {\n    var tmp = startAngle;\n    startAngle = normalizeRadian(endAngle);\n    endAngle = normalizeRadian(tmp);\n  } else {\n    startAngle = normalizeRadian(startAngle);\n    endAngle = normalizeRadian(endAngle);\n  }\n\n  if (startAngle > endAngle) {\n    endAngle += PI2;\n  }\n\n  var w = 0;\n\n  for (var i = 0; i < 2; i++) {\n    var x_ = roots[i];\n\n    if (x_ + cx > x) {\n      var angle = Math.atan2(y, x_);\n      var dir = anticlockwise ? 1 : -1;\n\n      if (angle < 0) {\n        angle = PI2 + angle;\n      }\n\n      if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n        if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n          dir = -dir;\n        }\n\n        w += dir;\n      }\n    }\n  }\n\n  return w;\n}\n\nfunction containPath(data, lineWidth, isStroke, x, y) {\n  var w = 0;\n  var xi = 0;\n  var yi = 0;\n  var x0 = 0;\n  var y0 = 0;\n\n  for (var i = 0; i < data.length;) {\n    var cmd = data[i++]; // Begin a new subpath\n\n    if (cmd === CMD.M && i > 1) {\n      // Close previous subpath\n      if (!isStroke) {\n        w += windingLine(xi, yi, x0, y0, x, y);\n      } // 如果被任何一个 subpath 包含\n      // if (w !== 0) {\n      //     return true;\n      // }\n\n    }\n\n    if (i === 1) {\n      // 如果第一个命令是 L, C, Q\n      // 则 previous point 同绘制命令的第一个 point\n      //\n      // 第一个命令为 Arc 的情况下会在后面特殊处理\n      xi = data[i];\n      yi = data[i + 1];\n      x0 = xi;\n      y0 = yi;\n    }\n\n    switch (cmd) {\n      case CMD.M:\n        // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n        // 在 closePath 的时候使用\n        x0 = data[i++];\n        y0 = data[i++];\n        xi = x0;\n        yi = y0;\n        break;\n\n      case CMD.L:\n        if (isStroke) {\n          if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n            return true;\n          }\n        } else {\n          // NOTE 在第一个命令为 L, C, Q 的时候会计算出 NaN\n          w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n        }\n\n        xi = data[i++];\n        yi = data[i++];\n        break;\n\n      case CMD.C:\n        if (isStroke) {\n          if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n            return true;\n          }\n        } else {\n          w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n        }\n\n        xi = data[i++];\n        yi = data[i++];\n        break;\n\n      case CMD.Q:\n        if (isStroke) {\n          if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n            return true;\n          }\n        } else {\n          w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n        }\n\n        xi = data[i++];\n        yi = data[i++];\n        break;\n\n      case CMD.A:\n        // TODO Arc 判断的开销比较大\n        var cx = data[i++];\n        var cy = data[i++];\n        var rx = data[i++];\n        var ry = data[i++];\n        var theta = data[i++];\n        var dTheta = data[i++]; // TODO Arc 旋转\n\n        i += 1;\n        var anticlockwise = 1 - data[i++];\n        var x1 = Math.cos(theta) * rx + cx;\n        var y1 = Math.sin(theta) * ry + cy; // 不是直接使用 arc 命令\n\n        if (i > 1) {\n          w += windingLine(xi, yi, x1, y1, x, y);\n        } else {\n          // 第一个命令起点还未定义\n          x0 = x1;\n          y0 = y1;\n        } // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n\n\n        var _x = (x - cx) * ry / rx + cx;\n\n        if (isStroke) {\n          if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n            return true;\n          }\n        } else {\n          w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n        }\n\n        xi = Math.cos(theta + dTheta) * rx + cx;\n        yi = Math.sin(theta + dTheta) * ry + cy;\n        break;\n\n      case CMD.R:\n        x0 = xi = data[i++];\n        y0 = yi = data[i++];\n        var width = data[i++];\n        var height = data[i++];\n        var x1 = x0 + width;\n        var y1 = y0 + height;\n\n        if (isStroke) {\n          if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y) || line.containStroke(x1, y0, x1, y1, lineWidth, x, y) || line.containStroke(x1, y1, x0, y1, lineWidth, x, y) || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n            return true;\n          }\n        } else {\n          // FIXME Clockwise ?\n          w += windingLine(x1, y0, x1, y1, x, y);\n          w += windingLine(x0, y1, x0, y0, x, y);\n        }\n\n        break;\n\n      case CMD.Z:\n        if (isStroke) {\n          if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n            return true;\n          }\n        } else {\n          // Close a subpath\n          w += windingLine(xi, yi, x0, y0, x, y); // 如果被任何一个 subpath 包含\n          // FIXME subpaths may overlap\n          // if (w !== 0) {\n          //     return true;\n          // }\n        }\n\n        xi = x0;\n        yi = y0;\n        break;\n    }\n  }\n\n  if (!isStroke && !isAroundEqual(yi, y0)) {\n    w += windingLine(xi, yi, x0, y0, x, y) || 0;\n  }\n\n  return w !== 0;\n}\n\nfunction contain(pathData, x, y) {\n  return containPath(pathData, 0, false, x, y);\n}\n\nfunction containStroke(pathData, lineWidth, x, y) {\n  return containPath(pathData, lineWidth, true, x, y);\n}\n\nexports.contain = contain;\nexports.containStroke = containStroke;\n\n/***/ }),\n/* 1017 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar curve = __webpack_require__(152);\n\n/**\n * 三次贝塞尔曲线描边包含判断\n * @param  {number}  x0\n * @param  {number}  y0\n * @param  {number}  x1\n * @param  {number}  y1\n * @param  {number}  x2\n * @param  {number}  y2\n * @param  {number}  x3\n * @param  {number}  y3\n * @param  {number}  lineWidth\n * @param  {number}  x\n * @param  {number}  y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n  if (lineWidth === 0) {\n    return false;\n  }\n\n  var _l = lineWidth; // Quick reject\n\n  if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) {\n    return false;\n  }\n\n  var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n  return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;\n\n/***/ }),\n/* 1018 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _util = __webpack_require__(560);\n\nvar normalizeRadian = _util.normalizeRadian;\nvar PI2 = Math.PI * 2;\n/**\n * 圆弧描边包含判断\n * @param  {number}  cx\n * @param  {number}  cy\n * @param  {number}  r\n * @param  {number}  startAngle\n * @param  {number}  endAngle\n * @param  {boolean}  anticlockwise\n * @param  {number} lineWidth\n * @param  {number}  x\n * @param  {number}  y\n * @return {Boolean}\n */\n\nfunction containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\n  if (lineWidth === 0) {\n    return false;\n  }\n\n  var _l = lineWidth;\n  x -= cx;\n  y -= cy;\n  var d = Math.sqrt(x * x + y * y);\n\n  if (d - _l > r || d + _l < r) {\n    return false;\n  }\n\n  if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n    // Is a circle\n    return true;\n  }\n\n  if (anticlockwise) {\n    var tmp = startAngle;\n    startAngle = normalizeRadian(endAngle);\n    endAngle = normalizeRadian(tmp);\n  } else {\n    startAngle = normalizeRadian(startAngle);\n    endAngle = normalizeRadian(endAngle);\n  }\n\n  if (startAngle > endAngle) {\n    endAngle += PI2;\n  }\n\n  var angle = Math.atan2(y, x);\n\n  if (angle < 0) {\n    angle += PI2;\n  }\n\n  return angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle;\n}\n\nexports.containStroke = containStroke;\n\n/***/ }),\n/* 1019 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar PathProxy = __webpack_require__(213);\n\nvar _vector = __webpack_require__(56);\n\nvar v2ApplyTransform = _vector.applyTransform;\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\n\nfunction _default(path, m) {\n  var data = path.data;\n  var cmd;\n  var nPoint;\n  var i;\n  var j;\n  var k;\n  var p;\n  var M = CMD.M;\n  var C = CMD.C;\n  var L = CMD.L;\n  var R = CMD.R;\n  var A = CMD.A;\n  var Q = CMD.Q;\n\n  for (i = 0, j = 0; i < data.length;) {\n    cmd = data[i++];\n    j = i;\n    nPoint = 0;\n\n    switch (cmd) {\n      case M:\n        nPoint = 1;\n        break;\n\n      case L:\n        nPoint = 1;\n        break;\n\n      case C:\n        nPoint = 3;\n        break;\n\n      case Q:\n        nPoint = 2;\n        break;\n\n      case A:\n        var x = m[4];\n        var y = m[5];\n        var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n        var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n        var angle = mathAtan2(-m[1] / sy, m[0] / sx); // cx\n\n        data[i] *= sx;\n        data[i++] += x; // cy\n\n        data[i] *= sy;\n        data[i++] += y; // Scale rx and ry\n        // FIXME Assume psi is 0 here\n\n        data[i++] *= sx;\n        data[i++] *= sy; // Start angle\n\n        data[i++] += angle; // end angle\n\n        data[i++] += angle; // FIXME psi\n\n        i += 2;\n        j = i;\n        break;\n\n      case R:\n        // x0, y0\n        p[0] = data[i++];\n        p[1] = data[i++];\n        v2ApplyTransform(p, p, m);\n        data[j++] = p[0];\n        data[j++] = p[1]; // x1, y1\n\n        p[0] += data[i++];\n        p[1] += data[i++];\n        v2ApplyTransform(p, p, m);\n        data[j++] = p[0];\n        data[j++] = p[1];\n    }\n\n    for (k = 0; k < nPoint; k++) {\n      var p = points[k];\n      p[0] = data[i++];\n      p[1] = data[i++];\n      v2ApplyTransform(p, p, m); // Write back\n\n      data[j++] = p[0];\n      data[j++] = p[1];\n    }\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1020 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\nvar fixClipWithShadow = __webpack_require__(563);\n\n/**\n * 扇形\n * @module zrender/graphic/shape/Sector\n */\nvar _default = Path.extend({\n  type: 'sector',\n  shape: {\n    cx: 0,\n    cy: 0,\n    r0: 0,\n    r: 0,\n    startAngle: 0,\n    endAngle: Math.PI * 2,\n    clockwise: true\n  },\n  brush: fixClipWithShadow(Path.prototype.brush),\n  buildPath: function (ctx, shape) {\n    var x = shape.cx;\n    var y = shape.cy;\n    var r0 = Math.max(shape.r0 || 0, 0);\n    var r = Math.max(shape.r, 0);\n    var startAngle = shape.startAngle;\n    var endAngle = shape.endAngle;\n    var clockwise = shape.clockwise;\n    var unitX = Math.cos(startAngle);\n    var unitY = Math.sin(startAngle);\n    ctx.moveTo(unitX * r0 + x, unitY * r0 + y);\n    ctx.lineTo(unitX * r + x, unitY * r + y);\n    ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n    ctx.lineTo(Math.cos(endAngle) * r0 + x, Math.sin(endAngle) * r0 + y);\n\n    if (r0 !== 0) {\n      ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n    }\n\n    ctx.closePath();\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1021 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\n/**\n * 圆环\n * @module zrender/graphic/shape/Ring\n */\nvar _default = Path.extend({\n  type: 'ring',\n  shape: {\n    cx: 0,\n    cy: 0,\n    r: 0,\n    r0: 0\n  },\n  buildPath: function (ctx, shape) {\n    var x = shape.cx;\n    var y = shape.cy;\n    var PI2 = Math.PI * 2;\n    ctx.moveTo(x + shape.r, y);\n    ctx.arc(x, y, shape.r, 0, PI2, false);\n    ctx.moveTo(x + shape.r0, y);\n    ctx.arc(x, y, shape.r0, 0, PI2, true);\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1022 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _vector = __webpack_require__(56);\n\nvar v2Distance = _vector.distance;\n\n/**\n * Catmull-Rom spline 插值折线\n * @module zrender/shape/util/smoothSpline\n * @author pissang (https://www.github.com/pissang)\n *         Kener (@Kener-林峰, kener.linfeng@gmail.com)\n *         errorrik (errorrik@gmail.com)\n */\n\n/**\n * @inner\n */\nfunction interpolate(p0, p1, p2, p3, t, t2, t3) {\n  var v0 = (p2 - p0) * 0.5;\n  var v1 = (p3 - p1) * 0.5;\n  return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n/**\n * @alias module:zrender/shape/util/smoothSpline\n * @param {Array} points 线段顶点数组\n * @param {boolean} isLoop\n * @return {Array}\n */\n\n\nfunction _default(points, isLoop) {\n  var len = points.length;\n  var ret = [];\n  var distance = 0;\n\n  for (var i = 1; i < len; i++) {\n    distance += v2Distance(points[i - 1], points[i]);\n  }\n\n  var segs = distance / 2;\n  segs = segs < len ? len : segs;\n\n  for (var i = 0; i < segs; i++) {\n    var pos = i / (segs - 1) * (isLoop ? len : len - 1);\n    var idx = Math.floor(pos);\n    var w = pos - idx;\n    var p0;\n    var p1 = points[idx % len];\n    var p2;\n    var p3;\n\n    if (!isLoop) {\n      p0 = points[idx === 0 ? idx : idx - 1];\n      p2 = points[idx > len - 2 ? len - 1 : idx + 1];\n      p3 = points[idx > len - 3 ? len - 1 : idx + 2];\n    } else {\n      p0 = points[(idx - 1 + len) % len];\n      p2 = points[(idx + 1) % len];\n      p3 = points[(idx + 2) % len];\n    }\n\n    var w2 = w * w;\n    var w3 = w * w2;\n    ret.push([interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3), interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)]);\n  }\n\n  return ret;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1023 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _vector = __webpack_require__(56);\n\nvar v2Min = _vector.min;\nvar v2Max = _vector.max;\nvar v2Scale = _vector.scale;\nvar v2Distance = _vector.distance;\nvar v2Add = _vector.add;\nvar v2Clone = _vector.clone;\nvar v2Sub = _vector.sub;\n\n/**\n * 贝塞尔平滑曲线\n * @module zrender/shape/util/smoothBezier\n * @author pissang (https://www.github.com/pissang)\n *         Kener (@Kener-林峰, kener.linfeng@gmail.com)\n *         errorrik (errorrik@gmail.com)\n */\n\n/**\n * 贝塞尔平滑曲线\n * @alias module:zrender/shape/util/smoothBezier\n * @param {Array} points 线段顶点数组\n * @param {number} smooth 平滑等级, 0-1\n * @param {boolean} isLoop\n * @param {Array} constraint 将计算出来的控制点约束在一个包围盒内\n *                           比如 [[0, 0], [100, 100]], 这个包围盒会与\n *                           整个折线的包围盒做一个并集用来约束控制点。\n * @param {Array} 计算出来的控制点数组\n */\nfunction _default(points, smooth, isLoop, constraint) {\n  var cps = [];\n  var v = [];\n  var v1 = [];\n  var v2 = [];\n  var prevPoint;\n  var nextPoint;\n  var min;\n  var max;\n\n  if (constraint) {\n    min = [Infinity, Infinity];\n    max = [-Infinity, -Infinity];\n\n    for (var i = 0, len = points.length; i < len; i++) {\n      v2Min(min, min, points[i]);\n      v2Max(max, max, points[i]);\n    } // 与指定的包围盒做并集\n\n\n    v2Min(min, min, constraint[0]);\n    v2Max(max, max, constraint[1]);\n  }\n\n  for (var i = 0, len = points.length; i < len; i++) {\n    var point = points[i];\n\n    if (isLoop) {\n      prevPoint = points[i ? i - 1 : len - 1];\n      nextPoint = points[(i + 1) % len];\n    } else {\n      if (i === 0 || i === len - 1) {\n        cps.push(v2Clone(points[i]));\n        continue;\n      } else {\n        prevPoint = points[i - 1];\n        nextPoint = points[i + 1];\n      }\n    }\n\n    v2Sub(v, nextPoint, prevPoint); // use degree to scale the handle length\n\n    v2Scale(v, v, smooth);\n    var d0 = v2Distance(point, prevPoint);\n    var d1 = v2Distance(point, nextPoint);\n    var sum = d0 + d1;\n\n    if (sum !== 0) {\n      d0 /= sum;\n      d1 /= sum;\n    }\n\n    v2Scale(v1, v, -d0);\n    v2Scale(v2, v, d1);\n    var cp0 = v2Add([], point, v1);\n    var cp1 = v2Add([], point, v2);\n\n    if (constraint) {\n      v2Max(cp0, cp0, min);\n      v2Min(cp0, cp0, max);\n      v2Max(cp1, cp1, min);\n      v2Min(cp1, cp1, max);\n    }\n\n    cps.push(cp0);\n    cps.push(cp1);\n  }\n\n  if (isLoop) {\n    cps.push(cps.shift());\n  }\n\n  return cps;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1024 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\nvar vec2 = __webpack_require__(56);\n\nvar _curve = __webpack_require__(152);\n\nvar quadraticSubdivide = _curve.quadraticSubdivide;\nvar cubicSubdivide = _curve.cubicSubdivide;\nvar quadraticAt = _curve.quadraticAt;\nvar cubicAt = _curve.cubicAt;\nvar quadraticDerivativeAt = _curve.quadraticDerivativeAt;\nvar cubicDerivativeAt = _curve.cubicDerivativeAt;\n\n/**\n * 贝塞尔曲线\n * @module zrender/shape/BezierCurve\n */\nvar out = [];\n\nfunction someVectorAt(shape, t, isTangent) {\n  var cpx2 = shape.cpx2;\n  var cpy2 = shape.cpy2;\n\n  if (cpx2 === null || cpy2 === null) {\n    return [(isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t), (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)];\n  } else {\n    return [(isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t), (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)];\n  }\n}\n\nvar _default = Path.extend({\n  type: 'bezier-curve',\n  shape: {\n    x1: 0,\n    y1: 0,\n    x2: 0,\n    y2: 0,\n    cpx1: 0,\n    cpy1: 0,\n    // cpx2: 0,\n    // cpy2: 0\n    // Curve show percent, for animating\n    percent: 1\n  },\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  buildPath: function (ctx, shape) {\n    var x1 = shape.x1;\n    var y1 = shape.y1;\n    var x2 = shape.x2;\n    var y2 = shape.y2;\n    var cpx1 = shape.cpx1;\n    var cpy1 = shape.cpy1;\n    var cpx2 = shape.cpx2;\n    var cpy2 = shape.cpy2;\n    var percent = shape.percent;\n\n    if (percent === 0) {\n      return;\n    }\n\n    ctx.moveTo(x1, y1);\n\n    if (cpx2 == null || cpy2 == null) {\n      if (percent < 1) {\n        quadraticSubdivide(x1, cpx1, x2, percent, out);\n        cpx1 = out[1];\n        x2 = out[2];\n        quadraticSubdivide(y1, cpy1, y2, percent, out);\n        cpy1 = out[1];\n        y2 = out[2];\n      }\n\n      ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\n    } else {\n      if (percent < 1) {\n        cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\n        cpx1 = out[1];\n        cpx2 = out[2];\n        x2 = out[3];\n        cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\n        cpy1 = out[1];\n        cpy2 = out[2];\n        y2 = out[3];\n      }\n\n      ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n    }\n  },\n\n  /**\n   * Get point at percent\n   * @param  {number} t\n   * @return {Array.<number>}\n   */\n  pointAt: function (t) {\n    return someVectorAt(this.shape, t, false);\n  },\n\n  /**\n   * Get tangent at percent\n   * @param  {number} t\n   * @return {Array.<number>}\n   */\n  tangentAt: function (t) {\n    var p = someVectorAt(this.shape, t, true);\n    return vec2.normalize(p, p);\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1025 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\n/**\n * 圆弧\n * @module zrender/graphic/shape/Arc\n */\nvar _default = Path.extend({\n  type: 'arc',\n  shape: {\n    cx: 0,\n    cy: 0,\n    r: 0,\n    startAngle: 0,\n    endAngle: Math.PI * 2,\n    clockwise: true\n  },\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  buildPath: function (ctx, shape) {\n    var x = shape.cx;\n    var y = shape.cy;\n    var r = Math.max(shape.r, 0);\n    var startAngle = shape.startAngle;\n    var endAngle = shape.endAngle;\n    var clockwise = shape.clockwise;\n    var unitX = Math.cos(startAngle);\n    var unitY = Math.sin(startAngle);\n    ctx.moveTo(unitX * r + x, unitY * r + y);\n    ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1026 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\n// CompoundPath to improve performance\nvar _default = Path.extend({\n  type: 'compound',\n  shape: {\n    paths: null\n  },\n  _updatePathDirty: function () {\n    var dirtyPath = this.__dirtyPath;\n    var paths = this.shape.paths;\n\n    for (var i = 0; i < paths.length; i++) {\n      // Mark as dirty if any subpath is dirty\n      dirtyPath = dirtyPath || paths[i].__dirtyPath;\n    }\n\n    this.__dirtyPath = dirtyPath;\n    this.__dirty = this.__dirty || dirtyPath;\n  },\n  beforeBrush: function () {\n    this._updatePathDirty();\n\n    var paths = this.shape.paths || [];\n    var scale = this.getGlobalScale(); // Update path scale\n\n    for (var i = 0; i < paths.length; i++) {\n      if (!paths[i].path) {\n        paths[i].createPathProxy();\n      }\n\n      paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n    }\n  },\n  buildPath: function (ctx, shape) {\n    var paths = shape.paths || [];\n\n    for (var i = 0; i < paths.length; i++) {\n      paths[i].buildPath(ctx, paths[i].shape, true);\n    }\n  },\n  afterBrush: function () {\n    var paths = this.shape.paths || [];\n\n    for (var i = 0; i < paths.length; i++) {\n      paths[i].__dirtyPath = false;\n    }\n  },\n  getBoundingRect: function () {\n    this._updatePathDirty();\n\n    return Path.prototype.getBoundingRect.call(this);\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1027 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar zrUtil = __webpack_require__(2);\n\nvar Gradient = __webpack_require__(327);\n\n/**\n * x, y, r are all percent from 0 to 1\n * @param {number} [x=0.5]\n * @param {number} [y=0.5]\n * @param {number} [r=0.5]\n * @param {Array.<Object>} [colorStops]\n * @param {boolean} [globalCoord=false]\n */\nvar RadialGradient = function (x, y, r, colorStops, globalCoord) {\n  // Should do nothing more in this constructor. Because gradient can be\n  // declard by `color: {type: 'radial', colorStops: ...}`, where\n  // this constructor will not be called.\n  this.x = x == null ? 0.5 : x;\n  this.y = y == null ? 0.5 : y;\n  this.r = r == null ? 0.5 : r; // Can be cloned\n\n  this.type = 'radial'; // If use global coord\n\n  this.global = globalCoord || false;\n  Gradient.call(this, colorStops);\n};\n\nRadialGradient.prototype = {\n  constructor: RadialGradient\n};\nzrUtil.inherits(RadialGradient, Gradient);\nvar _default = RadialGradient;\nmodule.exports = _default;\n\n/***/ }),\n/* 1028 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = __webpack_require__(212);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['textPosition'], ['textAlign']]);\nvar _default = {\n  getItemStyle: function (excludes, includes) {\n    var style = getItemStyle(this, excludes, includes);\n    var lineDash = this.getBorderLineDash();\n    lineDash && (style.lineDash = lineDash);\n    return style;\n  },\n  getBorderLineDash: function () {\n    var lineType = this.get('borderType');\n    return lineType === 'solid' || lineType == null ? null : lineType === 'dashed' ? [5, 5] : [1, 1];\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1029 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = {\n  getBoxLayoutParams: function () {\n    return {\n      left: this.get('left'),\n      top: this.get('top'),\n      right: this.get('right'),\n      bottom: this.get('bottom'),\n      width: this.get('width'),\n      height: this.get('height')\n    };\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1030 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar platform = ''; // Navigator not exists in node\n\nif (typeof navigator !== 'undefined') {\n  platform = navigator.platform || '';\n}\n\nvar _default = {\n  // backgroundColor: 'rgba(0,0,0,0)',\n  // https://dribbble.com/shots/1065960-Infographic-Pie-chart-visualization\n  // color: ['#5793f3', '#d14a61', '#fd9c35', '#675bba', '#fec42c', '#dd4444', '#d4df5a', '#cd4870'],\n  // Light colors:\n  // color: ['#bcd3bb', '#e88f70', '#edc1a5', '#9dc5c8', '#e1e8c8', '#7b7c68', '#e5b5b5', '#f0b489', '#928ea8', '#bda29a'],\n  // color: ['#cc5664', '#9bd6ec', '#ea946e', '#8acaaa', '#f1ec64', '#ee8686', '#a48dc1', '#5da6bc', '#b9dcae'],\n  // Dark colors:\n  color: ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'],\n  gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\n  // If xAxis and yAxis declared, grid is created by default.\n  // grid: {},\n  textStyle: {\n    // color: '#000',\n    // decoration: 'none',\n    // PENDING\n    fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\n    // fontFamily: 'Arial, Verdana, sans-serif',\n    fontSize: 12,\n    fontStyle: 'normal',\n    fontWeight: 'normal'\n  },\n  // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/\n  // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n  // Default is source-over\n  blendMode: null,\n  animation: 'auto',\n  animationDuration: 1000,\n  animationDurationUpdate: 300,\n  animationEasing: 'exponentialOut',\n  animationEasingUpdate: 'cubicOut',\n  animationThreshold: 2000,\n  // Configuration for progressive/incremental rendering\n  progressiveThreshold: 3000,\n  progressive: 400,\n  // Threshold of if use single hover layer to optimize.\n  // It is recommended that `hoverLayerThreshold` is equivalent to or less than\n  // `progressiveThreshold`, otherwise hover will cause restart of progressive,\n  // which is unexpected.\n  // see example <echarts/test/heatmap-large.html>.\n  hoverLayerThreshold: 3000,\n  // See: module:echarts/scale/Time\n  useUTC: false\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1031 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar modelUtil = __webpack_require__(31);\n\nvar ComponentModel = __webpack_require__(74);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * ECharts option manager\n *\n * @module {echarts/model/OptionManager}\n */\nvar each = zrUtil.each;\nvar clone = zrUtil.clone;\nvar map = zrUtil.map;\nvar merge = zrUtil.merge;\nvar QUERY_REG = /^(min|max)?(.+)$/;\n/**\n * TERM EXPLANATIONS:\n *\n * [option]:\n *\n *     An object that contains definitions of components. For example:\n *     var option = {\n *         title: {...},\n *         legend: {...},\n *         visualMap: {...},\n *         series: [\n *             {data: [...]},\n *             {data: [...]},\n *             ...\n *         ]\n *     };\n *\n * [rawOption]:\n *\n *     An object input to echarts.setOption. 'rawOption' may be an\n *     'option', or may be an object contains multi-options. For example:\n *     var option = {\n *         baseOption: {\n *             title: {...},\n *             legend: {...},\n *             series: [\n *                 {data: [...]},\n *                 {data: [...]},\n *                 ...\n *             ]\n *         },\n *         timeline: {...},\n *         options: [\n *             {title: {...}, series: {data: [...]}},\n *             {title: {...}, series: {data: [...]}},\n *             ...\n *         ],\n *         media: [\n *             {\n *                 query: {maxWidth: 320},\n *                 option: {series: {x: 20}, visualMap: {show: false}}\n *             },\n *             {\n *                 query: {minWidth: 320, maxWidth: 720},\n *                 option: {series: {x: 500}, visualMap: {show: true}}\n *             },\n *             {\n *                 option: {series: {x: 1200}, visualMap: {show: true}}\n *             }\n *         ]\n *     };\n *\n * @alias module:echarts/model/OptionManager\n * @param {module:echarts/ExtensionAPI} api\n */\n\nfunction OptionManager(api) {\n  /**\n   * @private\n   * @type {module:echarts/ExtensionAPI}\n   */\n  this._api = api;\n  /**\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._timelineOptions = [];\n  /**\n   * @private\n   * @type {Array.<Object>}\n   */\n\n  this._mediaList = [];\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._mediaDefault;\n  /**\n   * -1, means default.\n   * empty means no media.\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._currentMediaIndices = [];\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._optionBackup;\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._newBaseOption;\n} // timeline.notMerge is not supported in ec3. Firstly there is rearly\n// case that notMerge is needed. Secondly supporting 'notMerge' requires\n// rawOption cloned and backuped when timeline changed, which does no\n// good to performance. What's more, that both timeline and setOption\n// method supply 'notMerge' brings complex and some problems.\n// Consider this case:\n// (step1) chart.setOption({timeline: {notMerge: false}, ...}, false);\n// (step2) chart.setOption({timeline: {notMerge: true}, ...}, false);\n\n\nOptionManager.prototype = {\n  constructor: OptionManager,\n\n  /**\n   * @public\n   * @param {Object} rawOption Raw option.\n   * @param {module:echarts/model/Global} ecModel\n   * @param {Array.<Function>} optionPreprocessorFuncs\n   * @return {Object} Init option\n   */\n  setOption: function (rawOption, optionPreprocessorFuncs) {\n    if (rawOption) {\n      // That set dat primitive is dangerous if user reuse the data when setOption again.\n      zrUtil.each(modelUtil.normalizeToArray(rawOption.series), function (series) {\n        series && series.data && zrUtil.isTypedArray(series.data) && zrUtil.setAsPrimitive(series.data);\n      });\n    } // Caution: some series modify option data, if do not clone,\n    // it should ensure that the repeat modify correctly\n    // (create a new object when modify itself).\n\n\n    rawOption = clone(rawOption); // FIXME\n    // 如果 timeline options 或者 media 中设置了某个属性，而baseOption中没有设置，则进行警告。\n\n    var oldOptionBackup = this._optionBackup;\n    var newParsedOption = parseRawOption.call(this, rawOption, optionPreprocessorFuncs, !oldOptionBackup);\n    this._newBaseOption = newParsedOption.baseOption; // For setOption at second time (using merge mode);\n\n    if (oldOptionBackup) {\n      // Only baseOption can be merged.\n      mergeOption(oldOptionBackup.baseOption, newParsedOption.baseOption); // For simplicity, timeline options and media options do not support merge,\n      // that is, if you `setOption` twice and both has timeline options, the latter\n      // timeline opitons will not be merged to the formers, but just substitude them.\n\n      if (newParsedOption.timelineOptions.length) {\n        oldOptionBackup.timelineOptions = newParsedOption.timelineOptions;\n      }\n\n      if (newParsedOption.mediaList.length) {\n        oldOptionBackup.mediaList = newParsedOption.mediaList;\n      }\n\n      if (newParsedOption.mediaDefault) {\n        oldOptionBackup.mediaDefault = newParsedOption.mediaDefault;\n      }\n    } else {\n      this._optionBackup = newParsedOption;\n    }\n  },\n\n  /**\n   * @param {boolean} isRecreate\n   * @return {Object}\n   */\n  mountOption: function (isRecreate) {\n    var optionBackup = this._optionBackup; // TODO\n    // 如果没有reset功能则不clone。\n\n    this._timelineOptions = map(optionBackup.timelineOptions, clone);\n    this._mediaList = map(optionBackup.mediaList, clone);\n    this._mediaDefault = clone(optionBackup.mediaDefault);\n    this._currentMediaIndices = [];\n    return clone(isRecreate // this._optionBackup.baseOption, which is created at the first `setOption`\n    // called, and is merged into every new option by inner method `mergeOption`\n    // each time `setOption` called, can be only used in `isRecreate`, because\n    // its reliability is under suspicion. In other cases option merge is\n    // performed by `model.mergeOption`.\n    ? optionBackup.baseOption : this._newBaseOption);\n  },\n\n  /**\n   * @param {module:echarts/model/Global} ecModel\n   * @return {Object}\n   */\n  getTimelineOption: function (ecModel) {\n    var option;\n    var timelineOptions = this._timelineOptions;\n\n    if (timelineOptions.length) {\n      // getTimelineOption can only be called after ecModel inited,\n      // so we can get currentIndex from timelineModel.\n      var timelineModel = ecModel.getComponent('timeline');\n\n      if (timelineModel) {\n        option = clone(timelineOptions[timelineModel.getCurrentIndex()], true);\n      }\n    }\n\n    return option;\n  },\n\n  /**\n   * @param {module:echarts/model/Global} ecModel\n   * @return {Array.<Object>}\n   */\n  getMediaOption: function (ecModel) {\n    var ecWidth = this._api.getWidth();\n\n    var ecHeight = this._api.getHeight();\n\n    var mediaList = this._mediaList;\n    var mediaDefault = this._mediaDefault;\n    var indices = [];\n    var result = []; // No media defined.\n\n    if (!mediaList.length && !mediaDefault) {\n      return result;\n    } // Multi media may be applied, the latter defined media has higher priority.\n\n\n    for (var i = 0, len = mediaList.length; i < len; i++) {\n      if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\n        indices.push(i);\n      }\n    } // FIXME\n    // 是否mediaDefault应该强制用户设置，否则可能修改不能回归。\n\n\n    if (!indices.length && mediaDefault) {\n      indices = [-1];\n    }\n\n    if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\n      result = map(indices, function (index) {\n        return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\n      });\n    } // Otherwise return nothing.\n\n\n    this._currentMediaIndices = indices;\n    return result;\n  }\n};\n\nfunction parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\n  var timelineOptions = [];\n  var mediaList = [];\n  var mediaDefault;\n  var baseOption; // Compatible with ec2.\n\n  var timelineOpt = rawOption.timeline;\n\n  if (rawOption.baseOption) {\n    baseOption = rawOption.baseOption;\n  } // For timeline\n\n\n  if (timelineOpt || rawOption.options) {\n    baseOption = baseOption || {};\n    timelineOptions = (rawOption.options || []).slice();\n  } // For media query\n\n\n  if (rawOption.media) {\n    baseOption = baseOption || {};\n    var media = rawOption.media;\n    each(media, function (singleMedia) {\n      if (singleMedia && singleMedia.option) {\n        if (singleMedia.query) {\n          mediaList.push(singleMedia);\n        } else if (!mediaDefault) {\n          // Use the first media default.\n          mediaDefault = singleMedia;\n        }\n      }\n    });\n  } // For normal option\n\n\n  if (!baseOption) {\n    baseOption = rawOption;\n  } // Set timelineOpt to baseOption in ec3,\n  // which is convenient for merge option.\n\n\n  if (!baseOption.timeline) {\n    baseOption.timeline = timelineOpt;\n  } // Preprocess.\n\n\n  each([baseOption].concat(timelineOptions).concat(zrUtil.map(mediaList, function (media) {\n    return media.option;\n  })), function (option) {\n    each(optionPreprocessorFuncs, function (preProcess) {\n      preProcess(option, isNew);\n    });\n  });\n  return {\n    baseOption: baseOption,\n    timelineOptions: timelineOptions,\n    mediaDefault: mediaDefault,\n    mediaList: mediaList\n  };\n}\n/**\n * @see <http://www.w3.org/TR/css3-mediaqueries/#media1>\n * Support: width, height, aspectRatio\n * Can use max or min as prefix.\n */\n\n\nfunction applyMediaQuery(query, ecWidth, ecHeight) {\n  var realMap = {\n    width: ecWidth,\n    height: ecHeight,\n    aspectratio: ecWidth / ecHeight // lowser case for convenientce.\n\n  };\n  var applicatable = true;\n  zrUtil.each(query, function (value, attr) {\n    var matched = attr.match(QUERY_REG);\n\n    if (!matched || !matched[1] || !matched[2]) {\n      return;\n    }\n\n    var operator = matched[1];\n    var realAttr = matched[2].toLowerCase();\n\n    if (!compare(realMap[realAttr], value, operator)) {\n      applicatable = false;\n    }\n  });\n  return applicatable;\n}\n\nfunction compare(real, expect, operator) {\n  if (operator === 'min') {\n    return real >= expect;\n  } else if (operator === 'max') {\n    return real <= expect;\n  } else {\n    // Equals\n    return real === expect;\n  }\n}\n\nfunction indicesEquals(indices1, indices2) {\n  // indices is always order by asc and has only finite number.\n  return indices1.join(',') === indices2.join(',');\n}\n/**\n * Consider case:\n * `chart.setOption(opt1);`\n * Then user do some interaction like dataZoom, dataView changing.\n * `chart.setOption(opt2);`\n * Then user press 'reset button' in toolbox.\n *\n * After doing that all of the interaction effects should be reset, the\n * chart should be the same as the result of invoke\n * `chart.setOption(opt1); chart.setOption(opt2);`.\n *\n * Although it is not able ensure that\n * `chart.setOption(opt1); chart.setOption(opt2);` is equivalents to\n * `chart.setOption(merge(opt1, opt2));` exactly,\n * this might be the only simple way to implement that feature.\n *\n * MEMO: We've considered some other approaches:\n * 1. Each model handle its self restoration but not uniform treatment.\n *     (Too complex in logic and error-prone)\n * 2. Use a shadow ecModel. (Performace expensive)\n */\n\n\nfunction mergeOption(oldOption, newOption) {\n  newOption = newOption || {};\n  each(newOption, function (newCptOpt, mainType) {\n    if (newCptOpt == null) {\n      return;\n    }\n\n    var oldCptOpt = oldOption[mainType];\n\n    if (!ComponentModel.hasClass(mainType)) {\n      oldOption[mainType] = merge(oldCptOpt, newCptOpt, true);\n    } else {\n      newCptOpt = modelUtil.normalizeToArray(newCptOpt);\n      oldCptOpt = modelUtil.normalizeToArray(oldCptOpt);\n      var mapResult = modelUtil.mappingToExists(oldCptOpt, newCptOpt);\n      oldOption[mainType] = map(mapResult, function (item) {\n        return item.option && item.exist ? merge(item.exist, item.option, true) : item.exist || item.option;\n      });\n    }\n  });\n}\n\nvar _default = OptionManager;\nmodule.exports = _default;\n\n/***/ }),\n/* 1032 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\nvar isArray = _util.isArray;\nvar isObject = _util.isObject;\n\nvar compatStyle = __webpack_require__(1033);\n\nvar _model = __webpack_require__(31);\n\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Compatitable with 2.0\nfunction get(opt, path) {\n  path = path.split(',');\n  var obj = opt;\n\n  for (var i = 0; i < path.length; i++) {\n    obj = obj && obj[path[i]];\n\n    if (obj == null) {\n      break;\n    }\n  }\n\n  return obj;\n}\n\nfunction set(opt, path, val, overwrite) {\n  path = path.split(',');\n  var obj = opt;\n  var key;\n\n  for (var i = 0; i < path.length - 1; i++) {\n    key = path[i];\n\n    if (obj[key] == null) {\n      obj[key] = {};\n    }\n\n    obj = obj[key];\n  }\n\n  if (overwrite || obj[path[i]] == null) {\n    obj[path[i]] = val;\n  }\n}\n\nfunction compatLayoutProperties(option) {\n  each(LAYOUT_PROPERTIES, function (prop) {\n    if (prop[0] in option && !(prop[1] in option)) {\n      option[prop[1]] = option[prop[0]];\n    }\n  });\n}\n\nvar LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']];\nvar COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'];\n\nfunction _default(option, isTheme) {\n  compatStyle(option, isTheme); // Make sure series array for model initialization.\n\n  option.series = normalizeToArray(option.series);\n  each(option.series, function (seriesOpt) {\n    if (!isObject(seriesOpt)) {\n      return;\n    }\n\n    var seriesType = seriesOpt.type;\n\n    if (seriesType === 'line') {\n      if (seriesOpt.clipOverflow != null) {\n        seriesOpt.clip = seriesOpt.clipOverflow;\n      }\n    } else if (seriesType === 'pie' || seriesType === 'gauge') {\n      if (seriesOpt.clockWise != null) {\n        seriesOpt.clockwise = seriesOpt.clockWise;\n      }\n    } else if (seriesType === 'gauge') {\n      var pointerColor = get(seriesOpt, 'pointer.color');\n      pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor);\n    }\n\n    compatLayoutProperties(seriesOpt);\n  }); // dataRange has changed to visualMap\n\n  if (option.dataRange) {\n    option.visualMap = option.dataRange;\n  }\n\n  each(COMPATITABLE_COMPONENTS, function (componentName) {\n    var options = option[componentName];\n\n    if (options) {\n      if (!isArray(options)) {\n        options = [options];\n      }\n\n      each(options, function (option) {\n        compatLayoutProperties(option);\n      });\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1033 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar modelUtil = __webpack_require__(31);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar POSSIBLE_STYLES = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine'];\n\nfunction compatEC2ItemStyle(opt) {\n  var itemStyleOpt = opt && opt.itemStyle;\n\n  if (!itemStyleOpt) {\n    return;\n  }\n\n  for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\n    var styleName = POSSIBLE_STYLES[i];\n    var normalItemStyleOpt = itemStyleOpt.normal;\n    var emphasisItemStyleOpt = itemStyleOpt.emphasis;\n\n    if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\n      opt[styleName] = opt[styleName] || {};\n\n      if (!opt[styleName].normal) {\n        opt[styleName].normal = normalItemStyleOpt[styleName];\n      } else {\n        zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\n      }\n\n      normalItemStyleOpt[styleName] = null;\n    }\n\n    if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\n      opt[styleName] = opt[styleName] || {};\n\n      if (!opt[styleName].emphasis) {\n        opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\n      } else {\n        zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\n      }\n\n      emphasisItemStyleOpt[styleName] = null;\n    }\n  }\n}\n\nfunction convertNormalEmphasis(opt, optType, useExtend) {\n  if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\n    var normalOpt = opt[optType].normal;\n    var emphasisOpt = opt[optType].emphasis;\n\n    if (normalOpt) {\n      // Timeline controlStyle has other properties besides normal and emphasis\n      if (useExtend) {\n        opt[optType].normal = opt[optType].emphasis = null;\n        zrUtil.defaults(opt[optType], normalOpt);\n      } else {\n        opt[optType] = normalOpt;\n      }\n    }\n\n    if (emphasisOpt) {\n      opt.emphasis = opt.emphasis || {};\n      opt.emphasis[optType] = emphasisOpt;\n    }\n  }\n}\n\nfunction removeEC3NormalStatus(opt) {\n  convertNormalEmphasis(opt, 'itemStyle');\n  convertNormalEmphasis(opt, 'lineStyle');\n  convertNormalEmphasis(opt, 'areaStyle');\n  convertNormalEmphasis(opt, 'label');\n  convertNormalEmphasis(opt, 'labelLine'); // treemap\n\n  convertNormalEmphasis(opt, 'upperLabel'); // graph\n\n  convertNormalEmphasis(opt, 'edgeLabel');\n}\n\nfunction compatTextStyle(opt, propName) {\n  // Check whether is not object (string\\null\\undefined ...)\n  var labelOptSingle = isObject(opt) && opt[propName];\n  var textStyle = isObject(labelOptSingle) && labelOptSingle.textStyle;\n\n  if (textStyle) {\n    for (var i = 0, len = modelUtil.TEXT_STYLE_OPTIONS.length; i < len; i++) {\n      var propName = modelUtil.TEXT_STYLE_OPTIONS[i];\n\n      if (textStyle.hasOwnProperty(propName)) {\n        labelOptSingle[propName] = textStyle[propName];\n      }\n    }\n  }\n}\n\nfunction compatEC3CommonStyles(opt) {\n  if (opt) {\n    removeEC3NormalStatus(opt);\n    compatTextStyle(opt, 'label');\n    opt.emphasis && compatTextStyle(opt.emphasis, 'label');\n  }\n}\n\nfunction processSeries(seriesOpt) {\n  if (!isObject(seriesOpt)) {\n    return;\n  }\n\n  compatEC2ItemStyle(seriesOpt);\n  removeEC3NormalStatus(seriesOpt);\n  compatTextStyle(seriesOpt, 'label'); // treemap\n\n  compatTextStyle(seriesOpt, 'upperLabel'); // graph\n\n  compatTextStyle(seriesOpt, 'edgeLabel');\n\n  if (seriesOpt.emphasis) {\n    compatTextStyle(seriesOpt.emphasis, 'label'); // treemap\n\n    compatTextStyle(seriesOpt.emphasis, 'upperLabel'); // graph\n\n    compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\n  }\n\n  var markPoint = seriesOpt.markPoint;\n\n  if (markPoint) {\n    compatEC2ItemStyle(markPoint);\n    compatEC3CommonStyles(markPoint);\n  }\n\n  var markLine = seriesOpt.markLine;\n\n  if (markLine) {\n    compatEC2ItemStyle(markLine);\n    compatEC3CommonStyles(markLine);\n  }\n\n  var markArea = seriesOpt.markArea;\n\n  if (markArea) {\n    compatEC3CommonStyles(markArea);\n  }\n\n  var data = seriesOpt.data; // Break with ec3: if `setOption` again, there may be no `type` in option,\n  // then the backward compat based on option type will not be performed.\n\n  if (seriesOpt.type === 'graph') {\n    data = data || seriesOpt.nodes;\n    var edgeData = seriesOpt.links || seriesOpt.edges;\n\n    if (edgeData && !zrUtil.isTypedArray(edgeData)) {\n      for (var i = 0; i < edgeData.length; i++) {\n        compatEC3CommonStyles(edgeData[i]);\n      }\n    }\n\n    zrUtil.each(seriesOpt.categories, function (opt) {\n      removeEC3NormalStatus(opt);\n    });\n  }\n\n  if (data && !zrUtil.isTypedArray(data)) {\n    for (var i = 0; i < data.length; i++) {\n      compatEC3CommonStyles(data[i]);\n    }\n  } // mark point data\n\n\n  var markPoint = seriesOpt.markPoint;\n\n  if (markPoint && markPoint.data) {\n    var mpData = markPoint.data;\n\n    for (var i = 0; i < mpData.length; i++) {\n      compatEC3CommonStyles(mpData[i]);\n    }\n  } // mark line data\n\n\n  var markLine = seriesOpt.markLine;\n\n  if (markLine && markLine.data) {\n    var mlData = markLine.data;\n\n    for (var i = 0; i < mlData.length; i++) {\n      if (zrUtil.isArray(mlData[i])) {\n        compatEC3CommonStyles(mlData[i][0]);\n        compatEC3CommonStyles(mlData[i][1]);\n      } else {\n        compatEC3CommonStyles(mlData[i]);\n      }\n    }\n  } // Series\n\n\n  if (seriesOpt.type === 'gauge') {\n    compatTextStyle(seriesOpt, 'axisLabel');\n    compatTextStyle(seriesOpt, 'title');\n    compatTextStyle(seriesOpt, 'detail');\n  } else if (seriesOpt.type === 'treemap') {\n    convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\n    zrUtil.each(seriesOpt.levels, function (opt) {\n      removeEC3NormalStatus(opt);\n    });\n  } else if (seriesOpt.type === 'tree') {\n    removeEC3NormalStatus(seriesOpt.leaves);\n  } // sunburst starts from ec4, so it does not need to compat levels.\n\n}\n\nfunction toArr(o) {\n  return zrUtil.isArray(o) ? o : o ? [o] : [];\n}\n\nfunction toObj(o) {\n  return (zrUtil.isArray(o) ? o[0] : o) || {};\n}\n\nfunction _default(option, isTheme) {\n  each(toArr(option.series), function (seriesOpt) {\n    isObject(seriesOpt) && processSeries(seriesOpt);\n  });\n  var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\n  isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\n  each(axes, function (axisName) {\n    each(toArr(option[axisName]), function (axisOpt) {\n      if (axisOpt) {\n        compatTextStyle(axisOpt, 'axisLabel');\n        compatTextStyle(axisOpt.axisPointer, 'label');\n      }\n    });\n  });\n  each(toArr(option.parallel), function (parallelOpt) {\n    var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\n    compatTextStyle(parallelAxisDefault, 'axisLabel');\n    compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\n  });\n  each(toArr(option.calendar), function (calendarOpt) {\n    convertNormalEmphasis(calendarOpt, 'itemStyle');\n    compatTextStyle(calendarOpt, 'dayLabel');\n    compatTextStyle(calendarOpt, 'monthLabel');\n    compatTextStyle(calendarOpt, 'yearLabel');\n  }); // radar.name.textStyle\n\n  each(toArr(option.radar), function (radarOpt) {\n    compatTextStyle(radarOpt, 'name');\n  });\n  each(toArr(option.geo), function (geoOpt) {\n    if (isObject(geoOpt)) {\n      compatEC3CommonStyles(geoOpt);\n      each(toArr(geoOpt.regions), function (regionObj) {\n        compatEC3CommonStyles(regionObj);\n      });\n    }\n  });\n  each(toArr(option.timeline), function (timelineOpt) {\n    compatEC3CommonStyles(timelineOpt);\n    convertNormalEmphasis(timelineOpt, 'label');\n    convertNormalEmphasis(timelineOpt, 'itemStyle');\n    convertNormalEmphasis(timelineOpt, 'controlStyle', true);\n    var data = timelineOpt.data;\n    zrUtil.isArray(data) && zrUtil.each(data, function (item) {\n      if (zrUtil.isObject(item)) {\n        convertNormalEmphasis(item, 'label');\n        convertNormalEmphasis(item, 'itemStyle');\n      }\n    });\n  });\n  each(toArr(option.toolbox), function (toolboxOpt) {\n    convertNormalEmphasis(toolboxOpt, 'iconStyle');\n    each(toolboxOpt.feature, function (featureOpt) {\n      convertNormalEmphasis(featureOpt, 'iconStyle');\n    });\n  });\n  compatTextStyle(toObj(option.axisPointer), 'label');\n  compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1034 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (1) [Caution]: the logic is correct based on the premises:\n//     data processing stage is blocked in stream.\n//     See <module:echarts/stream/Scheduler#performDataProcessorTasks>\n// (2) Only register once when import repeatly.\n//     Should be executed after series filtered and before stack calculation.\nfunction _default(ecModel) {\n  var stackInfoMap = createHashMap();\n  ecModel.eachSeries(function (seriesModel) {\n    var stack = seriesModel.get('stack'); // Compatibal: when `stack` is set as '', do not stack.\n\n    if (stack) {\n      var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\n      var data = seriesModel.getData();\n      var stackInfo = {\n        // Used for calculate axis extent automatically.\n        stackResultDimension: data.getCalculationInfo('stackResultDimension'),\n        stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\n        stackedDimension: data.getCalculationInfo('stackedDimension'),\n        stackedByDimension: data.getCalculationInfo('stackedByDimension'),\n        isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\n        data: data,\n        seriesModel: seriesModel\n      }; // If stacked on axis that do not support data stack.\n\n      if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\n        return;\n      }\n\n      stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\n      stackInfoList.push(stackInfo);\n    }\n  });\n  stackInfoMap.each(calculateStack);\n}\n\nfunction calculateStack(stackInfoList) {\n  each(stackInfoList, function (targetStackInfo, idxInStack) {\n    var resultVal = [];\n    var resultNaN = [NaN, NaN];\n    var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\n    var targetData = targetStackInfo.data;\n    var isStackedByIndex = targetStackInfo.isStackedByIndex; // Should not write on raw data, because stack series model list changes\n    // depending on legend selection.\n\n    var newData = targetData.map(dims, function (v0, v1, dataIndex) {\n      var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex); // Consider `connectNulls` of line area, if value is NaN, stackedOver\n      // should also be NaN, to draw a appropriate belt area.\n\n      if (isNaN(sum)) {\n        return resultNaN;\n      }\n\n      var byValue;\n      var stackedDataRawIndex;\n\n      if (isStackedByIndex) {\n        stackedDataRawIndex = targetData.getRawIndex(dataIndex);\n      } else {\n        byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\n      } // If stackOver is NaN, chart view will render point on value start.\n\n\n      var stackedOver = NaN;\n\n      for (var j = idxInStack - 1; j >= 0; j--) {\n        var stackInfo = stackInfoList[j]; // Has been optimized by inverted indices on `stackedByDimension`.\n\n        if (!isStackedByIndex) {\n          stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\n        }\n\n        if (stackedDataRawIndex >= 0) {\n          var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex); // Considering positive stack, negative stack and empty data\n\n          if (sum >= 0 && val > 0 || // Positive stack\n          sum <= 0 && val < 0 // Negative stack\n          ) {\n              sum += val;\n              stackedOver = val;\n              break;\n            }\n        }\n      }\n\n      resultVal[0] = sum;\n      resultVal[1] = stackedOver;\n      return resultVal;\n    });\n    targetData.hostModel.setData(newData); // Update for consequent calculation\n\n    targetStackInfo.data = newData;\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1035 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Gradient = __webpack_require__(327);\n\nvar _util = __webpack_require__(2);\n\nvar isFunction = _util.isFunction;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = {\n  createOnAllSeries: true,\n  performRawSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var data = seriesModel.getData();\n    var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.'); // Set in itemStyle\n\n    var color = seriesModel.get(colorAccessPath);\n    var colorCallback = isFunction(color) && !(color instanceof Gradient) ? color : null; // Default color\n\n    if (!color || colorCallback) {\n      color = seriesModel.getColorFromPalette( // TODO series count changed.\n      seriesModel.name, null, ecModel.getSeriesCount());\n    }\n\n    data.setVisual('color', color);\n    var borderColorAccessPath = (seriesModel.visualBorderColorAccessPath || 'itemStyle.borderColor').split('.');\n    var borderColor = seriesModel.get(borderColorAccessPath);\n    data.setVisual('borderColor', borderColor); // Only visible series has each data be visual encoded\n\n    if (!ecModel.isSeriesFiltered(seriesModel)) {\n      if (colorCallback) {\n        data.each(function (idx) {\n          data.setItemVisual(idx, 'color', colorCallback(seriesModel.getDataParams(idx)));\n        });\n      } // itemStyle in each data item\n\n\n      var dataEach = function (data, idx) {\n        var itemModel = data.getItemModel(idx);\n        var color = itemModel.get(colorAccessPath, true);\n        var borderColor = itemModel.get(borderColorAccessPath, true);\n\n        if (color != null) {\n          data.setItemVisual(idx, 'color', color);\n        }\n\n        if (borderColor != null) {\n          data.setItemVisual(idx, 'borderColor', borderColor);\n        }\n      };\n\n      return {\n        dataEach: data.hasItemOption ? dataEach : null\n      };\n    }\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1036 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar lang = __webpack_require__(154);\n\nvar _dataProvider = __webpack_require__(179);\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(dom, ecModel) {\n  var ariaModel = ecModel.getModel('aria');\n\n  if (!ariaModel.get('show')) {\n    return;\n  } else if (ariaModel.get('description')) {\n    dom.setAttribute('aria-label', ariaModel.get('description'));\n    return;\n  }\n\n  var seriesCnt = 0;\n  ecModel.eachSeries(function (seriesModel, idx) {\n    ++seriesCnt;\n  }, this);\n  var maxDataCnt = ariaModel.get('data.maxCount') || 10;\n  var maxSeriesCnt = ariaModel.get('series.maxCount') || 10;\n  var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\n  var ariaLabel;\n\n  if (seriesCnt < 1) {\n    // No series, no aria label\n    return;\n  } else {\n    var title = getTitle();\n\n    if (title) {\n      ariaLabel = replace(getConfig('general.withTitle'), {\n        title: title\n      });\n    } else {\n      ariaLabel = getConfig('general.withoutTitle');\n    }\n\n    var seriesLabels = [];\n    var prefix = seriesCnt > 1 ? 'series.multiple.prefix' : 'series.single.prefix';\n    ariaLabel += replace(getConfig(prefix), {\n      seriesCount: seriesCnt\n    });\n    ecModel.eachSeries(function (seriesModel, idx) {\n      if (idx < displaySeriesCnt) {\n        var seriesLabel;\n        var seriesName = seriesModel.get('name');\n        var seriesTpl = 'series.' + (seriesCnt > 1 ? 'multiple' : 'single') + '.';\n        seriesLabel = getConfig(seriesName ? seriesTpl + 'withName' : seriesTpl + 'withoutName');\n        seriesLabel = replace(seriesLabel, {\n          seriesId: seriesModel.seriesIndex,\n          seriesName: seriesModel.get('name'),\n          seriesType: getSeriesTypeName(seriesModel.subType)\n        });\n        var data = seriesModel.getData();\n        window.data = data;\n\n        if (data.count() > maxDataCnt) {\n          // Show part of data\n          seriesLabel += replace(getConfig('data.partialData'), {\n            displayCnt: maxDataCnt\n          });\n        } else {\n          seriesLabel += getConfig('data.allData');\n        }\n\n        var dataLabels = [];\n\n        for (var i = 0; i < data.count(); i++) {\n          if (i < maxDataCnt) {\n            var name = data.getName(i);\n            var value = retrieveRawValue(data, i);\n            dataLabels.push(replace(name ? getConfig('data.withName') : getConfig('data.withoutName'), {\n              name: name,\n              value: value\n            }));\n          }\n        }\n\n        seriesLabel += dataLabels.join(getConfig('data.separator.middle')) + getConfig('data.separator.end');\n        seriesLabels.push(seriesLabel);\n      }\n    });\n    ariaLabel += seriesLabels.join(getConfig('series.multiple.separator.middle')) + getConfig('series.multiple.separator.end');\n    dom.setAttribute('aria-label', ariaLabel);\n  }\n\n  function replace(str, keyValues) {\n    if (typeof str !== 'string') {\n      return str;\n    }\n\n    var result = str;\n    zrUtil.each(keyValues, function (value, key) {\n      result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\n    });\n    return result;\n  }\n\n  function getConfig(path) {\n    var userConfig = ariaModel.get(path);\n\n    if (userConfig == null) {\n      var pathArr = path.split('.');\n      var result = lang.aria;\n\n      for (var i = 0; i < pathArr.length; ++i) {\n        result = result[pathArr[i]];\n      }\n\n      return result;\n    } else {\n      return userConfig;\n    }\n  }\n\n  function getTitle() {\n    var title = ecModel.getModel('title').option;\n\n    if (title && title.length) {\n      title = title[0];\n    }\n\n    return title && title.text;\n  }\n\n  function getSeriesTypeName(type) {\n    return lang.series.typeNames[type] || '自定义图';\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1037 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar textContain = __webpack_require__(108);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\n/**\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} [opts]\n * @param {string} [opts.text]\n * @param {string} [opts.color]\n * @param {string} [opts.textColor]\n * @return {module:zrender/Element}\n */\n\nfunction _default(api, opts) {\n  opts = opts || {};\n  zrUtil.defaults(opts, {\n    text: 'loading',\n    textColor: '#000',\n    fontSize: '12px',\n    maskColor: 'rgba(255, 255, 255, 0.8)',\n    showSpinner: true,\n    color: '#c23531',\n    spinnerRadius: 10,\n    lineWidth: 5,\n    zlevel: 0\n  });\n  var group = new graphic.Group();\n  var mask = new graphic.Rect({\n    style: {\n      fill: opts.maskColor\n    },\n    zlevel: opts.zlevel,\n    z: 10000\n  });\n  group.add(mask);\n  var font = opts.fontSize + ' sans-serif';\n  var labelRect = new graphic.Rect({\n    style: {\n      fill: 'none',\n      text: opts.text,\n      font: font,\n      textPosition: 'right',\n      textDistance: 10,\n      textFill: opts.textColor\n    },\n    zlevel: opts.zlevel,\n    z: 10001\n  });\n  group.add(labelRect);\n\n  if (opts.showSpinner) {\n    var arc = new graphic.Arc({\n      shape: {\n        startAngle: -PI / 2,\n        endAngle: -PI / 2 + 0.1,\n        r: opts.spinnerRadius\n      },\n      style: {\n        stroke: opts.color,\n        lineCap: 'round',\n        lineWidth: opts.lineWidth\n      },\n      zlevel: opts.zlevel,\n      z: 10001\n    });\n    arc.animateShape(true).when(1000, {\n      endAngle: PI * 3 / 2\n    }).start('circularInOut');\n    arc.animateShape(true).when(1000, {\n      startAngle: PI * 3 / 2\n    }).delay(300).start('circularInOut');\n    group.add(arc);\n  } // Inject resize\n\n\n  group.resize = function () {\n    var textWidth = textContain.getWidth(opts.text, font);\n    var r = opts.showSpinner ? opts.spinnerRadius : 0; // cx = (containerWidth - arcDiameter - textDistance - textWidth) / 2\n    // textDistance needs to be calculated when both animation and text exist\n\n    var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 // only show the text\n    - (opts.showSpinner ? 0 : textWidth / 2);\n    var cy = api.getHeight() / 2;\n    opts.showSpinner && arc.setShape({\n      cx: cx,\n      cy: cy\n    });\n    labelRect.setShape({\n      x: cx - r,\n      y: cy - r,\n      width: r * 2,\n      height: r * 2\n    });\n    mask.setShape({\n      x: 0,\n      y: 0,\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n  };\n\n  group.resize();\n  return group;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1038 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\nvar map = _util.map;\nvar isFunction = _util.isFunction;\nvar createHashMap = _util.createHashMap;\nvar noop = _util.noop;\n\nvar _task = __webpack_require__(408);\n\nvar createTask = _task.createTask;\n\nvar _component = __webpack_require__(256);\n\nvar getUID = _component.getUID;\n\nvar GlobalModel = __webpack_require__(556);\n\nvar ExtensionAPI = __webpack_require__(569);\n\nvar _model = __webpack_require__(31);\n\nvar normalizeToArray = _model.normalizeToArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/stream/Scheduler\n */\n\n/**\n * @constructor\n */\nfunction Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\n  this.ecInstance = ecInstance;\n  this.api = api;\n  this.unfinished; // Fix current processors in case that in some rear cases that\n  // processors might be registered after echarts instance created.\n  // Register processors incrementally for a echarts instance is\n  // not supported by this stream architecture.\n\n  var dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\n  var visualHandlers = this._visualHandlers = visualHandlers.slice();\n  this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\n  /**\n   * @private\n   * @type {\n   *     [handlerUID: string]: {\n   *         seriesTaskMap?: {\n   *             [seriesUID: string]: Task\n   *         },\n   *         overallTask?: Task\n   *     }\n   * }\n   */\n\n  this._stageTaskMap = createHashMap();\n}\n\nvar proto = Scheduler.prototype;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} payload\n */\n\nproto.restoreData = function (ecModel, payload) {\n  // TODO: Only restore needed series and components, but not all components.\n  // Currently `restoreData` of all of the series and component will be called.\n  // But some independent components like `title`, `legend`, `graphic`, `toolbox`,\n  // `tooltip`, `axisPointer`, etc, do not need series refresh when `setOption`,\n  // and some components like coordinate system, axes, dataZoom, visualMap only\n  // need their target series refresh.\n  // (1) If we are implementing this feature some day, we should consider these cases:\n  // if a data processor depends on a component (e.g., dataZoomProcessor depends\n  // on the settings of `dataZoom`), it should be re-performed if the component\n  // is modified by `setOption`.\n  // (2) If a processor depends on sevral series, speicified by its `getTargetSeries`,\n  // it should be re-performed when the result array of `getTargetSeries` changed.\n  // We use `dependencies` to cover these issues.\n  // (3) How to update target series when coordinate system related components modified.\n  // TODO: simply the dirty mechanism? Check whether only the case here can set tasks dirty,\n  // and this case all of the tasks will be set as dirty.\n  ecModel.restoreData(payload); // Theoretically an overall task not only depends on each of its target series, but also\n  // depends on all of the series.\n  // The overall task is not in pipeline, and `ecModel.restoreData` only set pipeline tasks\n  // dirty. If `getTargetSeries` of an overall task returns nothing, we should also ensure\n  // that the overall task is set as dirty and to be performed, otherwise it probably cause\n  // state chaos. So we have to set dirty of all of the overall tasks manually, otherwise it\n  // probably cause state chaos (consider `dataZoomProcessor`).\n\n  this._stageTaskMap.each(function (taskRecord) {\n    var overallTask = taskRecord.overallTask;\n    overallTask && overallTask.dirty();\n  });\n}; // If seriesModel provided, incremental threshold is check by series data.\n\n\nproto.getPerformArgs = function (task, isBlock) {\n  // For overall task\n  if (!task.__pipeline) {\n    return;\n  }\n\n  var pipeline = this._pipelineMap.get(task.__pipeline.id);\n\n  var pCtx = pipeline.context;\n  var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex;\n  var step = incremental ? pipeline.step : null;\n  var modDataCount = pCtx && pCtx.modDataCount;\n  var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\n  return {\n    step: step,\n    modBy: modBy,\n    modDataCount: modDataCount\n  };\n};\n\nproto.getPipeline = function (pipelineId) {\n  return this._pipelineMap.get(pipelineId);\n};\n/**\n * Current, progressive rendering starts from visual and layout.\n * Always detect render mode in the same stage, avoiding that incorrect\n * detection caused by data filtering.\n * Caution:\n * `updateStreamModes` use `seriesModel.getData()`.\n */\n\n\nproto.updateStreamModes = function (seriesModel, view) {\n  var pipeline = this._pipelineMap.get(seriesModel.uid);\n\n  var data = seriesModel.getData();\n  var dataLen = data.count(); // `progressiveRender` means that can render progressively in each\n  // animation frame. Note that some types of series do not provide\n  // `view.incrementalPrepareRender` but support `chart.appendData`. We\n  // use the term `incremental` but not `progressive` to describe the\n  // case that `chart.appendData`.\n\n  var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold;\n  var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold'); // TODO: modDataCount should not updated if `appendData`, otherwise cause whole repaint.\n  // see `test/candlestick-large3.html`\n\n  var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\n  seriesModel.pipelineContext = pipeline.context = {\n    progressiveRender: progressiveRender,\n    modDataCount: modDataCount,\n    large: large\n  };\n};\n\nproto.restorePipelines = function (ecModel) {\n  var scheduler = this;\n  var pipelineMap = scheduler._pipelineMap = createHashMap();\n  ecModel.eachSeries(function (seriesModel) {\n    var progressive = seriesModel.getProgressive();\n    var pipelineId = seriesModel.uid;\n    pipelineMap.set(pipelineId, {\n      id: pipelineId,\n      head: null,\n      tail: null,\n      threshold: seriesModel.getProgressiveThreshold(),\n      progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\n      blockIndex: -1,\n      step: Math.round(progressive || 700),\n      count: 0\n    });\n    pipe(scheduler, seriesModel, seriesModel.dataTask);\n  });\n};\n\nproto.prepareStageTasks = function () {\n  var stageTaskMap = this._stageTaskMap;\n  var ecModel = this.ecInstance.getModel();\n  var api = this.api;\n  each(this._allHandlers, function (handler) {\n    var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, []);\n    handler.reset && createSeriesStageTask(this, handler, record, ecModel, api);\n    handler.overallReset && createOverallStageTask(this, handler, record, ecModel, api);\n  }, this);\n};\n\nproto.prepareView = function (view, model, ecModel, api) {\n  var renderTask = view.renderTask;\n  var context = renderTask.context;\n  context.model = model;\n  context.ecModel = ecModel;\n  context.api = api;\n  renderTask.__block = !view.incrementalPrepareRender;\n  pipe(this, model, renderTask);\n};\n\nproto.performDataProcessorTasks = function (ecModel, payload) {\n  // If we do not use `block` here, it should be considered when to update modes.\n  performStageTasks(this, this._dataProcessorHandlers, ecModel, payload, {\n    block: true\n  });\n}; // opt\n// opt.visualType: 'visual' or 'layout'\n// opt.setDirty\n\n\nproto.performVisualTasks = function (ecModel, payload, opt) {\n  performStageTasks(this, this._visualHandlers, ecModel, payload, opt);\n};\n\nfunction performStageTasks(scheduler, stageHandlers, ecModel, payload, opt) {\n  opt = opt || {};\n  var unfinished;\n  each(stageHandlers, function (stageHandler, idx) {\n    if (opt.visualType && opt.visualType !== stageHandler.visualType) {\n      return;\n    }\n\n    var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\n\n    var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\n    var overallTask = stageHandlerRecord.overallTask;\n\n    if (overallTask) {\n      var overallNeedDirty;\n      var agentStubMap = overallTask.agentStubMap;\n      agentStubMap.each(function (stub) {\n        if (needSetDirty(opt, stub)) {\n          stub.dirty();\n          overallNeedDirty = true;\n        }\n      });\n      overallNeedDirty && overallTask.dirty();\n      updatePayload(overallTask, payload);\n      var performArgs = scheduler.getPerformArgs(overallTask, opt.block); // Execute stubs firstly, which may set the overall task dirty,\n      // then execute the overall task. And stub will call seriesModel.setData,\n      // which ensures that in the overallTask seriesModel.getData() will not\n      // return incorrect data.\n\n      agentStubMap.each(function (stub) {\n        stub.perform(performArgs);\n      });\n      unfinished |= overallTask.perform(performArgs);\n    } else if (seriesTaskMap) {\n      seriesTaskMap.each(function (task, pipelineId) {\n        if (needSetDirty(opt, task)) {\n          task.dirty();\n        }\n\n        var performArgs = scheduler.getPerformArgs(task, opt.block); // FIXME\n        // if intending to decalare `performRawSeries` in handlers, only\n        // stream-independent (specifically, data item independent) operations can be\n        // performed. Because is a series is filtered, most of the tasks will not\n        // be performed. A stream-dependent operation probably cause wrong biz logic.\n        // Perhaps we should not provide a separate callback for this case instead\n        // of providing the config `performRawSeries`. The stream-dependent operaions\n        // and stream-independent operations should better not be mixed.\n\n        performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model);\n        updatePayload(task, payload);\n        unfinished |= task.perform(performArgs);\n      });\n    }\n  });\n\n  function needSetDirty(opt, task) {\n    return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\n  }\n\n  scheduler.unfinished |= unfinished;\n}\n\nproto.performSeriesTasks = function (ecModel) {\n  var unfinished;\n  ecModel.eachSeries(function (seriesModel) {\n    // Progress to the end for dataInit and dataRestore.\n    unfinished |= seriesModel.dataTask.perform();\n  });\n  this.unfinished |= unfinished;\n};\n\nproto.plan = function () {\n  // Travel pipelines, check block.\n  this._pipelineMap.each(function (pipeline) {\n    var task = pipeline.tail;\n\n    do {\n      if (task.__block) {\n        pipeline.blockIndex = task.__idxInPipeline;\n        break;\n      }\n\n      task = task.getUpstream();\n    } while (task);\n  });\n};\n\nvar updatePayload = proto.updatePayload = function (task, payload) {\n  payload !== 'remain' && (task.context.payload = payload);\n};\n\nfunction createSeriesStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n  var seriesTaskMap = stageHandlerRecord.seriesTaskMap || (stageHandlerRecord.seriesTaskMap = createHashMap());\n  var seriesType = stageHandler.seriesType;\n  var getTargetSeries = stageHandler.getTargetSeries; // If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily,\n  // to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`,\n  // it works but it may cause other irrelevant charts blocked.\n\n  if (stageHandler.createOnAllSeries) {\n    ecModel.eachRawSeries(create);\n  } else if (seriesType) {\n    ecModel.eachRawSeriesByType(seriesType, create);\n  } else if (getTargetSeries) {\n    getTargetSeries(ecModel, api).each(create);\n  }\n\n  function create(seriesModel) {\n    var pipelineId = seriesModel.uid; // Init tasks for each seriesModel only once.\n    // Reuse original task instance.\n\n    var task = seriesTaskMap.get(pipelineId) || seriesTaskMap.set(pipelineId, createTask({\n      plan: seriesTaskPlan,\n      reset: seriesTaskReset,\n      count: seriesTaskCount\n    }));\n    task.context = {\n      model: seriesModel,\n      ecModel: ecModel,\n      api: api,\n      useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\n      plan: stageHandler.plan,\n      reset: stageHandler.reset,\n      scheduler: scheduler\n    };\n    pipe(scheduler, seriesModel, task);\n  } // Clear unused series tasks.\n\n\n  var pipelineMap = scheduler._pipelineMap;\n  seriesTaskMap.each(function (task, pipelineId) {\n    if (!pipelineMap.get(pipelineId)) {\n      task.dispose();\n      seriesTaskMap.removeKey(pipelineId);\n    }\n  });\n}\n\nfunction createOverallStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n  var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask // For overall task, the function only be called on reset stage.\n  || createTask({\n    reset: overallTaskReset\n  });\n  overallTask.context = {\n    ecModel: ecModel,\n    api: api,\n    overallReset: stageHandler.overallReset,\n    scheduler: scheduler\n  }; // Reuse orignal stubs.\n\n  var agentStubMap = overallTask.agentStubMap = overallTask.agentStubMap || createHashMap();\n  var seriesType = stageHandler.seriesType;\n  var getTargetSeries = stageHandler.getTargetSeries;\n  var overallProgress = true;\n  var modifyOutputEnd = stageHandler.modifyOutputEnd; // An overall task with seriesType detected or has `getTargetSeries`, we add\n  // stub in each pipelines, it will set the overall task dirty when the pipeline\n  // progress. Moreover, to avoid call the overall task each frame (too frequent),\n  // we set the pipeline block.\n\n  if (seriesType) {\n    ecModel.eachRawSeriesByType(seriesType, createStub);\n  } else if (getTargetSeries) {\n    getTargetSeries(ecModel, api).each(createStub);\n  } // Otherwise, (usually it is legancy case), the overall task will only be\n  // executed when upstream dirty. Otherwise the progressive rendering of all\n  // pipelines will be disabled unexpectedly. But it still needs stubs to receive\n  // dirty info from upsteam.\n  else {\n      overallProgress = false;\n      each(ecModel.getSeries(), createStub);\n    }\n\n  function createStub(seriesModel) {\n    var pipelineId = seriesModel.uid;\n    var stub = agentStubMap.get(pipelineId);\n\n    if (!stub) {\n      stub = agentStubMap.set(pipelineId, createTask({\n        reset: stubReset,\n        onDirty: stubOnDirty\n      })); // When the result of `getTargetSeries` changed, the overallTask\n      // should be set as dirty and re-performed.\n\n      overallTask.dirty();\n    }\n\n    stub.context = {\n      model: seriesModel,\n      overallProgress: overallProgress,\n      modifyOutputEnd: modifyOutputEnd\n    };\n    stub.agent = overallTask;\n    stub.__block = overallProgress;\n    pipe(scheduler, seriesModel, stub);\n  } // Clear unused stubs.\n\n\n  var pipelineMap = scheduler._pipelineMap;\n  agentStubMap.each(function (stub, pipelineId) {\n    if (!pipelineMap.get(pipelineId)) {\n      stub.dispose(); // When the result of `getTargetSeries` changed, the overallTask\n      // should be set as dirty and re-performed.\n\n      overallTask.dirty();\n      agentStubMap.removeKey(pipelineId);\n    }\n  });\n}\n\nfunction overallTaskReset(context) {\n  context.overallReset(context.ecModel, context.api, context.payload);\n}\n\nfunction stubReset(context, upstreamContext) {\n  return context.overallProgress && stubProgress;\n}\n\nfunction stubProgress() {\n  this.agent.dirty();\n  this.getDownstream().dirty();\n}\n\nfunction stubOnDirty() {\n  this.agent && this.agent.dirty();\n}\n\nfunction seriesTaskPlan(context) {\n  return context.plan && context.plan(context.model, context.ecModel, context.api, context.payload);\n}\n\nfunction seriesTaskReset(context) {\n  if (context.useClearVisual) {\n    context.data.clearAllVisual();\n  }\n\n  var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\n  return resetDefines.length > 1 ? map(resetDefines, function (v, idx) {\n    return makeSeriesTaskProgress(idx);\n  }) : singleSeriesTaskProgress;\n}\n\nvar singleSeriesTaskProgress = makeSeriesTaskProgress(0);\n\nfunction makeSeriesTaskProgress(resetDefineIdx) {\n  return function (params, context) {\n    var data = context.data;\n    var resetDefine = context.resetDefines[resetDefineIdx];\n\n    if (resetDefine && resetDefine.dataEach) {\n      for (var i = params.start; i < params.end; i++) {\n        resetDefine.dataEach(data, i);\n      }\n    } else if (resetDefine && resetDefine.progress) {\n      resetDefine.progress(params, data);\n    }\n  };\n}\n\nfunction seriesTaskCount(context) {\n  return context.data.count();\n}\n\nfunction pipe(scheduler, seriesModel, task) {\n  var pipelineId = seriesModel.uid;\n\n  var pipeline = scheduler._pipelineMap.get(pipelineId);\n\n  !pipeline.head && (pipeline.head = task);\n  pipeline.tail && pipeline.tail.pipe(task);\n  pipeline.tail = task;\n  task.__idxInPipeline = pipeline.count++;\n  task.__pipeline = pipeline;\n}\n\nScheduler.wrapStageHandler = function (stageHandler, visualType) {\n  if (isFunction(stageHandler)) {\n    stageHandler = {\n      overallReset: stageHandler,\n      seriesType: detectSeriseType(stageHandler)\n    };\n  }\n\n  stageHandler.uid = getUID('stageHandler');\n  visualType && (stageHandler.visualType = visualType);\n  return stageHandler;\n};\n/**\n * Only some legacy stage handlers (usually in echarts extensions) are pure function.\n * To ensure that they can work normally, they should work in block mode, that is,\n * they should not be started util the previous tasks finished. So they cause the\n * progressive rendering disabled. We try to detect the series type, to narrow down\n * the block range to only the series type they concern, but not all series.\n */\n\n\nfunction detectSeriseType(legacyFunc) {\n  seriesType = null;\n\n  try {\n    // Assume there is no async when calling `eachSeriesByType`.\n    legacyFunc(ecModelMock, apiMock);\n  } catch (e) {}\n\n  return seriesType;\n}\n\nvar ecModelMock = {};\nvar apiMock = {};\nvar seriesType;\nmockMethods(ecModelMock, GlobalModel);\nmockMethods(apiMock, ExtensionAPI);\n\necModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\n  seriesType = type;\n};\n\necModelMock.eachComponent = function (cond) {\n  if (cond.mainType === 'series' && cond.subType) {\n    seriesType = cond.subType;\n  }\n};\n\nfunction mockMethods(target, Clz) {\n  /* eslint-disable */\n  for (var name in Clz.prototype) {\n    // Do not use hasOwnProperty\n    target[name] = noop;\n  }\n  /* eslint-enable */\n\n}\n\nvar _default = Scheduler;\nmodule.exports = _default;\n\n/***/ }),\n/* 1039 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar colorAll = ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'];\nvar _default = {\n  color: colorAll,\n  colorLayer: [['#37A2DA', '#ffd85c', '#fd7b5f'], ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'], ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'], colorAll]\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1040 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar contrastColor = '#eee';\n\nvar axisCommon = function () {\n  return {\n    axisLine: {\n      lineStyle: {\n        color: contrastColor\n      }\n    },\n    axisTick: {\n      lineStyle: {\n        color: contrastColor\n      }\n    },\n    axisLabel: {\n      textStyle: {\n        color: contrastColor\n      }\n    },\n    splitLine: {\n      lineStyle: {\n        type: 'dashed',\n        color: '#aaa'\n      }\n    },\n    splitArea: {\n      areaStyle: {\n        color: contrastColor\n      }\n    }\n  };\n};\n\nvar colorPalette = ['#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78', '#73a373', '#73b9bc', '#7289ab', '#91ca8c', '#f49f42'];\nvar theme = {\n  color: colorPalette,\n  backgroundColor: '#333',\n  tooltip: {\n    axisPointer: {\n      lineStyle: {\n        color: contrastColor\n      },\n      crossStyle: {\n        color: contrastColor\n      },\n      label: {\n        color: '#000'\n      }\n    }\n  },\n  legend: {\n    textStyle: {\n      color: contrastColor\n    }\n  },\n  textStyle: {\n    color: contrastColor\n  },\n  title: {\n    textStyle: {\n      color: contrastColor\n    }\n  },\n  toolbox: {\n    iconStyle: {\n      normal: {\n        borderColor: contrastColor\n      }\n    }\n  },\n  dataZoom: {\n    textStyle: {\n      color: contrastColor\n    }\n  },\n  visualMap: {\n    textStyle: {\n      color: contrastColor\n    }\n  },\n  timeline: {\n    lineStyle: {\n      color: contrastColor\n    },\n    itemStyle: {\n      normal: {\n        color: colorPalette[1]\n      }\n    },\n    label: {\n      normal: {\n        textStyle: {\n          color: contrastColor\n        }\n      }\n    },\n    controlStyle: {\n      normal: {\n        color: contrastColor,\n        borderColor: contrastColor\n      }\n    }\n  },\n  timeAxis: axisCommon(),\n  logAxis: axisCommon(),\n  valueAxis: axisCommon(),\n  categoryAxis: axisCommon(),\n  line: {\n    symbol: 'circle'\n  },\n  graph: {\n    color: colorPalette\n  },\n  gauge: {\n    title: {\n      textStyle: {\n        color: contrastColor\n      }\n    }\n  },\n  candlestick: {\n    itemStyle: {\n      normal: {\n        color: '#FD1050',\n        color0: '#0CF49B',\n        borderColor: '#FD1050',\n        borderColor0: '#0CF49B'\n      }\n    }\n  }\n};\ntheme.categoryAxis.splitLine.show = false;\nvar _default = theme;\nmodule.exports = _default;\n\n/***/ }),\n/* 1041 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Path = __webpack_require__(63);\n\n/**\n * 椭圆形状\n * @module zrender/graphic/shape/Ellipse\n */\nvar _default = Path.extend({\n  type: 'ellipse',\n  shape: {\n    cx: 0,\n    cy: 0,\n    rx: 0,\n    ry: 0\n  },\n  buildPath: function (ctx, shape) {\n    var k = 0.5522848;\n    var x = shape.cx;\n    var y = shape.cy;\n    var a = shape.rx;\n    var b = shape.ry;\n    var ox = a * k; // 水平控制点偏移量\n\n    var oy = b * k; // 垂直控制点偏移量\n    // 从椭圆的左端点开始顺时针绘制四条三次贝塞尔曲线\n\n    ctx.moveTo(x - a, y);\n    ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\n    ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\n    ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\n    ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\n    ctx.closePath();\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1042 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar createListFromArray = __webpack_require__(145);\n\nvar axisHelper = __webpack_require__(122);\n\nvar axisModelCommonMixin = __webpack_require__(216);\n\nvar Model = __webpack_require__(67);\n\nvar _layout = __webpack_require__(49);\n\nvar getLayoutRect = _layout.getLayoutRect;\nexports.getLayoutRect = _layout.getLayoutRect;\n\nvar _dataStackHelper = __webpack_require__(132);\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nvar _completeDimensions = __webpack_require__(574);\n\nexports.completeDimensions = _completeDimensions;\n\nvar _createDimensions = __webpack_require__(215);\n\nexports.createDimensions = _createDimensions;\n\nvar _symbol = __webpack_require__(117);\n\nexports.createSymbol = _symbol.createSymbol;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge';\n\n/**\n * Create a muti dimension List structure from seriesModel.\n * @param  {module:echarts/model/Model} seriesModel\n * @return {module:echarts/data/List} list\n */\nfunction createList(seriesModel) {\n  return createListFromArray(seriesModel.getSource(), seriesModel);\n} // export function createGraph(seriesModel) {\n//     var nodes = seriesModel.get('data');\n//     var links = seriesModel.get('links');\n//     return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\n\nvar dataStack = {\n  isDimensionStacked: isDimensionStacked,\n  enableDataStack: enableDataStack,\n  getStackedDimension: getStackedDimension\n};\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolDesc\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n */\n\n/**\n * Create scale\n * @param {Array.<number>} dataExtent\n * @param {Object|module:echarts/Model} option\n */\nfunction createScale(dataExtent, option) {\n  var axisModel = option;\n\n  if (!Model.isInstance(option)) {\n    axisModel = new Model(option);\n    zrUtil.mixin(axisModel, axisModelCommonMixin);\n  }\n\n  var scale = axisHelper.createScaleByModel(axisModel);\n  scale.setExtent(dataExtent[0], dataExtent[1]);\n  axisHelper.niceScaleExtent(scale, axisModel);\n  return scale;\n}\n/**\n * Mixin common methods to axis model,\n *\n * Inlcude methods\n * `getFormattedLabels() => Array.<string>`\n * `getCategories() => Array.<string>`\n * `getMin(origin: boolean) => number`\n * `getMax(origin: boolean) => number`\n * `getNeedCrossZero() => boolean`\n * `setRange(start: number, end: number)`\n * `resetRange()`\n */\n\n\nfunction mixinAxisModelCommonMethods(Model) {\n  zrUtil.mixin(Model, axisModelCommonMixin);\n}\n\nexports.createList = createList;\nexports.dataStack = dataStack;\nexports.createScale = createScale;\nexports.mixinAxisModelCommonMethods = mixinAxisModelCommonMethods;\n\n/***/ }),\n/* 1043 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = __webpack_require__(2);\n\nvar createHashMap = _util.createHashMap;\nvar retrieve = _util.retrieve;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Helper for model references.\n * There are many manners to refer axis/coordSys.\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\n\n/**\n * @class\n * For example:\n * {\n *     coordSysName: 'cartesian2d',\n *     coordSysDims: ['x', 'y', ...],\n *     axisMap: HashMap({\n *         x: xAxisModel,\n *         y: yAxisModel\n *     }),\n *     categoryAxisMap: HashMap({\n *         x: xAxisModel,\n *         y: undefined\n *     }),\n *     // The index of the first category axis in `coordSysDims`.\n *     // `null/undefined` means no category axis exists.\n *     firstCategoryDimIndex: 1,\n *     // To replace user specified encode.\n * }\n */\nfunction CoordSysInfo(coordSysName) {\n  /**\n   * @type {string}\n   */\n  this.coordSysName = coordSysName;\n  /**\n   * @type {Array.<string>}\n   */\n\n  this.coordSysDims = [];\n  /**\n   * @type {module:zrender/core/util#HashMap}\n   */\n\n  this.axisMap = createHashMap();\n  /**\n   * @type {module:zrender/core/util#HashMap}\n   */\n\n  this.categoryAxisMap = createHashMap();\n  /**\n   * @type {number}\n   */\n\n  this.firstCategoryDimIndex = null;\n}\n/**\n * @return {module:model/referHelper#CoordSysInfo}\n */\n\n\nfunction getCoordSysInfoBySeries(seriesModel) {\n  var coordSysName = seriesModel.get('coordinateSystem');\n  var result = new CoordSysInfo(coordSysName);\n  var fetch = fetchers[coordSysName];\n\n  if (fetch) {\n    fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n    return result;\n  }\n}\n\nvar fetchers = {\n  cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var xAxisModel = seriesModel.getReferringComponents('xAxis')[0];\n    var yAxisModel = seriesModel.getReferringComponents('yAxis')[0];\n    result.coordSysDims = ['x', 'y'];\n    axisMap.set('x', xAxisModel);\n    axisMap.set('y', yAxisModel);\n\n    if (isCategory(xAxisModel)) {\n      categoryAxisMap.set('x', xAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n\n    if (isCategory(yAxisModel)) {\n      categoryAxisMap.set('y', yAxisModel);\n      result.firstCategoryDimIndex == null & (result.firstCategoryDimIndex = 1);\n    }\n  },\n  singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var singleAxisModel = seriesModel.getReferringComponents('singleAxis')[0];\n    result.coordSysDims = ['single'];\n    axisMap.set('single', singleAxisModel);\n\n    if (isCategory(singleAxisModel)) {\n      categoryAxisMap.set('single', singleAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n  },\n  polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var polarModel = seriesModel.getReferringComponents('polar')[0];\n    var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n    var angleAxisModel = polarModel.findAxisModel('angleAxis');\n    result.coordSysDims = ['radius', 'angle'];\n    axisMap.set('radius', radiusAxisModel);\n    axisMap.set('angle', angleAxisModel);\n\n    if (isCategory(radiusAxisModel)) {\n      categoryAxisMap.set('radius', radiusAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n\n    if (isCategory(angleAxisModel)) {\n      categoryAxisMap.set('angle', angleAxisModel);\n      result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\n    }\n  },\n  geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n    result.coordSysDims = ['lng', 'lat'];\n  },\n  parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var ecModel = seriesModel.ecModel;\n    var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n    var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n    each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n      var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n      var axisDim = coordSysDims[index];\n      axisMap.set(axisDim, axisModel);\n\n      if (isCategory(axisModel) && result.firstCategoryDimIndex == null) {\n        categoryAxisMap.set(axisDim, axisModel);\n        result.firstCategoryDimIndex = index;\n      }\n    });\n  }\n};\n\nfunction isCategory(axisModel) {\n  return axisModel.get('type') === 'category';\n}\n\nexports.getCoordSysInfoBySeries = getCoordSysInfoBySeries;\n\n/***/ }),\n/* 1044 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Scale = __webpack_require__(329);\n\nvar OrdinalMeta = __webpack_require__(575);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Linear continuous scale\n * @module echarts/coord/scale/Ordinal\n *\n * http://en.wikipedia.org/wiki/Level_of_measurement\n */\n// FIXME only one data\nvar scaleProto = Scale.prototype;\nvar OrdinalScale = Scale.extend({\n  type: 'ordinal',\n\n  /**\n   * @param {module:echarts/data/OrdianlMeta|Array.<string>} ordinalMeta\n   */\n  init: function (ordinalMeta, extent) {\n    // Caution: Should not use instanceof, consider ec-extensions using\n    // import approach to get OrdinalMeta class.\n    if (!ordinalMeta || zrUtil.isArray(ordinalMeta)) {\n      ordinalMeta = new OrdinalMeta({\n        categories: ordinalMeta\n      });\n    }\n\n    this._ordinalMeta = ordinalMeta;\n    this._extent = extent || [0, ordinalMeta.categories.length - 1];\n  },\n  parse: function (val) {\n    return typeof val === 'string' ? this._ordinalMeta.getOrdinal(val) // val might be float.\n    : Math.round(val);\n  },\n  contain: function (rank) {\n    rank = this.parse(rank);\n    return scaleProto.contain.call(this, rank) && this._ordinalMeta.categories[rank] != null;\n  },\n\n  /**\n   * Normalize given rank or name to linear [0, 1]\n   * @param {number|string} [val]\n   * @return {number}\n   */\n  normalize: function (val) {\n    return scaleProto.normalize.call(this, this.parse(val));\n  },\n  scale: function (val) {\n    return Math.round(scaleProto.scale.call(this, val));\n  },\n\n  /**\n   * @return {Array}\n   */\n  getTicks: function () {\n    var ticks = [];\n    var extent = this._extent;\n    var rank = extent[0];\n\n    while (rank <= extent[1]) {\n      ticks.push(rank);\n      rank++;\n    }\n\n    return ticks;\n  },\n\n  /**\n   * Get item on rank n\n   * @param {number} n\n   * @return {string}\n   */\n  getLabel: function (n) {\n    if (!this.isBlank()) {\n      // Note that if no data, ordinalMeta.categories is an empty array.\n      return this._ordinalMeta.categories[n];\n    }\n  },\n\n  /**\n   * @return {number}\n   */\n  count: function () {\n    return this._extent[1] - this._extent[0] + 1;\n  },\n\n  /**\n   * @override\n   */\n  unionExtentFromData: function (data, dim) {\n    this.unionExtent(data.getApproximateExtent(dim));\n  },\n  getOrdinalMeta: function () {\n    return this._ordinalMeta;\n  },\n  niceTicks: zrUtil.noop,\n  niceExtent: zrUtil.noop\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nOrdinalScale.create = function () {\n  return new OrdinalScale();\n};\n\nvar _default = OrdinalScale;\nmodule.exports = _default;\n\n/***/ }),\n/* 1045 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar numberUtil = __webpack_require__(26);\n\nvar formatUtil = __webpack_require__(50);\n\nvar scaleHelper = __webpack_require__(576);\n\nvar IntervalScale = __webpack_require__(330);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The \"scaleLevels\" was originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment on the definition of \"scaleLevels\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* </licenses/LICENSE-d3>).\n*/\n// [About UTC and local time zone]:\n// In most cases, `number.parseDate` will treat input data string as local time\n// (except time zone is specified in time string). And `format.formateTime` returns\n// local time by default. option.useUTC is false by default. This design have\n// concidered these common case:\n// (1) Time that is persistent in server is in UTC, but it is needed to be diplayed\n// in local time by default.\n// (2) By default, the input data string (e.g., '2011-01-02') should be displayed\n// as its original time, without any time difference.\nvar intervalScaleProto = IntervalScale.prototype;\nvar mathCeil = Math.ceil;\nvar mathFloor = Math.floor;\nvar ONE_SECOND = 1000;\nvar ONE_MINUTE = ONE_SECOND * 60;\nvar ONE_HOUR = ONE_MINUTE * 60;\nvar ONE_DAY = ONE_HOUR * 24; // FIXME 公用？\n\nvar bisect = function (a, x, lo, hi) {\n  while (lo < hi) {\n    var mid = lo + hi >>> 1;\n\n    if (a[mid][1] < x) {\n      lo = mid + 1;\n    } else {\n      hi = mid;\n    }\n  }\n\n  return lo;\n};\n/**\n * @alias module:echarts/coord/scale/Time\n * @constructor\n */\n\n\nvar TimeScale = IntervalScale.extend({\n  type: 'time',\n\n  /**\n   * @override\n   */\n  getLabel: function (val) {\n    var stepLvl = this._stepLvl;\n    var date = new Date(val);\n    return formatUtil.formatTime(stepLvl[0], date, this.getSetting('useUTC'));\n  },\n\n  /**\n   * @override\n   */\n  niceExtent: function (opt) {\n    var extent = this._extent; // If extent start and end are same, expand them\n\n    if (extent[0] === extent[1]) {\n      // Expand extent\n      extent[0] -= ONE_DAY;\n      extent[1] += ONE_DAY;\n    } // If there are no data and extent are [Infinity, -Infinity]\n\n\n    if (extent[1] === -Infinity && extent[0] === Infinity) {\n      var d = new Date();\n      extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\n      extent[0] = extent[1] - ONE_DAY;\n    }\n\n    this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n    var interval = this._interval;\n\n    if (!opt.fixMin) {\n      extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);\n    }\n\n    if (!opt.fixMax) {\n      extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);\n    }\n  },\n\n  /**\n   * @override\n   */\n  niceTicks: function (approxTickNum, minInterval, maxInterval) {\n    approxTickNum = approxTickNum || 10;\n    var extent = this._extent;\n    var span = extent[1] - extent[0];\n    var approxInterval = span / approxTickNum;\n\n    if (minInterval != null && approxInterval < minInterval) {\n      approxInterval = minInterval;\n    }\n\n    if (maxInterval != null && approxInterval > maxInterval) {\n      approxInterval = maxInterval;\n    }\n\n    var scaleLevelsLen = scaleLevels.length;\n    var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);\n    var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];\n    var interval = level[1]; // Same with interval scale if span is much larger than 1 year\n\n    if (level[0] === 'year') {\n      var yearSpan = span / interval; // From \"Nice Numbers for Graph Labels\" of Graphic Gems\n      // var niceYearSpan = numberUtil.nice(yearSpan, false);\n\n      var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);\n      interval *= yearStep;\n    }\n\n    var timezoneOffset = this.getSetting('useUTC') ? 0 : new Date(+extent[0] || +extent[1]).getTimezoneOffset() * 60 * 1000;\n    var niceExtent = [Math.round(mathCeil((extent[0] - timezoneOffset) / interval) * interval + timezoneOffset), Math.round(mathFloor((extent[1] - timezoneOffset) / interval) * interval + timezoneOffset)];\n    scaleHelper.fixExtent(niceExtent, extent);\n    this._stepLvl = level; // Interval will be used in getTicks\n\n    this._interval = interval;\n    this._niceExtent = niceExtent;\n  },\n  parse: function (val) {\n    // val might be float.\n    return +numberUtil.parseDate(val);\n  }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n  TimeScale.prototype[methodName] = function (val) {\n    return intervalScaleProto[methodName].call(this, this.parse(val));\n  };\n});\n/**\n * This implementation was originally copied from \"d3.js\"\n * <https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/time/scale.js>\n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\nvar scaleLevels = [// Format              interval\n['hh:mm:ss', ONE_SECOND], // 1s\n['hh:mm:ss', ONE_SECOND * 5], // 5s\n['hh:mm:ss', ONE_SECOND * 10], // 10s\n['hh:mm:ss', ONE_SECOND * 15], // 15s\n['hh:mm:ss', ONE_SECOND * 30], // 30s\n['hh:mm\\nMM-dd', ONE_MINUTE], // 1m\n['hh:mm\\nMM-dd', ONE_MINUTE * 5], // 5m\n['hh:mm\\nMM-dd', ONE_MINUTE * 10], // 10m\n['hh:mm\\nMM-dd', ONE_MINUTE * 15], // 15m\n['hh:mm\\nMM-dd', ONE_MINUTE * 30], // 30m\n['hh:mm\\nMM-dd', ONE_HOUR], // 1h\n['hh:mm\\nMM-dd', ONE_HOUR * 2], // 2h\n['hh:mm\\nMM-dd', ONE_HOUR * 6], // 6h\n['hh:mm\\nMM-dd', ONE_HOUR * 12], // 12h\n['MM-dd\\nyyyy', ONE_DAY], // 1d\n['MM-dd\\nyyyy', ONE_DAY * 2], // 2d\n['MM-dd\\nyyyy', ONE_DAY * 3], // 3d\n['MM-dd\\nyyyy', ONE_DAY * 4], // 4d\n['MM-dd\\nyyyy', ONE_DAY * 5], // 5d\n['MM-dd\\nyyyy', ONE_DAY * 6], // 6d\n['week', ONE_DAY * 7], // 7d\n['MM-dd\\nyyyy', ONE_DAY * 10], // 10d\n['week', ONE_DAY * 14], // 2w\n['week', ONE_DAY * 21], // 3w\n['month', ONE_DAY * 31], // 1M\n['week', ONE_DAY * 42], // 6w\n['month', ONE_DAY * 62], // 2M\n['week', ONE_DAY * 70], // 10w\n['quarter', ONE_DAY * 95], // 3M\n['month', ONE_DAY * 31 * 4], // 4M\n['month', ONE_DAY * 31 * 5], // 5M\n['half-year', ONE_DAY * 380 / 2], // 6M\n['month', ONE_DAY * 31 * 8], // 8M\n['month', ONE_DAY * 31 * 10], // 10M\n['year', ONE_DAY * 380] // 1Y\n];\n/**\n * @param {module:echarts/model/Model}\n * @return {module:echarts/scale/Time}\n */\n\nTimeScale.create = function (model) {\n  return new TimeScale({\n    useUTC: model.ecModel.get('useUTC')\n  });\n};\n\nvar _default = TimeScale;\nmodule.exports = _default;\n\n/***/ }),\n/* 1046 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar textContain = __webpack_require__(108);\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\n\nvar _axisHelper = __webpack_require__(122);\n\nvar makeLabelFormatter = _axisHelper.makeLabelFormatter;\nvar getOptionCategoryInterval = _axisHelper.getOptionCategoryInterval;\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\n/**\n * @param {module:echats/coord/Axis} axis\n * @return {Object} {\n *     labels: [{\n *         formattedLabel: string,\n *         rawLabel: string,\n *         tickValue: number\n *     }, ...],\n *     labelCategoryInterval: number\n * }\n */\n\nfunction createAxisLabels(axis) {\n  // Only ordinal scale support tick interval\n  return axis.type === 'category' ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);\n}\n/**\n * @param {module:echats/coord/Axis} axis\n * @param {module:echarts/model/Model} tickModel For example, can be axisTick, splitLine, splitArea.\n * @return {Object} {\n *     ticks: Array.<number>\n *     tickCategoryInterval: number\n * }\n */\n\n\nfunction createAxisTicks(axis, tickModel) {\n  // Only ordinal scale support tick interval\n  return axis.type === 'category' ? makeCategoryTicks(axis, tickModel) : {\n    ticks: axis.scale.getTicks()\n  };\n}\n\nfunction makeCategoryLabels(axis) {\n  var labelModel = axis.getLabelModel();\n  var result = makeCategoryLabelsActually(axis, labelModel);\n  return !labelModel.get('show') || axis.scale.isBlank() ? {\n    labels: [],\n    labelCategoryInterval: result.labelCategoryInterval\n  } : result;\n}\n\nfunction makeCategoryLabelsActually(axis, labelModel) {\n  var labelsCache = getListCache(axis, 'labels');\n  var optionLabelInterval = getOptionCategoryInterval(labelModel);\n  var result = listCacheGet(labelsCache, optionLabelInterval);\n\n  if (result) {\n    return result;\n  }\n\n  var labels;\n  var numericLabelInterval;\n\n  if (zrUtil.isFunction(optionLabelInterval)) {\n    labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\n  } else {\n    numericLabelInterval = optionLabelInterval === 'auto' ? makeAutoCategoryInterval(axis) : optionLabelInterval;\n    labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\n  } // Cache to avoid calling interval function repeatly.\n\n\n  return listCacheSet(labelsCache, optionLabelInterval, {\n    labels: labels,\n    labelCategoryInterval: numericLabelInterval\n  });\n}\n\nfunction makeCategoryTicks(axis, tickModel) {\n  var ticksCache = getListCache(axis, 'ticks');\n  var optionTickInterval = getOptionCategoryInterval(tickModel);\n  var result = listCacheGet(ticksCache, optionTickInterval);\n\n  if (result) {\n    return result;\n  }\n\n  var ticks;\n  var tickCategoryInterval; // Optimize for the case that large category data and no label displayed,\n  // we should not return all ticks.\n\n  if (!tickModel.get('show') || axis.scale.isBlank()) {\n    ticks = [];\n  }\n\n  if (zrUtil.isFunction(optionTickInterval)) {\n    ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\n  } // Always use label interval by default despite label show. Consider this\n  // scenario, Use multiple grid with the xAxis sync, and only one xAxis shows\n  // labels. `splitLine` and `axisTick` should be consistent in this case.\n  else if (optionTickInterval === 'auto') {\n      var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\n      tickCategoryInterval = labelsResult.labelCategoryInterval;\n      ticks = zrUtil.map(labelsResult.labels, function (labelItem) {\n        return labelItem.tickValue;\n      });\n    } else {\n      tickCategoryInterval = optionTickInterval;\n      ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\n    } // Cache to avoid calling interval function repeatly.\n\n\n  return listCacheSet(ticksCache, optionTickInterval, {\n    ticks: ticks,\n    tickCategoryInterval: tickCategoryInterval\n  });\n}\n\nfunction makeRealNumberLabels(axis) {\n  var ticks = axis.scale.getTicks();\n  var labelFormatter = makeLabelFormatter(axis);\n  return {\n    labels: zrUtil.map(ticks, function (tickValue, idx) {\n      return {\n        formattedLabel: labelFormatter(tickValue, idx),\n        rawLabel: axis.scale.getLabel(tickValue),\n        tickValue: tickValue\n      };\n    })\n  };\n} // Large category data calculation is performence sensitive, and ticks and label\n// probably be fetched by multiple times. So we cache the result.\n// axis is created each time during a ec process, so we do not need to clear cache.\n\n\nfunction getListCache(axis, prop) {\n  // Because key can be funciton, and cache size always be small, we use array cache.\n  return inner(axis)[prop] || (inner(axis)[prop] = []);\n}\n\nfunction listCacheGet(cache, key) {\n  for (var i = 0; i < cache.length; i++) {\n    if (cache[i].key === key) {\n      return cache[i].value;\n    }\n  }\n}\n\nfunction listCacheSet(cache, key, value) {\n  cache.push({\n    key: key,\n    value: value\n  });\n  return value;\n}\n\nfunction makeAutoCategoryInterval(axis) {\n  var result = inner(axis).autoInterval;\n  return result != null ? result : inner(axis).autoInterval = axis.calculateCategoryInterval();\n}\n/**\n * Calculate interval for category axis ticks and labels.\n * To get precise result, at least one of `getRotate` and `isHorizontal`\n * should be implemented in axis.\n */\n\n\nfunction calculateCategoryInterval(axis) {\n  var params = fetchAutoCategoryIntervalCalculationParams(axis);\n  var labelFormatter = makeLabelFormatter(axis);\n  var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\n  var ordinalScale = axis.scale;\n  var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n  // avoid generating a long array by `getTicks`\n  // in large category data case.\n\n  var tickCount = ordinalScale.count();\n\n  if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n    return 0;\n  }\n\n  var step = 1; // Simple optimization. Empirical value: tick count should less than 40.\n\n  if (tickCount > 40) {\n    step = Math.max(1, Math.floor(tickCount / 40));\n  }\n\n  var tickValue = ordinalExtent[0];\n  var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n  var unitW = Math.abs(unitSpan * Math.cos(rotation));\n  var unitH = Math.abs(unitSpan * Math.sin(rotation));\n  var maxW = 0;\n  var maxH = 0; // Caution: Performance sensitive for large category data.\n  // Consider dataZoom, we should make appropriate step to avoid O(n) loop.\n\n  for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n    var width = 0;\n    var height = 0; // Not precise, do not consider align and vertical align\n    // and each distance from axis line yet.\n\n    var rect = textContain.getBoundingRect(labelFormatter(tickValue), params.font, 'center', 'top'); // Magic number\n\n    width = rect.width * 1.3;\n    height = rect.height * 1.3; // Min size, void long loop.\n\n    maxW = Math.max(maxW, width, 7);\n    maxH = Math.max(maxH, height, 7);\n  }\n\n  var dw = maxW / unitW;\n  var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n  isNaN(dw) && (dw = Infinity);\n  isNaN(dh) && (dh = Infinity);\n  var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\n  var cache = inner(axis.model);\n  var axisExtent = axis.getExtent();\n  var lastAutoInterval = cache.lastAutoInterval;\n  var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n  // otherwise the calculated interval might jitter when the zoom\n  // window size is close to the interval-changing size.\n  // For example, if all of the axis labels are `a, b, c, d, e, f, g`.\n  // The jitter will cause that sometimes the displayed labels are\n  // `a, d, g` (interval: 2) sometimes `a, c, e`(interval: 1).\n\n  if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n  // point is not the same when zooming in or zooming out.\n  && lastAutoInterval > interval // If the axis change is caused by chart resize, the cache should not\n  // be used. Otherwise some hiden labels might not be shown again.\n  && cache.axisExtend0 === axisExtent[0] && cache.axisExtend1 === axisExtent[1]) {\n    interval = lastAutoInterval;\n  } // Only update cache if cache not used, otherwise the\n  // changing of interval is too insensitive.\n  else {\n      cache.lastTickCount = tickCount;\n      cache.lastAutoInterval = interval;\n      cache.axisExtend0 = axisExtent[0];\n      cache.axisExtend1 = axisExtent[1];\n    }\n\n  return interval;\n}\n\nfunction fetchAutoCategoryIntervalCalculationParams(axis) {\n  var labelModel = axis.getLabelModel();\n  return {\n    axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,\n    labelRotate: labelModel.get('rotate') || 0,\n    font: labelModel.getFont()\n  };\n}\n\nfunction makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\n  var labelFormatter = makeLabelFormatter(axis);\n  var ordinalScale = axis.scale;\n  var ordinalExtent = ordinalScale.getExtent();\n  var labelModel = axis.getLabelModel();\n  var result = []; // TODO: axisType: ordinalTime, pick the tick from each month/day/year/...\n\n  var step = Math.max((categoryInterval || 0) + 1, 1);\n  var startTick = ordinalExtent[0];\n  var tickCount = ordinalScale.count(); // Calculate start tick based on zero if possible to keep label consistent\n  // while zooming and moving while interval > 0. Otherwise the selection\n  // of displayable ticks and symbols probably keep changing.\n  // 3 is empirical value.\n\n  if (startTick !== 0 && step > 1 && tickCount / step > 2) {\n    startTick = Math.round(Math.ceil(startTick / step) * step);\n  } // (1) Only add min max label here but leave overlap checking\n  // to render stage, which also ensure the returned list\n  // suitable for splitLine and splitArea rendering.\n  // (2) Scales except category always contain min max label so\n  // do not need to perform this process.\n\n\n  var showAllLabel = shouldShowAllLabels(axis);\n  var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\n  var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\n\n  if (includeMinLabel && startTick !== ordinalExtent[0]) {\n    addItem(ordinalExtent[0]);\n  } // Optimize: avoid generating large array by `ordinalScale.getTicks()`.\n\n\n  var tickValue = startTick;\n\n  for (; tickValue <= ordinalExtent[1]; tickValue += step) {\n    addItem(tickValue);\n  }\n\n  if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\n    addItem(ordinalExtent[1]);\n  }\n\n  function addItem(tVal) {\n    result.push(onlyTick ? tVal : {\n      formattedLabel: labelFormatter(tVal),\n      rawLabel: ordinalScale.getLabel(tVal),\n      tickValue: tVal\n    });\n  }\n\n  return result;\n} // When interval is function, the result `false` means ignore the tick.\n// It is time consuming for large category data.\n\n\nfunction makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\n  var ordinalScale = axis.scale;\n  var labelFormatter = makeLabelFormatter(axis);\n  var result = [];\n  zrUtil.each(ordinalScale.getTicks(), function (tickValue) {\n    var rawLabel = ordinalScale.getLabel(tickValue);\n\n    if (categoryInterval(tickValue, rawLabel)) {\n      result.push(onlyTick ? tickValue : {\n        formattedLabel: labelFormatter(tickValue),\n        rawLabel: rawLabel,\n        tickValue: tickValue\n      });\n    }\n  });\n  return result;\n}\n\nexports.createAxisLabels = createAxisLabels;\nexports.createAxisTicks = createAxisTicks;\nexports.calculateCategoryInterval = calculateCategoryInterval;\n\n/***/ }),\n/* 1047 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1048);\n\n__webpack_require__(1049);\n\nvar visualSymbol = __webpack_require__(181);\n\nvar layoutPoints = __webpack_require__(262);\n\nvar dataSample = __webpack_require__(1051);\n\n__webpack_require__(263);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('line', 'circle', 'line'));\necharts.registerLayout(layoutPoints('line')); // Down sample after filter\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n\n/***/ }),\n/* 1048 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar createListFromArray = __webpack_require__(145);\n\nvar SeriesModel = __webpack_require__(75);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n  type: 'series.line',\n  dependencies: ['grid', 'polar'],\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this, {\n      useEncodeDefaulter: true\n    });\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // stack: null\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // polarIndex: 0,\n    // If clip the overflow value\n    clip: true,\n    // cursor: null,\n    label: {\n      position: 'top'\n    },\n    // itemStyle: {\n    // },\n    lineStyle: {\n      width: 2,\n      type: 'solid'\n    },\n    // areaStyle: {\n    // origin of areaStyle. Valid values:\n    // `'auto'/null/undefined`: from axisLine to data\n    // `'start'`: from min to data\n    // `'end'`: from data to max\n    // origin: 'auto'\n    // },\n    // false, 'start', 'end', 'middle'\n    step: false,\n    // Disabled if step is true\n    smooth: false,\n    smoothMonotone: null,\n    symbol: 'emptyCircle',\n    symbolSize: 4,\n    symbolRotate: null,\n    showSymbol: true,\n    // `false`: follow the label interval strategy.\n    // `true`: show all symbols.\n    // `'auto'`: If possible, show all symbols, otherwise\n    //           follow the label interval strategy.\n    showAllSymbol: 'auto',\n    // Whether to connect break point.\n    connectNulls: false,\n    // Sampling for large data. Can be: 'average', 'max', 'min', 'sum'.\n    sampling: 'none',\n    animationEasing: 'linear',\n    // Disable progressive\n    progressive: 0,\n    hoverLayerThreshold: Infinity\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1049 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\nvar _bbox = __webpack_require__(255);\n\nvar fromPoints = _bbox.fromPoints;\n\nvar SymbolDraw = __webpack_require__(260);\n\nvar SymbolClz = __webpack_require__(332);\n\nvar lineAnimationDiff = __webpack_require__(1050);\n\nvar graphic = __webpack_require__(23);\n\nvar modelUtil = __webpack_require__(31);\n\nvar _poly = __webpack_require__(582);\n\nvar Polyline = _poly.Polyline;\nvar Polygon = _poly.Polygon;\n\nvar ChartView = __webpack_require__(131);\n\nvar _helper = __webpack_require__(581);\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\nvar _createClipPathFromCoordSys = __webpack_require__(261);\n\nvar createGridClipPath = _createClipPathFromCoordSys.createGridClipPath;\nvar createPolarClipPath = _createClipPathFromCoordSys.createPolarClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME step not support polar\nfunction isPointsSame(points1, points2) {\n  if (points1.length !== points2.length) {\n    return;\n  }\n\n  for (var i = 0; i < points1.length; i++) {\n    var p1 = points1[i];\n    var p2 = points2[i];\n\n    if (p1[0] !== p2[0] || p1[1] !== p2[1]) {\n      return;\n    }\n  }\n\n  return true;\n}\n\nfunction getBoundingDiff(points1, points2) {\n  var min1 = [];\n  var max1 = [];\n  var min2 = [];\n  var max2 = [];\n  fromPoints(points1, min1, max1);\n  fromPoints(points2, min2, max2); // Get a max value from each corner of two boundings.\n\n  return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\n}\n\nfunction getSmooth(smooth) {\n  return typeof smooth === 'number' ? smooth : smooth ? 0.5 : 0;\n}\n/**\n * @param {module:echarts/coord/cartesian/Cartesian2D|module:echarts/coord/polar/Polar} coordSys\n * @param {module:echarts/data/List} data\n * @param {Object} dataCoordInfo\n * @param {Array.<Array.<number>>} points\n */\n\n\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n  if (!dataCoordInfo.valueDim) {\n    return [];\n  }\n\n  var points = [];\n\n  for (var idx = 0, len = data.count(); idx < len; idx++) {\n    points.push(getStackedOnPoint(dataCoordInfo, coordSys, data, idx));\n  }\n\n  return points;\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt) {\n  var baseAxis = coordSys.getBaseAxis();\n  var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n  var stepPoints = [];\n\n  for (var i = 0; i < points.length - 1; i++) {\n    var nextPt = points[i + 1];\n    var pt = points[i];\n    stepPoints.push(pt);\n    var stepPt = [];\n\n    switch (stepTurnAt) {\n      case 'end':\n        stepPt[baseIndex] = nextPt[baseIndex];\n        stepPt[1 - baseIndex] = pt[1 - baseIndex]; // default is start\n\n        stepPoints.push(stepPt);\n        break;\n\n      case 'middle':\n        // default is start\n        var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n        var stepPt2 = [];\n        stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n        stepPt[1 - baseIndex] = pt[1 - baseIndex];\n        stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n        stepPoints.push(stepPt);\n        stepPoints.push(stepPt2);\n        break;\n\n      default:\n        stepPt[baseIndex] = pt[baseIndex];\n        stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; // default is start\n\n        stepPoints.push(stepPt);\n    }\n  } // Last points\n\n\n  points[i] && stepPoints.push(points[i]);\n  return stepPoints;\n}\n\nfunction getVisualGradient(data, coordSys) {\n  var visualMetaList = data.getVisual('visualMeta');\n\n  if (!visualMetaList || !visualMetaList.length || !data.count()) {\n    // When data.count() is 0, gradient range can not be calculated.\n    return;\n  }\n\n  if (coordSys.type !== 'cartesian2d') {\n    return;\n  }\n\n  var coordDim;\n  var visualMeta;\n\n  for (var i = visualMetaList.length - 1; i >= 0; i--) {\n    var dimIndex = visualMetaList[i].dimension;\n    var dimName = data.dimensions[dimIndex];\n    var dimInfo = data.getDimensionInfo(dimName);\n    coordDim = dimInfo && dimInfo.coordDim; // Can only be x or y\n\n    if (coordDim === 'x' || coordDim === 'y') {\n      visualMeta = visualMetaList[i];\n      break;\n    }\n  }\n\n  if (!visualMeta) {\n    return;\n  } // If the area to be rendered is bigger than area defined by LinearGradient,\n  // the canvas spec prescribes that the color of the first stop and the last\n  // stop should be used. But if two stops are added at offset 0, in effect\n  // browsers use the color of the second stop to render area outside\n  // LinearGradient. So we can only infinitesimally extend area defined in\n  // LinearGradient to render `outerColors`.\n\n\n  var axis = coordSys.getAxis(coordDim); // dataToCoor mapping may not be linear, but must be monotonic.\n\n  var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n    return {\n      coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n      color: stop.color\n    };\n  });\n  var stopLen = colorStops.length;\n  var outerColors = visualMeta.outerColors.slice();\n\n  if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n    colorStops.reverse();\n    outerColors.reverse();\n  }\n\n  var tinyExtent = 10; // Arbitrary value: 10px\n\n  var minCoord = colorStops[0].coord - tinyExtent;\n  var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\n  var coordSpan = maxCoord - minCoord;\n\n  if (coordSpan < 1e-3) {\n    return 'transparent';\n  }\n\n  zrUtil.each(colorStops, function (stop) {\n    stop.offset = (stop.coord - minCoord) / coordSpan;\n  });\n  colorStops.push({\n    offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\n    color: outerColors[1] || 'transparent'\n  });\n  colorStops.unshift({\n    // notice colorStops.length have been changed.\n    offset: stopLen ? colorStops[0].offset : 0.5,\n    color: outerColors[0] || 'transparent'\n  }); // zrUtil.each(colorStops, function (colorStop) {\n  //     // Make sure each offset has rounded px to avoid not sharp edge\n  //     colorStop.offset = (Math.round(colorStop.offset * (end - start) + start) - start) / (end - start);\n  // });\n\n  var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStops, true);\n  gradient[coordDim] = minCoord;\n  gradient[coordDim + '2'] = maxCoord;\n  return gradient;\n}\n\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\n  var showAllSymbol = seriesModel.get('showAllSymbol');\n  var isAuto = showAllSymbol === 'auto';\n\n  if (showAllSymbol && !isAuto) {\n    return;\n  }\n\n  var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n  if (!categoryAxis) {\n    return;\n  } // Note that category label interval strategy might bring some weird effect\n  // in some scenario: users may wonder why some of the symbols are not\n  // displayed. So we show all symbols as possible as we can.\n\n\n  if (isAuto // Simplify the logic, do not determine label overlap here.\n  && canShowAllSymbolForCategory(categoryAxis, data)) {\n    return;\n  } // Otherwise follow the label interval strategy on category axis.\n\n\n  var categoryDataDim = data.mapDimension(categoryAxis.dim);\n  var labelMap = {};\n  zrUtil.each(categoryAxis.getViewLabels(), function (labelItem) {\n    labelMap[labelItem.tickValue] = 1;\n  });\n  return function (dataIndex) {\n    return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n  };\n}\n\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n  // In mose cases, line is monotonous on category axis, and the label size\n  // is close with each other. So we check the symbol size and some of the\n  // label size alone with the category axis to estimate whether all symbol\n  // can be shown without overlap.\n  var axisExtent = categoryAxis.getExtent();\n  var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\n  isNaN(availSize) && (availSize = 0); // 0/0 is NaN.\n  // Sampling some points, max 5.\n\n  var dataLen = data.count();\n  var step = Math.max(1, Math.round(dataLen / 5));\n\n  for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\n    if (SymbolClz.getSymbolSize(data, dataIndex // Only for cartesian, where `isHorizontal` exists.\n    )[categoryAxis.isHorizontal() ? 1 : 0] // Empirical number\n    * 1.5 > availSize) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction createLineClipPath(coordSys, hasAnimation, seriesModel) {\n  if (coordSys.type === 'cartesian2d') {\n    var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n    var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel); // Expand clip shape to avoid clipping when line value exceeds axis\n\n    if (!seriesModel.get('clip', true)) {\n      var rectShape = clipPath.shape;\n      var expandSize = Math.max(rectShape.width, rectShape.height);\n\n      if (isHorizontal) {\n        rectShape.y -= expandSize;\n        rectShape.height += expandSize * 2;\n      } else {\n        rectShape.x -= expandSize;\n        rectShape.width += expandSize * 2;\n      }\n    }\n\n    return clipPath;\n  } else {\n    return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n  }\n}\n\nvar _default = ChartView.extend({\n  type: 'line',\n  init: function () {\n    var lineGroup = new graphic.Group();\n    var symbolDraw = new SymbolDraw();\n    this.group.add(symbolDraw.group);\n    this._symbolDraw = symbolDraw;\n    this._lineGroup = lineGroup;\n  },\n  render: function (seriesModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var group = this.group;\n    var data = seriesModel.getData();\n    var lineStyleModel = seriesModel.getModel('lineStyle');\n    var areaStyleModel = seriesModel.getModel('areaStyle');\n    var points = data.mapArray(data.getItemLayout);\n    var isCoordSysPolar = coordSys.type === 'polar';\n    var prevCoordSys = this._coordSys;\n    var symbolDraw = this._symbolDraw;\n    var polyline = this._polyline;\n    var polygon = this._polygon;\n    var lineGroup = this._lineGroup;\n    var hasAnimation = seriesModel.get('animation');\n    var isAreaChart = !areaStyleModel.isEmpty();\n    var valueOrigin = areaStyleModel.get('origin');\n    var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n    var stackedOnPoints = getStackedOnPoints(coordSys, data, dataCoordInfo);\n    var showSymbol = seriesModel.get('showSymbol');\n    var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); // Remove temporary symbols\n\n    var oldData = this._data;\n    oldData && oldData.eachItemGraphicEl(function (el, idx) {\n      if (el.__temp) {\n        group.remove(el);\n        oldData.setItemGraphicEl(idx, null);\n      }\n    }); // Remove previous created symbols if showSymbol changed to false\n\n    if (!showSymbol) {\n      symbolDraw.remove();\n    }\n\n    group.add(lineGroup); // FIXME step not support polar\n\n    var step = !isCoordSysPolar && seriesModel.get('step');\n    var clipShapeForSymbol;\n\n    if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\n      clipShapeForSymbol = coordSys.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n      // See #7913 and `test/dataZoom-clip.html`.\n\n      if (clipShapeForSymbol.width != null) {\n        clipShapeForSymbol.x -= 0.1;\n        clipShapeForSymbol.y -= 0.1;\n        clipShapeForSymbol.width += 0.2;\n        clipShapeForSymbol.height += 0.2;\n      } else if (clipShapeForSymbol.r0) {\n        clipShapeForSymbol.r0 -= 0.5;\n        clipShapeForSymbol.r1 += 0.5;\n      }\n    }\n\n    this._clipShapeForSymbol = clipShapeForSymbol; // Initialization animation or coordinate system changed\n\n    if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n      showSymbol && symbolDraw.updateData(data, {\n        isIgnore: isIgnoreFunc,\n        clipShape: clipShapeForSymbol\n      });\n\n      if (step) {\n        // TODO If stacked series is not step\n        points = turnPointsIntoStep(points, coordSys, step);\n        stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n      }\n\n      polyline = this._newPolyline(points, coordSys, hasAnimation);\n\n      if (isAreaChart) {\n        polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n      }\n\n      lineGroup.setClipPath(createLineClipPath(coordSys, true, seriesModel));\n    } else {\n      if (isAreaChart && !polygon) {\n        // If areaStyle is added\n        polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n      } else if (polygon && !isAreaChart) {\n        // If areaStyle is removed\n        lineGroup.remove(polygon);\n        polygon = this._polygon = null;\n      } // Update clipPath\n\n\n      lineGroup.setClipPath(createLineClipPath(coordSys, false, seriesModel)); // Always update, or it is wrong in the case turning on legend\n      // because points are not changed\n\n      showSymbol && symbolDraw.updateData(data, {\n        isIgnore: isIgnoreFunc,\n        clipShape: clipShapeForSymbol\n      }); // Stop symbol animation and sync with line points\n      // FIXME performance?\n\n      data.eachItemGraphicEl(function (el) {\n        el.stopAnimation(true);\n      }); // In the case data zoom triggerred refreshing frequently\n      // Data may not change if line has a category axis. So it should animate nothing\n\n      if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n        if (hasAnimation) {\n          this._updateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\n        } else {\n          // Not do it in update with animation\n          if (step) {\n            // TODO If stacked series is not step\n            points = turnPointsIntoStep(points, coordSys, step);\n            stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n          }\n\n          polyline.setShape({\n            points: points\n          });\n          polygon && polygon.setShape({\n            points: points,\n            stackedOnPoints: stackedOnPoints\n          });\n        }\n      }\n    }\n\n    var visualColor = getVisualGradient(data, coordSys) || data.getVisual('color');\n    polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n    lineStyleModel.getLineStyle(), {\n      fill: 'none',\n      stroke: visualColor,\n      lineJoin: 'bevel'\n    }));\n    var smooth = seriesModel.get('smooth');\n    smooth = getSmooth(seriesModel.get('smooth'));\n    polyline.setShape({\n      smooth: smooth,\n      smoothMonotone: seriesModel.get('smoothMonotone'),\n      connectNulls: seriesModel.get('connectNulls')\n    });\n\n    if (polygon) {\n      var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n      var stackedOnSmooth = 0;\n      polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n        fill: visualColor,\n        opacity: 0.7,\n        lineJoin: 'bevel'\n      }));\n\n      if (stackedOnSeries) {\n        stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n      }\n\n      polygon.setShape({\n        smooth: smooth,\n        stackedOnSmooth: stackedOnSmooth,\n        smoothMonotone: seriesModel.get('smoothMonotone'),\n        connectNulls: seriesModel.get('connectNulls')\n      });\n    }\n\n    this._data = data; // Save the coordinate system for transition animation when data changed\n\n    this._coordSys = coordSys;\n    this._stackedOnPoints = stackedOnPoints;\n    this._points = points;\n    this._step = step;\n    this._valueOrigin = valueOrigin;\n  },\n  dispose: function () {},\n  highlight: function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n    if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n      var symbol = data.getItemGraphicEl(dataIndex);\n\n      if (!symbol) {\n        // Create a temporary symbol if it is not exists\n        var pt = data.getItemLayout(dataIndex);\n\n        if (!pt) {\n          // Null data\n          return;\n        } // fix #11360: should't draw symbol outside clipShapeForSymbol\n\n\n        if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(pt[0], pt[1])) {\n          return;\n        }\n\n        symbol = new SymbolClz(data, dataIndex);\n        symbol.position = pt;\n        symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\n        symbol.ignore = isNaN(pt[0]) || isNaN(pt[1]);\n        symbol.__temp = true;\n        data.setItemGraphicEl(dataIndex, symbol); // Stop scale animation\n\n        symbol.stopSymbolAnimation(true);\n        this.group.add(symbol);\n      }\n\n      symbol.highlight();\n    } else {\n      // Highlight whole series\n      ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n    }\n  },\n  downplay: function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n    if (dataIndex != null && dataIndex >= 0) {\n      var symbol = data.getItemGraphicEl(dataIndex);\n\n      if (symbol) {\n        if (symbol.__temp) {\n          data.setItemGraphicEl(dataIndex, null);\n          this.group.remove(symbol);\n        } else {\n          symbol.downplay();\n        }\n      }\n    } else {\n      // FIXME\n      // can not downplay completely.\n      // Downplay whole series\n      ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n    }\n  },\n\n  /**\n   * @param {module:zrender/container/Group} group\n   * @param {Array.<Array.<number>>} points\n   * @private\n   */\n  _newPolyline: function (points) {\n    var polyline = this._polyline; // Remove previous created polyline\n\n    if (polyline) {\n      this._lineGroup.remove(polyline);\n    }\n\n    polyline = new Polyline({\n      shape: {\n        points: points\n      },\n      silent: true,\n      z2: 10\n    });\n\n    this._lineGroup.add(polyline);\n\n    this._polyline = polyline;\n    return polyline;\n  },\n\n  /**\n   * @param {module:zrender/container/Group} group\n   * @param {Array.<Array.<number>>} stackedOnPoints\n   * @param {Array.<Array.<number>>} points\n   * @private\n   */\n  _newPolygon: function (points, stackedOnPoints) {\n    var polygon = this._polygon; // Remove previous created polygon\n\n    if (polygon) {\n      this._lineGroup.remove(polygon);\n    }\n\n    polygon = new Polygon({\n      shape: {\n        points: points,\n        stackedOnPoints: stackedOnPoints\n      },\n      silent: true\n    });\n\n    this._lineGroup.add(polygon);\n\n    this._polygon = polygon;\n    return polygon;\n  },\n\n  /**\n   * @private\n   */\n  // FIXME Two value axis\n  _updateAnimation: function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\n    var polyline = this._polyline;\n    var polygon = this._polygon;\n    var seriesModel = data.hostModel;\n    var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\n    var current = diff.current;\n    var stackedOnCurrent = diff.stackedOnCurrent;\n    var next = diff.next;\n    var stackedOnNext = diff.stackedOnNext;\n\n    if (step) {\n      // TODO If stacked series is not step\n      current = turnPointsIntoStep(diff.current, coordSys, step);\n      stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\n      next = turnPointsIntoStep(diff.next, coordSys, step);\n      stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\n    } // Don't apply animation if diff is large.\n    // For better result and avoid memory explosion problems like\n    // https://github.com/apache/incubator-echarts/issues/12229\n\n\n    if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {\n      polyline.setShape({\n        points: next\n      });\n\n      if (polygon) {\n        polygon.setShape({\n          points: next,\n          stackedOnPoints: stackedOnNext\n        });\n      }\n\n      return;\n    } // `diff.current` is subset of `current` (which should be ensured by\n    // turnPointsIntoStep), so points in `__points` can be updated when\n    // points in `current` are update during animation.\n\n\n    polyline.shape.__points = diff.current;\n    polyline.shape.points = current;\n    graphic.updateProps(polyline, {\n      shape: {\n        points: next\n      }\n    }, seriesModel);\n\n    if (polygon) {\n      polygon.setShape({\n        points: current,\n        stackedOnPoints: stackedOnCurrent\n      });\n      graphic.updateProps(polygon, {\n        shape: {\n          points: next,\n          stackedOnPoints: stackedOnNext\n        }\n      }, seriesModel);\n    }\n\n    var updatedDataInfo = [];\n    var diffStatus = diff.status;\n\n    for (var i = 0; i < diffStatus.length; i++) {\n      var cmd = diffStatus[i].cmd;\n\n      if (cmd === '=') {\n        var el = data.getItemGraphicEl(diffStatus[i].idx1);\n\n        if (el) {\n          updatedDataInfo.push({\n            el: el,\n            ptIdx: i // Index of points\n\n          });\n        }\n      }\n    }\n\n    if (polyline.animators && polyline.animators.length) {\n      polyline.animators[0].during(function () {\n        for (var i = 0; i < updatedDataInfo.length; i++) {\n          var el = updatedDataInfo[i].el;\n          el.attr('position', polyline.shape.__points[updatedDataInfo[i].ptIdx]);\n        }\n      });\n    }\n  },\n  remove: function (ecModel) {\n    var group = this.group;\n    var oldData = this._data;\n\n    this._lineGroup.removeAll();\n\n    this._symbolDraw.remove(true); // Remove temporary created elements when highlighting\n\n\n    oldData && oldData.eachItemGraphicEl(function (el, idx) {\n      if (el.__temp) {\n        group.remove(el);\n        oldData.setItemGraphicEl(idx, null);\n      }\n    });\n    this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null;\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1050 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _helper = __webpack_require__(581);\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// var arrayDiff = require('zrender/src/core/arrayDiff');\n// 'zrender/src/core/arrayDiff' has been used before, but it did\n// not do well in performance when roam with fixed dataZoom window.\n// function convertToIntId(newIdList, oldIdList) {\n//     // Generate int id instead of string id.\n//     // Compare string maybe slow in score function of arrDiff\n//     // Assume id in idList are all unique\n//     var idIndicesMap = {};\n//     var idx = 0;\n//     for (var i = 0; i < newIdList.length; i++) {\n//         idIndicesMap[newIdList[i]] = idx;\n//         newIdList[i] = idx++;\n//     }\n//     for (var i = 0; i < oldIdList.length; i++) {\n//         var oldId = oldIdList[i];\n//         // Same with newIdList\n//         if (idIndicesMap[oldId]) {\n//             oldIdList[i] = idIndicesMap[oldId];\n//         }\n//         else {\n//             oldIdList[i] = idx++;\n//         }\n//     }\n// }\nfunction diffData(oldData, newData) {\n  var diffResult = [];\n  newData.diff(oldData).add(function (idx) {\n    diffResult.push({\n      cmd: '+',\n      idx: idx\n    });\n  }).update(function (newIdx, oldIdx) {\n    diffResult.push({\n      cmd: '=',\n      idx: oldIdx,\n      idx1: newIdx\n    });\n  }).remove(function (idx) {\n    diffResult.push({\n      cmd: '-',\n      idx: idx\n    });\n  }).execute();\n  return diffResult;\n}\n\nfunction _default(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n  var diff = diffData(oldData, newData); // var newIdList = newData.mapArray(newData.getId);\n  // var oldIdList = oldData.mapArray(oldData.getId);\n  // convertToIntId(newIdList, oldIdList);\n  // // FIXME One data ?\n  // diff = arrayDiff(oldIdList, newIdList);\n\n  var currPoints = [];\n  var nextPoints = []; // Points for stacking base line\n\n  var currStackedPoints = [];\n  var nextStackedPoints = [];\n  var status = [];\n  var sortedIndices = [];\n  var rawIndices = [];\n  var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\n  var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n\n  for (var i = 0; i < diff.length; i++) {\n    var diffItem = diff[i];\n    var pointAdded = true; // FIXME, animation is not so perfect when dataZoom window moves fast\n    // Which is in case remvoing or add more than one data in the tail or head\n\n    switch (diffItem.cmd) {\n      case '=':\n        var currentPt = oldData.getItemLayout(diffItem.idx);\n        var nextPt = newData.getItemLayout(diffItem.idx1); // If previous data is NaN, use next point directly\n\n        if (isNaN(currentPt[0]) || isNaN(currentPt[1])) {\n          currentPt = nextPt.slice();\n        }\n\n        currPoints.push(currentPt);\n        nextPoints.push(nextPt);\n        currStackedPoints.push(oldStackedOnPoints[diffItem.idx]);\n        nextStackedPoints.push(newStackedOnPoints[diffItem.idx1]);\n        rawIndices.push(newData.getRawIndex(diffItem.idx1));\n        break;\n\n      case '+':\n        var idx = diffItem.idx;\n        currPoints.push(oldCoordSys.dataToPoint([newData.get(newDataOldCoordInfo.dataDimsForPoint[0], idx), newData.get(newDataOldCoordInfo.dataDimsForPoint[1], idx)]));\n        nextPoints.push(newData.getItemLayout(idx).slice());\n        currStackedPoints.push(getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, idx));\n        nextStackedPoints.push(newStackedOnPoints[idx]);\n        rawIndices.push(newData.getRawIndex(idx));\n        break;\n\n      case '-':\n        var idx = diffItem.idx;\n        var rawIndex = oldData.getRawIndex(idx); // Data is replaced. In the case of dynamic data queue\n        // FIXME FIXME FIXME\n\n        if (rawIndex !== idx) {\n          currPoints.push(oldData.getItemLayout(idx));\n          nextPoints.push(newCoordSys.dataToPoint([oldData.get(oldDataNewCoordInfo.dataDimsForPoint[0], idx), oldData.get(oldDataNewCoordInfo.dataDimsForPoint[1], idx)]));\n          currStackedPoints.push(oldStackedOnPoints[idx]);\n          nextStackedPoints.push(getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, idx));\n          rawIndices.push(rawIndex);\n        } else {\n          pointAdded = false;\n        }\n\n    } // Original indices\n\n\n    if (pointAdded) {\n      status.push(diffItem);\n      sortedIndices.push(sortedIndices.length);\n    }\n  } // Diff result may be crossed if all items are changed\n  // Sort by data index\n\n\n  sortedIndices.sort(function (a, b) {\n    return rawIndices[a] - rawIndices[b];\n  });\n  var sortedCurrPoints = [];\n  var sortedNextPoints = [];\n  var sortedCurrStackedPoints = [];\n  var sortedNextStackedPoints = [];\n  var sortedStatus = [];\n\n  for (var i = 0; i < sortedIndices.length; i++) {\n    var idx = sortedIndices[i];\n    sortedCurrPoints[i] = currPoints[idx];\n    sortedNextPoints[i] = nextPoints[idx];\n    sortedCurrStackedPoints[i] = currStackedPoints[idx];\n    sortedNextStackedPoints[i] = nextStackedPoints[idx];\n    sortedStatus[i] = status[idx];\n  }\n\n  return {\n    current: sortedCurrPoints,\n    next: sortedNextPoints,\n    stackedOnCurrent: sortedCurrStackedPoints,\n    stackedOnNext: sortedNextStackedPoints,\n    status: sortedStatus\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1051 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar samplers = {\n  average: function (frame) {\n    var sum = 0;\n    var count = 0;\n\n    for (var i = 0; i < frame.length; i++) {\n      if (!isNaN(frame[i])) {\n        sum += frame[i];\n        count++;\n      }\n    } // Return NaN if count is 0\n\n\n    return count === 0 ? NaN : sum / count;\n  },\n  sum: function (frame) {\n    var sum = 0;\n\n    for (var i = 0; i < frame.length; i++) {\n      // Ignore NaN\n      sum += frame[i] || 0;\n    }\n\n    return sum;\n  },\n  max: function (frame) {\n    var max = -Infinity;\n\n    for (var i = 0; i < frame.length; i++) {\n      frame[i] > max && (max = frame[i]);\n    } // NaN will cause illegal axis extent.\n\n\n    return isFinite(max) ? max : NaN;\n  },\n  min: function (frame) {\n    var min = Infinity;\n\n    for (var i = 0; i < frame.length; i++) {\n      frame[i] < min && (min = frame[i]);\n    } // NaN will cause illegal axis extent.\n\n\n    return isFinite(min) ? min : NaN;\n  },\n  // TODO\n  // Median\n  nearest: function (frame) {\n    return frame[0];\n  }\n};\n\nvar indexSampler = function (frame, value) {\n  return Math.round(frame.length / 2);\n};\n\nfunction _default(seriesType) {\n  return {\n    seriesType: seriesType,\n    modifyOutputEnd: true,\n    reset: function (seriesModel, ecModel, api) {\n      var data = seriesModel.getData();\n      var sampling = seriesModel.get('sampling');\n      var coordSys = seriesModel.coordinateSystem; // Only cartesian2d support down sampling\n\n      if (coordSys.type === 'cartesian2d' && sampling) {\n        var baseAxis = coordSys.getBaseAxis();\n        var valueAxis = coordSys.getOtherAxis(baseAxis);\n        var extent = baseAxis.getExtent(); // Coordinste system has been resized\n\n        var size = Math.abs(extent[1] - extent[0]);\n        var rate = Math.round(data.count() / size);\n\n        if (rate > 1) {\n          var sampler;\n\n          if (typeof sampling === 'string') {\n            sampler = samplers[sampling];\n          } else if (typeof sampling === 'function') {\n            sampler = sampling;\n          }\n\n          if (sampler) {\n            // Only support sample the first dim mapped from value axis.\n            seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\n          }\n        }\n      }\n    }\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1052 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar Cartesian = __webpack_require__(1053);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction Cartesian2D(name) {\n  Cartesian.call(this, name);\n}\n\nCartesian2D.prototype = {\n  constructor: Cartesian2D,\n  type: 'cartesian2d',\n\n  /**\n   * @type {Array.<string>}\n   * @readOnly\n   */\n  dimensions: ['x', 'y'],\n\n  /**\n   * Base axis will be used on stacking.\n   *\n   * @return {module:echarts/coord/cartesian/Axis2D}\n   */\n  getBaseAxis: function () {\n    return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAxis('x');\n  },\n\n  /**\n   * If contain point\n   * @param {Array.<number>} point\n   * @return {boolean}\n   */\n  containPoint: function (point) {\n    var axisX = this.getAxis('x');\n    var axisY = this.getAxis('y');\n    return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1]));\n  },\n\n  /**\n   * If contain data\n   * @param {Array.<number>} data\n   * @return {boolean}\n   */\n  containData: function (data) {\n    return this.getAxis('x').containData(data[0]) && this.getAxis('y').containData(data[1]);\n  },\n\n  /**\n   * @param {Array.<number>} data\n   * @param {Array.<number>} out\n   * @return {Array.<number>}\n   */\n  dataToPoint: function (data, reserved, out) {\n    var xAxis = this.getAxis('x');\n    var yAxis = this.getAxis('y');\n    out = out || [];\n    out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(data[0]));\n    out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(data[1]));\n    return out;\n  },\n\n  /**\n   * @param {Array.<number>} data\n   * @param {Array.<number>} out\n   * @return {Array.<number>}\n   */\n  clampData: function (data, out) {\n    var xScale = this.getAxis('x').scale;\n    var yScale = this.getAxis('y').scale;\n    var xAxisExtent = xScale.getExtent();\n    var yAxisExtent = yScale.getExtent();\n    var x = xScale.parse(data[0]);\n    var y = yScale.parse(data[1]);\n    out = out || [];\n    out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));\n    out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));\n    return out;\n  },\n\n  /**\n   * @param {Array.<number>} point\n   * @param {Array.<number>} out\n   * @return {Array.<number>}\n   */\n  pointToData: function (point, out) {\n    var xAxis = this.getAxis('x');\n    var yAxis = this.getAxis('y');\n    out = out || [];\n    out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]));\n    out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]));\n    return out;\n  },\n\n  /**\n   * Get other axis\n   * @param {module:echarts/coord/cartesian/Axis2D} axis\n   */\n  getOtherAxis: function (axis) {\n    return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\n  },\n\n  /**\n   * Get rect area of cartesian.\n   * Area will have a contain function to determine if a point is in the coordinate system.\n   * @return {BoundingRect}\n   */\n  getArea: function () {\n    var xExtent = this.getAxis('x').getGlobalExtent();\n    var yExtent = this.getAxis('y').getGlobalExtent();\n    var x = Math.min(xExtent[0], xExtent[1]);\n    var y = Math.min(yExtent[0], yExtent[1]);\n    var width = Math.max(xExtent[0], xExtent[1]) - x;\n    var height = Math.max(yExtent[0], yExtent[1]) - y;\n    var rect = new BoundingRect(x, y, width, height);\n    return rect;\n  }\n};\nzrUtil.inherits(Cartesian2D, Cartesian);\nvar _default = Cartesian2D;\nmodule.exports = _default;\n\n/***/ }),\n/* 1053 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Cartesian coordinate system\n * @module  echarts/coord/Cartesian\n *\n */\nfunction dimAxisMapper(dim) {\n  return this._axes[dim];\n}\n/**\n * @alias module:echarts/coord/Cartesian\n * @constructor\n */\n\n\nvar Cartesian = function (name) {\n  this._axes = {};\n  this._dimList = [];\n  /**\n   * @type {string}\n   */\n\n  this.name = name || '';\n};\n\nCartesian.prototype = {\n  constructor: Cartesian,\n  type: 'cartesian',\n\n  /**\n   * Get axis\n   * @param  {number|string} dim\n   * @return {module:echarts/coord/Cartesian~Axis}\n   */\n  getAxis: function (dim) {\n    return this._axes[dim];\n  },\n\n  /**\n   * Get axes list\n   * @return {Array.<module:echarts/coord/Cartesian~Axis>}\n   */\n  getAxes: function () {\n    return zrUtil.map(this._dimList, dimAxisMapper, this);\n  },\n\n  /**\n   * Get axes list by given scale type\n   */\n  getAxesByScale: function (scaleType) {\n    scaleType = scaleType.toLowerCase();\n    return zrUtil.filter(this.getAxes(), function (axis) {\n      return axis.scale.type === scaleType;\n    });\n  },\n\n  /**\n   * Add axis\n   * @param {module:echarts/coord/Cartesian.Axis}\n   */\n  addAxis: function (axis) {\n    var dim = axis.dim;\n    this._axes[dim] = axis;\n\n    this._dimList.push(dim);\n  },\n\n  /**\n   * Convert data to coord in nd space\n   * @param {Array.<number>|Object.<string, number>} val\n   * @return {Array.<number>|Object.<string, number>}\n   */\n  dataToCoord: function (val) {\n    return this._dataCoordConvert(val, 'dataToCoord');\n  },\n\n  /**\n   * Convert coord in nd space to data\n   * @param  {Array.<number>|Object.<string, number>} val\n   * @return {Array.<number>|Object.<string, number>}\n   */\n  coordToData: function (val) {\n    return this._dataCoordConvert(val, 'coordToData');\n  },\n  _dataCoordConvert: function (input, method) {\n    var dimList = this._dimList;\n    var output = input instanceof Array ? [] : {};\n\n    for (var i = 0; i < dimList.length; i++) {\n      var dim = dimList[i];\n      var axis = this._axes[dim];\n      output[dim] = axis[method](input[dim]);\n    }\n\n    return output;\n  }\n};\nvar _default = Cartesian;\nmodule.exports = _default;\n\n/***/ }),\n/* 1054 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Axis = __webpack_require__(155);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.<number>} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar Axis2D = function (dim, scale, coordExtent, axisType, position) {\n  Axis.call(this, dim, scale, coordExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = axisType || 'value';\n  /**\n   * Axis position\n   *  - 'top'\n   *  - 'bottom'\n   *  - 'left'\n   *  - 'right'\n   */\n\n  this.position = position || 'bottom';\n};\n\nAxis2D.prototype = {\n  constructor: Axis2D,\n\n  /**\n   * Index of axis, can be used as key\n   */\n  index: 0,\n\n  /**\n   * Implemented in <module:echarts/coord/cartesian/Grid>.\n   * @return {Array.<module:echarts/coord/cartesian/Axis2D>}\n   *         If not on zero of other axis, return null/undefined.\n   *         If no axes, return an empty array.\n   */\n  getAxesOnZeroOf: null,\n\n  /**\n   * Axis model\n   * @param {module:echarts/coord/cartesian/AxisModel}\n   */\n  model: null,\n  isHorizontal: function () {\n    var position = this.position;\n    return position === 'top' || position === 'bottom';\n  },\n\n  /**\n   * Each item cooresponds to this.getExtent(), which\n   * means globalExtent[0] may greater than globalExtent[1],\n   * unless `asc` is input.\n   *\n   * @param {boolean} [asc]\n   * @return {Array.<number>}\n   */\n  getGlobalExtent: function (asc) {\n    var ret = this.getExtent();\n    ret[0] = this.toGlobalCoord(ret[0]);\n    ret[1] = this.toGlobalCoord(ret[1]);\n    asc && ret[0] > ret[1] && ret.reverse();\n    return ret;\n  },\n  getOtherAxis: function () {\n    this.grid.getOtherAxis();\n  },\n\n  /**\n   * @override\n   */\n  pointToData: function (point, clamp) {\n    return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\n  },\n\n  /**\n   * Transform global coord to local coord,\n   * i.e. var localCoord = axis.toLocalCoord(80);\n   * designate by module:echarts/coord/cartesian/Grid.\n   * @type {Function}\n   */\n  toLocalCoord: null,\n\n  /**\n   * Transform global coord to local coord,\n   * i.e. var globalCoord = axis.toLocalCoord(40);\n   * designate by module:echarts/coord/cartesian/Grid.\n   * @type {Function}\n   */\n  toGlobalCoord: null\n};\nzrUtil.inherits(Axis2D, Axis);\nvar _default = Axis2D;\nmodule.exports = _default;\n\n/***/ }),\n/* 1055 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(583);\n\nvar ComponentModel = __webpack_require__(74);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Grid 是在有直角坐标系的时候必须要存在的\n// 所以这里也要被 Cartesian2D 依赖\nvar _default = ComponentModel.extend({\n  type: 'grid',\n  dependencies: ['xAxis', 'yAxis'],\n  layoutMode: 'box',\n\n  /**\n   * @type {module:echarts/coord/cartesian/Grid}\n   */\n  coordinateSystem: null,\n  defaultOption: {\n    show: false,\n    zlevel: 0,\n    z: 0,\n    left: '10%',\n    top: 60,\n    right: '10%',\n    bottom: 60,\n    // If grid size contain label\n    containLabel: false,\n    // width: {totalWidth} - left - right,\n    // height: {totalHeight} - top - bottom,\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderWidth: 1,\n    borderColor: '#ccc'\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1056 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(583);\n\n__webpack_require__(1057);\n\n/***/ }),\n/* 1057 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar AxisBuilder = __webpack_require__(156);\n\nvar AxisView = __webpack_require__(182);\n\nvar cartesianAxisHelper = __webpack_require__(585);\n\nvar _axisSplitHelper = __webpack_require__(586);\n\nvar rectCoordAxisBuildSplitArea = _axisSplitHelper.rectCoordAxisBuildSplitArea;\nvar rectCoordAxisHandleRemove = _axisSplitHelper.rectCoordAxisHandleRemove;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine', 'minorSplitLine'];\nvar CartesianAxisView = AxisView.extend({\n  type: 'cartesianAxis',\n  axisPointerClass: 'CartesianAxisPointer',\n\n  /**\n   * @override\n   */\n  render: function (axisModel, ecModel, api, payload) {\n    this.group.removeAll();\n    var oldAxisGroup = this._axisGroup;\n    this._axisGroup = new graphic.Group();\n    this.group.add(this._axisGroup);\n\n    if (!axisModel.get('show')) {\n      return;\n    }\n\n    var gridModel = axisModel.getCoordSysModel();\n    var layout = cartesianAxisHelper.layout(gridModel, axisModel);\n    var axisBuilder = new AxisBuilder(axisModel, layout);\n    zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n\n    this._axisGroup.add(axisBuilder.getGroup());\n\n    zrUtil.each(selfBuilderAttrs, function (name) {\n      if (axisModel.get(name + '.show')) {\n        this['_' + name](axisModel, gridModel);\n      }\n    }, this);\n    graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n    CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n  },\n  remove: function () {\n    rectCoordAxisHandleRemove(this);\n  },\n\n  /**\n   * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n   * @param {module:echarts/coord/cartesian/GridModel} gridModel\n   * @private\n   */\n  _splitLine: function (axisModel, gridModel) {\n    var axis = axisModel.axis;\n\n    if (axis.scale.isBlank()) {\n      return;\n    }\n\n    var splitLineModel = axisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineColors = lineStyleModel.get('color');\n    lineColors = zrUtil.isArray(lineColors) ? lineColors : [lineColors];\n    var gridRect = gridModel.coordinateSystem.getRect();\n    var isHorizontal = axis.isHorizontal();\n    var lineCount = 0;\n    var ticksCoords = axis.getTicksCoords({\n      tickModel: splitLineModel\n    });\n    var p1 = [];\n    var p2 = [];\n    var lineStyle = lineStyleModel.getLineStyle();\n\n    for (var i = 0; i < ticksCoords.length; i++) {\n      var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n      if (isHorizontal) {\n        p1[0] = tickCoord;\n        p1[1] = gridRect.y;\n        p2[0] = tickCoord;\n        p2[1] = gridRect.y + gridRect.height;\n      } else {\n        p1[0] = gridRect.x;\n        p1[1] = tickCoord;\n        p2[0] = gridRect.x + gridRect.width;\n        p2[1] = tickCoord;\n      }\n\n      var colorIndex = lineCount++ % lineColors.length;\n      var tickValue = ticksCoords[i].tickValue;\n\n      this._axisGroup.add(new graphic.Line({\n        anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\n        subPixelOptimize: true,\n        shape: {\n          x1: p1[0],\n          y1: p1[1],\n          x2: p2[0],\n          y2: p2[1]\n        },\n        style: zrUtil.defaults({\n          stroke: lineColors[colorIndex]\n        }, lineStyle),\n        silent: true\n      }));\n    }\n  },\n\n  /**\n   * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n   * @param {module:echarts/coord/cartesian/GridModel} gridModel\n   * @private\n   */\n  _minorSplitLine: function (axisModel, gridModel) {\n    var axis = axisModel.axis;\n    var minorSplitLineModel = axisModel.getModel('minorSplitLine');\n    var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n    var gridRect = gridModel.coordinateSystem.getRect();\n    var isHorizontal = axis.isHorizontal();\n    var minorTicksCoords = axis.getMinorTicksCoords();\n\n    if (!minorTicksCoords.length) {\n      return;\n    }\n\n    var p1 = [];\n    var p2 = [];\n    var lineStyle = lineStyleModel.getLineStyle();\n\n    for (var i = 0; i < minorTicksCoords.length; i++) {\n      for (var k = 0; k < minorTicksCoords[i].length; k++) {\n        var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\n\n        if (isHorizontal) {\n          p1[0] = tickCoord;\n          p1[1] = gridRect.y;\n          p2[0] = tickCoord;\n          p2[1] = gridRect.y + gridRect.height;\n        } else {\n          p1[0] = gridRect.x;\n          p1[1] = tickCoord;\n          p2[0] = gridRect.x + gridRect.width;\n          p2[1] = tickCoord;\n        }\n\n        this._axisGroup.add(new graphic.Line({\n          anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\n          subPixelOptimize: true,\n          shape: {\n            x1: p1[0],\n            y1: p1[1],\n            x2: p2[0],\n            y2: p2[1]\n          },\n          style: lineStyle,\n          silent: true\n        }));\n      }\n    }\n  },\n\n  /**\n   * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n   * @param {module:echarts/coord/cartesian/GridModel} gridModel\n   * @private\n   */\n  _splitArea: function (axisModel, gridModel) {\n    rectCoordAxisBuildSplitArea(this, this._axisGroup, axisModel, gridModel);\n  }\n});\nCartesianAxisView.extend({\n  type: 'xAxis'\n});\nCartesianAxisView.extend({\n  type: 'yAxis'\n});\n\n/***/ }),\n/* 1058 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _barGrid = __webpack_require__(331);\n\nvar layout = _barGrid.layout;\nvar largeLayout = _barGrid.largeLayout;\n\n__webpack_require__(411);\n\n__webpack_require__(1059);\n\n__webpack_require__(1060);\n\n__webpack_require__(263);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerLayout(echarts.PRIORITY.VISUAL.LAYOUT, zrUtil.curry(layout, 'bar')); // Use higher prority to avoid to be blocked by other overall layout, which do not\n// only exist in this module, but probably also exist in other modules, like `barPolar`.\n\necharts.registerLayout(echarts.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\necharts.registerVisual({\n  seriesType: 'bar',\n  reset: function (seriesModel) {\n    // Visual coding for legend\n    seriesModel.getData().setVisual('legendSymbol', 'roundRect');\n  }\n});\n\n/***/ }),\n/* 1059 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseBarSeries = __webpack_require__(587);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = BaseBarSeries.extend({\n  type: 'series.bar',\n  dependencies: ['grid', 'polar'],\n  brushSelector: 'rect',\n\n  /**\n   * @override\n   */\n  getProgressive: function () {\n    // Do not support progressive in normal mode.\n    return this.get('large') ? this.get('progressive') : false;\n  },\n\n  /**\n   * @override\n   */\n  getProgressiveThreshold: function () {\n    // Do not support progressive in normal mode.\n    var progressiveThreshold = this.get('progressiveThreshold');\n    var largeThreshold = this.get('largeThreshold');\n\n    if (largeThreshold > progressiveThreshold) {\n      progressiveThreshold = largeThreshold;\n    }\n\n    return progressiveThreshold;\n  },\n  defaultOption: {\n    // If clipped\n    // Only available on cartesian2d\n    clip: true,\n    // If use caps on two sides of bars\n    // Only available on tangential polar bar\n    roundCap: false,\n    showBackground: false,\n    backgroundStyle: {\n      color: 'rgba(180, 180, 180, 0.2)',\n      borderColor: null,\n      borderWidth: 0,\n      borderType: 'solid',\n      borderRadius: 0,\n      shadowBlur: 0,\n      shadowColor: null,\n      shadowOffsetX: 0,\n      shadowOffsetY: 0,\n      opacity: 1\n    }\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1060 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar _helper = __webpack_require__(588);\n\nvar setLabel = _helper.setLabel;\n\nvar Model = __webpack_require__(67);\n\nvar barItemStyle = __webpack_require__(1061);\n\nvar Path = __webpack_require__(63);\n\nvar Group = __webpack_require__(177);\n\nvar _throttle = __webpack_require__(153);\n\nvar throttle = _throttle.throttle;\n\nvar _createClipPathFromCoordSys = __webpack_require__(261);\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar Sausage = __webpack_require__(1062);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'barBorderWidth'];\nvar _eventPos = [0, 0]; // FIXME\n// Just for compatible with ec2.\n\nzrUtil.extend(Model.prototype, barItemStyle);\n\nfunction getClipArea(coord, data) {\n  var coordSysClipArea = coord.getArea && coord.getArea();\n\n  if (coord.type === 'cartesian2d') {\n    var baseAxis = coord.getBaseAxis(); // When boundaryGap is false or using time axis. bar may exceed the grid.\n    // We should not clip this part.\n    // See test/bar2.html\n\n    if (baseAxis.type !== 'category' || !baseAxis.onBand) {\n      var expandWidth = data.getLayout('bandWidth');\n\n      if (baseAxis.isHorizontal()) {\n        coordSysClipArea.x -= expandWidth;\n        coordSysClipArea.width += expandWidth * 2;\n      } else {\n        coordSysClipArea.y -= expandWidth;\n        coordSysClipArea.height += expandWidth * 2;\n      }\n    }\n  }\n\n  return coordSysClipArea;\n}\n\nvar _default = echarts.extendChartView({\n  type: 'bar',\n  render: function (seriesModel, ecModel, api) {\n    this._updateDrawMode(seriesModel);\n\n    var coordinateSystemType = seriesModel.get('coordinateSystem');\n\n    if (coordinateSystemType === 'cartesian2d' || coordinateSystemType === 'polar') {\n      this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api);\n    } else {}\n\n    return this.group;\n  },\n  incrementalPrepareRender: function (seriesModel, ecModel, api) {\n    this._clear();\n\n    this._updateDrawMode(seriesModel);\n  },\n  incrementalRender: function (params, seriesModel, ecModel, api) {\n    // Do not support progressive in normal mode.\n    this._incrementalRenderLarge(params, seriesModel);\n  },\n  _updateDrawMode: function (seriesModel) {\n    var isLargeDraw = seriesModel.pipelineContext.large;\n\n    if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n      this._isLargeDraw = isLargeDraw;\n\n      this._clear();\n    }\n  },\n  _renderNormal: function (seriesModel, ecModel, api) {\n    var group = this.group;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var coord = seriesModel.coordinateSystem;\n    var baseAxis = coord.getBaseAxis();\n    var isHorizontalOrRadial;\n\n    if (coord.type === 'cartesian2d') {\n      isHorizontalOrRadial = baseAxis.isHorizontal();\n    } else if (coord.type === 'polar') {\n      isHorizontalOrRadial = baseAxis.dim === 'angle';\n    }\n\n    var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\n    var needsClip = seriesModel.get('clip', true);\n    var coordSysClipArea = getClipArea(coord, data); // If there is clipPath created in large mode. Remove it.\n\n    group.removeClipPath(); // We don't use clipPath in normal mode because we needs a perfect animation\n    // And don't want the label are clipped.\n\n    var roundCap = seriesModel.get('roundCap', true);\n    var drawBackground = seriesModel.get('showBackground', true);\n    var backgroundModel = seriesModel.getModel('backgroundStyle');\n    var barBorderRadius = backgroundModel.get('barBorderRadius') || 0;\n    var bgEls = [];\n    var oldBgEls = this._backgroundEls || [];\n\n    var createBackground = function (dataIndex) {\n      var bgLayout = getLayout[coord.type](data, dataIndex);\n      var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\n      bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n      if (coord.type === 'cartesian2d') {\n        bgEl.setShape('r', barBorderRadius);\n      }\n\n      bgEls[dataIndex] = bgEl;\n      return bgEl;\n    };\n\n    data.diff(oldData).add(function (dataIndex) {\n      var itemModel = data.getItemModel(dataIndex);\n      var layout = getLayout[coord.type](data, dataIndex, itemModel);\n\n      if (drawBackground) {\n        createBackground(dataIndex);\n      } // If dataZoom in filteMode: 'empty', the baseValue can be set as NaN in \"axisProxy\".\n\n\n      if (!data.hasValue(dataIndex)) {\n        return;\n      }\n\n      if (needsClip) {\n        // Clip will modify the layout params.\n        // And return a boolean to determine if the shape are fully clipped.\n        var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n        if (isClipped) {\n          group.remove(el);\n          return;\n        }\n      }\n\n      var el = elementCreator[coord.type](dataIndex, layout, isHorizontalOrRadial, animationModel, false, roundCap);\n      data.setItemGraphicEl(dataIndex, el);\n      group.add(el);\n      updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n    }).update(function (newIndex, oldIndex) {\n      var itemModel = data.getItemModel(newIndex);\n      var layout = getLayout[coord.type](data, newIndex, itemModel);\n\n      if (drawBackground) {\n        var bgEl;\n\n        if (oldBgEls.length === 0) {\n          bgEl = createBackground(oldIndex);\n        } else {\n          bgEl = oldBgEls[oldIndex];\n          bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n          if (coord.type === 'cartesian2d') {\n            bgEl.setShape('r', barBorderRadius);\n          }\n\n          bgEls[newIndex] = bgEl;\n        }\n\n        var bgLayout = getLayout[coord.type](data, newIndex);\n        var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\n        graphic.updateProps(bgEl, {\n          shape: shape\n        }, animationModel, newIndex);\n      }\n\n      var el = oldData.getItemGraphicEl(oldIndex);\n\n      if (!data.hasValue(newIndex)) {\n        group.remove(el);\n        return;\n      }\n\n      if (needsClip) {\n        var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n        if (isClipped) {\n          group.remove(el);\n          return;\n        }\n      }\n\n      if (el) {\n        graphic.updateProps(el, {\n          shape: layout\n        }, animationModel, newIndex);\n      } else {\n        el = elementCreator[coord.type](newIndex, layout, isHorizontalOrRadial, animationModel, true, roundCap);\n      }\n\n      data.setItemGraphicEl(newIndex, el); // Add back\n\n      group.add(el);\n      updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n    }).remove(function (dataIndex) {\n      var el = oldData.getItemGraphicEl(dataIndex);\n\n      if (coord.type === 'cartesian2d') {\n        el && removeRect(dataIndex, animationModel, el);\n      } else {\n        el && removeSector(dataIndex, animationModel, el);\n      }\n    }).execute();\n    var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\n    bgGroup.removeAll();\n\n    for (var i = 0; i < bgEls.length; ++i) {\n      bgGroup.add(bgEls[i]);\n    }\n\n    group.add(bgGroup);\n    this._backgroundEls = bgEls;\n    this._data = data;\n  },\n  _renderLarge: function (seriesModel, ecModel, api) {\n    this._clear();\n\n    createLarge(seriesModel, this.group); // Use clipPath in large mode.\n\n    var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n    if (clipPath) {\n      this.group.setClipPath(clipPath);\n    } else {\n      this.group.removeClipPath();\n    }\n  },\n  _incrementalRenderLarge: function (params, seriesModel) {\n    this._removeBackground();\n\n    createLarge(seriesModel, this.group, true);\n  },\n  dispose: zrUtil.noop,\n  remove: function (ecModel) {\n    this._clear(ecModel);\n  },\n  _clear: function (ecModel) {\n    var group = this.group;\n    var data = this._data;\n\n    if (ecModel && ecModel.get('animation') && data && !this._isLargeDraw) {\n      this._removeBackground();\n\n      this._backgroundEls = [];\n      data.eachItemGraphicEl(function (el) {\n        if (el.type === 'sector') {\n          removeSector(el.dataIndex, ecModel, el);\n        } else {\n          removeRect(el.dataIndex, ecModel, el);\n        }\n      });\n    } else {\n      group.removeAll();\n    }\n\n    this._data = null;\n  },\n  _removeBackground: function () {\n    this.group.remove(this._backgroundGroup);\n    this._backgroundGroup = null;\n  }\n});\n\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar clip = {\n  cartesian2d: function (coordSysBoundingRect, layout) {\n    var signWidth = layout.width < 0 ? -1 : 1;\n    var signHeight = layout.height < 0 ? -1 : 1; // Needs positive width and height\n\n    if (signWidth < 0) {\n      layout.x += layout.width;\n      layout.width = -layout.width;\n    }\n\n    if (signHeight < 0) {\n      layout.y += layout.height;\n      layout.height = -layout.height;\n    }\n\n    var x = mathMax(layout.x, coordSysBoundingRect.x);\n    var x2 = mathMin(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\n    var y = mathMax(layout.y, coordSysBoundingRect.y);\n    var y2 = mathMin(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\n    layout.x = x;\n    layout.y = y;\n    layout.width = x2 - x;\n    layout.height = y2 - y;\n    var clipped = layout.width < 0 || layout.height < 0; // Reverse back\n\n    if (signWidth < 0) {\n      layout.x += layout.width;\n      layout.width = -layout.width;\n    }\n\n    if (signHeight < 0) {\n      layout.y += layout.height;\n      layout.height = -layout.height;\n    }\n\n    return clipped;\n  },\n  polar: function (coordSysClipArea, layout) {\n    var signR = layout.r0 <= layout.r ? 1 : -1; // Make sure r is larger than r0\n\n    if (signR < 0) {\n      var r = layout.r;\n      layout.r = layout.r0;\n      layout.r0 = r;\n    }\n\n    var r = mathMin(layout.r, coordSysClipArea.r);\n    var r0 = mathMax(layout.r0, coordSysClipArea.r0);\n    layout.r = r;\n    layout.r0 = r0;\n    var clipped = r - r0 < 0; // Reverse back\n\n    if (signR < 0) {\n      var r = layout.r;\n      layout.r = layout.r0;\n      layout.r0 = r;\n    }\n\n    return clipped;\n  }\n};\nvar elementCreator = {\n  cartesian2d: function (dataIndex, layout, isHorizontal, animationModel, isUpdate) {\n    var rect = new graphic.Rect({\n      shape: zrUtil.extend({}, layout),\n      z2: 1\n    });\n    rect.name = 'item'; // Animation\n\n    if (animationModel) {\n      var rectShape = rect.shape;\n      var animateProperty = isHorizontal ? 'height' : 'width';\n      var animateTarget = {};\n      rectShape[animateProperty] = 0;\n      animateTarget[animateProperty] = layout[animateProperty];\n      graphic[isUpdate ? 'updateProps' : 'initProps'](rect, {\n        shape: animateTarget\n      }, animationModel, dataIndex);\n    }\n\n    return rect;\n  },\n  polar: function (dataIndex, layout, isRadial, animationModel, isUpdate, roundCap) {\n    // Keep the same logic with bar in catesion: use end value to control\n    // direction. Notice that if clockwise is true (by default), the sector\n    // will always draw clockwisely, no matter whether endAngle is greater\n    // or less than startAngle.\n    var clockwise = layout.startAngle < layout.endAngle;\n    var ShapeClass = !isRadial && roundCap ? Sausage : graphic.Sector;\n    var sector = new ShapeClass({\n      shape: zrUtil.defaults({\n        clockwise: clockwise\n      }, layout),\n      z2: 1\n    });\n    sector.name = 'item'; // Animation\n\n    if (animationModel) {\n      var sectorShape = sector.shape;\n      var animateProperty = isRadial ? 'r' : 'endAngle';\n      var animateTarget = {};\n      sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\n      animateTarget[animateProperty] = layout[animateProperty];\n      graphic[isUpdate ? 'updateProps' : 'initProps'](sector, {\n        shape: animateTarget\n      }, animationModel, dataIndex);\n    }\n\n    return sector;\n  }\n};\n\nfunction removeRect(dataIndex, animationModel, el) {\n  // Not show text when animating\n  el.style.text = null;\n  graphic.updateProps(el, {\n    shape: {\n      width: 0\n    }\n  }, animationModel, dataIndex, function () {\n    el.parent && el.parent.remove(el);\n  });\n}\n\nfunction removeSector(dataIndex, animationModel, el) {\n  // Not show text when animating\n  el.style.text = null;\n  graphic.updateProps(el, {\n    shape: {\n      r: el.shape.r0\n    }\n  }, animationModel, dataIndex, function () {\n    el.parent && el.parent.remove(el);\n  });\n}\n\nvar getLayout = {\n  // itemModel is only used to get borderWidth, which is not needed\n  // when calculating bar background layout.\n  cartesian2d: function (data, dataIndex, itemModel) {\n    var layout = data.getItemLayout(dataIndex);\n    var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0; // fix layout with lineWidth\n\n    var signX = layout.width > 0 ? 1 : -1;\n    var signY = layout.height > 0 ? 1 : -1;\n    return {\n      x: layout.x + signX * fixedLineWidth / 2,\n      y: layout.y + signY * fixedLineWidth / 2,\n      width: layout.width - signX * fixedLineWidth,\n      height: layout.height - signY * fixedLineWidth\n    };\n  },\n  polar: function (data, dataIndex, itemModel) {\n    var layout = data.getItemLayout(dataIndex);\n    return {\n      cx: layout.cx,\n      cy: layout.cy,\n      r0: layout.r0,\n      r: layout.r,\n      startAngle: layout.startAngle,\n      endAngle: layout.endAngle\n    };\n  }\n};\n\nfunction isZeroOnPolar(layout) {\n  return layout.startAngle != null && layout.endAngle != null && layout.startAngle === layout.endAngle;\n}\n\nfunction updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\n  var color = data.getItemVisual(dataIndex, 'color');\n  var opacity = data.getItemVisual(dataIndex, 'opacity');\n  var stroke = data.getVisual('borderColor');\n  var itemStyleModel = itemModel.getModel('itemStyle');\n  var hoverStyle = itemModel.getModel('emphasis.itemStyle').getBarItemStyle();\n\n  if (!isPolar) {\n    el.setShape('r', itemStyleModel.get('barBorderRadius') || 0);\n  }\n\n  el.useStyle(zrUtil.defaults({\n    stroke: isZeroOnPolar(layout) ? 'none' : stroke,\n    fill: isZeroOnPolar(layout) ? 'none' : color,\n    opacity: opacity\n  }, itemStyleModel.getBarItemStyle()));\n  var cursorStyle = itemModel.getShallow('cursor');\n  cursorStyle && el.attr('cursor', cursorStyle);\n  var labelPositionOutside = isHorizontal ? layout.height > 0 ? 'bottom' : 'top' : layout.width > 0 ? 'left' : 'right';\n\n  if (!isPolar) {\n    setLabel(el.style, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside);\n  }\n\n  if (isZeroOnPolar(layout)) {\n    hoverStyle.fill = hoverStyle.stroke = 'none';\n  }\n\n  graphic.setHoverStyle(el, hoverStyle);\n} // In case width or height are too small.\n\n\nfunction getLineWidth(itemModel, rawLayout) {\n  var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0; // width or height may be NaN for empty data\n\n  var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\n  var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\n  return Math.min(lineWidth, width, height);\n}\n\nvar LargePath = Path.extend({\n  type: 'largeBar',\n  shape: {\n    points: []\n  },\n  buildPath: function (ctx, shape) {\n    // Drawing lines is more efficient than drawing\n    // a whole line or drawing rects.\n    var points = shape.points;\n    var startPoint = this.__startPoint;\n    var baseDimIdx = this.__baseDimIdx;\n\n    for (var i = 0; i < points.length; i += 2) {\n      startPoint[baseDimIdx] = points[i + baseDimIdx];\n      ctx.moveTo(startPoint[0], startPoint[1]);\n      ctx.lineTo(points[i], points[i + 1]);\n    }\n  }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n  // TODO support polar\n  var data = seriesModel.getData();\n  var startPoint = [];\n  var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\n  startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\n  var largeDataIndices = data.getLayout('largeDataIndices');\n  var barWidth = data.getLayout('barWidth');\n  var backgroundModel = seriesModel.getModel('backgroundStyle');\n  var drawBackground = seriesModel.get('showBackground', true);\n\n  if (drawBackground) {\n    var points = data.getLayout('largeBackgroundPoints');\n    var backgroundStartPoint = [];\n    backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\n    var bgEl = new LargePath({\n      shape: {\n        points: points\n      },\n      incremental: !!incremental,\n      __startPoint: backgroundStartPoint,\n      __baseDimIdx: baseDimIdx,\n      __largeDataIndices: largeDataIndices,\n      __barWidth: barWidth,\n      silent: true,\n      z2: 0\n    });\n    setLargeBackgroundStyle(bgEl, backgroundModel, data);\n    group.add(bgEl);\n  }\n\n  var el = new LargePath({\n    shape: {\n      points: data.getLayout('largePoints')\n    },\n    incremental: !!incremental,\n    __startPoint: startPoint,\n    __baseDimIdx: baseDimIdx,\n    __largeDataIndices: largeDataIndices,\n    __barWidth: barWidth\n  });\n  group.add(el);\n  setLargeStyle(el, seriesModel, data); // Enable tooltip and user mouse/touch event handlers.\n\n  el.seriesIndex = seriesModel.seriesIndex;\n\n  if (!seriesModel.get('silent')) {\n    el.on('mousedown', largePathUpdateDataIndex);\n    el.on('mousemove', largePathUpdateDataIndex);\n  }\n} // Use throttle to avoid frequently traverse to find dataIndex.\n\n\nvar largePathUpdateDataIndex = throttle(function (event) {\n  var largePath = this;\n  var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\n  largePath.dataIndex = dataIndex >= 0 ? dataIndex : null;\n}, 30, false);\n\nfunction largePathFindDataIndex(largePath, x, y) {\n  var baseDimIdx = largePath.__baseDimIdx;\n  var valueDimIdx = 1 - baseDimIdx;\n  var points = largePath.shape.points;\n  var largeDataIndices = largePath.__largeDataIndices;\n  var barWidthHalf = Math.abs(largePath.__barWidth / 2);\n  var startValueVal = largePath.__startPoint[valueDimIdx];\n  _eventPos[0] = x;\n  _eventPos[1] = y;\n  var pointerBaseVal = _eventPos[baseDimIdx];\n  var pointerValueVal = _eventPos[1 - baseDimIdx];\n  var baseLowerBound = pointerBaseVal - barWidthHalf;\n  var baseUpperBound = pointerBaseVal + barWidthHalf;\n\n  for (var i = 0, len = points.length / 2; i < len; i++) {\n    var ii = i * 2;\n    var barBaseVal = points[ii + baseDimIdx];\n    var barValueVal = points[ii + valueDimIdx];\n\n    if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound && (startValueVal <= barValueVal ? pointerValueVal >= startValueVal && pointerValueVal <= barValueVal : pointerValueVal >= barValueVal && pointerValueVal <= startValueVal)) {\n      return largeDataIndices[i];\n    }\n  }\n\n  return -1;\n}\n\nfunction setLargeStyle(el, seriesModel, data) {\n  var borderColor = data.getVisual('borderColor') || data.getVisual('color');\n  var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(['color', 'borderColor']);\n  el.useStyle(itemStyle);\n  el.style.fill = null;\n  el.style.stroke = borderColor;\n  el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction setLargeBackgroundStyle(el, backgroundModel, data) {\n  var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\n  var itemStyle = backgroundModel.getItemStyle(['color', 'borderColor']);\n  el.useStyle(itemStyle);\n  el.style.fill = null;\n  el.style.stroke = borderColor;\n  el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction createBackgroundShape(isHorizontalOrRadial, layout, coord) {\n  var coordLayout;\n  var isPolar = coord.type === 'polar';\n\n  if (isPolar) {\n    coordLayout = coord.getArea();\n  } else {\n    coordLayout = coord.grid.getRect();\n  }\n\n  if (isPolar) {\n    return {\n      cx: coordLayout.cx,\n      cy: coordLayout.cy,\n      r0: isHorizontalOrRadial ? coordLayout.r0 : layout.r0,\n      r: isHorizontalOrRadial ? coordLayout.r : layout.r,\n      startAngle: isHorizontalOrRadial ? layout.startAngle : 0,\n      endAngle: isHorizontalOrRadial ? layout.endAngle : Math.PI * 2\n    };\n  } else {\n    return {\n      x: isHorizontalOrRadial ? layout.x : coordLayout.x,\n      y: isHorizontalOrRadial ? coordLayout.y : layout.y,\n      width: isHorizontalOrRadial ? layout.width : coordLayout.width,\n      height: isHorizontalOrRadial ? coordLayout.height : layout.height\n    };\n  }\n}\n\nfunction createBackgroundEl(coord, isHorizontalOrRadial, layout) {\n  var ElementClz = coord.type === 'polar' ? graphic.Sector : graphic.Rect;\n  return new ElementClz({\n    shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\n    silent: true,\n    z2: 0\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1061 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = __webpack_require__(212);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getBarItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], // Compatitable with 2\n['stroke', 'barBorderColor'], ['lineWidth', 'barBorderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n  getBarItemStyle: function (excludes) {\n    var style = getBarItemStyle(this, excludes);\n\n    if (this.getBorderLineDash) {\n      var lineDash = this.getBorderLineDash();\n      lineDash && (style.lineDash = lineDash);\n    }\n\n    return style;\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1062 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _graphic = __webpack_require__(23);\n\nvar extendShape = _graphic.extendShape;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Sausage: similar to sector, but have half circle on both sides\n * @public\n */\nvar _default = extendShape({\n  type: 'sausage',\n  shape: {\n    cx: 0,\n    cy: 0,\n    r0: 0,\n    r: 0,\n    startAngle: 0,\n    endAngle: Math.PI * 2,\n    clockwise: true\n  },\n  buildPath: function (ctx, shape) {\n    var x = shape.cx;\n    var y = shape.cy;\n    var r0 = Math.max(shape.r0 || 0, 0);\n    var r = Math.max(shape.r, 0);\n    var dr = (r - r0) * 0.5;\n    var rCenter = r0 + dr;\n    var startAngle = shape.startAngle;\n    var endAngle = shape.endAngle;\n    var clockwise = shape.clockwise;\n    var unitStartX = Math.cos(startAngle);\n    var unitStartY = Math.sin(startAngle);\n    var unitEndX = Math.cos(endAngle);\n    var unitEndY = Math.sin(endAngle);\n    var lessThanCircle = clockwise ? endAngle - startAngle < Math.PI * 2 : startAngle - endAngle < Math.PI * 2;\n\n    if (lessThanCircle) {\n      ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y);\n      ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise);\n    }\n\n    ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n    ctx.moveTo(unitEndX * r + x, unitEndY * r + y);\n    ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\n\n    if (r0 !== 0) {\n      ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n      ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y);\n    }\n\n    ctx.closePath();\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1063 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\n__webpack_require__(1064);\n\n__webpack_require__(1065);\n\nvar createDataSelectAction = __webpack_require__(589);\n\nvar dataColor = __webpack_require__(335);\n\nvar pieLayout = __webpack_require__(1066);\n\nvar dataFilter = __webpack_require__(265);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\ncreateDataSelectAction('pie', [{\n  type: 'pieToggleSelect',\n  event: 'pieselectchanged',\n  method: 'toggleSelected'\n}, {\n  type: 'pieSelect',\n  event: 'pieselected',\n  method: 'select'\n}, {\n  type: 'pieUnSelect',\n  event: 'pieunselected',\n  method: 'unSelect'\n}]);\necharts.registerVisual(dataColor('pie'));\necharts.registerLayout(zrUtil.curry(pieLayout, 'pie'));\necharts.registerProcessor(dataFilter('pie'));\n\n/***/ }),\n/* 1064 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar createListSimply = __webpack_require__(217);\n\nvar zrUtil = __webpack_require__(2);\n\nvar modelUtil = __webpack_require__(31);\n\nvar _number = __webpack_require__(26);\n\nvar getPercentWithPrecision = _number.getPercentWithPrecision;\n\nvar dataSelectableMixin = __webpack_require__(412);\n\nvar _dataProvider = __webpack_require__(179);\n\nvar retrieveRawAttr = _dataProvider.retrieveRawAttr;\n\nvar _sourceHelper = __webpack_require__(144);\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\n\nvar LegendVisualProvider = __webpack_require__(264);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PieSeries = echarts.extendSeriesModel({\n  type: 'series.pie',\n  // Overwrite\n  init: function (option) {\n    PieSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n    this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n    this.updateSelectedMap(this._createSelectableList());\n\n    this._defaultLabelLine(option);\n  },\n  // Overwrite\n  mergeOption: function (newOption) {\n    PieSeries.superCall(this, 'mergeOption', newOption);\n    this.updateSelectedMap(this._createSelectableList());\n  },\n  getInitialData: function (option, ecModel) {\n    return createListSimply(this, {\n      coordDimensions: ['value'],\n      encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n    });\n  },\n  _createSelectableList: function () {\n    var data = this.getRawData();\n    var valueDim = data.mapDimension('value');\n    var targetList = [];\n\n    for (var i = 0, len = data.count(); i < len; i++) {\n      targetList.push({\n        name: data.getName(i),\n        value: data.get(valueDim, i),\n        selected: retrieveRawAttr(data, i, 'selected')\n      });\n    }\n\n    return targetList;\n  },\n  // Overwrite\n  getDataParams: function (dataIndex) {\n    var data = this.getData();\n    var params = PieSeries.superCall(this, 'getDataParams', dataIndex); // FIXME toFixed?\n\n    var valueList = [];\n    data.each(data.mapDimension('value'), function (value) {\n      valueList.push(value);\n    });\n    params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\n    params.$vars.push('percent');\n    return params;\n  },\n  _defaultLabelLine: function (option) {\n    // Extend labelLine emphasis\n    modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n    var labelLineNormalOpt = option.labelLine;\n    var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n    labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n    labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // 默认全局居中\n    center: ['50%', '50%'],\n    radius: [0, '75%'],\n    // 默认顺时针\n    clockwise: true,\n    startAngle: 90,\n    // 最小角度改为0\n    minAngle: 0,\n    // If the angle of a sector less than `minShowLabelAngle`,\n    // the label will not be displayed.\n    minShowLabelAngle: 0,\n    // 选中时扇区偏移量\n    selectedOffset: 10,\n    // 高亮扇区偏移量\n    hoverOffset: 10,\n    // If use strategy to avoid label overlapping\n    avoidLabelOverlap: true,\n    // 选择模式，默认关闭，可选single，multiple\n    // selectedMode: false,\n    // 南丁格尔玫瑰图模式，'radius'（半径） | 'area'（面积）\n    // roseType: null,\n    percentPrecision: 2,\n    // If still show when all data zero.\n    stillShowZeroSum: true,\n    // cursor: null,\n    left: 0,\n    top: 0,\n    right: 0,\n    bottom: 0,\n    width: null,\n    height: null,\n    label: {\n      // If rotate around circle\n      rotate: false,\n      show: true,\n      // 'outer', 'inside', 'center'\n      position: 'outer',\n      // 'none', 'labelLine', 'edge'. Works only when position is 'outer'\n      alignTo: 'none',\n      // Closest distance between label and chart edge.\n      // Works only position is 'outer' and alignTo is 'edge'.\n      margin: '25%',\n      // Works only position is 'outer' and alignTo is not 'edge'.\n      bleedMargin: 10,\n      // Distance between text and label line.\n      distanceToLabelLine: 5 // formatter: 标签文本格式器，同Tooltip.formatter，不支持异步回调\n      // 默认使用全局文本样式，详见TEXTSTYLE\n      // distance: 当position为inner时有效，为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n\n    },\n    // Enabled when label.normal.position is 'outer'\n    labelLine: {\n      show: true,\n      // 引导线两段中的第一段长度\n      length: 15,\n      // 引导线两段中的第二段长度\n      length2: 15,\n      smooth: false,\n      lineStyle: {\n        // color: 各异,\n        width: 1,\n        type: 'solid'\n      }\n    },\n    itemStyle: {\n      borderWidth: 1\n    },\n    // Animation type. Valid values: expansion, scale\n    animationType: 'expansion',\n    // Animation type when update. Valid values: transition, expansion\n    animationTypeUpdate: 'transition',\n    animationEasing: 'cubicOut'\n  }\n});\nzrUtil.mixin(PieSeries, dataSelectableMixin);\nvar _default = PieSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1065 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar ChartView = __webpack_require__(131);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/model/Series} seriesModel\n * @param {boolean} hasAnimation\n * @inner\n */\nfunction updateDataSelected(uid, seriesModel, hasAnimation, api) {\n  var data = seriesModel.getData();\n  var dataIndex = this.dataIndex;\n  var name = data.getName(dataIndex);\n  var selectedOffset = seriesModel.get('selectedOffset');\n  api.dispatchAction({\n    type: 'pieToggleSelect',\n    from: uid,\n    name: name,\n    seriesId: seriesModel.id\n  });\n  data.each(function (idx) {\n    toggleItemSelected(data.getItemGraphicEl(idx), data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), selectedOffset, hasAnimation);\n  });\n}\n/**\n * @param {module:zrender/graphic/Sector} el\n * @param {Object} layout\n * @param {boolean} isSelected\n * @param {number} selectedOffset\n * @param {boolean} hasAnimation\n * @inner\n */\n\n\nfunction toggleItemSelected(el, layout, isSelected, selectedOffset, hasAnimation) {\n  var midAngle = (layout.startAngle + layout.endAngle) / 2;\n  var dx = Math.cos(midAngle);\n  var dy = Math.sin(midAngle);\n  var offset = isSelected ? selectedOffset : 0;\n  var position = [dx * offset, dy * offset];\n  hasAnimation // animateTo will stop revious animation like update transition\n  ? el.animate().when(200, {\n    position: position\n  }).start('bounceOut') : el.attr('position', position);\n}\n/**\n * Piece of pie including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction PiePiece(data, idx) {\n  graphic.Group.call(this);\n  var sector = new graphic.Sector({\n    z2: 2\n  });\n  var polyline = new graphic.Polyline();\n  var text = new graphic.Text();\n  this.add(sector);\n  this.add(polyline);\n  this.add(text);\n  this.updateData(data, idx, true);\n}\n\nvar piePieceProto = PiePiece.prototype;\n\npiePieceProto.updateData = function (data, idx, firstCreate) {\n  var sector = this.childAt(0);\n  var labelLine = this.childAt(1);\n  var labelText = this.childAt(2);\n  var seriesModel = data.hostModel;\n  var itemModel = data.getItemModel(idx);\n  var layout = data.getItemLayout(idx);\n  var sectorShape = zrUtil.extend({}, layout);\n  sectorShape.label = null;\n  var animationTypeUpdate = seriesModel.getShallow('animationTypeUpdate');\n\n  if (firstCreate) {\n    sector.setShape(sectorShape);\n    var animationType = seriesModel.getShallow('animationType');\n\n    if (animationType === 'scale') {\n      sector.shape.r = layout.r0;\n      graphic.initProps(sector, {\n        shape: {\n          r: layout.r\n        }\n      }, seriesModel, idx);\n    } // Expansion\n    else {\n        sector.shape.endAngle = layout.startAngle;\n        graphic.updateProps(sector, {\n          shape: {\n            endAngle: layout.endAngle\n          }\n        }, seriesModel, idx);\n      }\n  } else {\n    if (animationTypeUpdate === 'expansion') {\n      // Sectors are set to be target shape and an overlaying clipPath is used for animation\n      sector.setShape(sectorShape);\n    } else {\n      // Transition animation from the old shape\n      graphic.updateProps(sector, {\n        shape: sectorShape\n      }, seriesModel, idx);\n    }\n  } // Update common style\n\n\n  var visualColor = data.getItemVisual(idx, 'color');\n  sector.useStyle(zrUtil.defaults({\n    lineJoin: 'bevel',\n    fill: visualColor\n  }, itemModel.getModel('itemStyle').getItemStyle()));\n  sector.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n  var cursorStyle = itemModel.getShallow('cursor');\n  cursorStyle && sector.attr('cursor', cursorStyle); // Toggle selected\n\n  toggleItemSelected(this, data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), seriesModel.get('selectedOffset'), seriesModel.get('animation')); // Label and text animation should be applied only for transition type animation when update\n\n  var withAnimation = !firstCreate && animationTypeUpdate === 'transition';\n\n  this._updateLabel(data, idx, withAnimation);\n\n  this.highDownOnUpdate = !seriesModel.get('silent') ? function (fromState, toState) {\n    var hasAnimation = seriesModel.isAnimationEnabled() && itemModel.get('hoverAnimation');\n\n    if (toState === 'emphasis') {\n      labelLine.ignore = labelLine.hoverIgnore;\n      labelText.ignore = labelText.hoverIgnore; // Sector may has animation of updating data. Force to move to the last frame\n      // Or it may stopped on the wrong shape\n\n      if (hasAnimation) {\n        sector.stopAnimation(true);\n        sector.animateTo({\n          shape: {\n            r: layout.r + seriesModel.get('hoverOffset')\n          }\n        }, 300, 'elasticOut');\n      }\n    } else {\n      labelLine.ignore = labelLine.normalIgnore;\n      labelText.ignore = labelText.normalIgnore;\n\n      if (hasAnimation) {\n        sector.stopAnimation(true);\n        sector.animateTo({\n          shape: {\n            r: layout.r\n          }\n        }, 300, 'elasticOut');\n      }\n    }\n  } : null;\n  graphic.setHoverStyle(this);\n};\n\npiePieceProto._updateLabel = function (data, idx, withAnimation) {\n  var labelLine = this.childAt(1);\n  var labelText = this.childAt(2);\n  var seriesModel = data.hostModel;\n  var itemModel = data.getItemModel(idx);\n  var layout = data.getItemLayout(idx);\n  var labelLayout = layout.label;\n  var visualColor = data.getItemVisual(idx, 'color');\n\n  if (!labelLayout || isNaN(labelLayout.x) || isNaN(labelLayout.y)) {\n    labelText.ignore = labelText.normalIgnore = labelText.hoverIgnore = labelLine.ignore = labelLine.normalIgnore = labelLine.hoverIgnore = true;\n    return;\n  }\n\n  var targetLineShape = {\n    points: labelLayout.linePoints || [[labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y]]\n  };\n  var targetTextStyle = {\n    x: labelLayout.x,\n    y: labelLayout.y\n  };\n\n  if (withAnimation) {\n    graphic.updateProps(labelLine, {\n      shape: targetLineShape\n    }, seriesModel, idx);\n    graphic.updateProps(labelText, {\n      style: targetTextStyle\n    }, seriesModel, idx);\n  } else {\n    labelLine.attr({\n      shape: targetLineShape\n    });\n    labelText.attr({\n      style: targetTextStyle\n    });\n  }\n\n  labelText.attr({\n    rotation: labelLayout.rotation,\n    origin: [labelLayout.x, labelLayout.y],\n    z2: 10\n  });\n  var labelModel = itemModel.getModel('label');\n  var labelHoverModel = itemModel.getModel('emphasis.label');\n  var labelLineModel = itemModel.getModel('labelLine');\n  var labelLineHoverModel = itemModel.getModel('emphasis.labelLine');\n  var visualColor = data.getItemVisual(idx, 'color');\n  graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {\n    labelFetcher: data.hostModel,\n    labelDataIndex: idx,\n    defaultText: labelLayout.text,\n    autoColor: visualColor,\n    useInsideStyle: !!labelLayout.inside\n  }, {\n    textAlign: labelLayout.textAlign,\n    textVerticalAlign: labelLayout.verticalAlign,\n    opacity: data.getItemVisual(idx, 'opacity')\n  });\n  labelText.ignore = labelText.normalIgnore = !labelModel.get('show');\n  labelText.hoverIgnore = !labelHoverModel.get('show');\n  labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show');\n  labelLine.hoverIgnore = !labelLineHoverModel.get('show'); // Default use item visual color\n\n  labelLine.setStyle({\n    stroke: visualColor,\n    opacity: data.getItemVisual(idx, 'opacity')\n  });\n  labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());\n  labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();\n  var smooth = labelLineModel.get('smooth');\n\n  if (smooth && smooth === true) {\n    smooth = 0.4;\n  }\n\n  labelLine.setShape({\n    smooth: smooth\n  });\n};\n\nzrUtil.inherits(PiePiece, graphic.Group); // Pie view\n\nvar PieView = ChartView.extend({\n  type: 'pie',\n  init: function () {\n    var sectorGroup = new graphic.Group();\n    this._sectorGroup = sectorGroup;\n  },\n  render: function (seriesModel, ecModel, api, payload) {\n    if (payload && payload.from === this.uid) {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var group = this.group;\n    var hasAnimation = ecModel.get('animation');\n    var isFirstRender = !oldData;\n    var animationType = seriesModel.get('animationType');\n    var animationTypeUpdate = seriesModel.get('animationTypeUpdate');\n    var onSectorClick = zrUtil.curry(updateDataSelected, this.uid, seriesModel, hasAnimation, api);\n    var selectedMode = seriesModel.get('selectedMode');\n    data.diff(oldData).add(function (idx) {\n      var piePiece = new PiePiece(data, idx); // Default expansion animation\n\n      if (isFirstRender && animationType !== 'scale') {\n        piePiece.eachChild(function (child) {\n          child.stopAnimation(true);\n        });\n      }\n\n      selectedMode && piePiece.on('click', onSectorClick);\n      data.setItemGraphicEl(idx, piePiece);\n      group.add(piePiece);\n    }).update(function (newIdx, oldIdx) {\n      var piePiece = oldData.getItemGraphicEl(oldIdx);\n\n      if (!isFirstRender && animationTypeUpdate !== 'transition') {\n        piePiece.eachChild(function (child) {\n          child.stopAnimation(true);\n        });\n      }\n\n      piePiece.updateData(data, newIdx);\n      piePiece.off('click');\n      selectedMode && piePiece.on('click', onSectorClick);\n      group.add(piePiece);\n      data.setItemGraphicEl(newIdx, piePiece);\n    }).remove(function (idx) {\n      var piePiece = oldData.getItemGraphicEl(idx);\n      group.remove(piePiece);\n    }).execute();\n\n    if (hasAnimation && data.count() > 0 && (isFirstRender ? animationType !== 'scale' : animationTypeUpdate !== 'transition')) {\n      var shape = data.getItemLayout(0);\n\n      for (var s = 1; isNaN(shape.startAngle) && s < data.count(); ++s) {\n        shape = data.getItemLayout(s);\n      }\n\n      var r = Math.max(api.getWidth(), api.getHeight()) / 2;\n      var removeClipPath = zrUtil.bind(group.removeClipPath, group);\n      group.setClipPath(this._createClipPath(shape.cx, shape.cy, r, shape.startAngle, shape.clockwise, removeClipPath, seriesModel, isFirstRender));\n    } else {\n      // clipPath is used in first-time animation, so remove it when otherwise. See: #8994\n      group.removeClipPath();\n    }\n\n    this._data = data;\n  },\n  dispose: function () {},\n  _createClipPath: function (cx, cy, r, startAngle, clockwise, cb, seriesModel, isFirstRender) {\n    var clipPath = new graphic.Sector({\n      shape: {\n        cx: cx,\n        cy: cy,\n        r0: 0,\n        r: r,\n        startAngle: startAngle,\n        endAngle: startAngle,\n        clockwise: clockwise\n      }\n    });\n    var initOrUpdate = isFirstRender ? graphic.initProps : graphic.updateProps;\n    initOrUpdate(clipPath, {\n      shape: {\n        endAngle: startAngle + (clockwise ? 1 : -1) * Math.PI * 2\n      }\n    }, seriesModel, cb);\n    return clipPath;\n  },\n\n  /**\n   * @implement\n   */\n  containPoint: function (point, seriesModel) {\n    var data = seriesModel.getData();\n    var itemLayout = data.getItemLayout(0);\n\n    if (itemLayout) {\n      var dx = point[0] - itemLayout.cx;\n      var dy = point[1] - itemLayout.cy;\n      var radius = Math.sqrt(dx * dx + dy * dy);\n      return radius <= itemLayout.r && radius >= itemLayout.r0;\n    }\n  }\n});\nvar _default = PieView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1066 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\nvar linearMap = _number.linearMap;\n\nvar layout = __webpack_require__(49);\n\nvar labelLayout = __webpack_require__(1067);\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nfunction _default(seriesType, ecModel, api, payload) {\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    var viewRect = getViewRect(seriesModel, api);\n    var center = seriesModel.get('center');\n    var radius = seriesModel.get('radius');\n\n    if (!zrUtil.isArray(radius)) {\n      radius = [0, radius];\n    }\n\n    if (!zrUtil.isArray(center)) {\n      center = [center, center];\n    }\n\n    var width = parsePercent(viewRect.width, api.getWidth());\n    var height = parsePercent(viewRect.height, api.getHeight());\n    var size = Math.min(width, height);\n    var cx = parsePercent(center[0], width) + viewRect.x;\n    var cy = parsePercent(center[1], height) + viewRect.y;\n    var r0 = parsePercent(radius[0], size / 2);\n    var r = parsePercent(radius[1], size / 2);\n    var startAngle = -seriesModel.get('startAngle') * RADIAN;\n    var minAngle = seriesModel.get('minAngle') * RADIAN;\n    var validDataCount = 0;\n    data.each(valueDim, function (value) {\n      !isNaN(value) && validDataCount++;\n    });\n    var sum = data.getSum(valueDim); // Sum may be 0\n\n    var unitRadian = Math.PI / (sum || validDataCount) * 2;\n    var clockwise = seriesModel.get('clockwise');\n    var roseType = seriesModel.get('roseType');\n    var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // [0...max]\n\n    var extent = data.getDataExtent(valueDim);\n    extent[0] = 0; // In the case some sector angle is smaller than minAngle\n\n    var restAngle = PI2;\n    var valueSumLargerThanMinAngle = 0;\n    var currentAngle = startAngle;\n    var dir = clockwise ? 1 : -1;\n    data.each(valueDim, function (value, idx) {\n      var angle;\n\n      if (isNaN(value)) {\n        data.setItemLayout(idx, {\n          angle: NaN,\n          startAngle: NaN,\n          endAngle: NaN,\n          clockwise: clockwise,\n          cx: cx,\n          cy: cy,\n          r0: r0,\n          r: roseType ? NaN : r,\n          viewRect: viewRect\n        });\n        return;\n      } // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样？\n\n\n      if (roseType !== 'area') {\n        angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n      } else {\n        angle = PI2 / validDataCount;\n      }\n\n      if (angle < minAngle) {\n        angle = minAngle;\n        restAngle -= minAngle;\n      } else {\n        valueSumLargerThanMinAngle += value;\n      }\n\n      var endAngle = currentAngle + dir * angle;\n      data.setItemLayout(idx, {\n        angle: angle,\n        startAngle: currentAngle,\n        endAngle: endAngle,\n        clockwise: clockwise,\n        cx: cx,\n        cy: cy,\n        r0: r0,\n        r: roseType ? linearMap(value, extent, [r0, r]) : r,\n        viewRect: viewRect\n      });\n      currentAngle = endAngle;\n    }); // Some sector is constrained by minAngle\n    // Rest sectors needs recalculate angle\n\n    if (restAngle < PI2 && validDataCount) {\n      // Average the angle if rest angle is not enough after all angles is\n      // Constrained by minAngle\n      if (restAngle <= 1e-3) {\n        var angle = PI2 / validDataCount;\n        data.each(valueDim, function (value, idx) {\n          if (!isNaN(value)) {\n            var layout = data.getItemLayout(idx);\n            layout.angle = angle;\n            layout.startAngle = startAngle + dir * idx * angle;\n            layout.endAngle = startAngle + dir * (idx + 1) * angle;\n          }\n        });\n      } else {\n        unitRadian = restAngle / valueSumLargerThanMinAngle;\n        currentAngle = startAngle;\n        data.each(valueDim, function (value, idx) {\n          if (!isNaN(value)) {\n            var layout = data.getItemLayout(idx);\n            var angle = layout.angle === minAngle ? minAngle : value * unitRadian;\n            layout.startAngle = currentAngle;\n            layout.endAngle = currentAngle + dir * angle;\n            currentAngle += dir * angle;\n          }\n        });\n      }\n    }\n\n    labelLayout(seriesModel, r, viewRect.width, viewRect.height, viewRect.x, viewRect.y);\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1067 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar textContain = __webpack_require__(108);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME emphasis label position is not same with normal label position\nvar RADIAN = Math.PI / 180;\n\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\n  list.sort(function (a, b) {\n    return a.y - b.y;\n  });\n\n  function shiftDown(start, end, delta, dir) {\n    for (var j = start; j < end; j++) {\n      if (list[j].y + delta > viewTop + viewHeight) {\n        break;\n      }\n\n      list[j].y += delta;\n\n      if (j > start && j + 1 < end && list[j + 1].y > list[j].y + list[j].height) {\n        shiftUp(j, delta / 2);\n        return;\n      }\n    }\n\n    shiftUp(end - 1, delta / 2);\n  }\n\n  function shiftUp(end, delta) {\n    for (var j = end; j >= 0; j--) {\n      if (list[j].y - delta < viewTop) {\n        break;\n      }\n\n      list[j].y -= delta;\n\n      if (j > 0 && list[j].y > list[j - 1].y + list[j - 1].height) {\n        break;\n      }\n    }\n  }\n\n  function changeX(list, isDownList, cx, cy, r, dir) {\n    var lastDeltaX = dir > 0 ? isDownList // right-side\n    ? Number.MAX_VALUE // down\n    : 0 // up\n    : isDownList // left-side\n    ? Number.MAX_VALUE // down\n    : 0; // up\n\n    for (var i = 0, l = list.length; i < l; i++) {\n      if (list[i].labelAlignTo !== 'none') {\n        continue;\n      }\n\n      var deltaY = Math.abs(list[i].y - cy);\n      var length = list[i].len;\n      var length2 = list[i].len2;\n      var deltaX = deltaY < r + length ? Math.sqrt((r + length + length2) * (r + length + length2) - deltaY * deltaY) : Math.abs(list[i].x - cx);\n\n      if (isDownList && deltaX >= lastDeltaX) {\n        // right-down, left-down\n        deltaX = lastDeltaX - 10;\n      }\n\n      if (!isDownList && deltaX <= lastDeltaX) {\n        // right-up, left-up\n        deltaX = lastDeltaX + 10;\n      }\n\n      list[i].x = cx + deltaX * dir;\n      lastDeltaX = deltaX;\n    }\n  }\n\n  var lastY = 0;\n  var delta;\n  var len = list.length;\n  var upList = [];\n  var downList = [];\n\n  for (var i = 0; i < len; i++) {\n    if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\n      var dx = list[i].x - farthestX;\n      list[i].linePoints[1][0] += dx;\n      list[i].x = farthestX;\n    }\n\n    delta = list[i].y - lastY;\n\n    if (delta < 0) {\n      shiftDown(i, len, -delta, dir);\n    }\n\n    lastY = list[i].y + list[i].height;\n  }\n\n  if (viewHeight - lastY < 0) {\n    shiftUp(len - 1, lastY - viewHeight);\n  }\n\n  for (var i = 0; i < len; i++) {\n    if (list[i].y >= cy) {\n      downList.push(list[i]);\n    } else {\n      upList.push(list[i]);\n    }\n  }\n\n  changeX(upList, false, cx, cy, r, dir);\n  changeX(downList, true, cx, cy, r, dir);\n}\n\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\n  var leftList = [];\n  var rightList = [];\n  var leftmostX = Number.MAX_VALUE;\n  var rightmostX = -Number.MAX_VALUE;\n\n  for (var i = 0; i < labelLayoutList.length; i++) {\n    if (isPositionCenter(labelLayoutList[i])) {\n      continue;\n    }\n\n    if (labelLayoutList[i].x < cx) {\n      leftmostX = Math.min(leftmostX, labelLayoutList[i].x);\n      leftList.push(labelLayoutList[i]);\n    } else {\n      rightmostX = Math.max(rightmostX, labelLayoutList[i].x);\n      rightList.push(labelLayoutList[i]);\n    }\n  }\n\n  adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\n  adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\n\n  for (var i = 0; i < labelLayoutList.length; i++) {\n    var layout = labelLayoutList[i];\n\n    if (isPositionCenter(layout)) {\n      continue;\n    }\n\n    var linePoints = layout.linePoints;\n\n    if (linePoints) {\n      var isAlignToEdge = layout.labelAlignTo === 'edge';\n      var realTextWidth = layout.textRect.width;\n      var targetTextWidth;\n\n      if (isAlignToEdge) {\n        if (layout.x < cx) {\n          targetTextWidth = linePoints[2][0] - layout.labelDistance - viewLeft - layout.labelMargin;\n        } else {\n          targetTextWidth = viewLeft + viewWidth - layout.labelMargin - linePoints[2][0] - layout.labelDistance;\n        }\n      } else {\n        if (layout.x < cx) {\n          targetTextWidth = layout.x - viewLeft - layout.bleedMargin;\n        } else {\n          targetTextWidth = viewLeft + viewWidth - layout.x - layout.bleedMargin;\n        }\n      }\n\n      if (targetTextWidth < layout.textRect.width) {\n        layout.text = textContain.truncateText(layout.text, targetTextWidth, layout.font);\n\n        if (layout.labelAlignTo === 'edge') {\n          realTextWidth = textContain.getWidth(layout.text, layout.font);\n        }\n      }\n\n      var dist = linePoints[1][0] - linePoints[2][0];\n\n      if (isAlignToEdge) {\n        if (layout.x < cx) {\n          linePoints[2][0] = viewLeft + layout.labelMargin + realTextWidth + layout.labelDistance;\n        } else {\n          linePoints[2][0] = viewLeft + viewWidth - layout.labelMargin - realTextWidth - layout.labelDistance;\n        }\n      } else {\n        if (layout.x < cx) {\n          linePoints[2][0] = layout.x + layout.labelDistance;\n        } else {\n          linePoints[2][0] = layout.x - layout.labelDistance;\n        }\n\n        linePoints[1][0] = linePoints[2][0] + dist;\n      }\n\n      linePoints[1][1] = linePoints[2][1] = layout.y;\n    }\n  }\n}\n\nfunction isPositionCenter(layout) {\n  // Not change x for center label\n  return layout.position === 'center';\n}\n\nfunction _default(seriesModel, r, viewWidth, viewHeight, viewLeft, viewTop) {\n  var data = seriesModel.getData();\n  var labelLayoutList = [];\n  var cx;\n  var cy;\n  var hasLabelRotate = false;\n  var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\n  data.each(function (idx) {\n    var layout = data.getItemLayout(idx);\n    var itemModel = data.getItemModel(idx);\n    var labelModel = itemModel.getModel('label'); // Use position in normal or emphasis\n\n    var labelPosition = labelModel.get('position') || itemModel.get('emphasis.label.position');\n    var labelDistance = labelModel.get('distanceToLabelLine');\n    var labelAlignTo = labelModel.get('alignTo');\n    var labelMargin = parsePercent(labelModel.get('margin'), viewWidth);\n    var bleedMargin = labelModel.get('bleedMargin');\n    var font = labelModel.getFont();\n    var labelLineModel = itemModel.getModel('labelLine');\n    var labelLineLen = labelLineModel.get('length');\n    labelLineLen = parsePercent(labelLineLen, viewWidth);\n    var labelLineLen2 = labelLineModel.get('length2');\n    labelLineLen2 = parsePercent(labelLineLen2, viewWidth);\n\n    if (layout.angle < minShowLabelRadian) {\n      return;\n    }\n\n    var midAngle = (layout.startAngle + layout.endAngle) / 2;\n    var dx = Math.cos(midAngle);\n    var dy = Math.sin(midAngle);\n    var textX;\n    var textY;\n    var linePoints;\n    var textAlign;\n    cx = layout.cx;\n    cy = layout.cy;\n    var text = seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx);\n    var textRect = textContain.getBoundingRect(text, font, textAlign, 'top');\n    var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\n\n    if (labelPosition === 'center') {\n      textX = layout.cx;\n      textY = layout.cy;\n      textAlign = 'center';\n    } else {\n      var x1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dx : layout.r * dx) + cx;\n      var y1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dy : layout.r * dy) + cy;\n      textX = x1 + dx * 3;\n      textY = y1 + dy * 3;\n\n      if (!isLabelInside) {\n        // For roseType\n        var x2 = x1 + dx * (labelLineLen + r - layout.r);\n        var y2 = y1 + dy * (labelLineLen + r - layout.r);\n        var x3 = x2 + (dx < 0 ? -1 : 1) * labelLineLen2;\n        var y3 = y2;\n\n        if (labelAlignTo === 'edge') {\n          // Adjust textX because text align of edge is opposite\n          textX = dx < 0 ? viewLeft + labelMargin : viewLeft + viewWidth - labelMargin;\n        } else {\n          textX = x3 + (dx < 0 ? -labelDistance : labelDistance);\n        }\n\n        textY = y3;\n        linePoints = [[x1, y1], [x2, y2], [x3, y3]];\n      }\n\n      textAlign = isLabelInside ? 'center' : labelAlignTo === 'edge' ? dx > 0 ? 'right' : 'left' : dx > 0 ? 'left' : 'right';\n    }\n\n    var labelRotate;\n    var rotate = labelModel.get('rotate');\n\n    if (typeof rotate === 'number') {\n      labelRotate = rotate * (Math.PI / 180);\n    } else {\n      labelRotate = rotate ? dx < 0 ? -midAngle + Math.PI : -midAngle : 0;\n    }\n\n    hasLabelRotate = !!labelRotate;\n    layout.label = {\n      x: textX,\n      y: textY,\n      position: labelPosition,\n      height: textRect.height,\n      len: labelLineLen,\n      len2: labelLineLen2,\n      linePoints: linePoints,\n      textAlign: textAlign,\n      verticalAlign: 'middle',\n      rotation: labelRotate,\n      inside: isLabelInside,\n      labelDistance: labelDistance,\n      labelAlignTo: labelAlignTo,\n      labelMargin: labelMargin,\n      bleedMargin: bleedMargin,\n      textRect: textRect,\n      text: text,\n      font: font\n    }; // Not layout the inside label\n\n    if (!isLabelInside) {\n      labelLayoutList.push(layout.label);\n    }\n  });\n\n  if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\n    avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1068 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1069);\n\n__webpack_require__(1070);\n\nvar visualSymbol = __webpack_require__(181);\n\nvar layoutPoints = __webpack_require__(262);\n\n__webpack_require__(263);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import * as zrUtil from 'zrender/src/core/util';\n// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('scatter', 'circle'));\necharts.registerLayout(layoutPoints('scatter')); // echarts.registerProcessor(function (ecModel, api) {\n//     ecModel.eachSeriesByType('scatter', function (seriesModel) {\n//         var data = seriesModel.getData();\n//         var coordSys = seriesModel.coordinateSystem;\n//         if (coordSys.type !== 'geo') {\n//             return;\n//         }\n//         var startPt = coordSys.pointToData([0, 0]);\n//         var endPt = coordSys.pointToData([api.getWidth(), api.getHeight()]);\n//         var dims = zrUtil.map(coordSys.dimensions, function (dim) {\n//             return data.mapDimension(dim);\n//         });\n//         var range = {};\n//         range[dims[0]] = [Math.min(startPt[0], endPt[0]), Math.max(startPt[0], endPt[0])];\n//         range[dims[1]] = [Math.min(startPt[1], endPt[1]), Math.max(startPt[1], endPt[1])];\n//         data.selectRange(range);\n//     });\n// });\n\n/***/ }),\n/* 1069 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListFromArray = __webpack_require__(145);\n\nvar SeriesModel = __webpack_require__(75);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n  type: 'series.scatter',\n  dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this, {\n      useEncodeDefaulter: true\n    });\n  },\n  brushSelector: 'point',\n  getProgressive: function () {\n    var progressive = this.option.progressive;\n\n    if (progressive == null) {\n      // PENDING\n      return this.option.large ? 5e3 : this.get('progressive');\n    }\n\n    return progressive;\n  },\n  getProgressiveThreshold: function () {\n    var progressiveThreshold = this.option.progressiveThreshold;\n\n    if (progressiveThreshold == null) {\n      // PENDING\n      return this.option.large ? 1e4 : this.get('progressiveThreshold');\n    }\n\n    return progressiveThreshold;\n  },\n  defaultOption: {\n    coordinateSystem: 'cartesian2d',\n    zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Polar coordinate system\n    // polarIndex: 0,\n    // Geo coordinate system\n    // geoIndex: 0,\n    // symbol: null,        // 图形类型\n    symbolSize: 10,\n    // 图形大小，半宽（半径）参数，当图形为方向或菱形则总宽度为symbolSize * 2\n    // symbolRotate: null,  // 图形旋转控制\n    large: false,\n    // Available when large is true\n    largeThreshold: 2000,\n    // cursor: null,\n    // label: {\n    // show: false\n    // distance: 5,\n    // formatter: 标签文本格式器，同Tooltip.formatter，不支持异步回调\n    // position: 默认自适应，水平布局为'top'，垂直布局为'right'，可选为\n    //           'inside'|'left'|'right'|'top'|'bottom'\n    // 默认使用全局文本样式，详见TEXTSTYLE\n    // },\n    itemStyle: {\n      opacity: 0.8 // color: 各异\n\n    },\n    // If clip the overflow graphics\n    // Works on cartesian / polar series\n    clip: true // progressive: null\n\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1070 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar SymbolDraw = __webpack_require__(260);\n\nvar LargeSymbolDraw = __webpack_require__(1071);\n\nvar pointsLayout = __webpack_require__(262);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.extendChartView({\n  type: 'scatter',\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n    symbolDraw.updateData(data, {\n      // TODO\n      // If this parameter should be a shape or a bounding volume\n      // shape will be more general.\n      // But bounding volume like bounding rect will be much faster in the contain calculation\n      clipShape: this._getClipShape(seriesModel)\n    });\n    this._finished = true;\n  },\n  incrementalPrepareRender: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n    symbolDraw.incrementalPrepareUpdate(data);\n    this._finished = false;\n  },\n  incrementalRender: function (taskParams, seriesModel, ecModel) {\n    this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {\n      clipShape: this._getClipShape(seriesModel)\n    });\n\n    this._finished = taskParams.end === seriesModel.getData().count();\n  },\n  updateTransform: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData(); // Must mark group dirty and make sure the incremental layer will be cleared\n    // PENDING\n\n    this.group.dirty();\n\n    if (!this._finished || data.count() > 1e4 || !this._symbolDraw.isPersistent()) {\n      return {\n        update: true\n      };\n    } else {\n      var res = pointsLayout().reset(seriesModel);\n\n      if (res.progress) {\n        res.progress({\n          start: 0,\n          end: data.count()\n        }, data);\n      }\n\n      this._symbolDraw.updateLayout(data);\n    }\n  },\n  _getClipShape: function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var clipArea = coordSys && coordSys.getArea && coordSys.getArea();\n    return seriesModel.get('clip', true) ? clipArea : null;\n  },\n  _updateSymbolDraw: function (data, seriesModel) {\n    var symbolDraw = this._symbolDraw;\n    var pipelineContext = seriesModel.pipelineContext;\n    var isLargeDraw = pipelineContext.large;\n\n    if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {\n      symbolDraw && symbolDraw.remove();\n      symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw() : new SymbolDraw();\n      this._isLargeDraw = isLargeDraw;\n      this.group.removeAll();\n    }\n\n    this.group.add(symbolDraw.group);\n    return symbolDraw;\n  },\n  remove: function (ecModel, api) {\n    this._symbolDraw && this._symbolDraw.remove(true);\n    this._symbolDraw = null;\n  },\n  dispose: function () {}\n});\n\n/***/ }),\n/* 1071 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar _symbol = __webpack_require__(117);\n\nvar createSymbol = _symbol.createSymbol;\n\nvar IncrementalDisplayable = __webpack_require__(406);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\n// TODO Batch by color\nvar BOOST_SIZE_THRESHOLD = 4;\nvar LargeSymbolPath = graphic.extendShape({\n  shape: {\n    points: null\n  },\n  symbolProxy: null,\n  softClipShape: null,\n  buildPath: function (path, shape) {\n    var points = shape.points;\n    var size = shape.size;\n    var symbolProxy = this.symbolProxy;\n    var symbolProxyShape = symbolProxy.shape;\n    var ctx = path.getContext ? path.getContext() : path;\n    var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD; // Do draw in afterBrush.\n\n    if (canBoost) {\n      return;\n    }\n\n    for (var i = 0; i < points.length;) {\n      var x = points[i++];\n      var y = points[i++];\n\n      if (isNaN(x) || isNaN(y)) {\n        continue;\n      }\n\n      if (this.softClipShape && !this.softClipShape.contain(x, y)) {\n        continue;\n      }\n\n      symbolProxyShape.x = x - size[0] / 2;\n      symbolProxyShape.y = y - size[1] / 2;\n      symbolProxyShape.width = size[0];\n      symbolProxyShape.height = size[1];\n      symbolProxy.buildPath(path, symbolProxyShape, true);\n    }\n  },\n  afterBrush: function (ctx) {\n    var shape = this.shape;\n    var points = shape.points;\n    var size = shape.size;\n    var canBoost = size[0] < BOOST_SIZE_THRESHOLD;\n\n    if (!canBoost) {\n      return;\n    }\n\n    this.setTransform(ctx); // PENDING If style or other canvas status changed?\n\n    for (var i = 0; i < points.length;) {\n      var x = points[i++];\n      var y = points[i++];\n\n      if (isNaN(x) || isNaN(y)) {\n        continue;\n      }\n\n      if (this.softClipShape && !this.softClipShape.contain(x, y)) {\n        continue;\n      } // fillRect is faster than building a rect path and draw.\n      // And it support light globalCompositeOperation.\n\n\n      ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\n    }\n\n    this.restoreTransform(ctx);\n  },\n  findDataIndex: function (x, y) {\n    // TODO ???\n    // Consider transform\n    var shape = this.shape;\n    var points = shape.points;\n    var size = shape.size;\n    var w = Math.max(size[0], 4);\n    var h = Math.max(size[1], 4); // Not consider transform\n    // Treat each element as a rect\n    // top down traverse\n\n    for (var idx = points.length / 2 - 1; idx >= 0; idx--) {\n      var i = idx * 2;\n      var x0 = points[i] - w / 2;\n      var y0 = points[i + 1] - h / 2;\n\n      if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {\n        return idx;\n      }\n    }\n\n    return -1;\n  }\n});\n\nfunction LargeSymbolDraw() {\n  this.group = new graphic.Group();\n}\n\nvar largeSymbolProto = LargeSymbolDraw.prototype;\n\nlargeSymbolProto.isPersistent = function () {\n  return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} opt\n * @param {Object} [opt.clipShape]\n */\n\n\nlargeSymbolProto.updateData = function (data, opt) {\n  this.group.removeAll();\n  var symbolEl = new LargeSymbolPath({\n    rectHover: true,\n    cursor: 'default'\n  });\n  symbolEl.setShape({\n    points: data.getLayout('symbolPoints')\n  });\n\n  this._setCommon(symbolEl, data, false, opt);\n\n  this.group.add(symbolEl);\n  this._incremental = null;\n};\n\nlargeSymbolProto.updateLayout = function (data) {\n  if (this._incremental) {\n    return;\n  }\n\n  var points = data.getLayout('symbolPoints');\n  this.group.eachChild(function (child) {\n    if (child.startIndex != null) {\n      var len = (child.endIndex - child.startIndex) * 2;\n      var byteOffset = child.startIndex * 4 * 2;\n      points = new Float32Array(points.buffer, byteOffset, len);\n    }\n\n    child.setShape('points', points);\n  });\n};\n\nlargeSymbolProto.incrementalPrepareUpdate = function (data) {\n  this.group.removeAll();\n\n  this._clearIncremental(); // Only use incremental displayables when data amount is larger than 2 million.\n  // PENDING Incremental data?\n\n\n  if (data.count() > 2e6) {\n    if (!this._incremental) {\n      this._incremental = new IncrementalDisplayable({\n        silent: true\n      });\n    }\n\n    this.group.add(this._incremental);\n  } else {\n    this._incremental = null;\n  }\n};\n\nlargeSymbolProto.incrementalUpdate = function (taskParams, data, opt) {\n  var symbolEl;\n\n  if (this._incremental) {\n    symbolEl = new LargeSymbolPath();\n\n    this._incremental.addDisplayable(symbolEl, true);\n  } else {\n    symbolEl = new LargeSymbolPath({\n      rectHover: true,\n      cursor: 'default',\n      startIndex: taskParams.start,\n      endIndex: taskParams.end\n    });\n    symbolEl.incremental = true;\n    this.group.add(symbolEl);\n  }\n\n  symbolEl.setShape({\n    points: data.getLayout('symbolPoints')\n  });\n\n  this._setCommon(symbolEl, data, !!this._incremental, opt);\n};\n\nlargeSymbolProto._setCommon = function (symbolEl, data, isIncremental, opt) {\n  var hostModel = data.hostModel;\n  opt = opt || {}; // TODO\n  // if (data.hasItemVisual.symbolSize) {\n  //     // TODO typed array?\n  //     symbolEl.setShape('sizes', data.mapArray(\n  //         function (idx) {\n  //             var size = data.getItemVisual(idx, 'symbolSize');\n  //             return (size instanceof Array) ? size : [size, size];\n  //         }\n  //     ));\n  // }\n  // else {\n\n  var size = data.getVisual('symbolSize');\n  symbolEl.setShape('size', size instanceof Array ? size : [size, size]); // }\n\n  symbolEl.softClipShape = opt.clipShape || null; // Create symbolProxy to build path for each data\n\n  symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0); // Use symbolProxy setColor method\n\n  symbolEl.setColor = symbolEl.symbolProxy.setColor;\n  var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;\n  symbolEl.useStyle( // Draw shadow when doing fillRect is extremely slow.\n  hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']));\n  var visualColor = data.getVisual('color');\n\n  if (visualColor) {\n    symbolEl.setColor(visualColor);\n  }\n\n  if (!isIncremental) {\n    // Enable tooltip\n    // PENDING May have performance issue when path is extremely large\n    symbolEl.seriesIndex = hostModel.seriesIndex;\n    symbolEl.on('mousemove', function (e) {\n      symbolEl.dataIndex = null;\n      var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY);\n\n      if (dataIndex >= 0) {\n        // Provide dataIndex for tooltip\n        symbolEl.dataIndex = dataIndex + (symbolEl.startIndex || 0);\n      }\n    });\n  }\n};\n\nlargeSymbolProto.remove = function () {\n  this._clearIncremental();\n\n  this._incremental = null;\n  this.group.removeAll();\n};\n\nlargeSymbolProto._clearIncremental = function () {\n  var incremental = this._incremental;\n\n  if (incremental) {\n    incremental.clearDisplaybles();\n  }\n};\n\nvar _default = LargeSymbolDraw;\nmodule.exports = _default;\n\n/***/ }),\n/* 1072 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1073);\n\n__webpack_require__(1078);\n\n__webpack_require__(1079);\n\nvar dataColor = __webpack_require__(335);\n\nvar visualSymbol = __webpack_require__(181);\n\nvar radarLayout = __webpack_require__(1080);\n\nvar dataFilter = __webpack_require__(265);\n\nvar backwardCompat = __webpack_require__(1081);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Must use radar component\necharts.registerVisual(dataColor('radar'));\necharts.registerVisual(visualSymbol('radar', 'circle'));\necharts.registerLayout(radarLayout);\necharts.registerProcessor(dataFilter('radar'));\necharts.registerPreprocessor(backwardCompat);\n\n/***/ }),\n/* 1073 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(1074);\n\n__webpack_require__(1076);\n\n__webpack_require__(1077);\n\n/***/ }),\n/* 1074 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar IndicatorAxis = __webpack_require__(1075);\n\nvar IntervalScale = __webpack_require__(330);\n\nvar numberUtil = __webpack_require__(26);\n\nvar _axisHelper = __webpack_require__(122);\n\nvar getScaleExtent = _axisHelper.getScaleExtent;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = __webpack_require__(121);\n\nvar LogScale = __webpack_require__(577);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO clockwise\nfunction Radar(radarModel, ecModel, api) {\n  this._model = radarModel;\n  /**\n   * Radar dimensions\n   * @type {Array.<string>}\n   */\n\n  this.dimensions = [];\n  this._indicatorAxes = zrUtil.map(radarModel.getIndicatorModels(), function (indicatorModel, idx) {\n    var dim = 'indicator_' + idx;\n    var indicatorAxis = new IndicatorAxis(dim, indicatorModel.get('axisType') === 'log' ? new LogScale() : new IntervalScale());\n    indicatorAxis.name = indicatorModel.get('name'); // Inject model and axis\n\n    indicatorAxis.model = indicatorModel;\n    indicatorModel.axis = indicatorAxis;\n    this.dimensions.push(dim);\n    return indicatorAxis;\n  }, this);\n  this.resize(radarModel, api);\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.cx;\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.cy;\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.r;\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.r0;\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.startAngle;\n}\n\nRadar.prototype.getIndicatorAxes = function () {\n  return this._indicatorAxes;\n};\n\nRadar.prototype.dataToPoint = function (value, indicatorIndex) {\n  var indicatorAxis = this._indicatorAxes[indicatorIndex];\n  return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex);\n};\n\nRadar.prototype.coordToPoint = function (coord, indicatorIndex) {\n  var indicatorAxis = this._indicatorAxes[indicatorIndex];\n  var angle = indicatorAxis.angle;\n  var x = this.cx + coord * Math.cos(angle);\n  var y = this.cy - coord * Math.sin(angle);\n  return [x, y];\n};\n\nRadar.prototype.pointToData = function (pt) {\n  var dx = pt[0] - this.cx;\n  var dy = pt[1] - this.cy;\n  var radius = Math.sqrt(dx * dx + dy * dy);\n  dx /= radius;\n  dy /= radius;\n  var radian = Math.atan2(-dy, dx); // Find the closest angle\n  // FIXME index can calculated directly\n\n  var minRadianDiff = Infinity;\n  var closestAxis;\n  var closestAxisIdx = -1;\n\n  for (var i = 0; i < this._indicatorAxes.length; i++) {\n    var indicatorAxis = this._indicatorAxes[i];\n    var diff = Math.abs(radian - indicatorAxis.angle);\n\n    if (diff < minRadianDiff) {\n      closestAxis = indicatorAxis;\n      closestAxisIdx = i;\n      minRadianDiff = diff;\n    }\n  }\n\n  return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))];\n};\n\nRadar.prototype.resize = function (radarModel, api) {\n  var center = radarModel.get('center');\n  var viewWidth = api.getWidth();\n  var viewHeight = api.getHeight();\n  var viewSize = Math.min(viewWidth, viewHeight) / 2;\n  this.cx = numberUtil.parsePercent(center[0], viewWidth);\n  this.cy = numberUtil.parsePercent(center[1], viewHeight);\n  this.startAngle = radarModel.get('startAngle') * Math.PI / 180; // radius may be single value like `20`, `'80%'`, or array like `[10, '80%']`\n\n  var radius = radarModel.get('radius');\n\n  if (typeof radius === 'string' || typeof radius === 'number') {\n    radius = [0, radius];\n  }\n\n  this.r0 = numberUtil.parsePercent(radius[0], viewSize);\n  this.r = numberUtil.parsePercent(radius[1], viewSize);\n  zrUtil.each(this._indicatorAxes, function (indicatorAxis, idx) {\n    indicatorAxis.setExtent(this.r0, this.r);\n    var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length; // Normalize to [-PI, PI]\n\n    angle = Math.atan2(Math.sin(angle), Math.cos(angle));\n    indicatorAxis.angle = angle;\n  }, this);\n};\n\nRadar.prototype.update = function (ecModel, api) {\n  var indicatorAxes = this._indicatorAxes;\n  var radarModel = this._model;\n  zrUtil.each(indicatorAxes, function (indicatorAxis) {\n    indicatorAxis.scale.setExtent(Infinity, -Infinity);\n  });\n  ecModel.eachSeriesByType('radar', function (radarSeries, idx) {\n    if (radarSeries.get('coordinateSystem') !== 'radar' || ecModel.getComponent('radar', radarSeries.get('radarIndex')) !== radarModel) {\n      return;\n    }\n\n    var data = radarSeries.getData();\n    zrUtil.each(indicatorAxes, function (indicatorAxis) {\n      indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim));\n    });\n  }, this);\n  var splitNumber = radarModel.get('splitNumber');\n\n  function increaseInterval(interval) {\n    var exp10 = Math.pow(10, Math.floor(Math.log(interval) / Math.LN10)); // Increase interval\n\n    var f = interval / exp10;\n\n    if (f === 2) {\n      f = 5;\n    } else {\n      // f is 2 or 5\n      f *= 2;\n    }\n\n    return f * exp10;\n  } // Force all the axis fixing the maxSplitNumber.\n\n\n  zrUtil.each(indicatorAxes, function (indicatorAxis, idx) {\n    var rawExtent = getScaleExtent(indicatorAxis.scale, indicatorAxis.model).extent;\n    niceScaleExtent(indicatorAxis.scale, indicatorAxis.model);\n    var axisModel = indicatorAxis.model;\n    var scale = indicatorAxis.scale;\n    var fixedMin = axisModel.getMin();\n    var fixedMax = axisModel.getMax();\n    var interval = scale.getInterval();\n\n    if (fixedMin != null && fixedMax != null) {\n      // User set min, max, divide to get new interval\n      scale.setExtent(+fixedMin, +fixedMax);\n      scale.setInterval((fixedMax - fixedMin) / splitNumber);\n    } else if (fixedMin != null) {\n      var max; // User set min, expand extent on the other side\n\n      do {\n        max = fixedMin + interval * splitNumber;\n        scale.setExtent(+fixedMin, max); // Interval must been set after extent\n        // FIXME\n\n        scale.setInterval(interval);\n        interval = increaseInterval(interval);\n      } while (max < rawExtent[1] && isFinite(max) && isFinite(rawExtent[1]));\n    } else if (fixedMax != null) {\n      var min; // User set min, expand extent on the other side\n\n      do {\n        min = fixedMax - interval * splitNumber;\n        scale.setExtent(min, +fixedMax);\n        scale.setInterval(interval);\n        interval = increaseInterval(interval);\n      } while (min > rawExtent[0] && isFinite(min) && isFinite(rawExtent[0]));\n    } else {\n      var nicedSplitNumber = scale.getTicks().length - 1;\n\n      if (nicedSplitNumber > splitNumber) {\n        interval = increaseInterval(interval);\n      } // TODO\n\n\n      var max = Math.ceil(rawExtent[1] / interval) * interval;\n      var min = numberUtil.round(max - interval * splitNumber);\n      scale.setExtent(min, max);\n      scale.setInterval(interval);\n    }\n  });\n};\n/**\n * Radar dimensions is based on the data\n * @type {Array}\n */\n\n\nRadar.dimensions = [];\n\nRadar.create = function (ecModel, api) {\n  var radarList = [];\n  ecModel.eachComponent('radar', function (radarModel) {\n    var radar = new Radar(radarModel, ecModel, api);\n    radarList.push(radar);\n    radarModel.coordinateSystem = radar;\n  });\n  ecModel.eachSeriesByType('radar', function (radarSeries) {\n    if (radarSeries.get('coordinateSystem') === 'radar') {\n      // Inject coordinate system\n      radarSeries.coordinateSystem = radarList[radarSeries.get('radarIndex') || 0];\n    }\n  });\n  return radarList;\n};\n\nCoordinateSystem.register('radar', Radar);\nvar _default = Radar;\nmodule.exports = _default;\n\n/***/ }),\n/* 1075 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Axis = __webpack_require__(155);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction IndicatorAxis(dim, scale, radiusExtent) {\n  Axis.call(this, dim, scale, radiusExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = 'value';\n  this.angle = 0;\n  /**\n   * Indicator name\n   * @type {string}\n   */\n\n  this.name = '';\n  /**\n   * @type {module:echarts/model/Model}\n   */\n\n  this.model;\n}\n\nzrUtil.inherits(IndicatorAxis, Axis);\nvar _default = IndicatorAxis;\nmodule.exports = _default;\n\n/***/ }),\n/* 1076 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar axisDefault = __webpack_require__(584);\n\nvar Model = __webpack_require__(67);\n\nvar axisModelCommonMixin = __webpack_require__(216);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar valueAxisDefault = axisDefault.valueAxis;\n\nfunction defaultsShow(opt, show) {\n  return zrUtil.defaults({\n    show: show\n  }, opt);\n}\n\nvar RadarModel = echarts.extendComponentModel({\n  type: 'radar',\n  optionUpdated: function () {\n    var boundaryGap = this.get('boundaryGap');\n    var splitNumber = this.get('splitNumber');\n    var scale = this.get('scale');\n    var axisLine = this.get('axisLine');\n    var axisTick = this.get('axisTick');\n    var axisType = this.get('axisType');\n    var axisLabel = this.get('axisLabel');\n    var nameTextStyle = this.get('name');\n    var showName = this.get('name.show');\n    var nameFormatter = this.get('name.formatter');\n    var nameGap = this.get('nameGap');\n    var triggerEvent = this.get('triggerEvent');\n    var indicatorModels = zrUtil.map(this.get('indicator') || [], function (indicatorOpt) {\n      // PENDING\n      if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) {\n        indicatorOpt.min = 0;\n      } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) {\n        indicatorOpt.max = 0;\n      }\n\n      var iNameTextStyle = nameTextStyle;\n\n      if (indicatorOpt.color != null) {\n        iNameTextStyle = zrUtil.defaults({\n          color: indicatorOpt.color\n        }, nameTextStyle);\n      } // Use same configuration\n\n\n      indicatorOpt = zrUtil.merge(zrUtil.clone(indicatorOpt), {\n        boundaryGap: boundaryGap,\n        splitNumber: splitNumber,\n        scale: scale,\n        axisLine: axisLine,\n        axisTick: axisTick,\n        axisType: axisType,\n        axisLabel: axisLabel,\n        // Compatible with 2 and use text\n        name: indicatorOpt.text,\n        nameLocation: 'end',\n        nameGap: nameGap,\n        // min: 0,\n        nameTextStyle: iNameTextStyle,\n        triggerEvent: triggerEvent\n      }, false);\n\n      if (!showName) {\n        indicatorOpt.name = '';\n      }\n\n      if (typeof nameFormatter === 'string') {\n        var indName = indicatorOpt.name;\n        indicatorOpt.name = nameFormatter.replace('{value}', indName != null ? indName : '');\n      } else if (typeof nameFormatter === 'function') {\n        indicatorOpt.name = nameFormatter(indicatorOpt.name, indicatorOpt);\n      }\n\n      var model = zrUtil.extend(new Model(indicatorOpt, null, this.ecModel), axisModelCommonMixin); // For triggerEvent.\n\n      model.mainType = 'radar';\n      model.componentIndex = this.componentIndex;\n      return model;\n    }, this);\n\n    this.getIndicatorModels = function () {\n      return indicatorModels;\n    };\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 0,\n    center: ['50%', '50%'],\n    radius: '75%',\n    startAngle: 90,\n    name: {\n      show: true // formatter: null\n      // textStyle: {}\n\n    },\n    boundaryGap: [0, 0],\n    splitNumber: 5,\n    nameGap: 15,\n    scale: false,\n    // Polygon or circle\n    shape: 'polygon',\n    axisLine: zrUtil.merge({\n      lineStyle: {\n        color: '#bbb'\n      }\n    }, valueAxisDefault.axisLine),\n    axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),\n    axisTick: defaultsShow(valueAxisDefault.axisTick, false),\n    axisType: 'interval',\n    splitLine: defaultsShow(valueAxisDefault.splitLine, true),\n    splitArea: defaultsShow(valueAxisDefault.splitArea, true),\n    // {text, min, max}\n    indicator: []\n  }\n});\nvar _default = RadarModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1077 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar AxisBuilder = __webpack_require__(156);\n\nvar graphic = __webpack_require__(23);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\n\nvar _default = echarts.extendComponentView({\n  type: 'radar',\n  render: function (radarModel, ecModel, api) {\n    var group = this.group;\n    group.removeAll();\n\n    this._buildAxes(radarModel);\n\n    this._buildSplitLineAndArea(radarModel);\n  },\n  _buildAxes: function (radarModel) {\n    var radar = radarModel.coordinateSystem;\n    var indicatorAxes = radar.getIndicatorAxes();\n    var axisBuilders = zrUtil.map(indicatorAxes, function (indicatorAxis) {\n      var axisBuilder = new AxisBuilder(indicatorAxis.model, {\n        position: [radar.cx, radar.cy],\n        rotation: indicatorAxis.angle,\n        labelDirection: -1,\n        tickDirection: -1,\n        nameDirection: 1\n      });\n      return axisBuilder;\n    });\n    zrUtil.each(axisBuilders, function (axisBuilder) {\n      zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n      this.group.add(axisBuilder.getGroup());\n    }, this);\n  },\n  _buildSplitLineAndArea: function (radarModel) {\n    var radar = radarModel.coordinateSystem;\n    var indicatorAxes = radar.getIndicatorAxes();\n\n    if (!indicatorAxes.length) {\n      return;\n    }\n\n    var shape = radarModel.get('shape');\n    var splitLineModel = radarModel.getModel('splitLine');\n    var splitAreaModel = radarModel.getModel('splitArea');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var areaStyleModel = splitAreaModel.getModel('areaStyle');\n    var showSplitLine = splitLineModel.get('show');\n    var showSplitArea = splitAreaModel.get('show');\n    var splitLineColors = lineStyleModel.get('color');\n    var splitAreaColors = areaStyleModel.get('color');\n    splitLineColors = zrUtil.isArray(splitLineColors) ? splitLineColors : [splitLineColors];\n    splitAreaColors = zrUtil.isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors];\n    var splitLines = [];\n    var splitAreas = [];\n\n    function getColorIndex(areaOrLine, areaOrLineColorList, idx) {\n      var colorIndex = idx % areaOrLineColorList.length;\n      areaOrLine[colorIndex] = areaOrLine[colorIndex] || [];\n      return colorIndex;\n    }\n\n    if (shape === 'circle') {\n      var ticksRadius = indicatorAxes[0].getTicksCoords();\n      var cx = radar.cx;\n      var cy = radar.cy;\n\n      for (var i = 0; i < ticksRadius.length; i++) {\n        if (showSplitLine) {\n          var colorIndex = getColorIndex(splitLines, splitLineColors, i);\n          splitLines[colorIndex].push(new graphic.Circle({\n            shape: {\n              cx: cx,\n              cy: cy,\n              r: ticksRadius[i].coord\n            }\n          }));\n        }\n\n        if (showSplitArea && i < ticksRadius.length - 1) {\n          var colorIndex = getColorIndex(splitAreas, splitAreaColors, i);\n          splitAreas[colorIndex].push(new graphic.Ring({\n            shape: {\n              cx: cx,\n              cy: cy,\n              r0: ticksRadius[i].coord,\n              r: ticksRadius[i + 1].coord\n            }\n          }));\n        }\n      }\n    } // Polyyon\n    else {\n        var realSplitNumber;\n        var axesTicksPoints = zrUtil.map(indicatorAxes, function (indicatorAxis, idx) {\n          var ticksCoords = indicatorAxis.getTicksCoords();\n          realSplitNumber = realSplitNumber == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber);\n          return zrUtil.map(ticksCoords, function (tickCoord) {\n            return radar.coordToPoint(tickCoord.coord, idx);\n          });\n        });\n        var prevPoints = [];\n\n        for (var i = 0; i <= realSplitNumber; i++) {\n          var points = [];\n\n          for (var j = 0; j < indicatorAxes.length; j++) {\n            points.push(axesTicksPoints[j][i]);\n          } // Close\n\n\n          if (points[0]) {\n            points.push(points[0].slice());\n          } else {}\n\n          if (showSplitLine) {\n            var colorIndex = getColorIndex(splitLines, splitLineColors, i);\n            splitLines[colorIndex].push(new graphic.Polyline({\n              shape: {\n                points: points\n              }\n            }));\n          }\n\n          if (showSplitArea && prevPoints) {\n            var colorIndex = getColorIndex(splitAreas, splitAreaColors, i - 1);\n            splitAreas[colorIndex].push(new graphic.Polygon({\n              shape: {\n                points: points.concat(prevPoints)\n              }\n            }));\n          }\n\n          prevPoints = points.slice().reverse();\n        }\n      }\n\n    var lineStyle = lineStyleModel.getLineStyle();\n    var areaStyle = areaStyleModel.getAreaStyle(); // Add splitArea before splitLine\n\n    zrUtil.each(splitAreas, function (splitAreas, idx) {\n      this.group.add(graphic.mergePath(splitAreas, {\n        style: zrUtil.defaults({\n          stroke: 'none',\n          fill: splitAreaColors[idx % splitAreaColors.length]\n        }, areaStyle),\n        silent: true\n      }));\n    }, this);\n    zrUtil.each(splitLines, function (splitLines, idx) {\n      this.group.add(graphic.mergePath(splitLines, {\n        style: zrUtil.defaults({\n          fill: 'none',\n          stroke: splitLineColors[idx % splitLineColors.length]\n        }, lineStyle),\n        silent: true\n      }));\n    }, this);\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1078 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(75);\n\nvar createListSimply = __webpack_require__(217);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _format = __webpack_require__(50);\n\nvar encodeHTML = _format.encodeHTML;\n\nvar LegendVisualProvider = __webpack_require__(264);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar RadarSeries = SeriesModel.extend({\n  type: 'series.radar',\n  dependencies: ['radar'],\n  // Overwrite\n  init: function (option) {\n    RadarSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n    this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n  },\n  getInitialData: function (option, ecModel) {\n    return createListSimply(this, {\n      generateCoord: 'indicator_',\n      generateCoordCount: Infinity\n    });\n  },\n  formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n    var data = this.getData();\n    var coordSys = this.coordinateSystem;\n    var indicatorAxes = coordSys.getIndicatorAxes();\n    var name = this.getData().getName(dataIndex);\n    var newLine = renderMode === 'html' ? '<br/>' : '\\n';\n    return encodeHTML(name === '' ? this.name : name) + newLine + zrUtil.map(indicatorAxes, function (axis, idx) {\n      var val = data.get(data.mapDimension(axis.dim), dataIndex);\n      return encodeHTML(axis.name + ' : ' + val);\n    }).join(newLine);\n  },\n\n  /**\n   * @implement\n   */\n  getTooltipPosition: function (dataIndex) {\n    if (dataIndex != null) {\n      var data = this.getData();\n      var coordSys = this.coordinateSystem;\n      var values = data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n        return data.mapDimension(dim);\n      }), dataIndex, true);\n\n      for (var i = 0, len = values.length; i < len; i++) {\n        if (!isNaN(values[i])) {\n          var indicatorAxes = coordSys.getIndicatorAxes();\n          return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);\n        }\n      }\n    }\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'radar',\n    legendHoverLink: true,\n    radarIndex: 0,\n    lineStyle: {\n      width: 2,\n      type: 'solid'\n    },\n    label: {\n      position: 'top'\n    },\n    // areaStyle: {\n    // },\n    // itemStyle: {}\n    symbol: 'emptyCircle',\n    symbolSize: 4 // symbolRotate: null\n\n  }\n});\nvar _default = RadarSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1079 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar graphic = __webpack_require__(23);\n\nvar zrUtil = __webpack_require__(2);\n\nvar symbolUtil = __webpack_require__(117);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction normalizeSymbolSize(symbolSize) {\n  if (!zrUtil.isArray(symbolSize)) {\n    symbolSize = [+symbolSize, +symbolSize];\n  }\n\n  return symbolSize;\n}\n\nvar _default = echarts.extendChartView({\n  type: 'radar',\n  render: function (seriesModel, ecModel, api) {\n    var polar = seriesModel.coordinateSystem;\n    var group = this.group;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n\n    function createSymbol(data, idx) {\n      var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n      var color = data.getItemVisual(idx, 'color');\n\n      if (symbolType === 'none') {\n        return;\n      }\n\n      var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n      var symbolPath = symbolUtil.createSymbol(symbolType, -1, -1, 2, 2, color);\n      var symbolRotate = data.getItemVisual(idx, 'symbolRotate') || 0;\n      symbolPath.attr({\n        style: {\n          strokeNoScale: true\n        },\n        z2: 100,\n        scale: [symbolSize[0] / 2, symbolSize[1] / 2],\n        rotation: symbolRotate * Math.PI / 180 || 0\n      });\n      return symbolPath;\n    }\n\n    function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) {\n      // Simply rerender all\n      symbolGroup.removeAll();\n\n      for (var i = 0; i < newPoints.length - 1; i++) {\n        var symbolPath = createSymbol(data, idx);\n\n        if (symbolPath) {\n          symbolPath.__dimIdx = i;\n\n          if (oldPoints[i]) {\n            symbolPath.attr('position', oldPoints[i]);\n            graphic[isInit ? 'initProps' : 'updateProps'](symbolPath, {\n              position: newPoints[i]\n            }, seriesModel, idx);\n          } else {\n            symbolPath.attr('position', newPoints[i]);\n          }\n\n          symbolGroup.add(symbolPath);\n        }\n      }\n    }\n\n    function getInitialPoints(points) {\n      return zrUtil.map(points, function (pt) {\n        return [polar.cx, polar.cy];\n      });\n    }\n\n    data.diff(oldData).add(function (idx) {\n      var points = data.getItemLayout(idx);\n\n      if (!points) {\n        return;\n      }\n\n      var polygon = new graphic.Polygon();\n      var polyline = new graphic.Polyline();\n      var target = {\n        shape: {\n          points: points\n        }\n      };\n      polygon.shape.points = getInitialPoints(points);\n      polyline.shape.points = getInitialPoints(points);\n      graphic.initProps(polygon, target, seriesModel, idx);\n      graphic.initProps(polyline, target, seriesModel, idx);\n      var itemGroup = new graphic.Group();\n      var symbolGroup = new graphic.Group();\n      itemGroup.add(polyline);\n      itemGroup.add(polygon);\n      itemGroup.add(symbolGroup);\n      updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true);\n      data.setItemGraphicEl(idx, itemGroup);\n    }).update(function (newIdx, oldIdx) {\n      var itemGroup = oldData.getItemGraphicEl(oldIdx);\n      var polyline = itemGroup.childAt(0);\n      var polygon = itemGroup.childAt(1);\n      var symbolGroup = itemGroup.childAt(2);\n      var target = {\n        shape: {\n          points: data.getItemLayout(newIdx)\n        }\n      };\n\n      if (!target.shape.points) {\n        return;\n      }\n\n      updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);\n      graphic.updateProps(polyline, target, seriesModel);\n      graphic.updateProps(polygon, target, seriesModel);\n      data.setItemGraphicEl(newIdx, itemGroup);\n    }).remove(function (idx) {\n      group.remove(oldData.getItemGraphicEl(idx));\n    }).execute();\n    data.eachItemGraphicEl(function (itemGroup, idx) {\n      var itemModel = data.getItemModel(idx);\n      var polyline = itemGroup.childAt(0);\n      var polygon = itemGroup.childAt(1);\n      var symbolGroup = itemGroup.childAt(2);\n      var color = data.getItemVisual(idx, 'color');\n      group.add(itemGroup);\n      polyline.useStyle(zrUtil.defaults(itemModel.getModel('lineStyle').getLineStyle(), {\n        fill: 'none',\n        stroke: color\n      }));\n      polyline.hoverStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n      var areaStyleModel = itemModel.getModel('areaStyle');\n      var hoverAreaStyleModel = itemModel.getModel('emphasis.areaStyle');\n      var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();\n      var hoverPolygonIgnore = hoverAreaStyleModel.isEmpty() && hoverAreaStyleModel.parentModel.isEmpty();\n      hoverPolygonIgnore = hoverPolygonIgnore && polygonIgnore;\n      polygon.ignore = polygonIgnore;\n      polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n        fill: color,\n        opacity: 0.7\n      }));\n      polygon.hoverStyle = hoverAreaStyleModel.getAreaStyle();\n      var itemStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n      var itemHoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n      var labelModel = itemModel.getModel('label');\n      var labelHoverModel = itemModel.getModel('emphasis.label');\n      symbolGroup.eachChild(function (symbolPath) {\n        symbolPath.setStyle(itemStyle);\n        symbolPath.hoverStyle = zrUtil.clone(itemHoverStyle);\n        var defaultText = data.get(data.dimensions[symbolPath.__dimIdx], idx);\n        (defaultText == null || isNaN(defaultText)) && (defaultText = '');\n        graphic.setLabelStyle(symbolPath.style, symbolPath.hoverStyle, labelModel, labelHoverModel, {\n          labelFetcher: data.hostModel,\n          labelDataIndex: idx,\n          labelDimIndex: symbolPath.__dimIdx,\n          defaultText: defaultText,\n          autoColor: color,\n          isRectText: true\n        });\n      });\n\n      itemGroup.highDownOnUpdate = function (fromState, toState) {\n        polygon.attr('ignore', toState === 'emphasis' ? hoverPolygonIgnore : polygonIgnore);\n      };\n\n      graphic.setHoverStyle(itemGroup);\n    });\n    this._data = data;\n  },\n  remove: function () {\n    this.group.removeAll();\n    this._data = null;\n  },\n  dispose: function () {}\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1080 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('radar', function (seriesModel) {\n    var data = seriesModel.getData();\n    var points = [];\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (!coordSys) {\n      return;\n    }\n\n    var axes = coordSys.getIndicatorAxes();\n    zrUtil.each(axes, function (axis, axisIndex) {\n      data.each(data.mapDimension(axes[axisIndex].dim), function (val, dataIndex) {\n        points[dataIndex] = points[dataIndex] || [];\n        var point = coordSys.dataToPoint(val, axisIndex);\n        points[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys);\n      });\n    }); // Close polygon\n\n    data.each(function (idx) {\n      // TODO\n      // Is it appropriate to connect to the next data when some data is missing?\n      // Or, should trade it like `connectNull` in line chart?\n      var firstPoint = zrUtil.find(points[idx], function (point) {\n        return isValidPoint(point);\n      }) || getValueMissingPoint(coordSys); // Copy the first actual point to the end of the array\n\n      points[idx].push(firstPoint.slice());\n      data.setItemLayout(idx, points[idx]);\n    });\n  });\n}\n\nfunction isValidPoint(point) {\n  return !isNaN(point[0]) && !isNaN(point[1]);\n}\n\nfunction getValueMissingPoint(coordSys) {\n  // It is error-prone to input [NaN, NaN] into polygon, polygon.\n  // (probably cause problem when refreshing or animating)\n  return [coordSys.cx, coordSys.cy];\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1081 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Backward compat for radar chart in 2\nfunction _default(option) {\n  var polarOptArr = option.polar;\n\n  if (polarOptArr) {\n    if (!zrUtil.isArray(polarOptArr)) {\n      polarOptArr = [polarOptArr];\n    }\n\n    var polarNotRadar = [];\n    zrUtil.each(polarOptArr, function (polarOpt, idx) {\n      if (polarOpt.indicator) {\n        if (polarOpt.type && !polarOpt.shape) {\n          polarOpt.shape = polarOpt.type;\n        }\n\n        option.radar = option.radar || [];\n\n        if (!zrUtil.isArray(option.radar)) {\n          option.radar = [option.radar];\n        }\n\n        option.radar.push(polarOpt);\n      } else {\n        polarNotRadar.push(polarOpt);\n      }\n    });\n    option.polar = polarNotRadar;\n  }\n\n  zrUtil.each(option.series, function (seriesOpt) {\n    if (seriesOpt && seriesOpt.type === 'radar' && seriesOpt.polarIndex) {\n      seriesOpt.radarIndex = seriesOpt.polarIndex;\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1082 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1083);\n\n__webpack_require__(1090);\n\n__webpack_require__(592);\n\n__webpack_require__(415);\n\nvar mapSymbolLayout = __webpack_require__(1092);\n\nvar mapVisual = __webpack_require__(1093);\n\nvar mapDataStatistic = __webpack_require__(1094);\n\nvar backwardCompat = __webpack_require__(1095);\n\nvar createDataSelectAction = __webpack_require__(589);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerLayout(mapSymbolLayout);\necharts.registerVisual(mapVisual);\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);\necharts.registerPreprocessor(backwardCompat);\ncreateDataSelectAction('map', [{\n  type: 'mapToggleSelect',\n  event: 'mapselectchanged',\n  method: 'toggleSelected'\n}, {\n  type: 'mapSelect',\n  event: 'mapselected',\n  method: 'select'\n}, {\n  type: 'mapUnSelect',\n  event: 'mapunselected',\n  method: 'unSelect'\n}]);\n\n/***/ }),\n/* 1083 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar createListSimply = __webpack_require__(217);\n\nvar SeriesModel = __webpack_require__(75);\n\nvar _format = __webpack_require__(50);\n\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\n\nvar dataSelectableMixin = __webpack_require__(412);\n\nvar _dataProvider = __webpack_require__(179);\n\nvar retrieveRawAttr = _dataProvider.retrieveRawAttr;\n\nvar geoSourceManager = __webpack_require__(336);\n\nvar _sourceHelper = __webpack_require__(144);\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar MapSeries = SeriesModel.extend({\n  type: 'series.map',\n  dependencies: ['geo'],\n  layoutMode: 'box',\n\n  /**\n   * Only first map series of same mapType will drawMap\n   * @type {boolean}\n   */\n  needsDrawMap: false,\n\n  /**\n   * Group of all map series with same mapType\n   * @type {boolean}\n   */\n  seriesGroup: [],\n  getInitialData: function (option) {\n    var data = createListSimply(this, {\n      coordDimensions: ['value'],\n      encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n    });\n    var valueDim = data.mapDimension('value');\n    var dataNameMap = zrUtil.createHashMap();\n    var selectTargetList = [];\n    var toAppendNames = [];\n\n    for (var i = 0, len = data.count(); i < len; i++) {\n      var name = data.getName(i);\n      dataNameMap.set(name, true);\n      selectTargetList.push({\n        name: name,\n        value: data.get(valueDim, i),\n        selected: retrieveRawAttr(data, i, 'selected')\n      });\n    }\n\n    var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);\n    zrUtil.each(geoSource.regions, function (region) {\n      var name = region.name;\n\n      if (!dataNameMap.get(name)) {\n        selectTargetList.push({\n          name: name\n        });\n        toAppendNames.push(name);\n      }\n    });\n    this.updateSelectedMap(selectTargetList); // Complete data with missing regions. The consequent processes (like visual\n    // map and render) can not be performed without a \"full data\". For example,\n    // find `dataIndex` by name.\n\n    data.appendValues([], toAppendNames);\n    return data;\n  },\n\n  /**\n   * If no host geo model, return null, which means using a\n   * inner exclusive geo model.\n   */\n  getHostGeoModel: function () {\n    var geoIndex = this.option.geoIndex;\n    return geoIndex != null ? this.dependentModels.geo[geoIndex] : null;\n  },\n  getMapType: function () {\n    return (this.getHostGeoModel() || this).option.map;\n  },\n  // _fillOption: function (option, mapName) {\n  // Shallow clone\n  // option = zrUtil.extend({}, option);\n  // option.data = geoCreator.getFilledRegions(option.data, mapName, option.nameMap);\n  // return option;\n  // },\n  getRawValue: function (dataIndex) {\n    // Use value stored in data instead because it is calculated from multiple series\n    // FIXME Provide all value of multiple series ?\n    var data = this.getData();\n    return data.get(data.mapDimension('value'), dataIndex);\n  },\n\n  /**\n   * Get model of region\n   * @param  {string} name\n   * @return {module:echarts/model/Model}\n   */\n  getRegionModel: function (regionName) {\n    var data = this.getData();\n    return data.getItemModel(data.indexOfName(regionName));\n  },\n\n  /**\n   * Map tooltip formatter\n   *\n   * @param {number} dataIndex\n   */\n  formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n    // FIXME orignalData and data is a bit confusing\n    var data = this.getData();\n    var formattedValue = addCommas(this.getRawValue(dataIndex));\n    var name = data.getName(dataIndex);\n    var seriesGroup = this.seriesGroup;\n    var seriesNames = [];\n\n    for (var i = 0; i < seriesGroup.length; i++) {\n      var otherIndex = seriesGroup[i].originalData.indexOfName(name);\n      var valueDim = data.mapDimension('value');\n\n      if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {\n        seriesNames.push(encodeHTML(seriesGroup[i].name));\n      }\n    }\n\n    var newLine = renderMode === 'html' ? '<br/>' : '\\n';\n    return seriesNames.join(', ') + newLine + encodeHTML(name + ' : ' + formattedValue);\n  },\n\n  /**\n   * @implement\n   */\n  getTooltipPosition: function (dataIndex) {\n    if (dataIndex != null) {\n      var name = this.getData().getName(dataIndex);\n      var geo = this.coordinateSystem;\n      var region = geo.getRegion(name);\n      return region && geo.dataToPoint(region.center);\n    }\n  },\n  setZoom: function (zoom) {\n    this.option.zoom = zoom;\n  },\n  setCenter: function (center) {\n    this.option.center = center;\n  },\n  defaultOption: {\n    // 一级层叠\n    zlevel: 0,\n    // 二级层叠\n    z: 2,\n    coordinateSystem: 'geo',\n    // map should be explicitly specified since ec3.\n    map: '',\n    // If `geoIndex` is not specified, a exclusive geo will be\n    // created. Otherwise use the specified geo component, and\n    // `map` and `mapType` are ignored.\n    // geoIndex: 0,\n    // 'center' | 'left' | 'right' | 'x%' | {number}\n    left: 'center',\n    // 'center' | 'top' | 'bottom' | 'x%' | {number}\n    top: 'center',\n    // right\n    // bottom\n    // width:\n    // height\n    // Aspect is width / height. Inited to be geoJson bbox aspect\n    // This parameter is used for scale this aspect\n    aspectScale: 0.75,\n    ///// Layout with center and size\n    // If you wan't to put map in a fixed size box with right aspect ratio\n    // This two properties may more conveninet\n    // layoutCenter: [50%, 50%]\n    // layoutSize: 100\n    // 数值合并方式，默认加和，可选为：\n    // 'sum' | 'average' | 'max' | 'min'\n    // mapValueCalculation: 'sum',\n    // 地图数值计算结果小数精度\n    // mapValuePrecision: 0,\n    // 显示图例颜色标识（系列标识的小圆点），图例开启时有效\n    showLegendSymbol: true,\n    // 选择模式，默认关闭，可选single，multiple\n    // selectedMode: false,\n    dataRangeHoverLink: true,\n    // 是否开启缩放及漫游模式\n    // roam: false,\n    // Define left-top, right-bottom coords to control view\n    // For example, [ [180, 90], [-180, -90] ],\n    // higher priority than center and zoom\n    boundingCoords: null,\n    // Default on center of map\n    center: null,\n    zoom: 1,\n    scaleLimit: null,\n    label: {\n      show: false,\n      color: '#000'\n    },\n    // scaleLimit: null,\n    itemStyle: {\n      borderWidth: 0.5,\n      borderColor: '#444',\n      areaColor: '#eee'\n    },\n    emphasis: {\n      label: {\n        show: true,\n        color: 'rgb(100,0,0)'\n      },\n      itemStyle: {\n        areaColor: 'rgba(255,215,0,0.8)'\n      }\n    },\n    nameProperty: 'name'\n  }\n});\nzrUtil.mixin(MapSeries, dataSelectableMixin);\nvar _default = MapSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1084 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\n\nvar parseGeoJson = __webpack_require__(578);\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\n\nvar fixNanhai = __webpack_require__(1085);\n\nvar fixTextCoord = __webpack_require__(1086);\n\nvar fixGeoCoord = __webpack_require__(1087);\n\nvar fixDiaoyuIsland = __webpack_require__(1088);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Built-in GEO fixer.\nvar inner = makeInner();\nvar _default = {\n  /**\n   * @param {string} mapName\n   * @param {Object} mapRecord {specialAreas, geoJSON}\n   * @param {string} nameProperty\n   * @return {Object} {regions, boundingRect}\n   */\n  load: function (mapName, mapRecord, nameProperty) {\n    var parsed = inner(mapRecord).parsed;\n\n    if (parsed) {\n      return parsed;\n    }\n\n    var specialAreas = mapRecord.specialAreas || {};\n    var geoJSON = mapRecord.geoJSON;\n    var regions; // https://jsperf.com/try-catch-performance-overhead\n\n    try {\n      regions = geoJSON ? parseGeoJson(geoJSON, nameProperty) : [];\n    } catch (e) {\n      throw new Error('Invalid geoJson format\\n' + e.message);\n    }\n\n    fixNanhai(mapName, regions);\n    each(regions, function (region) {\n      var regionName = region.name;\n      fixTextCoord(mapName, region);\n      fixGeoCoord(mapName, region);\n      fixDiaoyuIsland(mapName, region); // Some area like Alaska in USA map needs to be tansformed\n      // to look better\n\n      var specialArea = specialAreas[regionName];\n\n      if (specialArea) {\n        region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height);\n      }\n    });\n    return inner(mapRecord).parsed = {\n      regions: regions,\n      boundingRect: getBoundingRect(regions)\n    };\n  }\n};\n\nfunction getBoundingRect(regions) {\n  var rect;\n\n  for (var i = 0; i < regions.length; i++) {\n    var regionRect = regions[i].getBoundingRect();\n    rect = rect || regionRect.clone();\n    rect.union(regionRect);\n  }\n\n  return rect;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1085 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Region = __webpack_require__(579);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Fix for 南海诸岛\nvar geoCoord = [126, 25];\nvar points = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]];\n\nfor (var i = 0; i < points.length; i++) {\n  for (var k = 0; k < points[i].length; k++) {\n    points[i][k][0] /= 10.5;\n    points[i][k][1] /= -10.5 / 0.75;\n    points[i][k][0] += geoCoord[0];\n    points[i][k][1] += geoCoord[1];\n  }\n}\n\nfunction _default(mapType, regions) {\n  if (mapType === 'china') {\n    regions.push(new Region('南海诸岛', zrUtil.map(points, function (exterior) {\n      return {\n        type: 'polygon',\n        exterior: exterior\n      };\n    }), geoCoord));\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1086 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar coordsOffsetMap = {\n  '南海诸岛': [32, 80],\n  // 全国\n  '广东': [0, -10],\n  '香港': [10, 5],\n  '澳门': [-10, 10],\n  //'北京': [-10, 0],\n  '天津': [5, 5]\n};\n\nfunction _default(mapType, region) {\n  if (mapType === 'china') {\n    var coordFix = coordsOffsetMap[region.name];\n\n    if (coordFix) {\n      var cp = region.center;\n      cp[0] += coordFix[0] / 10.5;\n      cp[1] += -coordFix[1] / (10.5 / 0.75);\n    }\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1087 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar geoCoordMap = {\n  'Russia': [100, 60],\n  'United States': [-99, 38],\n  'United States of America': [-99, 38]\n};\n\nfunction _default(mapType, region) {\n  if (mapType === 'world') {\n    var geoCoord = geoCoordMap[region.name];\n\n    if (geoCoord) {\n      var cp = region.center;\n      cp[0] = geoCoord[0];\n      cp[1] = geoCoord[1];\n    }\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1088 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Fix for 钓鱼岛\n// var Region = require('../Region');\n// var zrUtil = require('zrender/src/core/util');\n// var geoCoord = [126, 25];\nvar points = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]];\n\nfunction _default(mapType, region) {\n  if (mapType === 'china' && region.name === '台湾') {\n    region.geometries.push({\n      type: 'polygon',\n      exterior: points[0]\n    });\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1089 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _parseSVG = __webpack_require__(571);\n\nvar parseSVG = _parseSVG.parseSVG;\nvar makeViewBoxTransform = _parseSVG.makeViewBoxTransform;\n\nvar Group = __webpack_require__(177);\n\nvar Rect = __webpack_require__(403);\n\nvar _util = __webpack_require__(2);\n\nvar assert = _util.assert;\nvar createHashMap = _util.createHashMap;\n\nvar BoundingRect = __webpack_require__(57);\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar _default = {\n  /**\n   * @param {string} mapName\n   * @param {Object} mapRecord {specialAreas, geoJSON}\n   * @return {Object} {root, boundingRect}\n   */\n  load: function (mapName, mapRecord) {\n    var originRoot = inner(mapRecord).originRoot;\n\n    if (originRoot) {\n      return {\n        root: originRoot,\n        boundingRect: inner(mapRecord).boundingRect\n      };\n    }\n\n    var graphic = buildGraphic(mapRecord);\n    inner(mapRecord).originRoot = graphic.root;\n    inner(mapRecord).boundingRect = graphic.boundingRect;\n    return graphic;\n  },\n  makeGraphic: function (mapName, mapRecord, hostKey) {\n    // For performance consideration (in large SVG), graphic only maked\n    // when necessary and reuse them according to hostKey.\n    var field = inner(mapRecord);\n    var rootMap = field.rootMap || (field.rootMap = createHashMap());\n    var root = rootMap.get(hostKey);\n\n    if (root) {\n      return root;\n    }\n\n    var originRoot = field.originRoot;\n    var boundingRect = field.boundingRect; // For performance, if originRoot is not used by a view,\n    // assign it to a view, but not reproduce graphic elements.\n\n    if (!field.originRootHostKey) {\n      field.originRootHostKey = hostKey;\n      root = originRoot;\n    } else {\n      root = buildGraphic(mapRecord, boundingRect).root;\n    }\n\n    return rootMap.set(hostKey, root);\n  },\n  removeGraphic: function (mapName, mapRecord, hostKey) {\n    var field = inner(mapRecord);\n    var rootMap = field.rootMap;\n    rootMap && rootMap.removeKey(hostKey);\n\n    if (hostKey === field.originRootHostKey) {\n      field.originRootHostKey = null;\n    }\n  }\n};\n\nfunction buildGraphic(mapRecord, boundingRect) {\n  var svgXML = mapRecord.svgXML;\n  var result;\n  var root;\n\n  try {\n    result = svgXML && parseSVG(svgXML, {\n      ignoreViewBox: true,\n      ignoreRootClip: true\n    }) || {};\n    root = result.root;\n    assert(root != null);\n  } catch (e) {\n    throw new Error('Invalid svg format\\n' + e.message);\n  }\n\n  var svgWidth = result.width;\n  var svgHeight = result.height;\n  var viewBoxRect = result.viewBoxRect;\n\n  if (!boundingRect) {\n    boundingRect = svgWidth == null || svgHeight == null ? // If svg width / height not specified, calculate\n    // bounding rect as the width / height\n    root.getBoundingRect() : new BoundingRect(0, 0, 0, 0);\n\n    if (svgWidth != null) {\n      boundingRect.width = svgWidth;\n    }\n\n    if (svgHeight != null) {\n      boundingRect.height = svgHeight;\n    }\n  }\n\n  if (viewBoxRect) {\n    var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect.width, boundingRect.height);\n    var elRoot = root;\n    root = new Group();\n    root.add(elRoot);\n    elRoot.scale = viewBoxTransform.scale;\n    elRoot.position = viewBoxTransform.position;\n  }\n\n  root.setClipPath(new Rect({\n    shape: boundingRect.plain()\n  }));\n  return {\n    root: root,\n    boundingRect: boundingRect\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1090 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar MapDraw = __webpack_require__(590);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar HIGH_DOWN_PROP = '__seriesMapHighDown';\nvar RECORD_VERSION_PROP = '__seriesMapCallKey';\n\nvar _default = echarts.extendChartView({\n  type: 'map',\n  render: function (mapModel, ecModel, api, payload) {\n    // Not render if it is an toggleSelect action from self\n    if (payload && payload.type === 'mapToggleSelect' && payload.from === this.uid) {\n      return;\n    }\n\n    var group = this.group;\n    group.removeAll();\n\n    if (mapModel.getHostGeoModel()) {\n      return;\n    } // Not update map if it is an roam action from self\n\n\n    if (!(payload && payload.type === 'geoRoam' && payload.componentType === 'series' && payload.seriesId === mapModel.id)) {\n      if (mapModel.needsDrawMap) {\n        var mapDraw = this._mapDraw || new MapDraw(api, true);\n        group.add(mapDraw.group);\n        mapDraw.draw(mapModel, ecModel, api, this, payload);\n        this._mapDraw = mapDraw;\n      } else {\n        // Remove drawed map\n        this._mapDraw && this._mapDraw.remove();\n        this._mapDraw = null;\n      }\n    } else {\n      var mapDraw = this._mapDraw;\n      mapDraw && group.add(mapDraw.group);\n    }\n\n    mapModel.get('showLegendSymbol') && ecModel.getComponent('legend') && this._renderSymbols(mapModel, ecModel, api);\n  },\n  remove: function () {\n    this._mapDraw && this._mapDraw.remove();\n    this._mapDraw = null;\n    this.group.removeAll();\n  },\n  dispose: function () {\n    this._mapDraw && this._mapDraw.remove();\n    this._mapDraw = null;\n  },\n  _renderSymbols: function (mapModel, ecModel, api) {\n    var originalData = mapModel.originalData;\n    var group = this.group;\n    originalData.each(originalData.mapDimension('value'), function (value, originalDataIndex) {\n      if (isNaN(value)) {\n        return;\n      }\n\n      var layout = originalData.getItemLayout(originalDataIndex);\n\n      if (!layout || !layout.point) {\n        // Not exists in map\n        return;\n      }\n\n      var point = layout.point;\n      var offset = layout.offset;\n      var circle = new graphic.Circle({\n        style: {\n          // Because the special of map draw.\n          // Which needs statistic of multiple series and draw on one map.\n          // And each series also need a symbol with legend color\n          //\n          // Layout and visual are put one the different data\n          fill: mapModel.getData().getVisual('color')\n        },\n        shape: {\n          cx: point[0] + offset * 9,\n          cy: point[1],\n          r: 3\n        },\n        silent: true,\n        // Do not overlap the first series, on which labels are displayed.\n        z2: 8 + (!offset ? graphic.Z2_EMPHASIS_LIFT + 1 : 0)\n      }); // Only the series that has the first value on the same region is in charge of rendering the label.\n      // But consider the case:\n      // series: [\n      //     {id: 'X', type: 'map', map: 'm', {data: [{name: 'A', value: 11}, {name: 'B', {value: 22}]},\n      //     {id: 'Y', type: 'map', map: 'm', {data: [{name: 'A', value: 21}, {name: 'C', {value: 33}]}\n      // ]\n      // The offset `0` of item `A` is at series `X`, but of item `C` is at series `Y`.\n      // For backward compatibility, we follow the rule that render label `A` by the\n      // settings on series `X` but render label `C` by the settings on series `Y`.\n\n      if (!offset) {\n        var fullData = mapModel.mainSeries.getData();\n        var name = originalData.getName(originalDataIndex);\n        var fullIndex = fullData.indexOfName(name);\n        var itemModel = originalData.getItemModel(originalDataIndex);\n        var labelModel = itemModel.getModel('label');\n        var hoverLabelModel = itemModel.getModel('emphasis.label');\n        var regionGroup = fullData.getItemGraphicEl(fullIndex); // `getFormattedLabel` needs to use `getData` inside. Here\n        // `mapModel.getData()` is shallow cloned from `mainSeries.getData()`.\n        // FIXME\n        // If this is not the `mainSeries`, the item model (like label formatter)\n        // set on original data item will never get. But it has been working\n        // like that from the begining, and this scenario is rarely encountered.\n        // So it won't be fixed until have to.\n\n        var normalText = zrUtil.retrieve2(mapModel.getFormattedLabel(fullIndex, 'normal'), name);\n        var emphasisText = zrUtil.retrieve2(mapModel.getFormattedLabel(fullIndex, 'emphasis'), normalText);\n        var highDownRecord = regionGroup[HIGH_DOWN_PROP];\n        var recordVersion = Math.random(); // Prevent from register listeners duplicatedly when roaming.\n\n        if (!highDownRecord) {\n          highDownRecord = regionGroup[HIGH_DOWN_PROP] = {};\n          var onEmphasis = zrUtil.curry(onRegionHighDown, true);\n          var onNormal = zrUtil.curry(onRegionHighDown, false);\n          regionGroup.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal);\n        } // Prevent removed regions effect current grapics.\n\n\n        regionGroup[RECORD_VERSION_PROP] = recordVersion;\n        zrUtil.extend(highDownRecord, {\n          recordVersion: recordVersion,\n          circle: circle,\n          labelModel: labelModel,\n          hoverLabelModel: hoverLabelModel,\n          emphasisText: emphasisText,\n          normalText: normalText\n        }); // FIXME\n        // Consider set option when emphasis.\n\n        enterRegionHighDown(highDownRecord, false);\n      }\n\n      group.add(circle);\n    });\n  }\n});\n\nfunction onRegionHighDown(toHighOrDown) {\n  var highDownRecord = this[HIGH_DOWN_PROP];\n\n  if (highDownRecord && highDownRecord.recordVersion === this[RECORD_VERSION_PROP]) {\n    enterRegionHighDown(highDownRecord, toHighOrDown);\n  }\n}\n\nfunction enterRegionHighDown(highDownRecord, toHighOrDown) {\n  var circle = highDownRecord.circle;\n  var labelModel = highDownRecord.labelModel;\n  var hoverLabelModel = highDownRecord.hoverLabelModel;\n  var emphasisText = highDownRecord.emphasisText;\n  var normalText = highDownRecord.normalText;\n\n  if (toHighOrDown) {\n    circle.style.extendFrom(graphic.setTextStyle({}, hoverLabelModel, {\n      text: hoverLabelModel.get('show') ? emphasisText : null\n    }, {\n      isRectText: true,\n      useInsideStyle: false\n    }, true)); // Make label upper than others if overlaps.\n\n    circle.__mapOriginalZ2 = circle.z2;\n    circle.z2 += graphic.Z2_EMPHASIS_LIFT;\n  } else {\n    graphic.setTextStyle(circle.style, labelModel, {\n      text: labelModel.get('show') ? normalText : null,\n      textPosition: labelModel.getShallow('position') || 'bottom'\n    }, {\n      isRectText: true,\n      useInsideStyle: false\n    }); // Trigger normalize style like padding.\n\n    circle.dirty(false);\n\n    if (circle.__mapOriginalZ2 != null) {\n      circle.z2 = circle.__mapOriginalZ2;\n      circle.__mapOriginalZ2 = null;\n    }\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1091 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar View = __webpack_require__(416);\n\nvar geoSourceManager = __webpack_require__(336);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [Geo description]\n * For backward compatibility, the orginal interface:\n * `name, map, geoJson, specialAreas, nameMap` is kept.\n *\n * @param {string|Object} name\n * @param {string} map Map type\n *        Specify the positioned areas by left, top, width, height\n * @param {Object.<string, string>} [nameMap]\n *        Specify name alias\n * @param {boolean} [invertLongitute=true]\n */\nfunction Geo(name, map, nameMap, invertLongitute) {\n  View.call(this, name);\n  /**\n   * Map type\n   * @type {string}\n   */\n\n  this.map = map;\n  var source = geoSourceManager.load(map, nameMap);\n  this._nameCoordMap = source.nameCoordMap;\n  this._regionsMap = source.regionsMap;\n  this._invertLongitute = invertLongitute == null ? true : invertLongitute;\n  /**\n   * @readOnly\n   */\n\n  this.regions = source.regions;\n  /**\n   * @type {module:zrender/src/core/BoundingRect}\n   */\n\n  this._rect = source.boundingRect;\n}\n\nGeo.prototype = {\n  constructor: Geo,\n  type: 'geo',\n\n  /**\n   * @param {Array.<string>}\n   * @readOnly\n   */\n  dimensions: ['lng', 'lat'],\n\n  /**\n   * If contain given lng,lat coord\n   * @param {Array.<number>}\n   * @readOnly\n   */\n  containCoord: function (coord) {\n    var regions = this.regions;\n\n    for (var i = 0; i < regions.length; i++) {\n      if (regions[i].contain(coord)) {\n        return true;\n      }\n    }\n\n    return false;\n  },\n\n  /**\n   * @override\n   */\n  transformTo: function (x, y, width, height) {\n    var rect = this.getBoundingRect();\n    var invertLongitute = this._invertLongitute;\n    rect = rect.clone();\n\n    if (invertLongitute) {\n      // Longitute is inverted\n      rect.y = -rect.y - rect.height;\n    }\n\n    var rawTransformable = this._rawTransformable;\n    rawTransformable.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n    rawTransformable.decomposeTransform();\n\n    if (invertLongitute) {\n      var scale = rawTransformable.scale;\n      scale[1] = -scale[1];\n    }\n\n    rawTransformable.updateTransform();\n\n    this._updateTransform();\n  },\n\n  /**\n   * @param {string} name\n   * @return {module:echarts/coord/geo/Region}\n   */\n  getRegion: function (name) {\n    return this._regionsMap.get(name);\n  },\n  getRegionByCoord: function (coord) {\n    var regions = this.regions;\n\n    for (var i = 0; i < regions.length; i++) {\n      if (regions[i].contain(coord)) {\n        return regions[i];\n      }\n    }\n  },\n\n  /**\n   * Add geoCoord for indexing by name\n   * @param {string} name\n   * @param {Array.<number>} geoCoord\n   */\n  addGeoCoord: function (name, geoCoord) {\n    this._nameCoordMap.set(name, geoCoord);\n  },\n\n  /**\n   * Get geoCoord by name\n   * @param {string} name\n   * @return {Array.<number>}\n   */\n  getGeoCoord: function (name) {\n    return this._nameCoordMap.get(name);\n  },\n\n  /**\n   * @override\n   */\n  getBoundingRect: function () {\n    return this._rect;\n  },\n\n  /**\n   * @param {string|Array.<number>} data\n   * @param {boolean} noRoam\n   * @param {Array.<number>} [out]\n   * @return {Array.<number>}\n   */\n  dataToPoint: function (data, noRoam, out) {\n    if (typeof data === 'string') {\n      // Map area name to geoCoord\n      data = this.getGeoCoord(data);\n    }\n\n    if (data) {\n      return View.prototype.dataToPoint.call(this, data, noRoam, out);\n    }\n  },\n\n  /**\n   * @override\n   */\n  convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n  /**\n   * @override\n   */\n  convertFromPixel: zrUtil.curry(doConvert, 'pointToData')\n};\nzrUtil.mixin(Geo, View);\n\nfunction doConvert(methodName, ecModel, finder, value) {\n  var geoModel = finder.geoModel;\n  var seriesModel = finder.seriesModel;\n  var coordSys = geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem // For map.\n  || (seriesModel.getReferringComponents('geo')[0] || {}).coordinateSystem : null;\n  return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nvar _default = Geo;\nmodule.exports = _default;\n\n/***/ }),\n/* 1092 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n  var processedMapType = {};\n  ecModel.eachSeriesByType('map', function (mapSeries) {\n    var mapType = mapSeries.getMapType();\n\n    if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {\n      return;\n    }\n\n    var mapSymbolOffsets = {};\n    zrUtil.each(mapSeries.seriesGroup, function (subMapSeries) {\n      var geo = subMapSeries.coordinateSystem;\n      var data = subMapSeries.originalData;\n\n      if (subMapSeries.get('showLegendSymbol') && ecModel.getComponent('legend')) {\n        data.each(data.mapDimension('value'), function (value, idx) {\n          var name = data.getName(idx);\n          var region = geo.getRegion(name); // If input series.data is [11, 22, '-'/null/undefined, 44],\n          // it will be filled with NaN: [11, 22, NaN, 44] and NaN will\n          // not be drawn. So here must validate if value is NaN.\n\n          if (!region || isNaN(value)) {\n            return;\n          }\n\n          var offset = mapSymbolOffsets[name] || 0;\n          var point = geo.dataToPoint(region.center);\n          mapSymbolOffsets[name] = offset + 1;\n          data.setItemLayout(idx, {\n            point: point,\n            offset: offset\n          });\n        });\n      }\n    }); // Show label of those region not has legendSymbol(which is offset 0)\n\n    var data = mapSeries.getData();\n    data.each(function (idx) {\n      var name = data.getName(idx);\n      var layout = data.getItemLayout(idx) || {};\n      layout.showLabel = !mapSymbolOffsets[name];\n      data.setItemLayout(idx, layout);\n    });\n    processedMapType[mapType] = true;\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1093 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('map', function (seriesModel) {\n    var colorList = seriesModel.get('color');\n    var itemStyleModel = seriesModel.getModel('itemStyle');\n    var areaColor = itemStyleModel.get('areaColor');\n    var color = itemStyleModel.get('color') || colorList[seriesModel.seriesIndex % colorList.length];\n    seriesModel.getData().setVisual({\n      'areaColor': areaColor,\n      'color': color\n    });\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1094 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME 公用？\n\n/**\n * @param {Array.<module:echarts/data/List>} datas\n * @param {string} statisticType 'average' 'sum'\n * @inner\n */\nfunction dataStatistics(datas, statisticType) {\n  var dataNameMap = {};\n  zrUtil.each(datas, function (data) {\n    data.each(data.mapDimension('value'), function (value, idx) {\n      // Add prefix to avoid conflict with Object.prototype.\n      var mapKey = 'ec-' + data.getName(idx);\n      dataNameMap[mapKey] = dataNameMap[mapKey] || [];\n\n      if (!isNaN(value)) {\n        dataNameMap[mapKey].push(value);\n      }\n    });\n  });\n  return datas[0].map(datas[0].mapDimension('value'), function (value, idx) {\n    var mapKey = 'ec-' + datas[0].getName(idx);\n    var sum = 0;\n    var min = Infinity;\n    var max = -Infinity;\n    var len = dataNameMap[mapKey].length;\n\n    for (var i = 0; i < len; i++) {\n      min = Math.min(min, dataNameMap[mapKey][i]);\n      max = Math.max(max, dataNameMap[mapKey][i]);\n      sum += dataNameMap[mapKey][i];\n    }\n\n    var result;\n\n    if (statisticType === 'min') {\n      result = min;\n    } else if (statisticType === 'max') {\n      result = max;\n    } else if (statisticType === 'average') {\n      result = sum / len;\n    } else {\n      result = sum;\n    }\n\n    return len === 0 ? NaN : result;\n  });\n}\n\nfunction _default(ecModel) {\n  var seriesGroups = {};\n  ecModel.eachSeriesByType('map', function (seriesModel) {\n    var hostGeoModel = seriesModel.getHostGeoModel();\n    var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType();\n    (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);\n  });\n  zrUtil.each(seriesGroups, function (seriesList, key) {\n    var data = dataStatistics(zrUtil.map(seriesList, function (seriesModel) {\n      return seriesModel.getData();\n    }), seriesList[0].get('mapValueCalculation'));\n\n    for (var i = 0; i < seriesList.length; i++) {\n      seriesList[i].originalData = seriesList[i].getData();\n    } // FIXME Put where?\n\n\n    for (var i = 0; i < seriesList.length; i++) {\n      seriesList[i].seriesGroup = seriesList;\n      seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();\n      seriesList[i].setData(data.cloneShallow());\n      seriesList[i].mainSeries = seriesList[0];\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1095 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(option) {\n  // Save geoCoord\n  var mapSeries = [];\n  zrUtil.each(option.series, function (seriesOpt) {\n    if (seriesOpt && seriesOpt.type === 'map') {\n      mapSeries.push(seriesOpt);\n      seriesOpt.map = seriesOpt.map || seriesOpt.mapType; // Put x, y, width, height, x2, y2 in the top level\n\n      zrUtil.defaults(seriesOpt, seriesOpt.mapLocation);\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1096 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1097);\n\n__webpack_require__(1098);\n\n__webpack_require__(1099);\n\nvar visualSymbol = __webpack_require__(181);\n\nvar treeLayout = __webpack_require__(1100);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(visualSymbol('tree', 'circle'));\necharts.registerLayout(treeLayout);\n\n/***/ }),\n/* 1097 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(75);\n\nvar Tree = __webpack_require__(417);\n\nvar _format = __webpack_require__(50);\n\nvar encodeHTML = _format.encodeHTML;\n\nvar Model = __webpack_require__(67);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n  type: 'series.tree',\n  layoutInfo: null,\n  // can support the position parameters 'left', 'top','right','bottom', 'width',\n  // 'height' in the setOption() with 'merge' mode normal.\n  layoutMode: 'box',\n\n  /**\n   * Init a tree data structure from data in option series\n   * @param  {Object} option  the object used to config echarts view\n   * @return {module:echarts/data/List} storage initial data\n   */\n  getInitialData: function (option) {\n    //create an virtual root\n    var root = {\n      name: option.name,\n      children: option.data\n    };\n    var leaves = option.leaves || {};\n    var leavesModel = new Model(leaves, this, this.ecModel);\n    var tree = Tree.createTree(root, this, beforeLink);\n\n    function beforeLink(nodeData) {\n      nodeData.wrapMethod('getItemModel', function (model, idx) {\n        var node = tree.getNodeByDataIndex(idx);\n\n        if (!node.children.length || !node.isExpand) {\n          model.parentModel = leavesModel;\n        }\n\n        return model;\n      });\n    }\n\n    var treeDepth = 0;\n    tree.eachNode('preorder', function (node) {\n      if (node.depth > treeDepth) {\n        treeDepth = node.depth;\n      }\n    });\n    var expandAndCollapse = option.expandAndCollapse;\n    var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;\n    tree.root.eachNode('preorder', function (node) {\n      var item = node.hostTree.data.getRawDataItem(node.dataIndex); // Add item.collapsed != null, because users can collapse node original in the series.data.\n\n      node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth;\n    });\n    return tree.data;\n  },\n\n  /**\n   * Make the configuration 'orient' backward compatibly, with 'horizontal = LR', 'vertical = TB'.\n   * @returns {string} orient\n   */\n  getOrient: function () {\n    var orient = this.get('orient');\n\n    if (orient === 'horizontal') {\n      orient = 'LR';\n    } else if (orient === 'vertical') {\n      orient = 'TB';\n    }\n\n    return orient;\n  },\n  setZoom: function (zoom) {\n    this.option.zoom = zoom;\n  },\n  setCenter: function (center) {\n    this.option.center = center;\n  },\n\n  /**\n   * @override\n   * @param {number} dataIndex\n   */\n  formatTooltip: function (dataIndex) {\n    var tree = this.getData().tree;\n    var realRoot = tree.root.children[0];\n    var node = tree.getNodeByDataIndex(dataIndex);\n    var value = node.getValue();\n    var name = node.name;\n\n    while (node && node !== realRoot) {\n      name = node.parentNode.name + '.' + name;\n      node = node.parentNode;\n    }\n\n    return encodeHTML(name + (isNaN(value) || value == null ? '' : ' : ' + value));\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'view',\n    // the position of the whole view\n    left: '12%',\n    top: '12%',\n    right: '12%',\n    bottom: '12%',\n    // the layout of the tree, two value can be selected, 'orthogonal' or 'radial'\n    layout: 'orthogonal',\n    // value can be 'polyline'\n    edgeShape: 'curve',\n    edgeForkPosition: '50%',\n    // true | false | 'move' | 'scale', see module:component/helper/RoamController.\n    roam: false,\n    // Symbol size scale ratio in roam\n    nodeScaleRatio: 0.4,\n    // Default on center of graph\n    center: null,\n    zoom: 1,\n    // The orient of orthoginal layout, can be setted to 'LR', 'TB', 'RL', 'BT'.\n    // and the backward compatibility configuration 'horizontal = LR', 'vertical = TB'.\n    orient: 'LR',\n    symbol: 'emptyCircle',\n    symbolSize: 7,\n    expandAndCollapse: true,\n    initialTreeDepth: 2,\n    lineStyle: {\n      color: '#ccc',\n      width: 1.5,\n      curveness: 0.5\n    },\n    itemStyle: {\n      color: 'lightsteelblue',\n      borderColor: '#c23531',\n      borderWidth: 1.5\n    },\n    label: {\n      show: true,\n      color: '#555'\n    },\n    leaves: {\n      label: {\n        show: true\n      }\n    },\n    animationEasing: 'linear',\n    animationDuration: 700,\n    animationDurationUpdate: 1000\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1098 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar SymbolClz = __webpack_require__(332);\n\nvar _layoutHelper = __webpack_require__(594);\n\nvar radialCoordinate = _layoutHelper.radialCoordinate;\n\nvar echarts = __webpack_require__(13);\n\nvar bbox = __webpack_require__(255);\n\nvar View = __webpack_require__(416);\n\nvar roamHelper = __webpack_require__(413);\n\nvar RoamController = __webpack_require__(266);\n\nvar _cursorHelper = __webpack_require__(337);\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TreeShape = graphic.extendShape({\n  shape: {\n    parentPoint: [],\n    childPoints: [],\n    orient: '',\n    forkPosition: ''\n  },\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  buildPath: function (ctx, shape) {\n    var childPoints = shape.childPoints;\n    var childLen = childPoints.length;\n    var parentPoint = shape.parentPoint;\n    var firstChildPos = childPoints[0];\n    var lastChildPos = childPoints[childLen - 1];\n\n    if (childLen === 1) {\n      ctx.moveTo(parentPoint[0], parentPoint[1]);\n      ctx.lineTo(firstChildPos[0], firstChildPos[1]);\n      return;\n    }\n\n    var orient = shape.orient;\n    var forkDim = orient === 'TB' || orient === 'BT' ? 0 : 1;\n    var otherDim = 1 - forkDim;\n    var forkPosition = parsePercent(shape.forkPosition, 1);\n    var tmpPoint = [];\n    tmpPoint[forkDim] = parentPoint[forkDim];\n    tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition;\n    ctx.moveTo(parentPoint[0], parentPoint[1]);\n    ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n    ctx.moveTo(firstChildPos[0], firstChildPos[1]);\n    tmpPoint[forkDim] = firstChildPos[forkDim];\n    ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n    tmpPoint[forkDim] = lastChildPos[forkDim];\n    ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n    ctx.lineTo(lastChildPos[0], lastChildPos[1]);\n\n    for (var i = 1; i < childLen - 1; i++) {\n      var point = childPoints[i];\n      ctx.moveTo(point[0], point[1]);\n      tmpPoint[forkDim] = point[forkDim];\n      ctx.lineTo(tmpPoint[0], tmpPoint[1]);\n    }\n  }\n});\n\nvar _default = echarts.extendChartView({\n  type: 'tree',\n\n  /**\n   * Init the chart\n   * @override\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  init: function (ecModel, api) {\n    /**\n     * @private\n     * @type {module:echarts/data/Tree}\n     */\n    this._oldTree;\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n\n    this._mainGroup = new graphic.Group();\n    /**\n     * @private\n     * @type {module:echarts/componet/helper/RoamController}\n     */\n\n    this._controller = new RoamController(api.getZr());\n    this._controllerHost = {\n      target: this.group\n    };\n    this.group.add(this._mainGroup);\n  },\n  render: function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var layoutInfo = seriesModel.layoutInfo;\n    var group = this._mainGroup;\n    var layout = seriesModel.get('layout');\n\n    if (layout === 'radial') {\n      group.attr('position', [layoutInfo.x + layoutInfo.width / 2, layoutInfo.y + layoutInfo.height / 2]);\n    } else {\n      group.attr('position', [layoutInfo.x, layoutInfo.y]);\n    }\n\n    this._updateViewCoordSys(seriesModel, layoutInfo, layout);\n\n    this._updateController(seriesModel, ecModel, api);\n\n    var oldData = this._data;\n    var seriesScope = {\n      expandAndCollapse: seriesModel.get('expandAndCollapse'),\n      layout: layout,\n      edgeShape: seriesModel.get('edgeShape'),\n      edgeForkPosition: seriesModel.get('edgeForkPosition'),\n      orient: seriesModel.getOrient(),\n      curvature: seriesModel.get('lineStyle.curveness'),\n      symbolRotate: seriesModel.get('symbolRotate'),\n      symbolOffset: seriesModel.get('symbolOffset'),\n      hoverAnimation: seriesModel.get('hoverAnimation'),\n      useNameLabel: true,\n      fadeIn: true\n    };\n    data.diff(oldData).add(function (newIdx) {\n      if (symbolNeedsDraw(data, newIdx)) {\n        // Create node and edge\n        updateNode(data, newIdx, null, group, seriesModel, seriesScope);\n      }\n    }).update(function (newIdx, oldIdx) {\n      var symbolEl = oldData.getItemGraphicEl(oldIdx);\n\n      if (!symbolNeedsDraw(data, newIdx)) {\n        symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel, seriesScope);\n        return;\n      } // Update node and edge\n\n\n      updateNode(data, newIdx, symbolEl, group, seriesModel, seriesScope);\n    }).remove(function (oldIdx) {\n      var symbolEl = oldData.getItemGraphicEl(oldIdx); // When remove a collapsed node of subtree, since the collapsed\n      // node haven't been initialized with a symbol element,\n      // you can't found it's symbol element through index.\n      // so if we want to remove the symbol element we should insure\n      // that the symbol element is not null.\n\n      if (symbolEl) {\n        removeNode(oldData, oldIdx, symbolEl, group, seriesModel, seriesScope);\n      }\n    }).execute();\n    this._nodeScaleRatio = seriesModel.get('nodeScaleRatio');\n\n    this._updateNodeAndLinkScale(seriesModel);\n\n    if (seriesScope.expandAndCollapse === true) {\n      data.eachItemGraphicEl(function (el, dataIndex) {\n        el.off('click').on('click', function () {\n          api.dispatchAction({\n            type: 'treeExpandAndCollapse',\n            seriesId: seriesModel.id,\n            dataIndex: dataIndex\n          });\n        });\n      });\n    }\n\n    this._data = data;\n  },\n  _updateViewCoordSys: function (seriesModel) {\n    var data = seriesModel.getData();\n    var points = [];\n    data.each(function (idx) {\n      var layout = data.getItemLayout(idx);\n\n      if (layout && !isNaN(layout.x) && !isNaN(layout.y)) {\n        points.push([+layout.x, +layout.y]);\n      }\n    });\n    var min = [];\n    var max = [];\n    bbox.fromPoints(points, min, max); // If don't Store min max when collapse the root node after roam,\n    // the root node will disappear.\n\n    var oldMin = this._min;\n    var oldMax = this._max; // If width or height is 0\n\n    if (max[0] - min[0] === 0) {\n      min[0] = oldMin ? oldMin[0] : min[0] - 1;\n      max[0] = oldMax ? oldMax[0] : max[0] + 1;\n    }\n\n    if (max[1] - min[1] === 0) {\n      min[1] = oldMin ? oldMin[1] : min[1] - 1;\n      max[1] = oldMax ? oldMax[1] : max[1] + 1;\n    }\n\n    var viewCoordSys = seriesModel.coordinateSystem = new View();\n    viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\n    viewCoordSys.setBoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n    viewCoordSys.setCenter(seriesModel.get('center'));\n    viewCoordSys.setZoom(seriesModel.get('zoom')); // Here we use viewCoordSys just for computing the 'position' and 'scale' of the group\n\n    this.group.attr({\n      position: viewCoordSys.position,\n      scale: viewCoordSys.scale\n    });\n    this._viewCoordSys = viewCoordSys;\n    this._min = min;\n    this._max = max;\n  },\n  _updateController: function (seriesModel, ecModel, api) {\n    var controller = this._controller;\n    var controllerHost = this._controllerHost;\n    var group = this.group;\n    controller.setPointerChecker(function (e, x, y) {\n      var rect = group.getBoundingRect();\n      rect.applyTransform(group.transform);\n      return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);\n    });\n    controller.enable(seriesModel.get('roam'));\n    controllerHost.zoomLimit = seriesModel.get('scaleLimit');\n    controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\n    controller.off('pan').off('zoom').on('pan', function (e) {\n      roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n      api.dispatchAction({\n        seriesId: seriesModel.id,\n        type: 'treeRoam',\n        dx: e.dx,\n        dy: e.dy\n      });\n    }, this).on('zoom', function (e) {\n      roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n      api.dispatchAction({\n        seriesId: seriesModel.id,\n        type: 'treeRoam',\n        zoom: e.scale,\n        originX: e.originX,\n        originY: e.originY\n      });\n\n      this._updateNodeAndLinkScale(seriesModel);\n    }, this);\n  },\n  _updateNodeAndLinkScale: function (seriesModel) {\n    var data = seriesModel.getData();\n\n    var nodeScale = this._getNodeGlobalScale(seriesModel);\n\n    var invScale = [nodeScale, nodeScale];\n    data.eachItemGraphicEl(function (el, idx) {\n      el.attr('scale', invScale);\n    });\n  },\n  _getNodeGlobalScale: function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys.type !== 'view') {\n      return 1;\n    }\n\n    var nodeScaleRatio = this._nodeScaleRatio;\n    var groupScale = coordSys.scale;\n    var groupZoom = groupScale && groupScale[0] || 1; // Scale node when zoom changes\n\n    var roamZoom = coordSys.getZoom();\n    var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n    return nodeScale / groupZoom;\n  },\n  dispose: function () {\n    this._controller && this._controller.dispose();\n    this._controllerHost = {};\n  },\n  remove: function () {\n    this._mainGroup.removeAll();\n\n    this._data = null;\n  }\n});\n\nfunction symbolNeedsDraw(data, dataIndex) {\n  var layout = data.getItemLayout(dataIndex);\n  return layout && !isNaN(layout.x) && !isNaN(layout.y) && data.getItemVisual(dataIndex, 'symbol') !== 'none';\n}\n\nfunction getTreeNodeStyle(node, itemModel, seriesScope) {\n  seriesScope.itemModel = itemModel;\n  seriesScope.itemStyle = itemModel.getModel('itemStyle').getItemStyle();\n  seriesScope.hoverItemStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n  seriesScope.lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n  seriesScope.labelModel = itemModel.getModel('label');\n  seriesScope.hoverLabelModel = itemModel.getModel('emphasis.label');\n\n  if (node.isExpand === false && node.children.length !== 0) {\n    seriesScope.symbolInnerColor = seriesScope.itemStyle.fill;\n  } else {\n    seriesScope.symbolInnerColor = '#fff';\n  }\n\n  return seriesScope;\n}\n\nfunction updateNode(data, dataIndex, symbolEl, group, seriesModel, seriesScope) {\n  var isInit = !symbolEl;\n  var node = data.tree.getNodeByDataIndex(dataIndex);\n  var itemModel = node.getModel();\n  var seriesScope = getTreeNodeStyle(node, itemModel, seriesScope);\n  var virtualRoot = data.tree.root;\n  var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\n  var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\n  var sourceLayout = source.getLayout();\n  var sourceOldLayout = sourceSymbolEl ? {\n    x: sourceSymbolEl.position[0],\n    y: sourceSymbolEl.position[1],\n    rawX: sourceSymbolEl.__radialOldRawX,\n    rawY: sourceSymbolEl.__radialOldRawY\n  } : sourceLayout;\n  var targetLayout = node.getLayout();\n\n  if (isInit) {\n    symbolEl = new SymbolClz(data, dataIndex, seriesScope);\n    symbolEl.attr('position', [sourceOldLayout.x, sourceOldLayout.y]);\n  } else {\n    symbolEl.updateData(data, dataIndex, seriesScope);\n  }\n\n  symbolEl.__radialOldRawX = symbolEl.__radialRawX;\n  symbolEl.__radialOldRawY = symbolEl.__radialRawY;\n  symbolEl.__radialRawX = targetLayout.rawX;\n  symbolEl.__radialRawY = targetLayout.rawY;\n  group.add(symbolEl);\n  data.setItemGraphicEl(dataIndex, symbolEl);\n  graphic.updateProps(symbolEl, {\n    position: [targetLayout.x, targetLayout.y]\n  }, seriesModel);\n  var symbolPath = symbolEl.getSymbolPath();\n\n  if (seriesScope.layout === 'radial') {\n    var realRoot = virtualRoot.children[0];\n    var rootLayout = realRoot.getLayout();\n    var length = realRoot.children.length;\n    var rad;\n    var isLeft;\n\n    if (targetLayout.x === rootLayout.x && node.isExpand === true) {\n      var center = {};\n      center.x = (realRoot.children[0].getLayout().x + realRoot.children[length - 1].getLayout().x) / 2;\n      center.y = (realRoot.children[0].getLayout().y + realRoot.children[length - 1].getLayout().y) / 2;\n      rad = Math.atan2(center.y - rootLayout.y, center.x - rootLayout.x);\n\n      if (rad < 0) {\n        rad = Math.PI * 2 + rad;\n      }\n\n      isLeft = center.x < rootLayout.x;\n\n      if (isLeft) {\n        rad = rad - Math.PI;\n      }\n    } else {\n      rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x);\n\n      if (rad < 0) {\n        rad = Math.PI * 2 + rad;\n      }\n\n      if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) {\n        isLeft = targetLayout.x < rootLayout.x;\n\n        if (isLeft) {\n          rad = rad - Math.PI;\n        }\n      } else {\n        isLeft = targetLayout.x > rootLayout.x;\n\n        if (!isLeft) {\n          rad = rad - Math.PI;\n        }\n      }\n    }\n\n    var textPosition = isLeft ? 'left' : 'right';\n    var rotate = seriesScope.labelModel.get('rotate');\n    var labelRotateRadian = rotate * (Math.PI / 180);\n    symbolPath.setStyle({\n      textPosition: seriesScope.labelModel.get('position') || textPosition,\n      textRotation: rotate == null ? -rad : labelRotateRadian,\n      textOrigin: 'center',\n      verticalAlign: 'middle'\n    });\n  }\n\n  drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group, seriesScope);\n}\n\nfunction drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group, seriesScope) {\n  var edgeShape = seriesScope.edgeShape;\n  var edge = symbolEl.__edge;\n\n  if (edgeShape === 'curve') {\n    if (node.parentNode && node.parentNode !== virtualRoot) {\n      if (!edge) {\n        edge = symbolEl.__edge = new graphic.BezierCurve({\n          shape: getEdgeShape(seriesScope, sourceOldLayout, sourceOldLayout),\n          style: zrUtil.defaults({\n            opacity: 0,\n            strokeNoScale: true\n          }, seriesScope.lineStyle)\n        });\n      }\n\n      graphic.updateProps(edge, {\n        shape: getEdgeShape(seriesScope, sourceLayout, targetLayout),\n        style: zrUtil.defaults({\n          opacity: 1\n        }, seriesScope.lineStyle)\n      }, seriesModel);\n    }\n  } else if (edgeShape === 'polyline') {\n    if (seriesScope.layout === 'orthogonal') {\n      if (node !== virtualRoot && node.children && node.children.length !== 0 && node.isExpand === true) {\n        var children = node.children;\n        var childPoints = [];\n\n        for (var i = 0; i < children.length; i++) {\n          var childLayout = children[i].getLayout();\n          childPoints.push([childLayout.x, childLayout.y]);\n        }\n\n        if (!edge) {\n          edge = symbolEl.__edge = new TreeShape({\n            shape: {\n              parentPoint: [targetLayout.x, targetLayout.y],\n              childPoints: [[targetLayout.x, targetLayout.y]],\n              orient: seriesScope.orient,\n              forkPosition: seriesScope.edgeForkPosition\n            },\n            style: zrUtil.defaults({\n              opacity: 0,\n              strokeNoScale: true\n            }, seriesScope.lineStyle)\n          });\n        }\n\n        graphic.updateProps(edge, {\n          shape: {\n            parentPoint: [targetLayout.x, targetLayout.y],\n            childPoints: childPoints\n          },\n          style: zrUtil.defaults({\n            opacity: 1\n          }, seriesScope.lineStyle)\n        }, seriesModel);\n      }\n    } else {}\n  }\n\n  group.add(edge);\n}\n\nfunction removeNode(data, dataIndex, symbolEl, group, seriesModel, seriesScope) {\n  var node = data.tree.getNodeByDataIndex(dataIndex);\n  var virtualRoot = data.tree.root;\n  var itemModel = node.getModel();\n  var seriesScope = getTreeNodeStyle(node, itemModel, seriesScope);\n  var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\n  var edgeShape = seriesScope.edgeShape;\n  var sourceLayout;\n\n  while (sourceLayout = source.getLayout(), sourceLayout == null) {\n    source = source.parentNode === virtualRoot ? source : source.parentNode || source;\n  }\n\n  graphic.updateProps(symbolEl, {\n    position: [sourceLayout.x + 1, sourceLayout.y + 1]\n  }, seriesModel, function () {\n    group.remove(symbolEl);\n    data.setItemGraphicEl(dataIndex, null);\n  });\n  symbolEl.fadeOut(null, {\n    keepLabel: true\n  });\n  var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\n  var sourceEdge = sourceSymbolEl.__edge; // 1. when expand the sub tree, delete the children node should delete the edge of\n  // the source at the same time. because the polyline edge shape is only owned by the source.\n  // 2.when the node is the only children of the source, delete the node should delete the edge of\n  // the source at the same time. the same reason as above.\n\n  var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : undefined);\n  var edgeShape = seriesScope.edgeShape;\n\n  if (edge) {\n    if (edgeShape === 'curve') {\n      graphic.updateProps(edge, {\n        shape: getEdgeShape(seriesScope, sourceLayout, sourceLayout),\n        style: {\n          opacity: 0\n        }\n      }, seriesModel, function () {\n        group.remove(edge);\n      });\n    } else if (edgeShape === 'polyline' && seriesScope.layout === 'orthogonal') {\n      graphic.updateProps(edge, {\n        shape: {\n          parentPoint: [sourceLayout.x, sourceLayout.y],\n          childPoints: [[sourceLayout.x, sourceLayout.y]]\n        },\n        style: {\n          opacity: 0\n        }\n      }, seriesModel, function () {\n        group.remove(edge);\n      });\n    }\n  }\n}\n\nfunction getEdgeShape(seriesScope, sourceLayout, targetLayout) {\n  var cpx1;\n  var cpy1;\n  var cpx2;\n  var cpy2;\n  var orient = seriesScope.orient;\n  var x1;\n  var x2;\n  var y1;\n  var y2;\n\n  if (seriesScope.layout === 'radial') {\n    x1 = sourceLayout.rawX;\n    y1 = sourceLayout.rawY;\n    x2 = targetLayout.rawX;\n    y2 = targetLayout.rawY;\n    var radialCoor1 = radialCoordinate(x1, y1);\n    var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * seriesScope.curvature);\n    var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * seriesScope.curvature);\n    var radialCoor4 = radialCoordinate(x2, y2);\n    return {\n      x1: radialCoor1.x,\n      y1: radialCoor1.y,\n      x2: radialCoor4.x,\n      y2: radialCoor4.y,\n      cpx1: radialCoor2.x,\n      cpy1: radialCoor2.y,\n      cpx2: radialCoor3.x,\n      cpy2: radialCoor3.y\n    };\n  } else {\n    x1 = sourceLayout.x;\n    y1 = sourceLayout.y;\n    x2 = targetLayout.x;\n    y2 = targetLayout.y;\n\n    if (orient === 'LR' || orient === 'RL') {\n      cpx1 = x1 + (x2 - x1) * seriesScope.curvature;\n      cpy1 = y1;\n      cpx2 = x2 + (x1 - x2) * seriesScope.curvature;\n      cpy2 = y2;\n    }\n\n    if (orient === 'TB' || orient === 'BT') {\n      cpx1 = x1;\n      cpy1 = y1 + (y2 - y1) * seriesScope.curvature;\n      cpx2 = x2;\n      cpy2 = y2 + (y1 - y2) * seriesScope.curvature;\n    }\n  }\n\n  return {\n    x1: x1,\n    y1: y1,\n    x2: x2,\n    y2: y2,\n    cpx1: cpx1,\n    cpy1: cpy1,\n    cpx2: cpx2,\n    cpy2: cpy2\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1099 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar _roamHelper = __webpack_require__(414);\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerAction({\n  type: 'treeExpandAndCollapse',\n  event: 'treeExpandAndCollapse',\n  update: 'update'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'tree',\n    query: payload\n  }, function (seriesModel) {\n    var dataIndex = payload.dataIndex;\n    var tree = seriesModel.getData().tree;\n    var node = tree.getNodeByDataIndex(dataIndex);\n    node.isExpand = !node.isExpand;\n  });\n});\necharts.registerAction({\n  type: 'treeRoam',\n  event: 'treeRoam',\n  // Here we set 'none' instead of 'update', because roam action\n  // just need to update the transform matrix without having to recalculate\n  // the layout. So don't need to go through the whole update process, such\n  // as 'dataPrcocess', 'coordSystemUpdate', 'layout' and so on.\n  update: 'none'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'tree',\n    query: payload\n  }, function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var res = updateCenterAndZoom(coordSys, payload);\n    seriesModel.setCenter && seriesModel.setCenter(res.center);\n    seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n  });\n});\n\n/***/ }),\n/* 1100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _traversalHelper = __webpack_require__(1101);\n\nvar eachAfter = _traversalHelper.eachAfter;\nvar eachBefore = _traversalHelper.eachBefore;\n\nvar _layoutHelper = __webpack_require__(594);\n\nvar init = _layoutHelper.init;\nvar firstWalk = _layoutHelper.firstWalk;\nvar secondWalk = _layoutHelper.secondWalk;\nvar sep = _layoutHelper.separation;\nvar radialCoordinate = _layoutHelper.radialCoordinate;\nvar getViewRect = _layoutHelper.getViewRect;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel, api) {\n  ecModel.eachSeriesByType('tree', function (seriesModel) {\n    commonLayout(seriesModel, api);\n  });\n}\n\nfunction commonLayout(seriesModel, api) {\n  var layoutInfo = getViewRect(seriesModel, api);\n  seriesModel.layoutInfo = layoutInfo;\n  var layout = seriesModel.get('layout');\n  var width = 0;\n  var height = 0;\n  var separation = null;\n\n  if (layout === 'radial') {\n    width = 2 * Math.PI;\n    height = Math.min(layoutInfo.height, layoutInfo.width) / 2;\n    separation = sep(function (node1, node2) {\n      return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth;\n    });\n  } else {\n    width = layoutInfo.width;\n    height = layoutInfo.height;\n    separation = sep();\n  }\n\n  var virtualRoot = seriesModel.getData().tree.root;\n  var realRoot = virtualRoot.children[0];\n\n  if (realRoot) {\n    init(virtualRoot);\n    eachAfter(realRoot, firstWalk, separation);\n    virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim;\n    eachBefore(realRoot, secondWalk);\n    var left = realRoot;\n    var right = realRoot;\n    var bottom = realRoot;\n    eachBefore(realRoot, function (node) {\n      var x = node.getLayout().x;\n\n      if (x < left.getLayout().x) {\n        left = node;\n      }\n\n      if (x > right.getLayout().x) {\n        right = node;\n      }\n\n      if (node.depth > bottom.depth) {\n        bottom = node;\n      }\n    });\n    var delta = left === right ? 1 : separation(left, right) / 2;\n    var tx = delta - left.getLayout().x;\n    var kx = 0;\n    var ky = 0;\n    var coorX = 0;\n    var coorY = 0;\n\n    if (layout === 'radial') {\n      kx = width / (right.getLayout().x + delta + tx); // here we use (node.depth - 1), bucause the real root's depth is 1\n\n      ky = height / (bottom.depth - 1 || 1);\n      eachBefore(realRoot, function (node) {\n        coorX = (node.getLayout().x + tx) * kx;\n        coorY = (node.depth - 1) * ky;\n        var finalCoor = radialCoordinate(coorX, coorY);\n        node.setLayout({\n          x: finalCoor.x,\n          y: finalCoor.y,\n          rawX: coorX,\n          rawY: coorY\n        }, true);\n      });\n    } else {\n      var orient = seriesModel.getOrient();\n\n      if (orient === 'RL' || orient === 'LR') {\n        ky = height / (right.getLayout().x + delta + tx);\n        kx = width / (bottom.depth - 1 || 1);\n        eachBefore(realRoot, function (node) {\n          coorY = (node.getLayout().x + tx) * ky;\n          coorX = orient === 'LR' ? (node.depth - 1) * kx : width - (node.depth - 1) * kx;\n          node.setLayout({\n            x: coorX,\n            y: coorY\n          }, true);\n        });\n      } else if (orient === 'TB' || orient === 'BT') {\n        kx = width / (right.getLayout().x + delta + tx);\n        ky = height / (bottom.depth - 1 || 1);\n        eachBefore(realRoot, function (node) {\n          coorX = (node.getLayout().x + tx) * kx;\n          coorY = orient === 'TB' ? (node.depth - 1) * ky : height - (node.depth - 1) * ky;\n          node.setLayout({\n            x: coorX,\n            y: coorY\n          }, true);\n        });\n      }\n    }\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1101 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Traverse the tree from bottom to top and do something\n * @param  {module:echarts/data/Tree~TreeNode} root  The real root of the tree\n * @param  {Function} callback\n */\nfunction eachAfter(root, callback, separation) {\n  var nodes = [root];\n  var next = [];\n  var node;\n\n  while (node = nodes.pop()) {\n    // jshint ignore:line\n    next.push(node);\n\n    if (node.isExpand) {\n      var children = node.children;\n\n      if (children.length) {\n        for (var i = 0; i < children.length; i++) {\n          nodes.push(children[i]);\n        }\n      }\n    }\n  }\n\n  while (node = next.pop()) {\n    // jshint ignore:line\n    callback(node, separation);\n  }\n}\n/**\n * Traverse the tree from top to bottom and do something\n * @param  {module:echarts/data/Tree~TreeNode} root  The real root of the tree\n * @param  {Function} callback\n */\n\n\nfunction eachBefore(root, callback) {\n  var nodes = [root];\n  var node;\n\n  while (node = nodes.pop()) {\n    // jshint ignore:line\n    callback(node);\n\n    if (node.isExpand) {\n      var children = node.children;\n\n      if (children.length) {\n        for (var i = children.length - 1; i >= 0; i--) {\n          nodes.push(children[i]);\n        }\n      }\n    }\n  }\n}\n\nexports.eachAfter = eachAfter;\nexports.eachBefore = eachBefore;\n\n/***/ }),\n/* 1102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1103);\n\n__webpack_require__(1104);\n\n__webpack_require__(1107);\n\nvar treemapVisual = __webpack_require__(1108);\n\nvar treemapLayout = __webpack_require__(1109);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(treemapVisual);\necharts.registerLayout(treemapLayout);\n\n/***/ }),\n/* 1103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar SeriesModel = __webpack_require__(75);\n\nvar Tree = __webpack_require__(417);\n\nvar Model = __webpack_require__(67);\n\nvar _format = __webpack_require__(50);\n\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\n\nvar _treeHelper = __webpack_require__(183);\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n  type: 'series.treemap',\n  layoutMode: 'box',\n  dependencies: ['grid', 'polar'],\n  preventUsingHoverLayer: true,\n\n  /**\n   * @type {module:echarts/data/Tree~Node}\n   */\n  _viewRoot: null,\n  defaultOption: {\n    // Disable progressive rendering\n    progressive: 0,\n    // center: ['50%', '50%'],          // not supported in ec3.\n    // size: ['80%', '80%'],            // deprecated, compatible with ec2.\n    left: 'center',\n    top: 'middle',\n    right: null,\n    bottom: null,\n    width: '80%',\n    height: '80%',\n    sort: true,\n    // Can be null or false or true\n    // (order by desc default, asc not supported yet (strange effect))\n    clipWindow: 'origin',\n    // Size of clipped window when zooming. 'origin' or 'fullscreen'\n    squareRatio: 0.5 * (1 + Math.sqrt(5)),\n    // golden ratio\n    leafDepth: null,\n    // Nodes on depth from root are regarded as leaves.\n    // Count from zero (zero represents only view root).\n    drillDownIcon: '▶',\n    // Use html character temporarily because it is complicated\n    // to align specialized icon. ▷▶❒❐▼✚\n    zoomToNodeRatio: 0.32 * 0.32,\n    // Be effective when using zoomToNode. Specify the proportion of the\n    // target node area in the view area.\n    roam: true,\n    // true, false, 'scale' or 'zoom', 'move'.\n    nodeClick: 'zoomToNode',\n    // Leaf node click behaviour: 'zoomToNode', 'link', false.\n    // If leafDepth is set and clicking a node which has children but\n    // be on left depth, the behaviour would be changing root. Otherwise\n    // use behavious defined above.\n    animation: true,\n    animationDurationUpdate: 900,\n    animationEasing: 'quinticInOut',\n    breadcrumb: {\n      show: true,\n      height: 22,\n      left: 'center',\n      top: 'bottom',\n      // right\n      // bottom\n      emptyItemWidth: 25,\n      // Width of empty node.\n      itemStyle: {\n        color: 'rgba(0,0,0,0.7)',\n        //'#5793f3',\n        borderColor: 'rgba(255,255,255,0.7)',\n        borderWidth: 1,\n        shadowColor: 'rgba(150,150,150,1)',\n        shadowBlur: 3,\n        shadowOffsetX: 0,\n        shadowOffsetY: 0,\n        textStyle: {\n          color: '#fff'\n        }\n      },\n      emphasis: {\n        textStyle: {}\n      }\n    },\n    label: {\n      show: true,\n      // Do not use textDistance, for ellipsis rect just the same as treemap node rect.\n      distance: 0,\n      padding: 5,\n      position: 'inside',\n      // Can be [5, '5%'] or position stirng like 'insideTopLeft', ...\n      // formatter: null,\n      color: '#fff',\n      ellipsis: true // align\n      // verticalAlign\n\n    },\n    upperLabel: {\n      // Label when node is parent.\n      show: false,\n      position: [0, '50%'],\n      height: 20,\n      // formatter: null,\n      color: '#fff',\n      ellipsis: true,\n      // align: null,\n      verticalAlign: 'middle'\n    },\n    itemStyle: {\n      color: null,\n      // Can be 'none' if not necessary.\n      colorAlpha: null,\n      // Can be 'none' if not necessary.\n      colorSaturation: null,\n      // Can be 'none' if not necessary.\n      borderWidth: 0,\n      gapWidth: 0,\n      borderColor: '#fff',\n      borderColorSaturation: null // If specified, borderColor will be ineffective, and the\n      // border color is evaluated by color of current node and\n      // borderColorSaturation.\n\n    },\n    emphasis: {\n      upperLabel: {\n        show: true,\n        position: [0, '50%'],\n        color: '#fff',\n        ellipsis: true,\n        verticalAlign: 'middle'\n      }\n    },\n    visualDimension: 0,\n    // Can be 0, 1, 2, 3.\n    visualMin: null,\n    visualMax: null,\n    color: [],\n    // + treemapSeries.color should not be modified. Please only modified\n    // level[n].color (if necessary).\n    // + Specify color list of each level. level[0].color would be global\n    // color list if not specified. (see method `setDefault`).\n    // + But set as a empty array to forbid fetch color from global palette\n    // when using nodeModel.get('color'), otherwise nodes on deep level\n    // will always has color palette set and are not able to inherit color\n    // from parent node.\n    // + TreemapSeries.color can not be set as 'none', otherwise effect\n    // legend color fetching (see seriesColor.js).\n    colorAlpha: null,\n    // Array. Specify color alpha range of each level, like [0.2, 0.8]\n    colorSaturation: null,\n    // Array. Specify color saturation of each level, like [0.2, 0.5]\n    colorMappingBy: 'index',\n    // 'value' or 'index' or 'id'.\n    visibleMin: 10,\n    // If area less than this threshold (unit: pixel^2), node will not\n    // be rendered. Only works when sort is 'asc' or 'desc'.\n    childrenVisibleMin: null,\n    // If area of a node less than this threshold (unit: pixel^2),\n    // grandchildren will not show.\n    // Why grandchildren? If not grandchildren but children,\n    // some siblings show children and some not,\n    // the appearance may be mess and not consistent,\n    levels: [] // Each item: {\n    //     visibleMin, itemStyle, visualDimension, label\n    // }\n    // data: {\n    //      value: [],\n    //      children: [],\n    //      link: 'http://xxx.xxx.xxx',\n    //      target: 'blank' or 'self'\n    // }\n\n  },\n\n  /**\n   * @override\n   */\n  getInitialData: function (option, ecModel) {\n    // Create a virtual root.\n    var root = {\n      name: option.name,\n      children: option.data\n    };\n    completeTreeValue(root);\n    var levels = option.levels || []; // Used in \"visual priority\" in `treemapVisual.js`.\n    // This way is a little tricky, must satisfy the precondition:\n    //   1. There is no `treeNode.getModel('itemStyle.xxx')` used.\n    //   2. The `Model.prototype.getModel()` will not use any clone-like way.\n\n    var designatedVisualItemStyle = this.designatedVisualItemStyle = {};\n    var designatedVisualModel = new Model({\n      itemStyle: designatedVisualItemStyle\n    }, this, ecModel);\n    levels = option.levels = setDefault(levels, ecModel);\n    var levelModels = zrUtil.map(levels || [], function (levelDefine) {\n      return new Model(levelDefine, designatedVisualModel, ecModel);\n    }, this); // Make sure always a new tree is created when setOption,\n    // in TreemapView, we check whether oldTree === newTree\n    // to choose mappings approach among old shapes and new shapes.\n\n    var tree = Tree.createTree(root, this, beforeLink);\n\n    function beforeLink(nodeData) {\n      nodeData.wrapMethod('getItemModel', function (model, idx) {\n        var node = tree.getNodeByDataIndex(idx);\n        var levelModel = levelModels[node.depth]; // If no levelModel, we also need `designatedVisualModel`.\n\n        model.parentModel = levelModel || designatedVisualModel;\n        return model;\n      });\n    }\n\n    return tree.data;\n  },\n  optionUpdated: function () {\n    this.resetViewRoot();\n  },\n\n  /**\n   * @override\n   * @param {number} dataIndex\n   * @param {boolean} [mutipleSeries=false]\n   */\n  formatTooltip: function (dataIndex) {\n    var data = this.getData();\n    var value = this.getRawValue(dataIndex);\n    var formattedValue = zrUtil.isArray(value) ? addCommas(value[0]) : addCommas(value);\n    var name = data.getName(dataIndex);\n    return encodeHTML(name + ': ' + formattedValue);\n  },\n\n  /**\n   * Add tree path to tooltip param\n   *\n   * @override\n   * @param {number} dataIndex\n   * @return {Object}\n   */\n  getDataParams: function (dataIndex) {\n    var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n    var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n    params.treePathInfo = wrapTreePathInfo(node, this);\n    return params;\n  },\n\n  /**\n   * @public\n   * @param {Object} layoutInfo {\n   *                                x: containerGroup x\n   *                                y: containerGroup y\n   *                                width: containerGroup width\n   *                                height: containerGroup height\n   *                            }\n   */\n  setLayoutInfo: function (layoutInfo) {\n    /**\n     * @readOnly\n     * @type {Object}\n     */\n    this.layoutInfo = this.layoutInfo || {};\n    zrUtil.extend(this.layoutInfo, layoutInfo);\n  },\n\n  /**\n   * @param  {string} id\n   * @return {number} index\n   */\n  mapIdToIndex: function (id) {\n    // A feature is implemented:\n    // index is monotone increasing with the sequence of\n    // input id at the first time.\n    // This feature can make sure that each data item and its\n    // mapped color have the same index between data list and\n    // color list at the beginning, which is useful for user\n    // to adjust data-color mapping.\n\n    /**\n     * @private\n     * @type {Object}\n     */\n    var idIndexMap = this._idIndexMap;\n\n    if (!idIndexMap) {\n      idIndexMap = this._idIndexMap = zrUtil.createHashMap();\n      /**\n       * @private\n       * @type {number}\n       */\n\n      this._idIndexMapCount = 0;\n    }\n\n    var index = idIndexMap.get(id);\n\n    if (index == null) {\n      idIndexMap.set(id, index = this._idIndexMapCount++);\n    }\n\n    return index;\n  },\n  getViewRoot: function () {\n    return this._viewRoot;\n  },\n\n  /**\n   * @param {module:echarts/data/Tree~Node} [viewRoot]\n   */\n  resetViewRoot: function (viewRoot) {\n    viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;\n    var root = this.getRawData().tree.root;\n\n    if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {\n      this._viewRoot = root;\n    }\n  }\n});\n/**\n * @param {Object} dataNode\n */\n\n\nfunction completeTreeValue(dataNode) {\n  // Postorder travel tree.\n  // If value of none-leaf node is not set,\n  // calculate it by suming up the value of all children.\n  var sum = 0;\n  zrUtil.each(dataNode.children, function (child) {\n    completeTreeValue(child);\n    var childValue = child.value;\n    zrUtil.isArray(childValue) && (childValue = childValue[0]);\n    sum += childValue;\n  });\n  var thisValue = dataNode.value;\n\n  if (zrUtil.isArray(thisValue)) {\n    thisValue = thisValue[0];\n  }\n\n  if (thisValue == null || isNaN(thisValue)) {\n    thisValue = sum;\n  } // Value should not less than 0.\n\n\n  if (thisValue < 0) {\n    thisValue = 0;\n  }\n\n  zrUtil.isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;\n}\n/**\n * set default to level configuration\n */\n\n\nfunction setDefault(levels, ecModel) {\n  var globalColorList = ecModel.get('color');\n\n  if (!globalColorList) {\n    return;\n  }\n\n  levels = levels || [];\n  var hasColorDefine;\n  zrUtil.each(levels, function (levelDefine) {\n    var model = new Model(levelDefine);\n    var modelColor = model.get('color');\n\n    if (model.get('itemStyle.color') || modelColor && modelColor !== 'none') {\n      hasColorDefine = true;\n    }\n  });\n\n  if (!hasColorDefine) {\n    var level0 = levels[0] || (levels[0] = {});\n    level0.color = globalColorList.slice();\n  }\n\n  return levels;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar DataDiffer = __webpack_require__(180);\n\nvar helper = __webpack_require__(183);\n\nvar Breadcrumb = __webpack_require__(1105);\n\nvar RoamController = __webpack_require__(266);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar matrix = __webpack_require__(89);\n\nvar animationUtil = __webpack_require__(1106);\n\nvar makeStyleMapper = __webpack_require__(212);\n\nvar _format = __webpack_require__(50);\n\nvar windowOpen = _format.windowOpen;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar bind = zrUtil.bind;\nvar Group = graphic.Group;\nvar Rect = graphic.Rect;\nvar each = zrUtil.each;\nvar DRAG_THRESHOLD = 3;\nvar PATH_LABEL_NOAMAL = ['label'];\nvar PATH_LABEL_EMPHASIS = ['emphasis', 'label'];\nvar PATH_UPPERLABEL_NORMAL = ['upperLabel'];\nvar PATH_UPPERLABEL_EMPHASIS = ['emphasis', 'upperLabel'];\nvar Z_BASE = 10; // Should bigger than every z.\n\nvar Z_BG = 1;\nvar Z_CONTENT = 2;\nvar getItemStyleEmphasis = makeStyleMapper([['fill', 'color'], // `borderColor` and `borderWidth` has been occupied,\n// so use `stroke` to indicate the stroke of the rect.\n['stroke', 'strokeColor'], ['lineWidth', 'strokeWidth'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\n\nvar getItemStyleNormal = function (model) {\n  // Normal style props should include emphasis style props.\n  var itemStyle = getItemStyleEmphasis(model); // Clear styles set by emphasis.\n\n  itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null;\n  return itemStyle;\n};\n\nvar _default = echarts.extendChartView({\n  type: 'treemap',\n\n  /**\n   * @override\n   */\n  init: function (o, api) {\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n    this._containerGroup;\n    /**\n     * @private\n     * @type {Object.<string, Array.<module:zrender/container/Group>>}\n     */\n\n    this._storage = createStorage();\n    /**\n     * @private\n     * @type {module:echarts/data/Tree}\n     */\n\n    this._oldTree;\n    /**\n     * @private\n     * @type {module:echarts/chart/treemap/Breadcrumb}\n     */\n\n    this._breadcrumb;\n    /**\n     * @private\n     * @type {module:echarts/component/helper/RoamController}\n     */\n\n    this._controller;\n    /**\n     * 'ready', 'animating'\n     * @private\n     */\n\n    this._state = 'ready';\n  },\n\n  /**\n   * @override\n   */\n  render: function (seriesModel, ecModel, api, payload) {\n    var models = ecModel.findComponents({\n      mainType: 'series',\n      subType: 'treemap',\n      query: payload\n    });\n\n    if (zrUtil.indexOf(models, seriesModel) < 0) {\n      return;\n    }\n\n    this.seriesModel = seriesModel;\n    this.api = api;\n    this.ecModel = ecModel;\n    var types = ['treemapZoomToNode', 'treemapRootToNode'];\n    var targetInfo = helper.retrieveTargetInfo(payload, types, seriesModel);\n    var payloadType = payload && payload.type;\n    var layoutInfo = seriesModel.layoutInfo;\n    var isInit = !this._oldTree;\n    var thisStorage = this._storage; // Mark new root when action is treemapRootToNode.\n\n    var reRoot = payloadType === 'treemapRootToNode' && targetInfo && thisStorage ? {\n      rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],\n      direction: payload.direction\n    } : null;\n\n    var containerGroup = this._giveContainerGroup(layoutInfo);\n\n    var renderResult = this._doRender(containerGroup, seriesModel, reRoot);\n\n    !isInit && (!payloadType || payloadType === 'treemapZoomToNode' || payloadType === 'treemapRootToNode') ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally();\n\n    this._resetController(api);\n\n    this._renderBreadcrumb(seriesModel, api, targetInfo);\n  },\n\n  /**\n   * @private\n   */\n  _giveContainerGroup: function (layoutInfo) {\n    var containerGroup = this._containerGroup;\n\n    if (!containerGroup) {\n      // FIXME\n      // 加一层containerGroup是为了clip，但是现在clip功能并没有实现。\n      containerGroup = this._containerGroup = new Group();\n\n      this._initEvents(containerGroup);\n\n      this.group.add(containerGroup);\n    }\n\n    containerGroup.attr('position', [layoutInfo.x, layoutInfo.y]);\n    return containerGroup;\n  },\n\n  /**\n   * @private\n   */\n  _doRender: function (containerGroup, seriesModel, reRoot) {\n    var thisTree = seriesModel.getData().tree;\n    var oldTree = this._oldTree; // Clear last shape records.\n\n    var lastsForAnimation = createStorage();\n    var thisStorage = createStorage();\n    var oldStorage = this._storage;\n    var willInvisibleEls = [];\n    var doRenderNode = zrUtil.curry(renderNode, seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls); // Notice: when thisTree and oldTree are the same tree (see list.cloneShallow),\n    // the oldTree is actually losted, so we can not find all of the old graphic\n    // elements from tree. So we use this stragegy: make element storage, move\n    // from old storage to new storage, clear old storage.\n\n    dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0); // Process all removing.\n\n    var willDeleteEls = clearStorage(oldStorage);\n    this._oldTree = thisTree;\n    this._storage = thisStorage;\n    return {\n      lastsForAnimation: lastsForAnimation,\n      willDeleteEls: willDeleteEls,\n      renderFinally: renderFinally\n    };\n\n    function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) {\n      // When 'render' is triggered by action,\n      // 'this' and 'old' may be the same tree,\n      // we use rawIndex in that case.\n      if (sameTree) {\n        oldViewChildren = thisViewChildren;\n        each(thisViewChildren, function (child, index) {\n          !child.isRemoved() && processNode(index, index);\n        });\n      } // Diff hierarchically (diff only in each subtree, but not whole).\n      // because, consistency of view is important.\n      else {\n          new DataDiffer(oldViewChildren, thisViewChildren, getKey, getKey).add(processNode).update(processNode).remove(zrUtil.curry(processNode, null)).execute();\n        }\n\n      function getKey(node) {\n        // Identify by name or raw index.\n        return node.getId();\n      }\n\n      function processNode(newIndex, oldIndex) {\n        var thisNode = newIndex != null ? thisViewChildren[newIndex] : null;\n        var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null;\n        var group = doRenderNode(thisNode, oldNode, parentGroup, depth);\n        group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1);\n      }\n    }\n\n    function clearStorage(storage) {\n      var willDeleteEls = createStorage();\n      storage && each(storage, function (store, storageName) {\n        var delEls = willDeleteEls[storageName];\n        each(store, function (el) {\n          el && (delEls.push(el), el.__tmWillDelete = 1);\n        });\n      });\n      return willDeleteEls;\n    }\n\n    function renderFinally() {\n      each(willDeleteEls, function (els) {\n        each(els, function (el) {\n          el.parent && el.parent.remove(el);\n        });\n      });\n      each(willInvisibleEls, function (el) {\n        el.invisible = true; // Setting invisible is for optimizing, so no need to set dirty,\n        // just mark as invisible.\n\n        el.dirty();\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _doAnimation: function (containerGroup, renderResult, seriesModel, reRoot) {\n    if (!seriesModel.get('animation')) {\n      return;\n    }\n\n    var duration = seriesModel.get('animationDurationUpdate');\n    var easing = seriesModel.get('animationEasing');\n    var animationWrap = animationUtil.createWrap(); // Make delete animations.\n\n    each(renderResult.willDeleteEls, function (store, storageName) {\n      each(store, function (el, rawIndex) {\n        if (el.invisible) {\n          return;\n        }\n\n        var parent = el.parent; // Always has parent, and parent is nodeGroup.\n\n        var target;\n\n        if (reRoot && reRoot.direction === 'drillDown') {\n          target = parent === reRoot.rootNodeGroup // This is the content element of view root.\n          // Only `content` will enter this branch, because\n          // `background` and `nodeGroup` will not be deleted.\n          ? {\n            shape: {\n              x: 0,\n              y: 0,\n              width: parent.__tmNodeWidth,\n              height: parent.__tmNodeHeight\n            },\n            style: {\n              opacity: 0\n            } // Others.\n\n          } : {\n            style: {\n              opacity: 0\n            }\n          };\n        } else {\n          var targetX = 0;\n          var targetY = 0;\n\n          if (!parent.__tmWillDelete) {\n            // Let node animate to right-bottom corner, cooperating with fadeout,\n            // which is appropriate for user understanding.\n            // Divided by 2 for reRoot rolling up effect.\n            targetX = parent.__tmNodeWidth / 2;\n            targetY = parent.__tmNodeHeight / 2;\n          }\n\n          target = storageName === 'nodeGroup' ? {\n            position: [targetX, targetY],\n            style: {\n              opacity: 0\n            }\n          } : {\n            shape: {\n              x: targetX,\n              y: targetY,\n              width: 0,\n              height: 0\n            },\n            style: {\n              opacity: 0\n            }\n          };\n        }\n\n        target && animationWrap.add(el, target, duration, easing);\n      });\n    }); // Make other animations\n\n    each(this._storage, function (store, storageName) {\n      each(store, function (el, rawIndex) {\n        var last = renderResult.lastsForAnimation[storageName][rawIndex];\n        var target = {};\n\n        if (!last) {\n          return;\n        }\n\n        if (storageName === 'nodeGroup') {\n          if (last.old) {\n            target.position = el.position.slice();\n            el.attr('position', last.old);\n          }\n        } else {\n          if (last.old) {\n            target.shape = zrUtil.extend({}, el.shape);\n            el.setShape(last.old);\n          }\n\n          if (last.fadein) {\n            el.setStyle('opacity', 0);\n            target.style = {\n              opacity: 1\n            };\n          } // When animation is stopped for succedent animation starting,\n          // el.style.opacity might not be 1\n          else if (el.style.opacity !== 1) {\n              target.style = {\n                opacity: 1\n              };\n            }\n        }\n\n        animationWrap.add(el, target, duration, easing);\n      });\n    }, this);\n    this._state = 'animating';\n    animationWrap.done(bind(function () {\n      this._state = 'ready';\n      renderResult.renderFinally();\n    }, this)).start();\n  },\n\n  /**\n   * @private\n   */\n  _resetController: function (api) {\n    var controller = this._controller; // Init controller.\n\n    if (!controller) {\n      controller = this._controller = new RoamController(api.getZr());\n      controller.enable(this.seriesModel.get('roam'));\n      controller.on('pan', bind(this._onPan, this));\n      controller.on('zoom', bind(this._onZoom, this));\n    }\n\n    var rect = new BoundingRect(0, 0, api.getWidth(), api.getHeight());\n    controller.setPointerChecker(function (e, x, y) {\n      return rect.contain(x, y);\n    });\n  },\n\n  /**\n   * @private\n   */\n  _clearController: function () {\n    var controller = this._controller;\n\n    if (controller) {\n      controller.dispose();\n      controller = null;\n    }\n  },\n\n  /**\n   * @private\n   */\n  _onPan: function (e) {\n    if (this._state !== 'animating' && (Math.abs(e.dx) > DRAG_THRESHOLD || Math.abs(e.dy) > DRAG_THRESHOLD)) {\n      // These param must not be cached.\n      var root = this.seriesModel.getData().tree.root;\n\n      if (!root) {\n        return;\n      }\n\n      var rootLayout = root.getLayout();\n\n      if (!rootLayout) {\n        return;\n      }\n\n      this.api.dispatchAction({\n        type: 'treemapMove',\n        from: this.uid,\n        seriesId: this.seriesModel.id,\n        rootRect: {\n          x: rootLayout.x + e.dx,\n          y: rootLayout.y + e.dy,\n          width: rootLayout.width,\n          height: rootLayout.height\n        }\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _onZoom: function (e) {\n    var mouseX = e.originX;\n    var mouseY = e.originY;\n\n    if (this._state !== 'animating') {\n      // These param must not be cached.\n      var root = this.seriesModel.getData().tree.root;\n\n      if (!root) {\n        return;\n      }\n\n      var rootLayout = root.getLayout();\n\n      if (!rootLayout) {\n        return;\n      }\n\n      var rect = new BoundingRect(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height);\n      var layoutInfo = this.seriesModel.layoutInfo; // Transform mouse coord from global to containerGroup.\n\n      mouseX -= layoutInfo.x;\n      mouseY -= layoutInfo.y; // Scale root bounding rect.\n\n      var m = matrix.create();\n      matrix.translate(m, m, [-mouseX, -mouseY]);\n      matrix.scale(m, m, [e.scale, e.scale]);\n      matrix.translate(m, m, [mouseX, mouseY]);\n      rect.applyTransform(m);\n      this.api.dispatchAction({\n        type: 'treemapRender',\n        from: this.uid,\n        seriesId: this.seriesModel.id,\n        rootRect: {\n          x: rect.x,\n          y: rect.y,\n          width: rect.width,\n          height: rect.height\n        }\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _initEvents: function (containerGroup) {\n    containerGroup.on('click', function (e) {\n      if (this._state !== 'ready') {\n        return;\n      }\n\n      var nodeClick = this.seriesModel.get('nodeClick', true);\n\n      if (!nodeClick) {\n        return;\n      }\n\n      var targetInfo = this.findTarget(e.offsetX, e.offsetY);\n\n      if (!targetInfo) {\n        return;\n      }\n\n      var node = targetInfo.node;\n\n      if (node.getLayout().isLeafRoot) {\n        this._rootToNode(targetInfo);\n      } else {\n        if (nodeClick === 'zoomToNode') {\n          this._zoomToNode(targetInfo);\n        } else if (nodeClick === 'link') {\n          var itemModel = node.hostTree.data.getItemModel(node.dataIndex);\n          var link = itemModel.get('link', true);\n          var linkTarget = itemModel.get('target', true) || 'blank';\n          link && windowOpen(link, linkTarget);\n        }\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _renderBreadcrumb: function (seriesModel, api, targetInfo) {\n    if (!targetInfo) {\n      targetInfo = seriesModel.get('leafDepth', true) != null ? {\n        node: seriesModel.getViewRoot() // FIXME\n        // better way?\n        // Find breadcrumb tail on center of containerGroup.\n\n      } : this.findTarget(api.getWidth() / 2, api.getHeight() / 2);\n\n      if (!targetInfo) {\n        targetInfo = {\n          node: seriesModel.getData().tree.root\n        };\n      }\n    }\n\n    (this._breadcrumb || (this._breadcrumb = new Breadcrumb(this.group))).render(seriesModel, api, targetInfo.node, bind(onSelect, this));\n\n    function onSelect(node) {\n      if (this._state !== 'animating') {\n        helper.aboveViewRoot(seriesModel.getViewRoot(), node) ? this._rootToNode({\n          node: node\n        }) : this._zoomToNode({\n          node: node\n        });\n      }\n    }\n  },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    this._clearController();\n\n    this._containerGroup && this._containerGroup.removeAll();\n    this._storage = createStorage();\n    this._state = 'ready';\n    this._breadcrumb && this._breadcrumb.remove();\n  },\n  dispose: function () {\n    this._clearController();\n  },\n\n  /**\n   * @private\n   */\n  _zoomToNode: function (targetInfo) {\n    this.api.dispatchAction({\n      type: 'treemapZoomToNode',\n      from: this.uid,\n      seriesId: this.seriesModel.id,\n      targetNode: targetInfo.node\n    });\n  },\n\n  /**\n   * @private\n   */\n  _rootToNode: function (targetInfo) {\n    this.api.dispatchAction({\n      type: 'treemapRootToNode',\n      from: this.uid,\n      seriesId: this.seriesModel.id,\n      targetNode: targetInfo.node\n    });\n  },\n\n  /**\n   * @public\n   * @param {number} x Global coord x.\n   * @param {number} y Global coord y.\n   * @return {Object} info If not found, return undefined;\n   * @return {number} info.node Target node.\n   * @return {number} info.offsetX x refer to target node.\n   * @return {number} info.offsetY y refer to target node.\n   */\n  findTarget: function (x, y) {\n    var targetInfo;\n    var viewRoot = this.seriesModel.getViewRoot();\n    viewRoot.eachNode({\n      attr: 'viewChildren',\n      order: 'preorder'\n    }, function (node) {\n      var bgEl = this._storage.background[node.getRawIndex()]; // If invisible, there might be no element.\n\n\n      if (bgEl) {\n        var point = bgEl.transformCoordToLocal(x, y);\n        var shape = bgEl.shape; // For performance consideration, dont use 'getBoundingRect'.\n\n        if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) {\n          targetInfo = {\n            node: node,\n            offsetX: point[0],\n            offsetY: point[1]\n          };\n        } else {\n          return false; // Suppress visit subtree.\n        }\n      }\n    }, this);\n    return targetInfo;\n  }\n});\n/**\n * @inner\n */\n\n\nfunction createStorage() {\n  return {\n    nodeGroup: [],\n    background: [],\n    content: []\n  };\n}\n/**\n * @inner\n * @return Return undefined means do not travel further.\n */\n\n\nfunction renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) {\n  // Whether under viewRoot.\n  if (!thisNode) {\n    // Deleting nodes will be performed finally. This method just find\n    // element from old storage, or create new element, set them to new\n    // storage, and set styles.\n    return;\n  } // -------------------------------------------------------------------\n  // Start of closure variables available in \"Procedures in renderNode\".\n\n\n  var thisLayout = thisNode.getLayout();\n  var data = seriesModel.getData(); // Only for enabling highlight/downplay. Clear firstly.\n  // Because some node will not be rendered.\n\n  data.setItemGraphicEl(thisNode.dataIndex, null);\n\n  if (!thisLayout || !thisLayout.isInView) {\n    return;\n  }\n\n  var thisWidth = thisLayout.width;\n  var thisHeight = thisLayout.height;\n  var borderWidth = thisLayout.borderWidth;\n  var thisInvisible = thisLayout.invisible;\n  var thisRawIndex = thisNode.getRawIndex();\n  var oldRawIndex = oldNode && oldNode.getRawIndex();\n  var thisViewChildren = thisNode.viewChildren;\n  var upperHeight = thisLayout.upperHeight;\n  var isParent = thisViewChildren && thisViewChildren.length;\n  var itemStyleNormalModel = thisNode.getModel('itemStyle');\n  var itemStyleEmphasisModel = thisNode.getModel('emphasis.itemStyle'); // End of closure ariables available in \"Procedures in renderNode\".\n  // -----------------------------------------------------------------\n  // Node group\n\n  var group = giveGraphic('nodeGroup', Group);\n\n  if (!group) {\n    return;\n  }\n\n  parentGroup.add(group); // x,y are not set when el is above view root.\n\n  group.attr('position', [thisLayout.x || 0, thisLayout.y || 0]);\n  group.__tmNodeWidth = thisWidth;\n  group.__tmNodeHeight = thisHeight;\n\n  if (thisLayout.isAboveViewRoot) {\n    return group;\n  }\n\n  var nodeModel = thisNode.getModel(); // Background\n\n  var bg = giveGraphic('background', Rect, depth, Z_BG);\n  bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight); // No children, render content.\n\n  if (isParent) {\n    // Because of the implementation about \"traverse\" in graphic hover style, we\n    // can not set hover listener on the \"group\" of non-leaf node. Otherwise the\n    // hover event from the descendents will be listenered.\n    if (graphic.isHighDownDispatcher(group)) {\n      graphic.setAsHighDownDispatcher(group, false);\n    }\n\n    if (bg) {\n      graphic.setAsHighDownDispatcher(bg, true); // Only for enabling highlight/downplay.\n\n      data.setItemGraphicEl(thisNode.dataIndex, bg);\n    }\n  } else {\n    var content = giveGraphic('content', Rect, depth, Z_CONTENT);\n    content && renderContent(group, content);\n\n    if (bg && graphic.isHighDownDispatcher(bg)) {\n      graphic.setAsHighDownDispatcher(bg, false);\n    }\n\n    graphic.setAsHighDownDispatcher(group, true); // Only for enabling highlight/downplay.\n\n    data.setItemGraphicEl(thisNode.dataIndex, group);\n  }\n\n  return group; // ----------------------------\n  // | Procedures in renderNode |\n  // ----------------------------\n\n  function renderBackground(group, bg, useUpperLabel) {\n    // For tooltip.\n    bg.dataIndex = thisNode.dataIndex;\n    bg.seriesIndex = seriesModel.seriesIndex;\n    bg.setShape({\n      x: 0,\n      y: 0,\n      width: thisWidth,\n      height: thisHeight\n    });\n\n    if (thisInvisible) {\n      // If invisible, do not set visual, otherwise the element will\n      // change immediately before animation. We think it is OK to\n      // remain its origin color when moving out of the view window.\n      processInvisible(bg);\n    } else {\n      bg.invisible = false;\n      var visualBorderColor = thisNode.getVisual('borderColor', true);\n      var emphasisBorderColor = itemStyleEmphasisModel.get('borderColor');\n      var normalStyle = getItemStyleNormal(itemStyleNormalModel);\n      normalStyle.fill = visualBorderColor;\n      var emphasisStyle = getItemStyleEmphasis(itemStyleEmphasisModel);\n      emphasisStyle.fill = emphasisBorderColor;\n\n      if (useUpperLabel) {\n        var upperLabelWidth = thisWidth - 2 * borderWidth;\n        prepareText(normalStyle, emphasisStyle, visualBorderColor, upperLabelWidth, upperHeight, {\n          x: borderWidth,\n          y: 0,\n          width: upperLabelWidth,\n          height: upperHeight\n        });\n      } // For old bg.\n      else {\n          normalStyle.text = emphasisStyle.text = null;\n        }\n\n      bg.setStyle(normalStyle);\n      graphic.setElementHoverStyle(bg, emphasisStyle);\n    }\n\n    group.add(bg);\n  }\n\n  function renderContent(group, content) {\n    // For tooltip.\n    content.dataIndex = thisNode.dataIndex;\n    content.seriesIndex = seriesModel.seriesIndex;\n    var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0);\n    var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0);\n    content.culling = true;\n    content.setShape({\n      x: borderWidth,\n      y: borderWidth,\n      width: contentWidth,\n      height: contentHeight\n    });\n\n    if (thisInvisible) {\n      // If invisible, do not set visual, otherwise the element will\n      // change immediately before animation. We think it is OK to\n      // remain its origin color when moving out of the view window.\n      processInvisible(content);\n    } else {\n      content.invisible = false;\n      var visualColor = thisNode.getVisual('color', true);\n      var normalStyle = getItemStyleNormal(itemStyleNormalModel);\n      normalStyle.fill = visualColor;\n      var emphasisStyle = getItemStyleEmphasis(itemStyleEmphasisModel);\n      prepareText(normalStyle, emphasisStyle, visualColor, contentWidth, contentHeight);\n      content.setStyle(normalStyle);\n      graphic.setElementHoverStyle(content, emphasisStyle);\n    }\n\n    group.add(content);\n  }\n\n  function processInvisible(element) {\n    // Delay invisible setting utill animation finished,\n    // avoid element vanish suddenly before animation.\n    !element.invisible && willInvisibleEls.push(element);\n  }\n\n  function prepareText(normalStyle, emphasisStyle, visualColor, width, height, upperLabelRect) {\n    var defaultText = nodeModel.get('name');\n    var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL);\n    var emphasisLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_EMPHASIS : PATH_LABEL_EMPHASIS);\n    var isShow = normalLabelModel.getShallow('show');\n    graphic.setLabelStyle(normalStyle, emphasisStyle, normalLabelModel, emphasisLabelModel, {\n      defaultText: isShow ? defaultText : null,\n      autoColor: visualColor,\n      isRectText: true,\n      labelFetcher: seriesModel,\n      labelDataIndex: thisNode.dataIndex,\n      labelProp: upperLabelRect ? 'upperLabel' : 'label'\n    });\n    addDrillDownIcon(normalStyle, upperLabelRect, thisLayout);\n    addDrillDownIcon(emphasisStyle, upperLabelRect, thisLayout);\n    upperLabelRect && (normalStyle.textRect = zrUtil.clone(upperLabelRect));\n    normalStyle.truncate = isShow && normalLabelModel.get('ellipsis') ? {\n      outerWidth: width,\n      outerHeight: height,\n      minChar: 2\n    } : null;\n  }\n\n  function addDrillDownIcon(style, upperLabelRect, thisLayout) {\n    var text = style.text;\n\n    if (!upperLabelRect && thisLayout.isLeafRoot && text != null) {\n      var iconChar = seriesModel.get('drillDownIcon', true);\n      style.text = iconChar ? iconChar + ' ' + text : text;\n    }\n  }\n\n  function giveGraphic(storageName, Ctor, depth, z) {\n    var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex];\n    var lasts = lastsForAnimation[storageName];\n\n    if (element) {\n      // Remove from oldStorage\n      oldStorage[storageName][oldRawIndex] = null;\n      prepareAnimationWhenHasOld(lasts, element, storageName);\n    } // If invisible and no old element, do not create new element (for optimizing).\n    else if (!thisInvisible) {\n        element = new Ctor({\n          z: calculateZ(depth, z)\n        });\n        element.__tmDepth = depth;\n        element.__tmStorageName = storageName;\n        prepareAnimationWhenNoOld(lasts, element, storageName);\n      } // Set to thisStorage\n\n\n    return thisStorage[storageName][thisRawIndex] = element;\n  }\n\n  function prepareAnimationWhenHasOld(lasts, element, storageName) {\n    var lastCfg = lasts[thisRawIndex] = {};\n    lastCfg.old = storageName === 'nodeGroup' ? element.position.slice() : zrUtil.extend({}, element.shape);\n  } // If a element is new, we need to find the animation start point carefully,\n  // otherwise it will looks strange when 'zoomToNode'.\n\n\n  function prepareAnimationWhenNoOld(lasts, element, storageName) {\n    var lastCfg = lasts[thisRawIndex] = {};\n    var parentNode = thisNode.parentNode;\n\n    if (parentNode && (!reRoot || reRoot.direction === 'drillDown')) {\n      var parentOldX = 0;\n      var parentOldY = 0; // New nodes appear from right-bottom corner in 'zoomToNode' animation.\n      // For convenience, get old bounding rect from background.\n\n      var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()];\n\n      if (!reRoot && parentOldBg && parentOldBg.old) {\n        parentOldX = parentOldBg.old.width;\n        parentOldY = parentOldBg.old.height;\n      } // When no parent old shape found, its parent is new too,\n      // so we can just use {x:0, y:0}.\n\n\n      lastCfg.old = storageName === 'nodeGroup' ? [0, parentOldY] : {\n        x: parentOldX,\n        y: parentOldY,\n        width: 0,\n        height: 0\n      };\n    } // Fade in, user can be aware that these nodes are new.\n\n\n    lastCfg.fadein = storageName !== 'nodeGroup';\n  }\n} // We can not set all backgroud with the same z, Because the behaviour of\n// drill down and roll up differ background creation sequence from tree\n// hierarchy sequence, which cause that lowser background element overlap\n// upper ones. So we calculate z based on depth.\n// Moreover, we try to shrink down z interval to [0, 1] to avoid that\n// treemap with large z overlaps other components.\n\n\nfunction calculateZ(depth, zInLevel) {\n  var zb = depth * Z_BASE + zInLevel;\n  return (zb - 1) / zb;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar layout = __webpack_require__(49);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _treeHelper = __webpack_require__(183);\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TEXT_PADDING = 8;\nvar ITEM_GAP = 8;\nvar ARRAY_LENGTH = 5;\n\nfunction Breadcrumb(containerGroup) {\n  /**\n   * @private\n   * @type {module:zrender/container/Group}\n   */\n  this.group = new graphic.Group();\n  containerGroup.add(this.group);\n}\n\nBreadcrumb.prototype = {\n  constructor: Breadcrumb,\n  render: function (seriesModel, api, targetNode, onSelect) {\n    var model = seriesModel.getModel('breadcrumb');\n    var thisGroup = this.group;\n    thisGroup.removeAll();\n\n    if (!model.get('show') || !targetNode) {\n      return;\n    }\n\n    var normalStyleModel = model.getModel('itemStyle'); // var emphasisStyleModel = model.getModel('emphasis.itemStyle');\n\n    var textStyleModel = normalStyleModel.getModel('textStyle');\n    var layoutParam = {\n      pos: {\n        left: model.get('left'),\n        right: model.get('right'),\n        top: model.get('top'),\n        bottom: model.get('bottom')\n      },\n      box: {\n        width: api.getWidth(),\n        height: api.getHeight()\n      },\n      emptyItemWidth: model.get('emptyItemWidth'),\n      totalWidth: 0,\n      renderList: []\n    };\n\n    this._prepare(targetNode, layoutParam, textStyleModel);\n\n    this._renderContent(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect);\n\n    layout.positionElement(thisGroup, layoutParam.pos, layoutParam.box);\n  },\n\n  /**\n   * Prepare render list and total width\n   * @private\n   */\n  _prepare: function (targetNode, layoutParam, textStyleModel) {\n    for (var node = targetNode; node; node = node.parentNode) {\n      var text = node.getModel().get('name');\n      var textRect = textStyleModel.getTextRect(text);\n      var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);\n      layoutParam.totalWidth += itemWidth + ITEM_GAP;\n      layoutParam.renderList.push({\n        node: node,\n        text: text,\n        width: itemWidth\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _renderContent: function (seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect) {\n    // Start rendering.\n    var lastX = 0;\n    var emptyItemWidth = layoutParam.emptyItemWidth;\n    var height = seriesModel.get('breadcrumb.height');\n    var availableSize = layout.getAvailableSize(layoutParam.pos, layoutParam.box);\n    var totalWidth = layoutParam.totalWidth;\n    var renderList = layoutParam.renderList;\n\n    for (var i = renderList.length - 1; i >= 0; i--) {\n      var item = renderList[i];\n      var itemNode = item.node;\n      var itemWidth = item.width;\n      var text = item.text; // Hdie text and shorten width if necessary.\n\n      if (totalWidth > availableSize.width) {\n        totalWidth -= itemWidth - emptyItemWidth;\n        itemWidth = emptyItemWidth;\n        text = null;\n      }\n\n      var el = new graphic.Polygon({\n        shape: {\n          points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)\n        },\n        style: zrUtil.defaults(normalStyleModel.getItemStyle(), {\n          lineJoin: 'bevel',\n          text: text,\n          textFill: textStyleModel.getTextColor(),\n          textFont: textStyleModel.getFont()\n        }),\n        z: 10,\n        onclick: zrUtil.curry(onSelect, itemNode)\n      });\n      this.group.add(el);\n      packEventData(el, seriesModel, itemNode);\n      lastX += itemWidth + ITEM_GAP;\n    }\n  },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    this.group.removeAll();\n  }\n};\n\nfunction makeItemPoints(x, y, itemWidth, itemHeight, head, tail) {\n  var points = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]];\n  !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]);\n  !head && points.push([x, y + itemHeight / 2]);\n  return points;\n} // Package custom mouse event.\n\n\nfunction packEventData(el, seriesModel, itemNode) {\n  el.eventData = {\n    componentType: 'series',\n    componentSubType: 'treemap',\n    componentIndex: seriesModel.componentIndex,\n    seriesIndex: seriesModel.componentIndex,\n    seriesName: seriesModel.name,\n    seriesType: 'treemap',\n    selfType: 'breadcrumb',\n    // Distinguish with click event on treemap node.\n    nodeData: {\n      dataIndex: itemNode && itemNode.dataIndex,\n      name: itemNode && itemNode.name\n    },\n    treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)\n  };\n}\n\nvar _default = Breadcrumb;\nmodule.exports = _default;\n\n/***/ }),\n/* 1106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {number} [time=500] Time in ms\n * @param {string} [easing='linear']\n * @param {number} [delay=0]\n * @param {Function} [callback]\n *\n * @example\n *  // Animate position\n *  animation\n *      .createWrap()\n *      .add(el1, {position: [10, 10]})\n *      .add(el2, {shape: {width: 500}, style: {fill: 'red'}}, 400)\n *      .done(function () { // done })\n *      .start('cubicOut');\n */\nfunction createWrap() {\n  var storage = [];\n  var elExistsMap = {};\n  var doneCallback;\n  return {\n    /**\n     * Caution: a el can only be added once, otherwise 'done'\n     * might not be called. This method checks this (by el.id),\n     * suppresses adding and returns false when existing el found.\n     *\n     * @param {modele:zrender/Element} el\n     * @param {Object} target\n     * @param {number} [time=500]\n     * @param {number} [delay=0]\n     * @param {string} [easing='linear']\n     * @return {boolean} Whether adding succeeded.\n     *\n     * @example\n     *     add(el, target, time, delay, easing);\n     *     add(el, target, time, easing);\n     *     add(el, target, time);\n     *     add(el, target);\n     */\n    add: function (el, target, time, delay, easing) {\n      if (zrUtil.isString(delay)) {\n        easing = delay;\n        delay = 0;\n      }\n\n      if (elExistsMap[el.id]) {\n        return false;\n      }\n\n      elExistsMap[el.id] = 1;\n      storage.push({\n        el: el,\n        target: target,\n        time: time,\n        delay: delay,\n        easing: easing\n      });\n      return true;\n    },\n\n    /**\n     * Only execute when animation finished. Will not execute when any\n     * of 'stop' or 'stopAnimation' called.\n     *\n     * @param {Function} callback\n     */\n    done: function (callback) {\n      doneCallback = callback;\n      return this;\n    },\n\n    /**\n     * Will stop exist animation firstly.\n     */\n    start: function () {\n      var count = storage.length;\n\n      for (var i = 0, len = storage.length; i < len; i++) {\n        var item = storage[i];\n        item.el.animateTo(item.target, item.time, item.delay, item.easing, done);\n      }\n\n      return this;\n\n      function done() {\n        count--;\n\n        if (!count) {\n          storage.length = 0;\n          elExistsMap = {};\n          doneCallback && doneCallback();\n        }\n      }\n    }\n  };\n}\n\nexports.createWrap = createWrap;\n\n/***/ }),\n/* 1107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar helper = __webpack_require__(183);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Treemap action\n */\nvar noop = function () {};\n\nvar actionTypes = ['treemapZoomToNode', 'treemapRender', 'treemapMove'];\n\nfor (var i = 0; i < actionTypes.length; i++) {\n  echarts.registerAction({\n    type: actionTypes[i],\n    update: 'updateView'\n  }, noop);\n}\n\necharts.registerAction({\n  type: 'treemapRootToNode',\n  update: 'updateView'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'treemap',\n    query: payload\n  }, handleRootToNode);\n\n  function handleRootToNode(model, index) {\n    var types = ['treemapZoomToNode', 'treemapRootToNode'];\n    var targetInfo = helper.retrieveTargetInfo(payload, types, model);\n\n    if (targetInfo) {\n      var originViewRoot = model.getViewRoot();\n\n      if (originViewRoot) {\n        payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown';\n      }\n\n      model.resetViewRoot(targetInfo.node);\n    }\n  }\n});\n\n/***/ }),\n/* 1108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar VisualMapping = __webpack_require__(184);\n\nvar zrColor = __webpack_require__(130);\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar isArray = zrUtil.isArray;\nvar ITEM_STYLE_NORMAL = 'itemStyle';\nvar _default = {\n  seriesType: 'treemap',\n  reset: function (seriesModel, ecModel, api, payload) {\n    var tree = seriesModel.getData().tree;\n    var root = tree.root;\n\n    if (root.isRemoved()) {\n      return;\n    }\n\n    travelTree(root, // Visual should calculate from tree root but not view root.\n    {}, seriesModel.getViewRoot().getAncestors(), seriesModel);\n  }\n};\n\nfunction travelTree(node, designatedVisual, viewRootAncestors, seriesModel) {\n  var nodeModel = node.getModel();\n  var nodeLayout = node.getLayout(); // Optimize\n\n  if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {\n    return;\n  }\n\n  var nodeItemStyleModel = node.getModel(ITEM_STYLE_NORMAL);\n  var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel); // calculate border color\n\n  var borderColor = nodeItemStyleModel.get('borderColor');\n  var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation');\n  var thisNodeColor;\n\n  if (borderColorSaturation != null) {\n    // For performance, do not always execute 'calculateColor'.\n    thisNodeColor = calculateColor(visuals, node);\n    borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor);\n  }\n\n  node.setVisual('borderColor', borderColor);\n  var viewChildren = node.viewChildren;\n\n  if (!viewChildren || !viewChildren.length) {\n    thisNodeColor = calculateColor(visuals, node); // Apply visual to this node.\n\n    node.setVisual('color', thisNodeColor);\n  } else {\n    var mapping = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren); // Designate visual to children.\n\n    zrUtil.each(viewChildren, function (child, index) {\n      // If higher than viewRoot, only ancestors of viewRoot is needed to visit.\n      if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) {\n        var childVisual = mapVisual(nodeModel, visuals, child, index, mapping, seriesModel);\n        travelTree(child, childVisual, viewRootAncestors, seriesModel);\n      }\n    });\n  }\n}\n\nfunction buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {\n  var visuals = zrUtil.extend({}, designatedVisual);\n  var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle;\n  zrUtil.each(['color', 'colorAlpha', 'colorSaturation'], function (visualName) {\n    // Priority: thisNode > thisLevel > parentNodeDesignated > seriesModel\n    designatedVisualItemStyle[visualName] = designatedVisual[visualName];\n    var val = nodeItemStyleModel.get(visualName);\n    designatedVisualItemStyle[visualName] = null;\n    val != null && (visuals[visualName] = val);\n  });\n  return visuals;\n}\n\nfunction calculateColor(visuals) {\n  var color = getValueVisualDefine(visuals, 'color');\n\n  if (color) {\n    var colorAlpha = getValueVisualDefine(visuals, 'colorAlpha');\n    var colorSaturation = getValueVisualDefine(visuals, 'colorSaturation');\n\n    if (colorSaturation) {\n      color = zrColor.modifyHSL(color, null, null, colorSaturation);\n    }\n\n    if (colorAlpha) {\n      color = zrColor.modifyAlpha(color, colorAlpha);\n    }\n\n    return color;\n  }\n}\n\nfunction calculateBorderColor(borderColorSaturation, thisNodeColor) {\n  return thisNodeColor != null ? zrColor.modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null;\n}\n\nfunction getValueVisualDefine(visuals, name) {\n  var value = visuals[name];\n\n  if (value != null && value !== 'none') {\n    return value;\n  }\n}\n\nfunction buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) {\n  if (!viewChildren || !viewChildren.length) {\n    return;\n  }\n\n  var rangeVisual = getRangeVisual(nodeModel, 'color') || visuals.color != null && visuals.color !== 'none' && (getRangeVisual(nodeModel, 'colorAlpha') || getRangeVisual(nodeModel, 'colorSaturation'));\n\n  if (!rangeVisual) {\n    return;\n  }\n\n  var visualMin = nodeModel.get('visualMin');\n  var visualMax = nodeModel.get('visualMax');\n  var dataExtent = nodeLayout.dataExtent.slice();\n  visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin);\n  visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax);\n  var colorMappingBy = nodeModel.get('colorMappingBy');\n  var opt = {\n    type: rangeVisual.name,\n    dataExtent: dataExtent,\n    visual: rangeVisual.range\n  };\n\n  if (opt.type === 'color' && (colorMappingBy === 'index' || colorMappingBy === 'id')) {\n    opt.mappingMethod = 'category';\n    opt.loop = true; // categories is ordinal, so do not set opt.categories.\n  } else {\n    opt.mappingMethod = 'linear';\n  }\n\n  var mapping = new VisualMapping(opt);\n  mapping.__drColorMappingBy = colorMappingBy;\n  return mapping;\n} // Notice: If we dont have the attribute 'colorRange', but only use\n// attribute 'color' to represent both concepts of 'colorRange' and 'color',\n// (It means 'colorRange' when 'color' is Array, means 'color' when not array),\n// this problem will be encountered:\n// If a level-1 node dont have children, and its siblings has children,\n// and colorRange is set on level-1, then the node can not be colored.\n// So we separate 'colorRange' and 'color' to different attributes.\n\n\nfunction getRangeVisual(nodeModel, name) {\n  // 'colorRange', 'colorARange', 'colorSRange'.\n  // If not exsits on this node, fetch from levels and series.\n  var range = nodeModel.get(name);\n  return isArray(range) && range.length ? {\n    name: name,\n    range: range\n  } : null;\n}\n\nfunction mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) {\n  var childVisuals = zrUtil.extend({}, visuals);\n\n  if (mapping) {\n    var mappingType = mapping.type;\n    var colorMappingBy = mappingType === 'color' && mapping.__drColorMappingBy;\n    var value = colorMappingBy === 'index' ? index : colorMappingBy === 'id' ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get('visualDimension'));\n    childVisuals[mappingType] = mapping.mapValueToVisual(value);\n  }\n\n  return childVisuals;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\nvar MAX_SAFE_INTEGER = _number.MAX_SAFE_INTEGER;\n\nvar layout = __webpack_require__(49);\n\nvar helper = __webpack_require__(183);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The treemap layout implementation was originally copied from\n* \"d3.js\" with some modifications made for this project.\n* (See more details in the comment of the method \"squarify\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* </licenses/LICENSE-d3>).\n*/\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar retrieveValue = zrUtil.retrieve;\nvar each = zrUtil.each;\nvar PATH_BORDER_WIDTH = ['itemStyle', 'borderWidth'];\nvar PATH_GAP_WIDTH = ['itemStyle', 'gapWidth'];\nvar PATH_UPPER_LABEL_SHOW = ['upperLabel', 'show'];\nvar PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'height'];\n/**\n * @public\n */\n\nvar _default = {\n  seriesType: 'treemap',\n  reset: function (seriesModel, ecModel, api, payload) {\n    // Layout result in each node:\n    // {x, y, width, height, area, borderWidth}\n    var ecWidth = api.getWidth();\n    var ecHeight = api.getHeight();\n    var seriesOption = seriesModel.option;\n    var layoutInfo = layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n    var size = seriesOption.size || []; // Compatible with ec2.\n\n    var containerWidth = parsePercent(retrieveValue(layoutInfo.width, size[0]), ecWidth);\n    var containerHeight = parsePercent(retrieveValue(layoutInfo.height, size[1]), ecHeight); // Fetch payload info.\n\n    var payloadType = payload && payload.type;\n    var types = ['treemapZoomToNode', 'treemapRootToNode'];\n    var targetInfo = helper.retrieveTargetInfo(payload, types, seriesModel);\n    var rootRect = payloadType === 'treemapRender' || payloadType === 'treemapMove' ? payload.rootRect : null;\n    var viewRoot = seriesModel.getViewRoot();\n    var viewAbovePath = helper.getPathToRoot(viewRoot);\n\n    if (payloadType !== 'treemapMove') {\n      var rootSize = payloadType === 'treemapZoomToNode' ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight];\n      var sort = seriesOption.sort;\n\n      if (sort && sort !== 'asc' && sort !== 'desc') {\n        sort = 'desc';\n      }\n\n      var options = {\n        squareRatio: seriesOption.squareRatio,\n        sort: sort,\n        leafDepth: seriesOption.leafDepth\n      }; // layout should be cleared because using updateView but not update.\n\n      viewRoot.hostTree.clearLayouts(); // TODO\n      // optimize: if out of view clip, do not layout.\n      // But take care that if do not render node out of view clip,\n      // how to calculate start po\n\n      var viewRootLayout = {\n        x: 0,\n        y: 0,\n        width: rootSize[0],\n        height: rootSize[1],\n        area: rootSize[0] * rootSize[1]\n      };\n      viewRoot.setLayout(viewRootLayout);\n      squarify(viewRoot, options, false, 0); // Supplement layout.\n\n      var viewRootLayout = viewRoot.getLayout();\n      each(viewAbovePath, function (node, index) {\n        var childValue = (viewAbovePath[index + 1] || viewRoot).getValue();\n        node.setLayout(zrUtil.extend({\n          dataExtent: [childValue, childValue],\n          borderWidth: 0,\n          upperHeight: 0\n        }, viewRootLayout));\n      });\n    }\n\n    var treeRoot = seriesModel.getData().tree.root;\n    treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true);\n    seriesModel.setLayoutInfo(layoutInfo); // FIXME\n    // 现在没有clip功能，暂时取ec高宽。\n\n    prunning(treeRoot, // Transform to base element coordinate system.\n    new BoundingRect(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), viewAbovePath, viewRoot, 0);\n  }\n};\n/**\n * Layout treemap with squarify algorithm.\n * The original presentation of this algorithm\n * was made by Mark Bruls, Kees Huizing, and Jarke J. van Wijk\n * <https://graphics.ethz.ch/teaching/scivis_common/Literature/squarifiedTreeMaps.pdf>.\n * The implementation of this algorithm was originally copied from \"d3.js\"\n * <https://github.com/d3/d3/blob/9cc9a875e636a1dcf36cc1e07bdf77e1ad6e2c74/src/layout/treemap.js>\n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * @protected\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {Object} options\n * @param {string} options.sort 'asc' or 'desc'\n * @param {number} options.squareRatio\n * @param {boolean} hideChildren\n * @param {number} depth\n */\n\nfunction squarify(node, options, hideChildren, depth) {\n  var width;\n  var height;\n\n  if (node.isRemoved()) {\n    return;\n  }\n\n  var thisLayout = node.getLayout();\n  width = thisLayout.width;\n  height = thisLayout.height; // Considering border and gap\n\n  var nodeModel = node.getModel();\n  var borderWidth = nodeModel.get(PATH_BORDER_WIDTH);\n  var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2;\n  var upperLabelHeight = getUpperLabelHeight(nodeModel);\n  var upperHeight = Math.max(borderWidth, upperLabelHeight);\n  var layoutOffset = borderWidth - halfGapWidth;\n  var layoutOffsetUpper = upperHeight - halfGapWidth;\n  var nodeModel = node.getModel();\n  node.setLayout({\n    borderWidth: borderWidth,\n    upperHeight: upperHeight,\n    upperLabelHeight: upperLabelHeight\n  }, true);\n  width = mathMax(width - 2 * layoutOffset, 0);\n  height = mathMax(height - layoutOffset - layoutOffsetUpper, 0);\n  var totalArea = width * height;\n  var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth);\n\n  if (!viewChildren.length) {\n    return;\n  }\n\n  var rect = {\n    x: layoutOffset,\n    y: layoutOffsetUpper,\n    width: width,\n    height: height\n  };\n  var rowFixedLength = mathMin(width, height);\n  var best = Infinity; // the best row score so far\n\n  var row = [];\n  row.area = 0;\n\n  for (var i = 0, len = viewChildren.length; i < len;) {\n    var child = viewChildren[i];\n    row.push(child);\n    row.area += child.getLayout().area;\n    var score = worst(row, rowFixedLength, options.squareRatio); // continue with this orientation\n\n    if (score <= best) {\n      i++;\n      best = score;\n    } // abort, and try a different orientation\n    else {\n        row.area -= row.pop().getLayout().area;\n        position(row, rowFixedLength, rect, halfGapWidth, false);\n        rowFixedLength = mathMin(rect.width, rect.height);\n        row.length = row.area = 0;\n        best = Infinity;\n      }\n  }\n\n  if (row.length) {\n    position(row, rowFixedLength, rect, halfGapWidth, true);\n  }\n\n  if (!hideChildren) {\n    var childrenVisibleMin = nodeModel.get('childrenVisibleMin');\n\n    if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {\n      hideChildren = true;\n    }\n  }\n\n  for (var i = 0, len = viewChildren.length; i < len; i++) {\n    squarify(viewChildren[i], options, hideChildren, depth + 1);\n  }\n}\n/**\n * Set area to each child, and calculate data extent for visual coding.\n */\n\n\nfunction initChildren(node, nodeModel, totalArea, options, hideChildren, depth) {\n  var viewChildren = node.children || [];\n  var orderBy = options.sort;\n  orderBy !== 'asc' && orderBy !== 'desc' && (orderBy = null);\n  var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth; // leafDepth has higher priority.\n\n  if (hideChildren && !overLeafDepth) {\n    return node.viewChildren = [];\n  } // Sort children, order by desc.\n\n\n  viewChildren = zrUtil.filter(viewChildren, function (child) {\n    return !child.isRemoved();\n  });\n  sort(viewChildren, orderBy);\n  var info = statistic(nodeModel, viewChildren, orderBy);\n\n  if (info.sum === 0) {\n    return node.viewChildren = [];\n  }\n\n  info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren);\n\n  if (info.sum === 0) {\n    return node.viewChildren = [];\n  } // Set area to each child.\n\n\n  for (var i = 0, len = viewChildren.length; i < len; i++) {\n    var area = viewChildren[i].getValue() / info.sum * totalArea; // Do not use setLayout({...}, true), because it is needed to clear last layout.\n\n    viewChildren[i].setLayout({\n      area: area\n    });\n  }\n\n  if (overLeafDepth) {\n    viewChildren.length && node.setLayout({\n      isLeafRoot: true\n    }, true);\n    viewChildren.length = 0;\n  }\n\n  node.viewChildren = viewChildren;\n  node.setLayout({\n    dataExtent: info.dataExtent\n  }, true);\n  return viewChildren;\n}\n/**\n * Consider 'visibleMin'. Modify viewChildren and get new sum.\n */\n\n\nfunction filterByThreshold(nodeModel, totalArea, sum, orderBy, orderedChildren) {\n  // visibleMin is not supported yet when no option.sort.\n  if (!orderBy) {\n    return sum;\n  }\n\n  var visibleMin = nodeModel.get('visibleMin');\n  var len = orderedChildren.length;\n  var deletePoint = len; // Always travel from little value to big value.\n\n  for (var i = len - 1; i >= 0; i--) {\n    var value = orderedChildren[orderBy === 'asc' ? len - i - 1 : i].getValue();\n\n    if (value / sum * totalArea < visibleMin) {\n      deletePoint = i;\n      sum -= value;\n    }\n  }\n\n  orderBy === 'asc' ? orderedChildren.splice(0, len - deletePoint) : orderedChildren.splice(deletePoint, len - deletePoint);\n  return sum;\n}\n/**\n * Sort\n */\n\n\nfunction sort(viewChildren, orderBy) {\n  if (orderBy) {\n    viewChildren.sort(function (a, b) {\n      var diff = orderBy === 'asc' ? a.getValue() - b.getValue() : b.getValue() - a.getValue();\n      return diff === 0 ? orderBy === 'asc' ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff;\n    });\n  }\n\n  return viewChildren;\n}\n/**\n * Statistic\n */\n\n\nfunction statistic(nodeModel, children, orderBy) {\n  // Calculate sum.\n  var sum = 0;\n\n  for (var i = 0, len = children.length; i < len; i++) {\n    sum += children[i].getValue();\n  } // Statistic data extent for latter visual coding.\n  // Notice: data extent should be calculate based on raw children\n  // but not filtered view children, otherwise visual mapping will not\n  // be stable when zoom (where children is filtered by visibleMin).\n\n\n  var dimension = nodeModel.get('visualDimension');\n  var dataExtent; // The same as area dimension.\n\n  if (!children || !children.length) {\n    dataExtent = [NaN, NaN];\n  } else if (dimension === 'value' && orderBy) {\n    dataExtent = [children[children.length - 1].getValue(), children[0].getValue()];\n    orderBy === 'asc' && dataExtent.reverse();\n  } // Other dimension.\n  else {\n      var dataExtent = [Infinity, -Infinity];\n      each(children, function (child) {\n        var value = child.getValue(dimension);\n        value < dataExtent[0] && (dataExtent[0] = value);\n        value > dataExtent[1] && (dataExtent[1] = value);\n      });\n    }\n\n  return {\n    sum: sum,\n    dataExtent: dataExtent\n  };\n}\n/**\n * Computes the score for the specified row,\n * as the worst aspect ratio.\n */\n\n\nfunction worst(row, rowFixedLength, ratio) {\n  var areaMax = 0;\n  var areaMin = Infinity;\n\n  for (var i = 0, area, len = row.length; i < len; i++) {\n    area = row[i].getLayout().area;\n\n    if (area) {\n      area < areaMin && (areaMin = area);\n      area > areaMax && (areaMax = area);\n    }\n  }\n\n  var squareArea = row.area * row.area;\n  var f = rowFixedLength * rowFixedLength * ratio;\n  return squareArea ? mathMax(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity;\n}\n/**\n * Positions the specified row of nodes. Modifies `rect`.\n */\n\n\nfunction position(row, rowFixedLength, rect, halfGapWidth, flush) {\n  // When rowFixedLength === rect.width,\n  // it is horizontal subdivision,\n  // rowFixedLength is the width of the subdivision,\n  // rowOtherLength is the height of the subdivision,\n  // and nodes will be positioned from left to right.\n  // wh[idx0WhenH] means: when horizontal,\n  //      wh[idx0WhenH] => wh[0] => 'width'.\n  //      xy[idx1WhenH] => xy[1] => 'y'.\n  var idx0WhenH = rowFixedLength === rect.width ? 0 : 1;\n  var idx1WhenH = 1 - idx0WhenH;\n  var xy = ['x', 'y'];\n  var wh = ['width', 'height'];\n  var last = rect[xy[idx0WhenH]];\n  var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0;\n\n  if (flush || rowOtherLength > rect[wh[idx1WhenH]]) {\n    rowOtherLength = rect[wh[idx1WhenH]]; // over+underflow\n  }\n\n  for (var i = 0, rowLen = row.length; i < rowLen; i++) {\n    var node = row[i];\n    var nodeLayout = {};\n    var step = rowOtherLength ? node.getLayout().area / rowOtherLength : 0;\n    var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax(rowOtherLength - 2 * halfGapWidth, 0); // We use Math.max/min to avoid negative width/height when considering gap width.\n\n    var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last;\n    var modWH = i === rowLen - 1 || remain < step ? remain : step;\n    var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax(modWH - 2 * halfGapWidth, 0);\n    nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin(halfGapWidth, wh1 / 2);\n    nodeLayout[xy[idx0WhenH]] = last + mathMin(halfGapWidth, wh0 / 2);\n    last += modWH;\n    node.setLayout(nodeLayout, true);\n  }\n\n  rect[xy[idx1WhenH]] += rowOtherLength;\n  rect[wh[idx1WhenH]] -= rowOtherLength;\n} // Return [containerWidth, containerHeight] as default.\n\n\nfunction estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {\n  // If targetInfo.node exists, we zoom to the node,\n  // so estimate whold width and heigth by target node.\n  var currNode = (targetInfo || {}).node;\n  var defaultSize = [containerWidth, containerHeight];\n\n  if (!currNode || currNode === viewRoot) {\n    return defaultSize;\n  }\n\n  var parent;\n  var viewArea = containerWidth * containerHeight;\n  var area = viewArea * seriesModel.option.zoomToNodeRatio;\n\n  while (parent = currNode.parentNode) {\n    // jshint ignore:line\n    var sum = 0;\n    var siblings = parent.children;\n\n    for (var i = 0, len = siblings.length; i < len; i++) {\n      sum += siblings[i].getValue();\n    }\n\n    var currNodeValue = currNode.getValue();\n\n    if (currNodeValue === 0) {\n      return defaultSize;\n    }\n\n    area *= sum / currNodeValue; // Considering border, suppose aspect ratio is 1.\n\n    var parentModel = parent.getModel();\n    var borderWidth = parentModel.get(PATH_BORDER_WIDTH);\n    var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel, borderWidth));\n    area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5);\n    area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER);\n    currNode = parent;\n  }\n\n  area < viewArea && (area = viewArea);\n  var scale = Math.pow(area / viewArea, 0.5);\n  return [containerWidth * scale, containerHeight * scale];\n} // Root postion base on coord of containerGroup\n\n\nfunction calculateRootPosition(layoutInfo, rootRect, targetInfo) {\n  if (rootRect) {\n    return {\n      x: rootRect.x,\n      y: rootRect.y\n    };\n  }\n\n  var defaultPosition = {\n    x: 0,\n    y: 0\n  };\n\n  if (!targetInfo) {\n    return defaultPosition;\n  } // If targetInfo is fetched by 'retrieveTargetInfo',\n  // old tree and new tree are the same tree,\n  // so the node still exists and we can visit it.\n\n\n  var targetNode = targetInfo.node;\n  var layout = targetNode.getLayout();\n\n  if (!layout) {\n    return defaultPosition;\n  } // Transform coord from local to container.\n\n\n  var targetCenter = [layout.width / 2, layout.height / 2];\n  var node = targetNode;\n\n  while (node) {\n    var nodeLayout = node.getLayout();\n    targetCenter[0] += nodeLayout.x;\n    targetCenter[1] += nodeLayout.y;\n    node = node.parentNode;\n  }\n\n  return {\n    x: layoutInfo.width / 2 - targetCenter[0],\n    y: layoutInfo.height / 2 - targetCenter[1]\n  };\n} // Mark nodes visible for prunning when visual coding and rendering.\n// Prunning depends on layout and root position, so we have to do it after layout.\n\n\nfunction prunning(node, clipRect, viewAbovePath, viewRoot, depth) {\n  var nodeLayout = node.getLayout();\n  var nodeInViewAbovePath = viewAbovePath[depth];\n  var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node;\n\n  if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) {\n    return;\n  }\n\n  node.setLayout({\n    // isInView means: viewRoot sub tree + viewAbovePath\n    isInView: true,\n    // invisible only means: outside view clip so that the node can not\n    // see but still layout for animation preparation but not render.\n    invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),\n    isAboveViewRoot: isAboveViewRoot\n  }, true); // Transform to child coordinate.\n\n  var childClipRect = new BoundingRect(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height);\n  each(node.viewChildren || [], function (child) {\n    prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1);\n  });\n}\n\nfunction getUpperLabelHeight(model) {\n  return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1111);\n\n__webpack_require__(1113);\n\n__webpack_require__(1116);\n\nvar categoryFilter = __webpack_require__(1117);\n\nvar visualSymbol = __webpack_require__(181);\n\nvar categoryVisual = __webpack_require__(1118);\n\nvar edgeVisual = __webpack_require__(1119);\n\nvar simpleLayout = __webpack_require__(1120);\n\nvar circularLayout = __webpack_require__(1121);\n\nvar forceLayout = __webpack_require__(1122);\n\nvar createView = __webpack_require__(1124);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerProcessor(categoryFilter);\necharts.registerVisual(visualSymbol('graph', 'circle', null));\necharts.registerVisual(categoryVisual);\necharts.registerVisual(edgeVisual);\necharts.registerLayout(simpleLayout);\necharts.registerLayout(echarts.PRIORITY.VISUAL.POST_CHART_LAYOUT, circularLayout);\necharts.registerLayout(forceLayout); // Graph view coordinate system\n\necharts.registerCoordinateSystem('graphView', {\n  create: createView\n});\n\n/***/ }),\n/* 1111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar List = __webpack_require__(116);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _model = __webpack_require__(31);\n\nvar defaultEmphasis = _model.defaultEmphasis;\n\nvar Model = __webpack_require__(67);\n\nvar _format = __webpack_require__(50);\n\nvar encodeHTML = _format.encodeHTML;\n\nvar createGraphFromNodeEdge = __webpack_require__(595);\n\nvar LegendVisualProvider = __webpack_require__(264);\n\nvar _multipleGraphEdgeHelper = __webpack_require__(338);\n\nvar initCurvenessList = _multipleGraphEdgeHelper.initCurvenessList;\nvar createEdgeMapForCurveness = _multipleGraphEdgeHelper.createEdgeMapForCurveness;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar GraphSeries = echarts.extendSeriesModel({\n  type: 'series.graph',\n  init: function (option) {\n    GraphSeries.superApply(this, 'init', arguments);\n    var self = this;\n\n    function getCategoriesData() {\n      return self._categoriesData;\n    } // Provide data for legend select\n\n\n    this.legendVisualProvider = new LegendVisualProvider(getCategoriesData, getCategoriesData);\n    this.fillDataTextStyle(option.edges || option.links);\n\n    this._updateCategoriesData();\n  },\n  mergeOption: function (option) {\n    GraphSeries.superApply(this, 'mergeOption', arguments);\n    this.fillDataTextStyle(option.edges || option.links);\n\n    this._updateCategoriesData();\n  },\n  mergeDefaultAndTheme: function (option) {\n    GraphSeries.superApply(this, 'mergeDefaultAndTheme', arguments);\n    defaultEmphasis(option, ['edgeLabel'], ['show']);\n  },\n  getInitialData: function (option, ecModel) {\n    var edges = option.edges || option.links || [];\n    var nodes = option.data || option.nodes || [];\n    var self = this;\n\n    if (nodes && edges) {\n      // auto curveness\n      initCurvenessList(this);\n      var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink);\n      zrUtil.each(graph.edges, function (edge) {\n        createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex);\n      }, this);\n      return graph.data;\n    }\n\n    function beforeLink(nodeData, edgeData) {\n      // Overwrite nodeData.getItemModel to\n      nodeData.wrapMethod('getItemModel', function (model) {\n        var categoriesModels = self._categoriesModels;\n        var categoryIdx = model.getShallow('category');\n        var categoryModel = categoriesModels[categoryIdx];\n\n        if (categoryModel) {\n          categoryModel.parentModel = model.parentModel;\n          model.parentModel = categoryModel;\n        }\n\n        return model;\n      });\n      var edgeLabelModel = self.getModel('edgeLabel'); // For option `edgeLabel` can be found by label.xxx.xxx on item mode.\n\n      var fakeSeriesModel = new Model({\n        label: edgeLabelModel.option\n      }, edgeLabelModel.parentModel, ecModel);\n      var emphasisEdgeLabelModel = self.getModel('emphasis.edgeLabel');\n      var emphasisFakeSeriesModel = new Model({\n        emphasis: {\n          label: emphasisEdgeLabelModel.option\n        }\n      }, emphasisEdgeLabelModel.parentModel, ecModel);\n      edgeData.wrapMethod('getItemModel', function (model) {\n        model.customizeGetParent(edgeGetParent);\n        return model;\n      });\n\n      function edgeGetParent(path) {\n        path = this.parsePath(path);\n        return path && path[0] === 'label' ? fakeSeriesModel : path && path[0] === 'emphasis' && path[1] === 'label' ? emphasisFakeSeriesModel : this.parentModel;\n      }\n    }\n  },\n\n  /**\n   * @return {module:echarts/data/Graph}\n   */\n  getGraph: function () {\n    return this.getData().graph;\n  },\n\n  /**\n   * @return {module:echarts/data/List}\n   */\n  getEdgeData: function () {\n    return this.getGraph().edgeData;\n  },\n\n  /**\n   * @return {module:echarts/data/List}\n   */\n  getCategoriesData: function () {\n    return this._categoriesData;\n  },\n\n  /**\n   * @override\n   */\n  formatTooltip: function (dataIndex, multipleSeries, dataType) {\n    if (dataType === 'edge') {\n      var nodeData = this.getData();\n      var params = this.getDataParams(dataIndex, dataType);\n      var edge = nodeData.graph.getEdgeByIndex(dataIndex);\n      var sourceName = nodeData.getName(edge.node1.dataIndex);\n      var targetName = nodeData.getName(edge.node2.dataIndex);\n      var html = [];\n      sourceName != null && html.push(sourceName);\n      targetName != null && html.push(targetName);\n      html = encodeHTML(html.join(' > '));\n\n      if (params.value) {\n        html += ' : ' + encodeHTML(params.value);\n      }\n\n      return html;\n    } else {\n      // dataType === 'node' or empty\n      return GraphSeries.superApply(this, 'formatTooltip', arguments);\n    }\n  },\n  _updateCategoriesData: function () {\n    var categories = zrUtil.map(this.option.categories || [], function (category) {\n      // Data must has value\n      return category.value != null ? category : zrUtil.extend({\n        value: 0\n      }, category);\n    });\n    var categoriesData = new List(['value'], this);\n    categoriesData.initData(categories);\n    this._categoriesData = categoriesData;\n    this._categoriesModels = categoriesData.mapArray(function (idx) {\n      return categoriesData.getItemModel(idx, true);\n    });\n  },\n  setZoom: function (zoom) {\n    this.option.zoom = zoom;\n  },\n  setCenter: function (center) {\n    this.option.center = center;\n  },\n  isAnimationEnabled: function () {\n    return GraphSeries.superCall(this, 'isAnimationEnabled') // Not enable animation when do force layout\n    && !(this.get('layout') === 'force' && this.get('force.layoutAnimation'));\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'view',\n    // Default option for all coordinate systems\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // polarIndex: 0,\n    // geoIndex: 0,\n    legendHoverLink: true,\n    hoverAnimation: true,\n    layout: null,\n    focusNodeAdjacency: false,\n    // Configuration of circular layout\n    circular: {\n      rotateLabel: false\n    },\n    // Configuration of force directed layout\n    force: {\n      initLayout: null,\n      // Node repulsion. Can be an array to represent range.\n      repulsion: [0, 50],\n      gravity: 0.1,\n      // Initial friction\n      friction: 0.6,\n      // Edge length. Can be an array to represent range.\n      edgeLength: 30,\n      layoutAnimation: true\n    },\n    left: 'center',\n    top: 'center',\n    // right: null,\n    // bottom: null,\n    // width: '80%',\n    // height: '80%',\n    symbol: 'circle',\n    symbolSize: 10,\n    edgeSymbol: ['none', 'none'],\n    edgeSymbolSize: 10,\n    edgeLabel: {\n      position: 'middle',\n      distance: 5\n    },\n    draggable: false,\n    roam: false,\n    // Default on center of graph\n    center: null,\n    zoom: 1,\n    // Symbol size scale ratio in roam\n    nodeScaleRatio: 0.6,\n    // cursor: null,\n    // categories: [],\n    // data: []\n    // Or\n    // nodes: []\n    //\n    // links: []\n    // Or\n    // edges: []\n    label: {\n      show: false,\n      formatter: '{b}'\n    },\n    itemStyle: {},\n    lineStyle: {\n      color: '#aaa',\n      width: 1,\n      opacity: 0.5\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    }\n  }\n});\nvar _default = GraphSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\nvar _clazz = __webpack_require__(143);\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// id may be function name of Object, add a prefix to avoid this problem.\nfunction generateNodeKey(id) {\n  return '_EC_' + id;\n}\n/**\n * @alias module:echarts/data/Graph\n * @constructor\n * @param {boolean} directed\n */\n\n\nvar Graph = function (directed) {\n  /**\n   * 是否是有向图\n   * @type {boolean}\n   * @private\n   */\n  this._directed = directed || false;\n  /**\n   * @type {Array.<module:echarts/data/Graph.Node>}\n   * @readOnly\n   */\n\n  this.nodes = [];\n  /**\n   * @type {Array.<module:echarts/data/Graph.Edge>}\n   * @readOnly\n   */\n\n  this.edges = [];\n  /**\n   * @type {Object.<string, module:echarts/data/Graph.Node>}\n   * @private\n   */\n\n  this._nodesMap = {};\n  /**\n   * @type {Object.<string, module:echarts/data/Graph.Edge>}\n   * @private\n   */\n\n  this._edgesMap = {};\n  /**\n   * @type {module:echarts/data/List}\n   * @readOnly\n   */\n\n  this.data;\n  /**\n   * @type {module:echarts/data/List}\n   * @readOnly\n   */\n\n  this.edgeData;\n};\n\nvar graphProto = Graph.prototype;\n/**\n * @type {string}\n */\n\ngraphProto.type = 'graph';\n/**\n * If is directed graph\n * @return {boolean}\n */\n\ngraphProto.isDirected = function () {\n  return this._directed;\n};\n/**\n * Add a new node\n * @param {string} id\n * @param {number} [dataIndex]\n */\n\n\ngraphProto.addNode = function (id, dataIndex) {\n  id = id == null ? '' + dataIndex : '' + id;\n  var nodesMap = this._nodesMap;\n\n  if (nodesMap[generateNodeKey(id)]) {\n    return;\n  }\n\n  var node = new Node(id, dataIndex);\n  node.hostGraph = this;\n  this.nodes.push(node);\n  nodesMap[generateNodeKey(id)] = node;\n  return node;\n};\n/**\n * Get node by data index\n * @param  {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getNodeByIndex = function (dataIndex) {\n  var rawIdx = this.data.getRawIndex(dataIndex);\n  return this.nodes[rawIdx];\n};\n/**\n * Get node by id\n * @param  {string} id\n * @return {module:echarts/data/Graph.Node}\n */\n\n\ngraphProto.getNodeById = function (id) {\n  return this._nodesMap[generateNodeKey(id)];\n};\n/**\n * Add a new edge\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.addEdge = function (n1, n2, dataIndex) {\n  var nodesMap = this._nodesMap;\n  var edgesMap = this._edgesMap; // PNEDING\n\n  if (typeof n1 === 'number') {\n    n1 = this.nodes[n1];\n  }\n\n  if (typeof n2 === 'number') {\n    n2 = this.nodes[n2];\n  }\n\n  if (!Node.isInstance(n1)) {\n    n1 = nodesMap[generateNodeKey(n1)];\n  }\n\n  if (!Node.isInstance(n2)) {\n    n2 = nodesMap[generateNodeKey(n2)];\n  }\n\n  if (!n1 || !n2) {\n    return;\n  }\n\n  var key = n1.id + '-' + n2.id;\n  var edge = new Edge(n1, n2, dataIndex);\n  edge.hostGraph = this;\n\n  if (this._directed) {\n    n1.outEdges.push(edge);\n    n2.inEdges.push(edge);\n  }\n\n  n1.edges.push(edge);\n\n  if (n1 !== n2) {\n    n2.edges.push(edge);\n  }\n\n  this.edges.push(edge);\n  edgesMap[key] = edge;\n  return edge;\n};\n/**\n * Get edge by data index\n * @param  {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getEdgeByIndex = function (dataIndex) {\n  var rawIdx = this.edgeData.getRawIndex(dataIndex);\n  return this.edges[rawIdx];\n};\n/**\n * Get edge by two linked nodes\n * @param  {module:echarts/data/Graph.Node|string} n1\n * @param  {module:echarts/data/Graph.Node|string} n2\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.getEdge = function (n1, n2) {\n  if (Node.isInstance(n1)) {\n    n1 = n1.id;\n  }\n\n  if (Node.isInstance(n2)) {\n    n2 = n2.id;\n  }\n\n  var edgesMap = this._edgesMap;\n\n  if (this._directed) {\n    return edgesMap[n1 + '-' + n2];\n  } else {\n    return edgesMap[n1 + '-' + n2] || edgesMap[n2 + '-' + n1];\n  }\n};\n/**\n * Iterate all nodes\n * @param  {Function} cb\n * @param  {*} [context]\n */\n\n\ngraphProto.eachNode = function (cb, context) {\n  var nodes = this.nodes;\n  var len = nodes.length;\n\n  for (var i = 0; i < len; i++) {\n    if (nodes[i].dataIndex >= 0) {\n      cb.call(context, nodes[i], i);\n    }\n  }\n};\n/**\n * Iterate all edges\n * @param  {Function} cb\n * @param  {*} [context]\n */\n\n\ngraphProto.eachEdge = function (cb, context) {\n  var edges = this.edges;\n  var len = edges.length;\n\n  for (var i = 0; i < len; i++) {\n    if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {\n      cb.call(context, edges[i], i);\n    }\n  }\n};\n/**\n * Breadth first traverse\n * @param {Function} cb\n * @param {module:echarts/data/Graph.Node} startNode\n * @param {string} [direction='none'] 'none'|'in'|'out'\n * @param {*} [context]\n */\n\n\ngraphProto.breadthFirstTraverse = function (cb, startNode, direction, context) {\n  if (!Node.isInstance(startNode)) {\n    startNode = this._nodesMap[generateNodeKey(startNode)];\n  }\n\n  if (!startNode) {\n    return;\n  }\n\n  var edgeType = direction === 'out' ? 'outEdges' : direction === 'in' ? 'inEdges' : 'edges';\n\n  for (var i = 0; i < this.nodes.length; i++) {\n    this.nodes[i].__visited = false;\n  }\n\n  if (cb.call(context, startNode, null)) {\n    return;\n  }\n\n  var queue = [startNode];\n\n  while (queue.length) {\n    var currentNode = queue.shift();\n    var edges = currentNode[edgeType];\n\n    for (var i = 0; i < edges.length; i++) {\n      var e = edges[i];\n      var otherNode = e.node1 === currentNode ? e.node2 : e.node1;\n\n      if (!otherNode.__visited) {\n        if (cb.call(context, otherNode, currentNode)) {\n          // Stop traversing\n          return;\n        }\n\n        queue.push(otherNode);\n        otherNode.__visited = true;\n      }\n    }\n  }\n}; // TODO\n// graphProto.depthFirstTraverse = function (\n//     cb, startNode, direction, context\n// ) {\n// };\n// Filter update\n\n\ngraphProto.update = function () {\n  var data = this.data;\n  var edgeData = this.edgeData;\n  var nodes = this.nodes;\n  var edges = this.edges;\n\n  for (var i = 0, len = nodes.length; i < len; i++) {\n    nodes[i].dataIndex = -1;\n  }\n\n  for (var i = 0, len = data.count(); i < len; i++) {\n    nodes[data.getRawIndex(i)].dataIndex = i;\n  }\n\n  edgeData.filterSelf(function (idx) {\n    var edge = edges[edgeData.getRawIndex(idx)];\n    return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;\n  }); // Update edge\n\n  for (var i = 0, len = edges.length; i < len; i++) {\n    edges[i].dataIndex = -1;\n  }\n\n  for (var i = 0, len = edgeData.count(); i < len; i++) {\n    edges[edgeData.getRawIndex(i)].dataIndex = i;\n  }\n};\n/**\n * @return {module:echarts/data/Graph}\n */\n\n\ngraphProto.clone = function () {\n  var graph = new Graph(this._directed);\n  var nodes = this.nodes;\n  var edges = this.edges;\n\n  for (var i = 0; i < nodes.length; i++) {\n    graph.addNode(nodes[i].id, nodes[i].dataIndex);\n  }\n\n  for (var i = 0; i < edges.length; i++) {\n    var e = edges[i];\n    graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);\n  }\n\n  return graph;\n};\n/**\n * @alias module:echarts/data/Graph.Node\n */\n\n\nfunction Node(id, dataIndex) {\n  /**\n  * @type {string}\n  */\n  this.id = id == null ? '' : id;\n  /**\n  * @type {Array.<module:echarts/data/Graph.Edge>}\n  */\n\n  this.inEdges = [];\n  /**\n  * @type {Array.<module:echarts/data/Graph.Edge>}\n  */\n\n  this.outEdges = [];\n  /**\n  * @type {Array.<module:echarts/data/Graph.Edge>}\n  */\n\n  this.edges = [];\n  /**\n   * @type {module:echarts/data/Graph}\n   */\n\n  this.hostGraph;\n  /**\n   * @type {number}\n   */\n\n  this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n\nNode.prototype = {\n  constructor: Node,\n\n  /**\n   * @return {number}\n   */\n  degree: function () {\n    return this.edges.length;\n  },\n\n  /**\n   * @return {number}\n   */\n  inDegree: function () {\n    return this.inEdges.length;\n  },\n\n  /**\n  * @return {number}\n  */\n  outDegree: function () {\n    return this.outEdges.length;\n  },\n\n  /**\n   * @param {string} [path]\n   * @return {module:echarts/model/Model}\n   */\n  getModel: function (path) {\n    if (this.dataIndex < 0) {\n      return;\n    }\n\n    var graph = this.hostGraph;\n    var itemModel = graph.data.getItemModel(this.dataIndex);\n    return itemModel.getModel(path);\n  }\n};\n/**\n * 图边\n * @alias module:echarts/data/Graph.Edge\n * @param {module:echarts/data/Graph.Node} n1\n * @param {module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n */\n\nfunction Edge(n1, n2, dataIndex) {\n  /**\n   * 节点1，如果是有向图则为源节点\n   * @type {module:echarts/data/Graph.Node}\n   */\n  this.node1 = n1;\n  /**\n   * 节点2，如果是有向图则为目标节点\n   * @type {module:echarts/data/Graph.Node}\n   */\n\n  this.node2 = n2;\n  this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n/**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n\n\nEdge.prototype.getModel = function (path) {\n  if (this.dataIndex < 0) {\n    return;\n  }\n\n  var graph = this.hostGraph;\n  var itemModel = graph.edgeData.getItemModel(this.dataIndex);\n  return itemModel.getModel(path);\n};\n\nvar createGraphDataProxyMixin = function (hostName, dataName) {\n  return {\n    /**\n     * @param {string=} [dimension='value'] Default 'value'. can be 'a', 'b', 'c', 'd', 'e'.\n     * @return {number}\n     */\n    getValue: function (dimension) {\n      var data = this[hostName][dataName];\n      return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n    },\n\n    /**\n     * @param {Object|string} key\n     * @param {*} [value]\n     */\n    setVisual: function (key, value) {\n      this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);\n    },\n\n    /**\n     * @param {string} key\n     * @return {boolean}\n     */\n    getVisual: function (key, ignoreParent) {\n      return this[hostName][dataName].getItemVisual(this.dataIndex, key, ignoreParent);\n    },\n\n    /**\n     * @param {Object} layout\n     * @return {boolean} [merge=false]\n     */\n    setLayout: function (layout, merge) {\n      this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge);\n    },\n\n    /**\n     * @return {Object}\n     */\n    getLayout: function () {\n      return this[hostName][dataName].getItemLayout(this.dataIndex);\n    },\n\n    /**\n     * @return {module:zrender/Element}\n     */\n    getGraphicEl: function () {\n      return this[hostName][dataName].getItemGraphicEl(this.dataIndex);\n    },\n\n    /**\n     * @return {number}\n     */\n    getRawIndex: function () {\n      return this[hostName][dataName].getRawIndex(this.dataIndex);\n    }\n  };\n};\n\nzrUtil.mixin(Node, createGraphDataProxyMixin('hostGraph', 'data'));\nzrUtil.mixin(Edge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\nGraph.Node = Node;\nGraph.Edge = Edge;\nenableClassCheck(Node);\nenableClassCheck(Edge);\nvar _default = Graph;\nmodule.exports = _default;\n\n/***/ }),\n/* 1113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar SymbolDraw = __webpack_require__(260);\n\nvar LineDraw = __webpack_require__(418);\n\nvar RoamController = __webpack_require__(266);\n\nvar roamHelper = __webpack_require__(413);\n\nvar _cursorHelper = __webpack_require__(337);\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphic = __webpack_require__(23);\n\nvar adjustEdge = __webpack_require__(1115);\n\nvar _graphHelper = __webpack_require__(420);\n\nvar getNodeGlobalScale = _graphHelper.getNodeGlobalScale;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar FOCUS_ADJACENCY = '__focusNodeAdjacency';\nvar UNFOCUS_ADJACENCY = '__unfocusNodeAdjacency';\nvar nodeOpacityPath = ['itemStyle', 'opacity'];\nvar lineOpacityPath = ['lineStyle', 'opacity'];\n\nfunction getItemOpacity(item, opacityPath) {\n  var opacity = item.getVisual('opacity');\n  return opacity != null ? opacity : item.getModel().get(opacityPath);\n}\n\nfunction fadeOutItem(item, opacityPath, opacityRatio) {\n  var el = item.getGraphicEl();\n  var opacity = getItemOpacity(item, opacityPath);\n\n  if (opacityRatio != null) {\n    opacity == null && (opacity = 1);\n    opacity *= opacityRatio;\n  }\n\n  el.downplay && el.downplay();\n  el.traverse(function (child) {\n    if (!child.isGroup) {\n      var opct = child.lineLabelOriginalOpacity;\n\n      if (opct == null || opacityRatio != null) {\n        opct = opacity;\n      }\n\n      child.setStyle('opacity', opct);\n    }\n  });\n}\n\nfunction fadeInItem(item, opacityPath) {\n  var opacity = getItemOpacity(item, opacityPath);\n  var el = item.getGraphicEl(); // Should go back to normal opacity first, consider hoverLayer,\n  // where current state is copied to elMirror, and support\n  // emphasis opacity here.\n\n  el.traverse(function (child) {\n    !child.isGroup && child.setStyle('opacity', opacity);\n  });\n  el.highlight && el.highlight();\n}\n\nvar _default = echarts.extendChartView({\n  type: 'graph',\n  init: function (ecModel, api) {\n    var symbolDraw = new SymbolDraw();\n    var lineDraw = new LineDraw();\n    var group = this.group;\n    this._controller = new RoamController(api.getZr());\n    this._controllerHost = {\n      target: group\n    };\n    group.add(symbolDraw.group);\n    group.add(lineDraw.group);\n    this._symbolDraw = symbolDraw;\n    this._lineDraw = lineDraw;\n    this._firstRender = true;\n  },\n  render: function (seriesModel, ecModel, api) {\n    var graphView = this;\n    var coordSys = seriesModel.coordinateSystem;\n    this._model = seriesModel;\n    var symbolDraw = this._symbolDraw;\n    var lineDraw = this._lineDraw;\n    var group = this.group;\n\n    if (coordSys.type === 'view') {\n      var groupNewProp = {\n        position: coordSys.position,\n        scale: coordSys.scale\n      };\n\n      if (this._firstRender) {\n        group.attr(groupNewProp);\n      } else {\n        graphic.updateProps(group, groupNewProp, seriesModel);\n      }\n    } // Fix edge contact point with node\n\n\n    adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n    var data = seriesModel.getData();\n    symbolDraw.updateData(data);\n    var edgeData = seriesModel.getEdgeData();\n    lineDraw.updateData(edgeData);\n\n    this._updateNodeAndLinkScale();\n\n    this._updateController(seriesModel, ecModel, api);\n\n    clearTimeout(this._layoutTimeout);\n    var forceLayout = seriesModel.forceLayout;\n    var layoutAnimation = seriesModel.get('force.layoutAnimation');\n\n    if (forceLayout) {\n      this._startForceLayoutIteration(forceLayout, layoutAnimation);\n    }\n\n    data.eachItemGraphicEl(function (el, idx) {\n      var itemModel = data.getItemModel(idx); // Update draggable\n\n      el.off('drag').off('dragend');\n      var draggable = itemModel.get('draggable');\n\n      if (draggable) {\n        el.on('drag', function () {\n          if (forceLayout) {\n            forceLayout.warmUp();\n            !this._layouting && this._startForceLayoutIteration(forceLayout, layoutAnimation);\n            forceLayout.setFixed(idx); // Write position back to layout\n\n            data.setItemLayout(idx, el.position);\n          }\n        }, this).on('dragend', function () {\n          if (forceLayout) {\n            forceLayout.setUnfixed(idx);\n          }\n        }, this);\n      }\n\n      el.setDraggable(draggable && forceLayout);\n      el[FOCUS_ADJACENCY] && el.off('mouseover', el[FOCUS_ADJACENCY]);\n      el[UNFOCUS_ADJACENCY] && el.off('mouseout', el[UNFOCUS_ADJACENCY]);\n\n      if (itemModel.get('focusNodeAdjacency')) {\n        el.on('mouseover', el[FOCUS_ADJACENCY] = function () {\n          graphView._clearTimer();\n\n          api.dispatchAction({\n            type: 'focusNodeAdjacency',\n            seriesId: seriesModel.id,\n            dataIndex: el.dataIndex\n          });\n        });\n        el.on('mouseout', el[UNFOCUS_ADJACENCY] = function () {\n          graphView._dispatchUnfocus(api);\n        });\n      }\n    }, this);\n    data.graph.eachEdge(function (edge) {\n      var el = edge.getGraphicEl();\n      el[FOCUS_ADJACENCY] && el.off('mouseover', el[FOCUS_ADJACENCY]);\n      el[UNFOCUS_ADJACENCY] && el.off('mouseout', el[UNFOCUS_ADJACENCY]);\n\n      if (edge.getModel().get('focusNodeAdjacency')) {\n        el.on('mouseover', el[FOCUS_ADJACENCY] = function () {\n          graphView._clearTimer();\n\n          api.dispatchAction({\n            type: 'focusNodeAdjacency',\n            seriesId: seriesModel.id,\n            edgeDataIndex: edge.dataIndex\n          });\n        });\n        el.on('mouseout', el[UNFOCUS_ADJACENCY] = function () {\n          graphView._dispatchUnfocus(api);\n        });\n      }\n    });\n    var circularRotateLabel = seriesModel.get('layout') === 'circular' && seriesModel.get('circular.rotateLabel');\n    var cx = data.getLayout('cx');\n    var cy = data.getLayout('cy');\n    data.eachItemGraphicEl(function (el, idx) {\n      var itemModel = data.getItemModel(idx);\n      var labelRotate = itemModel.get('label.rotate') || 0;\n      var symbolPath = el.getSymbolPath();\n\n      if (circularRotateLabel) {\n        var pos = data.getItemLayout(idx);\n        var rad = Math.atan2(pos[1] - cy, pos[0] - cx);\n\n        if (rad < 0) {\n          rad = Math.PI * 2 + rad;\n        }\n\n        var isLeft = pos[0] < cx;\n\n        if (isLeft) {\n          rad = rad - Math.PI;\n        }\n\n        var textPosition = isLeft ? 'left' : 'right';\n        graphic.modifyLabelStyle(symbolPath, {\n          textRotation: -rad,\n          textPosition: textPosition,\n          textOrigin: 'center'\n        }, {\n          textPosition: textPosition\n        });\n      } else {\n        graphic.modifyLabelStyle(symbolPath, {\n          textRotation: labelRotate *= Math.PI / 180\n        });\n      }\n    });\n    this._firstRender = false;\n  },\n  dispose: function () {\n    this._controller && this._controller.dispose();\n    this._controllerHost = {};\n\n    this._clearTimer();\n  },\n  _dispatchUnfocus: function (api, opt) {\n    var self = this;\n\n    this._clearTimer();\n\n    this._unfocusDelayTimer = setTimeout(function () {\n      self._unfocusDelayTimer = null;\n      api.dispatchAction({\n        type: 'unfocusNodeAdjacency',\n        seriesId: self._model.id\n      });\n    }, 500);\n  },\n  _clearTimer: function () {\n    if (this._unfocusDelayTimer) {\n      clearTimeout(this._unfocusDelayTimer);\n      this._unfocusDelayTimer = null;\n    }\n  },\n  focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var graph = data.graph;\n    var dataIndex = payload.dataIndex;\n    var edgeDataIndex = payload.edgeDataIndex;\n    var node = graph.getNodeByIndex(dataIndex);\n    var edge = graph.getEdgeByIndex(edgeDataIndex);\n\n    if (!node && !edge) {\n      return;\n    }\n\n    graph.eachNode(function (node) {\n      fadeOutItem(node, nodeOpacityPath, 0.1);\n    });\n    graph.eachEdge(function (edge) {\n      fadeOutItem(edge, lineOpacityPath, 0.1);\n    });\n\n    if (node) {\n      fadeInItem(node, nodeOpacityPath);\n      zrUtil.each(node.edges, function (adjacentEdge) {\n        if (adjacentEdge.dataIndex < 0) {\n          return;\n        }\n\n        fadeInItem(adjacentEdge, lineOpacityPath);\n        fadeInItem(adjacentEdge.node1, nodeOpacityPath);\n        fadeInItem(adjacentEdge.node2, nodeOpacityPath);\n      });\n    }\n\n    if (edge) {\n      fadeInItem(edge, lineOpacityPath);\n      fadeInItem(edge.node1, nodeOpacityPath);\n      fadeInItem(edge.node2, nodeOpacityPath);\n    }\n  },\n  unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n    var graph = seriesModel.getData().graph;\n    graph.eachNode(function (node) {\n      fadeOutItem(node, nodeOpacityPath);\n    });\n    graph.eachEdge(function (edge) {\n      fadeOutItem(edge, lineOpacityPath);\n    });\n  },\n  _startForceLayoutIteration: function (forceLayout, layoutAnimation) {\n    var self = this;\n\n    (function step() {\n      forceLayout.step(function (stopped) {\n        self.updateLayout(self._model);\n        (self._layouting = !stopped) && (layoutAnimation ? self._layoutTimeout = setTimeout(step, 16) : step());\n      });\n    })();\n  },\n  _updateController: function (seriesModel, ecModel, api) {\n    var controller = this._controller;\n    var controllerHost = this._controllerHost;\n    var group = this.group;\n    controller.setPointerChecker(function (e, x, y) {\n      var rect = group.getBoundingRect();\n      rect.applyTransform(group.transform);\n      return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);\n    });\n\n    if (seriesModel.coordinateSystem.type !== 'view') {\n      controller.disable();\n      return;\n    }\n\n    controller.enable(seriesModel.get('roam'));\n    controllerHost.zoomLimit = seriesModel.get('scaleLimit');\n    controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\n    controller.off('pan').off('zoom').on('pan', function (e) {\n      roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n      api.dispatchAction({\n        seriesId: seriesModel.id,\n        type: 'graphRoam',\n        dx: e.dx,\n        dy: e.dy\n      });\n    }).on('zoom', function (e) {\n      roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n      api.dispatchAction({\n        seriesId: seriesModel.id,\n        type: 'graphRoam',\n        zoom: e.scale,\n        originX: e.originX,\n        originY: e.originY\n      });\n\n      this._updateNodeAndLinkScale();\n\n      adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n\n      this._lineDraw.updateLayout();\n    }, this);\n  },\n  _updateNodeAndLinkScale: function () {\n    var seriesModel = this._model;\n    var data = seriesModel.getData();\n    var nodeScale = getNodeGlobalScale(seriesModel);\n    var invScale = [nodeScale, nodeScale];\n    data.eachItemGraphicEl(function (el, idx) {\n      el.attr('scale', invScale);\n    });\n  },\n  updateLayout: function (seriesModel) {\n    adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));\n\n    this._symbolDraw.updateLayout();\n\n    this._lineDraw.updateLayout();\n  },\n  remove: function (ecModel, api) {\n    this._symbolDraw && this._symbolDraw.remove();\n    this._lineDraw && this._lineDraw.remove();\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar vec2 = __webpack_require__(56);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Line path for bezier and straight line draw\n */\nvar straightLineProto = graphic.Line.prototype;\nvar bezierCurveProto = graphic.BezierCurve.prototype;\n\nfunction isLine(shape) {\n  return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\n}\n\nvar _default = graphic.extendShape({\n  type: 'ec-line',\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  shape: {\n    x1: 0,\n    y1: 0,\n    x2: 0,\n    y2: 0,\n    percent: 1,\n    cpx1: null,\n    cpy1: null\n  },\n  buildPath: function (ctx, shape) {\n    this[isLine(shape) ? '_buildPathLine' : '_buildPathCurve'](ctx, shape);\n  },\n  _buildPathLine: straightLineProto.buildPath,\n  _buildPathCurve: bezierCurveProto.buildPath,\n  pointAt: function (t) {\n    return this[isLine(this.shape) ? '_pointAtLine' : '_pointAtCurve'](t);\n  },\n  _pointAtLine: straightLineProto.pointAt,\n  _pointAtCurve: bezierCurveProto.pointAt,\n  tangentAt: function (t) {\n    var shape = this.shape;\n    var p = isLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : this._tangentAtCurve(t);\n    return vec2.normalize(p, p);\n  },\n  _tangentAtCurve: bezierCurveProto.tangentAt\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar curveTool = __webpack_require__(152);\n\nvar vec2 = __webpack_require__(56);\n\nvar _graphHelper = __webpack_require__(420);\n\nvar getSymbolSize = _graphHelper.getSymbolSize;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar v1 = [];\nvar v2 = [];\nvar v3 = [];\nvar quadraticAt = curveTool.quadraticAt;\nvar v2DistSquare = vec2.distSquare;\nvar mathAbs = Math.abs;\n\nfunction intersectCurveCircle(curvePoints, center, radius) {\n  var p0 = curvePoints[0];\n  var p1 = curvePoints[1];\n  var p2 = curvePoints[2];\n  var d = Infinity;\n  var t;\n  var radiusSquare = radius * radius;\n  var interval = 0.1;\n\n  for (var _t = 0.1; _t <= 0.9; _t += 0.1) {\n    v1[0] = quadraticAt(p0[0], p1[0], p2[0], _t);\n    v1[1] = quadraticAt(p0[1], p1[1], p2[1], _t);\n    var diff = mathAbs(v2DistSquare(v1, center) - radiusSquare);\n\n    if (diff < d) {\n      d = diff;\n      t = _t;\n    }\n  } // Assume the segment is monotone，Find root through Bisection method\n  // At most 32 iteration\n\n\n  for (var i = 0; i < 32; i++) {\n    // var prev = t - interval;\n    var next = t + interval; // v1[0] = quadraticAt(p0[0], p1[0], p2[0], prev);\n    // v1[1] = quadraticAt(p0[1], p1[1], p2[1], prev);\n\n    v2[0] = quadraticAt(p0[0], p1[0], p2[0], t);\n    v2[1] = quadraticAt(p0[1], p1[1], p2[1], t);\n    v3[0] = quadraticAt(p0[0], p1[0], p2[0], next);\n    v3[1] = quadraticAt(p0[1], p1[1], p2[1], next);\n    var diff = v2DistSquare(v2, center) - radiusSquare;\n\n    if (mathAbs(diff) < 1e-2) {\n      break;\n    } // var prevDiff = v2DistSquare(v1, center) - radiusSquare;\n\n\n    var nextDiff = v2DistSquare(v3, center) - radiusSquare;\n    interval /= 2;\n\n    if (diff < 0) {\n      if (nextDiff >= 0) {\n        t = t + interval;\n      } else {\n        t = t - interval;\n      }\n    } else {\n      if (nextDiff >= 0) {\n        t = t - interval;\n      } else {\n        t = t + interval;\n      }\n    }\n  }\n\n  return t;\n} // Adjust edge to avoid\n\n\nfunction _default(graph, scale) {\n  var tmp0 = [];\n  var quadraticSubdivide = curveTool.quadraticSubdivide;\n  var pts = [[], [], []];\n  var pts2 = [[], []];\n  var v = [];\n  scale /= 2;\n  graph.eachEdge(function (edge, idx) {\n    var linePoints = edge.getLayout();\n    var fromSymbol = edge.getVisual('fromSymbol');\n    var toSymbol = edge.getVisual('toSymbol');\n\n    if (!linePoints.__original) {\n      linePoints.__original = [vec2.clone(linePoints[0]), vec2.clone(linePoints[1])];\n\n      if (linePoints[2]) {\n        linePoints.__original.push(vec2.clone(linePoints[2]));\n      }\n    }\n\n    var originalPoints = linePoints.__original; // Quadratic curve\n\n    if (linePoints[2] != null) {\n      vec2.copy(pts[0], originalPoints[0]);\n      vec2.copy(pts[1], originalPoints[2]);\n      vec2.copy(pts[2], originalPoints[1]);\n\n      if (fromSymbol && fromSymbol !== 'none') {\n        var symbolSize = getSymbolSize(edge.node1);\n        var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale); // Subdivide and get the second\n\n        quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n        pts[0][0] = tmp0[3];\n        pts[1][0] = tmp0[4];\n        quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n        pts[0][1] = tmp0[3];\n        pts[1][1] = tmp0[4];\n      }\n\n      if (toSymbol && toSymbol !== 'none') {\n        var symbolSize = getSymbolSize(edge.node2);\n        var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale); // Subdivide and get the first\n\n        quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n        pts[1][0] = tmp0[1];\n        pts[2][0] = tmp0[2];\n        quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n        pts[1][1] = tmp0[1];\n        pts[2][1] = tmp0[2];\n      } // Copy back to layout\n\n\n      vec2.copy(linePoints[0], pts[0]);\n      vec2.copy(linePoints[1], pts[2]);\n      vec2.copy(linePoints[2], pts[1]);\n    } // Line\n    else {\n        vec2.copy(pts2[0], originalPoints[0]);\n        vec2.copy(pts2[1], originalPoints[1]);\n        vec2.sub(v, pts2[1], pts2[0]);\n        vec2.normalize(v, v);\n\n        if (fromSymbol && fromSymbol !== 'none') {\n          var symbolSize = getSymbolSize(edge.node1);\n          vec2.scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale);\n        }\n\n        if (toSymbol && toSymbol !== 'none') {\n          var symbolSize = getSymbolSize(edge.node2);\n          vec2.scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale);\n        }\n\n        vec2.copy(linePoints[0], pts2[0]);\n        vec2.copy(linePoints[1], pts2[1]);\n      }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar _roamHelper = __webpack_require__(414);\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\n\n__webpack_require__(596);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar actionInfo = {\n  type: 'graphRoam',\n  event: 'graphRoam',\n  update: 'none'\n};\n/**\n * @payload\n * @property {string} name Series name\n * @property {number} [dx]\n * @property {number} [dy]\n * @property {number} [zoom]\n * @property {number} [originX]\n * @property {number} [originY]\n */\n\necharts.registerAction(actionInfo, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    query: payload\n  }, function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var res = updateCenterAndZoom(coordSys, payload);\n    seriesModel.setCenter && seriesModel.setCenter(res.center);\n    seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n  });\n});\n\n/***/ }),\n/* 1117 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n  var legendModels = ecModel.findComponents({\n    mainType: 'legend'\n  });\n\n  if (!legendModels || !legendModels.length) {\n    return;\n  }\n\n  ecModel.eachSeriesByType('graph', function (graphSeries) {\n    var categoriesData = graphSeries.getCategoriesData();\n    var graph = graphSeries.getGraph();\n    var data = graph.data;\n    var categoryNames = categoriesData.mapArray(categoriesData.getName);\n    data.filterSelf(function (idx) {\n      var model = data.getItemModel(idx);\n      var category = model.getShallow('category');\n\n      if (category != null) {\n        if (typeof category === 'number') {\n          category = categoryNames[category];\n        } // If in any legend component the status is not selected.\n\n\n        for (var i = 0; i < legendModels.length; i++) {\n          if (!legendModels[i].isSelected(category)) {\n            return false;\n          }\n        }\n      }\n\n      return true;\n    });\n  }, this);\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1118 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n  var paletteScope = {};\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var categoriesData = seriesModel.getCategoriesData();\n    var data = seriesModel.getData();\n    var categoryNameIdxMap = {};\n    categoriesData.each(function (idx) {\n      var name = categoriesData.getName(idx); // Add prefix to avoid conflict with Object.prototype.\n\n      categoryNameIdxMap['ec-' + name] = idx;\n      var itemModel = categoriesData.getItemModel(idx);\n      var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(name, paletteScope);\n      categoriesData.setItemVisual(idx, 'color', color);\n      var itemStyleList = ['opacity', 'symbol', 'symbolSize', 'symbolKeepAspect'];\n\n      for (var i = 0; i < itemStyleList.length; i++) {\n        var itemStyle = itemModel.getShallow(itemStyleList[i], true);\n\n        if (itemStyle != null) {\n          categoriesData.setItemVisual(idx, itemStyleList[i], itemStyle);\n        }\n      }\n    }); // Assign category color to visual\n\n    if (categoriesData.count()) {\n      data.each(function (idx) {\n        var model = data.getItemModel(idx);\n        var category = model.getShallow('category');\n\n        if (category != null) {\n          if (typeof category === 'string') {\n            category = categoryNameIdxMap['ec-' + category];\n          }\n\n          var itemStyleList = ['color', 'opacity', 'symbol', 'symbolSize', 'symbolKeepAspect'];\n\n          for (var i = 0; i < itemStyleList.length; i++) {\n            if (data.getItemVisual(idx, itemStyleList[i], true) == null) {\n              data.setItemVisual(idx, itemStyleList[i], categoriesData.getItemVisual(category, itemStyleList[i]));\n            }\n          }\n        }\n      });\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1119 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction normalize(a) {\n  if (!(a instanceof Array)) {\n    a = [a, a];\n  }\n\n  return a;\n}\n\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var graph = seriesModel.getGraph();\n    var edgeData = seriesModel.getEdgeData();\n    var symbolType = normalize(seriesModel.get('edgeSymbol'));\n    var symbolSize = normalize(seriesModel.get('edgeSymbolSize'));\n    var colorQuery = 'lineStyle.color'.split('.');\n    var opacityQuery = 'lineStyle.opacity'.split('.');\n    edgeData.setVisual('fromSymbol', symbolType && symbolType[0]);\n    edgeData.setVisual('toSymbol', symbolType && symbolType[1]);\n    edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n    edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n    edgeData.setVisual('color', seriesModel.get(colorQuery));\n    edgeData.setVisual('opacity', seriesModel.get(opacityQuery));\n    edgeData.each(function (idx) {\n      var itemModel = edgeData.getItemModel(idx);\n      var edge = graph.getEdgeByIndex(idx);\n      var symbolType = normalize(itemModel.getShallow('symbol', true));\n      var symbolSize = normalize(itemModel.getShallow('symbolSize', true)); // Edge visual must after node visual\n\n      var color = itemModel.get(colorQuery);\n      var opacity = itemModel.get(opacityQuery);\n\n      switch (color) {\n        case 'source':\n          color = edge.node1.getVisual('color');\n          break;\n\n        case 'target':\n          color = edge.node2.getVisual('color');\n          break;\n      }\n\n      symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]);\n      symbolType[1] && edge.setVisual('toSymbol', symbolType[1]);\n      symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]);\n      symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]);\n      edge.setVisual('color', color);\n      edge.setVisual('opacity', opacity);\n    });\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\n\nvar _simpleLayoutHelper = __webpack_require__(597);\n\nvar simpleLayout = _simpleLayoutHelper.simpleLayout;\nvar simpleLayoutEdge = _simpleLayoutHelper.simpleLayoutEdge;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel, api) {\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var layout = seriesModel.get('layout');\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && coordSys.type !== 'view') {\n      var data = seriesModel.getData();\n      var dimensions = [];\n      each(coordSys.dimensions, function (coordDim) {\n        dimensions = dimensions.concat(data.mapDimension(coordDim, true));\n      });\n\n      for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n        var value = [];\n        var hasValue = false;\n\n        for (var i = 0; i < dimensions.length; i++) {\n          var val = data.get(dimensions[i], dataIndex);\n\n          if (!isNaN(val)) {\n            hasValue = true;\n          }\n\n          value.push(val);\n        }\n\n        if (hasValue) {\n          data.setItemLayout(dataIndex, coordSys.dataToPoint(value));\n        } else {\n          // Also {Array.<number>}, not undefined to avoid if...else... statement\n          data.setItemLayout(dataIndex, [NaN, NaN]);\n        }\n      }\n\n      simpleLayoutEdge(data.graph, seriesModel);\n    } else if (!layout || layout === 'none') {\n      simpleLayout(seriesModel);\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _circularLayoutHelper = __webpack_require__(598);\n\nvar circularLayout = _circularLayoutHelper.circularLayout;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    if (seriesModel.get('layout') === 'circular') {\n      circularLayout(seriesModel, 'symbolSize');\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _forceHelper = __webpack_require__(1123);\n\nvar forceLayout = _forceHelper.forceLayout;\n\nvar _simpleLayoutHelper = __webpack_require__(597);\n\nvar simpleLayout = _simpleLayoutHelper.simpleLayout;\n\nvar _circularLayoutHelper = __webpack_require__(598);\n\nvar circularLayout = _circularLayoutHelper.circularLayout;\n\nvar _number = __webpack_require__(26);\n\nvar linearMap = _number.linearMap;\n\nvar vec2 = __webpack_require__(56);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _multipleGraphEdgeHelper = __webpack_require__(338);\n\nvar getCurvenessForEdge = _multipleGraphEdgeHelper.getCurvenessForEdge;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('graph', function (graphSeries) {\n    var coordSys = graphSeries.coordinateSystem;\n\n    if (coordSys && coordSys.type !== 'view') {\n      return;\n    }\n\n    if (graphSeries.get('layout') === 'force') {\n      var preservedPoints = graphSeries.preservedPoints || {};\n      var graph = graphSeries.getGraph();\n      var nodeData = graph.data;\n      var edgeData = graph.edgeData;\n      var forceModel = graphSeries.getModel('force');\n      var initLayout = forceModel.get('initLayout');\n\n      if (graphSeries.preservedPoints) {\n        nodeData.each(function (idx) {\n          var id = nodeData.getId(idx);\n          nodeData.setItemLayout(idx, preservedPoints[id] || [NaN, NaN]);\n        });\n      } else if (!initLayout || initLayout === 'none') {\n        simpleLayout(graphSeries);\n      } else if (initLayout === 'circular') {\n        circularLayout(graphSeries, 'value');\n      }\n\n      var nodeDataExtent = nodeData.getDataExtent('value');\n      var edgeDataExtent = edgeData.getDataExtent('value'); // var edgeDataExtent = edgeData.getDataExtent('value');\n\n      var repulsion = forceModel.get('repulsion');\n      var edgeLength = forceModel.get('edgeLength');\n\n      if (!zrUtil.isArray(repulsion)) {\n        repulsion = [repulsion, repulsion];\n      }\n\n      if (!zrUtil.isArray(edgeLength)) {\n        edgeLength = [edgeLength, edgeLength];\n      } // Larger value has smaller length\n\n\n      edgeLength = [edgeLength[1], edgeLength[0]];\n      var nodes = nodeData.mapArray('value', function (value, idx) {\n        var point = nodeData.getItemLayout(idx);\n        var rep = linearMap(value, nodeDataExtent, repulsion);\n\n        if (isNaN(rep)) {\n          rep = (repulsion[0] + repulsion[1]) / 2;\n        }\n\n        return {\n          w: rep,\n          rep: rep,\n          fixed: nodeData.getItemModel(idx).get('fixed'),\n          p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point\n        };\n      });\n      var edges = edgeData.mapArray('value', function (value, idx) {\n        var edge = graph.getEdgeByIndex(idx);\n        var d = linearMap(value, edgeDataExtent, edgeLength);\n\n        if (isNaN(d)) {\n          d = (edgeLength[0] + edgeLength[1]) / 2;\n        }\n\n        var edgeModel = edge.getModel();\n        var curveness = zrUtil.retrieve3(edgeModel.get('lineStyle.curveness'), -getCurvenessForEdge(edge, graphSeries, idx, true), 0);\n        return {\n          n1: nodes[edge.node1.dataIndex],\n          n2: nodes[edge.node2.dataIndex],\n          d: d,\n          curveness: curveness,\n          ignoreForceLayout: edgeModel.get('ignoreForceLayout')\n        };\n      });\n      var coordSys = graphSeries.coordinateSystem;\n      var rect = coordSys.getBoundingRect();\n      var forceInstance = forceLayout(nodes, edges, {\n        rect: rect,\n        gravity: forceModel.get('gravity'),\n        friction: forceModel.get('friction')\n      });\n      var oldStep = forceInstance.step;\n\n      forceInstance.step = function (cb) {\n        for (var i = 0, l = nodes.length; i < l; i++) {\n          if (nodes[i].fixed) {\n            // Write back to layout instance\n            vec2.copy(nodes[i].p, graph.getNodeByIndex(i).getLayout());\n          }\n        }\n\n        oldStep(function (nodes, edges, stopped) {\n          for (var i = 0, l = nodes.length; i < l; i++) {\n            if (!nodes[i].fixed) {\n              graph.getNodeByIndex(i).setLayout(nodes[i].p);\n            }\n\n            preservedPoints[nodeData.getId(i)] = nodes[i].p;\n          }\n\n          for (var i = 0, l = edges.length; i < l; i++) {\n            var e = edges[i];\n            var edge = graph.getEdgeByIndex(i);\n            var p1 = e.n1.p;\n            var p2 = e.n2.p;\n            var points = edge.getLayout();\n            points = points ? points.slice() : [];\n            points[0] = points[0] || [];\n            points[1] = points[1] || [];\n            vec2.copy(points[0], p1);\n            vec2.copy(points[1], p2);\n\n            if (+e.curveness) {\n              points[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness];\n            }\n\n            edge.setLayout(points);\n          } // Update layout\n\n\n          cb && cb(stopped);\n        });\n      };\n\n      graphSeries.forceLayout = forceInstance;\n      graphSeries.preservedPoints = preservedPoints; // Step to get the layout\n\n      forceInstance.step();\n    } else {\n      // Remove prev injected forceLayout instance\n      graphSeries.forceLayout = null;\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar vec2 = __webpack_require__(56);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* Some formulas were originally copied from \"d3.js\" with some\n* modifications made for this project.\n* (See more details in the comment of the method \"step\" below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* </licenses/LICENSE-d3>).\n*/\nvar scaleAndAdd = vec2.scaleAndAdd; // function adjacentNode(n, e) {\n//     return e.n1 === n ? e.n2 : e.n1;\n// }\n\nfunction forceLayout(nodes, edges, opts) {\n  var rect = opts.rect;\n  var width = rect.width;\n  var height = rect.height;\n  var center = [rect.x + width / 2, rect.y + height / 2]; // var scale = opts.scale || 1;\n\n  var gravity = opts.gravity == null ? 0.1 : opts.gravity; // for (var i = 0; i < edges.length; i++) {\n  //     var e = edges[i];\n  //     var n1 = e.n1;\n  //     var n2 = e.n2;\n  //     n1.edges = n1.edges || [];\n  //     n2.edges = n2.edges || [];\n  //     n1.edges.push(e);\n  //     n2.edges.push(e);\n  // }\n  // Init position\n\n  for (var i = 0; i < nodes.length; i++) {\n    var n = nodes[i];\n\n    if (!n.p) {\n      n.p = vec2.create(width * (Math.random() - 0.5) + center[0], height * (Math.random() - 0.5) + center[1]);\n    }\n\n    n.pp = vec2.clone(n.p);\n    n.edges = null;\n  } // Formula in 'Graph Drawing by Force-directed Placement'\n  // var k = scale * Math.sqrt(width * height / nodes.length);\n  // var k2 = k * k;\n\n\n  var initialFriction = opts.friction == null ? 0.6 : opts.friction;\n  var friction = initialFriction;\n  return {\n    warmUp: function () {\n      friction = initialFriction * 0.8;\n    },\n    setFixed: function (idx) {\n      nodes[idx].fixed = true;\n    },\n    setUnfixed: function (idx) {\n      nodes[idx].fixed = false;\n    },\n\n    /**\n     * Some formulas were originally copied from \"d3.js\"\n     * https://github.com/d3/d3/blob/b516d77fb8566b576088e73410437494717ada26/src/layout/force.js\n     * with some modifications made for this project.\n     * See the license statement at the head of this file.\n     */\n    step: function (cb) {\n      var v12 = [];\n      var nLen = nodes.length;\n\n      for (var i = 0; i < edges.length; i++) {\n        var e = edges[i];\n\n        if (e.ignoreForceLayout) {\n          continue;\n        }\n\n        var n1 = e.n1;\n        var n2 = e.n2;\n        vec2.sub(v12, n2.p, n1.p);\n        var d = vec2.len(v12) - e.d;\n        var w = n2.w / (n1.w + n2.w);\n\n        if (isNaN(w)) {\n          w = 0;\n        }\n\n        vec2.normalize(v12, v12);\n        !n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction);\n        !n2.fixed && scaleAndAdd(n2.p, n2.p, v12, -(1 - w) * d * friction);\n      } // Gravity\n\n\n      for (var i = 0; i < nLen; i++) {\n        var n = nodes[i];\n\n        if (!n.fixed) {\n          vec2.sub(v12, center, n.p); // var d = vec2.len(v12);\n          // vec2.scale(v12, v12, 1 / d);\n          // var gravityFactor = gravity;\n\n          scaleAndAdd(n.p, n.p, v12, gravity * friction);\n        }\n      } // Repulsive\n      // PENDING\n\n\n      for (var i = 0; i < nLen; i++) {\n        var n1 = nodes[i];\n\n        for (var j = i + 1; j < nLen; j++) {\n          var n2 = nodes[j];\n          vec2.sub(v12, n2.p, n1.p);\n          var d = vec2.len(v12);\n\n          if (d === 0) {\n            // Random repulse\n            vec2.set(v12, Math.random() - 0.5, Math.random() - 0.5);\n            d = 1;\n          }\n\n          var repFact = (n1.rep + n2.rep) / d / d;\n          !n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact);\n          !n2.fixed && scaleAndAdd(n2.pp, n2.pp, v12, -repFact);\n        }\n      }\n\n      var v = [];\n\n      for (var i = 0; i < nLen; i++) {\n        var n = nodes[i];\n\n        if (!n.fixed) {\n          vec2.sub(v, n.p, n.pp);\n          scaleAndAdd(n.p, n.p, v, friction);\n          vec2.copy(n.pp, n.p);\n        }\n      }\n\n      friction = friction * 0.992;\n      cb && cb(nodes, edges, friction < 0.01);\n    }\n  };\n}\n\nexports.forceLayout = forceLayout;\n\n/***/ }),\n/* 1124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar View = __webpack_require__(416);\n\nvar _layout = __webpack_require__(49);\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar bbox = __webpack_require__(255);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME Where to create the simple view coordinate system\nfunction getViewRect(seriesModel, api, aspect) {\n  var option = seriesModel.getBoxLayoutParams();\n  option.aspect = aspect;\n  return getLayoutRect(option, {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nfunction _default(ecModel, api) {\n  var viewList = [];\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var coordSysType = seriesModel.get('coordinateSystem');\n\n    if (!coordSysType || coordSysType === 'view') {\n      var data = seriesModel.getData();\n      var positions = data.mapArray(function (idx) {\n        var itemModel = data.getItemModel(idx);\n        return [+itemModel.get('x'), +itemModel.get('y')];\n      });\n      var min = [];\n      var max = [];\n      bbox.fromPoints(positions, min, max); // If width or height is 0\n\n      if (max[0] - min[0] === 0) {\n        max[0] += 1;\n        min[0] -= 1;\n      }\n\n      if (max[1] - min[1] === 0) {\n        max[1] += 1;\n        min[1] -= 1;\n      }\n\n      var aspect = (max[0] - min[0]) / (max[1] - min[1]); // FIXME If get view rect after data processed?\n\n      var viewRect = getViewRect(seriesModel, api, aspect); // Position may be NaN, use view rect instead\n\n      if (isNaN(aspect)) {\n        min = [viewRect.x, viewRect.y];\n        max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height];\n      }\n\n      var bbWidth = max[0] - min[0];\n      var bbHeight = max[1] - min[1];\n      var viewWidth = viewRect.width;\n      var viewHeight = viewRect.height;\n      var viewCoordSys = seriesModel.coordinateSystem = new View();\n      viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\n      viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight);\n      viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight); // Update roam info\n\n      viewCoordSys.setCenter(seriesModel.get('center'));\n      viewCoordSys.setZoom(seriesModel.get('zoom'));\n      viewList.push(viewCoordSys);\n    }\n  });\n  return viewList;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1125 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(1126);\n\n__webpack_require__(1127);\n\n/***/ }),\n/* 1126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListSimply = __webpack_require__(217);\n\nvar SeriesModel = __webpack_require__(75);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar GaugeSeries = SeriesModel.extend({\n  type: 'series.gauge',\n  getInitialData: function (option, ecModel) {\n    return createListSimply(this, ['value']);\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    // 默认全局居中\n    center: ['50%', '50%'],\n    legendHoverLink: true,\n    radius: '75%',\n    startAngle: 225,\n    endAngle: -45,\n    clockwise: true,\n    // 最小值\n    min: 0,\n    // 最大值\n    max: 100,\n    // 分割段数，默认为10\n    splitNumber: 10,\n    // 坐标轴线\n    axisLine: {\n      // 默认显示，属性show控制显示与否\n      show: true,\n      lineStyle: {\n        // 属性lineStyle控制线条样式\n        color: [[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']],\n        width: 30\n      }\n    },\n    // 分隔线\n    splitLine: {\n      // 默认显示，属性show控制显示与否\n      show: true,\n      // 属性length控制线长\n      length: 30,\n      // 属性lineStyle（详见lineStyle）控制线条样式\n      lineStyle: {\n        color: '#eee',\n        width: 2,\n        type: 'solid'\n      }\n    },\n    // 坐标轴小标记\n    axisTick: {\n      // 属性show控制显示与否，默认不显示\n      show: true,\n      // 每份split细分多少段\n      splitNumber: 5,\n      // 属性length控制线长\n      length: 8,\n      // 属性lineStyle控制线条样式\n      lineStyle: {\n        color: '#eee',\n        width: 1,\n        type: 'solid'\n      }\n    },\n    axisLabel: {\n      show: true,\n      distance: 5,\n      // formatter: null,\n      color: 'auto'\n    },\n    pointer: {\n      show: true,\n      length: '80%',\n      width: 8\n    },\n    itemStyle: {\n      color: 'auto'\n    },\n    title: {\n      show: true,\n      // x, y，单位px\n      offsetCenter: [0, '-40%'],\n      // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n      color: '#333',\n      fontSize: 15\n    },\n    detail: {\n      show: true,\n      backgroundColor: 'rgba(0,0,0,0)',\n      borderWidth: 0,\n      borderColor: '#ccc',\n      width: 100,\n      height: null,\n      // self-adaption\n      padding: [5, 10],\n      // x, y，单位px\n      offsetCenter: [0, '40%'],\n      // formatter: null,\n      // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n      color: 'auto',\n      fontSize: 30\n    }\n  }\n});\nvar _default = GaugeSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar PointerPath = __webpack_require__(1128);\n\nvar graphic = __webpack_require__(23);\n\nvar ChartView = __webpack_require__(131);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\nvar round = _number.round;\nvar linearMap = _number.linearMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction parsePosition(seriesModel, api) {\n  var center = seriesModel.get('center');\n  var width = api.getWidth();\n  var height = api.getHeight();\n  var size = Math.min(width, height);\n  var cx = parsePercent(center[0], api.getWidth());\n  var cy = parsePercent(center[1], api.getHeight());\n  var r = parsePercent(seriesModel.get('radius'), size / 2);\n  return {\n    cx: cx,\n    cy: cy,\n    r: r\n  };\n}\n\nfunction formatLabel(label, labelFormatter) {\n  if (labelFormatter) {\n    if (typeof labelFormatter === 'string') {\n      label = labelFormatter.replace('{value}', label != null ? label : '');\n    } else if (typeof labelFormatter === 'function') {\n      label = labelFormatter(label);\n    }\n  }\n\n  return label;\n}\n\nvar PI2 = Math.PI * 2;\nvar GaugeView = ChartView.extend({\n  type: 'gauge',\n  render: function (seriesModel, ecModel, api) {\n    this.group.removeAll();\n    var colorList = seriesModel.get('axisLine.lineStyle.color');\n    var posInfo = parsePosition(seriesModel, api);\n\n    this._renderMain(seriesModel, ecModel, api, colorList, posInfo);\n  },\n  dispose: function () {},\n  _renderMain: function (seriesModel, ecModel, api, colorList, posInfo) {\n    var group = this.group;\n    var axisLineModel = seriesModel.getModel('axisLine');\n    var lineStyleModel = axisLineModel.getModel('lineStyle');\n    var clockwise = seriesModel.get('clockwise');\n    var startAngle = -seriesModel.get('startAngle') / 180 * Math.PI;\n    var endAngle = -seriesModel.get('endAngle') / 180 * Math.PI;\n    var angleRangeSpan = (endAngle - startAngle) % PI2;\n    var prevEndAngle = startAngle;\n    var axisLineWidth = lineStyleModel.get('width');\n    var showAxis = axisLineModel.get('show');\n\n    for (var i = 0; showAxis && i < colorList.length; i++) {\n      // Clamp\n      var percent = Math.min(Math.max(colorList[i][0], 0), 1);\n      var endAngle = startAngle + angleRangeSpan * percent;\n      var sector = new graphic.Sector({\n        shape: {\n          startAngle: prevEndAngle,\n          endAngle: endAngle,\n          cx: posInfo.cx,\n          cy: posInfo.cy,\n          clockwise: clockwise,\n          r0: posInfo.r - axisLineWidth,\n          r: posInfo.r\n        },\n        silent: true\n      });\n      sector.setStyle({\n        fill: colorList[i][1]\n      });\n      sector.setStyle(lineStyleModel.getLineStyle( // Because we use sector to simulate arc\n      // so the properties for stroking are useless\n      ['color', 'borderWidth', 'borderColor']));\n      group.add(sector);\n      prevEndAngle = endAngle;\n    }\n\n    var getColor = function (percent) {\n      // Less than 0\n      if (percent <= 0) {\n        return colorList[0][1];\n      }\n\n      for (var i = 0; i < colorList.length; i++) {\n        if (colorList[i][0] >= percent && (i === 0 ? 0 : colorList[i - 1][0]) < percent) {\n          return colorList[i][1];\n        }\n      } // More than 1\n\n\n      return colorList[i - 1][1];\n    };\n\n    if (!clockwise) {\n      var tmp = startAngle;\n      startAngle = endAngle;\n      endAngle = tmp;\n    }\n\n    this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise);\n\n    this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise);\n\n    this._renderTitle(seriesModel, ecModel, api, getColor, posInfo);\n\n    this._renderDetail(seriesModel, ecModel, api, getColor, posInfo);\n  },\n  _renderTicks: function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise) {\n    var group = this.group;\n    var cx = posInfo.cx;\n    var cy = posInfo.cy;\n    var r = posInfo.r;\n    var minVal = +seriesModel.get('min');\n    var maxVal = +seriesModel.get('max');\n    var splitLineModel = seriesModel.getModel('splitLine');\n    var tickModel = seriesModel.getModel('axisTick');\n    var labelModel = seriesModel.getModel('axisLabel');\n    var splitNumber = seriesModel.get('splitNumber');\n    var subSplitNumber = tickModel.get('splitNumber');\n    var splitLineLen = parsePercent(splitLineModel.get('length'), r);\n    var tickLen = parsePercent(tickModel.get('length'), r);\n    var angle = startAngle;\n    var step = (endAngle - startAngle) / splitNumber;\n    var subStep = step / subSplitNumber;\n    var splitLineStyle = splitLineModel.getModel('lineStyle').getLineStyle();\n    var tickLineStyle = tickModel.getModel('lineStyle').getLineStyle();\n\n    for (var i = 0; i <= splitNumber; i++) {\n      var unitX = Math.cos(angle);\n      var unitY = Math.sin(angle); // Split line\n\n      if (splitLineModel.get('show')) {\n        var splitLine = new graphic.Line({\n          shape: {\n            x1: unitX * r + cx,\n            y1: unitY * r + cy,\n            x2: unitX * (r - splitLineLen) + cx,\n            y2: unitY * (r - splitLineLen) + cy\n          },\n          style: splitLineStyle,\n          silent: true\n        });\n\n        if (splitLineStyle.stroke === 'auto') {\n          splitLine.setStyle({\n            stroke: getColor(i / splitNumber)\n          });\n        }\n\n        group.add(splitLine);\n      } // Label\n\n\n      if (labelModel.get('show')) {\n        var label = formatLabel(round(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get('formatter'));\n        var distance = labelModel.get('distance');\n        var autoColor = getColor(i / splitNumber);\n        group.add(new graphic.Text({\n          style: graphic.setTextStyle({}, labelModel, {\n            text: label,\n            x: unitX * (r - splitLineLen - distance) + cx,\n            y: unitY * (r - splitLineLen - distance) + cy,\n            textVerticalAlign: unitY < -0.4 ? 'top' : unitY > 0.4 ? 'bottom' : 'middle',\n            textAlign: unitX < -0.4 ? 'left' : unitX > 0.4 ? 'right' : 'center'\n          }, {\n            autoColor: autoColor\n          }),\n          silent: true\n        }));\n      } // Axis tick\n\n\n      if (tickModel.get('show') && i !== splitNumber) {\n        for (var j = 0; j <= subSplitNumber; j++) {\n          var unitX = Math.cos(angle);\n          var unitY = Math.sin(angle);\n          var tickLine = new graphic.Line({\n            shape: {\n              x1: unitX * r + cx,\n              y1: unitY * r + cy,\n              x2: unitX * (r - tickLen) + cx,\n              y2: unitY * (r - tickLen) + cy\n            },\n            silent: true,\n            style: tickLineStyle\n          });\n\n          if (tickLineStyle.stroke === 'auto') {\n            tickLine.setStyle({\n              stroke: getColor((i + j / subSplitNumber) / splitNumber)\n            });\n          }\n\n          group.add(tickLine);\n          angle += subStep;\n        }\n\n        angle -= subStep;\n      } else {\n        angle += step;\n      }\n    }\n  },\n  _renderPointer: function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise) {\n    var group = this.group;\n    var oldData = this._data;\n\n    if (!seriesModel.get('pointer.show')) {\n      // Remove old element\n      oldData && oldData.eachItemGraphicEl(function (el) {\n        group.remove(el);\n      });\n      return;\n    }\n\n    var valueExtent = [+seriesModel.get('min'), +seriesModel.get('max')];\n    var angleExtent = [startAngle, endAngle];\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    data.diff(oldData).add(function (idx) {\n      var pointer = new PointerPath({\n        shape: {\n          angle: startAngle\n        }\n      });\n      graphic.initProps(pointer, {\n        shape: {\n          angle: linearMap(data.get(valueDim, idx), valueExtent, angleExtent, true)\n        }\n      }, seriesModel);\n      group.add(pointer);\n      data.setItemGraphicEl(idx, pointer);\n    }).update(function (newIdx, oldIdx) {\n      var pointer = oldData.getItemGraphicEl(oldIdx);\n      graphic.updateProps(pointer, {\n        shape: {\n          angle: linearMap(data.get(valueDim, newIdx), valueExtent, angleExtent, true)\n        }\n      }, seriesModel);\n      group.add(pointer);\n      data.setItemGraphicEl(newIdx, pointer);\n    }).remove(function (idx) {\n      var pointer = oldData.getItemGraphicEl(idx);\n      group.remove(pointer);\n    }).execute();\n    data.eachItemGraphicEl(function (pointer, idx) {\n      var itemModel = data.getItemModel(idx);\n      var pointerModel = itemModel.getModel('pointer');\n      pointer.setShape({\n        x: posInfo.cx,\n        y: posInfo.cy,\n        width: parsePercent(pointerModel.get('width'), posInfo.r),\n        r: parsePercent(pointerModel.get('length'), posInfo.r)\n      });\n      pointer.useStyle(itemModel.getModel('itemStyle').getItemStyle());\n\n      if (pointer.style.fill === 'auto') {\n        pointer.setStyle('fill', getColor(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true)));\n      }\n\n      graphic.setHoverStyle(pointer, itemModel.getModel('emphasis.itemStyle').getItemStyle());\n    });\n    this._data = data;\n  },\n  _renderTitle: function (seriesModel, ecModel, api, getColor, posInfo) {\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    var titleModel = seriesModel.getModel('title');\n\n    if (titleModel.get('show')) {\n      var offsetCenter = titleModel.get('offsetCenter');\n      var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r);\n      var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r);\n      var minVal = +seriesModel.get('min');\n      var maxVal = +seriesModel.get('max');\n      var value = seriesModel.getData().get(valueDim, 0);\n      var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\n      this.group.add(new graphic.Text({\n        silent: true,\n        style: graphic.setTextStyle({}, titleModel, {\n          x: x,\n          y: y,\n          // FIXME First data name ?\n          text: data.getName(0),\n          textAlign: 'center',\n          textVerticalAlign: 'middle'\n        }, {\n          autoColor: autoColor,\n          forceRich: true\n        })\n      }));\n    }\n  },\n  _renderDetail: function (seriesModel, ecModel, api, getColor, posInfo) {\n    var detailModel = seriesModel.getModel('detail');\n    var minVal = +seriesModel.get('min');\n    var maxVal = +seriesModel.get('max');\n\n    if (detailModel.get('show')) {\n      var offsetCenter = detailModel.get('offsetCenter');\n      var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r);\n      var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r);\n      var width = parsePercent(detailModel.get('width'), posInfo.r);\n      var height = parsePercent(detailModel.get('height'), posInfo.r);\n      var data = seriesModel.getData();\n      var value = data.get(data.mapDimension('value'), 0);\n      var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\n      this.group.add(new graphic.Text({\n        silent: true,\n        style: graphic.setTextStyle({}, detailModel, {\n          x: x,\n          y: y,\n          text: formatLabel( // FIXME First data name ?\n          value, detailModel.get('formatter')),\n          textWidth: isNaN(width) ? null : width,\n          textHeight: isNaN(height) ? null : height,\n          textAlign: 'center',\n          textVerticalAlign: 'middle'\n        }, {\n          autoColor: autoColor,\n          forceRich: true\n        })\n      }));\n    }\n  }\n});\nvar _default = GaugeView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Path = __webpack_require__(63);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = Path.extend({\n  type: 'echartsGaugePointer',\n  shape: {\n    angle: 0,\n    width: 10,\n    r: 10,\n    x: 0,\n    y: 0\n  },\n  buildPath: function (ctx, shape) {\n    var mathCos = Math.cos;\n    var mathSin = Math.sin;\n    var r = shape.r;\n    var width = shape.width;\n    var angle = shape.angle;\n    var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2);\n    var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2);\n    angle = shape.angle - Math.PI / 2;\n    ctx.moveTo(x, y);\n    ctx.lineTo(shape.x + mathCos(angle) * width, shape.y + mathSin(angle) * width);\n    ctx.lineTo(shape.x + mathCos(shape.angle) * r, shape.y + mathSin(shape.angle) * r);\n    ctx.lineTo(shape.x - mathCos(angle) * width, shape.y - mathSin(angle) * width);\n    ctx.lineTo(x, y);\n    return;\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1129 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1130);\n\n__webpack_require__(1131);\n\nvar dataColor = __webpack_require__(335);\n\nvar funnelLayout = __webpack_require__(1132);\n\nvar dataFilter = __webpack_require__(265);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(dataColor('funnel'));\necharts.registerLayout(funnelLayout);\necharts.registerProcessor(dataFilter('funnel'));\n\n/***/ }),\n/* 1130 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar createListSimply = __webpack_require__(217);\n\nvar _model = __webpack_require__(31);\n\nvar defaultEmphasis = _model.defaultEmphasis;\n\nvar _sourceHelper = __webpack_require__(144);\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\n\nvar LegendVisualProvider = __webpack_require__(264);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar FunnelSeries = echarts.extendSeriesModel({\n  type: 'series.funnel',\n  init: function (option) {\n    FunnelSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n    this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this)); // Extend labelLine emphasis\n\n    this._defaultLabelLine(option);\n  },\n  getInitialData: function (option, ecModel) {\n    return createListSimply(this, {\n      coordDimensions: ['value'],\n      encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n    });\n  },\n  _defaultLabelLine: function (option) {\n    // Extend labelLine emphasis\n    defaultEmphasis(option, 'labelLine', ['show']);\n    var labelLineNormalOpt = option.labelLine;\n    var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n    labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n    labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n  },\n  // Overwrite\n  getDataParams: function (dataIndex) {\n    var data = this.getData();\n    var params = FunnelSeries.superCall(this, 'getDataParams', dataIndex);\n    var valueDim = data.mapDimension('value');\n    var sum = data.getSum(valueDim); // Percent is 0 if sum is 0\n\n    params.percent = !sum ? 0 : +(data.get(valueDim, dataIndex) / sum * 100).toFixed(2);\n    params.$vars.push('percent');\n    return params;\n  },\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 2,\n    // 二级层叠\n    legendHoverLink: true,\n    left: 80,\n    top: 60,\n    right: 80,\n    bottom: 60,\n    // width: {totalWidth} - left - right,\n    // height: {totalHeight} - top - bottom,\n    // 默认取数据最小最大值\n    // min: 0,\n    // max: 100,\n    minSize: '0%',\n    maxSize: '100%',\n    sort: 'descending',\n    // 'ascending', 'descending'\n    orient: 'vertical',\n    gap: 0,\n    funnelAlign: 'center',\n    label: {\n      show: true,\n      position: 'outer' // formatter: 标签文本格式器，同Tooltip.formatter，不支持异步回调\n\n    },\n    labelLine: {\n      show: true,\n      length: 20,\n      lineStyle: {\n        // color: 各异,\n        width: 1,\n        type: 'solid'\n      }\n    },\n    itemStyle: {\n      // color: 各异,\n      borderColor: '#fff',\n      borderWidth: 1\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    }\n  }\n});\nvar _default = FunnelSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar zrUtil = __webpack_require__(2);\n\nvar ChartView = __webpack_require__(131);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Piece of pie including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\nfunction FunnelPiece(data, idx) {\n  graphic.Group.call(this);\n  var polygon = new graphic.Polygon();\n  var labelLine = new graphic.Polyline();\n  var text = new graphic.Text();\n  this.add(polygon);\n  this.add(labelLine);\n  this.add(text);\n\n  this.highDownOnUpdate = function (fromState, toState) {\n    if (toState === 'emphasis') {\n      labelLine.ignore = labelLine.hoverIgnore;\n      text.ignore = text.hoverIgnore;\n    } else {\n      labelLine.ignore = labelLine.normalIgnore;\n      text.ignore = text.normalIgnore;\n    }\n  };\n\n  this.updateData(data, idx, true);\n}\n\nvar funnelPieceProto = FunnelPiece.prototype;\nvar opacityAccessPath = ['itemStyle', 'opacity'];\n\nfunnelPieceProto.updateData = function (data, idx, firstCreate) {\n  var polygon = this.childAt(0);\n  var seriesModel = data.hostModel;\n  var itemModel = data.getItemModel(idx);\n  var layout = data.getItemLayout(idx);\n  var opacity = data.getItemModel(idx).get(opacityAccessPath);\n  opacity = opacity == null ? 1 : opacity; // Reset style\n\n  polygon.useStyle({});\n\n  if (firstCreate) {\n    polygon.setShape({\n      points: layout.points\n    });\n    polygon.setStyle({\n      opacity: 0\n    });\n    graphic.initProps(polygon, {\n      style: {\n        opacity: opacity\n      }\n    }, seriesModel, idx);\n  } else {\n    graphic.updateProps(polygon, {\n      style: {\n        opacity: opacity\n      },\n      shape: {\n        points: layout.points\n      }\n    }, seriesModel, idx);\n  } // Update common style\n\n\n  var itemStyleModel = itemModel.getModel('itemStyle');\n  var visualColor = data.getItemVisual(idx, 'color');\n  polygon.setStyle(zrUtil.defaults({\n    lineJoin: 'round',\n    fill: visualColor\n  }, itemStyleModel.getItemStyle(['opacity'])));\n  polygon.hoverStyle = itemStyleModel.getModel('emphasis').getItemStyle();\n\n  this._updateLabel(data, idx);\n\n  graphic.setHoverStyle(this);\n};\n\nfunnelPieceProto._updateLabel = function (data, idx) {\n  var labelLine = this.childAt(1);\n  var labelText = this.childAt(2);\n  var seriesModel = data.hostModel;\n  var itemModel = data.getItemModel(idx);\n  var layout = data.getItemLayout(idx);\n  var labelLayout = layout.label;\n  var visualColor = data.getItemVisual(idx, 'color');\n  graphic.updateProps(labelLine, {\n    shape: {\n      points: labelLayout.linePoints || labelLayout.linePoints\n    }\n  }, seriesModel, idx);\n  graphic.updateProps(labelText, {\n    style: {\n      x: labelLayout.x,\n      y: labelLayout.y\n    }\n  }, seriesModel, idx);\n  labelText.attr({\n    rotation: labelLayout.rotation,\n    origin: [labelLayout.x, labelLayout.y],\n    z2: 10\n  });\n  var labelModel = itemModel.getModel('label');\n  var labelHoverModel = itemModel.getModel('emphasis.label');\n  var labelLineModel = itemModel.getModel('labelLine');\n  var labelLineHoverModel = itemModel.getModel('emphasis.labelLine');\n  var visualColor = data.getItemVisual(idx, 'color');\n  graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {\n    labelFetcher: data.hostModel,\n    labelDataIndex: idx,\n    defaultText: data.getName(idx),\n    autoColor: visualColor,\n    useInsideStyle: !!labelLayout.inside\n  }, {\n    textAlign: labelLayout.textAlign,\n    textVerticalAlign: labelLayout.verticalAlign\n  });\n  labelText.ignore = labelText.normalIgnore = !labelModel.get('show');\n  labelText.hoverIgnore = !labelHoverModel.get('show');\n  labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show');\n  labelLine.hoverIgnore = !labelLineHoverModel.get('show'); // Default use item visual color\n\n  labelLine.setStyle({\n    stroke: visualColor\n  });\n  labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());\n  labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();\n};\n\nzrUtil.inherits(FunnelPiece, graphic.Group);\nvar FunnelView = ChartView.extend({\n  type: 'funnel',\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var group = this.group;\n    data.diff(oldData).add(function (idx) {\n      var funnelPiece = new FunnelPiece(data, idx);\n      data.setItemGraphicEl(idx, funnelPiece);\n      group.add(funnelPiece);\n    }).update(function (newIdx, oldIdx) {\n      var piePiece = oldData.getItemGraphicEl(oldIdx);\n      piePiece.updateData(data, newIdx);\n      group.add(piePiece);\n      data.setItemGraphicEl(newIdx, piePiece);\n    }).remove(function (idx) {\n      var piePiece = oldData.getItemGraphicEl(idx);\n      group.remove(piePiece);\n    }).execute();\n    this._data = data;\n  },\n  remove: function () {\n    this.group.removeAll();\n    this._data = null;\n  },\n  dispose: function () {}\n});\nvar _default = FunnelView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar layout = __webpack_require__(49);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\nvar linearMap = _number.linearMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nfunction getSortedIndices(data, sort) {\n  var valueDim = data.mapDimension('value');\n  var valueArr = data.mapArray(valueDim, function (val) {\n    return val;\n  });\n  var indices = [];\n  var isAscending = sort === 'ascending';\n\n  for (var i = 0, len = data.count(); i < len; i++) {\n    indices[i] = i;\n  } // Add custom sortable function & none sortable opetion by \"options.sort\"\n\n\n  if (typeof sort === 'function') {\n    indices.sort(sort);\n  } else if (sort !== 'none') {\n    indices.sort(function (a, b) {\n      return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a];\n    });\n  }\n\n  return indices;\n}\n\nfunction labelLayout(data) {\n  data.each(function (idx) {\n    var itemModel = data.getItemModel(idx);\n    var labelModel = itemModel.getModel('label');\n    var labelPosition = labelModel.get('position');\n    var orient = itemModel.get('orient');\n    var labelLineModel = itemModel.getModel('labelLine');\n    var layout = data.getItemLayout(idx);\n    var points = layout.points;\n    var isLabelInside = labelPosition === 'inner' || labelPosition === 'inside' || labelPosition === 'center' || labelPosition === 'insideLeft' || labelPosition === 'insideRight';\n    var textAlign;\n    var textX;\n    var textY;\n    var linePoints;\n\n    if (isLabelInside) {\n      if (labelPosition === 'insideLeft') {\n        textX = (points[0][0] + points[3][0]) / 2 + 5;\n        textY = (points[0][1] + points[3][1]) / 2;\n        textAlign = 'left';\n      } else if (labelPosition === 'insideRight') {\n        textX = (points[1][0] + points[2][0]) / 2 - 5;\n        textY = (points[1][1] + points[2][1]) / 2;\n        textAlign = 'right';\n      } else {\n        textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;\n        textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;\n        textAlign = 'center';\n      }\n\n      linePoints = [[textX, textY], [textX, textY]];\n    } else {\n      var x1;\n      var y1;\n      var x2;\n      var y2;\n      var labelLineLen = labelLineModel.get('length');\n\n      if (labelPosition === 'left') {\n        // Left side\n        x1 = (points[3][0] + points[0][0]) / 2;\n        y1 = (points[3][1] + points[0][1]) / 2;\n        x2 = x1 - labelLineLen;\n        textX = x2 - 5;\n        textAlign = 'right';\n      } else if (labelPosition === 'right') {\n        // Right side\n        x1 = (points[1][0] + points[2][0]) / 2;\n        y1 = (points[1][1] + points[2][1]) / 2;\n        x2 = x1 + labelLineLen;\n        textX = x2 + 5;\n        textAlign = 'left';\n      } else if (labelPosition === 'top') {\n        // Top side\n        x1 = (points[3][0] + points[0][0]) / 2;\n        y1 = (points[3][1] + points[0][1]) / 2;\n        y2 = y1 - labelLineLen;\n        textY = y2 - 5;\n        textAlign = 'center';\n      } else if (labelPosition === 'bottom') {\n        // Bottom side\n        x1 = (points[1][0] + points[2][0]) / 2;\n        y1 = (points[1][1] + points[2][1]) / 2;\n        y2 = y1 + labelLineLen;\n        textY = y2 + 5;\n        textAlign = 'center';\n      } else if (labelPosition === 'rightTop') {\n        // RightTop side\n        x1 = orient === 'horizontal' ? points[3][0] : points[1][0];\n        y1 = orient === 'horizontal' ? points[3][1] : points[1][1];\n\n        if (orient === 'horizontal') {\n          y2 = y1 - labelLineLen;\n          textY = y2 - 5;\n          textAlign = 'center';\n        } else {\n          x2 = x1 + labelLineLen;\n          textX = x2 + 5;\n          textAlign = 'top';\n        }\n      } else if (labelPosition === 'rightBottom') {\n        // RightBottom side\n        x1 = points[2][0];\n        y1 = points[2][1];\n\n        if (orient === 'horizontal') {\n          y2 = y1 + labelLineLen;\n          textY = y2 + 5;\n          textAlign = 'center';\n        } else {\n          x2 = x1 + labelLineLen;\n          textX = x2 + 5;\n          textAlign = 'bottom';\n        }\n      } else if (labelPosition === 'leftTop') {\n        // LeftTop side\n        x1 = points[0][0];\n        y1 = orient === 'horizontal' ? points[0][1] : points[1][1];\n\n        if (orient === 'horizontal') {\n          y2 = y1 - labelLineLen;\n          textY = y2 - 5;\n          textAlign = 'center';\n        } else {\n          x2 = x1 - labelLineLen;\n          textX = x2 - 5;\n          textAlign = 'right';\n        }\n      } else if (labelPosition === 'leftBottom') {\n        // LeftBottom side\n        x1 = orient === 'horizontal' ? points[1][0] : points[3][0];\n        y1 = orient === 'horizontal' ? points[1][1] : points[2][1];\n\n        if (orient === 'horizontal') {\n          y2 = y1 + labelLineLen;\n          textY = y2 + 5;\n          textAlign = 'center';\n        } else {\n          x2 = x1 - labelLineLen;\n          textX = x2 - 5;\n          textAlign = 'right';\n        }\n      } else {\n        // Right side or Bottom side\n        x1 = (points[1][0] + points[2][0]) / 2;\n        y1 = (points[1][1] + points[2][1]) / 2;\n\n        if (orient === 'horizontal') {\n          y2 = y1 + labelLineLen;\n          textY = y2 + 5;\n          textAlign = 'center';\n        } else {\n          x2 = x1 + labelLineLen;\n          textX = x2 + 5;\n          textAlign = 'left';\n        }\n      }\n\n      if (orient === 'horizontal') {\n        x2 = x1;\n        textX = x2;\n      } else {\n        y2 = y1;\n        textY = y2;\n      }\n\n      linePoints = [[x1, y1], [x2, y2]];\n    }\n\n    layout.label = {\n      linePoints: linePoints,\n      x: textX,\n      y: textY,\n      verticalAlign: 'middle',\n      textAlign: textAlign,\n      inside: isLabelInside\n    };\n  });\n}\n\nfunction _default(ecModel, api, payload) {\n  ecModel.eachSeriesByType('funnel', function (seriesModel) {\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    var sort = seriesModel.get('sort');\n    var viewRect = getViewRect(seriesModel, api);\n    var indices = getSortedIndices(data, sort);\n    var orient = seriesModel.get('orient');\n    var viewWidth = viewRect.width;\n    var viewHeight = viewRect.height;\n    var x = viewRect.x;\n    var y = viewRect.y;\n    var sizeExtent = orient === 'horizontal' ? [parsePercent(seriesModel.get('minSize'), viewHeight), parsePercent(seriesModel.get('maxSize'), viewHeight)] : [parsePercent(seriesModel.get('minSize'), viewWidth), parsePercent(seriesModel.get('maxSize'), viewWidth)];\n    var dataExtent = data.getDataExtent(valueDim);\n    var min = seriesModel.get('min');\n    var max = seriesModel.get('max');\n\n    if (min == null) {\n      min = Math.min(dataExtent[0], 0);\n    }\n\n    if (max == null) {\n      max = dataExtent[1];\n    }\n\n    var funnelAlign = seriesModel.get('funnelAlign');\n    var gap = seriesModel.get('gap');\n    var viewSize = orient === 'horizontal' ? viewWidth : viewHeight;\n    var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();\n\n    var getLinePoints = function (idx, offset) {\n      // End point index is data.count() and we assign it 0\n      if (orient === 'horizontal') {\n        var val = data.get(valueDim, idx) || 0;\n        var itemHeight = linearMap(val, [min, max], sizeExtent, true);\n        var y0;\n\n        switch (funnelAlign) {\n          case 'top':\n            y0 = y;\n            break;\n\n          case 'center':\n            y0 = y + (viewHeight - itemHeight) / 2;\n            break;\n\n          case 'bottom':\n            y0 = y + (viewHeight - itemHeight);\n            break;\n        }\n\n        return [[offset, y0], [offset, y0 + itemHeight]];\n      }\n\n      var val = data.get(valueDim, idx) || 0;\n      var itemWidth = linearMap(val, [min, max], sizeExtent, true);\n      var x0;\n\n      switch (funnelAlign) {\n        case 'left':\n          x0 = x;\n          break;\n\n        case 'center':\n          x0 = x + (viewWidth - itemWidth) / 2;\n          break;\n\n        case 'right':\n          x0 = x + viewWidth - itemWidth;\n          break;\n      }\n\n      return [[x0, offset], [x0 + itemWidth, offset]];\n    };\n\n    if (sort === 'ascending') {\n      // From bottom to top\n      itemSize = -itemSize;\n      gap = -gap;\n\n      if (orient === 'horizontal') {\n        x += viewWidth;\n      } else {\n        y += viewHeight;\n      }\n\n      indices = indices.reverse();\n    }\n\n    for (var i = 0; i < indices.length; i++) {\n      var idx = indices[i];\n      var nextIdx = indices[i + 1];\n      var itemModel = data.getItemModel(idx);\n\n      if (orient === 'horizontal') {\n        var width = itemModel.get('itemStyle.width');\n\n        if (width == null) {\n          width = itemSize;\n        } else {\n          width = parsePercent(width, viewWidth);\n\n          if (sort === 'ascending') {\n            width = -width;\n          }\n        }\n\n        var start = getLinePoints(idx, x);\n        var end = getLinePoints(nextIdx, x + width);\n        x += width + gap;\n        data.setItemLayout(idx, {\n          points: start.concat(end.slice().reverse())\n        });\n      } else {\n        var height = itemModel.get('itemStyle.height');\n\n        if (height == null) {\n          height = itemSize;\n        } else {\n          height = parsePercent(height, viewHeight);\n\n          if (sort === 'ascending') {\n            height = -height;\n          }\n        }\n\n        var start = orient === 'horizontal' ? getLinePoints(idx, x) : getLinePoints(idx, y);\n        var end = orient === 'horizontal' ? getLinePoints(nextIdx, x + width) : getLinePoints(nextIdx, y + height);\n        y += height + gap;\n        data.setItemLayout(idx, {\n          points: start.concat(end.slice().reverse())\n        });\n      }\n    }\n\n    labelLayout(data);\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(599);\n\n__webpack_require__(1142);\n\n__webpack_require__(1143);\n\nvar parallelVisual = __webpack_require__(1144);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(parallelVisual);\n\n/***/ }),\n/* 1134 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar modelUtil = __webpack_require__(31);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(option) {\n  createParallelIfNeeded(option);\n  mergeAxisOptionFromParallel(option);\n}\n/**\n * Create a parallel coordinate if not exists.\n * @inner\n */\n\n\nfunction createParallelIfNeeded(option) {\n  if (option.parallel) {\n    return;\n  }\n\n  var hasParallelSeries = false;\n  zrUtil.each(option.series, function (seriesOpt) {\n    if (seriesOpt && seriesOpt.type === 'parallel') {\n      hasParallelSeries = true;\n    }\n  });\n\n  if (hasParallelSeries) {\n    option.parallel = [{}];\n  }\n}\n/**\n * Merge aixs definition from parallel option (if exists) to axis option.\n * @inner\n */\n\n\nfunction mergeAxisOptionFromParallel(option) {\n  var axes = modelUtil.normalizeToArray(option.parallelAxis);\n  zrUtil.each(axes, function (axisOption) {\n    if (!zrUtil.isObject(axisOption)) {\n      return;\n    }\n\n    var parallelIndex = axisOption.parallelIndex || 0;\n    var parallelOption = modelUtil.normalizeToArray(option.parallel)[parallelIndex];\n\n    if (parallelOption && parallelOption.parallelAxisDefault) {\n      zrUtil.merge(axisOption, parallelOption.parallelAxisDefault, false);\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1135 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar matrix = __webpack_require__(89);\n\nvar layoutUtil = __webpack_require__(49);\n\nvar axisHelper = __webpack_require__(122);\n\nvar ParallelAxis = __webpack_require__(1136);\n\nvar graphic = __webpack_require__(23);\n\nvar numberUtil = __webpack_require__(26);\n\nvar sliderMove = __webpack_require__(218);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parallel Coordinates\n * <https://en.wikipedia.org/wiki/Parallel_coordinates>\n */\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar round = numberUtil.round;\nvar PI = Math.PI;\n\nfunction Parallel(parallelModel, ecModel, api) {\n  /**\n   * key: dimension\n   * @type {Object.<string, module:echarts/coord/parallel/Axis>}\n   * @private\n   */\n  this._axesMap = zrUtil.createHashMap();\n  /**\n   * key: dimension\n   * value: {position: [], rotation, }\n   * @type {Object.<string, Object>}\n   * @private\n   */\n\n  this._axesLayout = {};\n  /**\n   * Always follow axis order.\n   * @type {Array.<string>}\n   * @readOnly\n   */\n\n  this.dimensions = parallelModel.dimensions;\n  /**\n   * @type {module:zrender/core/BoundingRect}\n   */\n\n  this._rect;\n  /**\n   * @type {module:echarts/coord/parallel/ParallelModel}\n   */\n\n  this._model = parallelModel;\n\n  this._init(parallelModel, ecModel, api);\n}\n\nParallel.prototype = {\n  type: 'parallel',\n  constructor: Parallel,\n\n  /**\n   * Initialize cartesian coordinate systems\n   * @private\n   */\n  _init: function (parallelModel, ecModel, api) {\n    var dimensions = parallelModel.dimensions;\n    var parallelAxisIndex = parallelModel.parallelAxisIndex;\n    each(dimensions, function (dim, idx) {\n      var axisIndex = parallelAxisIndex[idx];\n      var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n\n      var axis = this._axesMap.set(dim, new ParallelAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisIndex));\n\n      var isCategory = axis.type === 'category';\n      axis.onBand = isCategory && axisModel.get('boundaryGap');\n      axis.inverse = axisModel.get('inverse'); // Injection\n\n      axisModel.axis = axis;\n      axis.model = axisModel;\n      axis.coordinateSystem = axisModel.coordinateSystem = this;\n    }, this);\n  },\n\n  /**\n   * Update axis scale after data processed\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  update: function (ecModel, api) {\n    this._updateAxesFromSeries(this._model, ecModel);\n  },\n\n  /**\n   * @override\n   */\n  containPoint: function (point) {\n    var layoutInfo = this._makeLayoutInfo();\n\n    var axisBase = layoutInfo.axisBase;\n    var layoutBase = layoutInfo.layoutBase;\n    var pixelDimIndex = layoutInfo.pixelDimIndex;\n    var pAxis = point[1 - pixelDimIndex];\n    var pLayout = point[pixelDimIndex];\n    return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength;\n  },\n  getModel: function () {\n    return this._model;\n  },\n\n  /**\n   * Update properties from series\n   * @private\n   */\n  _updateAxesFromSeries: function (parallelModel, ecModel) {\n    ecModel.eachSeries(function (seriesModel) {\n      if (!parallelModel.contains(seriesModel, ecModel)) {\n        return;\n      }\n\n      var data = seriesModel.getData();\n      each(this.dimensions, function (dim) {\n        var axis = this._axesMap.get(dim);\n\n        axis.scale.unionExtentFromData(data, data.mapDimension(dim));\n        axisHelper.niceScaleExtent(axis.scale, axis.model);\n      }, this);\n    }, this);\n  },\n\n  /**\n   * Resize the parallel coordinate system.\n   * @param {module:echarts/coord/parallel/ParallelModel} parallelModel\n   * @param {module:echarts/ExtensionAPI} api\n   */\n  resize: function (parallelModel, api) {\n    this._rect = layoutUtil.getLayoutRect(parallelModel.getBoxLayoutParams(), {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n\n    this._layoutAxes();\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getRect: function () {\n    return this._rect;\n  },\n\n  /**\n   * @private\n   */\n  _makeLayoutInfo: function () {\n    var parallelModel = this._model;\n    var rect = this._rect;\n    var xy = ['x', 'y'];\n    var wh = ['width', 'height'];\n    var layout = parallelModel.get('layout');\n    var pixelDimIndex = layout === 'horizontal' ? 0 : 1;\n    var layoutLength = rect[wh[pixelDimIndex]];\n    var layoutExtent = [0, layoutLength];\n    var axisCount = this.dimensions.length;\n    var axisExpandWidth = restrict(parallelModel.get('axisExpandWidth'), layoutExtent);\n    var axisExpandCount = restrict(parallelModel.get('axisExpandCount') || 0, [0, axisCount]);\n    var axisExpandable = parallelModel.get('axisExpandable') && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0; // `axisExpandWindow` is According to the coordinates of [0, axisExpandLength],\n    // for sake of consider the case that axisCollapseWidth is 0 (when screen is narrow),\n    // where collapsed axes should be overlapped.\n\n    var axisExpandWindow = parallelModel.get('axisExpandWindow');\n    var winSize;\n\n    if (!axisExpandWindow) {\n      winSize = restrict(axisExpandWidth * (axisExpandCount - 1), layoutExtent);\n      var axisExpandCenter = parallelModel.get('axisExpandCenter') || mathFloor(axisCount / 2);\n      axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2];\n      axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n    } else {\n      winSize = restrict(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent);\n      axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n    }\n\n    var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); // Avoid axisCollapseWidth is too small.\n\n    axisCollapseWidth < 3 && (axisCollapseWidth = 0); // Find the first and last indices > ewin[0] and < ewin[1].\n\n    var winInnerIndices = [mathFloor(round(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil(round(axisExpandWindow[1] / axisExpandWidth, 1)) - 1]; // Pos in ec coordinates.\n\n    var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0];\n    return {\n      layout: layout,\n      pixelDimIndex: pixelDimIndex,\n      layoutBase: rect[xy[pixelDimIndex]],\n      layoutLength: layoutLength,\n      axisBase: rect[xy[1 - pixelDimIndex]],\n      axisLength: rect[wh[1 - pixelDimIndex]],\n      axisExpandable: axisExpandable,\n      axisExpandWidth: axisExpandWidth,\n      axisCollapseWidth: axisCollapseWidth,\n      axisExpandWindow: axisExpandWindow,\n      axisCount: axisCount,\n      winInnerIndices: winInnerIndices,\n      axisExpandWindow0Pos: axisExpandWindow0Pos\n    };\n  },\n\n  /**\n   * @private\n   */\n  _layoutAxes: function () {\n    var rect = this._rect;\n    var axes = this._axesMap;\n    var dimensions = this.dimensions;\n\n    var layoutInfo = this._makeLayoutInfo();\n\n    var layout = layoutInfo.layout;\n    axes.each(function (axis) {\n      var axisExtent = [0, layoutInfo.axisLength];\n      var idx = axis.inverse ? 1 : 0;\n      axis.setExtent(axisExtent[idx], axisExtent[1 - idx]);\n    });\n    each(dimensions, function (dim, idx) {\n      var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo);\n      var positionTable = {\n        horizontal: {\n          x: posInfo.position,\n          y: layoutInfo.axisLength\n        },\n        vertical: {\n          x: 0,\n          y: posInfo.position\n        }\n      };\n      var rotationTable = {\n        horizontal: PI / 2,\n        vertical: 0\n      };\n      var position = [positionTable[layout].x + rect.x, positionTable[layout].y + rect.y];\n      var rotation = rotationTable[layout];\n      var transform = matrix.create();\n      matrix.rotate(transform, transform, rotation);\n      matrix.translate(transform, transform, position); // TODO\n      // tick等排布信息。\n      // TODO\n      // 根据axis order 更新 dimensions顺序。\n\n      this._axesLayout[dim] = {\n        position: position,\n        rotation: rotation,\n        transform: transform,\n        axisNameAvailableWidth: posInfo.axisNameAvailableWidth,\n        axisLabelShow: posInfo.axisLabelShow,\n        nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,\n        tickDirection: 1,\n        labelDirection: 1\n      };\n    }, this);\n  },\n\n  /**\n   * Get axis by dim.\n   * @param {string} dim\n   * @return {module:echarts/coord/parallel/ParallelAxis} [description]\n   */\n  getAxis: function (dim) {\n    return this._axesMap.get(dim);\n  },\n\n  /**\n   * Convert a dim value of a single item of series data to Point.\n   * @param {*} value\n   * @param {string} dim\n   * @return {Array}\n   */\n  dataToPoint: function (value, dim) {\n    return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim);\n  },\n\n  /**\n   * Travel data for one time, get activeState of each data item.\n   * @param {module:echarts/data/List} data\n   * @param {Functio} cb param: {string} activeState 'active' or 'inactive' or 'normal'\n   *                            {number} dataIndex\n   * @param {number} [start=0] the start dataIndex that travel from.\n   * @param {number} [end=data.count()] the next dataIndex of the last dataIndex will be travel.\n   */\n  eachActiveState: function (data, callback, start, end) {\n    start == null && (start = 0);\n    end == null && (end = data.count());\n    var axesMap = this._axesMap;\n    var dimensions = this.dimensions;\n    var dataDimensions = [];\n    var axisModels = [];\n    zrUtil.each(dimensions, function (axisDim) {\n      dataDimensions.push(data.mapDimension(axisDim));\n      axisModels.push(axesMap.get(axisDim).model);\n    });\n    var hasActiveSet = this.hasAxisBrushed();\n\n    for (var dataIndex = start; dataIndex < end; dataIndex++) {\n      var activeState;\n\n      if (!hasActiveSet) {\n        activeState = 'normal';\n      } else {\n        activeState = 'active';\n        var values = data.getValues(dataDimensions, dataIndex);\n\n        for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n          var state = axisModels[j].getActiveState(values[j]);\n\n          if (state === 'inactive') {\n            activeState = 'inactive';\n            break;\n          }\n        }\n      }\n\n      callback(activeState, dataIndex);\n    }\n  },\n\n  /**\n   * Whether has any activeSet.\n   * @return {boolean}\n   */\n  hasAxisBrushed: function () {\n    var dimensions = this.dimensions;\n    var axesMap = this._axesMap;\n    var hasActiveSet = false;\n\n    for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n      if (axesMap.get(dimensions[j]).model.getActiveState() !== 'normal') {\n        hasActiveSet = true;\n      }\n    }\n\n    return hasActiveSet;\n  },\n\n  /**\n   * Convert coords of each axis to Point.\n   *  Return point. For example: [10, 20]\n   * @param {Array.<number>} coords\n   * @param {string} dim\n   * @return {Array.<number>}\n   */\n  axisCoordToPoint: function (coord, dim) {\n    var axisLayout = this._axesLayout[dim];\n    return graphic.applyTransform([coord, 0], axisLayout.transform);\n  },\n\n  /**\n   * Get axis layout.\n   */\n  getAxisLayout: function (dim) {\n    return zrUtil.clone(this._axesLayout[dim]);\n  },\n\n  /**\n   * @param {Array.<number>} point\n   * @return {Object} {axisExpandWindow, delta, behavior: 'jump' | 'slide' | 'none'}.\n   */\n  getSlidedAxisExpandWindow: function (point) {\n    var layoutInfo = this._makeLayoutInfo();\n\n    var pixelDimIndex = layoutInfo.pixelDimIndex;\n    var axisExpandWindow = layoutInfo.axisExpandWindow.slice();\n    var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n    var extent = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; // Out of the area of coordinate system.\n\n    if (!this.containPoint(point)) {\n      return {\n        behavior: 'none',\n        axisExpandWindow: axisExpandWindow\n      };\n    } // Conver the point from global to expand coordinates.\n\n\n    var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; // For dragging operation convenience, the window should not be\n    // slided when mouse is the center area of the window.\n\n    var delta;\n    var behavior = 'slide';\n    var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n\n    var triggerArea = this._model.get('axisExpandSlideTriggerArea'); // But consider touch device, jump is necessary.\n\n\n    var useJump = triggerArea[0] != null;\n\n    if (axisCollapseWidth) {\n      if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) {\n        behavior = 'jump';\n        delta = pointCoord - winSize * triggerArea[2];\n      } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) {\n        behavior = 'jump';\n        delta = pointCoord - winSize * (1 - triggerArea[2]);\n      } else {\n        (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0);\n      }\n\n      delta *= layoutInfo.axisExpandWidth / axisCollapseWidth;\n      delta ? sliderMove(delta, axisExpandWindow, extent, 'all') // Avoid nonsense triger on mousemove.\n      : behavior = 'none';\n    } // When screen is too narrow, make it visible and slidable, although it is hard to interact.\n    else {\n        var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n        var pos = extent[1] * pointCoord / winSize;\n        axisExpandWindow = [mathMax(0, pos - winSize / 2)];\n        axisExpandWindow[1] = mathMin(extent[1], axisExpandWindow[0] + winSize);\n        axisExpandWindow[0] = axisExpandWindow[1] - winSize;\n      }\n\n    return {\n      axisExpandWindow: axisExpandWindow,\n      behavior: behavior\n    };\n  }\n};\n\nfunction restrict(len, extent) {\n  return mathMin(mathMax(len, extent[0]), extent[1]);\n}\n\nfunction layoutAxisWithoutExpand(axisIndex, layoutInfo) {\n  var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1);\n  return {\n    position: step * axisIndex,\n    axisNameAvailableWidth: step,\n    axisLabelShow: true\n  };\n}\n\nfunction layoutAxisWithExpand(axisIndex, layoutInfo) {\n  var layoutLength = layoutInfo.layoutLength;\n  var axisExpandWidth = layoutInfo.axisExpandWidth;\n  var axisCount = layoutInfo.axisCount;\n  var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n  var winInnerIndices = layoutInfo.winInnerIndices;\n  var position;\n  var axisNameAvailableWidth = axisCollapseWidth;\n  var axisLabelShow = false;\n  var nameTruncateMaxWidth;\n\n  if (axisIndex < winInnerIndices[0]) {\n    position = axisIndex * axisCollapseWidth;\n    nameTruncateMaxWidth = axisCollapseWidth;\n  } else if (axisIndex <= winInnerIndices[1]) {\n    position = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0];\n    axisNameAvailableWidth = axisExpandWidth;\n    axisLabelShow = true;\n  } else {\n    position = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth;\n    nameTruncateMaxWidth = axisCollapseWidth;\n  }\n\n  return {\n    position: position,\n    axisNameAvailableWidth: axisNameAvailableWidth,\n    axisLabelShow: axisLabelShow,\n    nameTruncateMaxWidth: nameTruncateMaxWidth\n  };\n}\n\nvar _default = Parallel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1136 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Axis = __webpack_require__(155);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @constructor module:echarts/coord/parallel/ParallelAxis\n * @extends {module:echarts/coord/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.<number>} coordExtent\n * @param {string} axisType\n */\nvar ParallelAxis = function (dim, scale, coordExtent, axisType, axisIndex) {\n  Axis.call(this, dim, scale, coordExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = axisType || 'value';\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.axisIndex = axisIndex;\n};\n\nParallelAxis.prototype = {\n  constructor: ParallelAxis,\n\n  /**\n   * Axis model\n   * @param {module:echarts/coord/parallel/AxisModel}\n   */\n  model: null,\n\n  /**\n   * @override\n   */\n  isHorizontal: function () {\n    return this.coordinateSystem.getModel().get('layout') !== 'horizontal';\n  }\n};\nzrUtil.inherits(ParallelAxis, Axis);\nvar _default = ParallelAxis;\nmodule.exports = _default;\n\n/***/ }),\n/* 1137 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Component = __webpack_require__(74);\n\n__webpack_require__(1138);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = Component.extend({\n  type: 'parallel',\n  dependencies: ['parallelAxis'],\n\n  /**\n   * @type {module:echarts/coord/parallel/Parallel}\n   */\n  coordinateSystem: null,\n\n  /**\n   * Each item like: 'dim0', 'dim1', 'dim2', ...\n   * @type {Array.<string>}\n   * @readOnly\n   */\n  dimensions: null,\n\n  /**\n   * Coresponding to dimensions.\n   * @type {Array.<number>}\n   * @readOnly\n   */\n  parallelAxisIndex: null,\n  layoutMode: 'box',\n  defaultOption: {\n    zlevel: 0,\n    z: 0,\n    left: 80,\n    top: 60,\n    right: 80,\n    bottom: 60,\n    // width: {totalWidth} - left - right,\n    // height: {totalHeight} - top - bottom,\n    layout: 'horizontal',\n    // 'horizontal' or 'vertical'\n    // FIXME\n    // naming?\n    axisExpandable: false,\n    axisExpandCenter: null,\n    axisExpandCount: 0,\n    axisExpandWidth: 50,\n    // FIXME '10%' ?\n    axisExpandRate: 17,\n    axisExpandDebounce: 50,\n    // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full.\n    // Do not doc to user until necessary.\n    axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],\n    axisExpandTriggerOn: 'click',\n    // 'mousemove' or 'click'\n    parallelAxisDefault: null\n  },\n\n  /**\n   * @override\n   */\n  init: function () {\n    Component.prototype.init.apply(this, arguments);\n    this.mergeOption({});\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function (newOption) {\n    var thisOption = this.option;\n    newOption && zrUtil.merge(thisOption, newOption, true);\n\n    this._initDimensions();\n  },\n\n  /**\n   * Whether series or axis is in this coordinate system.\n   * @param {module:echarts/model/Series|module:echarts/coord/parallel/AxisModel} model\n   * @param {module:echarts/model/Global} ecModel\n   */\n  contains: function (model, ecModel) {\n    var parallelIndex = model.get('parallelIndex');\n    return parallelIndex != null && ecModel.getComponent('parallel', parallelIndex) === this;\n  },\n  setAxisExpand: function (opt) {\n    zrUtil.each(['axisExpandable', 'axisExpandCenter', 'axisExpandCount', 'axisExpandWidth', 'axisExpandWindow'], function (name) {\n      if (opt.hasOwnProperty(name)) {\n        this.option[name] = opt[name];\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _initDimensions: function () {\n    var dimensions = this.dimensions = [];\n    var parallelAxisIndex = this.parallelAxisIndex = [];\n    var axisModels = zrUtil.filter(this.dependentModels.parallelAxis, function (axisModel) {\n      // Can not use this.contains here, because\n      // initialization has not been completed yet.\n      return (axisModel.get('parallelIndex') || 0) === this.componentIndex;\n    }, this);\n    zrUtil.each(axisModels, function (axisModel) {\n      dimensions.push('dim' + axisModel.get('dim'));\n      parallelAxisIndex.push(axisModel.componentIndex);\n    });\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1138 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar makeStyleMapper = __webpack_require__(212);\n\nvar axisModelCreator = __webpack_require__(333);\n\nvar numberUtil = __webpack_require__(26);\n\nvar axisModelCommonMixin = __webpack_require__(216);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisModel = ComponentModel.extend({\n  type: 'baseParallelAxis',\n\n  /**\n   * @type {module:echarts/coord/parallel/Axis}\n   */\n  axis: null,\n\n  /**\n   * @type {Array.<Array.<number>}\n   * @readOnly\n   */\n  activeIntervals: [],\n\n  /**\n   * @return {Object}\n   */\n  getAreaSelectStyle: function () {\n    return makeStyleMapper([['fill', 'color'], ['lineWidth', 'borderWidth'], ['stroke', 'borderColor'], ['width', 'width'], ['opacity', 'opacity']])(this.getModel('areaSelectStyle'));\n  },\n\n  /**\n   * The code of this feature is put on AxisModel but not ParallelAxis,\n   * because axisModel can be alive after echarts updating but instance of\n   * ParallelAxis having been disposed. this._activeInterval should be kept\n   * when action dispatched (i.e. legend click).\n   *\n   * @param {Array.<Array<number>>} intervals interval.length === 0\n   *                                          means set all active.\n   * @public\n   */\n  setActiveIntervals: function (intervals) {\n    var activeIntervals = this.activeIntervals = zrUtil.clone(intervals); // Normalize\n\n    if (activeIntervals) {\n      for (var i = activeIntervals.length - 1; i >= 0; i--) {\n        numberUtil.asc(activeIntervals[i]);\n      }\n    }\n  },\n\n  /**\n   * @param {number|string} [value] When attempting to detect 'no activeIntervals set',\n   *                         value can not be input.\n   * @return {string} 'normal': no activeIntervals set,\n   *                  'active',\n   *                  'inactive'.\n   * @public\n   */\n  getActiveState: function (value) {\n    var activeIntervals = this.activeIntervals;\n\n    if (!activeIntervals.length) {\n      return 'normal';\n    }\n\n    if (value == null || isNaN(value)) {\n      return 'inactive';\n    } // Simple optimization\n\n\n    if (activeIntervals.length === 1) {\n      var interval = activeIntervals[0];\n\n      if (interval[0] <= value && value <= interval[1]) {\n        return 'active';\n      }\n    } else {\n      for (var i = 0, len = activeIntervals.length; i < len; i++) {\n        if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) {\n          return 'active';\n        }\n      }\n    }\n\n    return 'inactive';\n  }\n});\nvar defaultOption = {\n  type: 'value',\n\n  /**\n   * @type {Array.<number>}\n   */\n  dim: null,\n  // 0, 1, 2, ...\n  // parallelIndex: null,\n  areaSelectStyle: {\n    width: 20,\n    borderWidth: 1,\n    borderColor: 'rgba(160,197,232)',\n    color: 'rgba(160,197,232)',\n    opacity: 0.3\n  },\n  realtime: true,\n  // Whether realtime update view when select.\n  z: 10\n};\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\n\nfunction getAxisType(axisName, option) {\n  return option.type || (option.data ? 'category' : 'value');\n}\n\naxisModelCreator('parallel', AxisModel, getAxisType, defaultOption);\nvar _default = AxisModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(600);\n\n__webpack_require__(1140);\n\n__webpack_require__(1141);\n\n/***/ }),\n/* 1140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @payload\n * @property {string} parallelAxisId\n * @property {Array.<Array.<number>>} intervals\n */\nvar actionInfo = {\n  type: 'axisAreaSelect',\n  event: 'axisAreaSelected' // update: 'updateVisual'\n\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'parallelAxis',\n    query: payload\n  }, function (parallelAxisModel) {\n    parallelAxisModel.axis.model.setActiveIntervals(payload.intervals);\n  });\n});\n/**\n * @payload\n */\n\necharts.registerAction('parallelAxisExpand', function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'parallel',\n    query: payload\n  }, function (parallelModel) {\n    parallelModel.setAxisExpand(payload);\n  });\n});\n\n/***/ }),\n/* 1141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar AxisBuilder = __webpack_require__(156);\n\nvar BrushController = __webpack_require__(421);\n\nvar brushHelper = __webpack_require__(601);\n\nvar graphic = __webpack_require__(23);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar elementList = ['axisLine', 'axisTickLabel', 'axisName'];\nvar AxisView = echarts.extendComponentView({\n  type: 'parallelAxis',\n\n  /**\n   * @override\n   */\n  init: function (ecModel, api) {\n    AxisView.superApply(this, 'init', arguments);\n    /**\n     * @type {module:echarts/component/helper/BrushController}\n     */\n\n    (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this));\n  },\n\n  /**\n   * @override\n   */\n  render: function (axisModel, ecModel, api, payload) {\n    if (fromAxisAreaSelect(axisModel, ecModel, payload)) {\n      return;\n    }\n\n    this.axisModel = axisModel;\n    this.api = api;\n    this.group.removeAll();\n    var oldAxisGroup = this._axisGroup;\n    this._axisGroup = new graphic.Group();\n    this.group.add(this._axisGroup);\n\n    if (!axisModel.get('show')) {\n      return;\n    }\n\n    var coordSysModel = getCoordSysModel(axisModel, ecModel);\n    var coordSys = coordSysModel.coordinateSystem;\n    var areaSelectStyle = axisModel.getAreaSelectStyle();\n    var areaWidth = areaSelectStyle.width;\n    var dim = axisModel.axis.dim;\n    var axisLayout = coordSys.getAxisLayout(dim);\n    var builderOpt = zrUtil.extend({\n      strokeContainThreshold: areaWidth\n    }, axisLayout);\n    var axisBuilder = new AxisBuilder(axisModel, builderOpt);\n    zrUtil.each(elementList, axisBuilder.add, axisBuilder);\n\n    this._axisGroup.add(axisBuilder.getGroup());\n\n    this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api);\n\n    var animationModel = payload && payload.animation === false ? null : axisModel;\n    graphic.groupTransition(oldAxisGroup, this._axisGroup, animationModel);\n  },\n  // /**\n  //  * @override\n  //  */\n  // updateVisual: function (axisModel, ecModel, api, payload) {\n  //     this._brushController && this._brushController\n  //         .updateCovers(getCoverInfoList(axisModel));\n  // },\n  _refreshBrushController: function (builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) {\n    // After filtering, axis may change, select area needs to be update.\n    var extent = axisModel.axis.getExtent();\n    var extentLen = extent[1] - extent[0];\n    var extra = Math.min(30, Math.abs(extentLen) * 0.1); // Arbitrary value.\n    // width/height might be negative, which will be\n    // normalized in BoundingRect.\n\n    var rect = graphic.BoundingRect.create({\n      x: extent[0],\n      y: -areaWidth / 2,\n      width: extentLen,\n      height: areaWidth\n    });\n    rect.x -= extra;\n    rect.width += 2 * extra;\n\n    this._brushController.mount({\n      enableGlobalPan: true,\n      rotation: builderOpt.rotation,\n      position: builderOpt.position\n    }).setPanels([{\n      panelId: 'pl',\n      clipPath: brushHelper.makeRectPanelClipPath(rect),\n      isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, coordSysModel),\n      getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect, 0)\n    }]).enableBrush({\n      brushType: 'lineX',\n      brushStyle: areaSelectStyle,\n      removeOnClick: true\n    }).updateCovers(getCoverInfoList(axisModel));\n  },\n  _onBrush: function (coverInfoList, opt) {\n    // Do not cache these object, because the mey be changed.\n    var axisModel = this.axisModel;\n    var axis = axisModel.axis;\n    var intervals = zrUtil.map(coverInfoList, function (coverInfo) {\n      return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)];\n    }); // If realtime is true, action is not dispatched on drag end, because\n    // the drag end emits the same params with the last drag move event,\n    // and may have some delay when using touch pad.\n\n    if (!axisModel.option.realtime === opt.isEnd || opt.removeOnClick) {\n      // jshint ignore:line\n      this.api.dispatchAction({\n        type: 'axisAreaSelect',\n        parallelAxisId: axisModel.id,\n        intervals: intervals\n      });\n    }\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    this._brushController.dispose();\n  }\n});\n\nfunction fromAxisAreaSelect(axisModel, ecModel, payload) {\n  return payload && payload.type === 'axisAreaSelect' && ecModel.findComponents({\n    mainType: 'parallelAxis',\n    query: payload\n  })[0] === axisModel;\n}\n\nfunction getCoverInfoList(axisModel) {\n  var axis = axisModel.axis;\n  return zrUtil.map(axisModel.activeIntervals, function (interval) {\n    return {\n      brushType: 'lineX',\n      panelId: 'pl',\n      range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)]\n    };\n  });\n}\n\nfunction getCoordSysModel(axisModel, ecModel) {\n  return ecModel.getComponent('parallel', axisModel.get('parallelIndex'));\n}\n\nvar _default = AxisView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\n\nvar SeriesModel = __webpack_require__(75);\n\nvar createListFromArray = __webpack_require__(145);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n  type: 'series.parallel',\n  dependencies: ['parallel'],\n  visualColorAccessPath: 'lineStyle.color',\n  getInitialData: function (option, ecModel) {\n    var source = this.getSource();\n    setEncodeAndDimensions(source, this);\n    return createListFromArray(source, this);\n  },\n\n  /**\n   * User can get data raw indices on 'axisAreaSelected' event received.\n   *\n   * @public\n   * @param {string} activeState 'active' or 'inactive' or 'normal'\n   * @return {Array.<number>} Raw indices\n   */\n  getRawIndicesByActiveState: function (activeState) {\n    var coordSys = this.coordinateSystem;\n    var data = this.getData();\n    var indices = [];\n    coordSys.eachActiveState(data, function (theActiveState, dataIndex) {\n      if (activeState === theActiveState) {\n        indices.push(data.getRawIndex(dataIndex));\n      }\n    });\n    return indices;\n  },\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 2,\n    // 二级层叠\n    coordinateSystem: 'parallel',\n    parallelIndex: 0,\n    label: {\n      show: false\n    },\n    inactiveOpacity: 0.05,\n    activeOpacity: 1,\n    lineStyle: {\n      width: 1,\n      opacity: 0.45,\n      type: 'solid'\n    },\n    emphasis: {\n      label: {\n        show: false\n      }\n    },\n    progressive: 500,\n    smooth: false,\n    // true | false | number\n    animationEasing: 'linear'\n  }\n});\n\nfunction setEncodeAndDimensions(source, seriesModel) {\n  // The mapping of parallelAxis dimension to data dimension can\n  // be specified in parallelAxis.option.dim. For example, if\n  // parallelAxis.option.dim is 'dim3', it mapping to the third\n  // dimension of data. But `data.encode` has higher priority.\n  // Moreover, parallelModel.dimension should not be regarded as data\n  // dimensions. Consider dimensions = ['dim4', 'dim2', 'dim6'];\n  if (source.encodeDefine) {\n    return;\n  }\n\n  var parallelModel = seriesModel.ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n\n  if (!parallelModel) {\n    return;\n  }\n\n  var encodeDefine = source.encodeDefine = createHashMap();\n  each(parallelModel.dimensions, function (axisDim) {\n    var dataDimIndex = convertDimNameToNumber(axisDim);\n    encodeDefine.set(axisDim, dataDimIndex);\n  });\n}\n\nfunction convertDimNameToNumber(dimName) {\n  return +dimName.replace('dim', '');\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar ChartView = __webpack_require__(131);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DEFAULT_SMOOTH = 0.3;\nvar ParallelView = ChartView.extend({\n  type: 'parallel',\n  init: function () {\n    /**\n     * @type {module:zrender/container/Group}\n     * @private\n     */\n    this._dataGroup = new graphic.Group();\n    this.group.add(this._dataGroup);\n    /**\n     * @type {module:echarts/data/List}\n     */\n\n    this._data;\n    /**\n     * @type {boolean}\n     */\n\n    this._initialized;\n  },\n\n  /**\n   * @override\n   */\n  render: function (seriesModel, ecModel, api, payload) {\n    var dataGroup = this._dataGroup;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var coordSys = seriesModel.coordinateSystem;\n    var dimensions = coordSys.dimensions;\n    var seriesScope = makeSeriesScope(seriesModel);\n    data.diff(oldData).add(add).update(update).remove(remove).execute();\n\n    function add(newDataIndex) {\n      var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);\n      updateElCommon(line, data, newDataIndex, seriesScope);\n    }\n\n    function update(newDataIndex, oldDataIndex) {\n      var line = oldData.getItemGraphicEl(oldDataIndex);\n      var points = createLinePoints(data, newDataIndex, dimensions, coordSys);\n      data.setItemGraphicEl(newDataIndex, line);\n      var animationModel = payload && payload.animation === false ? null : seriesModel;\n      graphic.updateProps(line, {\n        shape: {\n          points: points\n        }\n      }, animationModel, newDataIndex);\n      updateElCommon(line, data, newDataIndex, seriesScope);\n    }\n\n    function remove(oldDataIndex) {\n      var line = oldData.getItemGraphicEl(oldDataIndex);\n      dataGroup.remove(line);\n    } // First create\n\n\n    if (!this._initialized) {\n      this._initialized = true;\n      var clipPath = createGridClipShape(coordSys, seriesModel, function () {\n        // Callback will be invoked immediately if there is no animation\n        setTimeout(function () {\n          dataGroup.removeClipPath();\n        });\n      });\n      dataGroup.setClipPath(clipPath);\n    }\n\n    this._data = data;\n  },\n  incrementalPrepareRender: function (seriesModel, ecModel, api) {\n    this._initialized = true;\n    this._data = null;\n\n    this._dataGroup.removeAll();\n  },\n  incrementalRender: function (taskParams, seriesModel, ecModel) {\n    var data = seriesModel.getData();\n    var coordSys = seriesModel.coordinateSystem;\n    var dimensions = coordSys.dimensions;\n    var seriesScope = makeSeriesScope(seriesModel);\n\n    for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) {\n      var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys);\n      line.incremental = true;\n      updateElCommon(line, data, dataIndex, seriesScope);\n    }\n  },\n  dispose: function () {},\n  // _renderForProgressive: function (seriesModel) {\n  //     var dataGroup = this._dataGroup;\n  //     var data = seriesModel.getData();\n  //     var oldData = this._data;\n  //     var coordSys = seriesModel.coordinateSystem;\n  //     var dimensions = coordSys.dimensions;\n  //     var option = seriesModel.option;\n  //     var progressive = option.progressive;\n  //     var smooth = option.smooth ? SMOOTH : null;\n  //     // In progressive animation is disabled, so use simple data diff,\n  //     // which effects performance less.\n  //     // (Typically performance for data with length 7000+ like:\n  //     // simpleDiff: 60ms, addEl: 184ms,\n  //     // in RMBP 2.4GHz intel i7, OSX 10.9 chrome 50.0.2661.102 (64-bit))\n  //     if (simpleDiff(oldData, data, dimensions)) {\n  //         dataGroup.removeAll();\n  //         data.each(function (dataIndex) {\n  //             addEl(data, dataGroup, dataIndex, dimensions, coordSys);\n  //         });\n  //     }\n  //     updateElCommon(data, progressive, smooth);\n  //     // Consider switch between progressive and not.\n  //     data.__plProgressive = true;\n  //     this._data = data;\n  // },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    this._dataGroup && this._dataGroup.removeAll();\n    this._data = null;\n  }\n});\n\nfunction createGridClipShape(coordSys, seriesModel, cb) {\n  var parallelModel = coordSys.model;\n  var rect = coordSys.getRect();\n  var rectEl = new graphic.Rect({\n    shape: {\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    }\n  });\n  var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height';\n  rectEl.setShape(dim, 0);\n  graphic.initProps(rectEl, {\n    shape: {\n      width: rect.width,\n      height: rect.height\n    }\n  }, seriesModel, cb);\n  return rectEl;\n}\n\nfunction createLinePoints(data, dataIndex, dimensions, coordSys) {\n  var points = [];\n\n  for (var i = 0; i < dimensions.length; i++) {\n    var dimName = dimensions[i];\n    var value = data.get(data.mapDimension(dimName), dataIndex);\n\n    if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {\n      points.push(coordSys.dataToPoint(value, dimName));\n    }\n  }\n\n  return points;\n}\n\nfunction addEl(data, dataGroup, dataIndex, dimensions, coordSys) {\n  var points = createLinePoints(data, dataIndex, dimensions, coordSys);\n  var line = new graphic.Polyline({\n    shape: {\n      points: points\n    },\n    silent: true,\n    z2: 10\n  });\n  dataGroup.add(line);\n  data.setItemGraphicEl(dataIndex, line);\n  return line;\n}\n\nfunction makeSeriesScope(seriesModel) {\n  var smooth = seriesModel.get('smooth', true);\n  smooth === true && (smooth = DEFAULT_SMOOTH);\n  return {\n    lineStyle: seriesModel.getModel('lineStyle').getLineStyle(),\n    smooth: smooth != null ? smooth : DEFAULT_SMOOTH\n  };\n}\n\nfunction updateElCommon(el, data, dataIndex, seriesScope) {\n  var lineStyle = seriesScope.lineStyle;\n\n  if (data.hasItemOption) {\n    var lineStyleModel = data.getItemModel(dataIndex).getModel('lineStyle');\n    lineStyle = lineStyleModel.getLineStyle();\n  }\n\n  el.useStyle(lineStyle);\n  var elStyle = el.style;\n  elStyle.fill = null; // lineStyle.color have been set to itemVisual in module:echarts/visual/seriesColor.\n\n  elStyle.stroke = data.getItemVisual(dataIndex, 'color'); // lineStyle.opacity have been set to itemVisual in parallelVisual.\n\n  elStyle.opacity = data.getItemVisual(dataIndex, 'opacity');\n  seriesScope.smooth && (el.shape.smooth = seriesScope.smooth);\n} // function simpleDiff(oldData, newData, dimensions) {\n//     var oldLen;\n//     if (!oldData\n//         || !oldData.__plProgressive\n//         || (oldLen = oldData.count()) !== newData.count()\n//     ) {\n//         return true;\n//     }\n//     var dimLen = dimensions.length;\n//     for (var i = 0; i < oldLen; i++) {\n//         for (var j = 0; j < dimLen; j++) {\n//             if (oldData.get(dimensions[j], i) !== newData.get(dimensions[j], i)) {\n//                 return true;\n//             }\n//         }\n//     }\n//     return false;\n// }\n// FIXME\n// 公用方法?\n\n\nfunction isEmptyValue(val, axisType) {\n  return axisType === 'category' ? val == null : val == null || isNaN(val); // axisType === 'value'\n}\n\nvar _default = ParallelView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1144 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar opacityAccessPath = ['lineStyle', 'normal', 'opacity'];\nvar _default = {\n  seriesType: 'parallel',\n  reset: function (seriesModel, ecModel, api) {\n    var itemStyleModel = seriesModel.getModel('itemStyle');\n    var lineStyleModel = seriesModel.getModel('lineStyle');\n    var globalColors = ecModel.get('color');\n    var color = lineStyleModel.get('color') || itemStyleModel.get('color') || globalColors[seriesModel.seriesIndex % globalColors.length];\n    var inactiveOpacity = seriesModel.get('inactiveOpacity');\n    var activeOpacity = seriesModel.get('activeOpacity');\n    var lineStyle = seriesModel.getModel('lineStyle').getLineStyle();\n    var coordSys = seriesModel.coordinateSystem;\n    var data = seriesModel.getData();\n    var opacityMap = {\n      normal: lineStyle.opacity,\n      active: activeOpacity,\n      inactive: inactiveOpacity\n    };\n    data.setVisual('color', color);\n\n    function progress(params, data) {\n      coordSys.eachActiveState(data, function (activeState, dataIndex) {\n        var opacity = opacityMap[activeState];\n\n        if (activeState === 'normal' && data.hasItemOption) {\n          var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath, true);\n          itemOpacity != null && (opacity = itemOpacity);\n        }\n\n        data.setItemVisual(dataIndex, 'opacity', opacity);\n      }, params.start, params.end);\n    }\n\n    return {\n      progress: progress\n    };\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1146);\n\n__webpack_require__(1147);\n\n__webpack_require__(1148);\n\nvar sankeyLayout = __webpack_require__(1149);\n\nvar sankeyVisual = __webpack_require__(1150);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerLayout(sankeyLayout);\necharts.registerVisual(sankeyVisual);\n\n/***/ }),\n/* 1146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(75);\n\nvar createGraphFromNodeEdge = __webpack_require__(595);\n\nvar _format = __webpack_require__(50);\n\nvar encodeHTML = _format.encodeHTML;\n\nvar Model = __webpack_require__(67);\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar SankeySeries = SeriesModel.extend({\n  type: 'series.sankey',\n  layoutInfo: null,\n  levelModels: null,\n\n  /**\n   * Init a graph data structure from data in option series\n   *\n   * @param  {Object} option  the object used to config echarts view\n   * @return {module:echarts/data/List} storage initial data\n   */\n  getInitialData: function (option, ecModel) {\n    var links = option.edges || option.links;\n    var nodes = option.data || option.nodes;\n    var levels = option.levels;\n    var levelModels = this.levelModels = {};\n\n    for (var i = 0; i < levels.length; i++) {\n      if (levels[i].depth != null && levels[i].depth >= 0) {\n        levelModels[levels[i].depth] = new Model(levels[i], this, ecModel);\n      } else {}\n    }\n\n    if (nodes && links) {\n      var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);\n      return graph.data;\n    }\n\n    function beforeLink(nodeData, edgeData) {\n      nodeData.wrapMethod('getItemModel', function (model, idx) {\n        model.customizeGetParent(function (path) {\n          var parentModel = this.parentModel;\n          var nodeDepth = parentModel.getData().getItemLayout(idx).depth;\n          var levelModel = parentModel.levelModels[nodeDepth];\n          return levelModel || this.parentModel;\n        });\n        return model;\n      });\n      edgeData.wrapMethod('getItemModel', function (model, idx) {\n        model.customizeGetParent(function (path) {\n          var parentModel = this.parentModel;\n          var edge = parentModel.getGraph().getEdgeByIndex(idx);\n          var depth = edge.node1.getLayout().depth;\n          var levelModel = parentModel.levelModels[depth];\n          return levelModel || this.parentModel;\n        });\n        return model;\n      });\n    }\n  },\n  setNodePosition: function (dataIndex, localPosition) {\n    var dataItem = this.option.data[dataIndex];\n    dataItem.localX = localPosition[0];\n    dataItem.localY = localPosition[1];\n  },\n\n  /**\n   * Return the graphic data structure\n   *\n   * @return {module:echarts/data/Graph} graphic data structure\n   */\n  getGraph: function () {\n    return this.getData().graph;\n  },\n\n  /**\n   * Get edge data of graphic data structure\n   *\n   * @return {module:echarts/data/List} data structure of list\n   */\n  getEdgeData: function () {\n    return this.getGraph().edgeData;\n  },\n\n  /**\n   * @override\n   */\n  formatTooltip: function (dataIndex, multipleSeries, dataType) {\n    // dataType === 'node' or empty do not show tooltip by default\n    if (dataType === 'edge') {\n      var params = this.getDataParams(dataIndex, dataType);\n      var rawDataOpt = params.data;\n      var html = rawDataOpt.source + ' -- ' + rawDataOpt.target;\n\n      if (params.value) {\n        html += ' : ' + params.value;\n      }\n\n      return encodeHTML(html);\n    } else if (dataType === 'node') {\n      var node = this.getGraph().getNodeByIndex(dataIndex);\n      var value = node.getLayout().value;\n      var name = this.getDataParams(dataIndex, dataType).data.name;\n\n      if (value) {\n        var html = name + ' : ' + value;\n      }\n\n      return encodeHTML(html);\n    }\n\n    return SankeySeries.superCall(this, 'formatTooltip', dataIndex, multipleSeries);\n  },\n  optionUpdated: function () {\n    var option = this.option;\n\n    if (option.focusNodeAdjacency === true) {\n      option.focusNodeAdjacency = 'allEdges';\n    }\n  },\n  // Override Series.getDataParams()\n  getDataParams: function (dataIndex, dataType) {\n    var params = SankeySeries.superCall(this, 'getDataParams', dataIndex, dataType);\n\n    if (params.value == null && dataType === 'node') {\n      var node = this.getGraph().getNodeByIndex(dataIndex);\n      var nodeValue = node.getLayout().value;\n      params.value = nodeValue;\n    }\n\n    return params;\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'view',\n    layout: null,\n    // The position of the whole view\n    left: '5%',\n    top: '5%',\n    right: '20%',\n    bottom: '5%',\n    // Value can be 'vertical'\n    orient: 'horizontal',\n    // The dx of the node\n    nodeWidth: 20,\n    // The vertical distance between two nodes\n    nodeGap: 8,\n    // Control if the node can move or not\n    draggable: true,\n    // Value can be 'inEdges', 'outEdges', 'allEdges', true (the same as 'allEdges').\n    focusNodeAdjacency: false,\n    // The number of iterations to change the position of the node\n    layoutIterations: 32,\n    label: {\n      show: true,\n      position: 'right',\n      color: '#000',\n      fontSize: 12\n    },\n    levels: [],\n    // Value can be 'left' or 'right'\n    nodeAlign: 'justify',\n    itemStyle: {\n      borderWidth: 1,\n      borderColor: '#333'\n    },\n    lineStyle: {\n      color: '#314656',\n      opacity: 0.2,\n      curveness: 0.5\n    },\n    emphasis: {\n      label: {\n        show: true\n      },\n      lineStyle: {\n        opacity: 0.5\n      }\n    },\n    animationEasing: 'linear',\n    animationDuration: 1000\n  }\n});\nvar _default = SankeySeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar nodeOpacityPath = ['itemStyle', 'opacity'];\nvar hoverNodeOpacityPath = ['emphasis', 'itemStyle', 'opacity'];\nvar lineOpacityPath = ['lineStyle', 'opacity'];\nvar hoverLineOpacityPath = ['emphasis', 'lineStyle', 'opacity'];\n\nfunction getItemOpacity(item, opacityPath) {\n  return item.getVisual('opacity') || item.getModel().get(opacityPath);\n}\n\nfunction fadeOutItem(item, opacityPath, opacityRatio) {\n  var el = item.getGraphicEl();\n  var opacity = getItemOpacity(item, opacityPath);\n\n  if (opacityRatio != null) {\n    opacity == null && (opacity = 1);\n    opacity *= opacityRatio;\n  }\n\n  el.downplay && el.downplay();\n  el.traverse(function (child) {\n    if (child.type !== 'group') {\n      child.setStyle('opacity', opacity);\n    }\n  });\n}\n\nfunction fadeInItem(item, opacityPath) {\n  var opacity = getItemOpacity(item, opacityPath);\n  var el = item.getGraphicEl();\n  el.traverse(function (child) {\n    if (child.type !== 'group') {\n      child.setStyle('opacity', opacity);\n    }\n  }); // Support emphasis here.\n\n  el.highlight && el.highlight();\n}\n\nvar SankeyShape = graphic.extendShape({\n  shape: {\n    x1: 0,\n    y1: 0,\n    x2: 0,\n    y2: 0,\n    cpx1: 0,\n    cpy1: 0,\n    cpx2: 0,\n    cpy2: 0,\n    extent: 0,\n    orient: ''\n  },\n  buildPath: function (ctx, shape) {\n    var extent = shape.extent;\n    ctx.moveTo(shape.x1, shape.y1);\n    ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2);\n\n    if (shape.orient === 'vertical') {\n      ctx.lineTo(shape.x2 + extent, shape.y2);\n      ctx.bezierCurveTo(shape.cpx2 + extent, shape.cpy2, shape.cpx1 + extent, shape.cpy1, shape.x1 + extent, shape.y1);\n    } else {\n      ctx.lineTo(shape.x2, shape.y2 + extent);\n      ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent, shape.cpx1, shape.cpy1 + extent, shape.x1, shape.y1 + extent);\n    }\n\n    ctx.closePath();\n  },\n  highlight: function () {\n    this.trigger('emphasis');\n  },\n  downplay: function () {\n    this.trigger('normal');\n  }\n});\n\nvar _default = echarts.extendChartView({\n  type: 'sankey',\n\n  /**\n   * @private\n   * @type {module:echarts/chart/sankey/SankeySeries}\n   */\n  _model: null,\n\n  /**\n   * @private\n   * @type {boolean}\n   */\n  _focusAdjacencyDisabled: false,\n  render: function (seriesModel, ecModel, api) {\n    var sankeyView = this;\n    var graph = seriesModel.getGraph();\n    var group = this.group;\n    var layoutInfo = seriesModel.layoutInfo; // view width\n\n    var width = layoutInfo.width; // view height\n\n    var height = layoutInfo.height;\n    var nodeData = seriesModel.getData();\n    var edgeData = seriesModel.getData('edge');\n    var orient = seriesModel.get('orient');\n    this._model = seriesModel;\n    group.removeAll();\n    group.attr('position', [layoutInfo.x, layoutInfo.y]); // generate a bezire Curve for each edge\n\n    graph.eachEdge(function (edge) {\n      var curve = new SankeyShape();\n      curve.dataIndex = edge.dataIndex;\n      curve.seriesIndex = seriesModel.seriesIndex;\n      curve.dataType = 'edge';\n      var lineStyleModel = edge.getModel('lineStyle');\n      var curvature = lineStyleModel.get('curveness');\n      var n1Layout = edge.node1.getLayout();\n      var node1Model = edge.node1.getModel();\n      var dragX1 = node1Model.get('localX');\n      var dragY1 = node1Model.get('localY');\n      var n2Layout = edge.node2.getLayout();\n      var node2Model = edge.node2.getModel();\n      var dragX2 = node2Model.get('localX');\n      var dragY2 = node2Model.get('localY');\n      var edgeLayout = edge.getLayout();\n      var x1;\n      var y1;\n      var x2;\n      var y2;\n      var cpx1;\n      var cpy1;\n      var cpx2;\n      var cpy2;\n      curve.shape.extent = Math.max(1, edgeLayout.dy);\n      curve.shape.orient = orient;\n\n      if (orient === 'vertical') {\n        x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy;\n        y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy;\n        x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty;\n        y2 = dragY2 != null ? dragY2 * height : n2Layout.y;\n        cpx1 = x1;\n        cpy1 = y1 * (1 - curvature) + y2 * curvature;\n        cpx2 = x2;\n        cpy2 = y1 * curvature + y2 * (1 - curvature);\n      } else {\n        x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx;\n        y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy;\n        x2 = dragX2 != null ? dragX2 * width : n2Layout.x;\n        y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty;\n        cpx1 = x1 * (1 - curvature) + x2 * curvature;\n        cpy1 = y1;\n        cpx2 = x1 * curvature + x2 * (1 - curvature);\n        cpy2 = y2;\n      }\n\n      curve.setShape({\n        x1: x1,\n        y1: y1,\n        x2: x2,\n        y2: y2,\n        cpx1: cpx1,\n        cpy1: cpy1,\n        cpx2: cpx2,\n        cpy2: cpy2\n      });\n      curve.setStyle(lineStyleModel.getItemStyle()); // Special color, use source node color or target node color\n\n      switch (curve.style.fill) {\n        case 'source':\n          curve.style.fill = edge.node1.getVisual('color');\n          break;\n\n        case 'target':\n          curve.style.fill = edge.node2.getVisual('color');\n          break;\n      }\n\n      graphic.setHoverStyle(curve, edge.getModel('emphasis.lineStyle').getItemStyle());\n      group.add(curve);\n      edgeData.setItemGraphicEl(edge.dataIndex, curve);\n    }); // Generate a rect for each node\n\n    graph.eachNode(function (node) {\n      var layout = node.getLayout();\n      var itemModel = node.getModel();\n      var dragX = itemModel.get('localX');\n      var dragY = itemModel.get('localY');\n      var labelModel = itemModel.getModel('label');\n      var labelHoverModel = itemModel.getModel('emphasis.label');\n      var rect = new graphic.Rect({\n        shape: {\n          x: dragX != null ? dragX * width : layout.x,\n          y: dragY != null ? dragY * height : layout.y,\n          width: layout.dx,\n          height: layout.dy\n        },\n        style: itemModel.getModel('itemStyle').getItemStyle()\n      });\n      var hoverStyle = node.getModel('emphasis.itemStyle').getItemStyle();\n      graphic.setLabelStyle(rect.style, hoverStyle, labelModel, labelHoverModel, {\n        labelFetcher: seriesModel,\n        labelDataIndex: node.dataIndex,\n        defaultText: node.id,\n        isRectText: true\n      });\n      rect.setStyle('fill', node.getVisual('color'));\n      graphic.setHoverStyle(rect, hoverStyle);\n      group.add(rect);\n      nodeData.setItemGraphicEl(node.dataIndex, rect);\n      rect.dataType = 'node';\n    });\n    nodeData.eachItemGraphicEl(function (el, dataIndex) {\n      var itemModel = nodeData.getItemModel(dataIndex);\n\n      if (itemModel.get('draggable')) {\n        el.drift = function (dx, dy) {\n          sankeyView._focusAdjacencyDisabled = true;\n          this.shape.x += dx;\n          this.shape.y += dy;\n          this.dirty();\n          api.dispatchAction({\n            type: 'dragNode',\n            seriesId: seriesModel.id,\n            dataIndex: nodeData.getRawIndex(dataIndex),\n            localX: this.shape.x / width,\n            localY: this.shape.y / height\n          });\n        };\n\n        el.ondragend = function () {\n          sankeyView._focusAdjacencyDisabled = false;\n        };\n\n        el.draggable = true;\n        el.cursor = 'move';\n      }\n\n      el.highlight = function () {\n        this.trigger('emphasis');\n      };\n\n      el.downplay = function () {\n        this.trigger('normal');\n      };\n\n      el.focusNodeAdjHandler && el.off('mouseover', el.focusNodeAdjHandler);\n      el.unfocusNodeAdjHandler && el.off('mouseout', el.unfocusNodeAdjHandler);\n\n      if (itemModel.get('focusNodeAdjacency')) {\n        el.on('mouseover', el.focusNodeAdjHandler = function () {\n          if (!sankeyView._focusAdjacencyDisabled) {\n            sankeyView._clearTimer();\n\n            api.dispatchAction({\n              type: 'focusNodeAdjacency',\n              seriesId: seriesModel.id,\n              dataIndex: el.dataIndex\n            });\n          }\n        });\n        el.on('mouseout', el.unfocusNodeAdjHandler = function () {\n          if (!sankeyView._focusAdjacencyDisabled) {\n            sankeyView._dispatchUnfocus(api);\n          }\n        });\n      }\n    });\n    edgeData.eachItemGraphicEl(function (el, dataIndex) {\n      var edgeModel = edgeData.getItemModel(dataIndex);\n      el.focusNodeAdjHandler && el.off('mouseover', el.focusNodeAdjHandler);\n      el.unfocusNodeAdjHandler && el.off('mouseout', el.unfocusNodeAdjHandler);\n\n      if (edgeModel.get('focusNodeAdjacency')) {\n        el.on('mouseover', el.focusNodeAdjHandler = function () {\n          if (!sankeyView._focusAdjacencyDisabled) {\n            sankeyView._clearTimer();\n\n            api.dispatchAction({\n              type: 'focusNodeAdjacency',\n              seriesId: seriesModel.id,\n              edgeDataIndex: el.dataIndex\n            });\n          }\n        });\n        el.on('mouseout', el.unfocusNodeAdjHandler = function () {\n          if (!sankeyView._focusAdjacencyDisabled) {\n            sankeyView._dispatchUnfocus(api);\n          }\n        });\n      }\n    });\n\n    if (!this._data && seriesModel.get('animation')) {\n      group.setClipPath(createGridClipShape(group.getBoundingRect(), seriesModel, function () {\n        group.removeClipPath();\n      }));\n    }\n\n    this._data = seriesModel.getData();\n  },\n  dispose: function () {\n    this._clearTimer();\n  },\n  _dispatchUnfocus: function (api) {\n    var self = this;\n\n    this._clearTimer();\n\n    this._unfocusDelayTimer = setTimeout(function () {\n      self._unfocusDelayTimer = null;\n      api.dispatchAction({\n        type: 'unfocusNodeAdjacency',\n        seriesId: self._model.id\n      });\n    }, 500);\n  },\n  _clearTimer: function () {\n    if (this._unfocusDelayTimer) {\n      clearTimeout(this._unfocusDelayTimer);\n      this._unfocusDelayTimer = null;\n    }\n  },\n  focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var graph = data.graph;\n    var dataIndex = payload.dataIndex;\n    var itemModel = data.getItemModel(dataIndex);\n    var edgeDataIndex = payload.edgeDataIndex;\n\n    if (dataIndex == null && edgeDataIndex == null) {\n      return;\n    }\n\n    var node = graph.getNodeByIndex(dataIndex);\n    var edge = graph.getEdgeByIndex(edgeDataIndex);\n    graph.eachNode(function (node) {\n      fadeOutItem(node, nodeOpacityPath, 0.1);\n    });\n    graph.eachEdge(function (edge) {\n      fadeOutItem(edge, lineOpacityPath, 0.1);\n    });\n\n    if (node) {\n      fadeInItem(node, hoverNodeOpacityPath);\n      var focusNodeAdj = itemModel.get('focusNodeAdjacency');\n\n      if (focusNodeAdj === 'outEdges') {\n        zrUtil.each(node.outEdges, function (edge) {\n          if (edge.dataIndex < 0) {\n            return;\n          }\n\n          fadeInItem(edge, hoverLineOpacityPath);\n          fadeInItem(edge.node2, hoverNodeOpacityPath);\n        });\n      } else if (focusNodeAdj === 'inEdges') {\n        zrUtil.each(node.inEdges, function (edge) {\n          if (edge.dataIndex < 0) {\n            return;\n          }\n\n          fadeInItem(edge, hoverLineOpacityPath);\n          fadeInItem(edge.node1, hoverNodeOpacityPath);\n        });\n      } else if (focusNodeAdj === 'allEdges') {\n        zrUtil.each(node.edges, function (edge) {\n          if (edge.dataIndex < 0) {\n            return;\n          }\n\n          fadeInItem(edge, hoverLineOpacityPath);\n          edge.node1 !== node && fadeInItem(edge.node1, hoverNodeOpacityPath);\n          edge.node2 !== node && fadeInItem(edge.node2, hoverNodeOpacityPath);\n        });\n      }\n    }\n\n    if (edge) {\n      fadeInItem(edge, hoverLineOpacityPath);\n      fadeInItem(edge.node1, hoverNodeOpacityPath);\n      fadeInItem(edge.node2, hoverNodeOpacityPath);\n    }\n  },\n  unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n    var graph = seriesModel.getGraph();\n    graph.eachNode(function (node) {\n      fadeOutItem(node, nodeOpacityPath);\n    });\n    graph.eachEdge(function (edge) {\n      fadeOutItem(edge, lineOpacityPath);\n    });\n  }\n}); // Add animation to the view\n\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n  var rectEl = new graphic.Rect({\n    shape: {\n      x: rect.x - 10,\n      y: rect.y - 10,\n      width: 0,\n      height: rect.height + 20\n    }\n  });\n  graphic.initProps(rectEl, {\n    shape: {\n      width: rect.width + 20\n    }\n  }, seriesModel, cb);\n  return rectEl;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(596);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerAction({\n  type: 'dragNode',\n  event: 'dragnode',\n  // here can only use 'update' now, other value is not support in echarts.\n  update: 'update'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'sankey',\n    query: payload\n  }, function (seriesModel) {\n    seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]);\n  });\n});\n\n/***/ }),\n/* 1149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar layout = __webpack_require__(49);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _model = __webpack_require__(31);\n\nvar groupData = _model.groupData;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel, api, payload) {\n  ecModel.eachSeriesByType('sankey', function (seriesModel) {\n    var nodeWidth = seriesModel.get('nodeWidth');\n    var nodeGap = seriesModel.get('nodeGap');\n    var layoutInfo = getViewRect(seriesModel, api);\n    seriesModel.layoutInfo = layoutInfo;\n    var width = layoutInfo.width;\n    var height = layoutInfo.height;\n    var graph = seriesModel.getGraph();\n    var nodes = graph.nodes;\n    var edges = graph.edges;\n    computeNodeValues(nodes);\n    var filteredNodes = zrUtil.filter(nodes, function (node) {\n      return node.getLayout().value === 0;\n    });\n    var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get('layoutIterations');\n    var orient = seriesModel.get('orient');\n    var nodeAlign = seriesModel.get('nodeAlign');\n    layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign);\n  });\n}\n/**\n * Get the layout position of the whole view\n *\n * @param {module:echarts/model/Series} seriesModel  the model object of sankey series\n * @param {module:echarts/ExtensionAPI} api  provide the API list that the developer can call\n * @return {module:zrender/core/BoundingRect}  size of rect to draw the sankey view\n */\n\n\nfunction getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nfunction layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) {\n  computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign);\n  computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient);\n  computeEdgeDepths(nodes, orient);\n}\n/**\n * Compute the value of each node by summing the associated edge's value\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n */\n\n\nfunction computeNodeValues(nodes) {\n  zrUtil.each(nodes, function (node) {\n    var value1 = sum(node.outEdges, getEdgeValue);\n    var value2 = sum(node.inEdges, getEdgeValue);\n    var nodeRawValue = node.getValue() || 0;\n    var value = Math.max(value1, value2, nodeRawValue);\n    node.setLayout({\n      value: value\n    }, true);\n  });\n}\n/**\n * Compute the x-position for each node.\n *\n * Here we use Kahn algorithm to detect cycle when we traverse\n * the node to computer the initial x position.\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n * @param  {number} nodeWidth  the dx of the node\n * @param  {number} width  the whole width of the area to draw the view\n */\n\n\nfunction computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) {\n  // Used to mark whether the edge is deleted. if it is deleted,\n  // the value is 0, otherwise it is 1.\n  var remainEdges = []; // Storage each node's indegree.\n\n  var indegreeArr = []; //Used to storage the node with indegree is equal to 0.\n\n  var zeroIndegrees = [];\n  var nextTargetNode = [];\n  var x = 0;\n  var kx = 0;\n\n  for (var i = 0; i < edges.length; i++) {\n    remainEdges[i] = 1;\n  }\n\n  for (i = 0; i < nodes.length; i++) {\n    indegreeArr[i] = nodes[i].inEdges.length;\n\n    if (indegreeArr[i] === 0) {\n      zeroIndegrees.push(nodes[i]);\n    }\n  }\n\n  var maxNodeDepth = -1; // Traversing nodes using topological sorting to calculate the\n  // horizontal(if orient === 'horizontal') or vertical(if orient === 'vertical')\n  // position of the nodes.\n\n  while (zeroIndegrees.length) {\n    for (var idx = 0; idx < zeroIndegrees.length; idx++) {\n      var node = zeroIndegrees[idx];\n      var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\n      var isItemDepth = item.depth != null && item.depth >= 0;\n\n      if (isItemDepth && item.depth > maxNodeDepth) {\n        maxNodeDepth = item.depth;\n      }\n\n      node.setLayout({\n        depth: isItemDepth ? item.depth : x\n      }, true);\n      orient === 'vertical' ? node.setLayout({\n        dy: nodeWidth\n      }, true) : node.setLayout({\n        dx: nodeWidth\n      }, true);\n\n      for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) {\n        var edge = node.outEdges[edgeIdx];\n        var indexEdge = edges.indexOf(edge);\n        remainEdges[indexEdge] = 0;\n        var targetNode = edge.node2;\n        var nodeIndex = nodes.indexOf(targetNode);\n\n        if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) {\n          nextTargetNode.push(targetNode);\n        }\n      }\n    }\n\n    ++x;\n    zeroIndegrees = nextTargetNode;\n    nextTargetNode = [];\n  }\n\n  for (i = 0; i < remainEdges.length; i++) {\n    if (remainEdges[i] === 1) {\n      throw new Error('Sankey is a DAG, the original data has cycle!');\n    }\n  }\n\n  var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1;\n\n  if (nodeAlign && nodeAlign !== 'left') {\n    adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth);\n  }\n\n  var kx = orient === 'vertical' ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth;\n  scaleNodeBreadths(nodes, kx, orient);\n}\n\nfunction isNodeDepth(node) {\n  var item = node.hostGraph.data.getRawDataItem(node.dataIndex);\n  return item.depth != null && item.depth >= 0;\n}\n\nfunction adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) {\n  if (nodeAlign === 'right') {\n    var nextSourceNode = [];\n    var remainNodes = nodes;\n    var nodeHeight = 0;\n\n    while (remainNodes.length) {\n      for (var i = 0; i < remainNodes.length; i++) {\n        var node = remainNodes[i];\n        node.setLayout({\n          skNodeHeight: nodeHeight\n        }, true);\n\n        for (var j = 0; j < node.inEdges.length; j++) {\n          var edge = node.inEdges[j];\n\n          if (nextSourceNode.indexOf(edge.node1) < 0) {\n            nextSourceNode.push(edge.node1);\n          }\n        }\n      }\n\n      remainNodes = nextSourceNode;\n      nextSourceNode = [];\n      ++nodeHeight;\n    }\n\n    zrUtil.each(nodes, function (node) {\n      if (!isNodeDepth(node)) {\n        node.setLayout({\n          depth: Math.max(0, maxDepth - node.getLayout().skNodeHeight)\n        }, true);\n      }\n    });\n  } else if (nodeAlign === 'justify') {\n    moveSinksRight(nodes, maxDepth);\n  }\n}\n/**\n * All the node without outEgdes are assigned maximum x-position and\n *     be aligned in the last column.\n *\n * @param {module:echarts/data/Graph~Node} nodes.  node of sankey view.\n * @param {number} maxDepth.  use to assign to node without outEdges as x-position.\n */\n\n\nfunction moveSinksRight(nodes, maxDepth) {\n  zrUtil.each(nodes, function (node) {\n    if (!isNodeDepth(node) && !node.outEdges.length) {\n      node.setLayout({\n        depth: maxDepth\n      }, true);\n    }\n  });\n}\n/**\n * Scale node x-position to the width\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n * @param {number} kx   multiple used to scale nodes\n */\n\n\nfunction scaleNodeBreadths(nodes, kx, orient) {\n  zrUtil.each(nodes, function (node) {\n    var nodeDepth = node.getLayout().depth * kx;\n    orient === 'vertical' ? node.setLayout({\n      y: nodeDepth\n    }, true) : node.setLayout({\n      x: nodeDepth\n    }, true);\n  });\n}\n/**\n * Using Gauss-Seidel iterations method to compute the node depth(y-position)\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n * @param {module:echarts/data/Graph~Edge} edges  edge of sankey view\n * @param {number} height  the whole height of the area to draw the view\n * @param {number} nodeGap  the vertical distance between two nodes\n *     in the same column.\n * @param {number} iterations  the number of iterations for the algorithm\n */\n\n\nfunction computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) {\n  var nodesByBreadth = prepareNodesByBreadth(nodes, orient);\n  initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient);\n  resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n\n  for (var alpha = 1; iterations > 0; iterations--) {\n    // 0.99 is a experience parameter, ensure that each iterations of\n    // changes as small as possible.\n    alpha *= 0.99;\n    relaxRightToLeft(nodesByBreadth, alpha, orient);\n    resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n    relaxLeftToRight(nodesByBreadth, alpha, orient);\n    resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);\n  }\n}\n\nfunction prepareNodesByBreadth(nodes, orient) {\n  var nodesByBreadth = [];\n  var keyAttr = orient === 'vertical' ? 'y' : 'x';\n  var groupResult = groupData(nodes, function (node) {\n    return node.getLayout()[keyAttr];\n  });\n  groupResult.keys.sort(function (a, b) {\n    return a - b;\n  });\n  zrUtil.each(groupResult.keys, function (key) {\n    nodesByBreadth.push(groupResult.buckets.get(key));\n  });\n  return nodesByBreadth;\n}\n/**\n * Compute the original y-position for each node\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n * @param {Array.<Array.<module:echarts/data/Graph~Node>>} nodesByBreadth\n *     group by the array of all sankey nodes based on the nodes x-position.\n * @param {module:echarts/data/Graph~Edge} edges  edge of sankey view\n * @param {number} height  the whole height of the area to draw the view\n * @param {number} nodeGap  the vertical distance between two nodes\n */\n\n\nfunction initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) {\n  var minKy = Infinity;\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    var n = nodes.length;\n    var sum = 0;\n    zrUtil.each(nodes, function (node) {\n      sum += node.getLayout().value;\n    });\n    var ky = orient === 'vertical' ? (width - (n - 1) * nodeGap) / sum : (height - (n - 1) * nodeGap) / sum;\n\n    if (ky < minKy) {\n      minKy = ky;\n    }\n  });\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    zrUtil.each(nodes, function (node, i) {\n      var nodeDy = node.getLayout().value * minKy;\n\n      if (orient === 'vertical') {\n        node.setLayout({\n          x: i\n        }, true);\n        node.setLayout({\n          dx: nodeDy\n        }, true);\n      } else {\n        node.setLayout({\n          y: i\n        }, true);\n        node.setLayout({\n          dy: nodeDy\n        }, true);\n      }\n    });\n  });\n  zrUtil.each(edges, function (edge) {\n    var edgeDy = +edge.getValue() * minKy;\n    edge.setLayout({\n      dy: edgeDy\n    }, true);\n  });\n}\n/**\n * Resolve the collision of initialized depth (y-position)\n *\n * @param {Array.<Array.<module:echarts/data/Graph~Node>>} nodesByBreadth\n *     group by the array of all sankey nodes based on the nodes x-position.\n * @param {number} nodeGap  the vertical distance between two nodes\n * @param {number} height  the whole height of the area to draw the view\n */\n\n\nfunction resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) {\n  var keyAttr = orient === 'vertical' ? 'x' : 'y';\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    nodes.sort(function (a, b) {\n      return a.getLayout()[keyAttr] - b.getLayout()[keyAttr];\n    });\n    var nodeX;\n    var node;\n    var dy;\n    var y0 = 0;\n    var n = nodes.length;\n    var nodeDyAttr = orient === 'vertical' ? 'dx' : 'dy';\n\n    for (var i = 0; i < n; i++) {\n      node = nodes[i];\n      dy = y0 - node.getLayout()[keyAttr];\n\n      if (dy > 0) {\n        nodeX = node.getLayout()[keyAttr] + dy;\n        orient === 'vertical' ? node.setLayout({\n          x: nodeX\n        }, true) : node.setLayout({\n          y: nodeX\n        }, true);\n      }\n\n      y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap;\n    }\n\n    var viewWidth = orient === 'vertical' ? width : height; // If the bottommost node goes outside the bounds, push it back up\n\n    dy = y0 - nodeGap - viewWidth;\n\n    if (dy > 0) {\n      nodeX = node.getLayout()[keyAttr] - dy;\n      orient === 'vertical' ? node.setLayout({\n        x: nodeX\n      }, true) : node.setLayout({\n        y: nodeX\n      }, true);\n      y0 = nodeX;\n\n      for (i = n - 2; i >= 0; --i) {\n        node = nodes[i];\n        dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0;\n\n        if (dy > 0) {\n          nodeX = node.getLayout()[keyAttr] - dy;\n          orient === 'vertical' ? node.setLayout({\n            x: nodeX\n          }, true) : node.setLayout({\n            y: nodeX\n          }, true);\n        }\n\n        y0 = node.getLayout()[keyAttr];\n      }\n    }\n  });\n}\n/**\n * Change the y-position of the nodes, except most the right side nodes\n *\n * @param {Array.<Array.<module:echarts/data/Graph~Node>>} nodesByBreadth\n *     group by the array of all sankey nodes based on the node x-position.\n * @param {number} alpha  parameter used to adjust the nodes y-position\n */\n\n\nfunction relaxRightToLeft(nodesByBreadth, alpha, orient) {\n  zrUtil.each(nodesByBreadth.slice().reverse(), function (nodes) {\n    zrUtil.each(nodes, function (node) {\n      if (node.outEdges.length) {\n        var y = sum(node.outEdges, weightedTarget, orient) / sum(node.outEdges, getEdgeValue, orient);\n\n        if (isNaN(y)) {\n          var len = node.outEdges.length;\n          y = len ? sum(node.outEdges, centerTarget, orient) / len : 0;\n        }\n\n        if (orient === 'vertical') {\n          var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;\n          node.setLayout({\n            x: nodeX\n          }, true);\n        } else {\n          var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha;\n          node.setLayout({\n            y: nodeY\n          }, true);\n        }\n      }\n    });\n  });\n}\n\nfunction weightedTarget(edge, orient) {\n  return center(edge.node2, orient) * edge.getValue();\n}\n\nfunction centerTarget(edge, orient) {\n  return center(edge.node2, orient);\n}\n\nfunction weightedSource(edge, orient) {\n  return center(edge.node1, orient) * edge.getValue();\n}\n\nfunction centerSource(edge, orient) {\n  return center(edge.node1, orient);\n}\n\nfunction center(node, orient) {\n  return orient === 'vertical' ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2;\n}\n\nfunction getEdgeValue(edge) {\n  return edge.getValue();\n}\n\nfunction sum(array, cb, orient) {\n  var sum = 0;\n  var len = array.length;\n  var i = -1;\n\n  while (++i < len) {\n    var value = +cb.call(array, array[i], orient);\n\n    if (!isNaN(value)) {\n      sum += value;\n    }\n  }\n\n  return sum;\n}\n/**\n * Change the y-position of the nodes, except most the left side nodes\n *\n * @param {Array.<Array.<module:echarts/data/Graph~Node>>} nodesByBreadth\n *     group by the array of all sankey nodes based on the node x-position.\n * @param {number} alpha  parameter used to adjust the nodes y-position\n */\n\n\nfunction relaxLeftToRight(nodesByBreadth, alpha, orient) {\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    zrUtil.each(nodes, function (node) {\n      if (node.inEdges.length) {\n        var y = sum(node.inEdges, weightedSource, orient) / sum(node.inEdges, getEdgeValue, orient);\n\n        if (isNaN(y)) {\n          var len = node.inEdges.length;\n          y = len ? sum(node.inEdges, centerSource, orient) / len : 0;\n        }\n\n        if (orient === 'vertical') {\n          var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;\n          node.setLayout({\n            x: nodeX\n          }, true);\n        } else {\n          var nodeY = node.getLayout().y + (y - center(node, orient)) * alpha;\n          node.setLayout({\n            y: nodeY\n          }, true);\n        }\n      }\n    });\n  });\n}\n/**\n * Compute the depth(y-position) of each edge\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n */\n\n\nfunction computeEdgeDepths(nodes, orient) {\n  var keyAttr = orient === 'vertical' ? 'x' : 'y';\n  zrUtil.each(nodes, function (node) {\n    node.outEdges.sort(function (a, b) {\n      return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr];\n    });\n    node.inEdges.sort(function (a, b) {\n      return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr];\n    });\n  });\n  zrUtil.each(nodes, function (node) {\n    var sy = 0;\n    var ty = 0;\n    zrUtil.each(node.outEdges, function (edge) {\n      edge.setLayout({\n        sy: sy\n      }, true);\n      sy += edge.getLayout().dy;\n    });\n    zrUtil.each(node.inEdges, function (edge) {\n      edge.setLayout({\n        ty: ty\n      }, true);\n      ty += edge.getLayout().dy;\n    });\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar VisualMapping = __webpack_require__(184);\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel, payload) {\n  ecModel.eachSeriesByType('sankey', function (seriesModel) {\n    var graph = seriesModel.getGraph();\n    var nodes = graph.nodes;\n\n    if (nodes.length) {\n      var minValue = Infinity;\n      var maxValue = -Infinity;\n      zrUtil.each(nodes, function (node) {\n        var nodeValue = node.getLayout().value;\n\n        if (nodeValue < minValue) {\n          minValue = nodeValue;\n        }\n\n        if (nodeValue > maxValue) {\n          maxValue = nodeValue;\n        }\n      });\n      zrUtil.each(nodes, function (node) {\n        var mapping = new VisualMapping({\n          type: 'color',\n          mappingMethod: 'linear',\n          dataExtent: [minValue, maxValue],\n          visual: seriesModel.get('color')\n        });\n        var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value);\n        var customColor = node.getModel().get('itemStyle.color');\n        customColor != null ? node.setVisual('color', customColor) : node.setVisual('color', mapValueToColor);\n      });\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1152);\n\n__webpack_require__(1153);\n\nvar boxplotVisual = __webpack_require__(1154);\n\nvar boxplotLayout = __webpack_require__(1155);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(boxplotVisual);\necharts.registerLayout(boxplotLayout);\n\n/***/ }),\n/* 1152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar SeriesModel = __webpack_require__(75);\n\nvar _whiskerBoxCommon = __webpack_require__(602);\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BoxplotSeries = SeriesModel.extend({\n  type: 'series.boxplot',\n  dependencies: ['xAxis', 'yAxis', 'grid'],\n  // TODO\n  // box width represents group size, so dimension should have 'size'.\n\n  /**\n   * @see <https://en.wikipedia.org/wiki/Box_plot>\n   * The meanings of 'min' and 'max' depend on user,\n   * and echarts do not need to know it.\n   * @readOnly\n   */\n  defaultValueDimensions: [{\n    name: 'min',\n    defaultTooltip: true\n  }, {\n    name: 'Q1',\n    defaultTooltip: true\n  }, {\n    name: 'median',\n    defaultTooltip: true\n  }, {\n    name: 'Q3',\n    defaultTooltip: true\n  }, {\n    name: 'max',\n    defaultTooltip: true\n  }],\n\n  /**\n   * @type {Array.<string>}\n   * @readOnly\n   */\n  dimensions: null,\n\n  /**\n   * @override\n   */\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 2,\n    // 二级层叠\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    layout: null,\n    // 'horizontal' or 'vertical'\n    boxWidth: [7, 50],\n    // [min, max] can be percent of band width.\n    itemStyle: {\n      color: '#fff',\n      borderWidth: 1\n    },\n    emphasis: {\n      itemStyle: {\n        borderWidth: 2,\n        shadowBlur: 5,\n        shadowOffsetX: 2,\n        shadowOffsetY: 2,\n        shadowColor: 'rgba(0,0,0,0.4)'\n      }\n    },\n    animationEasing: 'elasticOut',\n    animationDuration: 800\n  }\n});\nzrUtil.mixin(BoxplotSeries, seriesModelMixin, true);\nvar _default = BoxplotSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1153 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar ChartView = __webpack_require__(131);\n\nvar graphic = __webpack_require__(23);\n\nvar Path = __webpack_require__(63);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Update common properties\nvar NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar BoxplotView = ChartView.extend({\n  type: 'boxplot',\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var group = this.group;\n    var oldData = this._data; // There is no old data only when first rendering or switching from\n    // stream mode to normal mode, where previous elements should be removed.\n\n    if (!this._data) {\n      group.removeAll();\n    }\n\n    var constDim = seriesModel.get('layout') === 'horizontal' ? 1 : 0;\n    data.diff(oldData).add(function (newIdx) {\n      if (data.hasValue(newIdx)) {\n        var itemLayout = data.getItemLayout(newIdx);\n        var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);\n        data.setItemGraphicEl(newIdx, symbolEl);\n        group.add(symbolEl);\n      }\n    }).update(function (newIdx, oldIdx) {\n      var symbolEl = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n      if (!data.hasValue(newIdx)) {\n        group.remove(symbolEl);\n        return;\n      }\n\n      var itemLayout = data.getItemLayout(newIdx);\n\n      if (!symbolEl) {\n        symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);\n      } else {\n        updateNormalBoxData(itemLayout, symbolEl, data, newIdx);\n      }\n\n      group.add(symbolEl);\n      data.setItemGraphicEl(newIdx, symbolEl);\n    }).remove(function (oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx);\n      el && group.remove(el);\n    }).execute();\n    this._data = data;\n  },\n  remove: function (ecModel) {\n    var group = this.group;\n    var data = this._data;\n    this._data = null;\n    data && data.eachItemGraphicEl(function (el) {\n      el && group.remove(el);\n    });\n  },\n  dispose: zrUtil.noop\n});\nvar BoxPath = Path.extend({\n  type: 'boxplotBoxPath',\n  shape: {},\n  buildPath: function (ctx, shape) {\n    var ends = shape.points;\n    var i = 0;\n    ctx.moveTo(ends[i][0], ends[i][1]);\n    i++;\n\n    for (; i < 4; i++) {\n      ctx.lineTo(ends[i][0], ends[i][1]);\n    }\n\n    ctx.closePath();\n\n    for (; i < ends.length; i++) {\n      ctx.moveTo(ends[i][0], ends[i][1]);\n      i++;\n      ctx.lineTo(ends[i][0], ends[i][1]);\n    }\n  }\n});\n\nfunction createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {\n  var ends = itemLayout.ends;\n  var el = new BoxPath({\n    shape: {\n      points: isInit ? transInit(ends, constDim, itemLayout) : ends\n    }\n  });\n  updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);\n  return el;\n}\n\nfunction updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {\n  var seriesModel = data.hostModel;\n  var updateMethod = graphic[isInit ? 'initProps' : 'updateProps'];\n  updateMethod(el, {\n    shape: {\n      points: itemLayout.ends\n    }\n  }, seriesModel, dataIndex);\n  var itemModel = data.getItemModel(dataIndex);\n  var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n  var borderColor = data.getItemVisual(dataIndex, 'color'); // Exclude borderColor.\n\n  var itemStyle = normalItemStyleModel.getItemStyle(['borderColor']);\n  itemStyle.stroke = borderColor;\n  itemStyle.strokeNoScale = true;\n  el.useStyle(itemStyle);\n  el.z2 = 100;\n  var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n  graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, dim, itemLayout) {\n  return zrUtil.map(points, function (point) {\n    point = point.slice();\n    point[dim] = itemLayout.initBaseline;\n    return point;\n  });\n}\n\nvar _default = BoxplotView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1154 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar borderColorQuery = ['itemStyle', 'borderColor'];\n\nfunction _default(ecModel, api) {\n  var globalColors = ecModel.get('color');\n  ecModel.eachRawSeriesByType('boxplot', function (seriesModel) {\n    var defaulColor = globalColors[seriesModel.seriesIndex % globalColors.length];\n    var data = seriesModel.getData();\n    data.setVisual({\n      legendSymbol: 'roundRect',\n      // Use name 'color' but not 'borderColor' for legend usage and\n      // visual coding from other component like dataRange.\n      color: seriesModel.get(borderColorQuery) || defaulColor\n    }); // Only visible series has each data be visual encoded\n\n    if (!ecModel.isSeriesFiltered(seriesModel)) {\n      data.each(function (idx) {\n        var itemModel = data.getItemModel(idx);\n        data.setItemVisual(idx, {\n          color: itemModel.get(borderColorQuery, true)\n        });\n      });\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\n\nfunction _default(ecModel) {\n  var groupResult = groupSeriesByAxis(ecModel);\n  each(groupResult, function (groupItem) {\n    var seriesModels = groupItem.seriesModels;\n\n    if (!seriesModels.length) {\n      return;\n    }\n\n    calculateBase(groupItem);\n    each(seriesModels, function (seriesModel, idx) {\n      layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);\n    });\n  });\n}\n/**\n * Group series by axis.\n */\n\n\nfunction groupSeriesByAxis(ecModel) {\n  var result = [];\n  var axisList = [];\n  ecModel.eachSeriesByType('boxplot', function (seriesModel) {\n    var baseAxis = seriesModel.getBaseAxis();\n    var idx = zrUtil.indexOf(axisList, baseAxis);\n\n    if (idx < 0) {\n      idx = axisList.length;\n      axisList[idx] = baseAxis;\n      result[idx] = {\n        axis: baseAxis,\n        seriesModels: []\n      };\n    }\n\n    result[idx].seriesModels.push(seriesModel);\n  });\n  return result;\n}\n/**\n * Calculate offset and box width for each series.\n */\n\n\nfunction calculateBase(groupItem) {\n  var extent;\n  var baseAxis = groupItem.axis;\n  var seriesModels = groupItem.seriesModels;\n  var seriesCount = seriesModels.length;\n  var boxWidthList = groupItem.boxWidthList = [];\n  var boxOffsetList = groupItem.boxOffsetList = [];\n  var boundList = [];\n  var bandWidth;\n\n  if (baseAxis.type === 'category') {\n    bandWidth = baseAxis.getBandWidth();\n  } else {\n    var maxDataCount = 0;\n    each(seriesModels, function (seriesModel) {\n      maxDataCount = Math.max(maxDataCount, seriesModel.getData().count());\n    });\n    extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / maxDataCount;\n  }\n\n  each(seriesModels, function (seriesModel) {\n    var boxWidthBound = seriesModel.get('boxWidth');\n\n    if (!zrUtil.isArray(boxWidthBound)) {\n      boxWidthBound = [boxWidthBound, boxWidthBound];\n    }\n\n    boundList.push([parsePercent(boxWidthBound[0], bandWidth) || 0, parsePercent(boxWidthBound[1], bandWidth) || 0]);\n  });\n  var availableWidth = bandWidth * 0.8 - 2;\n  var boxGap = availableWidth / seriesCount * 0.3;\n  var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;\n  var base = boxWidth / 2 - availableWidth / 2;\n  each(seriesModels, function (seriesModel, idx) {\n    boxOffsetList.push(base);\n    base += boxGap + boxWidth;\n    boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));\n  });\n}\n/**\n * Calculate points location for each series.\n */\n\n\nfunction layoutSingleSeries(seriesModel, offset, boxWidth) {\n  var coordSys = seriesModel.coordinateSystem;\n  var data = seriesModel.getData();\n  var halfWidth = boxWidth / 2;\n  var cDimIdx = seriesModel.get('layout') === 'horizontal' ? 0 : 1;\n  var vDimIdx = 1 - cDimIdx;\n  var coordDims = ['x', 'y'];\n  var cDim = data.mapDimension(coordDims[cDimIdx]);\n  var vDims = data.mapDimension(coordDims[vDimIdx], true);\n\n  if (cDim == null || vDims.length < 5) {\n    return;\n  }\n\n  for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n    var axisDimVal = data.get(cDim, dataIndex);\n    var median = getPoint(axisDimVal, vDims[2], dataIndex);\n    var end1 = getPoint(axisDimVal, vDims[0], dataIndex);\n    var end2 = getPoint(axisDimVal, vDims[1], dataIndex);\n    var end4 = getPoint(axisDimVal, vDims[3], dataIndex);\n    var end5 = getPoint(axisDimVal, vDims[4], dataIndex);\n    var ends = [];\n    addBodyEnd(ends, end2, 0);\n    addBodyEnd(ends, end4, 1);\n    ends.push(end1, end2, end5, end4);\n    layEndLine(ends, end1);\n    layEndLine(ends, end5);\n    layEndLine(ends, median);\n    data.setItemLayout(dataIndex, {\n      initBaseline: median[vDimIdx],\n      ends: ends\n    });\n  }\n\n  function getPoint(axisDimVal, dimIdx, dataIndex) {\n    var val = data.get(dimIdx, dataIndex);\n    var p = [];\n    p[cDimIdx] = axisDimVal;\n    p[vDimIdx] = val;\n    var point;\n\n    if (isNaN(axisDimVal) || isNaN(val)) {\n      point = [NaN, NaN];\n    } else {\n      point = coordSys.dataToPoint(p);\n      point[cDimIdx] += offset;\n    }\n\n    return point;\n  }\n\n  function addBodyEnd(ends, point, start) {\n    var point1 = point.slice();\n    var point2 = point.slice();\n    point1[cDimIdx] += halfWidth;\n    point2[cDimIdx] -= halfWidth;\n    start ? ends.push(point1, point2) : ends.push(point2, point1);\n  }\n\n  function layEndLine(ends, endCenter) {\n    var from = endCenter.slice();\n    var to = endCenter.slice();\n    from[cDimIdx] -= halfWidth;\n    to[cDimIdx] += halfWidth;\n    ends.push(from, to);\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1157);\n\n__webpack_require__(1158);\n\nvar preprocessor = __webpack_require__(1159);\n\nvar candlestickVisual = __webpack_require__(1160);\n\nvar candlestickLayout = __webpack_require__(1161);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerPreprocessor(preprocessor);\necharts.registerVisual(candlestickVisual);\necharts.registerLayout(candlestickLayout);\n\n/***/ }),\n/* 1157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar SeriesModel = __webpack_require__(75);\n\nvar _whiskerBoxCommon = __webpack_require__(602);\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CandlestickSeries = SeriesModel.extend({\n  type: 'series.candlestick',\n  dependencies: ['xAxis', 'yAxis', 'grid'],\n\n  /**\n   * @readOnly\n   */\n  defaultValueDimensions: [{\n    name: 'open',\n    defaultTooltip: true\n  }, {\n    name: 'close',\n    defaultTooltip: true\n  }, {\n    name: 'lowest',\n    defaultTooltip: true\n  }, {\n    name: 'highest',\n    defaultTooltip: true\n  }],\n\n  /**\n   * @type {Array.<string>}\n   * @readOnly\n   */\n  dimensions: null,\n\n  /**\n   * @override\n   */\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    layout: null,\n    // 'horizontal' or 'vertical'\n    clip: true,\n    itemStyle: {\n      color: '#c23531',\n      // 阳线 positive\n      color0: '#314656',\n      // 阴线 negative     '#c23531', '#314656'\n      borderWidth: 1,\n      // FIXME\n      // ec2中使用的是lineStyle.color 和 lineStyle.color0\n      borderColor: '#c23531',\n      borderColor0: '#314656'\n    },\n    emphasis: {\n      itemStyle: {\n        borderWidth: 2\n      }\n    },\n    barMaxWidth: null,\n    barMinWidth: null,\n    barWidth: null,\n    large: true,\n    largeThreshold: 600,\n    progressive: 3e3,\n    progressiveThreshold: 1e4,\n    progressiveChunkMode: 'mod',\n    animationUpdate: false,\n    animationEasing: 'linear',\n    animationDuration: 300\n  },\n\n  /**\n   * Get dimension for shadow in dataZoom\n   * @return {string} dimension name\n   */\n  getShadowDim: function () {\n    return 'open';\n  },\n  brushSelector: function (dataIndex, data, selectors) {\n    var itemLayout = data.getItemLayout(dataIndex);\n    return itemLayout && selectors.rect(itemLayout.brushRect);\n  }\n});\nzrUtil.mixin(CandlestickSeries, seriesModelMixin, true);\nvar _default = CandlestickSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar ChartView = __webpack_require__(131);\n\nvar graphic = __webpack_require__(23);\n\nvar Path = __webpack_require__(63);\n\nvar _createClipPathFromCoordSys = __webpack_require__(261);\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar SKIP_PROPS = ['color', 'color0', 'borderColor', 'borderColor0'];\nvar CandlestickView = ChartView.extend({\n  type: 'candlestick',\n  render: function (seriesModel, ecModel, api) {\n    // If there is clipPath created in large mode. Remove it.\n    this.group.removeClipPath();\n\n    this._updateDrawMode(seriesModel);\n\n    this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel);\n  },\n  incrementalPrepareRender: function (seriesModel, ecModel, api) {\n    this._clear();\n\n    this._updateDrawMode(seriesModel);\n  },\n  incrementalRender: function (params, seriesModel, ecModel, api) {\n    this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel);\n  },\n  _updateDrawMode: function (seriesModel) {\n    var isLargeDraw = seriesModel.pipelineContext.large;\n\n    if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n      this._isLargeDraw = isLargeDraw;\n\n      this._clear();\n    }\n  },\n  _renderNormal: function (seriesModel) {\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var group = this.group;\n    var isSimpleBox = data.getLayout('isSimpleBox');\n    var needsClip = seriesModel.get('clip', true);\n    var coord = seriesModel.coordinateSystem;\n    var clipArea = coord.getArea && coord.getArea(); // There is no old data only when first rendering or switching from\n    // stream mode to normal mode, where previous elements should be removed.\n\n    if (!this._data) {\n      group.removeAll();\n    }\n\n    data.diff(oldData).add(function (newIdx) {\n      if (data.hasValue(newIdx)) {\n        var el;\n        var itemLayout = data.getItemLayout(newIdx);\n\n        if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n          return;\n        }\n\n        el = createNormalBox(itemLayout, newIdx, true);\n        graphic.initProps(el, {\n          shape: {\n            points: itemLayout.ends\n          }\n        }, seriesModel, newIdx);\n        setBoxCommon(el, data, newIdx, isSimpleBox);\n        group.add(el);\n        data.setItemGraphicEl(newIdx, el);\n      }\n    }).update(function (newIdx, oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n      if (!data.hasValue(newIdx)) {\n        group.remove(el);\n        return;\n      }\n\n      var itemLayout = data.getItemLayout(newIdx);\n\n      if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n        group.remove(el);\n        return;\n      }\n\n      if (!el) {\n        el = createNormalBox(itemLayout, newIdx);\n      } else {\n        graphic.updateProps(el, {\n          shape: {\n            points: itemLayout.ends\n          }\n        }, seriesModel, newIdx);\n      }\n\n      setBoxCommon(el, data, newIdx, isSimpleBox);\n      group.add(el);\n      data.setItemGraphicEl(newIdx, el);\n    }).remove(function (oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx);\n      el && group.remove(el);\n    }).execute();\n    this._data = data;\n  },\n  _renderLarge: function (seriesModel) {\n    this._clear();\n\n    createLarge(seriesModel, this.group);\n    var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n    if (clipPath) {\n      this.group.setClipPath(clipPath);\n    } else {\n      this.group.removeClipPath();\n    }\n  },\n  _incrementalRenderNormal: function (params, seriesModel) {\n    var data = seriesModel.getData();\n    var isSimpleBox = data.getLayout('isSimpleBox');\n    var dataIndex;\n\n    while ((dataIndex = params.next()) != null) {\n      var el;\n      var itemLayout = data.getItemLayout(dataIndex);\n      el = createNormalBox(itemLayout, dataIndex);\n      setBoxCommon(el, data, dataIndex, isSimpleBox);\n      el.incremental = true;\n      this.group.add(el);\n    }\n  },\n  _incrementalRenderLarge: function (params, seriesModel) {\n    createLarge(seriesModel, this.group, true);\n  },\n  remove: function (ecModel) {\n    this._clear();\n  },\n  _clear: function () {\n    this.group.removeAll();\n    this._data = null;\n  },\n  dispose: zrUtil.noop\n});\nvar NormalBoxPath = Path.extend({\n  type: 'normalCandlestickBox',\n  shape: {},\n  buildPath: function (ctx, shape) {\n    var ends = shape.points;\n\n    if (this.__simpleBox) {\n      ctx.moveTo(ends[4][0], ends[4][1]);\n      ctx.lineTo(ends[6][0], ends[6][1]);\n    } else {\n      ctx.moveTo(ends[0][0], ends[0][1]);\n      ctx.lineTo(ends[1][0], ends[1][1]);\n      ctx.lineTo(ends[2][0], ends[2][1]);\n      ctx.lineTo(ends[3][0], ends[3][1]);\n      ctx.closePath();\n      ctx.moveTo(ends[4][0], ends[4][1]);\n      ctx.lineTo(ends[5][0], ends[5][1]);\n      ctx.moveTo(ends[6][0], ends[6][1]);\n      ctx.lineTo(ends[7][0], ends[7][1]);\n    }\n  }\n});\n\nfunction createNormalBox(itemLayout, dataIndex, isInit) {\n  var ends = itemLayout.ends;\n  return new NormalBoxPath({\n    shape: {\n      points: isInit ? transInit(ends, itemLayout) : ends\n    },\n    z2: 100\n  });\n}\n\nfunction isNormalBoxClipped(clipArea, itemLayout) {\n  var clipped = true;\n\n  for (var i = 0; i < itemLayout.ends.length; i++) {\n    // If any point are in the region.\n    if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {\n      clipped = false;\n      break;\n    }\n  }\n\n  return clipped;\n}\n\nfunction setBoxCommon(el, data, dataIndex, isSimpleBox) {\n  var itemModel = data.getItemModel(dataIndex);\n  var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n  var color = data.getItemVisual(dataIndex, 'color');\n  var borderColor = data.getItemVisual(dataIndex, 'borderColor') || color; // Color must be excluded.\n  // Because symbol provide setColor individually to set fill and stroke\n\n  var itemStyle = normalItemStyleModel.getItemStyle(SKIP_PROPS);\n  el.useStyle(itemStyle);\n  el.style.strokeNoScale = true;\n  el.style.fill = color;\n  el.style.stroke = borderColor;\n  el.__simpleBox = isSimpleBox;\n  var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n  graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, itemLayout) {\n  return zrUtil.map(points, function (point) {\n    point = point.slice();\n    point[1] = itemLayout.initBaseline;\n    return point;\n  });\n}\n\nvar LargeBoxPath = Path.extend({\n  type: 'largeCandlestickBox',\n  shape: {},\n  buildPath: function (ctx, shape) {\n    // Drawing lines is more efficient than drawing\n    // a whole line or drawing rects.\n    var points = shape.points;\n\n    for (var i = 0; i < points.length;) {\n      if (this.__sign === points[i++]) {\n        var x = points[i++];\n        ctx.moveTo(x, points[i++]);\n        ctx.lineTo(x, points[i++]);\n      } else {\n        i += 3;\n      }\n    }\n  }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n  var data = seriesModel.getData();\n  var largePoints = data.getLayout('largePoints');\n  var elP = new LargeBoxPath({\n    shape: {\n      points: largePoints\n    },\n    __sign: 1\n  });\n  group.add(elP);\n  var elN = new LargeBoxPath({\n    shape: {\n      points: largePoints\n    },\n    __sign: -1\n  });\n  group.add(elN);\n  setLargeStyle(1, elP, seriesModel, data);\n  setLargeStyle(-1, elN, seriesModel, data);\n\n  if (incremental) {\n    elP.incremental = true;\n    elN.incremental = true;\n  }\n}\n\nfunction setLargeStyle(sign, el, seriesModel, data) {\n  var suffix = sign > 0 ? 'P' : 'N';\n  var borderColor = data.getVisual('borderColor' + suffix) || data.getVisual('color' + suffix); // Color must be excluded.\n  // Because symbol provide setColor individually to set fill and stroke\n\n  var itemStyle = seriesModel.getModel(NORMAL_ITEM_STYLE_PATH).getItemStyle(SKIP_PROPS);\n  el.useStyle(itemStyle);\n  el.style.fill = null;\n  el.style.stroke = borderColor; // No different\n  // el.style.lineWidth = .5;\n}\n\nvar _default = CandlestickView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(option) {\n  if (!option || !zrUtil.isArray(option.series)) {\n    return;\n  } // Translate 'k' to 'candlestick'.\n\n\n  zrUtil.each(option.series, function (seriesItem) {\n    if (zrUtil.isObject(seriesItem) && seriesItem.type === 'k') {\n      seriesItem.type = 'candlestick';\n    }\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createRenderPlanner = __webpack_require__(214);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar positiveBorderColorQuery = ['itemStyle', 'borderColor'];\nvar negativeBorderColorQuery = ['itemStyle', 'borderColor0'];\nvar positiveColorQuery = ['itemStyle', 'color'];\nvar negativeColorQuery = ['itemStyle', 'color0'];\nvar _default = {\n  seriesType: 'candlestick',\n  plan: createRenderPlanner(),\n  // For legend.\n  performRawSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var data = seriesModel.getData();\n    data.setVisual({\n      legendSymbol: 'roundRect',\n      colorP: getColor(1, seriesModel),\n      colorN: getColor(-1, seriesModel),\n      borderColorP: getBorderColor(1, seriesModel),\n      borderColorN: getBorderColor(-1, seriesModel)\n    }); // Only visible series has each data be visual encoded\n\n    if (ecModel.isSeriesFiltered(seriesModel)) {\n      return;\n    }\n\n    var isLargeRender = seriesModel.pipelineContext.large;\n    return !isLargeRender && {\n      progress: progress\n    };\n\n    function progress(params, data) {\n      var dataIndex;\n\n      while ((dataIndex = params.next()) != null) {\n        var itemModel = data.getItemModel(dataIndex);\n        var sign = data.getItemLayout(dataIndex).sign;\n        data.setItemVisual(dataIndex, {\n          color: getColor(sign, itemModel),\n          borderColor: getBorderColor(sign, itemModel)\n        });\n      }\n    }\n\n    function getColor(sign, model) {\n      return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);\n    }\n\n    function getBorderColor(sign, model) {\n      return model.get(sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);\n    }\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _graphic = __webpack_require__(23);\n\nvar subPixelOptimize = _graphic.subPixelOptimize;\n\nvar createRenderPlanner = __webpack_require__(214);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\nvar _util = __webpack_require__(2);\n\nvar retrieve2 = _util.retrieve2;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nvar _default = {\n  seriesType: 'candlestick',\n  plan: createRenderPlanner(),\n  reset: function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var data = seriesModel.getData();\n    var candleWidth = calculateCandleWidth(seriesModel, data);\n    var cDimIdx = 0;\n    var vDimIdx = 1;\n    var coordDims = ['x', 'y'];\n    var cDim = data.mapDimension(coordDims[cDimIdx]);\n    var vDims = data.mapDimension(coordDims[vDimIdx], true);\n    var openDim = vDims[0];\n    var closeDim = vDims[1];\n    var lowestDim = vDims[2];\n    var highestDim = vDims[3];\n    data.setLayout({\n      candleWidth: candleWidth,\n      // The value is experimented visually.\n      isSimpleBox: candleWidth <= 1.3\n    });\n\n    if (cDim == null || vDims.length < 4) {\n      return;\n    }\n\n    return {\n      progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress\n    };\n\n    function normalProgress(params, data) {\n      var dataIndex;\n\n      while ((dataIndex = params.next()) != null) {\n        var axisDimVal = data.get(cDim, dataIndex);\n        var openVal = data.get(openDim, dataIndex);\n        var closeVal = data.get(closeDim, dataIndex);\n        var lowestVal = data.get(lowestDim, dataIndex);\n        var highestVal = data.get(highestDim, dataIndex);\n        var ocLow = Math.min(openVal, closeVal);\n        var ocHigh = Math.max(openVal, closeVal);\n        var ocLowPoint = getPoint(ocLow, axisDimVal);\n        var ocHighPoint = getPoint(ocHigh, axisDimVal);\n        var lowestPoint = getPoint(lowestVal, axisDimVal);\n        var highestPoint = getPoint(highestVal, axisDimVal);\n        var ends = [];\n        addBodyEnd(ends, ocHighPoint, 0);\n        addBodyEnd(ends, ocLowPoint, 1);\n        ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\n        data.setItemLayout(dataIndex, {\n          sign: getSign(data, dataIndex, openVal, closeVal, closeDim),\n          initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\n          // open point.\n          ends: ends,\n          brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\n        });\n      }\n\n      function getPoint(val, axisDimVal) {\n        var p = [];\n        p[cDimIdx] = axisDimVal;\n        p[vDimIdx] = val;\n        return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);\n      }\n\n      function addBodyEnd(ends, point, start) {\n        var point1 = point.slice();\n        var point2 = point.slice();\n        point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);\n        point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);\n        start ? ends.push(point1, point2) : ends.push(point2, point1);\n      }\n\n      function makeBrushRect(lowestVal, highestVal, axisDimVal) {\n        var pmin = getPoint(lowestVal, axisDimVal);\n        var pmax = getPoint(highestVal, axisDimVal);\n        pmin[cDimIdx] -= candleWidth / 2;\n        pmax[cDimIdx] -= candleWidth / 2;\n        return {\n          x: pmin[0],\n          y: pmin[1],\n          width: vDimIdx ? candleWidth : pmax[0] - pmin[0],\n          height: vDimIdx ? pmax[1] - pmin[1] : candleWidth\n        };\n      }\n\n      function subPixelOptimizePoint(point) {\n        point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);\n        return point;\n      }\n    }\n\n    function largeProgress(params, data) {\n      // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...]\n      var points = new LargeArr(params.count * 4);\n      var offset = 0;\n      var point;\n      var tmpIn = [];\n      var tmpOut = [];\n      var dataIndex;\n\n      while ((dataIndex = params.next()) != null) {\n        var axisDimVal = data.get(cDim, dataIndex);\n        var openVal = data.get(openDim, dataIndex);\n        var closeVal = data.get(closeDim, dataIndex);\n        var lowestVal = data.get(lowestDim, dataIndex);\n        var highestVal = data.get(highestDim, dataIndex);\n\n        if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\n          points[offset++] = NaN;\n          offset += 3;\n          continue;\n        }\n\n        points[offset++] = getSign(data, dataIndex, openVal, closeVal, closeDim);\n        tmpIn[cDimIdx] = axisDimVal;\n        tmpIn[vDimIdx] = lowestVal;\n        point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n        points[offset++] = point ? point[0] : NaN;\n        points[offset++] = point ? point[1] : NaN;\n        tmpIn[vDimIdx] = highestVal;\n        point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n        points[offset++] = point ? point[1] : NaN;\n      }\n\n      data.setLayout('largePoints', points);\n    }\n  }\n};\n\nfunction getSign(data, dataIndex, openVal, closeVal, closeDim) {\n  var sign;\n\n  if (openVal > closeVal) {\n    sign = -1;\n  } else if (openVal < closeVal) {\n    sign = 1;\n  } else {\n    sign = dataIndex > 0 // If close === open, compare with close of last record\n    ? data.get(closeDim, dataIndex - 1) <= closeVal ? 1 : -1 : // No record of previous, set to be positive\n    1;\n  }\n\n  return sign;\n}\n\nfunction calculateCandleWidth(seriesModel, data) {\n  var baseAxis = seriesModel.getBaseAxis();\n  var extent;\n  var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());\n  var barMaxWidth = parsePercent(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\n  var barMinWidth = parsePercent(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\n  var barWidth = seriesModel.get('barWidth');\n  return barWidth != null ? parsePercent(barWidth, bandWidth) // Put max outer to ensure bar visible in spite of overlap.\n  : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1162 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1163);\n\n__webpack_require__(1164);\n\nvar visualSymbol = __webpack_require__(181);\n\nvar layoutPoints = __webpack_require__(262);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(visualSymbol('effectScatter', 'circle'));\necharts.registerLayout(layoutPoints('effectScatter'));\n\n/***/ }),\n/* 1163 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListFromArray = __webpack_require__(145);\n\nvar SeriesModel = __webpack_require__(75);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n  type: 'series.effectScatter',\n  dependencies: ['grid', 'polar'],\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this, {\n      useEncodeDefaulter: true\n    });\n  },\n  brushSelector: 'point',\n  defaultOption: {\n    coordinateSystem: 'cartesian2d',\n    zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    effectType: 'ripple',\n    progressive: 0,\n    // When to show the effect, option: 'render'|'emphasis'\n    showEffectOn: 'render',\n    // Ripple effect config\n    rippleEffect: {\n      period: 4,\n      // Scale of ripple\n      scale: 2.5,\n      // Brush type can be fill or stroke\n      brushType: 'fill'\n    },\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Polar coordinate system\n    // polarIndex: 0,\n    // Geo coordinate system\n    // geoIndex: 0,\n    // symbol: null,        // 图形类型\n    symbolSize: 10 // 图形大小，半宽（半径）参数，当图形为方向或菱形则总宽度为symbolSize * 2\n    // symbolRotate: null,  // 图形旋转控制\n    // large: false,\n    // Available when large is true\n    // largeThreshold: 2000,\n    // itemStyle: {\n    //     opacity: 1\n    // }\n\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar SymbolDraw = __webpack_require__(260);\n\nvar EffectSymbol = __webpack_require__(1165);\n\nvar matrix = __webpack_require__(89);\n\nvar pointsLayout = __webpack_require__(262);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendChartView({\n  type: 'effectScatter',\n  init: function () {\n    this._symbolDraw = new SymbolDraw(EffectSymbol);\n  },\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var effectSymbolDraw = this._symbolDraw;\n    effectSymbolDraw.updateData(data);\n    this.group.add(effectSymbolDraw.group);\n  },\n  updateTransform: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    this.group.dirty();\n    var res = pointsLayout().reset(seriesModel);\n\n    if (res.progress) {\n      res.progress({\n        start: 0,\n        end: data.count()\n      }, data);\n    }\n\n    this._symbolDraw.updateLayout(data);\n  },\n  _updateGroupTransform: function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && coordSys.getRoamTransform) {\n      this.group.transform = matrix.clone(coordSys.getRoamTransform());\n      this.group.decomposeTransform();\n    }\n  },\n  remove: function (ecModel, api) {\n    this._symbolDraw && this._symbolDraw.remove(api);\n  },\n  dispose: function () {}\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar _symbol = __webpack_require__(117);\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _graphic = __webpack_require__(23);\n\nvar Group = _graphic.Group;\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\nvar SymbolClz = __webpack_require__(332);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Symbol with ripple effect\n * @module echarts/chart/helper/EffectSymbol\n */\nvar EFFECT_RIPPLE_NUMBER = 3;\n\nfunction normalizeSymbolSize(symbolSize) {\n  if (!zrUtil.isArray(symbolSize)) {\n    symbolSize = [+symbolSize, +symbolSize];\n  }\n\n  return symbolSize;\n}\n\nfunction updateRipplePath(rippleGroup, effectCfg) {\n  var color = effectCfg.rippleEffectColor || effectCfg.color;\n  rippleGroup.eachChild(function (ripplePath) {\n    ripplePath.attr({\n      z: effectCfg.z,\n      zlevel: effectCfg.zlevel,\n      style: {\n        stroke: effectCfg.brushType === 'stroke' ? color : null,\n        fill: effectCfg.brushType === 'fill' ? color : null\n      }\n    });\n  });\n}\n/**\n * @constructor\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction EffectSymbol(data, idx) {\n  Group.call(this);\n  var symbol = new SymbolClz(data, idx);\n  var rippleGroup = new Group();\n  this.add(symbol);\n  this.add(rippleGroup);\n\n  rippleGroup.beforeUpdate = function () {\n    this.attr(symbol.getScale());\n  };\n\n  this.updateData(data, idx);\n}\n\nvar effectSymbolProto = EffectSymbol.prototype;\n\neffectSymbolProto.stopEffectAnimation = function () {\n  this.childAt(1).removeAll();\n};\n\neffectSymbolProto.startEffectAnimation = function (effectCfg) {\n  var symbolType = effectCfg.symbolType;\n  var color = effectCfg.color;\n  var rippleGroup = this.childAt(1);\n\n  for (var i = 0; i < EFFECT_RIPPLE_NUMBER; i++) {\n    // If width/height are set too small (e.g., set to 1) on ios10\n    // and macOS Sierra, a circle stroke become a rect, no matter what\n    // the scale is set. So we set width/height as 2. See #4136.\n    var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color);\n    ripplePath.attr({\n      style: {\n        strokeNoScale: true\n      },\n      z2: 99,\n      silent: true,\n      scale: [0.5, 0.5]\n    });\n    var delay = -i / EFFECT_RIPPLE_NUMBER * effectCfg.period + effectCfg.effectOffset; // TODO Configurable effectCfg.period\n\n    ripplePath.animate('', true).when(effectCfg.period, {\n      scale: [effectCfg.rippleScale / 2, effectCfg.rippleScale / 2]\n    }).delay(delay).start();\n    ripplePath.animateStyle(true).when(effectCfg.period, {\n      opacity: 0\n    }).delay(delay).start();\n    rippleGroup.add(ripplePath);\n  }\n\n  updateRipplePath(rippleGroup, effectCfg);\n};\n/**\n * Update effect symbol\n */\n\n\neffectSymbolProto.updateEffectAnimation = function (effectCfg) {\n  var oldEffectCfg = this._effectCfg;\n  var rippleGroup = this.childAt(1); // Must reinitialize effect if following configuration changed\n\n  var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale'];\n\n  for (var i = 0; i < DIFFICULT_PROPS.length; i++) {\n    var propName = DIFFICULT_PROPS[i];\n\n    if (oldEffectCfg[propName] !== effectCfg[propName]) {\n      this.stopEffectAnimation();\n      this.startEffectAnimation(effectCfg);\n      return;\n    }\n  }\n\n  updateRipplePath(rippleGroup, effectCfg);\n};\n/**\n * Highlight symbol\n */\n\n\neffectSymbolProto.highlight = function () {\n  this.trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\neffectSymbolProto.downplay = function () {\n  this.trigger('normal');\n};\n/**\n * Update symbol properties\n * @param  {module:echarts/data/List} data\n * @param  {number} idx\n */\n\n\neffectSymbolProto.updateData = function (data, idx) {\n  var seriesModel = data.hostModel;\n  this.childAt(0).updateData(data, idx);\n  var rippleGroup = this.childAt(1);\n  var itemModel = data.getItemModel(idx);\n  var symbolType = data.getItemVisual(idx, 'symbol');\n  var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n  var color = data.getItemVisual(idx, 'color');\n  rippleGroup.attr('scale', symbolSize);\n  rippleGroup.traverse(function (ripplePath) {\n    ripplePath.attr({\n      fill: color\n    });\n  });\n  var symbolOffset = itemModel.getShallow('symbolOffset');\n\n  if (symbolOffset) {\n    var pos = rippleGroup.position;\n    pos[0] = parsePercent(symbolOffset[0], symbolSize[0]);\n    pos[1] = parsePercent(symbolOffset[1], symbolSize[1]);\n  }\n\n  var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\n  rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n  var effectCfg = {};\n  effectCfg.showEffectOn = seriesModel.get('showEffectOn');\n  effectCfg.rippleScale = itemModel.get('rippleEffect.scale');\n  effectCfg.brushType = itemModel.get('rippleEffect.brushType');\n  effectCfg.period = itemModel.get('rippleEffect.period') * 1000;\n  effectCfg.effectOffset = idx / data.count();\n  effectCfg.z = itemModel.getShallow('z') || 0;\n  effectCfg.zlevel = itemModel.getShallow('zlevel') || 0;\n  effectCfg.symbolType = symbolType;\n  effectCfg.color = color;\n  effectCfg.rippleEffectColor = itemModel.get('rippleEffect.color');\n  this.off('mouseover').off('mouseout').off('emphasis').off('normal');\n\n  if (effectCfg.showEffectOn === 'render') {\n    this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg);\n    this._effectCfg = effectCfg;\n  } else {\n    // Not keep old effect config\n    this._effectCfg = null;\n    this.stopEffectAnimation();\n    var symbol = this.childAt(0);\n\n    var onEmphasis = function () {\n      symbol.highlight();\n\n      if (effectCfg.showEffectOn !== 'render') {\n        this.startEffectAnimation(effectCfg);\n      }\n    };\n\n    var onNormal = function () {\n      symbol.downplay();\n\n      if (effectCfg.showEffectOn !== 'render') {\n        this.stopEffectAnimation();\n      }\n    };\n\n    this.on('mouseover', onEmphasis, this).on('mouseout', onNormal, this).on('emphasis', onEmphasis, this).on('normal', onNormal, this);\n  }\n\n  this._effectCfg = effectCfg;\n};\n\neffectSymbolProto.fadeOut = function (cb) {\n  this.off('mouseover').off('mouseout').off('emphasis').off('normal');\n  cb && cb();\n};\n\nzrUtil.inherits(EffectSymbol, Group);\nvar _default = EffectSymbol;\nmodule.exports = _default;\n\n/***/ }),\n/* 1166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1167);\n\n__webpack_require__(1168);\n\nvar linesLayout = __webpack_require__(605);\n\nvar linesVisual = __webpack_require__(1171);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerLayout(linesLayout);\necharts.registerVisual(linesVisual);\n\n/***/ }),\n/* 1167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar SeriesModel = __webpack_require__(75);\n\nvar List = __webpack_require__(116);\n\nvar _util = __webpack_require__(2);\n\nvar concatArray = _util.concatArray;\nvar mergeAll = _util.mergeAll;\nvar map = _util.map;\n\nvar _format = __webpack_require__(50);\n\nvar encodeHTML = _format.encodeHTML;\n\nvar CoordinateSystem = __webpack_require__(121);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Uint32Array, Float64Array, Float32Array */\nvar Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array;\nvar Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array;\n\nfunction compatEc2(seriesOpt) {\n  var data = seriesOpt.data;\n\n  if (data && data[0] && data[0][0] && data[0][0].coord) {\n    seriesOpt.data = map(data, function (itemOpt) {\n      var coords = [itemOpt[0].coord, itemOpt[1].coord];\n      var target = {\n        coords: coords\n      };\n\n      if (itemOpt[0].name) {\n        target.fromName = itemOpt[0].name;\n      }\n\n      if (itemOpt[1].name) {\n        target.toName = itemOpt[1].name;\n      }\n\n      return mergeAll([target, itemOpt[0], itemOpt[1]]);\n    });\n  }\n}\n\nvar LinesSeries = SeriesModel.extend({\n  type: 'series.lines',\n  dependencies: ['grid', 'polar'],\n  visualColorAccessPath: 'lineStyle.color',\n  init: function (option) {\n    // The input data may be null/undefined.\n    option.data = option.data || []; // Not using preprocessor because mergeOption may not have series.type\n\n    compatEc2(option);\n\n    var result = this._processFlatCoordsArray(option.data);\n\n    this._flatCoords = result.flatCoords;\n    this._flatCoordsOffset = result.flatCoordsOffset;\n\n    if (result.flatCoords) {\n      option.data = new Float32Array(result.count);\n    }\n\n    LinesSeries.superApply(this, 'init', arguments);\n  },\n  mergeOption: function (option) {\n    compatEc2(option);\n\n    if (option.data) {\n      // Only update when have option data to merge.\n      var result = this._processFlatCoordsArray(option.data);\n\n      this._flatCoords = result.flatCoords;\n      this._flatCoordsOffset = result.flatCoordsOffset;\n\n      if (result.flatCoords) {\n        option.data = new Float32Array(result.count);\n      }\n    }\n\n    LinesSeries.superApply(this, 'mergeOption', arguments);\n  },\n  appendData: function (params) {\n    var result = this._processFlatCoordsArray(params.data);\n\n    if (result.flatCoords) {\n      if (!this._flatCoords) {\n        this._flatCoords = result.flatCoords;\n        this._flatCoordsOffset = result.flatCoordsOffset;\n      } else {\n        this._flatCoords = concatArray(this._flatCoords, result.flatCoords);\n        this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);\n      }\n\n      params.data = new Float32Array(result.count);\n    }\n\n    this.getRawData().appendData(params.data);\n  },\n  _getCoordsFromItemModel: function (idx) {\n    var itemModel = this.getData().getItemModel(idx);\n    var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow('coords');\n    return coords;\n  },\n  getLineCoordsCount: function (idx) {\n    if (this._flatCoordsOffset) {\n      return this._flatCoordsOffset[idx * 2 + 1];\n    } else {\n      return this._getCoordsFromItemModel(idx).length;\n    }\n  },\n  getLineCoords: function (idx, out) {\n    if (this._flatCoordsOffset) {\n      var offset = this._flatCoordsOffset[idx * 2];\n      var len = this._flatCoordsOffset[idx * 2 + 1];\n\n      for (var i = 0; i < len; i++) {\n        out[i] = out[i] || [];\n        out[i][0] = this._flatCoords[offset + i * 2];\n        out[i][1] = this._flatCoords[offset + i * 2 + 1];\n      }\n\n      return len;\n    } else {\n      var coords = this._getCoordsFromItemModel(idx);\n\n      for (var i = 0; i < coords.length; i++) {\n        out[i] = out[i] || [];\n        out[i][0] = coords[i][0];\n        out[i][1] = coords[i][1];\n      }\n\n      return coords.length;\n    }\n  },\n  _processFlatCoordsArray: function (data) {\n    var startOffset = 0;\n\n    if (this._flatCoords) {\n      startOffset = this._flatCoords.length;\n    } // Stored as a typed array. In format\n    // Points Count(2) | x | y | x | y | Points Count(3) | x |  y | x | y | x | y |\n\n\n    if (typeof data[0] === 'number') {\n      var len = data.length; // Store offset and len of each segment\n\n      var coordsOffsetAndLenStorage = new Uint32Arr(len);\n      var coordsStorage = new Float64Arr(len);\n      var coordsCursor = 0;\n      var offsetCursor = 0;\n      var dataCount = 0;\n\n      for (var i = 0; i < len;) {\n        dataCount++;\n        var count = data[i++]; // Offset\n\n        coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; // Len\n\n        coordsOffsetAndLenStorage[offsetCursor++] = count;\n\n        for (var k = 0; k < count; k++) {\n          var x = data[i++];\n          var y = data[i++];\n          coordsStorage[coordsCursor++] = x;\n          coordsStorage[coordsCursor++] = y;\n\n          if (i > len) {}\n        }\n      }\n\n      return {\n        flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),\n        flatCoords: coordsStorage,\n        count: dataCount\n      };\n    }\n\n    return {\n      flatCoordsOffset: null,\n      flatCoords: null,\n      count: data.length\n    };\n  },\n  getInitialData: function (option, ecModel) {\n    var lineData = new List(['value'], this);\n    lineData.hasItemOption = false;\n    lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {\n      // dataItem is simply coords\n      if (dataItem instanceof Array) {\n        return NaN;\n      } else {\n        lineData.hasItemOption = true;\n        var value = dataItem.value;\n\n        if (value != null) {\n          return value instanceof Array ? value[dimIndex] : value;\n        }\n      }\n    });\n    return lineData;\n  },\n  formatTooltip: function (dataIndex) {\n    var data = this.getData();\n    var itemModel = data.getItemModel(dataIndex);\n    var name = itemModel.get('name');\n\n    if (name) {\n      return name;\n    }\n\n    var fromName = itemModel.get('fromName');\n    var toName = itemModel.get('toName');\n    var html = [];\n    fromName != null && html.push(fromName);\n    toName != null && html.push(toName);\n    return encodeHTML(html.join(' > '));\n  },\n  preventIncremental: function () {\n    return !!this.get('effect.show');\n  },\n  getProgressive: function () {\n    var progressive = this.option.progressive;\n\n    if (progressive == null) {\n      return this.option.large ? 1e4 : this.get('progressive');\n    }\n\n    return progressive;\n  },\n  getProgressiveThreshold: function () {\n    var progressiveThreshold = this.option.progressiveThreshold;\n\n    if (progressiveThreshold == null) {\n      return this.option.large ? 2e4 : this.get('progressiveThreshold');\n    }\n\n    return progressiveThreshold;\n  },\n  defaultOption: {\n    coordinateSystem: 'geo',\n    zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // Cartesian coordinate system\n    xAxisIndex: 0,\n    yAxisIndex: 0,\n    symbol: ['none', 'none'],\n    symbolSize: [10, 10],\n    // Geo coordinate system\n    geoIndex: 0,\n    effect: {\n      show: false,\n      period: 4,\n      // Animation delay. support callback\n      // delay: 0,\n      // If move with constant speed px/sec\n      // period will be ignored if this property is > 0,\n      constantSpeed: 0,\n      symbol: 'circle',\n      symbolSize: 3,\n      loop: true,\n      // Length of trail, 0 - 1\n      trailLength: 0.2 // Same with lineStyle.color\n      // color\n\n    },\n    large: false,\n    // Available when large is true\n    largeThreshold: 2000,\n    // If lines are polyline\n    // polyline not support curveness, label, animation\n    polyline: false,\n    // If clip the overflow.\n    // Available when coordinateSystem is cartesian or polar.\n    clip: true,\n    label: {\n      show: false,\n      position: 'end' // distance: 5,\n      // formatter: 标签文本格式器，同Tooltip.formatter，不支持异步回调\n\n    },\n    lineStyle: {\n      opacity: 0.5\n    }\n  }\n});\nvar _default = LinesSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar LineDraw = __webpack_require__(418);\n\nvar EffectLine = __webpack_require__(603);\n\nvar Line = __webpack_require__(419);\n\nvar Polyline = __webpack_require__(604);\n\nvar EffectPolyline = __webpack_require__(1169);\n\nvar LargeLineDraw = __webpack_require__(1170);\n\nvar linesLayout = __webpack_require__(605);\n\nvar _createClipPathFromCoordSys = __webpack_require__(261);\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendChartView({\n  type: 'lines',\n  init: function () {},\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var lineDraw = this._updateLineDraw(data, seriesModel);\n\n    var zlevel = seriesModel.get('zlevel');\n    var trailLength = seriesModel.get('effect.trailLength');\n    var zr = api.getZr(); // Avoid the drag cause ghost shadow\n    // FIXME Better way ?\n    // SVG doesn't support\n\n    var isSvg = zr.painter.getType() === 'svg';\n\n    if (!isSvg) {\n      zr.painter.getLayer(zlevel).clear(true);\n    } // Config layer with motion blur\n\n\n    if (this._lastZlevel != null && !isSvg) {\n      zr.configLayer(this._lastZlevel, {\n        motionBlur: false\n      });\n    }\n\n    if (this._showEffect(seriesModel) && trailLength) {\n      if (!isSvg) {\n        zr.configLayer(zlevel, {\n          motionBlur: true,\n          lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)\n        });\n      }\n    }\n\n    lineDraw.updateData(data);\n    var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);\n\n    if (clipPath) {\n      this.group.setClipPath(clipPath);\n    } else {\n      this.group.removeClipPath();\n    }\n\n    this._lastZlevel = zlevel;\n    this._finished = true;\n  },\n  incrementalPrepareRender: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var lineDraw = this._updateLineDraw(data, seriesModel);\n\n    lineDraw.incrementalPrepareUpdate(data);\n\n    this._clearLayer(api);\n\n    this._finished = false;\n  },\n  incrementalRender: function (taskParams, seriesModel, ecModel) {\n    this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());\n\n    this._finished = taskParams.end === seriesModel.getData().count();\n  },\n  updateTransform: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var pipelineContext = seriesModel.pipelineContext;\n\n    if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {\n      // TODO Don't have to do update in large mode. Only do it when there are millions of data.\n      return {\n        update: true\n      };\n    } else {\n      // TODO Use same logic with ScatterView.\n      // Manually update layout\n      var res = linesLayout.reset(seriesModel);\n\n      if (res.progress) {\n        res.progress({\n          start: 0,\n          end: data.count()\n        }, data);\n      }\n\n      this._lineDraw.updateLayout();\n\n      this._clearLayer(api);\n    }\n  },\n  _updateLineDraw: function (data, seriesModel) {\n    var lineDraw = this._lineDraw;\n\n    var hasEffect = this._showEffect(seriesModel);\n\n    var isPolyline = !!seriesModel.get('polyline');\n    var pipelineContext = seriesModel.pipelineContext;\n    var isLargeDraw = pipelineContext.large;\n\n    if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) {\n      if (lineDraw) {\n        lineDraw.remove();\n      }\n\n      lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw() : new LineDraw(isPolyline ? hasEffect ? EffectPolyline : Polyline : hasEffect ? EffectLine : Line);\n      this._hasEffet = hasEffect;\n      this._isPolyline = isPolyline;\n      this._isLargeDraw = isLargeDraw;\n      this.group.removeAll();\n    }\n\n    this.group.add(lineDraw.group);\n    return lineDraw;\n  },\n  _showEffect: function (seriesModel) {\n    return !!seriesModel.get('effect.show');\n  },\n  _clearLayer: function (api) {\n    // Not use motion when dragging or zooming\n    var zr = api.getZr();\n    var isSvg = zr.painter.getType() === 'svg';\n\n    if (!isSvg && this._lastZlevel != null) {\n      zr.painter.getLayer(this._lastZlevel).clear(true);\n    }\n  },\n  remove: function (ecModel, api) {\n    this._lineDraw && this._lineDraw.remove();\n    this._lineDraw = null; // Clear motion when lineDraw is removed\n\n    this._clearLayer(api);\n  },\n  dispose: function () {}\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Polyline = __webpack_require__(604);\n\nvar zrUtil = __webpack_require__(2);\n\nvar EffectLine = __webpack_require__(603);\n\nvar vec2 = __webpack_require__(56);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:echarts/chart/helper/EffectLine}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction EffectPolyline(lineData, idx, seriesScope) {\n  EffectLine.call(this, lineData, idx, seriesScope);\n  this._lastFrame = 0;\n  this._lastFramePercent = 0;\n}\n\nvar effectPolylineProto = EffectPolyline.prototype; // Overwrite\n\neffectPolylineProto.createLine = function (lineData, idx, seriesScope) {\n  return new Polyline(lineData, idx, seriesScope);\n}; // Overwrite\n\n\neffectPolylineProto.updateAnimationPoints = function (symbol, points) {\n  this._points = points;\n  var accLenArr = [0];\n  var len = 0;\n\n  for (var i = 1; i < points.length; i++) {\n    var p1 = points[i - 1];\n    var p2 = points[i];\n    len += vec2.dist(p1, p2);\n    accLenArr.push(len);\n  }\n\n  if (len === 0) {\n    return;\n  }\n\n  for (var i = 0; i < accLenArr.length; i++) {\n    accLenArr[i] /= len;\n  }\n\n  this._offsets = accLenArr;\n  this._length = len;\n}; // Overwrite\n\n\neffectPolylineProto.getLineLength = function (symbol) {\n  return this._length;\n}; // Overwrite\n\n\neffectPolylineProto.updateSymbolPosition = function (symbol) {\n  var t = symbol.__t;\n  var points = this._points;\n  var offsets = this._offsets;\n  var len = points.length;\n\n  if (!offsets) {\n    // Has length 0\n    return;\n  }\n\n  var lastFrame = this._lastFrame;\n  var frame;\n\n  if (t < this._lastFramePercent) {\n    // Start from the next frame\n    // PENDING start from lastFrame ?\n    var start = Math.min(lastFrame + 1, len - 1);\n\n    for (frame = start; frame >= 0; frame--) {\n      if (offsets[frame] <= t) {\n        break;\n      }\n    } // PENDING really need to do this ?\n\n\n    frame = Math.min(frame, len - 2);\n  } else {\n    for (var frame = lastFrame; frame < len; frame++) {\n      if (offsets[frame] > t) {\n        break;\n      }\n    }\n\n    frame = Math.min(frame - 1, len - 2);\n  }\n\n  vec2.lerp(symbol.position, points[frame], points[frame + 1], (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]));\n  var tx = points[frame + 1][0] - points[frame][0];\n  var ty = points[frame + 1][1] - points[frame][1];\n  symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\n  this._lastFrame = frame;\n  this._lastFramePercent = t;\n  symbol.ignore = false;\n};\n\nzrUtil.inherits(EffectPolyline, EffectLine);\nvar _default = EffectPolyline;\nmodule.exports = _default;\n\n/***/ }),\n/* 1170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = __webpack_require__(23);\n\nvar IncrementalDisplayable = __webpack_require__(406);\n\nvar lineContain = __webpack_require__(558);\n\nvar quadraticContain = __webpack_require__(559);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Batch by color\nvar LargeLineShape = graphic.extendShape({\n  shape: {\n    polyline: false,\n    curveness: 0,\n    segs: []\n  },\n  buildPath: function (path, shape) {\n    var segs = shape.segs;\n    var curveness = shape.curveness;\n\n    if (shape.polyline) {\n      for (var i = 0; i < segs.length;) {\n        var count = segs[i++];\n\n        if (count > 0) {\n          path.moveTo(segs[i++], segs[i++]);\n\n          for (var k = 1; k < count; k++) {\n            path.lineTo(segs[i++], segs[i++]);\n          }\n        }\n      }\n    } else {\n      for (var i = 0; i < segs.length;) {\n        var x0 = segs[i++];\n        var y0 = segs[i++];\n        var x1 = segs[i++];\n        var y1 = segs[i++];\n        path.moveTo(x0, y0);\n\n        if (curveness > 0) {\n          var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n          var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n          path.quadraticCurveTo(x2, y2, x1, y1);\n        } else {\n          path.lineTo(x1, y1);\n        }\n      }\n    }\n  },\n  findDataIndex: function (x, y) {\n    var shape = this.shape;\n    var segs = shape.segs;\n    var curveness = shape.curveness;\n\n    if (shape.polyline) {\n      var dataIndex = 0;\n\n      for (var i = 0; i < segs.length;) {\n        var count = segs[i++];\n\n        if (count > 0) {\n          var x0 = segs[i++];\n          var y0 = segs[i++];\n\n          for (var k = 1; k < count; k++) {\n            var x1 = segs[i++];\n            var y1 = segs[i++];\n\n            if (lineContain.containStroke(x0, y0, x1, y1)) {\n              return dataIndex;\n            }\n          }\n        }\n\n        dataIndex++;\n      }\n    } else {\n      var dataIndex = 0;\n\n      for (var i = 0; i < segs.length;) {\n        var x0 = segs[i++];\n        var y0 = segs[i++];\n        var x1 = segs[i++];\n        var y1 = segs[i++];\n\n        if (curveness > 0) {\n          var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n          var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n\n          if (quadraticContain.containStroke(x0, y0, x2, y2, x1, y1)) {\n            return dataIndex;\n          }\n        } else {\n          if (lineContain.containStroke(x0, y0, x1, y1)) {\n            return dataIndex;\n          }\n        }\n\n        dataIndex++;\n      }\n    }\n\n    return -1;\n  }\n});\n\nfunction LargeLineDraw() {\n  this.group = new graphic.Group();\n}\n\nvar largeLineProto = LargeLineDraw.prototype;\n\nlargeLineProto.isPersistent = function () {\n  return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n */\n\n\nlargeLineProto.updateData = function (data) {\n  this.group.removeAll();\n  var lineEl = new LargeLineShape({\n    rectHover: true,\n    cursor: 'default'\n  });\n  lineEl.setShape({\n    segs: data.getLayout('linesPoints')\n  });\n\n  this._setCommon(lineEl, data); // Add back\n\n\n  this.group.add(lineEl);\n  this._incremental = null;\n};\n/**\n * @override\n */\n\n\nlargeLineProto.incrementalPrepareUpdate = function (data) {\n  this.group.removeAll();\n\n  this._clearIncremental();\n\n  if (data.count() > 5e5) {\n    if (!this._incremental) {\n      this._incremental = new IncrementalDisplayable({\n        silent: true\n      });\n    }\n\n    this.group.add(this._incremental);\n  } else {\n    this._incremental = null;\n  }\n};\n/**\n * @override\n */\n\n\nlargeLineProto.incrementalUpdate = function (taskParams, data) {\n  var lineEl = new LargeLineShape();\n  lineEl.setShape({\n    segs: data.getLayout('linesPoints')\n  });\n\n  this._setCommon(lineEl, data, !!this._incremental);\n\n  if (!this._incremental) {\n    lineEl.rectHover = true;\n    lineEl.cursor = 'default';\n    lineEl.__startIndex = taskParams.start;\n    this.group.add(lineEl);\n  } else {\n    this._incremental.addDisplayable(lineEl, true);\n  }\n};\n/**\n * @override\n */\n\n\nlargeLineProto.remove = function () {\n  this._clearIncremental();\n\n  this._incremental = null;\n  this.group.removeAll();\n};\n\nlargeLineProto._setCommon = function (lineEl, data, isIncremental) {\n  var hostModel = data.hostModel;\n  lineEl.setShape({\n    polyline: hostModel.get('polyline'),\n    curveness: hostModel.get('lineStyle.curveness')\n  });\n  lineEl.useStyle(hostModel.getModel('lineStyle').getLineStyle());\n  lineEl.style.strokeNoScale = true;\n  var visualColor = data.getVisual('color');\n\n  if (visualColor) {\n    lineEl.setStyle('stroke', visualColor);\n  }\n\n  lineEl.setStyle('fill');\n\n  if (!isIncremental) {\n    // Enable tooltip\n    // PENDING May have performance issue when path is extremely large\n    lineEl.seriesIndex = hostModel.seriesIndex;\n    lineEl.on('mousemove', function (e) {\n      lineEl.dataIndex = null;\n      var dataIndex = lineEl.findDataIndex(e.offsetX, e.offsetY);\n\n      if (dataIndex > 0) {\n        // Provide dataIndex for tooltip\n        lineEl.dataIndex = dataIndex + lineEl.__startIndex;\n      }\n    });\n  }\n};\n\nlargeLineProto._clearIncremental = function () {\n  var incremental = this._incremental;\n\n  if (incremental) {\n    incremental.clearDisplaybles();\n  }\n};\n\nvar _default = LargeLineDraw;\nmodule.exports = _default;\n\n/***/ }),\n/* 1171 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction normalize(a) {\n  if (!(a instanceof Array)) {\n    a = [a, a];\n  }\n\n  return a;\n}\n\nvar opacityQuery = 'lineStyle.opacity'.split('.');\nvar _default = {\n  seriesType: 'lines',\n  reset: function (seriesModel, ecModel, api) {\n    var symbolType = normalize(seriesModel.get('symbol'));\n    var symbolSize = normalize(seriesModel.get('symbolSize'));\n    var data = seriesModel.getData();\n    data.setVisual('fromSymbol', symbolType && symbolType[0]);\n    data.setVisual('toSymbol', symbolType && symbolType[1]);\n    data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n    data.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n    data.setVisual('opacity', seriesModel.get(opacityQuery));\n\n    function dataEach(data, idx) {\n      var itemModel = data.getItemModel(idx);\n      var symbolType = normalize(itemModel.getShallow('symbol', true));\n      var symbolSize = normalize(itemModel.getShallow('symbolSize', true));\n      var opacity = itemModel.get(opacityQuery);\n      symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]);\n      symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]);\n      symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]);\n      symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]);\n      data.setItemVisual(idx, 'opacity', opacity);\n    }\n\n    return {\n      dataEach: data.hasItemOption ? dataEach : null\n    };\n  }\n};\nmodule.exports = _default;\n\n/***/ }),\n/* 1172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(1173);\n\n__webpack_require__(1174);\n\n/***/ }),\n/* 1173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(75);\n\nvar createListFromArray = __webpack_require__(145);\n\nvar CoordinateSystem = __webpack_require__(121);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n  type: 'series.heatmap',\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this, {\n      generateCoord: 'value'\n    });\n  },\n  preventIncremental: function () {\n    var coordSysCreator = CoordinateSystem.get(this.get('coordinateSystem'));\n\n    if (coordSysCreator && coordSysCreator.dimensions) {\n      return coordSysCreator.dimensions[0] === 'lng' && coordSysCreator.dimensions[1] === 'lat';\n    }\n  },\n  defaultOption: {\n    // Cartesian2D or geo\n    coordinateSystem: 'cartesian2d',\n    zlevel: 0,\n    z: 2,\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Geo coordinate system\n    geoIndex: 0,\n    blurSize: 30,\n    pointSize: 20,\n    maxOpacity: 1,\n    minOpacity: 0\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar graphic = __webpack_require__(23);\n\nvar HeatmapLayer = __webpack_require__(1175);\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getIsInPiecewiseRange(dataExtent, pieceList, selected) {\n  var dataSpan = dataExtent[1] - dataExtent[0];\n  pieceList = zrUtil.map(pieceList, function (piece) {\n    return {\n      interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan]\n    };\n  });\n  var len = pieceList.length;\n  var lastIndex = 0;\n  return function (val) {\n    // Try to find in the location of the last found\n    for (var i = lastIndex; i < len; i++) {\n      var interval = pieceList[i].interval;\n\n      if (interval[0] <= val && val <= interval[1]) {\n        lastIndex = i;\n        break;\n      }\n    }\n\n    if (i === len) {\n      // Not found, back interation\n      for (var i = lastIndex - 1; i >= 0; i--) {\n        var interval = pieceList[i].interval;\n\n        if (interval[0] <= val && val <= interval[1]) {\n          lastIndex = i;\n          break;\n        }\n      }\n    }\n\n    return i >= 0 && i < len && selected[i];\n  };\n}\n\nfunction getIsInContinuousRange(dataExtent, range) {\n  var dataSpan = dataExtent[1] - dataExtent[0];\n  range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan];\n  return function (val) {\n    return val >= range[0] && val <= range[1];\n  };\n}\n\nfunction isGeoCoordSys(coordSys) {\n  var dimensions = coordSys.dimensions; // Not use coorSys.type === 'geo' because coordSys maybe extended\n\n  return dimensions[0] === 'lng' && dimensions[1] === 'lat';\n}\n\nvar _default = echarts.extendChartView({\n  type: 'heatmap',\n  render: function (seriesModel, ecModel, api) {\n    var visualMapOfThisSeries;\n    ecModel.eachComponent('visualMap', function (visualMap) {\n      visualMap.eachTargetSeries(function (targetSeries) {\n        if (targetSeries === seriesModel) {\n          visualMapOfThisSeries = visualMap;\n        }\n      });\n    });\n    this.group.removeAll();\n    this._incrementalDisplayable = null;\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') {\n      this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count());\n    } else if (isGeoCoordSys(coordSys)) {\n      this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api);\n    }\n  },\n  incrementalPrepareRender: function (seriesModel, ecModel, api) {\n    this.group.removeAll();\n  },\n  incrementalRender: function (params, seriesModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys) {\n      this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true);\n    }\n  },\n  _renderOnCartesianAndCalendar: function (seriesModel, api, start, end, incremental) {\n    var coordSys = seriesModel.coordinateSystem;\n    var width;\n    var height;\n\n    if (coordSys.type === 'cartesian2d') {\n      var xAxis = coordSys.getAxis('x');\n      var yAxis = coordSys.getAxis('y');\n      width = xAxis.getBandWidth();\n      height = yAxis.getBandWidth();\n    }\n\n    var group = this.group;\n    var data = seriesModel.getData();\n    var itemStyleQuery = 'itemStyle';\n    var hoverItemStyleQuery = 'emphasis.itemStyle';\n    var labelQuery = 'label';\n    var hoverLabelQuery = 'emphasis.label';\n    var style = seriesModel.getModel(itemStyleQuery).getItemStyle(['color']);\n    var hoverStl = seriesModel.getModel(hoverItemStyleQuery).getItemStyle();\n    var labelModel = seriesModel.getModel(labelQuery);\n    var hoverLabelModel = seriesModel.getModel(hoverLabelQuery);\n    var coordSysType = coordSys.type;\n    var dataDims = coordSysType === 'cartesian2d' ? [data.mapDimension('x'), data.mapDimension('y'), data.mapDimension('value')] : [data.mapDimension('time'), data.mapDimension('value')];\n\n    for (var idx = start; idx < end; idx++) {\n      var rect;\n\n      if (coordSysType === 'cartesian2d') {\n        // Ignore empty data\n        if (isNaN(data.get(dataDims[2], idx))) {\n          continue;\n        }\n\n        var point = coordSys.dataToPoint([data.get(dataDims[0], idx), data.get(dataDims[1], idx)]);\n        rect = new graphic.Rect({\n          shape: {\n            x: Math.floor(Math.round(point[0]) - width / 2),\n            y: Math.floor(Math.round(point[1]) - height / 2),\n            width: Math.ceil(width),\n            height: Math.ceil(height)\n          },\n          style: {\n            fill: data.getItemVisual(idx, 'color'),\n            opacity: data.getItemVisual(idx, 'opacity')\n          }\n        });\n      } else {\n        // Ignore empty data\n        if (isNaN(data.get(dataDims[1], idx))) {\n          continue;\n        }\n\n        rect = new graphic.Rect({\n          z2: 1,\n          shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,\n          style: {\n            fill: data.getItemVisual(idx, 'color'),\n            opacity: data.getItemVisual(idx, 'opacity')\n          }\n        });\n      }\n\n      var itemModel = data.getItemModel(idx); // Optimization for large datset\n\n      if (data.hasItemOption) {\n        style = itemModel.getModel(itemStyleQuery).getItemStyle(['color']);\n        hoverStl = itemModel.getModel(hoverItemStyleQuery).getItemStyle();\n        labelModel = itemModel.getModel(labelQuery);\n        hoverLabelModel = itemModel.getModel(hoverLabelQuery);\n      }\n\n      var rawValue = seriesModel.getRawValue(idx);\n      var defaultText = '-';\n\n      if (rawValue && rawValue[2] != null) {\n        defaultText = rawValue[2];\n      }\n\n      graphic.setLabelStyle(style, hoverStl, labelModel, hoverLabelModel, {\n        labelFetcher: seriesModel,\n        labelDataIndex: idx,\n        defaultText: defaultText,\n        isRectText: true\n      });\n      rect.setStyle(style);\n      graphic.setHoverStyle(rect, data.hasItemOption ? hoverStl : zrUtil.extend({}, hoverStl));\n      rect.incremental = incremental; // PENDING\n\n      if (incremental) {\n        // Rect must use hover layer if it's incremental.\n        rect.useHoverLayer = true;\n      }\n\n      group.add(rect);\n      data.setItemGraphicEl(idx, rect);\n    }\n  },\n  _renderOnGeo: function (geo, seriesModel, visualMapModel, api) {\n    var inRangeVisuals = visualMapModel.targetVisuals.inRange;\n    var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange; // if (!visualMapping) {\n    //     throw new Error('Data range must have color visuals');\n    // }\n\n    var data = seriesModel.getData();\n    var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer();\n    hmLayer.blurSize = seriesModel.get('blurSize');\n    hmLayer.pointSize = seriesModel.get('pointSize');\n    hmLayer.minOpacity = seriesModel.get('minOpacity');\n    hmLayer.maxOpacity = seriesModel.get('maxOpacity');\n    var rect = geo.getViewRect().clone();\n    var roamTransform = geo.getRoamTransform();\n    rect.applyTransform(roamTransform); // Clamp on viewport\n\n    var x = Math.max(rect.x, 0);\n    var y = Math.max(rect.y, 0);\n    var x2 = Math.min(rect.width + rect.x, api.getWidth());\n    var y2 = Math.min(rect.height + rect.y, api.getHeight());\n    var width = x2 - x;\n    var height = y2 - y;\n    var dims = [data.mapDimension('lng'), data.mapDimension('lat'), data.mapDimension('value')];\n    var points = data.mapArray(dims, function (lng, lat, value) {\n      var pt = geo.dataToPoint([lng, lat]);\n      pt[0] -= x;\n      pt[1] -= y;\n      pt.push(value);\n      return pt;\n    });\n    var dataExtent = visualMapModel.getExtent();\n    var isInRange = visualMapModel.type === 'visualMap.continuous' ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected);\n    hmLayer.update(points, width, height, inRangeVisuals.color.getNormalizer(), {\n      inRange: inRangeVisuals.color.getColorMapper(),\n      outOfRange: outOfRangeVisuals.color.getColorMapper()\n    }, isInRange);\n    var img = new graphic.Image({\n      style: {\n        width: width,\n        height: height,\n        x: x,\n        y: y,\n        image: hmLayer.canvas\n      },\n      silent: true\n    });\n    this.group.add(img);\n  },\n  dispose: function () {}\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Uint8ClampedArray */\nvar GRADIENT_LEVELS = 256;\n/**\n * Heatmap Chart\n *\n * @class\n */\n\nfunction Heatmap() {\n  var canvas = zrUtil.createCanvas();\n  this.canvas = canvas;\n  this.blurSize = 30;\n  this.pointSize = 20;\n  this.maxOpacity = 1;\n  this.minOpacity = 0;\n  this._gradientPixels = {};\n}\n\nHeatmap.prototype = {\n  /**\n   * Renders Heatmap and returns the rendered canvas\n   * @param {Array} data array of data, each has x, y, value\n   * @param {number} width canvas width\n   * @param {number} height canvas height\n   */\n  update: function (data, width, height, normalize, colorFunc, isInRange) {\n    var brush = this._getBrush();\n\n    var gradientInRange = this._getGradient(data, colorFunc, 'inRange');\n\n    var gradientOutOfRange = this._getGradient(data, colorFunc, 'outOfRange');\n\n    var r = this.pointSize + this.blurSize;\n    var canvas = this.canvas;\n    var ctx = canvas.getContext('2d');\n    var len = data.length;\n    canvas.width = width;\n    canvas.height = height;\n\n    for (var i = 0; i < len; ++i) {\n      var p = data[i];\n      var x = p[0];\n      var y = p[1];\n      var value = p[2]; // calculate alpha using value\n\n      var alpha = normalize(value); // draw with the circle brush with alpha\n\n      ctx.globalAlpha = alpha;\n      ctx.drawImage(brush, x - r, y - r);\n    }\n\n    if (!canvas.width || !canvas.height) {\n      // Avoid \"Uncaught DOMException: Failed to execute 'getImageData' on\n      // 'CanvasRenderingContext2D': The source height is 0.\"\n      return canvas;\n    } // colorize the canvas using alpha value and set with gradient\n\n\n    var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n    var pixels = imageData.data;\n    var offset = 0;\n    var pixelLen = pixels.length;\n    var minOpacity = this.minOpacity;\n    var maxOpacity = this.maxOpacity;\n    var diffOpacity = maxOpacity - minOpacity;\n\n    while (offset < pixelLen) {\n      var alpha = pixels[offset + 3] / 256;\n      var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4; // Simple optimize to ignore the empty data\n\n      if (alpha > 0) {\n        var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange; // Any alpha > 0 will be mapped to [minOpacity, maxOpacity]\n\n        alpha > 0 && (alpha = alpha * diffOpacity + minOpacity);\n        pixels[offset++] = gradient[gradientOffset];\n        pixels[offset++] = gradient[gradientOffset + 1];\n        pixels[offset++] = gradient[gradientOffset + 2];\n        pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256;\n      } else {\n        offset += 4;\n      }\n    }\n\n    ctx.putImageData(imageData, 0, 0);\n    return canvas;\n  },\n\n  /**\n   * get canvas of a black circle brush used for canvas to draw later\n   * @private\n   * @returns {Object} circle brush canvas\n   */\n  _getBrush: function () {\n    var brushCanvas = this._brushCanvas || (this._brushCanvas = zrUtil.createCanvas()); // set brush size\n\n    var r = this.pointSize + this.blurSize;\n    var d = r * 2;\n    brushCanvas.width = d;\n    brushCanvas.height = d;\n    var ctx = brushCanvas.getContext('2d');\n    ctx.clearRect(0, 0, d, d); // in order to render shadow without the distinct circle,\n    // draw the distinct circle in an invisible place,\n    // and use shadowOffset to draw shadow in the center of the canvas\n\n    ctx.shadowOffsetX = d;\n    ctx.shadowBlur = this.blurSize; // draw the shadow in black, and use alpha and shadow blur to generate\n    // color in color map\n\n    ctx.shadowColor = '#000'; // draw circle in the left to the canvas\n\n    ctx.beginPath();\n    ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true);\n    ctx.closePath();\n    ctx.fill();\n    return brushCanvas;\n  },\n\n  /**\n   * get gradient color map\n   * @private\n   */\n  _getGradient: function (data, colorFunc, state) {\n    var gradientPixels = this._gradientPixels;\n    var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4));\n    var color = [0, 0, 0, 0];\n    var off = 0;\n\n    for (var i = 0; i < 256; i++) {\n      colorFunc[state](i / 255, true, color);\n      pixelsSingleState[off++] = color[0];\n      pixelsSingleState[off++] = color[1];\n      pixelsSingleState[off++] = color[2];\n      pixelsSingleState[off++] = color[3];\n    }\n\n    return pixelsSingleState;\n  }\n};\nvar _default = Heatmap;\nmodule.exports = _default;\n\n/***/ }),\n/* 1176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\n__webpack_require__(411);\n\n__webpack_require__(1177);\n\n__webpack_require__(1178);\n\nvar _barGrid = __webpack_require__(331);\n\nvar layout = _barGrid.layout;\n\nvar visualSymbol = __webpack_require__(181);\n\n__webpack_require__(263);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerLayout(zrUtil.curry(layout, 'pictorialBar'));\necharts.registerVisual(visualSymbol('pictorialBar', 'roundRect'));\n\n/***/ }),\n/* 1177 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseBarSeries = __webpack_require__(587);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PictorialBarSeries = BaseBarSeries.extend({\n  type: 'series.pictorialBar',\n  dependencies: ['grid'],\n  defaultOption: {\n    symbol: 'circle',\n    // Customized bar shape\n    symbolSize: null,\n    // Can be ['100%', '100%'], null means auto.\n    symbolRotate: null,\n    symbolPosition: null,\n    // 'start' or 'end' or 'center', null means auto.\n    symbolOffset: null,\n    symbolMargin: null,\n    // start margin and end margin. Can be a number or a percent string.\n    // Auto margin by default.\n    symbolRepeat: false,\n    // false/null/undefined, means no repeat.\n    // Can be true, means auto calculate repeat times and cut by data.\n    // Can be a number, specifies repeat times, and do not cut by data.\n    // Can be 'fixed', means auto calculate repeat times but do not cut by data.\n    symbolRepeatDirection: 'end',\n    // 'end' means from 'start' to 'end'.\n    symbolClip: false,\n    symbolBoundingData: null,\n    // Can be 60 or -40 or [-40, 60]\n    symbolPatternSize: 400,\n    // 400 * 400 px\n    barGap: '-100%',\n    // In most case, overlap is needed.\n    // z can be set in data item, which is z2 actually.\n    // Disable progressive\n    progressive: 0,\n    hoverAnimation: false // Open only when needed.\n\n  },\n  getInitialData: function (option) {\n    // Disable stack.\n    option.stack = null;\n    return PictorialBarSeries.superApply(this, 'getInitialData', arguments);\n  }\n});\nvar _default = PictorialBarSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar _symbol = __webpack_require__(117);\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\nvar isNumeric = _number.isNumeric;\n\nvar _helper = __webpack_require__(588);\n\nvar setLabel = _helper.setLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth']; // index: +isHorizontal\n\nvar LAYOUT_ATTRS = [{\n  xy: 'x',\n  wh: 'width',\n  index: 0,\n  posDesc: ['left', 'right']\n}, {\n  xy: 'y',\n  wh: 'height',\n  index: 1,\n  posDesc: ['top', 'bottom']\n}];\nvar pathForLineWidth = new graphic.Circle();\nvar BarView = echarts.extendChartView({\n  type: 'pictorialBar',\n  render: function (seriesModel, ecModel, api) {\n    var group = this.group;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n    var isHorizontal = !!baseAxis.isHorizontal();\n    var coordSysRect = cartesian.grid.getRect();\n    var opt = {\n      ecSize: {\n        width: api.getWidth(),\n        height: api.getHeight()\n      },\n      seriesModel: seriesModel,\n      coordSys: cartesian,\n      coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]],\n      isHorizontal: isHorizontal,\n      valueDim: LAYOUT_ATTRS[+isHorizontal],\n      categoryDim: LAYOUT_ATTRS[1 - isHorizontal]\n    };\n    data.diff(oldData).add(function (dataIndex) {\n      if (!data.hasValue(dataIndex)) {\n        return;\n      }\n\n      var itemModel = getItemModel(data, dataIndex);\n      var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);\n      var bar = createBar(data, opt, symbolMeta);\n      data.setItemGraphicEl(dataIndex, bar);\n      group.add(bar);\n      updateCommon(bar, opt, symbolMeta);\n    }).update(function (newIndex, oldIndex) {\n      var bar = oldData.getItemGraphicEl(oldIndex);\n\n      if (!data.hasValue(newIndex)) {\n        group.remove(bar);\n        return;\n      }\n\n      var itemModel = getItemModel(data, newIndex);\n      var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);\n      var pictorialShapeStr = getShapeStr(data, symbolMeta);\n\n      if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {\n        group.remove(bar);\n        data.setItemGraphicEl(newIndex, null);\n        bar = null;\n      }\n\n      if (bar) {\n        updateBar(bar, opt, symbolMeta);\n      } else {\n        bar = createBar(data, opt, symbolMeta, true);\n      }\n\n      data.setItemGraphicEl(newIndex, bar);\n      bar.__pictorialSymbolMeta = symbolMeta; // Add back\n\n      group.add(bar);\n      updateCommon(bar, opt, symbolMeta);\n    }).remove(function (dataIndex) {\n      var bar = oldData.getItemGraphicEl(dataIndex);\n      bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);\n    }).execute();\n    this._data = data;\n    return this.group;\n  },\n  dispose: zrUtil.noop,\n  remove: function (ecModel, api) {\n    var group = this.group;\n    var data = this._data;\n\n    if (ecModel.get('animation')) {\n      if (data) {\n        data.eachItemGraphicEl(function (bar) {\n          removeBar(data, bar.dataIndex, ecModel, bar);\n        });\n      }\n    } else {\n      group.removeAll();\n    }\n  }\n}); // Set or calculate default value about symbol, and calculate layout info.\n\nfunction getSymbolMeta(data, dataIndex, itemModel, opt) {\n  var layout = data.getItemLayout(dataIndex);\n  var symbolRepeat = itemModel.get('symbolRepeat');\n  var symbolClip = itemModel.get('symbolClip');\n  var symbolPosition = itemModel.get('symbolPosition') || 'start';\n  var symbolRotate = itemModel.get('symbolRotate');\n  var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n  var symbolPatternSize = itemModel.get('symbolPatternSize') || 2;\n  var isAnimationEnabled = itemModel.isAnimationEnabled();\n  var symbolMeta = {\n    dataIndex: dataIndex,\n    layout: layout,\n    itemModel: itemModel,\n    symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle',\n    color: data.getItemVisual(dataIndex, 'color'),\n    symbolClip: symbolClip,\n    symbolRepeat: symbolRepeat,\n    symbolRepeatDirection: itemModel.get('symbolRepeatDirection'),\n    symbolPatternSize: symbolPatternSize,\n    rotation: rotation,\n    animationModel: isAnimationEnabled ? itemModel : null,\n    hoverAnimation: isAnimationEnabled && itemModel.get('hoverAnimation'),\n    z2: itemModel.getShallow('z', true) || 0\n  };\n  prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta);\n  prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);\n  prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);\n  var symbolSize = symbolMeta.symbolSize;\n  var symbolOffset = itemModel.get('symbolOffset');\n\n  if (zrUtil.isArray(symbolOffset)) {\n    symbolOffset = [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])];\n  }\n\n  prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);\n  return symbolMeta;\n} // bar length can be negative.\n\n\nfunction prepareBarLength(itemModel, symbolRepeat, layout, opt, output) {\n  var valueDim = opt.valueDim;\n  var symbolBoundingData = itemModel.get('symbolBoundingData');\n  var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());\n  var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0));\n  var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0);\n  var boundingLength;\n\n  if (zrUtil.isArray(symbolBoundingData)) {\n    var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx];\n    symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse();\n    boundingLength = symbolBoundingExtent[pxSignIdx];\n  } else if (symbolBoundingData != null) {\n    boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx;\n  } else if (symbolRepeat) {\n    boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;\n  } else {\n    boundingLength = layout[valueDim.wh];\n  }\n\n  output.boundingLength = boundingLength;\n\n  if (symbolRepeat) {\n    output.repeatCutLength = layout[valueDim.wh];\n  }\n\n  output.pxSign = boundingLength > 0 ? 1 : boundingLength < 0 ? -1 : 0;\n}\n\nfunction convertToCoordOnAxis(axis, value) {\n  return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));\n} // Support ['100%', '100%']\n\n\nfunction prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, output) {\n  var valueDim = opt.valueDim;\n  var categoryDim = opt.categoryDim;\n  var categorySize = Math.abs(layout[categoryDim.wh]);\n  var symbolSize = data.getItemVisual(dataIndex, 'symbolSize');\n\n  if (zrUtil.isArray(symbolSize)) {\n    symbolSize = symbolSize.slice();\n  } else {\n    if (symbolSize == null) {\n      symbolSize = '100%';\n    }\n\n    symbolSize = [symbolSize, symbolSize];\n  } // Note: percentage symbolSize (like '100%') do not consider lineWidth, because it is\n  // to complicated to calculate real percent value if considering scaled lineWidth.\n  // So the actual size will bigger than layout size if lineWidth is bigger than zero,\n  // which can be tolerated in pictorial chart.\n\n\n  symbolSize[categoryDim.index] = parsePercent(symbolSize[categoryDim.index], categorySize);\n  symbolSize[valueDim.index] = parsePercent(symbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));\n  output.symbolSize = symbolSize; // If x or y is less than zero, show reversed shape.\n\n  var symbolScale = output.symbolScale = [symbolSize[0] / symbolPatternSize, symbolSize[1] / symbolPatternSize]; // Follow convention, 'right' and 'top' is the normal scale.\n\n  symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;\n}\n\nfunction prepareLineWidth(itemModel, symbolScale, rotation, opt, output) {\n  // In symbols are drawn with scale, so do not need to care about the case that width\n  // or height are too small. But symbol use strokeNoScale, where acture lineWidth should\n  // be calculated.\n  var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\n\n  if (valueLineWidth) {\n    pathForLineWidth.attr({\n      scale: symbolScale.slice(),\n      rotation: rotation\n    });\n    pathForLineWidth.updateTransform();\n    valueLineWidth /= pathForLineWidth.getLineScale();\n    valueLineWidth *= symbolScale[opt.valueDim.index];\n  }\n\n  output.valueLineWidth = valueLineWidth;\n}\n\nfunction prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, output) {\n  var categoryDim = opt.categoryDim;\n  var valueDim = opt.valueDim;\n  var pxSign = output.pxSign;\n  var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);\n  var pathLen = unitLength; // Note: rotation will not effect the layout of symbols, because user may\n  // want symbols to rotate on its center, which should not be translated\n  // when rotating.\n\n  if (symbolRepeat) {\n    var absBoundingLength = Math.abs(boundingLength);\n    var symbolMargin = zrUtil.retrieve(itemModel.get('symbolMargin'), '15%') + '';\n    var hasEndGap = false;\n\n    if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) {\n      hasEndGap = true;\n      symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);\n    }\n\n    symbolMargin = parsePercent(symbolMargin, symbolSize[valueDim.index]);\n    var uLenWithMargin = Math.max(unitLength + symbolMargin * 2, 0); // When symbol margin is less than 0, margin at both ends will be subtracted\n    // to ensure that all of the symbols will not be overflow the given area.\n\n    var endFix = hasEndGap ? 0 : symbolMargin * 2; // Both final repeatTimes and final symbolMargin area calculated based on\n    // boundingLength.\n\n    var repeatSpecified = isNumeric(symbolRepeat);\n    var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); // Adjust calculate margin, to ensure each symbol is displayed\n    // entirely in the given layout area.\n\n    var mDiff = absBoundingLength - repeatTimes * unitLength;\n    symbolMargin = mDiff / 2 / (hasEndGap ? repeatTimes : repeatTimes - 1);\n    uLenWithMargin = unitLength + symbolMargin * 2;\n    endFix = hasEndGap ? 0 : symbolMargin * 2; // Update repeatTimes when not all symbol will be shown.\n\n    if (!repeatSpecified && symbolRepeat !== 'fixed') {\n      repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0;\n    }\n\n    pathLen = repeatTimes * uLenWithMargin - endFix;\n    output.repeatTimes = repeatTimes;\n    output.symbolMargin = symbolMargin;\n  }\n\n  var sizeFix = pxSign * (pathLen / 2);\n  var pathPosition = output.pathPosition = [];\n  pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2;\n  pathPosition[valueDim.index] = symbolPosition === 'start' ? sizeFix : symbolPosition === 'end' ? boundingLength - sizeFix : boundingLength / 2; // 'center'\n\n  if (symbolOffset) {\n    pathPosition[0] += symbolOffset[0];\n    pathPosition[1] += symbolOffset[1];\n  }\n\n  var bundlePosition = output.bundlePosition = [];\n  bundlePosition[categoryDim.index] = layout[categoryDim.xy];\n  bundlePosition[valueDim.index] = layout[valueDim.xy];\n  var barRectShape = output.barRectShape = zrUtil.extend({}, layout);\n  barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));\n  barRectShape[categoryDim.wh] = layout[categoryDim.wh];\n  var clipShape = output.clipShape = {}; // Consider that symbol may be overflow layout rect.\n\n  clipShape[categoryDim.xy] = -layout[categoryDim.xy];\n  clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];\n  clipShape[valueDim.xy] = 0;\n  clipShape[valueDim.wh] = layout[valueDim.wh];\n}\n\nfunction createPath(symbolMeta) {\n  var symbolPatternSize = symbolMeta.symbolPatternSize;\n  var path = createSymbol( // Consider texture img, make a big size.\n  symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize, symbolMeta.color);\n  path.attr({\n    culling: true\n  });\n  path.type !== 'image' && path.setStyle({\n    strokeNoScale: true\n  });\n  return path;\n}\n\nfunction createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {\n  var bundle = bar.__pictorialBundle;\n  var symbolSize = symbolMeta.symbolSize;\n  var valueLineWidth = symbolMeta.valueLineWidth;\n  var pathPosition = symbolMeta.pathPosition;\n  var valueDim = opt.valueDim;\n  var repeatTimes = symbolMeta.repeatTimes || 0;\n  var index = 0;\n  var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;\n  eachPath(bar, function (path) {\n    path.__pictorialAnimationIndex = index;\n    path.__pictorialRepeatTimes = repeatTimes;\n\n    if (index < repeatTimes) {\n      updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate);\n    } else {\n      updateAttr(path, null, {\n        scale: [0, 0]\n      }, symbolMeta, isUpdate, function () {\n        bundle.remove(path);\n      });\n    }\n\n    updateHoverAnimation(path, symbolMeta);\n    index++;\n  });\n\n  for (; index < repeatTimes; index++) {\n    var path = createPath(symbolMeta);\n    path.__pictorialAnimationIndex = index;\n    path.__pictorialRepeatTimes = repeatTimes;\n    bundle.add(path);\n    var target = makeTarget(index);\n    updateAttr(path, {\n      position: target.position,\n      scale: [0, 0]\n    }, {\n      scale: target.scale,\n      rotation: target.rotation\n    }, symbolMeta, isUpdate); // FIXME\n    // If all emphasis/normal through action.\n\n    path.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n    updateHoverAnimation(path, symbolMeta);\n  }\n\n  function makeTarget(index) {\n    var position = pathPosition.slice(); // (start && pxSign > 0) || (end && pxSign < 0): i = repeatTimes - index\n    // Otherwise: i = index;\n\n    var pxSign = symbolMeta.pxSign;\n    var i = index;\n\n    if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) {\n      i = repeatTimes - 1 - index;\n    }\n\n    position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];\n    return {\n      position: position,\n      scale: symbolMeta.symbolScale.slice(),\n      rotation: symbolMeta.rotation\n    };\n  }\n\n  function onMouseOver() {\n    eachPath(bar, function (path) {\n      path.trigger('emphasis');\n    });\n  }\n\n  function onMouseOut() {\n    eachPath(bar, function (path) {\n      path.trigger('normal');\n    });\n  }\n}\n\nfunction createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {\n  var bundle = bar.__pictorialBundle;\n  var mainPath = bar.__pictorialMainPath;\n\n  if (!mainPath) {\n    mainPath = bar.__pictorialMainPath = createPath(symbolMeta);\n    bundle.add(mainPath);\n    updateAttr(mainPath, {\n      position: symbolMeta.pathPosition.slice(),\n      scale: [0, 0],\n      rotation: symbolMeta.rotation\n    }, {\n      scale: symbolMeta.symbolScale.slice()\n    }, symbolMeta, isUpdate);\n    mainPath.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n  } else {\n    updateAttr(mainPath, null, {\n      position: symbolMeta.pathPosition.slice(),\n      scale: symbolMeta.symbolScale.slice(),\n      rotation: symbolMeta.rotation\n    }, symbolMeta, isUpdate);\n  }\n\n  updateHoverAnimation(mainPath, symbolMeta);\n\n  function onMouseOver() {\n    this.trigger('emphasis');\n  }\n\n  function onMouseOut() {\n    this.trigger('normal');\n  }\n} // bar rect is used for label.\n\n\nfunction createOrUpdateBarRect(bar, symbolMeta, isUpdate) {\n  var rectShape = zrUtil.extend({}, symbolMeta.barRectShape);\n  var barRect = bar.__pictorialBarRect;\n\n  if (!barRect) {\n    barRect = bar.__pictorialBarRect = new graphic.Rect({\n      z2: 2,\n      shape: rectShape,\n      silent: true,\n      style: {\n        stroke: 'transparent',\n        fill: 'transparent',\n        lineWidth: 0\n      }\n    });\n    bar.add(barRect);\n  } else {\n    updateAttr(barRect, null, {\n      shape: rectShape\n    }, symbolMeta, isUpdate);\n  }\n}\n\nfunction createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {\n  // If not clip, symbol will be remove and rebuilt.\n  if (symbolMeta.symbolClip) {\n    var clipPath = bar.__pictorialClipPath;\n    var clipShape = zrUtil.extend({}, symbolMeta.clipShape);\n    var valueDim = opt.valueDim;\n    var animationModel = symbolMeta.animationModel;\n    var dataIndex = symbolMeta.dataIndex;\n\n    if (clipPath) {\n      graphic.updateProps(clipPath, {\n        shape: clipShape\n      }, animationModel, dataIndex);\n    } else {\n      clipShape[valueDim.wh] = 0;\n      clipPath = new graphic.Rect({\n        shape: clipShape\n      });\n\n      bar.__pictorialBundle.setClipPath(clipPath);\n\n      bar.__pictorialClipPath = clipPath;\n      var target = {};\n      target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];\n      graphic[isUpdate ? 'updateProps' : 'initProps'](clipPath, {\n        shape: target\n      }, animationModel, dataIndex);\n    }\n  }\n}\n\nfunction getItemModel(data, dataIndex) {\n  var itemModel = data.getItemModel(dataIndex);\n  itemModel.getAnimationDelayParams = getAnimationDelayParams;\n  itemModel.isAnimationEnabled = isAnimationEnabled;\n  return itemModel;\n}\n\nfunction getAnimationDelayParams(path) {\n  // The order is the same as the z-order, see `symbolRepeatDiretion`.\n  return {\n    index: path.__pictorialAnimationIndex,\n    count: path.__pictorialRepeatTimes\n  };\n}\n\nfunction isAnimationEnabled() {\n  // `animation` prop can be set on itemModel in pictorial bar chart.\n  return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation');\n}\n\nfunction updateHoverAnimation(path, symbolMeta) {\n  path.off('emphasis').off('normal');\n  var scale = symbolMeta.symbolScale.slice();\n  symbolMeta.hoverAnimation && path.on('emphasis', function () {\n    this.animateTo({\n      scale: [scale[0] * 1.1, scale[1] * 1.1]\n    }, 400, 'elasticOut');\n  }).on('normal', function () {\n    this.animateTo({\n      scale: scale.slice()\n    }, 400, 'elasticOut');\n  });\n}\n\nfunction createBar(data, opt, symbolMeta, isUpdate) {\n  // bar is the main element for each data.\n  var bar = new graphic.Group(); // bundle is used for location and clip.\n\n  var bundle = new graphic.Group();\n  bar.add(bundle);\n  bar.__pictorialBundle = bundle;\n  bundle.attr('position', symbolMeta.bundlePosition.slice());\n\n  if (symbolMeta.symbolRepeat) {\n    createOrUpdateRepeatSymbols(bar, opt, symbolMeta);\n  } else {\n    createOrUpdateSingleSymbol(bar, opt, symbolMeta);\n  }\n\n  createOrUpdateBarRect(bar, symbolMeta, isUpdate);\n  createOrUpdateClip(bar, opt, symbolMeta, isUpdate);\n  bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);\n  bar.__pictorialSymbolMeta = symbolMeta;\n  return bar;\n}\n\nfunction updateBar(bar, opt, symbolMeta) {\n  var animationModel = symbolMeta.animationModel;\n  var dataIndex = symbolMeta.dataIndex;\n  var bundle = bar.__pictorialBundle;\n  graphic.updateProps(bundle, {\n    position: symbolMeta.bundlePosition.slice()\n  }, animationModel, dataIndex);\n\n  if (symbolMeta.symbolRepeat) {\n    createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);\n  } else {\n    createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);\n  }\n\n  createOrUpdateBarRect(bar, symbolMeta, true);\n  createOrUpdateClip(bar, opt, symbolMeta, true);\n}\n\nfunction removeBar(data, dataIndex, animationModel, bar) {\n  // Not show text when animating\n  var labelRect = bar.__pictorialBarRect;\n  labelRect && (labelRect.style.text = null);\n  var pathes = [];\n  eachPath(bar, function (path) {\n    pathes.push(path);\n  });\n  bar.__pictorialMainPath && pathes.push(bar.__pictorialMainPath); // I do not find proper remove animation for clip yet.\n\n  bar.__pictorialClipPath && (animationModel = null);\n  zrUtil.each(pathes, function (path) {\n    graphic.updateProps(path, {\n      scale: [0, 0]\n    }, animationModel, dataIndex, function () {\n      bar.parent && bar.parent.remove(bar);\n    });\n  });\n  data.setItemGraphicEl(dataIndex, null);\n}\n\nfunction getShapeStr(data, symbolMeta) {\n  return [data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none', !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(':');\n}\n\nfunction eachPath(bar, cb, context) {\n  // Do not use Group#eachChild, because it do not support remove.\n  zrUtil.each(bar.__pictorialBundle.children(), function (el) {\n    el !== bar.__pictorialBarRect && cb.call(context, el);\n  });\n}\n\nfunction updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {\n  immediateAttrs && el.attr(immediateAttrs); // when symbolCip used, only clip path has init animation, otherwise it would be weird effect.\n\n  if (symbolMeta.symbolClip && !isUpdate) {\n    animationAttrs && el.attr(animationAttrs);\n  } else {\n    animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps'](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);\n  }\n}\n\nfunction updateCommon(bar, opt, symbolMeta) {\n  var color = symbolMeta.color;\n  var dataIndex = symbolMeta.dataIndex;\n  var itemModel = symbolMeta.itemModel; // Color must be excluded.\n  // Because symbol provide setColor individually to set fill and stroke\n\n  var normalStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n  var hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n  var cursorStyle = itemModel.getShallow('cursor');\n  eachPath(bar, function (path) {\n    // PENDING setColor should be before setStyle!!!\n    path.setColor(color);\n    path.setStyle(zrUtil.defaults({\n      fill: color,\n      opacity: symbolMeta.opacity\n    }, normalStyle));\n    graphic.setHoverStyle(path, hoverStyle);\n    cursorStyle && (path.cursor = cursorStyle);\n    path.z2 = symbolMeta.z2;\n  });\n  var barRectHoverStyle = {};\n  var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];\n  var barRect = bar.__pictorialBarRect;\n  setLabel(barRect.style, barRectHoverStyle, itemModel, color, opt.seriesModel, dataIndex, barPositionOutside);\n  graphic.setHoverStyle(barRect, barRectHoverStyle);\n}\n\nfunction toIntTimes(times) {\n  var roundedTimes = Math.round(times); // Escapse accurate error\n\n  return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times);\n}\n\nvar _default = BarView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(606);\n\n__webpack_require__(1189);\n\n__webpack_require__(1190);\n\nvar themeRiverLayout = __webpack_require__(1191);\n\nvar themeRiverVisual = __webpack_require__(1192);\n\nvar dataFilter = __webpack_require__(265);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerLayout(themeRiverLayout);\necharts.registerVisual(themeRiverVisual);\necharts.registerProcessor(dataFilter('themeRiver'));\n\n/***/ }),\n/* 1180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Single = __webpack_require__(1181);\n\nvar CoordinateSystem = __webpack_require__(121);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Single coordinate system creator.\n */\n\n/**\n * Create single coordinate system and inject it into seriesModel.\n *\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Array.<module:echarts/coord/single/Single>}\n */\nfunction create(ecModel, api) {\n  var singles = [];\n  ecModel.eachComponent('singleAxis', function (axisModel, idx) {\n    var single = new Single(axisModel, ecModel, api);\n    single.name = 'single_' + idx;\n    single.resize(axisModel, api);\n    axisModel.coordinateSystem = single;\n    singles.push(single);\n  });\n  ecModel.eachSeries(function (seriesModel) {\n    if (seriesModel.get('coordinateSystem') === 'singleAxis') {\n      var singleAxisModel = ecModel.queryComponents({\n        mainType: 'singleAxis',\n        index: seriesModel.get('singleAxisIndex'),\n        id: seriesModel.get('singleAxisId')\n      })[0];\n      seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;\n    }\n  });\n  return singles;\n}\n\nCoordinateSystem.register('single', {\n  create: create,\n  dimensions: Single.prototype.dimensions\n});\n\n/***/ }),\n/* 1181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SingleAxis = __webpack_require__(1182);\n\nvar axisHelper = __webpack_require__(122);\n\nvar _layout = __webpack_require__(49);\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Single coordinates system.\n */\n\n/**\n * Create a single coordinates system.\n *\n * @param {module:echarts/coord/single/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction Single(axisModel, ecModel, api) {\n  /**\n   * @type {string}\n   * @readOnly\n   */\n  this.dimension = 'single';\n  /**\n   * Add it just for draw tooltip.\n   *\n   * @type {Array.<string>}\n   * @readOnly\n   */\n\n  this.dimensions = ['single'];\n  /**\n   * @private\n   * @type {module:echarts/coord/single/SingleAxis}.\n   */\n\n  this._axis = null;\n  /**\n   * @private\n   * @type {module:zrender/core/BoundingRect}\n   */\n\n  this._rect;\n\n  this._init(axisModel, ecModel, api);\n  /**\n   * @type {module:echarts/coord/single/AxisModel}\n   */\n\n\n  this.model = axisModel;\n}\n\nSingle.prototype = {\n  type: 'singleAxis',\n  axisPointerEnabled: true,\n  constructor: Single,\n\n  /**\n   * Initialize single coordinate system.\n   *\n   * @param  {module:echarts/coord/single/AxisModel} axisModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @private\n   */\n  _init: function (axisModel, ecModel, api) {\n    var dim = this.dimension;\n    var axis = new SingleAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisModel.get('position'));\n    var isCategory = axis.type === 'category';\n    axis.onBand = isCategory && axisModel.get('boundaryGap');\n    axis.inverse = axisModel.get('inverse');\n    axis.orient = axisModel.get('orient');\n    axisModel.axis = axis;\n    axis.model = axisModel;\n    axis.coordinateSystem = this;\n    this._axis = axis;\n  },\n\n  /**\n   * Update axis scale after data processed\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  update: function (ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      if (seriesModel.coordinateSystem === this) {\n        var data = seriesModel.getData();\n        each(data.mapDimension(this.dimension, true), function (dim) {\n          this._axis.scale.unionExtentFromData(data, dim);\n        }, this);\n        axisHelper.niceScaleExtent(this._axis.scale, this._axis.model);\n      }\n    }, this);\n  },\n\n  /**\n   * Resize the single coordinate system.\n   *\n   * @param  {module:echarts/coord/single/AxisModel} axisModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  resize: function (axisModel, api) {\n    this._rect = getLayoutRect({\n      left: axisModel.get('left'),\n      top: axisModel.get('top'),\n      right: axisModel.get('right'),\n      bottom: axisModel.get('bottom'),\n      width: axisModel.get('width'),\n      height: axisModel.get('height')\n    }, {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n\n    this._adjustAxis();\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getRect: function () {\n    return this._rect;\n  },\n\n  /**\n   * @private\n   */\n  _adjustAxis: function () {\n    var rect = this._rect;\n    var axis = this._axis;\n    var isHorizontal = axis.isHorizontal();\n    var extent = isHorizontal ? [0, rect.width] : [0, rect.height];\n    var idx = axis.reverse ? 1 : 0;\n    axis.setExtent(extent[idx], extent[1 - idx]);\n\n    this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y);\n  },\n\n  /**\n   * @param  {module:echarts/coord/single/SingleAxis} axis\n   * @param  {number} coordBase\n   */\n  _updateAxisTransform: function (axis, coordBase) {\n    var axisExtent = axis.getExtent();\n    var extentSum = axisExtent[0] + axisExtent[1];\n    var isHorizontal = axis.isHorizontal();\n    axis.toGlobalCoord = isHorizontal ? function (coord) {\n      return coord + coordBase;\n    } : function (coord) {\n      return extentSum - coord + coordBase;\n    };\n    axis.toLocalCoord = isHorizontal ? function (coord) {\n      return coord - coordBase;\n    } : function (coord) {\n      return extentSum - coord + coordBase;\n    };\n  },\n\n  /**\n   * Get axis.\n   *\n   * @return {module:echarts/coord/single/SingleAxis}\n   */\n  getAxis: function () {\n    return this._axis;\n  },\n\n  /**\n   * Get axis, add it just for draw tooltip.\n   *\n   * @return {[type]} [description]\n   */\n  getBaseAxis: function () {\n    return this._axis;\n  },\n\n  /**\n   * @return {Array.<module:echarts/coord/Axis>}\n   */\n  getAxes: function () {\n    return [this._axis];\n  },\n\n  /**\n   * @return {Object} {baseAxes: [], otherAxes: []}\n   */\n  getTooltipAxes: function () {\n    return {\n      baseAxes: [this.getAxis()]\n    };\n  },\n\n  /**\n   * If contain point.\n   *\n   * @param  {Array.<number>} point\n   * @return {boolean}\n   */\n  containPoint: function (point) {\n    var rect = this.getRect();\n    var axis = this.getAxis();\n    var orient = axis.orient;\n\n    if (orient === 'horizontal') {\n      return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n    } else {\n      return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height;\n    }\n  },\n\n  /**\n   * @param {Array.<number>} point\n   * @return {Array.<number>}\n   */\n  pointToData: function (point) {\n    var axis = this.getAxis();\n    return [axis.coordToData(axis.toLocalCoord(point[axis.orient === 'horizontal' ? 0 : 1]))];\n  },\n\n  /**\n   * Convert the series data to concrete point.\n   *\n   * @param  {number|Array.<number>} val\n   * @return {Array.<number>}\n   */\n  dataToPoint: function (val) {\n    var axis = this.getAxis();\n    var rect = this.getRect();\n    var pt = [];\n    var idx = axis.orient === 'horizontal' ? 0 : 1;\n\n    if (val instanceof Array) {\n      val = val[0];\n    }\n\n    pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val));\n    pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2;\n    return pt;\n  }\n};\nvar _default = Single;\nmodule.exports = _default;\n\n/***/ }),\n/* 1182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Axis = __webpack_require__(155);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @constructor  module:echarts/coord/single/SingleAxis\n * @extends {module:echarts/coord/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.<number>} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar SingleAxis = function (dim, scale, coordExtent, axisType, position) {\n  Axis.call(this, dim, scale, coordExtent);\n  /**\n   * Axis type\n   * - 'category'\n   * - 'value'\n   * - 'time'\n   * - 'log'\n   * @type {string}\n   */\n\n  this.type = axisType || 'value';\n  /**\n   * Axis position\n   *  - 'top'\n   *  - 'bottom'\n   *  - 'left'\n   *  - 'right'\n   *  @type {string}\n   */\n\n  this.position = position || 'bottom';\n  /**\n   * Axis orient\n   *  - 'horizontal'\n   *  - 'vertical'\n   * @type {[type]}\n   */\n\n  this.orient = null;\n};\n\nSingleAxis.prototype = {\n  constructor: SingleAxis,\n\n  /**\n   * Axis model\n   * @type {module:echarts/coord/single/AxisModel}\n   */\n  model: null,\n\n  /**\n   * Judge the orient of the axis.\n   * @return {boolean}\n   */\n  isHorizontal: function () {\n    var position = this.position;\n    return position === 'top' || position === 'bottom';\n  },\n\n  /**\n   * @override\n   */\n  pointToData: function (point, clamp) {\n    return this.coordinateSystem.pointToData(point, clamp)[0];\n  },\n\n  /**\n   * Convert the local coord(processed by dataToCoord())\n   * to global coord(concrete pixel coord).\n   * designated by module:echarts/coord/single/Single.\n   * @type {Function}\n   */\n  toGlobalCoord: null,\n\n  /**\n   * Convert the global coord to local coord.\n   * designated by module:echarts/coord/single/Single.\n   * @type {Function}\n   */\n  toLocalCoord: null\n};\nzrUtil.inherits(SingleAxis, Axis);\nvar _default = SingleAxis;\nmodule.exports = _default;\n\n/***/ }),\n/* 1183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar AxisBuilder = __webpack_require__(156);\n\nvar graphic = __webpack_require__(23);\n\nvar singleAxisHelper = __webpack_require__(607);\n\nvar AxisView = __webpack_require__(182);\n\nvar _axisSplitHelper = __webpack_require__(586);\n\nvar rectCoordAxisBuildSplitArea = _axisSplitHelper.rectCoordAxisBuildSplitArea;\nvar rectCoordAxisHandleRemove = _axisSplitHelper.rectCoordAxisHandleRemove;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine'];\nvar SingleAxisView = AxisView.extend({\n  type: 'singleAxis',\n  axisPointerClass: 'SingleAxisPointer',\n  render: function (axisModel, ecModel, api, payload) {\n    var group = this.group;\n    group.removeAll();\n    var oldAxisGroup = this._axisGroup;\n    this._axisGroup = new graphic.Group();\n    var layout = singleAxisHelper.layout(axisModel);\n    var axisBuilder = new AxisBuilder(axisModel, layout);\n    zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n    group.add(this._axisGroup);\n    group.add(axisBuilder.getGroup());\n    zrUtil.each(selfBuilderAttrs, function (name) {\n      if (axisModel.get(name + '.show')) {\n        this['_' + name](axisModel);\n      }\n    }, this);\n    graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n    SingleAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n  },\n  remove: function () {\n    rectCoordAxisHandleRemove(this);\n  },\n  _splitLine: function (axisModel) {\n    var axis = axisModel.axis;\n\n    if (axis.scale.isBlank()) {\n      return;\n    }\n\n    var splitLineModel = axisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineWidth = lineStyleModel.get('width');\n    var lineColors = lineStyleModel.get('color');\n    lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n    var gridRect = axisModel.coordinateSystem.getRect();\n    var isHorizontal = axis.isHorizontal();\n    var splitLines = [];\n    var lineCount = 0;\n    var ticksCoords = axis.getTicksCoords({\n      tickModel: splitLineModel\n    });\n    var p1 = [];\n    var p2 = [];\n\n    for (var i = 0; i < ticksCoords.length; ++i) {\n      var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\n\n      if (isHorizontal) {\n        p1[0] = tickCoord;\n        p1[1] = gridRect.y;\n        p2[0] = tickCoord;\n        p2[1] = gridRect.y + gridRect.height;\n      } else {\n        p1[0] = gridRect.x;\n        p1[1] = tickCoord;\n        p2[0] = gridRect.x + gridRect.width;\n        p2[1] = tickCoord;\n      }\n\n      var colorIndex = lineCount++ % lineColors.length;\n      splitLines[colorIndex] = splitLines[colorIndex] || [];\n      splitLines[colorIndex].push(new graphic.Line({\n        subPixelOptimize: true,\n        shape: {\n          x1: p1[0],\n          y1: p1[1],\n          x2: p2[0],\n          y2: p2[1]\n        },\n        style: {\n          lineWidth: lineWidth\n        },\n        silent: true\n      }));\n    }\n\n    for (var i = 0; i < splitLines.length; ++i) {\n      this.group.add(graphic.mergePath(splitLines[i], {\n        style: {\n          stroke: lineColors[i % lineColors.length],\n          lineDash: lineStyleModel.getLineDash(lineWidth),\n          lineWidth: lineWidth\n        },\n        silent: true\n      }));\n    }\n  },\n  _splitArea: function (axisModel) {\n    rectCoordAxisBuildSplitArea(this, this._axisGroup, axisModel, axisModel);\n  }\n});\nvar _default = SingleAxisView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar axisModelCreator = __webpack_require__(333);\n\nvar axisModelCommonMixin = __webpack_require__(216);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisModel = ComponentModel.extend({\n  type: 'singleAxis',\n  layoutMode: 'box',\n\n  /**\n   * @type {module:echarts/coord/single/SingleAxis}\n   */\n  axis: null,\n\n  /**\n   * @type {module:echarts/coord/single/Single}\n   */\n  coordinateSystem: null,\n\n  /**\n   * @override\n   */\n  getCoordSysModel: function () {\n    return this;\n  }\n});\nvar defaultOption = {\n  left: '5%',\n  top: '5%',\n  right: '5%',\n  bottom: '5%',\n  type: 'value',\n  position: 'bottom',\n  orient: 'horizontal',\n  axisLine: {\n    show: true,\n    lineStyle: {\n      width: 1,\n      type: 'solid'\n    }\n  },\n  // Single coordinate system and single axis is the,\n  // which is used as the parent tooltip model.\n  // same model, so we set default tooltip show as true.\n  tooltip: {\n    show: true\n  },\n  axisTick: {\n    show: true,\n    length: 6,\n    lineStyle: {\n      width: 1\n    }\n  },\n  axisLabel: {\n    show: true,\n    interval: 'auto'\n  },\n  splitLine: {\n    show: true,\n    lineStyle: {\n      type: 'dashed',\n      opacity: 0.2\n    }\n  }\n};\n\nfunction getAxisType(axisName, option) {\n  return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\naxisModelCreator('single', AxisModel, getAxisType, defaultOption);\nvar _default = AxisModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\n\nvar modelHelper = __webpack_require__(334);\n\nvar findPointFromSeries = __webpack_require__(608);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar curry = zrUtil.curry;\nvar inner = makeInner();\n/**\n * Basic logic: check all axis, if they do not demand show/highlight,\n * then hide/downplay them.\n *\n * @param {Object} coordSysAxesInfo\n * @param {Object} payload\n * @param {string} [payload.currTrigger] 'click' | 'mousemove' | 'leave'\n * @param {Array.<number>} [payload.x] x and y, which are mandatory, specify a point to\n *              trigger axisPointer and tooltip.\n * @param {Array.<number>} [payload.y] x and y, which are mandatory, specify a point to\n *              trigger axisPointer and tooltip.\n * @param {Object} [payload.seriesIndex] finder, optional, restrict target axes.\n * @param {Object} [payload.dataIndex] finder, restrict target axes.\n * @param {Object} [payload.axesInfo] finder, restrict target axes.\n *        [{\n *          axisDim: 'x'|'y'|'angle'|...,\n *          axisIndex: ...,\n *          value: ...\n *        }, ...]\n * @param {Function} [payload.dispatchAction]\n * @param {Object} [payload.tooltipOption]\n * @param {Object|Array.<number>|Function} [payload.position] Tooltip position,\n *        which can be specified in dispatchAction\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Object} content of event obj for echarts.connect.\n */\n\nfunction _default(payload, ecModel, api) {\n  var currTrigger = payload.currTrigger;\n  var point = [payload.x, payload.y];\n  var finder = payload;\n  var dispatchAction = payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n  var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; // Pending\n  // See #6121. But we are not able to reproduce it yet.\n\n  if (!coordSysAxesInfo) {\n    return;\n  }\n\n  if (illegalPoint(point)) {\n    // Used in the default behavior of `connection`: use the sample seriesIndex\n    // and dataIndex. And also used in the tooltipView trigger.\n    point = findPointFromSeries({\n      seriesIndex: finder.seriesIndex,\n      // Do not use dataIndexInside from other ec instance.\n      // FIXME: auto detect it?\n      dataIndex: finder.dataIndex\n    }, ecModel).point;\n  }\n\n  var isIllegalPoint = illegalPoint(point); // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}).\n  // Notice: In this case, it is difficult to get the `point` (which is necessary to show\n  // tooltip, so if point is not given, we just use the point found by sample seriesIndex\n  // and dataIndex.\n\n  var inputAxesInfo = finder.axesInfo;\n  var axesInfo = coordSysAxesInfo.axesInfo;\n  var shouldHide = currTrigger === 'leave' || illegalPoint(point);\n  var outputFinder = {};\n  var showValueMap = {};\n  var dataByCoordSys = {\n    list: [],\n    map: {}\n  };\n  var updaters = {\n    showPointer: curry(showPointer, showValueMap),\n    showTooltip: curry(showTooltip, dataByCoordSys)\n  }; // Process for triggered axes.\n\n  each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\n    // If a point given, it must be contained by the coordinate system.\n    var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\n    each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\n      var axis = axisInfo.axis;\n      var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); // If no inputAxesInfo, no axis is restricted.\n\n      if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\n        var val = inputAxisInfo && inputAxisInfo.value;\n\n        if (val == null && !isIllegalPoint) {\n          val = axis.pointToData(point);\n        }\n\n        val != null && processOnAxis(axisInfo, val, updaters, false, outputFinder);\n      }\n    });\n  }); // Process for linked axes.\n\n  var linkTriggers = {};\n  each(axesInfo, function (tarAxisInfo, tarKey) {\n    var linkGroup = tarAxisInfo.linkGroup; // If axis has been triggered in the previous stage, it should not be triggered by link.\n\n    if (linkGroup && !showValueMap[tarKey]) {\n      each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\n        var srcValItem = showValueMap[srcKey]; // If srcValItem exist, source axis is triggered, so link to target axis.\n\n        if (srcAxisInfo !== tarAxisInfo && srcValItem) {\n          var val = srcValItem.value;\n          linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\n          linkTriggers[tarAxisInfo.key] = val;\n        }\n      });\n    }\n  });\n  each(linkTriggers, function (val, tarKey) {\n    processOnAxis(axesInfo[tarKey], val, updaters, true, outputFinder);\n  });\n  updateModelActually(showValueMap, axesInfo, outputFinder);\n  dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\n  dispatchHighDownActually(axesInfo, dispatchAction, api);\n  return outputFinder;\n}\n\nfunction processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {\n  var axis = axisInfo.axis;\n\n  if (axis.scale.isBlank() || !axis.containData(newValue)) {\n    return;\n  }\n\n  if (!axisInfo.involveSeries) {\n    updaters.showPointer(axisInfo, newValue);\n    return;\n  } // Heavy calculation. So put it after axis.containData checking.\n\n\n  var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\n  var payloadBatch = payloadInfo.payloadBatch;\n  var snapToValue = payloadInfo.snapToValue; // Fill content of event obj for echarts.connect.\n  // By default use the first involved series data as a sample to connect.\n\n  if (payloadBatch[0] && outputFinder.seriesIndex == null) {\n    zrUtil.extend(outputFinder, payloadBatch[0]);\n  } // If no linkSource input, this process is for collecting link\n  // target, where snap should not be accepted.\n\n\n  if (!dontSnap && axisInfo.snap) {\n    if (axis.containData(snapToValue) && snapToValue != null) {\n      newValue = snapToValue;\n    }\n  }\n\n  updaters.showPointer(axisInfo, newValue, payloadBatch, outputFinder); // Tooltip should always be snapToValue, otherwise there will be\n  // incorrect \"axis value ~ series value\" mapping displayed in tooltip.\n\n  updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\n}\n\nfunction buildPayloadsBySeries(value, axisInfo) {\n  var axis = axisInfo.axis;\n  var dim = axis.dim;\n  var snapToValue = value;\n  var payloadBatch = [];\n  var minDist = Number.MAX_VALUE;\n  var minDiff = -1;\n  each(axisInfo.seriesModels, function (series, idx) {\n    var dataDim = series.getData().mapDimension(dim, true);\n    var seriesNestestValue;\n    var dataIndices;\n\n    if (series.getAxisTooltipData) {\n      var result = series.getAxisTooltipData(dataDim, value, axis);\n      dataIndices = result.dataIndices;\n      seriesNestestValue = result.nestestValue;\n    } else {\n      dataIndices = series.getData().indicesOfNearest(dataDim[0], value, // Add a threshold to avoid find the wrong dataIndex\n      // when data length is not same.\n      // false,\n      axis.type === 'category' ? 0.5 : null);\n\n      if (!dataIndices.length) {\n        return;\n      }\n\n      seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\n    }\n\n    if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\n      return;\n    }\n\n    var diff = value - seriesNestestValue;\n    var dist = Math.abs(diff); // Consider category case\n\n    if (dist <= minDist) {\n      if (dist < minDist || diff >= 0 && minDiff < 0) {\n        minDist = dist;\n        minDiff = diff;\n        snapToValue = seriesNestestValue;\n        payloadBatch.length = 0;\n      }\n\n      each(dataIndices, function (dataIndex) {\n        payloadBatch.push({\n          seriesIndex: series.seriesIndex,\n          dataIndexInside: dataIndex,\n          dataIndex: series.getData().getRawIndex(dataIndex)\n        });\n      });\n    }\n  });\n  return {\n    payloadBatch: payloadBatch,\n    snapToValue: snapToValue\n  };\n}\n\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\n  showValueMap[axisInfo.key] = {\n    value: value,\n    payloadBatch: payloadBatch\n  };\n}\n\nfunction showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\n  var payloadBatch = payloadInfo.payloadBatch;\n  var axis = axisInfo.axis;\n  var axisModel = axis.model;\n  var axisPointerModel = axisInfo.axisPointerModel; // If no data, do not create anything in dataByCoordSys,\n  // whose length will be used to judge whether dispatch action.\n\n  if (!axisInfo.triggerTooltip || !payloadBatch.length) {\n    return;\n  }\n\n  var coordSysModel = axisInfo.coordSys.model;\n  var coordSysKey = modelHelper.makeKey(coordSysModel);\n  var coordSysItem = dataByCoordSys.map[coordSysKey];\n\n  if (!coordSysItem) {\n    coordSysItem = dataByCoordSys.map[coordSysKey] = {\n      coordSysId: coordSysModel.id,\n      coordSysIndex: coordSysModel.componentIndex,\n      coordSysType: coordSysModel.type,\n      coordSysMainType: coordSysModel.mainType,\n      dataByAxis: []\n    };\n    dataByCoordSys.list.push(coordSysItem);\n  }\n\n  coordSysItem.dataByAxis.push({\n    axisDim: axis.dim,\n    axisIndex: axisModel.componentIndex,\n    axisType: axisModel.type,\n    axisId: axisModel.id,\n    value: value,\n    // Caustion: viewHelper.getValueLabel is actually on \"view stage\", which\n    // depends that all models have been updated. So it should not be performed\n    // here. Considering axisPointerModel used here is volatile, which is hard\n    // to be retrieve in TooltipView, we prepare parameters here.\n    valueLabelOpt: {\n      precision: axisPointerModel.get('label.precision'),\n      formatter: axisPointerModel.get('label.formatter')\n    },\n    seriesDataIndices: payloadBatch.slice()\n  });\n}\n\nfunction updateModelActually(showValueMap, axesInfo, outputFinder) {\n  var outputAxesInfo = outputFinder.axesInfo = []; // Basic logic: If no 'show' required, 'hide' this axisPointer.\n\n  each(axesInfo, function (axisInfo, key) {\n    var option = axisInfo.axisPointerModel.option;\n    var valItem = showValueMap[key];\n\n    if (valItem) {\n      !axisInfo.useHandle && (option.status = 'show');\n      option.value = valItem.value; // For label formatter param and highlight.\n\n      option.seriesDataIndices = (valItem.payloadBatch || []).slice();\n    } // When always show (e.g., handle used), remain\n    // original value and status.\n    else {\n        // If hide, value still need to be set, consider\n        // click legend to toggle axis blank.\n        !axisInfo.useHandle && (option.status = 'hide');\n      } // If status is 'hide', should be no info in payload.\n\n\n    option.status === 'show' && outputAxesInfo.push({\n      axisDim: axisInfo.axis.dim,\n      axisIndex: axisInfo.axis.model.componentIndex,\n      value: option.value\n    });\n  });\n}\n\nfunction dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\n  // Basic logic: If no showTip required, hideTip will be dispatched.\n  if (illegalPoint(point) || !dataByCoordSys.list.length) {\n    dispatchAction({\n      type: 'hideTip'\n    });\n    return;\n  } // In most case only one axis (or event one series is used). It is\n  // convinient to fetch payload.seriesIndex and payload.dataIndex\n  // dirtectly. So put the first seriesIndex and dataIndex of the first\n  // axis on the payload.\n\n\n  var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\n  dispatchAction({\n    type: 'showTip',\n    escapeConnect: true,\n    x: point[0],\n    y: point[1],\n    tooltipOption: payload.tooltipOption,\n    position: payload.position,\n    dataIndexInside: sampleItem.dataIndexInside,\n    dataIndex: sampleItem.dataIndex,\n    seriesIndex: sampleItem.seriesIndex,\n    dataByCoordSys: dataByCoordSys.list\n  });\n}\n\nfunction dispatchHighDownActually(axesInfo, dispatchAction, api) {\n  // FIXME\n  // highlight status modification shoule be a stage of main process?\n  // (Consider confilct (e.g., legend and axisPointer) and setOption)\n  var zr = api.getZr();\n  var highDownKey = 'axisPointerLastHighlights';\n  var lastHighlights = inner(zr)[highDownKey] || {};\n  var newHighlights = inner(zr)[highDownKey] = {}; // Update highlight/downplay status according to axisPointer model.\n  // Build hash map and remove duplicate incidentally.\n\n  each(axesInfo, function (axisInfo, key) {\n    var option = axisInfo.axisPointerModel.option;\n    option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\n      var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\n      newHighlights[key] = batchItem;\n    });\n  }); // Diff.\n\n  var toHighlight = [];\n  var toDownplay = [];\n  zrUtil.each(lastHighlights, function (batchItem, key) {\n    !newHighlights[key] && toDownplay.push(batchItem);\n  });\n  zrUtil.each(newHighlights, function (batchItem, key) {\n    !lastHighlights[key] && toHighlight.push(batchItem);\n  });\n  toDownplay.length && api.dispatchAction({\n    type: 'downplay',\n    escapeConnect: true,\n    batch: toDownplay\n  });\n  toHighlight.length && api.dispatchAction({\n    type: 'highlight',\n    escapeConnect: true,\n    batch: toHighlight\n  });\n}\n\nfunction findInputAxisInfo(inputAxesInfo, axisInfo) {\n  for (var i = 0; i < (inputAxesInfo || []).length; i++) {\n    var inputAxisInfo = inputAxesInfo[i];\n\n    if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\n      return inputAxisInfo;\n    }\n  }\n}\n\nfunction makeMapperParam(axisInfo) {\n  var axisModel = axisInfo.axis.model;\n  var item = {};\n  var dim = item.axisDim = axisInfo.axis.dim;\n  item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\n  item.axisName = item[dim + 'AxisName'] = axisModel.name;\n  item.axisId = item[dim + 'AxisId'] = axisModel.id;\n  return item;\n}\n\nfunction illegalPoint(point) {\n  return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisPointerModel = echarts.extendComponentModel({\n  type: 'axisPointer',\n  coordSysAxesInfo: null,\n  defaultOption: {\n    // 'auto' means that show when triggered by tooltip or handle.\n    show: 'auto',\n    // 'click' | 'mousemove' | 'none'\n    triggerOn: null,\n    // set default in AxisPonterView.js\n    zlevel: 0,\n    z: 50,\n    type: 'line',\n    // 'line' 'shadow' 'cross' 'none'.\n    // axispointer triggered by tootip determine snap automatically,\n    // see `modelHelper`.\n    snap: false,\n    triggerTooltip: true,\n    value: null,\n    status: null,\n    // Init value depends on whether handle is used.\n    // [group0, group1, ...]\n    // Each group can be: {\n    //      mapper: function () {},\n    //      singleTooltip: 'multiple',  // 'multiple' or 'single'\n    //      xAxisId: ...,\n    //      yAxisName: ...,\n    //      angleAxisIndex: ...\n    // }\n    // mapper: can be ignored.\n    //      input: {axisInfo, value}\n    //      output: {axisInfo, value}\n    link: [],\n    // Do not set 'auto' here, otherwise global animation: false\n    // will not effect at this axispointer.\n    animation: null,\n    animationDurationUpdate: 200,\n    lineStyle: {\n      color: '#aaa',\n      width: 1,\n      type: 'solid'\n    },\n    shadowStyle: {\n      color: 'rgba(150,150,150,0.3)'\n    },\n    label: {\n      show: true,\n      formatter: null,\n      // string | Function\n      precision: 'auto',\n      // Or a number like 0, 1, 2 ...\n      margin: 3,\n      color: '#fff',\n      padding: [5, 7, 5, 7],\n      backgroundColor: 'auto',\n      // default: axis line color\n      borderColor: null,\n      borderWidth: 0,\n      shadowBlur: 3,\n      shadowColor: '#aaa' // Considering applicability, common style should\n      // better not have shadowOffset.\n      // shadowOffsetX: 0,\n      // shadowOffsetY: 2\n\n    },\n    handle: {\n      show: false,\n\n      /* eslint-disable */\n      icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\n      // jshint ignore:line\n\n      /* eslint-enable */\n      size: 45,\n      // handle margin is from symbol center to axis, which is stable when circular move.\n      margin: 50,\n      // color: '#1b8bbd'\n      // color: '#2f4554'\n      color: '#333',\n      shadowBlur: 3,\n      shadowColor: '#aaa',\n      shadowOffsetX: 0,\n      shadowOffsetY: 2,\n      // For mobile performance\n      throttle: 40\n    }\n  }\n});\nvar _default = AxisPointerModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar globalListener = __webpack_require__(609);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisPointerView = echarts.extendComponentView({\n  type: 'axisPointer',\n  render: function (globalAxisPointerModel, ecModel, api) {\n    var globalTooltipModel = ecModel.getComponent('tooltip');\n    var triggerOn = globalAxisPointerModel.get('triggerOn') || globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'; // Register global listener in AxisPointerView to enable\n    // AxisPointerView to be independent to Tooltip.\n\n    globalListener.register('axisPointer', api, function (currTrigger, e, dispatchAction) {\n      // If 'none', it is not controlled by mouse totally.\n      if (triggerOn !== 'none' && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\n        dispatchAction({\n          type: 'updateAxisPointer',\n          currTrigger: currTrigger,\n          x: e && e.offsetX,\n          y: e && e.offsetY\n        });\n      }\n    });\n  },\n\n  /**\n   * @override\n   */\n  remove: function (ecModel, api) {\n    globalListener.unregister(api.getZr(), 'axisPointer');\n    AxisPointerView.superApply(this._model, 'remove', arguments);\n  },\n\n  /**\n   * @override\n   */\n  dispose: function (ecModel, api) {\n    globalListener.unregister('axisPointer', api);\n    AxisPointerView.superApply(this._model, 'dispose', arguments);\n  }\n});\nvar _default = AxisPointerView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseAxisPointer = __webpack_require__(422);\n\nvar viewHelper = __webpack_require__(339);\n\nvar singleAxisHelper = __webpack_require__(607);\n\nvar AxisView = __webpack_require__(182);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar XY = ['x', 'y'];\nvar WH = ['width', 'height'];\nvar SingleAxisPointer = BaseAxisPointer.extend({\n  /**\n   * @override\n   */\n  makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n    var axis = axisModel.axis;\n    var coordSys = axis.coordinateSystem;\n    var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));\n    var pixelValue = coordSys.dataToPoint(value)[0];\n    var axisPointerType = axisPointerModel.get('type');\n\n    if (axisPointerType && axisPointerType !== 'none') {\n      var elStyle = viewHelper.buildElStyle(axisPointerModel);\n      var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n      pointerOption.style = elStyle;\n      elOption.graphicKey = pointerOption.type;\n      elOption.pointer = pointerOption;\n    }\n\n    var layoutInfo = singleAxisHelper.layout(axisModel);\n    viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n  },\n\n  /**\n   * @override\n   */\n  getHandleTransform: function (value, axisModel, axisPointerModel) {\n    var layoutInfo = singleAxisHelper.layout(axisModel, {\n      labelInside: false\n    });\n    layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n    return {\n      position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n      rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n    };\n  },\n\n  /**\n   * @override\n   */\n  updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n    var axis = axisModel.axis;\n    var coordSys = axis.coordinateSystem;\n    var dimIndex = getPointDimIndex(axis);\n    var axisExtent = getGlobalExtent(coordSys, dimIndex);\n    var currPosition = transform.position;\n    currPosition[dimIndex] += delta[dimIndex];\n    currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n    currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n    var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);\n    var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n    var cursorPoint = [cursorOtherValue, cursorOtherValue];\n    cursorPoint[dimIndex] = currPosition[dimIndex];\n    return {\n      position: currPosition,\n      rotation: transform.rotation,\n      cursorPoint: cursorPoint,\n      tooltipOption: {\n        verticalAlign: 'middle'\n      }\n    };\n  }\n});\nvar pointerShapeBuilder = {\n  line: function (axis, pixelValue, otherExtent) {\n    var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));\n    return {\n      type: 'Line',\n      subPixelOptimize: true,\n      shape: targetShape\n    };\n  },\n  shadow: function (axis, pixelValue, otherExtent) {\n    var bandWidth = axis.getBandWidth();\n    var span = otherExtent[1] - otherExtent[0];\n    return {\n      type: 'Rect',\n      shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis))\n    };\n  }\n};\n\nfunction getPointDimIndex(axis) {\n  return axis.isHorizontal() ? 0 : 1;\n}\n\nfunction getGlobalExtent(coordSys, dimIndex) {\n  var rect = coordSys.getRect();\n  return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];\n}\n\nAxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer);\nvar _default = SingleAxisPointer;\nmodule.exports = _default;\n\n/***/ }),\n/* 1189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = __webpack_require__(75);\n\nvar createDimensions = __webpack_require__(215);\n\nvar _dimensionHelper = __webpack_require__(259);\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar List = __webpack_require__(116);\n\nvar zrUtil = __webpack_require__(2);\n\nvar _model = __webpack_require__(31);\n\nvar groupData = _model.groupData;\n\nvar _format = __webpack_require__(50);\n\nvar encodeHTML = _format.encodeHTML;\n\nvar LegendVisualProvider = __webpack_require__(264);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DATA_NAME_INDEX = 2;\nvar ThemeRiverSeries = SeriesModel.extend({\n  type: 'series.themeRiver',\n  dependencies: ['singleAxis'],\n\n  /**\n   * @readOnly\n   * @type {module:zrender/core/util#HashMap}\n   */\n  nameMap: null,\n\n  /**\n   * @override\n   */\n  init: function (option) {\n    // eslint-disable-next-line\n    ThemeRiverSeries.superApply(this, 'init', arguments); // Put this function here is for the sake of consistency of code style.\n    // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n    this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n  },\n\n  /**\n   * If there is no value of a certain point in the time for some event,set it value to 0.\n   *\n   * @param {Array} data  initial data in the option\n   * @return {Array}\n   */\n  fixData: function (data) {\n    var rawDataLength = data.length;\n    /**\n     * Make sure every layer data get the same keys.\n     * The value index tells which layer has visited.\n     * {\n     *  2014/01/01: -1\n     * }\n     */\n\n    var timeValueKeys = {}; // grouped data by name\n\n    var groupResult = groupData(data, function (item) {\n      if (!timeValueKeys.hasOwnProperty(item[0])) {\n        timeValueKeys[item[0]] = -1;\n      }\n\n      return item[2];\n    });\n    var layData = [];\n    groupResult.buckets.each(function (items, key) {\n      layData.push({\n        name: key,\n        dataList: items\n      });\n    });\n    var layerNum = layData.length;\n\n    for (var k = 0; k < layerNum; ++k) {\n      var name = layData[k].name;\n\n      for (var j = 0; j < layData[k].dataList.length; ++j) {\n        var timeValue = layData[k].dataList[j][0];\n        timeValueKeys[timeValue] = k;\n      }\n\n      for (var timeValue in timeValueKeys) {\n        if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) {\n          timeValueKeys[timeValue] = k;\n          data[rawDataLength] = [];\n          data[rawDataLength][0] = timeValue;\n          data[rawDataLength][1] = 0;\n          data[rawDataLength][2] = name;\n          rawDataLength++;\n        }\n      }\n    }\n\n    return data;\n  },\n\n  /**\n   * @override\n   * @param  {Object} option  the initial option that user gived\n   * @param  {module:echarts/model/Model} ecModel  the model object for themeRiver option\n   * @return {module:echarts/data/List}\n   */\n  getInitialData: function (option, ecModel) {\n    var singleAxisModel = ecModel.queryComponents({\n      mainType: 'singleAxis',\n      index: this.get('singleAxisIndex'),\n      id: this.get('singleAxisId')\n    })[0];\n    var axisType = singleAxisModel.get('type'); // filter the data item with the value of label is undefined\n\n    var filterData = zrUtil.filter(option.data, function (dataItem) {\n      return dataItem[2] !== undefined;\n    }); // ??? TODO design a stage to transfer data for themeRiver and lines?\n\n    var data = this.fixData(filterData || []);\n    var nameList = [];\n    var nameMap = this.nameMap = zrUtil.createHashMap();\n    var count = 0;\n\n    for (var i = 0; i < data.length; ++i) {\n      nameList.push(data[i][DATA_NAME_INDEX]);\n\n      if (!nameMap.get(data[i][DATA_NAME_INDEX])) {\n        nameMap.set(data[i][DATA_NAME_INDEX], count);\n        count++;\n      }\n    }\n\n    var dimensionsInfo = createDimensions(data, {\n      coordDimensions: ['single'],\n      dimensionsDefine: [{\n        name: 'time',\n        type: getDimensionTypeByAxis(axisType)\n      }, {\n        name: 'value',\n        type: 'float'\n      }, {\n        name: 'name',\n        type: 'ordinal'\n      }],\n      encodeDefine: {\n        single: 0,\n        value: 1,\n        itemName: 2\n      }\n    });\n    var list = new List(dimensionsInfo, this);\n    list.initData(data);\n    return list;\n  },\n\n  /**\n   * The raw data is divided into multiple layers and each layer\n   *     has same name.\n   *\n   * @return {Array.<Array.<number>>}\n   */\n  getLayerSeries: function () {\n    var data = this.getData();\n    var lenCount = data.count();\n    var indexArr = [];\n\n    for (var i = 0; i < lenCount; ++i) {\n      indexArr[i] = i;\n    }\n\n    var timeDim = data.mapDimension('single'); // data group by name\n\n    var groupResult = groupData(indexArr, function (index) {\n      return data.get('name', index);\n    });\n    var layerSeries = [];\n    groupResult.buckets.each(function (items, key) {\n      items.sort(function (index1, index2) {\n        return data.get(timeDim, index1) - data.get(timeDim, index2);\n      });\n      layerSeries.push({\n        name: key,\n        indices: items\n      });\n    });\n    return layerSeries;\n  },\n\n  /**\n   * Get data indices for show tooltip content\n    * @param {Array.<string>|string} dim  single coordinate dimension\n   * @param {number} value axis value\n   * @param {module:echarts/coord/single/SingleAxis} baseAxis  single Axis used\n   *     the themeRiver.\n   * @return {Object} {dataIndices, nestestValue}\n   */\n  getAxisTooltipData: function (dim, value, baseAxis) {\n    if (!zrUtil.isArray(dim)) {\n      dim = dim ? [dim] : [];\n    }\n\n    var data = this.getData();\n    var layerSeries = this.getLayerSeries();\n    var indices = [];\n    var layerNum = layerSeries.length;\n    var nestestValue;\n\n    for (var i = 0; i < layerNum; ++i) {\n      var minDist = Number.MAX_VALUE;\n      var nearestIdx = -1;\n      var pointNum = layerSeries[i].indices.length;\n\n      for (var j = 0; j < pointNum; ++j) {\n        var theValue = data.get(dim[0], layerSeries[i].indices[j]);\n        var dist = Math.abs(theValue - value);\n\n        if (dist <= minDist) {\n          nestestValue = theValue;\n          minDist = dist;\n          nearestIdx = layerSeries[i].indices[j];\n        }\n      }\n\n      indices.push(nearestIdx);\n    }\n\n    return {\n      dataIndices: indices,\n      nestestValue: nestestValue\n    };\n  },\n\n  /**\n   * @override\n   * @param {number} dataIndex  index of data\n   */\n  formatTooltip: function (dataIndex) {\n    var data = this.getData();\n    var htmlName = data.getName(dataIndex);\n    var htmlValue = data.get(data.mapDimension('value'), dataIndex);\n\n    if (isNaN(htmlValue) || htmlValue == null) {\n      htmlValue = '-';\n    }\n\n    return encodeHTML(htmlName + ' : ' + htmlValue);\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'singleAxis',\n    // gap in axis's orthogonal orientation\n    boundaryGap: ['10%', '10%'],\n    // legendHoverLink: true,\n    singleAxisIndex: 0,\n    animationEasing: 'linear',\n    label: {\n      margin: 4,\n      show: true,\n      position: 'left',\n      color: '#000',\n      fontSize: 11\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    }\n  }\n});\nvar _default = ThemeRiverSeries;\nmodule.exports = _default;\n\n/***/ }),\n/* 1190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar _poly = __webpack_require__(582);\n\nvar Polygon = _poly.Polygon;\n\nvar graphic = __webpack_require__(23);\n\nvar _util = __webpack_require__(2);\n\nvar bind = _util.bind;\nvar extend = _util.extend;\n\nvar DataDiffer = __webpack_require__(180);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendChartView({\n  type: 'themeRiver',\n  init: function () {\n    this._layers = [];\n  },\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var group = this.group;\n    var layerSeries = seriesModel.getLayerSeries();\n    var layoutInfo = data.getLayout('layoutInfo');\n    var rect = layoutInfo.rect;\n    var boundaryGap = layoutInfo.boundaryGap;\n    group.attr('position', [0, rect.y + boundaryGap[0]]);\n\n    function keyGetter(item) {\n      return item.name;\n    }\n\n    var dataDiffer = new DataDiffer(this._layersSeries || [], layerSeries, keyGetter, keyGetter);\n    var newLayersGroups = {};\n    dataDiffer.add(bind(process, this, 'add')).update(bind(process, this, 'update')).remove(bind(process, this, 'remove')).execute();\n\n    function process(status, idx, oldIdx) {\n      var oldLayersGroups = this._layers;\n\n      if (status === 'remove') {\n        group.remove(oldLayersGroups[idx]);\n        return;\n      }\n\n      var points0 = [];\n      var points1 = [];\n      var color;\n      var indices = layerSeries[idx].indices;\n\n      for (var j = 0; j < indices.length; j++) {\n        var layout = data.getItemLayout(indices[j]);\n        var x = layout.x;\n        var y0 = layout.y0;\n        var y = layout.y;\n        points0.push([x, y0]);\n        points1.push([x, y0 + y]);\n        color = data.getItemVisual(indices[j], 'color');\n      }\n\n      var polygon;\n      var text;\n      var textLayout = data.getItemLayout(indices[0]);\n      var itemModel = data.getItemModel(indices[j - 1]);\n      var labelModel = itemModel.getModel('label');\n      var margin = labelModel.get('margin');\n\n      if (status === 'add') {\n        var layerGroup = newLayersGroups[idx] = new graphic.Group();\n        polygon = new Polygon({\n          shape: {\n            points: points0,\n            stackedOnPoints: points1,\n            smooth: 0.4,\n            stackedOnSmooth: 0.4,\n            smoothConstraint: false\n          },\n          z2: 0\n        });\n        text = new graphic.Text({\n          style: {\n            x: textLayout.x - margin,\n            y: textLayout.y0 + textLayout.y / 2\n          }\n        });\n        layerGroup.add(polygon);\n        layerGroup.add(text);\n        group.add(layerGroup);\n        polygon.setClipPath(createGridClipShape(polygon.getBoundingRect(), seriesModel, function () {\n          polygon.removeClipPath();\n        }));\n      } else {\n        var layerGroup = oldLayersGroups[oldIdx];\n        polygon = layerGroup.childAt(0);\n        text = layerGroup.childAt(1);\n        group.add(layerGroup);\n        newLayersGroups[idx] = layerGroup;\n        graphic.updateProps(polygon, {\n          shape: {\n            points: points0,\n            stackedOnPoints: points1\n          }\n        }, seriesModel);\n        graphic.updateProps(text, {\n          style: {\n            x: textLayout.x - margin,\n            y: textLayout.y0 + textLayout.y / 2\n          }\n        }, seriesModel);\n      }\n\n      var hoverItemStyleModel = itemModel.getModel('emphasis.itemStyle');\n      var itemStyleModel = itemModel.getModel('itemStyle');\n      graphic.setTextStyle(text.style, labelModel, {\n        text: labelModel.get('show') ? seriesModel.getFormattedLabel(indices[j - 1], 'normal') || data.getName(indices[j - 1]) : null,\n        textVerticalAlign: 'middle'\n      });\n      polygon.setStyle(extend({\n        fill: color\n      }, itemStyleModel.getItemStyle(['color'])));\n      graphic.setHoverStyle(polygon, hoverItemStyleModel.getItemStyle());\n    }\n\n    this._layersSeries = layerSeries;\n    this._layers = newLayersGroups;\n  },\n  dispose: function () {}\n}); // add animation to the view\n\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n  var rectEl = new graphic.Rect({\n    shape: {\n      x: rect.x - 10,\n      y: rect.y - 10,\n      width: 0,\n      height: rect.height + 20\n    }\n  });\n  graphic.initProps(rectEl, {\n    shape: {\n      width: rect.width + 20,\n      height: rect.height + 20\n    }\n  }, seriesModel, cb);\n  return rectEl;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1191 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar numberUtil = __webpack_require__(26);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel, api) {\n  ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\n    var data = seriesModel.getData();\n    var single = seriesModel.coordinateSystem;\n    var layoutInfo = {}; // use the axis boundingRect for view\n\n    var rect = single.getRect();\n    layoutInfo.rect = rect;\n    var boundaryGap = seriesModel.get('boundaryGap');\n    var axis = single.getAxis();\n    layoutInfo.boundaryGap = boundaryGap;\n\n    if (axis.orient === 'horizontal') {\n      boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.height);\n      boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.height);\n      var height = rect.height - boundaryGap[0] - boundaryGap[1];\n      themeRiverLayout(data, seriesModel, height);\n    } else {\n      boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.width);\n      boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.width);\n      var width = rect.width - boundaryGap[0] - boundaryGap[1];\n      themeRiverLayout(data, seriesModel, width);\n    }\n\n    data.setLayout('layoutInfo', layoutInfo);\n  });\n}\n/**\n * The layout information about themeriver\n *\n * @param {module:echarts/data/List} data  data in the series\n * @param {module:echarts/model/Series} seriesModel  the model object of themeRiver series\n * @param {number} height  value used to compute every series height\n */\n\n\nfunction themeRiverLayout(data, seriesModel, height) {\n  if (!data.count()) {\n    return;\n  }\n\n  var coordSys = seriesModel.coordinateSystem; // the data in each layer are organized into a series.\n\n  var layerSeries = seriesModel.getLayerSeries(); // the points in each layer.\n\n  var timeDim = data.mapDimension('single');\n  var valueDim = data.mapDimension('value');\n  var layerPoints = zrUtil.map(layerSeries, function (singleLayer) {\n    return zrUtil.map(singleLayer.indices, function (idx) {\n      var pt = coordSys.dataToPoint(data.get(timeDim, idx));\n      pt[1] = data.get(valueDim, idx);\n      return pt;\n    });\n  });\n  var base = computeBaseline(layerPoints);\n  var baseLine = base.y0;\n  var ky = height / base.max; // set layout information for each item.\n\n  var n = layerSeries.length;\n  var m = layerSeries[0].indices.length;\n  var baseY0;\n\n  for (var j = 0; j < m; ++j) {\n    baseY0 = baseLine[j] * ky;\n    data.setItemLayout(layerSeries[0].indices[j], {\n      layerIndex: 0,\n      x: layerPoints[0][j][0],\n      y0: baseY0,\n      y: layerPoints[0][j][1] * ky\n    });\n\n    for (var i = 1; i < n; ++i) {\n      baseY0 += layerPoints[i - 1][j][1] * ky;\n      data.setItemLayout(layerSeries[i].indices[j], {\n        layerIndex: i,\n        x: layerPoints[i][j][0],\n        y0: baseY0,\n        y: layerPoints[i][j][1] * ky\n      });\n    }\n  }\n}\n/**\n * Compute the baseLine of the rawdata\n * Inspired by Lee Byron's paper Stacked Graphs - Geometry & Aesthetics\n *\n * @param  {Array.<Array>} data  the points in each layer\n * @return {Object}\n */\n\n\nfunction computeBaseline(data) {\n  var layerNum = data.length;\n  var pointNum = data[0].length;\n  var sums = [];\n  var y0 = [];\n  var max = 0;\n  var temp;\n  var base = {};\n\n  for (var i = 0; i < pointNum; ++i) {\n    for (var j = 0, temp = 0; j < layerNum; ++j) {\n      temp += data[j][i][1];\n    }\n\n    if (temp > max) {\n      max = temp;\n    }\n\n    sums.push(temp);\n  }\n\n  for (var k = 0; k < pointNum; ++k) {\n    y0[k] = (max - sums[k]) / 2;\n  }\n\n  max = 0;\n\n  for (var l = 0; l < pointNum; ++l) {\n    var sum = sums[l] + y0[l];\n\n    if (sum > max) {\n      max = sum;\n    }\n  }\n\n  base.y0 = y0;\n  base.max = max;\n  return base;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = __webpack_require__(2);\n\nvar createHashMap = _util.createHashMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\n    var data = seriesModel.getData();\n    var rawData = seriesModel.getRawData();\n    var colorList = seriesModel.get('color');\n    var idxMap = createHashMap();\n    data.each(function (idx) {\n      idxMap.set(data.getRawIndex(idx), idx);\n    });\n    rawData.each(function (rawIndex) {\n      var name = rawData.getName(rawIndex);\n      var color = colorList[(seriesModel.nameMap.get(name) - 1) % colorList.length];\n      rawData.setItemVisual(rawIndex, 'color', color);\n      var idx = idxMap.get(rawIndex);\n\n      if (idx != null) {\n        data.setItemVisual(idx, 'color', color);\n      }\n    });\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1193 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\n__webpack_require__(1194);\n\n__webpack_require__(1195);\n\n__webpack_require__(1197);\n\nvar dataColor = __webpack_require__(335);\n\nvar sunburstLayout = __webpack_require__(1198);\n\nvar dataFilter = __webpack_require__(265);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(zrUtil.curry(dataColor, 'sunburst'));\necharts.registerLayout(zrUtil.curry(sunburstLayout, 'sunburst'));\necharts.registerProcessor(zrUtil.curry(dataFilter, 'sunburst'));\n\n/***/ }),\n/* 1194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar SeriesModel = __webpack_require__(75);\n\nvar Tree = __webpack_require__(417);\n\nvar Model = __webpack_require__(67);\n\nvar _treeHelper = __webpack_require__(183);\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n  type: 'series.sunburst',\n\n  /**\n   * @type {module:echarts/data/Tree~Node}\n   */\n  _viewRoot: null,\n  getInitialData: function (option, ecModel) {\n    // Create a virtual root.\n    var root = {\n      name: option.name,\n      children: option.data\n    };\n    completeTreeValue(root);\n    var levelModels = zrUtil.map(option.levels || [], function (levelDefine) {\n      return new Model(levelDefine, this, ecModel);\n    }, this); // Make sure always a new tree is created when setOption,\n    // in TreemapView, we check whether oldTree === newTree\n    // to choose mappings approach among old shapes and new shapes.\n\n    var tree = Tree.createTree(root, this, beforeLink);\n\n    function beforeLink(nodeData) {\n      nodeData.wrapMethod('getItemModel', function (model, idx) {\n        var node = tree.getNodeByDataIndex(idx);\n        var levelModel = levelModels[node.depth];\n        levelModel && (model.parentModel = levelModel);\n        return model;\n      });\n    }\n\n    return tree.data;\n  },\n  optionUpdated: function () {\n    this.resetViewRoot();\n  },\n\n  /*\n   * @override\n   */\n  getDataParams: function (dataIndex) {\n    var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n    var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n    params.treePathInfo = wrapTreePathInfo(node, this);\n    return params;\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    // 默认全局居中\n    center: ['50%', '50%'],\n    radius: [0, '75%'],\n    // 默认顺时针\n    clockwise: true,\n    startAngle: 90,\n    // 最小角度改为0\n    minAngle: 0,\n    percentPrecision: 2,\n    // If still show when all data zero.\n    stillShowZeroSum: true,\n    // Policy of highlighting pieces when hover on one\n    // Valid values: 'none' (for not downplay others), 'descendant',\n    // 'ancestor', 'self'\n    highlightPolicy: 'descendant',\n    // 'rootToNode', 'link', or false\n    nodeClick: 'rootToNode',\n    renderLabelForZeroData: false,\n    label: {\n      // could be: 'radial', 'tangential', or 'none'\n      rotate: 'radial',\n      show: true,\n      opacity: 1,\n      // 'left' is for inner side of inside, and 'right' is for outter\n      // side for inside\n      align: 'center',\n      position: 'inside',\n      distance: 5,\n      silent: true\n    },\n    itemStyle: {\n      borderWidth: 1,\n      borderColor: 'white',\n      borderType: 'solid',\n      shadowBlur: 0,\n      shadowColor: 'rgba(0, 0, 0, 0.2)',\n      shadowOffsetX: 0,\n      shadowOffsetY: 0,\n      opacity: 1\n    },\n    highlight: {\n      itemStyle: {\n        opacity: 1\n      }\n    },\n    downplay: {\n      itemStyle: {\n        opacity: 0.5\n      },\n      label: {\n        opacity: 0.6\n      }\n    },\n    // Animation type canbe expansion, scale\n    animationType: 'expansion',\n    animationDuration: 1000,\n    animationDurationUpdate: 500,\n    animationEasing: 'cubicOut',\n    data: [],\n    levels: [],\n\n    /**\n     * Sort order.\n     *\n     * Valid values: 'desc', 'asc', null, or callback function.\n     * 'desc' and 'asc' for descend and ascendant order;\n     * null for not sorting;\n     * example of callback function:\n     * function(nodeA, nodeB) {\n     *     return nodeA.getValue() - nodeB.getValue();\n     * }\n     */\n    sort: 'desc'\n  },\n  getViewRoot: function () {\n    return this._viewRoot;\n  },\n\n  /**\n   * @param {module:echarts/data/Tree~Node} [viewRoot]\n   */\n  resetViewRoot: function (viewRoot) {\n    viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;\n    var root = this.getRawData().tree.root;\n\n    if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {\n      this._viewRoot = root;\n    }\n  }\n});\n/**\n * @param {Object} dataNode\n */\n\n\nfunction completeTreeValue(dataNode) {\n  // Postorder travel tree.\n  // If value of none-leaf node is not set,\n  // calculate it by suming up the value of all children.\n  var sum = 0;\n  zrUtil.each(dataNode.children, function (child) {\n    completeTreeValue(child);\n    var childValue = child.value;\n    zrUtil.isArray(childValue) && (childValue = childValue[0]);\n    sum += childValue;\n  });\n  var thisValue = dataNode.value;\n\n  if (zrUtil.isArray(thisValue)) {\n    thisValue = thisValue[0];\n  }\n\n  if (thisValue == null || isNaN(thisValue)) {\n    thisValue = sum;\n  } // Value should not less than 0.\n\n\n  if (thisValue < 0) {\n    thisValue = 0;\n  }\n\n  zrUtil.isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar ChartView = __webpack_require__(131);\n\nvar SunburstPiece = __webpack_require__(1196);\n\nvar DataDiffer = __webpack_require__(180);\n\nvar _format = __webpack_require__(50);\n\nvar windowOpen = _format.windowOpen;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\nvar SunburstView = ChartView.extend({\n  type: 'sunburst',\n  init: function () {},\n  render: function (seriesModel, ecModel, api, payload) {\n    var that = this;\n    this.seriesModel = seriesModel;\n    this.api = api;\n    this.ecModel = ecModel;\n    var data = seriesModel.getData();\n    var virtualRoot = data.tree.root;\n    var newRoot = seriesModel.getViewRoot();\n    var group = this.group;\n    var renderLabelForZeroData = seriesModel.get('renderLabelForZeroData');\n    var newChildren = [];\n    newRoot.eachNode(function (node) {\n      newChildren.push(node);\n    });\n    var oldChildren = this._oldChildren || [];\n    dualTravel(newChildren, oldChildren);\n    renderRollUp(virtualRoot, newRoot);\n\n    if (payload && payload.highlight && payload.highlight.piece) {\n      var highlightPolicy = seriesModel.getShallow('highlightPolicy');\n      payload.highlight.piece.onEmphasis(highlightPolicy);\n    } else if (payload && payload.unhighlight) {\n      var piece = this.virtualPiece;\n\n      if (!piece && virtualRoot.children.length) {\n        piece = virtualRoot.children[0].piece;\n      }\n\n      if (piece) {\n        piece.onNormal();\n      }\n    }\n\n    this._initEvents();\n\n    this._oldChildren = newChildren;\n\n    function dualTravel(newChildren, oldChildren) {\n      if (newChildren.length === 0 && oldChildren.length === 0) {\n        return;\n      }\n\n      new DataDiffer(oldChildren, newChildren, getKey, getKey).add(processNode).update(processNode).remove(zrUtil.curry(processNode, null)).execute();\n\n      function getKey(node) {\n        return node.getId();\n      }\n\n      function processNode(newId, oldId) {\n        var newNode = newId == null ? null : newChildren[newId];\n        var oldNode = oldId == null ? null : oldChildren[oldId];\n        doRenderNode(newNode, oldNode);\n      }\n    }\n\n    function doRenderNode(newNode, oldNode) {\n      if (!renderLabelForZeroData && newNode && !newNode.getValue()) {\n        // Not render data with value 0\n        newNode = null;\n      }\n\n      if (newNode !== virtualRoot && oldNode !== virtualRoot) {\n        if (oldNode && oldNode.piece) {\n          if (newNode) {\n            // Update\n            oldNode.piece.updateData(false, newNode, 'normal', seriesModel, ecModel); // For tooltip\n\n            data.setItemGraphicEl(newNode.dataIndex, oldNode.piece);\n          } else {\n            // Remove\n            removeNode(oldNode);\n          }\n        } else if (newNode) {\n          // Add\n          var piece = new SunburstPiece(newNode, seriesModel, ecModel);\n          group.add(piece); // For tooltip\n\n          data.setItemGraphicEl(newNode.dataIndex, piece);\n        }\n      }\n    }\n\n    function removeNode(node) {\n      if (!node) {\n        return;\n      }\n\n      if (node.piece) {\n        group.remove(node.piece);\n        node.piece = null;\n      }\n    }\n\n    function renderRollUp(virtualRoot, viewRoot) {\n      if (viewRoot.depth > 0) {\n        // Render\n        if (that.virtualPiece) {\n          // Update\n          that.virtualPiece.updateData(false, virtualRoot, 'normal', seriesModel, ecModel);\n        } else {\n          // Add\n          that.virtualPiece = new SunburstPiece(virtualRoot, seriesModel, ecModel);\n          group.add(that.virtualPiece);\n        }\n\n        if (viewRoot.piece._onclickEvent) {\n          viewRoot.piece.off('click', viewRoot.piece._onclickEvent);\n        }\n\n        var event = function (e) {\n          that._rootToNode(viewRoot.parentNode);\n        };\n\n        viewRoot.piece._onclickEvent = event;\n        that.virtualPiece.on('click', event);\n      } else if (that.virtualPiece) {\n        // Remove\n        group.remove(that.virtualPiece);\n        that.virtualPiece = null;\n      }\n    }\n  },\n  dispose: function () {},\n\n  /**\n   * @private\n   */\n  _initEvents: function () {\n    var that = this;\n\n    var event = function (e) {\n      var targetFound = false;\n      var viewRoot = that.seriesModel.getViewRoot();\n      viewRoot.eachNode(function (node) {\n        if (!targetFound && node.piece && node.piece.childAt(0) === e.target) {\n          var nodeClick = node.getModel().get('nodeClick');\n\n          if (nodeClick === 'rootToNode') {\n            that._rootToNode(node);\n          } else if (nodeClick === 'link') {\n            var itemModel = node.getModel();\n            var link = itemModel.get('link');\n\n            if (link) {\n              var linkTarget = itemModel.get('target', true) || '_blank';\n              windowOpen(link, linkTarget);\n            }\n          }\n\n          targetFound = true;\n        }\n      });\n    };\n\n    if (this.group._onclickEvent) {\n      this.group.off('click', this.group._onclickEvent);\n    }\n\n    this.group.on('click', event);\n    this.group._onclickEvent = event;\n  },\n\n  /**\n   * @private\n   */\n  _rootToNode: function (node) {\n    if (node !== this.seriesModel.getViewRoot()) {\n      this.api.dispatchAction({\n        type: ROOT_TO_NODE_ACTION,\n        from: this.uid,\n        seriesId: this.seriesModel.id,\n        targetNode: node\n      });\n    }\n  },\n\n  /**\n   * @implement\n   */\n  containPoint: function (point, seriesModel) {\n    var treeRoot = seriesModel.getData();\n    var itemLayout = treeRoot.getItemLayout(0);\n\n    if (itemLayout) {\n      var dx = point[0] - itemLayout.cx;\n      var dy = point[1] - itemLayout.cy;\n      var radius = Math.sqrt(dx * dx + dy * dy);\n      return radius <= itemLayout.r && radius >= itemLayout.r0;\n    }\n  }\n});\nvar _default = SunburstView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1196 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NodeHighlightPolicy = {\n  NONE: 'none',\n  // not downplay others\n  DESCENDANT: 'descendant',\n  ANCESTOR: 'ancestor',\n  SELF: 'self'\n};\nvar DEFAULT_SECTOR_Z = 2;\nvar DEFAULT_TEXT_Z = 4;\n/**\n * Sunburstce of Sunburst including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\n\nfunction SunburstPiece(node, seriesModel, ecModel) {\n  graphic.Group.call(this);\n  var sector = new graphic.Sector({\n    z2: DEFAULT_SECTOR_Z\n  });\n  sector.seriesIndex = seriesModel.seriesIndex;\n  var text = new graphic.Text({\n    z2: DEFAULT_TEXT_Z,\n    silent: node.getModel('label').get('silent')\n  });\n  this.add(sector);\n  this.add(text);\n  this.updateData(true, node, 'normal', seriesModel, ecModel); // Hover to change label and labelLine\n\n  function onEmphasis() {\n    text.ignore = text.hoverIgnore;\n  }\n\n  function onNormal() {\n    text.ignore = text.normalIgnore;\n  }\n\n  this.on('emphasis', onEmphasis).on('normal', onNormal).on('mouseover', onEmphasis).on('mouseout', onNormal);\n}\n\nvar SunburstPieceProto = SunburstPiece.prototype;\n\nSunburstPieceProto.updateData = function (firstCreate, node, state, seriesModel, ecModel) {\n  this.node = node;\n  node.piece = this;\n  seriesModel = seriesModel || this._seriesModel;\n  ecModel = ecModel || this._ecModel;\n  var sector = this.childAt(0);\n  sector.dataIndex = node.dataIndex;\n  var itemModel = node.getModel();\n  var layout = node.getLayout(); // if (!layout) {\n  //     console.log(node.getLayout());\n  // }\n\n  var sectorShape = zrUtil.extend({}, layout);\n  sectorShape.label = null;\n  var visualColor = getNodeColor(node, seriesModel, ecModel);\n  fillDefaultColor(node, seriesModel, visualColor);\n  var normalStyle = itemModel.getModel('itemStyle').getItemStyle();\n  var style;\n\n  if (state === 'normal') {\n    style = normalStyle;\n  } else {\n    var stateStyle = itemModel.getModel(state + '.itemStyle').getItemStyle();\n    style = zrUtil.merge(stateStyle, normalStyle);\n  }\n\n  style = zrUtil.defaults({\n    lineJoin: 'bevel',\n    fill: style.fill || visualColor\n  }, style);\n\n  if (firstCreate) {\n    sector.setShape(sectorShape);\n    sector.shape.r = layout.r0;\n    graphic.updateProps(sector, {\n      shape: {\n        r: layout.r\n      }\n    }, seriesModel, node.dataIndex);\n    sector.useStyle(style);\n  } else if (typeof style.fill === 'object' && style.fill.type || typeof sector.style.fill === 'object' && sector.style.fill.type) {\n    // Disable animation for gradient since no interpolation method\n    // is supported for gradient\n    graphic.updateProps(sector, {\n      shape: sectorShape\n    }, seriesModel);\n    sector.useStyle(style);\n  } else {\n    graphic.updateProps(sector, {\n      shape: sectorShape,\n      style: style\n    }, seriesModel);\n  }\n\n  this._updateLabel(seriesModel, visualColor, state);\n\n  var cursorStyle = itemModel.getShallow('cursor');\n  cursorStyle && sector.attr('cursor', cursorStyle);\n\n  if (firstCreate) {\n    var highlightPolicy = seriesModel.getShallow('highlightPolicy');\n\n    this._initEvents(sector, node, seriesModel, highlightPolicy);\n  }\n\n  this._seriesModel = seriesModel || this._seriesModel;\n  this._ecModel = ecModel || this._ecModel;\n  graphic.setHoverStyle(this);\n};\n\nSunburstPieceProto.onEmphasis = function (highlightPolicy) {\n  var that = this;\n  this.node.hostTree.root.eachNode(function (n) {\n    if (n.piece) {\n      if (that.node === n) {\n        n.piece.updateData(false, n, 'emphasis');\n      } else if (isNodeHighlighted(n, that.node, highlightPolicy)) {\n        n.piece.childAt(0).trigger('highlight');\n      } else if (highlightPolicy !== NodeHighlightPolicy.NONE) {\n        n.piece.childAt(0).trigger('downplay');\n      }\n    }\n  });\n};\n\nSunburstPieceProto.onNormal = function () {\n  this.node.hostTree.root.eachNode(function (n) {\n    if (n.piece) {\n      n.piece.updateData(false, n, 'normal');\n    }\n  });\n};\n\nSunburstPieceProto.onHighlight = function () {\n  this.updateData(false, this.node, 'highlight');\n};\n\nSunburstPieceProto.onDownplay = function () {\n  this.updateData(false, this.node, 'downplay');\n};\n\nSunburstPieceProto._updateLabel = function (seriesModel, visualColor, state) {\n  var itemModel = this.node.getModel();\n  var normalModel = itemModel.getModel('label');\n  var labelModel = state === 'normal' || state === 'emphasis' ? normalModel : itemModel.getModel(state + '.label');\n  var labelHoverModel = itemModel.getModel('emphasis.label');\n  var labelFormatter = labelModel.get('formatter'); // Use normal formatter if no state formatter is defined\n\n  var labelState = labelFormatter ? state : 'normal';\n  var text = zrUtil.retrieve(seriesModel.getFormattedLabel(this.node.dataIndex, labelState, null, null, 'label'), this.node.name);\n\n  if (getLabelAttr('show') === false) {\n    text = '';\n  }\n\n  var layout = this.node.getLayout();\n  var labelMinAngle = labelModel.get('minAngle');\n\n  if (labelMinAngle == null) {\n    labelMinAngle = normalModel.get('minAngle');\n  }\n\n  labelMinAngle = labelMinAngle / 180 * Math.PI;\n  var angle = layout.endAngle - layout.startAngle;\n\n  if (labelMinAngle != null && Math.abs(angle) < labelMinAngle) {\n    // Not displaying text when angle is too small\n    text = '';\n  }\n\n  var label = this.childAt(1);\n  graphic.setLabelStyle(label.style, label.hoverStyle || {}, normalModel, labelHoverModel, {\n    defaultText: labelModel.getShallow('show') ? text : null,\n    autoColor: visualColor,\n    useInsideStyle: true\n  });\n  var midAngle = (layout.startAngle + layout.endAngle) / 2;\n  var dx = Math.cos(midAngle);\n  var dy = Math.sin(midAngle);\n  var r;\n  var labelPosition = getLabelAttr('position');\n  var labelPadding = getLabelAttr('distance') || 0;\n  var textAlign = getLabelAttr('align');\n\n  if (labelPosition === 'outside') {\n    r = layout.r + labelPadding;\n    textAlign = midAngle > Math.PI / 2 ? 'right' : 'left';\n  } else {\n    if (!textAlign || textAlign === 'center') {\n      r = (layout.r + layout.r0) / 2;\n      textAlign = 'center';\n    } else if (textAlign === 'left') {\n      r = layout.r0 + labelPadding;\n\n      if (midAngle > Math.PI / 2) {\n        textAlign = 'right';\n      }\n    } else if (textAlign === 'right') {\n      r = layout.r - labelPadding;\n\n      if (midAngle > Math.PI / 2) {\n        textAlign = 'left';\n      }\n    }\n  }\n\n  label.attr('style', {\n    text: text,\n    textAlign: textAlign,\n    textVerticalAlign: getLabelAttr('verticalAlign') || 'middle',\n    opacity: getLabelAttr('opacity')\n  });\n  var textX = r * dx + layout.cx;\n  var textY = r * dy + layout.cy;\n  label.attr('position', [textX, textY]);\n  var rotateType = getLabelAttr('rotate');\n  var rotate = 0;\n\n  if (rotateType === 'radial') {\n    rotate = -midAngle;\n\n    if (rotate < -Math.PI / 2) {\n      rotate += Math.PI;\n    }\n  } else if (rotateType === 'tangential') {\n    rotate = Math.PI / 2 - midAngle;\n\n    if (rotate > Math.PI / 2) {\n      rotate -= Math.PI;\n    } else if (rotate < -Math.PI / 2) {\n      rotate += Math.PI;\n    }\n  } else if (typeof rotateType === 'number') {\n    rotate = rotateType * Math.PI / 180;\n  }\n\n  label.attr('rotation', rotate);\n\n  function getLabelAttr(name) {\n    var stateAttr = labelModel.get(name);\n\n    if (stateAttr == null) {\n      return normalModel.get(name);\n    } else {\n      return stateAttr;\n    }\n  }\n};\n\nSunburstPieceProto._initEvents = function (sector, node, seriesModel, highlightPolicy) {\n  sector.off('mouseover').off('mouseout').off('emphasis').off('normal');\n  var that = this;\n\n  var onEmphasis = function () {\n    that.onEmphasis(highlightPolicy);\n  };\n\n  var onNormal = function () {\n    that.onNormal();\n  };\n\n  var onDownplay = function () {\n    that.onDownplay();\n  };\n\n  var onHighlight = function () {\n    that.onHighlight();\n  };\n\n  if (seriesModel.isAnimationEnabled()) {\n    sector.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal).on('downplay', onDownplay).on('highlight', onHighlight);\n  }\n};\n\nzrUtil.inherits(SunburstPiece, graphic.Group);\nvar _default = SunburstPiece;\n/**\n * Get node color\n *\n * @param {TreeNode} node the node to get color\n * @param {module:echarts/model/Series} seriesModel series\n * @param {module:echarts/model/Global} ecModel echarts defaults\n */\n\nfunction getNodeColor(node, seriesModel, ecModel) {\n  // Color from visualMap\n  var visualColor = node.getVisual('color');\n  var visualMetaList = node.getVisual('visualMeta');\n\n  if (!visualMetaList || visualMetaList.length === 0) {\n    // Use first-generation color if has no visualMap\n    visualColor = null;\n  } // Self color or level color\n\n\n  var color = node.getModel('itemStyle').get('color');\n\n  if (color) {\n    return color;\n  } else if (visualColor) {\n    // Color mapping\n    return visualColor;\n  } else if (node.depth === 0) {\n    // Virtual root node\n    return ecModel.option.color[0];\n  } else {\n    // First-generation color\n    var length = ecModel.option.color.length;\n    color = ecModel.option.color[getRootId(node) % length];\n  }\n\n  return color;\n}\n/**\n * Get index of root in sorted order\n *\n * @param {TreeNode} node current node\n * @return {number} index in root\n */\n\n\nfunction getRootId(node) {\n  var ancestor = node;\n\n  while (ancestor.depth > 1) {\n    ancestor = ancestor.parentNode;\n  }\n\n  var virtualRoot = node.getAncestors()[0];\n  return zrUtil.indexOf(virtualRoot.children, ancestor);\n}\n\nfunction isNodeHighlighted(node, activeNode, policy) {\n  if (policy === NodeHighlightPolicy.NONE) {\n    return false;\n  } else if (policy === NodeHighlightPolicy.SELF) {\n    return node === activeNode;\n  } else if (policy === NodeHighlightPolicy.ANCESTOR) {\n    return node === activeNode || node.isAncestorOf(activeNode);\n  } else {\n    return node === activeNode || node.isDescendantOf(activeNode);\n  }\n} // Fix tooltip callback function params.color incorrect when pick a default color\n\n\nfunction fillDefaultColor(node, seriesModel, color) {\n  var data = seriesModel.getData();\n  data.setItemVisual(node.dataIndex, 'color', color);\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1197 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar helper = __webpack_require__(183);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Sunburst action\n */\nvar ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\necharts.registerAction({\n  type: ROOT_TO_NODE_ACTION,\n  update: 'updateView'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'sunburst',\n    query: payload\n  }, handleRootToNode);\n\n  function handleRootToNode(model, index) {\n    var targetInfo = helper.retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);\n\n    if (targetInfo) {\n      var originViewRoot = model.getViewRoot();\n\n      if (originViewRoot) {\n        payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown';\n      }\n\n      model.resetViewRoot(targetInfo.node);\n    }\n  }\n});\nvar HIGHLIGHT_ACTION = 'sunburstHighlight';\necharts.registerAction({\n  type: HIGHLIGHT_ACTION,\n  update: 'updateView'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'sunburst',\n    query: payload\n  }, handleHighlight);\n\n  function handleHighlight(model, index) {\n    var targetInfo = helper.retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);\n\n    if (targetInfo) {\n      payload.highlight = targetInfo.node;\n    }\n  }\n});\nvar UNHIGHLIGHT_ACTION = 'sunburstUnhighlight';\necharts.registerAction({\n  type: UNHIGHLIGHT_ACTION,\n  update: 'updateView'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'sunburst',\n    query: payload\n  }, handleUnhighlight);\n\n  function handleUnhighlight(model, index) {\n    payload.unhighlight = true;\n  }\n});\n\n/***/ }),\n/* 1198 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// var PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction _default(seriesType, ecModel, api, payload) {\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    var center = seriesModel.get('center');\n    var radius = seriesModel.get('radius');\n\n    if (!zrUtil.isArray(radius)) {\n      radius = [0, radius];\n    }\n\n    if (!zrUtil.isArray(center)) {\n      center = [center, center];\n    }\n\n    var width = api.getWidth();\n    var height = api.getHeight();\n    var size = Math.min(width, height);\n    var cx = parsePercent(center[0], width);\n    var cy = parsePercent(center[1], height);\n    var r0 = parsePercent(radius[0], size / 2);\n    var r = parsePercent(radius[1], size / 2);\n    var startAngle = -seriesModel.get('startAngle') * RADIAN;\n    var minAngle = seriesModel.get('minAngle') * RADIAN;\n    var virtualRoot = seriesModel.getData().tree.root;\n    var treeRoot = seriesModel.getViewRoot();\n    var rootDepth = treeRoot.depth;\n    var sort = seriesModel.get('sort');\n\n    if (sort != null) {\n      initChildren(treeRoot, sort);\n    }\n\n    var validDataCount = 0;\n    zrUtil.each(treeRoot.children, function (child) {\n      !isNaN(child.getValue()) && validDataCount++;\n    });\n    var sum = treeRoot.getValue(); // Sum may be 0\n\n    var unitRadian = Math.PI / (sum || validDataCount) * 2;\n    var renderRollupNode = treeRoot.depth > 0;\n    var levels = treeRoot.height - (renderRollupNode ? -1 : 1);\n    var rPerLevel = (r - r0) / (levels || 1);\n    var clockwise = seriesModel.get('clockwise');\n    var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // In the case some sector angle is smaller than minAngle\n    // var restAngle = PI2;\n    // var valueSumLargerThanMinAngle = 0;\n\n    var dir = clockwise ? 1 : -1;\n    /**\n     * Render a tree\n     * @return increased angle\n     */\n\n    var renderNode = function (node, startAngle) {\n      if (!node) {\n        return;\n      }\n\n      var endAngle = startAngle; // Render self\n\n      if (node !== virtualRoot) {\n        // Tree node is virtual, so it doesn't need to be drawn\n        var value = node.getValue();\n        var angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n\n        if (angle < minAngle) {\n          angle = minAngle; // restAngle -= minAngle;\n        } // else {\n        //     valueSumLargerThanMinAngle += value;\n        // }\n\n\n        endAngle = startAngle + dir * angle;\n        var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1);\n        var rStart = r0 + rPerLevel * depth;\n        var rEnd = r0 + rPerLevel * (depth + 1);\n        var itemModel = node.getModel();\n\n        if (itemModel.get('r0') != null) {\n          rStart = parsePercent(itemModel.get('r0'), size / 2);\n        }\n\n        if (itemModel.get('r') != null) {\n          rEnd = parsePercent(itemModel.get('r'), size / 2);\n        }\n\n        node.setLayout({\n          angle: angle,\n          startAngle: startAngle,\n          endAngle: endAngle,\n          clockwise: clockwise,\n          cx: cx,\n          cy: cy,\n          r0: rStart,\n          r: rEnd\n        });\n      } // Render children\n\n\n      if (node.children && node.children.length) {\n        // currentAngle = startAngle;\n        var siblingAngle = 0;\n        zrUtil.each(node.children, function (node) {\n          siblingAngle += renderNode(node, startAngle + siblingAngle);\n        });\n      }\n\n      return endAngle - startAngle;\n    }; // Virtual root node for roll up\n\n\n    if (renderRollupNode) {\n      var rStart = r0;\n      var rEnd = r0 + rPerLevel;\n      var angle = Math.PI * 2;\n      virtualRoot.setLayout({\n        angle: angle,\n        startAngle: startAngle,\n        endAngle: startAngle + angle,\n        clockwise: clockwise,\n        cx: cx,\n        cy: cy,\n        r0: rStart,\n        r: rEnd\n      });\n    }\n\n    renderNode(treeRoot, startAngle);\n  });\n}\n/**\n * Init node children by order and update visual\n *\n * @param {TreeNode} node  root node\n * @param {boolean}  isAsc if is in ascendant order\n */\n\n\nfunction initChildren(node, isAsc) {\n  var children = node.children || [];\n  node.children = sort(children, isAsc); // Init children recursively\n\n  if (children.length) {\n    zrUtil.each(node.children, function (child) {\n      initChildren(child, isAsc);\n    });\n  }\n}\n/**\n * Sort children nodes\n *\n * @param {TreeNode[]}               children children of node to be sorted\n * @param {string | function | null} sort sort method\n *                                   See SunburstSeries.js for details.\n */\n\n\nfunction sort(children, sortOrder) {\n  if (typeof sortOrder === 'function') {\n    return children.sort(sortOrder);\n  } else {\n    var isAsc = sortOrder === 'asc';\n    return children.sort(function (a, b) {\n      var diff = (a.getValue() - b.getValue()) * (isAsc ? 1 : -1);\n      return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc ? -1 : 1) : diff;\n    });\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1199 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphicUtil = __webpack_require__(23);\n\nvar _labelHelper = __webpack_require__(410);\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\nvar createListFromArray = __webpack_require__(145);\n\nvar _barGrid = __webpack_require__(331);\n\nvar getLayoutOnAxis = _barGrid.getLayoutOnAxis;\n\nvar DataDiffer = __webpack_require__(180);\n\nvar SeriesModel = __webpack_require__(75);\n\nvar Model = __webpack_require__(67);\n\nvar ChartView = __webpack_require__(131);\n\nvar _createClipPathFromCoordSys = __webpack_require__(261);\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar prepareCartesian2d = __webpack_require__(1200);\n\nvar prepareGeo = __webpack_require__(1201);\n\nvar prepareSingleAxis = __webpack_require__(1202);\n\nvar preparePolar = __webpack_require__(1203);\n\nvar prepareCalendar = __webpack_require__(1204);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CACHED_LABEL_STYLE_PROPERTIES = graphicUtil.CACHED_LABEL_STYLE_PROPERTIES;\nvar ITEM_STYLE_NORMAL_PATH = ['itemStyle'];\nvar ITEM_STYLE_EMPHASIS_PATH = ['emphasis', 'itemStyle'];\nvar LABEL_NORMAL = ['label'];\nvar LABEL_EMPHASIS = ['emphasis', 'label']; // Use prefix to avoid index to be the same as el.name,\n// which will cause weird udpate animation.\n\nvar GROUP_DIFF_PREFIX = 'e\\0\\0';\n/**\n * To reduce total package size of each coordinate systems, the modules `prepareCustom`\n * of each coordinate systems are not required by each coordinate systems directly, but\n * required by the module `custom`.\n *\n * prepareInfoForCustomSeries {Function}: optional\n *     @return {Object} {coordSys: {...}, api: {\n *         coord: function (data, clamp) {}, // return point in global.\n *         size: function (dataSize, dataItem) {} // return size of each axis in coordSys.\n *     }}\n */\n\nvar prepareCustoms = {\n  cartesian2d: prepareCartesian2d,\n  geo: prepareGeo,\n  singleAxis: prepareSingleAxis,\n  polar: preparePolar,\n  calendar: prepareCalendar\n}; // ------\n// Model\n// ------\n\nSeriesModel.extend({\n  type: 'series.custom',\n  dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n  defaultOption: {\n    coordinateSystem: 'cartesian2d',\n    // Can be set as 'none'\n    zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    useTransform: true,\n    // Custom series will not clip by default.\n    // Some case will use custom series to draw label\n    // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight\n    // Only works on polar and cartesian2d coordinate system.\n    clip: false // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Polar coordinate system\n    // polarIndex: 0,\n    // Geo coordinate system\n    // geoIndex: 0,\n    // label: {}\n    // itemStyle: {}\n\n  },\n\n  /**\n   * @override\n   */\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this);\n  },\n\n  /**\n   * @override\n   */\n  getDataParams: function (dataIndex, dataType, el) {\n    var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n    el && (params.info = el.info);\n    return params;\n  }\n}); // -----\n// View\n// -----\n\nChartView.extend({\n  type: 'custom',\n\n  /**\n   * @private\n   * @type {module:echarts/data/List}\n   */\n  _data: null,\n\n  /**\n   * @override\n   */\n  render: function (customSeries, ecModel, api, payload) {\n    var oldData = this._data;\n    var data = customSeries.getData();\n    var group = this.group;\n    var renderItem = makeRenderItem(customSeries, data, ecModel, api); // By default, merge mode is applied. In most cases, custom series is\n    // used in the scenario that data amount is not large but graphic elements\n    // is complicated, where merge mode is probably necessary for optimization.\n    // For example, reuse graphic elements and only update the transform when\n    // roam or data zoom according to `actionType`.\n\n    data.diff(oldData).add(function (newIdx) {\n      createOrUpdate(null, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n    }).update(function (newIdx, oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx);\n      createOrUpdate(el, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n    }).remove(function (oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx);\n      el && group.remove(el);\n    }).execute(); // Do clipping\n\n    var clipPath = customSeries.get('clip', true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null;\n\n    if (clipPath) {\n      group.setClipPath(clipPath);\n    } else {\n      group.removeClipPath();\n    }\n\n    this._data = data;\n  },\n  incrementalPrepareRender: function (customSeries, ecModel, api) {\n    this.group.removeAll();\n    this._data = null;\n  },\n  incrementalRender: function (params, customSeries, ecModel, api, payload) {\n    var data = customSeries.getData();\n    var renderItem = makeRenderItem(customSeries, data, ecModel, api);\n\n    function setIncrementalAndHoverLayer(el) {\n      if (!el.isGroup) {\n        el.incremental = true;\n        el.useHoverLayer = true;\n      }\n    }\n\n    for (var idx = params.start; idx < params.end; idx++) {\n      var el = createOrUpdate(null, idx, renderItem(idx, payload), customSeries, this.group, data);\n      el.traverse(setIncrementalAndHoverLayer);\n    }\n  },\n\n  /**\n   * @override\n   */\n  dispose: zrUtil.noop,\n\n  /**\n   * @override\n   */\n  filterForExposedEvent: function (eventType, query, targetEl, packedEvent) {\n    var elementName = query.element;\n\n    if (elementName == null || targetEl.name === elementName) {\n      return true;\n    } // Enable to give a name on a group made by `renderItem`, and listen\n    // events that triggerd by its descendents.\n\n\n    while ((targetEl = targetEl.parent) && targetEl !== this.group) {\n      if (targetEl.name === elementName) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n});\n\nfunction createEl(elOption) {\n  var graphicType = elOption.type;\n  var el; // Those graphic elements are not shapes. They should not be\n  // overwritten by users, so do them first.\n\n  if (graphicType === 'path') {\n    var shape = elOption.shape; // Using pathRect brings convenience to users sacle svg path.\n\n    var pathRect = shape.width != null && shape.height != null ? {\n      x: shape.x || 0,\n      y: shape.y || 0,\n      width: shape.width,\n      height: shape.height\n    } : null;\n    var pathData = getPathData(shape); // Path is also used for icon, so layout 'center' by default.\n\n    el = graphicUtil.makePath(pathData, null, pathRect, shape.layout || 'center');\n    el.__customPathData = pathData;\n  } else if (graphicType === 'image') {\n    el = new graphicUtil.Image({});\n    el.__customImagePath = elOption.style.image;\n  } else if (graphicType === 'text') {\n    el = new graphicUtil.Text({});\n    el.__customText = elOption.style.text;\n  } else if (graphicType === 'group') {\n    el = new graphicUtil.Group();\n  } else if (graphicType === 'compoundPath') {\n    throw new Error('\"compoundPath\" is not supported yet.');\n  } else {\n    var Clz = graphicUtil.getShapeClass(graphicType);\n    el = new Clz();\n  }\n\n  el.__customGraphicType = graphicType;\n  el.name = elOption.name;\n  return el;\n}\n\nfunction updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot) {\n  var transitionProps = {};\n  var elOptionStyle = elOption.style || {};\n  elOption.shape && (transitionProps.shape = zrUtil.clone(elOption.shape));\n  elOption.position && (transitionProps.position = elOption.position.slice());\n  elOption.scale && (transitionProps.scale = elOption.scale.slice());\n  elOption.origin && (transitionProps.origin = elOption.origin.slice());\n  elOption.rotation && (transitionProps.rotation = elOption.rotation);\n\n  if (el.type === 'image' && elOption.style) {\n    var targetStyle = transitionProps.style = {};\n    zrUtil.each(['x', 'y', 'width', 'height'], function (prop) {\n      prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n    });\n  }\n\n  if (el.type === 'text' && elOption.style) {\n    var targetStyle = transitionProps.style = {};\n    zrUtil.each(['x', 'y'], function (prop) {\n      prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n    }); // Compatible with previous: both support\n    // textFill and fill, textStroke and stroke in 'text' element.\n\n    !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n    !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n  }\n\n  if (el.type !== 'group') {\n    el.useStyle(elOptionStyle); // Init animation.\n\n    if (isInit) {\n      el.style.opacity = 0;\n      var targetOpacity = elOptionStyle.opacity;\n      targetOpacity == null && (targetOpacity = 1);\n      graphicUtil.initProps(el, {\n        style: {\n          opacity: targetOpacity\n        }\n      }, animatableModel, dataIndex);\n    }\n  }\n\n  if (isInit) {\n    el.attr(transitionProps);\n  } else {\n    graphicUtil.updateProps(el, transitionProps, animatableModel, dataIndex);\n  } // Merge by default.\n  // z2 must not be null/undefined, otherwise sort error may occur.\n\n\n  elOption.hasOwnProperty('z2') && el.attr('z2', elOption.z2 || 0);\n  elOption.hasOwnProperty('silent') && el.attr('silent', elOption.silent);\n  elOption.hasOwnProperty('invisible') && el.attr('invisible', elOption.invisible);\n  elOption.hasOwnProperty('ignore') && el.attr('ignore', elOption.ignore); // `elOption.info` enables user to mount some info on\n  // elements and use them in event handlers.\n  // Update them only when user specified, otherwise, remain.\n\n  elOption.hasOwnProperty('info') && el.attr('info', elOption.info); // If `elOption.styleEmphasis` is `false`, remove hover style. The\n  // logic is ensured by `graphicUtil.setElementHoverStyle`.\n\n  var styleEmphasis = elOption.styleEmphasis; // hoverStyle should always be set here, because if the hover style\n  // may already be changed, where the inner cache should be reset.\n\n  graphicUtil.setElementHoverStyle(el, styleEmphasis);\n\n  if (isRoot) {\n    graphicUtil.setAsHighDownDispatcher(el, styleEmphasis !== false);\n  }\n}\n\nfunction prepareStyleTransition(prop, targetStyle, elOptionStyle, oldElStyle, isInit) {\n  if (elOptionStyle[prop] != null && !isInit) {\n    targetStyle[prop] = elOptionStyle[prop];\n    elOptionStyle[prop] = oldElStyle[prop];\n  }\n}\n\nfunction makeRenderItem(customSeries, data, ecModel, api) {\n  var renderItem = customSeries.get('renderItem');\n  var coordSys = customSeries.coordinateSystem;\n  var prepareResult = {};\n\n  if (coordSys) {\n    prepareResult = coordSys.prepareCustoms ? coordSys.prepareCustoms() : prepareCustoms[coordSys.type](coordSys);\n  }\n\n  var userAPI = zrUtil.defaults({\n    getWidth: api.getWidth,\n    getHeight: api.getHeight,\n    getZr: api.getZr,\n    getDevicePixelRatio: api.getDevicePixelRatio,\n    value: value,\n    style: style,\n    styleEmphasis: styleEmphasis,\n    visual: visual,\n    barLayout: barLayout,\n    currentSeriesIndices: currentSeriesIndices,\n    font: font\n  }, prepareResult.api || {});\n  var userParams = {\n    // The life cycle of context: current round of rendering.\n    // The global life cycle is probably not necessary, because\n    // user can store global status by themselves.\n    context: {},\n    seriesId: customSeries.id,\n    seriesName: customSeries.name,\n    seriesIndex: customSeries.seriesIndex,\n    coordSys: prepareResult.coordSys,\n    dataInsideLength: data.count(),\n    encode: wrapEncodeDef(customSeries.getData())\n  }; // Do not support call `api` asynchronously without dataIndexInside input.\n\n  var currDataIndexInside;\n  var currDirty = true;\n  var currItemModel;\n  var currLabelNormalModel;\n  var currLabelEmphasisModel;\n  var currVisualColor;\n  return function (dataIndexInside, payload) {\n    currDataIndexInside = dataIndexInside;\n    currDirty = true;\n    return renderItem && renderItem(zrUtil.defaults({\n      dataIndexInside: dataIndexInside,\n      dataIndex: data.getRawIndex(dataIndexInside),\n      // Can be used for optimization when zoom or roam.\n      actionType: payload ? payload.type : null\n    }, userParams), userAPI);\n  }; // Do not update cache until api called.\n\n  function updateCache(dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n\n    if (currDirty) {\n      currItemModel = data.getItemModel(dataIndexInside);\n      currLabelNormalModel = currItemModel.getModel(LABEL_NORMAL);\n      currLabelEmphasisModel = currItemModel.getModel(LABEL_EMPHASIS);\n      currVisualColor = data.getItemVisual(dataIndexInside, 'color');\n      currDirty = false;\n    }\n  }\n  /**\n   * @public\n   * @param {number|string} dim\n   * @param {number} [dataIndexInside=currDataIndexInside]\n   * @return {number|string} value\n   */\n\n\n  function value(dim, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    return data.get(data.getDimension(dim || 0), dataIndexInside);\n  }\n  /**\n   * By default, `visual` is applied to style (to support visualMap).\n   * `visual.color` is applied at `fill`. If user want apply visual.color on `stroke`,\n   * it can be implemented as:\n   * `api.style({stroke: api.visual('color'), fill: null})`;\n   * @public\n   * @param {Object} [extra]\n   * @param {number} [dataIndexInside=currDataIndexInside]\n   */\n\n\n  function style(extra, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    updateCache(dataIndexInside);\n    var itemStyle = currItemModel.getModel(ITEM_STYLE_NORMAL_PATH).getItemStyle();\n    currVisualColor != null && (itemStyle.fill = currVisualColor);\n    var opacity = data.getItemVisual(dataIndexInside, 'opacity');\n    opacity != null && (itemStyle.opacity = opacity);\n    var labelModel = extra ? applyExtraBefore(extra, currLabelNormalModel) : currLabelNormalModel;\n    graphicUtil.setTextStyle(itemStyle, labelModel, null, {\n      autoColor: currVisualColor,\n      isRectText: true\n    });\n    itemStyle.text = labelModel.getShallow('show') ? zrUtil.retrieve2(customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n    extra && applyExtraAfter(itemStyle, extra);\n    return itemStyle;\n  }\n  /**\n   * @public\n   * @param {Object} [extra]\n   * @param {number} [dataIndexInside=currDataIndexInside]\n   */\n\n\n  function styleEmphasis(extra, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    updateCache(dataIndexInside);\n    var itemStyle = currItemModel.getModel(ITEM_STYLE_EMPHASIS_PATH).getItemStyle();\n    var labelModel = extra ? applyExtraBefore(extra, currLabelEmphasisModel) : currLabelEmphasisModel;\n    graphicUtil.setTextStyle(itemStyle, labelModel, null, {\n      isRectText: true\n    }, true);\n    itemStyle.text = labelModel.getShallow('show') ? zrUtil.retrieve3(customSeries.getFormattedLabel(dataIndexInside, 'emphasis'), customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n    extra && applyExtraAfter(itemStyle, extra);\n    return itemStyle;\n  }\n  /**\n   * @public\n   * @param {string} visualType\n   * @param {number} [dataIndexInside=currDataIndexInside]\n   */\n\n\n  function visual(visualType, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    return data.getItemVisual(dataIndexInside, visualType);\n  }\n  /**\n   * @public\n   * @param {number} opt.count Positive interger.\n   * @param {number} [opt.barWidth]\n   * @param {number} [opt.barMaxWidth]\n   * @param {number} [opt.barMinWidth]\n   * @param {number} [opt.barGap]\n   * @param {number} [opt.barCategoryGap]\n   * @return {Object} {width, offset, offsetCenter} is not support, return undefined.\n   */\n\n\n  function barLayout(opt) {\n    if (coordSys.getBaseAxis) {\n      var baseAxis = coordSys.getBaseAxis();\n      return getLayoutOnAxis(zrUtil.defaults({\n        axis: baseAxis\n      }, opt), api);\n    }\n  }\n  /**\n   * @public\n   * @return {Array.<number>}\n   */\n\n\n  function currentSeriesIndices() {\n    return ecModel.getCurrentSeriesIndices();\n  }\n  /**\n   * @public\n   * @param {Object} opt\n   * @param {string} [opt.fontStyle]\n   * @param {number} [opt.fontWeight]\n   * @param {number} [opt.fontSize]\n   * @param {string} [opt.fontFamily]\n   * @return {string} font string\n   */\n\n\n  function font(opt) {\n    return graphicUtil.getFont(opt, ecModel);\n  }\n}\n\nfunction wrapEncodeDef(data) {\n  var encodeDef = {};\n  zrUtil.each(data.dimensions, function (dimName, dataDimIndex) {\n    var dimInfo = data.getDimensionInfo(dimName);\n\n    if (!dimInfo.isExtraCoord) {\n      var coordDim = dimInfo.coordDim;\n      var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];\n      dataDims[dimInfo.coordDimIndex] = dataDimIndex;\n    }\n  });\n  return encodeDef;\n}\n\nfunction createOrUpdate(el, dataIndex, elOption, animatableModel, group, data) {\n  el = doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data, true);\n  el && data.setItemGraphicEl(dataIndex, el);\n  return el;\n}\n\nfunction doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data, isRoot) {\n  // [Rule]\n  // By default, follow merge mode.\n  //     (It probably brings benifit for performance in some cases of large data, where\n  //     user program can be optimized to that only updated props needed to be re-calculated,\n  //     or according to `actionType` some calculation can be skipped.)\n  // If `renderItem` returns `null`/`undefined`/`false`, remove the previous el if existing.\n  //     (It seems that violate the \"merge\" principle, but most of users probably intuitively\n  //     regard \"return;\" as \"show nothing element whatever\", so make a exception to meet the\n  //     most cases.)\n  var simplyRemove = !elOption; // `null`/`undefined`/`false`\n\n  elOption = elOption || {};\n  var elOptionType = elOption.type;\n  var elOptionShape = elOption.shape;\n  var elOptionStyle = elOption.style;\n\n  if (el && (simplyRemove // || elOption.$merge === false\n  // If `elOptionType` is `null`, follow the merge principle.\n  || elOptionType != null && elOptionType !== el.__customGraphicType || elOptionType === 'path' && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== el.__customPathData || elOptionType === 'image' && hasOwn(elOptionStyle, 'image') && elOptionStyle.image !== el.__customImagePath // FIXME test and remove this restriction?\n  || elOptionType === 'text' && hasOwn(elOptionShape, 'text') && elOptionStyle.text !== el.__customText)) {\n    group.remove(el);\n    el = null;\n  } // `elOption.type` is undefined when `renderItem` returns nothing.\n\n\n  if (simplyRemove) {\n    return;\n  }\n\n  var isInit = !el;\n  !el && (el = createEl(elOption));\n  updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot);\n\n  if (elOptionType === 'group') {\n    mergeChildren(el, dataIndex, elOption, animatableModel, data);\n  } // Always add whatever already added to ensure sequence.\n\n\n  group.add(el);\n  return el;\n} // Usage:\n// (1) By default, `elOption.$mergeChildren` is `'byIndex'`, which indicates that\n//     the existing children will not be removed, and enables the feature that\n//     update some of the props of some of the children simply by construct\n//     the returned children of `renderItem` like:\n//     `var children = group.children = []; children[3] = {opacity: 0.5};`\n// (2) If `elOption.$mergeChildren` is `'byName'`, add/update/remove children\n//     by child.name. But that might be lower performance.\n// (3) If `elOption.$mergeChildren` is `false`, the existing children will be\n//     replaced totally.\n// (4) If `!elOption.children`, following the \"merge\" principle, nothing will happen.\n//\n// For implementation simpleness, do not provide a direct way to remove sinlge\n// child (otherwise the total indicies of the children array have to be modified).\n// User can remove a single child by set its `ignore` as `true` or replace\n// it by another element, where its `$merge` can be set as `true` if necessary.\n\n\nfunction mergeChildren(el, dataIndex, elOption, animatableModel, data) {\n  var newChildren = elOption.children;\n  var newLen = newChildren ? newChildren.length : 0;\n  var mergeChildren = elOption.$mergeChildren; // `diffChildrenByName` has been deprecated.\n\n  var byName = mergeChildren === 'byName' || elOption.diffChildrenByName;\n  var notMerge = mergeChildren === false; // For better performance on roam update, only enter if necessary.\n\n  if (!newLen && !byName && !notMerge) {\n    return;\n  }\n\n  if (byName) {\n    diffGroupChildren({\n      oldChildren: el.children() || [],\n      newChildren: newChildren || [],\n      dataIndex: dataIndex,\n      animatableModel: animatableModel,\n      group: el,\n      data: data\n    });\n    return;\n  }\n\n  notMerge && el.removeAll(); // Mapping children of a group simply by index, which\n  // might be better performance.\n\n  var index = 0;\n\n  for (; index < newLen; index++) {\n    newChildren[index] && doCreateOrUpdate(el.childAt(index), dataIndex, newChildren[index], animatableModel, el, data);\n  }\n}\n\nfunction diffGroupChildren(context) {\n  new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute();\n}\n\nfunction getKey(item, idx) {\n  var name = item && item.name;\n  return name != null ? name : GROUP_DIFF_PREFIX + idx;\n}\n\nfunction processAddUpdate(newIndex, oldIndex) {\n  var context = this.context;\n  var childOption = newIndex != null ? context.newChildren[newIndex] : null;\n  var child = oldIndex != null ? context.oldChildren[oldIndex] : null;\n  doCreateOrUpdate(child, context.dataIndex, childOption, context.animatableModel, context.group, context.data);\n} // `graphic#applyDefaultTextStyle` will cache\n// textFill, textStroke, textStrokeWidth.\n// We have to do this trick.\n\n\nfunction applyExtraBefore(extra, model) {\n  var dummyModel = new Model({}, model);\n  zrUtil.each(CACHED_LABEL_STYLE_PROPERTIES, function (stylePropName, modelPropName) {\n    if (extra.hasOwnProperty(stylePropName)) {\n      dummyModel.option[modelPropName] = extra[stylePropName];\n    }\n  });\n  return dummyModel;\n}\n\nfunction applyExtraAfter(itemStyle, extra) {\n  for (var key in extra) {\n    if (extra.hasOwnProperty(key) || !CACHED_LABEL_STYLE_PROPERTIES.hasOwnProperty(key)) {\n      itemStyle[key] = extra[key];\n    }\n  }\n}\n\nfunction processRemove(oldIndex) {\n  var context = this.context;\n  var child = context.oldChildren[oldIndex];\n  child && context.group.remove(child);\n}\n\nfunction getPathData(shape) {\n  // \"d\" follows the SVG convention.\n  return shape && (shape.pathData || shape.d);\n}\n\nfunction hasOwnPathData(shape) {\n  return shape && (shape.hasOwnProperty('pathData') || shape.hasOwnProperty('d'));\n}\n\nfunction hasOwn(host, prop) {\n  return host && host.hasOwnProperty(prop);\n}\n\n/***/ }),\n/* 1200 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction dataToCoordSize(dataSize, dataItem) {\n  // dataItem is necessary in log axis.\n  dataItem = dataItem || [0, 0];\n  return zrUtil.map(['x', 'y'], function (dim, dimIdx) {\n    var axis = this.getAxis(dim);\n    var val = dataItem[dimIdx];\n    var halfSize = dataSize[dimIdx] / 2;\n    return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n  }, this);\n}\n\nfunction _default(coordSys) {\n  var rect = coordSys.grid.getRect();\n  return {\n    coordSys: {\n      // The name exposed to user is always 'cartesian2d' but not 'grid'.\n      type: 'cartesian2d',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    },\n    api: {\n      coord: function (data) {\n        // do not provide \"out\" param\n        return coordSys.dataToPoint(data);\n      },\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction dataToCoordSize(dataSize, dataItem) {\n  dataItem = dataItem || [0, 0];\n  return zrUtil.map([0, 1], function (dimIdx) {\n    var val = dataItem[dimIdx];\n    var halfSize = dataSize[dimIdx] / 2;\n    var p1 = [];\n    var p2 = [];\n    p1[dimIdx] = val - halfSize;\n    p2[dimIdx] = val + halfSize;\n    p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];\n    return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);\n  }, this);\n}\n\nfunction _default(coordSys) {\n  var rect = coordSys.getBoundingRect();\n  return {\n    coordSys: {\n      type: 'geo',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height,\n      zoom: coordSys.getZoom()\n    },\n    api: {\n      coord: function (data) {\n        // do not provide \"out\" and noRoam param,\n        // Compatible with this usage:\n        // echarts.util.map(item.points, api.coord)\n        return coordSys.dataToPoint(data);\n      },\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1202 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction dataToCoordSize(dataSize, dataItem) {\n  // dataItem is necessary in log axis.\n  var axis = this.getAxis();\n  var val = dataItem instanceof Array ? dataItem[0] : dataItem;\n  var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;\n  return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n}\n\nfunction _default(coordSys) {\n  var rect = coordSys.getRect();\n  return {\n    coordSys: {\n      type: 'singleAxis',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    },\n    api: {\n      coord: function (val) {\n        // do not provide \"out\" param\n        return coordSys.dataToPoint(val);\n      },\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1203 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction dataToCoordSize(dataSize, dataItem) {\n  // dataItem is necessary in log axis.\n  return zrUtil.map(['Radius', 'Angle'], function (dim, dimIdx) {\n    var axis = this['get' + dim + 'Axis']();\n    var val = dataItem[dimIdx];\n    var halfSize = dataSize[dimIdx] / 2;\n    var method = 'dataTo' + dim;\n    var result = axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis[method](val - halfSize) - axis[method](val + halfSize));\n\n    if (dim === 'Angle') {\n      result = result * Math.PI / 180;\n    }\n\n    return result;\n  }, this);\n}\n\nfunction _default(coordSys) {\n  var radiusAxis = coordSys.getRadiusAxis();\n  var angleAxis = coordSys.getAngleAxis();\n  var radius = radiusAxis.getExtent();\n  radius[0] > radius[1] && radius.reverse();\n  return {\n    coordSys: {\n      type: 'polar',\n      cx: coordSys.cx,\n      cy: coordSys.cy,\n      r: radius[1],\n      r0: radius[0]\n    },\n    api: {\n      coord: zrUtil.bind(function (data) {\n        var radius = radiusAxis.dataToRadius(data[0]);\n        var angle = angleAxis.dataToAngle(data[1]);\n        var coord = coordSys.coordToPoint([radius, angle]);\n        coord.push(radius, angle * Math.PI / 180);\n        return coord;\n      }),\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1204 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(coordSys) {\n  var rect = coordSys.getRect();\n  var rangeInfo = coordSys.getRangeInfo();\n  return {\n    coordSys: {\n      type: 'calendar',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height,\n      cellWidth: coordSys.getCellWidth(),\n      cellHeight: coordSys.getCellHeight(),\n      rangeInfo: {\n        start: rangeInfo.start,\n        end: rangeInfo.end,\n        weeks: rangeInfo.weeks,\n        dayCount: rangeInfo.allDay\n      }\n    },\n    api: {\n      coord: function (data, clamp) {\n        return coordSys.dataToPoint(data, clamp);\n      }\n    }\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1205 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(263);\n\n__webpack_require__(610);\n\n__webpack_require__(267);\n\n/***/ }),\n/* 1206 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar barPolar = __webpack_require__(1207);\n\n__webpack_require__(423);\n\n__webpack_require__(1213);\n\n__webpack_require__(1215);\n\n__webpack_require__(267);\n\n__webpack_require__(1217);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// For reducing size of echarts.min, barLayoutPolar is required by polar.\necharts.registerLayout(zrUtil.curry(barPolar, 'bar')); // Polar view\n\necharts.extendComponentView({\n  type: 'polar'\n});\n\n/***/ }),\n/* 1207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\nvar _dataStackHelper = __webpack_require__(132);\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getSeriesStackId(seriesModel) {\n  return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(polar, axis) {\n  return axis.dim + polar.model.componentIndex;\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction barLayoutPolar(seriesType, ecModel, api) {\n  var lastStackCoords = {};\n  var barWidthAndOffset = calRadialBar(zrUtil.filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\n    return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'polar';\n  }));\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    // Check series coordinate, do layout for polar only\n    if (seriesModel.coordinateSystem.type !== 'polar') {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var polar = seriesModel.coordinateSystem;\n    var baseAxis = polar.getBaseAxis();\n    var axisKey = getAxisKey(polar, baseAxis);\n    var stackId = getSeriesStackId(seriesModel);\n    var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];\n    var columnOffset = columnLayoutInfo.offset;\n    var columnWidth = columnLayoutInfo.width;\n    var valueAxis = polar.getOtherAxis(baseAxis);\n    var cx = seriesModel.coordinateSystem.cx;\n    var cy = seriesModel.coordinateSystem.cy;\n    var barMinHeight = seriesModel.get('barMinHeight') || 0;\n    var barMinAngle = seriesModel.get('barMinAngle') || 0;\n    lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n    var valueDim = data.mapDimension(valueAxis.dim);\n    var baseDim = data.mapDimension(baseAxis.dim);\n    var stacked = isDimensionStacked(data, valueDim\n    /*, baseDim*/\n    );\n    var clampLayout = baseAxis.dim !== 'radius' || !seriesModel.get('roundCap', true);\n    var valueAxisStart = valueAxis.dim === 'radius' ? valueAxis.dataToRadius(0) : valueAxis.dataToAngle(0);\n\n    for (var idx = 0, len = data.count(); idx < len; idx++) {\n      var value = data.get(valueDim, idx);\n      var baseValue = data.get(baseDim, idx);\n      var sign = value >= 0 ? 'p' : 'n';\n      var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n      // stackResultDimension directly.\n      // Only ordinal axis can be stacked.\n\n      if (stacked) {\n        if (!lastStackCoords[stackId][baseValue]) {\n          lastStackCoords[stackId][baseValue] = {\n            p: valueAxisStart,\n            // Positive stack\n            n: valueAxisStart // Negative stack\n\n          };\n        } // Should also consider #4243\n\n\n        baseCoord = lastStackCoords[stackId][baseValue][sign];\n      }\n\n      var r0;\n      var r;\n      var startAngle;\n      var endAngle; // radial sector\n\n      if (valueAxis.dim === 'radius') {\n        var radiusSpan = valueAxis.dataToRadius(value) - valueAxisStart;\n        var angle = baseAxis.dataToAngle(baseValue);\n\n        if (Math.abs(radiusSpan) < barMinHeight) {\n          radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;\n        }\n\n        r0 = baseCoord;\n        r = baseCoord + radiusSpan;\n        startAngle = angle - columnOffset;\n        endAngle = startAngle - columnWidth;\n        stacked && (lastStackCoords[stackId][baseValue][sign] = r);\n      } // tangential sector\n      else {\n          var angleSpan = valueAxis.dataToAngle(value, clampLayout) - valueAxisStart;\n          var radius = baseAxis.dataToRadius(baseValue);\n\n          if (Math.abs(angleSpan) < barMinAngle) {\n            angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;\n          }\n\n          r0 = radius + columnOffset;\n          r = r0 + columnWidth;\n          startAngle = baseCoord;\n          endAngle = baseCoord + angleSpan; // if the previous stack is at the end of the ring,\n          // add a round to differentiate it from origin\n          // var extent = angleAxis.getExtent();\n          // var stackCoord = angle;\n          // if (stackCoord === extent[0] && value > 0) {\n          //     stackCoord = extent[1];\n          // }\n          // else if (stackCoord === extent[1] && value < 0) {\n          //     stackCoord = extent[0];\n          // }\n\n          stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);\n        }\n\n      data.setItemLayout(idx, {\n        cx: cx,\n        cy: cy,\n        r0: r0,\n        r: r,\n        // Consider that positive angle is anti-clockwise,\n        // while positive radian of sector is clockwise\n        startAngle: -startAngle * Math.PI / 180,\n        endAngle: -endAngle * Math.PI / 180\n      });\n    }\n  }, this);\n}\n/**\n * Calculate bar width and offset for radial bar charts\n */\n\n\nfunction calRadialBar(barSeries, api) {\n  // Columns info on each category axis. Key is polar name\n  var columnsMap = {};\n  zrUtil.each(barSeries, function (seriesModel, idx) {\n    var data = seriesModel.getData();\n    var polar = seriesModel.coordinateSystem;\n    var baseAxis = polar.getBaseAxis();\n    var axisKey = getAxisKey(polar, baseAxis);\n    var axisExtent = baseAxis.getExtent();\n    var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n    var columnsOnAxis = columnsMap[axisKey] || {\n      bandWidth: bandWidth,\n      remainedWidth: bandWidth,\n      autoWidthCount: 0,\n      categoryGap: '20%',\n      gap: '30%',\n      stacks: {}\n    };\n    var stacks = columnsOnAxis.stacks;\n    columnsMap[axisKey] = columnsOnAxis;\n    var stackId = getSeriesStackId(seriesModel);\n\n    if (!stacks[stackId]) {\n      columnsOnAxis.autoWidthCount++;\n    }\n\n    stacks[stackId] = stacks[stackId] || {\n      width: 0,\n      maxWidth: 0\n    };\n    var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n    var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n    var barGap = seriesModel.get('barGap');\n    var barCategoryGap = seriesModel.get('barCategoryGap');\n\n    if (barWidth && !stacks[stackId].width) {\n      barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n      stacks[stackId].width = barWidth;\n      columnsOnAxis.remainedWidth -= barWidth;\n    }\n\n    barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n    barGap != null && (columnsOnAxis.gap = barGap);\n    barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n  });\n  var result = {};\n  zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n    result[coordSysName] = {};\n    var stacks = columnsOnAxis.stacks;\n    var bandWidth = columnsOnAxis.bandWidth;\n    var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n    var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n    var remainedWidth = columnsOnAxis.remainedWidth;\n    var autoWidthCount = columnsOnAxis.autoWidthCount;\n    var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n    zrUtil.each(stacks, function (column, stack) {\n      var maxWidth = column.maxWidth;\n\n      if (maxWidth && maxWidth < autoWidth) {\n        maxWidth = Math.min(maxWidth, remainedWidth);\n\n        if (column.width) {\n          maxWidth = Math.min(maxWidth, column.width);\n        }\n\n        remainedWidth -= maxWidth;\n        column.width = maxWidth;\n        autoWidthCount--;\n      }\n    }); // Recalculate width again\n\n    autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0);\n    var widthSum = 0;\n    var lastColumn;\n    zrUtil.each(stacks, function (column, idx) {\n      if (!column.width) {\n        column.width = autoWidth;\n      }\n\n      lastColumn = column;\n      widthSum += column.width * (1 + barGapPercent);\n    });\n\n    if (lastColumn) {\n      widthSum -= lastColumn.width * barGapPercent;\n    }\n\n    var offset = -widthSum / 2;\n    zrUtil.each(stacks, function (column, stackId) {\n      result[coordSysName][stackId] = result[coordSysName][stackId] || {\n        offset: offset,\n        width: column.width\n      };\n      offset += column.width * (1 + barGapPercent);\n    });\n  });\n  return result;\n}\n\nvar _default = barLayoutPolar;\nmodule.exports = _default;\n\n/***/ }),\n/* 1208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar RadiusAxis = __webpack_require__(1209);\n\nvar AngleAxis = __webpack_require__(1210);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/coord/polar/Polar\n */\n\n/**\n * @alias {module:echarts/coord/polar/Polar}\n * @constructor\n * @param {string} name\n */\nvar Polar = function (name) {\n  /**\n   * @type {string}\n   */\n  this.name = name || '';\n  /**\n   * x of polar center\n   * @type {number}\n   */\n\n  this.cx = 0;\n  /**\n   * y of polar center\n   * @type {number}\n   */\n\n  this.cy = 0;\n  /**\n   * @type {module:echarts/coord/polar/RadiusAxis}\n   * @private\n   */\n\n  this._radiusAxis = new RadiusAxis();\n  /**\n   * @type {module:echarts/coord/polar/AngleAxis}\n   * @private\n   */\n\n  this._angleAxis = new AngleAxis();\n  this._radiusAxis.polar = this._angleAxis.polar = this;\n};\n\nPolar.prototype = {\n  type: 'polar',\n  axisPointerEnabled: true,\n  constructor: Polar,\n\n  /**\n   * @param {Array.<string>}\n   * @readOnly\n   */\n  dimensions: ['radius', 'angle'],\n\n  /**\n   * @type {module:echarts/coord/PolarModel}\n   */\n  model: null,\n\n  /**\n   * If contain coord\n   * @param {Array.<number>} point\n   * @return {boolean}\n   */\n  containPoint: function (point) {\n    var coord = this.pointToCoord(point);\n    return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]);\n  },\n\n  /**\n   * If contain data\n   * @param {Array.<number>} data\n   * @return {boolean}\n   */\n  containData: function (data) {\n    return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]);\n  },\n\n  /**\n   * @param {string} dim\n   * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n   */\n  getAxis: function (dim) {\n    return this['_' + dim + 'Axis'];\n  },\n\n  /**\n   * @return {Array.<module:echarts/coord/Axis>}\n   */\n  getAxes: function () {\n    return [this._radiusAxis, this._angleAxis];\n  },\n\n  /**\n   * Get axes by type of scale\n   * @param {string} scaleType\n   * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n   */\n  getAxesByScale: function (scaleType) {\n    var axes = [];\n    var angleAxis = this._angleAxis;\n    var radiusAxis = this._radiusAxis;\n    angleAxis.scale.type === scaleType && axes.push(angleAxis);\n    radiusAxis.scale.type === scaleType && axes.push(radiusAxis);\n    return axes;\n  },\n\n  /**\n   * @return {module:echarts/coord/polar/AngleAxis}\n   */\n  getAngleAxis: function () {\n    return this._angleAxis;\n  },\n\n  /**\n   * @return {module:echarts/coord/polar/RadiusAxis}\n   */\n  getRadiusAxis: function () {\n    return this._radiusAxis;\n  },\n\n  /**\n   * @param {module:echarts/coord/polar/Axis}\n   * @return {module:echarts/coord/polar/Axis}\n   */\n  getOtherAxis: function (axis) {\n    var angleAxis = this._angleAxis;\n    return axis === angleAxis ? this._radiusAxis : angleAxis;\n  },\n\n  /**\n   * Base axis will be used on stacking.\n   *\n   * @return {module:echarts/coord/polar/Axis}\n   */\n  getBaseAxis: function () {\n    return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAngleAxis();\n  },\n\n  /**\n   * @param {string} [dim] 'radius' or 'angle' or 'auto' or null/undefined\n   * @return {Object} {baseAxes: [], otherAxes: []}\n   */\n  getTooltipAxes: function (dim) {\n    var baseAxis = dim != null && dim !== 'auto' ? this.getAxis(dim) : this.getBaseAxis();\n    return {\n      baseAxes: [baseAxis],\n      otherAxes: [this.getOtherAxis(baseAxis)]\n    };\n  },\n\n  /**\n   * Convert a single data item to (x, y) point.\n   * Parameter data is an array which the first element is radius and the second is angle\n   * @param {Array.<number>} data\n   * @param {boolean} [clamp=false]\n   * @return {Array.<number>}\n   */\n  dataToPoint: function (data, clamp) {\n    return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp), this._angleAxis.dataToAngle(data[1], clamp)]);\n  },\n\n  /**\n   * Convert a (x, y) point to data\n   * @param {Array.<number>} point\n   * @param {boolean} [clamp=false]\n   * @return {Array.<number>}\n   */\n  pointToData: function (point, clamp) {\n    var coord = this.pointToCoord(point);\n    return [this._radiusAxis.radiusToData(coord[0], clamp), this._angleAxis.angleToData(coord[1], clamp)];\n  },\n\n  /**\n   * Convert a (x, y) point to (radius, angle) coord\n   * @param {Array.<number>} point\n   * @return {Array.<number>}\n   */\n  pointToCoord: function (point) {\n    var dx = point[0] - this.cx;\n    var dy = point[1] - this.cy;\n    var angleAxis = this.getAngleAxis();\n    var extent = angleAxis.getExtent();\n    var minAngle = Math.min(extent[0], extent[1]);\n    var maxAngle = Math.max(extent[0], extent[1]); // Fix fixed extent in polarCreator\n    // FIXME\n\n    angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360;\n    var radius = Math.sqrt(dx * dx + dy * dy);\n    dx /= radius;\n    dy /= radius;\n    var radian = Math.atan2(-dy, dx) / Math.PI * 180; // move to angleExtent\n\n    var dir = radian < minAngle ? 1 : -1;\n\n    while (radian < minAngle || radian > maxAngle) {\n      radian += dir * 360;\n    }\n\n    return [radius, radian];\n  },\n\n  /**\n   * Convert a (radius, angle) coord to (x, y) point\n   * @param {Array.<number>} coord\n   * @return {Array.<number>}\n   */\n  coordToPoint: function (coord) {\n    var radius = coord[0];\n    var radian = coord[1] / 180 * Math.PI;\n    var x = Math.cos(radian) * radius + this.cx; // Inverse the y\n\n    var y = -Math.sin(radian) * radius + this.cy;\n    return [x, y];\n  },\n\n  /**\n   * Get ring area of cartesian.\n   * Area will have a contain function to determine if a point is in the coordinate system.\n   * @return {Ring}\n   */\n  getArea: function () {\n    var angleAxis = this.getAngleAxis();\n    var radiusAxis = this.getRadiusAxis();\n    var radiusExtent = radiusAxis.getExtent().slice();\n    radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse();\n    var angleExtent = angleAxis.getExtent();\n    var RADIAN = Math.PI / 180;\n    return {\n      cx: this.cx,\n      cy: this.cy,\n      r0: radiusExtent[0],\n      r: radiusExtent[1],\n      startAngle: -angleExtent[0] * RADIAN,\n      endAngle: -angleExtent[1] * RADIAN,\n      clockwise: angleAxis.inverse,\n      contain: function (x, y) {\n        // It's a ring shape.\n        // Start angle and end angle don't matter\n        var dx = x - this.cx;\n        var dy = y - this.cy;\n        var d2 = dx * dx + dy * dy;\n        var r = this.r;\n        var r0 = this.r0;\n        return d2 <= r * r && d2 >= r0 * r0;\n      }\n    };\n  }\n};\nvar _default = Polar;\nmodule.exports = _default;\n\n/***/ }),\n/* 1209 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Axis = __webpack_require__(155);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction RadiusAxis(scale, radiusExtent) {\n  Axis.call(this, 'radius', scale, radiusExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = 'category';\n}\n\nRadiusAxis.prototype = {\n  constructor: RadiusAxis,\n\n  /**\n   * @override\n   */\n  pointToData: function (point, clamp) {\n    return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\n  },\n  dataToRadius: Axis.prototype.dataToCoord,\n  radiusToData: Axis.prototype.coordToData\n};\nzrUtil.inherits(RadiusAxis, Axis);\nvar _default = RadiusAxis;\nmodule.exports = _default;\n\n/***/ }),\n/* 1210 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar textContain = __webpack_require__(108);\n\nvar Axis = __webpack_require__(155);\n\nvar _model = __webpack_require__(31);\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\n\nfunction AngleAxis(scale, angleExtent) {\n  angleExtent = angleExtent || [0, 360];\n  Axis.call(this, 'angle', scale, angleExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = 'category';\n}\n\nAngleAxis.prototype = {\n  constructor: AngleAxis,\n\n  /**\n   * @override\n   */\n  pointToData: function (point, clamp) {\n    return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\n  },\n  dataToAngle: Axis.prototype.dataToCoord,\n  angleToData: Axis.prototype.coordToData,\n\n  /**\n   * Only be called in category axis.\n   * Angle axis uses text height to decide interval\n   *\n   * @override\n   * @return {number} Auto interval for cateogry axis tick and label\n   */\n  calculateCategoryInterval: function () {\n    var axis = this;\n    var labelModel = axis.getLabelModel();\n    var ordinalScale = axis.scale;\n    var ordinalExtent = ordinalScale.getExtent(); // Providing this method is for optimization:\n    // avoid generating a long array by `getTicks`\n    // in large category data case.\n\n    var tickCount = ordinalScale.count();\n\n    if (ordinalExtent[1] - ordinalExtent[0] < 1) {\n      return 0;\n    }\n\n    var tickValue = ordinalExtent[0];\n    var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\n    var unitH = Math.abs(unitSpan); // Not precise, just use height as text width\n    // and each distance from axis line yet.\n\n    var rect = textContain.getBoundingRect(tickValue, labelModel.getFont(), 'center', 'top');\n    var maxH = Math.max(rect.height, 7);\n    var dh = maxH / unitH; // 0/0 is NaN, 1/0 is Infinity.\n\n    isNaN(dh) && (dh = Infinity);\n    var interval = Math.max(0, Math.floor(dh));\n    var cache = inner(axis.model);\n    var lastAutoInterval = cache.lastAutoInterval;\n    var lastTickCount = cache.lastTickCount; // Use cache to keep interval stable while moving zoom window,\n    // otherwise the calculated interval might jitter when the zoom\n    // window size is close to the interval-changing size.\n\n    if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 // Always choose the bigger one, otherwise the critical\n    // point is not the same when zooming in or zooming out.\n    && lastAutoInterval > interval) {\n      interval = lastAutoInterval;\n    } // Only update cache if cache not used, otherwise the\n    // changing of interval is too insensitive.\n    else {\n        cache.lastTickCount = tickCount;\n        cache.lastAutoInterval = interval;\n      }\n\n    return interval;\n  }\n};\nzrUtil.inherits(AngleAxis, Axis);\nvar _default = AngleAxis;\nmodule.exports = _default;\n\n/***/ }),\n/* 1211 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1212);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentModel({\n  type: 'polar',\n  dependencies: ['polarAxis', 'angleAxis'],\n\n  /**\n   * @type {module:echarts/coord/polar/Polar}\n   */\n  coordinateSystem: null,\n\n  /**\n   * @param {string} axisType\n   * @return {module:echarts/coord/polar/AxisModel}\n   */\n  findAxisModel: function (axisType) {\n    var foundAxisModel;\n    var ecModel = this.ecModel;\n    ecModel.eachComponent(axisType, function (axisModel) {\n      if (axisModel.getCoordSysModel() === this) {\n        foundAxisModel = axisModel;\n      }\n    }, this);\n    return foundAxisModel;\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 0,\n    center: ['50%', '50%'],\n    radius: '80%'\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1212 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar axisModelCreator = __webpack_require__(333);\n\nvar axisModelCommonMixin = __webpack_require__(216);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PolarAxisModel = ComponentModel.extend({\n  type: 'polarAxis',\n\n  /**\n   * @type {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n   */\n  axis: null,\n\n  /**\n   * @override\n   */\n  getCoordSysModel: function () {\n    return this.ecModel.queryComponents({\n      mainType: 'polar',\n      index: this.option.polarIndex,\n      id: this.option.polarId\n    })[0];\n  }\n});\nzrUtil.merge(PolarAxisModel.prototype, axisModelCommonMixin);\nvar polarAxisDefaultExtendedOption = {\n  angle: {\n    // polarIndex: 0,\n    // polarId: '',\n    startAngle: 90,\n    clockwise: true,\n    splitNumber: 12,\n    axisLabel: {\n      rotate: false\n    }\n  },\n  radius: {\n    // polarIndex: 0,\n    // polarId: '',\n    splitNumber: 5\n  }\n};\n\nfunction getAxisType(axisDim, option) {\n  // Default axis with data is category axis\n  return option.type || (option.data ? 'category' : 'value');\n}\n\naxisModelCreator('angle', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.angle);\naxisModelCreator('radius', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.radius);\n\n/***/ }),\n/* 1213 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(423);\n\n__webpack_require__(1214);\n\n/***/ }),\n/* 1214 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar Model = __webpack_require__(67);\n\nvar AxisView = __webpack_require__(182);\n\nvar AxisBuilder = __webpack_require__(156);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar elementList = ['axisLine', 'axisLabel', 'axisTick', 'minorTick', 'splitLine', 'minorSplitLine', 'splitArea'];\n\nfunction getAxisLineShape(polar, rExtent, angle) {\n  rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse());\n  var start = polar.coordToPoint([rExtent[0], angle]);\n  var end = polar.coordToPoint([rExtent[1], angle]);\n  return {\n    x1: start[0],\n    y1: start[1],\n    x2: end[0],\n    y2: end[1]\n  };\n}\n\nfunction getRadiusIdx(polar) {\n  var radiusAxis = polar.getRadiusAxis();\n  return radiusAxis.inverse ? 0 : 1;\n} // Remove the last tick which will overlap the first tick\n\n\nfunction fixAngleOverlap(list) {\n  var firstItem = list[0];\n  var lastItem = list[list.length - 1];\n\n  if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) {\n    list.pop();\n  }\n}\n\nvar _default = AxisView.extend({\n  type: 'angleAxis',\n  axisPointerClass: 'PolarAxisPointer',\n  render: function (angleAxisModel, ecModel) {\n    this.group.removeAll();\n\n    if (!angleAxisModel.get('show')) {\n      return;\n    }\n\n    var angleAxis = angleAxisModel.axis;\n    var polar = angleAxis.polar;\n    var radiusExtent = polar.getRadiusAxis().getExtent();\n    var ticksAngles = angleAxis.getTicksCoords();\n    var minorTickAngles = angleAxis.getMinorTicksCoords();\n    var labels = zrUtil.map(angleAxis.getViewLabels(), function (labelItem) {\n      var labelItem = zrUtil.clone(labelItem);\n      labelItem.coord = angleAxis.dataToCoord(labelItem.tickValue);\n      return labelItem;\n    });\n    fixAngleOverlap(labels);\n    fixAngleOverlap(ticksAngles);\n    zrUtil.each(elementList, function (name) {\n      if (angleAxisModel.get(name + '.show') && (!angleAxis.scale.isBlank() || name === 'axisLine')) {\n        this['_' + name](angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels);\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _axisLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n    var lineStyleModel = angleAxisModel.getModel('axisLine.lineStyle'); // extent id of the axis radius (r0 and r)\n\n    var rId = getRadiusIdx(polar);\n    var r0Id = rId ? 0 : 1;\n    var shape;\n\n    if (radiusExtent[r0Id] === 0) {\n      shape = new graphic.Circle({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r: radiusExtent[rId]\n        },\n        style: lineStyleModel.getLineStyle(),\n        z2: 1,\n        silent: true\n      });\n    } else {\n      shape = new graphic.Ring({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r: radiusExtent[rId],\n          r0: radiusExtent[r0Id]\n        },\n        style: lineStyleModel.getLineStyle(),\n        z2: 1,\n        silent: true\n      });\n    }\n\n    shape.style.fill = null;\n    this.group.add(shape);\n  },\n\n  /**\n   * @private\n   */\n  _axisTick: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n    var tickModel = angleAxisModel.getModel('axisTick');\n    var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length');\n    var radius = radiusExtent[getRadiusIdx(polar)];\n    var lines = zrUtil.map(ticksAngles, function (tickAngleItem) {\n      return new graphic.Line({\n        shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord)\n      });\n    });\n    this.group.add(graphic.mergePath(lines, {\n      style: zrUtil.defaults(tickModel.getModel('lineStyle').getLineStyle(), {\n        stroke: angleAxisModel.get('axisLine.lineStyle.color')\n      })\n    }));\n  },\n\n  /**\n   * @private\n   */\n  _minorTick: function (angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) {\n    if (!minorTickAngles.length) {\n      return;\n    }\n\n    var tickModel = angleAxisModel.getModel('axisTick');\n    var minorTickModel = angleAxisModel.getModel('minorTick');\n    var tickLen = (tickModel.get('inside') ? -1 : 1) * minorTickModel.get('length');\n    var radius = radiusExtent[getRadiusIdx(polar)];\n    var lines = [];\n\n    for (var i = 0; i < minorTickAngles.length; i++) {\n      for (var k = 0; k < minorTickAngles[i].length; k++) {\n        lines.push(new graphic.Line({\n          shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord)\n        }));\n      }\n    }\n\n    this.group.add(graphic.mergePath(lines, {\n      style: zrUtil.defaults(minorTickModel.getModel('lineStyle').getLineStyle(), zrUtil.defaults(tickModel.getLineStyle(), {\n        stroke: angleAxisModel.get('axisLine.lineStyle.color')\n      }))\n    }));\n  },\n\n  /**\n   * @private\n   */\n  _axisLabel: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) {\n    var rawCategoryData = angleAxisModel.getCategories(true);\n    var commonLabelModel = angleAxisModel.getModel('axisLabel');\n    var labelMargin = commonLabelModel.get('margin');\n    var triggerEvent = angleAxisModel.get('triggerEvent'); // Use length of ticksAngles because it may remove the last tick to avoid overlapping\n\n    zrUtil.each(labels, function (labelItem, idx) {\n      var labelModel = commonLabelModel;\n      var tickValue = labelItem.tickValue;\n      var r = radiusExtent[getRadiusIdx(polar)];\n      var p = polar.coordToPoint([r + labelMargin, labelItem.coord]);\n      var cx = polar.cx;\n      var cy = polar.cy;\n      var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? 'center' : p[0] > cx ? 'left' : 'right';\n      var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? 'middle' : p[1] > cy ? 'top' : 'bottom';\n\n      if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n        labelModel = new Model(rawCategoryData[tickValue].textStyle, commonLabelModel, commonLabelModel.ecModel);\n      }\n\n      var textEl = new graphic.Text({\n        silent: AxisBuilder.isLabelSilent(angleAxisModel)\n      });\n      this.group.add(textEl);\n      graphic.setTextStyle(textEl.style, labelModel, {\n        x: p[0],\n        y: p[1],\n        textFill: labelModel.getTextColor() || angleAxisModel.get('axisLine.lineStyle.color'),\n        text: labelItem.formattedLabel,\n        textAlign: labelTextAlign,\n        textVerticalAlign: labelTextVerticalAlign\n      }); // Pack data for mouse event\n\n      if (triggerEvent) {\n        textEl.eventData = AxisBuilder.makeAxisEventDataBase(angleAxisModel);\n        textEl.eventData.targetType = 'axisLabel';\n        textEl.eventData.value = labelItem.rawLabel;\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _splitLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n    var splitLineModel = angleAxisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineColors = lineStyleModel.get('color');\n    var lineCount = 0;\n    lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n    var splitLines = [];\n\n    for (var i = 0; i < ticksAngles.length; i++) {\n      var colorIndex = lineCount++ % lineColors.length;\n      splitLines[colorIndex] = splitLines[colorIndex] || [];\n      splitLines[colorIndex].push(new graphic.Line({\n        shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord)\n      }));\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitLines.length; i++) {\n      this.group.add(graphic.mergePath(splitLines[i], {\n        style: zrUtil.defaults({\n          stroke: lineColors[i % lineColors.length]\n        }, lineStyleModel.getLineStyle()),\n        silent: true,\n        z: angleAxisModel.get('z')\n      }));\n    }\n  },\n\n  /**\n   * @private\n   */\n  _minorSplitLine: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n    if (!minorTickAngles.length) {\n      return;\n    }\n\n    var minorSplitLineModel = angleAxisModel.getModel('minorSplitLine');\n    var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n    var lines = [];\n\n    for (var i = 0; i < minorTickAngles.length; i++) {\n      for (var k = 0; k < minorTickAngles[i].length; k++) {\n        lines.push(new graphic.Line({\n          shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord)\n        }));\n      }\n    }\n\n    this.group.add(graphic.mergePath(lines, {\n      style: lineStyleModel.getLineStyle(),\n      silent: true,\n      z: angleAxisModel.get('z')\n    }));\n  },\n\n  /**\n   * @private\n   */\n  _splitArea: function (angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {\n    if (!ticksAngles.length) {\n      return;\n    }\n\n    var splitAreaModel = angleAxisModel.getModel('splitArea');\n    var areaStyleModel = splitAreaModel.getModel('areaStyle');\n    var areaColors = areaStyleModel.get('color');\n    var lineCount = 0;\n    areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n    var splitAreas = [];\n    var RADIAN = Math.PI / 180;\n    var prevAngle = -ticksAngles[0].coord * RADIAN;\n    var r0 = Math.min(radiusExtent[0], radiusExtent[1]);\n    var r1 = Math.max(radiusExtent[0], radiusExtent[1]);\n    var clockwise = angleAxisModel.get('clockwise');\n\n    for (var i = 1; i < ticksAngles.length; i++) {\n      var colorIndex = lineCount++ % areaColors.length;\n      splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n      splitAreas[colorIndex].push(new graphic.Sector({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r0: r0,\n          r: r1,\n          startAngle: prevAngle,\n          endAngle: -ticksAngles[i].coord * RADIAN,\n          clockwise: clockwise\n        },\n        silent: true\n      }));\n      prevAngle = -ticksAngles[i].coord * RADIAN;\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitAreas.length; i++) {\n      this.group.add(graphic.mergePath(splitAreas[i], {\n        style: zrUtil.defaults({\n          fill: areaColors[i % areaColors.length]\n        }, areaStyleModel.getAreaStyle()),\n        silent: true\n      }));\n    }\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1215 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(423);\n\n__webpack_require__(1216);\n\n/***/ }),\n/* 1216 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar AxisBuilder = __webpack_require__(156);\n\nvar AxisView = __webpack_require__(182);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitLine', 'splitArea', 'minorSplitLine'];\n\nvar _default = AxisView.extend({\n  type: 'radiusAxis',\n  axisPointerClass: 'PolarAxisPointer',\n  render: function (radiusAxisModel, ecModel) {\n    this.group.removeAll();\n\n    if (!radiusAxisModel.get('show')) {\n      return;\n    }\n\n    var radiusAxis = radiusAxisModel.axis;\n    var polar = radiusAxis.polar;\n    var angleAxis = polar.getAngleAxis();\n    var ticksCoords = radiusAxis.getTicksCoords();\n    var minorTicksCoords = radiusAxis.getMinorTicksCoords();\n    var axisAngle = angleAxis.getExtent()[0];\n    var radiusExtent = radiusAxis.getExtent();\n    var layout = layoutAxis(polar, radiusAxisModel, axisAngle);\n    var axisBuilder = new AxisBuilder(radiusAxisModel, layout);\n    zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n    this.group.add(axisBuilder.getGroup());\n    zrUtil.each(selfBuilderAttrs, function (name) {\n      if (radiusAxisModel.get(name + '.show') && !radiusAxis.scale.isBlank()) {\n        this['_' + name](radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords);\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _splitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n    var splitLineModel = radiusAxisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineColors = lineStyleModel.get('color');\n    var lineCount = 0;\n    lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n    var splitLines = [];\n\n    for (var i = 0; i < ticksCoords.length; i++) {\n      var colorIndex = lineCount++ % lineColors.length;\n      splitLines[colorIndex] = splitLines[colorIndex] || [];\n      splitLines[colorIndex].push(new graphic.Circle({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r: ticksCoords[i].coord\n        }\n      }));\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitLines.length; i++) {\n      this.group.add(graphic.mergePath(splitLines[i], {\n        style: zrUtil.defaults({\n          stroke: lineColors[i % lineColors.length],\n          fill: null\n        }, lineStyleModel.getLineStyle()),\n        silent: true\n      }));\n    }\n  },\n\n  /**\n   * @private\n   */\n  _minorSplitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) {\n    if (!minorTicksCoords.length) {\n      return;\n    }\n\n    var minorSplitLineModel = radiusAxisModel.getModel('minorSplitLine');\n    var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\n    var lines = [];\n\n    for (var i = 0; i < minorTicksCoords.length; i++) {\n      for (var k = 0; k < minorTicksCoords[i].length; k++) {\n        lines.push(new graphic.Circle({\n          shape: {\n            cx: polar.cx,\n            cy: polar.cy,\n            r: minorTicksCoords[i][k].coord\n          }\n        }));\n      }\n    }\n\n    this.group.add(graphic.mergePath(lines, {\n      style: zrUtil.defaults({\n        fill: null\n      }, lineStyleModel.getLineStyle()),\n      silent: true\n    }));\n  },\n\n  /**\n   * @private\n   */\n  _splitArea: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n    if (!ticksCoords.length) {\n      return;\n    }\n\n    var splitAreaModel = radiusAxisModel.getModel('splitArea');\n    var areaStyleModel = splitAreaModel.getModel('areaStyle');\n    var areaColors = areaStyleModel.get('color');\n    var lineCount = 0;\n    areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n    var splitAreas = [];\n    var prevRadius = ticksCoords[0].coord;\n\n    for (var i = 1; i < ticksCoords.length; i++) {\n      var colorIndex = lineCount++ % areaColors.length;\n      splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n      splitAreas[colorIndex].push(new graphic.Sector({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r0: prevRadius,\n          r: ticksCoords[i].coord,\n          startAngle: 0,\n          endAngle: Math.PI * 2\n        },\n        silent: true\n      }));\n      prevRadius = ticksCoords[i].coord;\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitAreas.length; i++) {\n      this.group.add(graphic.mergePath(splitAreas[i], {\n        style: zrUtil.defaults({\n          fill: areaColors[i % areaColors.length]\n        }, areaStyleModel.getAreaStyle()),\n        silent: true\n      }));\n    }\n  }\n});\n/**\n * @inner\n */\n\n\nfunction layoutAxis(polar, radiusAxisModel, axisAngle) {\n  return {\n    position: [polar.cx, polar.cy],\n    rotation: axisAngle / 180 * Math.PI,\n    labelDirection: -1,\n    tickDirection: -1,\n    nameDirection: 1,\n    labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),\n    // Over splitLine and splitArea\n    z2: 1\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1217 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar formatUtil = __webpack_require__(50);\n\nvar BaseAxisPointer = __webpack_require__(422);\n\nvar graphic = __webpack_require__(23);\n\nvar viewHelper = __webpack_require__(339);\n\nvar matrix = __webpack_require__(89);\n\nvar AxisBuilder = __webpack_require__(156);\n\nvar AxisView = __webpack_require__(182);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PolarAxisPointer = BaseAxisPointer.extend({\n  /**\n   * @override\n   */\n  makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n    var axis = axisModel.axis;\n\n    if (axis.dim === 'angle') {\n      this.animationThreshold = Math.PI / 18;\n    }\n\n    var polar = axis.polar;\n    var otherAxis = polar.getOtherAxis(axis);\n    var otherExtent = otherAxis.getExtent();\n    var coordValue;\n    coordValue = axis['dataTo' + formatUtil.capitalFirst(axis.dim)](value);\n    var axisPointerType = axisPointerModel.get('type');\n\n    if (axisPointerType && axisPointerType !== 'none') {\n      var elStyle = viewHelper.buildElStyle(axisPointerModel);\n      var pointerOption = pointerShapeBuilder[axisPointerType](axis, polar, coordValue, otherExtent, elStyle);\n      pointerOption.style = elStyle;\n      elOption.graphicKey = pointerOption.type;\n      elOption.pointer = pointerOption;\n    }\n\n    var labelMargin = axisPointerModel.get('label.margin');\n    var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);\n    viewHelper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);\n  } // Do not support handle, utill any user requires it.\n\n});\n\nfunction getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {\n  var axis = axisModel.axis;\n  var coord = axis.dataToCoord(value);\n  var axisAngle = polar.getAngleAxis().getExtent()[0];\n  axisAngle = axisAngle / 180 * Math.PI;\n  var radiusExtent = polar.getRadiusAxis().getExtent();\n  var position;\n  var align;\n  var verticalAlign;\n\n  if (axis.dim === 'radius') {\n    var transform = matrix.create();\n    matrix.rotate(transform, transform, axisAngle);\n    matrix.translate(transform, transform, [polar.cx, polar.cy]);\n    position = graphic.applyTransform([coord, -labelMargin], transform);\n    var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0;\n    var labelLayout = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1);\n    align = labelLayout.textAlign;\n    verticalAlign = labelLayout.textVerticalAlign;\n  } else {\n    // angle axis\n    var r = radiusExtent[1];\n    position = polar.coordToPoint([r + labelMargin, coord]);\n    var cx = polar.cx;\n    var cy = polar.cy;\n    align = Math.abs(position[0] - cx) / r < 0.3 ? 'center' : position[0] > cx ? 'left' : 'right';\n    verticalAlign = Math.abs(position[1] - cy) / r < 0.3 ? 'middle' : position[1] > cy ? 'top' : 'bottom';\n  }\n\n  return {\n    position: position,\n    align: align,\n    verticalAlign: verticalAlign\n  };\n}\n\nvar pointerShapeBuilder = {\n  line: function (axis, polar, coordValue, otherExtent, elStyle) {\n    return axis.dim === 'angle' ? {\n      type: 'Line',\n      shape: viewHelper.makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue]))\n    } : {\n      type: 'Circle',\n      shape: {\n        cx: polar.cx,\n        cy: polar.cy,\n        r: coordValue\n      }\n    };\n  },\n  shadow: function (axis, polar, coordValue, otherExtent, elStyle) {\n    var bandWidth = Math.max(1, axis.getBandWidth());\n    var radian = Math.PI / 180;\n    return axis.dim === 'angle' ? {\n      type: 'Sector',\n      shape: viewHelper.makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], // In ECharts y is negative if angle is positive\n      (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian)\n    } : {\n      type: 'Sector',\n      shape: viewHelper.makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2)\n    };\n  }\n};\nAxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer);\nvar _default = PolarAxisPointer;\nmodule.exports = _default;\n\n/***/ }),\n/* 1218 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\n__webpack_require__(1219);\n\n__webpack_require__(415);\n\n__webpack_require__(1220);\n\n__webpack_require__(592);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction makeAction(method, actionInfo) {\n  actionInfo.update = 'updateView';\n  echarts.registerAction(actionInfo, function (payload, ecModel) {\n    var selected = {};\n    ecModel.eachComponent({\n      mainType: 'geo',\n      query: payload\n    }, function (geoModel) {\n      geoModel[method](payload.name);\n      var geo = geoModel.coordinateSystem;\n      zrUtil.each(geo.regions, function (region) {\n        selected[region.name] = geoModel.isSelected(region.name) || false;\n      });\n    });\n    return {\n      selected: selected,\n      name: payload.name\n    };\n  });\n}\n\nmakeAction('toggleSelected', {\n  type: 'geoToggleSelect',\n  event: 'geoselectchanged'\n});\nmakeAction('select', {\n  type: 'geoSelect',\n  event: 'geoselected'\n});\nmakeAction('unSelect', {\n  type: 'geoUnSelect',\n  event: 'geounselected'\n});\n\n/***/ }),\n/* 1219 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar modelUtil = __webpack_require__(31);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar Model = __webpack_require__(67);\n\nvar selectableMixin = __webpack_require__(412);\n\nvar geoCreator = __webpack_require__(415);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar GeoModel = ComponentModel.extend({\n  type: 'geo',\n\n  /**\n   * @type {module:echarts/coord/geo/Geo}\n   */\n  coordinateSystem: null,\n  layoutMode: 'box',\n  init: function (option) {\n    ComponentModel.prototype.init.apply(this, arguments); // Default label emphasis `show`\n\n    modelUtil.defaultEmphasis(option, 'label', ['show']);\n  },\n  optionUpdated: function () {\n    var option = this.option;\n    var self = this;\n    option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap);\n    this._optionModelMap = zrUtil.reduce(option.regions || [], function (optionModelMap, regionOpt) {\n      if (regionOpt.name) {\n        optionModelMap.set(regionOpt.name, new Model(regionOpt, self));\n      }\n\n      return optionModelMap;\n    }, zrUtil.createHashMap());\n    this.updateSelectedMap(option.regions);\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 0,\n    show: true,\n    left: 'center',\n    top: 'center',\n    // width:,\n    // height:,\n    // right\n    // bottom\n    // Aspect is width / height. Inited to be geoJson bbox aspect\n    // This parameter is used for scale this aspect\n    // If svg used, aspectScale is 1 by default.\n    // aspectScale: 0.75,\n    aspectScale: null,\n    ///// Layout with center and size\n    // If you wan't to put map in a fixed size box with right aspect ratio\n    // This two properties may more conveninet\n    // layoutCenter: [50%, 50%]\n    // layoutSize: 100\n    silent: false,\n    // Map type\n    map: '',\n    // Define left-top, right-bottom coords to control view\n    // For example, [ [180, 90], [-180, -90] ]\n    boundingCoords: null,\n    // Default on center of map\n    center: null,\n    zoom: 1,\n    scaleLimit: null,\n    // selectedMode: false\n    label: {\n      show: false,\n      color: '#000'\n    },\n    itemStyle: {\n      // color: 各异,\n      borderWidth: 0.5,\n      borderColor: '#444',\n      color: '#eee'\n    },\n    emphasis: {\n      label: {\n        show: true,\n        color: 'rgb(100,0,0)'\n      },\n      itemStyle: {\n        color: 'rgba(255,215,0,0.8)'\n      }\n    },\n    regions: []\n  },\n\n  /**\n   * Get model of region\n   * @param  {string} name\n   * @return {module:echarts/model/Model}\n   */\n  getRegionModel: function (name) {\n    return this._optionModelMap.get(name) || new Model(null, this, this.ecModel);\n  },\n\n  /**\n   * Format label\n   * @param {string} name Region name\n   * @param {string} [status='normal'] 'normal' or 'emphasis'\n   * @return {string}\n   */\n  getFormattedLabel: function (name, status) {\n    status = status || 'normal';\n    var regionModel = this.getRegionModel(name);\n    var formatter = regionModel.get((status === 'normal' ? '' : status + '.') + 'label.formatter');\n    var params = {\n      name: name\n    };\n\n    if (typeof formatter === 'function') {\n      params.status = status;\n      return formatter(params);\n    } else if (typeof formatter === 'string') {\n      return formatter.replace('{a}', name != null ? name : '');\n    }\n  },\n  setZoom: function (zoom) {\n    this.option.zoom = zoom;\n  },\n  setCenter: function (center) {\n    this.option.center = center;\n  }\n});\nzrUtil.mixin(GeoModel, selectableMixin);\nvar _default = GeoModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1220 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MapDraw = __webpack_require__(590);\n\nvar echarts = __webpack_require__(13);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n  type: 'geo',\n  init: function (ecModel, api) {\n    var mapDraw = new MapDraw(api, true);\n    this._mapDraw = mapDraw;\n    this.group.add(mapDraw.group);\n  },\n  render: function (geoModel, ecModel, api, payload) {\n    // Not render if it is an toggleSelect action from self\n    if (payload && payload.type === 'geoToggleSelect' && payload.from === this.uid) {\n      return;\n    }\n\n    var mapDraw = this._mapDraw;\n\n    if (geoModel.get('show')) {\n      mapDraw.draw(geoModel, ecModel, api, this, payload);\n    } else {\n      this._mapDraw.group.removeAll();\n    }\n\n    this.group.silent = geoModel.get('silent');\n  },\n  dispose: function () {\n    this._mapDraw && this._mapDraw.remove();\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1221 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(1222);\n\n__webpack_require__(1223);\n\n__webpack_require__(1224);\n\n/***/ }),\n/* 1222 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar layout = __webpack_require__(49);\n\nvar numberUtil = __webpack_require__(26);\n\nvar CoordinateSystem = __webpack_require__(121);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (24*60*60*1000)\nvar PROXIMATE_ONE_DAY = 86400000;\n/**\n * Calendar\n *\n * @constructor\n *\n * @param {Object} calendarModel calendarModel\n * @param {Object} ecModel       ecModel\n * @param {Object} api           api\n */\n\nfunction Calendar(calendarModel, ecModel, api) {\n  this._model = calendarModel;\n}\n\nCalendar.prototype = {\n  constructor: Calendar,\n  type: 'calendar',\n  dimensions: ['time', 'value'],\n  // Required in createListFromData\n  getDimensionsInfo: function () {\n    return [{\n      name: 'time',\n      type: 'time'\n    }, 'value'];\n  },\n  getRangeInfo: function () {\n    return this._rangeInfo;\n  },\n  getModel: function () {\n    return this._model;\n  },\n  getRect: function () {\n    return this._rect;\n  },\n  getCellWidth: function () {\n    return this._sw;\n  },\n  getCellHeight: function () {\n    return this._sh;\n  },\n  getOrient: function () {\n    return this._orient;\n  },\n\n  /**\n   * getFirstDayOfWeek\n   *\n   * @example\n   *     0 : start at Sunday\n   *     1 : start at Monday\n   *\n   * @return {number}\n   */\n  getFirstDayOfWeek: function () {\n    return this._firstDayOfWeek;\n  },\n\n  /**\n   * get date info\n   *\n   * @param  {string|number} date date\n   * @return {Object}\n   * {\n   *      y: string, local full year, eg., '1940',\n   *      m: string, local month, from '01' ot '12',\n   *      d: string, local date, from '01' to '31' (if exists),\n   *      day: It is not date.getDay(). It is the location of the cell in a week, from 0 to 6,\n   *      time: timestamp,\n   *      formatedDate: string, yyyy-MM-dd,\n   *      date: original date object.\n   * }\n   */\n  getDateInfo: function (date) {\n    date = numberUtil.parseDate(date);\n    var y = date.getFullYear();\n    var m = date.getMonth() + 1;\n    m = m < 10 ? '0' + m : m;\n    var d = date.getDate();\n    d = d < 10 ? '0' + d : d;\n    var day = date.getDay();\n    day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);\n    return {\n      y: y,\n      m: m,\n      d: d,\n      day: day,\n      time: date.getTime(),\n      formatedDate: y + '-' + m + '-' + d,\n      date: date\n    };\n  },\n  getNextNDay: function (date, n) {\n    n = n || 0;\n\n    if (n === 0) {\n      return this.getDateInfo(date);\n    }\n\n    date = new Date(this.getDateInfo(date).time);\n    date.setDate(date.getDate() + n);\n    return this.getDateInfo(date);\n  },\n  update: function (ecModel, api) {\n    this._firstDayOfWeek = +this._model.getModel('dayLabel').get('firstDay');\n    this._orient = this._model.get('orient');\n    this._lineWidth = this._model.getModel('itemStyle').getItemStyle().lineWidth || 0;\n    this._rangeInfo = this._getRangeInfo(this._initRangeOption());\n    var weeks = this._rangeInfo.weeks || 1;\n    var whNames = ['width', 'height'];\n\n    var cellSize = this._model.get('cellSize').slice();\n\n    var layoutParams = this._model.getBoxLayoutParams();\n\n    var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks];\n    zrUtil.each([0, 1], function (idx) {\n      if (cellSizeSpecified(cellSize, idx)) {\n        layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];\n      }\n    });\n    var whGlobal = {\n      width: api.getWidth(),\n      height: api.getHeight()\n    };\n    var calendarRect = this._rect = layout.getLayoutRect(layoutParams, whGlobal);\n    zrUtil.each([0, 1], function (idx) {\n      if (!cellSizeSpecified(cellSize, idx)) {\n        cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];\n      }\n    });\n\n    function cellSizeSpecified(cellSize, idx) {\n      return cellSize[idx] != null && cellSize[idx] !== 'auto';\n    }\n\n    this._sw = cellSize[0];\n    this._sh = cellSize[1];\n  },\n\n  /**\n   * Convert a time data(time, value) item to (x, y) point.\n   *\n   * @override\n   * @param  {Array|number} data data\n   * @param  {boolean} [clamp=true] out of range\n   * @return {Array} point\n   */\n  dataToPoint: function (data, clamp) {\n    zrUtil.isArray(data) && (data = data[0]);\n    clamp == null && (clamp = true);\n    var dayInfo = this.getDateInfo(data);\n    var range = this._rangeInfo;\n    var date = dayInfo.formatedDate; // if not in range return [NaN, NaN]\n\n    if (clamp && !(dayInfo.time >= range.start.time && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) {\n      return [NaN, NaN];\n    }\n\n    var week = dayInfo.day;\n\n    var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek;\n\n    if (this._orient === 'vertical') {\n      return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2];\n    }\n\n    return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2];\n  },\n\n  /**\n   * Convert a (x, y) point to time data\n   *\n   * @override\n   * @param  {string} point point\n   * @return {string}       data\n   */\n  pointToData: function (point) {\n    var date = this.pointToDate(point);\n    return date && date.time;\n  },\n\n  /**\n   * Convert a time date item to (x, y) four point.\n   *\n   * @param  {Array} data  date[0] is date\n   * @param  {boolean} [clamp=true]  out of range\n   * @return {Object}       point\n   */\n  dataToRect: function (data, clamp) {\n    var point = this.dataToPoint(data, clamp);\n    return {\n      contentShape: {\n        x: point[0] - (this._sw - this._lineWidth) / 2,\n        y: point[1] - (this._sh - this._lineWidth) / 2,\n        width: this._sw - this._lineWidth,\n        height: this._sh - this._lineWidth\n      },\n      center: point,\n      tl: [point[0] - this._sw / 2, point[1] - this._sh / 2],\n      tr: [point[0] + this._sw / 2, point[1] - this._sh / 2],\n      br: [point[0] + this._sw / 2, point[1] + this._sh / 2],\n      bl: [point[0] - this._sw / 2, point[1] + this._sh / 2]\n    };\n  },\n\n  /**\n   * Convert a (x, y) point to time date\n   *\n   * @param  {Array} point point\n   * @return {Object}       date\n   */\n  pointToDate: function (point) {\n    var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;\n    var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;\n    var range = this._rangeInfo.range;\n\n    if (this._orient === 'vertical') {\n      return this._getDateByWeeksAndDay(nthY, nthX - 1, range);\n    }\n\n    return this._getDateByWeeksAndDay(nthX, nthY - 1, range);\n  },\n\n  /**\n   * @inheritDoc\n   */\n  convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n  /**\n   * @inheritDoc\n   */\n  convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),\n\n  /**\n   * initRange\n   *\n   * @private\n   * @return {Array} [start, end]\n   */\n  _initRangeOption: function () {\n    var range = this._model.get('range');\n\n    var rg = range;\n\n    if (zrUtil.isArray(rg) && rg.length === 1) {\n      rg = rg[0];\n    }\n\n    if (/^\\d{4}$/.test(rg)) {\n      range = [rg + '-01-01', rg + '-12-31'];\n    }\n\n    if (/^\\d{4}[\\/|-]\\d{1,2}$/.test(rg)) {\n      var start = this.getDateInfo(rg);\n      var firstDay = start.date;\n      firstDay.setMonth(firstDay.getMonth() + 1);\n      var end = this.getNextNDay(firstDay, -1);\n      range = [start.formatedDate, end.formatedDate];\n    }\n\n    if (/^\\d{4}[\\/|-]\\d{1,2}[\\/|-]\\d{1,2}$/.test(rg)) {\n      range = [rg, rg];\n    }\n\n    var tmp = this._getRangeInfo(range);\n\n    if (tmp.start.time > tmp.end.time) {\n      range.reverse();\n    }\n\n    return range;\n  },\n\n  /**\n   * range info\n   *\n   * @private\n   * @param  {Array} range range ['2017-01-01', '2017-07-08']\n   *  If range[0] > range[1], they will not be reversed.\n   * @return {Object}       obj\n   */\n  _getRangeInfo: function (range) {\n    range = [this.getDateInfo(range[0]), this.getDateInfo(range[1])];\n    var reversed;\n\n    if (range[0].time > range[1].time) {\n      reversed = true;\n      range.reverse();\n    }\n\n    var allDay = Math.floor(range[1].time / PROXIMATE_ONE_DAY) - Math.floor(range[0].time / PROXIMATE_ONE_DAY) + 1; // Consider case1 (#11677 #10430):\n    // Set the system timezone as \"UK\", set the range to `['2016-07-01', '2016-12-31']`\n    // Consider case2:\n    // Firstly set system timezone as \"Time Zone: America/Toronto\",\n    // ```\n    // var first = new Date(1478412000000 - 3600 * 1000 * 2.5);\n    // var second = new Date(1478412000000);\n    // var allDays = Math.floor(second / ONE_DAY) - Math.floor(first / ONE_DAY) + 1;\n    // ```\n    // will get wrong result because of DST. So we should fix it.\n\n    var date = new Date(range[0].time);\n    var startDateNum = date.getDate();\n    var endDateNum = range[1].date.getDate();\n    date.setDate(startDateNum + allDay - 1); // The bias can not over a month, so just compare date.\n\n    var dateNum = date.getDate();\n\n    if (dateNum !== endDateNum) {\n      var sign = date.getTime() - range[1].time > 0 ? 1 : -1;\n\n      while ((dateNum = date.getDate()) !== endDateNum && (date.getTime() - range[1].time) * sign > 0) {\n        allDay -= sign;\n        date.setDate(dateNum - sign);\n      }\n    }\n\n    var weeks = Math.floor((allDay + range[0].day + 6) / 7);\n    var nthWeek = reversed ? -weeks + 1 : weeks - 1;\n    reversed && range.reverse();\n    return {\n      range: [range[0].formatedDate, range[1].formatedDate],\n      start: range[0],\n      end: range[1],\n      allDay: allDay,\n      weeks: weeks,\n      // From 0.\n      nthWeek: nthWeek,\n      fweek: range[0].day,\n      lweek: range[1].day\n    };\n  },\n\n  /**\n   * get date by nthWeeks and week day in range\n   *\n   * @private\n   * @param  {number} nthWeek the week\n   * @param  {number} day   the week day\n   * @param  {Array} range [d1, d2]\n   * @return {Object}\n   */\n  _getDateByWeeksAndDay: function (nthWeek, day, range) {\n    var rangeInfo = this._getRangeInfo(range);\n\n    if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) {\n      return false;\n    }\n\n    var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;\n    var date = new Date(rangeInfo.start.time);\n    date.setDate(rangeInfo.start.d + nthDay);\n    return this.getDateInfo(date);\n  }\n};\nCalendar.dimensions = Calendar.prototype.dimensions;\nCalendar.getDimensionsInfo = Calendar.prototype.getDimensionsInfo;\n\nCalendar.create = function (ecModel, api) {\n  var calendarList = [];\n  ecModel.eachComponent('calendar', function (calendarModel) {\n    var calendar = new Calendar(calendarModel, ecModel, api);\n    calendarList.push(calendar);\n    calendarModel.coordinateSystem = calendar;\n  });\n  ecModel.eachSeries(function (calendarSeries) {\n    if (calendarSeries.get('coordinateSystem') === 'calendar') {\n      // Inject coordinate system\n      calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0];\n    }\n  });\n  return calendarList;\n};\n\nfunction doConvert(methodName, ecModel, finder, value) {\n  var calendarModel = finder.calendarModel;\n  var seriesModel = finder.seriesModel;\n  var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null;\n  return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nCoordinateSystem.register('calendar', Calendar);\nvar _default = Calendar;\nmodule.exports = _default;\n\n/***/ }),\n/* 1223 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar _layout = __webpack_require__(49);\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar sizeCalculable = _layout.sizeCalculable;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CalendarModel = ComponentModel.extend({\n  type: 'calendar',\n\n  /**\n   * @type {module:echarts/coord/calendar/Calendar}\n   */\n  coordinateSystem: null,\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    left: 80,\n    top: 60,\n    cellSize: 20,\n    // horizontal vertical\n    orient: 'horizontal',\n    // month separate line style\n    splitLine: {\n      show: true,\n      lineStyle: {\n        color: '#000',\n        width: 1,\n        type: 'solid'\n      }\n    },\n    // rect style  temporarily unused emphasis\n    itemStyle: {\n      color: '#fff',\n      borderWidth: 1,\n      borderColor: '#ccc'\n    },\n    // week text style\n    dayLabel: {\n      show: true,\n      // a week first day\n      firstDay: 0,\n      // start end\n      position: 'start',\n      margin: '50%',\n      // 50% of cellSize\n      nameMap: 'en',\n      color: '#000'\n    },\n    // month text style\n    monthLabel: {\n      show: true,\n      // start end\n      position: 'start',\n      margin: 5,\n      // center or left\n      align: 'center',\n      // cn en []\n      nameMap: 'en',\n      formatter: null,\n      color: '#000'\n    },\n    // year text style\n    yearLabel: {\n      show: true,\n      // top bottom left right\n      position: null,\n      margin: 30,\n      formatter: null,\n      color: '#ccc',\n      fontFamily: 'sans-serif',\n      fontWeight: 'bolder',\n      fontSize: 20\n    }\n  },\n\n  /**\n   * @override\n   */\n  init: function (option, parentModel, ecModel, extraOpt) {\n    var inputPositionParams = getLayoutParams(option);\n    CalendarModel.superApply(this, 'init', arguments);\n    mergeAndNormalizeLayoutParams(option, inputPositionParams);\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function (option, extraOpt) {\n    CalendarModel.superApply(this, 'mergeOption', arguments);\n    mergeAndNormalizeLayoutParams(this.option, option);\n  }\n});\n\nfunction mergeAndNormalizeLayoutParams(target, raw) {\n  // Normalize cellSize\n  var cellSize = target.cellSize;\n\n  if (!zrUtil.isArray(cellSize)) {\n    cellSize = target.cellSize = [cellSize, cellSize];\n  } else if (cellSize.length === 1) {\n    cellSize[1] = cellSize[0];\n  }\n\n  var ignoreSize = zrUtil.map([0, 1], function (hvIdx) {\n    // If user have set `width` or both `left` and `right`, cellSize\n    // will be automatically set to 'auto', otherwise the default\n    // setting of cellSize will make `width` setting not work.\n    if (sizeCalculable(raw, hvIdx)) {\n      cellSize[hvIdx] = 'auto';\n    }\n\n    return cellSize[hvIdx] != null && cellSize[hvIdx] !== 'auto';\n  });\n  mergeLayoutParam(target, raw, {\n    type: 'box',\n    ignoreSize: ignoreSize\n  });\n}\n\nvar _default = CalendarModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1224 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar formatUtil = __webpack_require__(50);\n\nvar numberUtil = __webpack_require__(26);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar MONTH_TEXT = {\n  EN: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  CN: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar WEEK_TEXT = {\n  EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  CN: ['日', '一', '二', '三', '四', '五', '六']\n};\n\nvar _default = echarts.extendComponentView({\n  type: 'calendar',\n\n  /**\n   * top/left line points\n   *  @private\n   */\n  _tlpoints: null,\n\n  /**\n   * bottom/right line points\n   *  @private\n   */\n  _blpoints: null,\n\n  /**\n   * first day of month\n   *  @private\n   */\n  _firstDayOfMonth: null,\n\n  /**\n   * first day point of month\n   *  @private\n   */\n  _firstDayPoints: null,\n  render: function (calendarModel, ecModel, api) {\n    var group = this.group;\n    group.removeAll();\n    var coordSys = calendarModel.coordinateSystem; // range info\n\n    var rangeData = coordSys.getRangeInfo();\n    var orient = coordSys.getOrient();\n\n    this._renderDayRect(calendarModel, rangeData, group); // _renderLines must be called prior to following function\n\n\n    this._renderLines(calendarModel, rangeData, orient, group);\n\n    this._renderYearText(calendarModel, rangeData, orient, group);\n\n    this._renderMonthText(calendarModel, orient, group);\n\n    this._renderWeekText(calendarModel, rangeData, orient, group);\n  },\n  // render day rect\n  _renderDayRect: function (calendarModel, rangeData, group) {\n    var coordSys = calendarModel.coordinateSystem;\n    var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\n    var sw = coordSys.getCellWidth();\n    var sh = coordSys.getCellHeight();\n\n    for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\n      var point = coordSys.dataToRect([i], false).tl; // every rect\n\n      var rect = new graphic.Rect({\n        shape: {\n          x: point[0],\n          y: point[1],\n          width: sw,\n          height: sh\n        },\n        cursor: 'default',\n        style: itemRectStyleModel\n      });\n      group.add(rect);\n    }\n  },\n  // render separate line\n  _renderLines: function (calendarModel, rangeData, orient, group) {\n    var self = this;\n    var coordSys = calendarModel.coordinateSystem;\n    var lineStyleModel = calendarModel.getModel('splitLine.lineStyle').getLineStyle();\n    var show = calendarModel.get('splitLine.show');\n    var lineWidth = lineStyleModel.lineWidth;\n    this._tlpoints = [];\n    this._blpoints = [];\n    this._firstDayOfMonth = [];\n    this._firstDayPoints = [];\n    var firstDay = rangeData.start;\n\n    for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\n      addPoints(firstDay.formatedDate);\n\n      if (i === 0) {\n        firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\n      }\n\n      var date = firstDay.date;\n      date.setMonth(date.getMonth() + 1);\n      firstDay = coordSys.getDateInfo(date);\n    }\n\n    addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\n\n    function addPoints(date) {\n      self._firstDayOfMonth.push(coordSys.getDateInfo(date));\n\n      self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\n\n      var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\n\n      self._tlpoints.push(points[0]);\n\n      self._blpoints.push(points[points.length - 1]);\n\n      show && self._drawSplitline(points, lineStyleModel, group);\n    } // render top/left line\n\n\n    show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); // render bottom/right line\n\n    show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\n  },\n  // get points at both ends\n  _getEdgesPoints: function (points, lineWidth, orient) {\n    var rs = [points[0].slice(), points[points.length - 1].slice()];\n    var idx = orient === 'horizontal' ? 0 : 1; // both ends of the line are extend half lineWidth\n\n    rs[0][idx] = rs[0][idx] - lineWidth / 2;\n    rs[1][idx] = rs[1][idx] + lineWidth / 2;\n    return rs;\n  },\n  // render split line\n  _drawSplitline: function (points, lineStyleModel, group) {\n    var poyline = new graphic.Polyline({\n      z2: 20,\n      shape: {\n        points: points\n      },\n      style: lineStyleModel\n    });\n    group.add(poyline);\n  },\n  // render month line of one week points\n  _getLinePointsOfOneWeek: function (calendarModel, date, orient) {\n    var coordSys = calendarModel.coordinateSystem;\n    date = coordSys.getDateInfo(date);\n    var points = [];\n\n    for (var i = 0; i < 7; i++) {\n      var tmpD = coordSys.getNextNDay(date.time, i);\n      var point = coordSys.dataToRect([tmpD.time], false);\n      points[2 * tmpD.day] = point.tl;\n      points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\n    }\n\n    return points;\n  },\n  _formatterLabel: function (formatter, params) {\n    if (typeof formatter === 'string' && formatter) {\n      return formatUtil.formatTplSimple(formatter, params);\n    }\n\n    if (typeof formatter === 'function') {\n      return formatter(params);\n    }\n\n    return params.nameMap;\n  },\n  _yearTextPositionControl: function (textEl, point, orient, position, margin) {\n    point = point.slice();\n    var aligns = ['center', 'bottom'];\n\n    if (position === 'bottom') {\n      point[1] += margin;\n      aligns = ['center', 'top'];\n    } else if (position === 'left') {\n      point[0] -= margin;\n    } else if (position === 'right') {\n      point[0] += margin;\n      aligns = ['center', 'top'];\n    } else {\n      // top\n      point[1] -= margin;\n    }\n\n    var rotate = 0;\n\n    if (position === 'left' || position === 'right') {\n      rotate = Math.PI / 2;\n    }\n\n    return {\n      rotation: rotate,\n      position: point,\n      style: {\n        textAlign: aligns[0],\n        textVerticalAlign: aligns[1]\n      }\n    };\n  },\n  // render year\n  _renderYearText: function (calendarModel, rangeData, orient, group) {\n    var yearLabel = calendarModel.getModel('yearLabel');\n\n    if (!yearLabel.get('show')) {\n      return;\n    }\n\n    var margin = yearLabel.get('margin');\n    var pos = yearLabel.get('position');\n\n    if (!pos) {\n      pos = orient !== 'horizontal' ? 'top' : 'left';\n    }\n\n    var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\n    var xc = (points[0][0] + points[1][0]) / 2;\n    var yc = (points[0][1] + points[1][1]) / 2;\n    var idx = orient === 'horizontal' ? 0 : 1;\n    var posPoints = {\n      top: [xc, points[idx][1]],\n      bottom: [xc, points[1 - idx][1]],\n      left: [points[1 - idx][0], yc],\n      right: [points[idx][0], yc]\n    };\n    var name = rangeData.start.y;\n\n    if (+rangeData.end.y > +rangeData.start.y) {\n      name = name + '-' + rangeData.end.y;\n    }\n\n    var formatter = yearLabel.get('formatter');\n    var params = {\n      start: rangeData.start.y,\n      end: rangeData.end.y,\n      nameMap: name\n    };\n\n    var content = this._formatterLabel(formatter, params);\n\n    var yearText = new graphic.Text({\n      z2: 30\n    });\n    graphic.setTextStyle(yearText.style, yearLabel, {\n      text: content\n    }), yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\n    group.add(yearText);\n  },\n  _monthTextPositionControl: function (point, isCenter, orient, position, margin) {\n    var align = 'left';\n    var vAlign = 'top';\n    var x = point[0];\n    var y = point[1];\n\n    if (orient === 'horizontal') {\n      y = y + margin;\n\n      if (isCenter) {\n        align = 'center';\n      }\n\n      if (position === 'start') {\n        vAlign = 'bottom';\n      }\n    } else {\n      x = x + margin;\n\n      if (isCenter) {\n        vAlign = 'middle';\n      }\n\n      if (position === 'start') {\n        align = 'right';\n      }\n    }\n\n    return {\n      x: x,\n      y: y,\n      textAlign: align,\n      textVerticalAlign: vAlign\n    };\n  },\n  // render month and year text\n  _renderMonthText: function (calendarModel, orient, group) {\n    var monthLabel = calendarModel.getModel('monthLabel');\n\n    if (!monthLabel.get('show')) {\n      return;\n    }\n\n    var nameMap = monthLabel.get('nameMap');\n    var margin = monthLabel.get('margin');\n    var pos = monthLabel.get('position');\n    var align = monthLabel.get('align');\n    var termPoints = [this._tlpoints, this._blpoints];\n\n    if (zrUtil.isString(nameMap)) {\n      nameMap = MONTH_TEXT[nameMap.toUpperCase()] || [];\n    }\n\n    var idx = pos === 'start' ? 0 : 1;\n    var axis = orient === 'horizontal' ? 0 : 1;\n    margin = pos === 'start' ? -margin : margin;\n    var isCenter = align === 'center';\n\n    for (var i = 0; i < termPoints[idx].length - 1; i++) {\n      var tmp = termPoints[idx][i].slice();\n      var firstDay = this._firstDayOfMonth[i];\n\n      if (isCenter) {\n        var firstDayPoints = this._firstDayPoints[i];\n        tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\n      }\n\n      var formatter = monthLabel.get('formatter');\n      var name = nameMap[+firstDay.m - 1];\n      var params = {\n        yyyy: firstDay.y,\n        yy: (firstDay.y + '').slice(2),\n        MM: firstDay.m,\n        M: +firstDay.m,\n        nameMap: name\n      };\n\n      var content = this._formatterLabel(formatter, params);\n\n      var monthText = new graphic.Text({\n        z2: 30\n      });\n      zrUtil.extend(graphic.setTextStyle(monthText.style, monthLabel, {\n        text: content\n      }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin));\n      group.add(monthText);\n    }\n  },\n  _weekTextPositionControl: function (point, orient, position, margin, cellSize) {\n    var align = 'center';\n    var vAlign = 'middle';\n    var x = point[0];\n    var y = point[1];\n    var isStart = position === 'start';\n\n    if (orient === 'horizontal') {\n      x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\n      align = isStart ? 'right' : 'left';\n    } else {\n      y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\n      vAlign = isStart ? 'bottom' : 'top';\n    }\n\n    return {\n      x: x,\n      y: y,\n      textAlign: align,\n      textVerticalAlign: vAlign\n    };\n  },\n  // render weeks\n  _renderWeekText: function (calendarModel, rangeData, orient, group) {\n    var dayLabel = calendarModel.getModel('dayLabel');\n\n    if (!dayLabel.get('show')) {\n      return;\n    }\n\n    var coordSys = calendarModel.coordinateSystem;\n    var pos = dayLabel.get('position');\n    var nameMap = dayLabel.get('nameMap');\n    var margin = dayLabel.get('margin');\n    var firstDayOfWeek = coordSys.getFirstDayOfWeek();\n\n    if (zrUtil.isString(nameMap)) {\n      nameMap = WEEK_TEXT[nameMap.toUpperCase()] || [];\n    }\n\n    var start = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;\n    var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\n    margin = numberUtil.parsePercent(margin, cellSize[orient === 'horizontal' ? 0 : 1]);\n\n    if (pos === 'start') {\n      start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\n      margin = -margin;\n    }\n\n    for (var i = 0; i < 7; i++) {\n      var tmpD = coordSys.getNextNDay(start, i);\n      var point = coordSys.dataToRect([tmpD.time], false).center;\n      var day = i;\n      day = Math.abs((i + firstDayOfWeek) % 7);\n      var weekText = new graphic.Text({\n        z2: 30\n      });\n      zrUtil.extend(graphic.setTextStyle(weekText.style, dayLabel, {\n        text: nameMap[day]\n      }), this._weekTextPositionControl(point, orient, pos, margin, cellSize));\n      group.add(weekText);\n    }\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1225 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar modelUtil = __webpack_require__(31);\n\nvar graphicUtil = __webpack_require__(23);\n\nvar layoutUtil = __webpack_require__(49);\n\nvar _number = __webpack_require__(26);\n\nvar parsePercent = _number.parsePercent;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _nonShapeGraphicElements = {\n  // Reserved but not supported in graphic component.\n  path: null,\n  compoundPath: null,\n  // Supported in graphic component.\n  group: graphicUtil.Group,\n  image: graphicUtil.Image,\n  text: graphicUtil.Text\n}; // -------------\n// Preprocessor\n// -------------\n\necharts.registerPreprocessor(function (option) {\n  var graphicOption = option.graphic; // Convert\n  // {graphic: [{left: 10, type: 'circle'}, ...]}\n  // or\n  // {graphic: {left: 10, type: 'circle'}}\n  // to\n  // {graphic: [{elements: [{left: 10, type: 'circle'}, ...]}]}\n\n  if (zrUtil.isArray(graphicOption)) {\n    if (!graphicOption[0] || !graphicOption[0].elements) {\n      option.graphic = [{\n        elements: graphicOption\n      }];\n    } else {\n      // Only one graphic instance can be instantiated. (We dont\n      // want that too many views are created in echarts._viewMap)\n      option.graphic = [option.graphic[0]];\n    }\n  } else if (graphicOption && !graphicOption.elements) {\n    option.graphic = [{\n      elements: [graphicOption]\n    }];\n  }\n}); // ------\n// Model\n// ------\n\nvar GraphicModel = echarts.extendComponentModel({\n  type: 'graphic',\n  defaultOption: {\n    // Extra properties for each elements:\n    //\n    // left/right/top/bottom: (like 12, '22%', 'center', default undefined)\n    //      If left/rigth is set, shape.x/shape.cx/position will not be used.\n    //      If top/bottom is set, shape.y/shape.cy/position will not be used.\n    //      This mechanism is useful when you want to position a group/element\n    //      against the right side or the center of this container.\n    //\n    // width/height: (can only be pixel value, default 0)\n    //      Only be used to specify contianer(group) size, if needed. And\n    //      can not be percentage value (like '33%'). See the reason in the\n    //      layout algorithm below.\n    //\n    // bounding: (enum: 'all' (default) | 'raw')\n    //      Specify how to calculate boundingRect when locating.\n    //      'all': Get uioned and transformed boundingRect\n    //          from both itself and its descendants.\n    //          This mode simplies confining a group of elements in the bounding\n    //          of their ancester container (e.g., using 'right: 0').\n    //      'raw': Only use the boundingRect of itself and before transformed.\n    //          This mode is similar to css behavior, which is useful when you\n    //          want an element to be able to overflow its container. (Consider\n    //          a rotated circle needs to be located in a corner.)\n    // info: custom info. enables user to mount some info on elements and use them\n    //      in event handlers. Update them only when user specified, otherwise, remain.\n    // Note: elements is always behind its ancestors in this elements array.\n    elements: [],\n    parentId: null\n  },\n\n  /**\n   * Save el options for the sake of the performance (only update modified graphics).\n   * The order is the same as those in option. (ancesters -> descendants)\n   *\n   * @private\n   * @type {Array.<Object>}\n   */\n  _elOptionsToUpdate: null,\n\n  /**\n   * @override\n   */\n  mergeOption: function (option) {\n    // Prevent default merge to elements\n    var elements = this.option.elements;\n    this.option.elements = null;\n    GraphicModel.superApply(this, 'mergeOption', arguments);\n    this.option.elements = elements;\n  },\n\n  /**\n   * @override\n   */\n  optionUpdated: function (newOption, isInit) {\n    var thisOption = this.option;\n    var newList = (isInit ? thisOption : newOption).elements;\n    var existList = thisOption.elements = isInit ? [] : thisOption.elements;\n    var flattenedList = [];\n\n    this._flatten(newList, flattenedList);\n\n    var mappingResult = modelUtil.mappingToExists(existList, flattenedList);\n    modelUtil.makeIdAndName(mappingResult); // Clear elOptionsToUpdate\n\n    var elOptionsToUpdate = this._elOptionsToUpdate = [];\n    zrUtil.each(mappingResult, function (resultItem, index) {\n      var newElOption = resultItem.option;\n\n      if (!newElOption) {\n        return;\n      }\n\n      elOptionsToUpdate.push(newElOption);\n      setKeyInfoToNewElOption(resultItem, newElOption);\n      mergeNewElOptionToExist(existList, index, newElOption);\n      setLayoutInfoToExist(existList[index], newElOption);\n    }, this); // Clean\n\n    for (var i = existList.length - 1; i >= 0; i--) {\n      if (existList[i] == null) {\n        existList.splice(i, 1);\n      } else {\n        // $action should be volatile, otherwise option gotten from\n        // `getOption` will contain unexpected $action.\n        delete existList[i].$action;\n      }\n    }\n  },\n\n  /**\n   * Convert\n   * [{\n   *  type: 'group',\n   *  id: 'xx',\n   *  children: [{type: 'circle'}, {type: 'polygon'}]\n   * }]\n   * to\n   * [\n   *  {type: 'group', id: 'xx'},\n   *  {type: 'circle', parentId: 'xx'},\n   *  {type: 'polygon', parentId: 'xx'}\n   * ]\n   *\n   * @private\n   * @param {Array.<Object>} optionList option list\n   * @param {Array.<Object>} result result of flatten\n   * @param {Object} parentOption parent option\n   */\n  _flatten: function (optionList, result, parentOption) {\n    zrUtil.each(optionList, function (option) {\n      if (!option) {\n        return;\n      }\n\n      if (parentOption) {\n        option.parentOption = parentOption;\n      }\n\n      result.push(option);\n      var children = option.children;\n\n      if (option.type === 'group' && children) {\n        this._flatten(children, result, option);\n      } // Deleting for JSON output, and for not affecting group creation.\n\n\n      delete option.children;\n    }, this);\n  },\n  // FIXME\n  // Pass to view using payload? setOption has a payload?\n  useElOptionsToUpdate: function () {\n    var els = this._elOptionsToUpdate; // Clear to avoid render duplicately when zooming.\n\n    this._elOptionsToUpdate = null;\n    return els;\n  }\n}); // -----\n// View\n// -----\n\necharts.extendComponentView({\n  type: 'graphic',\n\n  /**\n   * @override\n   */\n  init: function (ecModel, api) {\n    /**\n     * @private\n     * @type {module:zrender/core/util.HashMap}\n     */\n    this._elMap = zrUtil.createHashMap();\n    /**\n     * @private\n     * @type {module:echarts/graphic/GraphicModel}\n     */\n\n    this._lastGraphicModel;\n  },\n\n  /**\n   * @override\n   */\n  render: function (graphicModel, ecModel, api) {\n    // Having leveraged between use cases and algorithm complexity, a very\n    // simple layout mechanism is used:\n    // The size(width/height) can be determined by itself or its parent (not\n    // implemented yet), but can not by its children. (Top-down travel)\n    // The location(x/y) can be determined by the bounding rect of itself\n    // (can including its descendants or not) and the size of its parent.\n    // (Bottom-up travel)\n    // When `chart.clear()` or `chart.setOption({...}, true)` with the same id,\n    // view will be reused.\n    if (graphicModel !== this._lastGraphicModel) {\n      this._clear();\n    }\n\n    this._lastGraphicModel = graphicModel;\n\n    this._updateElements(graphicModel);\n\n    this._relocate(graphicModel, api);\n  },\n\n  /**\n   * Update graphic elements.\n   *\n   * @private\n   * @param {Object} graphicModel graphic model\n   */\n  _updateElements: function (graphicModel) {\n    var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();\n\n    if (!elOptionsToUpdate) {\n      return;\n    }\n\n    var elMap = this._elMap;\n    var rootGroup = this.group; // Top-down tranverse to assign graphic settings to each elements.\n\n    zrUtil.each(elOptionsToUpdate, function (elOption) {\n      var $action = elOption.$action;\n      var id = elOption.id;\n      var existEl = elMap.get(id);\n      var parentId = elOption.parentId;\n      var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;\n      var elOptionStyle = elOption.style;\n\n      if (elOption.type === 'text' && elOptionStyle) {\n        // In top/bottom mode, textVerticalAlign should not be used, which cause\n        // inaccurately locating.\n        if (elOption.hv && elOption.hv[1]) {\n          elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = null;\n        } // Compatible with previous setting: both support fill and textFill,\n        // stroke and textStroke.\n\n\n        !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n        !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n      } // Remove unnecessary props to avoid potential problems.\n\n\n      var elOptionCleaned = getCleanedElOption(elOption); // For simple, do not support parent change, otherwise reorder is needed.\n\n      if (!$action || $action === 'merge') {\n        existEl ? existEl.attr(elOptionCleaned) : createEl(id, targetElParent, elOptionCleaned, elMap);\n      } else if ($action === 'replace') {\n        removeEl(existEl, elMap);\n        createEl(id, targetElParent, elOptionCleaned, elMap);\n      } else if ($action === 'remove') {\n        removeEl(existEl, elMap);\n      }\n\n      var el = elMap.get(id);\n\n      if (el) {\n        el.__ecGraphicWidthOption = elOption.width;\n        el.__ecGraphicHeightOption = elOption.height;\n        setEventData(el, graphicModel, elOption);\n      }\n    });\n  },\n\n  /**\n   * Locate graphic elements.\n   *\n   * @private\n   * @param {Object} graphicModel graphic model\n   * @param {module:echarts/ExtensionAPI} api extension API\n   */\n  _relocate: function (graphicModel, api) {\n    var elOptions = graphicModel.option.elements;\n    var rootGroup = this.group;\n    var elMap = this._elMap;\n    var apiWidth = api.getWidth();\n    var apiHeight = api.getHeight(); // Top-down to calculate percentage width/height of group\n\n    for (var i = 0; i < elOptions.length; i++) {\n      var elOption = elOptions[i];\n      var el = elMap.get(elOption.id);\n\n      if (!el || !el.isGroup) {\n        continue;\n      }\n\n      var parentEl = el.parent;\n      var isParentRoot = parentEl === rootGroup; // Like 'position:absolut' in css, default 0.\n\n      el.__ecGraphicWidth = parsePercent(el.__ecGraphicWidthOption, isParentRoot ? apiWidth : parentEl.__ecGraphicWidth) || 0;\n      el.__ecGraphicHeight = parsePercent(el.__ecGraphicHeightOption, isParentRoot ? apiHeight : parentEl.__ecGraphicHeight) || 0;\n    } // Bottom-up tranvese all elements (consider ec resize) to locate elements.\n\n\n    for (var i = elOptions.length - 1; i >= 0; i--) {\n      var elOption = elOptions[i];\n      var el = elMap.get(elOption.id);\n\n      if (!el) {\n        continue;\n      }\n\n      var parentEl = el.parent;\n      var containerInfo = parentEl === rootGroup ? {\n        width: apiWidth,\n        height: apiHeight\n      } : {\n        width: parentEl.__ecGraphicWidth,\n        height: parentEl.__ecGraphicHeight\n      }; // PENDING\n      // Currently, when `bounding: 'all'`, the union bounding rect of the group\n      // does not include the rect of [0, 0, group.width, group.height], which\n      // is probably weird for users. Should we make a break change for it?\n\n      layoutUtil.positionElement(el, elOption, containerInfo, null, {\n        hv: elOption.hv,\n        boundingMode: elOption.bounding\n      });\n    }\n  },\n\n  /**\n   * Clear all elements.\n   *\n   * @private\n   */\n  _clear: function () {\n    var elMap = this._elMap;\n    elMap.each(function (el) {\n      removeEl(el, elMap);\n    });\n    this._elMap = zrUtil.createHashMap();\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    this._clear();\n  }\n});\n\nfunction createEl(id, targetElParent, elOption, elMap) {\n  var graphicType = elOption.type;\n  var Clz = _nonShapeGraphicElements.hasOwnProperty(graphicType) // Those graphic elements are not shapes. They should not be\n  // overwritten by users, so do them first.\n  ? _nonShapeGraphicElements[graphicType] : graphicUtil.getShapeClass(graphicType);\n  var el = new Clz(elOption);\n  targetElParent.add(el);\n  elMap.set(id, el);\n  el.__ecGraphicId = id;\n}\n\nfunction removeEl(existEl, elMap) {\n  var existElParent = existEl && existEl.parent;\n\n  if (existElParent) {\n    existEl.type === 'group' && existEl.traverse(function (el) {\n      removeEl(el, elMap);\n    });\n    elMap.removeKey(existEl.__ecGraphicId);\n    existElParent.remove(existEl);\n  }\n} // Remove unnecessary props to avoid potential problems.\n\n\nfunction getCleanedElOption(elOption) {\n  elOption = zrUtil.extend({}, elOption);\n  zrUtil.each(['id', 'parentId', '$action', 'hv', 'bounding'].concat(layoutUtil.LOCATION_PARAMS), function (name) {\n    delete elOption[name];\n  });\n  return elOption;\n}\n\nfunction isSetLoc(obj, props) {\n  var isSet;\n  zrUtil.each(props, function (prop) {\n    obj[prop] != null && obj[prop] !== 'auto' && (isSet = true);\n  });\n  return isSet;\n}\n\nfunction setKeyInfoToNewElOption(resultItem, newElOption) {\n  var existElOption = resultItem.exist; // Set id and type after id assigned.\n\n  newElOption.id = resultItem.keyInfo.id;\n  !newElOption.type && existElOption && (newElOption.type = existElOption.type); // Set parent id if not specified\n\n  if (newElOption.parentId == null) {\n    var newElParentOption = newElOption.parentOption;\n\n    if (newElParentOption) {\n      newElOption.parentId = newElParentOption.id;\n    } else if (existElOption) {\n      newElOption.parentId = existElOption.parentId;\n    }\n  } // Clear\n\n\n  newElOption.parentOption = null;\n}\n\nfunction mergeNewElOptionToExist(existList, index, newElOption) {\n  // Update existing options, for `getOption` feature.\n  var newElOptCopy = zrUtil.extend({}, newElOption);\n  var existElOption = existList[index];\n  var $action = newElOption.$action || 'merge';\n\n  if ($action === 'merge') {\n    if (existElOption) {\n      // We can ensure that newElOptCopy and existElOption are not\n      // the same object, so `merge` will not change newElOptCopy.\n      zrUtil.merge(existElOption, newElOptCopy, true); // Rigid body, use ignoreSize.\n\n      layoutUtil.mergeLayoutParam(existElOption, newElOptCopy, {\n        ignoreSize: true\n      }); // Will be used in render.\n\n      layoutUtil.copyLayoutParams(newElOption, existElOption);\n    } else {\n      existList[index] = newElOptCopy;\n    }\n  } else if ($action === 'replace') {\n    existList[index] = newElOptCopy;\n  } else if ($action === 'remove') {\n    // null will be cleaned later.\n    existElOption && (existList[index] = null);\n  }\n}\n\nfunction setLayoutInfoToExist(existItem, newElOption) {\n  if (!existItem) {\n    return;\n  }\n\n  existItem.hv = newElOption.hv = [// Rigid body, dont care `width`.\n  isSetLoc(newElOption, ['left', 'right']), // Rigid body, dont care `height`.\n  isSetLoc(newElOption, ['top', 'bottom'])]; // Give default group size. Otherwise layout error may occur.\n\n  if (existItem.type === 'group') {\n    existItem.width == null && (existItem.width = newElOption.width = 0);\n    existItem.height == null && (existItem.height = newElOption.height = 0);\n  }\n}\n\nfunction setEventData(el, graphicModel, elOption) {\n  var eventData = el.eventData; // Simple optimize for large amount of elements that no need event.\n\n  if (!el.silent && !el.ignore && !eventData) {\n    eventData = el.eventData = {\n      componentType: 'graphic',\n      componentIndex: graphicModel.componentIndex,\n      name: el.name\n    };\n  } // `elOption.info` enables user to mount some info on\n  // elements and use them in event handlers.\n\n\n  if (eventData) {\n    eventData.info = el.info;\n  }\n}\n\n/***/ }),\n/* 1226 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(1227);\n\n__webpack_require__(1228);\n\n__webpack_require__(1229);\n\n__webpack_require__(1230);\n\n__webpack_require__(1231);\n\n__webpack_require__(1232);\n\n__webpack_require__(1237);\n\n/***/ }),\n/* 1227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar featureManager = __webpack_require__(157);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ToolboxModel = echarts.extendComponentModel({\n  type: 'toolbox',\n  layoutMode: {\n    type: 'box',\n    ignoreSize: true\n  },\n  optionUpdated: function () {\n    ToolboxModel.superApply(this, 'optionUpdated', arguments);\n    zrUtil.each(this.option.feature, function (featureOpt, featureName) {\n      var Feature = featureManager.get(featureName);\n      Feature && zrUtil.merge(featureOpt, Feature.defaultOption);\n    });\n  },\n  defaultOption: {\n    show: true,\n    z: 6,\n    zlevel: 0,\n    orient: 'horizontal',\n    left: 'right',\n    top: 'top',\n    // right\n    // bottom\n    backgroundColor: 'transparent',\n    borderColor: '#ccc',\n    borderRadius: 0,\n    borderWidth: 0,\n    padding: 5,\n    itemSize: 15,\n    itemGap: 8,\n    showTitle: true,\n    iconStyle: {\n      borderColor: '#666',\n      color: 'none'\n    },\n    emphasis: {\n      iconStyle: {\n        borderColor: '#3E98C5'\n      }\n    },\n    // textStyle: {},\n    // feature\n    tooltip: {\n      show: false\n    }\n  }\n});\nvar _default = ToolboxModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1228 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar textContain = __webpack_require__(108);\n\nvar featureManager = __webpack_require__(157);\n\nvar graphic = __webpack_require__(23);\n\nvar Model = __webpack_require__(67);\n\nvar DataDiffer = __webpack_require__(180);\n\nvar listComponentHelper = __webpack_require__(611);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n  type: 'toolbox',\n  render: function (toolboxModel, ecModel, api, payload) {\n    var group = this.group;\n    group.removeAll();\n\n    if (!toolboxModel.get('show')) {\n      return;\n    }\n\n    var itemSize = +toolboxModel.get('itemSize');\n    var featureOpts = toolboxModel.get('feature') || {};\n    var features = this._features || (this._features = {});\n    var featureNames = [];\n    zrUtil.each(featureOpts, function (opt, name) {\n      featureNames.push(name);\n    });\n    new DataDiffer(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(zrUtil.curry(processFeature, null)).execute(); // Keep for diff.\n\n    this._featureNames = featureNames;\n\n    function processFeature(newIndex, oldIndex) {\n      var featureName = featureNames[newIndex];\n      var oldName = featureNames[oldIndex];\n      var featureOpt = featureOpts[featureName];\n      var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel);\n      var feature; // FIX#11236, merge feature title from MagicType newOption. TODO: consider seriesIndex ?\n\n      if (payload && payload.newTitle != null && payload.featureName === featureName) {\n        featureOpt.title = payload.newTitle;\n      }\n\n      if (featureName && !oldName) {\n        // Create\n        if (isUserFeatureName(featureName)) {\n          feature = {\n            model: featureModel,\n            onclick: featureModel.option.onclick,\n            featureName: featureName\n          };\n        } else {\n          var Feature = featureManager.get(featureName);\n\n          if (!Feature) {\n            return;\n          }\n\n          feature = new Feature(featureModel, ecModel, api);\n        }\n\n        features[featureName] = feature;\n      } else {\n        feature = features[oldName]; // If feature does not exsit.\n\n        if (!feature) {\n          return;\n        }\n\n        feature.model = featureModel;\n        feature.ecModel = ecModel;\n        feature.api = api;\n      }\n\n      if (!featureName && oldName) {\n        feature.dispose && feature.dispose(ecModel, api);\n        return;\n      }\n\n      if (!featureModel.get('show') || feature.unusable) {\n        feature.remove && feature.remove(ecModel, api);\n        return;\n      }\n\n      createIconPaths(featureModel, feature, featureName);\n\n      featureModel.setIconStatus = function (iconName, status) {\n        var option = this.option;\n        var iconPaths = this.iconPaths;\n        option.iconStatus = option.iconStatus || {};\n        option.iconStatus[iconName] = status; // FIXME\n\n        iconPaths[iconName] && iconPaths[iconName].trigger(status);\n      };\n\n      if (feature.render) {\n        feature.render(featureModel, ecModel, api, payload);\n      }\n    }\n\n    function createIconPaths(featureModel, feature, featureName) {\n      var iconStyleModel = featureModel.getModel('iconStyle');\n      var iconStyleEmphasisModel = featureModel.getModel('emphasis.iconStyle'); // If one feature has mutiple icon. they are orginaized as\n      // {\n      //     icon: {\n      //         foo: '',\n      //         bar: ''\n      //     },\n      //     title: {\n      //         foo: '',\n      //         bar: ''\n      //     }\n      // }\n\n      var icons = feature.getIcons ? feature.getIcons() : featureModel.get('icon');\n      var titles = featureModel.get('title') || {};\n\n      if (typeof icons === 'string') {\n        var icon = icons;\n        var title = titles;\n        icons = {};\n        titles = {};\n        icons[featureName] = icon;\n        titles[featureName] = title;\n      }\n\n      var iconPaths = featureModel.iconPaths = {};\n      zrUtil.each(icons, function (iconStr, iconName) {\n        var path = graphic.createIcon(iconStr, {}, {\n          x: -itemSize / 2,\n          y: -itemSize / 2,\n          width: itemSize,\n          height: itemSize\n        });\n        path.setStyle(iconStyleModel.getItemStyle());\n        path.hoverStyle = iconStyleEmphasisModel.getItemStyle(); // Text position calculation\n\n        path.setStyle({\n          text: titles[iconName],\n          textAlign: iconStyleEmphasisModel.get('textAlign'),\n          textBorderRadius: iconStyleEmphasisModel.get('textBorderRadius'),\n          textPadding: iconStyleEmphasisModel.get('textPadding'),\n          textFill: null\n        });\n        var tooltipModel = toolboxModel.getModel('tooltip');\n\n        if (tooltipModel && tooltipModel.get('show')) {\n          path.attr('tooltip', zrUtil.extend({\n            content: titles[iconName],\n            formatter: tooltipModel.get('formatter', true) || function () {\n              return titles[iconName];\n            },\n            formatterParams: {\n              componentType: 'toolbox',\n              name: iconName,\n              title: titles[iconName],\n              $vars: ['name', 'title']\n            },\n            position: tooltipModel.get('position', true) || 'bottom'\n          }, tooltipModel.option));\n        }\n\n        graphic.setHoverStyle(path);\n\n        if (toolboxModel.get('showTitle')) {\n          path.__title = titles[iconName];\n          path.on('mouseover', function () {\n            // Should not reuse above hoverStyle, which might be modified.\n            var hoverStyle = iconStyleEmphasisModel.getItemStyle();\n            var defaultTextPosition = toolboxModel.get('orient') === 'vertical' ? toolboxModel.get('right') == null ? 'right' : 'left' : toolboxModel.get('bottom') == null ? 'bottom' : 'top';\n            path.setStyle({\n              textFill: iconStyleEmphasisModel.get('textFill') || hoverStyle.fill || hoverStyle.stroke || '#000',\n              textBackgroundColor: iconStyleEmphasisModel.get('textBackgroundColor'),\n              textPosition: iconStyleEmphasisModel.get('textPosition') || defaultTextPosition\n            });\n          }).on('mouseout', function () {\n            path.setStyle({\n              textFill: null,\n              textBackgroundColor: null\n            });\n          });\n        }\n\n        path.trigger(featureModel.get('iconStatus.' + iconName) || 'normal');\n        group.add(path);\n        path.on('click', zrUtil.bind(feature.onclick, feature, ecModel, api, iconName));\n        iconPaths[iconName] = path;\n      });\n    }\n\n    listComponentHelper.layout(group, toolboxModel, api); // Render background after group is layout\n    // FIXME\n\n    group.add(listComponentHelper.makeBackground(group.getBoundingRect(), toolboxModel)); // Adjust icon title positions to avoid them out of screen\n\n    group.eachChild(function (icon) {\n      var titleText = icon.__title;\n      var hoverStyle = icon.hoverStyle; // May be background element\n\n      if (hoverStyle && titleText) {\n        var rect = textContain.getBoundingRect(titleText, textContain.makeFont(hoverStyle));\n        var offsetX = icon.position[0] + group.position[0];\n        var offsetY = icon.position[1] + group.position[1] + itemSize;\n        var needPutOnTop = false;\n\n        if (offsetY + rect.height > api.getHeight()) {\n          hoverStyle.textPosition = 'top';\n          needPutOnTop = true;\n        }\n\n        var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 8;\n\n        if (offsetX + rect.width / 2 > api.getWidth()) {\n          hoverStyle.textPosition = ['100%', topOffset];\n          hoverStyle.textAlign = 'right';\n        } else if (offsetX - rect.width / 2 < 0) {\n          hoverStyle.textPosition = [0, topOffset];\n          hoverStyle.textAlign = 'left';\n        }\n      }\n    });\n  },\n  updateView: function (toolboxModel, ecModel, api, payload) {\n    zrUtil.each(this._features, function (feature) {\n      feature.updateView && feature.updateView(feature.model, ecModel, api, payload);\n    });\n  },\n  // updateLayout: function (toolboxModel, ecModel, api, payload) {\n  //     zrUtil.each(this._features, function (feature) {\n  //         feature.updateLayout && feature.updateLayout(feature.model, ecModel, api, payload);\n  //     });\n  // },\n  remove: function (ecModel, api) {\n    zrUtil.each(this._features, function (feature) {\n      feature.remove && feature.remove(ecModel, api);\n    });\n    this.group.removeAll();\n  },\n  dispose: function (ecModel, api) {\n    zrUtil.each(this._features, function (feature) {\n      feature.dispose && feature.dispose(ecModel, api);\n    });\n  }\n});\n\nfunction isUserFeatureName(featureName) {\n  return featureName.indexOf('my') === 0;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1229 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar env = __webpack_require__(66);\n\nvar lang = __webpack_require__(154);\n\nvar featureManager = __webpack_require__(157);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Uint8Array */\nvar saveAsImageLang = lang.toolbox.saveAsImage;\n\nfunction SaveAsImage(model) {\n  this.model = model;\n}\n\nSaveAsImage.defaultOption = {\n  show: true,\n  icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',\n  title: saveAsImageLang.title,\n  type: 'png',\n  // Default use option.backgroundColor\n  // backgroundColor: '#fff',\n  connectedBackgroundColor: '#fff',\n  name: '',\n  excludeComponents: ['toolbox'],\n  pixelRatio: 1,\n  lang: saveAsImageLang.lang.slice()\n};\nSaveAsImage.prototype.unusable = !env.canvasSupported;\nvar proto = SaveAsImage.prototype;\n\nproto.onclick = function (ecModel, api) {\n  var model = this.model;\n  var title = model.get('name') || ecModel.get('title.0.text') || 'echarts';\n  var isSvg = api.getZr().painter.getType() === 'svg';\n  var type = isSvg ? 'svg' : model.get('type', true) || 'png';\n  var url = api.getConnectedDataURL({\n    type: type,\n    backgroundColor: model.get('backgroundColor', true) || ecModel.get('backgroundColor') || '#fff',\n    connectedBackgroundColor: model.get('connectedBackgroundColor'),\n    excludeComponents: model.get('excludeComponents'),\n    pixelRatio: model.get('pixelRatio')\n  }); // Chrome and Firefox\n\n  if (typeof MouseEvent === 'function' && !env.browser.ie && !env.browser.edge) {\n    var $a = document.createElement('a');\n    $a.download = title + '.' + type;\n    $a.target = '_blank';\n    $a.href = url;\n    var evt = new MouseEvent('click', {\n      // some micro front-end framework， window maybe is a Proxy\n      view: document.defaultView,\n      bubbles: true,\n      cancelable: false\n    });\n    $a.dispatchEvent(evt);\n  } // IE\n  else {\n      if (window.navigator.msSaveOrOpenBlob) {\n        var bstr = atob(url.split(',')[1]);\n        var n = bstr.length;\n        var u8arr = new Uint8Array(n);\n\n        while (n--) {\n          u8arr[n] = bstr.charCodeAt(n);\n        }\n\n        var blob = new Blob([u8arr]);\n        window.navigator.msSaveOrOpenBlob(blob, title + '.' + type);\n      } else {\n        var lang = model.get('lang');\n        var html = '' + '<body style=\"margin:0;\">' + '<img src=\"' + url + '\" style=\"max-width:100%;\" title=\"' + (lang && lang[0] || '') + '\" />' + '</body>';\n        var tab = window.open();\n        tab.document.write(html);\n      }\n    }\n};\n\nfeatureManager.register('saveAsImage', SaveAsImage);\nvar _default = SaveAsImage;\nmodule.exports = _default;\n\n/***/ }),\n/* 1230 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar lang = __webpack_require__(154);\n\nvar featureManager = __webpack_require__(157);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar magicTypeLang = lang.toolbox.magicType;\nvar INNER_STACK_KEYWORD = '__ec_magicType_stack__';\n\nfunction MagicType(model) {\n  this.model = model;\n}\n\nMagicType.defaultOption = {\n  show: true,\n  type: [],\n  // Icon group\n  icon: {\n    /* eslint-disable */\n    line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',\n    bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',\n    stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z' // jshint ignore:line\n\n    /* eslint-enable */\n\n  },\n  // `line`, `bar`, `stack`, `tiled`\n  title: zrUtil.clone(magicTypeLang.title),\n  option: {},\n  seriesIndex: {}\n};\nvar proto = MagicType.prototype;\n\nproto.getIcons = function () {\n  var model = this.model;\n  var availableIcons = model.get('icon');\n  var icons = {};\n  zrUtil.each(model.get('type'), function (type) {\n    if (availableIcons[type]) {\n      icons[type] = availableIcons[type];\n    }\n  });\n  return icons;\n};\n\nvar seriesOptGenreator = {\n  'line': function (seriesType, seriesId, seriesModel, model) {\n    if (seriesType === 'bar') {\n      return zrUtil.merge({\n        id: seriesId,\n        type: 'line',\n        // Preserve data related option\n        data: seriesModel.get('data'),\n        stack: seriesModel.get('stack'),\n        markPoint: seriesModel.get('markPoint'),\n        markLine: seriesModel.get('markLine')\n      }, model.get('option.line') || {}, true);\n    }\n  },\n  'bar': function (seriesType, seriesId, seriesModel, model) {\n    if (seriesType === 'line') {\n      return zrUtil.merge({\n        id: seriesId,\n        type: 'bar',\n        // Preserve data related option\n        data: seriesModel.get('data'),\n        stack: seriesModel.get('stack'),\n        markPoint: seriesModel.get('markPoint'),\n        markLine: seriesModel.get('markLine')\n      }, model.get('option.bar') || {}, true);\n    }\n  },\n  'stack': function (seriesType, seriesId, seriesModel, model) {\n    var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD;\n\n    if (seriesType === 'line' || seriesType === 'bar') {\n      model.setIconStatus('stack', isStack ? 'normal' : 'emphasis');\n      return zrUtil.merge({\n        id: seriesId,\n        stack: isStack ? '' : INNER_STACK_KEYWORD\n      }, model.get('option.stack') || {}, true);\n    }\n  }\n};\nvar radioTypes = [['line', 'bar'], ['stack']];\n\nproto.onclick = function (ecModel, api, type) {\n  var model = this.model;\n  var seriesIndex = model.get('seriesIndex.' + type); // Not supported magicType\n\n  if (!seriesOptGenreator[type]) {\n    return;\n  }\n\n  var newOption = {\n    series: []\n  };\n\n  var generateNewSeriesTypes = function (seriesModel) {\n    var seriesType = seriesModel.subType;\n    var seriesId = seriesModel.id;\n    var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model);\n\n    if (newSeriesOpt) {\n      // PENDING If merge original option?\n      zrUtil.defaults(newSeriesOpt, seriesModel.option);\n      newOption.series.push(newSeriesOpt);\n    } // Modify boundaryGap\n\n\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) {\n      var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n      if (categoryAxis) {\n        var axisDim = categoryAxis.dim;\n        var axisType = axisDim + 'Axis';\n        var axisModel = ecModel.queryComponents({\n          mainType: axisType,\n          index: seriesModel.get(name + 'Index'),\n          id: seriesModel.get(name + 'Id')\n        })[0];\n        var axisIndex = axisModel.componentIndex;\n        newOption[axisType] = newOption[axisType] || [];\n\n        for (var i = 0; i <= axisIndex; i++) {\n          newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};\n        }\n\n        newOption[axisType][axisIndex].boundaryGap = type === 'bar';\n      }\n    }\n  };\n\n  zrUtil.each(radioTypes, function (radio) {\n    if (zrUtil.indexOf(radio, type) >= 0) {\n      zrUtil.each(radio, function (item) {\n        model.setIconStatus(item, 'normal');\n      });\n    }\n  });\n  model.setIconStatus(type, 'emphasis');\n  ecModel.eachComponent({\n    mainType: 'series',\n    query: seriesIndex == null ? null : {\n      seriesIndex: seriesIndex\n    }\n  }, generateNewSeriesTypes);\n  var newTitle; // Change title of stack\n\n  if (type === 'stack') {\n    var isStack = newOption.series && newOption.series[0] && newOption.series[0].stack === INNER_STACK_KEYWORD;\n    newTitle = isStack ? zrUtil.merge({\n      stack: magicTypeLang.title.tiled\n    }, magicTypeLang.title) : zrUtil.clone(magicTypeLang.title);\n  }\n\n  api.dispatchAction({\n    type: 'changeMagicType',\n    currentType: type,\n    newOption: newOption,\n    newTitle: newTitle,\n    featureName: 'magicType'\n  });\n};\n\necharts.registerAction({\n  type: 'changeMagicType',\n  event: 'magicTypeChanged',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  ecModel.mergeOption(payload.newOption);\n});\nfeatureManager.register('magicType', MagicType);\nvar _default = MagicType;\nmodule.exports = _default;\n\n/***/ }),\n/* 1231 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar eventTool = __webpack_require__(129);\n\nvar lang = __webpack_require__(154);\n\nvar featureManager = __webpack_require__(157);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar dataViewLang = lang.toolbox.dataView;\nvar BLOCK_SPLITER = new Array(60).join('-');\nvar ITEM_SPLITER = '\\t';\n/**\n * Group series into two types\n *  1. on category axis, like line, bar\n *  2. others, like scatter, pie\n * @param {module:echarts/model/Global} ecModel\n * @return {Object}\n * @inner\n */\n\nfunction groupSeries(ecModel) {\n  var seriesGroupByCategoryAxis = {};\n  var otherSeries = [];\n  var meta = [];\n  ecModel.eachRawSeries(function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) {\n      var baseAxis = coordSys.getBaseAxis();\n\n      if (baseAxis.type === 'category') {\n        var key = baseAxis.dim + '_' + baseAxis.index;\n\n        if (!seriesGroupByCategoryAxis[key]) {\n          seriesGroupByCategoryAxis[key] = {\n            categoryAxis: baseAxis,\n            valueAxis: coordSys.getOtherAxis(baseAxis),\n            series: []\n          };\n          meta.push({\n            axisDim: baseAxis.dim,\n            axisIndex: baseAxis.index\n          });\n        }\n\n        seriesGroupByCategoryAxis[key].series.push(seriesModel);\n      } else {\n        otherSeries.push(seriesModel);\n      }\n    } else {\n      otherSeries.push(seriesModel);\n    }\n  });\n  return {\n    seriesGroupByCategoryAxis: seriesGroupByCategoryAxis,\n    other: otherSeries,\n    meta: meta\n  };\n}\n/**\n * Assemble content of series on cateogory axis\n * @param {Array.<module:echarts/model/Series>} series\n * @return {string}\n * @inner\n */\n\n\nfunction assembleSeriesWithCategoryAxis(series) {\n  var tables = [];\n  zrUtil.each(series, function (group, key) {\n    var categoryAxis = group.categoryAxis;\n    var valueAxis = group.valueAxis;\n    var valueAxisDim = valueAxis.dim;\n    var headers = [' '].concat(zrUtil.map(group.series, function (series) {\n      return series.name;\n    }));\n    var columns = [categoryAxis.model.getCategories()];\n    zrUtil.each(group.series, function (series) {\n      var rawData = series.getRawData();\n      columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function (val) {\n        return val;\n      }));\n    }); // Assemble table content\n\n    var lines = [headers.join(ITEM_SPLITER)];\n\n    for (var i = 0; i < columns[0].length; i++) {\n      var items = [];\n\n      for (var j = 0; j < columns.length; j++) {\n        items.push(columns[j][i]);\n      }\n\n      lines.push(items.join(ITEM_SPLITER));\n    }\n\n    tables.push(lines.join('\\n'));\n  });\n  return tables.join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\n * Assemble content of other series\n * @param {Array.<module:echarts/model/Series>} series\n * @return {string}\n * @inner\n */\n\n\nfunction assembleOtherSeries(series) {\n  return zrUtil.map(series, function (series) {\n    var data = series.getRawData();\n    var lines = [series.name];\n    var vals = [];\n    data.each(data.dimensions, function () {\n      var argLen = arguments.length;\n      var dataIndex = arguments[argLen - 1];\n      var name = data.getName(dataIndex);\n\n      for (var i = 0; i < argLen - 1; i++) {\n        vals[i] = arguments[i];\n      }\n\n      lines.push((name ? name + ITEM_SPLITER : '') + vals.join(ITEM_SPLITER));\n    });\n    return lines.join('\\n');\n  }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\n * @param {module:echarts/model/Global}\n * @return {Object}\n * @inner\n */\n\n\nfunction getContentFromModel(ecModel) {\n  var result = groupSeries(ecModel);\n  return {\n    value: zrUtil.filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function (str) {\n      return str.replace(/[\\n\\t\\s]/g, '');\n    }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n'),\n    meta: result.meta\n  };\n}\n\nfunction trim(str) {\n  return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n}\n/**\n * If a block is tsv format\n */\n\n\nfunction isTSVFormat(block) {\n  // Simple method to find out if a block is tsv format\n  var firstLine = block.slice(0, block.indexOf('\\n'));\n\n  if (firstLine.indexOf(ITEM_SPLITER) >= 0) {\n    return true;\n  }\n}\n\nvar itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g');\n/**\n * @param {string} tsv\n * @return {Object}\n */\n\nfunction parseTSVContents(tsv) {\n  var tsvLines = tsv.split(/\\n+/g);\n  var headers = trim(tsvLines.shift()).split(itemSplitRegex);\n  var categories = [];\n  var series = zrUtil.map(headers, function (header) {\n    return {\n      name: header,\n      data: []\n    };\n  });\n\n  for (var i = 0; i < tsvLines.length; i++) {\n    var items = trim(tsvLines[i]).split(itemSplitRegex);\n    categories.push(items.shift());\n\n    for (var j = 0; j < items.length; j++) {\n      series[j] && (series[j].data[i] = items[j]);\n    }\n  }\n\n  return {\n    series: series,\n    categories: categories\n  };\n}\n/**\n * @param {string} str\n * @return {Array.<Object>}\n * @inner\n */\n\n\nfunction parseListContents(str) {\n  var lines = str.split(/\\n+/g);\n  var seriesName = trim(lines.shift());\n  var data = [];\n\n  for (var i = 0; i < lines.length; i++) {\n    // if line is empty, ignore it.\n    // there is a case that a user forgot to delete `\\n`.\n    var line = trim(lines[i]);\n\n    if (!line) {\n      continue;\n    }\n\n    var items = line.split(itemSplitRegex);\n    var name = '';\n    var value;\n    var hasName = false;\n\n    if (isNaN(items[0])) {\n      // First item is name\n      hasName = true;\n      name = items[0];\n      items = items.slice(1);\n      data[i] = {\n        name: name,\n        value: []\n      };\n      value = data[i].value;\n    } else {\n      value = data[i] = [];\n    }\n\n    for (var j = 0; j < items.length; j++) {\n      value.push(+items[j]);\n    }\n\n    if (value.length === 1) {\n      hasName ? data[i].value = value[0] : data[i] = value[0];\n    }\n  }\n\n  return {\n    name: seriesName,\n    data: data\n  };\n}\n/**\n * @param {string} str\n * @param {Array.<Object>} blockMetaList\n * @return {Object}\n * @inner\n */\n\n\nfunction parseContents(str, blockMetaList) {\n  var blocks = str.split(new RegExp('\\n*' + BLOCK_SPLITER + '\\n*', 'g'));\n  var newOption = {\n    series: []\n  };\n  zrUtil.each(blocks, function (block, idx) {\n    if (isTSVFormat(block)) {\n      var result = parseTSVContents(block);\n      var blockMeta = blockMetaList[idx];\n      var axisKey = blockMeta.axisDim + 'Axis';\n\n      if (blockMeta) {\n        newOption[axisKey] = newOption[axisKey] || [];\n        newOption[axisKey][blockMeta.axisIndex] = {\n          data: result.categories\n        };\n        newOption.series = newOption.series.concat(result.series);\n      }\n    } else {\n      var result = parseListContents(block);\n      newOption.series.push(result);\n    }\n  });\n  return newOption;\n}\n/**\n * @alias {module:echarts/component/toolbox/feature/DataView}\n * @constructor\n * @param {module:echarts/model/Model} model\n */\n\n\nfunction DataView(model) {\n  this._dom = null;\n  this.model = model;\n}\n\nDataView.defaultOption = {\n  show: true,\n  readOnly: false,\n  optionToContent: null,\n  contentToOption: null,\n  icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28',\n  title: zrUtil.clone(dataViewLang.title),\n  lang: zrUtil.clone(dataViewLang.lang),\n  backgroundColor: '#fff',\n  textColor: '#000',\n  textareaColor: '#fff',\n  textareaBorderColor: '#333',\n  buttonColor: '#c23531',\n  buttonTextColor: '#fff'\n};\n\nDataView.prototype.onclick = function (ecModel, api) {\n  var container = api.getDom();\n  var model = this.model;\n\n  if (this._dom) {\n    container.removeChild(this._dom);\n  }\n\n  var root = document.createElement('div');\n  root.style.cssText = 'position:absolute;left:5px;top:5px;bottom:5px;right:5px;';\n  root.style.backgroundColor = model.get('backgroundColor') || '#fff'; // Create elements\n\n  var header = document.createElement('h4');\n  var lang = model.get('lang') || [];\n  header.innerHTML = lang[0] || model.get('title');\n  header.style.cssText = 'margin: 10px 20px;';\n  header.style.color = model.get('textColor');\n  var viewMain = document.createElement('div');\n  var textarea = document.createElement('textarea');\n  viewMain.style.cssText = 'display:block;width:100%;overflow:auto;';\n  var optionToContent = model.get('optionToContent');\n  var contentToOption = model.get('contentToOption');\n  var result = getContentFromModel(ecModel);\n\n  if (typeof optionToContent === 'function') {\n    var htmlOrDom = optionToContent(api.getOption());\n\n    if (typeof htmlOrDom === 'string') {\n      viewMain.innerHTML = htmlOrDom;\n    } else if (zrUtil.isDom(htmlOrDom)) {\n      viewMain.appendChild(htmlOrDom);\n    }\n  } else {\n    // Use default textarea\n    viewMain.appendChild(textarea);\n    textarea.readOnly = model.get('readOnly');\n    textarea.style.cssText = 'width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;';\n    textarea.style.color = model.get('textColor');\n    textarea.style.borderColor = model.get('textareaBorderColor');\n    textarea.style.backgroundColor = model.get('textareaColor');\n    textarea.value = result.value;\n  }\n\n  var blockMetaList = result.meta;\n  var buttonContainer = document.createElement('div');\n  buttonContainer.style.cssText = 'position:absolute;bottom:0;left:0;right:0;';\n  var buttonStyle = 'float:right;margin-right:20px;border:none;' + 'cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px';\n  var closeButton = document.createElement('div');\n  var refreshButton = document.createElement('div');\n  buttonStyle += ';background-color:' + model.get('buttonColor');\n  buttonStyle += ';color:' + model.get('buttonTextColor');\n  var self = this;\n\n  function close() {\n    container.removeChild(root);\n    self._dom = null;\n  }\n\n  eventTool.addEventListener(closeButton, 'click', close);\n  eventTool.addEventListener(refreshButton, 'click', function () {\n    var newOption;\n\n    try {\n      if (typeof contentToOption === 'function') {\n        newOption = contentToOption(viewMain, api.getOption());\n      } else {\n        newOption = parseContents(textarea.value, blockMetaList);\n      }\n    } catch (e) {\n      close();\n      throw new Error('Data view format error ' + e);\n    }\n\n    if (newOption) {\n      api.dispatchAction({\n        type: 'changeDataView',\n        newOption: newOption\n      });\n    }\n\n    close();\n  });\n  closeButton.innerHTML = lang[1];\n  refreshButton.innerHTML = lang[2];\n  refreshButton.style.cssText = buttonStyle;\n  closeButton.style.cssText = buttonStyle;\n  !model.get('readOnly') && buttonContainer.appendChild(refreshButton);\n  buttonContainer.appendChild(closeButton);\n  root.appendChild(header);\n  root.appendChild(viewMain);\n  root.appendChild(buttonContainer);\n  viewMain.style.height = container.clientHeight - 80 + 'px';\n  container.appendChild(root);\n  this._dom = root;\n};\n\nDataView.prototype.remove = function (ecModel, api) {\n  this._dom && api.getDom().removeChild(this._dom);\n};\n\nDataView.prototype.dispose = function (ecModel, api) {\n  this.remove(ecModel, api);\n};\n/**\n * @inner\n */\n\n\nfunction tryMergeDataOption(newData, originalData) {\n  return zrUtil.map(newData, function (newVal, idx) {\n    var original = originalData && originalData[idx];\n\n    if (zrUtil.isObject(original) && !zrUtil.isArray(original)) {\n      var newValIsObject = zrUtil.isObject(newVal) && !zrUtil.isArray(newVal);\n\n      if (!newValIsObject) {\n        newVal = {\n          value: newVal\n        };\n      } // original data has name but new data has no name\n\n\n      var shouldDeleteName = original.name != null && newVal.name == null; // Original data has option\n\n      newVal = zrUtil.defaults(newVal, original);\n      shouldDeleteName && delete newVal.name;\n      return newVal;\n    } else {\n      return newVal;\n    }\n  });\n}\n\nfeatureManager.register('dataView', DataView);\necharts.registerAction({\n  type: 'changeDataView',\n  event: 'dataViewChanged',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  var newSeriesOptList = [];\n  zrUtil.each(payload.newOption.series, function (seriesOpt) {\n    var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];\n\n    if (!seriesModel) {\n      // New created series\n      // Geuss the series type\n      newSeriesOptList.push(zrUtil.extend({\n        // Default is scatter\n        type: 'scatter'\n      }, seriesOpt));\n    } else {\n      var originalData = seriesModel.get('data');\n      newSeriesOptList.push({\n        name: seriesOpt.name,\n        data: tryMergeDataOption(seriesOpt.data, originalData)\n      });\n    }\n  });\n  ecModel.mergeOption(zrUtil.defaults({\n    series: newSeriesOptList\n  }, payload.newOption));\n});\nvar _default = DataView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1232 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar BrushController = __webpack_require__(421);\n\nvar BrushTargetManager = __webpack_require__(612);\n\nvar history = __webpack_require__(613);\n\nvar sliderMove = __webpack_require__(218);\n\nvar lang = __webpack_require__(154);\n\nvar featureManager = __webpack_require__(157);\n\n__webpack_require__(1233);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Use dataZoomSelect\nvar dataZoomLang = lang.toolbox.dataZoom;\nvar each = zrUtil.each; // Spectial component id start with \\0ec\\0, see echarts/model/Global.js~hasInnerId\n\nvar DATA_ZOOM_ID_BASE = '\\0_ec_\\0toolbox-dataZoom_';\n\nfunction DataZoom(model, ecModel, api) {\n  /**\n   * @private\n   * @type {module:echarts/component/helper/BrushController}\n   */\n  (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)).mount();\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._isZoomActive;\n}\n\nDataZoom.defaultOption = {\n  show: true,\n  filterMode: 'filter',\n  // Icon group\n  icon: {\n    zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1',\n    back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26'\n  },\n  // `zoom`, `back`\n  title: zrUtil.clone(dataZoomLang.title),\n  brushStyle: {\n    borderWidth: 0,\n    color: 'rgba(0,0,0,0.2)'\n  }\n};\nvar proto = DataZoom.prototype;\n\nproto.render = function (featureModel, ecModel, api, payload) {\n  this.model = featureModel;\n  this.ecModel = ecModel;\n  this.api = api;\n  updateZoomBtnStatus(featureModel, ecModel, this, payload, api);\n  updateBackBtnStatus(featureModel, ecModel);\n};\n\nproto.onclick = function (ecModel, api, type) {\n  handlers[type].call(this);\n};\n\nproto.remove = function (ecModel, api) {\n  this._brushController.unmount();\n};\n\nproto.dispose = function (ecModel, api) {\n  this._brushController.dispose();\n};\n/**\n * @private\n */\n\n\nvar handlers = {\n  zoom: function () {\n    var nextActive = !this._isZoomActive;\n    this.api.dispatchAction({\n      type: 'takeGlobalCursor',\n      key: 'dataZoomSelect',\n      dataZoomSelectActive: nextActive\n    });\n  },\n  back: function () {\n    this._dispatchZoomAction(history.pop(this.ecModel));\n  }\n};\n/**\n * @private\n */\n\nproto._onBrush = function (areas, opt) {\n  if (!opt.isEnd || !areas.length) {\n    return;\n  }\n\n  var snapshot = {};\n  var ecModel = this.ecModel;\n\n  this._brushController.updateCovers([]); // remove cover\n\n\n  var brushTargetManager = new BrushTargetManager(retrieveAxisSetting(this.model.option), ecModel, {\n    include: ['grid']\n  });\n  brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n    if (coordSys.type !== 'cartesian2d') {\n      return;\n    }\n\n    var brushType = area.brushType;\n\n    if (brushType === 'rect') {\n      setBatch('x', coordSys, coordRange[0]);\n      setBatch('y', coordSys, coordRange[1]);\n    } else {\n      setBatch({\n        lineX: 'x',\n        lineY: 'y'\n      }[brushType], coordSys, coordRange);\n    }\n  });\n  history.push(ecModel, snapshot);\n\n  this._dispatchZoomAction(snapshot);\n\n  function setBatch(dimName, coordSys, minMax) {\n    var axis = coordSys.getAxis(dimName);\n    var axisModel = axis.model;\n    var dataZoomModel = findDataZoom(dimName, axisModel, ecModel); // Restrict range.\n\n    var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan();\n\n    if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {\n      minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan);\n    }\n\n    dataZoomModel && (snapshot[dataZoomModel.id] = {\n      dataZoomId: dataZoomModel.id,\n      startValue: minMax[0],\n      endValue: minMax[1]\n    });\n  }\n\n  function findDataZoom(dimName, axisModel, ecModel) {\n    var found;\n    ecModel.eachComponent({\n      mainType: 'dataZoom',\n      subType: 'select'\n    }, function (dzModel) {\n      var has = dzModel.getAxisModel(dimName, axisModel.componentIndex);\n      has && (found = dzModel);\n    });\n    return found;\n  }\n};\n/**\n * @private\n */\n\n\nproto._dispatchZoomAction = function (snapshot) {\n  var batch = []; // Convert from hash map to array.\n\n  each(snapshot, function (batchItem, dataZoomId) {\n    batch.push(zrUtil.clone(batchItem));\n  });\n  batch.length && this.api.dispatchAction({\n    type: 'dataZoom',\n    from: this.uid,\n    batch: batch\n  });\n};\n\nfunction retrieveAxisSetting(option) {\n  var setting = {}; // Compatible with previous setting: null => all axis, false => no axis.\n\n  zrUtil.each(['xAxisIndex', 'yAxisIndex'], function (name) {\n    setting[name] = option[name];\n    setting[name] == null && (setting[name] = 'all');\n    (setting[name] === false || setting[name] === 'none') && (setting[name] = []);\n  });\n  return setting;\n}\n\nfunction updateBackBtnStatus(featureModel, ecModel) {\n  featureModel.setIconStatus('back', history.count(ecModel) > 1 ? 'emphasis' : 'normal');\n}\n\nfunction updateZoomBtnStatus(featureModel, ecModel, view, payload, api) {\n  var zoomActive = view._isZoomActive;\n\n  if (payload && payload.type === 'takeGlobalCursor') {\n    zoomActive = payload.key === 'dataZoomSelect' ? payload.dataZoomSelectActive : false;\n  }\n\n  view._isZoomActive = zoomActive;\n  featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal');\n  var brushTargetManager = new BrushTargetManager(retrieveAxisSetting(featureModel.option), ecModel, {\n    include: ['grid']\n  });\n\n  view._brushController.setPanels(brushTargetManager.makePanelOpts(api, function (targetInfo) {\n    return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? 'lineX' : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? 'lineY' : 'rect';\n  })).enableBrush(zoomActive ? {\n    brushType: 'auto',\n    brushStyle: featureModel.getModel('brushStyle').getItemStyle()\n  } : false);\n}\n\nfeatureManager.register('dataZoom', DataZoom); // Create special dataZoom option for select\n// FIXME consider the case of merge option, where axes options are not exists.\n\necharts.registerPreprocessor(function (option) {\n  if (!option) {\n    return;\n  }\n\n  var dataZoomOpts = option.dataZoom || (option.dataZoom = []);\n\n  if (!zrUtil.isArray(dataZoomOpts)) {\n    option.dataZoom = dataZoomOpts = [dataZoomOpts];\n  }\n\n  var toolboxOpt = option.toolbox;\n\n  if (toolboxOpt) {\n    // Assume there is only one toolbox\n    if (zrUtil.isArray(toolboxOpt)) {\n      toolboxOpt = toolboxOpt[0];\n    }\n\n    if (toolboxOpt && toolboxOpt.feature) {\n      var dataZoomOpt = toolboxOpt.feature.dataZoom; // FIXME: If add dataZoom when setOption in merge mode,\n      // no axis info to be added. See `test/dataZoom-extreme.html`\n\n      addForAxis('xAxis', dataZoomOpt);\n      addForAxis('yAxis', dataZoomOpt);\n    }\n  }\n\n  function addForAxis(axisName, dataZoomOpt) {\n    if (!dataZoomOpt) {\n      return;\n    } // Try not to modify model, because it is not merged yet.\n\n\n    var axisIndicesName = axisName + 'Index';\n    var givenAxisIndices = dataZoomOpt[axisIndicesName];\n\n    if (givenAxisIndices != null && givenAxisIndices !== 'all' && !zrUtil.isArray(givenAxisIndices)) {\n      givenAxisIndices = givenAxisIndices === false || givenAxisIndices === 'none' ? [] : [givenAxisIndices];\n    }\n\n    forEachComponent(axisName, function (axisOpt, axisIndex) {\n      if (givenAxisIndices != null && givenAxisIndices !== 'all' && zrUtil.indexOf(givenAxisIndices, axisIndex) === -1) {\n        return;\n      }\n\n      var newOpt = {\n        type: 'select',\n        $fromToolbox: true,\n        // Default to be filter\n        filterMode: dataZoomOpt.filterMode || 'filter',\n        // Id for merge mapping.\n        id: DATA_ZOOM_ID_BASE + axisName + axisIndex\n      }; // FIXME\n      // Only support one axis now.\n\n      newOpt[axisIndicesName] = axisIndex;\n      dataZoomOpts.push(newOpt);\n    });\n  }\n\n  function forEachComponent(mainType, cb) {\n    var opts = option[mainType];\n\n    if (!zrUtil.isArray(opts)) {\n      opts = opts ? [opts] : [];\n    }\n\n    each(opts, cb);\n  }\n});\nvar _default = DataZoom;\nmodule.exports = _default;\n\n/***/ }),\n/* 1233 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(424);\n\n__webpack_require__(219);\n\n__webpack_require__(220);\n\n__webpack_require__(1235);\n\n__webpack_require__(1236);\n\n__webpack_require__(426);\n\n__webpack_require__(427);\n\n/***/ }),\n/* 1234 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar numberUtil = __webpack_require__(26);\n\nvar helper = __webpack_require__(425);\n\nvar sliderMove = __webpack_require__(218);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\n/**\n * Operate single axis.\n * One axis can only operated by one axis operator.\n * Different dataZoomModels may be defined to operate the same axis.\n * (i.e. 'inside' data zoom and 'slider' data zoom components)\n * So dataZoomModels share one axisProxy in that case.\n *\n * @class\n */\n\nvar AxisProxy = function (dimName, axisIndex, dataZoomModel, ecModel) {\n  /**\n   * @private\n   * @type {string}\n   */\n  this._dimName = dimName;\n  /**\n   * @private\n   */\n\n  this._axisIndex = axisIndex;\n  /**\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._valueWindow;\n  /**\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._percentWindow;\n  /**\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._dataExtent;\n  /**\n   * {minSpan, maxSpan, minValueSpan, maxValueSpan}\n   * @private\n   * @type {Object}\n   */\n\n  this._minMaxSpan;\n  /**\n   * @readOnly\n   * @type {module: echarts/model/Global}\n   */\n\n  this.ecModel = ecModel;\n  /**\n   * @private\n   * @type {module: echarts/component/dataZoom/DataZoomModel}\n   */\n\n  this._dataZoomModel = dataZoomModel; // /**\n  //  * @readOnly\n  //  * @private\n  //  */\n  // this.hasSeriesStacked;\n};\n\nAxisProxy.prototype = {\n  constructor: AxisProxy,\n\n  /**\n   * Whether the axisProxy is hosted by dataZoomModel.\n   *\n   * @public\n   * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n   * @return {boolean}\n   */\n  hostedBy: function (dataZoomModel) {\n    return this._dataZoomModel === dataZoomModel;\n  },\n\n  /**\n   * @return {Array.<number>} Value can only be NaN or finite value.\n   */\n  getDataValueWindow: function () {\n    return this._valueWindow.slice();\n  },\n\n  /**\n   * @return {Array.<number>}\n   */\n  getDataPercentWindow: function () {\n    return this._percentWindow.slice();\n  },\n\n  /**\n   * @public\n   * @param {number} axisIndex\n   * @return {Array} seriesModels\n   */\n  getTargetSeriesModels: function () {\n    var seriesModels = [];\n    var ecModel = this.ecModel;\n    ecModel.eachSeries(function (seriesModel) {\n      if (helper.isCoordSupported(seriesModel.get('coordinateSystem'))) {\n        var dimName = this._dimName;\n        var axisModel = ecModel.queryComponents({\n          mainType: dimName + 'Axis',\n          index: seriesModel.get(dimName + 'AxisIndex'),\n          id: seriesModel.get(dimName + 'AxisId')\n        })[0];\n\n        if (this._axisIndex === (axisModel && axisModel.componentIndex)) {\n          seriesModels.push(seriesModel);\n        }\n      }\n    }, this);\n    return seriesModels;\n  },\n  getAxisModel: function () {\n    return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex);\n  },\n  getOtherAxisModel: function () {\n    var axisDim = this._dimName;\n    var ecModel = this.ecModel;\n    var axisModel = this.getAxisModel();\n    var isCartesian = axisDim === 'x' || axisDim === 'y';\n    var otherAxisDim;\n    var coordSysIndexName;\n\n    if (isCartesian) {\n      coordSysIndexName = 'gridIndex';\n      otherAxisDim = axisDim === 'x' ? 'y' : 'x';\n    } else {\n      coordSysIndexName = 'polarIndex';\n      otherAxisDim = axisDim === 'angle' ? 'radius' : 'angle';\n    }\n\n    var foundOtherAxisModel;\n    ecModel.eachComponent(otherAxisDim + 'Axis', function (otherAxisModel) {\n      if ((otherAxisModel.get(coordSysIndexName) || 0) === (axisModel.get(coordSysIndexName) || 0)) {\n        foundOtherAxisModel = otherAxisModel;\n      }\n    });\n    return foundOtherAxisModel;\n  },\n  getMinMaxSpan: function () {\n    return zrUtil.clone(this._minMaxSpan);\n  },\n\n  /**\n   * Only calculate by given range and this._dataExtent, do not change anything.\n   *\n   * @param {Object} opt\n   * @param {number} [opt.start]\n   * @param {number} [opt.end]\n   * @param {number} [opt.startValue]\n   * @param {number} [opt.endValue]\n   */\n  calculateDataWindow: function (opt) {\n    var dataExtent = this._dataExtent;\n    var axisModel = this.getAxisModel();\n    var scale = axisModel.axis.scale;\n\n    var rangePropMode = this._dataZoomModel.getRangePropMode();\n\n    var percentExtent = [0, 100];\n    var percentWindow = [];\n    var valueWindow = [];\n    var hasPropModeValue;\n    each(['start', 'end'], function (prop, idx) {\n      var boundPercent = opt[prop];\n      var boundValue = opt[prop + 'Value']; // Notice: dataZoom is based either on `percentProp` ('start', 'end') or\n      // on `valueProp` ('startValue', 'endValue'). (They are based on the data extent\n      // but not min/max of axis, which will be calculated by data window then).\n      // The former one is suitable for cases that a dataZoom component controls multiple\n      // axes with different unit or extent, and the latter one is suitable for accurate\n      // zoom by pixel (e.g., in dataZoomSelect).\n      // we use `getRangePropMode()` to mark which prop is used. `rangePropMode` is updated\n      // only when setOption or dispatchAction, otherwise it remains its original value.\n      // (Why not only record `percentProp` and always map to `valueProp`? Because\n      // the map `valueProp` -> `percentProp` -> `valueProp` probably not the original\n      // `valueProp`. consider two axes constrolled by one dataZoom. They have different\n      // data extent. All of values that are overflow the `dataExtent` will be calculated\n      // to percent '100%').\n\n      if (rangePropMode[idx] === 'percent') {\n        boundPercent == null && (boundPercent = percentExtent[idx]); // Use scale.parse to math round for category or time axis.\n\n        boundValue = scale.parse(numberUtil.linearMap(boundPercent, percentExtent, dataExtent));\n      } else {\n        hasPropModeValue = true;\n        boundValue = boundValue == null ? dataExtent[idx] : scale.parse(boundValue); // Calculating `percent` from `value` may be not accurate, because\n        // This calculation can not be inversed, because all of values that\n        // are overflow the `dataExtent` will be calculated to percent '100%'\n\n        boundPercent = numberUtil.linearMap(boundValue, dataExtent, percentExtent);\n      } // valueWindow[idx] = round(boundValue);\n      // percentWindow[idx] = round(boundPercent);\n\n\n      valueWindow[idx] = boundValue;\n      percentWindow[idx] = boundPercent;\n    });\n    asc(valueWindow);\n    asc(percentWindow); // The windows from user calling of `dispatchAction` might be out of the extent,\n    // or do not obey the `min/maxSpan`, `min/maxValueSpan`. But we dont restrict window\n    // by `zoomLock` here, because we see `zoomLock` just as a interaction constraint,\n    // where API is able to initialize/modify the window size even though `zoomLock`\n    // specified.\n\n    var spans = this._minMaxSpan;\n    hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true);\n\n    function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) {\n      var suffix = toValue ? 'Span' : 'ValueSpan';\n      sliderMove(0, fromWindow, fromExtent, 'all', spans['min' + suffix], spans['max' + suffix]);\n\n      for (var i = 0; i < 2; i++) {\n        toWindow[i] = numberUtil.linearMap(fromWindow[i], fromExtent, toExtent, true);\n        toValue && (toWindow[i] = scale.parse(toWindow[i]));\n      }\n    }\n\n    return {\n      valueWindow: valueWindow,\n      percentWindow: percentWindow\n    };\n  },\n\n  /**\n   * Notice: reset should not be called before series.restoreData() called,\n   * so it is recommanded to be called in \"process stage\" but not \"model init\n   * stage\".\n   *\n   * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n   */\n  reset: function (dataZoomModel) {\n    if (dataZoomModel !== this._dataZoomModel) {\n      return;\n    }\n\n    var targetSeries = this.getTargetSeriesModels(); // Culculate data window and data extent, and record them.\n\n    this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries); // this.hasSeriesStacked = false;\n    // each(targetSeries, function (series) {\n    // var data = series.getData();\n    // var dataDim = data.mapDimension(this._dimName);\n    // var stackedDimension = data.getCalculationInfo('stackedDimension');\n    // if (stackedDimension && stackedDimension === dataDim) {\n    // this.hasSeriesStacked = true;\n    // }\n    // }, this);\n    // `calculateDataWindow` uses min/maxSpan.\n\n    setMinMaxSpan(this);\n    var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption);\n    this._valueWindow = dataWindow.valueWindow;\n    this._percentWindow = dataWindow.percentWindow; // Update axis setting then.\n\n    setAxisModel(this);\n  },\n\n  /**\n   * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n   */\n  restore: function (dataZoomModel) {\n    if (dataZoomModel !== this._dataZoomModel) {\n      return;\n    }\n\n    this._valueWindow = this._percentWindow = null;\n    setAxisModel(this, true);\n  },\n\n  /**\n   * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n   */\n  filterData: function (dataZoomModel, api) {\n    if (dataZoomModel !== this._dataZoomModel) {\n      return;\n    }\n\n    var axisDim = this._dimName;\n    var seriesModels = this.getTargetSeriesModels();\n    var filterMode = dataZoomModel.get('filterMode');\n    var valueWindow = this._valueWindow;\n\n    if (filterMode === 'none') {\n      return;\n    } // FIXME\n    // Toolbox may has dataZoom injected. And if there are stacked bar chart\n    // with NaN data, NaN will be filtered and stack will be wrong.\n    // So we need to force the mode to be set empty.\n    // In fect, it is not a big deal that do not support filterMode-'filter'\n    // when using toolbox#dataZoom, utill tooltip#dataZoom support \"single axis\n    // selection\" some day, which might need \"adapt to data extent on the\n    // otherAxis\", which is disabled by filterMode-'empty'.\n    // But currently, stack has been fixed to based on value but not index,\n    // so this is not an issue any more.\n    // var otherAxisModel = this.getOtherAxisModel();\n    // if (dataZoomModel.get('$fromToolbox')\n    //     && otherAxisModel\n    //     && otherAxisModel.hasSeriesStacked\n    // ) {\n    //     filterMode = 'empty';\n    // }\n    // TODO\n    // filterMode 'weakFilter' and 'empty' is not optimized for huge data yet.\n\n\n    each(seriesModels, function (seriesModel) {\n      var seriesData = seriesModel.getData();\n      var dataDims = seriesData.mapDimension(axisDim, true);\n\n      if (!dataDims.length) {\n        return;\n      }\n\n      if (filterMode === 'weakFilter') {\n        seriesData.filterSelf(function (dataIndex) {\n          var leftOut;\n          var rightOut;\n          var hasValue;\n\n          for (var i = 0; i < dataDims.length; i++) {\n            var value = seriesData.get(dataDims[i], dataIndex);\n            var thisHasValue = !isNaN(value);\n            var thisLeftOut = value < valueWindow[0];\n            var thisRightOut = value > valueWindow[1];\n\n            if (thisHasValue && !thisLeftOut && !thisRightOut) {\n              return true;\n            }\n\n            thisHasValue && (hasValue = true);\n            thisLeftOut && (leftOut = true);\n            thisRightOut && (rightOut = true);\n          } // If both left out and right out, do not filter.\n\n\n          return hasValue && leftOut && rightOut;\n        });\n      } else {\n        each(dataDims, function (dim) {\n          if (filterMode === 'empty') {\n            seriesModel.setData(seriesData = seriesData.map(dim, function (value) {\n              return !isInWindow(value) ? NaN : value;\n            }));\n          } else {\n            var range = {};\n            range[dim] = valueWindow; // console.time('select');\n\n            seriesData.selectRange(range); // console.timeEnd('select');\n          }\n        });\n      }\n\n      each(dataDims, function (dim) {\n        seriesData.setApproximateExtent(valueWindow, dim);\n      });\n    });\n\n    function isInWindow(value) {\n      return value >= valueWindow[0] && value <= valueWindow[1];\n    }\n  }\n};\n\nfunction calculateDataExtent(axisProxy, axisDim, seriesModels) {\n  var dataExtent = [Infinity, -Infinity];\n  each(seriesModels, function (seriesModel) {\n    var seriesData = seriesModel.getData();\n\n    if (seriesData) {\n      each(seriesData.mapDimension(axisDim, true), function (dim) {\n        var seriesExtent = seriesData.getApproximateExtent(dim);\n        seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\n        seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\n      });\n    }\n  });\n\n  if (dataExtent[1] < dataExtent[0]) {\n    dataExtent = [NaN, NaN];\n  } // It is important to get \"consistent\" extent when more then one axes is\n  // controlled by a `dataZoom`, otherwise those axes will not be synchronized\n  // when zooming. But it is difficult to know what is \"consistent\", considering\n  // axes have different type or even different meanings (For example, two\n  // time axes are used to compare data of the same date in different years).\n  // So basically dataZoom just obtains extent by series.data (in category axis\n  // extent can be obtained from axis.data).\n  // Nevertheless, user can set min/max/scale on axes to make extent of axes\n  // consistent.\n\n\n  fixExtentByAxis(axisProxy, dataExtent);\n  return dataExtent;\n}\n\nfunction fixExtentByAxis(axisProxy, dataExtent) {\n  var axisModel = axisProxy.getAxisModel();\n  var min = axisModel.getMin(true); // For category axis, if min/max/scale are not set, extent is determined\n  // by axis.data by default.\n\n  var isCategoryAxis = axisModel.get('type') === 'category';\n  var axisDataLen = isCategoryAxis && axisModel.getCategories().length;\n\n  if (min != null && min !== 'dataMin' && typeof min !== 'function') {\n    dataExtent[0] = min;\n  } else if (isCategoryAxis) {\n    dataExtent[0] = axisDataLen > 0 ? 0 : NaN;\n  }\n\n  var max = axisModel.getMax(true);\n\n  if (max != null && max !== 'dataMax' && typeof max !== 'function') {\n    dataExtent[1] = max;\n  } else if (isCategoryAxis) {\n    dataExtent[1] = axisDataLen > 0 ? axisDataLen - 1 : NaN;\n  }\n\n  if (!axisModel.get('scale', true)) {\n    dataExtent[0] > 0 && (dataExtent[0] = 0);\n    dataExtent[1] < 0 && (dataExtent[1] = 0);\n  } // For value axis, if min/max/scale are not set, we just use the extent obtained\n  // by series data, which may be a little different from the extent calculated by\n  // `axisHelper.getScaleExtent`. But the different just affects the experience a\n  // little when zooming. So it will not be fixed until some users require it strongly.\n\n\n  return dataExtent;\n}\n\nfunction setAxisModel(axisProxy, isRestore) {\n  var axisModel = axisProxy.getAxisModel();\n  var percentWindow = axisProxy._percentWindow;\n  var valueWindow = axisProxy._valueWindow;\n\n  if (!percentWindow) {\n    return;\n  } // [0, 500]: arbitrary value, guess axis extent.\n\n\n  var precision = numberUtil.getPixelPrecision(valueWindow, [0, 500]);\n  precision = Math.min(precision, 20); // isRestore or isFull\n\n  var useOrigin = isRestore || percentWindow[0] === 0 && percentWindow[1] === 100;\n  axisModel.setRange(useOrigin ? null : +valueWindow[0].toFixed(precision), useOrigin ? null : +valueWindow[1].toFixed(precision));\n}\n\nfunction setMinMaxSpan(axisProxy) {\n  var minMaxSpan = axisProxy._minMaxSpan = {};\n  var dataZoomModel = axisProxy._dataZoomModel;\n  var dataExtent = axisProxy._dataExtent;\n  each(['min', 'max'], function (minMax) {\n    var percentSpan = dataZoomModel.get(minMax + 'Span');\n    var valueSpan = dataZoomModel.get(minMax + 'ValueSpan');\n    valueSpan != null && (valueSpan = axisProxy.getAxisModel().axis.scale.parse(valueSpan)); // minValueSpan and maxValueSpan has higher priority than minSpan and maxSpan\n\n    if (valueSpan != null) {\n      percentSpan = numberUtil.linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);\n    } else if (percentSpan != null) {\n      valueSpan = numberUtil.linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0];\n    }\n\n    minMaxSpan[minMax + 'Span'] = percentSpan;\n    minMaxSpan[minMax + 'ValueSpan'] = valueSpan;\n  });\n}\n\nvar _default = AxisProxy;\nmodule.exports = _default;\n\n/***/ }),\n/* 1235 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomModel = __webpack_require__(219);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = DataZoomModel.extend({\n  type: 'dataZoom.select'\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1236 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomView = __webpack_require__(220);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = DataZoomView.extend({\n  type: 'dataZoom.select'\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1237 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar history = __webpack_require__(613);\n\nvar lang = __webpack_require__(154);\n\nvar featureManager = __webpack_require__(157);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar restoreLang = lang.toolbox.restore;\n\nfunction Restore(model) {\n  this.model = model;\n}\n\nRestore.defaultOption = {\n  show: true,\n\n  /* eslint-disable */\n  icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5',\n\n  /* eslint-enable */\n  title: restoreLang.title\n};\nvar proto = Restore.prototype;\n\nproto.onclick = function (ecModel, api, type) {\n  history.clear(ecModel);\n  api.dispatchAction({\n    type: 'restore',\n    from: this.uid\n  });\n};\n\nfeatureManager.register('restore', Restore);\necharts.registerAction({\n  type: 'restore',\n  event: 'restore',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  ecModel.resetOption('recreate');\n});\nvar _default = Restore;\nmodule.exports = _default;\n\n/***/ }),\n/* 1238 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(267);\n\n__webpack_require__(1239);\n\n__webpack_require__(1240);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME Better way to pack data in graphic element\n\n/**\n * @action\n * @property {string} type\n * @property {number} seriesIndex\n * @property {number} dataIndex\n * @property {number} [x]\n * @property {number} [y]\n */\necharts.registerAction({\n  type: 'showTip',\n  event: 'showTip',\n  update: 'tooltip:manuallyShowTip'\n}, // noop\nfunction () {});\necharts.registerAction({\n  type: 'hideTip',\n  event: 'hideTip',\n  update: 'tooltip:manuallyHideTip'\n}, // noop\nfunction () {});\n\n/***/ }),\n/* 1239 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentModel({\n  type: 'tooltip',\n  dependencies: ['axisPointer'],\n  defaultOption: {\n    zlevel: 0,\n    z: 60,\n    show: true,\n    // tooltip主体内容\n    showContent: true,\n    // 'trigger' only works on coordinate system.\n    // 'item' | 'axis' | 'none'\n    trigger: 'item',\n    // 'click' | 'mousemove' | 'none'\n    triggerOn: 'mousemove|click',\n    alwaysShowContent: false,\n    displayMode: 'single',\n    // 'single' | 'multipleByCoordSys'\n    renderMode: 'auto',\n    // 'auto' | 'html' | 'richText'\n    // 'auto': use html by default, and use non-html if `document` is not defined\n    // 'html': use html for tooltip\n    // 'richText': use canvas, svg, and etc. for tooltip\n    // 位置 {Array} | {Function}\n    // position: null\n    // Consider triggered from axisPointer handle, verticalAlign should be 'middle'\n    // align: null,\n    // verticalAlign: null,\n    // 是否约束 content 在 viewRect 中。默认 false 是为了兼容以前版本。\n    confine: false,\n    // 内容格式器：{string}（Template） ¦ {Function}\n    // formatter: null\n    showDelay: 0,\n    // 隐藏延迟，单位ms\n    hideDelay: 100,\n    // 动画变换时间，单位s\n    transitionDuration: 0.4,\n    enterable: false,\n    // 提示背景颜色，默认为透明度为0.7的黑色\n    backgroundColor: 'rgba(50,50,50,0.7)',\n    // 提示边框颜色\n    borderColor: '#333',\n    // 提示边框圆角，单位px，默认为4\n    borderRadius: 4,\n    // 提示边框线宽，单位px，默认为0（无边框）\n    borderWidth: 0,\n    // 提示内边距，单位px，默认各方向内边距为5，\n    // 接受数组分别设定上右下左边距，同css\n    padding: 5,\n    // Extra css text\n    extraCssText: '',\n    // 坐标轴指示器，坐标轴触发有效\n    axisPointer: {\n      // 默认为直线\n      // 可选为：'line' | 'shadow' | 'cross'\n      type: 'line',\n      // type 为 line 的时候有效，指定 tooltip line 所在的轴，可选\n      // 可选 'x' | 'y' | 'angle' | 'radius' | 'auto'\n      // 默认 'auto'，会选择类型为 category 的轴，对于双数值轴，笛卡尔坐标系会默认选择 x 轴\n      // 极坐标系会默认选择 angle 轴\n      axis: 'auto',\n      animation: 'auto',\n      animationDurationUpdate: 200,\n      animationEasingUpdate: 'exponentialOut',\n      crossStyle: {\n        color: '#999',\n        width: 1,\n        type: 'dashed',\n        // TODO formatter\n        textStyle: {} // lineStyle and shadowStyle should not be specified here,\n        // otherwise it will always override those styles on option.axisPointer.\n\n      }\n    },\n    textStyle: {\n      color: '#fff',\n      fontSize: 14\n    }\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1240 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar env = __webpack_require__(66);\n\nvar TooltipContent = __webpack_require__(1241);\n\nvar TooltipRichContent = __webpack_require__(1242);\n\nvar formatUtil = __webpack_require__(50);\n\nvar numberUtil = __webpack_require__(26);\n\nvar graphic = __webpack_require__(23);\n\nvar findPointFromSeries = __webpack_require__(608);\n\nvar layoutUtil = __webpack_require__(49);\n\nvar Model = __webpack_require__(67);\n\nvar globalListener = __webpack_require__(609);\n\nvar axisHelper = __webpack_require__(122);\n\nvar axisPointerViewHelper = __webpack_require__(339);\n\nvar _model = __webpack_require__(31);\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar parsePercent = numberUtil.parsePercent;\nvar proxyRect = new graphic.Rect({\n  shape: {\n    x: -1,\n    y: -1,\n    width: 2,\n    height: 2\n  }\n});\n\nvar _default = echarts.extendComponentView({\n  type: 'tooltip',\n  init: function (ecModel, api) {\n    if (env.node) {\n      return;\n    }\n\n    var tooltipModel = ecModel.getComponent('tooltip');\n    var renderMode = tooltipModel.get('renderMode');\n    this._renderMode = getTooltipRenderMode(renderMode);\n    var tooltipContent;\n\n    if (this._renderMode === 'html') {\n      tooltipContent = new TooltipContent(api.getDom(), api, {\n        appendToBody: tooltipModel.get('appendToBody', true)\n      });\n      this._newLine = '<br/>';\n    } else {\n      tooltipContent = new TooltipRichContent(api);\n      this._newLine = '\\n';\n    }\n\n    this._tooltipContent = tooltipContent;\n  },\n  render: function (tooltipModel, ecModel, api) {\n    if (env.node) {\n      return;\n    } // Reset\n\n\n    this.group.removeAll();\n    /**\n     * @private\n     * @type {module:echarts/component/tooltip/TooltipModel}\n     */\n\n    this._tooltipModel = tooltipModel;\n    /**\n     * @private\n     * @type {module:echarts/model/Global}\n     */\n\n    this._ecModel = ecModel;\n    /**\n     * @private\n     * @type {module:echarts/ExtensionAPI}\n     */\n\n    this._api = api;\n    /**\n     * Should be cleaned when render.\n     * @private\n     * @type {Array.<Array.<Object>>}\n     */\n\n    this._lastDataByCoordSys = null;\n    /**\n     * @private\n     * @type {boolean}\n     */\n\n    this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\n    var tooltipContent = this._tooltipContent;\n    tooltipContent.update(tooltipModel);\n    tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n    this._initGlobalListener();\n\n    this._keepShow();\n  },\n  _initGlobalListener: function () {\n    var tooltipModel = this._tooltipModel;\n    var triggerOn = tooltipModel.get('triggerOn');\n    globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n      // If 'none', it is not controlled by mouse totally.\n      if (triggerOn !== 'none') {\n        if (triggerOn.indexOf(currTrigger) >= 0) {\n          this._tryShow(e, dispatchAction);\n        } else if (currTrigger === 'leave') {\n          this._hide(dispatchAction);\n        }\n      }\n    }, this));\n  },\n  _keepShow: function () {\n    var tooltipModel = this._tooltipModel;\n    var ecModel = this._ecModel;\n    var api = this._api; // Try to keep the tooltip show when refreshing\n\n    if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n    // self.manuallyShowTip({x, y}) might cause tooltip hide,\n    // which is not expected.\n    && tooltipModel.get('triggerOn') !== 'none') {\n      var self = this;\n      clearTimeout(this._refreshUpdateTimeout);\n      this._refreshUpdateTimeout = setTimeout(function () {\n        // Show tip next tick after other charts are rendered\n        // In case highlight action has wrong result\n        // FIXME\n        !api.isDisposed() && self.manuallyShowTip(tooltipModel, ecModel, api, {\n          x: self._lastX,\n          y: self._lastY\n        });\n      });\n    }\n  },\n\n  /**\n   * Show tip manually by\n   * dispatchAction({\n   *     type: 'showTip',\n   *     x: 10,\n   *     y: 10\n   * });\n   * Or\n   * dispatchAction({\n   *      type: 'showTip',\n   *      seriesIndex: 0,\n   *      dataIndex or dataIndexInside or name\n   * });\n   *\n   *  TODO Batch\n   */\n  manuallyShowTip: function (tooltipModel, ecModel, api, payload) {\n    if (payload.from === this.uid || env.node) {\n      return;\n    }\n\n    var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n    this._ticket = ''; // When triggered from axisPointer.\n\n    var dataByCoordSys = payload.dataByCoordSys;\n\n    if (payload.tooltip && payload.x != null && payload.y != null) {\n      var el = proxyRect;\n      el.position = [payload.x, payload.y];\n      el.update();\n      el.tooltip = payload.tooltip; // Manually show tooltip while view is not using zrender elements.\n\n      this._tryShow({\n        offsetX: payload.x,\n        offsetY: payload.y,\n        target: el\n      }, dispatchAction);\n    } else if (dataByCoordSys) {\n      this._tryShow({\n        offsetX: payload.x,\n        offsetY: payload.y,\n        position: payload.position,\n        dataByCoordSys: payload.dataByCoordSys,\n        tooltipOption: payload.tooltipOption\n      }, dispatchAction);\n    } else if (payload.seriesIndex != null) {\n      if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n        return;\n      }\n\n      var pointInfo = findPointFromSeries(payload, ecModel);\n      var cx = pointInfo.point[0];\n      var cy = pointInfo.point[1];\n\n      if (cx != null && cy != null) {\n        this._tryShow({\n          offsetX: cx,\n          offsetY: cy,\n          position: payload.position,\n          target: pointInfo.el\n        }, dispatchAction);\n      }\n    } else if (payload.x != null && payload.y != null) {\n      // FIXME\n      // should wrap dispatchAction like `axisPointer/globalListener` ?\n      api.dispatchAction({\n        type: 'updateAxisPointer',\n        x: payload.x,\n        y: payload.y\n      });\n\n      this._tryShow({\n        offsetX: payload.x,\n        offsetY: payload.y,\n        position: payload.position,\n        target: api.getZr().findHover(payload.x, payload.y).target\n      }, dispatchAction);\n    }\n  },\n  manuallyHideTip: function (tooltipModel, ecModel, api, payload) {\n    var tooltipContent = this._tooltipContent;\n\n    if (!this._alwaysShowContent && this._tooltipModel) {\n      tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n    }\n\n    this._lastX = this._lastY = null;\n\n    if (payload.from !== this.uid) {\n      this._hide(makeDispatchAction(payload, api));\n    }\n  },\n  // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n  // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n  // and tooltip.\n  _manuallyAxisShowTip: function (tooltipModel, ecModel, api, payload) {\n    var seriesIndex = payload.seriesIndex;\n    var dataIndex = payload.dataIndex;\n    var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n    if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n      return;\n    }\n\n    var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n    if (!seriesModel) {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model, tooltipModel]);\n\n    if (tooltipModel.get('trigger') !== 'axis') {\n      return;\n    }\n\n    api.dispatchAction({\n      type: 'updateAxisPointer',\n      seriesIndex: seriesIndex,\n      dataIndex: dataIndex,\n      position: payload.position\n    });\n    return true;\n  },\n  _tryShow: function (e, dispatchAction) {\n    var el = e.target;\n    var tooltipModel = this._tooltipModel;\n\n    if (!tooltipModel) {\n      return;\n    } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n    this._lastX = e.offsetX;\n    this._lastY = e.offsetY;\n    var dataByCoordSys = e.dataByCoordSys;\n\n    if (dataByCoordSys && dataByCoordSys.length) {\n      this._showAxisTooltip(dataByCoordSys, e);\n    } // Always show item tooltip if mouse is on the element with dataIndex\n    else if (el && el.dataIndex != null) {\n        this._lastDataByCoordSys = null;\n\n        this._showSeriesItemTooltip(e, el, dispatchAction);\n      } // Tooltip provided directly. Like legend.\n      else if (el && el.tooltip) {\n          this._lastDataByCoordSys = null;\n\n          this._showComponentItemTooltip(e, el, dispatchAction);\n        } else {\n          this._lastDataByCoordSys = null;\n\n          this._hide(dispatchAction);\n        }\n  },\n  _showOrMove: function (tooltipModel, cb) {\n    // showDelay is used in this case: tooltip.enterable is set\n    // as true. User intent to move mouse into tooltip and click\n    // something. `showDelay` makes it easier to enter the content\n    // but tooltip do not move immediately.\n    var delay = tooltipModel.get('showDelay');\n    cb = zrUtil.bind(cb, this);\n    clearTimeout(this._showTimout);\n    delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n  },\n  _showAxisTooltip: function (dataByCoordSys, e) {\n    var ecModel = this._ecModel;\n    var globalTooltipModel = this._tooltipModel;\n    var point = [e.offsetX, e.offsetY];\n    var singleDefaultHTML = [];\n    var singleParamsList = [];\n    var singleTooltipModel = buildTooltipModel([e.tooltipOption, globalTooltipModel]);\n    var renderMode = this._renderMode;\n    var newLine = this._newLine;\n    var markers = {};\n    each(dataByCoordSys, function (itemCoordSys) {\n      // var coordParamList = [];\n      // var coordDefaultHTML = [];\n      // var coordTooltipModel = buildTooltipModel([\n      //     e.tooltipOption,\n      //     itemCoordSys.tooltipOption,\n      //     ecModel.getComponent(itemCoordSys.coordSysMainType, itemCoordSys.coordSysIndex),\n      //     globalTooltipModel\n      // ]);\n      // var displayMode = coordTooltipModel.get('displayMode');\n      // var paramsList = displayMode === 'single' ? singleParamsList : [];\n      each(itemCoordSys.dataByAxis, function (item) {\n        var axisModel = ecModel.getComponent(item.axisDim + 'Axis', item.axisIndex);\n        var axisValue = item.value;\n        var seriesDefaultHTML = [];\n\n        if (!axisModel || axisValue == null) {\n          return;\n        }\n\n        var valueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, item.seriesDataIndices, item.valueLabelOpt);\n        zrUtil.each(item.seriesDataIndices, function (idxItem) {\n          var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n          var dataIndex = idxItem.dataIndexInside;\n          var dataParams = series && series.getDataParams(dataIndex);\n          dataParams.axisDim = item.axisDim;\n          dataParams.axisIndex = item.axisIndex;\n          dataParams.axisType = item.axisType;\n          dataParams.axisId = item.axisId;\n          dataParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, axisValue);\n          dataParams.axisValueLabel = valueLabel;\n\n          if (dataParams) {\n            singleParamsList.push(dataParams);\n            var seriesTooltip = series.formatTooltip(dataIndex, true, null, renderMode);\n            var html;\n\n            if (zrUtil.isObject(seriesTooltip)) {\n              html = seriesTooltip.html;\n              var newMarkers = seriesTooltip.markers;\n              zrUtil.merge(markers, newMarkers);\n            } else {\n              html = seriesTooltip;\n            }\n\n            seriesDefaultHTML.push(html);\n          }\n        }); // Default tooltip content\n        // FIXME\n        // (1) should be the first data which has name?\n        // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.\n\n        var firstLine = valueLabel;\n\n        if (renderMode !== 'html') {\n          singleDefaultHTML.push(seriesDefaultHTML.join(newLine));\n        } else {\n          singleDefaultHTML.push((firstLine ? formatUtil.encodeHTML(firstLine) + newLine : '') + seriesDefaultHTML.join(newLine));\n        }\n      });\n    }, this); // In most case, the second axis is shown upper than the first one.\n\n    singleDefaultHTML.reverse();\n    singleDefaultHTML = singleDefaultHTML.join(this._newLine + this._newLine);\n    var positionExpr = e.position;\n\n    this._showOrMove(singleTooltipModel, function () {\n      if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {\n        this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, singleParamsList);\n      } else {\n        this._showTooltipContent(singleTooltipModel, singleDefaultHTML, singleParamsList, Math.random(), point[0], point[1], positionExpr, undefined, markers);\n      }\n    }); // Do not trigger events here, because this branch only be entered\n    // from dispatchAction.\n\n  },\n  _showSeriesItemTooltip: function (e, el, dispatchAction) {\n    var ecModel = this._ecModel; // Use dataModel in element if possible\n    // Used when mouseover on a element like markPoint or edge\n    // In which case, the data is not main data in series.\n\n    var seriesIndex = el.seriesIndex;\n    var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n    var dataModel = el.dataModel || seriesModel;\n    var dataIndex = el.dataIndex;\n    var dataType = el.dataType;\n    var data = dataModel.getData(dataType);\n    var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model, this._tooltipModel]);\n    var tooltipTrigger = tooltipModel.get('trigger');\n\n    if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n      return;\n    }\n\n    var params = dataModel.getDataParams(dataIndex, dataType);\n    var seriesTooltip = dataModel.formatTooltip(dataIndex, false, dataType, this._renderMode);\n    var defaultHtml;\n    var markers;\n\n    if (zrUtil.isObject(seriesTooltip)) {\n      defaultHtml = seriesTooltip.html;\n      markers = seriesTooltip.markers;\n    } else {\n      defaultHtml = seriesTooltip;\n      markers = null;\n    }\n\n    var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n    this._showOrMove(tooltipModel, function () {\n      this._showTooltipContent(tooltipModel, defaultHtml, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target, markers);\n    }); // FIXME\n    // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n    dispatchAction({\n      type: 'showTip',\n      dataIndexInside: dataIndex,\n      dataIndex: data.getRawIndex(dataIndex),\n      seriesIndex: seriesIndex,\n      from: this.uid\n    });\n  },\n  _showComponentItemTooltip: function (e, el, dispatchAction) {\n    var tooltipOpt = el.tooltip;\n\n    if (typeof tooltipOpt === 'string') {\n      var content = tooltipOpt;\n      tooltipOpt = {\n        content: content,\n        // Fixed formatter\n        formatter: content\n      };\n    }\n\n    var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);\n    var defaultHtml = subTooltipModel.get('content');\n    var asyncTicket = Math.random(); // Do not check whether `trigger` is 'none' here, because `trigger`\n    // only works on coordinate system. In fact, we have not found case\n    // that requires setting `trigger` nothing on component yet.\n\n    this._showOrMove(subTooltipModel, function () {\n      this._showTooltipContent(subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {}, asyncTicket, e.offsetX, e.offsetY, e.position, el);\n    }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n    dispatchAction({\n      type: 'showTip',\n      from: this.uid\n    });\n  },\n  _showTooltipContent: function (tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markers) {\n    // Reset ticket\n    this._ticket = '';\n\n    if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n      return;\n    }\n\n    var tooltipContent = this._tooltipContent;\n    var formatter = tooltipModel.get('formatter');\n    positionExpr = positionExpr || tooltipModel.get('position');\n    var html = defaultHtml;\n\n    if (formatter && typeof formatter === 'string') {\n      html = formatUtil.formatTpl(formatter, params, true);\n    } else if (typeof formatter === 'function') {\n      var callback = bind(function (cbTicket, html) {\n        if (cbTicket === this._ticket) {\n          tooltipContent.setContent(html, markers, tooltipModel);\n\n          this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n        }\n      }, this);\n      this._ticket = asyncTicket;\n      html = formatter(params, asyncTicket, callback);\n    }\n\n    tooltipContent.setContent(html, markers, tooltipModel);\n    tooltipContent.show(tooltipModel);\n\n    this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n  },\n\n  /**\n   * @param  {string|Function|Array.<number>|Object} positionExpr\n   * @param  {number} x Mouse x\n   * @param  {number} y Mouse y\n   * @param  {boolean} confine Whether confine tooltip content in view rect.\n   * @param  {Object|<Array.<Object>} params\n   * @param  {module:zrender/Element} el target element\n   * @param  {module:echarts/ExtensionAPI} api\n   * @return {Array.<number>}\n   */\n  _updatePosition: function (tooltipModel, positionExpr, x, y, content, params, el) {\n    var viewWidth = this._api.getWidth();\n\n    var viewHeight = this._api.getHeight();\n\n    positionExpr = positionExpr || tooltipModel.get('position');\n    var contentSize = content.getSize();\n    var align = tooltipModel.get('align');\n    var vAlign = tooltipModel.get('verticalAlign');\n    var rect = el && el.getBoundingRect().clone();\n    el && rect.applyTransform(el.transform);\n\n    if (typeof positionExpr === 'function') {\n      // Callback of position can be an array or a string specify the position\n      positionExpr = positionExpr([x, y], params, content.el, rect, {\n        viewSize: [viewWidth, viewHeight],\n        contentSize: contentSize.slice()\n      });\n    }\n\n    if (zrUtil.isArray(positionExpr)) {\n      x = parsePercent(positionExpr[0], viewWidth);\n      y = parsePercent(positionExpr[1], viewHeight);\n    } else if (zrUtil.isObject(positionExpr)) {\n      positionExpr.width = contentSize[0];\n      positionExpr.height = contentSize[1];\n      var layoutRect = layoutUtil.getLayoutRect(positionExpr, {\n        width: viewWidth,\n        height: viewHeight\n      });\n      x = layoutRect.x;\n      y = layoutRect.y;\n      align = null; // When positionExpr is left/top/right/bottom,\n      // align and verticalAlign will not work.\n\n      vAlign = null;\n    } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n    else if (typeof positionExpr === 'string' && el) {\n        var pos = calcTooltipPosition(positionExpr, rect, contentSize);\n        x = pos[0];\n        y = pos[1];\n      } else {\n        var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n        x = pos[0];\n        y = pos[1];\n      }\n\n    align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n    vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n    if (tooltipModel.get('confine')) {\n      var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);\n      x = pos[0];\n      y = pos[1];\n    }\n\n    content.moveTo(x, y);\n  },\n  // FIXME\n  // Should we remove this but leave this to user?\n  _updateContentNotChangedOnAxis: function (dataByCoordSys) {\n    var lastCoordSys = this._lastDataByCoordSys;\n    var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n    contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n      var lastDataByAxis = lastItemCoordSys.dataByAxis || {};\n      var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n      var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n      contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length;\n      contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n        var thisItem = thisDataByAxis[indexAxis] || {};\n        var lastIndices = lastItem.seriesDataIndices || [];\n        var newIndices = thisItem.seriesDataIndices || [];\n        contentNotChanged &= lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n        contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n          var newIdxItem = newIndices[j];\n          contentNotChanged &= lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n        });\n      });\n    });\n    this._lastDataByCoordSys = dataByCoordSys;\n    return !!contentNotChanged;\n  },\n  _hide: function (dispatchAction) {\n    // Do not directly hideLater here, because this behavior may be prevented\n    // in dispatchAction when showTip is dispatched.\n    // FIXME\n    // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n    this._lastDataByCoordSys = null;\n    dispatchAction({\n      type: 'hideTip',\n      from: this.uid\n    });\n  },\n  dispose: function (ecModel, api) {\n    if (env.node) {\n      return;\n    }\n\n    this._tooltipContent.dispose();\n\n    globalListener.unregister('itemTooltip', api);\n  }\n});\n/**\n * @param {Array.<Object|module:echarts/model/Model>} modelCascade\n * From top to bottom. (the last one should be globalTooltipModel);\n */\n\n\nfunction buildTooltipModel(modelCascade) {\n  var resultModel = modelCascade.pop();\n\n  while (modelCascade.length) {\n    var tooltipOpt = modelCascade.pop();\n\n    if (tooltipOpt) {\n      if (Model.isInstance(tooltipOpt)) {\n        tooltipOpt = tooltipOpt.get('tooltip', true);\n      } // In each data item tooltip can be simply write:\n      // {\n      //  value: 10,\n      //  tooltip: 'Something you need to know'\n      // }\n\n\n      if (typeof tooltipOpt === 'string') {\n        tooltipOpt = {\n          formatter: tooltipOpt\n        };\n      }\n\n      resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);\n    }\n  }\n\n  return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n  return payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {\n  var size = content.getOuterSize();\n  var width = size.width;\n  var height = size.height;\n\n  if (gapH != null) {\n    if (x + width + gapH > viewWidth) {\n      x -= width + gapH;\n    } else {\n      x += gapH;\n    }\n  }\n\n  if (gapV != null) {\n    if (y + height + gapV > viewHeight) {\n      y -= height + gapV;\n    } else {\n      y += gapV;\n    }\n  }\n\n  return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, content, viewWidth, viewHeight) {\n  var size = content.getOuterSize();\n  var width = size.width;\n  var height = size.height;\n  x = Math.min(x + width, viewWidth) - width;\n  y = Math.min(y + height, viewHeight) - height;\n  x = Math.max(x, 0);\n  y = Math.max(y, 0);\n  return [x, y];\n}\n\nfunction calcTooltipPosition(position, rect, contentSize) {\n  var domWidth = contentSize[0];\n  var domHeight = contentSize[1];\n  var gap = 5;\n  var x = 0;\n  var y = 0;\n  var rectWidth = rect.width;\n  var rectHeight = rect.height;\n\n  switch (position) {\n    case 'inside':\n      x = rect.x + rectWidth / 2 - domWidth / 2;\n      y = rect.y + rectHeight / 2 - domHeight / 2;\n      break;\n\n    case 'top':\n      x = rect.x + rectWidth / 2 - domWidth / 2;\n      y = rect.y - domHeight - gap;\n      break;\n\n    case 'bottom':\n      x = rect.x + rectWidth / 2 - domWidth / 2;\n      y = rect.y + rectHeight + gap;\n      break;\n\n    case 'left':\n      x = rect.x - domWidth - gap;\n      y = rect.y + rectHeight / 2 - domHeight / 2;\n      break;\n\n    case 'right':\n      x = rect.x + rectWidth + gap;\n      y = rect.y + rectHeight / 2 - domHeight / 2;\n  }\n\n  return [x, y];\n}\n\nfunction isCenterAlign(align) {\n  return align === 'center' || align === 'middle';\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1241 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar zrColor = __webpack_require__(130);\n\nvar eventUtil = __webpack_require__(129);\n\nvar domUtil = __webpack_require__(547);\n\nvar env = __webpack_require__(66);\n\nvar formatUtil = __webpack_require__(50);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar toCamelCase = formatUtil.toCamelCase;\nvar vendors = ['', '-webkit-', '-moz-', '-o-'];\nvar gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\n/**\n * @param {number} duration\n * @return {string}\n * @inner\n */\n\nfunction assembleTransition(duration) {\n  var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)';\n  var transitionText = 'left ' + duration + 's ' + transitionCurve + ',' + 'top ' + duration + 's ' + transitionCurve;\n  return zrUtil.map(vendors, function (vendorPrefix) {\n    return vendorPrefix + 'transition:' + transitionText;\n  }).join(';');\n}\n/**\n * @param {Object} textStyle\n * @return {string}\n * @inner\n */\n\n\nfunction assembleFont(textStyleModel) {\n  var cssText = [];\n  var fontSize = textStyleModel.get('fontSize');\n  var color = textStyleModel.getTextColor();\n  color && cssText.push('color:' + color);\n  cssText.push('font:' + textStyleModel.getFont());\n  var lineHeight = textStyleModel.get('lineHeight');\n\n  if (lineHeight == null) {\n    lineHeight = Math.round(fontSize * 3 / 2);\n  }\n\n  fontSize && cssText.push('line-height:' + lineHeight + 'px');\n  var shadowColor = textStyleModel.get('textShadowColor');\n  var shadowBlur = textStyleModel.get('textShadowBlur') || 0;\n  var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0;\n  var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0;\n  shadowBlur && cssText.push('text-shadow:' + shadowOffsetX + 'px ' + shadowOffsetY + 'px ' + shadowBlur + 'px ' + shadowColor);\n  each(['decoration', 'align'], function (name) {\n    var val = textStyleModel.get(name);\n    val && cssText.push('text-' + name + ':' + val);\n  });\n  return cssText.join(';');\n}\n/**\n * @param {Object} tooltipModel\n * @return {string}\n * @inner\n */\n\n\nfunction assembleCssText(tooltipModel) {\n  var cssText = [];\n  var transitionDuration = tooltipModel.get('transitionDuration');\n  var backgroundColor = tooltipModel.get('backgroundColor');\n  var textStyleModel = tooltipModel.getModel('textStyle');\n  var padding = tooltipModel.get('padding'); // Animation transition. Do not animate when transitionDuration is 0.\n\n  transitionDuration && cssText.push(assembleTransition(transitionDuration));\n\n  if (backgroundColor) {\n    if (env.canvasSupported) {\n      cssText.push('background-Color:' + backgroundColor);\n    } else {\n      // for ie\n      cssText.push('background-Color:#' + zrColor.toHex(backgroundColor));\n      cssText.push('filter:alpha(opacity=70)');\n    }\n  } // Border style\n\n\n  each(['width', 'color', 'radius'], function (name) {\n    var borderName = 'border-' + name;\n    var camelCase = toCamelCase(borderName);\n    var val = tooltipModel.get(camelCase);\n    val != null && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\n  }); // Text style\n\n  cssText.push(assembleFont(textStyleModel)); // Padding\n\n  if (padding != null) {\n    cssText.push('padding:' + formatUtil.normalizeCssArray(padding).join('px ') + 'px');\n  }\n\n  return cssText.join(';') + ';';\n} // If not able to make, do not modify the input `out`.\n\n\nfunction makeStyleCoord(out, zr, appendToBody, zrX, zrY) {\n  var zrPainter = zr && zr.painter;\n\n  if (appendToBody) {\n    var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();\n\n    if (zrViewportRoot) {\n      // Some APPs might use scale on body, so we support CSS transform here.\n      domUtil.transformLocalCoord(out, zrViewportRoot, document.body, zrX, zrY);\n    }\n  } else {\n    out[0] = zrX;\n    out[1] = zrY; // xy should be based on canvas root. But tooltipContent is\n    // the sibling of canvas root. So padding of ec container\n    // should be considered here.\n\n    var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();\n\n    if (viewportRootOffset) {\n      out[0] += viewportRootOffset.offsetLeft;\n      out[1] += viewportRootOffset.offsetTop;\n    }\n  }\n\n  out[2] = out[0] / zr.getWidth(); // The ratio of left to width\n\n  out[3] = out[1] / zr.getHeight(); // The ratio of top to height\n}\n/**\n * @alias module:echarts/component/tooltip/TooltipContent\n * @param {HTMLElement} container\n * @param {ExtensionAPI} api\n * @param {Object} [opt]\n * @param {boolean} [opt.appendToBody]\n *        `false`: the DOM element will be inside the container. Default value.\n *        `true`: the DOM element will be appended to HTML body, which avoid\n *                some overflow clip but intrude outside of the container.\n * @constructor\n */\n\n\nfunction TooltipContent(container, api, opt) {\n  if (env.wxa) {\n    return null;\n  }\n\n  var el = document.createElement('div');\n  el.domBelongToZr = true;\n  this.el = el;\n  var zr = this._zr = api.getZr();\n  var appendToBody = this._appendToBody = opt && opt.appendToBody;\n  this._styleCoord = [0, 0, 0, 0]; // [left, top, left/width, top/height]\n\n  makeStyleCoord(this._styleCoord, zr, appendToBody, api.getWidth() / 2, api.getHeight() / 2);\n\n  if (appendToBody) {\n    document.body.appendChild(el);\n  } else {\n    container.appendChild(el);\n  }\n\n  this._container = container;\n  this._show = false;\n  /**\n   * @private\n   */\n\n  this._hideTimeout; // FIXME\n  // Is it needed to trigger zr event manually if\n  // the browser do not support `pointer-events: none`.\n\n  var self = this;\n\n  el.onmouseenter = function () {\n    // clear the timeout in hideLater and keep showing tooltip\n    if (self._enterable) {\n      clearTimeout(self._hideTimeout);\n      self._show = true;\n    }\n\n    self._inContent = true;\n  };\n\n  el.onmousemove = function (e) {\n    e = e || window.event;\n\n    if (!self._enterable) {\n      // `pointer-events: none` is set to tooltip content div\n      // if `enterable` is set as `false`, and `el.onmousemove`\n      // can not be triggered. But in browser that do not\n      // support `pointer-events`, we need to do this:\n      // Try trigger zrender event to avoid mouse\n      // in and out shape too frequently\n      var handler = zr.handler;\n      var zrViewportRoot = zr.painter.getViewportRoot();\n      eventUtil.normalizeEvent(zrViewportRoot, e, true);\n      handler.dispatch('mousemove', e);\n    }\n  };\n\n  el.onmouseleave = function () {\n    if (self._enterable) {\n      if (self._show) {\n        self.hideLater(self._hideDelay);\n      }\n    }\n\n    self._inContent = false;\n  };\n}\n\nTooltipContent.prototype = {\n  constructor: TooltipContent,\n\n  /**\n   * @private\n   * @type {boolean}\n   */\n  _enterable: true,\n\n  /**\n   * Update when tooltip is rendered\n   */\n  update: function (tooltipModel) {\n    // FIXME\n    // Move this logic to ec main?\n    var container = this._container;\n    var stl = container.currentStyle || document.defaultView.getComputedStyle(container);\n    var domStyle = container.style;\n\n    if (domStyle.position !== 'absolute' && stl.position !== 'absolute') {\n      domStyle.position = 'relative';\n    }\n\n    var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n    alwaysShowContent && this._moveTooltipIfResized(); // Hide the tooltip\n    // PENDING\n    // this.hide();\n  },\n\n  /**\n   * when `alwaysShowContent` is true,\n   * we should move the tooltip after chart resized\n   */\n  _moveTooltipIfResized: function () {\n    var ratioX = this._styleCoord[2]; // The ratio of left to width\n\n    var ratioY = this._styleCoord[3]; // The ratio of top to height\n\n    var realX = ratioX * this._zr.getWidth();\n\n    var realY = ratioY * this._zr.getHeight();\n\n    this.moveTo(realX, realY);\n  },\n  show: function (tooltipModel) {\n    clearTimeout(this._hideTimeout);\n    var el = this.el;\n    var styleCoord = this._styleCoord;\n    el.style.cssText = gCssText + assembleCssText(tooltipModel) // Because of the reason described in:\n    // http://stackoverflow.com/questions/21125587/css3-transition-not-working-in-chrome-anymore\n    // we should set initial value to `left` and `top`.\n    + ';left:' + styleCoord[0] + 'px;top:' + styleCoord[1] + 'px;' + (tooltipModel.get('extraCssText') || '');\n    el.style.display = el.innerHTML ? 'block' : 'none'; // If mouse occasionally move over the tooltip, a mouseout event will be\n    // triggered by canvas, and cause some unexpectable result like dragging\n    // stop, \"unfocusAdjacency\". Here `pointer-events: none` is used to solve\n    // it. Although it is not supported by IE8~IE10, fortunately it is a rare\n    // scenario.\n\n    el.style.pointerEvents = this._enterable ? 'auto' : 'none';\n    this._show = true;\n  },\n  setContent: function (content) {\n    this.el.innerHTML = content == null ? '' : content;\n  },\n  setEnterable: function (enterable) {\n    this._enterable = enterable;\n  },\n  getSize: function () {\n    var el = this.el;\n    return [el.clientWidth, el.clientHeight];\n  },\n  moveTo: function (zrX, zrY) {\n    var styleCoord = this._styleCoord;\n    makeStyleCoord(styleCoord, this._zr, this._appendToBody, zrX, zrY);\n    var style = this.el.style;\n    style.left = styleCoord[0] + 'px';\n    style.top = styleCoord[1] + 'px';\n  },\n  hide: function () {\n    this.el.style.display = 'none';\n    this._show = false;\n  },\n  hideLater: function (time) {\n    if (this._show && !(this._inContent && this._enterable)) {\n      if (time) {\n        this._hideDelay = time; // Set show false to avoid invoke hideLater multiple times\n\n        this._show = false;\n        this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n      } else {\n        this.hide();\n      }\n    }\n  },\n  isShow: function () {\n    return this._show;\n  },\n  dispose: function () {\n    this.el.parentNode.removeChild(this.el);\n  },\n  getOuterSize: function () {\n    var width = this.el.clientWidth;\n    var height = this.el.clientHeight; // Consider browser compatibility.\n    // IE8 does not support getComputedStyle.\n\n    if (document.defaultView && document.defaultView.getComputedStyle) {\n      var stl = document.defaultView.getComputedStyle(this.el);\n\n      if (stl) {\n        width += parseInt(stl.borderLeftWidth, 10) + parseInt(stl.borderRightWidth, 10);\n        height += parseInt(stl.borderTopWidth, 10) + parseInt(stl.borderBottomWidth, 10);\n      }\n    }\n\n    return {\n      width: width,\n      height: height\n    };\n  }\n};\nvar _default = TooltipContent;\nmodule.exports = _default;\n\n/***/ }),\n/* 1242 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Text = __webpack_require__(178);\n\nvar graphicUtil = __webpack_require__(23);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import Group from 'zrender/src/container/Group';\nfunction makeStyleCoord(out, zr, zrX, zrY) {\n  out[0] = zrX;\n  out[1] = zrY;\n  out[2] = out[0] / zr.getWidth(); // The ratio of left to width\n\n  out[3] = out[1] / zr.getHeight(); // The ratio of top to height\n}\n/**\n * @alias module:echarts/component/tooltip/TooltipRichContent\n * @constructor\n */\n\n\nfunction TooltipRichContent(api) {\n  var zr = this._zr = api.getZr();\n  this._styleCoord = [0, 0, 0, 0]; // [left, top, left/width, top/height]\n\n  makeStyleCoord(this._styleCoord, zr, api.getWidth() / 2, api.getHeight() / 2);\n  this._show = false;\n  /**\n   * @private\n   */\n\n  this._hideTimeout;\n}\n\nTooltipRichContent.prototype = {\n  constructor: TooltipRichContent,\n\n  /**\n   * @private\n   * @type {boolean}\n   */\n  _enterable: true,\n\n  /**\n   * Update when tooltip is rendered\n   */\n  update: function (tooltipModel) {\n    var alwaysShowContent = tooltipModel.get('alwaysShowContent');\n    alwaysShowContent && this._moveTooltipIfResized();\n  },\n\n  /**\n   * when `alwaysShowContent` is true,\n   * we should move the tooltip after chart resized\n   */\n  _moveTooltipIfResized: function () {\n    var ratioX = this._styleCoord[2]; // The ratio of left to width\n\n    var ratioY = this._styleCoord[3]; // The ratio of top to height\n\n    var realX = ratioX * this._zr.getWidth();\n\n    var realY = ratioY * this._zr.getHeight();\n\n    this.moveTo(realX, realY);\n  },\n  show: function (tooltipModel) {\n    if (this._hideTimeout) {\n      clearTimeout(this._hideTimeout);\n    }\n\n    this.el.attr('show', true);\n    this._show = true;\n  },\n\n  /**\n   * Set tooltip content\n   *\n   * @param {string} content rich text string of content\n   * @param {Object} markerRich rich text style\n   * @param {Object} tooltipModel tooltip model\n   */\n  setContent: function (content, markerRich, tooltipModel) {\n    if (this.el) {\n      this._zr.remove(this.el);\n    }\n\n    var markers = {};\n    var text = content;\n    var prefix = '{marker';\n    var suffix = '|}';\n    var startId = text.indexOf(prefix);\n\n    while (startId >= 0) {\n      var endId = text.indexOf(suffix);\n      var name = text.substr(startId + prefix.length, endId - startId - prefix.length);\n\n      if (name.indexOf('sub') > -1) {\n        markers['marker' + name] = {\n          textWidth: 4,\n          textHeight: 4,\n          textBorderRadius: 2,\n          textBackgroundColor: markerRich[name],\n          // TODO: textOffset is not implemented for rich text\n          textOffset: [3, 0]\n        };\n      } else {\n        markers['marker' + name] = {\n          textWidth: 10,\n          textHeight: 10,\n          textBorderRadius: 5,\n          textBackgroundColor: markerRich[name]\n        };\n      }\n\n      text = text.substr(endId + 1);\n      startId = text.indexOf('{marker');\n    }\n\n    var textStyleModel = tooltipModel.getModel('textStyle');\n    var fontSize = textStyleModel.get('fontSize');\n    var lineHeight = tooltipModel.get('textLineHeight');\n\n    if (lineHeight == null) {\n      lineHeight = Math.round(fontSize * 3 / 2);\n    }\n\n    this.el = new Text({\n      style: graphicUtil.setTextStyle({}, textStyleModel, {\n        rich: markers,\n        text: content,\n        textBackgroundColor: tooltipModel.get('backgroundColor'),\n        textBorderRadius: tooltipModel.get('borderRadius'),\n        textFill: tooltipModel.get('textStyle.color'),\n        textPadding: tooltipModel.get('padding'),\n        textLineHeight: lineHeight\n      }),\n      z: tooltipModel.get('z')\n    });\n\n    this._zr.add(this.el);\n\n    var self = this;\n    this.el.on('mouseover', function () {\n      // clear the timeout in hideLater and keep showing tooltip\n      if (self._enterable) {\n        clearTimeout(self._hideTimeout);\n        self._show = true;\n      }\n\n      self._inContent = true;\n    });\n    this.el.on('mouseout', function () {\n      if (self._enterable) {\n        if (self._show) {\n          self.hideLater(self._hideDelay);\n        }\n      }\n\n      self._inContent = false;\n    });\n  },\n  setEnterable: function (enterable) {\n    this._enterable = enterable;\n  },\n  getSize: function () {\n    var bounding = this.el.getBoundingRect();\n    return [bounding.width, bounding.height];\n  },\n  moveTo: function (x, y) {\n    if (this.el) {\n      var styleCoord = this._styleCoord;\n      makeStyleCoord(styleCoord, this._zr, x, y);\n      this.el.attr('position', [styleCoord[0], styleCoord[1]]);\n    }\n  },\n  hide: function () {\n    if (this.el) {\n      this.el.hide();\n    }\n\n    this._show = false;\n  },\n  hideLater: function (time) {\n    if (this._show && !(this._inContent && this._enterable)) {\n      if (time) {\n        this._hideDelay = time; // Set show false to avoid invoke hideLater multiple times\n\n        this._show = false;\n        this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n      } else {\n        this.hide();\n      }\n    }\n  },\n  isShow: function () {\n    return this._show;\n  },\n  dispose: function () {\n    clearTimeout(this._hideTimeout);\n\n    if (this.el) {\n      this._zr.remove(this.el);\n    }\n  },\n  getOuterSize: function () {\n    var size = this.getSize();\n    return {\n      width: size[0],\n      height: size[1]\n    };\n  }\n};\nvar _default = TooltipRichContent;\nmodule.exports = _default;\n\n/***/ }),\n/* 1243 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar preprocessor = __webpack_require__(1244);\n\n__webpack_require__(614);\n\n__webpack_require__(1246);\n\n__webpack_require__(1247);\n\n__webpack_require__(1248);\n\n__webpack_require__(1249);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Brush component entry\n */\necharts.registerPreprocessor(preprocessor);\n\n/***/ }),\n/* 1244 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear'];\n\nfunction _default(option, isNew) {\n  var brushComponents = option && option.brush;\n\n  if (!zrUtil.isArray(brushComponents)) {\n    brushComponents = brushComponents ? [brushComponents] : [];\n  }\n\n  if (!brushComponents.length) {\n    return;\n  }\n\n  var brushComponentSpecifiedBtns = [];\n  zrUtil.each(brushComponents, function (brushOpt) {\n    var tbs = brushOpt.hasOwnProperty('toolbox') ? brushOpt.toolbox : [];\n\n    if (tbs instanceof Array) {\n      brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);\n    }\n  });\n  var toolbox = option && option.toolbox;\n\n  if (zrUtil.isArray(toolbox)) {\n    toolbox = toolbox[0];\n  }\n\n  if (!toolbox) {\n    toolbox = {\n      feature: {}\n    };\n    option.toolbox = [toolbox];\n  }\n\n  var toolboxFeature = toolbox.feature || (toolbox.feature = {});\n  var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {});\n  var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);\n  brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);\n  removeDuplicate(brushTypes);\n\n  if (isNew && !brushTypes.length) {\n    brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);\n  }\n}\n\nfunction removeDuplicate(arr) {\n  var map = {};\n  zrUtil.each(arr, function (val) {\n    map[val] = 1;\n  });\n  arr.length = 0;\n  zrUtil.each(map, function (flag, val) {\n    arr.push(val);\n  });\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1245 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar polygonContain = __webpack_require__(580);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar _graphic = __webpack_require__(23);\n\nvar linePolygonIntersect = _graphic.linePolygonIntersect;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Key of the first level is brushType: `line`, `rect`, `polygon`.\n// Key of the second level is chart element type: `point`, `rect`.\n// See moudule:echarts/component/helper/BrushController\n// function param:\n//      {Object} itemLayout fetch from data.getItemLayout(dataIndex)\n//      {Object} selectors {point: selector, rect: selector, ...}\n//      {Object} area {range: [[], [], ..], boudingRect}\n// function return:\n//      {boolean} Whether in the given brush.\nvar selector = {\n  lineX: getLineSelectors(0),\n  lineY: getLineSelectors(1),\n  rect: {\n    point: function (itemLayout, selectors, area) {\n      return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]);\n    },\n    rect: function (itemLayout, selectors, area) {\n      return itemLayout && area.boundingRect.intersect(itemLayout);\n    }\n  },\n  polygon: {\n    point: function (itemLayout, selectors, area) {\n      return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && polygonContain.contain(area.range, itemLayout[0], itemLayout[1]);\n    },\n    rect: function (itemLayout, selectors, area) {\n      var points = area.range;\n\n      if (!itemLayout || points.length <= 1) {\n        return false;\n      }\n\n      var x = itemLayout.x;\n      var y = itemLayout.y;\n      var width = itemLayout.width;\n      var height = itemLayout.height;\n      var p = points[0];\n\n      if (polygonContain.contain(points, x, y) || polygonContain.contain(points, x + width, y) || polygonContain.contain(points, x, y + height) || polygonContain.contain(points, x + width, y + height) || BoundingRect.create(itemLayout).contain(p[0], p[1]) || linePolygonIntersect(x, y, x + width, y, points) || linePolygonIntersect(x, y, x, y + height, points) || linePolygonIntersect(x + width, y, x + width, y + height, points) || linePolygonIntersect(x, y + height, x + width, y + height, points)) {\n        return true;\n      }\n    }\n  }\n};\n\nfunction getLineSelectors(xyIndex) {\n  var xy = ['x', 'y'];\n  var wh = ['width', 'height'];\n  return {\n    point: function (itemLayout, selectors, area) {\n      if (itemLayout) {\n        var range = area.range;\n        var p = itemLayout[xyIndex];\n        return inLineRange(p, range);\n      }\n    },\n    rect: function (itemLayout, selectors, area) {\n      if (itemLayout) {\n        var range = area.range;\n        var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]];\n        layoutRange[1] < layoutRange[0] && layoutRange.reverse();\n        return inLineRange(layoutRange[0], range) || inLineRange(layoutRange[1], range) || inLineRange(range[0], layoutRange) || inLineRange(range[1], layoutRange);\n      }\n    }\n  };\n}\n\nfunction inLineRange(p, range) {\n  return range[0] <= p && p <= range[1];\n}\n\nvar _default = selector;\nmodule.exports = _default;\n\n/***/ }),\n/* 1246 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar visualSolution = __webpack_require__(340);\n\nvar Model = __webpack_require__(67);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DEFAULT_OUT_OF_BRUSH_COLOR = ['#ddd'];\nvar BrushModel = echarts.extendComponentModel({\n  type: 'brush',\n  dependencies: ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'],\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    // inBrush: null,\n    // outOfBrush: null,\n    toolbox: null,\n    // Default value see preprocessor.\n    brushLink: null,\n    // Series indices array, broadcast using dataIndex.\n    // or 'all', which means all series. 'none' or null means no series.\n    seriesIndex: 'all',\n    // seriesIndex array, specify series controlled by this brush component.\n    geoIndex: null,\n    //\n    xAxisIndex: null,\n    yAxisIndex: null,\n    brushType: 'rect',\n    // Default brushType, see BrushController.\n    brushMode: 'single',\n    // Default brushMode, 'single' or 'multiple'\n    transformable: true,\n    // Default transformable.\n    brushStyle: {\n      // Default brushStyle\n      borderWidth: 1,\n      color: 'rgba(120,140,180,0.3)',\n      borderColor: 'rgba(120,140,180,0.8)'\n    },\n    throttleType: 'fixRate',\n    // Throttle in brushSelected event. 'fixRate' or 'debounce'.\n    // If null, no throttle. Valid only in the first brush component\n    throttleDelay: 0,\n    // Unit: ms, 0 means every event will be triggered.\n    // FIXME\n    // 试验效果\n    removeOnClick: true,\n    z: 10000\n  },\n\n  /**\n   * @readOnly\n   * @type {Array.<Object>}\n   */\n  areas: [],\n\n  /**\n   * Current activated brush type.\n   * If null, brush is inactived.\n   * see module:echarts/component/helper/BrushController\n   * @readOnly\n   * @type {string}\n   */\n  brushType: null,\n\n  /**\n   * Current brush opt.\n   * see module:echarts/component/helper/BrushController\n   * @readOnly\n   * @type {Object}\n   */\n  brushOption: {},\n\n  /**\n   * @readOnly\n   * @type {Array.<Object>}\n   */\n  coordInfoList: [],\n  optionUpdated: function (newOption, isInit) {\n    var thisOption = this.option;\n    !isInit && visualSolution.replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush']);\n    var inBrush = thisOption.inBrush = thisOption.inBrush || {}; // Always give default visual, consider setOption at the second time.\n\n    thisOption.outOfBrush = thisOption.outOfBrush || {\n      color: DEFAULT_OUT_OF_BRUSH_COLOR\n    };\n\n    if (!inBrush.hasOwnProperty('liftZ')) {\n      // Bigger than the highlight z lift, otherwise it will\n      // be effected by the highlight z when brush.\n      inBrush.liftZ = 5;\n    }\n  },\n\n  /**\n   * If ranges is null/undefined, range state remain.\n   *\n   * @param {Array.<Object>} [ranges]\n   */\n  setAreas: function (areas) {\n    // If ranges is null/undefined, range state remain.\n    // This helps user to dispatchAction({type: 'brush'}) with no areas\n    // set but just want to get the current brush select info from a `brush` event.\n    if (!areas) {\n      return;\n    }\n\n    this.areas = zrUtil.map(areas, function (area) {\n      return generateBrushOption(this.option, area);\n    }, this);\n  },\n\n  /**\n   * see module:echarts/component/helper/BrushController\n   * @param {Object} brushOption\n   */\n  setBrushOption: function (brushOption) {\n    this.brushOption = generateBrushOption(this.option, brushOption);\n    this.brushType = this.brushOption.brushType;\n  }\n});\n\nfunction generateBrushOption(option, brushOption) {\n  return zrUtil.merge({\n    brushType: option.brushType,\n    brushMode: option.brushMode,\n    transformable: option.transformable,\n    brushStyle: new Model(option.brushStyle).getItemStyle(),\n    removeOnClick: option.removeOnClick,\n    z: option.z\n  }, brushOption, true);\n}\n\nvar _default = BrushModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1247 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\nvar BrushController = __webpack_require__(421);\n\nvar _visualEncoding = __webpack_require__(614);\n\nvar layoutCovers = _visualEncoding.layoutCovers;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n  type: 'brush',\n  init: function (ecModel, api) {\n    /**\n     * @readOnly\n     * @type {module:echarts/model/Global}\n     */\n    this.ecModel = ecModel;\n    /**\n     * @readOnly\n     * @type {module:echarts/ExtensionAPI}\n     */\n\n    this.api = api;\n    /**\n     * @readOnly\n     * @type {module:echarts/component/brush/BrushModel}\n     */\n\n    this.model;\n    /**\n     * @private\n     * @type {module:echarts/component/helper/BrushController}\n     */\n\n    (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)).mount();\n  },\n\n  /**\n   * @override\n   */\n  render: function (brushModel) {\n    this.model = brushModel;\n    return updateController.apply(this, arguments);\n  },\n\n  /**\n   * @override\n   */\n  updateTransform: function (brushModel, ecModel) {\n    // PENDING: `updateTransform` is a little tricky, whose layout need\n    // to be calculate mandatorily and other stages will not be performed.\n    // Take care the correctness of the logic. See #11754 .\n    layoutCovers(ecModel);\n    return updateController.apply(this, arguments);\n  },\n\n  /**\n   * @override\n   */\n  updateView: updateController,\n  // /**\n  //  * @override\n  //  */\n  // updateLayout: updateController,\n  // /**\n  //  * @override\n  //  */\n  // updateVisual: updateController,\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    this._brushController.dispose();\n  },\n\n  /**\n   * @private\n   */\n  _onBrush: function (areas, opt) {\n    var modelId = this.model.id;\n    this.model.brushTargetManager.setOutputRanges(areas, this.ecModel); // Action is not dispatched on drag end, because the drag end\n    // emits the same params with the last drag move event, and\n    // may have some delay when using touch pad, which makes\n    // animation not smooth (when using debounce).\n\n    (!opt.isEnd || opt.removeOnClick) && this.api.dispatchAction({\n      type: 'brush',\n      brushId: modelId,\n      areas: zrUtil.clone(areas),\n      $from: modelId\n    });\n    opt.isEnd && this.api.dispatchAction({\n      type: 'brushEnd',\n      brushId: modelId,\n      areas: zrUtil.clone(areas),\n      $from: modelId\n    });\n  }\n});\n\nfunction updateController(brushModel, ecModel, api, payload) {\n  // Do not update controller when drawing.\n  (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice());\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1248 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * payload: {\n *      brushIndex: number, or,\n *      brushId: string, or,\n *      brushName: string,\n *      globalRanges: Array\n * }\n */\necharts.registerAction({\n  type: 'brush',\n  event: 'brush'\n  /*, update: 'updateView' */\n\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'brush',\n    query: payload\n  }, function (brushModel) {\n    brushModel.setAreas(payload.areas);\n  });\n});\n/**\n * payload: {\n *      brushComponents: [\n *          {\n *              brushId,\n *              brushIndex,\n *              brushName,\n *              series: [\n *                  {\n *                      seriesId,\n *                      seriesIndex,\n *                      seriesName,\n *                      rawIndices: [21, 34, ...]\n *                  },\n *                  ...\n *              ]\n *          },\n *          ...\n *      ]\n * }\n */\n\necharts.registerAction({\n  type: 'brushSelect',\n  event: 'brushSelected',\n  update: 'none'\n}, function () {});\necharts.registerAction({\n  type: 'brushEnd',\n  event: 'brushEnd',\n  update: 'none'\n}, function () {});\n\n/***/ }),\n/* 1249 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar featureManager = __webpack_require__(157);\n\nvar lang = __webpack_require__(154);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar brushLang = lang.toolbox.brush;\n\nfunction Brush(model, ecModel, api) {\n  this.model = model;\n  this.ecModel = ecModel;\n  this.api = api;\n  /**\n   * @private\n   * @type {string}\n   */\n\n  this._brushType;\n  /**\n   * @private\n   * @type {string}\n   */\n\n  this._brushMode;\n}\n\nBrush.defaultOption = {\n  show: true,\n  type: ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'],\n  icon: {\n    /* eslint-disable */\n    rect: 'M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13',\n    // jshint ignore:line\n    polygon: 'M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2',\n    // jshint ignore:line\n    lineX: 'M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4',\n    // jshint ignore:line\n    lineY: 'M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4',\n    // jshint ignore:line\n    keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z',\n    // jshint ignore:line\n    clear: 'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2' // jshint ignore:line\n\n    /* eslint-enable */\n\n  },\n  // `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear`\n  title: zrUtil.clone(brushLang.title)\n};\nvar proto = Brush.prototype; // proto.updateLayout = function (featureModel, ecModel, api) {\n\n/* eslint-disable */\n\nproto.render =\n/* eslint-enable */\nproto.updateView = function (featureModel, ecModel, api) {\n  var brushType;\n  var brushMode;\n  var isBrushed;\n  ecModel.eachComponent({\n    mainType: 'brush'\n  }, function (brushModel) {\n    brushType = brushModel.brushType;\n    brushMode = brushModel.brushOption.brushMode || 'single';\n    isBrushed |= brushModel.areas.length;\n  });\n  this._brushType = brushType;\n  this._brushMode = brushMode;\n  zrUtil.each(featureModel.get('type', true), function (type) {\n    featureModel.setIconStatus(type, (type === 'keep' ? brushMode === 'multiple' : type === 'clear' ? isBrushed : type === brushType) ? 'emphasis' : 'normal');\n  });\n};\n\nproto.getIcons = function () {\n  var model = this.model;\n  var availableIcons = model.get('icon', true);\n  var icons = {};\n  zrUtil.each(model.get('type', true), function (type) {\n    if (availableIcons[type]) {\n      icons[type] = availableIcons[type];\n    }\n  });\n  return icons;\n};\n\nproto.onclick = function (ecModel, api, type) {\n  var brushType = this._brushType;\n  var brushMode = this._brushMode;\n\n  if (type === 'clear') {\n    // Trigger parallel action firstly\n    api.dispatchAction({\n      type: 'axisAreaSelect',\n      intervals: []\n    });\n    api.dispatchAction({\n      type: 'brush',\n      command: 'clear',\n      // Clear all areas of all brush components.\n      areas: []\n    });\n  } else {\n    api.dispatchAction({\n      type: 'takeGlobalCursor',\n      key: 'brush',\n      brushOption: {\n        brushType: type === 'keep' ? brushType : brushType === type ? false : type,\n        brushMode: type === 'keep' ? brushMode === 'multiple' ? 'single' : 'multiple' : brushMode\n      }\n    });\n  }\n};\n\nfeatureManager.register('brush', Brush);\nvar _default = Brush;\nmodule.exports = _default;\n\n/***/ }),\n/* 1250 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar echarts = __webpack_require__(13);\n\nvar graphic = __webpack_require__(23);\n\nvar _layout = __webpack_require__(49);\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _format = __webpack_require__(50);\n\nvar windowOpen = _format.windowOpen;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Model\necharts.extendComponentModel({\n  type: 'title',\n  layoutMode: {\n    type: 'box',\n    ignoreSize: true\n  },\n  defaultOption: {\n    // 一级层叠\n    zlevel: 0,\n    // 二级层叠\n    z: 6,\n    show: true,\n    text: '',\n    // 超链接跳转\n    // link: null,\n    // 仅支持self | blank\n    target: 'blank',\n    subtext: '',\n    // 超链接跳转\n    // sublink: null,\n    // 仅支持self | blank\n    subtarget: 'blank',\n    // 'center' ¦ 'left' ¦ 'right'\n    // ¦ {number}（x坐标，单位px）\n    left: 0,\n    // 'top' ¦ 'bottom' ¦ 'center'\n    // ¦ {number}（y坐标，单位px）\n    top: 0,\n    // 水平对齐\n    // 'auto' | 'left' | 'right' | 'center'\n    // 默认根据 left 的位置判断是左对齐还是右对齐\n    // textAlign: null\n    //\n    // 垂直对齐\n    // 'auto' | 'top' | 'bottom' | 'middle'\n    // 默认根据 top 位置判断是上对齐还是下对齐\n    // textVerticalAlign: null\n    // textBaseline: null // The same as textVerticalAlign.\n    backgroundColor: 'rgba(0,0,0,0)',\n    // 标题边框颜色\n    borderColor: '#ccc',\n    // 标题边框线宽，单位px，默认为0（无边框）\n    borderWidth: 0,\n    // 标题内边距，单位px，默认各方向内边距为5，\n    // 接受数组分别设定上右下左边距，同css\n    padding: 5,\n    // 主副标题纵向间隔，单位px，默认为10，\n    itemGap: 10,\n    textStyle: {\n      fontSize: 18,\n      fontWeight: 'bolder',\n      color: '#333'\n    },\n    subtextStyle: {\n      color: '#aaa'\n    }\n  }\n}); // View\n\necharts.extendComponentView({\n  type: 'title',\n  render: function (titleModel, ecModel, api) {\n    this.group.removeAll();\n\n    if (!titleModel.get('show')) {\n      return;\n    }\n\n    var group = this.group;\n    var textStyleModel = titleModel.getModel('textStyle');\n    var subtextStyleModel = titleModel.getModel('subtextStyle');\n    var textAlign = titleModel.get('textAlign');\n    var textVerticalAlign = zrUtil.retrieve2(titleModel.get('textBaseline'), titleModel.get('textVerticalAlign'));\n    var textEl = new graphic.Text({\n      style: graphic.setTextStyle({}, textStyleModel, {\n        text: titleModel.get('text'),\n        textFill: textStyleModel.getTextColor()\n      }, {\n        disableBox: true\n      }),\n      z2: 10\n    });\n    var textRect = textEl.getBoundingRect();\n    var subText = titleModel.get('subtext');\n    var subTextEl = new graphic.Text({\n      style: graphic.setTextStyle({}, subtextStyleModel, {\n        text: subText,\n        textFill: subtextStyleModel.getTextColor(),\n        y: textRect.height + titleModel.get('itemGap'),\n        textVerticalAlign: 'top'\n      }, {\n        disableBox: true\n      }),\n      z2: 10\n    });\n    var link = titleModel.get('link');\n    var sublink = titleModel.get('sublink');\n    var triggerEvent = titleModel.get('triggerEvent', true);\n    textEl.silent = !link && !triggerEvent;\n    subTextEl.silent = !sublink && !triggerEvent;\n\n    if (link) {\n      textEl.on('click', function () {\n        windowOpen(link, '_' + titleModel.get('target'));\n      });\n    }\n\n    if (sublink) {\n      subTextEl.on('click', function () {\n        windowOpen(sublink, '_' + titleModel.get('subtarget'));\n      });\n    }\n\n    textEl.eventData = subTextEl.eventData = triggerEvent ? {\n      componentType: 'title',\n      componentIndex: titleModel.componentIndex\n    } : null;\n    group.add(textEl);\n    subText && group.add(subTextEl); // If no subText, but add subTextEl, there will be an empty line.\n\n    var groupRect = group.getBoundingRect();\n    var layoutOption = titleModel.getBoxLayoutParams();\n    layoutOption.width = groupRect.width;\n    layoutOption.height = groupRect.height;\n    var layoutRect = getLayoutRect(layoutOption, {\n      width: api.getWidth(),\n      height: api.getHeight()\n    }, titleModel.get('padding')); // Adjust text align based on position\n\n    if (!textAlign) {\n      // Align left if title is on the left. center and right is same\n      textAlign = titleModel.get('left') || titleModel.get('right');\n\n      if (textAlign === 'middle') {\n        textAlign = 'center';\n      } // Adjust layout by text align\n\n\n      if (textAlign === 'right') {\n        layoutRect.x += layoutRect.width;\n      } else if (textAlign === 'center') {\n        layoutRect.x += layoutRect.width / 2;\n      }\n    }\n\n    if (!textVerticalAlign) {\n      textVerticalAlign = titleModel.get('top') || titleModel.get('bottom');\n\n      if (textVerticalAlign === 'center') {\n        textVerticalAlign = 'middle';\n      }\n\n      if (textVerticalAlign === 'bottom') {\n        layoutRect.y += layoutRect.height;\n      } else if (textVerticalAlign === 'middle') {\n        layoutRect.y += layoutRect.height / 2;\n      }\n\n      textVerticalAlign = textVerticalAlign || 'top';\n    }\n\n    group.attr('position', [layoutRect.x, layoutRect.y]);\n    var alignStyle = {\n      textAlign: textAlign,\n      textVerticalAlign: textVerticalAlign\n    };\n    textEl.setStyle(alignStyle);\n    subTextEl.setStyle(alignStyle); // Render background\n    // Get groupRect again because textAlign has been changed\n\n    groupRect = group.getBoundingRect();\n    var padding = layoutRect.margin;\n    var style = titleModel.getItemStyle(['color', 'opacity']);\n    style.fill = titleModel.get('backgroundColor');\n    var rect = new graphic.Rect({\n      shape: {\n        x: groupRect.x - padding[3],\n        y: groupRect.y - padding[0],\n        width: groupRect.width + padding[1] + padding[3],\n        height: groupRect.height + padding[0] + padding[2],\n        r: titleModel.get('borderRadius')\n      },\n      style: style,\n      subPixelOptimize: true,\n      silent: true\n    });\n    group.add(rect);\n  }\n});\n\n/***/ }),\n/* 1251 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar preprocessor = __webpack_require__(1252);\n\n__webpack_require__(1253);\n\n__webpack_require__(1254);\n\n__webpack_require__(1255);\n\n__webpack_require__(1257);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);\n\n/***/ }),\n/* 1252 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(option) {\n  var timelineOpt = option && option.timeline;\n\n  if (!zrUtil.isArray(timelineOpt)) {\n    timelineOpt = timelineOpt ? [timelineOpt] : [];\n  }\n\n  zrUtil.each(timelineOpt, function (opt) {\n    if (!opt) {\n      return;\n    }\n\n    compatibleEC2(opt);\n  });\n}\n\nfunction compatibleEC2(opt) {\n  var type = opt.type;\n  var ec2Types = {\n    'number': 'value',\n    'time': 'time'\n  }; // Compatible with ec2\n\n  if (ec2Types[type]) {\n    opt.axisType = ec2Types[type];\n    delete opt.type;\n  }\n\n  transferItem(opt);\n\n  if (has(opt, 'controlPosition')) {\n    var controlStyle = opt.controlStyle || (opt.controlStyle = {});\n\n    if (!has(controlStyle, 'position')) {\n      controlStyle.position = opt.controlPosition;\n    }\n\n    if (controlStyle.position === 'none' && !has(controlStyle, 'show')) {\n      controlStyle.show = false;\n      delete controlStyle.position;\n    }\n\n    delete opt.controlPosition;\n  }\n\n  zrUtil.each(opt.data || [], function (dataItem) {\n    if (zrUtil.isObject(dataItem) && !zrUtil.isArray(dataItem)) {\n      if (!has(dataItem, 'value') && has(dataItem, 'name')) {\n        // In ec2, using name as value.\n        dataItem.value = dataItem.name;\n      }\n\n      transferItem(dataItem);\n    }\n  });\n}\n\nfunction transferItem(opt) {\n  var itemStyle = opt.itemStyle || (opt.itemStyle = {});\n  var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {}); // Transfer label out\n\n  var label = opt.label || opt.label || {};\n  var labelNormal = label.normal || (label.normal = {});\n  var excludeLabelAttr = {\n    normal: 1,\n    emphasis: 1\n  };\n  zrUtil.each(label, function (value, name) {\n    if (!excludeLabelAttr[name] && !has(labelNormal, name)) {\n      labelNormal[name] = value;\n    }\n  });\n\n  if (itemStyleEmphasis.label && !has(label, 'emphasis')) {\n    label.emphasis = itemStyleEmphasis.label;\n    delete itemStyleEmphasis.label;\n  }\n}\n\nfunction has(obj, attr) {\n  return obj.hasOwnProperty(attr);\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1253 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = __webpack_require__(74);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nComponent.registerSubTypeDefaulter('timeline', function () {\n  // Only slider now.\n  return 'slider';\n});\n\n/***/ }),\n/* 1254 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerAction({\n  type: 'timelineChange',\n  event: 'timelineChanged',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  var timelineModel = ecModel.getComponent('timeline');\n\n  if (timelineModel && payload.currentIndex != null) {\n    timelineModel.setCurrentIndex(payload.currentIndex);\n\n    if (!timelineModel.get('loop', true) && timelineModel.isIndexMax()) {\n      timelineModel.setPlayState(false);\n    }\n  } // Set normalized currentIndex to payload.\n\n\n  ecModel.resetOption('timeline');\n  return zrUtil.defaults({\n    currentIndex: timelineModel.option.currentIndex\n  }, payload);\n});\necharts.registerAction({\n  type: 'timelinePlayChange',\n  event: 'timelinePlayChanged',\n  update: 'update'\n}, function (payload, ecModel) {\n  var timelineModel = ecModel.getComponent('timeline');\n\n  if (timelineModel && payload.playState != null) {\n    timelineModel.setPlayState(payload.playState);\n  }\n});\n\n/***/ }),\n/* 1255 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar TimelineModel = __webpack_require__(1256);\n\nvar dataFormatMixin = __webpack_require__(407);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar SliderTimelineModel = TimelineModel.extend({\n  type: 'timeline.slider',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    backgroundColor: 'rgba(0,0,0,0)',\n    // 时间轴背景颜色\n    borderColor: '#ccc',\n    // 时间轴边框颜色\n    borderWidth: 0,\n    // 时间轴边框线宽，单位px，默认为0（无边框）\n    orient: 'horizontal',\n    // 'vertical'\n    inverse: false,\n    tooltip: {\n      // boolean or Object\n      trigger: 'item' // data item may also have tootip attr.\n\n    },\n    symbol: 'emptyCircle',\n    symbolSize: 10,\n    lineStyle: {\n      show: true,\n      width: 2,\n      color: '#304654'\n    },\n    label: {\n      // 文本标签\n      position: 'auto',\n      // auto left right top bottom\n      // When using number, label position is not\n      // restricted by viewRect.\n      // positive: right/bottom, negative: left/top\n      show: true,\n      interval: 'auto',\n      rotate: 0,\n      // formatter: null,\n      // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n      color: '#304654'\n    },\n    itemStyle: {\n      color: '#304654',\n      borderWidth: 1\n    },\n    checkpointStyle: {\n      symbol: 'circle',\n      symbolSize: 13,\n      color: '#c23531',\n      borderWidth: 5,\n      borderColor: 'rgba(194,53,49, 0.5)',\n      animation: true,\n      animationDuration: 300,\n      animationEasing: 'quinticInOut'\n    },\n    controlStyle: {\n      show: true,\n      showPlayBtn: true,\n      showPrevBtn: true,\n      showNextBtn: true,\n      itemSize: 22,\n      itemGap: 12,\n      position: 'left',\n      // 'left' 'right' 'top' 'bottom'\n      playIcon: 'path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z',\n      // jshint ignore:line\n      stopIcon: 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z',\n      // jshint ignore:line\n      nextIcon: 'path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z',\n      // jshint ignore:line\n      prevIcon: 'path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z',\n      // jshint ignore:line\n      color: '#304654',\n      borderColor: '#304654',\n      borderWidth: 1\n    },\n    emphasis: {\n      label: {\n        show: true,\n        // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n        color: '#c23531'\n      },\n      itemStyle: {\n        color: '#c23531'\n      },\n      controlStyle: {\n        color: '#c23531',\n        borderColor: '#c23531',\n        borderWidth: 2\n      }\n    },\n    data: []\n  }\n});\nzrUtil.mixin(SliderTimelineModel, dataFormatMixin);\nvar _default = SliderTimelineModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1256 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar ComponentModel = __webpack_require__(74);\n\nvar List = __webpack_require__(116);\n\nvar modelUtil = __webpack_require__(31);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TimelineModel = ComponentModel.extend({\n  type: 'timeline',\n  layoutMode: 'box',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 4,\n    // 二级层叠\n    show: true,\n    axisType: 'time',\n    // 模式是时间类型，支持 value, category\n    realtime: true,\n    left: '20%',\n    top: null,\n    right: '20%',\n    bottom: 0,\n    width: null,\n    height: 40,\n    padding: 5,\n    controlPosition: 'left',\n    // 'left' 'right' 'top' 'bottom' 'none'\n    autoPlay: false,\n    rewind: false,\n    // 反向播放\n    loop: true,\n    playInterval: 2000,\n    // 播放时间间隔，单位ms\n    currentIndex: 0,\n    itemStyle: {},\n    label: {\n      color: '#000'\n    },\n    data: []\n  },\n\n  /**\n   * @override\n   */\n  init: function (option, parentModel, ecModel) {\n    /**\n     * @private\n     * @type {module:echarts/data/List}\n     */\n    this._data;\n    /**\n     * @private\n     * @type {Array.<string>}\n     */\n\n    this._names;\n    this.mergeDefaultAndTheme(option, ecModel);\n\n    this._initData();\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function (option) {\n    TimelineModel.superApply(this, 'mergeOption', arguments);\n\n    this._initData();\n  },\n\n  /**\n   * @param {number} [currentIndex]\n   */\n  setCurrentIndex: function (currentIndex) {\n    if (currentIndex == null) {\n      currentIndex = this.option.currentIndex;\n    }\n\n    var count = this._data.count();\n\n    if (this.option.loop) {\n      currentIndex = (currentIndex % count + count) % count;\n    } else {\n      currentIndex >= count && (currentIndex = count - 1);\n      currentIndex < 0 && (currentIndex = 0);\n    }\n\n    this.option.currentIndex = currentIndex;\n  },\n\n  /**\n   * @return {number} currentIndex\n   */\n  getCurrentIndex: function () {\n    return this.option.currentIndex;\n  },\n\n  /**\n   * @return {boolean}\n   */\n  isIndexMax: function () {\n    return this.getCurrentIndex() >= this._data.count() - 1;\n  },\n\n  /**\n   * @param {boolean} state true: play, false: stop\n   */\n  setPlayState: function (state) {\n    this.option.autoPlay = !!state;\n  },\n\n  /**\n   * @return {boolean} true: play, false: stop\n   */\n  getPlayState: function () {\n    return !!this.option.autoPlay;\n  },\n\n  /**\n   * @private\n   */\n  _initData: function () {\n    var thisOption = this.option;\n    var dataArr = thisOption.data || [];\n    var axisType = thisOption.axisType;\n    var names = this._names = [];\n\n    if (axisType === 'category') {\n      var idxArr = [];\n      zrUtil.each(dataArr, function (item, index) {\n        var value = modelUtil.getDataItemValue(item);\n        var newItem;\n\n        if (zrUtil.isObject(item)) {\n          newItem = zrUtil.clone(item);\n          newItem.value = index;\n        } else {\n          newItem = index;\n        }\n\n        idxArr.push(newItem);\n\n        if (!zrUtil.isString(value) && (value == null || isNaN(value))) {\n          value = '';\n        }\n\n        names.push(value + '');\n      });\n      dataArr = idxArr;\n    }\n\n    var dimType = {\n      category: 'ordinal',\n      time: 'time'\n    }[axisType] || 'number';\n    var data = this._data = new List([{\n      name: 'value',\n      type: dimType\n    }], this);\n    data.initData(dataArr, names);\n  },\n  getData: function () {\n    return this._data;\n  },\n\n  /**\n   * @public\n   * @return {Array.<string>} categoreis\n   */\n  getCategories: function () {\n    if (this.get('axisType') === 'category') {\n      return this._names.slice();\n    }\n  }\n});\nvar _default = TimelineModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1257 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar BoundingRect = __webpack_require__(57);\n\nvar matrix = __webpack_require__(89);\n\nvar graphic = __webpack_require__(23);\n\nvar layout = __webpack_require__(49);\n\nvar TimelineView = __webpack_require__(1258);\n\nvar TimelineAxis = __webpack_require__(1259);\n\nvar _symbol = __webpack_require__(117);\n\nvar createSymbol = _symbol.createSymbol;\n\nvar axisHelper = __webpack_require__(122);\n\nvar numberUtil = __webpack_require__(26);\n\nvar _format = __webpack_require__(50);\n\nvar encodeHTML = _format.encodeHTML;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar PI = Math.PI;\n\nvar _default = TimelineView.extend({\n  type: 'timeline.slider',\n  init: function (ecModel, api) {\n    this.api = api;\n    /**\n     * @private\n     * @type {module:echarts/component/timeline/TimelineAxis}\n     */\n\n    this._axis;\n    /**\n     * @private\n     * @type {module:zrender/core/BoundingRect}\n     */\n\n    this._viewRect;\n    /**\n     * @type {number}\n     */\n\n    this._timer;\n    /**\n     * @type {module:zrender/Element}\n     */\n\n    this._currentPointer;\n    /**\n     * @type {module:zrender/container/Group}\n     */\n\n    this._mainGroup;\n    /**\n     * @type {module:zrender/container/Group}\n     */\n\n    this._labelGroup;\n  },\n\n  /**\n   * @override\n   */\n  render: function (timelineModel, ecModel, api, payload) {\n    this.model = timelineModel;\n    this.api = api;\n    this.ecModel = ecModel;\n    this.group.removeAll();\n\n    if (timelineModel.get('show', true)) {\n      var layoutInfo = this._layout(timelineModel, api);\n\n      var mainGroup = this._createGroup('mainGroup');\n\n      var labelGroup = this._createGroup('labelGroup');\n      /**\n       * @private\n       * @type {module:echarts/component/timeline/TimelineAxis}\n       */\n\n\n      var axis = this._axis = this._createAxis(layoutInfo, timelineModel);\n\n      timelineModel.formatTooltip = function (dataIndex) {\n        return encodeHTML(axis.scale.getLabel(dataIndex));\n      };\n\n      each(['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], function (name) {\n        this['_render' + name](layoutInfo, mainGroup, axis, timelineModel);\n      }, this);\n\n      this._renderAxisLabel(layoutInfo, labelGroup, axis, timelineModel);\n\n      this._position(layoutInfo, timelineModel);\n    }\n\n    this._doPlayStop();\n  },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    this._clearTimer();\n\n    this.group.removeAll();\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    this._clearTimer();\n  },\n  _layout: function (timelineModel, api) {\n    var labelPosOpt = timelineModel.get('label.position');\n    var orient = timelineModel.get('orient');\n    var viewRect = getViewRect(timelineModel, api); // Auto label offset.\n\n    if (labelPosOpt == null || labelPosOpt === 'auto') {\n      labelPosOpt = orient === 'horizontal' ? viewRect.y + viewRect.height / 2 < api.getHeight() / 2 ? '-' : '+' : viewRect.x + viewRect.width / 2 < api.getWidth() / 2 ? '+' : '-';\n    } else if (isNaN(labelPosOpt)) {\n      labelPosOpt = {\n        horizontal: {\n          top: '-',\n          bottom: '+'\n        },\n        vertical: {\n          left: '-',\n          right: '+'\n        }\n      }[orient][labelPosOpt];\n    }\n\n    var labelAlignMap = {\n      horizontal: 'center',\n      vertical: labelPosOpt >= 0 || labelPosOpt === '+' ? 'left' : 'right'\n    };\n    var labelBaselineMap = {\n      horizontal: labelPosOpt >= 0 || labelPosOpt === '+' ? 'top' : 'bottom',\n      vertical: 'middle'\n    };\n    var rotationMap = {\n      horizontal: 0,\n      vertical: PI / 2\n    }; // Position\n\n    var mainLength = orient === 'vertical' ? viewRect.height : viewRect.width;\n    var controlModel = timelineModel.getModel('controlStyle');\n    var showControl = controlModel.get('show', true);\n    var controlSize = showControl ? controlModel.get('itemSize') : 0;\n    var controlGap = showControl ? controlModel.get('itemGap') : 0;\n    var sizePlusGap = controlSize + controlGap; // Special label rotate.\n\n    var labelRotation = timelineModel.get('label.rotate') || 0;\n    labelRotation = labelRotation * PI / 180; // To radian.\n\n    var playPosition;\n    var prevBtnPosition;\n    var nextBtnPosition;\n    var axisExtent;\n    var controlPosition = controlModel.get('position', true);\n    var showPlayBtn = showControl && controlModel.get('showPlayBtn', true);\n    var showPrevBtn = showControl && controlModel.get('showPrevBtn', true);\n    var showNextBtn = showControl && controlModel.get('showNextBtn', true);\n    var xLeft = 0;\n    var xRight = mainLength; // position[0] means left, position[1] means middle.\n\n    if (controlPosition === 'left' || controlPosition === 'bottom') {\n      showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap);\n      showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap);\n      showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n    } else {\n      // 'top' 'right'\n      showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n      showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap);\n      showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n    }\n\n    axisExtent = [xLeft, xRight];\n\n    if (timelineModel.get('inverse')) {\n      axisExtent.reverse();\n    }\n\n    return {\n      viewRect: viewRect,\n      mainLength: mainLength,\n      orient: orient,\n      rotation: rotationMap[orient],\n      labelRotation: labelRotation,\n      labelPosOpt: labelPosOpt,\n      labelAlign: timelineModel.get('label.align') || labelAlignMap[orient],\n      labelBaseline: timelineModel.get('label.verticalAlign') || timelineModel.get('label.baseline') || labelBaselineMap[orient],\n      // Based on mainGroup.\n      playPosition: playPosition,\n      prevBtnPosition: prevBtnPosition,\n      nextBtnPosition: nextBtnPosition,\n      axisExtent: axisExtent,\n      controlSize: controlSize,\n      controlGap: controlGap\n    };\n  },\n  _position: function (layoutInfo, timelineModel) {\n    // Position is be called finally, because bounding rect is needed for\n    // adapt content to fill viewRect (auto adapt offset).\n    // Timeline may be not all in the viewRect when 'offset' is specified\n    // as a number, because it is more appropriate that label aligns at\n    // 'offset' but not the other edge defined by viewRect.\n    var mainGroup = this._mainGroup;\n    var labelGroup = this._labelGroup;\n    var viewRect = layoutInfo.viewRect;\n\n    if (layoutInfo.orient === 'vertical') {\n      // transform to horizontal, inverse rotate by left-top point.\n      var m = matrix.create();\n      var rotateOriginX = viewRect.x;\n      var rotateOriginY = viewRect.y + viewRect.height;\n      matrix.translate(m, m, [-rotateOriginX, -rotateOriginY]);\n      matrix.rotate(m, m, -PI / 2);\n      matrix.translate(m, m, [rotateOriginX, rotateOriginY]);\n      viewRect = viewRect.clone();\n      viewRect.applyTransform(m);\n    }\n\n    var viewBound = getBound(viewRect);\n    var mainBound = getBound(mainGroup.getBoundingRect());\n    var labelBound = getBound(labelGroup.getBoundingRect());\n    var mainPosition = mainGroup.position;\n    var labelsPosition = labelGroup.position;\n    labelsPosition[0] = mainPosition[0] = viewBound[0][0];\n    var labelPosOpt = layoutInfo.labelPosOpt;\n\n    if (isNaN(labelPosOpt)) {\n      // '+' or '-'\n      var mainBoundIdx = labelPosOpt === '+' ? 0 : 1;\n      toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n      toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx);\n    } else {\n      var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1;\n      toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n      labelsPosition[1] = mainPosition[1] + labelPosOpt;\n    }\n\n    mainGroup.attr('position', mainPosition);\n    labelGroup.attr('position', labelsPosition);\n    mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation;\n    setOrigin(mainGroup);\n    setOrigin(labelGroup);\n\n    function setOrigin(targetGroup) {\n      var pos = targetGroup.position;\n      targetGroup.origin = [viewBound[0][0] - pos[0], viewBound[1][0] - pos[1]];\n    }\n\n    function getBound(rect) {\n      // [[xmin, xmax], [ymin, ymax]]\n      return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]];\n    }\n\n    function toBound(fromPos, from, to, dimIdx, boundIdx) {\n      fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx];\n    }\n  },\n  _createAxis: function (layoutInfo, timelineModel) {\n    var data = timelineModel.getData();\n    var axisType = timelineModel.get('axisType');\n    var scale = axisHelper.createScaleByModel(timelineModel, axisType); // Customize scale. The `tickValue` is `dataIndex`.\n\n    scale.getTicks = function () {\n      return data.mapArray(['value'], function (value) {\n        return value;\n      });\n    };\n\n    var dataExtent = data.getDataExtent('value');\n    scale.setExtent(dataExtent[0], dataExtent[1]);\n    scale.niceTicks();\n    var axis = new TimelineAxis('value', scale, layoutInfo.axisExtent, axisType);\n    axis.model = timelineModel;\n    return axis;\n  },\n  _createGroup: function (name) {\n    var newGroup = this['_' + name] = new graphic.Group();\n    this.group.add(newGroup);\n    return newGroup;\n  },\n  _renderAxisLine: function (layoutInfo, group, axis, timelineModel) {\n    var axisExtent = axis.getExtent();\n\n    if (!timelineModel.get('lineStyle.show')) {\n      return;\n    }\n\n    group.add(new graphic.Line({\n      shape: {\n        x1: axisExtent[0],\n        y1: 0,\n        x2: axisExtent[1],\n        y2: 0\n      },\n      style: zrUtil.extend({\n        lineCap: 'round'\n      }, timelineModel.getModel('lineStyle').getLineStyle()),\n      silent: true,\n      z2: 1\n    }));\n  },\n\n  /**\n   * @private\n   */\n  _renderAxisTick: function (layoutInfo, group, axis, timelineModel) {\n    var data = timelineModel.getData(); // Show all ticks, despite ignoring strategy.\n\n    var ticks = axis.scale.getTicks(); // The value is dataIndex, see the costomized scale.\n\n    each(ticks, function (value) {\n      var tickCoord = axis.dataToCoord(value);\n      var itemModel = data.getItemModel(value);\n      var itemStyleModel = itemModel.getModel('itemStyle');\n      var hoverStyleModel = itemModel.getModel('emphasis.itemStyle');\n      var symbolOpt = {\n        position: [tickCoord, 0],\n        onclick: bind(this._changeTimeline, this, value)\n      };\n      var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt);\n      graphic.setHoverStyle(el, hoverStyleModel.getItemStyle());\n\n      if (itemModel.get('tooltip')) {\n        el.dataIndex = value;\n        el.dataModel = timelineModel;\n      } else {\n        el.dataIndex = el.dataModel = null;\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _renderAxisLabel: function (layoutInfo, group, axis, timelineModel) {\n    var labelModel = axis.getLabelModel();\n\n    if (!labelModel.get('show')) {\n      return;\n    }\n\n    var data = timelineModel.getData();\n    var labels = axis.getViewLabels();\n    each(labels, function (labelItem) {\n      // The tickValue is dataIndex, see the costomized scale.\n      var dataIndex = labelItem.tickValue;\n      var itemModel = data.getItemModel(dataIndex);\n      var normalLabelModel = itemModel.getModel('label');\n      var hoverLabelModel = itemModel.getModel('emphasis.label');\n      var tickCoord = axis.dataToCoord(labelItem.tickValue);\n      var textEl = new graphic.Text({\n        position: [tickCoord, 0],\n        rotation: layoutInfo.labelRotation - layoutInfo.rotation,\n        onclick: bind(this._changeTimeline, this, dataIndex),\n        silent: false\n      });\n      graphic.setTextStyle(textEl.style, normalLabelModel, {\n        text: labelItem.formattedLabel,\n        textAlign: layoutInfo.labelAlign,\n        textVerticalAlign: layoutInfo.labelBaseline\n      });\n      group.add(textEl);\n      graphic.setHoverStyle(textEl, graphic.setTextStyle({}, hoverLabelModel));\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _renderControl: function (layoutInfo, group, axis, timelineModel) {\n    var controlSize = layoutInfo.controlSize;\n    var rotation = layoutInfo.rotation;\n    var itemStyle = timelineModel.getModel('controlStyle').getItemStyle();\n    var hoverStyle = timelineModel.getModel('emphasis.controlStyle').getItemStyle();\n    var rect = [0, -controlSize / 2, controlSize, controlSize];\n    var playState = timelineModel.getPlayState();\n    var inverse = timelineModel.get('inverse', true);\n    makeBtn(layoutInfo.nextBtnPosition, 'controlStyle.nextIcon', bind(this._changeTimeline, this, inverse ? '-' : '+'));\n    makeBtn(layoutInfo.prevBtnPosition, 'controlStyle.prevIcon', bind(this._changeTimeline, this, inverse ? '+' : '-'));\n    makeBtn(layoutInfo.playPosition, 'controlStyle.' + (playState ? 'stopIcon' : 'playIcon'), bind(this._handlePlayClick, this, !playState), true);\n\n    function makeBtn(position, iconPath, onclick, willRotate) {\n      if (!position) {\n        return;\n      }\n\n      var opt = {\n        position: position,\n        origin: [controlSize / 2, 0],\n        rotation: willRotate ? -rotation : 0,\n        rectHover: true,\n        style: itemStyle,\n        onclick: onclick\n      };\n      var btn = makeIcon(timelineModel, iconPath, rect, opt);\n      group.add(btn);\n      graphic.setHoverStyle(btn, hoverStyle);\n    }\n  },\n  _renderCurrentPointer: function (layoutInfo, group, axis, timelineModel) {\n    var data = timelineModel.getData();\n    var currentIndex = timelineModel.getCurrentIndex();\n    var pointerModel = data.getItemModel(currentIndex).getModel('checkpointStyle');\n    var me = this;\n    var callback = {\n      onCreate: function (pointer) {\n        pointer.draggable = true;\n        pointer.drift = bind(me._handlePointerDrag, me);\n        pointer.ondragend = bind(me._handlePointerDragend, me);\n        pointerMoveTo(pointer, currentIndex, axis, timelineModel, true);\n      },\n      onUpdate: function (pointer) {\n        pointerMoveTo(pointer, currentIndex, axis, timelineModel);\n      }\n    }; // Reuse when exists, for animation and drag.\n\n    this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback);\n  },\n  _handlePlayClick: function (nextState) {\n    this._clearTimer();\n\n    this.api.dispatchAction({\n      type: 'timelinePlayChange',\n      playState: nextState,\n      from: this.uid\n    });\n  },\n  _handlePointerDrag: function (dx, dy, e) {\n    this._clearTimer();\n\n    this._pointerChangeTimeline([e.offsetX, e.offsetY]);\n  },\n  _handlePointerDragend: function (e) {\n    this._pointerChangeTimeline([e.offsetX, e.offsetY], true);\n  },\n  _pointerChangeTimeline: function (mousePos, trigger) {\n    var toCoord = this._toAxisCoord(mousePos)[0];\n\n    var axis = this._axis;\n    var axisExtent = numberUtil.asc(axis.getExtent().slice());\n    toCoord > axisExtent[1] && (toCoord = axisExtent[1]);\n    toCoord < axisExtent[0] && (toCoord = axisExtent[0]);\n    this._currentPointer.position[0] = toCoord;\n\n    this._currentPointer.dirty();\n\n    var targetDataIndex = this._findNearestTick(toCoord);\n\n    var timelineModel = this.model;\n\n    if (trigger || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get('realtime')) {\n      this._changeTimeline(targetDataIndex);\n    }\n  },\n  _doPlayStop: function () {\n    this._clearTimer();\n\n    if (this.model.getPlayState()) {\n      this._timer = setTimeout(bind(handleFrame, this), this.model.get('playInterval'));\n    }\n\n    function handleFrame() {\n      // Do not cache\n      var timelineModel = this.model;\n\n      this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get('rewind', true) ? -1 : 1));\n    }\n  },\n  _toAxisCoord: function (vertex) {\n    var trans = this._mainGroup.getLocalTransform();\n\n    return graphic.applyTransform(vertex, trans, true);\n  },\n  _findNearestTick: function (axisCoord) {\n    var data = this.model.getData();\n    var dist = Infinity;\n    var targetDataIndex;\n    var axis = this._axis;\n    data.each(['value'], function (value, dataIndex) {\n      var coord = axis.dataToCoord(value);\n      var d = Math.abs(coord - axisCoord);\n\n      if (d < dist) {\n        dist = d;\n        targetDataIndex = dataIndex;\n      }\n    });\n    return targetDataIndex;\n  },\n  _clearTimer: function () {\n    if (this._timer) {\n      clearTimeout(this._timer);\n      this._timer = null;\n    }\n  },\n  _changeTimeline: function (nextIndex) {\n    var currentIndex = this.model.getCurrentIndex();\n\n    if (nextIndex === '+') {\n      nextIndex = currentIndex + 1;\n    } else if (nextIndex === '-') {\n      nextIndex = currentIndex - 1;\n    }\n\n    this.api.dispatchAction({\n      type: 'timelineChange',\n      currentIndex: nextIndex,\n      from: this.uid\n    });\n  }\n});\n\nfunction getViewRect(model, api) {\n  return layout.getLayoutRect(model.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  }, model.get('padding'));\n}\n\nfunction makeIcon(timelineModel, objPath, rect, opts) {\n  var style = opts.style;\n  var icon = graphic.createIcon(timelineModel.get(objPath), opts || {}, new BoundingRect(rect[0], rect[1], rect[2], rect[3])); // TODO createIcon won't use style in opt.\n\n  if (style) {\n    icon.setStyle(style);\n  }\n\n  return icon;\n}\n/**\n * Create symbol or update symbol\n * opt: basic position and event handlers\n */\n\n\nfunction giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {\n  var color = itemStyleModel.get('color');\n\n  if (!symbol) {\n    var symbolType = hostModel.get('symbol');\n    symbol = createSymbol(symbolType, -1, -1, 2, 2, color);\n    symbol.setStyle('strokeNoScale', true);\n    group.add(symbol);\n    callback && callback.onCreate(symbol);\n  } else {\n    symbol.setColor(color);\n    group.add(symbol); // Group may be new, also need to add.\n\n    callback && callback.onUpdate(symbol);\n  } // Style\n\n\n  var itemStyle = itemStyleModel.getItemStyle(['color', 'symbol', 'symbolSize']);\n  symbol.setStyle(itemStyle); // Transform and events.\n\n  opt = zrUtil.merge({\n    rectHover: true,\n    z2: 100\n  }, opt, true);\n  var symbolSize = hostModel.get('symbolSize');\n  symbolSize = symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n  symbolSize[0] /= 2;\n  symbolSize[1] /= 2;\n  opt.scale = symbolSize;\n  var symbolOffset = hostModel.get('symbolOffset');\n\n  if (symbolOffset) {\n    var pos = opt.position = opt.position || [0, 0];\n    pos[0] += numberUtil.parsePercent(symbolOffset[0], symbolSize[0]);\n    pos[1] += numberUtil.parsePercent(symbolOffset[1], symbolSize[1]);\n  }\n\n  var symbolRotate = hostModel.get('symbolRotate');\n  opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n  symbol.attr(opt); // FIXME\n  // (1) When symbol.style.strokeNoScale is true and updateTransform is not performed,\n  // getBoundingRect will return wrong result.\n  // (This is supposed to be resolved in zrender, but it is a little difficult to\n  // leverage performance and auto updateTransform)\n  // (2) All of ancesters of symbol do not scale, so we can just updateTransform symbol.\n\n  symbol.updateTransform();\n  return symbol;\n}\n\nfunction pointerMoveTo(pointer, dataIndex, axis, timelineModel, noAnimation) {\n  if (pointer.dragging) {\n    return;\n  }\n\n  var pointerModel = timelineModel.getModel('checkpointStyle');\n  var toCoord = axis.dataToCoord(timelineModel.getData().get(['value'], dataIndex));\n\n  if (noAnimation || !pointerModel.get('animation', true)) {\n    pointer.attr({\n      position: [toCoord, 0]\n    });\n  } else {\n    pointer.stopAnimation(true);\n    pointer.animateTo({\n      position: [toCoord, 0]\n    }, pointerModel.get('animationDuration', true), pointerModel.get('animationEasing', true));\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1258 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentView = __webpack_require__(328);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = ComponentView.extend({\n  type: 'timeline'\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1259 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar Axis = __webpack_require__(155);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.<number>} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar TimelineAxis = function (dim, scale, coordExtent, axisType) {\n  Axis.call(this, dim, scale, coordExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = axisType || 'value';\n  /**\n   * Axis model\n   * @param {module:echarts/component/TimelineModel}\n   */\n\n  this.model = null;\n};\n\nTimelineAxis.prototype = {\n  constructor: TimelineAxis,\n\n  /**\n   * @override\n   */\n  getLabelModel: function () {\n    return this.model.getModel('label');\n  },\n\n  /**\n   * @override\n   */\n  isHorizontal: function () {\n    return this.model.get('orient') === 'horizontal';\n  }\n};\nzrUtil.inherits(TimelineAxis, Axis);\nvar _default = TimelineAxis;\nmodule.exports = _default;\n\n/***/ }),\n/* 1260 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1261);\n\n__webpack_require__(1262);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// HINT Markpoint can't be used too much\necharts.registerPreprocessor(function (opt) {\n  // Make sure markPoint component is enabled\n  opt.markPoint = opt.markPoint || {};\n});\n\n/***/ }),\n/* 1261 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MarkerModel = __webpack_require__(428);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = MarkerModel.extend({\n  type: 'markPoint',\n  defaultOption: {\n    zlevel: 0,\n    z: 5,\n    symbol: 'pin',\n    symbolSize: 50,\n    //symbolRotate: 0,\n    //symbolOffset: [0, 0]\n    tooltip: {\n      trigger: 'item'\n    },\n    label: {\n      show: true,\n      position: 'inside'\n    },\n    itemStyle: {\n      borderWidth: 2\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    }\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1262 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar SymbolDraw = __webpack_require__(260);\n\nvar numberUtil = __webpack_require__(26);\n\nvar List = __webpack_require__(116);\n\nvar markerHelper = __webpack_require__(429);\n\nvar MarkerView = __webpack_require__(430);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction updateMarkerLayout(mpData, seriesModel, api) {\n  var coordSys = seriesModel.coordinateSystem;\n  mpData.each(function (idx) {\n    var itemModel = mpData.getItemModel(idx);\n    var point;\n    var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n    var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n    if (!isNaN(xPx) && !isNaN(yPx)) {\n      point = [xPx, yPx];\n    } // Chart like bar may have there own marker positioning logic\n    else if (seriesModel.getMarkerPosition) {\n        // Use the getMarkerPoisition\n        point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx));\n      } else if (coordSys) {\n        var x = mpData.get(coordSys.dimensions[0], idx);\n        var y = mpData.get(coordSys.dimensions[1], idx);\n        point = coordSys.dataToPoint([x, y]);\n      } // Use x, y if has any\n\n\n    if (!isNaN(xPx)) {\n      point[0] = xPx;\n    }\n\n    if (!isNaN(yPx)) {\n      point[1] = yPx;\n    }\n\n    mpData.setItemLayout(idx, point);\n  });\n}\n\nvar _default = MarkerView.extend({\n  type: 'markPoint',\n  // updateLayout: function (markPointModel, ecModel, api) {\n  //     ecModel.eachSeries(function (seriesModel) {\n  //         var mpModel = seriesModel.markPointModel;\n  //         if (mpModel) {\n  //             updateMarkerLayout(mpModel.getData(), seriesModel, api);\n  //             this.markerGroupMap.get(seriesModel.id).updateLayout(mpModel);\n  //         }\n  //     }, this);\n  // },\n  updateTransform: function (markPointModel, ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      var mpModel = seriesModel.markPointModel;\n\n      if (mpModel) {\n        updateMarkerLayout(mpModel.getData(), seriesModel, api);\n        this.markerGroupMap.get(seriesModel.id).updateLayout(mpModel);\n      }\n    }, this);\n  },\n  renderSeries: function (seriesModel, mpModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesId = seriesModel.id;\n    var seriesData = seriesModel.getData();\n    var symbolDrawMap = this.markerGroupMap;\n    var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw());\n    var mpData = createList(coordSys, seriesModel, mpModel); // FIXME\n\n    mpModel.setData(mpData);\n    updateMarkerLayout(mpModel.getData(), seriesModel, api);\n    mpData.each(function (idx) {\n      var itemModel = mpData.getItemModel(idx);\n      var symbol = itemModel.getShallow('symbol');\n      var symbolSize = itemModel.getShallow('symbolSize');\n      var symbolRotate = itemModel.getShallow('symbolRotate');\n      var isFnSymbol = zrUtil.isFunction(symbol);\n      var isFnSymbolSize = zrUtil.isFunction(symbolSize);\n      var isFnSymbolRotate = zrUtil.isFunction(symbolRotate);\n\n      if (isFnSymbol || isFnSymbolSize || isFnSymbolRotate) {\n        var rawIdx = mpModel.getRawValue(idx);\n        var dataParams = mpModel.getDataParams(idx);\n\n        if (isFnSymbol) {\n          symbol = symbol(rawIdx, dataParams);\n        }\n\n        if (isFnSymbolSize) {\n          // FIXME 这里不兼容 ECharts 2.x，2.x 貌似参数是整个数据？\n          symbolSize = symbolSize(rawIdx, dataParams);\n        }\n\n        if (isFnSymbolRotate) {\n          symbolRotate = symbolRotate(rawIdx, dataParams);\n        }\n      }\n\n      mpData.setItemVisual(idx, {\n        symbol: symbol,\n        symbolSize: symbolSize,\n        symbolRotate: symbolRotate,\n        color: itemModel.get('itemStyle.color') || seriesData.getVisual('color')\n      });\n    }); // TODO Text are wrong\n\n    symbolDraw.updateData(mpData);\n    this.group.add(symbolDraw.group); // Set host model for tooltip\n    // FIXME\n\n    mpData.eachItemGraphicEl(function (el) {\n      el.traverse(function (child) {\n        child.dataModel = mpModel;\n      });\n    });\n    symbolDraw.__keep = true;\n    symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent');\n  }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} [coordSys]\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\n\nfunction createList(coordSys, seriesModel, mpModel) {\n  var coordDimsInfos;\n\n  if (coordSys) {\n    coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n      var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n      return zrUtil.defaults({\n        name: coordDim\n      }, info);\n    });\n  } else {\n    coordDimsInfos = [{\n      name: 'value',\n      type: 'float'\n    }];\n  }\n\n  var mpData = new List(coordDimsInfos, mpModel);\n  var dataOpt = zrUtil.map(mpModel.get('data'), zrUtil.curry(markerHelper.dataTransform, seriesModel));\n\n  if (coordSys) {\n    dataOpt = zrUtil.filter(dataOpt, zrUtil.curry(markerHelper.dataFilter, coordSys));\n  }\n\n  mpData.initData(dataOpt, null, coordSys ? markerHelper.dimValueGetter : function (item) {\n    return item.value;\n  });\n  return mpData;\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1263 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1264);\n\n__webpack_require__(1265);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerPreprocessor(function (opt) {\n  // Make sure markLine component is enabled\n  opt.markLine = opt.markLine || {};\n});\n\n/***/ }),\n/* 1264 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MarkerModel = __webpack_require__(428);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = MarkerModel.extend({\n  type: 'markLine',\n  defaultOption: {\n    zlevel: 0,\n    z: 5,\n    symbol: ['circle', 'arrow'],\n    symbolSize: [8, 16],\n    //symbolRotate: 0,\n    precision: 2,\n    tooltip: {\n      trigger: 'item'\n    },\n    label: {\n      show: true,\n      position: 'end',\n      distance: 5\n    },\n    lineStyle: {\n      type: 'dashed'\n    },\n    emphasis: {\n      label: {\n        show: true\n      },\n      lineStyle: {\n        width: 3\n      }\n    },\n    animationEasing: 'linear'\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1265 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar List = __webpack_require__(116);\n\nvar numberUtil = __webpack_require__(26);\n\nvar markerHelper = __webpack_require__(429);\n\nvar LineDraw = __webpack_require__(418);\n\nvar MarkerView = __webpack_require__(430);\n\nvar _dataStackHelper = __webpack_require__(132);\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar markLineTransform = function (seriesModel, coordSys, mlModel, item) {\n  var data = seriesModel.getData(); // Special type markLine like 'min', 'max', 'average', 'median'\n\n  var mlType = item.type;\n\n  if (!zrUtil.isArray(item) && (mlType === 'min' || mlType === 'max' || mlType === 'average' || mlType === 'median' // In case\n  // data: [{\n  //   yAxis: 10\n  // }]\n  || item.xAxis != null || item.yAxis != null)) {\n    var valueAxis;\n    var value;\n\n    if (item.yAxis != null || item.xAxis != null) {\n      valueAxis = coordSys.getAxis(item.yAxis != null ? 'y' : 'x');\n      value = zrUtil.retrieve(item.yAxis, item.xAxis);\n    } else {\n      var axisInfo = markerHelper.getAxisInfo(item, data, coordSys, seriesModel);\n      valueAxis = axisInfo.valueAxis;\n      var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);\n      value = markerHelper.numCalculate(data, valueDataDim, mlType);\n    }\n\n    var valueIndex = valueAxis.dim === 'x' ? 0 : 1;\n    var baseIndex = 1 - valueIndex;\n    var mlFrom = zrUtil.clone(item);\n    var mlTo = {};\n    mlFrom.type = null;\n    mlFrom.coord = [];\n    mlTo.coord = [];\n    mlFrom.coord[baseIndex] = -Infinity;\n    mlTo.coord[baseIndex] = Infinity;\n    var precision = mlModel.get('precision');\n\n    if (precision >= 0 && typeof value === 'number') {\n      value = +value.toFixed(Math.min(precision, 20));\n    }\n\n    mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;\n    item = [mlFrom, mlTo, {\n      // Extra option for tooltip and label\n      type: mlType,\n      valueIndex: item.valueIndex,\n      // Force to use the value of calculated value.\n      value: value\n    }];\n  }\n\n  item = [markerHelper.dataTransform(seriesModel, item[0]), markerHelper.dataTransform(seriesModel, item[1]), zrUtil.extend({}, item[2])]; // Avoid line data type is extended by from(to) data type\n\n  item[2].type = item[2].type || ''; // Merge from option and to option into line option\n\n  zrUtil.merge(item[2], item[0]);\n  zrUtil.merge(item[2], item[1]);\n  return item;\n};\n\nfunction isInifinity(val) {\n  return !isNaN(val) && !isFinite(val);\n} // If a markLine has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n  var otherDimIndex = 1 - dimIndex;\n  var dimName = coordSys.dimensions[dimIndex];\n  return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);\n}\n\nfunction markLineFilter(coordSys, item) {\n  if (coordSys.type === 'cartesian2d') {\n    var fromCoord = item[0].coord;\n    var toCoord = item[1].coord; // In case\n    // {\n    //  markLine: {\n    //    data: [{ yAxis: 2 }]\n    //  }\n    // }\n\n    if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n      return true;\n    }\n  }\n\n  return markerHelper.dataFilter(coordSys, item[0]) && markerHelper.dataFilter(coordSys, item[1]);\n}\n\nfunction updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {\n  var coordSys = seriesModel.coordinateSystem;\n  var itemModel = data.getItemModel(idx);\n  var point;\n  var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n  var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n  if (!isNaN(xPx) && !isNaN(yPx)) {\n    point = [xPx, yPx];\n  } else {\n    // Chart like bar may have there own marker positioning logic\n    if (seriesModel.getMarkerPosition) {\n      // Use the getMarkerPoisition\n      point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));\n    } else {\n      var dims = coordSys.dimensions;\n      var x = data.get(dims[0], idx);\n      var y = data.get(dims[1], idx);\n      point = coordSys.dataToPoint([x, y]);\n    } // Expand line to the edge of grid if value on one axis is Inifnity\n    // In case\n    //  markLine: {\n    //    data: [{\n    //      yAxis: 2\n    //      // or\n    //      type: 'average'\n    //    }]\n    //  }\n\n\n    if (coordSys.type === 'cartesian2d') {\n      var xAxis = coordSys.getAxis('x');\n      var yAxis = coordSys.getAxis('y');\n      var dims = coordSys.dimensions;\n\n      if (isInifinity(data.get(dims[0], idx))) {\n        point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);\n      } else if (isInifinity(data.get(dims[1], idx))) {\n        point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);\n      }\n    } // Use x, y if has any\n\n\n    if (!isNaN(xPx)) {\n      point[0] = xPx;\n    }\n\n    if (!isNaN(yPx)) {\n      point[1] = yPx;\n    }\n  }\n\n  data.setItemLayout(idx, point);\n}\n\nvar _default = MarkerView.extend({\n  type: 'markLine',\n  // updateLayout: function (markLineModel, ecModel, api) {\n  //     ecModel.eachSeries(function (seriesModel) {\n  //         var mlModel = seriesModel.markLineModel;\n  //         if (mlModel) {\n  //             var mlData = mlModel.getData();\n  //             var fromData = mlModel.__from;\n  //             var toData = mlModel.__to;\n  //             // Update visual and layout of from symbol and to symbol\n  //             fromData.each(function (idx) {\n  //                 updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n  //                 updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n  //             });\n  //             // Update layout of line\n  //             mlData.each(function (idx) {\n  //                 mlData.setItemLayout(idx, [\n  //                     fromData.getItemLayout(idx),\n  //                     toData.getItemLayout(idx)\n  //                 ]);\n  //             });\n  //             this.markerGroupMap.get(seriesModel.id).updateLayout();\n  //         }\n  //     }, this);\n  // },\n  updateTransform: function (markLineModel, ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      var mlModel = seriesModel.markLineModel;\n\n      if (mlModel) {\n        var mlData = mlModel.getData();\n        var fromData = mlModel.__from;\n        var toData = mlModel.__to; // Update visual and layout of from symbol and to symbol\n\n        fromData.each(function (idx) {\n          updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n          updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n        }); // Update layout of line\n\n        mlData.each(function (idx) {\n          mlData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n        });\n        this.markerGroupMap.get(seriesModel.id).updateLayout();\n      }\n    }, this);\n  },\n  renderSeries: function (seriesModel, mlModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesId = seriesModel.id;\n    var seriesData = seriesModel.getData();\n    var lineDrawMap = this.markerGroupMap;\n    var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw());\n    this.group.add(lineDraw.group);\n    var mlData = createList(coordSys, seriesModel, mlModel);\n    var fromData = mlData.from;\n    var toData = mlData.to;\n    var lineData = mlData.line;\n    mlModel.__from = fromData;\n    mlModel.__to = toData; // Line data for tooltip and formatter\n\n    mlModel.setData(lineData);\n    var symbolType = mlModel.get('symbol');\n    var symbolSize = mlModel.get('symbolSize');\n\n    if (!zrUtil.isArray(symbolType)) {\n      symbolType = [symbolType, symbolType];\n    }\n\n    if (typeof symbolSize === 'number') {\n      symbolSize = [symbolSize, symbolSize];\n    } // Update visual and layout of from symbol and to symbol\n\n\n    mlData.from.each(function (idx) {\n      updateDataVisualAndLayout(fromData, idx, true);\n      updateDataVisualAndLayout(toData, idx, false);\n    }); // Update visual and layout of line\n\n    lineData.each(function (idx) {\n      var lineColor = lineData.getItemModel(idx).get('lineStyle.color');\n      lineData.setItemVisual(idx, {\n        color: lineColor || fromData.getItemVisual(idx, 'color')\n      });\n      lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n      lineData.setItemVisual(idx, {\n        'fromSymbolRotate': fromData.getItemVisual(idx, 'symbolRotate'),\n        'fromSymbolSize': fromData.getItemVisual(idx, 'symbolSize'),\n        'fromSymbol': fromData.getItemVisual(idx, 'symbol'),\n        'toSymbolRotate': toData.getItemVisual(idx, 'symbolRotate'),\n        'toSymbolSize': toData.getItemVisual(idx, 'symbolSize'),\n        'toSymbol': toData.getItemVisual(idx, 'symbol')\n      });\n    });\n    lineDraw.updateData(lineData); // Set host model for tooltip\n    // FIXME\n\n    mlData.line.eachItemGraphicEl(function (el, idx) {\n      el.traverse(function (child) {\n        child.dataModel = mlModel;\n      });\n    });\n\n    function updateDataVisualAndLayout(data, idx, isFrom) {\n      var itemModel = data.getItemModel(idx);\n      updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);\n      data.setItemVisual(idx, {\n        symbolRotate: itemModel.get('symbolRotate'),\n        symbolSize: itemModel.get('symbolSize') || symbolSize[isFrom ? 0 : 1],\n        symbol: itemModel.get('symbol', true) || symbolType[isFrom ? 0 : 1],\n        color: itemModel.get('itemStyle.color') || seriesData.getVisual('color')\n      });\n    }\n\n    lineDraw.__keep = true;\n    lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent');\n  }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} coordSys\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\n\nfunction createList(coordSys, seriesModel, mlModel) {\n  var coordDimsInfos;\n\n  if (coordSys) {\n    coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n      var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n      return zrUtil.defaults({\n        name: coordDim\n      }, info);\n    });\n  } else {\n    coordDimsInfos = [{\n      name: 'value',\n      type: 'float'\n    }];\n  }\n\n  var fromData = new List(coordDimsInfos, mlModel);\n  var toData = new List(coordDimsInfos, mlModel); // No dimensions\n\n  var lineData = new List([], mlModel);\n  var optData = zrUtil.map(mlModel.get('data'), zrUtil.curry(markLineTransform, seriesModel, coordSys, mlModel));\n\n  if (coordSys) {\n    optData = zrUtil.filter(optData, zrUtil.curry(markLineFilter, coordSys));\n  }\n\n  var dimValueGetter = coordSys ? markerHelper.dimValueGetter : function (item) {\n    return item.value;\n  };\n  fromData.initData(zrUtil.map(optData, function (item) {\n    return item[0];\n  }), null, dimValueGetter);\n  toData.initData(zrUtil.map(optData, function (item) {\n    return item[1];\n  }), null, dimValueGetter);\n  lineData.initData(zrUtil.map(optData, function (item) {\n    return item[2];\n  }));\n  lineData.hasItemOption = true;\n  return {\n    from: fromData,\n    to: toData,\n    line: lineData\n  };\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1266 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n__webpack_require__(1267);\n\n__webpack_require__(1268);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerPreprocessor(function (opt) {\n  // Make sure markArea component is enabled\n  opt.markArea = opt.markArea || {};\n});\n\n/***/ }),\n/* 1267 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar MarkerModel = __webpack_require__(428);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = MarkerModel.extend({\n  type: 'markArea',\n  defaultOption: {\n    zlevel: 0,\n    // PENDING\n    z: 1,\n    tooltip: {\n      trigger: 'item'\n    },\n    // markArea should fixed on the coordinate system\n    animation: false,\n    label: {\n      show: true,\n      position: 'top'\n    },\n    itemStyle: {\n      // color and borderColor default to use color from series\n      // color: 'auto'\n      // borderColor: 'auto'\n      borderWidth: 0\n    },\n    emphasis: {\n      label: {\n        show: true,\n        position: 'top'\n      }\n    }\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1268 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar colorUtil = __webpack_require__(130);\n\nvar List = __webpack_require__(116);\n\nvar numberUtil = __webpack_require__(26);\n\nvar graphic = __webpack_require__(23);\n\nvar markerHelper = __webpack_require__(429);\n\nvar MarkerView = __webpack_require__(430);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Better on polar\nvar markAreaTransform = function (seriesModel, coordSys, maModel, item) {\n  var lt = markerHelper.dataTransform(seriesModel, item[0]);\n  var rb = markerHelper.dataTransform(seriesModel, item[1]);\n  var retrieve = zrUtil.retrieve; // FIXME make sure lt is less than rb\n\n  var ltCoord = lt.coord;\n  var rbCoord = rb.coord;\n  ltCoord[0] = retrieve(ltCoord[0], -Infinity);\n  ltCoord[1] = retrieve(ltCoord[1], -Infinity);\n  rbCoord[0] = retrieve(rbCoord[0], Infinity);\n  rbCoord[1] = retrieve(rbCoord[1], Infinity); // Merge option into one\n\n  var result = zrUtil.mergeAll([{}, lt, rb]);\n  result.coord = [lt.coord, rb.coord];\n  result.x0 = lt.x;\n  result.y0 = lt.y;\n  result.x1 = rb.x;\n  result.y1 = rb.y;\n  return result;\n};\n\nfunction isInifinity(val) {\n  return !isNaN(val) && !isFinite(val);\n} // If a markArea has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n  var otherDimIndex = 1 - dimIndex;\n  return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]);\n}\n\nfunction markAreaFilter(coordSys, item) {\n  var fromCoord = item.coord[0];\n  var toCoord = item.coord[1];\n\n  if (coordSys.type === 'cartesian2d') {\n    // In case\n    // {\n    //  markArea: {\n    //    data: [{ yAxis: 2 }]\n    //  }\n    // }\n    if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n      return true;\n    }\n  }\n\n  return markerHelper.dataFilter(coordSys, {\n    coord: fromCoord,\n    x: item.x0,\n    y: item.y0\n  }) || markerHelper.dataFilter(coordSys, {\n    coord: toCoord,\n    x: item.x1,\n    y: item.y1\n  });\n} // dims can be ['x0', 'y0'], ['x1', 'y1'], ['x0', 'y1'], ['x1', 'y0']\n\n\nfunction getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) {\n  var coordSys = seriesModel.coordinateSystem;\n  var itemModel = data.getItemModel(idx);\n  var point;\n  var xPx = numberUtil.parsePercent(itemModel.get(dims[0]), api.getWidth());\n  var yPx = numberUtil.parsePercent(itemModel.get(dims[1]), api.getHeight());\n\n  if (!isNaN(xPx) && !isNaN(yPx)) {\n    point = [xPx, yPx];\n  } else {\n    // Chart like bar may have there own marker positioning logic\n    if (seriesModel.getMarkerPosition) {\n      // Use the getMarkerPoisition\n      point = seriesModel.getMarkerPosition(data.getValues(dims, idx));\n    } else {\n      var x = data.get(dims[0], idx);\n      var y = data.get(dims[1], idx);\n      var pt = [x, y];\n      coordSys.clampData && coordSys.clampData(pt, pt);\n      point = coordSys.dataToPoint(pt, true);\n    }\n\n    if (coordSys.type === 'cartesian2d') {\n      var xAxis = coordSys.getAxis('x');\n      var yAxis = coordSys.getAxis('y');\n      var x = data.get(dims[0], idx);\n      var y = data.get(dims[1], idx);\n\n      if (isInifinity(x)) {\n        point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]);\n      } else if (isInifinity(y)) {\n        point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]);\n      }\n    } // Use x, y if has any\n\n\n    if (!isNaN(xPx)) {\n      point[0] = xPx;\n    }\n\n    if (!isNaN(yPx)) {\n      point[1] = yPx;\n    }\n  }\n\n  return point;\n}\n\nvar dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];\nMarkerView.extend({\n  type: 'markArea',\n  // updateLayout: function (markAreaModel, ecModel, api) {\n  //     ecModel.eachSeries(function (seriesModel) {\n  //         var maModel = seriesModel.markAreaModel;\n  //         if (maModel) {\n  //             var areaData = maModel.getData();\n  //             areaData.each(function (idx) {\n  //                 var points = zrUtil.map(dimPermutations, function (dim) {\n  //                     return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n  //                 });\n  //                 // Layout\n  //                 areaData.setItemLayout(idx, points);\n  //                 var el = areaData.getItemGraphicEl(idx);\n  //                 el.setShape('points', points);\n  //             });\n  //         }\n  //     }, this);\n  // },\n  updateTransform: function (markAreaModel, ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      var maModel = seriesModel.markAreaModel;\n\n      if (maModel) {\n        var areaData = maModel.getData();\n        areaData.each(function (idx) {\n          var points = zrUtil.map(dimPermutations, function (dim) {\n            return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n          }); // Layout\n\n          areaData.setItemLayout(idx, points);\n          var el = areaData.getItemGraphicEl(idx);\n          el.setShape('points', points);\n        });\n      }\n    }, this);\n  },\n  renderSeries: function (seriesModel, maModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesId = seriesModel.id;\n    var seriesData = seriesModel.getData();\n    var areaGroupMap = this.markerGroupMap;\n    var polygonGroup = areaGroupMap.get(seriesId) || areaGroupMap.set(seriesId, {\n      group: new graphic.Group()\n    });\n    this.group.add(polygonGroup.group);\n    polygonGroup.__keep = true;\n    var areaData = createList(coordSys, seriesModel, maModel); // Line data for tooltip and formatter\n\n    maModel.setData(areaData); // Update visual and layout of line\n\n    areaData.each(function (idx) {\n      // Layout\n      var points = zrUtil.map(dimPermutations, function (dim) {\n        return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n      }); // If none of the area is inside coordSys, allClipped is set to be true\n      // in layout so that label will not be displayed. See #12591\n\n      var allClipped = true;\n      zrUtil.each(dimPermutations, function (dim) {\n        if (!allClipped) {\n          return;\n        }\n\n        var xValue = areaData.get(dim[0], idx);\n        var yValue = areaData.get(dim[1], idx); // If is infinity, the axis should be considered not clipped\n\n        if ((isInifinity(xValue) || coordSys.getAxis('x').containData(xValue)) && (isInifinity(yValue) || coordSys.getAxis('y').containData(yValue))) {\n          allClipped = false;\n        }\n      });\n      areaData.setItemLayout(idx, {\n        points: points,\n        allClipped: allClipped\n      }); // Visual\n\n      areaData.setItemVisual(idx, {\n        color: seriesData.getVisual('color')\n      });\n    });\n    areaData.diff(polygonGroup.__data).add(function (idx) {\n      var layout = areaData.getItemLayout(idx);\n\n      if (!layout.allClipped) {\n        var polygon = new graphic.Polygon({\n          shape: {\n            points: layout.points\n          }\n        });\n        areaData.setItemGraphicEl(idx, polygon);\n        polygonGroup.group.add(polygon);\n      }\n    }).update(function (newIdx, oldIdx) {\n      var polygon = polygonGroup.__data.getItemGraphicEl(oldIdx);\n\n      var layout = areaData.getItemLayout(newIdx);\n\n      if (!layout.allClipped) {\n        if (polygon) {\n          graphic.updateProps(polygon, {\n            shape: {\n              points: layout.points\n            }\n          }, maModel, newIdx);\n        } else {\n          polygon = new graphic.Polygon({\n            shape: {\n              points: layout.points\n            }\n          });\n        }\n\n        areaData.setItemGraphicEl(newIdx, polygon);\n        polygonGroup.group.add(polygon);\n      } else if (polygon) {\n        polygonGroup.group.remove(polygon);\n      }\n    }).remove(function (idx) {\n      var polygon = polygonGroup.__data.getItemGraphicEl(idx);\n\n      polygonGroup.group.remove(polygon);\n    }).execute();\n    areaData.eachItemGraphicEl(function (polygon, idx) {\n      var itemModel = areaData.getItemModel(idx);\n      var labelModel = itemModel.getModel('label');\n      var labelHoverModel = itemModel.getModel('emphasis.label');\n      var color = areaData.getItemVisual(idx, 'color');\n      polygon.useStyle(zrUtil.defaults(itemModel.getModel('itemStyle').getItemStyle(), {\n        fill: colorUtil.modifyAlpha(color, 0.4),\n        stroke: color\n      }));\n      polygon.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n      graphic.setLabelStyle(polygon.style, polygon.hoverStyle, labelModel, labelHoverModel, {\n        labelFetcher: maModel,\n        labelDataIndex: idx,\n        defaultText: areaData.getName(idx) || '',\n        isRectText: true,\n        autoColor: color\n      });\n      graphic.setHoverStyle(polygon, {});\n      polygon.dataModel = maModel;\n    });\n    polygonGroup.__data = areaData;\n    polygonGroup.group.silent = maModel.get('silent') || seriesModel.get('silent');\n  }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} coordSys\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\nfunction createList(coordSys, seriesModel, maModel) {\n  var coordDimsInfos;\n  var areaData;\n  var dims = ['x0', 'y0', 'x1', 'y1'];\n\n  if (coordSys) {\n    coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n      var data = seriesModel.getData();\n      var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n      return zrUtil.defaults({\n        name: coordDim\n      }, info);\n    });\n    areaData = new List(zrUtil.map(dims, function (dim, idx) {\n      return {\n        name: dim,\n        type: coordDimsInfos[idx % 2].type\n      };\n    }), maModel);\n  } else {\n    coordDimsInfos = [{\n      name: 'value',\n      type: 'float'\n    }];\n    areaData = new List(coordDimsInfos, maModel);\n  }\n\n  var optData = zrUtil.map(maModel.get('data'), zrUtil.curry(markAreaTransform, seriesModel, coordSys, maModel));\n\n  if (coordSys) {\n    optData = zrUtil.filter(optData, zrUtil.curry(markAreaFilter, coordSys));\n  }\n\n  var dimValueGetter = coordSys ? function (item, dimName, dataIndex, dimIndex) {\n    return item.coord[Math.floor(dimIndex / 2)][dimIndex % 2];\n  } : function (item) {\n    return item.value;\n  };\n  areaData.initData(optData, null, dimValueGetter);\n  areaData.hasItemOption = true;\n  return areaData;\n}\n\n/***/ }),\n/* 1269 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(615);\n\n__webpack_require__(1272);\n\n__webpack_require__(1273);\n\n__webpack_require__(1274);\n\n/***/ }),\n/* 1270 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\nvar zrUtil = __webpack_require__(2);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction legendSelectActionHandler(methodName, payload, ecModel) {\n  var selectedMap = {};\n  var isToggleSelect = methodName === 'toggleSelected';\n  var isSelected; // Update all legend components\n\n  ecModel.eachComponent('legend', function (legendModel) {\n    if (isToggleSelect && isSelected != null) {\n      // Force other legend has same selected status\n      // Or the first is toggled to true and other are toggled to false\n      // In the case one legend has some item unSelected in option. And if other legend\n      // doesn't has the item, they will assume it is selected.\n      legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\n    } else if (methodName === 'allSelect' || methodName === 'inverseSelect') {\n      legendModel[methodName]();\n    } else {\n      legendModel[methodName](payload.name);\n      isSelected = legendModel.isSelected(payload.name);\n    }\n\n    var legendData = legendModel.getData();\n    zrUtil.each(legendData, function (model) {\n      var name = model.get('name'); // Wrap element\n\n      if (name === '\\n' || name === '') {\n        return;\n      }\n\n      var isItemSelected = legendModel.isSelected(name);\n\n      if (selectedMap.hasOwnProperty(name)) {\n        // Unselected if any legend is unselected\n        selectedMap[name] = selectedMap[name] && isItemSelected;\n      } else {\n        selectedMap[name] = isItemSelected;\n      }\n    });\n  }); // Return the event explicitly\n\n  return methodName === 'allSelect' || methodName === 'inverseSelect' ? {\n    selected: selectedMap\n  } : {\n    name: payload.name,\n    selected: selectedMap\n  };\n}\n/**\n * @event legendToggleSelect\n * @type {Object}\n * @property {string} type 'legendToggleSelect'\n * @property {string} [from]\n * @property {string} name Series name or data item name\n */\n\n\necharts.registerAction('legendToggleSelect', 'legendselectchanged', zrUtil.curry(legendSelectActionHandler, 'toggleSelected'));\necharts.registerAction('legendAllSelect', 'legendselectall', zrUtil.curry(legendSelectActionHandler, 'allSelect'));\necharts.registerAction('legendInverseSelect', 'legendinverseselect', zrUtil.curry(legendSelectActionHandler, 'inverseSelect'));\n/**\n * @event legendSelect\n * @type {Object}\n * @property {string} type 'legendSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendSelect', 'legendselected', zrUtil.curry(legendSelectActionHandler, 'select'));\n/**\n * @event legendUnSelect\n * @type {Object}\n * @property {string} type 'legendUnSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendUnSelect', 'legendunselected', zrUtil.curry(legendSelectActionHandler, 'unSelect'));\n\n/***/ }),\n/* 1271 */\n/***/ (function(module, exports) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(ecModel) {\n  var legendModels = ecModel.findComponents({\n    mainType: 'legend'\n  });\n\n  if (legendModels && legendModels.length) {\n    ecModel.filterSeries(function (series) {\n      // If in any legend component the status is not selected.\n      // Because in legend series is assumed selected when it is not in the legend data.\n      for (var i = 0; i < legendModels.length; i++) {\n        if (!legendModels[i].isSelected(series.name)) {\n          return false;\n        }\n      }\n\n      return true;\n    });\n  }\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1272 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar LegendModel = __webpack_require__(616);\n\nvar _layout = __webpack_require__(49);\n\nvar mergeLayoutParam = _layout.mergeLayoutParam;\nvar getLayoutParams = _layout.getLayoutParams;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ScrollableLegendModel = LegendModel.extend({\n  type: 'legend.scroll',\n\n  /**\n   * @param {number} scrollDataIndex\n   */\n  setScrollDataIndex: function (scrollDataIndex) {\n    this.option.scrollDataIndex = scrollDataIndex;\n  },\n  defaultOption: {\n    scrollDataIndex: 0,\n    pageButtonItemGap: 5,\n    pageButtonGap: null,\n    pageButtonPosition: 'end',\n    // 'start' or 'end'\n    pageFormatter: '{current}/{total}',\n    // If null/undefined, do not show page.\n    pageIcons: {\n      horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\n      vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\n    },\n    pageIconColor: '#2f4554',\n    pageIconInactiveColor: '#aaa',\n    pageIconSize: 15,\n    // Can be [10, 3], which represents [width, height]\n    pageTextStyle: {\n      color: '#333'\n    },\n    animationDurationUpdate: 800\n  },\n\n  /**\n   * @override\n   */\n  init: function (option, parentModel, ecModel, extraOpt) {\n    var inputPositionParams = getLayoutParams(option);\n    ScrollableLegendModel.superCall(this, 'init', option, parentModel, ecModel, extraOpt);\n    mergeAndNormalizeLayoutParams(this, option, inputPositionParams);\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function (option, extraOpt) {\n    ScrollableLegendModel.superCall(this, 'mergeOption', option, extraOpt);\n    mergeAndNormalizeLayoutParams(this, this.option, option);\n  }\n}); // Do not `ignoreSize` to enable setting {left: 10, right: 10}.\n\nfunction mergeAndNormalizeLayoutParams(legendModel, target, raw) {\n  var orient = legendModel.getOrient();\n  var ignoreSize = [1, 1];\n  ignoreSize[orient.index] = 0;\n  mergeLayoutParam(target, raw, {\n    type: 'box',\n    ignoreSize: ignoreSize\n  });\n}\n\nvar _default = ScrollableLegendModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1273 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar graphic = __webpack_require__(23);\n\nvar layoutUtil = __webpack_require__(49);\n\nvar LegendView = __webpack_require__(617);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Separate legend and scrollable legend to reduce package size.\n */\nvar Group = graphic.Group;\nvar WH = ['width', 'height'];\nvar XY = ['x', 'y'];\nvar ScrollableLegendView = LegendView.extend({\n  type: 'legend.scroll',\n  newlineDisabled: true,\n  init: function () {\n    ScrollableLegendView.superCall(this, 'init');\n    /**\n     * @private\n     * @type {number} For `scroll`.\n     */\n\n    this._currentIndex = 0;\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n\n    this.group.add(this._containerGroup = new Group());\n\n    this._containerGroup.add(this.getContentGroup());\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n\n\n    this.group.add(this._controllerGroup = new Group());\n    /**\n     *\n     * @private\n     */\n\n    this._showController;\n  },\n\n  /**\n   * @override\n   */\n  resetInner: function () {\n    ScrollableLegendView.superCall(this, 'resetInner');\n\n    this._controllerGroup.removeAll();\n\n    this._containerGroup.removeClipPath();\n\n    this._containerGroup.__rectSize = null;\n  },\n\n  /**\n   * @override\n   */\n  renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n    var me = this; // Render content items.\n\n    ScrollableLegendView.superCall(this, 'renderInner', itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition);\n    var controllerGroup = this._controllerGroup; // FIXME: support be 'auto' adapt to size number text length,\n    // e.g., '3/12345' should not overlap with the control arrow button.\n\n    var pageIconSize = legendModel.get('pageIconSize', true);\n\n    if (!zrUtil.isArray(pageIconSize)) {\n      pageIconSize = [pageIconSize, pageIconSize];\n    }\n\n    createPageButton('pagePrev', 0);\n    var pageTextStyleModel = legendModel.getModel('pageTextStyle');\n    controllerGroup.add(new graphic.Text({\n      name: 'pageText',\n      style: {\n        textFill: pageTextStyleModel.getTextColor(),\n        font: pageTextStyleModel.getFont(),\n        textVerticalAlign: 'middle',\n        textAlign: 'center'\n      },\n      silent: true\n    }));\n    createPageButton('pageNext', 1);\n\n    function createPageButton(name, iconIdx) {\n      var pageDataIndexName = name + 'DataIndex';\n      var icon = graphic.createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], {\n        // Buttons will be created in each render, so we do not need\n        // to worry about avoiding using legendModel kept in scope.\n        onclick: zrUtil.bind(me._pageGo, me, pageDataIndexName, legendModel, api)\n      }, {\n        x: -pageIconSize[0] / 2,\n        y: -pageIconSize[1] / 2,\n        width: pageIconSize[0],\n        height: pageIconSize[1]\n      });\n      icon.name = name;\n      controllerGroup.add(icon);\n    }\n  },\n\n  /**\n   * @override\n   */\n  layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n    var selectorGroup = this.getSelectorGroup();\n    var orientIdx = legendModel.getOrient().index;\n    var wh = WH[orientIdx];\n    var xy = XY[orientIdx];\n    var hw = WH[1 - orientIdx];\n    var yx = XY[1 - orientIdx];\n    selector && layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n    'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n    var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n    var selectorRect = selectorGroup.getBoundingRect();\n    var selectorPos = [-selectorRect.x, -selectorRect.y];\n    var processMaxSize = zrUtil.clone(maxSize);\n    selector && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap);\n\n    var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx);\n\n    if (selector) {\n      if (selectorPosition === 'end') {\n        selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap;\n      } else {\n        var offset = selectorRect[wh] + selectorButtonGap;\n        selectorPos[orientIdx] -= offset;\n        mainRect[xy] -= offset;\n      }\n\n      mainRect[wh] += selectorRect[wh] + selectorButtonGap;\n      selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;\n      mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);\n      mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);\n      selectorGroup.attr('position', selectorPos);\n    }\n\n    return mainRect;\n  },\n  _layoutContentAndController: function (legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx) {\n    var contentGroup = this.getContentGroup();\n    var containerGroup = this._containerGroup;\n    var controllerGroup = this._controllerGroup; // Place items in contentGroup.\n\n    layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);\n    layoutUtil.box( // Buttons in controller are layout always horizontally.\n    'horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true));\n    var contentRect = contentGroup.getBoundingRect();\n    var controllerRect = controllerGroup.getBoundingRect();\n    var showController = this._showController = contentRect[wh] > maxSize[wh];\n    var contentPos = [-contentRect.x, -contentRect.y]; // Remain contentPos when scroll animation perfroming.\n    // If first rendering, `contentGroup.position` is [0, 0], which\n    // does not make sense and may cause unexepcted animation if adopted.\n\n    if (!isFirstRender) {\n      contentPos[orientIdx] = contentGroup.position[orientIdx];\n    } // Layout container group based on 0.\n\n\n    var containerPos = [0, 0];\n    var controllerPos = [-controllerRect.x, -controllerRect.y];\n    var pageButtonGap = zrUtil.retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true)); // Place containerGroup and controllerGroup and contentGroup.\n\n    if (showController) {\n      var pageButtonPosition = legendModel.get('pageButtonPosition', true); // controller is on the right / bottom.\n\n      if (pageButtonPosition === 'end') {\n        controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];\n      } // controller is on the left / top.\n      else {\n          containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;\n        }\n    } // Always align controller to content as 'middle'.\n\n\n    controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;\n    contentGroup.attr('position', contentPos);\n    containerGroup.attr('position', containerPos);\n    controllerGroup.attr('position', controllerPos); // Calculate `mainRect` and set `clipPath`.\n    // mainRect should not be calculated by `this.group.getBoundingRect()`\n    // for sake of the overflow.\n\n    var mainRect = {\n      x: 0,\n      y: 0\n    }; // Consider content may be overflow (should be clipped).\n\n    mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];\n    mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); // `containerRect[yx] + containerPos[1 - orientIdx]` is 0.\n\n    mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);\n    containerGroup.__rectSize = maxSize[wh];\n\n    if (showController) {\n      var clipShape = {\n        x: 0,\n        y: 0\n      };\n      clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);\n      clipShape[hw] = mainRect[hw];\n      containerGroup.setClipPath(new graphic.Rect({\n        shape: clipShape\n      })); // Consider content may be larger than container, container rect\n      // can not be obtained from `containerGroup.getBoundingRect()`.\n\n      containerGroup.__rectSize = clipShape[wh];\n    } else {\n      // Do not remove or ignore controller. Keep them set as placeholders.\n      controllerGroup.eachChild(function (child) {\n        child.attr({\n          invisible: true,\n          silent: true\n        });\n      });\n    } // Content translate animation.\n\n\n    var pageInfo = this._getPageInfo(legendModel);\n\n    pageInfo.pageIndex != null && graphic.updateProps(contentGroup, {\n      position: pageInfo.contentPosition\n    }, // When switch from \"show controller\" to \"not show controller\", view should be\n    // updated immediately without animation, otherwise causes weird effect.\n    showController ? legendModel : false);\n\n    this._updatePageInfoView(legendModel, pageInfo);\n\n    return mainRect;\n  },\n  _pageGo: function (to, legendModel, api) {\n    var scrollDataIndex = this._getPageInfo(legendModel)[to];\n\n    scrollDataIndex != null && api.dispatchAction({\n      type: 'legendScroll',\n      scrollDataIndex: scrollDataIndex,\n      legendId: legendModel.id\n    });\n  },\n  _updatePageInfoView: function (legendModel, pageInfo) {\n    var controllerGroup = this._controllerGroup;\n    zrUtil.each(['pagePrev', 'pageNext'], function (name) {\n      var canJump = pageInfo[name + 'DataIndex'] != null;\n      var icon = controllerGroup.childOfName(name);\n\n      if (icon) {\n        icon.setStyle('fill', canJump ? legendModel.get('pageIconColor', true) : legendModel.get('pageIconInactiveColor', true));\n        icon.cursor = canJump ? 'pointer' : 'default';\n      }\n    });\n    var pageText = controllerGroup.childOfName('pageText');\n    var pageFormatter = legendModel.get('pageFormatter');\n    var pageIndex = pageInfo.pageIndex;\n    var current = pageIndex != null ? pageIndex + 1 : 0;\n    var total = pageInfo.pageCount;\n    pageText && pageFormatter && pageText.setStyle('text', zrUtil.isString(pageFormatter) ? pageFormatter.replace('{current}', current).replace('{total}', total) : pageFormatter({\n      current: current,\n      total: total\n    }));\n  },\n\n  /**\n   * @param {module:echarts/model/Model} legendModel\n   * @return {Object} {\n   *  contentPosition: Array.<number>, null when data item not found.\n   *  pageIndex: number, null when data item not found.\n   *  pageCount: number, always be a number, can be 0.\n   *  pagePrevDataIndex: number, null when no previous page.\n   *  pageNextDataIndex: number, null when no next page.\n   * }\n   */\n  _getPageInfo: function (legendModel) {\n    var scrollDataIndex = legendModel.get('scrollDataIndex', true);\n    var contentGroup = this.getContentGroup();\n    var containerRectSize = this._containerGroup.__rectSize;\n    var orientIdx = legendModel.getOrient().index;\n    var wh = WH[orientIdx];\n    var xy = XY[orientIdx];\n\n    var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);\n\n    var children = contentGroup.children();\n    var targetItem = children[targetItemIndex];\n    var itemCount = children.length;\n    var pCount = !itemCount ? 0 : 1;\n    var result = {\n      contentPosition: contentGroup.position.slice(),\n      pageCount: pCount,\n      pageIndex: pCount - 1,\n      pagePrevDataIndex: null,\n      pageNextDataIndex: null\n    };\n\n    if (!targetItem) {\n      return result;\n    }\n\n    var targetItemInfo = getItemInfo(targetItem);\n    result.contentPosition[orientIdx] = -targetItemInfo.s; // Strategy:\n    // (1) Always align based on the left/top most item.\n    // (2) It is user-friendly that the last item shown in the\n    // current window is shown at the begining of next window.\n    // Otherwise if half of the last item is cut by the window,\n    // it will have no chance to display entirely.\n    // (3) Consider that item size probably be different, we\n    // have calculate pageIndex by size rather than item index,\n    // and we can not get page index directly by division.\n    // (4) The window is to narrow to contain more than\n    // one item, we should make sure that the page can be fliped.\n\n    for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {\n      currItemInfo = getItemInfo(children[i]);\n\n      if ( // Half of the last item is out of the window.\n      !currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || // If the current item does not intersect with the window, the new page\n      // can be started at the current item or the last item.\n      currItemInfo && !intersect(currItemInfo, winStartItemInfo.s)) {\n        if (winEndItemInfo.i > winStartItemInfo.i) {\n          winStartItemInfo = winEndItemInfo;\n        } else {\n          // e.g., when page size is smaller than item size.\n          winStartItemInfo = currItemInfo;\n        }\n\n        if (winStartItemInfo) {\n          if (result.pageNextDataIndex == null) {\n            result.pageNextDataIndex = winStartItemInfo.i;\n          }\n\n          ++result.pageCount;\n        }\n      }\n\n      winEndItemInfo = currItemInfo;\n    }\n\n    for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {\n      currItemInfo = getItemInfo(children[i]);\n\n      if ( // If the the end item does not intersect with the window started\n      // from the current item, a page can be settled.\n      (!currItemInfo || !intersect(winEndItemInfo, currItemInfo.s)) && // e.g., when page size is smaller than item size.\n      winStartItemInfo.i < winEndItemInfo.i) {\n        winEndItemInfo = winStartItemInfo;\n\n        if (result.pagePrevDataIndex == null) {\n          result.pagePrevDataIndex = winStartItemInfo.i;\n        }\n\n        ++result.pageCount;\n        ++result.pageIndex;\n      }\n\n      winStartItemInfo = currItemInfo;\n    }\n\n    return result;\n\n    function getItemInfo(el) {\n      if (el) {\n        var itemRect = el.getBoundingRect();\n        var start = itemRect[xy] + el.position[orientIdx];\n        return {\n          s: start,\n          e: start + itemRect[wh],\n          i: el.__legendDataIndex\n        };\n      }\n    }\n\n    function intersect(itemInfo, winStart) {\n      return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;\n    }\n  },\n  _findTargetItemIndex: function (targetDataIndex) {\n    if (!this._showController) {\n      return 0;\n    }\n\n    var index;\n    var contentGroup = this.getContentGroup();\n    var defaultIndex;\n    contentGroup.eachChild(function (child, idx) {\n      var legendDataIdx = child.__legendDataIndex; // FIXME\n      // If the given targetDataIndex (from model) is illegal,\n      // we use defaultIndex. But the index on the legend model and\n      // action payload is still illegal. That case will not be\n      // changed until some scenario requires.\n\n      if (defaultIndex == null && legendDataIdx != null) {\n        defaultIndex = idx;\n      }\n\n      if (legendDataIdx === targetDataIndex) {\n        index = idx;\n      }\n    });\n    return index != null ? index : defaultIndex;\n  }\n});\nvar _default = ScrollableLegendView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1274 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = __webpack_require__(13);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @event legendScroll\n * @type {Object}\n * @property {string} type 'legendScroll'\n * @property {string} scrollDataIndex\n */\necharts.registerAction('legendScroll', 'legendscroll', function (payload, ecModel) {\n  var scrollDataIndex = payload.scrollDataIndex;\n  scrollDataIndex != null && ecModel.eachComponent({\n    mainType: 'legend',\n    subType: 'scroll',\n    query: payload\n  }, function (legendModel) {\n    legendModel.setScrollDataIndex(scrollDataIndex);\n  });\n});\n\n/***/ }),\n/* 1275 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(618);\n\n__webpack_require__(619);\n\n/***/ }),\n/* 1276 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomModel = __webpack_require__(219);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar SliderZoomModel = DataZoomModel.extend({\n  type: 'dataZoom.slider',\n  layoutMode: 'box',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    show: true,\n    // ph => placeholder. Using placehoder here because\n    // deault value can only be drived in view stage.\n    right: 'ph',\n    // Default align to grid rect.\n    top: 'ph',\n    // Default align to grid rect.\n    width: 'ph',\n    // Default align to grid rect.\n    height: 'ph',\n    // Default align to grid rect.\n    left: null,\n    // Default align to grid rect.\n    bottom: null,\n    // Default align to grid rect.\n    backgroundColor: 'rgba(47,69,84,0)',\n    // Background of slider zoom component.\n    // dataBackgroundColor: '#ddd',         // Background coor of data shadow and border of box,\n    // highest priority, remain for compatibility of\n    // previous version, but not recommended any more.\n    dataBackground: {\n      lineStyle: {\n        color: '#2f4554',\n        width: 0.5,\n        opacity: 0.3\n      },\n      areaStyle: {\n        color: 'rgba(47,69,84,0.3)',\n        opacity: 0.3\n      }\n    },\n    borderColor: '#ddd',\n    // border color of the box. For compatibility,\n    // if dataBackgroundColor is set, borderColor\n    // is ignored.\n    fillerColor: 'rgba(167,183,204,0.4)',\n    // Color of selected area.\n    // handleColor: 'rgba(89,170,216,0.95)',     // Color of handle.\n    // handleIcon: 'path://M4.9,17.8c0-1.4,4.5-10.5,5.5-12.4c0-0.1,0.6-1.1,0.9-1.1c0.4,0,0.9,1,0.9,1.1c1.1,2.2,5.4,11,5.4,12.4v17.8c0,1.5-0.6,2.1-1.3,2.1H6.1c-0.7,0-1.3-0.6-1.3-2.1V17.8z',\n\n    /* eslint-disable */\n    handleIcon: 'M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z',\n\n    /* eslint-enable */\n    // Percent of the slider height\n    handleSize: '100%',\n    handleStyle: {\n      color: '#a7b7cc'\n    },\n    labelPrecision: null,\n    labelFormatter: null,\n    showDetail: true,\n    showDataShadow: 'auto',\n    // Default auto decision.\n    realtime: true,\n    zoomLock: false,\n    // Whether disable zoom.\n    textStyle: {\n      color: '#333'\n    }\n  }\n});\nvar _default = SliderZoomModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1277 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar eventTool = __webpack_require__(129);\n\nvar graphic = __webpack_require__(23);\n\nvar throttle = __webpack_require__(153);\n\nvar DataZoomView = __webpack_require__(220);\n\nvar numberUtil = __webpack_require__(26);\n\nvar layout = __webpack_require__(49);\n\nvar sliderMove = __webpack_require__(218);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar Rect = graphic.Rect;\nvar linearMap = numberUtil.linearMap;\nvar asc = numberUtil.asc;\nvar bind = zrUtil.bind;\nvar each = zrUtil.each; // Constants\n\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar SliderZoomView = DataZoomView.extend({\n  type: 'dataZoom.slider',\n  init: function (ecModel, api) {\n    /**\n     * @private\n     * @type {Object}\n     */\n    this._displayables = {};\n    /**\n     * @private\n     * @type {string}\n     */\n\n    this._orient;\n    /**\n     * [0, 100]\n     * @private\n     */\n\n    this._range;\n    /**\n     * [coord of the first handle, coord of the second handle]\n     * @private\n     */\n\n    this._handleEnds;\n    /**\n     * [length, thick]\n     * @private\n     * @type {Array.<number>}\n     */\n\n    this._size;\n    /**\n     * @private\n     * @type {number}\n     */\n\n    this._handleWidth;\n    /**\n     * @private\n     * @type {number}\n     */\n\n    this._handleHeight;\n    /**\n     * @private\n     */\n\n    this._location;\n    /**\n     * @private\n     */\n\n    this._dragging;\n    /**\n     * @private\n     */\n\n    this._dataShadowInfo;\n    this.api = api;\n  },\n\n  /**\n   * @override\n   */\n  render: function (dataZoomModel, ecModel, api, payload) {\n    SliderZoomView.superApply(this, 'render', arguments);\n    throttle.createOrUpdate(this, '_dispatchZoomAction', this.dataZoomModel.get('throttle'), 'fixRate');\n    this._orient = dataZoomModel.get('orient');\n\n    if (this.dataZoomModel.get('show') === false) {\n      this.group.removeAll();\n      return;\n    } // Notice: this._resetInterval() should not be executed when payload.type\n    // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n    // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n\n\n    if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n      this._buildView();\n    }\n\n    this._updateView();\n  },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    SliderZoomView.superApply(this, 'remove', arguments);\n    throttle.clear(this, '_dispatchZoomAction');\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    SliderZoomView.superApply(this, 'dispose', arguments);\n    throttle.clear(this, '_dispatchZoomAction');\n  },\n  _buildView: function () {\n    var thisGroup = this.group;\n    thisGroup.removeAll();\n\n    this._resetLocation();\n\n    this._resetInterval();\n\n    var barGroup = this._displayables.barGroup = new graphic.Group();\n\n    this._renderBackground();\n\n    this._renderHandle();\n\n    this._renderDataShadow();\n\n    thisGroup.add(barGroup);\n\n    this._positionGroup();\n  },\n\n  /**\n   * @private\n   */\n  _resetLocation: function () {\n    var dataZoomModel = this.dataZoomModel;\n    var api = this.api; // If some of x/y/width/height are not specified,\n    // auto-adapt according to target grid.\n\n    var coordRect = this._findCoordRect();\n\n    var ecSize = {\n      width: api.getWidth(),\n      height: api.getHeight()\n    }; // Default align by coordinate system rect.\n\n    var positionInfo = this._orient === HORIZONTAL ? {\n      // Why using 'right', because right should be used in vertical,\n      // and it is better to be consistent for dealing with position param merge.\n      right: ecSize.width - coordRect.x - coordRect.width,\n      top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP,\n      width: coordRect.width,\n      height: DEFAULT_FILLER_SIZE\n    } : {\n      // vertical\n      right: DEFAULT_LOCATION_EDGE_GAP,\n      top: coordRect.y,\n      width: DEFAULT_FILLER_SIZE,\n      height: coordRect.height\n    }; // Do not write back to option and replace value 'ph', because\n    // the 'ph' value should be recalculated when resize.\n\n    var layoutParams = layout.getLayoutParams(dataZoomModel.option); // Replace the placeholder value.\n\n    zrUtil.each(['right', 'top', 'width', 'height'], function (name) {\n      if (layoutParams[name] === 'ph') {\n        layoutParams[name] = positionInfo[name];\n      }\n    });\n    var layoutRect = layout.getLayoutRect(layoutParams, ecSize, dataZoomModel.padding);\n    this._location = {\n      x: layoutRect.x,\n      y: layoutRect.y\n    };\n    this._size = [layoutRect.width, layoutRect.height];\n    this._orient === VERTICAL && this._size.reverse();\n  },\n\n  /**\n   * @private\n   */\n  _positionGroup: function () {\n    var thisGroup = this.group;\n    var location = this._location;\n    var orient = this._orient; // Just use the first axis to determine mapping.\n\n    var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n    var inverse = targetAxisModel && targetAxisModel.get('inverse');\n    var barGroup = this._displayables.barGroup;\n    var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; // Transform barGroup.\n\n    barGroup.attr(orient === HORIZONTAL && !inverse ? {\n      scale: otherAxisInverse ? [1, 1] : [1, -1]\n    } : orient === HORIZONTAL && inverse ? {\n      scale: otherAxisInverse ? [-1, 1] : [-1, -1]\n    } : orient === VERTICAL && !inverse ? {\n      scale: otherAxisInverse ? [1, -1] : [1, 1],\n      rotation: Math.PI / 2 // Dont use Math.PI, considering shadow direction.\n\n    } : {\n      scale: otherAxisInverse ? [-1, -1] : [-1, 1],\n      rotation: Math.PI / 2\n    }); // Position barGroup\n\n    var rect = thisGroup.getBoundingRect([barGroup]);\n    thisGroup.attr('position', [location.x - rect.x, location.y - rect.y]);\n  },\n\n  /**\n   * @private\n   */\n  _getViewExtent: function () {\n    return [0, this._size[0]];\n  },\n  _renderBackground: function () {\n    var dataZoomModel = this.dataZoomModel;\n    var size = this._size;\n    var barGroup = this._displayables.barGroup;\n    barGroup.add(new Rect({\n      silent: true,\n      shape: {\n        x: 0,\n        y: 0,\n        width: size[0],\n        height: size[1]\n      },\n      style: {\n        fill: dataZoomModel.get('backgroundColor')\n      },\n      z2: -40\n    })); // Click panel, over shadow, below handles.\n\n    barGroup.add(new Rect({\n      shape: {\n        x: 0,\n        y: 0,\n        width: size[0],\n        height: size[1]\n      },\n      style: {\n        fill: 'transparent'\n      },\n      z2: 0,\n      onclick: zrUtil.bind(this._onClickPanelClick, this)\n    }));\n  },\n  _renderDataShadow: function () {\n    var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n\n    if (!info) {\n      return;\n    }\n\n    var size = this._size;\n    var seriesModel = info.series;\n    var data = seriesModel.getRawData();\n    var otherDim = seriesModel.getShadowDim ? seriesModel.getShadowDim() // @see candlestick\n    : info.otherDim;\n\n    if (otherDim == null) {\n      return;\n    }\n\n    var otherDataExtent = data.getDataExtent(otherDim); // Nice extent.\n\n    var otherOffset = (otherDataExtent[1] - otherDataExtent[0]) * 0.3;\n    otherDataExtent = [otherDataExtent[0] - otherOffset, otherDataExtent[1] + otherOffset];\n    var otherShadowExtent = [0, size[1]];\n    var thisShadowExtent = [0, size[0]];\n    var areaPoints = [[size[0], 0], [0, 0]];\n    var linePoints = [];\n    var step = thisShadowExtent[1] / (data.count() - 1);\n    var thisCoord = 0; // Optimize for large data shadow\n\n    var stride = Math.round(data.count() / size[0]);\n    var lastIsEmpty;\n    data.each([otherDim], function (value, index) {\n      if (stride > 0 && index % stride) {\n        thisCoord += step;\n        return;\n      } // FIXME\n      // Should consider axis.min/axis.max when drawing dataShadow.\n      // FIXME\n      // 应该使用统一的空判断？还是在list里进行空判断？\n\n\n      var isEmpty = value == null || isNaN(value) || value === ''; // See #4235.\n\n      var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent, otherShadowExtent, true); // Attempt to draw data shadow precisely when there are empty value.\n\n      if (isEmpty && !lastIsEmpty && index) {\n        areaPoints.push([areaPoints[areaPoints.length - 1][0], 0]);\n        linePoints.push([linePoints[linePoints.length - 1][0], 0]);\n      } else if (!isEmpty && lastIsEmpty) {\n        areaPoints.push([thisCoord, 0]);\n        linePoints.push([thisCoord, 0]);\n      }\n\n      areaPoints.push([thisCoord, otherCoord]);\n      linePoints.push([thisCoord, otherCoord]);\n      thisCoord += step;\n      lastIsEmpty = isEmpty;\n    });\n    var dataZoomModel = this.dataZoomModel; // var dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n\n    this._displayables.barGroup.add(new graphic.Polygon({\n      shape: {\n        points: areaPoints\n      },\n      style: zrUtil.defaults({\n        fill: dataZoomModel.get('dataBackgroundColor')\n      }, dataZoomModel.getModel('dataBackground.areaStyle').getAreaStyle()),\n      silent: true,\n      z2: -20\n    }));\n\n    this._displayables.barGroup.add(new graphic.Polyline({\n      shape: {\n        points: linePoints\n      },\n      style: dataZoomModel.getModel('dataBackground.lineStyle').getLineStyle(),\n      silent: true,\n      z2: -19\n    }));\n  },\n  _prepareDataShadowInfo: function () {\n    var dataZoomModel = this.dataZoomModel;\n    var showDataShadow = dataZoomModel.get('showDataShadow');\n\n    if (showDataShadow === false) {\n      return;\n    } // Find a representative series.\n\n\n    var result;\n    var ecModel = this.ecModel;\n    dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n      var seriesModels = dataZoomModel.getAxisProxy(dimNames.name, axisIndex).getTargetSeriesModels();\n      zrUtil.each(seriesModels, function (seriesModel) {\n        if (result) {\n          return;\n        }\n\n        if (showDataShadow !== true && zrUtil.indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n          return;\n        }\n\n        var thisAxis = ecModel.getComponent(dimNames.axis, axisIndex).axis;\n        var otherDim = getOtherDim(dimNames.name);\n        var otherAxisInverse;\n        var coordSys = seriesModel.coordinateSystem;\n\n        if (otherDim != null && coordSys.getOtherAxis) {\n          otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n        }\n\n        otherDim = seriesModel.getData().mapDimension(otherDim);\n        result = {\n          thisAxis: thisAxis,\n          series: seriesModel,\n          thisDim: dimNames.name,\n          otherDim: otherDim,\n          otherAxisInverse: otherAxisInverse\n        };\n      }, this);\n    }, this);\n    return result;\n  },\n  _renderHandle: function () {\n    var displaybles = this._displayables;\n    var handles = displaybles.handles = [];\n    var handleLabels = displaybles.handleLabels = [];\n    var barGroup = this._displayables.barGroup;\n    var size = this._size;\n    var dataZoomModel = this.dataZoomModel;\n    barGroup.add(displaybles.filler = new Rect({\n      draggable: true,\n      cursor: getCursor(this._orient),\n      drift: bind(this._onDragMove, this, 'all'),\n      ondragstart: bind(this._showDataInfo, this, true),\n      ondragend: bind(this._onDragEnd, this),\n      onmouseover: bind(this._showDataInfo, this, true),\n      onmouseout: bind(this._showDataInfo, this, false),\n      style: {\n        fill: dataZoomModel.get('fillerColor'),\n        textPosition: 'inside'\n      }\n    })); // Frame border.\n\n    barGroup.add(new Rect({\n      silent: true,\n      subPixelOptimize: true,\n      shape: {\n        x: 0,\n        y: 0,\n        width: size[0],\n        height: size[1]\n      },\n      style: {\n        stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n        lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n        fill: 'rgba(0,0,0,0)'\n      }\n    }));\n    each([0, 1], function (handleIndex) {\n      var path = graphic.createIcon(dataZoomModel.get('handleIcon'), {\n        cursor: getCursor(this._orient),\n        draggable: true,\n        drift: bind(this._onDragMove, this, handleIndex),\n        ondragend: bind(this._onDragEnd, this),\n        onmouseover: bind(this._showDataInfo, this, true),\n        onmouseout: bind(this._showDataInfo, this, false)\n      }, {\n        x: -1,\n        y: 0,\n        width: 2,\n        height: 2\n      });\n      var bRect = path.getBoundingRect();\n      this._handleHeight = numberUtil.parsePercent(dataZoomModel.get('handleSize'), this._size[1]);\n      this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n      path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n      var handleColor = dataZoomModel.get('handleColor'); // Compatitable with previous version\n\n      if (handleColor != null) {\n        path.style.fill = handleColor;\n      }\n\n      barGroup.add(handles[handleIndex] = path);\n      var textStyleModel = dataZoomModel.textStyleModel;\n      this.group.add(handleLabels[handleIndex] = new graphic.Text({\n        silent: true,\n        invisible: true,\n        style: {\n          x: 0,\n          y: 0,\n          text: '',\n          textVerticalAlign: 'middle',\n          textAlign: 'center',\n          textFill: textStyleModel.getTextColor(),\n          textFont: textStyleModel.getFont()\n        },\n        z2: 10\n      }));\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _resetInterval: function () {\n    var range = this._range = this.dataZoomModel.getPercentRange();\n\n    var viewExtent = this._getViewExtent();\n\n    this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n  },\n\n  /**\n   * @private\n   * @param {(number|string)} handleIndex 0 or 1 or 'all'\n   * @param {number} delta\n   * @return {boolean} changed\n   */\n  _updateInterval: function (handleIndex, delta) {\n    var dataZoomModel = this.dataZoomModel;\n    var handleEnds = this._handleEnds;\n\n    var viewExtend = this._getViewExtent();\n\n    var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n    var percentExtent = [0, 100];\n    sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n    var lastRange = this._range;\n    var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n    return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];\n  },\n\n  /**\n   * @private\n   */\n  _updateView: function (nonRealtime) {\n    var displaybles = this._displayables;\n    var handleEnds = this._handleEnds;\n    var handleInterval = asc(handleEnds.slice());\n    var size = this._size;\n    each([0, 1], function (handleIndex) {\n      // Handles\n      var handle = displaybles.handles[handleIndex];\n      var handleHeight = this._handleHeight;\n      handle.attr({\n        scale: [handleHeight / 2, handleHeight / 2],\n        position: [handleEnds[handleIndex], size[1] / 2 - handleHeight / 2]\n      });\n    }, this); // Filler\n\n    displaybles.filler.setShape({\n      x: handleInterval[0],\n      y: 0,\n      width: handleInterval[1] - handleInterval[0],\n      height: size[1]\n    });\n\n    this._updateDataInfo(nonRealtime);\n  },\n\n  /**\n   * @private\n   */\n  _updateDataInfo: function (nonRealtime) {\n    var dataZoomModel = this.dataZoomModel;\n    var displaybles = this._displayables;\n    var handleLabels = displaybles.handleLabels;\n    var orient = this._orient;\n    var labelTexts = ['', '']; // FIXME\n    // date型，支持formatter，autoformatter（ec2 date.getAutoFormatter）\n\n    if (dataZoomModel.get('showDetail')) {\n      var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n\n      if (axisProxy) {\n        var axis = axisProxy.getAxisModel().axis;\n        var range = this._range;\n        var dataInterval = nonRealtime // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n        ? axisProxy.calculateDataWindow({\n          start: range[0],\n          end: range[1]\n        }).valueWindow : axisProxy.getDataValueWindow();\n        labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n      }\n    }\n\n    var orderedHandleEnds = asc(this._handleEnds.slice());\n    setLabel.call(this, 0);\n    setLabel.call(this, 1);\n\n    function setLabel(handleIndex) {\n      // Label\n      // Text should not transform by barGroup.\n      // Ignore handlers transform\n      var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n      var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n      var offset = this._handleWidth / 2 + LABEL_GAP;\n      var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n      handleLabels[handleIndex].setStyle({\n        x: textPoint[0],\n        y: textPoint[1],\n        textVerticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n        textAlign: orient === HORIZONTAL ? direction : 'center',\n        text: labelTexts[handleIndex]\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _formatLabel: function (value, axis) {\n    var dataZoomModel = this.dataZoomModel;\n    var labelFormatter = dataZoomModel.get('labelFormatter');\n    var labelPrecision = dataZoomModel.get('labelPrecision');\n\n    if (labelPrecision == null || labelPrecision === 'auto') {\n      labelPrecision = axis.getPixelPrecision();\n    }\n\n    var valueStr = value == null || isNaN(value) ? '' // FIXME Glue code\n    : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel(Math.round(value)) // param of toFixed should less then 20.\n    : value.toFixed(Math.min(labelPrecision, 20));\n    return zrUtil.isFunction(labelFormatter) ? labelFormatter(value, valueStr) : zrUtil.isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n  },\n\n  /**\n   * @private\n   * @param {boolean} showOrHide true: show, false: hide\n   */\n  _showDataInfo: function (showOrHide) {\n    // Always show when drgging.\n    showOrHide = this._dragging || showOrHide;\n    var handleLabels = this._displayables.handleLabels;\n    handleLabels[0].attr('invisible', !showOrHide);\n    handleLabels[1].attr('invisible', !showOrHide);\n  },\n  _onDragMove: function (handleIndex, dx, dy, event) {\n    this._dragging = true; // For mobile device, prevent screen slider on the button.\n\n    eventTool.stop(event.event); // Transform dx, dy to bar coordination.\n\n    var barTransform = this._displayables.barGroup.getLocalTransform();\n\n    var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n\n    var changed = this._updateInterval(handleIndex, vertex[0]);\n\n    var realtime = this.dataZoomModel.get('realtime');\n\n    this._updateView(!realtime); // Avoid dispatch dataZoom repeatly but range not changed,\n    // which cause bad visual effect when progressive enabled.\n\n\n    changed && realtime && this._dispatchZoomAction();\n  },\n  _onDragEnd: function () {\n    this._dragging = false;\n\n    this._showDataInfo(false); // While in realtime mode and stream mode, dispatch action when\n    // drag end will cause the whole view rerender, which is unnecessary.\n\n\n    var realtime = this.dataZoomModel.get('realtime');\n    !realtime && this._dispatchZoomAction();\n  },\n  _onClickPanelClick: function (e) {\n    var size = this._size;\n\n    var localPoint = this._displayables.barGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n\n    if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n      return;\n    }\n\n    var handleEnds = this._handleEnds;\n    var center = (handleEnds[0] + handleEnds[1]) / 2;\n\n    var changed = this._updateInterval('all', localPoint[0] - center);\n\n    this._updateView();\n\n    changed && this._dispatchZoomAction();\n  },\n\n  /**\n   * This action will be throttled.\n   * @private\n   */\n  _dispatchZoomAction: function () {\n    var range = this._range;\n    this.api.dispatchAction({\n      type: 'dataZoom',\n      from: this.uid,\n      dataZoomId: this.dataZoomModel.id,\n      start: range[0],\n      end: range[1]\n    });\n  },\n\n  /**\n   * @private\n   */\n  _findCoordRect: function () {\n    // Find the grid coresponding to the first axis referred by dataZoom.\n    var rect;\n    each(this.getTargetCoordInfo(), function (coordInfoList) {\n      if (!rect && coordInfoList.length) {\n        var coordSys = coordInfoList[0].model.coordinateSystem;\n        rect = coordSys.getRect && coordSys.getRect();\n      }\n    });\n\n    if (!rect) {\n      var width = this.api.getWidth();\n      var height = this.api.getHeight();\n      rect = {\n        x: width * 0.2,\n        y: height * 0.2,\n        width: width * 0.6,\n        height: height * 0.6\n      };\n    }\n\n    return rect;\n  }\n});\n\nfunction getOtherDim(thisDim) {\n  // FIXME\n  // 这个逻辑和getOtherAxis里一致，但是写在这里是否不好\n  var map = {\n    x: 'y',\n    y: 'x',\n    radius: 'angle',\n    angle: 'radius'\n  };\n  return map[thisDim];\n}\n\nfunction getCursor(orient) {\n  return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = SliderZoomView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1278 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar DataZoomModel = __webpack_require__(219);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = DataZoomModel.extend({\n  type: 'dataZoom.inside',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    disabled: false,\n    // Whether disable this inside zoom.\n    zoomLock: false,\n    // Whether disable zoom but only pan.\n    zoomOnMouseWheel: true,\n    // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n    moveOnMouseMove: true,\n    // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n    moveOnMouseWheel: false,\n    // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n    preventDefaultMouseMove: true\n  }\n});\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1279 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar DataZoomView = __webpack_require__(220);\n\nvar sliderMove = __webpack_require__(218);\n\nvar roams = __webpack_require__(1280);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar bind = zrUtil.bind;\nvar InsideZoomView = DataZoomView.extend({\n  type: 'dataZoom.inside',\n\n  /**\n   * @override\n   */\n  init: function (ecModel, api) {\n    /**\n     * 'throttle' is used in this.dispatchAction, so we save range\n     * to avoid missing some 'pan' info.\n     * @private\n     * @type {Array.<number>}\n     */\n    this._range;\n  },\n\n  /**\n   * @override\n   */\n  render: function (dataZoomModel, ecModel, api, payload) {\n    InsideZoomView.superApply(this, 'render', arguments); // Hence the `throttle` util ensures to preserve command order,\n    // here simply updating range all the time will not cause missing\n    // any of the the roam change.\n\n    this._range = dataZoomModel.getPercentRange(); // Reset controllers.\n\n    zrUtil.each(this.getTargetCoordInfo(), function (coordInfoList, coordSysName) {\n      var allCoordIds = zrUtil.map(coordInfoList, function (coordInfo) {\n        return roams.generateCoordId(coordInfo.model);\n      });\n      zrUtil.each(coordInfoList, function (coordInfo) {\n        var coordModel = coordInfo.model;\n        var getRange = {};\n        zrUtil.each(['pan', 'zoom', 'scrollMove'], function (eventName) {\n          getRange[eventName] = bind(roamHandlers[eventName], this, coordInfo, coordSysName);\n        }, this);\n        roams.register(api, {\n          coordId: roams.generateCoordId(coordModel),\n          allCoordIds: allCoordIds,\n          containsPoint: function (e, x, y) {\n            return coordModel.coordinateSystem.containPoint([x, y]);\n          },\n          dataZoomId: dataZoomModel.id,\n          dataZoomModel: dataZoomModel,\n          getRange: getRange\n        });\n      }, this);\n    }, this);\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    roams.unregister(this.api, this.dataZoomModel.id);\n    InsideZoomView.superApply(this, 'dispose', arguments);\n    this._range = null;\n  }\n});\nvar roamHandlers = {\n  /**\n   * @this {module:echarts/component/dataZoom/InsideZoomView}\n   */\n  zoom: function (coordInfo, coordSysName, controller, e) {\n    var lastRange = this._range;\n    var range = lastRange.slice(); // Calculate transform by the first axis.\n\n    var axisModel = coordInfo.axisModels[0];\n\n    if (!axisModel) {\n      return;\n    }\n\n    var directionInfo = getDirectionInfo[coordSysName](null, [e.originX, e.originY], axisModel, controller, coordInfo);\n    var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];\n    var scale = Math.max(1 / e.scale, 0);\n    range[0] = (range[0] - percentPoint) * scale + percentPoint;\n    range[1] = (range[1] - percentPoint) * scale + percentPoint; // Restrict range.\n\n    var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n    sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);\n    this._range = range;\n\n    if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n      return range;\n    }\n  },\n\n  /**\n   * @this {module:echarts/component/dataZoom/InsideZoomView}\n   */\n  pan: makeMover(function (range, axisModel, coordInfo, coordSysName, controller, e) {\n    var directionInfo = getDirectionInfo[coordSysName]([e.oldX, e.oldY], [e.newX, e.newY], axisModel, controller, coordInfo);\n    return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength;\n  }),\n\n  /**\n   * @this {module:echarts/component/dataZoom/InsideZoomView}\n   */\n  scrollMove: makeMover(function (range, axisModel, coordInfo, coordSysName, controller, e) {\n    var directionInfo = getDirectionInfo[coordSysName]([0, 0], [e.scrollDelta, e.scrollDelta], axisModel, controller, coordInfo);\n    return directionInfo.signal * (range[1] - range[0]) * e.scrollDelta;\n  })\n};\n\nfunction makeMover(getPercentDelta) {\n  return function (coordInfo, coordSysName, controller, e) {\n    var lastRange = this._range;\n    var range = lastRange.slice(); // Calculate transform by the first axis.\n\n    var axisModel = coordInfo.axisModels[0];\n\n    if (!axisModel) {\n      return;\n    }\n\n    var percentDelta = getPercentDelta(range, axisModel, coordInfo, coordSysName, controller, e);\n    sliderMove(percentDelta, range, [0, 100], 'all');\n    this._range = range;\n\n    if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {\n      return range;\n    }\n  };\n}\n\nvar getDirectionInfo = {\n  grid: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n    var axis = axisModel.axis;\n    var ret = {};\n    var rect = coordInfo.model.coordinateSystem.getRect();\n    oldPoint = oldPoint || [0, 0];\n\n    if (axis.dim === 'x') {\n      ret.pixel = newPoint[0] - oldPoint[0];\n      ret.pixelLength = rect.width;\n      ret.pixelStart = rect.x;\n      ret.signal = axis.inverse ? 1 : -1;\n    } else {\n      // axis.dim === 'y'\n      ret.pixel = newPoint[1] - oldPoint[1];\n      ret.pixelLength = rect.height;\n      ret.pixelStart = rect.y;\n      ret.signal = axis.inverse ? -1 : 1;\n    }\n\n    return ret;\n  },\n  polar: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n    var axis = axisModel.axis;\n    var ret = {};\n    var polar = coordInfo.model.coordinateSystem;\n    var radiusExtent = polar.getRadiusAxis().getExtent();\n    var angleExtent = polar.getAngleAxis().getExtent();\n    oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];\n    newPoint = polar.pointToCoord(newPoint);\n\n    if (axisModel.mainType === 'radiusAxis') {\n      ret.pixel = newPoint[0] - oldPoint[0]; // ret.pixelLength = Math.abs(radiusExtent[1] - radiusExtent[0]);\n      // ret.pixelStart = Math.min(radiusExtent[0], radiusExtent[1]);\n\n      ret.pixelLength = radiusExtent[1] - radiusExtent[0];\n      ret.pixelStart = radiusExtent[0];\n      ret.signal = axis.inverse ? 1 : -1;\n    } else {\n      // 'angleAxis'\n      ret.pixel = newPoint[1] - oldPoint[1]; // ret.pixelLength = Math.abs(angleExtent[1] - angleExtent[0]);\n      // ret.pixelStart = Math.min(angleExtent[0], angleExtent[1]);\n\n      ret.pixelLength = angleExtent[1] - angleExtent[0];\n      ret.pixelStart = angleExtent[0];\n      ret.signal = axis.inverse ? -1 : 1;\n    }\n\n    return ret;\n  },\n  singleAxis: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n    var axis = axisModel.axis;\n    var rect = coordInfo.model.coordinateSystem.getRect();\n    var ret = {};\n    oldPoint = oldPoint || [0, 0];\n\n    if (axis.orient === 'horizontal') {\n      ret.pixel = newPoint[0] - oldPoint[0];\n      ret.pixelLength = rect.width;\n      ret.pixelStart = rect.x;\n      ret.signal = axis.inverse ? 1 : -1;\n    } else {\n      // 'vertical'\n      ret.pixel = newPoint[1] - oldPoint[1];\n      ret.pixelLength = rect.height;\n      ret.pixelStart = rect.y;\n      ret.signal = axis.inverse ? -1 : 1;\n    }\n\n    return ret;\n  }\n};\nvar _default = InsideZoomView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1280 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar RoamController = __webpack_require__(266);\n\nvar throttleUtil = __webpack_require__(153);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Only create one roam controller for each coordinate system.\n// one roam controller might be refered by two inside data zoom\n// components (for example, one for x and one for y). When user\n// pan or zoom, only dispatch one action for those data zoom\n// components.\nvar ATTR = '\\0_ec_dataZoom_roams';\n/**\n * @public\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} dataZoomInfo\n * @param {string} dataZoomInfo.coordId\n * @param {Function} dataZoomInfo.containsPoint\n * @param {Array.<string>} dataZoomInfo.allCoordIds\n * @param {string} dataZoomInfo.dataZoomId\n * @param {Object} dataZoomInfo.getRange\n * @param {Function} dataZoomInfo.getRange.pan\n * @param {Function} dataZoomInfo.getRange.zoom\n * @param {Function} dataZoomInfo.getRange.scrollMove\n * @param {boolean} dataZoomInfo.dataZoomModel\n */\n\nfunction register(api, dataZoomInfo) {\n  var store = giveStore(api);\n  var theDataZoomId = dataZoomInfo.dataZoomId;\n  var theCoordId = dataZoomInfo.coordId; // Do clean when a dataZoom changes its target coordnate system.\n  // Avoid memory leak, dispose all not-used-registered.\n\n  zrUtil.each(store, function (record, coordId) {\n    var dataZoomInfos = record.dataZoomInfos;\n\n    if (dataZoomInfos[theDataZoomId] && zrUtil.indexOf(dataZoomInfo.allCoordIds, theCoordId) < 0) {\n      delete dataZoomInfos[theDataZoomId];\n      record.count--;\n    }\n  });\n  cleanStore(store);\n  var record = store[theCoordId]; // Create if needed.\n\n  if (!record) {\n    record = store[theCoordId] = {\n      coordId: theCoordId,\n      dataZoomInfos: {},\n      count: 0\n    };\n    record.controller = createController(api, record);\n    record.dispatchAction = zrUtil.curry(dispatchAction, api);\n  } // Update reference of dataZoom.\n\n\n  !record.dataZoomInfos[theDataZoomId] && record.count++;\n  record.dataZoomInfos[theDataZoomId] = dataZoomInfo;\n  var controllerParams = mergeControllerParams(record.dataZoomInfos);\n  record.controller.enable(controllerParams.controlType, controllerParams.opt); // Consider resize, area should be always updated.\n\n  record.controller.setPointerChecker(dataZoomInfo.containsPoint); // Update throttle.\n\n  throttleUtil.createOrUpdate(record, 'dispatchAction', dataZoomInfo.dataZoomModel.get('throttle', true), 'fixRate');\n}\n/**\n * @public\n * @param {module:echarts/ExtensionAPI} api\n * @param {string} dataZoomId\n */\n\n\nfunction unregister(api, dataZoomId) {\n  var store = giveStore(api);\n  zrUtil.each(store, function (record) {\n    record.controller.dispose();\n    var dataZoomInfos = record.dataZoomInfos;\n\n    if (dataZoomInfos[dataZoomId]) {\n      delete dataZoomInfos[dataZoomId];\n      record.count--;\n    }\n  });\n  cleanStore(store);\n}\n/**\n * @public\n */\n\n\nfunction generateCoordId(coordModel) {\n  return coordModel.type + '\\0_' + coordModel.id;\n}\n/**\n * Key: coordId, value: {dataZoomInfos: [], count, controller}\n * @type {Array.<Object>}\n */\n\n\nfunction giveStore(api) {\n  // Mount store on zrender instance, so that we do not\n  // need to worry about dispose.\n  var zr = api.getZr();\n  return zr[ATTR] || (zr[ATTR] = {});\n}\n\nfunction createController(api, newRecord) {\n  var controller = new RoamController(api.getZr());\n  zrUtil.each(['pan', 'zoom', 'scrollMove'], function (eventName) {\n    controller.on(eventName, function (event) {\n      var batch = [];\n      zrUtil.each(newRecord.dataZoomInfos, function (info) {\n        // Check whether the behaviors (zoomOnMouseWheel, moveOnMouseMove,\n        // moveOnMouseWheel, ...) enabled.\n        if (!event.isAvailableBehavior(info.dataZoomModel.option)) {\n          return;\n        }\n\n        var method = (info.getRange || {})[eventName];\n        var range = method && method(newRecord.controller, event);\n        !info.dataZoomModel.get('disabled', true) && range && batch.push({\n          dataZoomId: info.dataZoomId,\n          start: range[0],\n          end: range[1]\n        });\n      });\n      batch.length && newRecord.dispatchAction(batch);\n    });\n  });\n  return controller;\n}\n\nfunction cleanStore(store) {\n  zrUtil.each(store, function (record, coordId) {\n    if (!record.count) {\n      record.controller.dispose();\n      delete store[coordId];\n    }\n  });\n}\n/**\n * This action will be throttled.\n */\n\n\nfunction dispatchAction(api, batch) {\n  api.dispatchAction({\n    type: 'dataZoom',\n    batch: batch\n  });\n}\n/**\n * Merge roamController settings when multiple dataZooms share one roamController.\n */\n\n\nfunction mergeControllerParams(dataZoomInfos) {\n  var controlType; // DO NOT use reserved word (true, false, undefined) as key literally. Even if encapsulated\n  // as string, it is probably revert to reserved word by compress tool. See #7411.\n\n  var prefix = 'type_';\n  var typePriority = {\n    'type_true': 2,\n    'type_move': 1,\n    'type_false': 0,\n    'type_undefined': -1\n  };\n  var preventDefaultMouseMove = true;\n  zrUtil.each(dataZoomInfos, function (dataZoomInfo) {\n    var dataZoomModel = dataZoomInfo.dataZoomModel;\n    var oneType = dataZoomModel.get('disabled', true) ? false : dataZoomModel.get('zoomLock', true) ? 'move' : true;\n\n    if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {\n      controlType = oneType;\n    } // Prevent default move event by default. If one false, do not prevent. Otherwise\n    // users may be confused why it does not work when multiple insideZooms exist.\n\n\n    preventDefaultMouseMove &= dataZoomModel.get('preventDefaultMouseMove', true);\n  });\n  return {\n    controlType: controlType,\n    opt: {\n      // RoamController will enable all of these functionalities,\n      // and the final behavior is determined by its event listener\n      // provided by each inside zoom.\n      zoomOnMouseWheel: true,\n      moveOnMouseMove: true,\n      moveOnMouseWheel: true,\n      preventDefaultMouseMove: !!preventDefaultMouseMove\n    }\n  };\n}\n\nexports.register = register;\nexports.unregister = unregister;\nexports.generateCoordId = generateCoordId;\n\n/***/ }),\n/* 1281 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n__webpack_require__(620);\n\n__webpack_require__(629);\n\n/***/ }),\n/* 1282 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar VisualMapModel = __webpack_require__(624);\n\nvar numberUtil = __webpack_require__(26);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Constant\nvar DEFAULT_BAR_BOUND = [20, 140];\nvar ContinuousModel = VisualMapModel.extend({\n  type: 'visualMap.continuous',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    align: 'auto',\n    // 'auto', 'left', 'right', 'top', 'bottom'\n    calculable: false,\n    // This prop effect default component type determine,\n    // See echarts/component/visualMap/typeDefaulter.\n    range: null,\n    // selected range. In default case `range` is [min, max]\n    // and can auto change along with modification of min max,\n    // util use specifid a range.\n    realtime: true,\n    // Whether realtime update.\n    itemHeight: null,\n    // The length of the range control edge.\n    itemWidth: null,\n    // The length of the other side.\n    hoverLink: true,\n    // Enable hover highlight.\n    hoverLinkDataSize: null,\n    // The size of hovered data.\n    hoverLinkOnHandle: null // Whether trigger hoverLink when hover handle.\n    // If not specified, follow the value of `realtime`.\n\n  },\n\n  /**\n   * @override\n   */\n  optionUpdated: function (newOption, isInit) {\n    ContinuousModel.superApply(this, 'optionUpdated', arguments);\n    this.resetExtent();\n    this.resetVisual(function (mappingOption) {\n      mappingOption.mappingMethod = 'linear';\n      mappingOption.dataExtent = this.getExtent();\n    });\n\n    this._resetRange();\n  },\n\n  /**\n   * @protected\n   * @override\n   */\n  resetItemSize: function () {\n    ContinuousModel.superApply(this, 'resetItemSize', arguments);\n    var itemSize = this.itemSize;\n    this._orient === 'horizontal' && itemSize.reverse();\n    (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);\n    (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);\n  },\n\n  /**\n   * @private\n   */\n  _resetRange: function () {\n    var dataExtent = this.getExtent();\n    var range = this.option.range;\n\n    if (!range || range.auto) {\n      // `range` should always be array (so we dont use other\n      // value like 'auto') for user-friend. (consider getOption).\n      dataExtent.auto = 1;\n      this.option.range = dataExtent;\n    } else if (zrUtil.isArray(range)) {\n      if (range[0] > range[1]) {\n        range.reverse();\n      }\n\n      range[0] = Math.max(range[0], dataExtent[0]);\n      range[1] = Math.min(range[1], dataExtent[1]);\n    }\n  },\n\n  /**\n   * @protected\n   * @override\n   */\n  completeVisualOption: function () {\n    VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n    zrUtil.each(this.stateList, function (state) {\n      var symbolSize = this.option.controller[state].symbolSize;\n\n      if (symbolSize && symbolSize[0] !== symbolSize[1]) {\n        symbolSize[0] = 0; // For good looking.\n      }\n    }, this);\n  },\n\n  /**\n   * @override\n   */\n  setSelected: function (selected) {\n    this.option.range = selected.slice();\n\n    this._resetRange();\n  },\n\n  /**\n   * @public\n   */\n  getSelected: function () {\n    var dataExtent = this.getExtent();\n    var dataInterval = numberUtil.asc((this.get('range') || []).slice()); // Clamp\n\n    dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);\n    dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);\n    dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);\n    dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);\n    return dataInterval;\n  },\n\n  /**\n   * @override\n   */\n  getValueState: function (value) {\n    var range = this.option.range;\n    var dataExtent = this.getExtent(); // When range[0] === dataExtent[0], any value larger than dataExtent[0] maps to 'inRange'.\n    // range[1] is processed likewise.\n\n    return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? 'inRange' : 'outOfRange';\n  },\n\n  /**\n   * @params {Array.<number>} range target value: range[0] <= value && value <= range[1]\n   * @return {Array.<Object>} [{seriesId, dataIndices: <Array.<number>>}, ...]\n   */\n  findTargetDataIndices: function (range) {\n    var result = [];\n    this.eachTargetSeries(function (seriesModel) {\n      var dataIndices = [];\n      var data = seriesModel.getData();\n      data.each(this.getDataDimension(data), function (value, dataIndex) {\n        range[0] <= value && value <= range[1] && dataIndices.push(dataIndex);\n      }, this);\n      result.push({\n        seriesId: seriesModel.id,\n        dataIndex: dataIndices\n      });\n    }, this);\n    return result;\n  },\n\n  /**\n   * @implement\n   */\n  getVisualMeta: function (getColorVisual) {\n    var oVals = getColorStopValues(this, 'outOfRange', this.getExtent());\n    var iVals = getColorStopValues(this, 'inRange', this.option.range.slice());\n    var stops = [];\n\n    function setStop(value, valueState) {\n      stops.push({\n        value: value,\n        color: getColorVisual(value, valueState)\n      });\n    } // Format to: outOfRange -- inRange -- outOfRange.\n\n\n    var iIdx = 0;\n    var oIdx = 0;\n    var iLen = iVals.length;\n    var oLen = oVals.length;\n\n    for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {\n      // If oVal[oIdx] === iVals[iIdx], oVal[oIdx] should be ignored.\n      if (oVals[oIdx] < iVals[iIdx]) {\n        setStop(oVals[oIdx], 'outOfRange');\n      }\n    }\n\n    for (var first = 1; iIdx < iLen; iIdx++, first = 0) {\n      // If range is full, value beyond min, max will be clamped.\n      // make a singularity\n      first && stops.length && setStop(iVals[iIdx], 'outOfRange');\n      setStop(iVals[iIdx], 'inRange');\n    }\n\n    for (var first = 1; oIdx < oLen; oIdx++) {\n      if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {\n        // make a singularity\n        if (first) {\n          stops.length && setStop(stops[stops.length - 1].value, 'outOfRange');\n          first = 0;\n        }\n\n        setStop(oVals[oIdx], 'outOfRange');\n      }\n    }\n\n    var stopsLen = stops.length;\n    return {\n      stops: stops,\n      outerColors: [stopsLen ? stops[0].color : 'transparent', stopsLen ? stops[stopsLen - 1].color : 'transparent']\n    };\n  }\n});\n\nfunction getColorStopValues(visualMapModel, valueState, dataExtent) {\n  if (dataExtent[0] === dataExtent[1]) {\n    return dataExtent.slice();\n  } // When using colorHue mapping, it is not linear color any more.\n  // Moreover, canvas gradient seems not to be accurate linear.\n  // FIXME\n  // Should be arbitrary value 100? or based on pixel size?\n\n\n  var count = 200;\n  var step = (dataExtent[1] - dataExtent[0]) / count;\n  var value = dataExtent[0];\n  var stopValues = [];\n\n  for (var i = 0; i <= count && value < dataExtent[1]; i++) {\n    stopValues.push(value);\n    value += step;\n  }\n\n  stopValues.push(dataExtent[1]);\n  return stopValues;\n}\n\nvar _default = ContinuousModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1283 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar LinearGradient = __webpack_require__(405);\n\nvar eventTool = __webpack_require__(129);\n\nvar VisualMapView = __webpack_require__(626);\n\nvar graphic = __webpack_require__(23);\n\nvar numberUtil = __webpack_require__(26);\n\nvar sliderMove = __webpack_require__(218);\n\nvar helper = __webpack_require__(627);\n\nvar modelUtil = __webpack_require__(31);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar linearMap = numberUtil.linearMap;\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max; // Arbitrary value\n\nvar HOVER_LINK_SIZE = 12;\nvar HOVER_LINK_OUT = 6; // Notice:\n// Any \"interval\" should be by the order of [low, high].\n// \"handle0\" (handleIndex === 0) maps to\n// low data value: this._dataInterval[0] and has low coord.\n// \"handle1\" (handleIndex === 1) maps to\n// high data value: this._dataInterval[1] and has high coord.\n// The logic of transform is implemented in this._createBarGroup.\n\nvar ContinuousView = VisualMapView.extend({\n  type: 'visualMap.continuous',\n\n  /**\n   * @override\n   */\n  init: function () {\n    ContinuousView.superApply(this, 'init', arguments);\n    /**\n     * @private\n     */\n\n    this._shapes = {};\n    /**\n     * @private\n     */\n\n    this._dataInterval = [];\n    /**\n     * @private\n     */\n\n    this._handleEnds = [];\n    /**\n     * @private\n     */\n\n    this._orient;\n    /**\n     * @private\n     */\n\n    this._useHandle;\n    /**\n     * @private\n     */\n\n    this._hoverLinkDataIndices = [];\n    /**\n     * @private\n     */\n\n    this._dragging;\n    /**\n     * @private\n     */\n\n    this._hovering;\n  },\n\n  /**\n   * @protected\n   * @override\n   */\n  doRender: function (visualMapModel, ecModel, api, payload) {\n    if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) {\n      this._buildView();\n    }\n  },\n\n  /**\n   * @private\n   */\n  _buildView: function () {\n    this.group.removeAll();\n    var visualMapModel = this.visualMapModel;\n    var thisGroup = this.group;\n    this._orient = visualMapModel.get('orient');\n    this._useHandle = visualMapModel.get('calculable');\n\n    this._resetInterval();\n\n    this._renderBar(thisGroup);\n\n    var dataRangeText = visualMapModel.get('text');\n\n    this._renderEndsText(thisGroup, dataRangeText, 0);\n\n    this._renderEndsText(thisGroup, dataRangeText, 1); // Do this for background size calculation.\n\n\n    this._updateView(true); // After updating view, inner shapes is built completely,\n    // and then background can be rendered.\n\n\n    this.renderBackground(thisGroup); // Real update view\n\n    this._updateView();\n\n    this._enableHoverLinkToSeries();\n\n    this._enableHoverLinkFromSeries();\n\n    this.positionGroup(thisGroup);\n  },\n\n  /**\n   * @private\n   */\n  _renderEndsText: function (group, dataRangeText, endsIndex) {\n    if (!dataRangeText) {\n      return;\n    } // Compatible with ec2, text[0] map to high value, text[1] map low value.\n\n\n    var text = dataRangeText[1 - endsIndex];\n    text = text != null ? text + '' : '';\n    var visualMapModel = this.visualMapModel;\n    var textGap = visualMapModel.get('textGap');\n    var itemSize = visualMapModel.itemSize;\n    var barGroup = this._shapes.barGroup;\n\n    var position = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup);\n\n    var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup);\n\n    var orient = this._orient;\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    this.group.add(new graphic.Text({\n      style: {\n        x: position[0],\n        y: position[1],\n        textVerticalAlign: orient === 'horizontal' ? 'middle' : align,\n        textAlign: orient === 'horizontal' ? align : 'center',\n        text: text,\n        textFont: textStyleModel.getFont(),\n        textFill: textStyleModel.getTextColor()\n      }\n    }));\n  },\n\n  /**\n   * @private\n   */\n  _renderBar: function (targetGroup) {\n    var visualMapModel = this.visualMapModel;\n    var shapes = this._shapes;\n    var itemSize = visualMapModel.itemSize;\n    var orient = this._orient;\n    var useHandle = this._useHandle;\n    var itemAlign = helper.getItemAlign(visualMapModel, this.api, itemSize);\n\n    var barGroup = shapes.barGroup = this._createBarGroup(itemAlign); // Bar\n\n\n    barGroup.add(shapes.outOfRange = createPolygon());\n    barGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor(this._orient) : null, zrUtil.bind(this._dragHandle, this, 'all', false), zrUtil.bind(this._dragHandle, this, 'all', true)));\n    var textRect = visualMapModel.textStyleModel.getTextRect('国');\n    var textSize = mathMax(textRect.width, textRect.height); // Handle\n\n    if (useHandle) {\n      shapes.handleThumbs = [];\n      shapes.handleLabels = [];\n      shapes.handleLabelPoints = [];\n\n      this._createHandle(barGroup, 0, itemSize, textSize, orient, itemAlign);\n\n      this._createHandle(barGroup, 1, itemSize, textSize, orient, itemAlign);\n    }\n\n    this._createIndicator(barGroup, itemSize, textSize, orient);\n\n    targetGroup.add(barGroup);\n  },\n\n  /**\n   * @private\n   */\n  _createHandle: function (barGroup, handleIndex, itemSize, textSize, orient) {\n    var onDrift = zrUtil.bind(this._dragHandle, this, handleIndex, false);\n    var onDragEnd = zrUtil.bind(this._dragHandle, this, handleIndex, true);\n    var handleThumb = createPolygon(createHandlePoints(handleIndex, textSize), getCursor(this._orient), onDrift, onDragEnd);\n    handleThumb.position[0] = itemSize[0];\n    barGroup.add(handleThumb); // Text is always horizontal layout but should not be effected by\n    // transform (orient/inverse). So label is built separately but not\n    // use zrender/graphic/helper/RectText, and is located based on view\n    // group (according to handleLabelPoint) but not barGroup.\n\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    var handleLabel = new graphic.Text({\n      draggable: true,\n      drift: onDrift,\n      onmousemove: function (e) {\n        // Fot mobile devicem, prevent screen slider on the button.\n        eventTool.stop(e.event);\n      },\n      ondragend: onDragEnd,\n      style: {\n        x: 0,\n        y: 0,\n        text: '',\n        textFont: textStyleModel.getFont(),\n        textFill: textStyleModel.getTextColor()\n      }\n    });\n    this.group.add(handleLabel);\n    var handleLabelPoint = [orient === 'horizontal' ? textSize / 2 : textSize * 1.5, orient === 'horizontal' ? handleIndex === 0 ? -(textSize * 1.5) : textSize * 1.5 : handleIndex === 0 ? -textSize / 2 : textSize / 2];\n    var shapes = this._shapes;\n    shapes.handleThumbs[handleIndex] = handleThumb;\n    shapes.handleLabelPoints[handleIndex] = handleLabelPoint;\n    shapes.handleLabels[handleIndex] = handleLabel;\n  },\n\n  /**\n   * @private\n   */\n  _createIndicator: function (barGroup, itemSize, textSize, orient) {\n    var indicator = createPolygon([[0, 0]], 'move');\n    indicator.position[0] = itemSize[0];\n    indicator.attr({\n      invisible: true,\n      silent: true\n    });\n    barGroup.add(indicator);\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    var indicatorLabel = new graphic.Text({\n      silent: true,\n      invisible: true,\n      style: {\n        x: 0,\n        y: 0,\n        text: '',\n        textFont: textStyleModel.getFont(),\n        textFill: textStyleModel.getTextColor()\n      }\n    });\n    this.group.add(indicatorLabel);\n    var indicatorLabelPoint = [orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT + 3, 0];\n    var shapes = this._shapes;\n    shapes.indicator = indicator;\n    shapes.indicatorLabel = indicatorLabel;\n    shapes.indicatorLabelPoint = indicatorLabelPoint;\n  },\n\n  /**\n   * @private\n   */\n  _dragHandle: function (handleIndex, isEnd, dx, dy) {\n    if (!this._useHandle) {\n      return;\n    }\n\n    this._dragging = !isEnd;\n\n    if (!isEnd) {\n      // Transform dx, dy to bar coordination.\n      var vertex = this._applyTransform([dx, dy], this._shapes.barGroup, true);\n\n      this._updateInterval(handleIndex, vertex[1]); // Considering realtime, update view should be executed\n      // before dispatch action.\n\n\n      this._updateView();\n    } // dragEnd do not dispatch action when realtime.\n\n\n    if (isEnd === !this.visualMapModel.get('realtime')) {\n      // jshint ignore:line\n      this.api.dispatchAction({\n        type: 'selectDataRange',\n        from: this.uid,\n        visualMapId: this.visualMapModel.id,\n        selected: this._dataInterval.slice()\n      });\n    }\n\n    if (isEnd) {\n      !this._hovering && this._clearHoverLinkToSeries();\n    } else if (useHoverLinkOnHandle(this.visualMapModel)) {\n      this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);\n    }\n  },\n\n  /**\n   * @private\n   */\n  _resetInterval: function () {\n    var visualMapModel = this.visualMapModel;\n    var dataInterval = this._dataInterval = visualMapModel.getSelected();\n    var dataExtent = visualMapModel.getExtent();\n    var sizeExtent = [0, visualMapModel.itemSize[1]];\n    this._handleEnds = [linearMap(dataInterval[0], dataExtent, sizeExtent, true), linearMap(dataInterval[1], dataExtent, sizeExtent, true)];\n  },\n\n  /**\n   * @private\n   * @param {(number|string)} handleIndex 0 or 1 or 'all'\n   * @param {number} dx\n   * @param {number} dy\n   */\n  _updateInterval: function (handleIndex, delta) {\n    delta = delta || 0;\n    var visualMapModel = this.visualMapModel;\n    var handleEnds = this._handleEnds;\n    var sizeExtent = [0, visualMapModel.itemSize[1]];\n    sliderMove(delta, handleEnds, sizeExtent, handleIndex, // cross is forbiden\n    0);\n    var dataExtent = visualMapModel.getExtent(); // Update data interval.\n\n    this._dataInterval = [linearMap(handleEnds[0], sizeExtent, dataExtent, true), linearMap(handleEnds[1], sizeExtent, dataExtent, true)];\n  },\n\n  /**\n   * @private\n   */\n  _updateView: function (forSketch) {\n    var visualMapModel = this.visualMapModel;\n    var dataExtent = visualMapModel.getExtent();\n    var shapes = this._shapes;\n    var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];\n    var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;\n\n    var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange');\n\n    var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange');\n\n    shapes.inRange.setStyle({\n      fill: visualInRange.barColor,\n      opacity: visualInRange.opacity\n    }).setShape('points', visualInRange.barPoints);\n    shapes.outOfRange.setStyle({\n      fill: visualOutOfRange.barColor,\n      opacity: visualOutOfRange.opacity\n    }).setShape('points', visualOutOfRange.barPoints);\n\n    this._updateHandle(inRangeHandleEnds, visualInRange);\n  },\n\n  /**\n   * @private\n   */\n  _createBarVisual: function (dataInterval, dataExtent, handleEnds, forceState) {\n    var opts = {\n      forceState: forceState,\n      convertOpacityToAlpha: true\n    };\n\n    var colorStops = this._makeColorGradient(dataInterval, opts);\n\n    var symbolSizes = [this.getControllerVisual(dataInterval[0], 'symbolSize', opts), this.getControllerVisual(dataInterval[1], 'symbolSize', opts)];\n\n    var barPoints = this._createBarPoints(handleEnds, symbolSizes);\n\n    return {\n      barColor: new LinearGradient(0, 0, 0, 1, colorStops),\n      barPoints: barPoints,\n      handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color]\n    };\n  },\n\n  /**\n   * @private\n   */\n  _makeColorGradient: function (dataInterval, opts) {\n    // Considering colorHue, which is not linear, so we have to sample\n    // to calculate gradient color stops, but not only caculate head\n    // and tail.\n    var sampleNumber = 100; // Arbitrary value.\n\n    var colorStops = [];\n    var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;\n    colorStops.push({\n      color: this.getControllerVisual(dataInterval[0], 'color', opts),\n      offset: 0\n    });\n\n    for (var i = 1; i < sampleNumber; i++) {\n      var currValue = dataInterval[0] + step * i;\n\n      if (currValue > dataInterval[1]) {\n        break;\n      }\n\n      colorStops.push({\n        color: this.getControllerVisual(currValue, 'color', opts),\n        offset: i / sampleNumber\n      });\n    }\n\n    colorStops.push({\n      color: this.getControllerVisual(dataInterval[1], 'color', opts),\n      offset: 1\n    });\n    return colorStops;\n  },\n\n  /**\n   * @private\n   */\n  _createBarPoints: function (handleEnds, symbolSizes) {\n    var itemSize = this.visualMapModel.itemSize;\n    return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]];\n  },\n\n  /**\n   * @private\n   */\n  _createBarGroup: function (itemAlign) {\n    var orient = this._orient;\n    var inverse = this.visualMapModel.get('inverse');\n    return new graphic.Group(orient === 'horizontal' && !inverse ? {\n      scale: itemAlign === 'bottom' ? [1, 1] : [-1, 1],\n      rotation: Math.PI / 2\n    } : orient === 'horizontal' && inverse ? {\n      scale: itemAlign === 'bottom' ? [-1, 1] : [1, 1],\n      rotation: -Math.PI / 2\n    } : orient === 'vertical' && !inverse ? {\n      scale: itemAlign === 'left' ? [1, -1] : [-1, -1]\n    } : {\n      scale: itemAlign === 'left' ? [1, 1] : [-1, 1]\n    });\n  },\n\n  /**\n   * @private\n   */\n  _updateHandle: function (handleEnds, visualInRange) {\n    if (!this._useHandle) {\n      return;\n    }\n\n    var shapes = this._shapes;\n    var visualMapModel = this.visualMapModel;\n    var handleThumbs = shapes.handleThumbs;\n    var handleLabels = shapes.handleLabels;\n    each([0, 1], function (handleIndex) {\n      var handleThumb = handleThumbs[handleIndex];\n      handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]);\n      handleThumb.position[1] = handleEnds[handleIndex]; // Update handle label position.\n\n      var textPoint = graphic.applyTransform(shapes.handleLabelPoints[handleIndex], graphic.getTransform(handleThumb, this.group));\n      handleLabels[handleIndex].setStyle({\n        x: textPoint[0],\n        y: textPoint[1],\n        text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),\n        textVerticalAlign: 'middle',\n        textAlign: this._applyTransform(this._orient === 'horizontal' ? handleIndex === 0 ? 'bottom' : 'top' : 'left', shapes.barGroup)\n      });\n    }, this);\n  },\n\n  /**\n   * @private\n   * @param {number} cursorValue\n   * @param {number} textValue\n   * @param {string} [rangeSymbol]\n   * @param {number} [halfHoverLinkSize]\n   */\n  _showIndicator: function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {\n    var visualMapModel = this.visualMapModel;\n    var dataExtent = visualMapModel.getExtent();\n    var itemSize = visualMapModel.itemSize;\n    var sizeExtent = [0, itemSize[1]];\n    var pos = linearMap(cursorValue, dataExtent, sizeExtent, true);\n    var shapes = this._shapes;\n    var indicator = shapes.indicator;\n\n    if (!indicator) {\n      return;\n    }\n\n    indicator.position[1] = pos;\n    indicator.attr('invisible', false);\n    indicator.setShape('points', createIndicatorPoints(!!rangeSymbol, halfHoverLinkSize, pos, itemSize[1]));\n    var opts = {\n      convertOpacityToAlpha: true\n    };\n    var color = this.getControllerVisual(cursorValue, 'color', opts);\n    indicator.setStyle('fill', color); // Update handle label position.\n\n    var textPoint = graphic.applyTransform(shapes.indicatorLabelPoint, graphic.getTransform(indicator, this.group));\n    var indicatorLabel = shapes.indicatorLabel;\n    indicatorLabel.attr('invisible', false);\n\n    var align = this._applyTransform('left', shapes.barGroup);\n\n    var orient = this._orient;\n    indicatorLabel.setStyle({\n      text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue),\n      textVerticalAlign: orient === 'horizontal' ? align : 'middle',\n      textAlign: orient === 'horizontal' ? 'center' : align,\n      x: textPoint[0],\n      y: textPoint[1]\n    });\n  },\n\n  /**\n   * @private\n   */\n  _enableHoverLinkToSeries: function () {\n    var self = this;\n\n    this._shapes.barGroup.on('mousemove', function (e) {\n      self._hovering = true;\n\n      if (!self._dragging) {\n        var itemSize = self.visualMapModel.itemSize;\n\n        var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.barGroup, true, true); // For hover link show when hover handle, which might be\n        // below or upper than sizeExtent.\n\n\n        pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]);\n\n        self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);\n      }\n    }).on('mouseout', function () {\n      // When mouse is out of handle, hoverLink still need\n      // to be displayed when realtime is set as false.\n      self._hovering = false;\n      !self._dragging && self._clearHoverLinkToSeries();\n    });\n  },\n\n  /**\n   * @private\n   */\n  _enableHoverLinkFromSeries: function () {\n    var zr = this.api.getZr();\n\n    if (this.visualMapModel.option.hoverLink) {\n      zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this);\n      zr.on('mouseout', this._hideIndicator, this);\n    } else {\n      this._clearHoverLinkFromSeries();\n    }\n  },\n\n  /**\n   * @private\n   */\n  _doHoverLinkToSeries: function (cursorPos, hoverOnBar) {\n    var visualMapModel = this.visualMapModel;\n    var itemSize = visualMapModel.itemSize;\n\n    if (!visualMapModel.option.hoverLink) {\n      return;\n    }\n\n    var sizeExtent = [0, itemSize[1]];\n    var dataExtent = visualMapModel.getExtent(); // For hover link show when hover handle, which might be below or upper than sizeExtent.\n\n    cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]);\n    var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);\n    var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];\n    var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true);\n    var valueRange = [linearMap(hoverRange[0], sizeExtent, dataExtent, true), linearMap(hoverRange[1], sizeExtent, dataExtent, true)]; // Consider data range is out of visualMap range, see test/visualMap-continuous.html,\n    // where china and india has very large population.\n\n    hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);\n    hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); // Do not show indicator when mouse is over handle,\n    // otherwise labels overlap, especially when dragging.\n\n    if (hoverOnBar) {\n      if (valueRange[0] === -Infinity) {\n        this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize);\n      } else if (valueRange[1] === Infinity) {\n        this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize);\n      } else {\n        this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize);\n      }\n    } // When realtime is set as false, handles, which are in barGroup,\n    // also trigger hoverLink, which help user to realize where they\n    // focus on when dragging. (see test/heatmap-large.html)\n    // When realtime is set as true, highlight will not show when hover\n    // handle, because the label on handle, which displays a exact value\n    // but not range, might mislead users.\n\n\n    var oldBatch = this._hoverLinkDataIndices;\n    var newBatch = [];\n\n    if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {\n      newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);\n    }\n\n    var resultBatches = modelUtil.compressBatches(oldBatch, newBatch);\n\n    this._dispatchHighDown('downplay', helper.makeHighDownBatch(resultBatches[0], visualMapModel));\n\n    this._dispatchHighDown('highlight', helper.makeHighDownBatch(resultBatches[1], visualMapModel));\n  },\n\n  /**\n   * @private\n   */\n  _hoverLinkFromSeriesMouseOver: function (e) {\n    var el = e.target;\n    var visualMapModel = this.visualMapModel;\n\n    if (!el || el.dataIndex == null) {\n      return;\n    }\n\n    var dataModel = this.ecModel.getSeriesByIndex(el.seriesIndex);\n\n    if (!visualMapModel.isTargetSeries(dataModel)) {\n      return;\n    }\n\n    var data = dataModel.getData(el.dataType);\n    var value = data.get(visualMapModel.getDataDimension(data), el.dataIndex, true);\n\n    if (!isNaN(value)) {\n      this._showIndicator(value, value);\n    }\n  },\n\n  /**\n   * @private\n   */\n  _hideIndicator: function () {\n    var shapes = this._shapes;\n    shapes.indicator && shapes.indicator.attr('invisible', true);\n    shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true);\n  },\n\n  /**\n   * @private\n   */\n  _clearHoverLinkToSeries: function () {\n    this._hideIndicator();\n\n    var indices = this._hoverLinkDataIndices;\n\n    this._dispatchHighDown('downplay', helper.makeHighDownBatch(indices, this.visualMapModel));\n\n    indices.length = 0;\n  },\n\n  /**\n   * @private\n   */\n  _clearHoverLinkFromSeries: function () {\n    this._hideIndicator();\n\n    var zr = this.api.getZr();\n    zr.off('mouseover', this._hoverLinkFromSeriesMouseOver);\n    zr.off('mouseout', this._hideIndicator);\n  },\n\n  /**\n   * @private\n   */\n  _applyTransform: function (vertex, element, inverse, global) {\n    var transform = graphic.getTransform(element, global ? null : this.group);\n    return graphic[zrUtil.isArray(vertex) ? 'applyTransform' : 'transformDirection'](vertex, transform, inverse);\n  },\n\n  /**\n   * @private\n   */\n  _dispatchHighDown: function (type, batch) {\n    batch && batch.length && this.api.dispatchAction({\n      type: type,\n      batch: batch\n    });\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    this._clearHoverLinkFromSeries();\n\n    this._clearHoverLinkToSeries();\n  },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    this._clearHoverLinkFromSeries();\n\n    this._clearHoverLinkToSeries();\n  }\n});\n\nfunction createPolygon(points, cursor, onDrift, onDragEnd) {\n  return new graphic.Polygon({\n    shape: {\n      points: points\n    },\n    draggable: !!onDrift,\n    cursor: cursor,\n    drift: onDrift,\n    onmousemove: function (e) {\n      // Fot mobile devicem, prevent screen slider on the button.\n      eventTool.stop(e.event);\n    },\n    ondragend: onDragEnd\n  });\n}\n\nfunction createHandlePoints(handleIndex, textSize) {\n  return handleIndex === 0 ? [[0, 0], [textSize, 0], [textSize, -textSize]] : [[0, 0], [textSize, 0], [textSize, textSize]];\n}\n\nfunction createIndicatorPoints(isRange, halfHoverLinkSize, pos, extentMax) {\n  return isRange ? [// indicate range\n  [0, -mathMin(halfHoverLinkSize, mathMax(pos, 0))], [HOVER_LINK_OUT, 0], [0, mathMin(halfHoverLinkSize, mathMax(extentMax - pos, 0))]] : [// indicate single value\n  [0, 0], [5, -5], [5, 5]];\n}\n\nfunction getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {\n  var halfHoverLinkSize = HOVER_LINK_SIZE / 2;\n  var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize');\n\n  if (hoverLinkDataSize) {\n    halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;\n  }\n\n  return halfHoverLinkSize;\n}\n\nfunction useHoverLinkOnHandle(visualMapModel) {\n  var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\n  return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\n}\n\nfunction getCursor(orient) {\n  return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = ContinuousView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1284 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = __webpack_require__(36);\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = __webpack_require__(2);\n\nvar VisualMapModel = __webpack_require__(624);\n\nvar VisualMapping = __webpack_require__(184);\n\nvar visualDefault = __webpack_require__(625);\n\nvar _number = __webpack_require__(26);\n\nvar reformIntervals = _number.reformIntervals;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PiecewiseModel = VisualMapModel.extend({\n  type: 'visualMap.piecewise',\n\n  /**\n   * Order Rule:\n   *\n   * option.categories / option.pieces / option.text / option.selected:\n   *     If !option.inverse,\n   *     Order when vertical: ['top', ..., 'bottom'].\n   *     Order when horizontal: ['left', ..., 'right'].\n   *     If option.inverse, the meaning of\n   *     the order should be reversed.\n   *\n   * this._pieceList:\n   *     The order is always [low, ..., high].\n   *\n   * Mapping from location to low-high:\n   *     If !option.inverse\n   *     When vertical, top is high.\n   *     When horizontal, right is high.\n   *     If option.inverse, reverse.\n   */\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    selected: null,\n    // Object. If not specified, means selected.\n    // When pieces and splitNumber: {'0': true, '5': true}\n    // When categories: {'cate1': false, 'cate3': true}\n    // When selected === false, means all unselected.\n    minOpen: false,\n    // Whether include values that smaller than `min`.\n    maxOpen: false,\n    // Whether include values that bigger than `max`.\n    align: 'auto',\n    // 'auto', 'left', 'right'\n    itemWidth: 20,\n    // When put the controller vertically, it is the length of\n    // horizontal side of each item. Otherwise, vertical side.\n    itemHeight: 14,\n    // When put the controller vertically, it is the length of\n    // vertical side of each item. Otherwise, horizontal side.\n    itemSymbol: 'roundRect',\n    pieceList: null,\n    // Each item is Object, with some of those attrs:\n    // {min, max, lt, gt, lte, gte, value,\n    // color, colorSaturation, colorAlpha, opacity,\n    // symbol, symbolSize}, which customize the range or visual\n    // coding of the certain piece. Besides, see \"Order Rule\".\n    categories: null,\n    // category names, like: ['some1', 'some2', 'some3'].\n    // Attr min/max are ignored when categories set. See \"Order Rule\"\n    splitNumber: 5,\n    // If set to 5, auto split five pieces equally.\n    // If set to 0 and component type not set, component type will be\n    // determined as \"continuous\". (It is less reasonable but for ec2\n    // compatibility, see echarts/component/visualMap/typeDefaulter)\n    selectedMode: 'multiple',\n    // Can be 'multiple' or 'single'.\n    itemGap: 10,\n    // The gap between two items, in px.\n    hoverLink: true,\n    // Enable hover highlight.\n    showLabel: null // By default, when text is used, label will hide (the logic\n    // is remained for compatibility reason)\n\n  },\n\n  /**\n   * @override\n   */\n  optionUpdated: function (newOption, isInit) {\n    PiecewiseModel.superApply(this, 'optionUpdated', arguments);\n    /**\n     * The order is always [low, ..., high].\n     * [{text: string, interval: Array.<number>}, ...]\n     * @private\n     * @type {Array.<Object>}\n     */\n\n    this._pieceList = [];\n    this.resetExtent();\n    /**\n     * 'pieces', 'categories', 'splitNumber'\n     * @type {string}\n     */\n\n    var mode = this._mode = this._determineMode();\n\n    resetMethods[this._mode].call(this);\n\n    this._resetSelected(newOption, isInit);\n\n    var categories = this.option.categories;\n    this.resetVisual(function (mappingOption, state) {\n      if (mode === 'categories') {\n        mappingOption.mappingMethod = 'category';\n        mappingOption.categories = zrUtil.clone(categories);\n      } else {\n        mappingOption.dataExtent = this.getExtent();\n        mappingOption.mappingMethod = 'piecewise';\n        mappingOption.pieceList = zrUtil.map(this._pieceList, function (piece) {\n          var piece = zrUtil.clone(piece);\n\n          if (state !== 'inRange') {\n            // FIXME\n            // outOfRange do not support special visual in pieces.\n            piece.visual = null;\n          }\n\n          return piece;\n        });\n      }\n    });\n  },\n\n  /**\n   * @protected\n   * @override\n   */\n  completeVisualOption: function () {\n    // Consider this case:\n    // visualMap: {\n    //      pieces: [{symbol: 'circle', lt: 0}, {symbol: 'rect', gte: 0}]\n    // }\n    // where no inRange/outOfRange set but only pieces. So we should make\n    // default inRange/outOfRange for this case, otherwise visuals that only\n    // appear in `pieces` will not be taken into account in visual encoding.\n    var option = this.option;\n    var visualTypesInPieces = {};\n    var visualTypes = VisualMapping.listVisualTypes();\n    var isCategory = this.isCategory();\n    zrUtil.each(option.pieces, function (piece) {\n      zrUtil.each(visualTypes, function (visualType) {\n        if (piece.hasOwnProperty(visualType)) {\n          visualTypesInPieces[visualType] = 1;\n        }\n      });\n    });\n    zrUtil.each(visualTypesInPieces, function (v, visualType) {\n      var exists = 0;\n      zrUtil.each(this.stateList, function (state) {\n        exists |= has(option, state, visualType) || has(option.target, state, visualType);\n      }, this);\n      !exists && zrUtil.each(this.stateList, function (state) {\n        (option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === 'inRange' ? 'active' : 'inactive', isCategory);\n      });\n    }, this);\n\n    function has(obj, state, visualType) {\n      return obj && obj[state] && (zrUtil.isObject(obj[state]) ? obj[state].hasOwnProperty(visualType) : obj[state] === visualType // e.g., inRange: 'symbol'\n      );\n    }\n\n    VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n  },\n  _resetSelected: function (newOption, isInit) {\n    var thisOption = this.option;\n    var pieceList = this._pieceList; // Selected do not merge but all override.\n\n    var selected = (isInit ? thisOption : newOption).selected || {};\n    thisOption.selected = selected; // Consider 'not specified' means true.\n\n    zrUtil.each(pieceList, function (piece, index) {\n      var key = this.getSelectedMapKey(piece);\n\n      if (!selected.hasOwnProperty(key)) {\n        selected[key] = true;\n      }\n    }, this);\n\n    if (thisOption.selectedMode === 'single') {\n      // Ensure there is only one selected.\n      var hasSel = false;\n      zrUtil.each(pieceList, function (piece, index) {\n        var key = this.getSelectedMapKey(piece);\n\n        if (selected[key]) {\n          hasSel ? selected[key] = false : hasSel = true;\n        }\n      }, this);\n    } // thisOption.selectedMode === 'multiple', default: all selected.\n\n  },\n\n  /**\n   * @public\n   */\n  getSelectedMapKey: function (piece) {\n    return this._mode === 'categories' ? piece.value + '' : piece.index + '';\n  },\n\n  /**\n   * @public\n   */\n  getPieceList: function () {\n    return this._pieceList;\n  },\n\n  /**\n   * @private\n   * @return {string}\n   */\n  _determineMode: function () {\n    var option = this.option;\n    return option.pieces && option.pieces.length > 0 ? 'pieces' : this.option.categories ? 'categories' : 'splitNumber';\n  },\n\n  /**\n   * @public\n   * @override\n   */\n  setSelected: function (selected) {\n    this.option.selected = zrUtil.clone(selected);\n  },\n\n  /**\n   * @public\n   * @override\n   */\n  getValueState: function (value) {\n    var index = VisualMapping.findPieceIndex(value, this._pieceList);\n    return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? 'inRange' : 'outOfRange' : 'outOfRange';\n  },\n\n  /**\n   * @public\n   * @params {number} pieceIndex piece index in visualMapModel.getPieceList()\n   * @return {Array.<Object>} [{seriesId, dataIndex: <Array.<number>>}, ...]\n   */\n  findTargetDataIndices: function (pieceIndex) {\n    var result = [];\n    this.eachTargetSeries(function (seriesModel) {\n      var dataIndices = [];\n      var data = seriesModel.getData();\n      data.each(this.getDataDimension(data), function (value, dataIndex) {\n        // Should always base on model pieceList, because it is order sensitive.\n        var pIdx = VisualMapping.findPieceIndex(value, this._pieceList);\n        pIdx === pieceIndex && dataIndices.push(dataIndex);\n      }, this);\n      result.push({\n        seriesId: seriesModel.id,\n        dataIndex: dataIndices\n      });\n    }, this);\n    return result;\n  },\n\n  /**\n   * @private\n   * @param {Object} piece piece.value or piece.interval is required.\n   * @return {number} Can be Infinity or -Infinity\n   */\n  getRepresentValue: function (piece) {\n    var representValue;\n\n    if (this.isCategory()) {\n      representValue = piece.value;\n    } else {\n      if (piece.value != null) {\n        representValue = piece.value;\n      } else {\n        var pieceInterval = piece.interval || [];\n        representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2;\n      }\n    }\n\n    return representValue;\n  },\n  getVisualMeta: function (getColorVisual) {\n    // Do not support category. (category axis is ordinal, numerical)\n    if (this.isCategory()) {\n      return;\n    }\n\n    var stops = [];\n    var outerColors = [];\n    var visualMapModel = this;\n\n    function setStop(interval, valueState) {\n      var representValue = visualMapModel.getRepresentValue({\n        interval: interval\n      });\n\n      if (!valueState) {\n        valueState = visualMapModel.getValueState(representValue);\n      }\n\n      var color = getColorVisual(representValue, valueState);\n\n      if (interval[0] === -Infinity) {\n        outerColors[0] = color;\n      } else if (interval[1] === Infinity) {\n        outerColors[1] = color;\n      } else {\n        stops.push({\n          value: interval[0],\n          color: color\n        }, {\n          value: interval[1],\n          color: color\n        });\n      }\n    } // Suplement\n\n\n    var pieceList = this._pieceList.slice();\n\n    if (!pieceList.length) {\n      pieceList.push({\n        interval: [-Infinity, Infinity]\n      });\n    } else {\n      var edge = pieceList[0].interval[0];\n      edge !== -Infinity && pieceList.unshift({\n        interval: [-Infinity, edge]\n      });\n      edge = pieceList[pieceList.length - 1].interval[1];\n      edge !== Infinity && pieceList.push({\n        interval: [edge, Infinity]\n      });\n    }\n\n    var curr = -Infinity;\n    zrUtil.each(pieceList, function (piece) {\n      var interval = piece.interval;\n\n      if (interval) {\n        // Fulfill gap.\n        interval[0] > curr && setStop([curr, interval[0]], 'outOfRange');\n        setStop(interval.slice());\n        curr = interval[1];\n      }\n    }, this);\n    return {\n      stops: stops,\n      outerColors: outerColors\n    };\n  }\n});\n/**\n * Key is this._mode\n * @type {Object}\n * @this {module:echarts/component/viusalMap/PiecewiseMode}\n */\n\nvar resetMethods = {\n  splitNumber: function () {\n    var thisOption = this.option;\n    var pieceList = this._pieceList;\n    var precision = Math.min(thisOption.precision, 20);\n    var dataExtent = this.getExtent();\n    var splitNumber = thisOption.splitNumber;\n    splitNumber = Math.max(parseInt(splitNumber, 10), 1);\n    thisOption.splitNumber = splitNumber;\n    var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; // Precision auto-adaption\n\n    while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {\n      precision++;\n    }\n\n    thisOption.precision = precision;\n    splitStep = +splitStep.toFixed(precision);\n\n    if (thisOption.minOpen) {\n      pieceList.push({\n        interval: [-Infinity, dataExtent[0]],\n        close: [0, 0]\n      });\n    }\n\n    for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) {\n      var max = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep;\n      pieceList.push({\n        interval: [curr, max],\n        close: [1, 1]\n      });\n    }\n\n    if (thisOption.maxOpen) {\n      pieceList.push({\n        interval: [dataExtent[1], Infinity],\n        close: [0, 0]\n      });\n    }\n\n    reformIntervals(pieceList);\n    zrUtil.each(pieceList, function (piece, index) {\n      piece.index = index;\n      piece.text = this.formatValueText(piece.interval);\n    }, this);\n  },\n  categories: function () {\n    var thisOption = this.option;\n    zrUtil.each(thisOption.categories, function (cate) {\n      // FIXME category模式也使用pieceList，但在visualMapping中不是使用pieceList。\n      // 是否改一致。\n      this._pieceList.push({\n        text: this.formatValueText(cate, true),\n        value: cate\n      });\n    }, this); // See \"Order Rule\".\n\n    normalizeReverse(thisOption, this._pieceList);\n  },\n  pieces: function () {\n    var thisOption = this.option;\n    var pieceList = this._pieceList;\n    zrUtil.each(thisOption.pieces, function (pieceListItem, index) {\n      if (!zrUtil.isObject(pieceListItem)) {\n        pieceListItem = {\n          value: pieceListItem\n        };\n      }\n\n      var item = {\n        text: '',\n        index: index\n      };\n\n      if (pieceListItem.label != null) {\n        item.text = pieceListItem.label;\n      }\n\n      if (pieceListItem.hasOwnProperty('value')) {\n        var value = item.value = pieceListItem.value;\n        item.interval = [value, value];\n        item.close = [1, 1];\n      } else {\n        // `min` `max` is legacy option.\n        // `lt` `gt` `lte` `gte` is recommanded.\n        var interval = item.interval = [];\n        var close = item.close = [0, 0];\n        var closeList = [1, 0, 1];\n        var infinityList = [-Infinity, Infinity];\n        var useMinMax = [];\n\n        for (var lg = 0; lg < 2; lg++) {\n          var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg];\n\n          for (var i = 0; i < 3 && interval[lg] == null; i++) {\n            interval[lg] = pieceListItem[names[i]];\n            close[lg] = closeList[i];\n            useMinMax[lg] = i === 2;\n          }\n\n          interval[lg] == null && (interval[lg] = infinityList[lg]);\n        }\n\n        useMinMax[0] && interval[1] === Infinity && (close[0] = 0);\n        useMinMax[1] && interval[0] === -Infinity && (close[1] = 0);\n\n        if (interval[0] === interval[1] && close[0] && close[1]) {\n          // Consider: [{min: 5, max: 5, visual: {...}}, {min: 0, max: 5}],\n          // we use value to lift the priority when min === max\n          item.value = interval[0];\n        }\n      }\n\n      item.visual = VisualMapping.retrieveVisuals(pieceListItem);\n      pieceList.push(item);\n    }, this); // See \"Order Rule\".\n\n    normalizeReverse(thisOption, pieceList); // Only pieces\n\n    reformIntervals(pieceList);\n    zrUtil.each(pieceList, function (piece) {\n      var close = piece.close;\n      var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]];\n      piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);\n    }, this);\n  }\n};\n\nfunction normalizeReverse(thisOption, pieceList) {\n  var inverse = thisOption.inverse;\n\n  if (thisOption.orient === 'vertical' ? !inverse : inverse) {\n    pieceList.reverse();\n  }\n}\n\nvar _default = PiecewiseModel;\nmodule.exports = _default;\n\n/***/ }),\n/* 1285 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = __webpack_require__(2);\n\nvar VisualMapView = __webpack_require__(626);\n\nvar graphic = __webpack_require__(23);\n\nvar _symbol = __webpack_require__(117);\n\nvar createSymbol = _symbol.createSymbol;\n\nvar layout = __webpack_require__(49);\n\nvar helper = __webpack_require__(627);\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements.  See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership.  The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License.  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,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied.  See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PiecewiseVisualMapView = VisualMapView.extend({\n  type: 'visualMap.piecewise',\n\n  /**\n   * @protected\n   * @override\n   */\n  doRender: function () {\n    var thisGroup = this.group;\n    thisGroup.removeAll();\n    var visualMapModel = this.visualMapModel;\n    var textGap = visualMapModel.get('textGap');\n    var textStyleModel = visualMapModel.textStyleModel;\n    var textFont = textStyleModel.getFont();\n    var textFill = textStyleModel.getTextColor();\n\n    var itemAlign = this._getItemAlign();\n\n    var itemSize = visualMapModel.itemSize;\n\n    var viewData = this._getViewData();\n\n    var endsText = viewData.endsText;\n    var showLabel = zrUtil.retrieve(visualMapModel.get('showLabel', true), !endsText);\n    endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);\n    zrUtil.each(viewData.viewPieceList, renderItem, this);\n    endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);\n    layout.box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap'));\n    this.renderBackground(thisGroup);\n    this.positionGroup(thisGroup);\n\n    function renderItem(item) {\n      var piece = item.piece;\n      var itemGroup = new graphic.Group();\n      itemGroup.onclick = zrUtil.bind(this._onItemClick, this, piece);\n\n      this._enableHoverLink(itemGroup, item.indexInModelPieceList);\n\n      var representValue = visualMapModel.getRepresentValue(piece);\n\n      this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]);\n\n      if (showLabel) {\n        var visualState = this.visualMapModel.getValueState(representValue);\n        itemGroup.add(new graphic.Text({\n          style: {\n            x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap,\n            y: itemSize[1] / 2,\n            text: piece.text,\n            textVerticalAlign: 'middle',\n            textAlign: itemAlign,\n            textFont: textFont,\n            textFill: textFill,\n            opacity: visualState === 'outOfRange' ? 0.5 : 1\n          }\n        }));\n      }\n\n      thisGroup.add(itemGroup);\n    }\n  },\n\n  /**\n   * @private\n   */\n  _enableHoverLink: function (itemGroup, pieceIndex) {\n    itemGroup.on('mouseover', zrUtil.bind(onHoverLink, this, 'highlight')).on('mouseout', zrUtil.bind(onHoverLink, this, 'downplay'));\n\n    function onHoverLink(method) {\n      var visualMapModel = this.visualMapModel;\n      visualMapModel.option.hoverLink && this.api.dispatchAction({\n        type: method,\n        batch: helper.makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel)\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _getItemAlign: function () {\n    var visualMapModel = this.visualMapModel;\n    var modelOption = visualMapModel.option;\n\n    if (modelOption.orient === 'vertical') {\n      return helper.getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);\n    } else {\n      // horizontal, most case left unless specifying right.\n      var align = modelOption.align;\n\n      if (!align || align === 'auto') {\n        align = 'left';\n      }\n\n      return align;\n    }\n  },\n\n  /**\n   * @private\n   */\n  _renderEndsText: function (group, text, itemSize, showLabel, itemAlign) {\n    if (!text) {\n      return;\n    }\n\n    var itemGroup = new graphic.Group();\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    itemGroup.add(new graphic.Text({\n      style: {\n        x: showLabel ? itemAlign === 'right' ? itemSize[0] : 0 : itemSize[0] / 2,\n        y: itemSize[1] / 2,\n        textVerticalAlign: 'middle',\n        textAlign: showLabel ? itemAlign : 'center',\n        text: text,\n        textFont: textStyleModel.getFont(),\n        textFill: textStyleModel.getTextColor()\n      }\n    }));\n    group.add(itemGroup);\n  },\n\n  /**\n   * @private\n   * @return {Object} {peiceList, endsText} The order is the same as screen pixel order.\n   */\n  _getViewData: function () {\n    var visualMapModel = this.visualMapModel;\n    var viewPieceList = zrUtil.map(visualMapModel.getPieceList(), function (piece, index) {\n      return {\n        piece: piece,\n        indexInModelPieceList: index\n      };\n    });\n    var endsText = visualMapModel.get('text'); // Consider orient and inverse.\n\n    var orient = visualMapModel.get('orient');\n    var inverse = visualMapModel.get('inverse'); // Order of model pieceList is always [low, ..., high]\n\n    if (orient === 'horizontal' ? inverse : !inverse) {\n      viewPieceList.reverse();\n    } // Origin order of endsText is [high, low]\n    else if (endsText) {\n        endsText = endsText.slice().reverse();\n      }\n\n    return {\n      viewPieceList: viewPieceList,\n      endsText: endsText\n    };\n  },\n\n  /**\n   * @private\n   */\n  _createItemSymbol: function (group, representValue, shapeParam) {\n    group.add(createSymbol(this.getControllerVisual(representValue, 'symbol'), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], this.getControllerVisual(representValue, 'color')));\n  },\n\n  /**\n   * @private\n   */\n  _onItemClick: function (piece) {\n    var visualMapModel = this.visualMapModel;\n    var option = visualMapModel.option;\n    var selected = zrUtil.clone(option.selected);\n    var newKey = visualMapModel.getSelectedMapKey(piece);\n\n    if (option.selectedMode === 'single') {\n      selected[newKey] = true;\n      zrUtil.each(selected, function (o, key) {\n        selected[key] = key === newKey;\n      });\n    } else {\n      selected[newKey] = !selected[newKey];\n    }\n\n    this.api.dispatchAction({\n      type: 'selectDataRange',\n      from: this.uid,\n      visualMapId: this.visualMapModel.id,\n      selected: selected\n    });\n  }\n});\nvar _default = PiecewiseVisualMapView;\nmodule.exports = _default;\n\n/***/ }),\n/* 1286 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(1287);\n\nvar _zrender = __webpack_require__(322);\n\nvar registerPainter = _zrender.registerPainter;\n\nvar Painter = __webpack_require__(1288);\n\nregisterPainter('vml', Painter);\n\n/***/ }),\n/* 1287 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar env = __webpack_require__(66);\n\nvar _vector = __webpack_require__(56);\n\nvar applyTransform = _vector.applyTransform;\n\nvar BoundingRect = __webpack_require__(57);\n\nvar colorTool = __webpack_require__(130);\n\nvar textContain = __webpack_require__(108);\n\nvar textHelper = __webpack_require__(326);\n\nvar RectText = __webpack_require__(554);\n\nvar Displayable = __webpack_require__(254);\n\nvar ZImage = __webpack_require__(211);\n\nvar Text = __webpack_require__(178);\n\nvar Path = __webpack_require__(63);\n\nvar PathProxy = __webpack_require__(213);\n\nvar Gradient = __webpack_require__(327);\n\nvar vmlCore = __webpack_require__(630);\n\n// http://www.w3.org/TR/NOTE-VML\n// TODO Use proxy like svg instead of overwrite brush methods\nvar CMD = PathProxy.CMD;\nvar round = Math.round;\nvar sqrt = Math.sqrt;\nvar abs = Math.abs;\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar mathMax = Math.max;\n\nif (!env.canvasSupported) {\n  var comma = ',';\n  var imageTransformPrefix = 'progid:DXImageTransform.Microsoft';\n  var Z = 21600;\n  var Z2 = Z / 2;\n  var ZLEVEL_BASE = 100000;\n  var Z_BASE = 1000;\n\n  var initRootElStyle = function (el) {\n    el.style.cssText = 'position:absolute;left:0;top:0;width:1px;height:1px;';\n    el.coordsize = Z + ',' + Z;\n    el.coordorigin = '0,0';\n  };\n\n  var encodeHtmlAttribute = function (s) {\n    return String(s).replace(/&/g, '&amp;').replace(/\"/g, '&quot;');\n  };\n\n  var rgb2Str = function (r, g, b) {\n    return 'rgb(' + [r, g, b].join(',') + ')';\n  };\n\n  var append = function (parent, child) {\n    if (child && parent && child.parentNode !== parent) {\n      parent.appendChild(child);\n    }\n  };\n\n  var remove = function (parent, child) {\n    if (child && parent && child.parentNode === parent) {\n      parent.removeChild(child);\n    }\n  };\n\n  var getZIndex = function (zlevel, z, z2) {\n    // z 的取值范围为 [0, 1000]\n    return (parseFloat(zlevel) || 0) * ZLEVEL_BASE + (parseFloat(z) || 0) * Z_BASE + z2;\n  };\n\n  var parsePercent = textHelper.parsePercent;\n  /***************************************************\n   * PATH\n   **************************************************/\n\n  var setColorAndOpacity = function (el, color, opacity) {\n    var colorArr = colorTool.parse(color);\n    opacity = +opacity;\n\n    if (isNaN(opacity)) {\n      opacity = 1;\n    }\n\n    if (colorArr) {\n      el.color = rgb2Str(colorArr[0], colorArr[1], colorArr[2]);\n      el.opacity = opacity * colorArr[3];\n    }\n  };\n\n  var getColorAndAlpha = function (color) {\n    var colorArr = colorTool.parse(color);\n    return [rgb2Str(colorArr[0], colorArr[1], colorArr[2]), colorArr[3]];\n  };\n\n  var updateFillNode = function (el, style, zrEl) {\n    // TODO pattern\n    var fill = style.fill;\n\n    if (fill != null) {\n      // Modified from excanvas\n      if (fill instanceof Gradient) {\n        var gradientType;\n        var angle = 0;\n        var focus = [0, 0]; // additional offset\n\n        var shift = 0; // scale factor for offset\n\n        var expansion = 1;\n        var rect = zrEl.getBoundingRect();\n        var rectWidth = rect.width;\n        var rectHeight = rect.height;\n\n        if (fill.type === 'linear') {\n          gradientType = 'gradient';\n          var transform = zrEl.transform;\n          var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n          var p1 = [fill.x2 * rectWidth, fill.y2 * rectHeight];\n\n          if (transform) {\n            applyTransform(p0, p0, transform);\n            applyTransform(p1, p1, transform);\n          }\n\n          var dx = p1[0] - p0[0];\n          var dy = p1[1] - p0[1];\n          angle = Math.atan2(dx, dy) * 180 / Math.PI; // The angle should be a non-negative number.\n\n          if (angle < 0) {\n            angle += 360;\n          } // Very small angles produce an unexpected result because they are\n          // converted to a scientific notation string.\n\n\n          if (angle < 1e-6) {\n            angle = 0;\n          }\n        } else {\n          gradientType = 'gradientradial';\n          var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n          var transform = zrEl.transform;\n          var scale = zrEl.scale;\n          var width = rectWidth;\n          var height = rectHeight;\n          focus = [// Percent in bounding rect\n          (p0[0] - rect.x) / width, (p0[1] - rect.y) / height];\n\n          if (transform) {\n            applyTransform(p0, p0, transform);\n          }\n\n          width /= scale[0] * Z;\n          height /= scale[1] * Z;\n          var dimension = mathMax(width, height);\n          shift = 2 * 0 / dimension;\n          expansion = 2 * fill.r / dimension - shift;\n        } // We need to sort the color stops in ascending order by offset,\n        // otherwise IE won't interpret it correctly.\n\n\n        var stops = fill.colorStops.slice();\n        stops.sort(function (cs1, cs2) {\n          return cs1.offset - cs2.offset;\n        });\n        var length = stops.length; // Color and alpha list of first and last stop\n\n        var colorAndAlphaList = [];\n        var colors = [];\n\n        for (var i = 0; i < length; i++) {\n          var stop = stops[i];\n          var colorAndAlpha = getColorAndAlpha(stop.color);\n          colors.push(stop.offset * expansion + shift + ' ' + colorAndAlpha[0]);\n\n          if (i === 0 || i === length - 1) {\n            colorAndAlphaList.push(colorAndAlpha);\n          }\n        }\n\n        if (length >= 2) {\n          var color1 = colorAndAlphaList[0][0];\n          var color2 = colorAndAlphaList[1][0];\n          var opacity1 = colorAndAlphaList[0][1] * style.opacity;\n          var opacity2 = colorAndAlphaList[1][1] * style.opacity;\n          el.type = gradientType;\n          el.method = 'none';\n          el.focus = '100%';\n          el.angle = angle;\n          el.color = color1;\n          el.color2 = color2;\n          el.colors = colors.join(','); // When colors attribute is used, the meanings of opacity and o:opacity2\n          // are reversed.\n\n          el.opacity = opacity2; // FIXME g_o_:opacity ?\n\n          el.opacity2 = opacity1;\n        }\n\n        if (gradientType === 'radial') {\n          el.focusposition = focus.join(',');\n        }\n      } else {\n        // FIXME Change from Gradient fill to color fill\n        setColorAndOpacity(el, fill, style.opacity);\n      }\n    }\n  };\n\n  var updateStrokeNode = function (el, style) {\n    // if (style.lineJoin != null) {\n    //     el.joinstyle = style.lineJoin;\n    // }\n    // if (style.miterLimit != null) {\n    //     el.miterlimit = style.miterLimit * Z;\n    // }\n    // if (style.lineCap != null) {\n    //     el.endcap = style.lineCap;\n    // }\n    if (style.lineDash) {\n      el.dashstyle = style.lineDash.join(' ');\n    }\n\n    if (style.stroke != null && !(style.stroke instanceof Gradient)) {\n      setColorAndOpacity(el, style.stroke, style.opacity);\n    }\n  };\n\n  var updateFillAndStroke = function (vmlEl, type, style, zrEl) {\n    var isFill = type === 'fill';\n    var el = vmlEl.getElementsByTagName(type)[0]; // Stroke must have lineWidth\n\n    if (style[type] != null && style[type] !== 'none' && (isFill || !isFill && style.lineWidth)) {\n      vmlEl[isFill ? 'filled' : 'stroked'] = 'true'; // FIXME Remove before updating, or set `colors` will throw error\n\n      if (style[type] instanceof Gradient) {\n        remove(vmlEl, el);\n      }\n\n      if (!el) {\n        el = vmlCore.createNode(type);\n      }\n\n      isFill ? updateFillNode(el, style, zrEl) : updateStrokeNode(el, style);\n      append(vmlEl, el);\n    } else {\n      vmlEl[isFill ? 'filled' : 'stroked'] = 'false';\n      remove(vmlEl, el);\n    }\n  };\n\n  var points = [[], [], []];\n\n  var pathDataToString = function (path, m) {\n    var M = CMD.M;\n    var C = CMD.C;\n    var L = CMD.L;\n    var A = CMD.A;\n    var Q = CMD.Q;\n    var str = [];\n    var nPoint;\n    var cmdStr;\n    var cmd;\n    var i;\n    var xi;\n    var yi;\n    var data = path.data;\n    var dataLength = path.len();\n\n    for (i = 0; i < dataLength;) {\n      cmd = data[i++];\n      cmdStr = '';\n      nPoint = 0;\n\n      switch (cmd) {\n        case M:\n          cmdStr = ' m ';\n          nPoint = 1;\n          xi = data[i++];\n          yi = data[i++];\n          points[0][0] = xi;\n          points[0][1] = yi;\n          break;\n\n        case L:\n          cmdStr = ' l ';\n          nPoint = 1;\n          xi = data[i++];\n          yi = data[i++];\n          points[0][0] = xi;\n          points[0][1] = yi;\n          break;\n\n        case Q:\n        case C:\n          cmdStr = ' c ';\n          nPoint = 3;\n          var x1 = data[i++];\n          var y1 = data[i++];\n          var x2 = data[i++];\n          var y2 = data[i++];\n          var x3;\n          var y3;\n\n          if (cmd === Q) {\n            // Convert quadratic to cubic using degree elevation\n            x3 = x2;\n            y3 = y2;\n            x2 = (x2 + 2 * x1) / 3;\n            y2 = (y2 + 2 * y1) / 3;\n            x1 = (xi + 2 * x1) / 3;\n            y1 = (yi + 2 * y1) / 3;\n          } else {\n            x3 = data[i++];\n            y3 = data[i++];\n          }\n\n          points[0][0] = x1;\n          points[0][1] = y1;\n          points[1][0] = x2;\n          points[1][1] = y2;\n          points[2][0] = x3;\n          points[2][1] = y3;\n          xi = x3;\n          yi = y3;\n          break;\n\n        case A:\n          var x = 0;\n          var y = 0;\n          var sx = 1;\n          var sy = 1;\n          var angle = 0;\n\n          if (m) {\n            // Extract SRT from matrix\n            x = m[4];\n            y = m[5];\n            sx = sqrt(m[0] * m[0] + m[1] * m[1]);\n            sy = sqrt(m[2] * m[2] + m[3] * m[3]);\n            angle = Math.atan2(-m[1] / sy, m[0] / sx);\n          }\n\n          var cx = data[i++];\n          var cy = data[i++];\n          var rx = data[i++];\n          var ry = data[i++];\n          var startAngle = data[i++] + angle;\n          var endAngle = data[i++] + startAngle + angle; // FIXME\n          // var psi = data[i++];\n\n          i++;\n          var clockwise = data[i++];\n          var x0 = cx + cos(startAngle) * rx;\n          var y0 = cy + sin(startAngle) * ry;\n          var x1 = cx + cos(endAngle) * rx;\n          var y1 = cy + sin(endAngle) * ry;\n          var type = clockwise ? ' wa ' : ' at ';\n\n          if (Math.abs(x0 - x1) < 1e-4) {\n            // IE won't render arches drawn counter clockwise if x0 == x1.\n            if (Math.abs(endAngle - startAngle) > 1e-2) {\n              // Offset x0 by 1/80 of a pixel. Use something\n              // that can be represented in binary\n              if (clockwise) {\n                x0 += 270 / Z;\n              }\n            } else {\n              // Avoid case draw full circle\n              if (Math.abs(y0 - cy) < 1e-4) {\n                if (clockwise && x0 < cx || !clockwise && x0 > cx) {\n                  y1 -= 270 / Z;\n                } else {\n                  y1 += 270 / Z;\n                }\n              } else if (clockwise && y0 < cy || !clockwise && y0 > cy) {\n                x1 += 270 / Z;\n              } else {\n                x1 -= 270 / Z;\n              }\n            }\n          }\n\n          str.push(type, round(((cx - rx) * sx + x) * Z - Z2), comma, round(((cy - ry) * sy + y) * Z - Z2), comma, round(((cx + rx) * sx + x) * Z - Z2), comma, round(((cy + ry) * sy + y) * Z - Z2), comma, round((x0 * sx + x) * Z - Z2), comma, round((y0 * sy + y) * Z - Z2), comma, round((x1 * sx + x) * Z - Z2), comma, round((y1 * sy + y) * Z - Z2));\n          xi = x1;\n          yi = y1;\n          break;\n\n        case CMD.R:\n          var p0 = points[0];\n          var p1 = points[1]; // x0, y0\n\n          p0[0] = data[i++];\n          p0[1] = data[i++]; // x1, y1\n\n          p1[0] = p0[0] + data[i++];\n          p1[1] = p0[1] + data[i++];\n\n          if (m) {\n            applyTransform(p0, p0, m);\n            applyTransform(p1, p1, m);\n          }\n\n          p0[0] = round(p0[0] * Z - Z2);\n          p1[0] = round(p1[0] * Z - Z2);\n          p0[1] = round(p0[1] * Z - Z2);\n          p1[1] = round(p1[1] * Z - Z2);\n          str.push( // x0, y0\n          ' m ', p0[0], comma, p0[1], // x1, y0\n          ' l ', p1[0], comma, p0[1], // x1, y1\n          ' l ', p1[0], comma, p1[1], // x0, y1\n          ' l ', p0[0], comma, p1[1]);\n          break;\n\n        case CMD.Z:\n          // FIXME Update xi, yi\n          str.push(' x ');\n      }\n\n      if (nPoint > 0) {\n        str.push(cmdStr);\n\n        for (var k = 0; k < nPoint; k++) {\n          var p = points[k];\n          m && applyTransform(p, p, m); // 不 round 会非常慢\n\n          str.push(round(p[0] * Z - Z2), comma, round(p[1] * Z - Z2), k < nPoint - 1 ? comma : '');\n        }\n      }\n    }\n\n    return str.join('');\n  }; // Rewrite the original path method\n\n\n  Path.prototype.brushVML = function (vmlRoot) {\n    var style = this.style;\n    var vmlEl = this._vmlEl;\n\n    if (!vmlEl) {\n      vmlEl = vmlCore.createNode('shape');\n      initRootElStyle(vmlEl);\n      this._vmlEl = vmlEl;\n    }\n\n    updateFillAndStroke(vmlEl, 'fill', style, this);\n    updateFillAndStroke(vmlEl, 'stroke', style, this);\n    var m = this.transform;\n    var needTransform = m != null;\n    var strokeEl = vmlEl.getElementsByTagName('stroke')[0];\n\n    if (strokeEl) {\n      var lineWidth = style.lineWidth; // Get the line scale.\n      // Determinant of this.m_ means how much the area is enlarged by the\n      // transformation. So its square root can be used as a scale factor\n      // for width.\n\n      if (needTransform && !style.strokeNoScale) {\n        var det = m[0] * m[3] - m[1] * m[2];\n        lineWidth *= sqrt(abs(det));\n      }\n\n      strokeEl.weight = lineWidth + 'px';\n    }\n\n    var path = this.path || (this.path = new PathProxy());\n\n    if (this.__dirtyPath) {\n      path.beginPath();\n      path.subPixelOptimize = false;\n      this.buildPath(path, this.shape);\n      path.toStatic();\n      this.__dirtyPath = false;\n    }\n\n    vmlEl.path = pathDataToString(path, this.transform);\n    vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n    append(vmlRoot, vmlEl); // Text\n\n    if (style.text != null) {\n      this.drawRectText(vmlRoot, this.getBoundingRect());\n    } else {\n      this.removeRectText(vmlRoot);\n    }\n  };\n\n  Path.prototype.onRemove = function (vmlRoot) {\n    remove(vmlRoot, this._vmlEl);\n    this.removeRectText(vmlRoot);\n  };\n\n  Path.prototype.onAdd = function (vmlRoot) {\n    append(vmlRoot, this._vmlEl);\n    this.appendRectText(vmlRoot);\n  };\n  /***************************************************\n   * IMAGE\n   **************************************************/\n\n\n  var isImage = function (img) {\n    // FIXME img instanceof Image 如果 img 是一个字符串的时候，IE8 下会报错\n    return typeof img === 'object' && img.tagName && img.tagName.toUpperCase() === 'IMG'; // return img instanceof Image;\n  }; // Rewrite the original path method\n\n\n  ZImage.prototype.brushVML = function (vmlRoot) {\n    var style = this.style;\n    var image = style.image; // Image original width, height\n\n    var ow;\n    var oh;\n\n    if (isImage(image)) {\n      var src = image.src;\n\n      if (src === this._imageSrc) {\n        ow = this._imageWidth;\n        oh = this._imageHeight;\n      } else {\n        var imageRuntimeStyle = image.runtimeStyle;\n        var oldRuntimeWidth = imageRuntimeStyle.width;\n        var oldRuntimeHeight = imageRuntimeStyle.height;\n        imageRuntimeStyle.width = 'auto';\n        imageRuntimeStyle.height = 'auto'; // get the original size\n\n        ow = image.width;\n        oh = image.height; // and remove overides\n\n        imageRuntimeStyle.width = oldRuntimeWidth;\n        imageRuntimeStyle.height = oldRuntimeHeight; // Caching image original width, height and src\n\n        this._imageSrc = src;\n        this._imageWidth = ow;\n        this._imageHeight = oh;\n      }\n\n      image = src;\n    } else {\n      if (image === this._imageSrc) {\n        ow = this._imageWidth;\n        oh = this._imageHeight;\n      }\n    }\n\n    if (!image) {\n      return;\n    }\n\n    var x = style.x || 0;\n    var y = style.y || 0;\n    var dw = style.width;\n    var dh = style.height;\n    var sw = style.sWidth;\n    var sh = style.sHeight;\n    var sx = style.sx || 0;\n    var sy = style.sy || 0;\n    var hasCrop = sw && sh;\n    var vmlEl = this._vmlEl;\n\n    if (!vmlEl) {\n      // FIXME 使用 group 在 left, top 都不是 0 的时候就无法显示了。\n      // vmlEl = vmlCore.createNode('group');\n      vmlEl = vmlCore.doc.createElement('div');\n      initRootElStyle(vmlEl);\n      this._vmlEl = vmlEl;\n    }\n\n    var vmlElStyle = vmlEl.style;\n    var hasRotation = false;\n    var m;\n    var scaleX = 1;\n    var scaleY = 1;\n\n    if (this.transform) {\n      m = this.transform;\n      scaleX = sqrt(m[0] * m[0] + m[1] * m[1]);\n      scaleY = sqrt(m[2] * m[2] + m[3] * m[3]);\n      hasRotation = m[1] || m[2];\n    }\n\n    if (hasRotation) {\n      // If filters are necessary (rotation exists), create them\n      // filters are bog-slow, so only create them if abbsolutely necessary\n      // The following check doesn't account for skews (which don't exist\n      // in the canvas spec (yet) anyway.\n      // From excanvas\n      var p0 = [x, y];\n      var p1 = [x + dw, y];\n      var p2 = [x, y + dh];\n      var p3 = [x + dw, y + dh];\n      applyTransform(p0, p0, m);\n      applyTransform(p1, p1, m);\n      applyTransform(p2, p2, m);\n      applyTransform(p3, p3, m);\n      var maxX = mathMax(p0[0], p1[0], p2[0], p3[0]);\n      var maxY = mathMax(p0[1], p1[1], p2[1], p3[1]);\n      var transformFilter = [];\n      transformFilter.push('M11=', m[0] / scaleX, comma, 'M12=', m[2] / scaleY, comma, 'M21=', m[1] / scaleX, comma, 'M22=', m[3] / scaleY, comma, 'Dx=', round(x * scaleX + m[4]), comma, 'Dy=', round(y * scaleY + m[5]));\n      vmlElStyle.padding = '0 ' + round(maxX) + 'px ' + round(maxY) + 'px 0'; // FIXME DXImageTransform 在 IE11 的兼容模式下不起作用\n\n      vmlElStyle.filter = imageTransformPrefix + '.Matrix(' + transformFilter.join('') + ', SizingMethod=clip)';\n    } else {\n      if (m) {\n        x = x * scaleX + m[4];\n        y = y * scaleY + m[5];\n      }\n\n      vmlElStyle.filter = '';\n      vmlElStyle.left = round(x) + 'px';\n      vmlElStyle.top = round(y) + 'px';\n    }\n\n    var imageEl = this._imageEl;\n    var cropEl = this._cropEl;\n\n    if (!imageEl) {\n      imageEl = vmlCore.doc.createElement('div');\n      this._imageEl = imageEl;\n    }\n\n    var imageELStyle = imageEl.style;\n\n    if (hasCrop) {\n      // Needs know image original width and height\n      if (!(ow && oh)) {\n        var tmpImage = new Image();\n        var self = this;\n\n        tmpImage.onload = function () {\n          tmpImage.onload = null;\n          ow = tmpImage.width;\n          oh = tmpImage.height; // Adjust image width and height to fit the ratio destinationSize / sourceSize\n\n          imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n          imageELStyle.height = round(scaleY * oh * dh / sh) + 'px'; // Caching image original width, height and src\n\n          self._imageWidth = ow;\n          self._imageHeight = oh;\n          self._imageSrc = image;\n        };\n\n        tmpImage.src = image;\n      } else {\n        imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n        imageELStyle.height = round(scaleY * oh * dh / sh) + 'px';\n      }\n\n      if (!cropEl) {\n        cropEl = vmlCore.doc.createElement('div');\n        cropEl.style.overflow = 'hidden';\n        this._cropEl = cropEl;\n      }\n\n      var cropElStyle = cropEl.style;\n      cropElStyle.width = round((dw + sx * dw / sw) * scaleX);\n      cropElStyle.height = round((dh + sy * dh / sh) * scaleY);\n      cropElStyle.filter = imageTransformPrefix + '.Matrix(Dx=' + -sx * dw / sw * scaleX + ',Dy=' + -sy * dh / sh * scaleY + ')';\n\n      if (!cropEl.parentNode) {\n        vmlEl.appendChild(cropEl);\n      }\n\n      if (imageEl.parentNode !== cropEl) {\n        cropEl.appendChild(imageEl);\n      }\n    } else {\n      imageELStyle.width = round(scaleX * dw) + 'px';\n      imageELStyle.height = round(scaleY * dh) + 'px';\n      vmlEl.appendChild(imageEl);\n\n      if (cropEl && cropEl.parentNode) {\n        vmlEl.removeChild(cropEl);\n        this._cropEl = null;\n      }\n    }\n\n    var filterStr = '';\n    var alpha = style.opacity;\n\n    if (alpha < 1) {\n      filterStr += '.Alpha(opacity=' + round(alpha * 100) + ') ';\n    }\n\n    filterStr += imageTransformPrefix + '.AlphaImageLoader(src=' + image + ', SizingMethod=scale)';\n    imageELStyle.filter = filterStr;\n    vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n    append(vmlRoot, vmlEl); // Text\n\n    if (style.text != null) {\n      this.drawRectText(vmlRoot, this.getBoundingRect());\n    }\n  };\n\n  ZImage.prototype.onRemove = function (vmlRoot) {\n    remove(vmlRoot, this._vmlEl);\n    this._vmlEl = null;\n    this._cropEl = null;\n    this._imageEl = null;\n    this.removeRectText(vmlRoot);\n  };\n\n  ZImage.prototype.onAdd = function (vmlRoot) {\n    append(vmlRoot, this._vmlEl);\n    this.appendRectText(vmlRoot);\n  };\n  /***************************************************\n   * TEXT\n   **************************************************/\n\n\n  var DEFAULT_STYLE_NORMAL = 'normal';\n  var fontStyleCache = {};\n  var fontStyleCacheCount = 0;\n  var MAX_FONT_CACHE_SIZE = 100;\n  var fontEl = document.createElement('div');\n\n  var getFontStyle = function (fontString) {\n    var fontStyle = fontStyleCache[fontString];\n\n    if (!fontStyle) {\n      // Clear cache\n      if (fontStyleCacheCount > MAX_FONT_CACHE_SIZE) {\n        fontStyleCacheCount = 0;\n        fontStyleCache = {};\n      }\n\n      var style = fontEl.style;\n      var fontFamily;\n\n      try {\n        style.font = fontString;\n        fontFamily = style.fontFamily.split(',')[0];\n      } catch (e) {}\n\n      fontStyle = {\n        style: style.fontStyle || DEFAULT_STYLE_NORMAL,\n        variant: style.fontVariant || DEFAULT_STYLE_NORMAL,\n        weight: style.fontWeight || DEFAULT_STYLE_NORMAL,\n        size: parseFloat(style.fontSize || 12) | 0,\n        family: fontFamily || 'Microsoft YaHei'\n      };\n      fontStyleCache[fontString] = fontStyle;\n      fontStyleCacheCount++;\n    }\n\n    return fontStyle;\n  };\n\n  var textMeasureEl; // Overwrite measure text method\n\n  textContain.$override('measureText', function (text, textFont) {\n    var doc = vmlCore.doc;\n\n    if (!textMeasureEl) {\n      textMeasureEl = doc.createElement('div');\n      textMeasureEl.style.cssText = 'position:absolute;top:-20000px;left:0;' + 'padding:0;margin:0;border:none;white-space:pre;';\n      vmlCore.doc.body.appendChild(textMeasureEl);\n    }\n\n    try {\n      textMeasureEl.style.font = textFont;\n    } catch (ex) {// Ignore failures to set to invalid font.\n    }\n\n    textMeasureEl.innerHTML = ''; // Don't use innerHTML or innerText because they allow markup/whitespace.\n\n    textMeasureEl.appendChild(doc.createTextNode(text));\n    return {\n      width: textMeasureEl.offsetWidth\n    };\n  });\n  var tmpRect = new BoundingRect();\n\n  var drawRectText = function (vmlRoot, rect, textRect, fromTextEl) {\n    var style = this.style; // Optimize, avoid normalize every time.\n\n    this.__dirty && textHelper.normalizeTextStyle(style, true);\n    var text = style.text; // Convert to string\n\n    text != null && (text += '');\n\n    if (!text) {\n      return;\n    } // Convert rich text to plain text. Rich text is not supported in\n    // IE8-, but tags in rich text template will be removed.\n\n\n    if (style.rich) {\n      var contentBlock = textContain.parseRichText(text, style);\n      text = [];\n\n      for (var i = 0; i < contentBlock.lines.length; i++) {\n        var tokens = contentBlock.lines[i].tokens;\n        var textLine = [];\n\n        for (var j = 0; j < tokens.length; j++) {\n          textLine.push(tokens[j].text);\n        }\n\n        text.push(textLine.join(''));\n      }\n\n      text = text.join('\\n');\n    }\n\n    var x;\n    var y;\n    var align = style.textAlign;\n    var verticalAlign = style.textVerticalAlign;\n    var fontStyle = getFontStyle(style.font); // FIXME encodeHtmlAttribute ?\n\n    var font = fontStyle.style + ' ' + fontStyle.variant + ' ' + fontStyle.weight + ' ' + fontStyle.size + 'px \"' + fontStyle.family + '\"';\n    textRect = textRect || textContain.getBoundingRect(text, font, align, verticalAlign, style.textPadding, style.textLineHeight); // Transform rect to view space\n\n    var m = this.transform; // Ignore transform for text in other element\n\n    if (m && !fromTextEl) {\n      tmpRect.copy(rect);\n      tmpRect.applyTransform(m);\n      rect = tmpRect;\n    }\n\n    if (!fromTextEl) {\n      var textPosition = style.textPosition; // Text position represented by coord\n\n      if (textPosition instanceof Array) {\n        x = rect.x + parsePercent(textPosition[0], rect.width);\n        y = rect.y + parsePercent(textPosition[1], rect.height);\n        align = align || 'left';\n      } else {\n        var res = this.calculateTextPosition ? this.calculateTextPosition({}, style, rect) : textContain.calculateTextPosition({}, style, rect);\n        x = res.x;\n        y = res.y; // Default align and baseline when has textPosition\n\n        align = align || res.textAlign;\n        verticalAlign = verticalAlign || res.textVerticalAlign;\n      }\n    } else {\n      x = rect.x;\n      y = rect.y;\n    }\n\n    x = textContain.adjustTextX(x, textRect.width, align);\n    y = textContain.adjustTextY(y, textRect.height, verticalAlign); // Force baseline 'middle'\n\n    y += textRect.height / 2; // var fontSize = fontStyle.size;\n    // 1.75 is an arbitrary number, as there is no info about the text baseline\n    // switch (baseline) {\n    // case 'hanging':\n    // case 'top':\n    //     y += fontSize / 1.75;\n    //     break;\n    //     case 'middle':\n    //         break;\n    //     default:\n    //     // case null:\n    //     // case 'alphabetic':\n    //     // case 'ideographic':\n    //     // case 'bottom':\n    //         y -= fontSize / 2.25;\n    //         break;\n    // }\n    // switch (align) {\n    //     case 'left':\n    //         break;\n    //     case 'center':\n    //         x -= textRect.width / 2;\n    //         break;\n    //     case 'right':\n    //         x -= textRect.width;\n    //         break;\n    // case 'end':\n    // align = elementStyle.direction == 'ltr' ? 'right' : 'left';\n    // break;\n    // case 'start':\n    // align = elementStyle.direction == 'rtl' ? 'right' : 'left';\n    // break;\n    // default:\n    //     align = 'left';\n    // }\n\n    var createNode = vmlCore.createNode;\n    var textVmlEl = this._textVmlEl;\n    var pathEl;\n    var textPathEl;\n    var skewEl;\n\n    if (!textVmlEl) {\n      textVmlEl = createNode('line');\n      pathEl = createNode('path');\n      textPathEl = createNode('textpath');\n      skewEl = createNode('skew'); // FIXME Why here is not cammel case\n      // Align 'center' seems wrong\n\n      textPathEl.style['v-text-align'] = 'left';\n      initRootElStyle(textVmlEl);\n      pathEl.textpathok = true;\n      textPathEl.on = true;\n      textVmlEl.from = '0 0';\n      textVmlEl.to = '1000 0.05';\n      append(textVmlEl, skewEl);\n      append(textVmlEl, pathEl);\n      append(textVmlEl, textPathEl);\n      this._textVmlEl = textVmlEl;\n    } else {\n      // 这里是在前面 appendChild 保证顺序的前提下\n      skewEl = textVmlEl.firstChild;\n      pathEl = skewEl.nextSibling;\n      textPathEl = pathEl.nextSibling;\n    }\n\n    var coords = [x, y];\n    var textVmlElStyle = textVmlEl.style; // Ignore transform for text in other element\n\n    if (m && fromTextEl) {\n      applyTransform(coords, coords, m);\n      skewEl.on = true;\n      skewEl.matrix = m[0].toFixed(3) + comma + m[2].toFixed(3) + comma + m[1].toFixed(3) + comma + m[3].toFixed(3) + ',0,0'; // Text position\n\n      skewEl.offset = (round(coords[0]) || 0) + ',' + (round(coords[1]) || 0); // Left top point as origin\n\n      skewEl.origin = '0 0';\n      textVmlElStyle.left = '0px';\n      textVmlElStyle.top = '0px';\n    } else {\n      skewEl.on = false;\n      textVmlElStyle.left = round(x) + 'px';\n      textVmlElStyle.top = round(y) + 'px';\n    }\n\n    textPathEl.string = encodeHtmlAttribute(text); // TODO\n\n    try {\n      textPathEl.style.font = font;\n    } // Error font format\n    catch (e) {}\n\n    updateFillAndStroke(textVmlEl, 'fill', {\n      fill: style.textFill,\n      opacity: style.opacity\n    }, this);\n    updateFillAndStroke(textVmlEl, 'stroke', {\n      stroke: style.textStroke,\n      opacity: style.opacity,\n      lineDash: style.lineDash || null // style.lineDash can be `false`.\n\n    }, this);\n    textVmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Attached to root\n\n    append(vmlRoot, textVmlEl);\n  };\n\n  var removeRectText = function (vmlRoot) {\n    remove(vmlRoot, this._textVmlEl);\n    this._textVmlEl = null;\n  };\n\n  var appendRectText = function (vmlRoot) {\n    append(vmlRoot, this._textVmlEl);\n  };\n\n  var list = [RectText, Displayable, ZImage, Path, Text]; // In case Displayable has been mixed in RectText\n\n  for (var i = 0; i < list.length; i++) {\n    var proto = list[i].prototype;\n    proto.drawRectText = drawRectText;\n    proto.removeRectText = removeRectText;\n    proto.appendRectText = appendRectText;\n  }\n\n  Text.prototype.brushVML = function (vmlRoot) {\n    var style = this.style;\n\n    if (style.text != null) {\n      this.drawRectText(vmlRoot, {\n        x: style.x || 0,\n        y: style.y || 0,\n        width: 0,\n        height: 0\n      }, this.getBoundingRect(), true);\n    } else {\n      this.removeRectText(vmlRoot);\n    }\n  };\n\n  Text.prototype.onRemove = function (vmlRoot) {\n    this.removeRectText(vmlRoot);\n  };\n\n  Text.prototype.onAdd = function (vmlRoot) {\n    this.appendRectText(vmlRoot);\n  };\n}\n\n/***/ }),\n/* 1288 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar logError = __webpack_require__(253);\n\nvar vmlCore = __webpack_require__(630);\n\nvar _util = __webpack_require__(2);\n\nvar each = _util.each;\n\n/**\n * VML Painter.\n *\n * @module zrender/vml/Painter\n */\nfunction parseInt10(val) {\n  return parseInt(val, 10);\n}\n/**\n * @alias module:zrender/vml/Painter\n */\n\n\nfunction VMLPainter(root, storage) {\n  vmlCore.initVML();\n  this.root = root;\n  this.storage = storage;\n  var vmlViewport = document.createElement('div');\n  var vmlRoot = document.createElement('div');\n  vmlViewport.style.cssText = 'display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;';\n  vmlRoot.style.cssText = 'position:absolute;left:0;top:0;';\n  root.appendChild(vmlViewport);\n  this._vmlRoot = vmlRoot;\n  this._vmlViewport = vmlViewport;\n  this.resize(); // Modify storage\n\n  var oldDelFromStorage = storage.delFromStorage;\n  var oldAddToStorage = storage.addToStorage;\n\n  storage.delFromStorage = function (el) {\n    oldDelFromStorage.call(storage, el);\n\n    if (el) {\n      el.onRemove && el.onRemove(vmlRoot);\n    }\n  };\n\n  storage.addToStorage = function (el) {\n    // Displayable already has a vml node\n    el.onAdd && el.onAdd(vmlRoot);\n    oldAddToStorage.call(storage, el);\n  };\n\n  this._firstPaint = true;\n}\n\nVMLPainter.prototype = {\n  constructor: VMLPainter,\n  getType: function () {\n    return 'vml';\n  },\n\n  /**\n   * @return {HTMLDivElement}\n   */\n  getViewportRoot: function () {\n    return this._vmlViewport;\n  },\n  getViewportRootOffset: function () {\n    var viewportRoot = this.getViewportRoot();\n\n    if (viewportRoot) {\n      return {\n        offsetLeft: viewportRoot.offsetLeft || 0,\n        offsetTop: viewportRoot.offsetTop || 0\n      };\n    }\n  },\n\n  /**\n   * 刷新\n   */\n  refresh: function () {\n    var list = this.storage.getDisplayList(true, true);\n\n    this._paintList(list);\n  },\n  _paintList: function (list) {\n    var vmlRoot = this._vmlRoot;\n\n    for (var i = 0; i < list.length; i++) {\n      var el = list[i];\n\n      if (el.invisible || el.ignore) {\n        if (!el.__alreadyNotVisible) {\n          el.onRemove(vmlRoot);\n        } // Set as already invisible\n\n\n        el.__alreadyNotVisible = true;\n      } else {\n        if (el.__alreadyNotVisible) {\n          el.onAdd(vmlRoot);\n        }\n\n        el.__alreadyNotVisible = false;\n\n        if (el.__dirty) {\n          el.beforeBrush && el.beforeBrush();\n          (el.brushVML || el.brush).call(el, vmlRoot);\n          el.afterBrush && el.afterBrush();\n        }\n      }\n\n      el.__dirty = false;\n    }\n\n    if (this._firstPaint) {\n      // Detached from document at first time\n      // to avoid page refreshing too many times\n      // FIXME 如果每次都先 removeChild 可能会导致一些填充和描边的效果改变\n      this._vmlViewport.appendChild(vmlRoot);\n\n      this._firstPaint = false;\n    }\n  },\n  resize: function (width, height) {\n    var width = width == null ? this._getWidth() : width;\n    var height = height == null ? this._getHeight() : height;\n\n    if (this._width !== width || this._height !== height) {\n      this._width = width;\n      this._height = height;\n      var vmlViewportStyle = this._vmlViewport.style;\n      vmlViewportStyle.width = width + 'px';\n      vmlViewportStyle.height = height + 'px';\n    }\n  },\n  dispose: function () {\n    this.root.innerHTML = '';\n    this._vmlRoot = this._vmlViewport = this.storage = null;\n  },\n  getWidth: function () {\n    return this._width;\n  },\n  getHeight: function () {\n    return this._height;\n  },\n  clear: function () {\n    if (this._vmlViewport) {\n      this.root.removeChild(this._vmlViewport);\n    }\n  },\n  _getWidth: function () {\n    var root = this.root;\n    var stl = root.currentStyle;\n    return (root.clientWidth || parseInt10(stl.width)) - parseInt10(stl.paddingLeft) - parseInt10(stl.paddingRight) | 0;\n  },\n  _getHeight: function () {\n    var root = this.root;\n    var stl = root.currentStyle;\n    return (root.clientHeight || parseInt10(stl.height)) - parseInt10(stl.paddingTop) - parseInt10(stl.paddingBottom) | 0;\n  }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n  return function () {\n    logError('In IE8.0 VML mode painter not support method \"' + method + '\"');\n  };\n} // Unsupported methods\n\n\neach(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage'], function (name) {\n  VMLPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = VMLPainter;\nmodule.exports = _default;\n\n/***/ }),\n/* 1289 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(431);\n\nvar _zrender = __webpack_require__(322);\n\nvar registerPainter = _zrender.registerPainter;\n\nvar Painter = __webpack_require__(1290);\n\nregisterPainter('svg', Painter);\n\n/***/ }),\n/* 1290 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _core = __webpack_require__(432);\n\nvar createElement = _core.createElement;\n\nvar util = __webpack_require__(2);\n\nvar logError = __webpack_require__(253);\n\nvar Path = __webpack_require__(63);\n\nvar ZImage = __webpack_require__(211);\n\nvar ZText = __webpack_require__(178);\n\nvar arrayDiff = __webpack_require__(1291);\n\nvar GradientManager = __webpack_require__(1292);\n\nvar ClippathManager = __webpack_require__(1293);\n\nvar ShadowManager = __webpack_require__(1294);\n\nvar _graphic = __webpack_require__(431);\n\nvar svgPath = _graphic.path;\nvar svgImage = _graphic.image;\nvar svgText = _graphic.text;\n\n/**\n * SVG Painter\n * @module zrender/svg/Painter\n */\nfunction parseInt10(val) {\n  return parseInt(val, 10);\n}\n\nfunction getSvgProxy(el) {\n  if (el instanceof Path) {\n    return svgPath;\n  } else if (el instanceof ZImage) {\n    return svgImage;\n  } else if (el instanceof ZText) {\n    return svgText;\n  } else {\n    return svgPath;\n  }\n}\n\nfunction checkParentAvailable(parent, child) {\n  return child && parent && child.parentNode !== parent;\n}\n\nfunction insertAfter(parent, child, prevSibling) {\n  if (checkParentAvailable(parent, child) && prevSibling) {\n    var nextSibling = prevSibling.nextSibling;\n    nextSibling ? parent.insertBefore(child, nextSibling) : parent.appendChild(child);\n  }\n}\n\nfunction prepend(parent, child) {\n  if (checkParentAvailable(parent, child)) {\n    var firstChild = parent.firstChild;\n    firstChild ? parent.insertBefore(child, firstChild) : parent.appendChild(child);\n  }\n} // function append(parent, child) {\n//     if (checkParentAvailable(parent, child)) {\n//         parent.appendChild(child);\n//     }\n// }\n\n\nfunction remove(parent, child) {\n  if (child && parent && child.parentNode === parent) {\n    parent.removeChild(child);\n  }\n}\n\nfunction getTextSvgElement(displayable) {\n  return displayable.__textSvgEl;\n}\n\nfunction getSvgElement(displayable) {\n  return displayable.__svgEl;\n}\n/**\n * @alias module:zrender/svg/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar SVGPainter = function (root, storage, opts, zrId) {\n  this.root = root;\n  this.storage = storage;\n  this._opts = opts = util.extend({}, opts || {});\n  var svgDom = createElement('svg');\n  svgDom.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n  svgDom.setAttribute('version', '1.1');\n  svgDom.setAttribute('baseProfile', 'full');\n  svgDom.style.cssText = 'user-select:none;position:absolute;left:0;top:0;';\n  var bgRoot = createElement('g');\n  svgDom.appendChild(bgRoot);\n  var svgRoot = createElement('g');\n  svgDom.appendChild(svgRoot);\n  this.gradientManager = new GradientManager(zrId, svgRoot);\n  this.clipPathManager = new ClippathManager(zrId, svgRoot);\n  this.shadowManager = new ShadowManager(zrId, svgRoot);\n  var viewport = document.createElement('div');\n  viewport.style.cssText = 'overflow:hidden;position:relative';\n  this._svgDom = svgDom;\n  this._svgRoot = svgRoot;\n  this._backgroundRoot = bgRoot;\n  this._viewport = viewport;\n  root.appendChild(viewport);\n  viewport.appendChild(svgDom);\n  this.resize(opts.width, opts.height);\n  this._visibleList = [];\n};\n\nSVGPainter.prototype = {\n  constructor: SVGPainter,\n  getType: function () {\n    return 'svg';\n  },\n  getViewportRoot: function () {\n    return this._viewport;\n  },\n  getSvgDom: function () {\n    return this._svgDom;\n  },\n  getSvgRoot: function () {\n    return this._svgRoot;\n  },\n  getViewportRootOffset: function () {\n    var viewportRoot = this.getViewportRoot();\n\n    if (viewportRoot) {\n      return {\n        offsetLeft: viewportRoot.offsetLeft || 0,\n        offsetTop: viewportRoot.offsetTop || 0\n      };\n    }\n  },\n  refresh: function () {\n    var list = this.storage.getDisplayList(true);\n\n    this._paintList(list);\n  },\n  setBackgroundColor: function (backgroundColor) {\n    // TODO gradient\n    // Insert a bg rect instead of setting background to viewport.\n    // Otherwise, the exported SVG don't have background.\n    if (this._backgroundRoot && this._backgroundNode) {\n      this._backgroundRoot.removeChild(this._backgroundNode);\n    }\n\n    var bgNode = createElement('rect');\n    bgNode.setAttribute('width', this.getWidth());\n    bgNode.setAttribute('height', this.getHeight());\n    bgNode.setAttribute('x', 0);\n    bgNode.setAttribute('y', 0);\n    bgNode.setAttribute('id', 0);\n    bgNode.style.fill = backgroundColor;\n\n    this._backgroundRoot.appendChild(bgNode);\n\n    this._backgroundNode = bgNode;\n  },\n  _paintList: function (list) {\n    this.gradientManager.markAllUnused();\n    this.clipPathManager.markAllUnused();\n    this.shadowManager.markAllUnused();\n    var svgRoot = this._svgRoot;\n    var visibleList = this._visibleList;\n    var listLen = list.length;\n    var newVisibleList = [];\n    var i;\n\n    for (i = 0; i < listLen; i++) {\n      var displayable = list[i];\n      var svgProxy = getSvgProxy(displayable);\n      var svgElement = getSvgElement(displayable) || getTextSvgElement(displayable);\n\n      if (!displayable.invisible) {\n        if (displayable.__dirty) {\n          svgProxy && svgProxy.brush(displayable); // Update clipPath\n\n          this.clipPathManager.update(displayable); // Update gradient and shadow\n\n          if (displayable.style) {\n            this.gradientManager.update(displayable.style.fill);\n            this.gradientManager.update(displayable.style.stroke);\n            this.shadowManager.update(svgElement, displayable);\n          }\n\n          displayable.__dirty = false;\n        }\n\n        newVisibleList.push(displayable);\n      }\n    }\n\n    var diff = arrayDiff(visibleList, newVisibleList);\n    var prevSvgElement; // First do remove, in case element moved to the head and do remove\n    // after add\n\n    for (i = 0; i < diff.length; i++) {\n      var item = diff[i];\n\n      if (item.removed) {\n        for (var k = 0; k < item.count; k++) {\n          var displayable = visibleList[item.indices[k]];\n          var svgElement = getSvgElement(displayable);\n          var textSvgElement = getTextSvgElement(displayable);\n          remove(svgRoot, svgElement);\n          remove(svgRoot, textSvgElement);\n        }\n      }\n    }\n\n    for (i = 0; i < diff.length; i++) {\n      var item = diff[i];\n\n      if (item.added) {\n        for (var k = 0; k < item.count; k++) {\n          var displayable = newVisibleList[item.indices[k]];\n          var svgElement = getSvgElement(displayable);\n          var textSvgElement = getTextSvgElement(displayable);\n          prevSvgElement ? insertAfter(svgRoot, svgElement, prevSvgElement) : prepend(svgRoot, svgElement);\n\n          if (svgElement) {\n            insertAfter(svgRoot, textSvgElement, svgElement);\n          } else if (prevSvgElement) {\n            insertAfter(svgRoot, textSvgElement, prevSvgElement);\n          } else {\n            prepend(svgRoot, textSvgElement);\n          } // Insert text\n\n\n          insertAfter(svgRoot, textSvgElement, svgElement);\n          prevSvgElement = textSvgElement || svgElement || prevSvgElement; // zrender.Text only create textSvgElement.\n\n          this.gradientManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n          this.shadowManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n          this.clipPathManager.markUsed(displayable);\n        }\n      } else if (!item.removed) {\n        for (var k = 0; k < item.count; k++) {\n          var displayable = newVisibleList[item.indices[k]];\n          var svgElement = getSvgElement(displayable);\n          var textSvgElement = getTextSvgElement(displayable);\n          var svgElement = getSvgElement(displayable);\n          var textSvgElement = getTextSvgElement(displayable);\n          this.gradientManager.markUsed(displayable);\n          this.gradientManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n          this.shadowManager.markUsed(displayable);\n          this.shadowManager.addWithoutUpdate(svgElement || textSvgElement, displayable);\n          this.clipPathManager.markUsed(displayable);\n\n          if (textSvgElement) {\n            // Insert text.\n            insertAfter(svgRoot, textSvgElement, svgElement);\n          }\n\n          prevSvgElement = svgElement || textSvgElement || prevSvgElement;\n        }\n      }\n    }\n\n    this.gradientManager.removeUnused();\n    this.clipPathManager.removeUnused();\n    this.shadowManager.removeUnused();\n    this._visibleList = newVisibleList;\n  },\n  _getDefs: function (isForceCreating) {\n    var svgRoot = this._svgDom;\n    var defs = svgRoot.getElementsByTagName('defs');\n\n    if (defs.length === 0) {\n      // Not exist\n      if (isForceCreating) {\n        var defs = svgRoot.insertBefore(createElement('defs'), // Create new tag\n        svgRoot.firstChild // Insert in the front of svg\n        );\n\n        if (!defs.contains) {\n          // IE doesn't support contains method\n          defs.contains = function (el) {\n            var children = defs.children;\n\n            if (!children) {\n              return false;\n            }\n\n            for (var i = children.length - 1; i >= 0; --i) {\n              if (children[i] === el) {\n                return true;\n              }\n            }\n\n            return false;\n          };\n        }\n\n        return defs;\n      } else {\n        return null;\n      }\n    } else {\n      return defs[0];\n    }\n  },\n  resize: function (width, height) {\n    var viewport = this._viewport; // FIXME Why ?\n\n    viewport.style.display = 'none'; // Save input w/h\n\n    var opts = this._opts;\n    width != null && (opts.width = width);\n    height != null && (opts.height = height);\n    width = this._getSize(0);\n    height = this._getSize(1);\n    viewport.style.display = '';\n\n    if (this._width !== width || this._height !== height) {\n      this._width = width;\n      this._height = height;\n      var viewportStyle = viewport.style;\n      viewportStyle.width = width + 'px';\n      viewportStyle.height = height + 'px';\n      var svgRoot = this._svgDom; // Set width by 'svgRoot.width = width' is invalid\n\n      svgRoot.setAttribute('width', width);\n      svgRoot.setAttribute('height', height);\n    }\n\n    if (this._backgroundNode) {\n      this._backgroundNode.setAttribute('width', width);\n\n      this._backgroundNode.setAttribute('height', height);\n    }\n  },\n\n  /**\n   * 获取绘图区域宽度\n   */\n  getWidth: function () {\n    return this._width;\n  },\n\n  /**\n   * 获取绘图区域高度\n   */\n  getHeight: function () {\n    return this._height;\n  },\n  _getSize: function (whIdx) {\n    var opts = this._opts;\n    var wh = ['width', 'height'][whIdx];\n    var cwh = ['clientWidth', 'clientHeight'][whIdx];\n    var plt = ['paddingLeft', 'paddingTop'][whIdx];\n    var prb = ['paddingRight', 'paddingBottom'][whIdx];\n\n    if (opts[wh] != null && opts[wh] !== 'auto') {\n      return parseFloat(opts[wh]);\n    }\n\n    var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n    var stl = document.defaultView.getComputedStyle(root);\n    return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n  },\n  dispose: function () {\n    this.root.innerHTML = '';\n    this._svgRoot = this._backgroundRoot = this._svgDom = this._backgroundNode = this._viewport = this.storage = null;\n  },\n  clear: function () {\n    if (this._viewport) {\n      this.root.removeChild(this._viewport);\n    }\n  },\n  toDataURL: function () {\n    this.refresh();\n    var html = encodeURIComponent(this._svgDom.outerHTML.replace(/></g, '>\\n\\r<'));\n    return 'data:image/svg+xml;charset=UTF-8,' + html;\n  }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n  return function () {\n    logError('In SVG mode painter not support method \"' + method + '\"');\n  };\n} // Unsuppoted methods\n\n\nutil.each(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'pathToImage'], function (name) {\n  SVGPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = SVGPainter;\nmodule.exports = _default;\n\n/***/ }),\n/* 1291 */\n/***/ (function(module, exports) {\n\n// Myers' Diff Algorithm\n// Modified from https://github.com/kpdecker/jsdiff/blob/master/src/diff/base.js\nfunction Diff() {}\n\nDiff.prototype = {\n  diff: function (oldArr, newArr, equals) {\n    if (!equals) {\n      equals = function (a, b) {\n        return a === b;\n      };\n    }\n\n    this.equals = equals;\n    var self = this;\n    oldArr = oldArr.slice();\n    newArr = newArr.slice(); // Allow subclasses to massage the input prior to running\n\n    var newLen = newArr.length;\n    var oldLen = oldArr.length;\n    var editLength = 1;\n    var maxEditLength = newLen + oldLen;\n    var bestPath = [{\n      newPos: -1,\n      components: []\n    }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n    var oldPos = this.extractCommon(bestPath[0], newArr, oldArr, 0);\n\n    if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n      var indices = [];\n\n      for (var i = 0; i < newArr.length; i++) {\n        indices.push(i);\n      } // Identity per the equality and tokenizer\n\n\n      return [{\n        indices: indices,\n        count: newArr.length\n      }];\n    } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n    function execEditLength() {\n      for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n        var basePath;\n        var addPath = bestPath[diagonalPath - 1];\n        var removePath = bestPath[diagonalPath + 1];\n        var oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n        if (addPath) {\n          // No one else is going to attempt to use this value, clear it\n          bestPath[diagonalPath - 1] = undefined;\n        }\n\n        var canAdd = addPath && addPath.newPos + 1 < newLen;\n        var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;\n\n        if (!canAdd && !canRemove) {\n          // If this path is a terminal then prune\n          bestPath[diagonalPath] = undefined;\n          continue;\n        } // Select the diagonal that we want to branch from. We select the prior\n        // path whose position in the new string is the farthest from the origin\n        // and does not pass the bounds of the diff graph\n\n\n        if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n          basePath = clonePath(removePath);\n          self.pushComponent(basePath.components, undefined, true);\n        } else {\n          basePath = addPath; // No need to clone, we've pulled it from the list\n\n          basePath.newPos++;\n          self.pushComponent(basePath.components, true, undefined);\n        }\n\n        oldPos = self.extractCommon(basePath, newArr, oldArr, diagonalPath); // If we have hit the end of both strings, then we are done\n\n        if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n          return buildValues(self, basePath.components, newArr, oldArr);\n        } else {\n          // Otherwise track this path as a potential candidate and continue.\n          bestPath[diagonalPath] = basePath;\n        }\n      }\n\n      editLength++;\n    }\n\n    while (editLength <= maxEditLength) {\n      var ret = execEditLength();\n\n      if (ret) {\n        return ret;\n      }\n    }\n  },\n  pushComponent: function (components, added, removed) {\n    var last = components[components.length - 1];\n\n    if (last && last.added === added && last.removed === removed) {\n      // We need to clone here as the component clone operation is just\n      // as shallow array clone\n      components[components.length - 1] = {\n        count: last.count + 1,\n        added: added,\n        removed: removed\n      };\n    } else {\n      components.push({\n        count: 1,\n        added: added,\n        removed: removed\n      });\n    }\n  },\n  extractCommon: function (basePath, newArr, oldArr, diagonalPath) {\n    var newLen = newArr.length;\n    var oldLen = oldArr.length;\n    var newPos = basePath.newPos;\n    var oldPos = newPos - diagonalPath;\n    var commonCount = 0;\n\n    while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newArr[newPos + 1], oldArr[oldPos + 1])) {\n      newPos++;\n      oldPos++;\n      commonCount++;\n    }\n\n    if (commonCount) {\n      basePath.components.push({\n        count: commonCount\n      });\n    }\n\n    basePath.newPos = newPos;\n    return oldPos;\n  },\n  tokenize: function (value) {\n    return value.slice();\n  },\n  join: function (value) {\n    return value.slice();\n  }\n};\n\nfunction buildValues(diff, components, newArr, oldArr) {\n  var componentPos = 0;\n  var componentLen = components.length;\n  var newPos = 0;\n  var oldPos = 0;\n\n  for (; componentPos < componentLen; componentPos++) {\n    var component = components[componentPos];\n\n    if (!component.removed) {\n      var indices = [];\n\n      for (var i = newPos; i < newPos + component.count; i++) {\n        indices.push(i);\n      }\n\n      component.indices = indices;\n      newPos += component.count; // Common case\n\n      if (!component.added) {\n        oldPos += component.count;\n      }\n    } else {\n      var indices = [];\n\n      for (var i = oldPos; i < oldPos + component.count; i++) {\n        indices.push(i);\n      }\n\n      component.indices = indices;\n      oldPos += component.count;\n    }\n  }\n\n  return components;\n}\n\nfunction clonePath(path) {\n  return {\n    newPos: path.newPos,\n    components: path.components.slice(0)\n  };\n}\n\nvar arrayDiff = new Diff();\n\nfunction _default(oldArr, newArr, callback) {\n  return arrayDiff.diff(oldArr, newArr, callback);\n}\n\nmodule.exports = _default;\n\n/***/ }),\n/* 1292 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Definable = __webpack_require__(433);\n\nvar zrUtil = __webpack_require__(2);\n\nvar logError = __webpack_require__(253);\n\nvar colorTool = __webpack_require__(130);\n\n/**\n * @file Manages SVG gradient elements.\n * @author Zhang Wenli\n */\n\n/**\n * Manages SVG gradient elements.\n *\n * @class\n * @extends Definable\n * @param   {number}     zrId    zrender instance id\n * @param   {SVGElement} svgRoot root of SVG document\n */\nfunction GradientManager(zrId, svgRoot) {\n  Definable.call(this, zrId, svgRoot, ['linearGradient', 'radialGradient'], '__gradient_in_use__');\n}\n\nzrUtil.inherits(GradientManager, Definable);\n/**\n * Create new gradient DOM for fill or stroke if not exist,\n * but will not update gradient if exists.\n *\n * @param {SvgElement}  svgElement   SVG element to paint\n * @param {Displayable} displayable  zrender displayable element\n */\n\nGradientManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\n  if (displayable && displayable.style) {\n    var that = this;\n    zrUtil.each(['fill', 'stroke'], function (fillOrStroke) {\n      if (displayable.style[fillOrStroke] && (displayable.style[fillOrStroke].type === 'linear' || displayable.style[fillOrStroke].type === 'radial')) {\n        var gradient = displayable.style[fillOrStroke];\n        var defs = that.getDefs(true); // Create dom in <defs> if not exists\n\n        var dom;\n\n        if (gradient._dom) {\n          // Gradient exists\n          dom = gradient._dom;\n\n          if (!defs.contains(gradient._dom)) {\n            // _dom is no longer in defs, recreate\n            that.addDom(dom);\n          }\n        } else {\n          // New dom\n          dom = that.add(gradient);\n        }\n\n        that.markUsed(displayable);\n        var id = dom.getAttribute('id');\n        svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');\n      }\n    });\n  }\n};\n/**\n * Add a new gradient tag in <defs>\n *\n * @param   {Gradient} gradient zr gradient instance\n * @return {SVGLinearGradientElement | SVGRadialGradientElement}\n *                            created DOM\n */\n\n\nGradientManager.prototype.add = function (gradient) {\n  var dom;\n\n  if (gradient.type === 'linear') {\n    dom = this.createElement('linearGradient');\n  } else if (gradient.type === 'radial') {\n    dom = this.createElement('radialGradient');\n  } else {\n    logError('Illegal gradient type.');\n    return null;\n  } // Set dom id with gradient id, since each gradient instance\n  // will have no more than one dom element.\n  // id may exists before for those dirty elements, in which case\n  // id should remain the same, and other attributes should be\n  // updated.\n\n\n  gradient.id = gradient.id || this.nextId++;\n  dom.setAttribute('id', 'zr' + this._zrId + '-gradient-' + gradient.id);\n  this.updateDom(gradient, dom);\n  this.addDom(dom);\n  return dom;\n};\n/**\n * Update gradient.\n *\n * @param {Gradient} gradient zr gradient instance\n */\n\n\nGradientManager.prototype.update = function (gradient) {\n  var that = this;\n  Definable.prototype.update.call(this, gradient, function () {\n    var type = gradient.type;\n    var tagName = gradient._dom.tagName;\n\n    if (type === 'linear' && tagName === 'linearGradient' || type === 'radial' && tagName === 'radialGradient') {\n      // Gradient type is not changed, update gradient\n      that.updateDom(gradient, gradient._dom);\n    } else {\n      // Remove and re-create if type is changed\n      that.removeDom(gradient);\n      that.add(gradient);\n    }\n  });\n};\n/**\n * Update gradient dom\n *\n * @param {Gradient} gradient zr gradient instance\n * @param {SVGLinearGradientElement | SVGRadialGradientElement} dom\n *                            DOM to update\n */\n\n\nGradientManager.prototype.updateDom = function (gradient, dom) {\n  if (gradient.type === 'linear') {\n    dom.setAttribute('x1', gradient.x);\n    dom.setAttribute('y1', gradient.y);\n    dom.setAttribute('x2', gradient.x2);\n    dom.setAttribute('y2', gradient.y2);\n  } else if (gradient.type === 'radial') {\n    dom.setAttribute('cx', gradient.x);\n    dom.setAttribute('cy', gradient.y);\n    dom.setAttribute('r', gradient.r);\n  } else {\n    logError('Illegal gradient type.');\n    return;\n  }\n\n  if (gradient.global) {\n    // x1, x2, y1, y2 in range of 0 to canvas width or height\n    dom.setAttribute('gradientUnits', 'userSpaceOnUse');\n  } else {\n    // x1, x2, y1, y2 in range of 0 to 1\n    dom.setAttribute('gradientUnits', 'objectBoundingBox');\n  } // Remove color stops if exists\n\n\n  dom.innerHTML = ''; // Add color stops\n\n  var colors = gradient.colorStops;\n\n  for (var i = 0, len = colors.length; i < len; ++i) {\n    var stop = this.createElement('stop');\n    stop.setAttribute('offset', colors[i].offset * 100 + '%');\n    var color = colors[i].color;\n\n    if (color.indexOf('rgba') > -1) {\n      // Fix Safari bug that stop-color not recognizing alpha #9014\n      var opacity = colorTool.parse(color)[3];\n      var hex = colorTool.toHex(color); // stop-color cannot be color, since:\n      // The opacity value used for the gradient calculation is the\n      // *product* of the value of stop-opacity and the opacity of the\n      // value of stop-color.\n      // See https://www.w3.org/TR/SVG2/pservers.html#StopOpacityProperty\n\n      stop.setAttribute('stop-color', '#' + hex);\n      stop.setAttribute('stop-opacity', opacity);\n    } else {\n      stop.setAttribute('stop-color', colors[i].color);\n    }\n\n    dom.appendChild(stop);\n  } // Store dom element in gradient, to avoid creating multiple\n  // dom instances for the same gradient element\n\n\n  gradient._dom = dom;\n};\n/**\n * Mark a single gradient to be used\n *\n * @param {Displayable} displayable displayable element\n */\n\n\nGradientManager.prototype.markUsed = function (displayable) {\n  if (displayable.style) {\n    var gradient = displayable.style.fill;\n\n    if (gradient && gradient._dom) {\n      Definable.prototype.markUsed.call(this, gradient._dom);\n    }\n\n    gradient = displayable.style.stroke;\n\n    if (gradient && gradient._dom) {\n      Definable.prototype.markUsed.call(this, gradient._dom);\n    }\n  }\n};\n\nvar _default = GradientManager;\nmodule.exports = _default;\n\n/***/ }),\n/* 1293 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Definable = __webpack_require__(433);\n\nvar zrUtil = __webpack_require__(2);\n\nvar matrix = __webpack_require__(89);\n\n/**\n * @file Manages SVG clipPath elements.\n * @author Zhang Wenli\n */\n\n/**\n * Manages SVG clipPath elements.\n *\n * @class\n * @extends Definable\n * @param   {number}     zrId    zrender instance id\n * @param   {SVGElement} svgRoot root of SVG document\n */\nfunction ClippathManager(zrId, svgRoot) {\n  Definable.call(this, zrId, svgRoot, 'clipPath', '__clippath_in_use__');\n}\n\nzrUtil.inherits(ClippathManager, Definable);\n/**\n * Update clipPath.\n *\n * @param {Displayable} displayable displayable element\n */\n\nClippathManager.prototype.update = function (displayable) {\n  var svgEl = this.getSvgElement(displayable);\n\n  if (svgEl) {\n    this.updateDom(svgEl, displayable.__clipPaths, false);\n  }\n\n  var textEl = this.getTextSvgElement(displayable);\n\n  if (textEl) {\n    // Make another clipPath for text, since it's transform\n    // matrix is not the same with svgElement\n    this.updateDom(textEl, displayable.__clipPaths, true);\n  }\n\n  this.markUsed(displayable);\n};\n/**\n * Create an SVGElement of displayable and create a <clipPath> of its\n * clipPath\n *\n * @param {Displayable} parentEl  parent element\n * @param {ClipPath[]}  clipPaths clipPaths of parent element\n * @param {boolean}     isText    if parent element is Text\n */\n\n\nClippathManager.prototype.updateDom = function (parentEl, clipPaths, isText) {\n  if (clipPaths && clipPaths.length > 0) {\n    // Has clipPath, create <clipPath> with the first clipPath\n    var defs = this.getDefs(true);\n    var clipPath = clipPaths[0];\n    var clipPathEl;\n    var id;\n    var dom = isText ? '_textDom' : '_dom';\n\n    if (clipPath[dom]) {\n      // Use a dom that is already in <defs>\n      id = clipPath[dom].getAttribute('id');\n      clipPathEl = clipPath[dom]; // Use a dom that is already in <defs>\n\n      if (!defs.contains(clipPathEl)) {\n        // This happens when set old clipPath that has\n        // been previously removed\n        defs.appendChild(clipPathEl);\n      }\n    } else {\n      // New <clipPath>\n      id = 'zr' + this._zrId + '-clip-' + this.nextId;\n      ++this.nextId;\n      clipPathEl = this.createElement('clipPath');\n      clipPathEl.setAttribute('id', id);\n      defs.appendChild(clipPathEl);\n      clipPath[dom] = clipPathEl;\n    } // Build path and add to <clipPath>\n\n\n    var svgProxy = this.getSvgProxy(clipPath);\n\n    if (clipPath.transform && clipPath.parent.invTransform && !isText) {\n      /**\n       * If a clipPath has a parent with transform, the transform\n       * of parent should not be considered when setting transform\n       * of clipPath. So we need to transform back from parent's\n       * transform, which is done by multiplying parent's inverse\n       * transform.\n       */\n      // Store old transform\n      var transform = Array.prototype.slice.call(clipPath.transform); // Transform back from parent, and brush path\n\n      matrix.mul(clipPath.transform, clipPath.parent.invTransform, clipPath.transform);\n      svgProxy.brush(clipPath); // Set back transform of clipPath\n\n      clipPath.transform = transform;\n    } else {\n      svgProxy.brush(clipPath);\n    }\n\n    var pathEl = this.getSvgElement(clipPath);\n    clipPathEl.innerHTML = '';\n    /**\n     * Use `cloneNode()` here to appendChild to multiple parents,\n     * which may happend when Text and other shapes are using the same\n     * clipPath. Since Text will create an extra clipPath DOM due to\n     * different transform rules.\n     */\n\n    clipPathEl.appendChild(pathEl.cloneNode());\n    parentEl.setAttribute('clip-path', 'url(#' + id + ')');\n\n    if (clipPaths.length > 1) {\n      // Make the other clipPaths recursively\n      this.updateDom(clipPathEl, clipPaths.slice(1), isText);\n    }\n  } else {\n    // No clipPath\n    if (parentEl) {\n      parentEl.setAttribute('clip-path', 'none');\n    }\n  }\n};\n/**\n * Mark a single clipPath to be used\n *\n * @param {Displayable} displayable displayable element\n */\n\n\nClippathManager.prototype.markUsed = function (displayable) {\n  var that = this; // displayable.__clipPaths can only be `null`/`undefined` or an non-empty array.\n\n  if (displayable.__clipPaths) {\n    zrUtil.each(displayable.__clipPaths, function (clipPath) {\n      if (clipPath._dom) {\n        Definable.prototype.markUsed.call(that, clipPath._dom);\n      }\n\n      if (clipPath._textDom) {\n        Definable.prototype.markUsed.call(that, clipPath._textDom);\n      }\n    });\n  }\n};\n\nvar _default = ClippathManager;\nmodule.exports = _default;\n\n/***/ }),\n/* 1294 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Definable = __webpack_require__(433);\n\nvar zrUtil = __webpack_require__(2);\n\n/**\n * @file Manages SVG shadow elements.\n * @author Zhang Wenli\n */\n\n/**\n * Manages SVG shadow elements.\n *\n * @class\n * @extends Definable\n * @param   {number}     zrId    zrender instance id\n * @param   {SVGElement} svgRoot root of SVG document\n */\nfunction ShadowManager(zrId, svgRoot) {\n  Definable.call(this, zrId, svgRoot, ['filter'], '__filter_in_use__', '_shadowDom');\n}\n\nzrUtil.inherits(ShadowManager, Definable);\n/**\n * Create new shadow DOM for fill or stroke if not exist,\n * but will not update shadow if exists.\n *\n * @param {SvgElement}  svgElement   SVG element to paint\n * @param {Displayable} displayable  zrender displayable element\n */\n\nShadowManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\n  if (displayable && hasShadow(displayable.style)) {\n    // Create dom in <defs> if not exists\n    var dom;\n\n    if (displayable._shadowDom) {\n      // Gradient exists\n      dom = displayable._shadowDom;\n      var defs = this.getDefs(true);\n\n      if (!defs.contains(displayable._shadowDom)) {\n        // _shadowDom is no longer in defs, recreate\n        this.addDom(dom);\n      }\n    } else {\n      // New dom\n      dom = this.add(displayable);\n    }\n\n    this.markUsed(displayable);\n    var id = dom.getAttribute('id');\n    svgElement.style.filter = 'url(#' + id + ')';\n  }\n};\n/**\n * Add a new shadow tag in <defs>\n *\n * @param {Displayable} displayable  zrender displayable element\n * @return {SVGFilterElement} created DOM\n */\n\n\nShadowManager.prototype.add = function (displayable) {\n  var dom = this.createElement('filter'); // Set dom id with shadow id, since each shadow instance\n  // will have no more than one dom element.\n  // id may exists before for those dirty elements, in which case\n  // id should remain the same, and other attributes should be\n  // updated.\n\n  displayable._shadowDomId = displayable._shadowDomId || this.nextId++;\n  dom.setAttribute('id', 'zr' + this._zrId + '-shadow-' + displayable._shadowDomId);\n  this.updateDom(displayable, dom);\n  this.addDom(dom);\n  return dom;\n};\n/**\n * Update shadow.\n *\n * @param {Displayable} displayable  zrender displayable element\n */\n\n\nShadowManager.prototype.update = function (svgElement, displayable) {\n  var style = displayable.style;\n\n  if (hasShadow(style)) {\n    var that = this;\n    Definable.prototype.update.call(this, displayable, function () {\n      that.updateDom(displayable, displayable._shadowDom);\n    });\n  } else {\n    // Remove shadow\n    this.remove(svgElement, displayable);\n  }\n};\n/**\n * Remove DOM and clear parent filter\n */\n\n\nShadowManager.prototype.remove = function (svgElement, displayable) {\n  if (displayable._shadowDomId != null) {\n    this.removeDom(svgElement);\n    svgElement.style.filter = '';\n  }\n};\n/**\n * Update shadow dom\n *\n * @param {Displayable} displayable  zrender displayable element\n * @param {SVGFilterElement} dom DOM to update\n */\n\n\nShadowManager.prototype.updateDom = function (displayable, dom) {\n  var domChild = dom.getElementsByTagName('feDropShadow');\n\n  if (domChild.length === 0) {\n    domChild = this.createElement('feDropShadow');\n  } else {\n    domChild = domChild[0];\n  }\n\n  var style = displayable.style;\n  var scaleX = displayable.scale ? displayable.scale[0] || 1 : 1;\n  var scaleY = displayable.scale ? displayable.scale[1] || 1 : 1; // TODO: textBoxShadowBlur is not supported yet\n\n  var offsetX;\n  var offsetY;\n  var blur;\n  var color;\n\n  if (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY) {\n    offsetX = style.shadowOffsetX || 0;\n    offsetY = style.shadowOffsetY || 0;\n    blur = style.shadowBlur;\n    color = style.shadowColor;\n  } else if (style.textShadowBlur) {\n    offsetX = style.textShadowOffsetX || 0;\n    offsetY = style.textShadowOffsetY || 0;\n    blur = style.textShadowBlur;\n    color = style.textShadowColor;\n  } else {\n    // Remove shadow\n    this.removeDom(dom, style);\n    return;\n  }\n\n  domChild.setAttribute('dx', offsetX / scaleX);\n  domChild.setAttribute('dy', offsetY / scaleY);\n  domChild.setAttribute('flood-color', color); // Divide by two here so that it looks the same as in canvas\n  // See: https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-shadowblur\n\n  var stdDx = blur / 2 / scaleX;\n  var stdDy = blur / 2 / scaleY;\n  var stdDeviation = stdDx + ' ' + stdDy;\n  domChild.setAttribute('stdDeviation', stdDeviation); // Fix filter clipping problem\n\n  dom.setAttribute('x', '-100%');\n  dom.setAttribute('y', '-100%');\n  dom.setAttribute('width', Math.ceil(blur / 2 * 200) + '%');\n  dom.setAttribute('height', Math.ceil(blur / 2 * 200) + '%');\n  dom.appendChild(domChild); // Store dom element in shadow, to avoid creating multiple\n  // dom instances for the same shadow element\n\n  displayable._shadowDom = dom;\n};\n/**\n * Mark a single shadow to be used\n *\n * @param {Displayable} displayable displayable element\n */\n\n\nShadowManager.prototype.markUsed = function (displayable) {\n  if (displayable._shadowDom) {\n    Definable.prototype.markUsed.call(this, displayable._shadowDom);\n  }\n};\n\nfunction hasShadow(style) {\n  // TODO: textBoxShadowBlur is not supported yet\n  return style && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY || style.textShadowBlur || style.textShadowOffsetX || style.textShadowOffsetY);\n}\n\nvar _default = ShadowManager;\nmodule.exports = _default;\n\n/***/ }),\n/* 1295 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar require;var require;(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n// (c) Dean McNamee <dean@gmail.com>, 2013.\n//\n// https://github.com/deanm/omggif\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n//\n// omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n// including animation and compression.  It does not rely on any specific\n// underlying system, so should run in the browser, Node, or Plask.\n\nfunction GifWriter(buf, width, height, gopts) {\n  var p = 0;\n\n  var gopts = gopts === undefined ? { } : gopts;\n  var loop_count = gopts.loop === undefined ? null : gopts.loop;\n  var global_palette = gopts.palette === undefined ? null : gopts.palette;\n\n  if (width <= 0 || height <= 0 || width > 65535 || height > 65535)\n    throw \"Width/Height invalid.\"\n\n  function check_palette_and_num_colors(palette) {\n    var num_colors = palette.length;\n    if (num_colors < 2 || num_colors > 256 ||  num_colors & (num_colors-1))\n      throw \"Invalid code/color length, must be power of 2 and 2 .. 256.\";\n    return num_colors;\n  }\n\n  // - Header.\n  buf[p++] = 0x47; buf[p++] = 0x49; buf[p++] = 0x46;  // GIF\n  buf[p++] = 0x38; buf[p++] = 0x39; buf[p++] = 0x61;  // 89a\n\n  // Handling of Global Color Table (palette) and background index.\n  var gp_num_colors_pow2 = 0;\n  var background = 0;\n  if (global_palette !== null) {\n    var gp_num_colors = check_palette_and_num_colors(global_palette);\n    while (gp_num_colors >>= 1) ++gp_num_colors_pow2;\n    gp_num_colors = 1 << gp_num_colors_pow2;\n    --gp_num_colors_pow2;\n    if (gopts.background !== undefined) {\n      background = gopts.background;\n      if (background >= gp_num_colors) throw \"Background index out of range.\";\n      // The GIF spec states that a background index of 0 should be ignored, so\n      // this is probably a mistake and you really want to set it to another\n      // slot in the palette.  But actually in the end most browsers, etc end\n      // up ignoring this almost completely (including for dispose background).\n      if (background === 0)\n        throw \"Background index explicitly passed as 0.\";\n    }\n  }\n\n  // - Logical Screen Descriptor.\n  // NOTE(deanm): w/h apparently ignored by implementations, but set anyway.\n  buf[p++] = width & 0xff; buf[p++] = width >> 8 & 0xff;\n  buf[p++] = height & 0xff; buf[p++] = height >> 8 & 0xff;\n  // NOTE: Indicates 0-bpp original color resolution (unused?).\n  buf[p++] = (global_palette !== null ? 0x80 : 0) |  // Global Color Table Flag.\n             gp_num_colors_pow2;  // NOTE: No sort flag (unused?).\n  buf[p++] = background;  // Background Color Index.\n  buf[p++] = 0;  // Pixel aspect ratio (unused?).\n\n  // - Global Color Table\n  if (global_palette !== null) {\n    for (var i = 0, il = global_palette.length; i < il; ++i) {\n      var rgb = global_palette[i];\n      buf[p++] = rgb >> 16 & 0xff;\n      buf[p++] = rgb >> 8 & 0xff;\n      buf[p++] = rgb & 0xff;\n    }\n  }\n\n  if (loop_count !== null) {  // Netscape block for looping.\n    if (loop_count < 0 || loop_count > 65535)\n      throw \"Loop count invalid.\"\n    // Extension code, label, and length.\n    buf[p++] = 0x21; buf[p++] = 0xff; buf[p++] = 0x0b;\n    // NETSCAPE2.0\n    buf[p++] = 0x4e; buf[p++] = 0x45; buf[p++] = 0x54; buf[p++] = 0x53;\n    buf[p++] = 0x43; buf[p++] = 0x41; buf[p++] = 0x50; buf[p++] = 0x45;\n    buf[p++] = 0x32; buf[p++] = 0x2e; buf[p++] = 0x30;\n    // Sub-block\n    buf[p++] = 0x03; buf[p++] = 0x01;\n    buf[p++] = loop_count & 0xff; buf[p++] = loop_count >> 8 & 0xff;\n    buf[p++] = 0x00;  // Terminator.\n  }\n\n\n  var ended = false;\n\n  this.addFrame = function(x, y, w, h, indexed_pixels, opts) {\n    if (ended === true) { --p; ended = false; }  // Un-end.\n\n    opts = opts === undefined ? { } : opts;\n\n    // TODO(deanm): Bounds check x, y.  Do they need to be within the virtual\n    // canvas width/height, I imagine?\n    if (x < 0 || y < 0 || x > 65535 || y > 65535)\n      throw \"x/y invalid.\"\n\n    if (w <= 0 || h <= 0 || w > 65535 || h > 65535)\n      throw \"Width/Height invalid.\"\n\n    if (indexed_pixels.length < w * h)\n      throw \"Not enough pixels for the frame size.\";\n\n    var using_local_palette = true;\n    var palette = opts.palette;\n    if (palette === undefined || palette === null) {\n      using_local_palette = false;\n      palette = global_palette;\n    }\n\n    if (palette === undefined || palette === null)\n      throw \"Must supply either a local or global palette.\";\n\n    var num_colors = check_palette_and_num_colors(palette);\n\n    // Compute the min_code_size (power of 2), destroying num_colors.\n    var min_code_size = 0;\n    while (num_colors >>= 1) ++min_code_size;\n    num_colors = 1 << min_code_size;  // Now we can easily get it back.\n\n    var delay = opts.delay === undefined ? 0 : opts.delay;\n\n    // From the spec:\n    //     0 -   No disposal specified. The decoder is\n    //           not required to take any action.\n    //     1 -   Do not dispose. The graphic is to be left\n    //           in place.\n    //     2 -   Restore to background color. The area used by the\n    //           graphic must be restored to the background color.\n    //     3 -   Restore to previous. The decoder is required to\n    //           restore the area overwritten by the graphic with\n    //           what was there prior to rendering the graphic.\n    //  4-7 -    To be defined.\n    // NOTE(deanm): Dispose background doesn't really work, apparently most\n    // browsers ignore the background palette index and clear to transparency.\n    var disposal = opts.disposal === undefined ? 0 : opts.disposal;\n    if (disposal < 0 || disposal > 3)  // 4-7 is reserved.\n      throw \"Disposal out of range.\";\n\n    var use_transparency = false;\n    var transparent_index = 0;\n    if (opts.transparent !== undefined && opts.transparent !== null) {\n      use_transparency = true;\n      transparent_index = opts.transparent;\n      if (transparent_index < 0 || transparent_index >= num_colors)\n        throw \"Transparent color index.\";\n    }\n\n    if (disposal !== 0 || use_transparency || delay !== 0) {\n      // - Graphics Control Extension\n      buf[p++] = 0x21; buf[p++] = 0xf9;  // Extension / Label.\n      buf[p++] = 4;  // Byte size.\n\n      buf[p++] = disposal << 2 | (use_transparency === true ? 1 : 0);\n      buf[p++] = delay & 0xff; buf[p++] = delay >> 8 & 0xff;\n      buf[p++] = transparent_index;  // Transparent color index.\n      buf[p++] = 0;  // Block Terminator.\n    }\n\n    // - Image Descriptor\n    buf[p++] = 0x2c;  // Image Seperator.\n    buf[p++] = x & 0xff; buf[p++] = x >> 8 & 0xff;  // Left.\n    buf[p++] = y & 0xff; buf[p++] = y >> 8 & 0xff;  // Top.\n    buf[p++] = w & 0xff; buf[p++] = w >> 8 & 0xff;\n    buf[p++] = h & 0xff; buf[p++] = h >> 8 & 0xff;\n    // NOTE: No sort flag (unused?).\n    // TODO(deanm): Support interlace.\n    buf[p++] = using_local_palette === true ? (0x80 | (min_code_size-1)) : 0;\n\n    // - Local Color Table\n    if (using_local_palette === true) {\n      for (var i = 0, il = palette.length; i < il; ++i) {\n        var rgb = palette[i];\n        buf[p++] = rgb >> 16 & 0xff;\n        buf[p++] = rgb >> 8 & 0xff;\n        buf[p++] = rgb & 0xff;\n      }\n    }\n\n    p = GifWriterOutputLZWCodeStream(\n            buf, p, min_code_size < 2 ? 2 : min_code_size, indexed_pixels);\n  };\n\n  this.end = function() {\n    if (ended === false) {\n      buf[p++] = 0x3b;  // Trailer.\n      ended = true;\n    }\n    return p;\n  };\n}\n\n// Main compression routine, palette indexes -> LZW code stream.\n// |index_stream| must have at least one entry.\nfunction GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {\n  buf[p++] = min_code_size;\n  var cur_subblock = p++;  // Pointing at the length field.\n\n  var clear_code = 1 << min_code_size;\n  var code_mask = clear_code - 1;\n  var eoi_code = clear_code + 1;\n  var next_code = eoi_code + 1;\n\n  var cur_code_size = min_code_size + 1;  // Number of bits per code.\n  var cur_shift = 0;\n  // We have at most 12-bit codes, so we should have to hold a max of 19\n  // bits here (and then we would write out).\n  var cur = 0;\n\n  function emit_bytes_to_buffer(bit_block_size) {\n    while (cur_shift >= bit_block_size) {\n      buf[p++] = cur & 0xff;\n      cur >>= 8; cur_shift -= 8;\n      if (p === cur_subblock + 256) {  // Finished a subblock.\n        buf[cur_subblock] = 255;\n        cur_subblock = p++;\n      }\n    }\n  }\n\n  function emit_code(c) {\n    cur |= c << cur_shift;\n    cur_shift += cur_code_size;\n    emit_bytes_to_buffer(8);\n  }\n\n  // I am not an expert on the topic, and I don't want to write a thesis.\n  // However, it is good to outline here the basic algorithm and the few data\n  // structures and optimizations here that make this implementation fast.\n  // The basic idea behind LZW is to build a table of previously seen runs\n  // addressed by a short id (herein called output code).  All data is\n  // referenced by a code, which represents one or more values from the\n  // original input stream.  All input bytes can be referenced as the same\n  // value as an output code.  So if you didn't want any compression, you\n  // could more or less just output the original bytes as codes (there are\n  // some details to this, but it is the idea).  In order to achieve\n  // compression, values greater then the input range (codes can be up to\n  // 12-bit while input only 8-bit) represent a sequence of previously seen\n  // inputs.  The decompressor is able to build the same mapping while\n  // decoding, so there is always a shared common knowledge between the\n  // encoding and decoder, which is also important for \"timing\" aspects like\n  // how to handle variable bit width code encoding.\n  //\n  // One obvious but very important consequence of the table system is there\n  // is always a unique id (at most 12-bits) to map the runs.  'A' might be\n  // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc.  This relationship\n  // can be used for an effecient lookup strategy for the code mapping.  We\n  // need to know if a run has been seen before, and be able to map that run\n  // to the output code.  Since we start with known unique ids (input bytes),\n  // and then from those build more unique ids (table entries), we can\n  // continue this chain (almost like a linked list) to always have small\n  // integer values that represent the current byte chains in the encoder.\n  // This means instead of tracking the input bytes (AAAABCD) to know our\n  // current state, we can track the table entry for AAAABC (it is guaranteed\n  // to exist by the nature of the algorithm) and the next character D.\n  // Therefor the tuple of (table_entry, byte) is guaranteed to also be\n  // unique.  This allows us to create a simple lookup key for mapping input\n  // sequences to codes (table indices) without having to store or search\n  // any of the code sequences.  So if 'AAAA' has a table entry of 12, the\n  // tuple of ('AAAA', K) for any input byte K will be unique, and can be our\n  // key.  This leads to a integer value at most 20-bits, which can always\n  // fit in an SMI value and be used as a fast sparse array / object key.\n\n  // Output code for the current contents of the index buffer.\n  var ib_code = index_stream[0] & code_mask;  // Load first input index.\n  var code_table = { };  // Key'd on our 20-bit \"tuple\".\n\n  emit_code(clear_code);  // Spec says first code should be a clear code.\n\n  // First index already loaded, process the rest of the stream.\n  for (var i = 1, il = index_stream.length; i < il; ++i) {\n    var k = index_stream[i] & code_mask;\n    var cur_key = ib_code << 8 | k;  // (prev, k) unique tuple.\n    var cur_code = code_table[cur_key];  // buffer + k.\n\n    // Check if we have to create a new code table entry.\n    if (cur_code === undefined) {  // We don't have buffer + k.\n      // Emit index buffer (without k).\n      // This is an inline version of emit_code, because this is the core\n      // writing routine of the compressor (and V8 cannot inline emit_code\n      // because it is a closure here in a different context).  Additionally\n      // we can call emit_byte_to_buffer less often, because we can have\n      // 30-bits (from our 31-bit signed SMI), and we know our codes will only\n      // be 12-bits, so can safely have 18-bits there without overflow.\n      // emit_code(ib_code);\n      cur |= ib_code << cur_shift;\n      cur_shift += cur_code_size;\n      while (cur_shift >= 8) {\n        buf[p++] = cur & 0xff;\n        cur >>= 8; cur_shift -= 8;\n        if (p === cur_subblock + 256) {  // Finished a subblock.\n          buf[cur_subblock] = 255;\n          cur_subblock = p++;\n        }\n      }\n\n      if (next_code === 4096) {  // Table full, need a clear.\n        emit_code(clear_code);\n        next_code = eoi_code + 1;\n        cur_code_size = min_code_size + 1;\n        code_table = { };\n      } else {  // Table not full, insert a new entry.\n        // Increase our variable bit code sizes if necessary.  This is a bit\n        // tricky as it is based on \"timing\" between the encoding and\n        // decoder.  From the encoders perspective this should happen after\n        // we've already emitted the index buffer and are about to create the\n        // first table entry that would overflow our current code bit size.\n        if (next_code >= (1 << cur_code_size)) ++cur_code_size;\n        code_table[cur_key] = next_code++;  // Insert into code table.\n      }\n\n      ib_code = k;  // Index buffer to single input k.\n    } else {\n      ib_code = cur_code;  // Index buffer to sequence in code table.\n    }\n  }\n\n  emit_code(ib_code);  // There will still be something in the index buffer.\n  emit_code(eoi_code);  // End Of Information.\n\n  // Flush / finalize the sub-blocks stream to the buffer.\n  emit_bytes_to_buffer(1);\n\n  // Finish the sub-blocks, writing out any unfinished lengths and\n  // terminating with a sub-block of length 0.  If we have already started\n  // but not yet used a sub-block it can just become the terminator.\n  if (cur_subblock + 1 === p) {  // Started but unused.\n    buf[cur_subblock] = 0;\n  } else {  // Started and used, write length and additional terminator block.\n    buf[cur_subblock] = p - cur_subblock - 1;\n    buf[p++] = 0;\n  }\n  return p;\n}\n\nfunction GifReader(buf) {\n  var p = 0;\n\n  // - Header (GIF87a or GIF89a).\n  if (buf[p++] !== 0x47 ||            buf[p++] !== 0x49 || buf[p++] !== 0x46 ||\n      buf[p++] !== 0x38 || (buf[p++]+1 & 0xfd) !== 0x38 || buf[p++] !== 0x61) {\n    throw \"Invalid GIF 87a/89a header.\";\n  }\n\n  // - Logical Screen Descriptor.\n  var width = buf[p++] | buf[p++] << 8;\n  var height = buf[p++] | buf[p++] << 8;\n  var pf0 = buf[p++];  // <Packed Fields>.\n  var global_palette_flag = pf0 >> 7;\n  var num_global_colors_pow2 = pf0 & 0x7;\n  var num_global_colors = 1 << (num_global_colors_pow2 + 1);\n  var background = buf[p++];\n  buf[p++];  // Pixel aspect ratio (unused?).\n\n  var global_palette_offset = null;\n\n  if (global_palette_flag) {\n    global_palette_offset = p;\n    p += num_global_colors * 3;  // Seek past palette.\n  }\n\n  var no_eof = true;\n\n  var frames = [ ];\n\n  var delay = 0;\n  var transparent_index = null;\n  var disposal = 0;  // 0 - No disposal specified.\n  var loop_count = null;\n\n  this.width = width;\n  this.height = height;\n\n  while (no_eof && p < buf.length) {\n    switch (buf[p++]) {\n      case 0x21:  // Graphics Control Extension Block\n        switch (buf[p++]) {\n          case 0xff:  // Application specific block\n            // Try if it's a Netscape block (with animation loop counter).\n            if (buf[p   ] !== 0x0b ||  // 21 FF already read, check block size.\n                // NETSCAPE2.0\n                buf[p+1 ] == 0x4e && buf[p+2 ] == 0x45 && buf[p+3 ] == 0x54 &&\n                buf[p+4 ] == 0x53 && buf[p+5 ] == 0x43 && buf[p+6 ] == 0x41 &&\n                buf[p+7 ] == 0x50 && buf[p+8 ] == 0x45 && buf[p+9 ] == 0x32 &&\n                buf[p+10] == 0x2e && buf[p+11] == 0x30 &&\n                // Sub-block\n                buf[p+12] == 0x03 && buf[p+13] == 0x01 && buf[p+16] == 0) {\n              p += 14;\n              loop_count = buf[p++] | buf[p++] << 8;\n              p++;  // Skip terminator.\n            } else {  // We don't know what it is, just try to get past it.\n              p += 12;\n              while (true) {  // Seek through subblocks.\n                var block_size = buf[p++];\n                if (block_size === 0) break;\n                p += block_size;\n              }\n            }\n            break;\n\n          case 0xf9:  // Graphics Control Extension\n            if (buf[p++] !== 0x4 || buf[p+4] !== 0)\n              throw \"Invalid graphics extension block.\";\n            var pf1 = buf[p++];\n            delay = buf[p++] | buf[p++] << 8;\n            transparent_index = buf[p++];\n            if ((pf1 & 1) === 0) transparent_index = null;\n            disposal = pf1 >> 2 & 0x7;\n            p++;  // Skip terminator.\n            break;\n\n          case 0xfe:  // Comment Extension.\n            while (true) {  // Seek through subblocks.\n              var block_size = buf[p++];\n              if (block_size === 0) break;\n              // console.log(buf.slice(p, p+block_size).toString('ascii'));\n              p += block_size;\n            }\n            break;\n\n          default:\n            throw \"Unknown graphic control label: 0x\" + buf[p-1].toString(16);\n        }\n        break;\n\n      case 0x2c:  // Image Descriptor.\n        var x = buf[p++] | buf[p++] << 8;\n        var y = buf[p++] | buf[p++] << 8;\n        var w = buf[p++] | buf[p++] << 8;\n        var h = buf[p++] | buf[p++] << 8;\n        var pf2 = buf[p++];\n        var local_palette_flag = pf2 >> 7;\n        var interlace_flag = pf2 >> 6 & 1;\n        var num_local_colors_pow2 = pf2 & 0x7;\n        var num_local_colors = 1 << (num_local_colors_pow2 + 1);\n        var palette_offset = global_palette_offset;\n        var has_local_palette = false;\n        if (local_palette_flag) {\n          var has_local_palette = true;\n          palette_offset = p;  // Override with local palette.\n          p += num_local_colors * 3;  // Seek past palette.\n        }\n\n        var data_offset = p;\n\n        p++;  // codesize\n        while (true) {\n          var block_size = buf[p++];\n          if (block_size === 0) break;\n          p += block_size;\n        }\n\n        frames.push({x: x, y: y, width: w, height: h,\n                     has_local_palette: has_local_palette,\n                     palette_offset: palette_offset,\n                     data_offset: data_offset,\n                     data_length: p - data_offset,\n                     transparent_index: transparent_index,\n                     interlaced: !!interlace_flag,\n                     delay: delay,\n                     disposal: disposal});\n        break;\n\n      case 0x3b:  // Trailer Marker (end of file).\n        no_eof = false;\n        break;\n\n      default:\n        throw \"Unknown gif block: 0x\" + buf[p-1].toString(16);\n        break;\n    }\n  }\n\n  this.numFrames = function() {\n    return frames.length;\n  };\n\n  this.loopCount = function() {\n    return loop_count;\n  };\n\n  this.frameInfo = function(frame_num) {\n    if (frame_num < 0 || frame_num >= frames.length)\n      throw \"Frame index out of range.\";\n    return frames[frame_num];\n  }\n\n  this.decodeAndBlitFrameBGRA = function(frame_num, pixels) {\n    var frame = this.frameInfo(frame_num);\n    var num_pixels = frame.width * frame.height;\n    var index_stream = new Uint8Array(num_pixels);  // At most 8-bit indices.\n    GifReaderLZWOutputIndexStream(\n        buf, frame.data_offset, index_stream, num_pixels);\n    var palette_offset = frame.palette_offset;\n\n    // NOTE(deanm): It seems to be much faster to compare index to 256 than\n    // to === null.  Not sure why, but CompareStub_EQ_STRICT shows up high in\n    // the profile, not sure if it's related to using a Uint8Array.\n    var trans = frame.transparent_index;\n    if (trans === null) trans = 256;\n\n    // We are possibly just blitting to a portion of the entire frame.\n    // That is a subrect within the framerect, so the additional pixels\n    // must be skipped over after we finished a scanline.\n    var framewidth  = frame.width;\n    var framestride = width - framewidth;\n    var xleft       = framewidth;  // Number of subrect pixels left in scanline.\n\n    // Output indicies of the top left and bottom right corners of the subrect.\n    var opbeg = ((frame.y * width) + frame.x) * 4;\n    var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n    var op    = opbeg;\n\n    var scanstride = framestride * 4;\n\n    // Use scanstride to skip past the rows when interlacing.  This is skipping\n    // 7 rows for the first two passes, then 3 then 1.\n    if (frame.interlaced === true) {\n      scanstride += width * 4 * 7;  // Pass 1.\n    }\n\n    var interlaceskip = 8;  // Tracking the row interval in the current pass.\n\n    for (var i = 0, il = index_stream.length; i < il; ++i) {\n      var index = index_stream[i];\n\n      if (xleft === 0) {  // Beginning of new scan line\n        op += scanstride;\n        xleft = framewidth;\n        if (op >= opend) { // Catch the wrap to switch passes when interlacing.\n          scanstride = framestride * 4 + width * 4 * (interlaceskip-1);\n          // interlaceskip / 2 * 4 is interlaceskip << 1.\n          op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n          interlaceskip >>= 1;\n        }\n      }\n\n      if (index === trans) {\n        op += 4;\n      } else {\n        var r = buf[palette_offset + index * 3];\n        var g = buf[palette_offset + index * 3 + 1];\n        var b = buf[palette_offset + index * 3 + 2];\n        pixels[op++] = b;\n        pixels[op++] = g;\n        pixels[op++] = r;\n        pixels[op++] = 255;\n      }\n      --xleft;\n    }\n  };\n\n  // I will go to copy and paste hell one day...\n  this.decodeAndBlitFrameRGBA = function(frame_num, pixels) {\n    var frame = this.frameInfo(frame_num);\n    var num_pixels = frame.width * frame.height;\n    var index_stream = new Uint8Array(num_pixels);  // At most 8-bit indices.\n    GifReaderLZWOutputIndexStream(\n        buf, frame.data_offset, index_stream, num_pixels);\n    var palette_offset = frame.palette_offset;\n\n    // NOTE(deanm): It seems to be much faster to compare index to 256 than\n    // to === null.  Not sure why, but CompareStub_EQ_STRICT shows up high in\n    // the profile, not sure if it's related to using a Uint8Array.\n    var trans = frame.transparent_index;\n    if (trans === null) trans = 256;\n\n    // We are possibly just blitting to a portion of the entire frame.\n    // That is a subrect within the framerect, so the additional pixels\n    // must be skipped over after we finished a scanline.\n    var framewidth  = frame.width;\n    var framestride = width - framewidth;\n    var xleft       = framewidth;  // Number of subrect pixels left in scanline.\n\n    // Output indicies of the top left and bottom right corners of the subrect.\n    var opbeg = ((frame.y * width) + frame.x) * 4;\n    var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n    var op    = opbeg;\n\n    var scanstride = framestride * 4;\n\n    // Use scanstride to skip past the rows when interlacing.  This is skipping\n    // 7 rows for the first two passes, then 3 then 1.\n    if (frame.interlaced === true) {\n      scanstride += width * 4 * 7;  // Pass 1.\n    }\n\n    var interlaceskip = 8;  // Tracking the row interval in the current pass.\n\n    for (var i = 0, il = index_stream.length; i < il; ++i) {\n      var index = index_stream[i];\n\n      if (xleft === 0) {  // Beginning of new scan line\n        op += scanstride;\n        xleft = framewidth;\n        if (op >= opend) { // Catch the wrap to switch passes when interlacing.\n          scanstride = framestride * 4 + width * 4 * (interlaceskip-1);\n          // interlaceskip / 2 * 4 is interlaceskip << 1.\n          op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n          interlaceskip >>= 1;\n        }\n      }\n\n      if (index === trans) {\n        op += 4;\n      } else {\n        var r = buf[palette_offset + index * 3];\n        var g = buf[palette_offset + index * 3 + 1];\n        var b = buf[palette_offset + index * 3 + 2];\n        pixels[op++] = r;\n        pixels[op++] = g;\n        pixels[op++] = b;\n        pixels[op++] = 255;\n      }\n      --xleft;\n    }\n  };\n}\n\nfunction GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) {\n  var min_code_size = code_stream[p++];\n\n  var clear_code = 1 << min_code_size;\n  var eoi_code = clear_code + 1;\n  var next_code = eoi_code + 1;\n\n  var cur_code_size = min_code_size + 1;  // Number of bits per code.\n  // NOTE: This shares the same name as the encoder, but has a different\n  // meaning here.  Here this masks each code coming from the code stream.\n  var code_mask = (1 << cur_code_size) - 1;\n  var cur_shift = 0;\n  var cur = 0;\n\n  var op = 0;  // Output pointer.\n  \n  var subblock_size = code_stream[p++];\n\n  // TODO(deanm): Would using a TypedArray be any faster?  At least it would\n  // solve the fast mode / backing store uncertainty.\n  // var code_table = Array(4096);\n  var code_table = new Int32Array(4096);  // Can be signed, we only use 20 bits.\n\n  var prev_code = null;  // Track code-1.\n\n  while (true) {\n    // Read up to two bytes, making sure we always 12-bits for max sized code.\n    while (cur_shift < 16) {\n      if (subblock_size === 0) break;  // No more data to be read.\n\n      cur |= code_stream[p++] << cur_shift;\n      cur_shift += 8;\n\n      if (subblock_size === 1) {  // Never let it get to 0 to hold logic above.\n        subblock_size = code_stream[p++];  // Next subblock.\n      } else {\n        --subblock_size;\n      }\n    }\n\n    // TODO(deanm): We should never really get here, we should have received\n    // and EOI.\n    if (cur_shift < cur_code_size)\n      break;\n\n    var code = cur & code_mask;\n    cur >>= cur_code_size;\n    cur_shift -= cur_code_size;\n\n    // TODO(deanm): Maybe should check that the first code was a clear code,\n    // at least this is what you're supposed to do.  But actually our encoder\n    // now doesn't emit a clear code first anyway.\n    if (code === clear_code) {\n      // We don't actually have to clear the table.  This could be a good idea\n      // for greater error checking, but we don't really do any anyway.  We\n      // will just track it with next_code and overwrite old entries.\n\n      next_code = eoi_code + 1;\n      cur_code_size = min_code_size + 1;\n      code_mask = (1 << cur_code_size) - 1;\n\n      // Don't update prev_code ?\n      prev_code = null;\n      continue;\n    } else if (code === eoi_code) {\n      break;\n    }\n\n    // We have a similar situation as the decoder, where we want to store\n    // variable length entries (code table entries), but we want to do in a\n    // faster manner than an array of arrays.  The code below stores sort of a\n    // linked list within the code table, and then \"chases\" through it to\n    // construct the dictionary entries.  When a new entry is created, just the\n    // last byte is stored, and the rest (prefix) of the entry is only\n    // referenced by its table entry.  Then the code chases through the\n    // prefixes until it reaches a single byte code.  We have to chase twice,\n    // first to compute the length, and then to actually copy the data to the\n    // output (backwards, since we know the length).  The alternative would be\n    // storing something in an intermediate stack, but that doesn't make any\n    // more sense.  I implemented an approach where it also stored the length\n    // in the code table, although it's a bit tricky because you run out of\n    // bits (12 + 12 + 8), but I didn't measure much improvements (the table\n    // entries are generally not the long).  Even when I created benchmarks for\n    // very long table entries the complexity did not seem worth it.\n    // The code table stores the prefix entry in 12 bits and then the suffix\n    // byte in 8 bits, so each entry is 20 bits.\n\n    var chase_code = code < next_code ? code : prev_code;\n\n    // Chase what we will output, either {CODE} or {CODE-1}.\n    var chase_length = 0;\n    var chase = chase_code;\n    while (chase > clear_code) {\n      chase = code_table[chase] >> 8;\n      ++chase_length;\n    }\n\n    var k = chase;\n    \n    var op_end = op + chase_length + (chase_code !== code ? 1 : 0);\n    if (op_end > output_length) {\n      console.log(\"Warning, gif stream longer than expected.\");\n      return;\n    }\n\n    // Already have the first byte from the chase, might as well write it fast.\n    output[op++] = k;\n\n    op += chase_length;\n    var b = op;  // Track pointer, writing backwards.\n\n    if (chase_code !== code)  // The case of emitting {CODE-1} + k.\n      output[op++] = k;\n\n    chase = chase_code;\n    while (chase_length--) {\n      chase = code_table[chase];\n      output[--b] = chase & 0xff;  // Write backwards.\n      chase >>= 8;  // Pull down to the prefix code.\n    }\n\n    if (prev_code !== null && next_code < 4096) {\n      code_table[next_code++] = prev_code << 8 | k;\n      // TODO(deanm): Figure out this clearing vs code growth logic better.  I\n      // have an feeling that it should just happen somewhere else, for now it\n      // is awkward between when we grow past the max and then hit a clear code.\n      // For now just check if we hit the max 12-bits (then a clear code should\n      // follow, also of course encoded in 12-bits).\n      if (next_code >= code_mask+1 && cur_code_size < 12) {\n        ++cur_code_size;\n        code_mask = code_mask << 1 | 1;\n      }\n    }\n\n    prev_code = code;\n  }\n\n  if (op !== output_length) {\n    console.log(\"Warning, gif stream shorter than expected.\");\n  }\n\n  return output;\n}\n\ntry { exports.GifWriter = GifWriter; exports.GifReader = GifReader } catch(e) { }  // CommonJS.\n\n},{}],2:[function(require,module,exports){\nvar Animator, GifReader, createBufferCanvas, decodeFrames, getCanvasElement, gifler, wrapXhrCallback,\n  bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\nGifReader = require('omggif').GifReader;\n\n\n/*\nLoad and animate the gif.\n\nArguments:\n  url      - The URL of the gif to be loaded with an XMLHttpRequest.\n  callback - Predicate argument than can be any one of the following:\n              - function - called with a new instance of Animator\n              - string - a query selector for a canvas element\n              - canvas - a canvas element\n */\n\ngifler = function(url) {\n  var aync, xhr;\n  xhr = new XMLHttpRequest();\n  xhr.open('GET', url, aync = true);\n  xhr.responseType = 'arraybuffer';\n  return {\n    xhr: xhr,\n    get: function(callback) {\n      xhr.onload = wrapXhrCallback(callback);\n      xhr.send();\n      return this;\n    },\n    animate: function(selector) {\n      var canvas;\n      canvas = getCanvasElement(selector);\n      xhr.onload = wrapXhrCallback(function(animator) {\n        return animator.animateInCanvas(canvas);\n      });\n      xhr.send();\n      return this;\n    },\n    frames: function(selector, onDrawFrame, setCanvasDimesions) {\n      var canvas;\n      if (setCanvasDimesions == null) {\n        setCanvasDimesions = false;\n      }\n      canvas = getCanvasElement(selector);\n      xhr.onload = wrapXhrCallback(function(animator) {\n        animator.onDrawFrame = onDrawFrame;\n        return animator.animateInCanvas(canvas, setCanvasDimesions);\n      });\n      xhr.send();\n      return this;\n    }\n  };\n};\n\nwrapXhrCallback = function(callback) {\n  return function(e) {\n    return callback(new Animator(new GifReader(new Uint8Array(this.response))));\n  };\n};\n\ngetCanvasElement = function(selector) {\n  var element, ref;\n  if (typeof selector === 'string' && ((ref = (element = document.querySelector(selector))) != null ? ref.tagName : void 0) === 'CANVAS') {\n    return element;\n  } else if ((selector != null ? selector.tagName : void 0) === 'CANVAS') {\n    return selector;\n  } else {\n    throw new Error('Unexpected selector type. Valid types are query-selector-string/canvas-element');\n  }\n};\n\n\n/*\nCreates a buffer canvas element since it is much faster to putImage than\nputImageData.\n\nThe omggif library decodes the pixels into the full gif dimensions. We only\nneed to store the frame dimensions, so we offset the putImageData call.\n */\n\ncreateBufferCanvas = function(frame, width, height) {\n  var bufferCanvas, bufferContext, imageData;\n  bufferCanvas = document.createElement('canvas');\n  bufferContext = bufferCanvas.getContext('2d');\n  bufferCanvas.width = frame.width;\n  bufferCanvas.height = frame.height;\n  imageData = bufferContext.createImageData(width, height);\n  imageData.data.set(frame.pixels);\n  bufferContext.putImageData(imageData, -frame.x, -frame.y);\n  return bufferCanvas;\n};\n\n\n/*\nDecodes the pixels for each frame (decompressing and de-interlacing) into a\nUint8ClampedArray, which is suitable for canvas ImageData.\n */\n\ndecodeFrames = function(reader, frameIndex) {\n  var j, ref, results;\n  return (function() {\n    results = [];\n    for (var j = 0, ref = reader.numFrames(); 0 <= ref ? j < ref : j > ref; 0 <= ref ? j++ : j--){ results.push(j); }\n    return results;\n  }).apply(this).map((function(_this) {\n    return function(frameIndex) {\n      var frameInfo;\n      frameInfo = reader.frameInfo(frameIndex);\n      frameInfo.pixels = new Uint8ClampedArray(reader.width * reader.height * 4);\n      reader.decodeAndBlitFrameRGBA(frameIndex, frameInfo.pixels);\n      return frameInfo;\n    };\n  })(this));\n};\n\nAnimator = (function() {\n  function Animator(_reader) {\n    var ref;\n    this._reader = _reader;\n    this._advanceFrame = bind(this._advanceFrame, this);\n    this._nextFrameRender = bind(this._nextFrameRender, this);\n    this._nextFrame = bind(this._nextFrame, this);\n    ref = this._reader, this.width = ref.width, this.height = ref.height;\n    this._frames = decodeFrames(this._reader);\n    this._loopCount = this._reader.loopCount();\n    this._loops = 0;\n    this._frameIndex = 0;\n    this._running = false;\n  }\n\n  Animator.prototype.start = function() {\n    this._lastTime = new Date().valueOf();\n    this._delayCompensation = 0;\n    this._running = true;\n    setTimeout(this._nextFrame, 0);\n    return this;\n  };\n\n  Animator.prototype.stop = function() {\n    this._running = false;\n    return this;\n  };\n\n  Animator.prototype.reset = function() {\n    this._frameIndex = 0;\n    this._loops = 0;\n    return this;\n  };\n\n  Animator.prototype._nextFrame = function() {\n    requestAnimationFrame(this._nextFrameRender);\n  };\n\n  Animator.prototype._nextFrameRender = function() {\n    var frame, ref;\n    if (!this._running) {\n      return;\n    }\n    frame = this._frames[this._frameIndex];\n    if ((ref = this.onFrame) != null) {\n      ref.apply(this, [frame, this._frameIndex]);\n    }\n    return this._enqueueNextFrame();\n  };\n\n  Animator.prototype._advanceFrame = function() {\n    this._frameIndex += 1;\n    if (this._frameIndex >= this._frames.length) {\n      if (this._loopCount !== 0 && this._loopCount === this._loops) {\n        this.stop();\n      } else {\n        this._frameIndex = 0;\n        this._loops += 1;\n      }\n    }\n  };\n\n  Animator.prototype._enqueueNextFrame = function() {\n    var actualDelay, delta, frame, frameDelay;\n    this._advanceFrame();\n    while (this._running) {\n      frame = this._frames[this._frameIndex];\n      delta = new Date().valueOf() - this._lastTime;\n      this._lastTime += delta;\n      this._delayCompensation += delta;\n      frameDelay = frame.delay * 10;\n      actualDelay = frameDelay - this._delayCompensation;\n      this._delayCompensation -= frameDelay;\n      if (actualDelay < 0) {\n        this._advanceFrame();\n        continue;\n      } else {\n        setTimeout(this._nextFrame, actualDelay);\n        break;\n      }\n    }\n  };\n\n  Animator.prototype.animateInCanvas = function(canvas, setDimension) {\n    var ctx;\n    if (setDimension == null) {\n      setDimension = true;\n    }\n    if (setDimension) {\n      canvas.width = this.width;\n      canvas.height = this.height;\n    }\n    ctx = canvas.getContext('2d');\n    if (this.onDrawFrame == null) {\n      this.onDrawFrame = function(ctx, frame, i) {\n        return ctx.drawImage(frame.buffer, frame.x, frame.y);\n      };\n    }\n    if (this.onFrame == null) {\n      this.onFrame = (function(_this) {\n        return function(frame, i) {\n          var ref, saved;\n          if (frame.buffer == null) {\n            frame.buffer = createBufferCanvas(frame, _this.width, _this.height);\n          }\n          if (typeof _this.disposeFrame === \"function\") {\n            _this.disposeFrame();\n          }\n          switch (frame.disposal) {\n            case 2:\n              _this.disposeFrame = function() {\n                return ctx.clearRect(0, 0, canvas.width, canvas.height);\n              };\n              break;\n            case 3:\n              saved = ctx.getImageData(0, 0, canvas.width, canvas.height);\n              _this.disposeFrame = function() {\n                return ctx.putImageData(saved, 0, 0);\n              };\n              break;\n            default:\n              _this.disposeFrame = null;\n          }\n          return (ref = _this.onDrawFrame) != null ? ref.apply(_this, [ctx, frame, i]) : void 0;\n        };\n      })(this);\n    }\n    this.start();\n    return this;\n  };\n\n  return Animator;\n\n})();\n\ngifler.Animator = Animator;\n\ngifler.decodeFrames = decodeFrames;\n\ngifler.createBufferCanvas = createBufferCanvas;\n\nif (typeof window !== \"undefined\" && window !== null) {\n  window.gifler = gifler;\n}\n\nif (typeof module !== \"undefined\" && module !== null) {\n  module.exports = gifler;\n}\n\n\n},{\"omggif\":1}]},{},[2]);\n\n\n/***/ }),\n/* 1296 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(1297);\n\n\n/***/ }),\n/* 1297 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, setImmediate) {var require;var require;/*!\n * MediaElement.js\n * http://www.mediaelementjs.com/\n *\n * Wrapper that mimics native HTML5 MediaElement (audio and video)\n * using a variety of technologies (pure JavaScript, Flash, iframe)\n *\n * Copyright 2010-2017, John Dyer (http://j.hn/)\n * License: MIT\n *\n */(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(_dereq_,module,exports){\n\n},{}],2:[function(_dereq_,module,exports){\n(function (global){\nvar topLevel = typeof global !== 'undefined' ? global :\n    typeof window !== 'undefined' ? window : {}\nvar minDoc = _dereq_(1);\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n    doccy = document;\n} else {\n    doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n    if (!doccy) {\n        doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n    }\n}\n\nmodule.exports = doccy;\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\nvar win;\n\nif (typeof window !== \"undefined\") {\n    win = window;\n} else if (typeof global !== \"undefined\") {\n    win = global;\n} else if (typeof self !== \"undefined\"){\n    win = self;\n} else {\n    win = {};\n}\n\nmodule.exports = win;\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],4:[function(_dereq_,module,exports){\n(function (root) {\n\n  // Store setTimeout reference so promise-polyfill will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var setTimeoutFunc = setTimeout;\n\n  function noop() {}\n  \n  // Polyfill for Function.prototype.bind\n  function bind(fn, thisArg) {\n    return function () {\n      fn.apply(thisArg, arguments);\n    };\n  }\n\n  function Promise(fn) {\n    if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n    if (typeof fn !== 'function') throw new TypeError('not a function');\n    this._state = 0;\n    this._handled = false;\n    this._value = undefined;\n    this._deferreds = [];\n\n    doResolve(fn, this);\n  }\n\n  function handle(self, deferred) {\n    while (self._state === 3) {\n      self = self._value;\n    }\n    if (self._state === 0) {\n      self._deferreds.push(deferred);\n      return;\n    }\n    self._handled = true;\n    Promise._immediateFn(function () {\n      var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n      if (cb === null) {\n        (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n        return;\n      }\n      var ret;\n      try {\n        ret = cb(self._value);\n      } catch (e) {\n        reject(deferred.promise, e);\n        return;\n      }\n      resolve(deferred.promise, ret);\n    });\n  }\n\n  function resolve(self, newValue) {\n    try {\n      // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n      if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');\n      if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n        var then = newValue.then;\n        if (newValue instanceof Promise) {\n          self._state = 3;\n          self._value = newValue;\n          finale(self);\n          return;\n        } else if (typeof then === 'function') {\n          doResolve(bind(then, newValue), self);\n          return;\n        }\n      }\n      self._state = 1;\n      self._value = newValue;\n      finale(self);\n    } catch (e) {\n      reject(self, e);\n    }\n  }\n\n  function reject(self, newValue) {\n    self._state = 2;\n    self._value = newValue;\n    finale(self);\n  }\n\n  function finale(self) {\n    if (self._state === 2 && self._deferreds.length === 0) {\n      Promise._immediateFn(function() {\n        if (!self._handled) {\n          Promise._unhandledRejectionFn(self._value);\n        }\n      });\n    }\n\n    for (var i = 0, len = self._deferreds.length; i < len; i++) {\n      handle(self, self._deferreds[i]);\n    }\n    self._deferreds = null;\n  }\n\n  function Handler(onFulfilled, onRejected, promise) {\n    this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n    this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n    this.promise = promise;\n  }\n\n  /**\n   * Take a potentially misbehaving resolver function and make sure\n   * onFulfilled and onRejected are only called once.\n   *\n   * Makes no guarantees about asynchrony.\n   */\n  function doResolve(fn, self) {\n    var done = false;\n    try {\n      fn(function (value) {\n        if (done) return;\n        done = true;\n        resolve(self, value);\n      }, function (reason) {\n        if (done) return;\n        done = true;\n        reject(self, reason);\n      });\n    } catch (ex) {\n      if (done) return;\n      done = true;\n      reject(self, ex);\n    }\n  }\n\n  Promise.prototype['catch'] = function (onRejected) {\n    return this.then(null, onRejected);\n  };\n\n  Promise.prototype.then = function (onFulfilled, onRejected) {\n    var prom = new (this.constructor)(noop);\n\n    handle(this, new Handler(onFulfilled, onRejected, prom));\n    return prom;\n  };\n\n  Promise.all = function (arr) {\n    var args = Array.prototype.slice.call(arr);\n\n    return new Promise(function (resolve, reject) {\n      if (args.length === 0) return resolve([]);\n      var remaining = args.length;\n\n      function res(i, val) {\n        try {\n          if (val && (typeof val === 'object' || typeof val === 'function')) {\n            var then = val.then;\n            if (typeof then === 'function') {\n              then.call(val, function (val) {\n                res(i, val);\n              }, reject);\n              return;\n            }\n          }\n          args[i] = val;\n          if (--remaining === 0) {\n            resolve(args);\n          }\n        } catch (ex) {\n          reject(ex);\n        }\n      }\n\n      for (var i = 0; i < args.length; i++) {\n        res(i, args[i]);\n      }\n    });\n  };\n\n  Promise.resolve = function (value) {\n    if (value && typeof value === 'object' && value.constructor === Promise) {\n      return value;\n    }\n\n    return new Promise(function (resolve) {\n      resolve(value);\n    });\n  };\n\n  Promise.reject = function (value) {\n    return new Promise(function (resolve, reject) {\n      reject(value);\n    });\n  };\n\n  Promise.race = function (values) {\n    return new Promise(function (resolve, reject) {\n      for (var i = 0, len = values.length; i < len; i++) {\n        values[i].then(resolve, reject);\n      }\n    });\n  };\n\n  // Use polyfill for setImmediate for performance gains\n  Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||\n    function (fn) {\n      setTimeoutFunc(fn, 0);\n    };\n\n  Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n    if (typeof console !== 'undefined' && console) {\n      console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n    }\n  };\n\n  /**\n   * Set the immediate function to execute callbacks\n   * @param fn {function} Function to execute\n   * @deprecated\n   */\n  Promise._setImmediateFn = function _setImmediateFn(fn) {\n    Promise._immediateFn = fn;\n  };\n\n  /**\n   * Change the function to execute on unhandled rejection\n   * @param {function} fn Function to execute on unhandled rejection\n   * @deprecated\n   */\n  Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {\n    Promise._unhandledRejectionFn = fn;\n  };\n  \n  if (typeof module !== 'undefined' && module.exports) {\n    module.exports = Promise;\n  } else if (!root.Promise) {\n    root.Promise = Promise;\n  }\n\n})(this);\n\n},{}],5:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\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 _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _en = _dereq_(15);\n\nvar _general = _dereq_(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar i18n = { lang: 'en', en: _en.EN };\n\ni18n.language = function () {\n\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\targs[_key] = arguments[_key];\n\t}\n\n\tif (args !== null && args !== undefined && args.length) {\n\n\t\tif (typeof args[0] !== 'string') {\n\t\t\tthrow new TypeError('Language code must be a string value');\n\t\t}\n\n\t\tif (!/^[a-z]{2,3}((\\-|_)[a-z]{2})?$/i.test(args[0])) {\n\t\t\tthrow new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters');\n\t\t}\n\n\t\ti18n.lang = args[0];\n\n\t\tif (i18n[args[0]] === undefined) {\n\t\t\targs[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};\n\t\t\ti18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;\n\t\t} else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {\n\t\t\ti18n[args[0]] = args[1];\n\t\t}\n\t}\n\n\treturn i18n.lang;\n};\n\ni18n.t = function (message) {\n\tvar pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\n\tif (typeof message === 'string' && message.length) {\n\n\t\tvar str = void 0,\n\t\t    pluralForm = void 0;\n\n\t\tvar language = i18n.language();\n\n\t\tvar _plural = function _plural(input, number, form) {\n\n\t\t\tif ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {\n\t\t\t\treturn input;\n\t\t\t}\n\n\t\t\tvar _pluralForms = function () {\n\t\t\t\treturn [function () {\n\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t}, function () {\n\t\t\t\t\treturn (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t}, function () {\n\t\t\t\t\treturn (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 4 ? undefined : arguments[4];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn [3];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {\n\t\t\t\t\t\treturn arguments.length <= 4 ? undefined : arguments[4];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {\n\t\t\t\t\t\treturn arguments.length <= 4 ? undefined : arguments[4];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 5 ? undefined : arguments[5];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {\n\t\t\t\t\t\treturn arguments.length <= 4 ? undefined : arguments[4];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {\n\t\t\t\t\t\treturn arguments.length <= 5 ? undefined : arguments[5];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 6 ? undefined : arguments[6];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 4 ? undefined : arguments[4];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\treturn (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 4 ? undefined : arguments[4];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\treturn (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 4 ? undefined : arguments[4];\n\t\t\t\t\t}\n\t\t\t\t}, function () {\n\t\t\t\t\tif ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {\n\t\t\t\t\t\treturn arguments.length <= 1 ? undefined : arguments[1];\n\t\t\t\t\t} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {\n\t\t\t\t\t\treturn arguments.length <= 2 ? undefined : arguments[2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn arguments.length <= 3 ? undefined : arguments[3];\n\t\t\t\t\t}\n\t\t\t\t}];\n\t\t\t}();\n\n\t\t\treturn _pluralForms[form].apply(null, [number].concat(input));\n\t\t};\n\n\t\tif (i18n[language] !== undefined) {\n\t\t\tstr = i18n[language][message];\n\t\t\tif (pluralParam !== null && typeof pluralParam === 'number') {\n\t\t\t\tpluralForm = i18n[language]['mejs.plural-form'];\n\t\t\t\tstr = _plural.apply(null, [str, pluralParam, pluralForm]);\n\t\t\t}\n\t\t}\n\n\t\tif (!str && i18n.en) {\n\t\t\tstr = i18n.en[message];\n\t\t\tif (pluralParam !== null && typeof pluralParam === 'number') {\n\t\t\t\tpluralForm = i18n.en['mejs.plural-form'];\n\t\t\t\tstr = _plural.apply(null, [str, pluralParam, pluralForm]);\n\t\t\t}\n\t\t}\n\n\t\tstr = str || message;\n\n\t\tif (pluralParam !== null && typeof pluralParam === 'number') {\n\t\t\tstr = str.replace('%1', pluralParam);\n\t\t}\n\n\t\treturn (0, _general.escapeHTML)(str);\n\t}\n\n\treturn message;\n};\n\n_mejs2.default.i18n = i18n;\n\nif (typeof mejsL10n !== 'undefined') {\n\t_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);\n}\n\nexports.default = i18n;\n\n},{\"15\":15,\"27\":27,\"7\":7}],6:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\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 _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _general = _dereq_(27);\n\nvar _media2 = _dereq_(28);\n\nvar _renderer = _dereq_(8);\n\nvar _constants = _dereq_(25);\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 MediaElement = function MediaElement(idOrNode, options, sources) {\n\tvar _this = this;\n\n\t_classCallCheck(this, MediaElement);\n\n\tvar t = this;\n\n\tsources = Array.isArray(sources) ? sources : null;\n\n\tt.defaults = {\n\t\trenderers: [],\n\n\t\tfakeNodeName: 'mediaelementwrapper',\n\n\t\tpluginPath: 'build/',\n\n\t\tshimScriptAccess: 'sameDomain'\n\t};\n\n\toptions = Object.assign(t.defaults, options);\n\n\tt.mediaElement = _document2.default.createElement(options.fakeNodeName);\n\n\tvar id = idOrNode,\n\t    error = false;\n\n\tif (typeof idOrNode === 'string') {\n\t\tt.mediaElement.originalNode = _document2.default.getElementById(idOrNode);\n\t} else {\n\t\tt.mediaElement.originalNode = idOrNode;\n\t\tid = idOrNode.id;\n\t}\n\n\tif (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) {\n\t\treturn null;\n\t}\n\n\tt.mediaElement.options = options;\n\tid = id || 'mejs_' + Math.random().toString().slice(2);\n\n\tt.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');\n\n\tvar tagName = t.mediaElement.originalNode.tagName.toLowerCase();\n\tif (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {\n\t\tt.mediaElement.originalNode.setAttribute('preload', 'none');\n\t}\n\n\tt.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);\n\n\tt.mediaElement.appendChild(t.mediaElement.originalNode);\n\n\tvar processURL = function processURL(url, type) {\n\t\tif (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) {\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.onreadystatechange = function () {\n\t\t\t\tif (this.readyState === 4 && this.status === 200) {\n\t\t\t\t\tvar _url = _window2.default.URL || _window2.default.webkitURL,\n\t\t\t\t\t    blobUrl = _url.createObjectURL(this.response);\n\t\t\t\t\tt.mediaElement.originalNode.setAttribute('src', blobUrl);\n\t\t\t\t\treturn blobUrl;\n\t\t\t\t}\n\t\t\t\treturn url;\n\t\t\t};\n\t\t\txhr.open('GET', url);\n\t\t\txhr.responseType = 'blob';\n\t\t\txhr.send();\n\t\t}\n\n\t\treturn url;\n\t};\n\n\tvar mediaFiles = void 0;\n\n\tif (sources !== null) {\n\t\tmediaFiles = sources;\n\t} else if (t.mediaElement.originalNode !== null) {\n\n\t\tmediaFiles = [];\n\n\t\tswitch (t.mediaElement.originalNode.nodeName.toLowerCase()) {\n\t\t\tcase 'iframe':\n\t\t\t\tmediaFiles.push({\n\t\t\t\t\ttype: '',\n\t\t\t\t\tsrc: t.mediaElement.originalNode.getAttribute('src')\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'audio':\n\t\t\tcase 'video':\n\t\t\t\tvar _sources = t.mediaElement.originalNode.children.length,\n\t\t\t\t    nodeSource = t.mediaElement.originalNode.getAttribute('src');\n\n\t\t\t\tif (nodeSource) {\n\t\t\t\t\tvar node = t.mediaElement.originalNode,\n\t\t\t\t\t    type = (0, _media2.formatType)(nodeSource, node.getAttribute('type'));\n\t\t\t\t\tmediaFiles.push({\n\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\tsrc: processURL(nodeSource, type)\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0; i < _sources; i++) {\n\t\t\t\t\tvar n = t.mediaElement.originalNode.children[i];\n\t\t\t\t\tif (n.tagName.toLowerCase() === 'source') {\n\t\t\t\t\t\tvar src = n.getAttribute('src'),\n\t\t\t\t\t\t    _type = (0, _media2.formatType)(src, n.getAttribute('type'));\n\t\t\t\t\t\tmediaFiles.push({ type: _type, src: processURL(src, _type) });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tt.mediaElement.id = id;\n\tt.mediaElement.renderers = {};\n\tt.mediaElement.events = {};\n\tt.mediaElement.promises = [];\n\tt.mediaElement.renderer = null;\n\tt.mediaElement.rendererName = null;\n\n\tt.mediaElement.changeRenderer = function (rendererName, mediaFiles) {\n\n\t\tvar t = _this,\n\t\t    media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src;\n\n\t\tif (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {\n\t\t\tt.mediaElement.renderer.pause();\n\t\t\tif (t.mediaElement.renderer.stop) {\n\t\t\t\tt.mediaElement.renderer.stop();\n\t\t\t}\n\t\t\tt.mediaElement.renderer.show();\n\t\t\tt.mediaElement.renderer.setSrc(media);\n\t\t\treturn true;\n\t\t}\n\n\t\tif (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {\n\t\t\tt.mediaElement.renderer.pause();\n\t\t\tif (t.mediaElement.renderer.stop) {\n\t\t\t\tt.mediaElement.renderer.stop();\n\t\t\t}\n\t\t\tt.mediaElement.renderer.hide();\n\t\t}\n\n\t\tvar newRenderer = t.mediaElement.renderers[rendererName],\n\t\t    newRendererType = null;\n\n\t\tif (newRenderer !== undefined && newRenderer !== null) {\n\t\t\tnewRenderer.show();\n\t\t\tnewRenderer.setSrc(media);\n\t\t\tt.mediaElement.renderer = newRenderer;\n\t\t\tt.mediaElement.rendererName = rendererName;\n\t\t\treturn true;\n\t\t}\n\n\t\tvar rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;\n\n\t\tfor (var _i = 0, total = rendererArray.length; _i < total; _i++) {\n\t\t\tvar index = rendererArray[_i];\n\n\t\t\tif (index === rendererName) {\n\t\t\t\tvar rendererList = _renderer.renderer.renderers;\n\t\t\t\tnewRendererType = rendererList[index];\n\n\t\t\t\tvar renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);\n\t\t\t\tnewRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);\n\t\t\t\tnewRenderer.name = rendererName;\n\n\t\t\t\tt.mediaElement.renderers[newRendererType.name] = newRenderer;\n\t\t\t\tt.mediaElement.renderer = newRenderer;\n\t\t\t\tt.mediaElement.rendererName = rendererName;\n\t\t\t\tnewRenderer.show();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tt.mediaElement.setSize = function (width, height) {\n\t\tif (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {\n\t\t\tt.mediaElement.renderer.setSize(width, height);\n\t\t}\n\t};\n\n\tt.mediaElement.generateError = function (message, urlList) {\n\t\tmessage = message || '';\n\t\turlList = Array.isArray(urlList) ? urlList : [];\n\t\tvar event = (0, _general.createEvent)('error', t.mediaElement);\n\t\tevent.message = message;\n\t\tevent.urls = urlList;\n\t\tt.mediaElement.dispatchEvent(event);\n\t\terror = true;\n\t};\n\n\tvar props = _mejs2.default.html5media.properties,\n\t    methods = _mejs2.default.html5media.methods,\n\t    addProperty = function addProperty(obj, name, onGet, onSet) {\n\t\tvar oldValue = obj[name];\n\t\tvar getFn = function getFn() {\n\t\t\treturn onGet.apply(obj, [oldValue]);\n\t\t},\n\t\t    setFn = function setFn(newValue) {\n\t\t\toldValue = onSet.apply(obj, [newValue]);\n\t\t\treturn oldValue;\n\t\t};\n\n\t\tObject.defineProperty(obj, name, {\n\t\t\tget: getFn,\n\t\t\tset: setFn\n\t\t});\n\t},\n\t    assignGettersSetters = function assignGettersSetters(propName) {\n\t\tif (propName !== 'src') {\n\n\t\t\tvar capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),\n\t\t\t    getFn = function getFn() {\n\t\t\t\treturn t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null;\n\t\t\t},\n\t\t\t    setFn = function setFn(value) {\n\t\t\t\tif (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') {\n\t\t\t\t\tt.mediaElement.renderer['set' + capName](value);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\taddProperty(t.mediaElement, propName, getFn, setFn);\n\t\t\tt.mediaElement['get' + capName] = getFn;\n\t\t\tt.mediaElement['set' + capName] = setFn;\n\t\t}\n\t},\n\t    getSrc = function getSrc() {\n\t\treturn t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;\n\t},\n\t    setSrc = function setSrc(value) {\n\t\tvar mediaFiles = [];\n\n\t\tif (typeof value === 'string') {\n\t\t\tmediaFiles.push({\n\t\t\t\tsrc: value,\n\t\t\t\ttype: value ? (0, _media2.getTypeFromFile)(value) : ''\n\t\t\t});\n\t\t} else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) {\n\t\t\tvar _src = (0, _media2.absolutizeUrl)(value.src),\n\t\t\t    _type2 = value.type,\n\t\t\t    media = Object.assign(value, {\n\t\t\t\tsrc: _src,\n\t\t\t\ttype: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2\n\t\t\t});\n\t\t\tmediaFiles.push(media);\n\t\t} else if (Array.isArray(value)) {\n\t\t\tfor (var _i2 = 0, total = value.length; _i2 < total; _i2++) {\n\n\t\t\t\tvar _src2 = (0, _media2.absolutizeUrl)(value[_i2].src),\n\t\t\t\t    _type3 = value[_i2].type,\n\t\t\t\t    _media = Object.assign(value[_i2], {\n\t\t\t\t\tsrc: _src2,\n\t\t\t\t\ttype: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3\n\t\t\t\t});\n\n\t\t\t\tmediaFiles.push(_media);\n\t\t\t}\n\t\t}\n\n\t\tvar renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),\n\t\t    event = void 0;\n\n\t\tif (!t.mediaElement.paused && !(t.mediaElement.src == null || t.mediaElement.src === '')) {\n\t\t\tt.mediaElement.pause();\n\t\t\tevent = (0, _general.createEvent)('pause', t.mediaElement);\n\t\t\tt.mediaElement.dispatchEvent(event);\n\t\t}\n\t\tt.mediaElement.originalNode.src = mediaFiles[0].src || '';\n\n\t\tif (renderInfo === null && mediaFiles[0].src) {\n\t\t\tt.mediaElement.generateError('No renderer found', mediaFiles);\n\t\t\treturn;\n\t\t}\n\n\t\tvar shouldChangeRenderer = !(mediaFiles[0].src == null || mediaFiles[0].src === '');\n\t\treturn shouldChangeRenderer ? t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles) : null;\n\t},\n\t    triggerAction = function triggerAction(methodName, args) {\n\t\ttry {\n\t\t\tif (methodName === 'play' && (t.mediaElement.rendererName === 'native_dash' || t.mediaElement.rendererName === 'native_hls' || t.mediaElement.rendererName === 'vimeo_iframe')) {\n\t\t\t\tvar response = t.mediaElement.renderer[methodName](args);\n\t\t\t\tif (response && typeof response.then === 'function') {\n\t\t\t\t\tresponse.catch(function () {\n\t\t\t\t\t\tif (t.mediaElement.paused) {\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tvar tmpResponse = t.mediaElement.renderer.play();\n\t\t\t\t\t\t\t\tif (tmpResponse !== undefined) {\n\t\t\t\t\t\t\t\t\ttmpResponse.catch(function () {\n\t\t\t\t\t\t\t\t\t\tif (!t.mediaElement.renderer.paused) {\n\t\t\t\t\t\t\t\t\t\t\tt.mediaElement.renderer.pause();\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}, 150);\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\tt.mediaElement.renderer[methodName](args);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tt.mediaElement.generateError(e, mediaFiles);\n\t\t}\n\t},\n\t    assignMethods = function assignMethods(methodName) {\n\t\tt.mediaElement[methodName] = function () {\n\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\targs[_key] = arguments[_key];\n\t\t\t}\n\n\t\t\tif (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {\n\t\t\t\tif (t.mediaElement.promises.length) {\n\t\t\t\t\tPromise.all(t.mediaElement.promises).then(function () {\n\t\t\t\t\t\ttriggerAction(methodName, args);\n\t\t\t\t\t}).catch(function (e) {\n\t\t\t\t\t\tt.mediaElement.generateError(e, mediaFiles);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttriggerAction(methodName, args);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t};\n\n\taddProperty(t.mediaElement, 'src', getSrc, setSrc);\n\tt.mediaElement.getSrc = getSrc;\n\tt.mediaElement.setSrc = setSrc;\n\n\tfor (var _i3 = 0, total = props.length; _i3 < total; _i3++) {\n\t\tassignGettersSetters(props[_i3]);\n\t}\n\n\tfor (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) {\n\t\tassignMethods(methods[_i4]);\n\t}\n\n\tt.mediaElement.addEventListener = function (eventName, callback) {\n\t\tt.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];\n\n\t\tt.mediaElement.events[eventName].push(callback);\n\t};\n\tt.mediaElement.removeEventListener = function (eventName, callback) {\n\t\tif (!eventName) {\n\t\t\tt.mediaElement.events = {};\n\t\t\treturn true;\n\t\t}\n\n\t\tvar callbacks = t.mediaElement.events[eventName];\n\n\t\tif (!callbacks) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!callback) {\n\t\t\tt.mediaElement.events[eventName] = [];\n\t\t\treturn true;\n\t\t}\n\n\t\tfor (var _i5 = 0; _i5 < callbacks.length; _i5++) {\n\t\t\tif (callbacks[_i5] === callback) {\n\t\t\t\tt.mediaElement.events[eventName].splice(_i5, 1);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tt.mediaElement.dispatchEvent = function (event) {\n\t\tvar callbacks = t.mediaElement.events[event.type];\n\t\tif (callbacks) {\n\t\t\tfor (var _i6 = 0; _i6 < callbacks.length; _i6++) {\n\t\t\t\tcallbacks[_i6].apply(null, [event]);\n\t\t\t}\n\t\t}\n\t};\n\n\tt.mediaElement.destroy = function () {\n\t\tvar mediaElement = t.mediaElement.originalNode.cloneNode(true);\n\t\tvar wrapper = t.mediaElement.parentElement;\n\t\tmediaElement.removeAttribute('id');\n\t\tmediaElement.remove();\n\t\tt.mediaElement.remove();\n\t\twrapper.appendChild(mediaElement);\n\t};\n\n\tif (mediaFiles.length) {\n\t\tt.mediaElement.src = mediaFiles;\n\t}\n\n\tif (t.mediaElement.promises.length) {\n\t\tPromise.all(t.mediaElement.promises).then(function () {\n\t\t\tif (t.mediaElement.options.success) {\n\t\t\t\tt.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);\n\t\t\t}\n\t\t}).catch(function () {\n\t\t\tif (error && t.mediaElement.options.error) {\n\t\t\t\tt.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tif (t.mediaElement.options.success) {\n\t\t\tt.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);\n\t\t}\n\n\t\tif (error && t.mediaElement.options.error) {\n\t\t\tt.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);\n\t\t}\n\t}\n\n\treturn t.mediaElement;\n};\n\n_window2.default.MediaElement = MediaElement;\n_mejs2.default.MediaElement = MediaElement;\n\nexports.default = MediaElement;\n\n},{\"2\":2,\"25\":25,\"27\":27,\"28\":28,\"3\":3,\"7\":7,\"8\":8}],7:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mejs = {};\n\nmejs.version = '4.2.17';\n\nmejs.html5media = {\n\tproperties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],\n\treadOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],\n\n\tmethods: ['load', 'play', 'pause', 'canPlayType'],\n\n\tevents: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],\n\n\tmediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv']\n};\n\n_window2.default.mejs = mejs;\n\nexports.default = mejs;\n\n},{\"3\":3}],8:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.renderer = undefined;\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 _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 _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\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 Renderer = function () {\n\tfunction Renderer() {\n\t\t_classCallCheck(this, Renderer);\n\n\t\tthis.renderers = {};\n\t\tthis.order = [];\n\t}\n\n\t_createClass(Renderer, [{\n\t\tkey: 'add',\n\t\tvalue: function add(renderer) {\n\t\t\tif (renderer.name === undefined) {\n\t\t\t\tthrow new TypeError('renderer must contain at least `name` property');\n\t\t\t}\n\n\t\t\tthis.renderers[renderer.name] = renderer;\n\t\t\tthis.order.push(renderer.name);\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select(mediaFiles) {\n\t\t\tvar renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n\t\t\tvar renderersLength = renderers.length;\n\n\t\t\trenderers = renderers.length ? renderers : this.order;\n\n\t\t\tif (!renderersLength) {\n\t\t\t\tvar rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],\n\t\t\t\t    rendererRanking = function rendererRanking(renderer) {\n\t\t\t\t\tfor (var i = 0, total = rendererIndicator.length; i < total; i++) {\n\t\t\t\t\t\tif (rendererIndicator[i].test(renderer)) {\n\t\t\t\t\t\t\treturn i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn rendererIndicator.length;\n\t\t\t\t};\n\n\t\t\t\trenderers.sort(function (a, b) {\n\t\t\t\t\treturn rendererRanking(a) - rendererRanking(b);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor (var i = 0, total = renderers.length; i < total; i++) {\n\t\t\t\tvar key = renderers[i],\n\t\t\t\t    _renderer = this.renderers[key];\n\n\t\t\t\tif (_renderer !== null && _renderer !== undefined) {\n\t\t\t\t\tfor (var j = 0, jl = mediaFiles.length; j < jl; j++) {\n\t\t\t\t\t\tif (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\trendererName: _renderer.name,\n\t\t\t\t\t\t\t\tsrc: mediaFiles[j].src\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\n\t\t\treturn null;\n\t\t}\n\t}, {\n\t\tkey: 'order',\n\t\tset: function set(order) {\n\t\t\tif (!Array.isArray(order)) {\n\t\t\t\tthrow new TypeError('order must be an array of strings.');\n\t\t\t}\n\n\t\t\tthis._order = order;\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._order;\n\t\t}\n\t}, {\n\t\tkey: 'renderers',\n\t\tset: function set(renderers) {\n\t\t\tif (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {\n\t\t\t\tthrow new TypeError('renderers must be an array of objects.');\n\t\t\t}\n\n\t\t\tthis._renderers = renderers;\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this._renderers;\n\t\t}\n\t}]);\n\n\treturn Renderer;\n}();\n\nvar renderer = exports.renderer = new Renderer();\n\n_mejs2.default.Renderers = renderer;\n\n},{\"7\":7}],9:[function(_dereq_,module,exports){\n'use strict';\n\nvar _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _i18n = _dereq_(5);\n\nvar _i18n2 = _interopRequireDefault(_i18n);\n\nvar _player = _dereq_(16);\n\nvar _player2 = _interopRequireDefault(_player);\n\nvar _constants = _dereq_(25);\n\nvar Features = _interopRequireWildcard(_constants);\n\nvar _general = _dereq_(27);\n\nvar _dom = _dereq_(26);\n\nvar _media = _dereq_(28);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nObject.assign(_player.config, {\n\tusePluginFullScreen: true,\n\n\tfullscreenText: null,\n\n\tuseFakeFullscreen: false\n});\n\nObject.assign(_player2.default.prototype, {\n\tisFullScreen: false,\n\n\tisNativeFullScreen: false,\n\n\tisInIframe: false,\n\n\tisPluginClickThroughCreated: false,\n\n\tfullscreenMode: '',\n\n\tcontainerSizeTimeout: null,\n\n\tbuildfullscreen: function buildfullscreen(player) {\n\t\tif (!player.isVideo) {\n\t\t\treturn;\n\t\t}\n\n\t\tplayer.isInIframe = _window2.default.location !== _window2.default.parent.location;\n\n\t\tplayer.detectFullscreenMode();\n\n\t\tvar t = this,\n\t\t    fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'),\n\t\t    fullscreenBtn = _document2.default.createElement('div');\n\n\t\tfullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button';\n\t\tfullscreenBtn.innerHTML = '<button type=\"button\" aria-controls=\"' + t.id + '\" title=\"' + fullscreenTitle + '\" aria-label=\"' + fullscreenTitle + '\" tabindex=\"0\"></button>';\n\t\tt.addControlElement(fullscreenBtn, 'fullscreen');\n\n\t\tfullscreenBtn.addEventListener('click', function () {\n\t\t\tvar isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;\n\n\t\t\tif (isFullScreen) {\n\t\t\t\tplayer.exitFullScreen();\n\t\t\t} else {\n\t\t\t\tplayer.enterFullScreen();\n\t\t\t}\n\t\t});\n\n\t\tplayer.fullscreenBtn = fullscreenBtn;\n\n\t\tt.options.keyActions.push({\n\t\t\tkeys: [70],\n\t\t\taction: function action(player, media, key, event) {\n\t\t\t\tif (!event.ctrlKey) {\n\t\t\t\t\tif (typeof player.enterFullScreen !== 'undefined') {\n\t\t\t\t\t\tif (player.isFullScreen) {\n\t\t\t\t\t\t\tplayer.exitFullScreen();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tplayer.enterFullScreen();\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\tt.exitFullscreenCallback = function (e) {\n\t\t\tvar key = e.which || e.keyCode || 0;\n\t\t\tif (t.options.enableKeyboard && key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) {\n\t\t\t\tplayer.exitFullScreen();\n\t\t\t}\n\t\t};\n\n\t\tt.globalBind('keydown', t.exitFullscreenCallback);\n\n\t\tt.normalHeight = 0;\n\t\tt.normalWidth = 0;\n\n\t\tif (Features.HAS_TRUE_NATIVE_FULLSCREEN) {\n\t\t\tvar fullscreenChanged = function fullscreenChanged() {\n\t\t\t\tif (player.isFullScreen) {\n\t\t\t\t\tif (Features.isFullScreen()) {\n\t\t\t\t\t\tplayer.isNativeFullScreen = true;\n\n\t\t\t\t\t\tplayer.setControlsSize();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tplayer.isNativeFullScreen = false;\n\n\t\t\t\t\t\tplayer.exitFullScreen();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tplayer.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);\n\t\t}\n\t},\n\tcleanfullscreen: function cleanfullscreen(player) {\n\t\tplayer.exitFullScreen();\n\t\tplayer.globalUnbind('keydown', player.exitFullscreenCallback);\n\t},\n\tdetectFullscreenMode: function detectFullscreenMode() {\n\t\tvar t = this,\n\t\t    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);\n\n\t\tvar mode = '';\n\n\t\tif (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) {\n\t\t\tmode = 'native-native';\n\t\t} else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) {\n\t\t\tmode = 'plugin-native';\n\t\t} else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) {\n\t\t\tmode = 'plugin-click';\n\t\t}\n\n\t\tt.fullscreenMode = mode;\n\t\treturn mode;\n\t},\n\tenterFullScreen: function enterFullScreen() {\n\t\tvar t = this,\n\t\t    isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName),\n\t\t    containerStyles = getComputedStyle(t.getElement(t.container));\n\n\t\tif (!t.isVideo) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (t.options.useFakeFullscreen === false && (Features.IS_IOS || Features.IS_SAFARI) && Features.HAS_IOS_FULLSCREEN && typeof t.media.originalNode.webkitEnterFullscreen === 'function' && t.media.originalNode.canPlayType((0, _media.getTypeFromFile)(t.media.getSrc()))) {\n\t\t\tt.media.originalNode.webkitEnterFullscreen();\n\t\t\treturn;\n\t\t}\n\n\t\t(0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');\n\t\t(0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen');\n\n\t\tt.normalHeight = parseFloat(containerStyles.height);\n\t\tt.normalWidth = parseFloat(containerStyles.width);\n\n\t\tif (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {\n\t\t\tFeatures.requestFullScreen(t.getElement(t.container));\n\n\t\t\tif (t.isInIframe) {\n\t\t\t\tsetTimeout(function checkFullscreen() {\n\n\t\t\t\t\tif (t.isNativeFullScreen) {\n\t\t\t\t\t\tvar percentErrorMargin = 0.002,\n\t\t\t\t\t\t    windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,\n\t\t\t\t\t\t    screenWidth = screen.width,\n\t\t\t\t\t\t    absDiff = Math.abs(screenWidth - windowWidth),\n\t\t\t\t\t\t    marginError = screenWidth * percentErrorMargin;\n\n\t\t\t\t\t\tif (absDiff > marginError) {\n\t\t\t\t\t\t\tt.exitFullScreen();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetTimeout(checkFullscreen, 500);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 1000);\n\t\t\t}\n\t\t}\n\n\t\tt.getElement(t.container).style.width = '100%';\n\t\tt.getElement(t.container).style.height = '100%';\n\n\t\tt.containerSizeTimeout = setTimeout(function () {\n\t\t\tt.getElement(t.container).style.width = '100%';\n\t\t\tt.getElement(t.container).style.height = '100%';\n\t\t\tt.setControlsSize();\n\t\t}, 500);\n\n\t\tif (isNative) {\n\t\t\tt.node.style.width = '100%';\n\t\t\tt.node.style.height = '100%';\n\t\t} else {\n\t\t\tvar elements = t.getElement(t.container).querySelectorAll('embed, object, video'),\n\t\t\t    _total = elements.length;\n\t\t\tfor (var i = 0; i < _total; i++) {\n\t\t\t\telements[i].style.width = '100%';\n\t\t\t\telements[i].style.height = '100%';\n\t\t\t}\n\t\t}\n\n\t\tif (t.options.setDimensions && typeof t.media.setSize === 'function') {\n\t\t\tt.media.setSize(screen.width, screen.height);\n\t\t}\n\n\t\tvar layers = t.getElement(t.layers).children,\n\t\t    total = layers.length;\n\t\tfor (var _i = 0; _i < total; _i++) {\n\t\t\tlayers[_i].style.width = '100%';\n\t\t\tlayers[_i].style.height = '100%';\n\t\t}\n\n\t\tif (t.fullscreenBtn) {\n\t\t\t(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');\n\t\t\t(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');\n\t\t}\n\n\t\tt.setControlsSize();\n\t\tt.isFullScreen = true;\n\n\t\tvar zoomFactor = Math.min(screen.width / t.width, screen.height / t.height),\n\t\t    captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text');\n\t\tif (captionText) {\n\t\t\tcaptionText.style.fontSize = zoomFactor * 100 + '%';\n\t\t\tcaptionText.style.lineHeight = 'normal';\n\t\t\tt.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = (screen.height - t.normalHeight) / 2 - t.getElement(t.controls).offsetHeight / 2 + zoomFactor + 15 + 'px';\n\t\t}\n\t\tvar event = (0, _general.createEvent)('enteredfullscreen', t.getElement(t.container));\n\t\tt.getElement(t.container).dispatchEvent(event);\n\t},\n\texitFullScreen: function exitFullScreen() {\n\t\tvar t = this,\n\t\t    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);\n\n\t\tif (!t.isVideo) {\n\t\t\treturn;\n\t\t}\n\n\t\tclearTimeout(t.containerSizeTimeout);\n\n\t\tif (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {\n\t\t\tFeatures.cancelFullScreen();\n\t\t}\n\n\t\t(0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');\n\t\t(0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen');\n\n\t\tif (t.options.setDimensions) {\n\t\t\tt.getElement(t.container).style.width = t.normalWidth + 'px';\n\t\t\tt.getElement(t.container).style.height = t.normalHeight + 'px';\n\n\t\t\tif (isNative) {\n\t\t\t\tt.node.style.width = t.normalWidth + 'px';\n\t\t\t\tt.node.style.height = t.normalHeight + 'px';\n\t\t\t} else {\n\t\t\t\tvar elements = t.getElement(t.container).querySelectorAll('embed, object, video'),\n\t\t\t\t    _total2 = elements.length;\n\t\t\t\tfor (var i = 0; i < _total2; i++) {\n\t\t\t\t\telements[i].style.width = t.normalWidth + 'px';\n\t\t\t\t\telements[i].style.height = t.normalHeight + 'px';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof t.media.setSize === 'function') {\n\t\t\t\tt.media.setSize(t.normalWidth, t.normalHeight);\n\t\t\t}\n\n\t\t\tvar layers = t.getElement(t.layers).children,\n\t\t\t    total = layers.length;\n\t\t\tfor (var _i2 = 0; _i2 < total; _i2++) {\n\t\t\t\tlayers[_i2].style.width = t.normalWidth + 'px';\n\t\t\t\tlayers[_i2].style.height = t.normalHeight + 'px';\n\t\t\t}\n\t\t}\n\n\t\tif (t.fullscreenBtn) {\n\t\t\t(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');\n\t\t\t(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');\n\t\t}\n\n\t\tt.setControlsSize();\n\t\tt.isFullScreen = false;\n\n\t\tvar captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text');\n\t\tif (captionText) {\n\t\t\tcaptionText.style.fontSize = '';\n\t\t\tcaptionText.style.lineHeight = '';\n\t\t\tt.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '';\n\t\t}\n\t\tvar event = (0, _general.createEvent)('exitedfullscreen', t.getElement(t.container));\n\t\tt.getElement(t.container).dispatchEvent(event);\n\t}\n});\n\n},{\"16\":16,\"2\":2,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"3\":3,\"5\":5}],10:[function(_dereq_,module,exports){\n'use strict';\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _player = _dereq_(16);\n\nvar _player2 = _interopRequireDefault(_player);\n\nvar _i18n = _dereq_(5);\n\nvar _i18n2 = _interopRequireDefault(_i18n);\n\nvar _general = _dereq_(27);\n\nvar _dom = _dereq_(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nObject.assign(_player.config, {\n\tplayText: null,\n\n\tpauseText: null\n});\n\nObject.assign(_player2.default.prototype, {\n\tbuildplaypause: function buildplaypause(player, controls, layers, media) {\n\t\tvar t = this,\n\t\t    op = t.options,\n\t\t    playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),\n\t\t    pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'),\n\t\t    play = _document2.default.createElement('div');\n\n\t\tplay.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play';\n\t\tplay.innerHTML = '<button type=\"button\" aria-controls=\"' + t.id + '\" title=\"' + playTitle + '\" aria-label=\"' + pauseTitle + '\" tabindex=\"0\"></button>';\n\t\tplay.addEventListener('click', function () {\n\t\t\tif (t.paused) {\n\t\t\t\tt.play();\n\t\t\t} else {\n\t\t\t\tt.pause();\n\t\t\t}\n\t\t});\n\n\t\tvar playBtn = play.querySelector('button');\n\t\tt.addControlElement(play, 'playpause');\n\n\t\tfunction togglePlayPause(which) {\n\t\t\tif ('play' === which) {\n\t\t\t\t(0, _dom.removeClass)(play, t.options.classPrefix + 'play');\n\t\t\t\t(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');\n\t\t\t\t(0, _dom.addClass)(play, t.options.classPrefix + 'pause');\n\t\t\t\tplayBtn.setAttribute('title', pauseTitle);\n\t\t\t\tplayBtn.setAttribute('aria-label', pauseTitle);\n\t\t\t} else {\n\n\t\t\t\t(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');\n\t\t\t\t(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');\n\t\t\t\t(0, _dom.addClass)(play, t.options.classPrefix + 'play');\n\t\t\t\tplayBtn.setAttribute('title', playTitle);\n\t\t\t\tplayBtn.setAttribute('aria-label', playTitle);\n\t\t\t}\n\t\t}\n\n\t\ttogglePlayPause('pse');\n\n\t\tmedia.addEventListener('loadedmetadata', function () {\n\t\t\tif (media.rendererName.indexOf('flash') === -1) {\n\t\t\t\ttogglePlayPause('pse');\n\t\t\t}\n\t\t});\n\t\tmedia.addEventListener('play', function () {\n\t\t\ttogglePlayPause('play');\n\t\t});\n\t\tmedia.addEventListener('playing', function () {\n\t\t\ttogglePlayPause('play');\n\t\t});\n\t\tmedia.addEventListener('pause', function () {\n\t\t\ttogglePlayPause('pse');\n\t\t});\n\t\tmedia.addEventListener('ended', function () {\n\t\t\tif (!player.options.loop) {\n\t\t\t\t(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');\n\t\t\t\t(0, _dom.removeClass)(play, t.options.classPrefix + 'play');\n\t\t\t\t(0, _dom.addClass)(play, t.options.classPrefix + 'replay');\n\t\t\t\tplayBtn.setAttribute('title', playTitle);\n\t\t\t\tplayBtn.setAttribute('aria-label', playTitle);\n\t\t\t}\n\t\t});\n\t}\n});\n\n},{\"16\":16,\"2\":2,\"26\":26,\"27\":27,\"5\":5}],11:[function(_dereq_,module,exports){\n'use strict';\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _player = _dereq_(16);\n\nvar _player2 = _interopRequireDefault(_player);\n\nvar _i18n = _dereq_(5);\n\nvar _i18n2 = _interopRequireDefault(_i18n);\n\nvar _constants = _dereq_(25);\n\nvar _time = _dereq_(30);\n\nvar _dom = _dereq_(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nObject.assign(_player.config, {\n\tenableProgressTooltip: true,\n\n\tuseSmoothHover: true,\n\n\tforceLive: false\n});\n\nObject.assign(_player2.default.prototype, {\n\tbuildprogress: function buildprogress(player, controls, layers, media) {\n\n\t\tvar lastKeyPressTime = 0,\n\t\t    mouseIsDown = false,\n\t\t    startedPaused = false;\n\n\t\tvar t = this,\n\t\t    autoRewindInitial = player.options.autoRewind,\n\t\t    tooltip = player.options.enableProgressTooltip ? '<span class=\"' + t.options.classPrefix + 'time-float\">' + ('<span class=\"' + t.options.classPrefix + 'time-float-current\">00:00</span>') + ('<span class=\"' + t.options.classPrefix + 'time-float-corner\"></span>') + '</span>' : '',\n\t\t    rail = _document2.default.createElement('div');\n\n\t\trail.className = t.options.classPrefix + 'time-rail';\n\t\trail.innerHTML = '<span class=\"' + t.options.classPrefix + 'time-total ' + t.options.classPrefix + 'time-slider\">' + ('<span class=\"' + t.options.classPrefix + 'time-buffering\"></span>') + ('<span class=\"' + t.options.classPrefix + 'time-loaded\"></span>') + ('<span class=\"' + t.options.classPrefix + 'time-current\"></span>') + ('<span class=\"' + t.options.classPrefix + 'time-hovered no-hover\"></span>') + ('<span class=\"' + t.options.classPrefix + 'time-handle\"><span class=\"' + t.options.classPrefix + 'time-handle-content\"></span></span>') + ('' + tooltip) + '</span>';\n\n\t\tt.addControlElement(rail, 'progress');\n\n\t\tt.options.keyActions.push({\n\t\t\tkeys: [37, 227],\n\t\t\taction: function action(player) {\n\t\t\t\tif (!isNaN(player.duration) && player.duration > 0) {\n\t\t\t\t\tif (player.isVideo) {\n\t\t\t\t\t\tplayer.showControls();\n\t\t\t\t\t\tplayer.startControlsTimer();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar timeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'time-total');\n\t\t\t\t\tif (timeSlider) {\n\t\t\t\t\t\ttimeSlider.focus();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar newTime = Math.max(player.currentTime - player.options.defaultSeekBackwardInterval(player), 0);\n\n\t\t\t\t\tif (!player.paused) {\n\t\t\t\t\t\tplayer.pause();\n\t\t\t\t\t}\n\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tplayer.setCurrentTime(newTime);\n\t\t\t\t\t}, 0);\n\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tplayer.play();\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkeys: [39, 228],\n\t\t\taction: function action(player) {\n\n\t\t\t\tif (!isNaN(player.duration) && player.duration > 0) {\n\t\t\t\t\tif (player.isVideo) {\n\t\t\t\t\t\tplayer.showControls();\n\t\t\t\t\t\tplayer.startControlsTimer();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar timeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'time-total');\n\t\t\t\t\tif (timeSlider) {\n\t\t\t\t\t\ttimeSlider.focus();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar newTime = Math.min(player.currentTime + player.options.defaultSeekForwardInterval(player), player.duration);\n\n\t\t\t\t\tif (!player.paused) {\n\t\t\t\t\t\tplayer.pause();\n\t\t\t\t\t}\n\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tplayer.setCurrentTime(newTime);\n\t\t\t\t\t}, 0);\n\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tplayer.play();\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tt.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail');\n\t\tt.total = controls.querySelector('.' + t.options.classPrefix + 'time-total');\n\t\tt.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded');\n\t\tt.current = controls.querySelector('.' + t.options.classPrefix + 'time-current');\n\t\tt.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle');\n\t\tt.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float');\n\t\tt.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current');\n\t\tt.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider');\n\t\tt.hovered = controls.querySelector('.' + t.options.classPrefix + 'time-hovered');\n\t\tt.buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');\n\t\tt.newTime = 0;\n\t\tt.forcedHandlePause = false;\n\t\tt.setTransformStyle = function (element, value) {\n\t\t\telement.style.transform = value;\n\t\t\telement.style.webkitTransform = value;\n\t\t\telement.style.MozTransform = value;\n\t\t\telement.style.msTransform = value;\n\t\t\telement.style.OTransform = value;\n\t\t};\n\n\t\tt.buffer.style.display = 'none';\n\n\t\tvar handleMouseMove = function handleMouseMove(e) {\n\t\t\tvar totalStyles = getComputedStyle(t.total),\n\t\t\t    offsetStyles = (0, _dom.offset)(t.total),\n\t\t\t    width = t.total.offsetWidth,\n\t\t\t    transform = function () {\n\t\t\t\tif (totalStyles.webkitTransform !== undefined) {\n\t\t\t\t\treturn 'webkitTransform';\n\t\t\t\t} else if (totalStyles.mozTransform !== undefined) {\n\t\t\t\t\treturn 'mozTransform ';\n\t\t\t\t} else if (totalStyles.oTransform !== undefined) {\n\t\t\t\t\treturn 'oTransform';\n\t\t\t\t} else if (totalStyles.msTransform !== undefined) {\n\t\t\t\t\treturn 'msTransform';\n\t\t\t\t} else {\n\t\t\t\t\treturn 'transform';\n\t\t\t\t}\n\t\t\t}(),\n\t\t\t    cssMatrix = function () {\n\t\t\t\tif ('WebKitCSSMatrix' in window) {\n\t\t\t\t\treturn 'WebKitCSSMatrix';\n\t\t\t\t} else if ('MSCSSMatrix' in window) {\n\t\t\t\t\treturn 'MSCSSMatrix';\n\t\t\t\t} else if ('CSSMatrix' in window) {\n\t\t\t\t\treturn 'CSSMatrix';\n\t\t\t\t}\n\t\t\t}();\n\n\t\t\tvar percentage = 0,\n\t\t\t    leftPos = 0,\n\t\t\t    pos = 0,\n\t\t\t    x = void 0;\n\n\t\t\tif (e.originalEvent && e.originalEvent.changedTouches) {\n\t\t\t\tx = e.originalEvent.changedTouches[0].pageX;\n\t\t\t} else if (e.changedTouches) {\n\t\t\t\tx = e.changedTouches[0].pageX;\n\t\t\t} else {\n\t\t\t\tx = e.pageX;\n\t\t\t}\n\n\t\t\tif (t.getDuration()) {\n\t\t\t\tif (x < offsetStyles.left) {\n\t\t\t\t\tx = offsetStyles.left;\n\t\t\t\t} else if (x > width + offsetStyles.left) {\n\t\t\t\t\tx = width + offsetStyles.left;\n\t\t\t\t}\n\n\t\t\t\tpos = x - offsetStyles.left;\n\t\t\t\tpercentage = pos / width;\n\t\t\t\tt.newTime = percentage * t.getDuration();\n\n\t\t\t\tif (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {\n\t\t\t\t\tt.setCurrentRailHandle(t.newTime);\n\t\t\t\t\tt.updateCurrent(t.newTime);\n\t\t\t\t}\n\n\t\t\t\tif (!_constants.IS_IOS && !_constants.IS_ANDROID) {\n\t\t\t\t\tif (pos < 0) {\n\t\t\t\t\t\tpos = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (t.options.useSmoothHover && cssMatrix !== null && typeof window[cssMatrix] !== 'undefined') {\n\t\t\t\t\t\tvar matrix = new window[cssMatrix](getComputedStyle(t.handle)[transform]),\n\t\t\t\t\t\t    handleLocation = matrix.m41,\n\t\t\t\t\t\t    hoverScaleX = pos / parseFloat(getComputedStyle(t.total).width) - handleLocation / parseFloat(getComputedStyle(t.total).width);\n\n\t\t\t\t\t\tt.hovered.style.left = handleLocation + 'px';\n\t\t\t\t\t\tt.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');\n\t\t\t\t\t\tt.hovered.setAttribute('pos', pos);\n\n\t\t\t\t\t\tif (hoverScaleX >= 0) {\n\t\t\t\t\t\t\t(0, _dom.removeClass)(t.hovered, 'negative');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t(0, _dom.addClass)(t.hovered, 'negative');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (t.timefloat) {\n\t\t\t\t\t\tvar half = t.timefloat.offsetWidth / 2,\n\t\t\t\t\t\t    offsetContainer = mejs.Utils.offset(t.getElement(t.container)),\n\t\t\t\t\t\t    tooltipStyles = getComputedStyle(t.timefloat);\n\n\t\t\t\t\t\tif (x - offsetContainer.left < t.timefloat.offsetWidth) {\n\t\t\t\t\t\t\tleftPos = half;\n\t\t\t\t\t\t} else if (x - offsetContainer.left >= t.getElement(t.container).offsetWidth - half) {\n\t\t\t\t\t\t\tleftPos = t.total.offsetWidth - half;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tleftPos = pos;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ((0, _dom.hasClass)(t.getElement(t.container), t.options.classPrefix + 'long-video')) {\n\t\t\t\t\t\t\tleftPos += parseFloat(tooltipStyles.marginLeft) / 2 + t.timefloat.offsetWidth / 2;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tt.timefloat.style.left = leftPos + 'px';\n\t\t\t\t\t\tt.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat);\n\t\t\t\t\t\tt.timefloat.style.display = 'block';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {\n\t\t\t\tleftPos = t.timefloat.offsetWidth + width >= t.getElement(t.container).offsetWidth ? t.timefloat.offsetWidth / 2 : 0;\n\t\t\t\tt.timefloat.style.left = leftPos + 'px';\n\t\t\t\tt.timefloat.style.left = leftPos + 'px';\n\t\t\t\tt.timefloat.style.display = 'block';\n\t\t\t}\n\t\t},\n\t\t    updateSlider = function updateSlider() {\n\t\t\tvar seconds = t.getCurrentTime(),\n\t\t\t    timeSliderText = _i18n2.default.t('mejs.time-slider'),\n\t\t\t    time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat),\n\t\t\t    duration = t.getDuration();\n\n\t\t\tt.slider.setAttribute('role', 'slider');\n\t\t\tt.slider.tabIndex = 0;\n\n\t\t\tif (media.paused) {\n\t\t\t\tt.slider.setAttribute('aria-label', timeSliderText);\n\t\t\t\tt.slider.setAttribute('aria-valuemin', 0);\n\t\t\t\tt.slider.setAttribute('aria-valuemax', isNaN(duration) ? 0 : duration);\n\t\t\t\tt.slider.setAttribute('aria-valuenow', seconds);\n\t\t\t\tt.slider.setAttribute('aria-valuetext', time);\n\t\t\t} else {\n\t\t\t\tt.slider.removeAttribute('aria-label');\n\t\t\t\tt.slider.removeAttribute('aria-valuemin');\n\t\t\t\tt.slider.removeAttribute('aria-valuemax');\n\t\t\t\tt.slider.removeAttribute('aria-valuenow');\n\t\t\t\tt.slider.removeAttribute('aria-valuetext');\n\t\t\t}\n\t\t},\n\t\t    restartPlayer = function restartPlayer() {\n\t\t\tif (new Date() - lastKeyPressTime >= 1000) {\n\t\t\t\tt.play();\n\t\t\t}\n\t\t},\n\t\t    handleMouseup = function handleMouseup() {\n\t\t\tif (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {\n\t\t\t\tt.setCurrentTime(t.newTime);\n\t\t\t\tt.setCurrentRailHandle(t.newTime);\n\t\t\t\tt.updateCurrent(t.newTime);\n\t\t\t}\n\t\t\tif (t.forcedHandlePause) {\n\t\t\t\tt.slider.focus();\n\t\t\t\tt.play();\n\t\t\t}\n\t\t\tt.forcedHandlePause = false;\n\t\t};\n\n\t\tt.slider.addEventListener('focus', function () {\n\t\t\tplayer.options.autoRewind = false;\n\t\t});\n\t\tt.slider.addEventListener('blur', function () {\n\t\t\tplayer.options.autoRewind = autoRewindInitial;\n\t\t});\n\t\tt.slider.addEventListener('keydown', function (e) {\n\t\t\tif (new Date() - lastKeyPressTime >= 1000) {\n\t\t\t\tstartedPaused = t.paused;\n\t\t\t}\n\n\t\t\tif (t.options.enableKeyboard && t.options.keyActions.length) {\n\n\t\t\t\tvar keyCode = e.which || e.keyCode || 0,\n\t\t\t\t    duration = t.getDuration(),\n\t\t\t\t    seekForward = player.options.defaultSeekForwardInterval(media),\n\t\t\t\t    seekBackward = player.options.defaultSeekBackwardInterval(media);\n\n\t\t\t\tvar seekTime = t.getCurrentTime();\n\t\t\t\tvar volume = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider');\n\n\t\t\t\tif (keyCode === 38 || keyCode === 40) {\n\t\t\t\t\tif (volume) {\n\t\t\t\t\t\tvolume.style.display = 'block';\n\t\t\t\t\t}\n\t\t\t\t\tif (t.isVideo) {\n\t\t\t\t\t\tt.showControls();\n\t\t\t\t\t\tt.startControlsTimer();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar newVolume = keyCode === 38 ? Math.min(t.volume + 0.1, 1) : Math.max(t.volume - 0.1, 0),\n\t\t\t\t\t    mutePlayer = newVolume <= 0;\n\t\t\t\t\tt.setVolume(newVolume);\n\t\t\t\t\tt.setMuted(mutePlayer);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tif (volume) {\n\t\t\t\t\t\tvolume.style.display = 'none';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (keyCode) {\n\t\t\t\t\tcase 37:\n\t\t\t\t\t\tif (t.getDuration() !== Infinity) {\n\t\t\t\t\t\t\tseekTime -= seekBackward;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 39:\n\t\t\t\t\t\tif (t.getDuration() !== Infinity) {\n\t\t\t\t\t\t\tseekTime += seekForward;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 36:\n\t\t\t\t\t\tseekTime = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 35:\n\t\t\t\t\t\tseekTime = duration;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 13:\n\t\t\t\t\tcase 32:\n\t\t\t\t\t\tif (_constants.IS_FIREFOX) {\n\t\t\t\t\t\t\tif (t.paused) {\n\t\t\t\t\t\t\t\tt.play();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt.pause();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tseekTime = seekTime < 0 || isNaN(seekTime) ? 0 : seekTime >= duration ? duration : Math.floor(seekTime);\n\t\t\t\tlastKeyPressTime = new Date();\n\t\t\t\tif (!startedPaused) {\n\t\t\t\t\tplayer.pause();\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tt.setCurrentTime(seekTime);\n\t\t\t\t}, 0);\n\n\t\t\t\tif (seekTime < t.getDuration() && !startedPaused) {\n\t\t\t\t\tsetTimeout(restartPlayer, 1100);\n\t\t\t\t}\n\n\t\t\t\tplayer.showControls();\n\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t});\n\n\t\tvar events = ['mousedown', 'touchstart'];\n\n\t\tt.slider.addEventListener('dragstart', function () {\n\t\t\treturn false;\n\t\t});\n\n\t\tfor (var i = 0, total = events.length; i < total; i++) {\n\t\t\tt.slider.addEventListener(events[i], function (e) {\n\t\t\t\tt.forcedHandlePause = false;\n\t\t\t\tif (t.getDuration() !== Infinity) {\n\t\t\t\t\tif (e.which === 1 || e.which === 0) {\n\t\t\t\t\t\tif (!t.paused) {\n\t\t\t\t\t\t\tt.pause();\n\t\t\t\t\t\t\tt.forcedHandlePause = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmouseIsDown = true;\n\t\t\t\t\t\thandleMouseMove(e);\n\t\t\t\t\t\tvar endEvents = ['mouseup', 'touchend'];\n\n\t\t\t\t\t\tfor (var j = 0, totalEvents = endEvents.length; j < totalEvents; j++) {\n\t\t\t\t\t\t\tt.getElement(t.container).addEventListener(endEvents[j], function (event) {\n\t\t\t\t\t\t\t\tvar target = event.target;\n\t\t\t\t\t\t\t\tif (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {\n\t\t\t\t\t\t\t\t\thandleMouseMove(event);\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\tt.globalBind('mouseup.dur touchend.dur', function () {\n\t\t\t\t\t\t\thandleMouseup();\n\t\t\t\t\t\t\tmouseIsDown = false;\n\t\t\t\t\t\t\tif (t.timefloat) {\n\t\t\t\t\t\t\t\tt.timefloat.style.display = 'none';\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}, _constants.SUPPORT_PASSIVE_EVENT && events[i] === 'touchstart' ? { passive: true } : false);\n\t\t}\n\t\tt.slider.addEventListener('mouseenter', function (e) {\n\t\t\tif (e.target === t.slider && t.getDuration() !== Infinity) {\n\t\t\t\tt.getElement(t.container).addEventListener('mousemove', function (event) {\n\t\t\t\t\tvar target = event.target;\n\t\t\t\t\tif (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {\n\t\t\t\t\t\thandleMouseMove(event);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) {\n\t\t\t\t\tt.timefloat.style.display = 'block';\n\t\t\t\t}\n\t\t\t\tif (t.hovered && !_constants.IS_IOS && !_constants.IS_ANDROID && t.options.useSmoothHover) {\n\t\t\t\t\t(0, _dom.removeClass)(t.hovered, 'no-hover');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tt.slider.addEventListener('mouseleave', function () {\n\t\t\tif (t.getDuration() !== Infinity) {\n\t\t\t\tif (!mouseIsDown) {\n\t\t\t\t\tif (t.timefloat) {\n\t\t\t\t\t\tt.timefloat.style.display = 'none';\n\t\t\t\t\t}\n\t\t\t\t\tif (t.hovered && t.options.useSmoothHover) {\n\t\t\t\t\t\t(0, _dom.addClass)(t.hovered, 'no-hover');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tt.broadcastCallback = function (e) {\n\t\t\tvar broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');\n\t\t\tif (!t.options.forceLive && t.getDuration() !== Infinity) {\n\t\t\t\tif (broadcast) {\n\t\t\t\t\tt.slider.style.display = '';\n\t\t\t\t\tbroadcast.remove();\n\t\t\t\t}\n\n\t\t\t\tplayer.setProgressRail(e);\n\t\t\t\tif (!t.forcedHandlePause) {\n\t\t\t\t\tplayer.setCurrentRail(e);\n\t\t\t\t}\n\t\t\t\tupdateSlider();\n\t\t\t} else if (!broadcast && t.options.forceLive) {\n\t\t\t\tvar label = _document2.default.createElement('span');\n\t\t\t\tlabel.className = t.options.classPrefix + 'broadcast';\n\t\t\t\tlabel.innerText = _i18n2.default.t('mejs.live-broadcast');\n\t\t\t\tt.slider.style.display = 'none';\n\t\t\t\tt.rail.appendChild(label);\n\t\t\t}\n\t\t};\n\n\t\tmedia.addEventListener('progress', t.broadcastCallback);\n\t\tmedia.addEventListener('timeupdate', t.broadcastCallback);\n\t\tmedia.addEventListener('play', function () {\n\t\t\tt.buffer.style.display = 'none';\n\t\t});\n\t\tmedia.addEventListener('playing', function () {\n\t\t\tt.buffer.style.display = 'none';\n\t\t});\n\t\tmedia.addEventListener('seeking', function () {\n\t\t\tt.buffer.style.display = '';\n\t\t});\n\t\tmedia.addEventListener('seeked', function () {\n\t\t\tt.buffer.style.display = 'none';\n\t\t});\n\t\tmedia.addEventListener('pause', function () {\n\t\t\tt.buffer.style.display = 'none';\n\t\t});\n\t\tmedia.addEventListener('waiting', function () {\n\t\t\tt.buffer.style.display = '';\n\t\t});\n\t\tmedia.addEventListener('loadeddata', function () {\n\t\t\tt.buffer.style.display = '';\n\t\t});\n\t\tmedia.addEventListener('canplay', function () {\n\t\t\tt.buffer.style.display = 'none';\n\t\t});\n\t\tmedia.addEventListener('error', function () {\n\t\t\tt.buffer.style.display = 'none';\n\t\t});\n\n\t\tt.getElement(t.container).addEventListener('controlsresize', function (e) {\n\t\t\tif (t.getDuration() !== Infinity) {\n\t\t\t\tplayer.setProgressRail(e);\n\t\t\t\tif (!t.forcedHandlePause) {\n\t\t\t\t\tplayer.setCurrentRail(e);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\tcleanprogress: function cleanprogress(player, controls, layers, media) {\n\t\tmedia.removeEventListener('progress', player.broadcastCallback);\n\t\tmedia.removeEventListener('timeupdate', player.broadcastCallback);\n\t\tif (player.rail) {\n\t\t\tplayer.rail.remove();\n\t\t}\n\t},\n\tsetProgressRail: function setProgressRail(e) {\n\t\tvar t = this,\n\t\t    target = e !== undefined ? e.detail.target || e.target : t.media;\n\n\t\tvar percent = null;\n\n\t\tif (target && target.buffered && target.buffered.length > 0 && target.buffered.end && t.getDuration()) {\n\t\t\tpercent = target.buffered.end(target.buffered.length - 1) / t.getDuration();\n\t\t} else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {\n\t\t\t\tpercent = target.bufferedBytes / target.bytesTotal;\n\t\t\t} else if (e && e.lengthComputable && e.total !== 0) {\n\t\t\t\t\tpercent = e.loaded / e.total;\n\t\t\t\t}\n\n\t\tif (percent !== null) {\n\t\t\tpercent = Math.min(1, Math.max(0, percent));\n\n\t\t\tif (t.loaded) {\n\t\t\t\tt.setTransformStyle(t.loaded, 'scaleX(' + percent + ')');\n\t\t\t}\n\t\t}\n\t},\n\tsetCurrentRailHandle: function setCurrentRailHandle(fakeTime) {\n\t\tvar t = this;\n\t\tt.setCurrentRailMain(t, fakeTime);\n\t},\n\tsetCurrentRail: function setCurrentRail() {\n\t\tvar t = this;\n\t\tt.setCurrentRailMain(t);\n\t},\n\tsetCurrentRailMain: function setCurrentRailMain(t, fakeTime) {\n\t\tif (t.getCurrentTime() !== undefined && t.getDuration()) {\n\t\t\tvar nTime = typeof fakeTime === 'undefined' ? t.getCurrentTime() : fakeTime;\n\n\t\t\tif (t.total && t.handle) {\n\t\t\t\tvar tW = parseFloat(getComputedStyle(t.total).width);\n\n\t\t\t\tvar newWidth = Math.round(tW * nTime / t.getDuration()),\n\t\t\t\t    handlePos = newWidth - Math.round(t.handle.offsetWidth / 2);\n\n\t\t\t\thandlePos = handlePos < 0 ? 0 : handlePos;\n\t\t\t\tt.setTransformStyle(t.current, 'scaleX(' + newWidth / tW + ')');\n\t\t\t\tt.setTransformStyle(t.handle, 'translateX(' + handlePos + 'px)');\n\n\t\t\t\tif (t.options.useSmoothHover && !(0, _dom.hasClass)(t.hovered, 'no-hover')) {\n\t\t\t\t\tvar pos = parseInt(t.hovered.getAttribute('pos'), 10);\n\t\t\t\t\tpos = isNaN(pos) ? 0 : pos;\n\n\t\t\t\t\tvar hoverScaleX = pos / tW - handlePos / tW;\n\n\t\t\t\t\tt.hovered.style.left = handlePos + 'px';\n\t\t\t\t\tt.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');\n\n\t\t\t\t\tif (hoverScaleX >= 0) {\n\t\t\t\t\t\t(0, _dom.removeClass)(t.hovered, 'negative');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t(0, _dom.addClass)(t.hovered, 'negative');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\n},{\"16\":16,\"2\":2,\"25\":25,\"26\":26,\"30\":30,\"5\":5}],12:[function(_dereq_,module,exports){\n'use strict';\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _player = _dereq_(16);\n\nvar _player2 = _interopRequireDefault(_player);\n\nvar _time = _dereq_(30);\n\nvar _dom = _dereq_(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nObject.assign(_player.config, {\n\tduration: 0,\n\n\ttimeAndDurationSeparator: '<span> | </span>'\n});\n\nObject.assign(_player2.default.prototype, {\n\tbuildcurrent: function buildcurrent(player, controls, layers, media) {\n\t\tvar t = this,\n\t\t    time = _document2.default.createElement('div');\n\n\t\ttime.className = t.options.classPrefix + 'time';\n\t\ttime.setAttribute('role', 'timer');\n\t\ttime.setAttribute('aria-live', 'off');\n\t\ttime.innerHTML = '<span class=\"' + t.options.classPrefix + 'currenttime\">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat) + '</span>';\n\n\t\tt.addControlElement(time, 'current');\n\t\tplayer.updateCurrent();\n\t\tt.updateTimeCallback = function () {\n\t\t\tif (t.controlsAreVisible) {\n\t\t\t\tplayer.updateCurrent();\n\t\t\t}\n\t\t};\n\t\tmedia.addEventListener('timeupdate', t.updateTimeCallback);\n\t},\n\tcleancurrent: function cleancurrent(player, controls, layers, media) {\n\t\tmedia.removeEventListener('timeupdate', player.updateTimeCallback);\n\t},\n\tbuildduration: function buildduration(player, controls, layers, media) {\n\t\tvar t = this,\n\t\t    currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');\n\n\t\tif (currTime) {\n\t\t\tcontrols.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class=\"' + t.options.classPrefix + 'duration\">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>');\n\t\t} else {\n\t\t\tif (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {\n\t\t\t\t(0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');\n\t\t\t}\n\n\t\t\tvar duration = _document2.default.createElement('div');\n\t\t\tduration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container';\n\t\t\tduration.innerHTML = '<span class=\"' + t.options.classPrefix + 'duration\">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>');\n\n\t\t\tt.addControlElement(duration, 'duration');\n\t\t}\n\n\t\tt.updateDurationCallback = function () {\n\t\t\tif (t.controlsAreVisible) {\n\t\t\t\tplayer.updateDuration();\n\t\t\t}\n\t\t};\n\n\t\tmedia.addEventListener('timeupdate', t.updateDurationCallback);\n\t},\n\tcleanduration: function cleanduration(player, controls, layers, media) {\n\t\tmedia.removeEventListener('timeupdate', player.updateDurationCallback);\n\t},\n\tupdateCurrent: function updateCurrent() {\n\t\tvar t = this;\n\n\t\tvar currentTime = t.getCurrentTime();\n\n\t\tif (isNaN(currentTime)) {\n\t\t\tcurrentTime = 0;\n\t\t}\n\n\t\tvar timecode = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat);\n\n\t\tif (timecode.length > 5) {\n\t\t\t(0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');\n\t\t} else {\n\t\t\t(0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');\n\t\t}\n\n\t\tif (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime')) {\n\t\t\tt.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime').innerText = timecode;\n\t\t}\n\t},\n\tupdateDuration: function updateDuration() {\n\t\tvar t = this;\n\n\t\tvar duration = t.getDuration();\n\n\t\tif (t.media !== undefined && (isNaN(duration) || duration === Infinity || duration < 0)) {\n\t\t\tt.media.duration = t.options.duration = duration = 0;\n\t\t}\n\n\t\tif (t.options.duration > 0) {\n\t\t\tduration = t.options.duration;\n\t\t}\n\n\t\tvar timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat);\n\n\t\tif (timecode.length > 5) {\n\t\t\t(0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');\n\t\t} else {\n\t\t\t(0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');\n\t\t}\n\n\t\tif (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) {\n\t\t\tt.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode;\n\t\t}\n\t}\n});\n\n},{\"16\":16,\"2\":2,\"26\":26,\"30\":30}],13:[function(_dereq_,module,exports){\n'use strict';\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _i18n = _dereq_(5);\n\nvar _i18n2 = _interopRequireDefault(_i18n);\n\nvar _player = _dereq_(16);\n\nvar _player2 = _interopRequireDefault(_player);\n\nvar _time = _dereq_(30);\n\nvar _general = _dereq_(27);\n\nvar _dom = _dereq_(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nObject.assign(_player.config, {\n\tstartLanguage: '',\n\n\ttracksText: null,\n\n\tchaptersText: null,\n\n\ttracksAriaLive: false,\n\n\thideCaptionsButtonWhenEmpty: true,\n\n\ttoggleCaptionsButtonWhenOnlyOne: false,\n\n\tslidesSelector: ''\n});\n\nObject.assign(_player2.default.prototype, {\n\thasChapters: false,\n\n\tbuildtracks: function buildtracks(player, controls, layers, media) {\n\n\t\tthis.findTracks();\n\n\t\tif (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar t = this,\n\t\t    attr = t.options.tracksAriaLive ? ' role=\"log\" aria-live=\"assertive\" aria-atomic=\"false\"' : '',\n\t\t    tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'),\n\t\t    chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),\n\t\t    total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length;\n\n\t\tif (t.domNode.textTracks) {\n\t\t\tfor (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {\n\t\t\t\tt.domNode.textTracks[i].mode = 'hidden';\n\t\t\t}\n\t\t}\n\n\t\tt.cleartracks(player);\n\n\t\tplayer.captions = _document2.default.createElement('div');\n\t\tplayer.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer';\n\t\tplayer.captions.innerHTML = '<div class=\"' + t.options.classPrefix + 'captions-position ' + t.options.classPrefix + 'captions-position-hover\"' + attr + '>' + ('<span class=\"' + t.options.classPrefix + 'captions-text\"></span>') + '</div>';\n\t\tplayer.captions.style.display = 'none';\n\t\tlayers.insertBefore(player.captions, layers.firstChild);\n\n\t\tplayer.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text');\n\n\t\tplayer.captionsButton = _document2.default.createElement('div');\n\t\tplayer.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button';\n\t\tplayer.captionsButton.innerHTML = '<button type=\"button\" aria-controls=\"' + t.id + '\" title=\"' + tracksTitle + '\" aria-label=\"' + tracksTitle + '\" tabindex=\"0\"></button>' + ('<div class=\"' + t.options.classPrefix + 'captions-selector ' + t.options.classPrefix + 'offscreen\">') + ('<ul class=\"' + t.options.classPrefix + 'captions-selector-list\">') + ('<li class=\"' + t.options.classPrefix + 'captions-selector-list-item\">') + ('<input type=\"radio\" class=\"' + t.options.classPrefix + 'captions-selector-input\" ') + ('name=\"' + player.id + '_captions\" id=\"' + player.id + '_captions_none\" ') + 'value=\"none\" checked disabled>' + ('<label class=\"' + t.options.classPrefix + 'captions-selector-label ') + (t.options.classPrefix + 'captions-selected\" ') + ('for=\"' + player.id + '_captions_none\">' + _i18n2.default.t('mejs.none') + '</label>') + '</li>' + '</ul>' + '</div>';\n\n\t\tt.addControlElement(player.captionsButton, 'tracks');\n\n\t\tplayer.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-input').disabled = false;\n\n\t\tplayer.chaptersButton = _document2.default.createElement('div');\n\t\tplayer.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button';\n\t\tplayer.chaptersButton.innerHTML = '<button type=\"button\" aria-controls=\"' + t.id + '\" title=\"' + chaptersTitle + '\" aria-label=\"' + chaptersTitle + '\" tabindex=\"0\"></button>' + ('<div class=\"' + t.options.classPrefix + 'chapters-selector ' + t.options.classPrefix + 'offscreen\">') + ('<ul class=\"' + t.options.classPrefix + 'chapters-selector-list\"></ul>') + '</div>';\n\n\t\tvar subtitleCount = 0;\n\n\t\tfor (var _i = 0; _i < total; _i++) {\n\t\t\tvar kind = player.tracks[_i].kind,\n\t\t\t    src = player.tracks[_i].src;\n\t\t\tif (src.trim()) {\n\t\t\t\tif (kind === 'subtitles' || kind === 'captions') {\n\t\t\t\t\tsubtitleCount++;\n\t\t\t\t} else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) {\n\t\t\t\t\tplayer.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tplayer.trackToLoad = -1;\n\t\tplayer.selectedTrack = null;\n\t\tplayer.isLoadingTrack = false;\n\n\t\tfor (var _i2 = 0; _i2 < total; _i2++) {\n\t\t\tvar _kind = player.tracks[_i2].kind;\n\t\t\tif (player.tracks[_i2].src.trim() && (_kind === 'subtitles' || _kind === 'captions')) {\n\t\t\t\tplayer.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label);\n\t\t\t}\n\t\t}\n\n\t\tplayer.loadNextTrack();\n\n\t\tvar inEvents = ['mouseenter', 'focusin'],\n\t\t    outEvents = ['mouseleave', 'focusout'];\n\n\t\tif (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {\n\t\t\tplayer.captionsButton.addEventListener('click', function (e) {\n\t\t\t\tvar trackId = 'none';\n\t\t\t\tif (player.selectedTrack === null) {\n\t\t\t\t\ttrackId = player.tracks[0].trackId;\n\t\t\t\t}\n\t\t\t\tvar keyboard = e.keyCode || e.which;\n\t\t\t\tplayer.setTrack(trackId, typeof keyboard !== 'undefined');\n\t\t\t});\n\t\t} else {\n\t\t\tvar labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),\n\t\t\t    captions = player.captionsButton.querySelectorAll('input[type=radio]');\n\n\t\t\tfor (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {\n\t\t\t\tplayer.captionsButton.addEventListener(inEvents[_i3], function () {\n\t\t\t\t\t(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) {\n\t\t\t\tplayer.captionsButton.addEventListener(outEvents[_i4], function () {\n\t\t\t\t\t(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {\n\t\t\t\tcaptions[_i5].addEventListener('click', function (e) {\n\t\t\t\t\tvar keyboard = e.keyCode || e.which;\n\t\t\t\t\tplayer.setTrack(this.value, typeof keyboard !== 'undefined');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfor (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) {\n\t\t\t\tlabels[_i6].addEventListener('click', function (e) {\n\t\t\t\t\tvar radio = (0, _dom.siblings)(this, function (el) {\n\t\t\t\t\t\treturn el.tagName === 'INPUT';\n\t\t\t\t\t})[0],\n\t\t\t\t\t    event = (0, _general.createEvent)('click', radio);\n\t\t\t\t\tradio.dispatchEvent(event);\n\t\t\t\t\te.preventDefault();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tplayer.captionsButton.addEventListener('keydown', function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\t\t}\n\n\t\tfor (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) {\n\t\t\tplayer.chaptersButton.addEventListener(inEvents[_i7], function () {\n\t\t\t\tif (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').children.length) {\n\t\t\t\t\t(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfor (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) {\n\t\t\tplayer.chaptersButton.addEventListener(outEvents[_i8], function () {\n\t\t\t\t(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');\n\t\t\t});\n\t\t}\n\n\t\tplayer.chaptersButton.addEventListener('keydown', function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif (!player.options.alwaysShowControls) {\n\t\t\tplayer.getElement(player.container).addEventListener('controlsshown', function () {\n\t\t\t\t(0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');\n\t\t\t});\n\n\t\t\tplayer.getElement(player.container).addEventListener('controlshidden', function () {\n\t\t\t\tif (!media.paused) {\n\t\t\t\t\t(0, _dom.removeClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t(0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');\n\t\t}\n\n\t\tmedia.addEventListener('timeupdate', function () {\n\t\t\tplayer.displayCaptions();\n\t\t});\n\n\t\tif (player.options.slidesSelector !== '') {\n\t\t\tplayer.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector);\n\n\t\t\tmedia.addEventListener('timeupdate', function () {\n\t\t\t\tplayer.displaySlides();\n\t\t\t});\n\t\t}\n\t},\n\tcleartracks: function cleartracks(player) {\n\t\tif (player) {\n\t\t\tif (player.captions) {\n\t\t\t\tplayer.captions.remove();\n\t\t\t}\n\t\t\tif (player.chapters) {\n\t\t\t\tplayer.chapters.remove();\n\t\t\t}\n\t\t\tif (player.captionsText) {\n\t\t\t\tplayer.captionsText.remove();\n\t\t\t}\n\t\t\tif (player.captionsButton) {\n\t\t\t\tplayer.captionsButton.remove();\n\t\t\t}\n\t\t\tif (player.chaptersButton) {\n\t\t\t\tplayer.chaptersButton.remove();\n\t\t\t}\n\t\t}\n\t},\n\trebuildtracks: function rebuildtracks() {\n\t\tvar t = this;\n\t\tt.findTracks();\n\t\tt.buildtracks(t, t.getElement(t.controls), t.getElement(t.layers), t.media);\n\t},\n\tfindTracks: function findTracks() {\n\t\tvar t = this,\n\t\t    tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles,\n\t\t    total = tracktags.length;\n\n\t\tt.tracks = [];\n\t\tfor (var i = 0; i < total; i++) {\n\t\t\tvar track = tracktags[i],\n\t\t\t    srclang = track.getAttribute('srclang').toLowerCase() || '',\n\t\t\t    trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang;\n\t\t\tt.tracks.push({\n\t\t\t\ttrackId: trackId,\n\t\t\t\tsrclang: srclang,\n\t\t\t\tsrc: track.getAttribute('src'),\n\t\t\t\tkind: track.getAttribute('kind'),\n\t\t\t\tlabel: track.getAttribute('label') || '',\n\t\t\t\tentries: [],\n\t\t\t\tisLoaded: false\n\t\t\t});\n\t\t}\n\t},\n\tsetTrack: function setTrack(trackId, setByKeyboard) {\n\n\t\tvar t = this,\n\t\t    radios = t.captionsButton.querySelectorAll('input[type=\"radio\"]'),\n\t\t    captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'),\n\t\t    track = t.captionsButton.querySelector('input[value=\"' + trackId + '\"]');\n\n\t\tfor (var i = 0, total = radios.length; i < total; i++) {\n\t\t\tradios[i].checked = false;\n\t\t}\n\n\t\tfor (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) {\n\t\t\t(0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected');\n\t\t}\n\n\t\ttrack.checked = true;\n\t\tvar labels = (0, _dom.siblings)(track, function (el) {\n\t\t\treturn (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');\n\t\t});\n\t\tfor (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) {\n\t\t\t(0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected');\n\t\t}\n\n\t\tif (trackId === 'none') {\n\t\t\tt.selectedTrack = null;\n\t\t\t(0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');\n\t\t} else {\n\t\t\tfor (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) {\n\t\t\t\tvar _track = t.tracks[_i11];\n\t\t\t\tif (_track.trackId === trackId) {\n\t\t\t\t\tif (t.selectedTrack === null) {\n\t\t\t\t\t\t(0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');\n\t\t\t\t\t}\n\t\t\t\t\tt.selectedTrack = _track;\n\t\t\t\t\tt.captions.setAttribute('lang', t.selectedTrack.srclang);\n\t\t\t\t\tt.displayCaptions();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar event = (0, _general.createEvent)('captionschange', t.media);\n\t\tevent.detail.caption = t.selectedTrack;\n\t\tt.media.dispatchEvent(event);\n\n\t\tif (!setByKeyboard) {\n\t\t\tsetTimeout(function () {\n\t\t\t\tt.getElement(t.container).focus();\n\t\t\t}, 500);\n\t\t}\n\t},\n\tloadNextTrack: function loadNextTrack() {\n\t\tvar t = this;\n\n\t\tt.trackToLoad++;\n\t\tif (t.trackToLoad < t.tracks.length) {\n\t\t\tt.isLoadingTrack = true;\n\t\t\tt.loadTrack(t.trackToLoad);\n\t\t} else {\n\t\t\tt.isLoadingTrack = false;\n\t\t\tt.checkForTracks();\n\t\t}\n\t},\n\tloadTrack: function loadTrack(index) {\n\t\tvar t = this,\n\t\t    track = t.tracks[index];\n\n\t\tif (track !== undefined && (track.src !== undefined || track.src !== \"\")) {\n\t\t\t(0, _dom.ajax)(track.src, 'text', function (d) {\n\t\t\t\ttrack.entries = typeof d === 'string' && /<tt\\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);\n\n\t\t\t\ttrack.isLoaded = true;\n\t\t\t\tt.enableTrackButton(track);\n\t\t\t\tt.loadNextTrack();\n\n\t\t\t\tif (track.kind === 'slides') {\n\t\t\t\t\tt.setupSlides(track);\n\t\t\t\t} else if (track.kind === 'chapters' && !t.hasChapters) {\n\t\t\t\t\t\tt.drawChapters(track);\n\t\t\t\t\t\tt.hasChapters = true;\n\t\t\t\t\t}\n\t\t\t}, function () {\n\t\t\t\tt.removeTrackButton(track.trackId);\n\t\t\t\tt.loadNextTrack();\n\t\t\t});\n\t\t}\n\t},\n\tenableTrackButton: function enableTrackButton(track) {\n\t\tvar t = this,\n\t\t    lang = track.srclang,\n\t\t    target = _document2.default.getElementById('' + track.trackId);\n\n\t\tif (!target) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar label = track.label;\n\n\t\tif (label === '') {\n\t\t\tlabel = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;\n\t\t}\n\t\ttarget.disabled = false;\n\t\tvar targetSiblings = (0, _dom.siblings)(target, function (el) {\n\t\t\treturn (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');\n\t\t});\n\t\tfor (var i = 0, total = targetSiblings.length; i < total; i++) {\n\t\t\ttargetSiblings[i].innerHTML = label;\n\t\t}\n\n\t\tif (t.options.startLanguage === lang) {\n\t\t\ttarget.checked = true;\n\t\t\tvar event = (0, _general.createEvent)('click', target);\n\t\t\ttarget.dispatchEvent(event);\n\t\t}\n\t},\n\tremoveTrackButton: function removeTrackButton(trackId) {\n\t\tvar element = _document2.default.getElementById('' + trackId);\n\t\tif (element) {\n\t\t\tvar button = element.closest('li');\n\t\t\tif (button) {\n\t\t\t\tbutton.remove();\n\t\t\t}\n\t\t}\n\t},\n\taddTrackButton: function addTrackButton(trackId, lang, label) {\n\t\tvar t = this;\n\t\tif (label === '') {\n\t\t\tlabel = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;\n\t\t}\n\n\t\tt.captionsButton.querySelector('ul').innerHTML += '<li class=\"' + t.options.classPrefix + 'captions-selector-list-item\">' + ('<input type=\"radio\" class=\"' + t.options.classPrefix + 'captions-selector-input\" ') + ('name=\"' + t.id + '_captions\" id=\"' + trackId + '\" value=\"' + trackId + '\" disabled>') + ('<label class=\"' + t.options.classPrefix + 'captions-selector-label\"') + ('for=\"' + trackId + '\">' + label + ' (loading)</label>') + '</li>';\n\t},\n\tcheckForTracks: function checkForTracks() {\n\t\tvar t = this;\n\n\t\tvar hasSubtitles = false;\n\n\t\tif (t.options.hideCaptionsButtonWhenEmpty) {\n\t\t\tfor (var i = 0, total = t.tracks.length; i < total; i++) {\n\t\t\t\tvar kind = t.tracks[i].kind;\n\t\t\t\tif ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) {\n\t\t\t\t\thasSubtitles = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tt.captionsButton.style.display = hasSubtitles ? '' : 'none';\n\t\t\tt.setControlsSize();\n\t\t}\n\t},\n\tdisplayCaptions: function displayCaptions() {\n\t\tif (this.tracks === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar t = this,\n\t\t    track = t.selectedTrack,\n\t\t    sanitize = function sanitize(html) {\n\t\t\tvar div = _document2.default.createElement('div');\n\t\t\tdiv.innerHTML = html;\n\n\t\t\tvar scripts = div.getElementsByTagName('script');\n\t\t\tvar i = scripts.length;\n\t\t\twhile (i--) {\n\t\t\t\tscripts[i].remove();\n\t\t\t}\n\n\t\t\tvar allElements = div.getElementsByTagName('*');\n\t\t\tfor (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {\n\t\t\t\tvar attributesObj = allElements[_i12].attributes,\n\t\t\t\t    attributes = Array.prototype.slice.call(attributesObj);\n\n\t\t\t\tfor (var j = 0, total = attributes.length; j < total; j++) {\n\t\t\t\t\tif (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) {\n\t\t\t\t\t\tallElements[_i12].remove();\n\t\t\t\t\t} else if (attributes[j].name === 'style') {\n\t\t\t\t\t\tallElements[_i12].removeAttribute(attributes[j].name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn div.innerHTML;\n\t\t};\n\n\t\tif (track !== null && track.isLoaded) {\n\t\t\tvar i = t.searchTrackPosition(track.entries, t.media.currentTime);\n\t\t\tif (i > -1) {\n\t\t\t\tvar text = track.entries[i].text;\n\t\t\t\tif (typeof t.options.captionTextPreprocessor === 'function') text = t.options.captionTextPreprocessor(text);\n\t\t\t\tt.captionsText.innerHTML = sanitize(text);\n\t\t\t\tt.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');\n\t\t\t\tt.captions.style.display = '';\n\t\t\t\tt.captions.style.height = '0px';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tt.captions.style.display = 'none';\n\t\t} else {\n\t\t\tt.captions.style.display = 'none';\n\t\t}\n\t},\n\tsetupSlides: function setupSlides(track) {\n\t\tvar t = this;\n\t\tt.slides = track;\n\t\tt.slides.entries.imgs = [t.slides.entries.length];\n\t\tt.showSlide(0);\n\t},\n\tshowSlide: function showSlide(index) {\n\t\tvar _this = this;\n\n\t\tvar t = this;\n\n\t\tif (t.tracks === undefined || t.slidesContainer === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar url = t.slides.entries[index].text;\n\n\t\tvar img = t.slides.entries[index].imgs;\n\n\t\tif (img === undefined || img.fadeIn === undefined) {\n\t\t\tvar image = _document2.default.createElement('img');\n\t\t\timage.src = url;\n\t\t\timage.addEventListener('load', function () {\n\t\t\t\tvar self = _this,\n\t\t\t\t    visible = (0, _dom.siblings)(self, function (el) {\n\t\t\t\t\treturn visible(el);\n\t\t\t\t});\n\t\t\t\tself.style.display = 'none';\n\t\t\t\tt.slidesContainer.innerHTML += self.innerHTML;\n\t\t\t\t(0, _dom.fadeIn)(t.slidesContainer.querySelector(image));\n\t\t\t\tfor (var i = 0, total = visible.length; i < total; i++) {\n\t\t\t\t\t(0, _dom.fadeOut)(visible[i], 400);\n\t\t\t\t}\n\t\t\t});\n\t\t\tt.slides.entries[index].imgs = img = image;\n\t\t} else if (!(0, _dom.visible)(img)) {\n\t\t\tvar _visible = (0, _dom.siblings)(self, function (el) {\n\t\t\t\treturn _visible(el);\n\t\t\t});\n\t\t\t(0, _dom.fadeIn)(t.slidesContainer.querySelector(img));\n\t\t\tfor (var i = 0, total = _visible.length; i < total; i++) {\n\t\t\t\t(0, _dom.fadeOut)(_visible[i]);\n\t\t\t}\n\t\t}\n\t},\n\tdisplaySlides: function displaySlides() {\n\t\tvar t = this;\n\n\t\tif (this.slides === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar slides = t.slides,\n\t\t    i = t.searchTrackPosition(slides.entries, t.media.currentTime);\n\n\t\tif (i > -1) {\n\t\t\tt.showSlide(i);\n\t\t}\n\t},\n\tdrawChapters: function drawChapters(chapters) {\n\t\tvar t = this,\n\t\t    total = chapters.entries.length;\n\n\t\tif (!total) {\n\t\t\treturn;\n\t\t}\n\n\t\tt.chaptersButton.querySelector('ul').innerHTML = '';\n\n\t\tfor (var i = 0; i < total; i++) {\n\t\t\tt.chaptersButton.querySelector('ul').innerHTML += '<li class=\"' + t.options.classPrefix + 'chapters-selector-list-item\" ' + 'role=\"menuitemcheckbox\" aria-live=\"polite\" aria-disabled=\"false\" aria-checked=\"false\">' + ('<input type=\"radio\" class=\"' + t.options.classPrefix + 'captions-selector-input\" ') + ('name=\"' + t.id + '_chapters\" id=\"' + t.id + '_chapters_' + i + '\" value=\"' + chapters.entries[i].start + '\" disabled>') + ('<label class=\"' + t.options.classPrefix + 'chapters-selector-label\"') + ('for=\"' + t.id + '_chapters_' + i + '\">' + chapters.entries[i].text + '</label>') + '</li>';\n\t\t}\n\n\t\tvar radios = t.chaptersButton.querySelectorAll('input[type=\"radio\"]'),\n\t\t    labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label');\n\n\t\tfor (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) {\n\t\t\tradios[_i13].disabled = false;\n\t\t\tradios[_i13].checked = false;\n\t\t\tradios[_i13].addEventListener('click', function (e) {\n\t\t\t\tvar self = this,\n\t\t\t\t    listItems = t.chaptersButton.querySelectorAll('li'),\n\t\t\t\t    label = (0, _dom.siblings)(self, function (el) {\n\t\t\t\t\treturn (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label');\n\t\t\t\t})[0];\n\n\t\t\t\tself.checked = true;\n\t\t\t\tself.parentNode.setAttribute('aria-checked', true);\n\t\t\t\t(0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected');\n\t\t\t\t(0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected');\n\n\t\t\t\tfor (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) {\n\t\t\t\t\tlistItems[_i14].setAttribute('aria-checked', false);\n\t\t\t\t}\n\n\t\t\t\tvar keyboard = e.keyCode || e.which;\n\t\t\t\tif (typeof keyboard === 'undefined') {\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tt.getElement(t.container).focus();\n\t\t\t\t\t}, 500);\n\t\t\t\t}\n\n\t\t\t\tt.media.setCurrentTime(parseFloat(self.value));\n\t\t\t\tif (t.media.paused) {\n\t\t\t\t\tt.media.play();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfor (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) {\n\t\t\tlabels[_i15].addEventListener('click', function (e) {\n\t\t\t\tvar radio = (0, _dom.siblings)(this, function (el) {\n\t\t\t\t\treturn el.tagName === 'INPUT';\n\t\t\t\t})[0],\n\t\t\t\t    event = (0, _general.createEvent)('click', radio);\n\t\t\t\tradio.dispatchEvent(event);\n\t\t\t\te.preventDefault();\n\t\t\t});\n\t\t}\n\t},\n\tsearchTrackPosition: function searchTrackPosition(tracks, currentTime) {\n\t\tvar lo = 0,\n\t\t    hi = tracks.length - 1,\n\t\t    mid = void 0,\n\t\t    start = void 0,\n\t\t    stop = void 0;\n\n\t\twhile (lo <= hi) {\n\t\t\tmid = lo + hi >> 1;\n\t\t\tstart = tracks[mid].start;\n\t\t\tstop = tracks[mid].stop;\n\n\t\t\tif (currentTime >= start && currentTime < stop) {\n\t\t\t\treturn mid;\n\t\t\t} else if (start < currentTime) {\n\t\t\t\tlo = mid + 1;\n\t\t\t} else if (start > currentTime) {\n\t\t\t\thi = mid - 1;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t}\n});\n\n_mejs2.default.language = {\n\tcodes: {\n\t\taf: 'mejs.afrikaans',\n\t\tsq: 'mejs.albanian',\n\t\tar: 'mejs.arabic',\n\t\tbe: 'mejs.belarusian',\n\t\tbg: 'mejs.bulgarian',\n\t\tca: 'mejs.catalan',\n\t\tzh: 'mejs.chinese',\n\t\t'zh-cn': 'mejs.chinese-simplified',\n\t\t'zh-tw': 'mejs.chines-traditional',\n\t\thr: 'mejs.croatian',\n\t\tcs: 'mejs.czech',\n\t\tda: 'mejs.danish',\n\t\tnl: 'mejs.dutch',\n\t\ten: 'mejs.english',\n\t\tet: 'mejs.estonian',\n\t\tfl: 'mejs.filipino',\n\t\tfi: 'mejs.finnish',\n\t\tfr: 'mejs.french',\n\t\tgl: 'mejs.galician',\n\t\tde: 'mejs.german',\n\t\tel: 'mejs.greek',\n\t\tht: 'mejs.haitian-creole',\n\t\tiw: 'mejs.hebrew',\n\t\thi: 'mejs.hindi',\n\t\thu: 'mejs.hungarian',\n\t\tis: 'mejs.icelandic',\n\t\tid: 'mejs.indonesian',\n\t\tga: 'mejs.irish',\n\t\tit: 'mejs.italian',\n\t\tja: 'mejs.japanese',\n\t\tko: 'mejs.korean',\n\t\tlv: 'mejs.latvian',\n\t\tlt: 'mejs.lithuanian',\n\t\tmk: 'mejs.macedonian',\n\t\tms: 'mejs.malay',\n\t\tmt: 'mejs.maltese',\n\t\tno: 'mejs.norwegian',\n\t\tfa: 'mejs.persian',\n\t\tpl: 'mejs.polish',\n\t\tpt: 'mejs.portuguese',\n\t\tro: 'mejs.romanian',\n\t\tru: 'mejs.russian',\n\t\tsr: 'mejs.serbian',\n\t\tsk: 'mejs.slovak',\n\t\tsl: 'mejs.slovenian',\n\t\tes: 'mejs.spanish',\n\t\tsw: 'mejs.swahili',\n\t\tsv: 'mejs.swedish',\n\t\ttl: 'mejs.tagalog',\n\t\tth: 'mejs.thai',\n\t\ttr: 'mejs.turkish',\n\t\tuk: 'mejs.ukrainian',\n\t\tvi: 'mejs.vietnamese',\n\t\tcy: 'mejs.welsh',\n\t\tyi: 'mejs.yiddish'\n\t}\n};\n\n_mejs2.default.TrackFormatParser = {\n\twebvtt: {\n\t\tpattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,\n\n\t\tparse: function parse(trackText) {\n\t\t\tvar lines = trackText.split(/\\r?\\n/),\n\t\t\t    entries = [];\n\n\t\t\tvar timecode = void 0,\n\t\t\t    text = void 0,\n\t\t\t    identifier = void 0;\n\n\t\t\tfor (var i = 0, total = lines.length; i < total; i++) {\n\t\t\t\ttimecode = this.pattern.exec(lines[i]);\n\n\t\t\t\tif (timecode && i < lines.length) {\n\t\t\t\t\tif (i - 1 >= 0 && lines[i - 1] !== '') {\n\t\t\t\t\t\tidentifier = lines[i - 1];\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\n\t\t\t\t\ttext = lines[i];\n\t\t\t\t\ti++;\n\t\t\t\t\twhile (lines[i] !== '' && i < lines.length) {\n\t\t\t\t\t\ttext = text + '\\n' + lines[i];\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\ttext = text === null ? '' : text.trim().replace(/(\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])/ig, \"<a href='$1' target='_blank'>$1</a>\");\n\t\t\t\t\tentries.push({\n\t\t\t\t\t\tidentifier: identifier,\n\t\t\t\t\t\tstart: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]),\n\t\t\t\t\t\tstop: (0, _time.convertSMPTEtoSeconds)(timecode[3]),\n\t\t\t\t\t\ttext: text,\n\t\t\t\t\t\tsettings: timecode[5]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tidentifier = '';\n\t\t\t}\n\t\t\treturn entries;\n\t\t}\n\t},\n\n\tdfxp: {\n\t\tparse: function parse(trackText) {\n\t\t\tvar trackElem = _document2.default.adoptNode(new DOMParser().parseFromString(trackText, 'application/xml').documentElement),\n\t\t\t    container = trackElem.querySelector('div'),\n\t\t\t    lines = container.querySelectorAll('p'),\n\t\t\t    styleNode = _document2.default.getElementById(container.getAttribute('style')),\n\t\t\t    entries = [];\n\n\t\t\tvar styles = void 0;\n\n\t\t\tif (styleNode) {\n\t\t\t\tstyleNode.removeAttribute('id');\n\t\t\t\tvar attributes = styleNode.attributes;\n\t\t\t\tif (attributes.length) {\n\t\t\t\t\tstyles = {};\n\t\t\t\t\tfor (var i = 0, total = attributes.length; i < total; i++) {\n\t\t\t\t\t\tstyles[attributes[i].name.split(\":\")[1]] = attributes[i].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) {\n\t\t\t\tvar style = void 0,\n\t\t\t\t    _temp = {\n\t\t\t\t\tstart: null,\n\t\t\t\t\tstop: null,\n\t\t\t\t\tstyle: null,\n\t\t\t\t\ttext: null\n\t\t\t\t};\n\n\t\t\t\tif (lines[_i16].getAttribute('begin')) {\n\t\t\t\t\t_temp.start = (0, _time.convertSMPTEtoSeconds)(lines[_i16].getAttribute('begin'));\n\t\t\t\t}\n\t\t\t\tif (!_temp.start && lines[_i16 - 1].getAttribute('end')) {\n\t\t\t\t\t_temp.start = (0, _time.convertSMPTEtoSeconds)(lines[_i16 - 1].getAttribute('end'));\n\t\t\t\t}\n\t\t\t\tif (lines[_i16].getAttribute('end')) {\n\t\t\t\t\t_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines[_i16].getAttribute('end'));\n\t\t\t\t}\n\t\t\t\tif (!_temp.stop && lines[_i16 + 1].getAttribute('begin')) {\n\t\t\t\t\t_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines[_i16 + 1].getAttribute('begin'));\n\t\t\t\t}\n\n\t\t\t\tif (styles) {\n\t\t\t\t\tstyle = '';\n\t\t\t\t\tfor (var _style in styles) {\n\t\t\t\t\t\tstyle += _style + ': ' + styles[_style] + ';';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (style) {\n\t\t\t\t\t_temp.style = style;\n\t\t\t\t}\n\t\t\t\tif (_temp.start === 0) {\n\t\t\t\t\t_temp.start = 0.200;\n\t\t\t\t}\n\t\t\t\t_temp.text = lines[_i16].innerHTML.trim().replace(/(\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&@#\\/%?=~_| !:, .; ]*[-A-Z0-9+&@#\\/%=~_|])/ig, \"<a href='$1' target='_blank'>$1</a>\");\n\t\t\t\tentries.push(_temp);\n\t\t\t}\n\t\t\treturn entries;\n\t\t}\n\t}\n};\n\n},{\"16\":16,\"2\":2,\"26\":26,\"27\":27,\"30\":30,\"5\":5,\"7\":7}],14:[function(_dereq_,module,exports){\n'use strict';\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _player = _dereq_(16);\n\nvar _player2 = _interopRequireDefault(_player);\n\nvar _i18n = _dereq_(5);\n\nvar _i18n2 = _interopRequireDefault(_i18n);\n\nvar _constants = _dereq_(25);\n\nvar _general = _dereq_(27);\n\nvar _dom = _dereq_(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nObject.assign(_player.config, {\n\tmuteText: null,\n\n\tunmuteText: null,\n\n\tallyVolumeControlText: null,\n\n\thideVolumeOnTouchDevices: true,\n\n\taudioVolume: 'horizontal',\n\n\tvideoVolume: 'vertical',\n\n\tstartVolume: 0.8\n});\n\nObject.assign(_player2.default.prototype, {\n\tbuildvolume: function buildvolume(player, controls, layers, media) {\n\t\tif ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar t = this,\n\t\t    mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume,\n\t\t    muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'),\n\t\t    unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'),\n\t\t    volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'),\n\t\t    mute = _document2.default.createElement('div');\n\n\t\tmute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';\n\t\tmute.innerHTML = mode === 'horizontal' ? '<button type=\"button\" aria-controls=\"' + t.id + '\" title=\"' + muteText + '\" aria-label=\"' + muteText + '\" tabindex=\"0\"></button>' : '<button type=\"button\" aria-controls=\"' + t.id + '\" title=\"' + muteText + '\" aria-label=\"' + muteText + '\" tabindex=\"0\"></button>' + ('<a href=\"javascript:void(0);\" class=\"' + t.options.classPrefix + 'volume-slider\" ') + ('aria-label=\"' + _i18n2.default.t('mejs.volume-slider') + '\" aria-valuemin=\"0\" aria-valuemax=\"100\" role=\"slider\" ') + 'aria-orientation=\"vertical\">' + ('<span class=\"' + t.options.classPrefix + 'offscreen\">' + volumeControlText + '</span>') + ('<div class=\"' + t.options.classPrefix + 'volume-total\">') + ('<div class=\"' + t.options.classPrefix + 'volume-current\"></div>') + ('<div class=\"' + t.options.classPrefix + 'volume-handle\"></div>') + '</div>' + '</a>';\n\n\t\tt.addControlElement(mute, 'volume');\n\n\t\tt.options.keyActions.push({\n\t\t\tkeys: [38],\n\t\t\taction: function action(player) {\n\t\t\t\tvar volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');\n\t\t\t\tif (volumeSlider && volumeSlider.matches(':focus')) {\n\t\t\t\t\tvolumeSlider.style.display = 'block';\n\t\t\t\t}\n\t\t\t\tif (player.isVideo) {\n\t\t\t\t\tplayer.showControls();\n\t\t\t\t\tplayer.startControlsTimer();\n\t\t\t\t}\n\n\t\t\t\tvar newVolume = Math.min(player.volume + 0.1, 1);\n\t\t\t\tplayer.setVolume(newVolume);\n\t\t\t\tif (newVolume > 0) {\n\t\t\t\t\tplayer.setMuted(false);\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkeys: [40],\n\t\t\taction: function action(player) {\n\t\t\t\tvar volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');\n\t\t\t\tif (volumeSlider) {\n\t\t\t\t\tvolumeSlider.style.display = 'block';\n\t\t\t\t}\n\n\t\t\t\tif (player.isVideo) {\n\t\t\t\t\tplayer.showControls();\n\t\t\t\t\tplayer.startControlsTimer();\n\t\t\t\t}\n\n\t\t\t\tvar newVolume = Math.max(player.volume - 0.1, 0);\n\t\t\t\tplayer.setVolume(newVolume);\n\n\t\t\t\tif (newVolume <= 0.1) {\n\t\t\t\t\tplayer.setMuted(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkeys: [77],\n\t\t\taction: function action(player) {\n\t\t\t\tvar volumeSlider = player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'volume-slider');\n\t\t\t\tif (volumeSlider) {\n\t\t\t\t\tvolumeSlider.style.display = 'block';\n\t\t\t\t}\n\n\t\t\t\tif (player.isVideo) {\n\t\t\t\t\tplayer.showControls();\n\t\t\t\t\tplayer.startControlsTimer();\n\t\t\t\t}\n\t\t\t\tif (player.media.muted) {\n\t\t\t\t\tplayer.setMuted(false);\n\t\t\t\t} else {\n\t\t\t\t\tplayer.setMuted(true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (mode === 'horizontal') {\n\t\t\tvar anchor = _document2.default.createElement('a');\n\t\t\tanchor.className = t.options.classPrefix + 'horizontal-volume-slider';\n\t\t\tanchor.href = 'javascript:void(0);';\n\t\t\tanchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));\n\t\t\tanchor.setAttribute('aria-valuemin', 0);\n\t\t\tanchor.setAttribute('aria-valuemax', 100);\n\t\t\tanchor.setAttribute('aria-valuenow', 100);\n\t\t\tanchor.setAttribute('role', 'slider');\n\t\t\tanchor.innerHTML += '<span class=\"' + t.options.classPrefix + 'offscreen\">' + volumeControlText + '</span>' + ('<div class=\"' + t.options.classPrefix + 'horizontal-volume-total\">') + ('<div class=\"' + t.options.classPrefix + 'horizontal-volume-current\"></div>') + ('<div class=\"' + t.options.classPrefix + 'horizontal-volume-handle\"></div>') + '</div>';\n\t\t\tmute.parentNode.insertBefore(anchor, mute.nextSibling);\n\t\t}\n\n\t\tvar mouseIsDown = false,\n\t\t    mouseIsOver = false,\n\t\t    modified = false,\n\t\t    updateVolumeSlider = function updateVolumeSlider() {\n\t\t\tvar volume = Math.floor(media.volume * 100);\n\t\t\tvolumeSlider.setAttribute('aria-valuenow', volume);\n\t\t\tvolumeSlider.setAttribute('aria-valuetext', volume + '%');\n\t\t};\n\n\t\tvar volumeSlider = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),\n\t\t    volumeTotal = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-total') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),\n\t\t    volumeCurrent = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-current') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),\n\t\t    volumeHandle = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-handle') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),\n\t\t    positionVolumeHandle = function positionVolumeHandle(volume) {\n\n\t\t\tif (volume === null || isNaN(volume) || volume === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvolume = Math.max(0, volume);\n\t\t\tvolume = Math.min(volume, 1);\n\n\t\t\tif (volume === 0) {\n\t\t\t\t(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');\n\t\t\t\t(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');\n\t\t\t\tvar button = mute.firstElementChild;\n\t\t\t\tbutton.setAttribute('title', unmuteText);\n\t\t\t\tbutton.setAttribute('aria-label', unmuteText);\n\t\t\t} else {\n\t\t\t\t(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');\n\t\t\t\t(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');\n\t\t\t\tvar _button = mute.firstElementChild;\n\t\t\t\t_button.setAttribute('title', muteText);\n\t\t\t\t_button.setAttribute('aria-label', muteText);\n\t\t\t}\n\n\t\t\tvar volumePercentage = volume * 100 + '%',\n\t\t\t    volumeStyles = getComputedStyle(volumeHandle);\n\n\t\t\tif (mode === 'vertical') {\n\t\t\t\tvolumeCurrent.style.bottom = 0;\n\t\t\t\tvolumeCurrent.style.height = volumePercentage;\n\t\t\t\tvolumeHandle.style.bottom = volumePercentage;\n\t\t\t\tvolumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px';\n\t\t\t} else {\n\t\t\t\tvolumeCurrent.style.left = 0;\n\t\t\t\tvolumeCurrent.style.width = volumePercentage;\n\t\t\t\tvolumeHandle.style.left = volumePercentage;\n\t\t\t\tvolumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';\n\t\t\t}\n\t\t},\n\t\t    handleVolumeMove = function handleVolumeMove(e) {\n\t\t\tvar totalOffset = (0, _dom.offset)(volumeTotal),\n\t\t\t    volumeStyles = getComputedStyle(volumeTotal);\n\n\t\t\tmodified = true;\n\n\t\t\tvar volume = null;\n\n\t\t\tif (mode === 'vertical') {\n\t\t\t\tvar railHeight = parseFloat(volumeStyles.height),\n\t\t\t\t    newY = e.pageY - totalOffset.top;\n\n\t\t\t\tvolume = (railHeight - newY) / railHeight;\n\n\t\t\t\tif (totalOffset.top === 0 || totalOffset.left === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar railWidth = parseFloat(volumeStyles.width),\n\t\t\t\t    newX = e.pageX - totalOffset.left;\n\n\t\t\t\tvolume = newX / railWidth;\n\t\t\t}\n\n\t\t\tvolume = Math.max(0, volume);\n\t\t\tvolume = Math.min(volume, 1);\n\n\t\t\tpositionVolumeHandle(volume);\n\n\t\t\tt.setMuted(volume === 0);\n\t\t\tt.setVolume(volume);\n\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t},\n\t\t    toggleMute = function toggleMute() {\n\t\t\tif (t.muted) {\n\t\t\t\tpositionVolumeHandle(0);\n\t\t\t\t(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');\n\t\t\t\t(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');\n\t\t\t} else {\n\n\t\t\t\tpositionVolumeHandle(media.volume);\n\t\t\t\t(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');\n\t\t\t\t(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');\n\t\t\t}\n\t\t};\n\n\t\tplayer.getElement(player.container).addEventListener('keydown', function (e) {\n\t\t\tvar hasFocus = !!e.target.closest('.' + t.options.classPrefix + 'container');\n\t\t\tif (!hasFocus && mode === 'vertical') {\n\t\t\t\tvolumeSlider.style.display = 'none';\n\t\t\t}\n\t\t});\n\n\t\tmute.addEventListener('mouseenter', function (e) {\n\t\t\tif (e.target === mute) {\n\t\t\t\tvolumeSlider.style.display = 'block';\n\t\t\t\tmouseIsOver = true;\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t});\n\t\tmute.addEventListener('focusin', function () {\n\t\t\tvolumeSlider.style.display = 'block';\n\t\t\tmouseIsOver = true;\n\t\t});\n\n\t\tmute.addEventListener('focusout', function (e) {\n\t\t\tif ((!e.relatedTarget || e.relatedTarget && !e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider')) && mode === 'vertical') {\n\t\t\t\tvolumeSlider.style.display = 'none';\n\t\t\t}\n\t\t});\n\t\tmute.addEventListener('mouseleave', function () {\n\t\t\tmouseIsOver = false;\n\t\t\tif (!mouseIsDown && mode === 'vertical') {\n\t\t\t\tvolumeSlider.style.display = 'none';\n\t\t\t}\n\t\t});\n\t\tmute.addEventListener('focusout', function () {\n\t\t\tmouseIsOver = false;\n\t\t});\n\t\tmute.addEventListener('keydown', function (e) {\n\t\t\tif (t.options.enableKeyboard && t.options.keyActions.length) {\n\t\t\t\tvar keyCode = e.which || e.keyCode || 0,\n\t\t\t\t    volume = media.volume;\n\n\t\t\t\tswitch (keyCode) {\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tvolume = Math.min(volume + 0.1, 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 40:\n\t\t\t\t\t\tvolume = Math.max(0, volume - 0.1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tmouseIsDown = false;\n\t\t\t\tpositionVolumeHandle(volume);\n\t\t\t\tmedia.setVolume(volume);\n\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t});\n\t\tmute.querySelector('button').addEventListener('click', function () {\n\t\t\tmedia.setMuted(!media.muted);\n\t\t\tvar event = (0, _general.createEvent)('volumechange', media);\n\t\t\tmedia.dispatchEvent(event);\n\t\t});\n\n\t\tvolumeSlider.addEventListener('dragstart', function () {\n\t\t\treturn false;\n\t\t});\n\n\t\tvolumeSlider.addEventListener('mouseover', function () {\n\t\t\tmouseIsOver = true;\n\t\t});\n\t\tvolumeSlider.addEventListener('focusin', function () {\n\t\t\tvolumeSlider.style.display = 'block';\n\t\t\tmouseIsOver = true;\n\t\t});\n\t\tvolumeSlider.addEventListener('focusout', function () {\n\t\t\tmouseIsOver = false;\n\t\t\tif (!mouseIsDown && mode === 'vertical') {\n\t\t\t\tvolumeSlider.style.display = 'none';\n\t\t\t}\n\t\t});\n\t\tvolumeSlider.addEventListener('mousedown', function (e) {\n\t\t\thandleVolumeMove(e);\n\t\t\tt.globalBind('mousemove.vol', function (event) {\n\t\t\t\tvar target = event.target;\n\t\t\t\tif (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) {\n\t\t\t\t\thandleVolumeMove(event);\n\t\t\t\t}\n\t\t\t});\n\t\t\tt.globalBind('mouseup.vol', function () {\n\t\t\t\tmouseIsDown = false;\n\t\t\t\tif (!mouseIsOver && mode === 'vertical') {\n\t\t\t\t\tvolumeSlider.style.display = 'none';\n\t\t\t\t}\n\t\t\t});\n\t\t\tmouseIsDown = true;\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tmedia.addEventListener('volumechange', function (e) {\n\t\t\tif (!mouseIsDown) {\n\t\t\t\ttoggleMute();\n\t\t\t}\n\t\t\tupdateVolumeSlider(e);\n\t\t});\n\n\t\tvar rendered = false;\n\t\tmedia.addEventListener('rendererready', function () {\n\t\t\tif (!modified) {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\trendered = true;\n\t\t\t\t\tif (player.options.startVolume === 0 || media.originalNode.muted) {\n\t\t\t\t\t\tmedia.setMuted(true);\n\t\t\t\t\t}\n\t\t\t\t\tmedia.setVolume(player.options.startVolume);\n\t\t\t\t\tt.setControlsSize();\n\t\t\t\t}, 250);\n\t\t\t}\n\t\t});\n\n\t\tmedia.addEventListener('loadedmetadata', function () {\n\t\t\tsetTimeout(function () {\n\t\t\t\tif (!modified && !rendered) {\n\t\t\t\t\tif (player.options.startVolume === 0 || media.originalNode.muted) {\n\t\t\t\t\t\tmedia.setMuted(true);\n\t\t\t\t\t}\n\t\t\t\t\tif (player.options.startVolume === 0) {\n\t\t\t\t\t\tplayer.options.startVolume = 0;\n\t\t\t\t\t}\n\t\t\t\t\tmedia.setVolume(player.options.startVolume);\n\t\t\t\t\tt.setControlsSize();\n\t\t\t\t}\n\t\t\t\trendered = false;\n\t\t\t}, 250);\n\t\t});\n\n\t\tif (player.options.startVolume === 0 || media.originalNode.muted) {\n\t\t\tmedia.setMuted(true);\n\t\t\tif (player.options.startVolume === 0) {\n\t\t\t\tplayer.options.startVolume = 0;\n\t\t\t}\n\t\t\ttoggleMute();\n\t\t}\n\n\t\tt.getElement(t.container).addEventListener('controlsresize', function () {\n\t\t\ttoggleMute();\n\t\t});\n\t}\n});\n\n},{\"16\":16,\"2\":2,\"25\":25,\"26\":26,\"27\":27,\"5\":5}],15:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar EN = exports.EN = {\n\t'mejs.plural-form': 1,\n\n\t'mejs.download-file': 'Download File',\n\n\t'mejs.install-flash': 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/',\n\n\t'mejs.fullscreen': 'Fullscreen',\n\n\t'mejs.play': 'Play',\n\t'mejs.pause': 'Pause',\n\n\t'mejs.time-slider': 'Time Slider',\n\t'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',\n\t'mejs.live-broadcast': 'Live Broadcast',\n\n\t'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',\n\t'mejs.unmute': 'Unmute',\n\t'mejs.mute': 'Mute',\n\t'mejs.volume-slider': 'Volume Slider',\n\n\t'mejs.video-player': 'Video Player',\n\t'mejs.audio-player': 'Audio Player',\n\n\t'mejs.captions-subtitles': 'Captions/Subtitles',\n\t'mejs.captions-chapters': 'Chapters',\n\t'mejs.none': 'None',\n\t'mejs.afrikaans': 'Afrikaans',\n\t'mejs.albanian': 'Albanian',\n\t'mejs.arabic': 'Arabic',\n\t'mejs.belarusian': 'Belarusian',\n\t'mejs.bulgarian': 'Bulgarian',\n\t'mejs.catalan': 'Catalan',\n\t'mejs.chinese': 'Chinese',\n\t'mejs.chinese-simplified': 'Chinese (Simplified)',\n\t'mejs.chinese-traditional': 'Chinese (Traditional)',\n\t'mejs.croatian': 'Croatian',\n\t'mejs.czech': 'Czech',\n\t'mejs.danish': 'Danish',\n\t'mejs.dutch': 'Dutch',\n\t'mejs.english': 'English',\n\t'mejs.estonian': 'Estonian',\n\t'mejs.filipino': 'Filipino',\n\t'mejs.finnish': 'Finnish',\n\t'mejs.french': 'French',\n\t'mejs.galician': 'Galician',\n\t'mejs.german': 'German',\n\t'mejs.greek': 'Greek',\n\t'mejs.haitian-creole': 'Haitian Creole',\n\t'mejs.hebrew': 'Hebrew',\n\t'mejs.hindi': 'Hindi',\n\t'mejs.hungarian': 'Hungarian',\n\t'mejs.icelandic': 'Icelandic',\n\t'mejs.indonesian': 'Indonesian',\n\t'mejs.irish': 'Irish',\n\t'mejs.italian': 'Italian',\n\t'mejs.japanese': 'Japanese',\n\t'mejs.korean': 'Korean',\n\t'mejs.latvian': 'Latvian',\n\t'mejs.lithuanian': 'Lithuanian',\n\t'mejs.macedonian': 'Macedonian',\n\t'mejs.malay': 'Malay',\n\t'mejs.maltese': 'Maltese',\n\t'mejs.norwegian': 'Norwegian',\n\t'mejs.persian': 'Persian',\n\t'mejs.polish': 'Polish',\n\t'mejs.portuguese': 'Portuguese',\n\t'mejs.romanian': 'Romanian',\n\t'mejs.russian': 'Russian',\n\t'mejs.serbian': 'Serbian',\n\t'mejs.slovak': 'Slovak',\n\t'mejs.slovenian': 'Slovenian',\n\t'mejs.spanish': 'Spanish',\n\t'mejs.swahili': 'Swahili',\n\t'mejs.swedish': 'Swedish',\n\t'mejs.tagalog': 'Tagalog',\n\t'mejs.thai': 'Thai',\n\t'mejs.turkish': 'Turkish',\n\t'mejs.ukrainian': 'Ukrainian',\n\t'mejs.vietnamese': 'Vietnamese',\n\t'mejs.welsh': 'Welsh',\n\t'mejs.yiddish': 'Yiddish'\n};\n\n},{}],16:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.config = undefined;\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 _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 _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _mediaelement = _dereq_(6);\n\nvar _mediaelement2 = _interopRequireDefault(_mediaelement);\n\nvar _default = _dereq_(17);\n\nvar _default2 = _interopRequireDefault(_default);\n\nvar _i18n = _dereq_(5);\n\nvar _i18n2 = _interopRequireDefault(_i18n);\n\nvar _constants = _dereq_(25);\n\nvar _general = _dereq_(27);\n\nvar _time = _dereq_(30);\n\nvar _media = _dereq_(28);\n\nvar _dom = _dereq_(26);\n\nvar dom = _interopRequireWildcard(_dom);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\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_mejs2.default.mepIndex = 0;\n\n_mejs2.default.players = {};\n\nvar config = exports.config = {\n\tposter: '',\n\n\tshowPosterWhenEnded: false,\n\n\tshowPosterWhenPaused: false,\n\n\tdefaultVideoWidth: 480,\n\n\tdefaultVideoHeight: 270,\n\n\tvideoWidth: -1,\n\n\tvideoHeight: -1,\n\n\tdefaultAudioWidth: 400,\n\n\tdefaultAudioHeight: 40,\n\n\tdefaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {\n\t\treturn media.getDuration() * 0.05;\n\t},\n\n\tdefaultSeekForwardInterval: function defaultSeekForwardInterval(media) {\n\t\treturn media.getDuration() * 0.05;\n\t},\n\n\tsetDimensions: true,\n\n\taudioWidth: -1,\n\n\taudioHeight: -1,\n\n\tloop: false,\n\n\tautoRewind: true,\n\n\tenableAutosize: true,\n\n\ttimeFormat: '',\n\n\talwaysShowHours: false,\n\n\tshowTimecodeFrameCount: false,\n\n\tframesPerSecond: 25,\n\n\talwaysShowControls: false,\n\n\thideVideoControlsOnLoad: false,\n\n\thideVideoControlsOnPause: false,\n\n\tclickToPlayPause: true,\n\n\tcontrolsTimeoutDefault: 1500,\n\n\tcontrolsTimeoutMouseEnter: 2500,\n\n\tcontrolsTimeoutMouseLeave: 1000,\n\n\tiPadUseNativeControls: false,\n\n\tiPhoneUseNativeControls: false,\n\n\tAndroidUseNativeControls: false,\n\n\tfeatures: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],\n\n\tuseDefaultControls: false,\n\n\tisVideo: true,\n\n\tstretching: 'auto',\n\n\tclassPrefix: 'mejs__',\n\n\tenableKeyboard: true,\n\n\tpauseOtherPlayers: true,\n\n\tsecondsDecimalLength: 0,\n\n\tcustomError: null,\n\n\tkeyActions: [{\n\t\tkeys: [32, 179],\n\t\taction: function action(player) {\n\n\t\t\tif (!_constants.IS_FIREFOX) {\n\t\t\t\tif (player.paused || player.ended) {\n\t\t\t\t\tplayer.play();\n\t\t\t\t} else {\n\t\t\t\t\tplayer.pause();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}]\n};\n\n_mejs2.default.MepDefaults = config;\n\nvar MediaElementPlayer = function () {\n\tfunction MediaElementPlayer(node, o) {\n\t\t_classCallCheck(this, MediaElementPlayer);\n\n\t\tvar t = this,\n\t\t    element = typeof node === 'string' ? _document2.default.getElementById(node) : node;\n\n\t\tif (!(t instanceof MediaElementPlayer)) {\n\t\t\treturn new MediaElementPlayer(element, o);\n\t\t}\n\n\t\tt.node = t.media = element;\n\n\t\tif (!t.node) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (t.media.player) {\n\t\t\treturn t.media.player;\n\t\t}\n\n\t\tt.hasFocus = false;\n\n\t\tt.controlsAreVisible = true;\n\n\t\tt.controlsEnabled = true;\n\n\t\tt.controlsTimer = null;\n\n\t\tt.currentMediaTime = 0;\n\n\t\tt.proxy = null;\n\n\t\tif (o === undefined) {\n\t\t\tvar options = t.node.getAttribute('data-mejsoptions');\n\t\t\to = options ? JSON.parse(options) : {};\n\t\t}\n\n\t\tt.options = Object.assign({}, config, o);\n\n\t\tif (t.options.loop && !t.media.getAttribute('loop')) {\n\t\t\tt.media.loop = true;\n\t\t\tt.node.loop = true;\n\t\t} else if (t.media.loop) {\n\t\t\tt.options.loop = true;\n\t\t}\n\n\t\tif (!t.options.timeFormat) {\n\t\t\tt.options.timeFormat = 'mm:ss';\n\t\t\tif (t.options.alwaysShowHours) {\n\t\t\t\tt.options.timeFormat = 'hh:mm:ss';\n\t\t\t}\n\t\t\tif (t.options.showTimecodeFrameCount) {\n\t\t\t\tt.options.timeFormat += ':ff';\n\t\t\t}\n\t\t}\n\n\t\t(0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);\n\n\t\tt.id = 'mep_' + _mejs2.default.mepIndex++;\n\n\t\t_mejs2.default.players[t.id] = t;\n\n\t\tt.init();\n\n\t\treturn t;\n\t}\n\n\t_createClass(MediaElementPlayer, [{\n\t\tkey: 'getElement',\n\t\tvalue: function getElement(element) {\n\t\t\treturn element;\n\t\t}\n\t}, {\n\t\tkey: 'init',\n\t\tvalue: function init() {\n\t\t\tvar t = this,\n\t\t\t    playerOptions = Object.assign({}, t.options, {\n\t\t\t\tsuccess: function success(media, domNode) {\n\t\t\t\t\tt._meReady(media, domNode);\n\t\t\t\t},\n\t\t\t\terror: function error(e) {\n\t\t\t\t\tt._handleError(e);\n\t\t\t\t}\n\t\t\t}),\n\t\t\t    tagName = t.node.tagName.toLowerCase();\n\n\t\t\tt.isDynamic = tagName !== 'audio' && tagName !== 'video' && tagName !== 'iframe';\n\t\t\tt.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;\n\t\t\tt.mediaFiles = null;\n\t\t\tt.trackFiles = null;\n\n\t\t\tif (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {\n\t\t\t\tt.node.setAttribute('controls', true);\n\n\t\t\t\tif (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {\n\t\t\t\t\tt.play();\n\t\t\t\t}\n\t\t\t} else if ((t.isVideo || !t.isVideo && (t.options.features.length || t.options.useDefaultControls)) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {\n\t\t\t\tt.node.removeAttribute('controls');\n\t\t\t\tvar videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');\n\n\t\t\t\tvar offscreen = _document2.default.createElement('span');\n\t\t\t\toffscreen.className = t.options.classPrefix + 'offscreen';\n\t\t\t\toffscreen.innerText = videoPlayerTitle;\n\t\t\t\tt.media.parentNode.insertBefore(offscreen, t.media);\n\n\t\t\t\tt.container = _document2.default.createElement('div');\n\t\t\t\tt.getElement(t.container).id = t.id;\n\t\t\t\tt.getElement(t.container).className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;\n\t\t\t\tt.getElement(t.container).tabIndex = 0;\n\t\t\t\tt.getElement(t.container).setAttribute('role', 'application');\n\t\t\t\tt.getElement(t.container).setAttribute('aria-label', videoPlayerTitle);\n\t\t\t\tt.getElement(t.container).innerHTML = '<div class=\"' + t.options.classPrefix + 'inner\">' + ('<div class=\"' + t.options.classPrefix + 'mediaelement\"></div>') + ('<div class=\"' + t.options.classPrefix + 'layers\"></div>') + ('<div class=\"' + t.options.classPrefix + 'controls\"></div>') + '</div>';\n\t\t\t\tt.getElement(t.container).addEventListener('focus', function (e) {\n\t\t\t\t\tif (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {\n\t\t\t\t\t\tt.showControls(true);\n\n\t\t\t\t\t\tvar btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.getElement(t.container)) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',\n\t\t\t\t\t\t    button = t.getElement(t.container).querySelector(btnSelector);\n\n\t\t\t\t\t\tbutton.focus();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tt.node.parentNode.insertBefore(t.getElement(t.container), t.node);\n\n\t\t\t\tif (!t.options.features.length && !t.options.useDefaultControls) {\n\t\t\t\t\tt.getElement(t.container).style.background = 'transparent';\n\t\t\t\t\tt.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';\n\t\t\t\t}\n\n\t\t\t\tif (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.getElement(t.container).parentNode, t.options.classPrefix + 'fill-container')) {\n\t\t\t\t\tt.outerContainer = t.media.parentNode;\n\n\t\t\t\t\tvar wrapper = _document2.default.createElement('div');\n\t\t\t\t\twrapper.className = t.options.classPrefix + 'fill-container';\n\t\t\t\t\tt.getElement(t.container).parentNode.insertBefore(wrapper, t.getElement(t.container));\n\t\t\t\t\twrapper.appendChild(t.getElement(t.container));\n\t\t\t\t}\n\n\t\t\t\tif (_constants.IS_ANDROID) {\n\t\t\t\t\tdom.addClass(t.getElement(t.container), t.options.classPrefix + 'android');\n\t\t\t\t}\n\t\t\t\tif (_constants.IS_IOS) {\n\t\t\t\t\tdom.addClass(t.getElement(t.container), t.options.classPrefix + 'ios');\n\t\t\t\t}\n\t\t\t\tif (_constants.IS_IPAD) {\n\t\t\t\t\tdom.addClass(t.getElement(t.container), t.options.classPrefix + 'ipad');\n\t\t\t\t}\n\t\t\t\tif (_constants.IS_IPHONE) {\n\t\t\t\t\tdom.addClass(t.getElement(t.container), t.options.classPrefix + 'iphone');\n\t\t\t\t}\n\t\t\t\tdom.addClass(t.getElement(t.container), t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');\n\n\t\t\t\tt.getElement(t.container).querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);\n\n\t\t\t\tt.media.player = t;\n\n\t\t\t\tt.controls = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls');\n\t\t\t\tt.layers = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'layers');\n\n\t\t\t\tvar tagType = t.isVideo ? 'video' : 'audio',\n\t\t\t\t    capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);\n\n\t\t\t\tif (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {\n\t\t\t\t\tt.width = t.options[tagType + 'Width'];\n\t\t\t\t} else if (t.node.style.width !== '' && t.node.style.width !== null) {\n\t\t\t\t\tt.width = t.node.style.width;\n\t\t\t\t} else if (t.node.getAttribute('width')) {\n\t\t\t\t\tt.width = t.node.getAttribute('width');\n\t\t\t\t} else {\n\t\t\t\t\tt.width = t.options['default' + capsTagName + 'Width'];\n\t\t\t\t}\n\n\t\t\t\tif (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {\n\t\t\t\t\tt.height = t.options[tagType + 'Height'];\n\t\t\t\t} else if (t.node.style.height !== '' && t.node.style.height !== null) {\n\t\t\t\t\tt.height = t.node.style.height;\n\t\t\t\t} else if (t.node.getAttribute('height')) {\n\t\t\t\t\tt.height = t.node.getAttribute('height');\n\t\t\t\t} else {\n\t\t\t\t\tt.height = t.options['default' + capsTagName + 'Height'];\n\t\t\t\t}\n\n\t\t\t\tt.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;\n\n\t\t\t\tt.setPlayerSize(t.width, t.height);\n\n\t\t\t\tplayerOptions.pluginWidth = t.width;\n\t\t\t\tplayerOptions.pluginHeight = t.height;\n\t\t\t} else if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {\n\t\t\t\t\tt.node.style.display = 'none';\n\t\t\t\t}\n\n\t\t\t_mejs2.default.MepDefaults = playerOptions;\n\n\t\t\tnew _mediaelement2.default(t.media, playerOptions, t.mediaFiles);\n\n\t\t\tif (t.getElement(t.container) !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {\n\t\t\t\tvar event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));\n\t\t\t\tt.getElement(t.container).dispatchEvent(event);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'showControls',\n\t\tvalue: function showControls(doAnimation) {\n\t\t\tvar t = this;\n\n\t\t\tdoAnimation = doAnimation === undefined || doAnimation;\n\n\t\t\tif (t.controlsAreVisible || !t.isVideo) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (doAnimation) {\n\t\t\t\t(function () {\n\t\t\t\t\tdom.fadeIn(t.getElement(t.controls), 200, function () {\n\t\t\t\t\t\tdom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');\n\t\t\t\t\t\tvar event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));\n\t\t\t\t\t\tt.getElement(t.container).dispatchEvent(event);\n\t\t\t\t\t});\n\n\t\t\t\t\tvar controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');\n\n\t\t\t\t\tvar _loop = function _loop(i, total) {\n\t\t\t\t\t\tdom.fadeIn(controls[i], 200, function () {\n\t\t\t\t\t\t\tdom.removeClass(controls[i], t.options.classPrefix + 'offscreen');\n\t\t\t\t\t\t});\n\t\t\t\t\t};\n\n\t\t\t\t\tfor (var i = 0, total = controls.length; i < total; i++) {\n\t\t\t\t\t\t_loop(i, total);\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t} else {\n\t\t\t\tdom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');\n\t\t\t\tt.getElement(t.controls).style.display = '';\n\t\t\t\tt.getElement(t.controls).style.opacity = 1;\n\n\t\t\t\tvar controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');\n\t\t\t\tfor (var i = 0, total = controls.length; i < total; i++) {\n\t\t\t\t\tdom.removeClass(controls[i], t.options.classPrefix + 'offscreen');\n\t\t\t\t\tcontrols[i].style.display = '';\n\t\t\t\t}\n\n\t\t\t\tvar event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));\n\t\t\t\tt.getElement(t.container).dispatchEvent(event);\n\t\t\t}\n\n\t\t\tt.controlsAreVisible = true;\n\t\t\tt.setControlsSize();\n\t\t}\n\t}, {\n\t\tkey: 'hideControls',\n\t\tvalue: function hideControls(doAnimation, forceHide) {\n\t\t\tvar t = this;\n\n\t\t\tdoAnimation = doAnimation === undefined || doAnimation;\n\n\t\t\tif (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.paused && t.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.readyState || t.ended)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (doAnimation) {\n\t\t\t\t(function () {\n\t\t\t\t\tdom.fadeOut(t.getElement(t.controls), 200, function () {\n\t\t\t\t\t\tdom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');\n\t\t\t\t\t\tt.getElement(t.controls).style.display = '';\n\t\t\t\t\t\tvar event = (0, _general.createEvent)('controlshidden', t.getElement(t.container));\n\t\t\t\t\t\tt.getElement(t.container).dispatchEvent(event);\n\t\t\t\t\t});\n\n\t\t\t\t\tvar controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');\n\n\t\t\t\t\tvar _loop2 = function _loop2(i, total) {\n\t\t\t\t\t\tdom.fadeOut(controls[i], 200, function () {\n\t\t\t\t\t\t\tdom.addClass(controls[i], t.options.classPrefix + 'offscreen');\n\t\t\t\t\t\t\tcontrols[i].style.display = '';\n\t\t\t\t\t\t});\n\t\t\t\t\t};\n\n\t\t\t\t\tfor (var i = 0, total = controls.length; i < total; i++) {\n\t\t\t\t\t\t_loop2(i, total);\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t} else {\n\t\t\t\tdom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');\n\t\t\t\tt.getElement(t.controls).style.display = '';\n\t\t\t\tt.getElement(t.controls).style.opacity = 0;\n\n\t\t\t\tvar controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');\n\t\t\t\tfor (var i = 0, total = controls.length; i < total; i++) {\n\t\t\t\t\tdom.addClass(controls[i], t.options.classPrefix + 'offscreen');\n\t\t\t\t\tcontrols[i].style.display = '';\n\t\t\t\t}\n\n\t\t\t\tvar event = (0, _general.createEvent)('controlshidden', t.getElement(t.container));\n\t\t\t\tt.getElement(t.container).dispatchEvent(event);\n\t\t\t}\n\n\t\t\tt.controlsAreVisible = false;\n\t\t}\n\t}, {\n\t\tkey: 'startControlsTimer',\n\t\tvalue: function startControlsTimer(timeout) {\n\t\t\tvar t = this;\n\n\t\t\ttimeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;\n\n\t\t\tt.killControlsTimer('start');\n\n\t\t\tt.controlsTimer = setTimeout(function () {\n\t\t\t\tt.hideControls();\n\t\t\t\tt.killControlsTimer('hide');\n\t\t\t}, timeout);\n\t\t}\n\t}, {\n\t\tkey: 'killControlsTimer',\n\t\tvalue: function killControlsTimer() {\n\t\t\tvar t = this;\n\n\t\t\tif (t.controlsTimer !== null) {\n\t\t\t\tclearTimeout(t.controlsTimer);\n\t\t\t\tdelete t.controlsTimer;\n\t\t\t\tt.controlsTimer = null;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'disableControls',\n\t\tvalue: function disableControls() {\n\t\t\tvar t = this;\n\n\t\t\tt.killControlsTimer();\n\t\t\tt.controlsEnabled = false;\n\t\t\tt.hideControls(false, true);\n\t\t}\n\t}, {\n\t\tkey: 'enableControls',\n\t\tvalue: function enableControls() {\n\t\t\tvar t = this;\n\n\t\t\tt.controlsEnabled = true;\n\t\t\tt.showControls(false);\n\t\t}\n\t}, {\n\t\tkey: '_setDefaultPlayer',\n\t\tvalue: function _setDefaultPlayer() {\n\t\t\tvar t = this;\n\t\t\tif (t.proxy) {\n\t\t\t\tt.proxy.pause();\n\t\t\t}\n\t\t\tt.proxy = new _default2.default(t);\n\t\t\tt.media.addEventListener('loadedmetadata', function () {\n\t\t\t\tif (t.getCurrentTime() > 0 && t.currentMediaTime > 0) {\n\t\t\t\t\tt.setCurrentTime(t.currentMediaTime);\n\t\t\t\t\tif (!_constants.IS_IOS && !_constants.IS_ANDROID) {\n\t\t\t\t\t\tt.play();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: '_meReady',\n\t\tvalue: function _meReady(media, domNode) {\n\t\t\tvar t = this,\n\t\t\t    autoplayAttr = domNode.getAttribute('autoplay'),\n\t\t\t    autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),\n\t\t\t    isNative = media.rendererName !== null && /(native|html5)/i.test(media.rendererName);\n\n\t\t\tif (t.getElement(t.controls)) {\n\t\t\t\tt.enableControls();\n\t\t\t}\n\n\t\t\tif (t.getElement(t.container) && t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play')) {\n\t\t\t\tt.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';\n\t\t\t}\n\n\t\t\tif (t.created) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tt.created = true;\n\t\t\tt.media = media;\n\t\t\tt.domNode = domNode;\n\n\t\t\tif (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {\n\t\t\t\tif (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {\n\t\t\t\t\tif (autoplay && isNative) {\n\t\t\t\t\t\tt.play();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (t.options.success) {\n\n\t\t\t\t\t\tif (typeof t.options.success === 'string') {\n\t\t\t\t\t\t\t_window2.default[t.options.success](t.media, t.domNode, t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt.options.success(t.media, t.domNode, t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tt.featurePosition = {};\n\n\t\t\t\tt._setDefaultPlayer();\n\n\t\t\t\tt.buildposter(t, t.getElement(t.controls), t.getElement(t.layers), t.media);\n\t\t\t\tt.buildkeyboard(t, t.getElement(t.controls), t.getElement(t.layers), t.media);\n\t\t\t\tt.buildoverlays(t, t.getElement(t.controls), t.getElement(t.layers), t.media);\n\n\t\t\t\tif (t.options.useDefaultControls) {\n\t\t\t\t\tvar defaultControls = ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'];\n\t\t\t\t\tt.options.features = defaultControls.concat(t.options.features.filter(function (item) {\n\t\t\t\t\t\treturn defaultControls.indexOf(item) === -1;\n\t\t\t\t\t}));\n\t\t\t\t}\n\n\t\t\t\tt.buildfeatures(t, t.getElement(t.controls), t.getElement(t.layers), t.media);\n\n\t\t\t\tvar event = (0, _general.createEvent)('controlsready', t.getElement(t.container));\n\t\t\t\tt.getElement(t.container).dispatchEvent(event);\n\n\t\t\t\tt.setPlayerSize(t.width, t.height);\n\t\t\t\tt.setControlsSize();\n\n\t\t\t\tif (t.isVideo) {\n\t\t\t\t\tt.clickToPlayPauseCallback = function () {\n\n\t\t\t\t\t\tif (t.options.clickToPlayPause) {\n\t\t\t\t\t\t\tvar button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'),\n\t\t\t\t\t\t\t    pressed = button.getAttribute('aria-pressed');\n\n\t\t\t\t\t\t\tif (t.paused && pressed) {\n\t\t\t\t\t\t\t\tt.pause();\n\t\t\t\t\t\t\t} else if (t.paused) {\n\t\t\t\t\t\t\t\tt.play();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt.pause();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbutton.setAttribute('aria-pressed', !pressed);\n\t\t\t\t\t\t\tt.getElement(t.container).focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tt.createIframeLayer();\n\n\t\t\t\t\tt.media.addEventListener('click', t.clickToPlayPauseCallback);\n\n\t\t\t\t\tif ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {\n\t\t\t\t\t\tt.node.addEventListener('touchstart', function () {\n\t\t\t\t\t\t\tif (t.controlsAreVisible) {\n\t\t\t\t\t\t\t\tt.hideControls(false);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (t.controlsEnabled) {\n\t\t\t\t\t\t\t\t\tt.showControls(false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, _constants.SUPPORT_PASSIVE_EVENT ? { passive: true } : false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt.getElement(t.container).addEventListener('mouseenter', function () {\n\t\t\t\t\t\t\tif (t.controlsEnabled) {\n\t\t\t\t\t\t\t\tif (!t.options.alwaysShowControls) {\n\t\t\t\t\t\t\t\t\tt.killControlsTimer('enter');\n\t\t\t\t\t\t\t\t\tt.showControls();\n\t\t\t\t\t\t\t\t\tt.startControlsTimer(t.options.controlsTimeoutMouseEnter);\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\tt.getElement(t.container).addEventListener('mousemove', function () {\n\t\t\t\t\t\t\tif (t.controlsEnabled) {\n\t\t\t\t\t\t\t\tif (!t.controlsAreVisible) {\n\t\t\t\t\t\t\t\t\tt.showControls();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!t.options.alwaysShowControls) {\n\t\t\t\t\t\t\t\t\tt.startControlsTimer(t.options.controlsTimeoutMouseEnter);\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\tt.getElement(t.container).addEventListener('mouseleave', function () {\n\t\t\t\t\t\t\tif (t.controlsEnabled) {\n\t\t\t\t\t\t\t\tif (!t.paused && !t.options.alwaysShowControls) {\n\t\t\t\t\t\t\t\t\tt.startControlsTimer(t.options.controlsTimeoutMouseLeave);\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\n\t\t\t\t\tif (t.options.hideVideoControlsOnLoad) {\n\t\t\t\t\t\tt.hideControls(false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (t.options.enableAutosize) {\n\t\t\t\t\t\tt.media.addEventListener('loadedmetadata', function (e) {\n\t\t\t\t\t\t\tvar target = e !== undefined ? e.detail.target || e.target : t.media;\n\t\t\t\t\t\t\tif (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && !t.domNode.style.height && target !== null && !isNaN(target.videoHeight)) {\n\t\t\t\t\t\t\t\tt.setPlayerSize(target.videoWidth, target.videoHeight);\n\t\t\t\t\t\t\t\tt.setControlsSize();\n\t\t\t\t\t\t\t\tt.media.setSize(target.videoWidth, target.videoHeight);\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\tt.media.addEventListener('play', function () {\n\t\t\t\t\tt.hasFocus = true;\n\n\t\t\t\t\tfor (var playerIndex in _mejs2.default.players) {\n\t\t\t\t\t\tif (_mejs2.default.players.hasOwnProperty(playerIndex)) {\n\t\t\t\t\t\t\tvar p = _mejs2.default.players[playerIndex];\n\n\t\t\t\t\t\t\tif (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended && p.options.ignorePauseOtherPlayersOption !== true) {\n\t\t\t\t\t\t\t\tp.pause();\n\t\t\t\t\t\t\t\tp.hasFocus = false;\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\tif (!(_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls && t.isVideo) {\n\t\t\t\t\t\tt.hideControls();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tt.media.addEventListener('ended', function () {\n\t\t\t\t\tif (t.options.autoRewind) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tt.setCurrentTime(0);\n\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tvar loadingElement = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-loading');\n\t\t\t\t\t\t\t\tif (loadingElement && loadingElement.parentNode) {\n\t\t\t\t\t\t\t\t\tloadingElement.parentNode.style.display = 'none';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 20);\n\t\t\t\t\t\t} catch (exp) {\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\tif (typeof t.media.renderer.stop === 'function') {\n\t\t\t\t\t\tt.media.renderer.stop();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt.pause();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (t.setProgressRail) {\n\t\t\t\t\t\tt.setProgressRail();\n\t\t\t\t\t}\n\t\t\t\t\tif (t.setCurrentRail) {\n\t\t\t\t\t\tt.setCurrentRail();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (t.options.loop) {\n\t\t\t\t\t\tt.play();\n\t\t\t\t\t} else if (!t.options.alwaysShowControls && t.controlsEnabled) {\n\t\t\t\t\t\tt.showControls();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tt.media.addEventListener('loadedmetadata', function () {\n\n\t\t\t\t\t(0, _time.calculateTimeFormat)(t.getDuration(), t.options, t.options.framesPerSecond || 25);\n\n\t\t\t\t\tif (t.updateDuration) {\n\t\t\t\t\t\tt.updateDuration();\n\t\t\t\t\t}\n\t\t\t\t\tif (t.updateCurrent) {\n\t\t\t\t\t\tt.updateCurrent();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!t.isFullScreen) {\n\t\t\t\t\t\tt.setPlayerSize(t.width, t.height);\n\t\t\t\t\t\tt.setControlsSize();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvar duration = null;\n\t\t\t\tt.media.addEventListener('timeupdate', function () {\n\t\t\t\t\tif (!isNaN(t.getDuration()) && duration !== t.getDuration()) {\n\t\t\t\t\t\tduration = t.getDuration();\n\t\t\t\t\t\t(0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);\n\n\t\t\t\t\t\tif (t.updateDuration) {\n\t\t\t\t\t\t\tt.updateDuration();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (t.updateCurrent) {\n\t\t\t\t\t\t\tt.updateCurrent();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tt.setControlsSize();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tt.getElement(t.container).addEventListener('click', function (e) {\n\t\t\t\t\tdom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');\n\t\t\t\t});\n\n\t\t\t\tt.getElement(t.container).addEventListener('focusin', function (e) {\n\t\t\t\t\tdom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');\n\t\t\t\t\tif (t.isVideo && !_constants.IS_ANDROID && !_constants.IS_IOS && t.controlsEnabled && !t.options.alwaysShowControls) {\n\t\t\t\t\t\tt.killControlsTimer('enter');\n\t\t\t\t\t\tt.showControls();\n\t\t\t\t\t\tt.startControlsTimer(t.options.controlsTimeoutMouseEnter);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tt.getElement(t.container).addEventListener('focusout', function (e) {\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tif (e.relatedTarget) {\n\t\t\t\t\t\t\tif (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) {\n\t\t\t\t\t\t\t\tt.keyboardAction = false;\n\t\t\t\t\t\t\t\tif (t.isVideo && !t.options.alwaysShowControls && !t.paused) {\n\t\t\t\t\t\t\t\t\tt.startControlsTimer(t.options.controlsTimeoutMouseLeave);\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}, 0);\n\t\t\t\t});\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tt.setPlayerSize(t.width, t.height);\n\t\t\t\t\tt.setControlsSize();\n\t\t\t\t}, 0);\n\n\t\t\t\tt.globalResizeCallback = function () {\n\t\t\t\t\tif (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {\n\t\t\t\t\t\tt.setPlayerSize(t.width, t.height);\n\t\t\t\t\t}\n\n\t\t\t\t\tt.setControlsSize();\n\t\t\t\t};\n\n\t\t\t\tt.globalBind('resize', t.globalResizeCallback);\n\t\t\t}\n\n\t\t\tif (autoplay && isNative) {\n\t\t\t\tt.play();\n\t\t\t}\n\n\t\t\tif (t.options.success) {\n\t\t\t\tif (typeof t.options.success === 'string') {\n\t\t\t\t\t_window2.default[t.options.success](t.media, t.domNode, t);\n\t\t\t\t} else {\n\t\t\t\t\tt.options.success(t.media, t.domNode, t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: '_handleError',\n\t\tvalue: function _handleError(e, media, node) {\n\t\t\tvar t = this,\n\t\t\t    play = t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-play');\n\n\t\t\tif (play) {\n\t\t\t\tplay.style.display = 'none';\n\t\t\t}\n\n\t\t\tif (t.options.error) {\n\t\t\t\tt.options.error(e, media, node);\n\t\t\t}\n\n\t\t\tif (t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay')) {\n\t\t\t\tt.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay').remove();\n\t\t\t}\n\n\t\t\tvar errorContainer = _document2.default.createElement('div');\n\t\t\terrorContainer.className = t.options.classPrefix + 'cannotplay';\n\t\t\terrorContainer.style.width = '100%';\n\t\t\terrorContainer.style.height = '100%';\n\n\t\t\tvar errorContent = typeof t.options.customError === 'function' ? t.options.customError(t.media, t.media.originalNode) : t.options.customError,\n\t\t\t    imgError = '';\n\n\t\t\tif (!errorContent) {\n\t\t\t\tvar poster = t.media.originalNode.getAttribute('poster');\n\t\t\t\tif (poster) {\n\t\t\t\t\timgError = '<img src=\"' + poster + '\" alt=\"' + _mejs2.default.i18n.t('mejs.download-file') + '\">';\n\t\t\t\t}\n\n\t\t\t\tif (e.message) {\n\t\t\t\t\terrorContent = '<p>' + e.message + '</p>';\n\t\t\t\t}\n\n\t\t\t\tif (e.urls) {\n\t\t\t\t\tfor (var i = 0, total = e.urls.length; i < total; i++) {\n\t\t\t\t\t\tvar url = e.urls[i];\n\t\t\t\t\t\terrorContent += '<a href=\"' + url.src + '\" data-type=\"' + url.type + '\"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (errorContent && t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error')) {\n\t\t\t\terrorContainer.innerHTML = errorContent;\n\t\t\t\tt.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = '' + imgError + errorContainer.outerHTML;\n\t\t\t\tt.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').parentNode.style.display = 'block';\n\t\t\t}\n\n\t\t\tif (t.controlsEnabled) {\n\t\t\t\tt.disableControls();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'setPlayerSize',\n\t\tvalue: function setPlayerSize(width, height) {\n\t\t\tvar t = this;\n\n\t\t\tif (!t.options.setDimensions) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (typeof width !== 'undefined') {\n\t\t\t\tt.width = width;\n\t\t\t}\n\n\t\t\tif (typeof height !== 'undefined') {\n\t\t\t\tt.height = height;\n\t\t\t}\n\n\t\t\tswitch (t.options.stretching) {\n\t\t\t\tcase 'fill':\n\t\t\t\t\tif (t.isVideo) {\n\t\t\t\t\t\tt.setFillMode();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt.setDimensions(t.width, t.height);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'responsive':\n\t\t\t\t\tt.setResponsiveMode();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'none':\n\t\t\t\t\tt.setDimensions(t.width, t.height);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (t.hasFluidMode() === true) {\n\t\t\t\t\t\tt.setResponsiveMode();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt.setDimensions(t.width, t.height);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'hasFluidMode',\n\t\tvalue: function hasFluidMode() {\n\t\t\tvar t = this;\n\n\t\t\treturn t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%';\n\t\t}\n\t}, {\n\t\tkey: 'setResponsiveMode',\n\t\tvalue: function setResponsiveMode() {\n\t\t\tvar t = this,\n\t\t\t    parent = function () {\n\n\t\t\t\tvar parentEl = void 0,\n\t\t\t\t    el = t.getElement(t.container);\n\n\t\t\t\twhile (el) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {\n\t\t\t\t\t\t\treturn _window2.default.frameElement;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tparentEl = el.parentElement;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tparentEl = el.parentElement;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (parentEl && dom.visible(parentEl)) {\n\t\t\t\t\t\treturn parentEl;\n\t\t\t\t\t}\n\t\t\t\t\tel = parentEl;\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}(),\n\t\t\t    parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null),\n\t\t\t    nativeWidth = function () {\n\t\t\t\tif (t.isVideo) {\n\t\t\t\t\tif (t.node.videoWidth && t.node.videoWidth > 0) {\n\t\t\t\t\t\treturn t.node.videoWidth;\n\t\t\t\t\t} else if (t.node.getAttribute('width')) {\n\t\t\t\t\t\treturn t.node.getAttribute('width');\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn t.options.defaultVideoWidth;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn t.options.defaultAudioWidth;\n\t\t\t\t}\n\t\t\t}(),\n\t\t\t    nativeHeight = function () {\n\t\t\t\tif (t.isVideo) {\n\t\t\t\t\tif (t.node.videoHeight && t.node.videoHeight > 0) {\n\t\t\t\t\t\treturn t.node.videoHeight;\n\t\t\t\t\t} else if (t.node.getAttribute('height')) {\n\t\t\t\t\t\treturn t.node.getAttribute('height');\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn t.options.defaultVideoHeight;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn t.options.defaultAudioHeight;\n\t\t\t\t}\n\t\t\t}(),\n\t\t\t    aspectRatio = function () {\n\t\t\t\tif (!t.options.enableAutosize) {\n\t\t\t\t\treturn t.initialAspectRatio;\n\t\t\t\t}\n\t\t\t\tvar ratio = 1;\n\t\t\t\tif (!t.isVideo) {\n\t\t\t\t\treturn ratio;\n\t\t\t\t}\n\n\t\t\t\tif (t.node.videoWidth && t.node.videoWidth > 0 && t.node.videoHeight && t.node.videoHeight > 0) {\n\t\t\t\t\tratio = t.height >= t.width ? t.node.videoWidth / t.node.videoHeight : t.node.videoHeight / t.node.videoWidth;\n\t\t\t\t} else {\n\t\t\t\t\tratio = t.initialAspectRatio;\n\t\t\t\t}\n\n\t\t\t\tif (isNaN(ratio) || ratio < 0.01 || ratio > 100) {\n\t\t\t\t\tratio = 1;\n\t\t\t\t}\n\n\t\t\t\treturn ratio;\n\t\t\t}(),\n\t\t\t    parentHeight = parseFloat(parentStyles.height);\n\n\t\t\tvar newHeight = void 0,\n\t\t\t    parentWidth = parseFloat(parentStyles.width);\n\n\t\t\tif (t.isVideo) {\n\t\t\t\tif (t.height === '100%') {\n\t\t\t\t\tnewHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10);\n\t\t\t\t} else {\n\t\t\t\t\tnewHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnewHeight = nativeHeight;\n\t\t\t}\n\n\t\t\tif (isNaN(newHeight)) {\n\t\t\t\tnewHeight = parentHeight;\n\t\t\t}\n\n\t\t\tif (t.getElement(t.container).parentNode.length > 0 && t.getElement(t.container).parentNode.tagName.toLowerCase() === 'body') {\n\t\t\t\tparentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth;\n\t\t\t\tnewHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight;\n\t\t\t}\n\n\t\t\tif (newHeight && parentWidth) {\n\t\t\t\tt.getElement(t.container).style.width = parentWidth + 'px';\n\t\t\t\tt.getElement(t.container).style.height = newHeight + 'px';\n\n\t\t\t\tt.node.style.width = '100%';\n\t\t\t\tt.node.style.height = '100%';\n\n\t\t\t\tif (t.isVideo && t.media.setSize) {\n\t\t\t\t\tt.media.setSize(parentWidth, newHeight);\n\t\t\t\t}\n\n\t\t\t\tvar layerChildren = t.getElement(t.layers).children;\n\t\t\t\tfor (var i = 0, total = layerChildren.length; i < total; i++) {\n\t\t\t\t\tlayerChildren[i].style.width = '100%';\n\t\t\t\t\tlayerChildren[i].style.height = '100%';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'setFillMode',\n\t\tvalue: function setFillMode() {\n\t\t\tvar t = this;\n\t\t\tvar isIframe = _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null;\n\t\t\tvar parent = function () {\n\t\t\t\tvar parentEl = void 0,\n\t\t\t\t    el = t.getElement(t.container);\n\n\t\t\t\twhile (el) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {\n\t\t\t\t\t\t\treturn _window2.default.frameElement;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tparentEl = el.parentElement;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tparentEl = el.parentElement;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (parentEl && dom.visible(parentEl)) {\n\t\t\t\t\t\treturn parentEl;\n\t\t\t\t\t}\n\t\t\t\t\tel = parentEl;\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}();\n\t\t\tvar parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null);\n\n\t\t\tif (t.node.style.height !== 'none' && t.node.style.height !== t.height) {\n\t\t\t\tt.node.style.height = 'auto';\n\t\t\t}\n\t\t\tif (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) {\n\t\t\t\tt.node.style.maxWidth = 'none';\n\t\t\t}\n\n\t\t\tif (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) {\n\t\t\t\tt.node.style.maxHeight = 'none';\n\t\t\t}\n\n\t\t\tif (t.node.currentStyle) {\n\t\t\t\tif (t.node.currentStyle.height === '100%') {\n\t\t\t\t\tt.node.currentStyle.height = 'auto';\n\t\t\t\t}\n\t\t\t\tif (t.node.currentStyle.maxWidth === '100%') {\n\t\t\t\t\tt.node.currentStyle.maxWidth = 'none';\n\t\t\t\t}\n\t\t\t\tif (t.node.currentStyle.maxHeight === '100%') {\n\t\t\t\t\tt.node.currentStyle.maxHeight = 'none';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!isIframe && !parseFloat(parentStyles.width)) {\n\t\t\t\tparent.style.width = t.media.offsetWidth + 'px';\n\t\t\t}\n\n\t\t\tif (!isIframe && !parseFloat(parentStyles.height)) {\n\t\t\t\tparent.style.height = t.media.offsetHeight + 'px';\n\t\t\t}\n\n\t\t\tparentStyles = getComputedStyle(parent);\n\n\t\t\tvar parentWidth = parseFloat(parentStyles.width),\n\t\t\t    parentHeight = parseFloat(parentStyles.height);\n\n\t\t\tt.setDimensions('100%', '100%');\n\n\t\t\tvar poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img');\n\t\t\tif (poster) {\n\t\t\t\tposter.style.display = '';\n\t\t\t}\n\n\t\t\tvar targetElement = t.getElement(t.container).querySelectorAll('object, embed, iframe, video'),\n\t\t\t    initHeight = t.height,\n\t\t\t    initWidth = t.width,\n\t\t\t    scaleX1 = parentWidth,\n\t\t\t    scaleY1 = initHeight * parentWidth / initWidth,\n\t\t\t    scaleX2 = initWidth * parentHeight / initHeight,\n\t\t\t    scaleY2 = parentHeight,\n\t\t\t    bScaleOnWidth = scaleX2 > parentWidth === false,\n\t\t\t    finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),\n\t\t\t    finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),\n\t\t\t    width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',\n\t\t\t    height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px';\n\n\t\t\tfor (var i = 0, total = targetElement.length; i < total; i++) {\n\t\t\t\ttargetElement[i].style.height = height;\n\t\t\t\ttargetElement[i].style.width = width;\n\t\t\t\tif (t.media.setSize) {\n\t\t\t\t\tt.media.setSize(width, height);\n\t\t\t\t}\n\n\t\t\t\ttargetElement[i].style.marginLeft = Math.floor((parentWidth - finalWidth) / 2) + 'px';\n\t\t\t\ttargetElement[i].style.marginTop = 0;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'setDimensions',\n\t\tvalue: function setDimensions(width, height) {\n\t\t\tvar t = this;\n\n\t\t\twidth = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px';\n\t\t\theight = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px';\n\n\t\t\tt.getElement(t.container).style.width = width;\n\t\t\tt.getElement(t.container).style.height = height;\n\n\t\t\tvar layers = t.getElement(t.layers).children;\n\t\t\tfor (var i = 0, total = layers.length; i < total; i++) {\n\t\t\t\tlayers[i].style.width = width;\n\t\t\t\tlayers[i].style.height = height;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'setControlsSize',\n\t\tvalue: function setControlsSize() {\n\t\t\tvar t = this;\n\n\t\t\tif (!dom.visible(t.getElement(t.container))) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (t.rail && dom.visible(t.rail)) {\n\t\t\t\tvar totalStyles = t.total ? getComputedStyle(t.total, null) : null,\n\t\t\t\t    totalMargin = totalStyles ? parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) : 0,\n\t\t\t\t    railStyles = getComputedStyle(t.rail),\n\t\t\t\t    railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight);\n\n\t\t\t\tvar siblingsWidth = 0;\n\n\t\t\t\tvar siblings = dom.siblings(t.rail, function (el) {\n\t\t\t\t\treturn el !== t.rail;\n\t\t\t\t}),\n\t\t\t\t    total = siblings.length;\n\t\t\t\tfor (var i = 0; i < total; i++) {\n\t\t\t\t\tsiblingsWidth += siblings[i].offsetWidth;\n\t\t\t\t}\n\n\t\t\t\tsiblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;\n\n\t\t\t\tt.getElement(t.container).style.minWidth = siblingsWidth + 'px';\n\n\t\t\t\tvar event = (0, _general.createEvent)('controlsresize', t.getElement(t.container));\n\t\t\t\tt.getElement(t.container).dispatchEvent(event);\n\t\t\t} else {\n\t\t\t\tvar children = t.getElement(t.controls).children;\n\t\t\t\tvar minWidth = 0;\n\n\t\t\t\tfor (var _i = 0, _total = children.length; _i < _total; _i++) {\n\t\t\t\t\tminWidth += children[_i].offsetWidth;\n\t\t\t\t}\n\n\t\t\t\tt.getElement(t.container).style.minWidth = minWidth + 'px';\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'addControlElement',\n\t\tvalue: function addControlElement(element, key) {\n\n\t\t\tvar t = this;\n\n\t\t\tif (t.featurePosition[key] !== undefined) {\n\t\t\t\tvar child = t.getElement(t.controls).children[t.featurePosition[key] - 1];\n\t\t\t\tchild.parentNode.insertBefore(element, child.nextSibling);\n\t\t\t} else {\n\t\t\t\tt.getElement(t.controls).appendChild(element);\n\t\t\t\tvar children = t.getElement(t.controls).children;\n\t\t\t\tfor (var i = 0, total = children.length; i < total; i++) {\n\t\t\t\t\tif (element === children[i]) {\n\t\t\t\t\t\tt.featurePosition[key] = i;\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\t}, {\n\t\tkey: 'createIframeLayer',\n\t\tvalue: function createIframeLayer() {\n\t\t\tvar t = this;\n\n\t\t\tif (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {\n\n\t\t\t\tvar layer = _document2.default.createElement('div'),\n\t\t\t\t    target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);\n\n\t\t\t\tlayer.id = t.media.id + '-iframe-overlay';\n\t\t\t\tlayer.className = t.options.classPrefix + 'iframe-overlay';\n\t\t\t\tlayer.addEventListener('click', function (e) {\n\t\t\t\t\tif (t.options.clickToPlayPause) {\n\t\t\t\t\t\tif (t.paused) {\n\t\t\t\t\t\t\tt.play();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt.pause();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\ttarget.parentNode.insertBefore(layer, target);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'resetSize',\n\t\tvalue: function resetSize() {\n\t\t\tvar t = this;\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tt.setPlayerSize(t.width, t.height);\n\t\t\t\tt.setControlsSize();\n\t\t\t}, 50);\n\t\t}\n\t}, {\n\t\tkey: 'setPoster',\n\t\tvalue: function setPoster(url) {\n\t\t\tvar t = this;\n\n\t\t\tif (t.getElement(t.container)) {\n\t\t\t\tvar posterDiv = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster');\n\n\t\t\t\tif (!posterDiv) {\n\t\t\t\t\tposterDiv = _document2.default.createElement('div');\n\t\t\t\t\tposterDiv.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';\n\t\t\t\t\tt.getElement(t.layers).appendChild(posterDiv);\n\t\t\t\t}\n\n\t\t\t\tvar posterImg = posterDiv.querySelector('img');\n\n\t\t\t\tif (!posterImg && url) {\n\t\t\t\t\tposterImg = _document2.default.createElement('img');\n\t\t\t\t\tposterImg.className = t.options.classPrefix + 'poster-img';\n\t\t\t\t\tposterImg.width = '100%';\n\t\t\t\t\tposterImg.height = '100%';\n\t\t\t\t\tposterDiv.style.display = '';\n\t\t\t\t\tposterDiv.appendChild(posterImg);\n\t\t\t\t}\n\n\t\t\t\tif (url) {\n\t\t\t\t\tposterImg.setAttribute('src', url);\n\t\t\t\t\tposterDiv.style.backgroundImage = 'url(\"' + url + '\")';\n\t\t\t\t\tposterDiv.style.display = '';\n\t\t\t\t} else if (posterImg) {\n\t\t\t\t\tposterDiv.style.backgroundImage = 'none';\n\t\t\t\t\tposterDiv.style.display = 'none';\n\t\t\t\t\tposterImg.remove();\n\t\t\t\t} else {\n\t\t\t\t\tposterDiv.style.display = 'none';\n\t\t\t\t}\n\t\t\t} else if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls || _constants.IS_ANDROID && t.options.AndroidUseNativeControls) {\n\t\t\t\tt.media.originalNode.poster = url;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'changeSkin',\n\t\tvalue: function changeSkin(className) {\n\t\t\tvar t = this;\n\n\t\t\tt.getElement(t.container).className = t.options.classPrefix + 'container ' + className;\n\t\t\tt.setPlayerSize(t.width, t.height);\n\t\t\tt.setControlsSize();\n\t\t}\n\t}, {\n\t\tkey: 'globalBind',\n\t\tvalue: function globalBind(events, callback) {\n\t\t\tvar t = this,\n\t\t\t    doc = t.node ? t.node.ownerDocument : _document2.default;\n\n\t\t\tevents = (0, _general.splitEvents)(events, t.id);\n\t\t\tif (events.d) {\n\t\t\t\tvar eventList = events.d.split(' ');\n\t\t\t\tfor (var i = 0, total = eventList.length; i < total; i++) {\n\t\t\t\t\teventList[i].split('.').reduce(function (part, e) {\n\t\t\t\t\t\tdoc.addEventListener(e, callback, false);\n\t\t\t\t\t\treturn e;\n\t\t\t\t\t}, '');\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (events.w) {\n\t\t\t\tvar _eventList = events.w.split(' ');\n\t\t\t\tfor (var _i2 = 0, _total2 = _eventList.length; _i2 < _total2; _i2++) {\n\t\t\t\t\t_eventList[_i2].split('.').reduce(function (part, e) {\n\t\t\t\t\t\t_window2.default.addEventListener(e, callback, false);\n\t\t\t\t\t\treturn e;\n\t\t\t\t\t}, '');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'globalUnbind',\n\t\tvalue: function globalUnbind(events, callback) {\n\t\t\tvar t = this,\n\t\t\t    doc = t.node ? t.node.ownerDocument : _document2.default;\n\n\t\t\tevents = (0, _general.splitEvents)(events, t.id);\n\t\t\tif (events.d) {\n\t\t\t\tvar eventList = events.d.split(' ');\n\t\t\t\tfor (var i = 0, total = eventList.length; i < total; i++) {\n\t\t\t\t\teventList[i].split('.').reduce(function (part, e) {\n\t\t\t\t\t\tdoc.removeEventListener(e, callback, false);\n\t\t\t\t\t\treturn e;\n\t\t\t\t\t}, '');\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (events.w) {\n\t\t\t\tvar _eventList2 = events.w.split(' ');\n\t\t\t\tfor (var _i3 = 0, _total3 = _eventList2.length; _i3 < _total3; _i3++) {\n\t\t\t\t\t_eventList2[_i3].split('.').reduce(function (part, e) {\n\t\t\t\t\t\t_window2.default.removeEventListener(e, callback, false);\n\t\t\t\t\t\treturn e;\n\t\t\t\t\t}, '');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'buildfeatures',\n\t\tvalue: function buildfeatures(player, controls, layers, media) {\n\t\t\tvar t = this;\n\n\t\t\tfor (var i = 0, total = t.options.features.length; i < total; i++) {\n\t\t\t\tvar feature = t.options.features[i];\n\t\t\t\tif (t['build' + feature]) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tt['build' + feature](player, controls, layers, media);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error('error building ' + feature, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'buildposter',\n\t\tvalue: function buildposter(player, controls, layers, media) {\n\t\t\tvar t = this,\n\t\t\t    poster = _document2.default.createElement('div');\n\n\t\t\tposter.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';\n\t\t\tlayers.appendChild(poster);\n\n\t\t\tvar posterUrl = media.originalNode.getAttribute('poster');\n\n\t\t\tif (player.options.poster !== '') {\n\t\t\t\tif (posterUrl && _constants.IS_IOS) {\n\t\t\t\t\tmedia.originalNode.removeAttribute('poster');\n\t\t\t\t}\n\t\t\t\tposterUrl = player.options.poster;\n\t\t\t}\n\n\t\t\tif (posterUrl) {\n\t\t\t\tt.setPoster(posterUrl);\n\t\t\t} else if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {\n\t\t\t\tt.setPoster(t.media.renderer.getPosterUrl());\n\t\t\t} else {\n\t\t\t\tposter.style.display = 'none';\n\t\t\t}\n\n\t\t\tmedia.addEventListener('play', function () {\n\t\t\t\tposter.style.display = 'none';\n\t\t\t});\n\n\t\t\tmedia.addEventListener('playing', function () {\n\t\t\t\tposter.style.display = 'none';\n\t\t\t});\n\n\t\t\tif (player.options.showPosterWhenEnded && player.options.autoRewind) {\n\t\t\t\tmedia.addEventListener('ended', function () {\n\t\t\t\t\tposter.style.display = '';\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tmedia.addEventListener('error', function () {\n\t\t\t\tposter.style.display = 'none';\n\t\t\t});\n\n\t\t\tif (player.options.showPosterWhenPaused) {\n\t\t\t\tmedia.addEventListener('pause', function () {\n\t\t\t\t\tif (!player.ended) {\n\t\t\t\t\t\tposter.style.display = '';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'buildoverlays',\n\t\tvalue: function buildoverlays(player, controls, layers, media) {\n\n\t\t\tif (!player.isVideo) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar t = this,\n\t\t\t    loading = _document2.default.createElement('div'),\n\t\t\t    error = _document2.default.createElement('div'),\n\t\t\t    bigPlay = _document2.default.createElement('div');\n\n\t\t\tloading.style.display = 'none';\n\t\t\tloading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';\n\t\t\tloading.innerHTML = '<div class=\"' + t.options.classPrefix + 'overlay-loading\">' + ('<span class=\"' + t.options.classPrefix + 'overlay-loading-bg-img\"></span>') + '</div>';\n\t\t\tlayers.appendChild(loading);\n\n\t\t\terror.style.display = 'none';\n\t\t\terror.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';\n\t\t\terror.innerHTML = '<div class=\"' + t.options.classPrefix + 'overlay-error\"></div>';\n\t\t\tlayers.appendChild(error);\n\n\t\t\tbigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';\n\t\t\tbigPlay.innerHTML = '<div class=\"' + t.options.classPrefix + 'overlay-button\" role=\"button\" tabindex=\"0\" ' + ('aria-label=\"' + _i18n2.default.t('mejs.play') + '\" aria-pressed=\"false\"></div>');\n\t\t\tbigPlay.addEventListener('click', function () {\n\t\t\t\tif (t.options.clickToPlayPause) {\n\n\t\t\t\t\tvar button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'),\n\t\t\t\t\t    pressed = button.getAttribute('aria-pressed');\n\n\t\t\t\t\tif (t.paused) {\n\t\t\t\t\t\tt.play();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tt.pause();\n\t\t\t\t\t}\n\n\t\t\t\t\tbutton.setAttribute('aria-pressed', !!pressed);\n\t\t\t\t\tt.getElement(t.container).focus();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tbigPlay.addEventListener('keydown', function (e) {\n\t\t\t\tvar keyPressed = e.keyCode || e.which || 0;\n\n\t\t\t\tif (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) {\n\t\t\t\t\tvar event = (0, _general.createEvent)('click', bigPlay);\n\t\t\t\t\tbigPlay.dispatchEvent(event);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tlayers.appendChild(bigPlay);\n\n\t\t\tif (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(t.media.originalNode.getAttribute('poster') || player.options.poster || typeof t.media.renderer.getPosterUrl === 'function' && t.media.renderer.getPosterUrl()) || _constants.IS_STOCK_ANDROID || t.media.originalNode.getAttribute('autoplay'))) {\n\t\t\t\tbigPlay.style.display = 'none';\n\t\t\t}\n\n\t\t\tvar hasError = false;\n\n\t\t\tmedia.addEventListener('play', function () {\n\t\t\t\tbigPlay.style.display = 'none';\n\t\t\t\tloading.style.display = 'none';\n\t\t\t\terror.style.display = 'none';\n\t\t\t\thasError = false;\n\t\t\t});\n\t\t\tmedia.addEventListener('playing', function () {\n\t\t\t\tbigPlay.style.display = 'none';\n\t\t\t\tloading.style.display = 'none';\n\t\t\t\terror.style.display = 'none';\n\t\t\t\thasError = false;\n\t\t\t});\n\t\t\tmedia.addEventListener('seeking', function () {\n\t\t\t\tbigPlay.style.display = 'none';\n\t\t\t\tloading.style.display = '';\n\t\t\t\thasError = false;\n\t\t\t});\n\t\t\tmedia.addEventListener('seeked', function () {\n\t\t\t\tbigPlay.style.display = t.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none';\n\t\t\t\tloading.style.display = 'none';\n\t\t\t\thasError = false;\n\t\t\t});\n\t\t\tmedia.addEventListener('pause', function () {\n\t\t\t\tloading.style.display = 'none';\n\t\t\t\tif (!_constants.IS_STOCK_ANDROID && !hasError) {\n\t\t\t\t\tbigPlay.style.display = '';\n\t\t\t\t}\n\t\t\t\thasError = false;\n\t\t\t});\n\t\t\tmedia.addEventListener('waiting', function () {\n\t\t\t\tloading.style.display = '';\n\t\t\t\thasError = false;\n\t\t\t});\n\n\t\t\tmedia.addEventListener('loadeddata', function () {\n\t\t\t\tloading.style.display = '';\n\n\t\t\t\tif (_constants.IS_ANDROID) {\n\t\t\t\t\tmedia.canplayTimeout = setTimeout(function () {\n\t\t\t\t\t\tif (_document2.default.createEvent) {\n\t\t\t\t\t\t\tvar evt = _document2.default.createEvent('HTMLEvents');\n\t\t\t\t\t\t\tevt.initEvent('canplay', true, true);\n\t\t\t\t\t\t\treturn media.dispatchEvent(evt);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 300);\n\t\t\t\t}\n\t\t\t\thasError = false;\n\t\t\t});\n\t\t\tmedia.addEventListener('canplay', function () {\n\t\t\t\tloading.style.display = 'none';\n\n\t\t\t\tclearTimeout(media.canplayTimeout);\n\t\t\t\thasError = false;\n\t\t\t});\n\n\t\t\tmedia.addEventListener('error', function (e) {\n\t\t\t\tt._handleError(e, t.media, t.node);\n\t\t\t\tloading.style.display = 'none';\n\t\t\t\tbigPlay.style.display = 'none';\n\t\t\t\thasError = true;\n\t\t\t});\n\n\t\t\tmedia.addEventListener('loadedmetadata', function () {\n\t\t\t\tif (!t.controlsEnabled) {\n\t\t\t\t\tt.enableControls();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmedia.addEventListener('keydown', function (e) {\n\t\t\t\tt.onkeydown(player, media, e);\n\t\t\t\thasError = false;\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'buildkeyboard',\n\t\tvalue: function buildkeyboard(player, controls, layers, media) {\n\n\t\t\tvar t = this;\n\n\t\t\tt.getElement(t.container).addEventListener('keydown', function () {\n\t\t\t\tt.keyboardAction = true;\n\t\t\t});\n\n\t\t\tt.globalKeydownCallback = function (event) {\n\t\t\t\tvar container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),\n\t\t\t\t    target = t.media.closest('.' + t.options.classPrefix + 'container');\n\t\t\t\tt.hasFocus = !!(container && target && container.id === target.id);\n\t\t\t\treturn t.onkeydown(player, media, event);\n\t\t\t};\n\n\t\t\tt.globalClickCallback = function (event) {\n\t\t\t\tt.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');\n\t\t\t};\n\n\t\t\tt.globalBind('keydown', t.globalKeydownCallback);\n\n\t\t\tt.globalBind('click', t.globalClickCallback);\n\t\t}\n\t}, {\n\t\tkey: 'onkeydown',\n\t\tvalue: function onkeydown(player, media, e) {\n\n\t\t\tif (player.hasFocus && player.options.enableKeyboard) {\n\t\t\t\tfor (var i = 0, total = player.options.keyActions.length; i < total; i++) {\n\t\t\t\t\tvar keyAction = player.options.keyActions[i];\n\n\t\t\t\t\tfor (var j = 0, jl = keyAction.keys.length; j < jl; j++) {\n\t\t\t\t\t\tif (e.keyCode === keyAction.keys[j]) {\n\t\t\t\t\t\t\tkeyAction.action(player, media, e.keyCode, e);\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\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}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\t}, {\n\t\tkey: 'play',\n\t\tvalue: function play() {\n\t\t\tthis.proxy.play();\n\t\t}\n\t}, {\n\t\tkey: 'pause',\n\t\tvalue: function pause() {\n\t\t\tthis.proxy.pause();\n\t\t}\n\t}, {\n\t\tkey: 'load',\n\t\tvalue: function load() {\n\t\t\tthis.proxy.load();\n\t\t}\n\t}, {\n\t\tkey: 'setCurrentTime',\n\t\tvalue: function setCurrentTime(time) {\n\t\t\tthis.proxy.setCurrentTime(time);\n\t\t}\n\t}, {\n\t\tkey: 'getCurrentTime',\n\t\tvalue: function getCurrentTime() {\n\t\t\treturn this.proxy.currentTime;\n\t\t}\n\t}, {\n\t\tkey: 'getDuration',\n\t\tvalue: function getDuration() {\n\t\t\treturn this.proxy.duration;\n\t\t}\n\t}, {\n\t\tkey: 'setVolume',\n\t\tvalue: function setVolume(volume) {\n\t\t\tthis.proxy.volume = volume;\n\t\t}\n\t}, {\n\t\tkey: 'getVolume',\n\t\tvalue: function getVolume() {\n\t\t\treturn this.proxy.getVolume();\n\t\t}\n\t}, {\n\t\tkey: 'setMuted',\n\t\tvalue: function setMuted(value) {\n\t\t\tthis.proxy.setMuted(value);\n\t\t}\n\t}, {\n\t\tkey: 'setSrc',\n\t\tvalue: function setSrc(src) {\n\t\t\tif (!this.controlsEnabled) {\n\t\t\t\tthis.enableControls();\n\t\t\t}\n\t\t\tthis.proxy.setSrc(src);\n\t\t}\n\t}, {\n\t\tkey: 'getSrc',\n\t\tvalue: function getSrc() {\n\t\t\treturn this.proxy.getSrc();\n\t\t}\n\t}, {\n\t\tkey: 'canPlayType',\n\t\tvalue: function canPlayType(type) {\n\t\t\treturn this.proxy.canPlayType(type);\n\t\t}\n\t}, {\n\t\tkey: 'remove',\n\t\tvalue: function remove() {\n\t\t\tvar t = this,\n\t\t\t    rendererName = t.media.rendererName,\n\t\t\t    src = t.media.originalNode.src;\n\n\t\t\tfor (var featureIndex in t.options.features) {\n\t\t\t\tvar feature = t.options.features[featureIndex];\n\t\t\t\tif (t['clean' + feature]) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tt['clean' + feature](t, t.getElement(t.layers), t.getElement(t.controls), t.media);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error('error cleaning ' + feature, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar nativeWidth = t.node.getAttribute('width'),\n\t\t\t    nativeHeight = t.node.getAttribute('height');\n\n\t\t\tif (nativeWidth) {\n\t\t\t\tif (nativeWidth.indexOf('%') === -1) {\n\t\t\t\t\tnativeWidth = nativeWidth + 'px';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnativeWidth = 'auto';\n\t\t\t}\n\n\t\t\tif (nativeHeight) {\n\t\t\t\tif (nativeHeight.indexOf('%') === -1) {\n\t\t\t\t\tnativeHeight = nativeHeight + 'px';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnativeHeight = 'auto';\n\t\t\t}\n\n\t\t\tt.node.style.width = nativeWidth;\n\t\t\tt.node.style.height = nativeHeight;\n\n\t\t\tt.setPlayerSize(0, 0);\n\n\t\t\tif (!t.isDynamic) {\n\t\t\t\t(function () {\n\t\t\t\t\tt.node.setAttribute('controls', true);\n\t\t\t\t\tt.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));\n\t\t\t\t\tvar poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img');\n\t\t\t\t\tif (poster) {\n\t\t\t\t\t\tt.node.setAttribute('poster', poster.src);\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete t.node.autoplay;\n\n\t\t\t\t\tt.node.setAttribute('src', '');\n\t\t\t\t\tif (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') {\n\t\t\t\t\t\tt.node.setAttribute('src', src);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (rendererName && rendererName.indexOf('iframe') > -1) {\n\t\t\t\t\t\tvar layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');\n\t\t\t\t\t\tlayer.remove();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar node = t.node.cloneNode();\n\t\t\t\t\tnode.style.display = '';\n\t\t\t\t\tt.getElement(t.container).parentNode.insertBefore(node, t.getElement(t.container));\n\t\t\t\t\tt.node.remove();\n\n\t\t\t\t\tif (t.mediaFiles) {\n\t\t\t\t\t\tfor (var i = 0, total = t.mediaFiles.length; i < total; i++) {\n\t\t\t\t\t\t\tvar source = _document2.default.createElement('source');\n\t\t\t\t\t\t\tsource.setAttribute('src', t.mediaFiles[i].src);\n\t\t\t\t\t\t\tsource.setAttribute('type', t.mediaFiles[i].type);\n\t\t\t\t\t\t\tnode.appendChild(source);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (t.trackFiles) {\n\t\t\t\t\t\tvar _loop3 = function _loop3(_i4, _total4) {\n\t\t\t\t\t\t\tvar track = t.trackFiles[_i4];\n\t\t\t\t\t\t\tvar newTrack = _document2.default.createElement('track');\n\t\t\t\t\t\t\tnewTrack.kind = track.kind;\n\t\t\t\t\t\t\tnewTrack.label = track.label;\n\t\t\t\t\t\t\tnewTrack.srclang = track.srclang;\n\t\t\t\t\t\t\tnewTrack.src = track.src;\n\n\t\t\t\t\t\t\tnode.appendChild(newTrack);\n\t\t\t\t\t\t\tnewTrack.addEventListener('load', function () {\n\t\t\t\t\t\t\t\tthis.mode = 'showing';\n\t\t\t\t\t\t\t\tnode.textTracks[_i4].mode = 'showing';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tfor (var _i4 = 0, _total4 = t.trackFiles.length; _i4 < _total4; _i4++) {\n\t\t\t\t\t\t\t_loop3(_i4, _total4);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete t.node;\n\t\t\t\t\tdelete t.mediaFiles;\n\t\t\t\t\tdelete t.trackFiles;\n\t\t\t\t})();\n\t\t\t} else {\n\t\t\t\tt.getElement(t.container).parentNode.insertBefore(t.node, t.getElement(t.container));\n\t\t\t}\n\n\t\t\tif (t.media.renderer && typeof t.media.renderer.destroy === 'function') {\n\t\t\t\tt.media.renderer.destroy();\n\t\t\t}\n\n\t\t\tdelete _mejs2.default.players[t.id];\n\n\t\t\tif (_typeof(t.getElement(t.container)) === 'object') {\n\t\t\t\tvar offscreen = t.getElement(t.container).parentNode.querySelector('.' + t.options.classPrefix + 'offscreen');\n\t\t\t\tif (offscreen) {\n\t\t\t\t\toffscreen.remove();\n\t\t\t\t}\n\t\t\t\tt.getElement(t.container).remove();\n\t\t\t}\n\t\t\tt.globalUnbind('resize', t.globalResizeCallback);\n\t\t\tt.globalUnbind('keydown', t.globalKeydownCallback);\n\t\t\tt.globalUnbind('click', t.globalClickCallback);\n\n\t\t\tdelete t.media.player;\n\t\t}\n\t}, {\n\t\tkey: 'paused',\n\t\tget: function get() {\n\t\t\treturn this.proxy.paused;\n\t\t}\n\t}, {\n\t\tkey: 'muted',\n\t\tget: function get() {\n\t\t\treturn this.proxy.muted;\n\t\t},\n\t\tset: function set(muted) {\n\t\t\tthis.setMuted(muted);\n\t\t}\n\t}, {\n\t\tkey: 'ended',\n\t\tget: function get() {\n\t\t\treturn this.proxy.ended;\n\t\t}\n\t}, {\n\t\tkey: 'readyState',\n\t\tget: function get() {\n\t\t\treturn this.proxy.readyState;\n\t\t}\n\t}, {\n\t\tkey: 'currentTime',\n\t\tset: function set(time) {\n\t\t\tthis.setCurrentTime(time);\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this.getCurrentTime();\n\t\t}\n\t}, {\n\t\tkey: 'duration',\n\t\tget: function get() {\n\t\t\treturn this.getDuration();\n\t\t}\n\t}, {\n\t\tkey: 'volume',\n\t\tset: function set(volume) {\n\t\t\tthis.setVolume(volume);\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this.getVolume();\n\t\t}\n\t}, {\n\t\tkey: 'src',\n\t\tset: function set(src) {\n\t\t\tthis.setSrc(src);\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this.getSrc();\n\t\t}\n\t}]);\n\n\treturn MediaElementPlayer;\n}();\n\n_window2.default.MediaElementPlayer = MediaElementPlayer;\n_mejs2.default.MediaElementPlayer = MediaElementPlayer;\n\nexports.default = MediaElementPlayer;\n\n},{\"17\":17,\"2\":2,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"3\":3,\"30\":30,\"5\":5,\"6\":6,\"7\":7}],17:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\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 _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\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 DefaultPlayer = function () {\n\tfunction DefaultPlayer(player) {\n\t\t_classCallCheck(this, DefaultPlayer);\n\n\t\tthis.media = player.media;\n\t\tthis.isVideo = player.isVideo;\n\t\tthis.classPrefix = player.options.classPrefix;\n\t\tthis.createIframeLayer = function () {\n\t\t\treturn player.createIframeLayer();\n\t\t};\n\t\tthis.setPoster = function (url) {\n\t\t\treturn player.setPoster(url);\n\t\t};\n\t\treturn this;\n\t}\n\n\t_createClass(DefaultPlayer, [{\n\t\tkey: 'play',\n\t\tvalue: function play() {\n\t\t\tthis.media.play();\n\t\t}\n\t}, {\n\t\tkey: 'pause',\n\t\tvalue: function pause() {\n\t\t\tthis.media.pause();\n\t\t}\n\t}, {\n\t\tkey: 'load',\n\t\tvalue: function load() {\n\t\t\tvar t = this;\n\n\t\t\tif (!t.isLoaded) {\n\t\t\t\tt.media.load();\n\t\t\t}\n\n\t\t\tt.isLoaded = true;\n\t\t}\n\t}, {\n\t\tkey: 'setCurrentTime',\n\t\tvalue: function setCurrentTime(time) {\n\t\t\tthis.media.setCurrentTime(time);\n\t\t}\n\t}, {\n\t\tkey: 'getCurrentTime',\n\t\tvalue: function getCurrentTime() {\n\t\t\treturn this.media.currentTime;\n\t\t}\n\t}, {\n\t\tkey: 'getDuration',\n\t\tvalue: function getDuration() {\n\t\t\tvar duration = this.media.getDuration();\n\t\t\tif (duration === Infinity && this.media.seekable && this.media.seekable.length) {\n\t\t\t\tduration = this.media.seekable.end(0);\n\t\t\t}\n\t\t\treturn duration;\n\t\t}\n\t}, {\n\t\tkey: 'setVolume',\n\t\tvalue: function setVolume(volume) {\n\t\t\tthis.media.setVolume(volume);\n\t\t}\n\t}, {\n\t\tkey: 'getVolume',\n\t\tvalue: function getVolume() {\n\t\t\treturn this.media.getVolume();\n\t\t}\n\t}, {\n\t\tkey: 'setMuted',\n\t\tvalue: function setMuted(value) {\n\t\t\tthis.media.setMuted(value);\n\t\t}\n\t}, {\n\t\tkey: 'setSrc',\n\t\tvalue: function setSrc(src) {\n\t\t\tvar t = this,\n\t\t\t    layer = document.getElementById(t.media.id + '-iframe-overlay');\n\n\t\t\tif (layer) {\n\t\t\t\tlayer.remove();\n\t\t\t}\n\n\t\t\tt.media.setSrc(src);\n\t\t\tt.createIframeLayer();\n\t\t\tif (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {\n\t\t\t\tt.setPoster(t.media.renderer.getPosterUrl());\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getSrc',\n\t\tvalue: function getSrc() {\n\t\t\treturn this.media.getSrc();\n\t\t}\n\t}, {\n\t\tkey: 'canPlayType',\n\t\tvalue: function canPlayType(type) {\n\t\t\treturn this.media.canPlayType(type);\n\t\t}\n\t}, {\n\t\tkey: 'paused',\n\t\tget: function get() {\n\t\t\treturn this.media.paused;\n\t\t}\n\t}, {\n\t\tkey: 'muted',\n\t\tset: function set(muted) {\n\t\t\tthis.setMuted(muted);\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this.media.muted;\n\t\t}\n\t}, {\n\t\tkey: 'ended',\n\t\tget: function get() {\n\t\t\treturn this.media.ended;\n\t\t}\n\t}, {\n\t\tkey: 'readyState',\n\t\tget: function get() {\n\t\t\treturn this.media.readyState;\n\t\t}\n\t}, {\n\t\tkey: 'currentTime',\n\t\tset: function set(time) {\n\t\t\tthis.setCurrentTime(time);\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this.getCurrentTime();\n\t\t}\n\t}, {\n\t\tkey: 'duration',\n\t\tget: function get() {\n\t\t\treturn this.getDuration();\n\t\t}\n\t}, {\n\t\tkey: 'remainingTime',\n\t\tget: function get() {\n\t\t\treturn this.getDuration() - this.currentTime();\n\t\t}\n\t}, {\n\t\tkey: 'volume',\n\t\tset: function set(volume) {\n\t\t\tthis.setVolume(volume);\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this.getVolume();\n\t\t}\n\t}, {\n\t\tkey: 'src',\n\t\tset: function set(src) {\n\t\t\tthis.setSrc(src);\n\t\t},\n\t\tget: function get() {\n\t\t\treturn this.getSrc();\n\t\t}\n\t}]);\n\n\treturn DefaultPlayer;\n}();\n\nexports.default = DefaultPlayer;\n\n\n_window2.default.DefaultPlayer = DefaultPlayer;\n\n},{\"3\":3}],18:[function(_dereq_,module,exports){\n'use strict';\n\nvar _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _player = _dereq_(16);\n\nvar _player2 = _interopRequireDefault(_player);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nif (typeof jQuery !== 'undefined') {\n\t_mejs2.default.$ = jQuery;\n} else if (typeof Zepto !== 'undefined') {\n\t_mejs2.default.$ = Zepto;\n} else if (typeof ender !== 'undefined') {\n\t_mejs2.default.$ = ender;\n}\n\n(function ($) {\n\tif (typeof $ !== 'undefined') {\n\t\t$.fn.mediaelementplayer = function (options) {\n\t\t\tif (options === false) {\n\t\t\t\tthis.each(function () {\n\t\t\t\t\tvar player = $(this).data('mediaelementplayer');\n\t\t\t\t\tif (player) {\n\t\t\t\t\t\tplayer.remove();\n\t\t\t\t\t}\n\t\t\t\t\t$(this).removeData('mediaelementplayer');\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.each(function () {\n\t\t\t\t\t$(this).data('mediaelementplayer', new _player2.default(this, options));\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t};\n\n\t\t$(document).ready(function () {\n\t\t\t$('.' + _mejs2.default.MepDefaults.classPrefix + 'player').mediaelementplayer();\n\t\t});\n\t}\n})(_mejs2.default.$);\n\n},{\"16\":16,\"3\":3,\"7\":7}],19:[function(_dereq_,module,exports){\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\nvar _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _renderer = _dereq_(8);\n\nvar _general = _dereq_(27);\n\nvar _media = _dereq_(28);\n\nvar _constants = _dereq_(25);\n\nvar _dom = _dereq_(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NativeDash = {\n\n\tpromise: null,\n\n\tload: function load(settings) {\n\t\tif (typeof dashjs !== 'undefined') {\n\t\t\tNativeDash.promise = new Promise(function (resolve) {\n\t\t\t\tresolve();\n\t\t\t}).then(function () {\n\t\t\t\tNativeDash._createPlayer(settings);\n\t\t\t});\n\t\t} else {\n\t\t\tsettings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';\n\n\t\t\tNativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);\n\t\t\tNativeDash.promise.then(function () {\n\t\t\t\tNativeDash._createPlayer(settings);\n\t\t\t});\n\t\t}\n\n\t\treturn NativeDash.promise;\n\t},\n\n\t_createPlayer: function _createPlayer(settings) {\n\t\tvar player = dashjs.MediaPlayer().create();\n\t\t_window2.default['__ready__' + settings.id](player);\n\t\treturn player;\n\t}\n};\n\nvar DashNativeRenderer = {\n\tname: 'native_dash',\n\toptions: {\n\t\tprefix: 'native_dash',\n\t\tdash: {\n\t\t\tpath: 'https://cdn.dashjs.org/latest/dash.all.min.js',\n\t\t\tdebug: false,\n\t\t\tdrm: {},\n\n\t\t\trobustnessLevel: ''\n\t\t}\n\t},\n\n\tcanPlayType: function canPlayType(type) {\n\t\treturn _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;\n\t},\n\n\tcreate: function create(mediaElement, options, mediaFiles) {\n\n\t\tvar originalNode = mediaElement.originalNode,\n\t\t    id = mediaElement.id + '_' + options.prefix,\n\t\t    autoplay = originalNode.autoplay,\n\t\t    children = originalNode.children;\n\n\t\tvar node = null,\n\t\t    dashPlayer = null;\n\n\t\toriginalNode.removeAttribute('type');\n\t\tfor (var i = 0, total = children.length; i < total; i++) {\n\t\t\tchildren[i].removeAttribute('type');\n\t\t}\n\n\t\tnode = originalNode.cloneNode(true);\n\t\toptions = Object.assign(options, mediaElement.options);\n\n\t\tvar props = _mejs2.default.html5media.properties,\n\t\t    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {\n\t\t\treturn e !== 'error';\n\t\t}),\n\t\t    attachNativeEvents = function attachNativeEvents(e) {\n\t\t\tvar event = (0, _general.createEvent)(e.type, mediaElement);\n\t\t\tmediaElement.dispatchEvent(event);\n\t\t},\n\t\t    assignGettersSetters = function assignGettersSetters(propName) {\n\t\t\tvar capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);\n\n\t\t\tnode['get' + capName] = function () {\n\t\t\t\treturn dashPlayer !== null ? node[propName] : null;\n\t\t\t};\n\n\t\t\tnode['set' + capName] = function (value) {\n\t\t\t\tif (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {\n\t\t\t\t\tif (propName === 'src') {\n\t\t\t\t\t\tvar source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;\n\t\t\t\t\t\tnode[propName] = source;\n\t\t\t\t\t\tif (dashPlayer !== null) {\n\t\t\t\t\t\t\tdashPlayer.reset();\n\t\t\t\t\t\t\tfor (var _i = 0, _total = events.length; _i < _total; _i++) {\n\t\t\t\t\t\t\t\tnode.removeEventListener(events[_i], attachNativeEvents);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdashPlayer = NativeDash._createPlayer({\n\t\t\t\t\t\t\t\toptions: options.dash,\n\t\t\t\t\t\t\t\tid: id\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {\n\t\t\t\t\t\t\t\tdashPlayer.setProtectionData(value.drm);\n\t\t\t\t\t\t\t\tif ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {\n\t\t\t\t\t\t\t\t\tdashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdashPlayer.attachSource(source);\n\t\t\t\t\t\t\tif (autoplay) {\n\t\t\t\t\t\t\t\tdashPlayer.play();\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\tnode[propName] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\t\tfor (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {\n\t\t\tassignGettersSetters(props[_i2]);\n\t\t}\n\n\t\t_window2.default['__ready__' + id] = function (_dashPlayer) {\n\t\t\tmediaElement.dashPlayer = dashPlayer = _dashPlayer;\n\n\t\t\tvar dashEvents = dashjs.MediaPlayer.events,\n\t\t\t    assignEvents = function assignEvents(eventName) {\n\t\t\t\tif (eventName === 'loadedmetadata') {\n\t\t\t\t\tdashPlayer.initialize();\n\t\t\t\t\tdashPlayer.attachView(node);\n\t\t\t\t\tdashPlayer.setAutoPlay(false);\n\n\t\t\t\t\tif (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {\n\t\t\t\t\t\tdashPlayer.setProtectionData(options.dash.drm);\n\t\t\t\t\t\tif ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {\n\t\t\t\t\t\t\tdashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdashPlayer.attachSource(node.getSrc());\n\t\t\t\t}\n\n\t\t\t\tnode.addEventListener(eventName, attachNativeEvents);\n\t\t\t};\n\n\t\t\tfor (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {\n\t\t\t\tassignEvents(events[_i3]);\n\t\t\t}\n\n\t\t\tvar assignMdashEvents = function assignMdashEvents(e) {\n\t\t\t\tif (e.type.toLowerCase() === 'error') {\n\t\t\t\t\tmediaElement.generateError(e.message, node.src);\n\t\t\t\t\tconsole.error(e);\n\t\t\t\t} else {\n\t\t\t\t\tvar _event = (0, _general.createEvent)(e.type, mediaElement);\n\t\t\t\t\t_event.data = e;\n\t\t\t\t\tmediaElement.dispatchEvent(_event);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor (var eventType in dashEvents) {\n\t\t\t\tif (dashEvents.hasOwnProperty(eventType)) {\n\t\t\t\t\tdashPlayer.on(dashEvents[eventType], function (e) {\n\t\t\t\t\t\treturn assignMdashEvents(e);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (mediaFiles && mediaFiles.length > 0) {\n\t\t\tfor (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {\n\t\t\t\tif (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {\n\t\t\t\t\tnode.setAttribute('src', mediaFiles[_i4].src);\n\t\t\t\t\tif (typeof mediaFiles[_i4].drm !== 'undefined') {\n\t\t\t\t\t\toptions.dash.drm = mediaFiles[_i4].drm;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tnode.setAttribute('id', id);\n\n\t\toriginalNode.parentNode.insertBefore(node, originalNode);\n\t\toriginalNode.autoplay = false;\n\t\toriginalNode.style.display = 'none';\n\n\t\tnode.setSize = function (width, height) {\n\t\t\tnode.style.width = width + 'px';\n\t\t\tnode.style.height = height + 'px';\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.hide = function () {\n\t\t\tnode.pause();\n\t\t\tnode.style.display = 'none';\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.show = function () {\n\t\t\tnode.style.display = '';\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.destroy = function () {\n\t\t\tif (dashPlayer !== null) {\n\t\t\t\tdashPlayer.reset();\n\t\t\t}\n\t\t};\n\n\t\tvar event = (0, _general.createEvent)('rendererready', node);\n\t\tmediaElement.dispatchEvent(event);\n\n\t\tmediaElement.promises.push(NativeDash.load({\n\t\t\toptions: options.dash,\n\t\t\tid: id\n\t\t}));\n\n\t\treturn node;\n\t}\n};\n\n_media.typeChecks.push(function (url) {\n\treturn ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;\n});\n\n_renderer.renderer.add(DashNativeRenderer);\n\n},{\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"3\":3,\"7\":7,\"8\":8}],20:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.PluginDetector = undefined;\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 _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _i18n = _dereq_(5);\n\nvar _i18n2 = _interopRequireDefault(_i18n);\n\nvar _renderer = _dereq_(8);\n\nvar _general = _dereq_(27);\n\nvar _constants = _dereq_(25);\n\nvar _media = _dereq_(28);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PluginDetector = exports.PluginDetector = {\n\tplugins: [],\n\n\thasPluginVersion: function hasPluginVersion(plugin, v) {\n\t\tvar pv = PluginDetector.plugins[plugin];\n\t\tv[1] = v[1] || 0;\n\t\tv[2] = v[2] || 0;\n\t\treturn pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2];\n\t},\n\n\taddPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {\n\t\tPluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);\n\t},\n\n\tdetectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {\n\n\t\tvar version = [0, 0, 0],\n\t\t    description = void 0,\n\t\t    ax = void 0;\n\n\t\tif (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {\n\t\t\tdescription = _constants.NAV.plugins[pluginName].description;\n\t\t\tif (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {\n\t\t\t\tversion = description.replace(pluginName, '').replace(/^\\s+/, '').replace(/\\sr/gi, '.').split('.');\n\t\t\t\tfor (var i = 0, total = version.length; i < total; i++) {\n\t\t\t\t\tversion[i] = parseInt(version[i].match(/\\d+/), 10);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (_window2.default.ActiveXObject !== undefined) {\n\t\t\ttry {\n\t\t\t\tax = new ActiveXObject(activeX);\n\t\t\t\tif (ax) {\n\t\t\t\t\tversion = axDetect(ax);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t\n\t\t\t}\n\t\t}\n\t\treturn version;\n\t}\n};\n\nPluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {\n\tvar version = [],\n\t    d = ax.GetVariable(\"$version\");\n\n\tif (d) {\n\t\td = d.split(\" \")[1].split(\",\");\n\t\tversion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];\n\t}\n\treturn version;\n});\n\nvar FlashMediaElementRenderer = {\n\tcreate: function create(mediaElement, options, mediaFiles) {\n\n\t\tvar flash = {};\n\t\tvar isActive = false;\n\n\t\tflash.options = options;\n\t\tflash.id = mediaElement.id + '_' + flash.options.prefix;\n\t\tflash.mediaElement = mediaElement;\n\t\tflash.flashState = {};\n\t\tflash.flashApi = null;\n\t\tflash.flashApiStack = [];\n\n\t\tvar props = _mejs2.default.html5media.properties,\n\t\t    assignGettersSetters = function assignGettersSetters(propName) {\n\t\t\tflash.flashState[propName] = null;\n\n\t\t\tvar capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);\n\n\t\t\tflash['get' + capName] = function () {\n\t\t\t\tif (flash.flashApi !== null) {\n\t\t\t\t\tif (typeof flash.flashApi['get_' + propName] === 'function') {\n\t\t\t\t\t\tvar value = flash.flashApi['get_' + propName]();\n\n\t\t\t\t\t\tif (propName === 'buffered') {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstart: function start() {\n\t\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tend: function end() {\n\t\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tlength: 1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tflash['set' + capName] = function (value) {\n\t\t\t\tif (propName === 'src') {\n\t\t\t\t\tvalue = (0, _media.absolutizeUrl)(value);\n\t\t\t\t}\n\n\t\t\t\tif (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tflash.flashApi['set_' + propName](value);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tflash.flashApiStack.push({\n\t\t\t\t\t\ttype: 'set',\n\t\t\t\t\t\tpropName: propName,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\t\tfor (var i = 0, total = props.length; i < total; i++) {\n\t\t\tassignGettersSetters(props[i]);\n\t\t}\n\n\t\tvar methods = _mejs2.default.html5media.methods,\n\t\t    assignMethods = function assignMethods(methodName) {\n\t\t\tflash[methodName] = function () {\n\t\t\t\tif (isActive) {\n\t\t\t\t\tif (flash.flashApi !== null) {\n\t\t\t\t\t\tif (flash.flashApi['fire_' + methodName]) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tflash.flashApi['fire_' + methodName]();\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\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\tflash.flashApiStack.push({\n\t\t\t\t\t\t\ttype: 'call',\n\t\t\t\t\t\t\tmethodName: methodName\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\tmethods.push('stop');\n\t\tfor (var _i = 0, _total = methods.length; _i < _total; _i++) {\n\t\t\tassignMethods(methods[_i]);\n\t\t}\n\n\t\tvar initEvents = ['rendererready'];\n\n\t\tfor (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {\n\t\t\tvar event = (0, _general.createEvent)(initEvents[_i2], flash);\n\t\t\tmediaElement.dispatchEvent(event);\n\t\t}\n\n\t\t_window2.default['__ready__' + flash.id] = function () {\n\n\t\t\tflash.flashReady = true;\n\t\t\tflash.flashApi = _document2.default.getElementById('__' + flash.id);\n\n\t\t\tif (flash.flashApiStack.length) {\n\t\t\t\tfor (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {\n\t\t\t\t\tvar stackItem = flash.flashApiStack[_i3];\n\n\t\t\t\t\tif (stackItem.type === 'set') {\n\t\t\t\t\t\tvar propName = stackItem.propName,\n\t\t\t\t\t\t    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);\n\n\t\t\t\t\t\tflash['set' + capName](stackItem.value);\n\t\t\t\t\t} else if (stackItem.type === 'call') {\n\t\t\t\t\t\tflash[stackItem.methodName]();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t_window2.default['__event__' + flash.id] = function (eventName, message) {\n\t\t\tvar event = (0, _general.createEvent)(eventName, flash);\n\t\t\tif (message) {\n\t\t\t\ttry {\n\t\t\t\t\tevent.data = JSON.parse(message);\n\t\t\t\t\tevent.details.data = JSON.parse(message);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tevent.message = message;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tflash.mediaElement.dispatchEvent(event);\n\t\t};\n\n\t\tflash.flashWrapper = _document2.default.createElement('div');\n\n\t\tif (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {\n\t\t\tflash.options.shimScriptAccess = 'sameDomain';\n\t\t}\n\n\t\tvar autoplay = mediaElement.originalNode.autoplay,\n\t\t    flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],\n\t\t    isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',\n\t\t    flashHeight = isVideo ? mediaElement.originalNode.height : 1,\n\t\t    flashWidth = isVideo ? mediaElement.originalNode.width : 1;\n\n\t\tif (mediaElement.originalNode.getAttribute('src')) {\n\t\t\tflashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));\n\t\t}\n\n\t\tif (flash.options.enablePseudoStreaming === true) {\n\t\t\tflashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);\n\t\t\tflashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);\n\t\t}\n\n\t\tif (flash.options.streamDelimiter) {\n\t\t\tflashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter));\n\t\t}\n\n\t\tif (flash.options.proxyType) {\n\t\t\tflashVars.push('proxytype=' + flash.options.proxyType);\n\t\t}\n\n\t\tmediaElement.appendChild(flash.flashWrapper);\n\t\tmediaElement.originalNode.style.display = 'none';\n\n\t\tvar settings = [];\n\n\t\tif (_constants.IS_IE || _constants.IS_EDGE) {\n\t\t\tvar specialIEContainer = _document2.default.createElement('div');\n\t\t\tflash.flashWrapper.appendChild(specialIEContainer);\n\n\t\t\tif (_constants.IS_EDGE) {\n\t\t\t\tsettings = ['type=\"application/x-shockwave-flash\"', 'data=\"' + flash.options.pluginPath + flash.options.filename + '\"', 'id=\"__' + flash.id + '\"', 'width=\"' + flashWidth + '\"', 'height=\"' + flashHeight + '\\'\"'];\n\t\t\t} else {\n\t\t\t\tsettings = ['classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"', 'codebase=\"//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab\"', 'id=\"__' + flash.id + '\"', 'width=\"' + flashWidth + '\"', 'height=\"' + flashHeight + '\"'];\n\t\t\t}\n\n\t\t\tif (!isVideo) {\n\t\t\t\tsettings.push('style=\"clip: rect(0 0 0 0); position: absolute;\"');\n\t\t\t}\n\n\t\t\tspecialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name=\"movie\" value=\"' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '\" />') + ('<param name=\"flashvars\" value=\"' + flashVars.join('&amp;') + '\" />') + '<param name=\"quality\" value=\"high\" />' + '<param name=\"bgcolor\" value=\"#000000\" />' + '<param name=\"wmode\" value=\"transparent\" />' + ('<param name=\"allowScriptAccess\" value=\"' + flash.options.shimScriptAccess + '\" />') + '<param name=\"allowFullScreen\" value=\"true\" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>';\n\t\t} else {\n\n\t\t\tsettings = ['id=\"__' + flash.id + '\"', 'name=\"__' + flash.id + '\"', 'play=\"true\"', 'loop=\"false\"', 'quality=\"high\"', 'bgcolor=\"#000000\"', 'wmode=\"transparent\"', 'allowScriptAccess=\"' + flash.options.shimScriptAccess + '\"', 'allowFullScreen=\"true\"', 'type=\"application/x-shockwave-flash\"', 'pluginspage=\"//www.macromedia.com/go/getflashplayer\"', 'src=\"' + flash.options.pluginPath + flash.options.filename + '\"', 'flashvars=\"' + flashVars.join('&') + '\"'];\n\n\t\t\tif (isVideo) {\n\t\t\t\tsettings.push('width=\"' + flashWidth + '\"');\n\t\t\t\tsettings.push('height=\"' + flashHeight + '\"');\n\t\t\t} else {\n\t\t\t\tsettings.push('style=\"position: fixed; left: -9999em; top: -9999em;\"');\n\t\t\t}\n\n\t\t\tflash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';\n\t\t}\n\n\t\tflash.flashNode = flash.flashWrapper.lastChild;\n\n\t\tflash.hide = function () {\n\t\t\tisActive = false;\n\t\t\tif (isVideo) {\n\t\t\t\tflash.flashNode.style.display = 'none';\n\t\t\t}\n\t\t};\n\t\tflash.show = function () {\n\t\t\tisActive = true;\n\t\t\tif (isVideo) {\n\t\t\t\tflash.flashNode.style.display = '';\n\t\t\t}\n\t\t};\n\t\tflash.setSize = function (width, height) {\n\t\t\tflash.flashNode.style.width = width + 'px';\n\t\t\tflash.flashNode.style.height = height + 'px';\n\n\t\t\tif (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {\n\t\t\t\tflash.flashApi.fire_setSize(width, height);\n\t\t\t}\n\t\t};\n\n\t\tflash.destroy = function () {\n\t\t\tflash.flashNode.remove();\n\t\t};\n\n\t\tif (mediaFiles && mediaFiles.length > 0) {\n\t\t\tfor (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {\n\t\t\t\tif (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {\n\t\t\t\t\tflash.setSrc(mediaFiles[_i4].src);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn flash;\n\t}\n};\n\nvar hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);\n\nif (hasFlash) {\n\t_media.typeChecks.push(function (url) {\n\t\turl = url.toLowerCase();\n\n\t\tif (url.startsWith('rtmp')) {\n\t\t\tif (~url.indexOf('.mp3')) {\n\t\t\t\treturn 'audio/rtmp';\n\t\t\t} else {\n\t\t\t\treturn 'video/rtmp';\n\t\t\t}\n\t\t} else if (/\\.og(a|g)/i.test(url)) {\n\t\t\treturn 'audio/ogg';\n\t\t} else if (~url.indexOf('.m3u8')) {\n\t\t\treturn 'application/x-mpegURL';\n\t\t} else if (~url.indexOf('.mpd')) {\n\t\t\treturn 'application/dash+xml';\n\t\t} else if (~url.indexOf('.flv')) {\n\t\t\treturn 'video/flv';\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t});\n\n\tvar FlashMediaElementVideoRenderer = {\n\t\tname: 'flash_video',\n\t\toptions: {\n\t\t\tprefix: 'flash_video',\n\t\t\tfilename: 'mediaelement-flash-video.swf',\n\t\t\tenablePseudoStreaming: false,\n\n\t\t\tpseudoStreamingStartQueryParam: 'start',\n\n\t\t\tpseudoStreamingType: 'byte',\n\n\t\t\tproxyType: '',\n\n\t\t\tstreamDelimiter: ''\n\t\t},\n\n\t\tcanPlayType: function canPlayType(type) {\n\t\t\treturn ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());\n\t\t},\n\n\t\tcreate: FlashMediaElementRenderer.create\n\n\t};\n\t_renderer.renderer.add(FlashMediaElementVideoRenderer);\n\n\tvar FlashMediaElementHlsVideoRenderer = {\n\t\tname: 'flash_hls',\n\t\toptions: {\n\t\t\tprefix: 'flash_hls',\n\t\t\tfilename: 'mediaelement-flash-video-hls.swf'\n\t\t},\n\n\t\tcanPlayType: function canPlayType(type) {\n\t\t\treturn ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());\n\t\t},\n\n\t\tcreate: FlashMediaElementRenderer.create\n\t};\n\t_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);\n\n\tvar FlashMediaElementMdashVideoRenderer = {\n\t\tname: 'flash_dash',\n\t\toptions: {\n\t\t\tprefix: 'flash_dash',\n\t\t\tfilename: 'mediaelement-flash-video-mdash.swf'\n\t\t},\n\n\t\tcanPlayType: function canPlayType(type) {\n\t\t\treturn ~['application/dash+xml'].indexOf(type.toLowerCase());\n\t\t},\n\n\t\tcreate: FlashMediaElementRenderer.create\n\t};\n\t_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);\n\n\tvar FlashMediaElementAudioRenderer = {\n\t\tname: 'flash_audio',\n\t\toptions: {\n\t\t\tprefix: 'flash_audio',\n\t\t\tfilename: 'mediaelement-flash-audio.swf'\n\t\t},\n\n\t\tcanPlayType: function canPlayType(type) {\n\t\t\treturn ~['audio/mp3'].indexOf(type.toLowerCase());\n\t\t},\n\n\t\tcreate: FlashMediaElementRenderer.create\n\t};\n\t_renderer.renderer.add(FlashMediaElementAudioRenderer);\n\n\tvar FlashMediaElementAudioOggRenderer = {\n\t\tname: 'flash_audio_ogg',\n\t\toptions: {\n\t\t\tprefix: 'flash_audio_ogg',\n\t\t\tfilename: 'mediaelement-flash-audio-ogg.swf'\n\t\t},\n\n\t\tcanPlayType: function canPlayType(type) {\n\t\t\treturn ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());\n\t\t},\n\n\t\tcreate: FlashMediaElementRenderer.create\n\t};\n\t_renderer.renderer.add(FlashMediaElementAudioOggRenderer);\n}\n\n},{\"2\":2,\"25\":25,\"27\":27,\"28\":28,\"3\":3,\"5\":5,\"7\":7,\"8\":8}],21:[function(_dereq_,module,exports){\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\nvar _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _renderer = _dereq_(8);\n\nvar _general = _dereq_(27);\n\nvar _constants = _dereq_(25);\n\nvar _media = _dereq_(28);\n\nvar _dom = _dereq_(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NativeFlv = {\n\n\tpromise: null,\n\n\tload: function load(settings) {\n\t\tif (typeof flvjs !== 'undefined') {\n\t\t\tNativeFlv.promise = new Promise(function (resolve) {\n\t\t\t\tresolve();\n\t\t\t}).then(function () {\n\t\t\t\tNativeFlv._createPlayer(settings);\n\t\t\t});\n\t\t} else {\n\t\t\tsettings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest';\n\n\t\t\tNativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);\n\t\t\tNativeFlv.promise.then(function () {\n\t\t\t\tNativeFlv._createPlayer(settings);\n\t\t\t});\n\t\t}\n\n\t\treturn NativeFlv.promise;\n\t},\n\n\t_createPlayer: function _createPlayer(settings) {\n\t\tflvjs.LoggingControl.enableDebug = settings.options.debug;\n\t\tflvjs.LoggingControl.enableVerbose = settings.options.debug;\n\t\tvar player = flvjs.createPlayer(settings.options, settings.configs);\n\t\t_window2.default['__ready__' + settings.id](player);\n\t\treturn player;\n\t}\n};\n\nvar FlvNativeRenderer = {\n\tname: 'native_flv',\n\toptions: {\n\t\tprefix: 'native_flv',\n\t\tflv: {\n\t\t\tpath: 'https://cdn.jsdelivr.net/npm/flv.js@latest',\n\n\t\t\tcors: true,\n\t\t\tdebug: false\n\t\t}\n\t},\n\n\tcanPlayType: function canPlayType(type) {\n\t\treturn _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;\n\t},\n\n\tcreate: function create(mediaElement, options, mediaFiles) {\n\n\t\tvar originalNode = mediaElement.originalNode,\n\t\t    id = mediaElement.id + '_' + options.prefix;\n\n\t\tvar node = null,\n\t\t    flvPlayer = null;\n\n\t\tnode = originalNode.cloneNode(true);\n\t\toptions = Object.assign(options, mediaElement.options);\n\n\t\tvar props = _mejs2.default.html5media.properties,\n\t\t    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {\n\t\t\treturn e !== 'error';\n\t\t}),\n\t\t    attachNativeEvents = function attachNativeEvents(e) {\n\t\t\tvar event = (0, _general.createEvent)(e.type, mediaElement);\n\t\t\tmediaElement.dispatchEvent(event);\n\t\t},\n\t\t    assignGettersSetters = function assignGettersSetters(propName) {\n\t\t\tvar capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);\n\n\t\t\tnode['get' + capName] = function () {\n\t\t\t\treturn flvPlayer !== null ? node[propName] : null;\n\t\t\t};\n\n\t\t\tnode['set' + capName] = function (value) {\n\t\t\t\tif (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {\n\t\t\t\t\tif (propName === 'src') {\n\t\t\t\t\t\tnode[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;\n\t\t\t\t\t\tif (flvPlayer !== null) {\n\t\t\t\t\t\t\tvar _flvOptions = {};\n\t\t\t\t\t\t\t_flvOptions.type = 'flv';\n\t\t\t\t\t\t\t_flvOptions.url = value;\n\t\t\t\t\t\t\t_flvOptions.cors = options.flv.cors;\n\t\t\t\t\t\t\t_flvOptions.debug = options.flv.debug;\n\t\t\t\t\t\t\t_flvOptions.path = options.flv.path;\n\t\t\t\t\t\t\tvar _flvConfigs = options.flv.configs;\n\n\t\t\t\t\t\t\tflvPlayer.destroy();\n\t\t\t\t\t\t\tfor (var i = 0, total = events.length; i < total; i++) {\n\t\t\t\t\t\t\t\tnode.removeEventListener(events[i], attachNativeEvents);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tflvPlayer = NativeFlv._createPlayer({\n\t\t\t\t\t\t\t\toptions: _flvOptions,\n\t\t\t\t\t\t\t\tconfigs: _flvConfigs,\n\t\t\t\t\t\t\t\tid: id\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tflvPlayer.attachMediaElement(node);\n\t\t\t\t\t\t\tflvPlayer.load();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode[propName] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\t\tfor (var i = 0, total = props.length; i < total; i++) {\n\t\t\tassignGettersSetters(props[i]);\n\t\t}\n\n\t\t_window2.default['__ready__' + id] = function (_flvPlayer) {\n\t\t\tmediaElement.flvPlayer = flvPlayer = _flvPlayer;\n\n\t\t\tvar flvEvents = flvjs.Events,\n\t\t\t    assignEvents = function assignEvents(eventName) {\n\t\t\t\tif (eventName === 'loadedmetadata') {\n\t\t\t\t\tflvPlayer.unload();\n\t\t\t\t\tflvPlayer.detachMediaElement();\n\t\t\t\t\tflvPlayer.attachMediaElement(node);\n\t\t\t\t\tflvPlayer.load();\n\t\t\t\t}\n\n\t\t\t\tnode.addEventListener(eventName, attachNativeEvents);\n\t\t\t};\n\n\t\t\tfor (var _i = 0, _total = events.length; _i < _total; _i++) {\n\t\t\t\tassignEvents(events[_i]);\n\t\t\t}\n\n\t\t\tvar assignFlvEvents = function assignFlvEvents(name, data) {\n\t\t\t\tif (name === 'error') {\n\t\t\t\t\tvar message = data[0] + ': ' + data[1] + ' ' + data[2].msg;\n\t\t\t\t\tmediaElement.generateError(message, node.src);\n\t\t\t\t} else {\n\t\t\t\t\tvar _event = (0, _general.createEvent)(name, mediaElement);\n\t\t\t\t\t_event.data = data;\n\t\t\t\t\tmediaElement.dispatchEvent(_event);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar _loop = function _loop(eventType) {\n\t\t\t\tif (flvEvents.hasOwnProperty(eventType)) {\n\t\t\t\t\tflvPlayer.on(flvEvents[eventType], function () {\n\t\t\t\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\t\t\t\targs[_key] = arguments[_key];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn assignFlvEvents(flvEvents[eventType], args);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor (var eventType in flvEvents) {\n\t\t\t\t_loop(eventType);\n\t\t\t}\n\t\t};\n\n\t\tif (mediaFiles && mediaFiles.length > 0) {\n\t\t\tfor (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {\n\t\t\t\tif (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {\n\t\t\t\t\tnode.setAttribute('src', mediaFiles[_i2].src);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tnode.setAttribute('id', id);\n\n\t\toriginalNode.parentNode.insertBefore(node, originalNode);\n\t\toriginalNode.autoplay = false;\n\t\toriginalNode.style.display = 'none';\n\n\t\tvar flvOptions = {};\n\t\tflvOptions.type = 'flv';\n\t\tflvOptions.url = node.src;\n\t\tflvOptions.cors = options.flv.cors;\n\t\tflvOptions.debug = options.flv.debug;\n\t\tflvOptions.path = options.flv.path;\n\t\tvar flvConfigs = options.flv.configs;\n\n\t\tnode.setSize = function (width, height) {\n\t\t\tnode.style.width = width + 'px';\n\t\t\tnode.style.height = height + 'px';\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.hide = function () {\n\t\t\tif (flvPlayer !== null) {\n\t\t\t\tflvPlayer.pause();\n\t\t\t}\n\t\t\tnode.style.display = 'none';\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.show = function () {\n\t\t\tnode.style.display = '';\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.destroy = function () {\n\t\t\tif (flvPlayer !== null) {\n\t\t\t\tflvPlayer.destroy();\n\t\t\t}\n\t\t};\n\n\t\tvar event = (0, _general.createEvent)('rendererready', node);\n\t\tmediaElement.dispatchEvent(event);\n\n\t\tmediaElement.promises.push(NativeFlv.load({\n\t\t\toptions: flvOptions,\n\t\t\tconfigs: flvConfigs,\n\t\t\tid: id\n\t\t}));\n\n\t\treturn node;\n\t}\n};\n\n_media.typeChecks.push(function (url) {\n\treturn ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;\n});\n\n_renderer.renderer.add(FlvNativeRenderer);\n\n},{\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"3\":3,\"7\":7,\"8\":8}],22:[function(_dereq_,module,exports){\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\nvar _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _renderer = _dereq_(8);\n\nvar _general = _dereq_(27);\n\nvar _constants = _dereq_(25);\n\nvar _media = _dereq_(28);\n\nvar _dom = _dereq_(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NativeHls = {\n\n\tpromise: null,\n\n\tload: function load(settings) {\n\t\tif (typeof Hls !== 'undefined') {\n\t\t\tNativeHls.promise = new Promise(function (resolve) {\n\t\t\t\tresolve();\n\t\t\t}).then(function () {\n\t\t\t\tNativeHls._createPlayer(settings);\n\t\t\t});\n\t\t} else {\n\t\t\tsettings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest';\n\n\t\t\tNativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);\n\t\t\tNativeHls.promise.then(function () {\n\t\t\t\tNativeHls._createPlayer(settings);\n\t\t\t});\n\t\t}\n\n\t\treturn NativeHls.promise;\n\t},\n\n\t_createPlayer: function _createPlayer(settings) {\n\t\tvar player = new Hls(settings.options);\n\t\t_window2.default['__ready__' + settings.id](player);\n\t\treturn player;\n\t}\n};\n\nvar HlsNativeRenderer = {\n\tname: 'native_hls',\n\toptions: {\n\t\tprefix: 'native_hls',\n\t\thls: {\n\t\t\tpath: 'https://cdn.jsdelivr.net/npm/hls.js@latest',\n\n\t\t\tautoStartLoad: false,\n\t\t\tdebug: false\n\t\t}\n\t},\n\n\tcanPlayType: function canPlayType(type) {\n\t\treturn _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;\n\t},\n\n\tcreate: function create(mediaElement, options, mediaFiles) {\n\n\t\tvar originalNode = mediaElement.originalNode,\n\t\t    id = mediaElement.id + '_' + options.prefix,\n\t\t    preload = originalNode.getAttribute('preload'),\n\t\t    autoplay = originalNode.autoplay;\n\n\t\tvar hlsPlayer = null,\n\t\t    node = null,\n\t\t    index = 0,\n\t\t    total = mediaFiles.length;\n\n\t\tnode = originalNode.cloneNode(true);\n\t\toptions = Object.assign(options, mediaElement.options);\n\t\toptions.hls.autoStartLoad = preload && preload !== 'none' || autoplay;\n\n\t\tvar props = _mejs2.default.html5media.properties,\n\t\t    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {\n\t\t\treturn e !== 'error';\n\t\t}),\n\t\t    attachNativeEvents = function attachNativeEvents(e) {\n\t\t\tvar event = (0, _general.createEvent)(e.type, mediaElement);\n\t\t\tmediaElement.dispatchEvent(event);\n\t\t},\n\t\t    assignGettersSetters = function assignGettersSetters(propName) {\n\t\t\tvar capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);\n\n\t\t\tnode['get' + capName] = function () {\n\t\t\t\treturn hlsPlayer !== null ? node[propName] : null;\n\t\t\t};\n\n\t\t\tnode['set' + capName] = function (value) {\n\t\t\t\tif (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {\n\t\t\t\t\tif (propName === 'src') {\n\t\t\t\t\t\tnode[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;\n\t\t\t\t\t\tif (hlsPlayer !== null) {\n\t\t\t\t\t\t\thlsPlayer.destroy();\n\t\t\t\t\t\t\tfor (var i = 0, _total = events.length; i < _total; i++) {\n\t\t\t\t\t\t\t\tnode.removeEventListener(events[i], attachNativeEvents);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thlsPlayer = NativeHls._createPlayer({\n\t\t\t\t\t\t\t\toptions: options.hls,\n\t\t\t\t\t\t\t\tid: id\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\thlsPlayer.loadSource(value);\n\t\t\t\t\t\t\thlsPlayer.attachMedia(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnode[propName] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\t\tfor (var i = 0, _total2 = props.length; i < _total2; i++) {\n\t\t\tassignGettersSetters(props[i]);\n\t\t}\n\n\t\t_window2.default['__ready__' + id] = function (_hlsPlayer) {\n\t\t\tmediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;\n\t\t\tvar hlsEvents = Hls.Events,\n\t\t\t    assignEvents = function assignEvents(eventName) {\n\t\t\t\tif (eventName === 'loadedmetadata') {\n\t\t\t\t\tvar url = mediaElement.originalNode.src;\n\t\t\t\t\thlsPlayer.detachMedia();\n\t\t\t\t\thlsPlayer.loadSource(url);\n\t\t\t\t\thlsPlayer.attachMedia(node);\n\t\t\t\t}\n\n\t\t\t\tnode.addEventListener(eventName, attachNativeEvents);\n\t\t\t};\n\n\t\t\tfor (var _i = 0, _total3 = events.length; _i < _total3; _i++) {\n\t\t\t\tassignEvents(events[_i]);\n\t\t\t}\n\n\t\t\tvar recoverDecodingErrorDate = void 0,\n\t\t\t    recoverSwapAudioCodecDate = void 0;\n\t\t\tvar assignHlsEvents = function assignHlsEvents(name, data) {\n\t\t\t\tif (name === 'hlsError') {\n\t\t\t\t\tconsole.warn(data);\n\t\t\t\t\tdata = data[1];\n\n\t\t\t\t\tif (data.fatal) {\n\t\t\t\t\t\tswitch (data.type) {\n\t\t\t\t\t\t\tcase 'mediaError':\n\t\t\t\t\t\t\t\tvar now = new Date().getTime();\n\t\t\t\t\t\t\t\tif (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {\n\t\t\t\t\t\t\t\t\trecoverDecodingErrorDate = new Date().getTime();\n\t\t\t\t\t\t\t\t\thlsPlayer.recoverMediaError();\n\t\t\t\t\t\t\t\t} else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {\n\t\t\t\t\t\t\t\t\trecoverSwapAudioCodecDate = new Date().getTime();\n\t\t\t\t\t\t\t\t\tconsole.warn('Attempting to swap Audio Codec and recover from media error');\n\t\t\t\t\t\t\t\t\thlsPlayer.swapAudioCodec();\n\t\t\t\t\t\t\t\t\thlsPlayer.recoverMediaError();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvar message = 'Cannot recover, last media error recovery failed';\n\t\t\t\t\t\t\t\t\tmediaElement.generateError(message, node.src);\n\t\t\t\t\t\t\t\t\tconsole.error(message);\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\tcase 'networkError':\n\t\t\t\t\t\t\t\tif (data.details === 'manifestLoadError') {\n\t\t\t\t\t\t\t\t\tif (index < total && mediaFiles[index + 1] !== undefined) {\n\t\t\t\t\t\t\t\t\t\tnode.setSrc(mediaFiles[index++].src);\n\t\t\t\t\t\t\t\t\t\tnode.load();\n\t\t\t\t\t\t\t\t\t\tnode.play();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tvar _message = 'Network error';\n\t\t\t\t\t\t\t\t\t\tmediaElement.generateError(_message, mediaFiles);\n\t\t\t\t\t\t\t\t\t\tconsole.error(_message);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvar _message2 = 'Network error';\n\t\t\t\t\t\t\t\t\tmediaElement.generateError(_message2, mediaFiles);\n\t\t\t\t\t\t\t\t\tconsole.error(_message2);\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\tdefault:\n\t\t\t\t\t\t\t\thlsPlayer.destroy();\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar event = (0, _general.createEvent)(name, mediaElement);\n\t\t\t\tevent.data = data;\n\t\t\t\tmediaElement.dispatchEvent(event);\n\t\t\t};\n\n\t\t\tvar _loop = function _loop(eventType) {\n\t\t\t\tif (hlsEvents.hasOwnProperty(eventType)) {\n\t\t\t\t\thlsPlayer.on(hlsEvents[eventType], function () {\n\t\t\t\t\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\t\t\t\t\targs[_key] = arguments[_key];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn assignHlsEvents(hlsEvents[eventType], args);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor (var eventType in hlsEvents) {\n\t\t\t\t_loop(eventType);\n\t\t\t}\n\t\t};\n\n\t\tif (total > 0) {\n\t\t\tfor (; index < total; index++) {\n\t\t\t\tif (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {\n\t\t\t\t\tnode.setAttribute('src', mediaFiles[index].src);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (preload !== 'auto' && !autoplay) {\n\t\t\tnode.addEventListener('play', function () {\n\t\t\t\tif (hlsPlayer !== null) {\n\t\t\t\t\thlsPlayer.startLoad();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tnode.addEventListener('pause', function () {\n\t\t\t\tif (hlsPlayer !== null) {\n\t\t\t\t\thlsPlayer.stopLoad();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tnode.setAttribute('id', id);\n\n\t\toriginalNode.parentNode.insertBefore(node, originalNode);\n\t\toriginalNode.autoplay = false;\n\t\toriginalNode.style.display = 'none';\n\n\t\tnode.setSize = function (width, height) {\n\t\t\tnode.style.width = width + 'px';\n\t\t\tnode.style.height = height + 'px';\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.hide = function () {\n\t\t\tnode.pause();\n\t\t\tnode.style.display = 'none';\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.show = function () {\n\t\t\tnode.style.display = '';\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.destroy = function () {\n\t\t\tif (hlsPlayer !== null) {\n\t\t\t\thlsPlayer.stopLoad();\n\t\t\t\thlsPlayer.destroy();\n\t\t\t}\n\t\t};\n\n\t\tvar event = (0, _general.createEvent)('rendererready', node);\n\t\tmediaElement.dispatchEvent(event);\n\n\t\tmediaElement.promises.push(NativeHls.load({\n\t\t\toptions: options.hls,\n\t\t\tid: id\n\t\t}));\n\n\t\treturn node;\n\t}\n};\n\n_media.typeChecks.push(function (url) {\n\treturn ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;\n});\n\n_renderer.renderer.add(HlsNativeRenderer);\n\n},{\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"3\":3,\"7\":7,\"8\":8}],23:[function(_dereq_,module,exports){\n'use strict';\n\nvar _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _renderer = _dereq_(8);\n\nvar _general = _dereq_(27);\n\nvar _constants = _dereq_(25);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HtmlMediaElement = {\n\tname: 'html5',\n\toptions: {\n\t\tprefix: 'html5'\n\t},\n\n\tcanPlayType: function canPlayType(type) {\n\n\t\tvar mediaElement = _document2.default.createElement('video');\n\n\t\tif (_constants.IS_ANDROID && /\\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {\n\t\t\treturn 'yes';\n\t\t} else if (mediaElement.canPlayType) {\n\t\t\treturn mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');\n\t\t} else {\n\t\t\treturn '';\n\t\t}\n\t},\n\n\tcreate: function create(mediaElement, options, mediaFiles) {\n\n\t\tvar id = mediaElement.id + '_' + options.prefix;\n\t\tvar isActive = false;\n\n\t\tvar node = null;\n\n\t\tif (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {\n\t\t\tnode = _document2.default.createElement('audio');\n\t\t\tmediaElement.appendChild(node);\n\t\t} else {\n\t\t\tnode = mediaElement.originalNode;\n\t\t}\n\n\t\tnode.setAttribute('id', id);\n\n\t\tvar props = _mejs2.default.html5media.properties,\n\t\t    assignGettersSetters = function assignGettersSetters(propName) {\n\t\t\tvar capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);\n\n\t\t\tnode['get' + capName] = function () {\n\t\t\t\treturn node[propName];\n\t\t\t};\n\n\t\t\tnode['set' + capName] = function (value) {\n\t\t\t\tif (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {\n\t\t\t\t\tnode[propName] = value;\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\t\tfor (var i = 0, _total = props.length; i < _total; i++) {\n\t\t\tassignGettersSetters(props[i]);\n\t\t}\n\n\t\tvar events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {\n\t\t\treturn e !== 'error';\n\t\t}),\n\t\t    assignEvents = function assignEvents(eventName) {\n\t\t\tnode.addEventListener(eventName, function (e) {\n\t\t\t\tif (isActive) {\n\t\t\t\t\tvar _event = (0, _general.createEvent)(e.type, e.target);\n\t\t\t\t\tmediaElement.dispatchEvent(_event);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tfor (var _i = 0, _total2 = events.length; _i < _total2; _i++) {\n\t\t\tassignEvents(events[_i]);\n\t\t}\n\n\t\tnode.setSize = function (width, height) {\n\t\t\tnode.style.width = width + 'px';\n\t\t\tnode.style.height = height + 'px';\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.hide = function () {\n\t\t\tisActive = false;\n\t\t\tnode.style.display = 'none';\n\n\t\t\treturn node;\n\t\t};\n\n\t\tnode.show = function () {\n\t\t\tisActive = true;\n\t\t\tnode.style.display = '';\n\n\t\t\treturn node;\n\t\t};\n\n\t\tvar index = 0,\n\t\t    total = mediaFiles.length;\n\t\tif (total > 0) {\n\t\t\tfor (; index < total; index++) {\n\t\t\t\tif (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {\n\t\t\t\t\tnode.setAttribute('src', mediaFiles[index].src);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tnode.addEventListener('error', function (e) {\n\t\t\tif (e && e.target && e.target.error && e.target.error.code === 4 && isActive) {\n\t\t\t\tif (index < total && mediaFiles[index + 1] !== undefined) {\n\t\t\t\t\tnode.src = mediaFiles[index++].src;\n\t\t\t\t\tnode.load();\n\t\t\t\t\tnode.play();\n\t\t\t\t} else {\n\t\t\t\t\tmediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tvar event = (0, _general.createEvent)('rendererready', node);\n\t\tmediaElement.dispatchEvent(event);\n\n\t\treturn node;\n\t}\n};\n\n_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;\n\n_renderer.renderer.add(HtmlMediaElement);\n\n},{\"2\":2,\"25\":25,\"27\":27,\"3\":3,\"7\":7,\"8\":8}],24:[function(_dereq_,module,exports){\n'use strict';\n\nvar _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _renderer = _dereq_(8);\n\nvar _general = _dereq_(27);\n\nvar _media = _dereq_(28);\n\nvar _dom = _dereq_(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar YouTubeApi = {\n\tisIframeStarted: false,\n\n\tisIframeLoaded: false,\n\n\tiframeQueue: [],\n\n\tenqueueIframe: function enqueueIframe(settings) {\n\t\tYouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;\n\n\t\tif (YouTubeApi.isLoaded) {\n\t\t\tYouTubeApi.createIframe(settings);\n\t\t} else {\n\t\t\tYouTubeApi.loadIframeApi();\n\t\t\tYouTubeApi.iframeQueue.push(settings);\n\t\t}\n\t},\n\n\tloadIframeApi: function loadIframeApi() {\n\t\tif (!YouTubeApi.isIframeStarted) {\n\t\t\t(0, _dom.loadScript)('https://www.youtube.com/player_api');\n\t\t\tYouTubeApi.isIframeStarted = true;\n\t\t}\n\t},\n\n\tiFrameReady: function iFrameReady() {\n\n\t\tYouTubeApi.isLoaded = true;\n\t\tYouTubeApi.isIframeLoaded = true;\n\n\t\twhile (YouTubeApi.iframeQueue.length > 0) {\n\t\t\tvar settings = YouTubeApi.iframeQueue.pop();\n\t\t\tYouTubeApi.createIframe(settings);\n\t\t}\n\t},\n\n\tcreateIframe: function createIframe(settings) {\n\t\treturn new YT.Player(settings.containerId, settings);\n\t},\n\n\tgetYouTubeId: function getYouTubeId(url) {\n\n\t\tvar youTubeId = '';\n\n\t\tif (url.indexOf('?') > 0) {\n\t\t\tyouTubeId = YouTubeApi.getYouTubeIdFromParam(url);\n\n\t\t\tif (youTubeId === '') {\n\t\t\t\tyouTubeId = YouTubeApi.getYouTubeIdFromUrl(url);\n\t\t\t}\n\t\t} else {\n\t\t\tyouTubeId = YouTubeApi.getYouTubeIdFromUrl(url);\n\t\t}\n\n\t\tvar id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);\n\t\tyouTubeId = id.split('?');\n\t\treturn youTubeId[0];\n\t},\n\n\tgetYouTubeIdFromParam: function getYouTubeIdFromParam(url) {\n\n\t\tif (url === undefined || url === null || !url.trim().length) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar parts = url.split('?'),\n\t\t    parameters = parts[1].split('&');\n\n\t\tvar youTubeId = '';\n\n\t\tfor (var i = 0, total = parameters.length; i < total; i++) {\n\t\t\tvar paramParts = parameters[i].split('=');\n\t\t\tif (paramParts[0] === 'v') {\n\t\t\t\tyouTubeId = paramParts[1];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn youTubeId;\n\t},\n\n\tgetYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {\n\n\t\tif (url === undefined || url === null || !url.trim().length) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar parts = url.split('?');\n\t\turl = parts[0];\n\t\treturn url.substring(url.lastIndexOf('/') + 1);\n\t},\n\n\tgetYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {\n\t\tif (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {\n\t\t\treturn url;\n\t\t}\n\n\t\tvar parts = url.split('/');\n\t\tparts[2] = parts[2].replace('.com', '-nocookie.com');\n\t\treturn parts.join('/');\n\t}\n};\n\nvar YouTubeIframeRenderer = {\n\tname: 'youtube_iframe',\n\n\toptions: {\n\t\tprefix: 'youtube_iframe',\n\n\t\tyoutube: {\n\t\t\tautoplay: 0,\n\t\t\tcontrols: 0,\n\t\t\tdisablekb: 1,\n\t\t\tend: 0,\n\t\t\tloop: 0,\n\t\t\tmodestbranding: 0,\n\t\t\tplaysinline: 0,\n\t\t\trel: 0,\n\t\t\tshowinfo: 0,\n\t\t\tstart: 0,\n\t\t\tiv_load_policy: 3,\n\n\t\t\tnocookie: false,\n\n\t\t\timageQuality: null\n\t\t}\n\t},\n\n\tcanPlayType: function canPlayType(type) {\n\t\treturn ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());\n\t},\n\n\tcreate: function create(mediaElement, options, mediaFiles) {\n\n\t\tvar youtube = {},\n\t\t    apiStack = [],\n\t\t    readyState = 4;\n\n\t\tvar youTubeApi = null,\n\t\t    paused = true,\n\t\t    ended = false,\n\t\t    youTubeIframe = null,\n\t\t    volume = 1;\n\n\t\tyoutube.options = options;\n\t\tyoutube.id = mediaElement.id + '_' + options.prefix;\n\t\tyoutube.mediaElement = mediaElement;\n\n\t\tvar props = _mejs2.default.html5media.properties,\n\t\t    assignGettersSetters = function assignGettersSetters(propName) {\n\n\t\t\tvar capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);\n\n\t\t\tyoutube['get' + capName] = function () {\n\t\t\t\tif (youTubeApi !== null) {\n\t\t\t\t\tvar value = null;\n\n\t\t\t\t\tswitch (propName) {\n\t\t\t\t\t\tcase 'currentTime':\n\t\t\t\t\t\t\treturn youTubeApi.getCurrentTime();\n\t\t\t\t\t\tcase 'duration':\n\t\t\t\t\t\t\treturn youTubeApi.getDuration();\n\t\t\t\t\t\tcase 'volume':\n\t\t\t\t\t\t\tvolume = youTubeApi.getVolume() / 100;\n\t\t\t\t\t\t\treturn volume;\n\t\t\t\t\t\tcase 'playbackRate':\n\t\t\t\t\t\t\treturn youTubeApi.getPlaybackRate();\n\t\t\t\t\t\tcase 'paused':\n\t\t\t\t\t\t\treturn paused;\n\t\t\t\t\t\tcase 'ended':\n\t\t\t\t\t\t\treturn ended;\n\t\t\t\t\t\tcase 'muted':\n\t\t\t\t\t\t\treturn youTubeApi.isMuted();\n\t\t\t\t\t\tcase 'buffered':\n\t\t\t\t\t\t\tvar percentLoaded = youTubeApi.getVideoLoadedFraction(),\n\t\t\t\t\t\t\t    duration = youTubeApi.getDuration();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstart: function start() {\n\t\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tend: function end() {\n\t\t\t\t\t\t\t\t\treturn percentLoaded * duration;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tlength: 1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\tcase 'src':\n\t\t\t\t\t\t\treturn youTubeApi.getVideoUrl();\n\t\t\t\t\t\tcase 'readyState':\n\t\t\t\t\t\t\treturn readyState;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn value;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tyoutube['set' + capName] = function (value) {\n\t\t\t\tif (youTubeApi !== null) {\n\t\t\t\t\tswitch (propName) {\n\t\t\t\t\t\tcase 'src':\n\t\t\t\t\t\t\tvar url = typeof value === 'string' ? value : value[0].src,\n\t\t\t\t\t\t\t    _videoId = YouTubeApi.getYouTubeId(url);\n\n\t\t\t\t\t\t\tif (mediaElement.originalNode.autoplay) {\n\t\t\t\t\t\t\t\tyouTubeApi.loadVideoById(_videoId);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tyouTubeApi.cueVideoById(_videoId);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'currentTime':\n\t\t\t\t\t\t\tyouTubeApi.seekTo(value);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'muted':\n\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tyouTubeApi.mute();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tyouTubeApi.unMute();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tvar event = (0, _general.createEvent)('volumechange', youtube);\n\t\t\t\t\t\t\t\tmediaElement.dispatchEvent(event);\n\t\t\t\t\t\t\t}, 50);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'volume':\n\t\t\t\t\t\t\tvolume = value;\n\t\t\t\t\t\t\tyouTubeApi.setVolume(value * 100);\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tvar event = (0, _general.createEvent)('volumechange', youtube);\n\t\t\t\t\t\t\t\tmediaElement.dispatchEvent(event);\n\t\t\t\t\t\t\t}, 50);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'playbackRate':\n\t\t\t\t\t\t\tyouTubeApi.setPlaybackRate(value);\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tvar event = (0, _general.createEvent)('ratechange', youtube);\n\t\t\t\t\t\t\t\tmediaElement.dispatchEvent(event);\n\t\t\t\t\t\t\t}, 50);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'readyState':\n\t\t\t\t\t\t\tvar event = (0, _general.createEvent)('canplay', youtube);\n\t\t\t\t\t\t\tmediaElement.dispatchEvent(event);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tapiStack.push({ type: 'set', propName: propName, value: value });\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\t\tfor (var i = 0, total = props.length; i < total; i++) {\n\t\t\tassignGettersSetters(props[i]);\n\t\t}\n\n\t\tvar methods = _mejs2.default.html5media.methods,\n\t\t    assignMethods = function assignMethods(methodName) {\n\t\t\tyoutube[methodName] = function () {\n\t\t\t\tif (youTubeApi !== null) {\n\t\t\t\t\tswitch (methodName) {\n\t\t\t\t\t\tcase 'play':\n\t\t\t\t\t\t\tpaused = false;\n\t\t\t\t\t\t\treturn youTubeApi.playVideo();\n\t\t\t\t\t\tcase 'pause':\n\t\t\t\t\t\t\tpaused = true;\n\t\t\t\t\t\t\treturn youTubeApi.pauseVideo();\n\t\t\t\t\t\tcase 'load':\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tapiStack.push({ type: 'call', methodName: methodName });\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\n\t\tfor (var _i = 0, _total = methods.length; _i < _total; _i++) {\n\t\t\tassignMethods(methods[_i]);\n\t\t}\n\n\t\tvar errorHandler = function errorHandler(error) {\n\t\t\tvar message = '';\n\t\t\tswitch (error.data) {\n\t\t\t\tcase 2:\n\t\t\t\t\tmessage = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 5:\n\t\t\t\t\tmessage = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 100:\n\t\t\t\t\tmessage = 'The video requested was not found. Either video has been removed or has been marked as private.';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 101:\n\t\t\t\tcase 105:\n\t\t\t\t\tmessage = 'The owner of the requested video does not allow it to be played in embedded players.';\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tmessage = 'Unknown error.';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles);\n\t\t};\n\n\t\tvar youtubeContainer = _document2.default.createElement('div');\n\t\tyoutubeContainer.id = youtube.id;\n\n\t\tif (youtube.options.youtube.nocookie) {\n\t\t\tmediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);\n\t\t}\n\n\t\tmediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);\n\t\tmediaElement.originalNode.style.display = 'none';\n\n\t\tvar isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',\n\t\t    height = isAudio ? '1' : mediaElement.originalNode.height,\n\t\t    width = isAudio ? '1' : mediaElement.originalNode.width,\n\t\t    videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),\n\t\t    youtubeSettings = {\n\t\t\tid: youtube.id,\n\t\t\tcontainerId: youtubeContainer.id,\n\t\t\tvideoId: videoId,\n\t\t\theight: height,\n\t\t\twidth: width,\n\t\t\thost: youtube.options.youtube && youtube.options.youtube.nocookie ? 'https://www.youtube-nocookie.com' : undefined,\n\t\t\tplayerVars: Object.assign({\n\t\t\t\tcontrols: 0,\n\t\t\t\trel: 0,\n\t\t\t\tdisablekb: 1,\n\t\t\t\tshowinfo: 0,\n\t\t\t\tmodestbranding: 0,\n\t\t\t\thtml5: 1,\n\t\t\t\tiv_load_policy: 3\n\t\t\t}, youtube.options.youtube),\n\t\t\torigin: _window2.default.location.host,\n\t\t\tevents: {\n\t\t\t\tonReady: function onReady(e) {\n\t\t\t\t\tmediaElement.youTubeApi = youTubeApi = e.target;\n\t\t\t\t\tmediaElement.youTubeState = {\n\t\t\t\t\t\tpaused: true,\n\t\t\t\t\t\tended: false\n\t\t\t\t\t};\n\n\t\t\t\t\tif (apiStack.length) {\n\t\t\t\t\t\tfor (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {\n\n\t\t\t\t\t\t\tvar stackItem = apiStack[_i2];\n\n\t\t\t\t\t\t\tif (stackItem.type === 'set') {\n\t\t\t\t\t\t\t\tvar propName = stackItem.propName,\n\t\t\t\t\t\t\t\t    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);\n\n\t\t\t\t\t\t\t\tyoutube['set' + capName](stackItem.value);\n\t\t\t\t\t\t\t} else if (stackItem.type === 'call') {\n\t\t\t\t\t\t\t\tyoutube[stackItem.methodName]();\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\tyouTubeIframe = youTubeApi.getIframe();\n\n\t\t\t\t\tif (mediaElement.originalNode.muted) {\n\t\t\t\t\t\tyouTubeApi.mute();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar events = ['mouseover', 'mouseout'],\n\t\t\t\t\t    assignEvents = function assignEvents(e) {\n\t\t\t\t\t\tvar newEvent = (0, _general.createEvent)(e.type, youtube);\n\t\t\t\t\t\tmediaElement.dispatchEvent(newEvent);\n\t\t\t\t\t};\n\n\t\t\t\t\tfor (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {\n\t\t\t\t\t\tyouTubeIframe.addEventListener(events[_i3], assignEvents, false);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];\n\n\t\t\t\t\tfor (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {\n\t\t\t\t\t\tvar event = (0, _general.createEvent)(initEvents[_i4], youtube);\n\t\t\t\t\t\tmediaElement.dispatchEvent(event);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonStateChange: function onStateChange(e) {\n\t\t\t\t\tvar events = [];\n\n\t\t\t\t\tswitch (e.data) {\n\t\t\t\t\t\tcase -1:\n\t\t\t\t\t\t\tevents = ['loadedmetadata'];\n\t\t\t\t\t\t\tpaused = true;\n\t\t\t\t\t\t\tended = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\tevents = ['ended'];\n\t\t\t\t\t\t\tpaused = false;\n\t\t\t\t\t\t\tended = !youtube.options.youtube.loop;\n\t\t\t\t\t\t\tif (!youtube.options.youtube.loop) {\n\t\t\t\t\t\t\t\tyoutube.stopInterval();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\tevents = ['play', 'playing'];\n\t\t\t\t\t\t\tpaused = false;\n\t\t\t\t\t\t\tended = false;\n\t\t\t\t\t\t\tyoutube.startInterval();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tevents = ['pause'];\n\t\t\t\t\t\t\tpaused = true;\n\t\t\t\t\t\t\tended = false;\n\t\t\t\t\t\t\tyoutube.stopInterval();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\tevents = ['progress'];\n\t\t\t\t\t\t\tended = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\tevents = ['loadeddata', 'loadedmetadata', 'canplay'];\n\t\t\t\t\t\t\tpaused = true;\n\t\t\t\t\t\t\tended = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {\n\t\t\t\t\t\tvar event = (0, _general.createEvent)(events[_i5], youtube);\n\t\t\t\t\t\tmediaElement.dispatchEvent(event);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonError: function onError(e) {\n\t\t\t\t\treturn errorHandler(e);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) {\n\t\t\tyoutubeSettings.playerVars.playsinline = 1;\n\t\t}\n\n\t\tif (mediaElement.originalNode.controls) {\n\t\t\tyoutubeSettings.playerVars.controls = 1;\n\t\t}\n\t\tif (mediaElement.originalNode.autoplay) {\n\t\t\tyoutubeSettings.playerVars.autoplay = 1;\n\t\t}\n\t\tif (mediaElement.originalNode.loop) {\n\t\t\tyoutubeSettings.playerVars.loop = 1;\n\t\t}\n\n\t\tif ((youtubeSettings.playerVars.loop && parseInt(youtubeSettings.playerVars.loop, 10) === 1 || mediaElement.originalNode.src.indexOf('loop=') > -1) && !youtubeSettings.playerVars.playlist && mediaElement.originalNode.src.indexOf('playlist=') === -1) {\n\t\t\tyoutubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);\n\t\t}\n\n\t\tYouTubeApi.enqueueIframe(youtubeSettings);\n\n\t\tyoutube.onEvent = function (eventName, player, _youTubeState) {\n\t\t\tif (_youTubeState !== null && _youTubeState !== undefined) {\n\t\t\t\tmediaElement.youTubeState = _youTubeState;\n\t\t\t}\n\t\t};\n\n\t\tyoutube.setSize = function (width, height) {\n\t\t\tif (youTubeApi !== null) {\n\t\t\t\tyouTubeApi.setSize(width, height);\n\t\t\t}\n\t\t};\n\t\tyoutube.hide = function () {\n\t\t\tyoutube.stopInterval();\n\t\t\tyoutube.pause();\n\t\t\tif (youTubeIframe) {\n\t\t\t\tyouTubeIframe.style.display = 'none';\n\t\t\t}\n\t\t};\n\t\tyoutube.show = function () {\n\t\t\tif (youTubeIframe) {\n\t\t\t\tyouTubeIframe.style.display = '';\n\t\t\t}\n\t\t};\n\t\tyoutube.destroy = function () {\n\t\t\tyouTubeApi.destroy();\n\t\t};\n\t\tyoutube.interval = null;\n\n\t\tyoutube.startInterval = function () {\n\t\t\tyoutube.interval = setInterval(function () {\n\t\t\t\tvar event = (0, _general.createEvent)('timeupdate', youtube);\n\t\t\t\tmediaElement.dispatchEvent(event);\n\t\t\t}, 250);\n\t\t};\n\t\tyoutube.stopInterval = function () {\n\t\t\tif (youtube.interval) {\n\t\t\t\tclearInterval(youtube.interval);\n\t\t\t}\n\t\t};\n\t\tyoutube.getPosterUrl = function () {\n\t\t\tvar quality = options.youtube.imageQuality,\n\t\t\t    resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],\n\t\t\t    id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);\n\t\t\treturn quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';\n\t\t};\n\n\t\treturn youtube;\n\t}\n};\n\n_window2.default.onYouTubePlayerAPIReady = function () {\n\tYouTubeApi.iFrameReady();\n};\n\n_media.typeChecks.push(function (url) {\n\treturn (/\\/\\/(www\\.youtube|youtu\\.?be)/i.test(url) ? 'video/x-youtube' : null\n\t);\n});\n\n_renderer.renderer.add(YouTubeIframeRenderer);\n\n},{\"2\":2,\"26\":26,\"27\":27,\"28\":28,\"3\":3,\"7\":7,\"8\":8}],25:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_PASSIVE_EVENT = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;\n\nvar _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAV = exports.NAV = _window2.default.navigator;\nvar UA = exports.UA = NAV.userAgent.toLowerCase();\nvar IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;\nvar IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;\nvar IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;\nvar IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;\nvar IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);\nvar IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);\nvar IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);\nvar IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);\nvar IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);\nvar IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;\nvar IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\\/\\d+\\.\\d+\\s\\(linux;\\su;/i.test(UA);\nvar HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;\nvar SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {\n\tvar element = _document2.default.createElement('x'),\n\t    documentElement = _document2.default.documentElement,\n\t    getComputedStyle = _window2.default.getComputedStyle;\n\n\tif (!('pointerEvents' in element.style)) {\n\t\treturn false;\n\t}\n\n\telement.style.pointerEvents = 'auto';\n\telement.style.pointerEvents = 'x';\n\tdocumentElement.appendChild(element);\n\tvar supports = getComputedStyle && (getComputedStyle(element, '') || {}).pointerEvents === 'auto';\n\telement.remove();\n\treturn !!supports;\n}();\n\nvar SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {\n\tvar supportsPassive = false;\n\ttry {\n\t\tvar opts = Object.defineProperty({}, 'passive', {\n\t\t\tget: function get() {\n\t\t\t\tsupportsPassive = true;\n\t\t\t}\n\t\t});\n\t\t_window2.default.addEventListener('test', null, opts);\n\t} catch (e) {}\n\n\treturn supportsPassive;\n}();\n\nvar html5Elements = ['source', 'track', 'audio', 'video'];\nvar video = void 0;\n\nfor (var i = 0, total = html5Elements.length; i < total; i++) {\n\tvideo = _document2.default.createElement(html5Elements[i]);\n}\n\nvar SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_IE && /edge/i.test(UA);\n\nvar hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;\n\nvar hasNativeFullscreen = video.requestFullscreen !== undefined;\n\nif (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {\n\thasNativeFullscreen = false;\n\thasiOSFullScreen = false;\n}\n\nvar hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;\nvar hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;\nvar hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;\nvar hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;\nvar nativeFullScreenEnabled = hasTrueNativeFullScreen;\nvar fullScreenEventName = '';\nvar isFullScreen = void 0,\n    requestFullScreen = void 0,\n    cancelFullScreen = void 0;\n\nif (hasMozNativeFullScreen) {\n\tnativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;\n} else if (hasMsNativeFullScreen) {\n\tnativeFullScreenEnabled = _document2.default.msFullscreenEnabled;\n}\n\nif (IS_CHROME) {\n\thasiOSFullScreen = false;\n}\n\nif (hasTrueNativeFullScreen) {\n\tif (hasWebkitNativeFullScreen) {\n\t\tfullScreenEventName = 'webkitfullscreenchange';\n\t} else if (hasMozNativeFullScreen) {\n\t\tfullScreenEventName = 'fullscreenchange';\n\t} else if (hasMsNativeFullScreen) {\n\t\tfullScreenEventName = 'MSFullscreenChange';\n\t}\n\n\texports.isFullScreen = isFullScreen = function isFullScreen() {\n\t\tif (hasMozNativeFullScreen) {\n\t\t\treturn _document2.default.mozFullScreen;\n\t\t} else if (hasWebkitNativeFullScreen) {\n\t\t\treturn _document2.default.webkitIsFullScreen;\n\t\t} else if (hasMsNativeFullScreen) {\n\t\t\treturn _document2.default.msFullscreenElement !== null;\n\t\t}\n\t};\n\n\texports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {\n\t\tif (hasWebkitNativeFullScreen) {\n\t\t\tel.webkitRequestFullScreen();\n\t\t} else if (hasMozNativeFullScreen) {\n\t\t\tel.mozRequestFullScreen();\n\t\t} else if (hasMsNativeFullScreen) {\n\t\t\tel.msRequestFullscreen();\n\t\t}\n\t};\n\n\texports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {\n\t\tif (hasWebkitNativeFullScreen) {\n\t\t\t_document2.default.webkitCancelFullScreen();\n\t\t} else if (hasMozNativeFullScreen) {\n\t\t\t_document2.default.mozCancelFullScreen();\n\t\t} else if (hasMsNativeFullScreen) {\n\t\t\t_document2.default.msExitFullscreen();\n\t\t}\n\t};\n}\n\nvar HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;\nvar HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;\nvar HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;\nvar HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;\nvar HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;\nvar HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;\nvar HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;\nvar FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;\nexports.isFullScreen = isFullScreen;\nexports.requestFullScreen = requestFullScreen;\nexports.cancelFullScreen = cancelFullScreen;\n\n\n_mejs2.default.Features = _mejs2.default.Features || {};\n_mejs2.default.Features.isiPad = IS_IPAD;\n_mejs2.default.Features.isiPod = IS_IPOD;\n_mejs2.default.Features.isiPhone = IS_IPHONE;\n_mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;\n_mejs2.default.Features.isAndroid = IS_ANDROID;\n_mejs2.default.Features.isIE = IS_IE;\n_mejs2.default.Features.isEdge = IS_EDGE;\n_mejs2.default.Features.isChrome = IS_CHROME;\n_mejs2.default.Features.isFirefox = IS_FIREFOX;\n_mejs2.default.Features.isSafari = IS_SAFARI;\n_mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;\n_mejs2.default.Features.hasMSE = HAS_MSE;\n_mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;\n_mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;\n_mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;\n_mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;\n_mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;\n_mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;\n_mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;\n_mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;\n_mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;\n_mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;\n_mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;\n_mejs2.default.Features.isFullScreen = isFullScreen;\n_mejs2.default.Features.requestFullScreen = requestFullScreen;\n_mejs2.default.Features.cancelFullScreen = cancelFullScreen;\n\n},{\"2\":2,\"3\":3,\"7\":7}],26:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.removeClass = exports.addClass = exports.hasClass = undefined;\nexports.loadScript = loadScript;\nexports.offset = offset;\nexports.toggleClass = toggleClass;\nexports.fadeOut = fadeOut;\nexports.fadeIn = fadeIn;\nexports.siblings = siblings;\nexports.visible = visible;\nexports.ajax = ajax;\n\nvar _window = _dereq_(3);\n\nvar _window2 = _interopRequireDefault(_window);\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction loadScript(url) {\n\treturn new Promise(function (resolve, reject) {\n\t\tvar script = _document2.default.createElement('script');\n\t\tscript.src = url;\n\t\tscript.async = true;\n\t\tscript.onload = function () {\n\t\t\tscript.remove();\n\t\t\tresolve();\n\t\t};\n\t\tscript.onerror = function () {\n\t\t\tscript.remove();\n\t\t\treject();\n\t\t};\n\t\t_document2.default.head.appendChild(script);\n\t});\n}\n\nfunction offset(el) {\n\tvar rect = el.getBoundingClientRect(),\n\t    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,\n\t    scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;\n\treturn { top: rect.top + scrollTop, left: rect.left + scrollLeft };\n}\n\nvar hasClassMethod = void 0,\n    addClassMethod = void 0,\n    removeClassMethod = void 0;\n\nif ('classList' in _document2.default.documentElement) {\n\thasClassMethod = function hasClassMethod(el, className) {\n\t\treturn el.classList !== undefined && el.classList.contains(className);\n\t};\n\taddClassMethod = function addClassMethod(el, className) {\n\t\treturn el.classList.add(className);\n\t};\n\tremoveClassMethod = function removeClassMethod(el, className) {\n\t\treturn el.classList.remove(className);\n\t};\n} else {\n\thasClassMethod = function hasClassMethod(el, className) {\n\t\treturn new RegExp('\\\\b' + className + '\\\\b').test(el.className);\n\t};\n\taddClassMethod = function addClassMethod(el, className) {\n\t\tif (!hasClass(el, className)) {\n\t\t\tel.className += ' ' + className;\n\t\t}\n\t};\n\tremoveClassMethod = function removeClassMethod(el, className) {\n\t\tel.className = el.className.replace(new RegExp('\\\\b' + className + '\\\\b', 'g'), '');\n\t};\n}\n\nvar hasClass = exports.hasClass = hasClassMethod;\nvar addClass = exports.addClass = addClassMethod;\nvar removeClass = exports.removeClass = removeClassMethod;\n\nfunction toggleClass(el, className) {\n\thasClass(el, className) ? removeClass(el, className) : addClass(el, className);\n}\n\nfunction fadeOut(el) {\n\tvar duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;\n\tvar callback = arguments[2];\n\n\tif (!el.style.opacity) {\n\t\tel.style.opacity = 1;\n\t}\n\n\tvar start = null;\n\t_window2.default.requestAnimationFrame(function animate(timestamp) {\n\t\tstart = start || timestamp;\n\t\tvar progress = timestamp - start;\n\t\tvar opacity = parseFloat(1 - progress / duration, 2);\n\t\tel.style.opacity = opacity < 0 ? 0 : opacity;\n\t\tif (progress > duration) {\n\t\t\tif (callback && typeof callback === 'function') {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t} else {\n\t\t\t_window2.default.requestAnimationFrame(animate);\n\t\t}\n\t});\n}\n\nfunction fadeIn(el) {\n\tvar duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;\n\tvar callback = arguments[2];\n\n\tif (!el.style.opacity) {\n\t\tel.style.opacity = 0;\n\t}\n\n\tvar start = null;\n\t_window2.default.requestAnimationFrame(function animate(timestamp) {\n\t\tstart = start || timestamp;\n\t\tvar progress = timestamp - start;\n\t\tvar opacity = parseFloat(progress / duration, 2);\n\t\tel.style.opacity = opacity > 1 ? 1 : opacity;\n\t\tif (progress > duration) {\n\t\t\tif (callback && typeof callback === 'function') {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t} else {\n\t\t\t_window2.default.requestAnimationFrame(animate);\n\t\t}\n\t});\n}\n\nfunction siblings(el, filter) {\n\tvar siblings = [];\n\tel = el.parentNode.firstChild;\n\tdo {\n\t\tif (!filter || filter(el)) {\n\t\t\tsiblings.push(el);\n\t\t}\n\t} while (el = el.nextSibling);\n\treturn siblings;\n}\n\nfunction visible(elem) {\n\tif (elem.getClientRects !== undefined && elem.getClientRects === 'function') {\n\t\treturn !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n\t}\n\treturn !!(elem.offsetWidth || elem.offsetHeight);\n}\n\nfunction ajax(url, dataType, success, error) {\n\tvar xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');\n\n\tvar type = 'application/x-www-form-urlencoded; charset=UTF-8',\n\t    completed = false,\n\t    accept = '*/'.concat('*');\n\n\tswitch (dataType) {\n\t\tcase 'text':\n\t\t\ttype = 'text/plain';\n\t\t\tbreak;\n\t\tcase 'json':\n\t\t\ttype = 'application/json, text/javascript';\n\t\t\tbreak;\n\t\tcase 'html':\n\t\t\ttype = 'text/html';\n\t\t\tbreak;\n\t\tcase 'xml':\n\t\t\ttype = 'application/xml, text/xml';\n\t\t\tbreak;\n\t}\n\n\tif (type !== 'application/x-www-form-urlencoded') {\n\t\taccept = type + ', */*; q=0.01';\n\t}\n\n\tif (xhr) {\n\t\txhr.open('GET', url, true);\n\t\txhr.setRequestHeader('Accept', accept);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (completed) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif (xhr.status === 200) {\n\t\t\t\t\tcompleted = true;\n\t\t\t\t\tvar data = void 0;\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'json':\n\t\t\t\t\t\t\tdata = JSON.parse(xhr.responseText);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'xml':\n\t\t\t\t\t\t\tdata = xhr.responseXML;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tdata = xhr.responseText;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tsuccess(data);\n\t\t\t\t} else if (typeof error === 'function') {\n\t\t\t\t\terror(xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send();\n\t}\n}\n\n_mejs2.default.Utils = _mejs2.default.Utils || {};\n_mejs2.default.Utils.offset = offset;\n_mejs2.default.Utils.hasClass = hasClass;\n_mejs2.default.Utils.addClass = addClass;\n_mejs2.default.Utils.removeClass = removeClass;\n_mejs2.default.Utils.toggleClass = toggleClass;\n_mejs2.default.Utils.fadeIn = fadeIn;\n_mejs2.default.Utils.fadeOut = fadeOut;\n_mejs2.default.Utils.siblings = siblings;\n_mejs2.default.Utils.visible = visible;\n_mejs2.default.Utils.ajax = ajax;\n_mejs2.default.Utils.loadScript = loadScript;\n\n},{\"2\":2,\"3\":3,\"7\":7}],27:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.escapeHTML = escapeHTML;\nexports.debounce = debounce;\nexports.isObjectEmpty = isObjectEmpty;\nexports.splitEvents = splitEvents;\nexports.createEvent = createEvent;\nexports.isNodeAfter = isNodeAfter;\nexports.isString = isString;\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction escapeHTML(input) {\n\n\tif (typeof input !== 'string') {\n\t\tthrow new Error('Argument passed must be a string');\n\t}\n\n\tvar map = {\n\t\t'&': '&amp;',\n\t\t'<': '&lt;',\n\t\t'>': '&gt;',\n\t\t'\"': '&quot;'\n\t};\n\n\treturn input.replace(/[&<>\"]/g, function (c) {\n\t\treturn map[c];\n\t});\n}\n\nfunction debounce(func, wait) {\n\tvar _this = this,\n\t    _arguments = arguments;\n\n\tvar immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\n\tif (typeof func !== 'function') {\n\t\tthrow new Error('First argument must be a function');\n\t}\n\n\tif (typeof wait !== 'number') {\n\t\tthrow new Error('Second argument must be a numeric value');\n\t}\n\n\tvar timeout = void 0;\n\treturn function () {\n\t\tvar context = _this,\n\t\t    args = _arguments;\n\t\tvar later = function later() {\n\t\t\ttimeout = null;\n\t\t\tif (!immediate) {\n\t\t\t\tfunc.apply(context, args);\n\t\t\t}\n\t\t};\n\t\tvar callNow = immediate && !timeout;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\n\t\tif (callNow) {\n\t\t\tfunc.apply(context, args);\n\t\t}\n\t};\n}\n\nfunction isObjectEmpty(instance) {\n\treturn Object.getOwnPropertyNames(instance).length <= 0;\n}\n\nfunction splitEvents(events, id) {\n\tvar rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\\b/;\n\n\tvar ret = { d: [], w: [] };\n\t(events || '').split(' ').forEach(function (v) {\n\t\tvar eventName = '' + v + (id ? '.' + id : '');\n\n\t\tif (eventName.startsWith('.')) {\n\t\t\tret.d.push(eventName);\n\t\t\tret.w.push(eventName);\n\t\t} else {\n\t\t\tret[rwindow.test(v) ? 'w' : 'd'].push(eventName);\n\t\t}\n\t});\n\n\tret.d = ret.d.join(' ');\n\tret.w = ret.w.join(' ');\n\treturn ret;\n}\n\nfunction createEvent(eventName, target) {\n\n\tif (typeof eventName !== 'string') {\n\t\tthrow new Error('Event name must be a string');\n\t}\n\n\tvar eventFrags = eventName.match(/([a-z]+\\.([a-z]+))/i),\n\t    detail = {\n\t\ttarget: target\n\t};\n\n\tif (eventFrags !== null) {\n\t\teventName = eventFrags[1];\n\t\tdetail.namespace = eventFrags[2];\n\t}\n\n\treturn new window.CustomEvent(eventName, {\n\t\tdetail: detail\n\t});\n}\n\nfunction isNodeAfter(sourceNode, targetNode) {\n\n\treturn !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);\n}\n\nfunction isString(value) {\n\treturn typeof value === 'string';\n}\n\n_mejs2.default.Utils = _mejs2.default.Utils || {};\n_mejs2.default.Utils.escapeHTML = escapeHTML;\n_mejs2.default.Utils.debounce = debounce;\n_mejs2.default.Utils.isObjectEmpty = isObjectEmpty;\n_mejs2.default.Utils.splitEvents = splitEvents;\n_mejs2.default.Utils.createEvent = createEvent;\n_mejs2.default.Utils.isNodeAfter = isNodeAfter;\n_mejs2.default.Utils.isString = isString;\n\n},{\"7\":7}],28:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.typeChecks = undefined;\nexports.absolutizeUrl = absolutizeUrl;\nexports.formatType = formatType;\nexports.getMimeFromType = getMimeFromType;\nexports.getTypeFromFile = getTypeFromFile;\nexports.getExtension = getExtension;\nexports.normalizeExtension = normalizeExtension;\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nvar _general = _dereq_(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar typeChecks = exports.typeChecks = [];\n\nfunction absolutizeUrl(url) {\n\n\tif (typeof url !== 'string') {\n\t\tthrow new Error('`url` argument must be a string');\n\t}\n\n\tvar el = document.createElement('div');\n\tel.innerHTML = '<a href=\"' + (0, _general.escapeHTML)(url) + '\">x</a>';\n\treturn el.firstChild.href;\n}\n\nfunction formatType(url) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n\treturn url && !type ? getTypeFromFile(url) : type;\n}\n\nfunction getMimeFromType(type) {\n\n\tif (typeof type !== 'string') {\n\t\tthrow new Error('`type` argument must be a string');\n\t}\n\n\treturn type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;\n}\n\nfunction getTypeFromFile(url) {\n\n\tif (typeof url !== 'string') {\n\t\tthrow new Error('`url` argument must be a string');\n\t}\n\n\tfor (var i = 0, total = typeChecks.length; i < total; i++) {\n\t\tvar type = typeChecks[i](url);\n\n\t\tif (type) {\n\t\t\treturn type;\n\t\t}\n\t}\n\n\tvar ext = getExtension(url),\n\t    normalizedExt = normalizeExtension(ext);\n\n\tvar mime = 'video/mp4';\n\n\tif (normalizedExt) {\n\t\tif (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg'].indexOf(normalizedExt)) {\n\t\t\tmime = 'video/' + normalizedExt;\n\t\t} else if ('mov' === normalizedExt) {\n\t\t\tmime = 'video/quicktime';\n\t\t} else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {\n\t\t\tmime = 'audio/' + normalizedExt;\n\t\t}\n\t}\n\n\treturn mime;\n}\n\nfunction getExtension(url) {\n\n\tif (typeof url !== 'string') {\n\t\tthrow new Error('`url` argument must be a string');\n\t}\n\n\tvar baseUrl = url.split('?')[0],\n\t    baseName = baseUrl.split('\\\\').pop().split('/').pop();\n\treturn ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';\n}\n\nfunction normalizeExtension(extension) {\n\n\tif (typeof extension !== 'string') {\n\t\tthrow new Error('`extension` argument must be a string');\n\t}\n\n\tswitch (extension) {\n\t\tcase 'mp4':\n\t\tcase 'm4v':\n\t\t\treturn 'mp4';\n\t\tcase 'webm':\n\t\tcase 'webma':\n\t\tcase 'webmv':\n\t\t\treturn 'webm';\n\t\tcase 'ogg':\n\t\tcase 'oga':\n\t\tcase 'ogv':\n\t\t\treturn 'ogg';\n\t\tdefault:\n\t\t\treturn extension;\n\t}\n}\n\n_mejs2.default.Utils = _mejs2.default.Utils || {};\n_mejs2.default.Utils.typeChecks = typeChecks;\n_mejs2.default.Utils.absolutizeUrl = absolutizeUrl;\n_mejs2.default.Utils.formatType = formatType;\n_mejs2.default.Utils.getMimeFromType = getMimeFromType;\n_mejs2.default.Utils.getTypeFromFile = getTypeFromFile;\n_mejs2.default.Utils.getExtension = getExtension;\n_mejs2.default.Utils.normalizeExtension = normalizeExtension;\n\n},{\"27\":27,\"7\":7}],29:[function(_dereq_,module,exports){\n'use strict';\n\nvar _document = _dereq_(2);\n\nvar _document2 = _interopRequireDefault(_document);\n\nvar _promisePolyfill = _dereq_(4);\n\nvar _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function (arr) {\n\tarr.forEach(function (item) {\n\t\tif (item.hasOwnProperty('remove')) {\n\t\t\treturn;\n\t\t}\n\t\tObject.defineProperty(item, 'remove', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\twritable: true,\n\t\t\tvalue: function remove() {\n\t\t\t\tthis.parentNode.removeChild(this);\n\t\t\t}\n\t\t});\n\t});\n})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\n\n(function () {\n\n\tif (typeof window.CustomEvent === 'function') {\n\t\treturn false;\n\t}\n\n\tfunction CustomEvent(event, params) {\n\t\tparams = params || { bubbles: false, cancelable: false, detail: undefined };\n\t\tvar evt = _document2.default.createEvent('CustomEvent');\n\t\tevt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n\t\treturn evt;\n\t}\n\n\tCustomEvent.prototype = window.Event.prototype;\n\twindow.CustomEvent = CustomEvent;\n})();\n\nif (typeof Object.assign !== 'function') {\n\tObject.assign = function (target) {\n\n\t\tif (target === null || target === undefined) {\n\t\t\tthrow new TypeError('Cannot convert undefined or null to object');\n\t\t}\n\n\t\tvar to = Object(target);\n\n\t\tfor (var index = 1, total = arguments.length; index < total; index++) {\n\t\t\tvar nextSource = arguments[index];\n\n\t\t\tif (nextSource !== null) {\n\t\t\t\tfor (var nextKey in nextSource) {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n\t\t\t\t\t\tto[nextKey] = nextSource[nextKey];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn to;\n\t};\n}\n\nif (!String.prototype.startsWith) {\n\tString.prototype.startsWith = function (searchString, position) {\n\t\tposition = position || 0;\n\t\treturn this.substr(position, searchString.length) === searchString;\n\t};\n}\n\nif (!Element.prototype.matches) {\n\tElement.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {\n\t\tvar matches = (this.document || this.ownerDocument).querySelectorAll(s),\n\t\t    i = matches.length - 1;\n\t\twhile (--i >= 0 && matches.item(i) !== this) {}\n\t\treturn i > -1;\n\t};\n}\n\nif (window.Element && !Element.prototype.closest) {\n\tElement.prototype.closest = function (s) {\n\t\tvar matches = (this.document || this.ownerDocument).querySelectorAll(s),\n\t\t    i = void 0,\n\t\t    el = this;\n\t\tdo {\n\t\t\ti = matches.length;\n\t\t\twhile (--i >= 0 && matches.item(i) !== el) {}\n\t\t} while (i < 0 && (el = el.parentElement));\n\t\treturn el;\n\t};\n}\n\n(function () {\n\tvar lastTime = 0;\n\tvar vendors = ['ms', 'moz', 'webkit', 'o'];\n\tfor (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n\t\twindow.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n\t\twindow.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\n\t}\n\n\tif (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {\n\t\tvar currTime = new Date().getTime();\n\t\tvar timeToCall = Math.max(0, 16 - (currTime - lastTime));\n\t\tvar id = window.setTimeout(function () {\n\t\t\tcallback(currTime + timeToCall);\n\t\t}, timeToCall);\n\t\tlastTime = currTime + timeToCall;\n\t\treturn id;\n\t};\n\n\tif (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {\n\t\tclearTimeout(id);\n\t};\n})();\n\nif (/firefox/i.test(navigator.userAgent)) {\n\tvar getComputedStyle = window.getComputedStyle;\n\twindow.getComputedStyle = function (el, pseudoEl) {\n\t\tvar t = getComputedStyle(el, pseudoEl);\n\t\treturn t === null ? { getPropertyValue: function getPropertyValue() {} } : t;\n\t};\n}\n\nif (!window.Promise) {\n\twindow.Promise = _promisePolyfill2.default;\n}\n\n(function (constructor) {\n\tif (constructor && constructor.prototype && constructor.prototype.children === null) {\n\t\tObject.defineProperty(constructor.prototype, 'children', {\n\t\t\tget: function get() {\n\t\t\t\tvar i = 0,\n\t\t\t\t    node = void 0,\n\t\t\t\t    nodes = this.childNodes,\n\t\t\t\t    children = [];\n\t\t\t\twhile (node = nodes[i++]) {\n\t\t\t\t\tif (node.nodeType === 1) {\n\t\t\t\t\t\tchildren.push(node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn children;\n\t\t\t}\n\t\t});\n\t}\n})(window.Node || window.Element);\n\n},{\"2\":2,\"4\":4}],30:[function(_dereq_,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.isDropFrame = isDropFrame;\nexports.secondsToTimeCode = secondsToTimeCode;\nexports.timeCodeToSeconds = timeCodeToSeconds;\nexports.calculateTimeFormat = calculateTimeFormat;\nexports.convertSMPTEtoSeconds = convertSMPTEtoSeconds;\n\nvar _mejs = _dereq_(7);\n\nvar _mejs2 = _interopRequireDefault(_mejs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isDropFrame() {\n\tvar fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;\n\n\treturn !(fps % 1 === 0);\n}\nfunction secondsToTimeCode(time) {\n\tvar forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\tvar showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\tvar fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;\n\tvar secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\tvar timeFormat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'hh:mm:ss';\n\n\n\ttime = !time || typeof time !== 'number' || time < 0 ? 0 : time;\n\n\tvar dropFrames = Math.round(fps * 0.066666),\n\t    timeBase = Math.round(fps),\n\t    framesPer24Hours = Math.round(fps * 3600) * 24,\n\t    framesPer10Minutes = Math.round(fps * 600),\n\t    frameSep = isDropFrame(fps) ? ';' : ':',\n\t    hours = void 0,\n\t    minutes = void 0,\n\t    seconds = void 0,\n\t    frames = void 0,\n\t    f = Math.round(time * fps);\n\n\tif (isDropFrame(fps)) {\n\n\t\tif (f < 0) {\n\t\t\tf = framesPer24Hours + f;\n\t\t}\n\n\t\tf = f % framesPer24Hours;\n\n\t\tvar d = Math.floor(f / framesPer10Minutes);\n\t\tvar m = f % framesPer10Minutes;\n\t\tf = f + dropFrames * 9 * d;\n\t\tif (m > dropFrames) {\n\t\t\tf = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames));\n\t\t}\n\n\t\tvar timeBaseDivision = Math.floor(f / timeBase);\n\n\t\thours = Math.floor(Math.floor(timeBaseDivision / 60) / 60);\n\t\tminutes = Math.floor(timeBaseDivision / 60) % 60;\n\n\t\tif (showFrameCount) {\n\t\t\tseconds = timeBaseDivision % 60;\n\t\t} else {\n\t\t\tseconds = Math.floor(f / timeBase % 60).toFixed(secondsDecimalLength);\n\t\t}\n\t} else {\n\t\thours = Math.floor(time / 3600) % 24;\n\t\tminutes = Math.floor(time / 60) % 60;\n\t\tif (showFrameCount) {\n\t\t\tseconds = Math.floor(time % 60);\n\t\t} else {\n\t\t\tseconds = Math.floor(time % 60).toFixed(secondsDecimalLength);\n\t\t}\n\t}\n\thours = hours <= 0 ? 0 : hours;\n\tminutes = minutes <= 0 ? 0 : minutes;\n\tseconds = seconds <= 0 ? 0 : seconds;\n\n\tseconds = seconds === 60 ? 0 : seconds;\n\tminutes = minutes === 60 ? 0 : minutes;\n\n\tvar timeFormatFrags = timeFormat.split(':');\n\tvar timeFormatSettings = {};\n\tfor (var i = 0, total = timeFormatFrags.length; i < total; ++i) {\n\t\tvar unique = '';\n\t\tfor (var j = 0, t = timeFormatFrags[i].length; j < t; j++) {\n\t\t\tif (unique.indexOf(timeFormatFrags[i][j]) < 0) {\n\t\t\t\tunique += timeFormatFrags[i][j];\n\t\t\t}\n\t\t}\n\t\tif (~['f', 's', 'm', 'h'].indexOf(unique)) {\n\t\t\ttimeFormatSettings[unique] = timeFormatFrags[i].length;\n\t\t}\n\t}\n\n\tvar result = forceHours || hours > 0 ? (hours < 10 && timeFormatSettings.h > 1 ? '0' + hours : hours) + ':' : '';\n\tresult += (minutes < 10 && timeFormatSettings.m > 1 ? '0' + minutes : minutes) + ':';\n\tresult += '' + (seconds < 10 && timeFormatSettings.s > 1 ? '0' + seconds : seconds);\n\n\tif (showFrameCount) {\n\t\tframes = (f % timeBase).toFixed(0);\n\t\tframes = frames <= 0 ? 0 : frames;\n\t\tresult += frames < 10 && timeFormatSettings.f ? frameSep + '0' + frames : '' + frameSep + frames;\n\t}\n\n\treturn result;\n}\n\nfunction timeCodeToSeconds(time) {\n\tvar fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;\n\n\n\tif (typeof time !== 'string') {\n\t\tthrow new TypeError('Time must be a string');\n\t}\n\n\tif (time.indexOf(';') > 0) {\n\t\ttime = time.replace(';', ':');\n\t}\n\n\tif (!/\\d{2}(\\:\\d{2}){0,3}/i.test(time)) {\n\t\tthrow new TypeError('Time code must have the format `00:00:00`');\n\t}\n\n\tvar parts = time.split(':');\n\n\tvar output = void 0,\n\t    hours = 0,\n\t    minutes = 0,\n\t    seconds = 0,\n\t    frames = 0,\n\t    totalMinutes = 0,\n\t    dropFrames = Math.round(fps * 0.066666),\n\t    timeBase = Math.round(fps),\n\t    hFrames = timeBase * 3600,\n\t    mFrames = timeBase * 60;\n\n\tswitch (parts.length) {\n\t\tdefault:\n\t\tcase 1:\n\t\t\tseconds = parseInt(parts[0], 10);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tminutes = parseInt(parts[0], 10);\n\t\t\tseconds = parseInt(parts[1], 10);\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\thours = parseInt(parts[0], 10);\n\t\t\tminutes = parseInt(parts[1], 10);\n\t\t\tseconds = parseInt(parts[2], 10);\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\thours = parseInt(parts[0], 10);\n\t\t\tminutes = parseInt(parts[1], 10);\n\t\t\tseconds = parseInt(parts[2], 10);\n\t\t\tframes = parseInt(parts[3], 10);\n\t\t\tbreak;\n\t}\n\n\tif (isDropFrame(fps)) {\n\t\ttotalMinutes = 60 * hours + minutes;\n\t\toutput = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10));\n\t} else {\n\t\toutput = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps;\n\t}\n\n\treturn parseFloat(output.toFixed(3));\n}\n\nfunction calculateTimeFormat(time, options) {\n\tvar fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;\n\n\n\ttime = !time || typeof time !== 'number' || time < 0 ? 0 : time;\n\n\tvar hours = Math.floor(time / 3600) % 24,\n\t    minutes = Math.floor(time / 60) % 60,\n\t    seconds = Math.floor(time % 60),\n\t    frames = Math.floor((time % 1 * fps).toFixed(3)),\n\t    lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']];\n\n\tvar format = options.timeFormat,\n\t    firstTwoPlaces = format[1] === format[0],\n\t    separatorIndex = firstTwoPlaces ? 2 : 1,\n\t    separator = format.length < separatorIndex ? format[separatorIndex] : ':',\n\t    firstChar = format[0],\n\t    required = false;\n\n\tfor (var i = 0, len = lis.length; i < len; i++) {\n\t\tif (~format.indexOf(lis[i][1])) {\n\t\t\trequired = true;\n\t\t} else if (required) {\n\t\t\tvar hasNextValue = false;\n\t\t\tfor (var j = i; j < len; j++) {\n\t\t\t\tif (lis[j][0] > 0) {\n\t\t\t\t\thasNextValue = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!hasNextValue) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!firstTwoPlaces) {\n\t\t\t\tformat = firstChar + format;\n\t\t\t}\n\t\t\tformat = lis[i][1] + separator + format;\n\t\t\tif (firstTwoPlaces) {\n\t\t\t\tformat = lis[i][1] + format;\n\t\t\t}\n\t\t\tfirstChar = lis[i][1];\n\t\t}\n\t}\n\n\toptions.timeFormat = format;\n}\n\nfunction convertSMPTEtoSeconds(SMPTE) {\n\n\tif (typeof SMPTE !== 'string') {\n\t\tthrow new TypeError('Argument must be a string value');\n\t}\n\n\tSMPTE = SMPTE.replace(',', '.');\n\n\tvar decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0;\n\n\tvar secs = 0,\n\t    multiplier = 1;\n\n\tSMPTE = SMPTE.split(':').reverse();\n\n\tfor (var i = 0, total = SMPTE.length; i < total; i++) {\n\t\tmultiplier = 1;\n\t\tif (i > 0) {\n\t\t\tmultiplier = Math.pow(60, i);\n\t\t}\n\t\tsecs += Number(SMPTE[i]) * multiplier;\n\t}\n\treturn Number(secs.toFixed(decimalLen));\n}\n\n_mejs2.default.Utils = _mejs2.default.Utils || {};\n_mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode;\n_mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds;\n_mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat;\n_mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds;\n\n},{\"7\":7}]},{},[29,6,5,15,23,20,19,21,22,24,16,18,17,9,10,11,12,13,14]);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91), __webpack_require__(1298).setImmediate))\n\n/***/ }),\n/* 1298 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== \"undefined\" && global) ||\n            (typeof self !== \"undefined\" && self) ||\n            window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n  if (timeout) {\n    timeout.close();\n  }\n};\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// setimmediate attaches itself to the global object\n__webpack_require__(1299);\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto.  Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n                       (typeof global !== \"undefined\" && global.setImmediate) ||\n                       (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n                         (typeof global !== \"undefined\" && global.clearImmediate) ||\n                         (this && this.clearImmediate);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91)))\n\n/***/ }),\n/* 1299 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {\n    \"use strict\";\n\n    if (global.setImmediate) {\n        return;\n    }\n\n    var nextHandle = 1; // Spec says greater than zero\n    var tasksByHandle = {};\n    var currentlyRunningATask = false;\n    var doc = global.document;\n    var registerImmediate;\n\n    function setImmediate(callback) {\n      // Callback can either be a function or a string\n      if (typeof callback !== \"function\") {\n        callback = new Function(\"\" + callback);\n      }\n      // Copy function arguments\n      var args = new Array(arguments.length - 1);\n      for (var i = 0; i < args.length; i++) {\n          args[i] = arguments[i + 1];\n      }\n      // Store and register the task\n      var task = { callback: callback, args: args };\n      tasksByHandle[nextHandle] = task;\n      registerImmediate(nextHandle);\n      return nextHandle++;\n    }\n\n    function clearImmediate(handle) {\n        delete tasksByHandle[handle];\n    }\n\n    function run(task) {\n        var callback = task.callback;\n        var args = task.args;\n        switch (args.length) {\n        case 0:\n            callback();\n            break;\n        case 1:\n            callback(args[0]);\n            break;\n        case 2:\n            callback(args[0], args[1]);\n            break;\n        case 3:\n            callback(args[0], args[1], args[2]);\n            break;\n        default:\n            callback.apply(undefined, args);\n            break;\n        }\n    }\n\n    function runIfPresent(handle) {\n        // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n        // So if we're currently running a task, we'll need to delay this invocation.\n        if (currentlyRunningATask) {\n            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n            // \"too much recursion\" error.\n            setTimeout(runIfPresent, 0, handle);\n        } else {\n            var task = tasksByHandle[handle];\n            if (task) {\n                currentlyRunningATask = true;\n                try {\n                    run(task);\n                } finally {\n                    clearImmediate(handle);\n                    currentlyRunningATask = false;\n                }\n            }\n        }\n    }\n\n    function installNextTickImplementation() {\n        registerImmediate = function(handle) {\n            process.nextTick(function () { runIfPresent(handle); });\n        };\n    }\n\n    function canUsePostMessage() {\n        // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n        // where `global.postMessage` means something completely different and can't be used for this purpose.\n        if (global.postMessage && !global.importScripts) {\n            var postMessageIsAsynchronous = true;\n            var oldOnMessage = global.onmessage;\n            global.onmessage = function() {\n                postMessageIsAsynchronous = false;\n            };\n            global.postMessage(\"\", \"*\");\n            global.onmessage = oldOnMessage;\n            return postMessageIsAsynchronous;\n        }\n    }\n\n    function installPostMessageImplementation() {\n        // Installs an event handler on `global` for the `message` event: see\n        // * https://developer.mozilla.org/en/DOM/window.postMessage\n        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n        var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n        var onGlobalMessage = function(event) {\n            if (event.source === global &&\n                typeof event.data === \"string\" &&\n                event.data.indexOf(messagePrefix) === 0) {\n                runIfPresent(+event.data.slice(messagePrefix.length));\n            }\n        };\n\n        if (global.addEventListener) {\n            global.addEventListener(\"message\", onGlobalMessage, false);\n        } else {\n            global.attachEvent(\"onmessage\", onGlobalMessage);\n        }\n\n        registerImmediate = function(handle) {\n            global.postMessage(messagePrefix + handle, \"*\");\n        };\n    }\n\n    function installMessageChannelImplementation() {\n        var channel = new MessageChannel();\n        channel.port1.onmessage = function(event) {\n            var handle = event.data;\n            runIfPresent(handle);\n        };\n\n        registerImmediate = function(handle) {\n            channel.port2.postMessage(handle);\n        };\n    }\n\n    function installReadyStateChangeImplementation() {\n        var html = doc.documentElement;\n        registerImmediate = function(handle) {\n            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n            var script = doc.createElement(\"script\");\n            script.onreadystatechange = function () {\n                runIfPresent(handle);\n                script.onreadystatechange = null;\n                html.removeChild(script);\n                script = null;\n            };\n            html.appendChild(script);\n        };\n    }\n\n    function installSetTimeoutImplementation() {\n        registerImmediate = function(handle) {\n            setTimeout(runIfPresent, 0, handle);\n        };\n    }\n\n    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n    // Don't get fooled by e.g. browserify environments.\n    if ({}.toString.call(global.process) === \"[object process]\") {\n        // For Node.js before 0.9\n        installNextTickImplementation();\n\n    } else if (canUsePostMessage()) {\n        // For non-IE10 modern browsers\n        installPostMessageImplementation();\n\n    } else if (global.MessageChannel) {\n        // For web workers, where supported\n        installMessageChannelImplementation();\n\n    } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n        // For IE 6–8\n        installReadyStateChangeImplementation();\n\n    } else {\n        // For older browsers\n        installSetTimeoutImplementation();\n    }\n\n    attachTo.setImmediate = setImmediate;\n    attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91), __webpack_require__(434)))\n\n/***/ }),\n/* 1300 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar api = __webpack_require__(185);\n            var content = __webpack_require__(1301);\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.i, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n/***/ }),\n/* 1301 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(186);\nvar ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(435);\nvar ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(1302);\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\nexports.push([module.i, \".mejs__offscreen {\\n  border: 0;\\n  clip: rect(1px, 1px, 1px, 1px);\\n  -webkit-clip-path: inset(50%);\\n  clip-path: inset(50%);\\n  height: 1px;\\n  margin: -1px;\\n  overflow: hidden;\\n  padding: 0;\\n  position: absolute;\\n  width: 1px;\\n  word-wrap: normal;\\n}\\n.mejs__container {\\n  background: #000;\\n  font-family: Helvetica,Arial,serif;\\n  position: relative;\\n  text-align: left;\\n  text-indent: 0;\\n  vertical-align: top;\\n}\\n.mejs__container,\\n.mejs__container * {\\n  box-sizing: border-box;\\n}\\n.mejs__container video::-webkit-media-controls,\\n.mejs__container video::-webkit-media-controls-panel,\\n.mejs__container video::-webkit-media-controls-panel-container,\\n.mejs__container video::-webkit-media-controls-start-playback-button {\\n  -webkit-appearance: none;\\n  display: none !important;\\n}\\n.mejs__fill-container,\\n.mejs__fill-container .mejs__container {\\n  height: 100%;\\n  width: 100%;\\n}\\n.mejs__fill-container {\\n  background: transparent;\\n  margin: 0 auto;\\n  overflow: hidden;\\n  position: relative;\\n}\\n.mejs__container:focus {\\n  outline: none;\\n}\\n.mejs__iframe-overlay {\\n  height: 100%;\\n  position: absolute;\\n  width: 100%;\\n}\\n.mejs__embed,\\n.mejs__embed body {\\n  background: #000;\\n  height: 100%;\\n  margin: 0;\\n  overflow: hidden;\\n  padding: 0;\\n  width: 100%;\\n}\\n.mejs__fullscreen {\\n  overflow: hidden !important;\\n}\\n.mejs__container-fullscreen {\\n  bottom: 0;\\n  left: 0;\\n  overflow: hidden;\\n  position: fixed;\\n  right: 0;\\n  top: 0;\\n  z-index: 1000;\\n}\\n.mejs__container-fullscreen .mejs__mediaelement,\\n.mejs__container-fullscreen video {\\n  height: 100%!important;\\n  width: 100% !important;\\n}\\n.mejs__background,\\n.mejs__mediaelement {\\n  left: 0;\\n  position: absolute;\\n  top: 0;\\n}\\n.mejs__mediaelement {\\n  height: 100%;\\n  width: 100%;\\n  z-index: 0;\\n}\\n.mejs__poster {\\n  background-position: 50% 50%;\\n  background-repeat: no-repeat;\\n  background-size: cover;\\n  left: 0;\\n  position: absolute;\\n  top: 0;\\n  z-index: 1;\\n}\\n:root .mejs__poster-img {\\n  display: none;\\n}\\n.mejs__poster-img {\\n  border: 0;\\n  padding: 0;\\n}\\n.mejs__overlay {\\n  -webkit-box-align: center;\\n  -webkit-align-items: center;\\n  -ms-flex-align: center;\\n  align-items: center;\\n  display: -webkit-box;\\n  display: -webkit-flex;\\n  display: -ms-flexbox;\\n  display: flex;\\n  -webkit-box-pack: center;\\n  -webkit-justify-content: center;\\n  -ms-flex-pack: center;\\n  justify-content: center;\\n  left: 0;\\n  position: absolute;\\n  top: 0;\\n}\\n.mejs__layer {\\n  z-index: 1;\\n}\\n.mejs__overlay-play {\\n  cursor: pointer;\\n}\\n.mejs__overlay-button {\\n  background: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") no-repeat;\\n  background-position: 0 -39px;\\n  height: 80px;\\n  width: 80px;\\n}\\n.mejs__overlay:hover > .mejs__overlay-button {\\n  background-position: -80px -39px;\\n}\\n.mejs__overlay-loading {\\n  height: 80px;\\n  width: 80px;\\n}\\n.mejs__overlay-loading-bg-img {\\n  -webkit-animation: a 1s linear infinite;\\n  animation: a 1s linear infinite;\\n  background: transparent url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") -160px -40px no-repeat;\\n  display: block;\\n  height: 80px;\\n  width: 80px;\\n  z-index: 1;\\n}\\n@-webkit-keyframes a {\\n  to {\\n    -webkit-transform: rotate(1turn);\\n    transform: rotate(1turn);\\n  }\\n}\\n@keyframes a {\\n  to {\\n    -webkit-transform: rotate(1turn);\\n    transform: rotate(1turn);\\n  }\\n}\\n.mejs__controls {\\n  bottom: 0;\\n  display: -webkit-box;\\n  display: -webkit-flex;\\n  display: -ms-flexbox;\\n  display: flex;\\n  height: 40px;\\n  left: 0;\\n  list-style-type: none;\\n  margin: 0;\\n  padding: 0 10px;\\n  position: absolute;\\n  width: 100%;\\n  z-index: 3;\\n}\\n.mejs__controls:not([style*=\\\"display: none\\\"]) {\\n  background: rgba(255, 0, 0, 0.7);\\n  background: -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.35));\\n  background: linear-gradient(transparent, rgba(0, 0, 0, 0.35));\\n}\\n.mejs__button,\\n.mejs__time,\\n.mejs__time-rail {\\n  font-size: 10px;\\n  height: 40px;\\n  line-height: 10px;\\n  margin: 0;\\n  width: 32px;\\n}\\n.mejs__button > button {\\n  background: transparent url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n  border: 0;\\n  cursor: pointer;\\n  display: block;\\n  font-size: 0;\\n  height: 20px;\\n  line-height: 0;\\n  margin: 10px 6px;\\n  overflow: hidden;\\n  padding: 0;\\n  position: absolute;\\n  text-decoration: none;\\n  width: 20px;\\n}\\n.mejs__button > button:focus {\\n  outline: 1px dotted #999;\\n}\\n.mejs__container-keyboard-inactive [role=slider],\\n.mejs__container-keyboard-inactive [role=slider]:focus,\\n.mejs__container-keyboard-inactive a,\\n.mejs__container-keyboard-inactive a:focus,\\n.mejs__container-keyboard-inactive button,\\n.mejs__container-keyboard-inactive button:focus {\\n  outline: 0;\\n}\\n.mejs__time {\\n  box-sizing: content-box;\\n  color: #fff;\\n  font-size: 11px;\\n  font-weight: 700;\\n  height: 24px;\\n  overflow: hidden;\\n  padding: 16px 6px 0;\\n  text-align: center;\\n  width: auto;\\n}\\n.mejs__play > button {\\n  background-position: 0 0;\\n}\\n.mejs__pause > button {\\n  background-position: -20px 0;\\n}\\n.mejs__replay > button {\\n  background-position: -160px 0;\\n}\\n.mejs__time-rail {\\n  direction: ltr;\\n  -webkit-box-flex: 1;\\n  -webkit-flex-grow: 1;\\n  -ms-flex-positive: 1;\\n  flex-grow: 1;\\n  height: 40px;\\n  margin: 0 10px;\\n  padding-top: 10px;\\n  position: relative;\\n}\\n.mejs__time-buffering,\\n.mejs__time-current,\\n.mejs__time-float,\\n.mejs__time-float-corner,\\n.mejs__time-float-current,\\n.mejs__time-hovered,\\n.mejs__time-loaded,\\n.mejs__time-marker,\\n.mejs__time-total {\\n  border-radius: 2px;\\n  cursor: pointer;\\n  display: block;\\n  height: 10px;\\n  position: absolute;\\n}\\n.mejs__time-total {\\n  background: rgba(255, 255, 255, 0.3);\\n  margin: 5px 0 0;\\n  width: 100%;\\n}\\n.mejs__time-buffering {\\n  -webkit-animation: b 2s linear infinite;\\n  animation: b 2s linear infinite;\\n  background: -webkit-linear-gradient(135deg, rgba(255, 255, 255, 0.4) 25%, transparent 0, transparent 50%, rgba(255, 255, 255, 0.4) 0, rgba(255, 255, 255, 0.4) 75%, transparent 0, transparent);\\n  background: linear-gradient(-45deg, rgba(255, 255, 255, 0.4) 25%, transparent 0, transparent 50%, rgba(255, 255, 255, 0.4) 0, rgba(255, 255, 255, 0.4) 75%, transparent 0, transparent);\\n  background-size: 15px 15px;\\n  width: 100%;\\n}\\n@-webkit-keyframes b {\\n  0% {\\n    background-position: 0 0;\\n  }\\n  to {\\n    background-position: 30px 0;\\n  }\\n}\\n@keyframes b {\\n  0% {\\n    background-position: 0 0;\\n  }\\n  to {\\n    background-position: 30px 0;\\n  }\\n}\\n.mejs__time-loaded {\\n  background: rgba(255, 255, 255, 0.3);\\n}\\n.mejs__time-current,\\n.mejs__time-handle-content {\\n  background: rgba(255, 255, 255, 0.9);\\n}\\n.mejs__time-hovered {\\n  background: rgba(255, 255, 255, 0.5);\\n  z-index: 10;\\n}\\n.mejs__time-hovered.negative {\\n  background: rgba(0, 0, 0, 0.2);\\n}\\n.mejs__time-buffering,\\n.mejs__time-current,\\n.mejs__time-hovered,\\n.mejs__time-loaded {\\n  left: 0;\\n  -webkit-transform: scaleX(0);\\n  -ms-transform: scaleX(0);\\n  transform: scaleX(0);\\n  -webkit-transform-origin: 0 0;\\n  -ms-transform-origin: 0 0;\\n  transform-origin: 0 0;\\n  -webkit-transition: all 0.15s ease-in;\\n  transition: all 0.15s ease-in;\\n  width: 100%;\\n}\\n.mejs__time-buffering {\\n  -webkit-transform: scaleX(1);\\n  -ms-transform: scaleX(1);\\n  transform: scaleX(1);\\n}\\n.mejs__time-hovered {\\n  -webkit-transition: height 0.1s cubic-bezier(0.44, 0, 1, 1);\\n  transition: height 0.1s cubic-bezier(0.44, 0, 1, 1);\\n}\\n.mejs__time-hovered.no-hover {\\n  -webkit-transform: scaleX(0) !important;\\n  -ms-transform: scaleX(0) !important;\\n  transform: scaleX(0) !important;\\n}\\n.mejs__time-handle,\\n.mejs__time-handle-content {\\n  border: 4px solid transparent;\\n  cursor: pointer;\\n  left: 0;\\n  position: absolute;\\n  -webkit-transform: translateX(0);\\n  -ms-transform: translateX(0);\\n  transform: translateX(0);\\n  z-index: 11;\\n}\\n.mejs__time-handle-content {\\n  border: 4px solid rgba(255, 255, 255, 0.9);\\n  border-radius: 50%;\\n  height: 10px;\\n  left: -7px;\\n  top: -4px;\\n  -webkit-transform: scale(0);\\n  -ms-transform: scale(0);\\n  transform: scale(0);\\n  width: 10px;\\n}\\n.mejs__time-rail .mejs__time-handle-content:active,\\n.mejs__time-rail .mejs__time-handle-content:focus,\\n.mejs__time-rail:hover .mejs__time-handle-content {\\n  -webkit-transform: scale(1);\\n  -ms-transform: scale(1);\\n  transform: scale(1);\\n}\\n.mejs__time-float {\\n  background: #eee;\\n  border: 1px solid #333;\\n  bottom: 100%;\\n  color: #111;\\n  display: none;\\n  height: 17px;\\n  margin-bottom: 9px;\\n  position: absolute;\\n  text-align: center;\\n  -webkit-transform: translateX(-50%);\\n  -ms-transform: translateX(-50%);\\n  transform: translateX(-50%);\\n  width: 36px;\\n}\\n.mejs__time-float-current {\\n  display: block;\\n  left: 0;\\n  margin: 2px;\\n  text-align: center;\\n  width: 30px;\\n}\\n.mejs__time-float-corner {\\n  border: 5px solid #eee;\\n  border-color: #eee transparent transparent;\\n  border-radius: 0;\\n  display: block;\\n  height: 0;\\n  left: 50%;\\n  line-height: 0;\\n  position: absolute;\\n  top: 100%;\\n  -webkit-transform: translateX(-50%);\\n  -ms-transform: translateX(-50%);\\n  transform: translateX(-50%);\\n  width: 0;\\n}\\n.mejs__long-video .mejs__time-float {\\n  margin-left: -23px;\\n  width: 64px;\\n}\\n.mejs__long-video .mejs__time-float-current {\\n  width: 60px;\\n}\\n.mejs__broadcast {\\n  color: #fff;\\n  height: 10px;\\n  position: absolute;\\n  top: 15px;\\n  width: 100%;\\n}\\n.mejs__fullscreen-button > button {\\n  background-position: -80px 0;\\n}\\n.mejs__unfullscreen > button {\\n  background-position: -100px 0;\\n}\\n.mejs__mute > button {\\n  background-position: -60px 0;\\n}\\n.mejs__unmute > button {\\n  background-position: -40px 0;\\n}\\n.mejs__volume-button {\\n  position: relative;\\n}\\n.mejs__volume-button > .mejs__volume-slider {\\n  -webkit-backface-visibility: hidden;\\n  background: rgba(50, 50, 50, 0.7);\\n  border-radius: 0;\\n  bottom: 100%;\\n  display: none;\\n  height: 115px;\\n  left: 50%;\\n  margin: 0;\\n  position: absolute;\\n  -webkit-transform: translateX(-50%);\\n  -ms-transform: translateX(-50%);\\n  transform: translateX(-50%);\\n  width: 25px;\\n  z-index: 1;\\n}\\n.mejs__volume-button:hover {\\n  border-radius: 0 0 4px 4px;\\n}\\n.mejs__volume-total {\\n  background: rgba(255, 255, 255, 0.5);\\n  height: 100px;\\n  left: 50%;\\n  margin: 0;\\n  position: absolute;\\n  top: 8px;\\n  -webkit-transform: translateX(-50%);\\n  -ms-transform: translateX(-50%);\\n  transform: translateX(-50%);\\n  width: 2px;\\n}\\n.mejs__volume-current {\\n  left: 0;\\n  margin: 0;\\n  width: 100%;\\n}\\n.mejs__volume-current,\\n.mejs__volume-handle {\\n  background: rgba(255, 255, 255, 0.9);\\n  position: absolute;\\n}\\n.mejs__volume-handle {\\n  border-radius: 1px;\\n  cursor: ns-resize;\\n  height: 6px;\\n  left: 50%;\\n  -webkit-transform: translateX(-50%);\\n  -ms-transform: translateX(-50%);\\n  transform: translateX(-50%);\\n  width: 16px;\\n}\\n.mejs__horizontal-volume-slider {\\n  display: block;\\n  height: 36px;\\n  position: relative;\\n  vertical-align: middle;\\n  width: 56px;\\n}\\n.mejs__horizontal-volume-total {\\n  background: rgba(50, 50, 50, 0.8);\\n  height: 8px;\\n  top: 16px;\\n  width: 50px;\\n}\\n.mejs__horizontal-volume-current,\\n.mejs__horizontal-volume-total {\\n  border-radius: 2px;\\n  font-size: 1px;\\n  left: 0;\\n  margin: 0;\\n  padding: 0;\\n  position: absolute;\\n}\\n.mejs__horizontal-volume-current {\\n  background: rgba(255, 255, 255, 0.8);\\n  height: 100%;\\n  top: 0;\\n  width: 100%;\\n}\\n.mejs__horizontal-volume-handle {\\n  display: none;\\n}\\n.mejs__captions-button,\\n.mejs__chapters-button {\\n  position: relative;\\n}\\n.mejs__captions-button > button {\\n  background-position: -140px 0;\\n}\\n.mejs__chapters-button > button {\\n  background-position: -180px 0;\\n}\\n.mejs__captions-button > .mejs__captions-selector,\\n.mejs__chapters-button > .mejs__chapters-selector {\\n  background: rgba(50, 50, 50, 0.7);\\n  border: 1px solid transparent;\\n  border-radius: 0;\\n  bottom: 100%;\\n  margin-right: -43px;\\n  overflow: hidden;\\n  padding: 0;\\n  position: absolute;\\n  right: 50%;\\n  visibility: visible;\\n  width: 86px;\\n}\\n.mejs__chapters-button > .mejs__chapters-selector {\\n  margin-right: -55px;\\n  width: 110px;\\n}\\n.mejs__captions-selector-list,\\n.mejs__chapters-selector-list {\\n  list-style-type: none!important;\\n  margin: 0;\\n  overflow: hidden;\\n  padding: 0;\\n}\\n.mejs__captions-selector-list-item,\\n.mejs__chapters-selector-list-item {\\n  color: #fff;\\n  cursor: pointer;\\n  display: block;\\n  list-style-type: none!important;\\n  margin: 0 0 6px;\\n  overflow: hidden;\\n  padding: 0;\\n}\\n.mejs__captions-selector-list-item:hover,\\n.mejs__chapters-selector-list-item:hover {\\n  background-color: #c8c8c8!important;\\n  background-color: rgba(255, 255, 255, 0.4) !important;\\n}\\n.mejs__captions-selector-input,\\n.mejs__chapters-selector-input {\\n  clear: both;\\n  float: left;\\n  left: -1000px;\\n  margin: 3px 3px 0 5px;\\n  position: absolute;\\n}\\n.mejs__captions-selector-label,\\n.mejs__chapters-selector-label {\\n  cursor: pointer;\\n  float: left;\\n  font-size: 10px;\\n  line-height: 15px;\\n  padding: 4px 10px 0;\\n  width: 100%;\\n}\\n.mejs__captions-selected,\\n.mejs__chapters-selected {\\n  color: #21f8f8;\\n}\\n.mejs__captions-translations {\\n  font-size: 10px;\\n  margin: 0 0 5px;\\n}\\n.mejs__captions-layer {\\n  bottom: 0;\\n  color: #fff;\\n  font-size: 16px;\\n  left: 0;\\n  line-height: 20px;\\n  position: absolute;\\n  text-align: center;\\n}\\n.mejs__captions-layer a {\\n  color: #fff;\\n  text-decoration: underline;\\n}\\n.mejs__captions-layer[lang=ar] {\\n  font-size: 20px;\\n  font-weight: 400;\\n}\\n.mejs__captions-position {\\n  bottom: 15px;\\n  left: 0;\\n  position: absolute;\\n  width: 100%;\\n}\\n.mejs__captions-position-hover {\\n  bottom: 35px;\\n}\\n.mejs__captions-text,\\n.mejs__captions-text * {\\n  background: rgba(20, 20, 20, 0.5);\\n  box-shadow: 5px 0 0 rgba(20, 20, 20, 0.5), -5px 0 0 rgba(20, 20, 20, 0.5);\\n  padding: 0;\\n  white-space: pre-wrap;\\n}\\n.mejs__container.mejs__hide-cues video::-webkit-media-text-track-container {\\n  display: none;\\n}\\n.mejs__overlay-error {\\n  position: relative;\\n}\\n.mejs__overlay-error > img {\\n  left: 0;\\n  max-width: 100%;\\n  position: absolute;\\n  top: 0;\\n  z-index: -1;\\n}\\n.mejs__cannotplay,\\n.mejs__cannotplay a {\\n  color: #fff;\\n  font-size: 0.8em;\\n}\\n.mejs__cannotplay {\\n  position: relative;\\n}\\n.mejs__cannotplay a,\\n.mejs__cannotplay p {\\n  display: inline-block;\\n  padding: 0 15px;\\n  width: 100%;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n/***/ }),\n/* 1302 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MDAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgNDAwIDEyMCI+PHN0eWxlPi5zdDB7ZmlsbDojRkZGRkZGO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHh9IC5zdDF7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoxLjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7fSAuc3Qye2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MjtzdHJva2UtbGluZWNhcDpyb3VuZDt9IC5zdDN7ZmlsbDpub25lO3N0cm9rZTojRkZGRkZGO30gLnN0NHtmaWxsOiMyMzFGMjA7fSAuc3Q1e29wYWNpdHk6MC43NTtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjU7ZW5hYmxlLWJhY2tncm91bmQ6bmV3O30gLnN0NntmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjU7fSAuc3Q3e29wYWNpdHk6MC40O2ZpbGw6I0ZGRkZGRjtlbmFibGUtYmFja2dyb3VuZDpuZXc7fSAuc3Q4e29wYWNpdHk6MC42O2ZpbGw6I0ZGRkZGRjtlbmFibGUtYmFja2dyb3VuZDpuZXc7fSAuc3Q5e29wYWNpdHk6MC44O2ZpbGw6I0ZGRkZGRjtlbmFibGUtYmFja2dyb3VuZDpuZXc7fSAuc3QxMHtvcGFjaXR5OjAuOTtmaWxsOiNGRkZGRkY7ZW5hYmxlLWJhY2tncm91bmQ6bmV3O30gLnN0MTF7b3BhY2l0eTowLjM7ZmlsbDojRkZGRkZGO2VuYWJsZS1iYWNrZ3JvdW5kOm5ldzt9IC5zdDEye29wYWNpdHk6MC41O2ZpbGw6I0ZGRkZGRjtlbmFibGUtYmFja2dyb3VuZDpuZXc7fSAuc3QxM3tvcGFjaXR5OjAuNztmaWxsOiNGRkZGRkY7ZW5hYmxlLWJhY2tncm91bmQ6bmV3O308L3N0eWxlPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNi41IDguNWMuMy4xLjQuNS4yLjgtLjEuMS0uMS4yLS4yLjJsLTExLjQgN2MtLjUuMy0uOC4xLS44LS41VjJjMC0uNS40LS44LjgtLjVsMTEuNCA3eiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNCAxaDIuMmMuNiAwIDEgLjQgMSAxdjE0YzAgLjYtLjQgMS0xIDFIMjRjLS42IDAtMS0uNC0xLTFWMmMwLS41LjQtMSAxLTF6bTkuOCAwSDM2Yy42IDAgMSAuNCAxIDF2MTRjMCAuNi0uNCAxLTEgMWgtMi4yYy0uNiAwLTEtLjQtMS0xVjJjMC0uNS40LTEgMS0xeiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik04MSAxLjRjMC0uNi40LTEgMS0xaDUuNGMuNiAwIC43LjMuMy43bC02IDZjLS40LjQtLjcuMy0uNy0uM1YxLjR6bTAgMTUuOGMwIC42LjQgMSAxIDFoNS40Yy42IDAgLjctLjMuMy0uN2wtNi02Yy0uNC0uNC0uNy0uMy0uNy4zdjUuNHpNOTguOCAxLjRjMC0uNi0uNC0xLTEtMWgtNS40Yy0uNiAwLS43LjMtLjMuN2w2IDZjLjQuNC43LjMuNy0uM1YxLjR6bTAgMTUuOGMwIC42LS40IDEtMSAxaC01LjRjLS42IDAtLjctLjMtLjMtLjdsNi02Yy40LS40LjctLjMuNy4zdjUuNHoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTEyLjcgNWMwIC42LjQgMSAxIDFoNC4xYy42IDAgLjctLjMuMy0uN0wxMTMuNC42Yy0uNC0uNC0uNy0uMy0uNy4zVjV6bS03LjEgMWMuNiAwIDEtLjQgMS0xVi45YzAtLjYtLjMtLjctLjctLjNsLTQuNyA0LjdjLS40LjQtLjMuNy4zLjdoNC4xem0xIDcuMWMwLS42LS40LTEtMS0xaC00LjFjLS42IDAtLjcuMy0uMy43bDQuNyA0LjdjLjQuNC43LjMuNy0uM3YtNC4xem03LjEtMWMtLjYgMC0xIC40LTEgMXY0LjFjMCAuNS4zLjcuNy4zbDQuNy00LjdjLjQtLjQuMy0uNy0uMy0uN2gtNC4xeiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik02NyA1LjhjLS41LjQtMS4yLjYtMS44LjZINjJjLS42IDAtMSAuNC0xIDF2NS43YzAgLjYuNCAxIDEgMWg0LjJjLjMuMi41LjQuOC42bDMuNSAyLjZjLjQuMy44LjEuOC0uNFYzLjVjMC0uNS0uNC0uNy0uOC0uNEw2NyA1Ljh6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTczLjkgMi41czMuOS0uOCAzLjkgNy43LTMuOSA3LjgtMy45IDcuOCIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik03Mi42IDYuNHMyLjYtLjQgMi42IDMuOC0yLjYgMy45LTIuNiAzLjkiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNDcgNS44Yy0uNS40LTEuMi42LTEuOC42SDQyYy0uNiAwLTEgLjQtMSAxdjUuN2MwIC42LjQgMSAxIDFoNC4yYy4zLjIuNS40LjguNmwzLjUgMi42Yy40LjMuOC4xLjgtLjRWMy41YzAtLjUtLjQtLjctLjgtLjRMNDcgNS44eiIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik01Mi44IDdsNS40IDUuNG0tNS40IDBMNTguMiA3Ii8+PHBhdGggY2xhc3M9InN0MyIgZD0iTTEyOC43IDguNmMtNi4yLTQuMi02LjUgNy44IDAgMy45bTYuNS0zLjljLTYuMi00LjItNi41IDcuOCAwIDMuOSIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMjIuMiAzLjRoMTUuN3YxMy4xaC0xNS43VjMuNHpNMTIwLjggMnYxNS43aDE4LjNWMmgtMTguM3oiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTQzLjIgM2gxNGMxLjEgMCAyIC45IDIgMnYxMGMwIDEuMS0uOSAyLTIgMmgtMTRjLTEuMSAwLTItLjktMi0yVjVjMC0xLjEuOS0yIDItMnoiLz48cGF0aCBjbGFzcz0ic3Q0IiBkPSJNMTQ2LjQgMTMuOGMtLjggMC0xLjYtLjQtMi4xLTEtMS4xLTEuNC0xLTMuNC4xLTQuOC41LS42IDItMS43IDQuNi4ybC0uNi44Yy0xLjQtMS0yLjYtMS4xLTMuMy0uMy0uOCAxLS44IDIuNC0uMSAzLjUuNy45IDEuOS44IDMuNC0uMWwuNS45Yy0uNy41LTEuNi43LTIuNS44em03LjUgMGMtLjggMC0xLjYtLjQtMi4xLTEtMS4xLTEuNC0xLTMuNC4xLTQuOC41LS42IDItMS43IDQuNi4ybC0uNS44Yy0xLjQtMS0yLjYtMS4xLTMuMy0uMy0uOCAxLS44IDIuNC0uMSAzLjUuNy45IDEuOS44IDMuNC0uMWwuNS45Yy0uOC41LTEuNy43LTIuNi44eiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik02MC4zIDc3Yy42LjIuOC44LjYgMS40LS4xLjMtLjMuNS0uNi42TDMwIDk2LjVjLTEgLjYtMS43LjEtMS43LTF2LTM1YzAtMS4xLjgtMS41IDEuNy0xTDYwLjMgNzd6Ii8+PHBhdGggY2xhc3M9InN0NSIgZD0iTTIuNSA3OWMwLTIwLjcgMTYuOC0zNy41IDM3LjUtMzcuNVM3Ny41IDU4LjMgNzcuNSA3OSA2MC43IDExNi41IDQwIDExNi41IDIuNSA5OS43IDIuNSA3OXoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTQwLjMgNzdjLjYuMi44LjguNiAxLjQtLjEuMy0uMy41LS42LjZMMTEwIDk2LjVjLTEgLjYtMS43LjEtMS43LTF2LTM1YzAtMS4xLjgtMS41IDEuNy0xTDE0MC4zIDc3eiIvPjxwYXRoIGNsYXNzPSJzdDYiIGQ9Ik04Mi41IDc5YzAtMjAuNyAxNi44LTM3LjUgMzcuNS0zNy41czM3LjUgMTYuOCAzNy41IDM3LjUtMTYuOCAzNy41LTM3LjUgMzcuNVM4Mi41IDk5LjcgODIuNSA3OXoiLz48Y2lyY2xlIGNsYXNzPSJzdDAiIGN4PSIyMDEuOSIgY3k9IjQ3LjEiIHI9IjguMSIvPjxjaXJjbGUgY2xhc3M9InN0NyIgY3g9IjIzMy45IiBjeT0iNzkiIHI9IjUiLz48Y2lyY2xlIGNsYXNzPSJzdDgiIGN4PSIyMDEuOSIgY3k9IjExMC45IiByPSI2Ii8+PGNpcmNsZSBjbGFzcz0ic3Q5IiBjeD0iMTcwLjEiIGN5PSI3OSIgcj0iNyIvPjxjaXJjbGUgY2xhc3M9InN0MTAiIGN4PSIxNzguMiIgY3k9IjU2LjMiIHI9IjcuNSIvPjxjaXJjbGUgY2xhc3M9InN0MTEiIGN4PSIyMjYuMyIgY3k9IjU2LjEiIHI9IjQuNSIvPjxjaXJjbGUgY2xhc3M9InN0MTIiIGN4PSIyMjUuOCIgY3k9IjEwMi44IiByPSI1LjUiLz48Y2lyY2xlIGNsYXNzPSJzdDEzIiBjeD0iMTc4LjIiIGN5PSIxMDIuOCIgcj0iNi41Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE3OCA5LjRjMCAuNC0uNC43LS45LjctLjEgMC0uMiAwLS4yLS4xTDE3MiA4LjJjLS41LS4yLS42LS42LS4xLS44bDYuMi0zLjZjLjUtLjMuOC0uMS43LjVsLS44IDUuMXoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTY5LjQgMTUuOWMtMSAwLTItLjItMi45LS43LTItMS0zLjItMy0zLjItNS4yLjEtMy40IDIuOS02IDYuMy02IDIuNS4xIDQuOCAxLjcgNS42IDQuMWwuMS0uMSAyLjEgMS4xYy0uNi00LjQtNC43LTcuNS05LjEtNi45LTMuOS42LTYuOSAzLjktNyA3LjkgMCAyLjkgMS43IDUuNiA0LjMgNyAxLjIuNiAyLjUuOSAzLjggMSAyLjYgMCA1LTEuMiA2LjYtMy4zbC0xLjgtLjljLTEuMiAxLjItMyAyLTQuOCAyeiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xODMuNCAzLjJjLjggMCAxLjUuNyAxLjUgMS41cy0uNyAxLjUtMS41IDEuNS0xLjUtLjctMS41LTEuNWMwLS45LjctMS41IDEuNS0xLjV6bTUuMSAwaDguNWMuOSAwIDEuNS43IDEuNSAxLjVzLS43IDEuNS0xLjUgMS41aC04LjVjLS45IDAtMS41LS43LTEuNS0xLjUtLjEtLjkuNi0xLjUgMS41LTEuNXptLTUuMSA1Yy44IDAgMS41LjcgMS41IDEuNXMtLjcgMS41LTEuNSAxLjUtMS41LS43LTEuNS0xLjVjMC0uOS43LTEuNSAxLjUtMS41em01LjEgMGg4LjVjLjkgMCAxLjUuNyAxLjUgMS41cy0uNyAxLjUtMS41IDEuNWgtOC41Yy0uOSAwLTEuNS0uNy0xLjUtMS41LS4xLS45LjYtMS41IDEuNS0xLjV6bS01LjEgNWMuOCAwIDEuNS43IDEuNSAxLjVzLS43IDEuNS0xLjUgMS41LTEuNS0uNy0xLjUtMS41YzAtLjkuNy0xLjUgMS41LTEuNXptNS4xIDBoOC41Yy45IDAgMS41LjcgMS41IDEuNXMtLjcgMS41LTEuNSAxLjVoLTguNWMtLjkgMC0xLjUtLjctMS41LTEuNS0uMS0uOS42LTEuNSAxLjUtMS41eiIvPjwvc3ZnPgo=\");\n\n/***/ }),\n/* 1303 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar api = __webpack_require__(185);\n            var content = __webpack_require__(1304);\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.i, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n/***/ }),\n/* 1304 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(186);\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".rde-canvas {\\n  position: absolute;\\n  width: 100%;\\n  height: 100%;\\n  top: 0;\\n  left: 0;\\n}\\n.rde-canvas iframe {\\n  pointer-events: none;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n/***/ }),\n/* 1305 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar api = __webpack_require__(185);\n            var content = __webpack_require__(1306);\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.i, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n/***/ }),\n/* 1306 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(186);\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".rde-contextmenu {\\n  position: fixed;\\n  -moz-animation: visibility .3s linear;\\n  -webkit-animation: visibility .3s linear;\\n  animation: visibility .3s linear;\\n  z-index: 600000;\\n}\\n.rde-contextmenu-right {\\n  position: relative;\\n  border-radius: 4px;\\n  background: rgba(0, 0, 0, 0.35);\\n  color: #fff;\\n  font-size: 14px;\\n  padding: 8px;\\n  margin-left: 12px;\\n}\\n.rde-contextmenu-left {\\n  position: relative;\\n  border-radius: 4px;\\n  background: rgba(0, 0, 0, 0.35);\\n  color: #fff;\\n  font-size: 14px;\\n  padding: 8px;\\n}\\n.rde-contextmenu.contextmenu-hidden {\\n  display: none;\\n  top: 0;\\n  left: 0;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n/***/ }),\n/* 1307 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar api = __webpack_require__(185);\n            var content = __webpack_require__(1308);\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.i, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n/***/ }),\n/* 1308 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(186);\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".canvas-container {\\n  outline: none;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n/***/ }),\n/* 1309 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar api = __webpack_require__(185);\n            var content = __webpack_require__(1310);\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.i, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n/***/ }),\n/* 1310 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(186);\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".rde-tooltip {\\n  position: fixed;\\n  -moz-animation: visibility .3s linear;\\n  -webkit-animation: visibility .3s linear;\\n  animation: visibility .3s linear;\\n  z-index: 600000;\\n}\\n.rde-tooltip-right {\\n  position: relative;\\n  border-radius: 4px;\\n  background: rgba(0, 0, 0, 0.35);\\n  color: #fff;\\n  font-size: 14px;\\n  padding: 8px;\\n  margin-left: 12px;\\n}\\n.rde-tooltip-right::after {\\n  content: '';\\n  position: absolute;\\n  top: 50%;\\n  left: 0;\\n  /* To the left of the tooltip */\\n  margin-left: -10px;\\n  margin-top: -5px;\\n  border-width: 5px;\\n  border-style: solid;\\n  border-color: transparent rgba(0, 0, 0, 0.35) transparent transparent;\\n}\\n.rde-tooltip-left {\\n  position: relative;\\n  border-radius: 4px;\\n  background: rgba(0, 0, 0, 0.35);\\n  color: #fff;\\n  font-size: 14px;\\n  padding: 8px;\\n}\\n.rde-tooltip-left::after {\\n  content: '';\\n  position: absolute;\\n  top: 50%;\\n  left: 100%;\\n  /* To the left of the tooltip */\\n  margin-top: -5px;\\n  border-width: 5px;\\n  border-style: solid;\\n  border-color: transparent transparent transparent rgba(0, 0, 0, 0.35);\\n}\\n.rde-tooltip.tooltip-hidden {\\n  display: none;\\n  top: 0;\\n  left: 0;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n/***/ }),\n/* 1311 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\nvar ReactPropTypesSecret = __webpack_require__(1312);\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 1312 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 1313 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(1314), __esModule: true };\n\n/***/ }),\n/* 1314 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(1315);\nmodule.exports = __webpack_require__(109).Object.assign;\n\n\n/***/ }),\n/* 1315 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(158);\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(1317) });\n\n\n/***/ }),\n/* 1316 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n/***/ }),\n/* 1317 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = __webpack_require__(161);\nvar getKeys = __webpack_require__(341);\nvar gOPS = __webpack_require__(444);\nvar pIE = __webpack_require__(344);\nvar toObject = __webpack_require__(269);\nvar IObject = __webpack_require__(634);\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(224)(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n\n\n/***/ }),\n/* 1318 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(188);\nvar toLength = __webpack_require__(635);\nvar toAbsoluteIndex = __webpack_require__(1319);\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n/***/ }),\n/* 1319 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(440);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n/* 1320 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(1321), __esModule: true };\n\n/***/ }),\n/* 1321 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(636);\n__webpack_require__(1326);\nmodule.exports = __webpack_require__(447).f('iterator');\n\n\n/***/ }),\n/* 1322 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(440);\nvar defined = __webpack_require__(439);\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n/***/ }),\n/* 1323 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(445);\nvar descriptor = __webpack_require__(268);\nvar setToStringTag = __webpack_require__(446);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(221)(IteratorPrototype, __webpack_require__(133)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n/* 1324 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(160);\nvar anObject = __webpack_require__(222);\nvar getKeys = __webpack_require__(341);\n\nmodule.exports = __webpack_require__(161) ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n/***/ }),\n/* 1325 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(159).document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n/* 1326 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(1327);\nvar global = __webpack_require__(159);\nvar hide = __webpack_require__(221);\nvar Iterators = __webpack_require__(270);\nvar TO_STRING_TAG = __webpack_require__(133)('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n  'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n  var NAME = DOMIterables[i];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n\n\n/***/ }),\n/* 1327 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(1328);\nvar step = __webpack_require__(1329);\nvar Iterators = __webpack_require__(270);\nvar toIObject = __webpack_require__(188);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(637)(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n/* 1328 */\n/***/ (function(module, exports) {\n\nmodule.exports = function () { /* empty */ };\n\n\n/***/ }),\n/* 1329 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n\n\n/***/ }),\n/* 1330 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(1331), __esModule: true };\n\n/***/ }),\n/* 1331 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(1332);\n__webpack_require__(1337);\n__webpack_require__(1338);\n__webpack_require__(1339);\nmodule.exports = __webpack_require__(109).Symbol;\n\n\n/***/ }),\n/* 1332 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(159);\nvar has = __webpack_require__(187);\nvar DESCRIPTORS = __webpack_require__(161);\nvar $export = __webpack_require__(158);\nvar redefine = __webpack_require__(638);\nvar META = __webpack_require__(1333).KEY;\nvar $fails = __webpack_require__(224);\nvar shared = __webpack_require__(442);\nvar setToStringTag = __webpack_require__(446);\nvar uid = __webpack_require__(343);\nvar wks = __webpack_require__(133);\nvar wksExt = __webpack_require__(447);\nvar wksDefine = __webpack_require__(448);\nvar enumKeys = __webpack_require__(1334);\nvar isArray = __webpack_require__(1335);\nvar anObject = __webpack_require__(222);\nvar isObject = __webpack_require__(223);\nvar toObject = __webpack_require__(269);\nvar toIObject = __webpack_require__(188);\nvar toPrimitive = __webpack_require__(437);\nvar createDesc = __webpack_require__(268);\nvar _create = __webpack_require__(445);\nvar gOPNExt = __webpack_require__(1336);\nvar $GOPD = __webpack_require__(449);\nvar $GOPS = __webpack_require__(444);\nvar $DP = __webpack_require__(160);\nvar $keys = __webpack_require__(341);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  __webpack_require__(640).f = gOPNExt.f = $getOwnPropertyNames;\n  __webpack_require__(344).f = $propertyIsEnumerable;\n  $GOPS.f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !__webpack_require__(342)) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return $GOPS.f(toObject(it));\n  }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(221)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n/***/ }),\n/* 1333 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar META = __webpack_require__(343)('meta');\nvar isObject = __webpack_require__(223);\nvar has = __webpack_require__(187);\nvar setDesc = __webpack_require__(160).f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !__webpack_require__(224)(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n\n\n/***/ }),\n/* 1334 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(341);\nvar gOPS = __webpack_require__(444);\nvar pIE = __webpack_require__(344);\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n\n\n/***/ }),\n/* 1335 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(438);\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n/* 1336 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(188);\nvar gOPN = __webpack_require__(640).f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n/***/ }),\n/* 1337 */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n/* 1338 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(448)('asyncIterator');\n\n\n/***/ }),\n/* 1339 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(448)('observable');\n\n\n/***/ }),\n/* 1340 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(1341), __esModule: true };\n\n/***/ }),\n/* 1341 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(1342);\nmodule.exports = __webpack_require__(109).Object.setPrototypeOf;\n\n\n/***/ }),\n/* 1342 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(158);\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(1343).set });\n\n\n/***/ }),\n/* 1343 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(223);\nvar anObject = __webpack_require__(222);\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = __webpack_require__(436)(Function.call, __webpack_require__(449).f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n\n\n/***/ }),\n/* 1344 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(1345), __esModule: true };\n\n/***/ }),\n/* 1345 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(1346);\nvar $Object = __webpack_require__(109).Object;\nmodule.exports = function create(P, D) {\n  return $Object.create(P, D);\n};\n\n\n/***/ }),\n/* 1346 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(158);\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(445) });\n\n\n/***/ }),\n/* 1347 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @ignore\n * event object for dom\n * @author yiminghe@gmail.com\n */\n\n\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _EventBaseObject = __webpack_require__(1348);\n\nvar _EventBaseObject2 = _interopRequireDefault(_EventBaseObject);\n\nvar _objectAssign = __webpack_require__(641);\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar TRUE = true;\nvar FALSE = false;\nvar commonProps = ['altKey', 'bubbles', 'cancelable', 'ctrlKey', 'currentTarget', 'eventPhase', 'metaKey', 'shiftKey', 'target', 'timeStamp', 'view', 'type'];\n\nfunction isNullOrUndefined(w) {\n  return w === null || w === undefined;\n}\n\nvar eventNormalizers = [{\n  reg: /^key/,\n  props: ['char', 'charCode', 'key', 'keyCode', 'which'],\n  fix: function fix(event, nativeEvent) {\n    if (isNullOrUndefined(event.which)) {\n      event.which = !isNullOrUndefined(nativeEvent.charCode) ? nativeEvent.charCode : nativeEvent.keyCode;\n    }\n\n    // add metaKey to non-Mac browsers (use ctrl for PC 's and Meta for Macs)\n    if (event.metaKey === undefined) {\n      event.metaKey = event.ctrlKey;\n    }\n  }\n}, {\n  reg: /^touch/,\n  props: ['touches', 'changedTouches', 'targetTouches']\n}, {\n  reg: /^hashchange$/,\n  props: ['newURL', 'oldURL']\n}, {\n  reg: /^gesturechange$/i,\n  props: ['rotation', 'scale']\n}, {\n  reg: /^(mousewheel|DOMMouseScroll)$/,\n  props: [],\n  fix: function fix(event, nativeEvent) {\n    var deltaX = undefined;\n    var deltaY = undefined;\n    var delta = undefined;\n    var wheelDelta = nativeEvent.wheelDelta;\n    var axis = nativeEvent.axis;\n    var wheelDeltaY = nativeEvent.wheelDeltaY;\n    var wheelDeltaX = nativeEvent.wheelDeltaX;\n    var detail = nativeEvent.detail;\n\n    // ie/webkit\n    if (wheelDelta) {\n      delta = wheelDelta / 120;\n    }\n\n    // gecko\n    if (detail) {\n      // press control e.detail == 1 else e.detail == 3\n      delta = 0 - (detail % 3 === 0 ? detail / 3 : detail);\n    }\n\n    // Gecko\n    if (axis !== undefined) {\n      if (axis === event.HORIZONTAL_AXIS) {\n        deltaY = 0;\n        deltaX = 0 - delta;\n      } else if (axis === event.VERTICAL_AXIS) {\n        deltaX = 0;\n        deltaY = delta;\n      }\n    }\n\n    // Webkit\n    if (wheelDeltaY !== undefined) {\n      deltaY = wheelDeltaY / 120;\n    }\n    if (wheelDeltaX !== undefined) {\n      deltaX = -1 * wheelDeltaX / 120;\n    }\n\n    // 默认 deltaY (ie)\n    if (!deltaX && !deltaY) {\n      deltaY = delta;\n    }\n\n    if (deltaX !== undefined) {\n      /**\n       * deltaX of mousewheel event\n       * @property deltaX\n       * @member Event.DomEvent.Object\n       */\n      event.deltaX = deltaX;\n    }\n\n    if (deltaY !== undefined) {\n      /**\n       * deltaY of mousewheel event\n       * @property deltaY\n       * @member Event.DomEvent.Object\n       */\n      event.deltaY = deltaY;\n    }\n\n    if (delta !== undefined) {\n      /**\n       * delta of mousewheel event\n       * @property delta\n       * @member Event.DomEvent.Object\n       */\n      event.delta = delta;\n    }\n  }\n}, {\n  reg: /^mouse|contextmenu|click|mspointer|(^DOMMouseScroll$)/i,\n  props: ['buttons', 'clientX', 'clientY', 'button', 'offsetX', 'relatedTarget', 'which', 'fromElement', 'toElement', 'offsetY', 'pageX', 'pageY', 'screenX', 'screenY'],\n  fix: function fix(event, nativeEvent) {\n    var eventDoc = undefined;\n    var doc = undefined;\n    var body = undefined;\n    var target = event.target;\n    var button = nativeEvent.button;\n\n    // Calculate pageX/Y if missing and clientX/Y available\n    if (target && isNullOrUndefined(event.pageX) && !isNullOrUndefined(nativeEvent.clientX)) {\n      eventDoc = target.ownerDocument || document;\n      doc = eventDoc.documentElement;\n      body = eventDoc.body;\n      event.pageX = nativeEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n      event.pageY = nativeEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n    }\n\n    // which for click: 1 === left; 2 === middle; 3 === right\n    // do not use button\n    if (!event.which && button !== undefined) {\n      if (button & 1) {\n        event.which = 1;\n      } else if (button & 2) {\n        event.which = 3;\n      } else if (button & 4) {\n        event.which = 2;\n      } else {\n        event.which = 0;\n      }\n    }\n\n    // add relatedTarget, if necessary\n    if (!event.relatedTarget && event.fromElement) {\n      event.relatedTarget = event.fromElement === target ? event.toElement : event.fromElement;\n    }\n\n    return event;\n  }\n}];\n\nfunction retTrue() {\n  return TRUE;\n}\n\nfunction retFalse() {\n  return FALSE;\n}\n\nfunction DomEventObject(nativeEvent) {\n  var type = nativeEvent.type;\n\n  var isNative = typeof nativeEvent.stopPropagation === 'function' || typeof nativeEvent.cancelBubble === 'boolean';\n\n  _EventBaseObject2['default'].call(this);\n\n  this.nativeEvent = nativeEvent;\n\n  // in case dom event has been mark as default prevented by lower dom node\n  var isDefaultPrevented = retFalse;\n  if ('defaultPrevented' in nativeEvent) {\n    isDefaultPrevented = nativeEvent.defaultPrevented ? retTrue : retFalse;\n  } else if ('getPreventDefault' in nativeEvent) {\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=691151\n    isDefaultPrevented = nativeEvent.getPreventDefault() ? retTrue : retFalse;\n  } else if ('returnValue' in nativeEvent) {\n    isDefaultPrevented = nativeEvent.returnValue === FALSE ? retTrue : retFalse;\n  }\n\n  this.isDefaultPrevented = isDefaultPrevented;\n\n  var fixFns = [];\n  var fixFn = undefined;\n  var l = undefined;\n  var prop = undefined;\n  var props = commonProps.concat();\n\n  eventNormalizers.forEach(function (normalizer) {\n    if (type.match(normalizer.reg)) {\n      props = props.concat(normalizer.props);\n      if (normalizer.fix) {\n        fixFns.push(normalizer.fix);\n      }\n    }\n  });\n\n  l = props.length;\n\n  // clone properties of the original event object\n  while (l) {\n    prop = props[--l];\n    this[prop] = nativeEvent[prop];\n  }\n\n  // fix target property, if necessary\n  if (!this.target && isNative) {\n    this.target = nativeEvent.srcElement || document; // srcElement might not be defined either\n  }\n\n  // check if target is a text node (safari)\n  if (this.target && this.target.nodeType === 3) {\n    this.target = this.target.parentNode;\n  }\n\n  l = fixFns.length;\n\n  while (l) {\n    fixFn = fixFns[--l];\n    fixFn(this, nativeEvent);\n  }\n\n  this.timeStamp = nativeEvent.timeStamp || Date.now();\n}\n\nvar EventBaseObjectProto = _EventBaseObject2['default'].prototype;\n\n(0, _objectAssign2['default'])(DomEventObject.prototype, EventBaseObjectProto, {\n  constructor: DomEventObject,\n\n  preventDefault: function preventDefault() {\n    var e = this.nativeEvent;\n\n    // if preventDefault exists run it on the original event\n    if (e.preventDefault) {\n      e.preventDefault();\n    } else {\n      // otherwise set the returnValue property of the original event to FALSE (IE)\n      e.returnValue = FALSE;\n    }\n\n    EventBaseObjectProto.preventDefault.call(this);\n  },\n\n  stopPropagation: function stopPropagation() {\n    var e = this.nativeEvent;\n\n    // if stopPropagation exists run it on the original event\n    if (e.stopPropagation) {\n      e.stopPropagation();\n    } else {\n      // otherwise set the cancelBubble property of the original event to TRUE (IE)\n      e.cancelBubble = TRUE;\n    }\n\n    EventBaseObjectProto.stopPropagation.call(this);\n  }\n});\n\nexports['default'] = DomEventObject;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 1348 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * @ignore\n * base event object for custom and dom event.\n * @author yiminghe@gmail.com\n */\n\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction returnFalse() {\n  return false;\n}\n\nfunction returnTrue() {\n  return true;\n}\n\nfunction EventBaseObject() {\n  this.timeStamp = Date.now();\n  this.target = undefined;\n  this.currentTarget = undefined;\n}\n\nEventBaseObject.prototype = {\n  isEventObject: 1,\n\n  constructor: EventBaseObject,\n\n  isDefaultPrevented: returnFalse,\n\n  isPropagationStopped: returnFalse,\n\n  isImmediatePropagationStopped: returnFalse,\n\n  preventDefault: function preventDefault() {\n    this.isDefaultPrevented = returnTrue;\n  },\n\n  stopPropagation: function stopPropagation() {\n    this.isPropagationStopped = returnTrue;\n  },\n\n  stopImmediatePropagation: function stopImmediatePropagation() {\n    this.isImmediatePropagationStopped = returnTrue;\n    // fixed 1.2\n    // call stopPropagation implicitly\n    this.stopPropagation();\n  },\n\n  halt: function halt(immediate) {\n    if (immediate) {\n      this.stopImmediatePropagation();\n    } else {\n      this.stopPropagation();\n    }\n    this.preventDefault();\n  }\n};\n\nexports[\"default\"] = EventBaseObject;\nmodule.exports = exports[\"default\"];\n\n/***/ }),\n/* 1349 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(1350);\nvar $Object = __webpack_require__(109).Object;\nmodule.exports = function defineProperty(it, key, desc) {\n  return $Object.defineProperty(it, key, desc);\n};\n\n\n/***/ }),\n/* 1350 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(158);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(161), 'Object', { defineProperty: __webpack_require__(160).f });\n\n\n/***/ }),\n/* 1351 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(1);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = __webpack_require__(644);\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = __webpack_require__(1352);\n\nvar _warning2 = _interopRequireDefault(_warning);\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 MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\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-' + (0, _gud2.default)() + '__';\n\n  var Provider = function (_Component) {\n    _inherits(Provider, _Component);\n\n    function Provider() {\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Provider);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    Provider.prototype.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n    };\n\n    Provider.prototype.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 = void 0;\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          if (false) {}\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    };\n\n    Provider.prototype.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] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n  var Consumer = function (_Component2) {\n    _inherits(Consumer, _Component2);\n\n    function Consumer() {\n      var _temp2, _this2, _ret2;\n\n      _classCallCheck(this, Consumer);\n\n      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n        value: _this2.getValue()\n      }, _this2.onUpdate = function (newValue, changedBits) {\n        var observedBits = _this2.observedBits | 0;\n        if ((observedBits & changedBits) !== 0) {\n          _this2.setState({ value: _this2.getValue() });\n        }\n      }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n    }\n\n    Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var observedBits = nextProps.observedBits;\n\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentDidMount = function componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n      var observedBits = this.props.observedBits;\n\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    };\n\n    Consumer.prototype.getValue = function getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    };\n\n    Consumer.prototype.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] = _propTypes2.default.object, _Consumer$contextType);\n\n\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 1352 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\n\nvar emptyFunction = __webpack_require__(1353);\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 warning = emptyFunction;\n\nif (false) { var printWarning; }\n\nmodule.exports = warning;\n\n/***/ }),\n/* 1353 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 1354 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = generate;\n\nvar _tinycolor = __webpack_require__(227);\n\nvar _tinycolor2 = _interopRequireDefault(_tinycolor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hueStep = 2; // 色相阶梯\nvar saturationStep = 16; // 饱和度阶梯，浅色部分\nvar saturationStep2 = 5; // 饱和度阶梯，深色部分\nvar brightnessStep1 = 5; // 亮度阶梯，浅色部分\nvar brightnessStep2 = 15; // 亮度阶梯，深色部分\nvar lightColorCount = 5; // 浅色数量，主色上\nvar darkColorCount = 4; // 深色数量，主色下\n\nfunction getHue(hsv, i, light) {\n  var hue = void 0;\n  // 根据色相不同，色相转向不同\n  if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n    hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n  } else {\n    hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n  }\n  if (hue < 0) {\n    hue += 360;\n  } else if (hue >= 360) {\n    hue -= 360;\n  }\n  return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n  // grey color don't change saturation\n  if (hsv.h === 0 && hsv.s === 0) {\n    return hsv.s;\n  }\n  var saturation = void 0;\n  if (light) {\n    saturation = Math.round(hsv.s * 100) - saturationStep * i;\n  } else if (i === darkColorCount) {\n    saturation = Math.round(hsv.s * 100) + saturationStep;\n  } else {\n    saturation = Math.round(hsv.s * 100) + saturationStep2 * i;\n  }\n  // 边界值修正\n  if (saturation > 100) {\n    saturation = 100;\n  }\n  // 第一格的 s 限制在 6-10 之间\n  if (light && i === lightColorCount && saturation > 10) {\n    saturation = 10;\n  }\n  if (saturation < 6) {\n    saturation = 6;\n  }\n  return saturation;\n}\n\nfunction getValue(hsv, i, light) {\n  if (light) {\n    return Math.round(hsv.v * 100) + brightnessStep1 * i;\n  }\n  return Math.round(hsv.v * 100) - brightnessStep2 * i;\n}\n\nfunction generate(color) {\n  var patterns = [];\n  var pColor = (0, _tinycolor2.default)(color);\n  for (var i = lightColorCount; i > 0; i -= 1) {\n    var hsv = pColor.toHsv();\n    var colorString = (0, _tinycolor2.default)({\n      h: getHue(hsv, i, true),\n      s: getSaturation(hsv, i, true),\n      v: getValue(hsv, i, true)\n    }).toHexString();\n    patterns.push(colorString);\n  }\n  patterns.push(pColor.toHexString());\n  for (var _i = 1; _i <= darkColorCount; _i += 1) {\n    var _hsv = pColor.toHsv();\n    var _colorString = (0, _tinycolor2.default)({\n      h: getHue(_hsv, _i),\n      s: getSaturation(_hsv, _i),\n      v: getValue(_hsv, _i)\n    }).toHexString();\n    patterns.push(_colorString);\n  }\n  return patterns;\n}\n\n/***/ }),\n/* 1355 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process) {// Generated by CoffeeScript 1.12.2\n(function() {\n  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n  if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n    module.exports = function() {\n      return performance.now();\n    };\n  } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n    module.exports = function() {\n      return (getNanoSeconds() - nodeLoadTime) / 1e6;\n    };\n    hrtime = process.hrtime;\n    getNanoSeconds = function() {\n      var hr;\n      hr = hrtime();\n      return hr[0] * 1e9 + hr[1];\n    };\n    moduleLoadTime = getNanoSeconds();\n    upTime = process.uptime() * 1e9;\n    nodeLoadTime = moduleLoadTime - upTime;\n  } else if (Date.now) {\n    module.exports = function() {\n      return Date.now() - loadTime;\n    };\n    loadTime = Date.now();\n  } else {\n    module.exports = function() {\n      return new Date().getTime() - loadTime;\n    };\n    loadTime = new Date().getTime();\n  }\n\n}).call(this);\n\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(434)))\n\n/***/ }),\n/* 1356 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\n__webpack_require__(498);\n\n\n/***/ }),\n/* 1357 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _PropTypes = __webpack_require__(645);\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 Provider = function (_Component) {\n  _inherits(Provider, _Component);\n\n  function Provider() {\n    _classCallCheck(this, Provider);\n\n    return _possibleConstructorReturn(this, (Provider.__proto__ || Object.getPrototypeOf(Provider)).apply(this, arguments));\n  }\n\n  _createClass(Provider, [{\n    key: 'getChildContext',\n    value: function getChildContext() {\n      return {\n        miniStore: this.props.store\n      };\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return _react.Children.only(this.props.children);\n    }\n  }]);\n\n  return Provider;\n}(_react.Component);\n\nProvider.propTypes = {\n  store: _PropTypes.storeShape.isRequired\n};\nProvider.childContextTypes = {\n  miniStore: _PropTypes.storeShape.isRequired\n};\nexports.default = Provider;\n\n/***/ }),\n/* 1358 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\nexports.default = connect;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _shallowequal = __webpack_require__(37);\n\nvar _shallowequal2 = _interopRequireDefault(_shallowequal);\n\nvar _hoistNonReactStatics = __webpack_require__(1359);\n\nvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\nvar _reactLifecyclesCompat = __webpack_require__(27);\n\nvar _PropTypes = __webpack_require__(645);\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\nfunction getDisplayName(WrappedComponent) {\n  return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nfunction isStateless(Component) {\n  return !Component.prototype.render;\n}\n\nvar defaultMapStateToProps = function defaultMapStateToProps() {\n  return {};\n};\n\nfunction connect(mapStateToProps) {\n  var shouldSubscribe = !!mapStateToProps;\n  var finnalMapStateToProps = mapStateToProps || defaultMapStateToProps;\n\n  return function wrapWithConnect(WrappedComponent) {\n    var Connect = function (_Component) {\n      _inherits(Connect, _Component);\n\n      _createClass(Connect, null, [{\n        key: 'getDerivedStateFromProps',\n        value: function getDerivedStateFromProps(props, prevState) {\n          // using ownProps\n          if (mapStateToProps && mapStateToProps.length === 2 && props !== prevState.props) {\n            return {\n              subscribed: finnalMapStateToProps(prevState.store.getState(), props),\n              props: props\n            };\n          }\n          return { props: props };\n        }\n      }]);\n\n      function Connect(props, context) {\n        _classCallCheck(this, Connect);\n\n        var _this = _possibleConstructorReturn(this, (Connect.__proto__ || Object.getPrototypeOf(Connect)).call(this, props, context));\n\n        _this.handleChange = function () {\n          if (!_this.unsubscribe) {\n            return;\n          }\n          var nextState = finnalMapStateToProps(_this.store.getState(), _this.props);\n          _this.setState({ subscribed: nextState });\n        };\n\n        _this.store = context.miniStore;\n        _this.state = {\n          subscribed: finnalMapStateToProps(_this.store.getState(), props),\n          store: _this.store,\n          props: props\n        };\n        return _this;\n      }\n\n      _createClass(Connect, [{\n        key: 'componentDidMount',\n        value: function componentDidMount() {\n          this.trySubscribe();\n        }\n      }, {\n        key: 'componentWillUnmount',\n        value: function componentWillUnmount() {\n          this.tryUnsubscribe();\n        }\n      }, {\n        key: 'shouldComponentUpdate',\n        value: function shouldComponentUpdate(nextProps, nextState) {\n          return !(0, _shallowequal2.default)(this.props, nextProps) || !(0, _shallowequal2.default)(this.state.subscribed, nextState.subscribed);\n        }\n      }, {\n        key: 'trySubscribe',\n        value: function trySubscribe() {\n          if (shouldSubscribe) {\n            this.unsubscribe = this.store.subscribe(this.handleChange);\n            this.handleChange();\n          }\n        }\n      }, {\n        key: 'tryUnsubscribe',\n        value: function tryUnsubscribe() {\n          if (this.unsubscribe) {\n            this.unsubscribe();\n            this.unsubscribe = null;\n          }\n        }\n      }, {\n        key: 'getWrappedInstance',\n        value: function getWrappedInstance() {\n          return this.wrappedInstance;\n        }\n      }, {\n        key: 'render',\n        value: function render() {\n          var _this2 = this;\n\n          var props = _extends({}, this.props, this.state.subscribed, {\n            store: this.store\n          });\n\n          if (!isStateless(WrappedComponent)) {\n            props = _extends({}, props, {\n              ref: function ref(c) {\n                return _this2.wrappedInstance = c;\n              }\n            });\n          }\n\n          return _react2.default.createElement(WrappedComponent, props);\n        }\n      }]);\n\n      return Connect;\n    }(_react.Component);\n\n    Connect.displayName = 'Connect(' + getDisplayName(WrappedComponent) + ')';\n    Connect.contextTypes = {\n      miniStore: _PropTypes.storeShape.isRequired\n    };\n\n\n    (0, _reactLifecyclesCompat.polyfill)(Connect);\n\n    return (0, _hoistNonReactStatics2.default)(Connect, WrappedComponent);\n  };\n}\n\n/***/ }),\n/* 1359 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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    contextTypes: true,\n    defaultProps: true,\n    displayName: true,\n    getDefaultProps: true,\n    getDerivedStateFromProps: true,\n    mixins: true,\n    propTypes: true,\n    type: true\n};\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};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n    if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n        if (objectPrototype) {\n            var inheritedComponent = getPrototypeOf(sourceComponent);\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        for (var i = 0; i < keys.length; ++i) {\n            var key = keys[i];\n            if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n                var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n                try { // Avoid failures from read-only properties\n                    defineProperty(targetComponent, key, descriptor);\n                } catch (e) {}\n            }\n        }\n\n        return targetComponent;\n    }\n\n    return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n\n\n/***/ }),\n/* 1360 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\nexports.default = create;\nfunction create(initialState) {\n  var state = initialState;\n  var listeners = [];\n\n  function setState(partial) {\n    state = _extends({}, state, partial);\n    for (var i = 0; i < listeners.length; i++) {\n      listeners[i]();\n    }\n  }\n\n  function getState() {\n    return state;\n  }\n\n  function subscribe(listener) {\n    listeners.push(listener);\n\n    return function unsubscribe() {\n      var index = listeners.indexOf(listener);\n      listeners.splice(index, 1);\n    };\n  }\n\n  return {\n    setState: setState,\n    getState: getState,\n    subscribe: subscribe\n  };\n}\n\n/***/ }),\n/* 1361 */\n/***/ (function(module, exports) {\n\n// mutationobserver-shim v0.3.3 (github.com/megawac/MutationObserver.js)\n// Authors: Graeme Yeates (github.com/megawac) \n/*\n Shim for MutationObserver interface\n Author: Graeme Yeates (github.com/megawac)\n Repository: https://github.com/megawac/MutationObserver.js\n License: WTFPL V2, 2004 (wtfpl.net).\n Though credit and staring the repo will make me feel pretty, you can modify and redistribute as you please.\n Attempts to follow spec (https://www.w3.org/TR/dom/#mutation-observers) as closely as possible for native javascript\n See https://github.com/WebKit/webkit/blob/master/Source/WebCore/dom/MutationObserver.cpp for current webkit source c++ implementation\n*/\nwindow.MutationObserver||(window.MutationObserver=function(y){function z(a){this.i=[];this.m=a}function K(a){(function c(){var d=a.takeRecords();d.length&&a.m(d,a);a.h=setTimeout(c,z._period)})()}function r(a){var b={type:null,target:null,addedNodes:[],removedNodes:[],previousSibling:null,nextSibling:null,attributeName:null,attributeNamespace:null,oldValue:null},c;for(c in a)b[c]!==y&&a[c]!==y&&(b[c]=a[c]);return b}function L(a,b){var c=E(a,b);return function(d){var f=d.length;b.a&&3===a.nodeType&&\na.nodeValue!==c.a&&d.push(new r({type:\"characterData\",target:a,oldValue:c.a}));b.b&&c.b&&C(d,a,c.b,b.f);if(b.c||b.g)var m=M(d,a,c,b);if(m||d.length!==f)c=E(a,b)}}function N(a,b){return b.value}function O(a,b){return\"style\"!==b.name?b.value:a.style.cssText}function C(a,b,c,d){for(var f={},m=b.attributes,k,g,p=m.length;p--;)k=m[p],g=k.name,d&&d[g]===y||(F(b,k)!==c[g]&&a.push(r({type:\"attributes\",target:b,attributeName:g,oldValue:c[g],attributeNamespace:k.namespaceURI})),f[g]=!0);for(g in c)f[g]||a.push(r({target:b,\ntype:\"attributes\",attributeName:g,oldValue:c[g]}))}function M(a,b,c,d){function f(g,p,t,q,x){var A=g.length-1;x=-~((A-x)/2);for(var h,l,e;e=g.pop();)h=t[e.j],l=q[e.l],d.c&&x&&Math.abs(e.j-e.l)>=A&&(a.push(r({type:\"childList\",target:p,addedNodes:[h],removedNodes:[h],nextSibling:h.nextSibling,previousSibling:h.previousSibling})),x--),d.b&&l.b&&C(a,h,l.b,d.f),d.a&&3===h.nodeType&&h.nodeValue!==l.a&&a.push(r({type:\"characterData\",target:h,oldValue:l.a})),d.g&&m(h,l)}function m(g,p){for(var t=g.childNodes,\nq=p.c,x=t.length,A=q?q.length:0,h,l,e,n,v,B=0,w=0,u=0;w<x||u<A;)n=t[w],v=(e=q[u])&&e.node,n===v?(d.b&&e.b&&C(a,n,e.b,d.f),d.a&&e.a!==y&&n.nodeValue!==e.a&&a.push(r({type:\"characterData\",target:n,oldValue:e.a})),l&&f(l,g,t,q,B),d.g&&(n.childNodes.length||e.c&&e.c.length)&&m(n,e),w++,u++):(k=!0,h||(h={},l=[]),n&&(h[e=G(n)]||(h[e]=!0,-1===(e=H(q,n,u,\"node\"))?d.c&&(a.push(r({type:\"childList\",target:g,addedNodes:[n],nextSibling:n.nextSibling,previousSibling:n.previousSibling})),B++):l.push({j:w,l:e})),\nw++),v&&v!==t[w]&&(h[e=G(v)]||(h[e]=!0,-1===(e=H(t,v,w))?d.c&&(a.push(r({type:\"childList\",target:p.node,removedNodes:[v],nextSibling:q[u+1],previousSibling:q[u-1]})),B--):l.push({j:e,l:u})),u++));l&&f(l,g,t,q,B)}var k;m(b,c);return k}function E(a,b){var c=!0;return function m(f){var k={node:f};!b.a||3!==f.nodeType&&8!==f.nodeType?(b.b&&c&&1===f.nodeType&&(k.b=I(f.attributes,function(g,p){if(!b.f||b.f[p.name])g[p.name]=F(f,p);return g},{})),c&&(b.c||b.a||b.b&&b.g)&&(k.c=P(f.childNodes,m)),c=b.g):k.a=\nf.nodeValue;return k}(a)}function G(a){try{return a.id||(a.mo_id=a.mo_id||J++)}catch(b){try{return a.nodeValue}catch(c){return J++}}}function P(a,b){for(var c=[],d=0;d<a.length;d++)c[d]=b(a[d],d,a);return c}function I(a,b,c){for(var d=0;d<a.length;d++)c=b(c,a[d],d,a);return c}function H(a,b,c,d){for(;c<a.length;c++)if((d?a[c][d]:a[c])===b)return c;return-1}z._period=30;z.prototype={observe:function(a,b){for(var c={b:!!(b.attributes||b.attributeFilter||b.attributeOldValue),c:!!b.childList,g:!!b.subtree,\na:!(!b.characterData&&!b.characterDataOldValue)},d=this.i,f=0;f<d.length;f++)d[f].s===a&&d.splice(f,1);b.attributeFilter&&(c.f=I(b.attributeFilter,function(m,k){m[k]=!0;return m},{}));d.push({s:a,o:L(a,c)});this.h||K(this)},takeRecords:function(){for(var a=[],b=this.i,c=0;c<b.length;c++)b[c].o(a);return a},disconnect:function(){this.i=[];clearTimeout(this.h);this.h=null}};var D=document.createElement(\"i\");D.style.top=0;var F=(D=\"null\"!=D.attributes.style.value)?N:O,J=1;return z}(void 0));\n\n\n\n/***/ }),\n/* 1362 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar util = __webpack_require__(1363);\n\nfunction scrollIntoView(elem, container, config) {\n  config = config || {};\n  // document 归一化到 window\n  if (container.nodeType === 9) {\n    container = util.getWindow(container);\n  }\n\n  var allowHorizontalScroll = config.allowHorizontalScroll;\n  var onlyScrollIfNeeded = config.onlyScrollIfNeeded;\n  var alignWithTop = config.alignWithTop;\n  var alignWithLeft = config.alignWithLeft;\n  var offsetTop = config.offsetTop || 0;\n  var offsetLeft = config.offsetLeft || 0;\n  var offsetBottom = config.offsetBottom || 0;\n  var offsetRight = config.offsetRight || 0;\n\n  allowHorizontalScroll = allowHorizontalScroll === undefined ? true : allowHorizontalScroll;\n\n  var isWin = util.isWindow(container);\n  var elemOffset = util.offset(elem);\n  var eh = util.outerHeight(elem);\n  var ew = util.outerWidth(elem);\n  var containerOffset = undefined;\n  var ch = undefined;\n  var cw = undefined;\n  var containerScroll = undefined;\n  var diffTop = undefined;\n  var diffBottom = undefined;\n  var win = undefined;\n  var winScroll = undefined;\n  var ww = undefined;\n  var wh = undefined;\n\n  if (isWin) {\n    win = container;\n    wh = util.height(win);\n    ww = util.width(win);\n    winScroll = {\n      left: util.scrollLeft(win),\n      top: util.scrollTop(win)\n    };\n    // elem 相对 container 可视视窗的距离\n    diffTop = {\n      left: elemOffset.left - winScroll.left - offsetLeft,\n      top: elemOffset.top - winScroll.top - offsetTop\n    };\n    diffBottom = {\n      left: elemOffset.left + ew - (winScroll.left + ww) + offsetRight,\n      top: elemOffset.top + eh - (winScroll.top + wh) + offsetBottom\n    };\n    containerScroll = winScroll;\n  } else {\n    containerOffset = util.offset(container);\n    ch = container.clientHeight;\n    cw = container.clientWidth;\n    containerScroll = {\n      left: container.scrollLeft,\n      top: container.scrollTop\n    };\n    // elem 相对 container 可视视窗的距离\n    // 注意边框, offset 是边框到根节点\n    diffTop = {\n      left: elemOffset.left - (containerOffset.left + (parseFloat(util.css(container, 'borderLeftWidth')) || 0)) - offsetLeft,\n      top: elemOffset.top - (containerOffset.top + (parseFloat(util.css(container, 'borderTopWidth')) || 0)) - offsetTop\n    };\n    diffBottom = {\n      left: elemOffset.left + ew - (containerOffset.left + cw + (parseFloat(util.css(container, 'borderRightWidth')) || 0)) + offsetRight,\n      top: elemOffset.top + eh - (containerOffset.top + ch + (parseFloat(util.css(container, 'borderBottomWidth')) || 0)) + offsetBottom\n    };\n  }\n\n  if (diffTop.top < 0 || diffBottom.top > 0) {\n    // 强制向上\n    if (alignWithTop === true) {\n      util.scrollTop(container, containerScroll.top + diffTop.top);\n    } else if (alignWithTop === false) {\n      util.scrollTop(container, containerScroll.top + diffBottom.top);\n    } else {\n      // 自动调整\n      if (diffTop.top < 0) {\n        util.scrollTop(container, containerScroll.top + diffTop.top);\n      } else {\n        util.scrollTop(container, containerScroll.top + diffBottom.top);\n      }\n    }\n  } else {\n    if (!onlyScrollIfNeeded) {\n      alignWithTop = alignWithTop === undefined ? true : !!alignWithTop;\n      if (alignWithTop) {\n        util.scrollTop(container, containerScroll.top + diffTop.top);\n      } else {\n        util.scrollTop(container, containerScroll.top + diffBottom.top);\n      }\n    }\n  }\n\n  if (allowHorizontalScroll) {\n    if (diffTop.left < 0 || diffBottom.left > 0) {\n      // 强制向上\n      if (alignWithLeft === true) {\n        util.scrollLeft(container, containerScroll.left + diffTop.left);\n      } else if (alignWithLeft === false) {\n        util.scrollLeft(container, containerScroll.left + diffBottom.left);\n      } else {\n        // 自动调整\n        if (diffTop.left < 0) {\n          util.scrollLeft(container, containerScroll.left + diffTop.left);\n        } else {\n          util.scrollLeft(container, containerScroll.left + diffBottom.left);\n        }\n      }\n    } else {\n      if (!onlyScrollIfNeeded) {\n        alignWithLeft = alignWithLeft === undefined ? true : !!alignWithLeft;\n        if (alignWithLeft) {\n          util.scrollLeft(container, containerScroll.left + diffTop.left);\n        } else {\n          util.scrollLeft(container, containerScroll.left + diffBottom.left);\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = scrollIntoView;\n\n/***/ }),\n/* 1363 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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 _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\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nfunction getClientPosition(elem) {\n  var box = undefined;\n  var x = undefined;\n  var y = undefined;\n  var doc = elem.ownerDocument;\n  var body = doc.body;\n  var docElem = doc && doc.documentElement;\n  // 根据 GBS 最新数据，A-Grade Browsers 都已支持 getBoundingClientRect 方法，不用再考虑传统的实现方式\n  box = elem.getBoundingClientRect();\n\n  // 注：jQuery 还考虑减去 docElem.clientLeft/clientTop\n  // 但测试发现，这样反而会导致当 html 和 body 有边距/边框样式时，获取的值不正确\n  // 此外，ie6 会忽略 html 的 margin 值，幸运地是没有谁会去设置 html 的 margin\n\n  x = box.left;\n  y = box.top;\n\n  // In IE, most of the time, 2 extra pixels are added to the top and left\n  // due to the implicit 2-pixel inset border.  In IE6/7 quirks mode and\n  // IE6 standards mode, this border can be overridden by setting the\n  // document element's border to zero -- thus, we cannot rely on the\n  // offset always being 2 pixels.\n\n  // In quirks mode, the offset can be determined by querying the body's\n  // clientLeft/clientTop, but in standards mode, it is found by querying\n  // the document element's clientLeft/clientTop.  Since we already called\n  // getClientBoundingRect we have already forced a reflow, so it is not\n  // too expensive just to query them all.\n\n  // ie 下应该减去窗口的边框吧，毕竟默认 absolute 都是相对窗口定位的\n  // 窗口边框标准是设 documentElement ,quirks 时设置 body\n  // 最好禁止在 body 和 html 上边框 ，但 ie < 9 html 默认有 2px ，减去\n  // 但是非 ie 不可能设置窗口边框，body html 也不是窗口 ,ie 可以通过 html,body 设置\n  // 标准 ie 下 docElem.clientTop 就是 border-top\n  // ie7 html 即窗口边框改变不了。永远为 2\n  // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框，即使设了 border-top 也为 0\n\n  x -= docElem.clientLeft || body.clientLeft || 0;\n  y -= docElem.clientTop || body.clientTop || 0;\n\n  return {\n    left: x,\n    top: y\n  };\n}\n\nfunction getScroll(w, top) {\n  var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];\n  var method = 'scroll' + (top ? 'Top' : 'Left');\n  if (typeof ret !== 'number') {\n    var d = w.document;\n    // ie6,7,8 standard mode\n    ret = d.documentElement[method];\n    if (typeof ret !== 'number') {\n      // quirks mode\n      ret = d.body[method];\n    }\n  }\n  return ret;\n}\n\nfunction getScrollLeft(w) {\n  return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n  return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n  var pos = getClientPosition(el);\n  var doc = el.ownerDocument;\n  var w = doc.defaultView || doc.parentWindow;\n  pos.left += getScrollLeft(w);\n  pos.top += getScrollTop(w);\n  return pos;\n}\nfunction _getComputedStyle(elem, name, computedStyle_) {\n  var val = '';\n  var d = elem.ownerDocument;\n  var computedStyle = computedStyle_ || d.defaultView.getComputedStyle(elem, null);\n\n  // https://github.com/kissyteam/kissy/issues/61\n  if (computedStyle) {\n    val = computedStyle.getPropertyValue(name) || computedStyle[name];\n  }\n\n  return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n  // currentStyle maybe null\n  // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n  var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n  // 当 width/height 设置为百分比时，通过 pixelLeft 方式转换的 width/height 值\n  // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n  // 在 ie 下不对，需要直接用 offset 方式\n  // borderWidth 等值也有问题，但考虑到 borderWidth 设为百分比的概率很小，这里就不考虑了\n\n  // From the awesome hack by Dean Edwards\n  // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n  // If we're not dealing with a regular pixel number\n  // but a number that has a weird ending, we need to convert it to pixels\n  // exclude left right for relativity\n  if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n    // Remember the original values\n    var style = elem.style;\n    var left = style[LEFT];\n    var rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n    // prevent flashing of content\n    elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n    // Put in the new values to get a computed value out\n    style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n    ret = style.pixelLeft + PX;\n\n    // Revert the changed values\n    style[LEFT] = left;\n\n    elem[RUNTIME_STYLE][LEFT] = rsLeft;\n  }\n  return ret === '' ? 'auto' : ret;\n}\n\nvar getComputedStyleX = undefined;\nif (typeof window !== 'undefined') {\n  getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction each(arr, fn) {\n  for (var i = 0; i < arr.length; i++) {\n    fn(arr[i]);\n  }\n}\n\nfunction isBorderBoxFn(elem) {\n  return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n  var old = {};\n  var style = elem.style;\n  var name = undefined;\n\n  // Remember the old values, and insert the new ones\n  for (name in options) {\n    if (options.hasOwnProperty(name)) {\n      old[name] = style[name];\n      style[name] = options[name];\n    }\n  }\n\n  callback.call(elem);\n\n  // Revert the old values\n  for (name in options) {\n    if (options.hasOwnProperty(name)) {\n      style[name] = old[name];\n    }\n  }\n}\n\nfunction getPBMWidth(elem, props, which) {\n  var value = 0;\n  var prop = undefined;\n  var j = undefined;\n  var i = undefined;\n  for (j = 0; j < props.length; j++) {\n    prop = props[j];\n    if (prop) {\n      for (i = 0; i < which.length; i++) {\n        var cssProp = undefined;\n        if (prop === 'border') {\n          cssProp = prop + which[i] + 'Width';\n        } else {\n          cssProp = prop + which[i];\n        }\n        value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n      }\n    }\n  }\n  return value;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n  // must use == for ie8\n  /* eslint eqeqeq:0 */\n  return obj != null && obj == obj.window;\n}\n\nvar domUtils = {};\n\neach(['Width', 'Height'], function (name) {\n  domUtils['doc' + name] = function (refWin) {\n    var d = refWin.document;\n    return Math.max(\n    // firefox chrome documentElement.scrollHeight< body.scrollHeight\n    // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n    d.documentElement['scroll' + name],\n    // quirks : documentElement.scrollHeight 最大等于可视窗口多一点？\n    d.body['scroll' + name], domUtils['viewport' + name](d));\n  };\n\n  domUtils['viewport' + name] = function (win) {\n    // pc browser includes scrollbar in window.innerWidth\n    var prop = 'client' + name;\n    var doc = win.document;\n    var body = doc.body;\n    var documentElement = doc.documentElement;\n    var documentElementProp = documentElement[prop];\n    // 标准模式取 documentElement\n    // backcompat 取 body\n    return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n  };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra]  'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, extra) {\n  if (isWindow(elem)) {\n    return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n  } else if (elem.nodeType === 9) {\n    return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n  }\n  var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n  var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;\n  var computedStyle = getComputedStyleX(elem);\n  var isBorderBox = isBorderBoxFn(elem, computedStyle);\n  var cssBoxValue = 0;\n  if (borderBoxValue == null || borderBoxValue <= 0) {\n    borderBoxValue = undefined;\n    // Fall back to computed then un computed css if necessary\n    cssBoxValue = getComputedStyleX(elem, name);\n    if (cssBoxValue == null || Number(cssBoxValue) < 0) {\n      cssBoxValue = elem.style[name] || 0;\n    }\n    // Normalize '', auto, and prepare for extra\n    cssBoxValue = parseFloat(cssBoxValue) || 0;\n  }\n  if (extra === undefined) {\n    extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n  }\n  var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n  var val = borderBoxValue || cssBoxValue;\n  if (extra === CONTENT_INDEX) {\n    if (borderBoxValueOrIsBorderBox) {\n      return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle);\n    }\n    return cssBoxValue;\n  }\n  if (borderBoxValueOrIsBorderBox) {\n    var padding = extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle);\n    return val + (extra === BORDER_INDEX ? 0 : padding);\n  }\n  return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle);\n}\n\nvar cssShow = {\n  position: 'absolute',\n  visibility: 'hidden',\n  display: 'block'\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(elem) {\n  var val = undefined;\n  var args = arguments;\n  // in case elem is window\n  // elem.offsetWidth === undefined\n  if (elem.offsetWidth !== 0) {\n    val = getWH.apply(undefined, args);\n  } else {\n    swap(elem, cssShow, function () {\n      val = getWH.apply(undefined, args);\n    });\n  }\n  return val;\n}\n\nfunction css(el, name, v) {\n  var value = v;\n  if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n    for (var i in name) {\n      if (name.hasOwnProperty(i)) {\n        css(el, i, name[i]);\n      }\n    }\n    return undefined;\n  }\n  if (typeof value !== 'undefined') {\n    if (typeof value === 'number') {\n      value += 'px';\n    }\n    el.style[name] = value;\n    return undefined;\n  }\n  return getComputedStyleX(el, name);\n}\n\neach(['width', 'height'], function (name) {\n  var first = name.charAt(0).toUpperCase() + name.slice(1);\n  domUtils['outer' + first] = function (el, includeMargin) {\n    return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n  };\n  var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n  domUtils[name] = function (elem, val) {\n    if (val !== undefined) {\n      if (elem) {\n        var computedStyle = getComputedStyleX(elem);\n        var isBorderBox = isBorderBoxFn(elem);\n        if (isBorderBox) {\n          val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);\n        }\n        return css(elem, name, val);\n      }\n      return undefined;\n    }\n    return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n  };\n});\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setOffset(elem, offset) {\n  // set position first, in-case top/left are set even on static elem\n  if (css(elem, 'position') === 'static') {\n    elem.style.position = 'relative';\n  }\n\n  var old = getOffset(elem);\n  var ret = {};\n  var current = undefined;\n  var key = undefined;\n\n  for (key in offset) {\n    if (offset.hasOwnProperty(key)) {\n      current = parseFloat(css(elem, key)) || 0;\n      ret[key] = current + offset[key] - old[key];\n    }\n  }\n  css(elem, ret);\n}\n\nmodule.exports = _extends({\n  getWindow: function getWindow(node) {\n    var doc = node.ownerDocument || node;\n    return doc.defaultView || doc.parentWindow;\n  },\n  offset: function offset(el, value) {\n    if (typeof value !== 'undefined') {\n      setOffset(el, value);\n    } else {\n      return getOffset(el);\n    }\n  },\n\n  isWindow: isWindow,\n  each: each,\n  css: css,\n  clone: function clone(obj) {\n    var ret = {};\n    for (var i in obj) {\n      if (obj.hasOwnProperty(i)) {\n        ret[i] = obj[i];\n      }\n    }\n    var overflow = obj.overflow;\n    if (overflow) {\n      for (var i in obj) {\n        if (obj.hasOwnProperty(i)) {\n          ret.overflow[i] = obj.overflow[i];\n        }\n      }\n    }\n    return ret;\n  },\n  scrollLeft: function scrollLeft(w, v) {\n    if (isWindow(w)) {\n      if (v === undefined) {\n        return getScrollLeft(w);\n      }\n      window.scrollTo(v, getScrollTop(w));\n    } else {\n      if (v === undefined) {\n        return w.scrollLeft;\n      }\n      w.scrollLeft = v;\n    }\n  },\n  scrollTop: function scrollTop(w, v) {\n    if (isWindow(w)) {\n      if (v === undefined) {\n        return getScrollTop(w);\n      }\n      window.scrollTo(getScrollLeft(w), v);\n    } else {\n      if (v === undefined) {\n        return w.scrollTop;\n      }\n      w.scrollTop = v;\n    }\n  },\n\n  viewportWidth: 0,\n  viewportHeight: 0\n}, domUtils);\n\n/***/ }),\n/* 1364 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar api = __webpack_require__(185);\n            var content = __webpack_require__(1365);\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.i, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n/***/ }),\n/* 1365 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(186);\nvar ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(435);\nvar ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(1366);\nvar ___CSS_LOADER_URL_IMPORT_1___ = __webpack_require__(1367);\nvar ___CSS_LOADER_URL_IMPORT_2___ = __webpack_require__(1368);\nvar ___CSS_LOADER_URL_IMPORT_3___ = __webpack_require__(1369);\nvar ___CSS_LOADER_URL_IMPORT_4___ = __webpack_require__(1370);\nvar ___CSS_LOADER_URL_IMPORT_5___ = __webpack_require__(1371);\nvar ___CSS_LOADER_URL_IMPORT_6___ = __webpack_require__(1372);\nvar ___CSS_LOADER_URL_IMPORT_7___ = __webpack_require__(1373);\nvar ___CSS_LOADER_URL_IMPORT_8___ = __webpack_require__(1374);\nvar ___CSS_LOADER_URL_IMPORT_9___ = __webpack_require__(1375);\nvar ___CSS_LOADER_URL_IMPORT_10___ = __webpack_require__(1376);\nvar ___CSS_LOADER_URL_IMPORT_11___ = __webpack_require__(1377);\nvar ___CSS_LOADER_URL_IMPORT_12___ = __webpack_require__(1378);\nvar ___CSS_LOADER_URL_IMPORT_13___ = __webpack_require__(1379);\nvar ___CSS_LOADER_URL_IMPORT_14___ = __webpack_require__(1380);\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___, { hash: \"#fontawesome\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \"#fontawesome\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___, { hash: \"#fontawesome\" });\n// Module\nexports.push([module.i, \"/*!\\n * Font Awesome Free 5.2.0 by @fontawesome - https://fontawesome.com\\n * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\\n */\\n.fa,\\n.fas,\\n.far,\\n.fal,\\n.fab {\\n  -moz-osx-font-smoothing: grayscale;\\n  -webkit-font-smoothing: antialiased;\\n  display: inline-block;\\n  font-style: normal;\\n  font-variant: normal;\\n  text-rendering: auto;\\n  line-height: 1;\\n}\\n.fa-lg {\\n  font-size: 1.33333em;\\n  line-height: 0.75em;\\n  vertical-align: -0.0667em;\\n}\\n.fa-xs {\\n  font-size: .75em;\\n}\\n.fa-sm {\\n  font-size: .875em;\\n}\\n.fa-1x {\\n  font-size: 1em;\\n}\\n.fa-2x {\\n  font-size: 2em;\\n}\\n.fa-3x {\\n  font-size: 3em;\\n}\\n.fa-4x {\\n  font-size: 4em;\\n}\\n.fa-5x {\\n  font-size: 5em;\\n}\\n.fa-6x {\\n  font-size: 6em;\\n}\\n.fa-7x {\\n  font-size: 7em;\\n}\\n.fa-8x {\\n  font-size: 8em;\\n}\\n.fa-9x {\\n  font-size: 9em;\\n}\\n.fa-10x {\\n  font-size: 10em;\\n}\\n.fa-fw {\\n  text-align: center;\\n  width: 1.25em;\\n}\\n.fa-ul {\\n  list-style-type: none;\\n  margin-left: 2.5em;\\n  padding-left: 0;\\n}\\n.fa-ul > li {\\n  position: relative;\\n}\\n.fa-li {\\n  left: -2em;\\n  position: absolute;\\n  text-align: center;\\n  width: 2em;\\n  line-height: inherit;\\n}\\n.fa-border {\\n  border: solid 0.08em #eee;\\n  border-radius: .1em;\\n  padding: .2em .25em .15em;\\n}\\n.fa-pull-left {\\n  float: left;\\n}\\n.fa-pull-right {\\n  float: right;\\n}\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n  margin-right: .3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n  margin-left: .3em;\\n}\\n.fa-spin {\\n  -webkit-animation: fa-spin 2s infinite linear;\\n  animation: fa-spin 2s infinite linear;\\n}\\n.fa-pulse {\\n  -webkit-animation: fa-spin 1s infinite steps(8);\\n  animation: fa-spin 1s infinite steps(8);\\n}\\n@-webkit-keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n    transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n    transform: rotate(360deg);\\n  }\\n}\\n@keyframes fa-spin {\\n  0% {\\n    -webkit-transform: rotate(0deg);\\n    transform: rotate(0deg);\\n  }\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n    transform: rotate(360deg);\\n  }\\n}\\n.fa-rotate-90 {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n  -webkit-transform: rotate(90deg);\\n  transform: rotate(90deg);\\n}\\n.fa-rotate-180 {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n  -webkit-transform: rotate(180deg);\\n  transform: rotate(180deg);\\n}\\n.fa-rotate-270 {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n  -webkit-transform: rotate(270deg);\\n  transform: rotate(270deg);\\n}\\n.fa-flip-horizontal {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n  -webkit-transform: scale(-1, 1);\\n  transform: scale(-1, 1);\\n}\\n.fa-flip-vertical {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n  -webkit-transform: scale(1, -1);\\n  transform: scale(1, -1);\\n}\\n.fa-flip-horizontal.fa-flip-vertical {\\n  -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n  -webkit-transform: scale(-1, -1);\\n  transform: scale(-1, -1);\\n}\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical {\\n  -webkit-filter: none;\\n  filter: none;\\n}\\n.fa-stack {\\n  display: inline-block;\\n  height: 2em;\\n  line-height: 2em;\\n  position: relative;\\n  vertical-align: middle;\\n  width: 2em;\\n}\\n.fa-stack-1x,\\n.fa-stack-2x {\\n  left: 0;\\n  position: absolute;\\n  text-align: center;\\n  width: 100%;\\n}\\n.fa-stack-1x {\\n  line-height: inherit;\\n}\\n.fa-stack-2x {\\n  font-size: 2em;\\n}\\n.fa-inverse {\\n  color: #fff;\\n}\\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\\nreaders do not read off random characters that represent icons */\\n.fa-500px:before {\\n  content: \\\"\\\\f26e\\\";\\n}\\n.fa-accessible-icon:before {\\n  content: \\\"\\\\f368\\\";\\n}\\n.fa-accusoft:before {\\n  content: \\\"\\\\f369\\\";\\n}\\n.fa-address-book:before {\\n  content: \\\"\\\\f2b9\\\";\\n}\\n.fa-address-card:before {\\n  content: \\\"\\\\f2bb\\\";\\n}\\n.fa-adjust:before {\\n  content: \\\"\\\\f042\\\";\\n}\\n.fa-adn:before {\\n  content: \\\"\\\\f170\\\";\\n}\\n.fa-adversal:before {\\n  content: \\\"\\\\f36a\\\";\\n}\\n.fa-affiliatetheme:before {\\n  content: \\\"\\\\f36b\\\";\\n}\\n.fa-air-freshener:before {\\n  content: \\\"\\\\f5d0\\\";\\n}\\n.fa-algolia:before {\\n  content: \\\"\\\\f36c\\\";\\n}\\n.fa-align-center:before {\\n  content: \\\"\\\\f037\\\";\\n}\\n.fa-align-justify:before {\\n  content: \\\"\\\\f039\\\";\\n}\\n.fa-align-left:before {\\n  content: \\\"\\\\f036\\\";\\n}\\n.fa-align-right:before {\\n  content: \\\"\\\\f038\\\";\\n}\\n.fa-allergies:before {\\n  content: \\\"\\\\f461\\\";\\n}\\n.fa-amazon:before {\\n  content: \\\"\\\\f270\\\";\\n}\\n.fa-amazon-pay:before {\\n  content: \\\"\\\\f42c\\\";\\n}\\n.fa-ambulance:before {\\n  content: \\\"\\\\f0f9\\\";\\n}\\n.fa-american-sign-language-interpreting:before {\\n  content: \\\"\\\\f2a3\\\";\\n}\\n.fa-amilia:before {\\n  content: \\\"\\\\f36d\\\";\\n}\\n.fa-anchor:before {\\n  content: \\\"\\\\f13d\\\";\\n}\\n.fa-android:before {\\n  content: \\\"\\\\f17b\\\";\\n}\\n.fa-angellist:before {\\n  content: \\\"\\\\f209\\\";\\n}\\n.fa-angle-double-down:before {\\n  content: \\\"\\\\f103\\\";\\n}\\n.fa-angle-double-left:before {\\n  content: \\\"\\\\f100\\\";\\n}\\n.fa-angle-double-right:before {\\n  content: \\\"\\\\f101\\\";\\n}\\n.fa-angle-double-up:before {\\n  content: \\\"\\\\f102\\\";\\n}\\n.fa-angle-down:before {\\n  content: \\\"\\\\f107\\\";\\n}\\n.fa-angle-left:before {\\n  content: \\\"\\\\f104\\\";\\n}\\n.fa-angle-right:before {\\n  content: \\\"\\\\f105\\\";\\n}\\n.fa-angle-up:before {\\n  content: \\\"\\\\f106\\\";\\n}\\n.fa-angry:before {\\n  content: \\\"\\\\f556\\\";\\n}\\n.fa-angrycreative:before {\\n  content: \\\"\\\\f36e\\\";\\n}\\n.fa-angular:before {\\n  content: \\\"\\\\f420\\\";\\n}\\n.fa-app-store:before {\\n  content: \\\"\\\\f36f\\\";\\n}\\n.fa-app-store-ios:before {\\n  content: \\\"\\\\f370\\\";\\n}\\n.fa-apper:before {\\n  content: \\\"\\\\f371\\\";\\n}\\n.fa-apple:before {\\n  content: \\\"\\\\f179\\\";\\n}\\n.fa-apple-alt:before {\\n  content: \\\"\\\\f5d1\\\";\\n}\\n.fa-apple-pay:before {\\n  content: \\\"\\\\f415\\\";\\n}\\n.fa-archive:before {\\n  content: \\\"\\\\f187\\\";\\n}\\n.fa-archway:before {\\n  content: \\\"\\\\f557\\\";\\n}\\n.fa-arrow-alt-circle-down:before {\\n  content: \\\"\\\\f358\\\";\\n}\\n.fa-arrow-alt-circle-left:before {\\n  content: \\\"\\\\f359\\\";\\n}\\n.fa-arrow-alt-circle-right:before {\\n  content: \\\"\\\\f35a\\\";\\n}\\n.fa-arrow-alt-circle-up:before {\\n  content: \\\"\\\\f35b\\\";\\n}\\n.fa-arrow-circle-down:before {\\n  content: \\\"\\\\f0ab\\\";\\n}\\n.fa-arrow-circle-left:before {\\n  content: \\\"\\\\f0a8\\\";\\n}\\n.fa-arrow-circle-right:before {\\n  content: \\\"\\\\f0a9\\\";\\n}\\n.fa-arrow-circle-up:before {\\n  content: \\\"\\\\f0aa\\\";\\n}\\n.fa-arrow-down:before {\\n  content: \\\"\\\\f063\\\";\\n}\\n.fa-arrow-left:before {\\n  content: \\\"\\\\f060\\\";\\n}\\n.fa-arrow-right:before {\\n  content: \\\"\\\\f061\\\";\\n}\\n.fa-arrow-up:before {\\n  content: \\\"\\\\f062\\\";\\n}\\n.fa-arrows-alt:before {\\n  content: \\\"\\\\f0b2\\\";\\n}\\n.fa-arrows-alt-h:before {\\n  content: \\\"\\\\f337\\\";\\n}\\n.fa-arrows-alt-v:before {\\n  content: \\\"\\\\f338\\\";\\n}\\n.fa-assistive-listening-systems:before {\\n  content: \\\"\\\\f2a2\\\";\\n}\\n.fa-asterisk:before {\\n  content: \\\"\\\\f069\\\";\\n}\\n.fa-asymmetrik:before {\\n  content: \\\"\\\\f372\\\";\\n}\\n.fa-at:before {\\n  content: \\\"\\\\f1fa\\\";\\n}\\n.fa-atlas:before {\\n  content: \\\"\\\\f558\\\";\\n}\\n.fa-atom:before {\\n  content: \\\"\\\\f5d2\\\";\\n}\\n.fa-audible:before {\\n  content: \\\"\\\\f373\\\";\\n}\\n.fa-audio-description:before {\\n  content: \\\"\\\\f29e\\\";\\n}\\n.fa-autoprefixer:before {\\n  content: \\\"\\\\f41c\\\";\\n}\\n.fa-avianex:before {\\n  content: \\\"\\\\f374\\\";\\n}\\n.fa-aviato:before {\\n  content: \\\"\\\\f421\\\";\\n}\\n.fa-award:before {\\n  content: \\\"\\\\f559\\\";\\n}\\n.fa-aws:before {\\n  content: \\\"\\\\f375\\\";\\n}\\n.fa-backspace:before {\\n  content: \\\"\\\\f55a\\\";\\n}\\n.fa-backward:before {\\n  content: \\\"\\\\f04a\\\";\\n}\\n.fa-balance-scale:before {\\n  content: \\\"\\\\f24e\\\";\\n}\\n.fa-ban:before {\\n  content: \\\"\\\\f05e\\\";\\n}\\n.fa-band-aid:before {\\n  content: \\\"\\\\f462\\\";\\n}\\n.fa-bandcamp:before {\\n  content: \\\"\\\\f2d5\\\";\\n}\\n.fa-barcode:before {\\n  content: \\\"\\\\f02a\\\";\\n}\\n.fa-bars:before {\\n  content: \\\"\\\\f0c9\\\";\\n}\\n.fa-baseball-ball:before {\\n  content: \\\"\\\\f433\\\";\\n}\\n.fa-basketball-ball:before {\\n  content: \\\"\\\\f434\\\";\\n}\\n.fa-bath:before {\\n  content: \\\"\\\\f2cd\\\";\\n}\\n.fa-battery-empty:before {\\n  content: \\\"\\\\f244\\\";\\n}\\n.fa-battery-full:before {\\n  content: \\\"\\\\f240\\\";\\n}\\n.fa-battery-half:before {\\n  content: \\\"\\\\f242\\\";\\n}\\n.fa-battery-quarter:before {\\n  content: \\\"\\\\f243\\\";\\n}\\n.fa-battery-three-quarters:before {\\n  content: \\\"\\\\f241\\\";\\n}\\n.fa-bed:before {\\n  content: \\\"\\\\f236\\\";\\n}\\n.fa-beer:before {\\n  content: \\\"\\\\f0fc\\\";\\n}\\n.fa-behance:before {\\n  content: \\\"\\\\f1b4\\\";\\n}\\n.fa-behance-square:before {\\n  content: \\\"\\\\f1b5\\\";\\n}\\n.fa-bell:before {\\n  content: \\\"\\\\f0f3\\\";\\n}\\n.fa-bell-slash:before {\\n  content: \\\"\\\\f1f6\\\";\\n}\\n.fa-bezier-curve:before {\\n  content: \\\"\\\\f55b\\\";\\n}\\n.fa-bicycle:before {\\n  content: \\\"\\\\f206\\\";\\n}\\n.fa-bimobject:before {\\n  content: \\\"\\\\f378\\\";\\n}\\n.fa-binoculars:before {\\n  content: \\\"\\\\f1e5\\\";\\n}\\n.fa-birthday-cake:before {\\n  content: \\\"\\\\f1fd\\\";\\n}\\n.fa-bitbucket:before {\\n  content: \\\"\\\\f171\\\";\\n}\\n.fa-bitcoin:before {\\n  content: \\\"\\\\f379\\\";\\n}\\n.fa-bity:before {\\n  content: \\\"\\\\f37a\\\";\\n}\\n.fa-black-tie:before {\\n  content: \\\"\\\\f27e\\\";\\n}\\n.fa-blackberry:before {\\n  content: \\\"\\\\f37b\\\";\\n}\\n.fa-blender:before {\\n  content: \\\"\\\\f517\\\";\\n}\\n.fa-blind:before {\\n  content: \\\"\\\\f29d\\\";\\n}\\n.fa-blogger:before {\\n  content: \\\"\\\\f37c\\\";\\n}\\n.fa-blogger-b:before {\\n  content: \\\"\\\\f37d\\\";\\n}\\n.fa-bluetooth:before {\\n  content: \\\"\\\\f293\\\";\\n}\\n.fa-bluetooth-b:before {\\n  content: \\\"\\\\f294\\\";\\n}\\n.fa-bold:before {\\n  content: \\\"\\\\f032\\\";\\n}\\n.fa-bolt:before {\\n  content: \\\"\\\\f0e7\\\";\\n}\\n.fa-bomb:before {\\n  content: \\\"\\\\f1e2\\\";\\n}\\n.fa-bone:before {\\n  content: \\\"\\\\f5d7\\\";\\n}\\n.fa-bong:before {\\n  content: \\\"\\\\f55c\\\";\\n}\\n.fa-book:before {\\n  content: \\\"\\\\f02d\\\";\\n}\\n.fa-book-open:before {\\n  content: \\\"\\\\f518\\\";\\n}\\n.fa-book-reader:before {\\n  content: \\\"\\\\f5da\\\";\\n}\\n.fa-bookmark:before {\\n  content: \\\"\\\\f02e\\\";\\n}\\n.fa-bowling-ball:before {\\n  content: \\\"\\\\f436\\\";\\n}\\n.fa-box:before {\\n  content: \\\"\\\\f466\\\";\\n}\\n.fa-box-open:before {\\n  content: \\\"\\\\f49e\\\";\\n}\\n.fa-boxes:before {\\n  content: \\\"\\\\f468\\\";\\n}\\n.fa-braille:before {\\n  content: \\\"\\\\f2a1\\\";\\n}\\n.fa-brain:before {\\n  content: \\\"\\\\f5dc\\\";\\n}\\n.fa-briefcase:before {\\n  content: \\\"\\\\f0b1\\\";\\n}\\n.fa-briefcase-medical:before {\\n  content: \\\"\\\\f469\\\";\\n}\\n.fa-broadcast-tower:before {\\n  content: \\\"\\\\f519\\\";\\n}\\n.fa-broom:before {\\n  content: \\\"\\\\f51a\\\";\\n}\\n.fa-brush:before {\\n  content: \\\"\\\\f55d\\\";\\n}\\n.fa-btc:before {\\n  content: \\\"\\\\f15a\\\";\\n}\\n.fa-bug:before {\\n  content: \\\"\\\\f188\\\";\\n}\\n.fa-building:before {\\n  content: \\\"\\\\f1ad\\\";\\n}\\n.fa-bullhorn:before {\\n  content: \\\"\\\\f0a1\\\";\\n}\\n.fa-bullseye:before {\\n  content: \\\"\\\\f140\\\";\\n}\\n.fa-burn:before {\\n  content: \\\"\\\\f46a\\\";\\n}\\n.fa-buromobelexperte:before {\\n  content: \\\"\\\\f37f\\\";\\n}\\n.fa-bus:before {\\n  content: \\\"\\\\f207\\\";\\n}\\n.fa-bus-alt:before {\\n  content: \\\"\\\\f55e\\\";\\n}\\n.fa-buysellads:before {\\n  content: \\\"\\\\f20d\\\";\\n}\\n.fa-calculator:before {\\n  content: \\\"\\\\f1ec\\\";\\n}\\n.fa-calendar:before {\\n  content: \\\"\\\\f133\\\";\\n}\\n.fa-calendar-alt:before {\\n  content: \\\"\\\\f073\\\";\\n}\\n.fa-calendar-check:before {\\n  content: \\\"\\\\f274\\\";\\n}\\n.fa-calendar-minus:before {\\n  content: \\\"\\\\f272\\\";\\n}\\n.fa-calendar-plus:before {\\n  content: \\\"\\\\f271\\\";\\n}\\n.fa-calendar-times:before {\\n  content: \\\"\\\\f273\\\";\\n}\\n.fa-camera:before {\\n  content: \\\"\\\\f030\\\";\\n}\\n.fa-camera-retro:before {\\n  content: \\\"\\\\f083\\\";\\n}\\n.fa-cannabis:before {\\n  content: \\\"\\\\f55f\\\";\\n}\\n.fa-capsules:before {\\n  content: \\\"\\\\f46b\\\";\\n}\\n.fa-car:before {\\n  content: \\\"\\\\f1b9\\\";\\n}\\n.fa-car-alt:before {\\n  content: \\\"\\\\f5de\\\";\\n}\\n.fa-car-battery:before {\\n  content: \\\"\\\\f5df\\\";\\n}\\n.fa-car-crash:before {\\n  content: \\\"\\\\f5e1\\\";\\n}\\n.fa-car-side:before {\\n  content: \\\"\\\\f5e4\\\";\\n}\\n.fa-caret-down:before {\\n  content: \\\"\\\\f0d7\\\";\\n}\\n.fa-caret-left:before {\\n  content: \\\"\\\\f0d9\\\";\\n}\\n.fa-caret-right:before {\\n  content: \\\"\\\\f0da\\\";\\n}\\n.fa-caret-square-down:before {\\n  content: \\\"\\\\f150\\\";\\n}\\n.fa-caret-square-left:before {\\n  content: \\\"\\\\f191\\\";\\n}\\n.fa-caret-square-right:before {\\n  content: \\\"\\\\f152\\\";\\n}\\n.fa-caret-square-up:before {\\n  content: \\\"\\\\f151\\\";\\n}\\n.fa-caret-up:before {\\n  content: \\\"\\\\f0d8\\\";\\n}\\n.fa-cart-arrow-down:before {\\n  content: \\\"\\\\f218\\\";\\n}\\n.fa-cart-plus:before {\\n  content: \\\"\\\\f217\\\";\\n}\\n.fa-cc-amazon-pay:before {\\n  content: \\\"\\\\f42d\\\";\\n}\\n.fa-cc-amex:before {\\n  content: \\\"\\\\f1f3\\\";\\n}\\n.fa-cc-apple-pay:before {\\n  content: \\\"\\\\f416\\\";\\n}\\n.fa-cc-diners-club:before {\\n  content: \\\"\\\\f24c\\\";\\n}\\n.fa-cc-discover:before {\\n  content: \\\"\\\\f1f2\\\";\\n}\\n.fa-cc-jcb:before {\\n  content: \\\"\\\\f24b\\\";\\n}\\n.fa-cc-mastercard:before {\\n  content: \\\"\\\\f1f1\\\";\\n}\\n.fa-cc-paypal:before {\\n  content: \\\"\\\\f1f4\\\";\\n}\\n.fa-cc-stripe:before {\\n  content: \\\"\\\\f1f5\\\";\\n}\\n.fa-cc-visa:before {\\n  content: \\\"\\\\f1f0\\\";\\n}\\n.fa-centercode:before {\\n  content: \\\"\\\\f380\\\";\\n}\\n.fa-certificate:before {\\n  content: \\\"\\\\f0a3\\\";\\n}\\n.fa-chalkboard:before {\\n  content: \\\"\\\\f51b\\\";\\n}\\n.fa-chalkboard-teacher:before {\\n  content: \\\"\\\\f51c\\\";\\n}\\n.fa-charging-station:before {\\n  content: \\\"\\\\f5e7\\\";\\n}\\n.fa-chart-area:before {\\n  content: \\\"\\\\f1fe\\\";\\n}\\n.fa-chart-bar:before {\\n  content: \\\"\\\\f080\\\";\\n}\\n.fa-chart-line:before {\\n  content: \\\"\\\\f201\\\";\\n}\\n.fa-chart-pie:before {\\n  content: \\\"\\\\f200\\\";\\n}\\n.fa-check:before {\\n  content: \\\"\\\\f00c\\\";\\n}\\n.fa-check-circle:before {\\n  content: \\\"\\\\f058\\\";\\n}\\n.fa-check-double:before {\\n  content: \\\"\\\\f560\\\";\\n}\\n.fa-check-square:before {\\n  content: \\\"\\\\f14a\\\";\\n}\\n.fa-chess:before {\\n  content: \\\"\\\\f439\\\";\\n}\\n.fa-chess-bishop:before {\\n  content: \\\"\\\\f43a\\\";\\n}\\n.fa-chess-board:before {\\n  content: \\\"\\\\f43c\\\";\\n}\\n.fa-chess-king:before {\\n  content: \\\"\\\\f43f\\\";\\n}\\n.fa-chess-knight:before {\\n  content: \\\"\\\\f441\\\";\\n}\\n.fa-chess-pawn:before {\\n  content: \\\"\\\\f443\\\";\\n}\\n.fa-chess-queen:before {\\n  content: \\\"\\\\f445\\\";\\n}\\n.fa-chess-rook:before {\\n  content: \\\"\\\\f447\\\";\\n}\\n.fa-chevron-circle-down:before {\\n  content: \\\"\\\\f13a\\\";\\n}\\n.fa-chevron-circle-left:before {\\n  content: \\\"\\\\f137\\\";\\n}\\n.fa-chevron-circle-right:before {\\n  content: \\\"\\\\f138\\\";\\n}\\n.fa-chevron-circle-up:before {\\n  content: \\\"\\\\f139\\\";\\n}\\n.fa-chevron-down:before {\\n  content: \\\"\\\\f078\\\";\\n}\\n.fa-chevron-left:before {\\n  content: \\\"\\\\f053\\\";\\n}\\n.fa-chevron-right:before {\\n  content: \\\"\\\\f054\\\";\\n}\\n.fa-chevron-up:before {\\n  content: \\\"\\\\f077\\\";\\n}\\n.fa-child:before {\\n  content: \\\"\\\\f1ae\\\";\\n}\\n.fa-chrome:before {\\n  content: \\\"\\\\f268\\\";\\n}\\n.fa-church:before {\\n  content: \\\"\\\\f51d\\\";\\n}\\n.fa-circle:before {\\n  content: \\\"\\\\f111\\\";\\n}\\n.fa-circle-notch:before {\\n  content: \\\"\\\\f1ce\\\";\\n}\\n.fa-clipboard:before {\\n  content: \\\"\\\\f328\\\";\\n}\\n.fa-clipboard-check:before {\\n  content: \\\"\\\\f46c\\\";\\n}\\n.fa-clipboard-list:before {\\n  content: \\\"\\\\f46d\\\";\\n}\\n.fa-clock:before {\\n  content: \\\"\\\\f017\\\";\\n}\\n.fa-clone:before {\\n  content: \\\"\\\\f24d\\\";\\n}\\n.fa-closed-captioning:before {\\n  content: \\\"\\\\f20a\\\";\\n}\\n.fa-cloud:before {\\n  content: \\\"\\\\f0c2\\\";\\n}\\n.fa-cloud-download-alt:before {\\n  content: \\\"\\\\f381\\\";\\n}\\n.fa-cloud-upload-alt:before {\\n  content: \\\"\\\\f382\\\";\\n}\\n.fa-cloudscale:before {\\n  content: \\\"\\\\f383\\\";\\n}\\n.fa-cloudsmith:before {\\n  content: \\\"\\\\f384\\\";\\n}\\n.fa-cloudversify:before {\\n  content: \\\"\\\\f385\\\";\\n}\\n.fa-cocktail:before {\\n  content: \\\"\\\\f561\\\";\\n}\\n.fa-code:before {\\n  content: \\\"\\\\f121\\\";\\n}\\n.fa-code-branch:before {\\n  content: \\\"\\\\f126\\\";\\n}\\n.fa-codepen:before {\\n  content: \\\"\\\\f1cb\\\";\\n}\\n.fa-codiepie:before {\\n  content: \\\"\\\\f284\\\";\\n}\\n.fa-coffee:before {\\n  content: \\\"\\\\f0f4\\\";\\n}\\n.fa-cog:before {\\n  content: \\\"\\\\f013\\\";\\n}\\n.fa-cogs:before {\\n  content: \\\"\\\\f085\\\";\\n}\\n.fa-coins:before {\\n  content: \\\"\\\\f51e\\\";\\n}\\n.fa-columns:before {\\n  content: \\\"\\\\f0db\\\";\\n}\\n.fa-comment:before {\\n  content: \\\"\\\\f075\\\";\\n}\\n.fa-comment-alt:before {\\n  content: \\\"\\\\f27a\\\";\\n}\\n.fa-comment-dots:before {\\n  content: \\\"\\\\f4ad\\\";\\n}\\n.fa-comment-slash:before {\\n  content: \\\"\\\\f4b3\\\";\\n}\\n.fa-comments:before {\\n  content: \\\"\\\\f086\\\";\\n}\\n.fa-compact-disc:before {\\n  content: \\\"\\\\f51f\\\";\\n}\\n.fa-compass:before {\\n  content: \\\"\\\\f14e\\\";\\n}\\n.fa-compress:before {\\n  content: \\\"\\\\f066\\\";\\n}\\n.fa-concierge-bell:before {\\n  content: \\\"\\\\f562\\\";\\n}\\n.fa-connectdevelop:before {\\n  content: \\\"\\\\f20e\\\";\\n}\\n.fa-contao:before {\\n  content: \\\"\\\\f26d\\\";\\n}\\n.fa-cookie:before {\\n  content: \\\"\\\\f563\\\";\\n}\\n.fa-cookie-bite:before {\\n  content: \\\"\\\\f564\\\";\\n}\\n.fa-copy:before {\\n  content: \\\"\\\\f0c5\\\";\\n}\\n.fa-copyright:before {\\n  content: \\\"\\\\f1f9\\\";\\n}\\n.fa-couch:before {\\n  content: \\\"\\\\f4b8\\\";\\n}\\n.fa-cpanel:before {\\n  content: \\\"\\\\f388\\\";\\n}\\n.fa-creative-commons:before {\\n  content: \\\"\\\\f25e\\\";\\n}\\n.fa-creative-commons-by:before {\\n  content: \\\"\\\\f4e7\\\";\\n}\\n.fa-creative-commons-nc:before {\\n  content: \\\"\\\\f4e8\\\";\\n}\\n.fa-creative-commons-nc-eu:before {\\n  content: \\\"\\\\f4e9\\\";\\n}\\n.fa-creative-commons-nc-jp:before {\\n  content: \\\"\\\\f4ea\\\";\\n}\\n.fa-creative-commons-nd:before {\\n  content: \\\"\\\\f4eb\\\";\\n}\\n.fa-creative-commons-pd:before {\\n  content: \\\"\\\\f4ec\\\";\\n}\\n.fa-creative-commons-pd-alt:before {\\n  content: \\\"\\\\f4ed\\\";\\n}\\n.fa-creative-commons-remix:before {\\n  content: \\\"\\\\f4ee\\\";\\n}\\n.fa-creative-commons-sa:before {\\n  content: \\\"\\\\f4ef\\\";\\n}\\n.fa-creative-commons-sampling:before {\\n  content: \\\"\\\\f4f0\\\";\\n}\\n.fa-creative-commons-sampling-plus:before {\\n  content: \\\"\\\\f4f1\\\";\\n}\\n.fa-creative-commons-share:before {\\n  content: \\\"\\\\f4f2\\\";\\n}\\n.fa-credit-card:before {\\n  content: \\\"\\\\f09d\\\";\\n}\\n.fa-crop:before {\\n  content: \\\"\\\\f125\\\";\\n}\\n.fa-crop-alt:before {\\n  content: \\\"\\\\f565\\\";\\n}\\n.fa-crosshairs:before {\\n  content: \\\"\\\\f05b\\\";\\n}\\n.fa-crow:before {\\n  content: \\\"\\\\f520\\\";\\n}\\n.fa-crown:before {\\n  content: \\\"\\\\f521\\\";\\n}\\n.fa-css3:before {\\n  content: \\\"\\\\f13c\\\";\\n}\\n.fa-css3-alt:before {\\n  content: \\\"\\\\f38b\\\";\\n}\\n.fa-cube:before {\\n  content: \\\"\\\\f1b2\\\";\\n}\\n.fa-cubes:before {\\n  content: \\\"\\\\f1b3\\\";\\n}\\n.fa-cut:before {\\n  content: \\\"\\\\f0c4\\\";\\n}\\n.fa-cuttlefish:before {\\n  content: \\\"\\\\f38c\\\";\\n}\\n.fa-d-and-d:before {\\n  content: \\\"\\\\f38d\\\";\\n}\\n.fa-dashcube:before {\\n  content: \\\"\\\\f210\\\";\\n}\\n.fa-database:before {\\n  content: \\\"\\\\f1c0\\\";\\n}\\n.fa-deaf:before {\\n  content: \\\"\\\\f2a4\\\";\\n}\\n.fa-delicious:before {\\n  content: \\\"\\\\f1a5\\\";\\n}\\n.fa-deploydog:before {\\n  content: \\\"\\\\f38e\\\";\\n}\\n.fa-deskpro:before {\\n  content: \\\"\\\\f38f\\\";\\n}\\n.fa-desktop:before {\\n  content: \\\"\\\\f108\\\";\\n}\\n.fa-deviantart:before {\\n  content: \\\"\\\\f1bd\\\";\\n}\\n.fa-diagnoses:before {\\n  content: \\\"\\\\f470\\\";\\n}\\n.fa-dice:before {\\n  content: \\\"\\\\f522\\\";\\n}\\n.fa-dice-five:before {\\n  content: \\\"\\\\f523\\\";\\n}\\n.fa-dice-four:before {\\n  content: \\\"\\\\f524\\\";\\n}\\n.fa-dice-one:before {\\n  content: \\\"\\\\f525\\\";\\n}\\n.fa-dice-six:before {\\n  content: \\\"\\\\f526\\\";\\n}\\n.fa-dice-three:before {\\n  content: \\\"\\\\f527\\\";\\n}\\n.fa-dice-two:before {\\n  content: \\\"\\\\f528\\\";\\n}\\n.fa-digg:before {\\n  content: \\\"\\\\f1a6\\\";\\n}\\n.fa-digital-ocean:before {\\n  content: \\\"\\\\f391\\\";\\n}\\n.fa-digital-tachograph:before {\\n  content: \\\"\\\\f566\\\";\\n}\\n.fa-directions:before {\\n  content: \\\"\\\\f5eb\\\";\\n}\\n.fa-discord:before {\\n  content: \\\"\\\\f392\\\";\\n}\\n.fa-discourse:before {\\n  content: \\\"\\\\f393\\\";\\n}\\n.fa-divide:before {\\n  content: \\\"\\\\f529\\\";\\n}\\n.fa-dizzy:before {\\n  content: \\\"\\\\f567\\\";\\n}\\n.fa-dna:before {\\n  content: \\\"\\\\f471\\\";\\n}\\n.fa-dochub:before {\\n  content: \\\"\\\\f394\\\";\\n}\\n.fa-docker:before {\\n  content: \\\"\\\\f395\\\";\\n}\\n.fa-dollar-sign:before {\\n  content: \\\"\\\\f155\\\";\\n}\\n.fa-dolly:before {\\n  content: \\\"\\\\f472\\\";\\n}\\n.fa-dolly-flatbed:before {\\n  content: \\\"\\\\f474\\\";\\n}\\n.fa-donate:before {\\n  content: \\\"\\\\f4b9\\\";\\n}\\n.fa-door-closed:before {\\n  content: \\\"\\\\f52a\\\";\\n}\\n.fa-door-open:before {\\n  content: \\\"\\\\f52b\\\";\\n}\\n.fa-dot-circle:before {\\n  content: \\\"\\\\f192\\\";\\n}\\n.fa-dove:before {\\n  content: \\\"\\\\f4ba\\\";\\n}\\n.fa-download:before {\\n  content: \\\"\\\\f019\\\";\\n}\\n.fa-draft2digital:before {\\n  content: \\\"\\\\f396\\\";\\n}\\n.fa-drafting-compass:before {\\n  content: \\\"\\\\f568\\\";\\n}\\n.fa-draw-polygon:before {\\n  content: \\\"\\\\f5ee\\\";\\n}\\n.fa-dribbble:before {\\n  content: \\\"\\\\f17d\\\";\\n}\\n.fa-dribbble-square:before {\\n  content: \\\"\\\\f397\\\";\\n}\\n.fa-dropbox:before {\\n  content: \\\"\\\\f16b\\\";\\n}\\n.fa-drum:before {\\n  content: \\\"\\\\f569\\\";\\n}\\n.fa-drum-steelpan:before {\\n  content: \\\"\\\\f56a\\\";\\n}\\n.fa-drupal:before {\\n  content: \\\"\\\\f1a9\\\";\\n}\\n.fa-dumbbell:before {\\n  content: \\\"\\\\f44b\\\";\\n}\\n.fa-dyalog:before {\\n  content: \\\"\\\\f399\\\";\\n}\\n.fa-earlybirds:before {\\n  content: \\\"\\\\f39a\\\";\\n}\\n.fa-ebay:before {\\n  content: \\\"\\\\f4f4\\\";\\n}\\n.fa-edge:before {\\n  content: \\\"\\\\f282\\\";\\n}\\n.fa-edit:before {\\n  content: \\\"\\\\f044\\\";\\n}\\n.fa-eject:before {\\n  content: \\\"\\\\f052\\\";\\n}\\n.fa-elementor:before {\\n  content: \\\"\\\\f430\\\";\\n}\\n.fa-ellipsis-h:before {\\n  content: \\\"\\\\f141\\\";\\n}\\n.fa-ellipsis-v:before {\\n  content: \\\"\\\\f142\\\";\\n}\\n.fa-ello:before {\\n  content: \\\"\\\\f5f1\\\";\\n}\\n.fa-ember:before {\\n  content: \\\"\\\\f423\\\";\\n}\\n.fa-empire:before {\\n  content: \\\"\\\\f1d1\\\";\\n}\\n.fa-envelope:before {\\n  content: \\\"\\\\f0e0\\\";\\n}\\n.fa-envelope-open:before {\\n  content: \\\"\\\\f2b6\\\";\\n}\\n.fa-envelope-square:before {\\n  content: \\\"\\\\f199\\\";\\n}\\n.fa-envira:before {\\n  content: \\\"\\\\f299\\\";\\n}\\n.fa-equals:before {\\n  content: \\\"\\\\f52c\\\";\\n}\\n.fa-eraser:before {\\n  content: \\\"\\\\f12d\\\";\\n}\\n.fa-erlang:before {\\n  content: \\\"\\\\f39d\\\";\\n}\\n.fa-ethereum:before {\\n  content: \\\"\\\\f42e\\\";\\n}\\n.fa-etsy:before {\\n  content: \\\"\\\\f2d7\\\";\\n}\\n.fa-euro-sign:before {\\n  content: \\\"\\\\f153\\\";\\n}\\n.fa-exchange-alt:before {\\n  content: \\\"\\\\f362\\\";\\n}\\n.fa-exclamation:before {\\n  content: \\\"\\\\f12a\\\";\\n}\\n.fa-exclamation-circle:before {\\n  content: \\\"\\\\f06a\\\";\\n}\\n.fa-exclamation-triangle:before {\\n  content: \\\"\\\\f071\\\";\\n}\\n.fa-expand:before {\\n  content: \\\"\\\\f065\\\";\\n}\\n.fa-expand-arrows-alt:before {\\n  content: \\\"\\\\f31e\\\";\\n}\\n.fa-expeditedssl:before {\\n  content: \\\"\\\\f23e\\\";\\n}\\n.fa-external-link-alt:before {\\n  content: \\\"\\\\f35d\\\";\\n}\\n.fa-external-link-square-alt:before {\\n  content: \\\"\\\\f360\\\";\\n}\\n.fa-eye:before {\\n  content: \\\"\\\\f06e\\\";\\n}\\n.fa-eye-dropper:before {\\n  content: \\\"\\\\f1fb\\\";\\n}\\n.fa-eye-slash:before {\\n  content: \\\"\\\\f070\\\";\\n}\\n.fa-facebook:before {\\n  content: \\\"\\\\f09a\\\";\\n}\\n.fa-facebook-f:before {\\n  content: \\\"\\\\f39e\\\";\\n}\\n.fa-facebook-messenger:before {\\n  content: \\\"\\\\f39f\\\";\\n}\\n.fa-facebook-square:before {\\n  content: \\\"\\\\f082\\\";\\n}\\n.fa-fast-backward:before {\\n  content: \\\"\\\\f049\\\";\\n}\\n.fa-fast-forward:before {\\n  content: \\\"\\\\f050\\\";\\n}\\n.fa-fax:before {\\n  content: \\\"\\\\f1ac\\\";\\n}\\n.fa-feather:before {\\n  content: \\\"\\\\f52d\\\";\\n}\\n.fa-feather-alt:before {\\n  content: \\\"\\\\f56b\\\";\\n}\\n.fa-female:before {\\n  content: \\\"\\\\f182\\\";\\n}\\n.fa-fighter-jet:before {\\n  content: \\\"\\\\f0fb\\\";\\n}\\n.fa-file:before {\\n  content: \\\"\\\\f15b\\\";\\n}\\n.fa-file-alt:before {\\n  content: \\\"\\\\f15c\\\";\\n}\\n.fa-file-archive:before {\\n  content: \\\"\\\\f1c6\\\";\\n}\\n.fa-file-audio:before {\\n  content: \\\"\\\\f1c7\\\";\\n}\\n.fa-file-code:before {\\n  content: \\\"\\\\f1c9\\\";\\n}\\n.fa-file-contract:before {\\n  content: \\\"\\\\f56c\\\";\\n}\\n.fa-file-download:before {\\n  content: \\\"\\\\f56d\\\";\\n}\\n.fa-file-excel:before {\\n  content: \\\"\\\\f1c3\\\";\\n}\\n.fa-file-export:before {\\n  content: \\\"\\\\f56e\\\";\\n}\\n.fa-file-image:before {\\n  content: \\\"\\\\f1c5\\\";\\n}\\n.fa-file-import:before {\\n  content: \\\"\\\\f56f\\\";\\n}\\n.fa-file-invoice:before {\\n  content: \\\"\\\\f570\\\";\\n}\\n.fa-file-invoice-dollar:before {\\n  content: \\\"\\\\f571\\\";\\n}\\n.fa-file-medical:before {\\n  content: \\\"\\\\f477\\\";\\n}\\n.fa-file-medical-alt:before {\\n  content: \\\"\\\\f478\\\";\\n}\\n.fa-file-pdf:before {\\n  content: \\\"\\\\f1c1\\\";\\n}\\n.fa-file-powerpoint:before {\\n  content: \\\"\\\\f1c4\\\";\\n}\\n.fa-file-prescription:before {\\n  content: \\\"\\\\f572\\\";\\n}\\n.fa-file-signature:before {\\n  content: \\\"\\\\f573\\\";\\n}\\n.fa-file-upload:before {\\n  content: \\\"\\\\f574\\\";\\n}\\n.fa-file-video:before {\\n  content: \\\"\\\\f1c8\\\";\\n}\\n.fa-file-word:before {\\n  content: \\\"\\\\f1c2\\\";\\n}\\n.fa-fill:before {\\n  content: \\\"\\\\f575\\\";\\n}\\n.fa-fill-drip:before {\\n  content: \\\"\\\\f576\\\";\\n}\\n.fa-film:before {\\n  content: \\\"\\\\f008\\\";\\n}\\n.fa-filter:before {\\n  content: \\\"\\\\f0b0\\\";\\n}\\n.fa-fingerprint:before {\\n  content: \\\"\\\\f577\\\";\\n}\\n.fa-fire:before {\\n  content: \\\"\\\\f06d\\\";\\n}\\n.fa-fire-extinguisher:before {\\n  content: \\\"\\\\f134\\\";\\n}\\n.fa-firefox:before {\\n  content: \\\"\\\\f269\\\";\\n}\\n.fa-first-aid:before {\\n  content: \\\"\\\\f479\\\";\\n}\\n.fa-first-order:before {\\n  content: \\\"\\\\f2b0\\\";\\n}\\n.fa-first-order-alt:before {\\n  content: \\\"\\\\f50a\\\";\\n}\\n.fa-firstdraft:before {\\n  content: \\\"\\\\f3a1\\\";\\n}\\n.fa-fish:before {\\n  content: \\\"\\\\f578\\\";\\n}\\n.fa-flag:before {\\n  content: \\\"\\\\f024\\\";\\n}\\n.fa-flag-checkered:before {\\n  content: \\\"\\\\f11e\\\";\\n}\\n.fa-flask:before {\\n  content: \\\"\\\\f0c3\\\";\\n}\\n.fa-flickr:before {\\n  content: \\\"\\\\f16e\\\";\\n}\\n.fa-flipboard:before {\\n  content: \\\"\\\\f44d\\\";\\n}\\n.fa-flushed:before {\\n  content: \\\"\\\\f579\\\";\\n}\\n.fa-fly:before {\\n  content: \\\"\\\\f417\\\";\\n}\\n.fa-folder:before {\\n  content: \\\"\\\\f07b\\\";\\n}\\n.fa-folder-open:before {\\n  content: \\\"\\\\f07c\\\";\\n}\\n.fa-font:before {\\n  content: \\\"\\\\f031\\\";\\n}\\n.fa-font-awesome:before {\\n  content: \\\"\\\\f2b4\\\";\\n}\\n.fa-font-awesome-alt:before {\\n  content: \\\"\\\\f35c\\\";\\n}\\n.fa-font-awesome-flag:before {\\n  content: \\\"\\\\f425\\\";\\n}\\n.fa-font-awesome-logo-full:before {\\n  content: \\\"\\\\f4e6\\\";\\n}\\n.fa-fonticons:before {\\n  content: \\\"\\\\f280\\\";\\n}\\n.fa-fonticons-fi:before {\\n  content: \\\"\\\\f3a2\\\";\\n}\\n.fa-football-ball:before {\\n  content: \\\"\\\\f44e\\\";\\n}\\n.fa-fort-awesome:before {\\n  content: \\\"\\\\f286\\\";\\n}\\n.fa-fort-awesome-alt:before {\\n  content: \\\"\\\\f3a3\\\";\\n}\\n.fa-forumbee:before {\\n  content: \\\"\\\\f211\\\";\\n}\\n.fa-forward:before {\\n  content: \\\"\\\\f04e\\\";\\n}\\n.fa-foursquare:before {\\n  content: \\\"\\\\f180\\\";\\n}\\n.fa-free-code-camp:before {\\n  content: \\\"\\\\f2c5\\\";\\n}\\n.fa-freebsd:before {\\n  content: \\\"\\\\f3a4\\\";\\n}\\n.fa-frog:before {\\n  content: \\\"\\\\f52e\\\";\\n}\\n.fa-frown:before {\\n  content: \\\"\\\\f119\\\";\\n}\\n.fa-frown-open:before {\\n  content: \\\"\\\\f57a\\\";\\n}\\n.fa-fulcrum:before {\\n  content: \\\"\\\\f50b\\\";\\n}\\n.fa-futbol:before {\\n  content: \\\"\\\\f1e3\\\";\\n}\\n.fa-galactic-republic:before {\\n  content: \\\"\\\\f50c\\\";\\n}\\n.fa-galactic-senate:before {\\n  content: \\\"\\\\f50d\\\";\\n}\\n.fa-gamepad:before {\\n  content: \\\"\\\\f11b\\\";\\n}\\n.fa-gas-pump:before {\\n  content: \\\"\\\\f52f\\\";\\n}\\n.fa-gavel:before {\\n  content: \\\"\\\\f0e3\\\";\\n}\\n.fa-gem:before {\\n  content: \\\"\\\\f3a5\\\";\\n}\\n.fa-genderless:before {\\n  content: \\\"\\\\f22d\\\";\\n}\\n.fa-get-pocket:before {\\n  content: \\\"\\\\f265\\\";\\n}\\n.fa-gg:before {\\n  content: \\\"\\\\f260\\\";\\n}\\n.fa-gg-circle:before {\\n  content: \\\"\\\\f261\\\";\\n}\\n.fa-gift:before {\\n  content: \\\"\\\\f06b\\\";\\n}\\n.fa-git:before {\\n  content: \\\"\\\\f1d3\\\";\\n}\\n.fa-git-square:before {\\n  content: \\\"\\\\f1d2\\\";\\n}\\n.fa-github:before {\\n  content: \\\"\\\\f09b\\\";\\n}\\n.fa-github-alt:before {\\n  content: \\\"\\\\f113\\\";\\n}\\n.fa-github-square:before {\\n  content: \\\"\\\\f092\\\";\\n}\\n.fa-gitkraken:before {\\n  content: \\\"\\\\f3a6\\\";\\n}\\n.fa-gitlab:before {\\n  content: \\\"\\\\f296\\\";\\n}\\n.fa-gitter:before {\\n  content: \\\"\\\\f426\\\";\\n}\\n.fa-glass-martini:before {\\n  content: \\\"\\\\f000\\\";\\n}\\n.fa-glass-martini-alt:before {\\n  content: \\\"\\\\f57b\\\";\\n}\\n.fa-glasses:before {\\n  content: \\\"\\\\f530\\\";\\n}\\n.fa-glide:before {\\n  content: \\\"\\\\f2a5\\\";\\n}\\n.fa-glide-g:before {\\n  content: \\\"\\\\f2a6\\\";\\n}\\n.fa-globe:before {\\n  content: \\\"\\\\f0ac\\\";\\n}\\n.fa-globe-africa:before {\\n  content: \\\"\\\\f57c\\\";\\n}\\n.fa-globe-americas:before {\\n  content: \\\"\\\\f57d\\\";\\n}\\n.fa-globe-asia:before {\\n  content: \\\"\\\\f57e\\\";\\n}\\n.fa-gofore:before {\\n  content: \\\"\\\\f3a7\\\";\\n}\\n.fa-golf-ball:before {\\n  content: \\\"\\\\f450\\\";\\n}\\n.fa-goodreads:before {\\n  content: \\\"\\\\f3a8\\\";\\n}\\n.fa-goodreads-g:before {\\n  content: \\\"\\\\f3a9\\\";\\n}\\n.fa-google:before {\\n  content: \\\"\\\\f1a0\\\";\\n}\\n.fa-google-drive:before {\\n  content: \\\"\\\\f3aa\\\";\\n}\\n.fa-google-play:before {\\n  content: \\\"\\\\f3ab\\\";\\n}\\n.fa-google-plus:before {\\n  content: \\\"\\\\f2b3\\\";\\n}\\n.fa-google-plus-g:before {\\n  content: \\\"\\\\f0d5\\\";\\n}\\n.fa-google-plus-square:before {\\n  content: \\\"\\\\f0d4\\\";\\n}\\n.fa-google-wallet:before {\\n  content: \\\"\\\\f1ee\\\";\\n}\\n.fa-graduation-cap:before {\\n  content: \\\"\\\\f19d\\\";\\n}\\n.fa-gratipay:before {\\n  content: \\\"\\\\f184\\\";\\n}\\n.fa-grav:before {\\n  content: \\\"\\\\f2d6\\\";\\n}\\n.fa-greater-than:before {\\n  content: \\\"\\\\f531\\\";\\n}\\n.fa-greater-than-equal:before {\\n  content: \\\"\\\\f532\\\";\\n}\\n.fa-grimace:before {\\n  content: \\\"\\\\f57f\\\";\\n}\\n.fa-grin:before {\\n  content: \\\"\\\\f580\\\";\\n}\\n.fa-grin-alt:before {\\n  content: \\\"\\\\f581\\\";\\n}\\n.fa-grin-beam:before {\\n  content: \\\"\\\\f582\\\";\\n}\\n.fa-grin-beam-sweat:before {\\n  content: \\\"\\\\f583\\\";\\n}\\n.fa-grin-hearts:before {\\n  content: \\\"\\\\f584\\\";\\n}\\n.fa-grin-squint:before {\\n  content: \\\"\\\\f585\\\";\\n}\\n.fa-grin-squint-tears:before {\\n  content: \\\"\\\\f586\\\";\\n}\\n.fa-grin-stars:before {\\n  content: \\\"\\\\f587\\\";\\n}\\n.fa-grin-tears:before {\\n  content: \\\"\\\\f588\\\";\\n}\\n.fa-grin-tongue:before {\\n  content: \\\"\\\\f589\\\";\\n}\\n.fa-grin-tongue-squint:before {\\n  content: \\\"\\\\f58a\\\";\\n}\\n.fa-grin-tongue-wink:before {\\n  content: \\\"\\\\f58b\\\";\\n}\\n.fa-grin-wink:before {\\n  content: \\\"\\\\f58c\\\";\\n}\\n.fa-grip-horizontal:before {\\n  content: \\\"\\\\f58d\\\";\\n}\\n.fa-grip-vertical:before {\\n  content: \\\"\\\\f58e\\\";\\n}\\n.fa-gripfire:before {\\n  content: \\\"\\\\f3ac\\\";\\n}\\n.fa-grunt:before {\\n  content: \\\"\\\\f3ad\\\";\\n}\\n.fa-gulp:before {\\n  content: \\\"\\\\f3ae\\\";\\n}\\n.fa-h-square:before {\\n  content: \\\"\\\\f0fd\\\";\\n}\\n.fa-hacker-news:before {\\n  content: \\\"\\\\f1d4\\\";\\n}\\n.fa-hacker-news-square:before {\\n  content: \\\"\\\\f3af\\\";\\n}\\n.fa-hackerrank:before {\\n  content: \\\"\\\\f5f7\\\";\\n}\\n.fa-hand-holding:before {\\n  content: \\\"\\\\f4bd\\\";\\n}\\n.fa-hand-holding-heart:before {\\n  content: \\\"\\\\f4be\\\";\\n}\\n.fa-hand-holding-usd:before {\\n  content: \\\"\\\\f4c0\\\";\\n}\\n.fa-hand-lizard:before {\\n  content: \\\"\\\\f258\\\";\\n}\\n.fa-hand-paper:before {\\n  content: \\\"\\\\f256\\\";\\n}\\n.fa-hand-peace:before {\\n  content: \\\"\\\\f25b\\\";\\n}\\n.fa-hand-point-down:before {\\n  content: \\\"\\\\f0a7\\\";\\n}\\n.fa-hand-point-left:before {\\n  content: \\\"\\\\f0a5\\\";\\n}\\n.fa-hand-point-right:before {\\n  content: \\\"\\\\f0a4\\\";\\n}\\n.fa-hand-point-up:before {\\n  content: \\\"\\\\f0a6\\\";\\n}\\n.fa-hand-pointer:before {\\n  content: \\\"\\\\f25a\\\";\\n}\\n.fa-hand-rock:before {\\n  content: \\\"\\\\f255\\\";\\n}\\n.fa-hand-scissors:before {\\n  content: \\\"\\\\f257\\\";\\n}\\n.fa-hand-spock:before {\\n  content: \\\"\\\\f259\\\";\\n}\\n.fa-hands:before {\\n  content: \\\"\\\\f4c2\\\";\\n}\\n.fa-hands-helping:before {\\n  content: \\\"\\\\f4c4\\\";\\n}\\n.fa-handshake:before {\\n  content: \\\"\\\\f2b5\\\";\\n}\\n.fa-hashtag:before {\\n  content: \\\"\\\\f292\\\";\\n}\\n.fa-hdd:before {\\n  content: \\\"\\\\f0a0\\\";\\n}\\n.fa-heading:before {\\n  content: \\\"\\\\f1dc\\\";\\n}\\n.fa-headphones:before {\\n  content: \\\"\\\\f025\\\";\\n}\\n.fa-headphones-alt:before {\\n  content: \\\"\\\\f58f\\\";\\n}\\n.fa-headset:before {\\n  content: \\\"\\\\f590\\\";\\n}\\n.fa-heart:before {\\n  content: \\\"\\\\f004\\\";\\n}\\n.fa-heartbeat:before {\\n  content: \\\"\\\\f21e\\\";\\n}\\n.fa-helicopter:before {\\n  content: \\\"\\\\f533\\\";\\n}\\n.fa-highlighter:before {\\n  content: \\\"\\\\f591\\\";\\n}\\n.fa-hips:before {\\n  content: \\\"\\\\f452\\\";\\n}\\n.fa-hire-a-helper:before {\\n  content: \\\"\\\\f3b0\\\";\\n}\\n.fa-history:before {\\n  content: \\\"\\\\f1da\\\";\\n}\\n.fa-hockey-puck:before {\\n  content: \\\"\\\\f453\\\";\\n}\\n.fa-home:before {\\n  content: \\\"\\\\f015\\\";\\n}\\n.fa-hooli:before {\\n  content: \\\"\\\\f427\\\";\\n}\\n.fa-hornbill:before {\\n  content: \\\"\\\\f592\\\";\\n}\\n.fa-hospital:before {\\n  content: \\\"\\\\f0f8\\\";\\n}\\n.fa-hospital-alt:before {\\n  content: \\\"\\\\f47d\\\";\\n}\\n.fa-hospital-symbol:before {\\n  content: \\\"\\\\f47e\\\";\\n}\\n.fa-hot-tub:before {\\n  content: \\\"\\\\f593\\\";\\n}\\n.fa-hotel:before {\\n  content: \\\"\\\\f594\\\";\\n}\\n.fa-hotjar:before {\\n  content: \\\"\\\\f3b1\\\";\\n}\\n.fa-hourglass:before {\\n  content: \\\"\\\\f254\\\";\\n}\\n.fa-hourglass-end:before {\\n  content: \\\"\\\\f253\\\";\\n}\\n.fa-hourglass-half:before {\\n  content: \\\"\\\\f252\\\";\\n}\\n.fa-hourglass-start:before {\\n  content: \\\"\\\\f251\\\";\\n}\\n.fa-houzz:before {\\n  content: \\\"\\\\f27c\\\";\\n}\\n.fa-html5:before {\\n  content: \\\"\\\\f13b\\\";\\n}\\n.fa-hubspot:before {\\n  content: \\\"\\\\f3b2\\\";\\n}\\n.fa-i-cursor:before {\\n  content: \\\"\\\\f246\\\";\\n}\\n.fa-id-badge:before {\\n  content: \\\"\\\\f2c1\\\";\\n}\\n.fa-id-card:before {\\n  content: \\\"\\\\f2c2\\\";\\n}\\n.fa-id-card-alt:before {\\n  content: \\\"\\\\f47f\\\";\\n}\\n.fa-image:before {\\n  content: \\\"\\\\f03e\\\";\\n}\\n.fa-images:before {\\n  content: \\\"\\\\f302\\\";\\n}\\n.fa-imdb:before {\\n  content: \\\"\\\\f2d8\\\";\\n}\\n.fa-inbox:before {\\n  content: \\\"\\\\f01c\\\";\\n}\\n.fa-indent:before {\\n  content: \\\"\\\\f03c\\\";\\n}\\n.fa-industry:before {\\n  content: \\\"\\\\f275\\\";\\n}\\n.fa-infinity:before {\\n  content: \\\"\\\\f534\\\";\\n}\\n.fa-info:before {\\n  content: \\\"\\\\f129\\\";\\n}\\n.fa-info-circle:before {\\n  content: \\\"\\\\f05a\\\";\\n}\\n.fa-instagram:before {\\n  content: \\\"\\\\f16d\\\";\\n}\\n.fa-internet-explorer:before {\\n  content: \\\"\\\\f26b\\\";\\n}\\n.fa-ioxhost:before {\\n  content: \\\"\\\\f208\\\";\\n}\\n.fa-italic:before {\\n  content: \\\"\\\\f033\\\";\\n}\\n.fa-itunes:before {\\n  content: \\\"\\\\f3b4\\\";\\n}\\n.fa-itunes-note:before {\\n  content: \\\"\\\\f3b5\\\";\\n}\\n.fa-java:before {\\n  content: \\\"\\\\f4e4\\\";\\n}\\n.fa-jedi-order:before {\\n  content: \\\"\\\\f50e\\\";\\n}\\n.fa-jenkins:before {\\n  content: \\\"\\\\f3b6\\\";\\n}\\n.fa-joget:before {\\n  content: \\\"\\\\f3b7\\\";\\n}\\n.fa-joint:before {\\n  content: \\\"\\\\f595\\\";\\n}\\n.fa-joomla:before {\\n  content: \\\"\\\\f1aa\\\";\\n}\\n.fa-js:before {\\n  content: \\\"\\\\f3b8\\\";\\n}\\n.fa-js-square:before {\\n  content: \\\"\\\\f3b9\\\";\\n}\\n.fa-jsfiddle:before {\\n  content: \\\"\\\\f1cc\\\";\\n}\\n.fa-kaggle:before {\\n  content: \\\"\\\\f5fa\\\";\\n}\\n.fa-key:before {\\n  content: \\\"\\\\f084\\\";\\n}\\n.fa-keybase:before {\\n  content: \\\"\\\\f4f5\\\";\\n}\\n.fa-keyboard:before {\\n  content: \\\"\\\\f11c\\\";\\n}\\n.fa-keycdn:before {\\n  content: \\\"\\\\f3ba\\\";\\n}\\n.fa-kickstarter:before {\\n  content: \\\"\\\\f3bb\\\";\\n}\\n.fa-kickstarter-k:before {\\n  content: \\\"\\\\f3bc\\\";\\n}\\n.fa-kiss:before {\\n  content: \\\"\\\\f596\\\";\\n}\\n.fa-kiss-beam:before {\\n  content: \\\"\\\\f597\\\";\\n}\\n.fa-kiss-wink-heart:before {\\n  content: \\\"\\\\f598\\\";\\n}\\n.fa-kiwi-bird:before {\\n  content: \\\"\\\\f535\\\";\\n}\\n.fa-korvue:before {\\n  content: \\\"\\\\f42f\\\";\\n}\\n.fa-language:before {\\n  content: \\\"\\\\f1ab\\\";\\n}\\n.fa-laptop:before {\\n  content: \\\"\\\\f109\\\";\\n}\\n.fa-laptop-code:before {\\n  content: \\\"\\\\f5fc\\\";\\n}\\n.fa-laravel:before {\\n  content: \\\"\\\\f3bd\\\";\\n}\\n.fa-lastfm:before {\\n  content: \\\"\\\\f202\\\";\\n}\\n.fa-lastfm-square:before {\\n  content: \\\"\\\\f203\\\";\\n}\\n.fa-laugh:before {\\n  content: \\\"\\\\f599\\\";\\n}\\n.fa-laugh-beam:before {\\n  content: \\\"\\\\f59a\\\";\\n}\\n.fa-laugh-squint:before {\\n  content: \\\"\\\\f59b\\\";\\n}\\n.fa-laugh-wink:before {\\n  content: \\\"\\\\f59c\\\";\\n}\\n.fa-layer-group:before {\\n  content: \\\"\\\\f5fd\\\";\\n}\\n.fa-leaf:before {\\n  content: \\\"\\\\f06c\\\";\\n}\\n.fa-leanpub:before {\\n  content: \\\"\\\\f212\\\";\\n}\\n.fa-lemon:before {\\n  content: \\\"\\\\f094\\\";\\n}\\n.fa-less:before {\\n  content: \\\"\\\\f41d\\\";\\n}\\n.fa-less-than:before {\\n  content: \\\"\\\\f536\\\";\\n}\\n.fa-less-than-equal:before {\\n  content: \\\"\\\\f537\\\";\\n}\\n.fa-level-down-alt:before {\\n  content: \\\"\\\\f3be\\\";\\n}\\n.fa-level-up-alt:before {\\n  content: \\\"\\\\f3bf\\\";\\n}\\n.fa-life-ring:before {\\n  content: \\\"\\\\f1cd\\\";\\n}\\n.fa-lightbulb:before {\\n  content: \\\"\\\\f0eb\\\";\\n}\\n.fa-line:before {\\n  content: \\\"\\\\f3c0\\\";\\n}\\n.fa-link:before {\\n  content: \\\"\\\\f0c1\\\";\\n}\\n.fa-linkedin:before {\\n  content: \\\"\\\\f08c\\\";\\n}\\n.fa-linkedin-in:before {\\n  content: \\\"\\\\f0e1\\\";\\n}\\n.fa-linode:before {\\n  content: \\\"\\\\f2b8\\\";\\n}\\n.fa-linux:before {\\n  content: \\\"\\\\f17c\\\";\\n}\\n.fa-lira-sign:before {\\n  content: \\\"\\\\f195\\\";\\n}\\n.fa-list:before {\\n  content: \\\"\\\\f03a\\\";\\n}\\n.fa-list-alt:before {\\n  content: \\\"\\\\f022\\\";\\n}\\n.fa-list-ol:before {\\n  content: \\\"\\\\f0cb\\\";\\n}\\n.fa-list-ul:before {\\n  content: \\\"\\\\f0ca\\\";\\n}\\n.fa-location-arrow:before {\\n  content: \\\"\\\\f124\\\";\\n}\\n.fa-lock:before {\\n  content: \\\"\\\\f023\\\";\\n}\\n.fa-lock-open:before {\\n  content: \\\"\\\\f3c1\\\";\\n}\\n.fa-long-arrow-alt-down:before {\\n  content: \\\"\\\\f309\\\";\\n}\\n.fa-long-arrow-alt-left:before {\\n  content: \\\"\\\\f30a\\\";\\n}\\n.fa-long-arrow-alt-right:before {\\n  content: \\\"\\\\f30b\\\";\\n}\\n.fa-long-arrow-alt-up:before {\\n  content: \\\"\\\\f30c\\\";\\n}\\n.fa-low-vision:before {\\n  content: \\\"\\\\f2a8\\\";\\n}\\n.fa-luggage-cart:before {\\n  content: \\\"\\\\f59d\\\";\\n}\\n.fa-lyft:before {\\n  content: \\\"\\\\f3c3\\\";\\n}\\n.fa-magento:before {\\n  content: \\\"\\\\f3c4\\\";\\n}\\n.fa-magic:before {\\n  content: \\\"\\\\f0d0\\\";\\n}\\n.fa-magnet:before {\\n  content: \\\"\\\\f076\\\";\\n}\\n.fa-mailchimp:before {\\n  content: \\\"\\\\f59e\\\";\\n}\\n.fa-male:before {\\n  content: \\\"\\\\f183\\\";\\n}\\n.fa-mandalorian:before {\\n  content: \\\"\\\\f50f\\\";\\n}\\n.fa-map:before {\\n  content: \\\"\\\\f279\\\";\\n}\\n.fa-map-marked:before {\\n  content: \\\"\\\\f59f\\\";\\n}\\n.fa-map-marked-alt:before {\\n  content: \\\"\\\\f5a0\\\";\\n}\\n.fa-map-marker:before {\\n  content: \\\"\\\\f041\\\";\\n}\\n.fa-map-marker-alt:before {\\n  content: \\\"\\\\f3c5\\\";\\n}\\n.fa-map-pin:before {\\n  content: \\\"\\\\f276\\\";\\n}\\n.fa-map-signs:before {\\n  content: \\\"\\\\f277\\\";\\n}\\n.fa-markdown:before {\\n  content: \\\"\\\\f60f\\\";\\n}\\n.fa-marker:before {\\n  content: \\\"\\\\f5a1\\\";\\n}\\n.fa-mars:before {\\n  content: \\\"\\\\f222\\\";\\n}\\n.fa-mars-double:before {\\n  content: \\\"\\\\f227\\\";\\n}\\n.fa-mars-stroke:before {\\n  content: \\\"\\\\f229\\\";\\n}\\n.fa-mars-stroke-h:before {\\n  content: \\\"\\\\f22b\\\";\\n}\\n.fa-mars-stroke-v:before {\\n  content: \\\"\\\\f22a\\\";\\n}\\n.fa-mastodon:before {\\n  content: \\\"\\\\f4f6\\\";\\n}\\n.fa-maxcdn:before {\\n  content: \\\"\\\\f136\\\";\\n}\\n.fa-medal:before {\\n  content: \\\"\\\\f5a2\\\";\\n}\\n.fa-medapps:before {\\n  content: \\\"\\\\f3c6\\\";\\n}\\n.fa-medium:before {\\n  content: \\\"\\\\f23a\\\";\\n}\\n.fa-medium-m:before {\\n  content: \\\"\\\\f3c7\\\";\\n}\\n.fa-medkit:before {\\n  content: \\\"\\\\f0fa\\\";\\n}\\n.fa-medrt:before {\\n  content: \\\"\\\\f3c8\\\";\\n}\\n.fa-meetup:before {\\n  content: \\\"\\\\f2e0\\\";\\n}\\n.fa-megaport:before {\\n  content: \\\"\\\\f5a3\\\";\\n}\\n.fa-meh:before {\\n  content: \\\"\\\\f11a\\\";\\n}\\n.fa-meh-blank:before {\\n  content: \\\"\\\\f5a4\\\";\\n}\\n.fa-meh-rolling-eyes:before {\\n  content: \\\"\\\\f5a5\\\";\\n}\\n.fa-memory:before {\\n  content: \\\"\\\\f538\\\";\\n}\\n.fa-mercury:before {\\n  content: \\\"\\\\f223\\\";\\n}\\n.fa-microchip:before {\\n  content: \\\"\\\\f2db\\\";\\n}\\n.fa-microphone:before {\\n  content: \\\"\\\\f130\\\";\\n}\\n.fa-microphone-alt:before {\\n  content: \\\"\\\\f3c9\\\";\\n}\\n.fa-microphone-alt-slash:before {\\n  content: \\\"\\\\f539\\\";\\n}\\n.fa-microphone-slash:before {\\n  content: \\\"\\\\f131\\\";\\n}\\n.fa-microscope:before {\\n  content: \\\"\\\\f610\\\";\\n}\\n.fa-microsoft:before {\\n  content: \\\"\\\\f3ca\\\";\\n}\\n.fa-minus:before {\\n  content: \\\"\\\\f068\\\";\\n}\\n.fa-minus-circle:before {\\n  content: \\\"\\\\f056\\\";\\n}\\n.fa-minus-square:before {\\n  content: \\\"\\\\f146\\\";\\n}\\n.fa-mix:before {\\n  content: \\\"\\\\f3cb\\\";\\n}\\n.fa-mixcloud:before {\\n  content: \\\"\\\\f289\\\";\\n}\\n.fa-mizuni:before {\\n  content: \\\"\\\\f3cc\\\";\\n}\\n.fa-mobile:before {\\n  content: \\\"\\\\f10b\\\";\\n}\\n.fa-mobile-alt:before {\\n  content: \\\"\\\\f3cd\\\";\\n}\\n.fa-modx:before {\\n  content: \\\"\\\\f285\\\";\\n}\\n.fa-monero:before {\\n  content: \\\"\\\\f3d0\\\";\\n}\\n.fa-money-bill:before {\\n  content: \\\"\\\\f0d6\\\";\\n}\\n.fa-money-bill-alt:before {\\n  content: \\\"\\\\f3d1\\\";\\n}\\n.fa-money-bill-wave:before {\\n  content: \\\"\\\\f53a\\\";\\n}\\n.fa-money-bill-wave-alt:before {\\n  content: \\\"\\\\f53b\\\";\\n}\\n.fa-money-check:before {\\n  content: \\\"\\\\f53c\\\";\\n}\\n.fa-money-check-alt:before {\\n  content: \\\"\\\\f53d\\\";\\n}\\n.fa-monument:before {\\n  content: \\\"\\\\f5a6\\\";\\n}\\n.fa-moon:before {\\n  content: \\\"\\\\f186\\\";\\n}\\n.fa-mortar-pestle:before {\\n  content: \\\"\\\\f5a7\\\";\\n}\\n.fa-motorcycle:before {\\n  content: \\\"\\\\f21c\\\";\\n}\\n.fa-mouse-pointer:before {\\n  content: \\\"\\\\f245\\\";\\n}\\n.fa-music:before {\\n  content: \\\"\\\\f001\\\";\\n}\\n.fa-napster:before {\\n  content: \\\"\\\\f3d2\\\";\\n}\\n.fa-neos:before {\\n  content: \\\"\\\\f612\\\";\\n}\\n.fa-neuter:before {\\n  content: \\\"\\\\f22c\\\";\\n}\\n.fa-newspaper:before {\\n  content: \\\"\\\\f1ea\\\";\\n}\\n.fa-nimblr:before {\\n  content: \\\"\\\\f5a8\\\";\\n}\\n.fa-nintendo-switch:before {\\n  content: \\\"\\\\f418\\\";\\n}\\n.fa-node:before {\\n  content: \\\"\\\\f419\\\";\\n}\\n.fa-node-js:before {\\n  content: \\\"\\\\f3d3\\\";\\n}\\n.fa-not-equal:before {\\n  content: \\\"\\\\f53e\\\";\\n}\\n.fa-notes-medical:before {\\n  content: \\\"\\\\f481\\\";\\n}\\n.fa-npm:before {\\n  content: \\\"\\\\f3d4\\\";\\n}\\n.fa-ns8:before {\\n  content: \\\"\\\\f3d5\\\";\\n}\\n.fa-nutritionix:before {\\n  content: \\\"\\\\f3d6\\\";\\n}\\n.fa-object-group:before {\\n  content: \\\"\\\\f247\\\";\\n}\\n.fa-object-ungroup:before {\\n  content: \\\"\\\\f248\\\";\\n}\\n.fa-odnoklassniki:before {\\n  content: \\\"\\\\f263\\\";\\n}\\n.fa-odnoklassniki-square:before {\\n  content: \\\"\\\\f264\\\";\\n}\\n.fa-oil-can:before {\\n  content: \\\"\\\\f613\\\";\\n}\\n.fa-old-republic:before {\\n  content: \\\"\\\\f510\\\";\\n}\\n.fa-opencart:before {\\n  content: \\\"\\\\f23d\\\";\\n}\\n.fa-openid:before {\\n  content: \\\"\\\\f19b\\\";\\n}\\n.fa-opera:before {\\n  content: \\\"\\\\f26a\\\";\\n}\\n.fa-optin-monster:before {\\n  content: \\\"\\\\f23c\\\";\\n}\\n.fa-osi:before {\\n  content: \\\"\\\\f41a\\\";\\n}\\n.fa-outdent:before {\\n  content: \\\"\\\\f03b\\\";\\n}\\n.fa-page4:before {\\n  content: \\\"\\\\f3d7\\\";\\n}\\n.fa-pagelines:before {\\n  content: \\\"\\\\f18c\\\";\\n}\\n.fa-paint-brush:before {\\n  content: \\\"\\\\f1fc\\\";\\n}\\n.fa-paint-roller:before {\\n  content: \\\"\\\\f5aa\\\";\\n}\\n.fa-palette:before {\\n  content: \\\"\\\\f53f\\\";\\n}\\n.fa-palfed:before {\\n  content: \\\"\\\\f3d8\\\";\\n}\\n.fa-pallet:before {\\n  content: \\\"\\\\f482\\\";\\n}\\n.fa-paper-plane:before {\\n  content: \\\"\\\\f1d8\\\";\\n}\\n.fa-paperclip:before {\\n  content: \\\"\\\\f0c6\\\";\\n}\\n.fa-parachute-box:before {\\n  content: \\\"\\\\f4cd\\\";\\n}\\n.fa-paragraph:before {\\n  content: \\\"\\\\f1dd\\\";\\n}\\n.fa-parking:before {\\n  content: \\\"\\\\f540\\\";\\n}\\n.fa-passport:before {\\n  content: \\\"\\\\f5ab\\\";\\n}\\n.fa-paste:before {\\n  content: \\\"\\\\f0ea\\\";\\n}\\n.fa-patreon:before {\\n  content: \\\"\\\\f3d9\\\";\\n}\\n.fa-pause:before {\\n  content: \\\"\\\\f04c\\\";\\n}\\n.fa-pause-circle:before {\\n  content: \\\"\\\\f28b\\\";\\n}\\n.fa-paw:before {\\n  content: \\\"\\\\f1b0\\\";\\n}\\n.fa-paypal:before {\\n  content: \\\"\\\\f1ed\\\";\\n}\\n.fa-pen:before {\\n  content: \\\"\\\\f304\\\";\\n}\\n.fa-pen-alt:before {\\n  content: \\\"\\\\f305\\\";\\n}\\n.fa-pen-fancy:before {\\n  content: \\\"\\\\f5ac\\\";\\n}\\n.fa-pen-nib:before {\\n  content: \\\"\\\\f5ad\\\";\\n}\\n.fa-pen-square:before {\\n  content: \\\"\\\\f14b\\\";\\n}\\n.fa-pencil-alt:before {\\n  content: \\\"\\\\f303\\\";\\n}\\n.fa-pencil-ruler:before {\\n  content: \\\"\\\\f5ae\\\";\\n}\\n.fa-people-carry:before {\\n  content: \\\"\\\\f4ce\\\";\\n}\\n.fa-percent:before {\\n  content: \\\"\\\\f295\\\";\\n}\\n.fa-percentage:before {\\n  content: \\\"\\\\f541\\\";\\n}\\n.fa-periscope:before {\\n  content: \\\"\\\\f3da\\\";\\n}\\n.fa-phabricator:before {\\n  content: \\\"\\\\f3db\\\";\\n}\\n.fa-phoenix-framework:before {\\n  content: \\\"\\\\f3dc\\\";\\n}\\n.fa-phoenix-squadron:before {\\n  content: \\\"\\\\f511\\\";\\n}\\n.fa-phone:before {\\n  content: \\\"\\\\f095\\\";\\n}\\n.fa-phone-slash:before {\\n  content: \\\"\\\\f3dd\\\";\\n}\\n.fa-phone-square:before {\\n  content: \\\"\\\\f098\\\";\\n}\\n.fa-phone-volume:before {\\n  content: \\\"\\\\f2a0\\\";\\n}\\n.fa-php:before {\\n  content: \\\"\\\\f457\\\";\\n}\\n.fa-pied-piper:before {\\n  content: \\\"\\\\f2ae\\\";\\n}\\n.fa-pied-piper-alt:before {\\n  content: \\\"\\\\f1a8\\\";\\n}\\n.fa-pied-piper-hat:before {\\n  content: \\\"\\\\f4e5\\\";\\n}\\n.fa-pied-piper-pp:before {\\n  content: \\\"\\\\f1a7\\\";\\n}\\n.fa-piggy-bank:before {\\n  content: \\\"\\\\f4d3\\\";\\n}\\n.fa-pills:before {\\n  content: \\\"\\\\f484\\\";\\n}\\n.fa-pinterest:before {\\n  content: \\\"\\\\f0d2\\\";\\n}\\n.fa-pinterest-p:before {\\n  content: \\\"\\\\f231\\\";\\n}\\n.fa-pinterest-square:before {\\n  content: \\\"\\\\f0d3\\\";\\n}\\n.fa-plane:before {\\n  content: \\\"\\\\f072\\\";\\n}\\n.fa-plane-arrival:before {\\n  content: \\\"\\\\f5af\\\";\\n}\\n.fa-plane-departure:before {\\n  content: \\\"\\\\f5b0\\\";\\n}\\n.fa-play:before {\\n  content: \\\"\\\\f04b\\\";\\n}\\n.fa-play-circle:before {\\n  content: \\\"\\\\f144\\\";\\n}\\n.fa-playstation:before {\\n  content: \\\"\\\\f3df\\\";\\n}\\n.fa-plug:before {\\n  content: \\\"\\\\f1e6\\\";\\n}\\n.fa-plus:before {\\n  content: \\\"\\\\f067\\\";\\n}\\n.fa-plus-circle:before {\\n  content: \\\"\\\\f055\\\";\\n}\\n.fa-plus-square:before {\\n  content: \\\"\\\\f0fe\\\";\\n}\\n.fa-podcast:before {\\n  content: \\\"\\\\f2ce\\\";\\n}\\n.fa-poo:before {\\n  content: \\\"\\\\f2fe\\\";\\n}\\n.fa-poop:before {\\n  content: \\\"\\\\f619\\\";\\n}\\n.fa-portrait:before {\\n  content: \\\"\\\\f3e0\\\";\\n}\\n.fa-pound-sign:before {\\n  content: \\\"\\\\f154\\\";\\n}\\n.fa-power-off:before {\\n  content: \\\"\\\\f011\\\";\\n}\\n.fa-prescription:before {\\n  content: \\\"\\\\f5b1\\\";\\n}\\n.fa-prescription-bottle:before {\\n  content: \\\"\\\\f485\\\";\\n}\\n.fa-prescription-bottle-alt:before {\\n  content: \\\"\\\\f486\\\";\\n}\\n.fa-print:before {\\n  content: \\\"\\\\f02f\\\";\\n}\\n.fa-procedures:before {\\n  content: \\\"\\\\f487\\\";\\n}\\n.fa-product-hunt:before {\\n  content: \\\"\\\\f288\\\";\\n}\\n.fa-project-diagram:before {\\n  content: \\\"\\\\f542\\\";\\n}\\n.fa-pushed:before {\\n  content: \\\"\\\\f3e1\\\";\\n}\\n.fa-puzzle-piece:before {\\n  content: \\\"\\\\f12e\\\";\\n}\\n.fa-python:before {\\n  content: \\\"\\\\f3e2\\\";\\n}\\n.fa-qq:before {\\n  content: \\\"\\\\f1d6\\\";\\n}\\n.fa-qrcode:before {\\n  content: \\\"\\\\f029\\\";\\n}\\n.fa-question:before {\\n  content: \\\"\\\\f128\\\";\\n}\\n.fa-question-circle:before {\\n  content: \\\"\\\\f059\\\";\\n}\\n.fa-quidditch:before {\\n  content: \\\"\\\\f458\\\";\\n}\\n.fa-quinscape:before {\\n  content: \\\"\\\\f459\\\";\\n}\\n.fa-quora:before {\\n  content: \\\"\\\\f2c4\\\";\\n}\\n.fa-quote-left:before {\\n  content: \\\"\\\\f10d\\\";\\n}\\n.fa-quote-right:before {\\n  content: \\\"\\\\f10e\\\";\\n}\\n.fa-r-project:before {\\n  content: \\\"\\\\f4f7\\\";\\n}\\n.fa-random:before {\\n  content: \\\"\\\\f074\\\";\\n}\\n.fa-ravelry:before {\\n  content: \\\"\\\\f2d9\\\";\\n}\\n.fa-react:before {\\n  content: \\\"\\\\f41b\\\";\\n}\\n.fa-readme:before {\\n  content: \\\"\\\\f4d5\\\";\\n}\\n.fa-rebel:before {\\n  content: \\\"\\\\f1d0\\\";\\n}\\n.fa-receipt:before {\\n  content: \\\"\\\\f543\\\";\\n}\\n.fa-recycle:before {\\n  content: \\\"\\\\f1b8\\\";\\n}\\n.fa-red-river:before {\\n  content: \\\"\\\\f3e3\\\";\\n}\\n.fa-reddit:before {\\n  content: \\\"\\\\f1a1\\\";\\n}\\n.fa-reddit-alien:before {\\n  content: \\\"\\\\f281\\\";\\n}\\n.fa-reddit-square:before {\\n  content: \\\"\\\\f1a2\\\";\\n}\\n.fa-redo:before {\\n  content: \\\"\\\\f01e\\\";\\n}\\n.fa-redo-alt:before {\\n  content: \\\"\\\\f2f9\\\";\\n}\\n.fa-registered:before {\\n  content: \\\"\\\\f25d\\\";\\n}\\n.fa-rendact:before {\\n  content: \\\"\\\\f3e4\\\";\\n}\\n.fa-renren:before {\\n  content: \\\"\\\\f18b\\\";\\n}\\n.fa-reply:before {\\n  content: \\\"\\\\f3e5\\\";\\n}\\n.fa-reply-all:before {\\n  content: \\\"\\\\f122\\\";\\n}\\n.fa-replyd:before {\\n  content: \\\"\\\\f3e6\\\";\\n}\\n.fa-researchgate:before {\\n  content: \\\"\\\\f4f8\\\";\\n}\\n.fa-resolving:before {\\n  content: \\\"\\\\f3e7\\\";\\n}\\n.fa-retweet:before {\\n  content: \\\"\\\\f079\\\";\\n}\\n.fa-rev:before {\\n  content: \\\"\\\\f5b2\\\";\\n}\\n.fa-ribbon:before {\\n  content: \\\"\\\\f4d6\\\";\\n}\\n.fa-road:before {\\n  content: \\\"\\\\f018\\\";\\n}\\n.fa-robot:before {\\n  content: \\\"\\\\f544\\\";\\n}\\n.fa-rocket:before {\\n  content: \\\"\\\\f135\\\";\\n}\\n.fa-rocketchat:before {\\n  content: \\\"\\\\f3e8\\\";\\n}\\n.fa-rockrms:before {\\n  content: \\\"\\\\f3e9\\\";\\n}\\n.fa-route:before {\\n  content: \\\"\\\\f4d7\\\";\\n}\\n.fa-rss:before {\\n  content: \\\"\\\\f09e\\\";\\n}\\n.fa-rss-square:before {\\n  content: \\\"\\\\f143\\\";\\n}\\n.fa-ruble-sign:before {\\n  content: \\\"\\\\f158\\\";\\n}\\n.fa-ruler:before {\\n  content: \\\"\\\\f545\\\";\\n}\\n.fa-ruler-combined:before {\\n  content: \\\"\\\\f546\\\";\\n}\\n.fa-ruler-horizontal:before {\\n  content: \\\"\\\\f547\\\";\\n}\\n.fa-ruler-vertical:before {\\n  content: \\\"\\\\f548\\\";\\n}\\n.fa-rupee-sign:before {\\n  content: \\\"\\\\f156\\\";\\n}\\n.fa-sad-cry:before {\\n  content: \\\"\\\\f5b3\\\";\\n}\\n.fa-sad-tear:before {\\n  content: \\\"\\\\f5b4\\\";\\n}\\n.fa-safari:before {\\n  content: \\\"\\\\f267\\\";\\n}\\n.fa-sass:before {\\n  content: \\\"\\\\f41e\\\";\\n}\\n.fa-save:before {\\n  content: \\\"\\\\f0c7\\\";\\n}\\n.fa-schlix:before {\\n  content: \\\"\\\\f3ea\\\";\\n}\\n.fa-school:before {\\n  content: \\\"\\\\f549\\\";\\n}\\n.fa-screwdriver:before {\\n  content: \\\"\\\\f54a\\\";\\n}\\n.fa-scribd:before {\\n  content: \\\"\\\\f28a\\\";\\n}\\n.fa-search:before {\\n  content: \\\"\\\\f002\\\";\\n}\\n.fa-search-minus:before {\\n  content: \\\"\\\\f010\\\";\\n}\\n.fa-search-plus:before {\\n  content: \\\"\\\\f00e\\\";\\n}\\n.fa-searchengin:before {\\n  content: \\\"\\\\f3eb\\\";\\n}\\n.fa-seedling:before {\\n  content: \\\"\\\\f4d8\\\";\\n}\\n.fa-sellcast:before {\\n  content: \\\"\\\\f2da\\\";\\n}\\n.fa-sellsy:before {\\n  content: \\\"\\\\f213\\\";\\n}\\n.fa-server:before {\\n  content: \\\"\\\\f233\\\";\\n}\\n.fa-servicestack:before {\\n  content: \\\"\\\\f3ec\\\";\\n}\\n.fa-shapes:before {\\n  content: \\\"\\\\f61f\\\";\\n}\\n.fa-share:before {\\n  content: \\\"\\\\f064\\\";\\n}\\n.fa-share-alt:before {\\n  content: \\\"\\\\f1e0\\\";\\n}\\n.fa-share-alt-square:before {\\n  content: \\\"\\\\f1e1\\\";\\n}\\n.fa-share-square:before {\\n  content: \\\"\\\\f14d\\\";\\n}\\n.fa-shekel-sign:before {\\n  content: \\\"\\\\f20b\\\";\\n}\\n.fa-shield-alt:before {\\n  content: \\\"\\\\f3ed\\\";\\n}\\n.fa-ship:before {\\n  content: \\\"\\\\f21a\\\";\\n}\\n.fa-shipping-fast:before {\\n  content: \\\"\\\\f48b\\\";\\n}\\n.fa-shirtsinbulk:before {\\n  content: \\\"\\\\f214\\\";\\n}\\n.fa-shoe-prints:before {\\n  content: \\\"\\\\f54b\\\";\\n}\\n.fa-shopping-bag:before {\\n  content: \\\"\\\\f290\\\";\\n}\\n.fa-shopping-basket:before {\\n  content: \\\"\\\\f291\\\";\\n}\\n.fa-shopping-cart:before {\\n  content: \\\"\\\\f07a\\\";\\n}\\n.fa-shopware:before {\\n  content: \\\"\\\\f5b5\\\";\\n}\\n.fa-shower:before {\\n  content: \\\"\\\\f2cc\\\";\\n}\\n.fa-shuttle-van:before {\\n  content: \\\"\\\\f5b6\\\";\\n}\\n.fa-sign:before {\\n  content: \\\"\\\\f4d9\\\";\\n}\\n.fa-sign-in-alt:before {\\n  content: \\\"\\\\f2f6\\\";\\n}\\n.fa-sign-language:before {\\n  content: \\\"\\\\f2a7\\\";\\n}\\n.fa-sign-out-alt:before {\\n  content: \\\"\\\\f2f5\\\";\\n}\\n.fa-signal:before {\\n  content: \\\"\\\\f012\\\";\\n}\\n.fa-signature:before {\\n  content: \\\"\\\\f5b7\\\";\\n}\\n.fa-simplybuilt:before {\\n  content: \\\"\\\\f215\\\";\\n}\\n.fa-sistrix:before {\\n  content: \\\"\\\\f3ee\\\";\\n}\\n.fa-sitemap:before {\\n  content: \\\"\\\\f0e8\\\";\\n}\\n.fa-sith:before {\\n  content: \\\"\\\\f512\\\";\\n}\\n.fa-skull:before {\\n  content: \\\"\\\\f54c\\\";\\n}\\n.fa-skyatlas:before {\\n  content: \\\"\\\\f216\\\";\\n}\\n.fa-skype:before {\\n  content: \\\"\\\\f17e\\\";\\n}\\n.fa-slack:before {\\n  content: \\\"\\\\f198\\\";\\n}\\n.fa-slack-hash:before {\\n  content: \\\"\\\\f3ef\\\";\\n}\\n.fa-sliders-h:before {\\n  content: \\\"\\\\f1de\\\";\\n}\\n.fa-slideshare:before {\\n  content: \\\"\\\\f1e7\\\";\\n}\\n.fa-smile:before {\\n  content: \\\"\\\\f118\\\";\\n}\\n.fa-smile-beam:before {\\n  content: \\\"\\\\f5b8\\\";\\n}\\n.fa-smile-wink:before {\\n  content: \\\"\\\\f4da\\\";\\n}\\n.fa-smoking:before {\\n  content: \\\"\\\\f48d\\\";\\n}\\n.fa-smoking-ban:before {\\n  content: \\\"\\\\f54d\\\";\\n}\\n.fa-snapchat:before {\\n  content: \\\"\\\\f2ab\\\";\\n}\\n.fa-snapchat-ghost:before {\\n  content: \\\"\\\\f2ac\\\";\\n}\\n.fa-snapchat-square:before {\\n  content: \\\"\\\\f2ad\\\";\\n}\\n.fa-snowflake:before {\\n  content: \\\"\\\\f2dc\\\";\\n}\\n.fa-solar-panel:before {\\n  content: \\\"\\\\f5ba\\\";\\n}\\n.fa-sort:before {\\n  content: \\\"\\\\f0dc\\\";\\n}\\n.fa-sort-alpha-down:before {\\n  content: \\\"\\\\f15d\\\";\\n}\\n.fa-sort-alpha-up:before {\\n  content: \\\"\\\\f15e\\\";\\n}\\n.fa-sort-amount-down:before {\\n  content: \\\"\\\\f160\\\";\\n}\\n.fa-sort-amount-up:before {\\n  content: \\\"\\\\f161\\\";\\n}\\n.fa-sort-down:before {\\n  content: \\\"\\\\f0dd\\\";\\n}\\n.fa-sort-numeric-down:before {\\n  content: \\\"\\\\f162\\\";\\n}\\n.fa-sort-numeric-up:before {\\n  content: \\\"\\\\f163\\\";\\n}\\n.fa-sort-up:before {\\n  content: \\\"\\\\f0de\\\";\\n}\\n.fa-soundcloud:before {\\n  content: \\\"\\\\f1be\\\";\\n}\\n.fa-spa:before {\\n  content: \\\"\\\\f5bb\\\";\\n}\\n.fa-space-shuttle:before {\\n  content: \\\"\\\\f197\\\";\\n}\\n.fa-speakap:before {\\n  content: \\\"\\\\f3f3\\\";\\n}\\n.fa-spinner:before {\\n  content: \\\"\\\\f110\\\";\\n}\\n.fa-splotch:before {\\n  content: \\\"\\\\f5bc\\\";\\n}\\n.fa-spotify:before {\\n  content: \\\"\\\\f1bc\\\";\\n}\\n.fa-spray-can:before {\\n  content: \\\"\\\\f5bd\\\";\\n}\\n.fa-square:before {\\n  content: \\\"\\\\f0c8\\\";\\n}\\n.fa-square-full:before {\\n  content: \\\"\\\\f45c\\\";\\n}\\n.fa-squarespace:before {\\n  content: \\\"\\\\f5be\\\";\\n}\\n.fa-stack-exchange:before {\\n  content: \\\"\\\\f18d\\\";\\n}\\n.fa-stack-overflow:before {\\n  content: \\\"\\\\f16c\\\";\\n}\\n.fa-stamp:before {\\n  content: \\\"\\\\f5bf\\\";\\n}\\n.fa-star:before {\\n  content: \\\"\\\\f005\\\";\\n}\\n.fa-star-half:before {\\n  content: \\\"\\\\f089\\\";\\n}\\n.fa-star-half-alt:before {\\n  content: \\\"\\\\f5c0\\\";\\n}\\n.fa-star-of-life:before {\\n  content: \\\"\\\\f621\\\";\\n}\\n.fa-staylinked:before {\\n  content: \\\"\\\\f3f5\\\";\\n}\\n.fa-steam:before {\\n  content: \\\"\\\\f1b6\\\";\\n}\\n.fa-steam-square:before {\\n  content: \\\"\\\\f1b7\\\";\\n}\\n.fa-steam-symbol:before {\\n  content: \\\"\\\\f3f6\\\";\\n}\\n.fa-step-backward:before {\\n  content: \\\"\\\\f048\\\";\\n}\\n.fa-step-forward:before {\\n  content: \\\"\\\\f051\\\";\\n}\\n.fa-stethoscope:before {\\n  content: \\\"\\\\f0f1\\\";\\n}\\n.fa-sticker-mule:before {\\n  content: \\\"\\\\f3f7\\\";\\n}\\n.fa-sticky-note:before {\\n  content: \\\"\\\\f249\\\";\\n}\\n.fa-stop:before {\\n  content: \\\"\\\\f04d\\\";\\n}\\n.fa-stop-circle:before {\\n  content: \\\"\\\\f28d\\\";\\n}\\n.fa-stopwatch:before {\\n  content: \\\"\\\\f2f2\\\";\\n}\\n.fa-store:before {\\n  content: \\\"\\\\f54e\\\";\\n}\\n.fa-store-alt:before {\\n  content: \\\"\\\\f54f\\\";\\n}\\n.fa-strava:before {\\n  content: \\\"\\\\f428\\\";\\n}\\n.fa-stream:before {\\n  content: \\\"\\\\f550\\\";\\n}\\n.fa-street-view:before {\\n  content: \\\"\\\\f21d\\\";\\n}\\n.fa-strikethrough:before {\\n  content: \\\"\\\\f0cc\\\";\\n}\\n.fa-stripe:before {\\n  content: \\\"\\\\f429\\\";\\n}\\n.fa-stripe-s:before {\\n  content: \\\"\\\\f42a\\\";\\n}\\n.fa-stroopwafel:before {\\n  content: \\\"\\\\f551\\\";\\n}\\n.fa-studiovinari:before {\\n  content: \\\"\\\\f3f8\\\";\\n}\\n.fa-stumbleupon:before {\\n  content: \\\"\\\\f1a4\\\";\\n}\\n.fa-stumbleupon-circle:before {\\n  content: \\\"\\\\f1a3\\\";\\n}\\n.fa-subscript:before {\\n  content: \\\"\\\\f12c\\\";\\n}\\n.fa-subway:before {\\n  content: \\\"\\\\f239\\\";\\n}\\n.fa-suitcase:before {\\n  content: \\\"\\\\f0f2\\\";\\n}\\n.fa-suitcase-rolling:before {\\n  content: \\\"\\\\f5c1\\\";\\n}\\n.fa-sun:before {\\n  content: \\\"\\\\f185\\\";\\n}\\n.fa-superpowers:before {\\n  content: \\\"\\\\f2dd\\\";\\n}\\n.fa-superscript:before {\\n  content: \\\"\\\\f12b\\\";\\n}\\n.fa-supple:before {\\n  content: \\\"\\\\f3f9\\\";\\n}\\n.fa-surprise:before {\\n  content: \\\"\\\\f5c2\\\";\\n}\\n.fa-swatchbook:before {\\n  content: \\\"\\\\f5c3\\\";\\n}\\n.fa-swimmer:before {\\n  content: \\\"\\\\f5c4\\\";\\n}\\n.fa-swimming-pool:before {\\n  content: \\\"\\\\f5c5\\\";\\n}\\n.fa-sync:before {\\n  content: \\\"\\\\f021\\\";\\n}\\n.fa-sync-alt:before {\\n  content: \\\"\\\\f2f1\\\";\\n}\\n.fa-syringe:before {\\n  content: \\\"\\\\f48e\\\";\\n}\\n.fa-table:before {\\n  content: \\\"\\\\f0ce\\\";\\n}\\n.fa-table-tennis:before {\\n  content: \\\"\\\\f45d\\\";\\n}\\n.fa-tablet:before {\\n  content: \\\"\\\\f10a\\\";\\n}\\n.fa-tablet-alt:before {\\n  content: \\\"\\\\f3fa\\\";\\n}\\n.fa-tablets:before {\\n  content: \\\"\\\\f490\\\";\\n}\\n.fa-tachometer-alt:before {\\n  content: \\\"\\\\f3fd\\\";\\n}\\n.fa-tag:before {\\n  content: \\\"\\\\f02b\\\";\\n}\\n.fa-tags:before {\\n  content: \\\"\\\\f02c\\\";\\n}\\n.fa-tape:before {\\n  content: \\\"\\\\f4db\\\";\\n}\\n.fa-tasks:before {\\n  content: \\\"\\\\f0ae\\\";\\n}\\n.fa-taxi:before {\\n  content: \\\"\\\\f1ba\\\";\\n}\\n.fa-teamspeak:before {\\n  content: \\\"\\\\f4f9\\\";\\n}\\n.fa-teeth:before {\\n  content: \\\"\\\\f62e\\\";\\n}\\n.fa-teeth-open:before {\\n  content: \\\"\\\\f62f\\\";\\n}\\n.fa-telegram:before {\\n  content: \\\"\\\\f2c6\\\";\\n}\\n.fa-telegram-plane:before {\\n  content: \\\"\\\\f3fe\\\";\\n}\\n.fa-tencent-weibo:before {\\n  content: \\\"\\\\f1d5\\\";\\n}\\n.fa-terminal:before {\\n  content: \\\"\\\\f120\\\";\\n}\\n.fa-text-height:before {\\n  content: \\\"\\\\f034\\\";\\n}\\n.fa-text-width:before {\\n  content: \\\"\\\\f035\\\";\\n}\\n.fa-th:before {\\n  content: \\\"\\\\f00a\\\";\\n}\\n.fa-th-large:before {\\n  content: \\\"\\\\f009\\\";\\n}\\n.fa-th-list:before {\\n  content: \\\"\\\\f00b\\\";\\n}\\n.fa-theater-masks:before {\\n  content: \\\"\\\\f630\\\";\\n}\\n.fa-themeco:before {\\n  content: \\\"\\\\f5c6\\\";\\n}\\n.fa-themeisle:before {\\n  content: \\\"\\\\f2b2\\\";\\n}\\n.fa-thermometer:before {\\n  content: \\\"\\\\f491\\\";\\n}\\n.fa-thermometer-empty:before {\\n  content: \\\"\\\\f2cb\\\";\\n}\\n.fa-thermometer-full:before {\\n  content: \\\"\\\\f2c7\\\";\\n}\\n.fa-thermometer-half:before {\\n  content: \\\"\\\\f2c9\\\";\\n}\\n.fa-thermometer-quarter:before {\\n  content: \\\"\\\\f2ca\\\";\\n}\\n.fa-thermometer-three-quarters:before {\\n  content: \\\"\\\\f2c8\\\";\\n}\\n.fa-thumbs-down:before {\\n  content: \\\"\\\\f165\\\";\\n}\\n.fa-thumbs-up:before {\\n  content: \\\"\\\\f164\\\";\\n}\\n.fa-thumbtack:before {\\n  content: \\\"\\\\f08d\\\";\\n}\\n.fa-ticket-alt:before {\\n  content: \\\"\\\\f3ff\\\";\\n}\\n.fa-times:before {\\n  content: \\\"\\\\f00d\\\";\\n}\\n.fa-times-circle:before {\\n  content: \\\"\\\\f057\\\";\\n}\\n.fa-tint:before {\\n  content: \\\"\\\\f043\\\";\\n}\\n.fa-tint-slash:before {\\n  content: \\\"\\\\f5c7\\\";\\n}\\n.fa-tired:before {\\n  content: \\\"\\\\f5c8\\\";\\n}\\n.fa-toggle-off:before {\\n  content: \\\"\\\\f204\\\";\\n}\\n.fa-toggle-on:before {\\n  content: \\\"\\\\f205\\\";\\n}\\n.fa-toolbox:before {\\n  content: \\\"\\\\f552\\\";\\n}\\n.fa-tooth:before {\\n  content: \\\"\\\\f5c9\\\";\\n}\\n.fa-trade-federation:before {\\n  content: \\\"\\\\f513\\\";\\n}\\n.fa-trademark:before {\\n  content: \\\"\\\\f25c\\\";\\n}\\n.fa-traffic-light:before {\\n  content: \\\"\\\\f637\\\";\\n}\\n.fa-train:before {\\n  content: \\\"\\\\f238\\\";\\n}\\n.fa-transgender:before {\\n  content: \\\"\\\\f224\\\";\\n}\\n.fa-transgender-alt:before {\\n  content: \\\"\\\\f225\\\";\\n}\\n.fa-trash:before {\\n  content: \\\"\\\\f1f8\\\";\\n}\\n.fa-trash-alt:before {\\n  content: \\\"\\\\f2ed\\\";\\n}\\n.fa-tree:before {\\n  content: \\\"\\\\f1bb\\\";\\n}\\n.fa-trello:before {\\n  content: \\\"\\\\f181\\\";\\n}\\n.fa-tripadvisor:before {\\n  content: \\\"\\\\f262\\\";\\n}\\n.fa-trophy:before {\\n  content: \\\"\\\\f091\\\";\\n}\\n.fa-truck:before {\\n  content: \\\"\\\\f0d1\\\";\\n}\\n.fa-truck-loading:before {\\n  content: \\\"\\\\f4de\\\";\\n}\\n.fa-truck-monster:before {\\n  content: \\\"\\\\f63b\\\";\\n}\\n.fa-truck-moving:before {\\n  content: \\\"\\\\f4df\\\";\\n}\\n.fa-truck-pickup:before {\\n  content: \\\"\\\\f63c\\\";\\n}\\n.fa-tshirt:before {\\n  content: \\\"\\\\f553\\\";\\n}\\n.fa-tty:before {\\n  content: \\\"\\\\f1e4\\\";\\n}\\n.fa-tumblr:before {\\n  content: \\\"\\\\f173\\\";\\n}\\n.fa-tumblr-square:before {\\n  content: \\\"\\\\f174\\\";\\n}\\n.fa-tv:before {\\n  content: \\\"\\\\f26c\\\";\\n}\\n.fa-twitch:before {\\n  content: \\\"\\\\f1e8\\\";\\n}\\n.fa-twitter:before {\\n  content: \\\"\\\\f099\\\";\\n}\\n.fa-twitter-square:before {\\n  content: \\\"\\\\f081\\\";\\n}\\n.fa-typo3:before {\\n  content: \\\"\\\\f42b\\\";\\n}\\n.fa-uber:before {\\n  content: \\\"\\\\f402\\\";\\n}\\n.fa-uikit:before {\\n  content: \\\"\\\\f403\\\";\\n}\\n.fa-umbrella:before {\\n  content: \\\"\\\\f0e9\\\";\\n}\\n.fa-umbrella-beach:before {\\n  content: \\\"\\\\f5ca\\\";\\n}\\n.fa-underline:before {\\n  content: \\\"\\\\f0cd\\\";\\n}\\n.fa-undo:before {\\n  content: \\\"\\\\f0e2\\\";\\n}\\n.fa-undo-alt:before {\\n  content: \\\"\\\\f2ea\\\";\\n}\\n.fa-uniregistry:before {\\n  content: \\\"\\\\f404\\\";\\n}\\n.fa-universal-access:before {\\n  content: \\\"\\\\f29a\\\";\\n}\\n.fa-university:before {\\n  content: \\\"\\\\f19c\\\";\\n}\\n.fa-unlink:before {\\n  content: \\\"\\\\f127\\\";\\n}\\n.fa-unlock:before {\\n  content: \\\"\\\\f09c\\\";\\n}\\n.fa-unlock-alt:before {\\n  content: \\\"\\\\f13e\\\";\\n}\\n.fa-untappd:before {\\n  content: \\\"\\\\f405\\\";\\n}\\n.fa-upload:before {\\n  content: \\\"\\\\f093\\\";\\n}\\n.fa-usb:before {\\n  content: \\\"\\\\f287\\\";\\n}\\n.fa-user:before {\\n  content: \\\"\\\\f007\\\";\\n}\\n.fa-user-alt:before {\\n  content: \\\"\\\\f406\\\";\\n}\\n.fa-user-alt-slash:before {\\n  content: \\\"\\\\f4fa\\\";\\n}\\n.fa-user-astronaut:before {\\n  content: \\\"\\\\f4fb\\\";\\n}\\n.fa-user-check:before {\\n  content: \\\"\\\\f4fc\\\";\\n}\\n.fa-user-circle:before {\\n  content: \\\"\\\\f2bd\\\";\\n}\\n.fa-user-clock:before {\\n  content: \\\"\\\\f4fd\\\";\\n}\\n.fa-user-cog:before {\\n  content: \\\"\\\\f4fe\\\";\\n}\\n.fa-user-edit:before {\\n  content: \\\"\\\\f4ff\\\";\\n}\\n.fa-user-friends:before {\\n  content: \\\"\\\\f500\\\";\\n}\\n.fa-user-graduate:before {\\n  content: \\\"\\\\f501\\\";\\n}\\n.fa-user-lock:before {\\n  content: \\\"\\\\f502\\\";\\n}\\n.fa-user-md:before {\\n  content: \\\"\\\\f0f0\\\";\\n}\\n.fa-user-minus:before {\\n  content: \\\"\\\\f503\\\";\\n}\\n.fa-user-ninja:before {\\n  content: \\\"\\\\f504\\\";\\n}\\n.fa-user-plus:before {\\n  content: \\\"\\\\f234\\\";\\n}\\n.fa-user-secret:before {\\n  content: \\\"\\\\f21b\\\";\\n}\\n.fa-user-shield:before {\\n  content: \\\"\\\\f505\\\";\\n}\\n.fa-user-slash:before {\\n  content: \\\"\\\\f506\\\";\\n}\\n.fa-user-tag:before {\\n  content: \\\"\\\\f507\\\";\\n}\\n.fa-user-tie:before {\\n  content: \\\"\\\\f508\\\";\\n}\\n.fa-user-times:before {\\n  content: \\\"\\\\f235\\\";\\n}\\n.fa-users:before {\\n  content: \\\"\\\\f0c0\\\";\\n}\\n.fa-users-cog:before {\\n  content: \\\"\\\\f509\\\";\\n}\\n.fa-ussunnah:before {\\n  content: \\\"\\\\f407\\\";\\n}\\n.fa-utensil-spoon:before {\\n  content: \\\"\\\\f2e5\\\";\\n}\\n.fa-utensils:before {\\n  content: \\\"\\\\f2e7\\\";\\n}\\n.fa-vaadin:before {\\n  content: \\\"\\\\f408\\\";\\n}\\n.fa-vector-square:before {\\n  content: \\\"\\\\f5cb\\\";\\n}\\n.fa-venus:before {\\n  content: \\\"\\\\f221\\\";\\n}\\n.fa-venus-double:before {\\n  content: \\\"\\\\f226\\\";\\n}\\n.fa-venus-mars:before {\\n  content: \\\"\\\\f228\\\";\\n}\\n.fa-viacoin:before {\\n  content: \\\"\\\\f237\\\";\\n}\\n.fa-viadeo:before {\\n  content: \\\"\\\\f2a9\\\";\\n}\\n.fa-viadeo-square:before {\\n  content: \\\"\\\\f2aa\\\";\\n}\\n.fa-vial:before {\\n  content: \\\"\\\\f492\\\";\\n}\\n.fa-vials:before {\\n  content: \\\"\\\\f493\\\";\\n}\\n.fa-viber:before {\\n  content: \\\"\\\\f409\\\";\\n}\\n.fa-video:before {\\n  content: \\\"\\\\f03d\\\";\\n}\\n.fa-video-slash:before {\\n  content: \\\"\\\\f4e2\\\";\\n}\\n.fa-vimeo:before {\\n  content: \\\"\\\\f40a\\\";\\n}\\n.fa-vimeo-square:before {\\n  content: \\\"\\\\f194\\\";\\n}\\n.fa-vimeo-v:before {\\n  content: \\\"\\\\f27d\\\";\\n}\\n.fa-vine:before {\\n  content: \\\"\\\\f1ca\\\";\\n}\\n.fa-vk:before {\\n  content: \\\"\\\\f189\\\";\\n}\\n.fa-vnv:before {\\n  content: \\\"\\\\f40b\\\";\\n}\\n.fa-volleyball-ball:before {\\n  content: \\\"\\\\f45f\\\";\\n}\\n.fa-volume-down:before {\\n  content: \\\"\\\\f027\\\";\\n}\\n.fa-volume-off:before {\\n  content: \\\"\\\\f026\\\";\\n}\\n.fa-volume-up:before {\\n  content: \\\"\\\\f028\\\";\\n}\\n.fa-vuejs:before {\\n  content: \\\"\\\\f41f\\\";\\n}\\n.fa-walking:before {\\n  content: \\\"\\\\f554\\\";\\n}\\n.fa-wallet:before {\\n  content: \\\"\\\\f555\\\";\\n}\\n.fa-warehouse:before {\\n  content: \\\"\\\\f494\\\";\\n}\\n.fa-weebly:before {\\n  content: \\\"\\\\f5cc\\\";\\n}\\n.fa-weibo:before {\\n  content: \\\"\\\\f18a\\\";\\n}\\n.fa-weight:before {\\n  content: \\\"\\\\f496\\\";\\n}\\n.fa-weight-hanging:before {\\n  content: \\\"\\\\f5cd\\\";\\n}\\n.fa-weixin:before {\\n  content: \\\"\\\\f1d7\\\";\\n}\\n.fa-whatsapp:before {\\n  content: \\\"\\\\f232\\\";\\n}\\n.fa-whatsapp-square:before {\\n  content: \\\"\\\\f40c\\\";\\n}\\n.fa-wheelchair:before {\\n  content: \\\"\\\\f193\\\";\\n}\\n.fa-whmcs:before {\\n  content: \\\"\\\\f40d\\\";\\n}\\n.fa-wifi:before {\\n  content: \\\"\\\\f1eb\\\";\\n}\\n.fa-wikipedia-w:before {\\n  content: \\\"\\\\f266\\\";\\n}\\n.fa-window-close:before {\\n  content: \\\"\\\\f410\\\";\\n}\\n.fa-window-maximize:before {\\n  content: \\\"\\\\f2d0\\\";\\n}\\n.fa-window-minimize:before {\\n  content: \\\"\\\\f2d1\\\";\\n}\\n.fa-window-restore:before {\\n  content: \\\"\\\\f2d2\\\";\\n}\\n.fa-windows:before {\\n  content: \\\"\\\\f17a\\\";\\n}\\n.fa-wine-glass:before {\\n  content: \\\"\\\\f4e3\\\";\\n}\\n.fa-wine-glass-alt:before {\\n  content: \\\"\\\\f5ce\\\";\\n}\\n.fa-wix:before {\\n  content: \\\"\\\\f5cf\\\";\\n}\\n.fa-wolf-pack-battalion:before {\\n  content: \\\"\\\\f514\\\";\\n}\\n.fa-won-sign:before {\\n  content: \\\"\\\\f159\\\";\\n}\\n.fa-wordpress:before {\\n  content: \\\"\\\\f19a\\\";\\n}\\n.fa-wordpress-simple:before {\\n  content: \\\"\\\\f411\\\";\\n}\\n.fa-wpbeginner:before {\\n  content: \\\"\\\\f297\\\";\\n}\\n.fa-wpexplorer:before {\\n  content: \\\"\\\\f2de\\\";\\n}\\n.fa-wpforms:before {\\n  content: \\\"\\\\f298\\\";\\n}\\n.fa-wrench:before {\\n  content: \\\"\\\\f0ad\\\";\\n}\\n.fa-x-ray:before {\\n  content: \\\"\\\\f497\\\";\\n}\\n.fa-xbox:before {\\n  content: \\\"\\\\f412\\\";\\n}\\n.fa-xing:before {\\n  content: \\\"\\\\f168\\\";\\n}\\n.fa-xing-square:before {\\n  content: \\\"\\\\f169\\\";\\n}\\n.fa-y-combinator:before {\\n  content: \\\"\\\\f23b\\\";\\n}\\n.fa-yahoo:before {\\n  content: \\\"\\\\f19e\\\";\\n}\\n.fa-yandex:before {\\n  content: \\\"\\\\f413\\\";\\n}\\n.fa-yandex-international:before {\\n  content: \\\"\\\\f414\\\";\\n}\\n.fa-yelp:before {\\n  content: \\\"\\\\f1e9\\\";\\n}\\n.fa-yen-sign:before {\\n  content: \\\"\\\\f157\\\";\\n}\\n.fa-yoast:before {\\n  content: \\\"\\\\f2b1\\\";\\n}\\n.fa-youtube:before {\\n  content: \\\"\\\\f167\\\";\\n}\\n.fa-youtube-square:before {\\n  content: \\\"\\\\f431\\\";\\n}\\n.fa-zhihu:before {\\n  content: \\\"\\\\f63f\\\";\\n}\\n.sr-only {\\n  border: 0;\\n  clip: rect(0, 0, 0, 0);\\n  height: 1px;\\n  margin: -1px;\\n  overflow: hidden;\\n  padding: 0;\\n  position: absolute;\\n  width: 1px;\\n}\\n.sr-only-focusable:active,\\n.sr-only-focusable:focus {\\n  clip: auto;\\n  height: auto;\\n  margin: 0;\\n  overflow: visible;\\n  position: static;\\n  width: auto;\\n}\\n@font-face {\\n  font-family: 'Font Awesome 5 Brands';\\n  font-style: normal;\\n  font-weight: normal;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"embedded-opentype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"woff\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") format(\\\"truetype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") format(\\\"svg\\\");\\n}\\n.fab {\\n  font-family: 'Font Awesome 5 Brands';\\n}\\n@font-face {\\n  font-family: 'Font Awesome 5 Free';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \");\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \") format(\\\"embedded-opentype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \") format(\\\"woff\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \") format(\\\"truetype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \") format(\\\"svg\\\");\\n}\\n.far {\\n  font-family: 'Font Awesome 5 Free';\\n  font-weight: 400;\\n}\\n@font-face {\\n  font-family: 'Font Awesome 5 Free';\\n  font-style: normal;\\n  font-weight: 900;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \");\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \") format(\\\"embedded-opentype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \") format(\\\"woff\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \") format(\\\"truetype\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \") format(\\\"svg\\\");\\n}\\n.fa,\\n.fas {\\n  font-family: 'Font Awesome 5 Free';\\n  font-weight: 900;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n/***/ }),\n/* 1366 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/4163c5ce45679952d5cb6dcf5d74a132.eot\");\n\n/***/ }),\n/* 1367 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/b9df8fe0faf79eb4f60bf3c42f2ba249.woff2\");\n\n/***/ }),\n/* 1368 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/b97ac5f935e23fc1816faed5cfcc8244.woff\");\n\n/***/ }),\n/* 1369 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/70257b1d0ff04d70da6c3fd1f0cedfd6.ttf\");\n\n/***/ }),\n/* 1370 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/4009e71782c2fd408c472992660d3e34.svg\");\n\n/***/ }),\n/* 1371 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/0f9d1f74777600d15191f64c71380ffb.eot\");\n\n/***/ }),\n/* 1372 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/0fe9428559f3518bb8d4917a727d133d.woff2\");\n\n/***/ }),\n/* 1373 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/0e6b58ac5d805dfcd66f61e447b7ddd6.woff\");\n\n/***/ }),\n/* 1374 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/6086b966f7072932f0943a9e01ab702e.ttf\");\n\n/***/ }),\n/* 1375 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/d3d070c219ac57dafb23b27c27518506.svg\");\n\n/***/ }),\n/* 1376 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/d2c8b126d305ba3ef5604cea2d9663a8.eot\");\n\n/***/ }),\n/* 1377 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/9ef50a04ef2ee9703d694b2244abd928.woff2\");\n\n/***/ }),\n/* 1378 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/3a5706fab1c11ad6dfdc7d0fc33cc238.woff\");\n\n/***/ }),\n/* 1379 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/2aae7c212ce9c344ede6369768d4bcca.ttf\");\n\n/***/ }),\n/* 1380 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/ab820b7de48566829c5e4c1d0d9993e4.svg\");\n\n/***/ }),\n/* 1381 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar api = __webpack_require__(185);\n            var content = __webpack_require__(1382);\n\n            content = content.__esModule ? content.default : content;\n\n            if (typeof content === 'string') {\n              content = [[module.i, content, '']];\n            }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};\n\n/***/ }),\n/* 1382 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(186);\nvar ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(435);\nvar ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(1383);\nvar ___CSS_LOADER_URL_IMPORT_1___ = __webpack_require__(1384);\nvar ___CSS_LOADER_URL_IMPORT_2___ = __webpack_require__(1385);\nvar ___CSS_LOADER_URL_IMPORT_3___ = __webpack_require__(1386);\nvar ___CSS_LOADER_URL_IMPORT_4___ = __webpack_require__(1387);\nvar ___CSS_LOADER_URL_IMPORT_5___ = __webpack_require__(1388);\nvar ___CSS_LOADER_URL_IMPORT_6___ = __webpack_require__(1389);\nvar ___CSS_LOADER_URL_IMPORT_7___ = __webpack_require__(1390);\nvar ___CSS_LOADER_URL_IMPORT_8___ = __webpack_require__(1391);\nvar ___CSS_LOADER_URL_IMPORT_9___ = __webpack_require__(1392);\nvar ___CSS_LOADER_URL_IMPORT_10___ = __webpack_require__(1393);\nvar ___CSS_LOADER_URL_IMPORT_11___ = __webpack_require__(1394);\nvar ___CSS_LOADER_URL_IMPORT_12___ = __webpack_require__(1395);\nvar ___CSS_LOADER_URL_IMPORT_13___ = __webpack_require__(1396);\nvar ___CSS_LOADER_URL_IMPORT_14___ = __webpack_require__(1397);\nvar ___CSS_LOADER_URL_IMPORT_15___ = __webpack_require__(1398);\nvar ___CSS_LOADER_URL_IMPORT_16___ = __webpack_require__(1399);\nvar ___CSS_LOADER_URL_IMPORT_17___ = __webpack_require__(1400);\nvar ___CSS_LOADER_URL_IMPORT_18___ = __webpack_require__(1401);\nvar ___CSS_LOADER_URL_IMPORT_19___ = __webpack_require__(1402);\nvar ___CSS_LOADER_URL_IMPORT_20___ = __webpack_require__(1403);\nvar ___CSS_LOADER_URL_IMPORT_21___ = __webpack_require__(1404);\nvar ___CSS_LOADER_URL_IMPORT_22___ = __webpack_require__(1405);\nvar ___CSS_LOADER_URL_IMPORT_23___ = __webpack_require__(1406);\nvar ___CSS_LOADER_URL_IMPORT_24___ = __webpack_require__(1407);\nvar ___CSS_LOADER_URL_IMPORT_25___ = __webpack_require__(1408);\nvar ___CSS_LOADER_URL_IMPORT_26___ = __webpack_require__(1409);\nvar ___CSS_LOADER_URL_IMPORT_27___ = __webpack_require__(1410);\nvar ___CSS_LOADER_URL_IMPORT_28___ = __webpack_require__(1411);\nvar ___CSS_LOADER_URL_IMPORT_29___ = __webpack_require__(1412);\nvar ___CSS_LOADER_URL_IMPORT_30___ = __webpack_require__(1413);\nvar ___CSS_LOADER_URL_IMPORT_31___ = __webpack_require__(1414);\nvar ___CSS_LOADER_URL_IMPORT_32___ = __webpack_require__(1415);\nvar ___CSS_LOADER_URL_IMPORT_33___ = __webpack_require__(1416);\nvar ___CSS_LOADER_URL_IMPORT_34___ = __webpack_require__(1417);\nvar ___CSS_LOADER_URL_IMPORT_35___ = __webpack_require__(1418);\nvar ___CSS_LOADER_URL_IMPORT_36___ = __webpack_require__(1419);\nvar ___CSS_LOADER_URL_IMPORT_37___ = __webpack_require__(1420);\nvar ___CSS_LOADER_URL_IMPORT_38___ = __webpack_require__(1421);\nvar ___CSS_LOADER_URL_IMPORT_39___ = __webpack_require__(1422);\nvar ___CSS_LOADER_URL_IMPORT_40___ = __webpack_require__(1423);\nvar ___CSS_LOADER_URL_IMPORT_41___ = __webpack_require__(1424);\nvar ___CSS_LOADER_URL_IMPORT_42___ = __webpack_require__(1425);\nvar ___CSS_LOADER_URL_IMPORT_43___ = __webpack_require__(1426);\nvar ___CSS_LOADER_URL_IMPORT_44___ = __webpack_require__(1427);\nvar ___CSS_LOADER_URL_IMPORT_45___ = __webpack_require__(1428);\nvar ___CSS_LOADER_URL_IMPORT_46___ = __webpack_require__(1429);\nvar ___CSS_LOADER_URL_IMPORT_47___ = __webpack_require__(1430);\nvar ___CSS_LOADER_URL_IMPORT_48___ = __webpack_require__(1431);\nvar ___CSS_LOADER_URL_IMPORT_49___ = __webpack_require__(1432);\nvar ___CSS_LOADER_URL_IMPORT_50___ = __webpack_require__(1433);\nvar ___CSS_LOADER_URL_IMPORT_51___ = __webpack_require__(1434);\nvar ___CSS_LOADER_URL_IMPORT_52___ = __webpack_require__(1435);\nvar ___CSS_LOADER_URL_IMPORT_53___ = __webpack_require__(1436);\nvar ___CSS_LOADER_URL_IMPORT_54___ = __webpack_require__(1437);\nvar ___CSS_LOADER_URL_IMPORT_55___ = __webpack_require__(1438);\nvar ___CSS_LOADER_URL_IMPORT_56___ = __webpack_require__(1439);\nvar ___CSS_LOADER_URL_IMPORT_57___ = __webpack_require__(1440);\nvar ___CSS_LOADER_URL_IMPORT_58___ = __webpack_require__(1441);\nvar ___CSS_LOADER_URL_IMPORT_59___ = __webpack_require__(1442);\nvar ___CSS_LOADER_URL_IMPORT_60___ = __webpack_require__(1443);\nvar ___CSS_LOADER_URL_IMPORT_61___ = __webpack_require__(1444);\nvar ___CSS_LOADER_URL_IMPORT_62___ = __webpack_require__(1445);\nvar ___CSS_LOADER_URL_IMPORT_63___ = __webpack_require__(1446);\nvar ___CSS_LOADER_URL_IMPORT_64___ = __webpack_require__(1447);\nvar ___CSS_LOADER_URL_IMPORT_65___ = __webpack_require__(1448);\nvar ___CSS_LOADER_URL_IMPORT_66___ = __webpack_require__(1449);\nvar ___CSS_LOADER_URL_IMPORT_67___ = __webpack_require__(1450);\nvar ___CSS_LOADER_URL_IMPORT_68___ = __webpack_require__(1451);\nvar ___CSS_LOADER_URL_IMPORT_69___ = __webpack_require__(1452);\nvar ___CSS_LOADER_URL_IMPORT_70___ = __webpack_require__(1453);\nvar ___CSS_LOADER_URL_IMPORT_71___ = __webpack_require__(1454);\nvar ___CSS_LOADER_URL_IMPORT_72___ = __webpack_require__(1455);\nvar ___CSS_LOADER_URL_IMPORT_73___ = __webpack_require__(1456);\nvar ___CSS_LOADER_URL_IMPORT_74___ = __webpack_require__(1457);\nvar ___CSS_LOADER_URL_IMPORT_75___ = __webpack_require__(1458);\nvar ___CSS_LOADER_URL_IMPORT_76___ = __webpack_require__(1459);\nvar ___CSS_LOADER_URL_IMPORT_77___ = __webpack_require__(1460);\nvar ___CSS_LOADER_URL_IMPORT_78___ = __webpack_require__(1461);\nvar ___CSS_LOADER_URL_IMPORT_79___ = __webpack_require__(1462);\nvar ___CSS_LOADER_URL_IMPORT_80___ = __webpack_require__(1463);\nvar ___CSS_LOADER_URL_IMPORT_81___ = __webpack_require__(1464);\nvar ___CSS_LOADER_URL_IMPORT_82___ = __webpack_require__(1465);\nvar ___CSS_LOADER_URL_IMPORT_83___ = __webpack_require__(1466);\nvar ___CSS_LOADER_URL_IMPORT_84___ = __webpack_require__(1467);\nvar ___CSS_LOADER_URL_IMPORT_85___ = __webpack_require__(1468);\nvar ___CSS_LOADER_URL_IMPORT_86___ = __webpack_require__(1469);\nvar ___CSS_LOADER_URL_IMPORT_87___ = __webpack_require__(1470);\nvar ___CSS_LOADER_URL_IMPORT_88___ = __webpack_require__(1471);\nvar ___CSS_LOADER_URL_IMPORT_89___ = __webpack_require__(1472);\nvar ___CSS_LOADER_URL_IMPORT_90___ = __webpack_require__(1473);\nvar ___CSS_LOADER_URL_IMPORT_91___ = __webpack_require__(1474);\nvar ___CSS_LOADER_URL_IMPORT_92___ = __webpack_require__(1475);\nvar ___CSS_LOADER_URL_IMPORT_93___ = __webpack_require__(1476);\nvar ___CSS_LOADER_URL_IMPORT_94___ = __webpack_require__(1477);\nvar ___CSS_LOADER_URL_IMPORT_95___ = __webpack_require__(1478);\nvar ___CSS_LOADER_URL_IMPORT_96___ = __webpack_require__(1479);\nvar ___CSS_LOADER_URL_IMPORT_97___ = __webpack_require__(1480);\nvar ___CSS_LOADER_URL_IMPORT_98___ = __webpack_require__(1481);\nvar ___CSS_LOADER_URL_IMPORT_99___ = __webpack_require__(1482);\nvar ___CSS_LOADER_URL_IMPORT_100___ = __webpack_require__(1483);\nvar ___CSS_LOADER_URL_IMPORT_101___ = __webpack_require__(1484);\nvar ___CSS_LOADER_URL_IMPORT_102___ = __webpack_require__(1485);\nvar ___CSS_LOADER_URL_IMPORT_103___ = __webpack_require__(1486);\nvar ___CSS_LOADER_URL_IMPORT_104___ = __webpack_require__(1487);\nvar ___CSS_LOADER_URL_IMPORT_105___ = __webpack_require__(1488);\nvar ___CSS_LOADER_URL_IMPORT_106___ = __webpack_require__(1489);\nvar ___CSS_LOADER_URL_IMPORT_107___ = __webpack_require__(1490);\nvar ___CSS_LOADER_URL_IMPORT_108___ = __webpack_require__(1491);\nvar ___CSS_LOADER_URL_IMPORT_109___ = __webpack_require__(1492);\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___, { hash: \"#AbrilFatface\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \"#AlegreyaSans\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___, { hash: \"#Alegreya\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_18___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___);\nvar ___CSS_LOADER_URL_REPLACEMENT_19___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_15___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_20___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_16___);\nvar ___CSS_LOADER_URL_REPLACEMENT_21___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_17___);\nvar ___CSS_LOADER_URL_REPLACEMENT_22___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_18___);\nvar ___CSS_LOADER_URL_REPLACEMENT_23___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_19___, { hash: \"#AmaticSC\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_24___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___);\nvar ___CSS_LOADER_URL_REPLACEMENT_25___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_20___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_26___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_21___);\nvar ___CSS_LOADER_URL_REPLACEMENT_27___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_22___);\nvar ___CSS_LOADER_URL_REPLACEMENT_28___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_23___);\nvar ___CSS_LOADER_URL_REPLACEMENT_29___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_24___, { hash: \"#EBGaramond\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_30___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___);\nvar ___CSS_LOADER_URL_REPLACEMENT_31___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_25___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_32___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_26___);\nvar ___CSS_LOADER_URL_REPLACEMENT_33___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_27___);\nvar ___CSS_LOADER_URL_REPLACEMENT_34___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_28___);\nvar ___CSS_LOADER_URL_REPLACEMENT_35___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_29___, { hash: \"#FjallaOne\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_36___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_30___);\nvar ___CSS_LOADER_URL_REPLACEMENT_37___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_30___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_38___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_31___);\nvar ___CSS_LOADER_URL_REPLACEMENT_39___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_32___);\nvar ___CSS_LOADER_URL_REPLACEMENT_40___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_33___);\nvar ___CSS_LOADER_URL_REPLACEMENT_41___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_34___, { hash: \"#JosefinSans\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_42___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_35___);\nvar ___CSS_LOADER_URL_REPLACEMENT_43___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_35___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_44___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_36___);\nvar ___CSS_LOADER_URL_REPLACEMENT_45___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_37___);\nvar ___CSS_LOADER_URL_REPLACEMENT_46___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_38___);\nvar ___CSS_LOADER_URL_REPLACEMENT_47___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_39___, { hash: \"#Lato\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_48___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_40___);\nvar ___CSS_LOADER_URL_REPLACEMENT_49___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_40___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_50___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_41___);\nvar ___CSS_LOADER_URL_REPLACEMENT_51___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_42___);\nvar ___CSS_LOADER_URL_REPLACEMENT_52___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_43___);\nvar ___CSS_LOADER_URL_REPLACEMENT_53___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_44___, { hash: \"#Merriweather\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_54___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_45___);\nvar ___CSS_LOADER_URL_REPLACEMENT_55___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_45___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_56___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_46___);\nvar ___CSS_LOADER_URL_REPLACEMENT_57___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_47___);\nvar ___CSS_LOADER_URL_REPLACEMENT_58___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_48___);\nvar ___CSS_LOADER_URL_REPLACEMENT_59___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_49___, { hash: \"#Montserrat\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_60___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_50___);\nvar ___CSS_LOADER_URL_REPLACEMENT_61___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_50___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_62___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_51___);\nvar ___CSS_LOADER_URL_REPLACEMENT_63___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_52___);\nvar ___CSS_LOADER_URL_REPLACEMENT_64___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_53___);\nvar ___CSS_LOADER_URL_REPLACEMENT_65___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_54___, { hash: \"#NotoSans\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_66___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_55___);\nvar ___CSS_LOADER_URL_REPLACEMENT_67___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_55___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_68___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_56___);\nvar ___CSS_LOADER_URL_REPLACEMENT_69___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_57___);\nvar ___CSS_LOADER_URL_REPLACEMENT_70___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_58___);\nvar ___CSS_LOADER_URL_REPLACEMENT_71___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_59___, { hash: \"#OpenSansCondensed\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_72___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_60___);\nvar ___CSS_LOADER_URL_REPLACEMENT_73___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_60___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_74___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_61___);\nvar ___CSS_LOADER_URL_REPLACEMENT_75___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_62___);\nvar ___CSS_LOADER_URL_REPLACEMENT_76___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_63___);\nvar ___CSS_LOADER_URL_REPLACEMENT_77___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_64___, { hash: \"#OpenSans\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_78___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_65___);\nvar ___CSS_LOADER_URL_REPLACEMENT_79___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_65___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_80___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_66___);\nvar ___CSS_LOADER_URL_REPLACEMENT_81___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_67___);\nvar ___CSS_LOADER_URL_REPLACEMENT_82___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_68___);\nvar ___CSS_LOADER_URL_REPLACEMENT_83___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_69___, { hash: \"#Oswald\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_84___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_70___);\nvar ___CSS_LOADER_URL_REPLACEMENT_85___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_70___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_86___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_71___);\nvar ___CSS_LOADER_URL_REPLACEMENT_87___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_72___);\nvar ___CSS_LOADER_URL_REPLACEMENT_88___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_73___);\nvar ___CSS_LOADER_URL_REPLACEMENT_89___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_74___, { hash: \"#PlayfairDisplay\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_90___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_75___);\nvar ___CSS_LOADER_URL_REPLACEMENT_91___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_75___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_92___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_76___);\nvar ___CSS_LOADER_URL_REPLACEMENT_93___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_77___);\nvar ___CSS_LOADER_URL_REPLACEMENT_94___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_78___);\nvar ___CSS_LOADER_URL_REPLACEMENT_95___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_79___, { hash: \"#PTSansNarrow\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_96___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_80___);\nvar ___CSS_LOADER_URL_REPLACEMENT_97___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_80___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_98___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_81___);\nvar ___CSS_LOADER_URL_REPLACEMENT_99___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_82___);\nvar ___CSS_LOADER_URL_REPLACEMENT_100___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_83___);\nvar ___CSS_LOADER_URL_REPLACEMENT_101___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_84___, { hash: \"#PTSans\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_102___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_85___);\nvar ___CSS_LOADER_URL_REPLACEMENT_103___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_85___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_104___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_86___);\nvar ___CSS_LOADER_URL_REPLACEMENT_105___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_87___);\nvar ___CSS_LOADER_URL_REPLACEMENT_106___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_88___);\nvar ___CSS_LOADER_URL_REPLACEMENT_107___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_89___, { hash: \"#Raleway\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_108___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_90___);\nvar ___CSS_LOADER_URL_REPLACEMENT_109___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_90___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_110___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_91___);\nvar ___CSS_LOADER_URL_REPLACEMENT_111___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_92___);\nvar ___CSS_LOADER_URL_REPLACEMENT_112___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_93___);\nvar ___CSS_LOADER_URL_REPLACEMENT_113___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_94___, { hash: \"#RobotoMono\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_114___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_95___);\nvar ___CSS_LOADER_URL_REPLACEMENT_115___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_95___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_116___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_96___);\nvar ___CSS_LOADER_URL_REPLACEMENT_117___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_97___);\nvar ___CSS_LOADER_URL_REPLACEMENT_118___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_98___);\nvar ___CSS_LOADER_URL_REPLACEMENT_119___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_99___, { hash: \"#RobotoSlab\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_120___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_100___);\nvar ___CSS_LOADER_URL_REPLACEMENT_121___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_100___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_122___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_101___);\nvar ___CSS_LOADER_URL_REPLACEMENT_123___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_102___);\nvar ___CSS_LOADER_URL_REPLACEMENT_124___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_103___);\nvar ___CSS_LOADER_URL_REPLACEMENT_125___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_104___, { hash: \"#Roboto\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_126___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_105___);\nvar ___CSS_LOADER_URL_REPLACEMENT_127___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_105___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_128___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_106___);\nvar ___CSS_LOADER_URL_REPLACEMENT_129___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_107___);\nvar ___CSS_LOADER_URL_REPLACEMENT_130___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_108___);\nvar ___CSS_LOADER_URL_REPLACEMENT_131___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_109___, { hash: \"#SourceSansPro\" });\n// Module\nexports.push([module.i, \"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\\n/* stylelint-disable no-duplicate-selectors */\\n/* stylelint-disable */\\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\\n/* stylelint-disable at-rule-no-unknown */\\nhtml,\\nbody {\\n  width: 100%;\\n  height: 100%;\\n}\\ninput::-ms-clear,\\ninput::-ms-reveal {\\n  display: none;\\n}\\n*,\\n*::before,\\n*::after {\\n  box-sizing: border-box;\\n}\\nhtml {\\n  font-family: sans-serif;\\n  line-height: 1.15;\\n  -webkit-text-size-adjust: 100%;\\n  -ms-text-size-adjust: 100%;\\n  -ms-overflow-style: scrollbar;\\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n}\\n@-ms-viewport {\\n  width: device-width;\\n}\\narticle,\\naside,\\ndialog,\\nfigcaption,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nmain,\\nnav,\\nsection {\\n  display: block;\\n}\\nbody {\\n  margin: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-family: \\\"Noto Sans KR\\\", sans-serif, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Hiragino Sans GB\\\", \\\"Microsoft YaHei\\\", \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\";\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  background-color: #fff;\\n  font-feature-settings: 'tnum';\\n}\\n[tabindex='-1']:focus {\\n  outline: none !important;\\n}\\nhr {\\n  box-sizing: content-box;\\n  height: 0;\\n  overflow: visible;\\n}\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n  margin-top: 0;\\n  margin-bottom: 0.5em;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n}\\np {\\n  margin-top: 0;\\n  margin-bottom: 1em;\\n}\\nabbr[title],\\nabbr[data-original-title] {\\n  text-decoration: underline;\\n  text-decoration: underline dotted;\\n  border-bottom: 0;\\n  cursor: help;\\n}\\naddress {\\n  margin-bottom: 1em;\\n  font-style: normal;\\n  line-height: inherit;\\n}\\ninput[type='text'],\\ninput[type='password'],\\ninput[type='number'],\\ntextarea {\\n  -webkit-appearance: none;\\n}\\nol,\\nul,\\ndl {\\n  margin-top: 0;\\n  margin-bottom: 1em;\\n}\\nol ol,\\nul ul,\\nol ul,\\nul ol {\\n  margin-bottom: 0;\\n}\\ndt {\\n  font-weight: 500;\\n}\\ndd {\\n  margin-bottom: 0.5em;\\n  margin-left: 0;\\n}\\nblockquote {\\n  margin: 0 0 1em;\\n}\\ndfn {\\n  font-style: italic;\\n}\\nb,\\nstrong {\\n  font-weight: bolder;\\n}\\nsmall {\\n  font-size: 80%;\\n}\\nsub,\\nsup {\\n  position: relative;\\n  font-size: 75%;\\n  line-height: 0;\\n  vertical-align: baseline;\\n}\\nsub {\\n  bottom: -0.25em;\\n}\\nsup {\\n  top: -0.5em;\\n}\\na {\\n  color: #08979c;\\n  text-decoration: none;\\n  background-color: transparent;\\n  outline: none;\\n  cursor: pointer;\\n  transition: color 0.3s;\\n  -webkit-text-decoration-skip: objects;\\n}\\na:focus {\\n  text-decoration: underline;\\n  text-decoration-skip-ink: auto;\\n}\\na:hover {\\n  color: #23a8a8;\\n}\\na:active {\\n  color: #006d75;\\n}\\na:active,\\na:hover {\\n  text-decoration: none;\\n  outline: 0;\\n}\\na[disabled] {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n  pointer-events: none;\\n}\\npre,\\ncode,\\nkbd,\\nsamp {\\n  font-size: 1em;\\n  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;\\n}\\npre {\\n  margin-top: 0;\\n  margin-bottom: 1em;\\n  overflow: auto;\\n}\\nfigure {\\n  margin: 0 0 1em;\\n}\\nimg {\\n  vertical-align: middle;\\n  border-style: none;\\n}\\nsvg:not(:root) {\\n  overflow: hidden;\\n}\\na,\\narea,\\nbutton,\\n[role='button'],\\ninput:not([type='range']),\\nlabel,\\nselect,\\nsummary,\\ntextarea {\\n  touch-action: manipulation;\\n}\\ntable {\\n  border-collapse: collapse;\\n}\\ncaption {\\n  padding-top: 0.75em;\\n  padding-bottom: 0.3em;\\n  color: rgba(0, 0, 0, 0.45);\\n  text-align: left;\\n  caption-side: bottom;\\n}\\nth {\\n  text-align: inherit;\\n}\\ninput,\\nbutton,\\nselect,\\noptgroup,\\ntextarea {\\n  margin: 0;\\n  color: inherit;\\n  font-size: inherit;\\n  font-family: inherit;\\n  line-height: inherit;\\n}\\nbutton,\\ninput {\\n  overflow: visible;\\n}\\nbutton,\\nselect {\\n  text-transform: none;\\n}\\nbutton,\\nhtml [type=\\\"button\\\"],\\n[type=\\\"reset\\\"],\\n[type=\\\"submit\\\"] {\\n  -webkit-appearance: button;\\n}\\nbutton::-moz-focus-inner,\\n[type='button']::-moz-focus-inner,\\n[type='reset']::-moz-focus-inner,\\n[type='submit']::-moz-focus-inner {\\n  padding: 0;\\n  border-style: none;\\n}\\ninput[type='radio'],\\ninput[type='checkbox'] {\\n  box-sizing: border-box;\\n  padding: 0;\\n}\\ninput[type='date'],\\ninput[type='time'],\\ninput[type='datetime-local'],\\ninput[type='month'] {\\n  -webkit-appearance: listbox;\\n}\\ntextarea {\\n  overflow: auto;\\n  resize: vertical;\\n}\\nfieldset {\\n  min-width: 0;\\n  margin: 0;\\n  padding: 0;\\n  border: 0;\\n}\\nlegend {\\n  display: block;\\n  width: 100%;\\n  max-width: 100%;\\n  margin-bottom: 0.5em;\\n  padding: 0;\\n  color: inherit;\\n  font-size: 1.5em;\\n  line-height: inherit;\\n  white-space: normal;\\n}\\nprogress {\\n  vertical-align: baseline;\\n}\\n[type='number']::-webkit-inner-spin-button,\\n[type='number']::-webkit-outer-spin-button {\\n  height: auto;\\n}\\n[type='search'] {\\n  outline-offset: -2px;\\n  -webkit-appearance: none;\\n}\\n[type='search']::-webkit-search-cancel-button,\\n[type='search']::-webkit-search-decoration {\\n  -webkit-appearance: none;\\n}\\n::-webkit-file-upload-button {\\n  font: inherit;\\n  -webkit-appearance: button;\\n}\\noutput {\\n  display: inline-block;\\n}\\nsummary {\\n  display: list-item;\\n}\\ntemplate {\\n  display: none;\\n}\\n[hidden] {\\n  display: none !important;\\n}\\nmark {\\n  padding: 0.2em;\\n  background-color: #feffe6;\\n}\\n::selection {\\n  color: #fff;\\n  background: #08979c;\\n}\\n.clearfix {\\n  zoom: 1;\\n}\\n.clearfix::before,\\n.clearfix::after {\\n  content: '';\\n  display: table;\\n}\\n.clearfix::after {\\n  clear: both;\\n}\\n.anticon {\\n  display: inline-block;\\n  font-style: normal;\\n  line-height: 0;\\n  text-align: center;\\n  text-transform: none;\\n  vertical-align: -0.125em;\\n  text-rendering: optimizeLegibility;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n}\\n.anticon > * {\\n  line-height: 1;\\n}\\n.anticon svg {\\n  display: inline-block;\\n}\\n.anticon::before {\\n  display: none;\\n}\\n.anticon .anticon-icon {\\n  display: block;\\n}\\n.anticon[tabindex] {\\n  cursor: pointer;\\n}\\n.anticon-spin::before {\\n  display: inline-block;\\n  animation: loadingCircle 1s infinite linear;\\n}\\n.anticon-spin {\\n  display: inline-block;\\n  animation: loadingCircle 1s infinite linear;\\n}\\n.fade-enter,\\n.fade-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.fade-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.fade-enter.fade-enter-active,\\n.fade-appear.fade-appear-active {\\n  animation-name: antFadeIn;\\n  animation-play-state: running;\\n}\\n.fade-leave.fade-leave-active {\\n  animation-name: antFadeOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.fade-enter,\\n.fade-appear {\\n  opacity: 0;\\n  animation-timing-function: linear;\\n}\\n.fade-leave {\\n  animation-timing-function: linear;\\n}\\n@keyframes antFadeIn {\\n  0% {\\n    opacity: 0;\\n  }\\n  100% {\\n    opacity: 1;\\n  }\\n}\\n@keyframes antFadeOut {\\n  0% {\\n    opacity: 1;\\n  }\\n  100% {\\n    opacity: 0;\\n  }\\n}\\n.move-up-enter,\\n.move-up-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.move-up-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.move-up-enter.move-up-enter-active,\\n.move-up-appear.move-up-appear-active {\\n  animation-name: antMoveUpIn;\\n  animation-play-state: running;\\n}\\n.move-up-leave.move-up-leave-active {\\n  animation-name: antMoveUpOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.move-up-enter,\\n.move-up-appear {\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.move-up-leave {\\n  animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);\\n}\\n.move-down-enter,\\n.move-down-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.move-down-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.move-down-enter.move-down-enter-active,\\n.move-down-appear.move-down-appear-active {\\n  animation-name: antMoveDownIn;\\n  animation-play-state: running;\\n}\\n.move-down-leave.move-down-leave-active {\\n  animation-name: antMoveDownOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.move-down-enter,\\n.move-down-appear {\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.move-down-leave {\\n  animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);\\n}\\n.move-left-enter,\\n.move-left-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.move-left-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.move-left-enter.move-left-enter-active,\\n.move-left-appear.move-left-appear-active {\\n  animation-name: antMoveLeftIn;\\n  animation-play-state: running;\\n}\\n.move-left-leave.move-left-leave-active {\\n  animation-name: antMoveLeftOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.move-left-enter,\\n.move-left-appear {\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.move-left-leave {\\n  animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);\\n}\\n.move-right-enter,\\n.move-right-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.move-right-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.move-right-enter.move-right-enter-active,\\n.move-right-appear.move-right-appear-active {\\n  animation-name: antMoveRightIn;\\n  animation-play-state: running;\\n}\\n.move-right-leave.move-right-leave-active {\\n  animation-name: antMoveRightOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.move-right-enter,\\n.move-right-appear {\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.move-right-leave {\\n  animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34);\\n}\\n@keyframes antMoveDownIn {\\n  0% {\\n    transform: translateY(100%);\\n    transform-origin: 0 0;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: translateY(0%);\\n    transform-origin: 0 0;\\n    opacity: 1;\\n  }\\n}\\n@keyframes antMoveDownOut {\\n  0% {\\n    transform: translateY(0%);\\n    transform-origin: 0 0;\\n    opacity: 1;\\n  }\\n  100% {\\n    transform: translateY(100%);\\n    transform-origin: 0 0;\\n    opacity: 0;\\n  }\\n}\\n@keyframes antMoveLeftIn {\\n  0% {\\n    transform: translateX(-100%);\\n    transform-origin: 0 0;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: translateX(0%);\\n    transform-origin: 0 0;\\n    opacity: 1;\\n  }\\n}\\n@keyframes antMoveLeftOut {\\n  0% {\\n    transform: translateX(0%);\\n    transform-origin: 0 0;\\n    opacity: 1;\\n  }\\n  100% {\\n    transform: translateX(-100%);\\n    transform-origin: 0 0;\\n    opacity: 0;\\n  }\\n}\\n@keyframes antMoveRightIn {\\n  0% {\\n    transform: translateX(100%);\\n    transform-origin: 0 0;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: translateX(0%);\\n    transform-origin: 0 0;\\n    opacity: 1;\\n  }\\n}\\n@keyframes antMoveRightOut {\\n  0% {\\n    transform: translateX(0%);\\n    transform-origin: 0 0;\\n    opacity: 1;\\n  }\\n  100% {\\n    transform: translateX(100%);\\n    transform-origin: 0 0;\\n    opacity: 0;\\n  }\\n}\\n@keyframes antMoveUpIn {\\n  0% {\\n    transform: translateY(-100%);\\n    transform-origin: 0 0;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: translateY(0%);\\n    transform-origin: 0 0;\\n    opacity: 1;\\n  }\\n}\\n@keyframes antMoveUpOut {\\n  0% {\\n    transform: translateY(0%);\\n    transform-origin: 0 0;\\n    opacity: 1;\\n  }\\n  100% {\\n    transform: translateY(-100%);\\n    transform-origin: 0 0;\\n    opacity: 0;\\n  }\\n}\\n@keyframes loadingCircle {\\n  100% {\\n    transform: rotate(360deg);\\n  }\\n}\\n[ant-click-animating='true'],\\n[ant-click-animating-without-extra-node='true'] {\\n  position: relative;\\n}\\n[ant-click-animating-without-extra-node='true']::after,\\n.ant-click-animating-node {\\n  position: absolute;\\n  top: -1px;\\n  right: -1px;\\n  bottom: -1px;\\n  left: -1px;\\n  display: block;\\n  border: 0 solid #08979c;\\n  border-radius: inherit;\\n  opacity: 0.2;\\n  animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1);\\n  animation-fill-mode: forwards;\\n  pointer-events: none;\\n  content: '';\\n}\\n@keyframes waveEffect {\\n  100% {\\n    top: -6px;\\n    right: -6px;\\n    bottom: -6px;\\n    left: -6px;\\n    border-width: 6px;\\n  }\\n}\\n@keyframes fadeEffect {\\n  100% {\\n    opacity: 0;\\n  }\\n}\\n.slide-up-enter,\\n.slide-up-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.slide-up-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.slide-up-enter.slide-up-enter-active,\\n.slide-up-appear.slide-up-appear-active {\\n  animation-name: antSlideUpIn;\\n  animation-play-state: running;\\n}\\n.slide-up-leave.slide-up-leave-active {\\n  animation-name: antSlideUpOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.slide-up-enter,\\n.slide-up-appear {\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.slide-up-leave {\\n  animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n}\\n.slide-down-enter,\\n.slide-down-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.slide-down-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.slide-down-enter.slide-down-enter-active,\\n.slide-down-appear.slide-down-appear-active {\\n  animation-name: antSlideDownIn;\\n  animation-play-state: running;\\n}\\n.slide-down-leave.slide-down-leave-active {\\n  animation-name: antSlideDownOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.slide-down-enter,\\n.slide-down-appear {\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.slide-down-leave {\\n  animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n}\\n.slide-left-enter,\\n.slide-left-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.slide-left-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.slide-left-enter.slide-left-enter-active,\\n.slide-left-appear.slide-left-appear-active {\\n  animation-name: antSlideLeftIn;\\n  animation-play-state: running;\\n}\\n.slide-left-leave.slide-left-leave-active {\\n  animation-name: antSlideLeftOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.slide-left-enter,\\n.slide-left-appear {\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.slide-left-leave {\\n  animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n}\\n.slide-right-enter,\\n.slide-right-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.slide-right-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.slide-right-enter.slide-right-enter-active,\\n.slide-right-appear.slide-right-appear-active {\\n  animation-name: antSlideRightIn;\\n  animation-play-state: running;\\n}\\n.slide-right-leave.slide-right-leave-active {\\n  animation-name: antSlideRightOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.slide-right-enter,\\n.slide-right-appear {\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1);\\n}\\n.slide-right-leave {\\n  animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\\n}\\n@keyframes antSlideUpIn {\\n  0% {\\n    transform: scaleY(0.8);\\n    transform-origin: 0% 0%;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scaleY(1);\\n    transform-origin: 0% 0%;\\n    opacity: 1;\\n  }\\n}\\n@keyframes antSlideUpOut {\\n  0% {\\n    transform: scaleY(1);\\n    transform-origin: 0% 0%;\\n    opacity: 1;\\n  }\\n  100% {\\n    transform: scaleY(0.8);\\n    transform-origin: 0% 0%;\\n    opacity: 0;\\n  }\\n}\\n@keyframes antSlideDownIn {\\n  0% {\\n    transform: scaleY(0.8);\\n    transform-origin: 100% 100%;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scaleY(1);\\n    transform-origin: 100% 100%;\\n    opacity: 1;\\n  }\\n}\\n@keyframes antSlideDownOut {\\n  0% {\\n    transform: scaleY(1);\\n    transform-origin: 100% 100%;\\n    opacity: 1;\\n  }\\n  100% {\\n    transform: scaleY(0.8);\\n    transform-origin: 100% 100%;\\n    opacity: 0;\\n  }\\n}\\n@keyframes antSlideLeftIn {\\n  0% {\\n    transform: scaleX(0.8);\\n    transform-origin: 0% 0%;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scaleX(1);\\n    transform-origin: 0% 0%;\\n    opacity: 1;\\n  }\\n}\\n@keyframes antSlideLeftOut {\\n  0% {\\n    transform: scaleX(1);\\n    transform-origin: 0% 0%;\\n    opacity: 1;\\n  }\\n  100% {\\n    transform: scaleX(0.8);\\n    transform-origin: 0% 0%;\\n    opacity: 0;\\n  }\\n}\\n@keyframes antSlideRightIn {\\n  0% {\\n    transform: scaleX(0.8);\\n    transform-origin: 100% 0%;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scaleX(1);\\n    transform-origin: 100% 0%;\\n    opacity: 1;\\n  }\\n}\\n@keyframes antSlideRightOut {\\n  0% {\\n    transform: scaleX(1);\\n    transform-origin: 100% 0%;\\n    opacity: 1;\\n  }\\n  100% {\\n    transform: scaleX(0.8);\\n    transform-origin: 100% 0%;\\n    opacity: 0;\\n  }\\n}\\n.swing-enter,\\n.swing-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.swing-enter.swing-enter-active,\\n.swing-appear.swing-appear-active {\\n  animation-name: antSwingIn;\\n  animation-play-state: running;\\n}\\n@keyframes antSwingIn {\\n  0%,\\n  100% {\\n    transform: translateX(0);\\n  }\\n  20% {\\n    transform: translateX(-10px);\\n  }\\n  40% {\\n    transform: translateX(10px);\\n  }\\n  60% {\\n    transform: translateX(-5px);\\n  }\\n  80% {\\n    transform: translateX(5px);\\n  }\\n}\\n.zoom-enter,\\n.zoom-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-enter.zoom-enter-active,\\n.zoom-appear.zoom-appear-active {\\n  animation-name: antZoomIn;\\n  animation-play-state: running;\\n}\\n.zoom-leave.zoom-leave-active {\\n  animation-name: antZoomOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.zoom-enter,\\n.zoom-appear {\\n  transform: scale(0);\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-leave {\\n  animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-big-enter,\\n.zoom-big-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-big-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-big-enter.zoom-big-enter-active,\\n.zoom-big-appear.zoom-big-appear-active {\\n  animation-name: antZoomBigIn;\\n  animation-play-state: running;\\n}\\n.zoom-big-leave.zoom-big-leave-active {\\n  animation-name: antZoomBigOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.zoom-big-enter,\\n.zoom-big-appear {\\n  transform: scale(0);\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-big-leave {\\n  animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-big-fast-enter,\\n.zoom-big-fast-appear {\\n  animation-duration: 0.1s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-big-fast-leave {\\n  animation-duration: 0.1s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-big-fast-enter.zoom-big-fast-enter-active,\\n.zoom-big-fast-appear.zoom-big-fast-appear-active {\\n  animation-name: antZoomBigIn;\\n  animation-play-state: running;\\n}\\n.zoom-big-fast-leave.zoom-big-fast-leave-active {\\n  animation-name: antZoomBigOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.zoom-big-fast-enter,\\n.zoom-big-fast-appear {\\n  transform: scale(0);\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-big-fast-leave {\\n  animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-up-enter,\\n.zoom-up-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-up-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-up-enter.zoom-up-enter-active,\\n.zoom-up-appear.zoom-up-appear-active {\\n  animation-name: antZoomUpIn;\\n  animation-play-state: running;\\n}\\n.zoom-up-leave.zoom-up-leave-active {\\n  animation-name: antZoomUpOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.zoom-up-enter,\\n.zoom-up-appear {\\n  transform: scale(0);\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-up-leave {\\n  animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-down-enter,\\n.zoom-down-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-down-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-down-enter.zoom-down-enter-active,\\n.zoom-down-appear.zoom-down-appear-active {\\n  animation-name: antZoomDownIn;\\n  animation-play-state: running;\\n}\\n.zoom-down-leave.zoom-down-leave-active {\\n  animation-name: antZoomDownOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.zoom-down-enter,\\n.zoom-down-appear {\\n  transform: scale(0);\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-down-leave {\\n  animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-left-enter,\\n.zoom-left-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-left-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-left-enter.zoom-left-enter-active,\\n.zoom-left-appear.zoom-left-appear-active {\\n  animation-name: antZoomLeftIn;\\n  animation-play-state: running;\\n}\\n.zoom-left-leave.zoom-left-leave-active {\\n  animation-name: antZoomLeftOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.zoom-left-enter,\\n.zoom-left-appear {\\n  transform: scale(0);\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-left-leave {\\n  animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.zoom-right-enter,\\n.zoom-right-appear {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-right-leave {\\n  animation-duration: 0.2s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.zoom-right-enter.zoom-right-enter-active,\\n.zoom-right-appear.zoom-right-appear-active {\\n  animation-name: antZoomRightIn;\\n  animation-play-state: running;\\n}\\n.zoom-right-leave.zoom-right-leave-active {\\n  animation-name: antZoomRightOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.zoom-right-enter,\\n.zoom-right-appear {\\n  transform: scale(0);\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1);\\n}\\n.zoom-right-leave {\\n  animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n@keyframes antZoomIn {\\n  0% {\\n    transform: scale(0.2);\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scale(1);\\n    opacity: 1;\\n  }\\n}\\n@keyframes antZoomOut {\\n  0% {\\n    transform: scale(1);\\n  }\\n  100% {\\n    transform: scale(0.2);\\n    opacity: 0;\\n  }\\n}\\n@keyframes antZoomBigIn {\\n  0% {\\n    transform: scale(0.8);\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scale(1);\\n    opacity: 1;\\n  }\\n}\\n@keyframes antZoomBigOut {\\n  0% {\\n    transform: scale(1);\\n  }\\n  100% {\\n    transform: scale(0.8);\\n    opacity: 0;\\n  }\\n}\\n@keyframes antZoomUpIn {\\n  0% {\\n    transform: scale(0.8);\\n    transform-origin: 50% 0%;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scale(1);\\n    transform-origin: 50% 0%;\\n  }\\n}\\n@keyframes antZoomUpOut {\\n  0% {\\n    transform: scale(1);\\n    transform-origin: 50% 0%;\\n  }\\n  100% {\\n    transform: scale(0.8);\\n    transform-origin: 50% 0%;\\n    opacity: 0;\\n  }\\n}\\n@keyframes antZoomLeftIn {\\n  0% {\\n    transform: scale(0.8);\\n    transform-origin: 0% 50%;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scale(1);\\n    transform-origin: 0% 50%;\\n  }\\n}\\n@keyframes antZoomLeftOut {\\n  0% {\\n    transform: scale(1);\\n    transform-origin: 0% 50%;\\n  }\\n  100% {\\n    transform: scale(0.8);\\n    transform-origin: 0% 50%;\\n    opacity: 0;\\n  }\\n}\\n@keyframes antZoomRightIn {\\n  0% {\\n    transform: scale(0.8);\\n    transform-origin: 100% 50%;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scale(1);\\n    transform-origin: 100% 50%;\\n  }\\n}\\n@keyframes antZoomRightOut {\\n  0% {\\n    transform: scale(1);\\n    transform-origin: 100% 50%;\\n  }\\n  100% {\\n    transform: scale(0.8);\\n    transform-origin: 100% 50%;\\n    opacity: 0;\\n  }\\n}\\n@keyframes antZoomDownIn {\\n  0% {\\n    transform: scale(0.8);\\n    transform-origin: 50% 100%;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scale(1);\\n    transform-origin: 50% 100%;\\n  }\\n}\\n@keyframes antZoomDownOut {\\n  0% {\\n    transform: scale(1);\\n    transform-origin: 50% 100%;\\n  }\\n  100% {\\n    transform: scale(0.8);\\n    transform-origin: 50% 100%;\\n    opacity: 0;\\n  }\\n}\\n.ant-motion-collapse {\\n  overflow: hidden;\\n}\\n.ant-motion-collapse-active {\\n  transition: height 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1) !important;\\n}\\n.ant-affix {\\n  position: fixed;\\n  z-index: 10;\\n}\\n.ant-alert {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  padding: 8px 15px 8px 37px;\\n  border-radius: 4px;\\n}\\n.ant-alert.ant-alert-no-icon {\\n  padding: 8px 15px;\\n}\\n.ant-alert.ant-alert-closable {\\n  padding-right: 30px;\\n}\\n.ant-alert-icon {\\n  position: absolute;\\n  top: 11.5px;\\n  left: 16px;\\n}\\n.ant-alert-description {\\n  display: none;\\n  font-size: 14px;\\n  line-height: 22px;\\n}\\n.ant-alert-success {\\n  background-color: #f6ffed;\\n  border: 1px solid #b7eb8f;\\n}\\n.ant-alert-success .ant-alert-icon {\\n  color: #52c41a;\\n}\\n.ant-alert-info {\\n  background-color: #e6f7ff;\\n  border: 1px solid #91d5ff;\\n}\\n.ant-alert-info .ant-alert-icon {\\n  color: #1890ff;\\n}\\n.ant-alert-warning {\\n  background-color: #fffbe6;\\n  border: 1px solid #ffe58f;\\n}\\n.ant-alert-warning .ant-alert-icon {\\n  color: #faad14;\\n}\\n.ant-alert-error {\\n  background-color: #fff1f0;\\n  border: 1px solid #ffa39e;\\n}\\n.ant-alert-error .ant-alert-icon {\\n  color: #f5222d;\\n}\\n.ant-alert-close-icon {\\n  position: absolute;\\n  top: 8px;\\n  right: 16px;\\n  overflow: hidden;\\n  font-size: 12px;\\n  line-height: 22px;\\n  cursor: pointer;\\n}\\n.ant-alert-close-icon .anticon-close {\\n  color: rgba(0, 0, 0, 0.45);\\n  transition: color 0.3s;\\n}\\n.ant-alert-close-icon .anticon-close:hover {\\n  color: rgba(0, 0, 0, 0.75);\\n}\\n.ant-alert-close-text {\\n  position: absolute;\\n  right: 16px;\\n}\\n.ant-alert-with-description {\\n  position: relative;\\n  padding: 15px 15px 15px 64px;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 1.5;\\n  border-radius: 4px;\\n}\\n.ant-alert-with-description.ant-alert-no-icon {\\n  padding: 15px;\\n}\\n.ant-alert-with-description .ant-alert-icon {\\n  position: absolute;\\n  top: 16px;\\n  left: 24px;\\n  font-size: 24px;\\n}\\n.ant-alert-with-description .ant-alert-close-icon {\\n  position: absolute;\\n  top: 16px;\\n  right: 16px;\\n  font-size: 14px;\\n  cursor: pointer;\\n}\\n.ant-alert-with-description .ant-alert-message {\\n  display: block;\\n  margin-bottom: 4px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-size: 16px;\\n}\\n.ant-alert-with-description .ant-alert-description {\\n  display: block;\\n}\\n.ant-alert.ant-alert-close {\\n  height: 0 !important;\\n  margin: 0;\\n  padding-top: 0;\\n  padding-bottom: 0;\\n  transform-origin: 50% 0;\\n  transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.ant-alert-slide-up-leave {\\n  animation: antAlertSlideUpOut 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n  animation-fill-mode: both;\\n}\\n.ant-alert-banner {\\n  margin-bottom: 0;\\n  border: 0;\\n  border-radius: 0;\\n}\\n@keyframes antAlertSlideUpIn {\\n  0% {\\n    transform: scaleY(0);\\n    transform-origin: 0% 0%;\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scaleY(1);\\n    transform-origin: 0% 0%;\\n    opacity: 1;\\n  }\\n}\\n@keyframes antAlertSlideUpOut {\\n  0% {\\n    transform: scaleY(1);\\n    transform-origin: 0% 0%;\\n    opacity: 1;\\n  }\\n  100% {\\n    transform: scaleY(0);\\n    transform-origin: 0% 0%;\\n    opacity: 0;\\n  }\\n}\\n.ant-anchor {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  padding-left: 2px;\\n}\\n.ant-anchor-wrapper {\\n  margin-left: -4px;\\n  padding-left: 4px;\\n  overflow: auto;\\n  background-color: #fff;\\n}\\n.ant-anchor-ink {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  height: 100%;\\n}\\n.ant-anchor-ink::before {\\n  position: relative;\\n  display: block;\\n  width: 2px;\\n  height: 100%;\\n  margin: 0 auto;\\n  background-color: #e8e8e8;\\n  content: ' ';\\n}\\n.ant-anchor-ink-ball {\\n  position: absolute;\\n  left: 50%;\\n  display: none;\\n  width: 8px;\\n  height: 8px;\\n  background-color: #fff;\\n  border: 2px solid #08979c;\\n  border-radius: 8px;\\n  transform: translateX(-50%);\\n  transition: top 0.3s ease-in-out;\\n}\\n.ant-anchor-ink-ball.visible {\\n  display: inline-block;\\n}\\n.ant-anchor.fixed .ant-anchor-ink .ant-anchor-ink-ball {\\n  display: none;\\n}\\n.ant-anchor-link {\\n  padding: 7px 0 7px 16px;\\n  line-height: 1.143;\\n}\\n.ant-anchor-link-title {\\n  position: relative;\\n  display: block;\\n  margin-bottom: 6px;\\n  overflow: hidden;\\n  color: rgba(0, 0, 0, 0.65);\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n  transition: all 0.3s;\\n}\\n.ant-anchor-link-title:only-child {\\n  margin-bottom: 0;\\n}\\n.ant-anchor-link-active > .ant-anchor-link-title {\\n  color: #08979c;\\n}\\n.ant-anchor-link .ant-anchor-link {\\n  padding-top: 5px;\\n  padding-bottom: 5px;\\n}\\n.ant-select-auto-complete {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n}\\n.ant-select-auto-complete.ant-select .ant-select-selection {\\n  border: 0;\\n  box-shadow: none;\\n}\\n.ant-select-auto-complete.ant-select .ant-select-selection__rendered {\\n  height: 100%;\\n  margin-right: 0;\\n  margin-left: 0;\\n  line-height: 32px;\\n}\\n.ant-select-auto-complete.ant-select .ant-select-selection__placeholder {\\n  margin-right: 12px;\\n  margin-left: 12px;\\n}\\n.ant-select-auto-complete.ant-select .ant-select-selection--single {\\n  height: auto;\\n}\\n.ant-select-auto-complete.ant-select .ant-select-search--inline {\\n  position: static;\\n  float: left;\\n}\\n.ant-select-auto-complete.ant-select-allow-clear .ant-select-selection:hover .ant-select-selection__rendered {\\n  margin-right: 0 !important;\\n}\\n.ant-select-auto-complete.ant-select .ant-input {\\n  height: 32px;\\n  line-height: 1.5;\\n  background: transparent;\\n  border-width: 1px;\\n}\\n.ant-select-auto-complete.ant-select .ant-input:focus,\\n.ant-select-auto-complete.ant-select .ant-input:hover {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.ant-select-auto-complete.ant-select .ant-input[disabled] {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n  background-color: transparent;\\n}\\n.ant-select-auto-complete.ant-select .ant-input[disabled]:hover {\\n  border-color: #e6d8d8;\\n  border-right-width: 1px !important;\\n}\\n.ant-select-auto-complete.ant-select-lg .ant-select-selection__rendered {\\n  line-height: 40px;\\n}\\n.ant-select-auto-complete.ant-select-lg .ant-input {\\n  height: 40px;\\n  padding-top: 6px;\\n  padding-bottom: 6px;\\n}\\n.ant-select-auto-complete.ant-select-sm .ant-select-selection__rendered {\\n  line-height: 24px;\\n}\\n.ant-select-auto-complete.ant-select-sm .ant-input {\\n  height: 24px;\\n  padding-top: 1px;\\n  padding-bottom: 1px;\\n}\\n.ant-avatar {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  overflow: hidden;\\n  color: #fff;\\n  white-space: nowrap;\\n  text-align: center;\\n  vertical-align: middle;\\n  background: #ccc;\\n  width: 32px;\\n  height: 32px;\\n  line-height: 32px;\\n  border-radius: 50%;\\n}\\n.ant-avatar-image {\\n  background: transparent;\\n}\\n.ant-avatar-string {\\n  position: absolute;\\n  left: 50%;\\n  transform-origin: 0 center;\\n}\\n.ant-avatar.ant-avatar-icon {\\n  font-size: 18px;\\n}\\n.ant-avatar-lg {\\n  width: 40px;\\n  height: 40px;\\n  line-height: 40px;\\n  border-radius: 50%;\\n}\\n.ant-avatar-lg-string {\\n  position: absolute;\\n  left: 50%;\\n  transform-origin: 0 center;\\n}\\n.ant-avatar-lg.ant-avatar-icon {\\n  font-size: 24px;\\n}\\n.ant-avatar-sm {\\n  width: 24px;\\n  height: 24px;\\n  line-height: 24px;\\n  border-radius: 50%;\\n}\\n.ant-avatar-sm-string {\\n  position: absolute;\\n  left: 50%;\\n  transform-origin: 0 center;\\n}\\n.ant-avatar-sm.ant-avatar-icon {\\n  font-size: 14px;\\n}\\n.ant-avatar-square {\\n  border-radius: 4px;\\n}\\n.ant-avatar > img {\\n  display: block;\\n  width: 100%;\\n  height: 100%;\\n}\\n.ant-back-top {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: fixed;\\n  right: 100px;\\n  bottom: 50px;\\n  z-index: 10;\\n  width: 40px;\\n  height: 40px;\\n  cursor: pointer;\\n}\\n.ant-back-top-content {\\n  width: 40px;\\n  height: 40px;\\n  overflow: hidden;\\n  color: #fff;\\n  text-align: center;\\n  background-color: rgba(0, 0, 0, 0.45);\\n  border-radius: 20px;\\n  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-back-top-content:hover {\\n  background-color: rgba(0, 0, 0, 0.65);\\n  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-back-top-icon {\\n  width: 14px;\\n  height: 16px;\\n  margin: 12px auto;\\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAACWwljjAAAABGdBTUEAALGPC/xhBQAAAbtJREFUWAntmMtKw0AUhhMvS5cuxILgQlRUpIggIoKIIoigG1eC+AA+jo+i6FIXBfeuXIgoeKVeitVWJX5HWhhDksnUpp3FDPyZk3Nm5nycmZKkXhAEOXSA3lG7muTeRzmfy6HneUvIhnYkQK+Q9NhAA0Opg0vBEhjBKHiyb8iGMyQMOYuK41BcBSypAL+MYXSKjtFAW7EAGEO3qN4uMQbbAkXiSfRQJ1H6a+yhlkKRcAoVFYiweYNjtCVQJJpBz2GCiPt7fBOZQpFgDpUikse5HgnkM4Fi4QX0Fpc5wf9EbLqpUCy4jMoJSXWhFwbMNgWKhVbRhy5jirhs9fy/oFhgHVVTJEs7RLZ8sSEoJm6iz7SZDMbJ+/OKERQTttCXQRLToRUmrKWCYuA2+jbN0MB4OQobYShfdTCgn/sL1K36M7TLrN3n+758aPy2rrpR6+/od5E8tf/A1uLS9aId5T7J3CNYihkQ4D9PiMdMC7mp4rjB9kjFjZp8BlnVHJBuO1yFXIV0FdDF3RlyFdJVQBdv5AxVdIsq8apiZ2PyYO1EVykesGfZEESsCkweyR8MUW+V8uJ1gkYipmpdP1pm2aJVPEGzAAAAAElFTkSuQmCC) 100%/100% no-repeat;\\n}\\n@media screen and (max-width: 768px) {\\n  .ant-back-top {\\n    right: 60px;\\n  }\\n}\\n@media screen and (max-width: 480px) {\\n  .ant-back-top {\\n    right: 20px;\\n  }\\n}\\n.ant-badge {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  color: unset;\\n  line-height: 1;\\n}\\n.ant-badge-count {\\n  z-index: 10;\\n  min-width: 20px;\\n  height: 20px;\\n  padding: 0 6px;\\n  color: #fff;\\n  font-weight: normal;\\n  font-size: 12px;\\n  line-height: 20px;\\n  white-space: nowrap;\\n  text-align: center;\\n  background: #f5222d;\\n  border-radius: 10px;\\n  box-shadow: 0 0 0 1px #fff;\\n}\\n.ant-badge-count a,\\n.ant-badge-count a:hover {\\n  color: #fff;\\n}\\n.ant-badge-multiple-words {\\n  padding: 0 8px;\\n}\\n.ant-badge-dot {\\n  z-index: 10;\\n  width: 6px;\\n  height: 6px;\\n  background: #f5222d;\\n  border-radius: 100%;\\n  box-shadow: 0 0 0 1px #fff;\\n}\\n.ant-badge-count,\\n.ant-badge-dot,\\n.ant-badge .ant-scroll-number-custom-component {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  transform: translate(50%, -50%);\\n  transform-origin: 100% 0%;\\n}\\n.ant-badge-status {\\n  line-height: inherit;\\n  vertical-align: baseline;\\n}\\n.ant-badge-status-dot {\\n  position: relative;\\n  top: -1px;\\n  display: inline-block;\\n  width: 6px;\\n  height: 6px;\\n  vertical-align: middle;\\n  border-radius: 50%;\\n}\\n.ant-badge-status-success {\\n  background-color: #52c41a;\\n}\\n.ant-badge-status-processing {\\n  position: relative;\\n  background-color: #1890ff;\\n}\\n.ant-badge-status-processing::after {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  width: 100%;\\n  height: 100%;\\n  border: 1px solid #1890ff;\\n  border-radius: 50%;\\n  animation: antStatusProcessing 1.2s infinite ease-in-out;\\n  content: '';\\n}\\n.ant-badge-status-default {\\n  background-color: #d9d9d9;\\n}\\n.ant-badge-status-error {\\n  background-color: #f5222d;\\n}\\n.ant-badge-status-warning {\\n  background-color: #faad14;\\n}\\n.ant-badge-status-text {\\n  margin-left: 8px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n}\\n.ant-badge-zoom-appear,\\n.ant-badge-zoom-enter {\\n  animation: antZoomBadgeIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46);\\n  animation-fill-mode: both;\\n}\\n.ant-badge-zoom-leave {\\n  animation: antZoomBadgeOut 0.3s cubic-bezier(0.71, -0.46, 0.88, 0.6);\\n  animation-fill-mode: both;\\n}\\n.ant-badge-not-a-wrapper {\\n  vertical-align: middle;\\n}\\n.ant-badge-not-a-wrapper .ant-scroll-number {\\n  position: relative;\\n  top: auto;\\n  display: block;\\n}\\n.ant-badge-not-a-wrapper .ant-badge-count {\\n  transform: none;\\n}\\n@keyframes antStatusProcessing {\\n  0% {\\n    transform: scale(0.8);\\n    opacity: 0.5;\\n  }\\n  100% {\\n    transform: scale(2.4);\\n    opacity: 0;\\n  }\\n}\\n.ant-scroll-number {\\n  overflow: hidden;\\n}\\n.ant-scroll-number-only {\\n  display: inline-block;\\n  height: 20px;\\n  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-scroll-number-only > p {\\n  height: 20px;\\n  margin: 0;\\n}\\n@keyframes antZoomBadgeIn {\\n  0% {\\n    transform: scale(0) translate(50%, -50%);\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: scale(1) translate(50%, -50%);\\n  }\\n}\\n@keyframes antZoomBadgeOut {\\n  0% {\\n    transform: scale(1) translate(50%, -50%);\\n  }\\n  100% {\\n    transform: scale(0) translate(50%, -50%);\\n    opacity: 0;\\n  }\\n}\\n.ant-breadcrumb {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n}\\n.ant-breadcrumb .anticon {\\n  font-size: 14px;\\n}\\n.ant-breadcrumb a {\\n  color: rgba(0, 0, 0, 0.45);\\n  transition: color 0.3s;\\n}\\n.ant-breadcrumb a:hover {\\n  color: #23a8a8;\\n}\\n.ant-breadcrumb > span:last-child {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-breadcrumb > span:last-child .ant-breadcrumb-separator {\\n  display: none;\\n}\\n.ant-breadcrumb-separator {\\n  margin: 0 8px;\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-breadcrumb-link > .anticon + span {\\n  margin-left: 4px;\\n}\\n.ant-btn {\\n  line-height: 1.499;\\n  position: relative;\\n  display: inline-block;\\n  font-weight: 400;\\n  white-space: nowrap;\\n  text-align: center;\\n  background-image: none;\\n  border: 1px solid transparent;\\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);\\n  cursor: pointer;\\n  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n  user-select: none;\\n  touch-action: manipulation;\\n  height: 32px;\\n  padding: 0 15px;\\n  font-size: 14px;\\n  border-radius: 4px;\\n  color: rgba(0, 0, 0, 0.65);\\n  background-color: #fff;\\n  border-color: #d9d9d9;\\n}\\n.ant-btn > .anticon {\\n  line-height: 1;\\n}\\n.ant-btn,\\n.ant-btn:active,\\n.ant-btn:focus {\\n  outline: 0;\\n}\\n.ant-btn:not([disabled]):hover {\\n  text-decoration: none;\\n}\\n.ant-btn:not([disabled]):active {\\n  outline: 0;\\n  box-shadow: none;\\n}\\n.ant-btn.disabled,\\n.ant-btn[disabled] {\\n  cursor: not-allowed;\\n}\\n.ant-btn.disabled > *,\\n.ant-btn[disabled] > * {\\n  pointer-events: none;\\n}\\n.ant-btn-lg {\\n  height: 40px;\\n  padding: 0 15px;\\n  font-size: 16px;\\n  border-radius: 4px;\\n}\\n.ant-btn-sm {\\n  height: 24px;\\n  padding: 0 7px;\\n  font-size: 14px;\\n  border-radius: 4px;\\n}\\n.ant-btn > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn:hover,\\n.ant-btn:focus {\\n  color: #23a8a8;\\n  background-color: #fff;\\n  border-color: #23a8a8;\\n}\\n.ant-btn:hover > a:only-child,\\n.ant-btn:focus > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn:hover > a:only-child::after,\\n.ant-btn:focus > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn:active,\\n.ant-btn.active {\\n  color: #006d75;\\n  background-color: #fff;\\n  border-color: #006d75;\\n}\\n.ant-btn:active > a:only-child,\\n.ant-btn.active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn:active > a:only-child::after,\\n.ant-btn.active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-disabled,\\n.ant-btn.disabled,\\n.ant-btn[disabled],\\n.ant-btn-disabled:hover,\\n.ant-btn.disabled:hover,\\n.ant-btn[disabled]:hover,\\n.ant-btn-disabled:focus,\\n.ant-btn.disabled:focus,\\n.ant-btn[disabled]:focus,\\n.ant-btn-disabled:active,\\n.ant-btn.disabled:active,\\n.ant-btn[disabled]:active,\\n.ant-btn-disabled.active,\\n.ant-btn.disabled.active,\\n.ant-btn[disabled].active {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n  text-shadow: none;\\n  box-shadow: none;\\n}\\n.ant-btn-disabled > a:only-child,\\n.ant-btn.disabled > a:only-child,\\n.ant-btn[disabled] > a:only-child,\\n.ant-btn-disabled:hover > a:only-child,\\n.ant-btn.disabled:hover > a:only-child,\\n.ant-btn[disabled]:hover > a:only-child,\\n.ant-btn-disabled:focus > a:only-child,\\n.ant-btn.disabled:focus > a:only-child,\\n.ant-btn[disabled]:focus > a:only-child,\\n.ant-btn-disabled:active > a:only-child,\\n.ant-btn.disabled:active > a:only-child,\\n.ant-btn[disabled]:active > a:only-child,\\n.ant-btn-disabled.active > a:only-child,\\n.ant-btn.disabled.active > a:only-child,\\n.ant-btn[disabled].active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-disabled > a:only-child::after,\\n.ant-btn.disabled > a:only-child::after,\\n.ant-btn[disabled] > a:only-child::after,\\n.ant-btn-disabled:hover > a:only-child::after,\\n.ant-btn.disabled:hover > a:only-child::after,\\n.ant-btn[disabled]:hover > a:only-child::after,\\n.ant-btn-disabled:focus > a:only-child::after,\\n.ant-btn.disabled:focus > a:only-child::after,\\n.ant-btn[disabled]:focus > a:only-child::after,\\n.ant-btn-disabled:active > a:only-child::after,\\n.ant-btn.disabled:active > a:only-child::after,\\n.ant-btn[disabled]:active > a:only-child::after,\\n.ant-btn-disabled.active > a:only-child::after,\\n.ant-btn.disabled.active > a:only-child::after,\\n.ant-btn[disabled].active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn:hover,\\n.ant-btn:focus,\\n.ant-btn:active,\\n.ant-btn.active {\\n  text-decoration: none;\\n  background: #fff;\\n}\\n.ant-btn > i,\\n.ant-btn > span {\\n  display: inline-block;\\n  pointer-events: none;\\n}\\n.ant-btn-primary {\\n  color: #fff;\\n  background-color: #08979c;\\n  border-color: #08979c;\\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\\n}\\n.ant-btn-primary > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-primary > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-primary:hover,\\n.ant-btn-primary:focus {\\n  color: #fff;\\n  background-color: #23a8a8;\\n  border-color: #23a8a8;\\n}\\n.ant-btn-primary:hover > a:only-child,\\n.ant-btn-primary:focus > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-primary:hover > a:only-child::after,\\n.ant-btn-primary:focus > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-primary:active,\\n.ant-btn-primary.active {\\n  color: #fff;\\n  background-color: #006d75;\\n  border-color: #006d75;\\n}\\n.ant-btn-primary:active > a:only-child,\\n.ant-btn-primary.active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-primary:active > a:only-child::after,\\n.ant-btn-primary.active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-primary-disabled,\\n.ant-btn-primary.disabled,\\n.ant-btn-primary[disabled],\\n.ant-btn-primary-disabled:hover,\\n.ant-btn-primary.disabled:hover,\\n.ant-btn-primary[disabled]:hover,\\n.ant-btn-primary-disabled:focus,\\n.ant-btn-primary.disabled:focus,\\n.ant-btn-primary[disabled]:focus,\\n.ant-btn-primary-disabled:active,\\n.ant-btn-primary.disabled:active,\\n.ant-btn-primary[disabled]:active,\\n.ant-btn-primary-disabled.active,\\n.ant-btn-primary.disabled.active,\\n.ant-btn-primary[disabled].active {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n  text-shadow: none;\\n  box-shadow: none;\\n}\\n.ant-btn-primary-disabled > a:only-child,\\n.ant-btn-primary.disabled > a:only-child,\\n.ant-btn-primary[disabled] > a:only-child,\\n.ant-btn-primary-disabled:hover > a:only-child,\\n.ant-btn-primary.disabled:hover > a:only-child,\\n.ant-btn-primary[disabled]:hover > a:only-child,\\n.ant-btn-primary-disabled:focus > a:only-child,\\n.ant-btn-primary.disabled:focus > a:only-child,\\n.ant-btn-primary[disabled]:focus > a:only-child,\\n.ant-btn-primary-disabled:active > a:only-child,\\n.ant-btn-primary.disabled:active > a:only-child,\\n.ant-btn-primary[disabled]:active > a:only-child,\\n.ant-btn-primary-disabled.active > a:only-child,\\n.ant-btn-primary.disabled.active > a:only-child,\\n.ant-btn-primary[disabled].active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-primary-disabled > a:only-child::after,\\n.ant-btn-primary.disabled > a:only-child::after,\\n.ant-btn-primary[disabled] > a:only-child::after,\\n.ant-btn-primary-disabled:hover > a:only-child::after,\\n.ant-btn-primary.disabled:hover > a:only-child::after,\\n.ant-btn-primary[disabled]:hover > a:only-child::after,\\n.ant-btn-primary-disabled:focus > a:only-child::after,\\n.ant-btn-primary.disabled:focus > a:only-child::after,\\n.ant-btn-primary[disabled]:focus > a:only-child::after,\\n.ant-btn-primary-disabled:active > a:only-child::after,\\n.ant-btn-primary.disabled:active > a:only-child::after,\\n.ant-btn-primary[disabled]:active > a:only-child::after,\\n.ant-btn-primary-disabled.active > a:only-child::after,\\n.ant-btn-primary.disabled.active > a:only-child::after,\\n.ant-btn-primary[disabled].active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {\\n  border-right-color: #23a8a8;\\n  border-left-color: #23a8a8;\\n}\\n.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled {\\n  border-color: #d9d9d9;\\n}\\n.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {\\n  border-right-color: #23a8a8;\\n}\\n.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] {\\n  border-right-color: #d9d9d9;\\n}\\n.ant-btn-group .ant-btn-primary:last-child:not(:first-child),\\n.ant-btn-group .ant-btn-primary + .ant-btn-primary {\\n  border-left-color: #23a8a8;\\n}\\n.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled],\\n.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {\\n  border-left-color: #d9d9d9;\\n}\\n.ant-btn-ghost {\\n  color: rgba(0, 0, 0, 0.65);\\n  background-color: transparent;\\n  border-color: #d9d9d9;\\n}\\n.ant-btn-ghost > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-ghost > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-ghost:hover,\\n.ant-btn-ghost:focus {\\n  color: #23a8a8;\\n  background-color: transparent;\\n  border-color: #23a8a8;\\n}\\n.ant-btn-ghost:hover > a:only-child,\\n.ant-btn-ghost:focus > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-ghost:hover > a:only-child::after,\\n.ant-btn-ghost:focus > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-ghost:active,\\n.ant-btn-ghost.active {\\n  color: #006d75;\\n  background-color: transparent;\\n  border-color: #006d75;\\n}\\n.ant-btn-ghost:active > a:only-child,\\n.ant-btn-ghost.active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-ghost:active > a:only-child::after,\\n.ant-btn-ghost.active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-ghost-disabled,\\n.ant-btn-ghost.disabled,\\n.ant-btn-ghost[disabled],\\n.ant-btn-ghost-disabled:hover,\\n.ant-btn-ghost.disabled:hover,\\n.ant-btn-ghost[disabled]:hover,\\n.ant-btn-ghost-disabled:focus,\\n.ant-btn-ghost.disabled:focus,\\n.ant-btn-ghost[disabled]:focus,\\n.ant-btn-ghost-disabled:active,\\n.ant-btn-ghost.disabled:active,\\n.ant-btn-ghost[disabled]:active,\\n.ant-btn-ghost-disabled.active,\\n.ant-btn-ghost.disabled.active,\\n.ant-btn-ghost[disabled].active {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n  text-shadow: none;\\n  box-shadow: none;\\n}\\n.ant-btn-ghost-disabled > a:only-child,\\n.ant-btn-ghost.disabled > a:only-child,\\n.ant-btn-ghost[disabled] > a:only-child,\\n.ant-btn-ghost-disabled:hover > a:only-child,\\n.ant-btn-ghost.disabled:hover > a:only-child,\\n.ant-btn-ghost[disabled]:hover > a:only-child,\\n.ant-btn-ghost-disabled:focus > a:only-child,\\n.ant-btn-ghost.disabled:focus > a:only-child,\\n.ant-btn-ghost[disabled]:focus > a:only-child,\\n.ant-btn-ghost-disabled:active > a:only-child,\\n.ant-btn-ghost.disabled:active > a:only-child,\\n.ant-btn-ghost[disabled]:active > a:only-child,\\n.ant-btn-ghost-disabled.active > a:only-child,\\n.ant-btn-ghost.disabled.active > a:only-child,\\n.ant-btn-ghost[disabled].active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-ghost-disabled > a:only-child::after,\\n.ant-btn-ghost.disabled > a:only-child::after,\\n.ant-btn-ghost[disabled] > a:only-child::after,\\n.ant-btn-ghost-disabled:hover > a:only-child::after,\\n.ant-btn-ghost.disabled:hover > a:only-child::after,\\n.ant-btn-ghost[disabled]:hover > a:only-child::after,\\n.ant-btn-ghost-disabled:focus > a:only-child::after,\\n.ant-btn-ghost.disabled:focus > a:only-child::after,\\n.ant-btn-ghost[disabled]:focus > a:only-child::after,\\n.ant-btn-ghost-disabled:active > a:only-child::after,\\n.ant-btn-ghost.disabled:active > a:only-child::after,\\n.ant-btn-ghost[disabled]:active > a:only-child::after,\\n.ant-btn-ghost-disabled.active > a:only-child::after,\\n.ant-btn-ghost.disabled.active > a:only-child::after,\\n.ant-btn-ghost[disabled].active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-dashed {\\n  color: rgba(0, 0, 0, 0.65);\\n  background-color: #fff;\\n  border-color: #d9d9d9;\\n  border-style: dashed;\\n}\\n.ant-btn-dashed > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-dashed > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-dashed:hover,\\n.ant-btn-dashed:focus {\\n  color: #23a8a8;\\n  background-color: #fff;\\n  border-color: #23a8a8;\\n}\\n.ant-btn-dashed:hover > a:only-child,\\n.ant-btn-dashed:focus > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-dashed:hover > a:only-child::after,\\n.ant-btn-dashed:focus > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-dashed:active,\\n.ant-btn-dashed.active {\\n  color: #006d75;\\n  background-color: #fff;\\n  border-color: #006d75;\\n}\\n.ant-btn-dashed:active > a:only-child,\\n.ant-btn-dashed.active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-dashed:active > a:only-child::after,\\n.ant-btn-dashed.active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-dashed-disabled,\\n.ant-btn-dashed.disabled,\\n.ant-btn-dashed[disabled],\\n.ant-btn-dashed-disabled:hover,\\n.ant-btn-dashed.disabled:hover,\\n.ant-btn-dashed[disabled]:hover,\\n.ant-btn-dashed-disabled:focus,\\n.ant-btn-dashed.disabled:focus,\\n.ant-btn-dashed[disabled]:focus,\\n.ant-btn-dashed-disabled:active,\\n.ant-btn-dashed.disabled:active,\\n.ant-btn-dashed[disabled]:active,\\n.ant-btn-dashed-disabled.active,\\n.ant-btn-dashed.disabled.active,\\n.ant-btn-dashed[disabled].active {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n  text-shadow: none;\\n  box-shadow: none;\\n}\\n.ant-btn-dashed-disabled > a:only-child,\\n.ant-btn-dashed.disabled > a:only-child,\\n.ant-btn-dashed[disabled] > a:only-child,\\n.ant-btn-dashed-disabled:hover > a:only-child,\\n.ant-btn-dashed.disabled:hover > a:only-child,\\n.ant-btn-dashed[disabled]:hover > a:only-child,\\n.ant-btn-dashed-disabled:focus > a:only-child,\\n.ant-btn-dashed.disabled:focus > a:only-child,\\n.ant-btn-dashed[disabled]:focus > a:only-child,\\n.ant-btn-dashed-disabled:active > a:only-child,\\n.ant-btn-dashed.disabled:active > a:only-child,\\n.ant-btn-dashed[disabled]:active > a:only-child,\\n.ant-btn-dashed-disabled.active > a:only-child,\\n.ant-btn-dashed.disabled.active > a:only-child,\\n.ant-btn-dashed[disabled].active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-dashed-disabled > a:only-child::after,\\n.ant-btn-dashed.disabled > a:only-child::after,\\n.ant-btn-dashed[disabled] > a:only-child::after,\\n.ant-btn-dashed-disabled:hover > a:only-child::after,\\n.ant-btn-dashed.disabled:hover > a:only-child::after,\\n.ant-btn-dashed[disabled]:hover > a:only-child::after,\\n.ant-btn-dashed-disabled:focus > a:only-child::after,\\n.ant-btn-dashed.disabled:focus > a:only-child::after,\\n.ant-btn-dashed[disabled]:focus > a:only-child::after,\\n.ant-btn-dashed-disabled:active > a:only-child::after,\\n.ant-btn-dashed.disabled:active > a:only-child::after,\\n.ant-btn-dashed[disabled]:active > a:only-child::after,\\n.ant-btn-dashed-disabled.active > a:only-child::after,\\n.ant-btn-dashed.disabled.active > a:only-child::after,\\n.ant-btn-dashed[disabled].active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-danger {\\n  color: #f5222d;\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n}\\n.ant-btn-danger > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-danger > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-danger:hover {\\n  color: #fff;\\n  background-color: #ff4d4f;\\n  border-color: #ff4d4f;\\n}\\n.ant-btn-danger:hover > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-danger:hover > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-danger:focus {\\n  color: #ff4d4f;\\n  background-color: #fff;\\n  border-color: #ff4d4f;\\n}\\n.ant-btn-danger:focus > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-danger:focus > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-danger:active,\\n.ant-btn-danger.active {\\n  color: #fff;\\n  background-color: #cf1322;\\n  border-color: #cf1322;\\n}\\n.ant-btn-danger:active > a:only-child,\\n.ant-btn-danger.active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-danger:active > a:only-child::after,\\n.ant-btn-danger.active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-danger-disabled,\\n.ant-btn-danger.disabled,\\n.ant-btn-danger[disabled],\\n.ant-btn-danger-disabled:hover,\\n.ant-btn-danger.disabled:hover,\\n.ant-btn-danger[disabled]:hover,\\n.ant-btn-danger-disabled:focus,\\n.ant-btn-danger.disabled:focus,\\n.ant-btn-danger[disabled]:focus,\\n.ant-btn-danger-disabled:active,\\n.ant-btn-danger.disabled:active,\\n.ant-btn-danger[disabled]:active,\\n.ant-btn-danger-disabled.active,\\n.ant-btn-danger.disabled.active,\\n.ant-btn-danger[disabled].active {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n  text-shadow: none;\\n  box-shadow: none;\\n}\\n.ant-btn-danger-disabled > a:only-child,\\n.ant-btn-danger.disabled > a:only-child,\\n.ant-btn-danger[disabled] > a:only-child,\\n.ant-btn-danger-disabled:hover > a:only-child,\\n.ant-btn-danger.disabled:hover > a:only-child,\\n.ant-btn-danger[disabled]:hover > a:only-child,\\n.ant-btn-danger-disabled:focus > a:only-child,\\n.ant-btn-danger.disabled:focus > a:only-child,\\n.ant-btn-danger[disabled]:focus > a:only-child,\\n.ant-btn-danger-disabled:active > a:only-child,\\n.ant-btn-danger.disabled:active > a:only-child,\\n.ant-btn-danger[disabled]:active > a:only-child,\\n.ant-btn-danger-disabled.active > a:only-child,\\n.ant-btn-danger.disabled.active > a:only-child,\\n.ant-btn-danger[disabled].active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-danger-disabled > a:only-child::after,\\n.ant-btn-danger.disabled > a:only-child::after,\\n.ant-btn-danger[disabled] > a:only-child::after,\\n.ant-btn-danger-disabled:hover > a:only-child::after,\\n.ant-btn-danger.disabled:hover > a:only-child::after,\\n.ant-btn-danger[disabled]:hover > a:only-child::after,\\n.ant-btn-danger-disabled:focus > a:only-child::after,\\n.ant-btn-danger.disabled:focus > a:only-child::after,\\n.ant-btn-danger[disabled]:focus > a:only-child::after,\\n.ant-btn-danger-disabled:active > a:only-child::after,\\n.ant-btn-danger.disabled:active > a:only-child::after,\\n.ant-btn-danger[disabled]:active > a:only-child::after,\\n.ant-btn-danger-disabled.active > a:only-child::after,\\n.ant-btn-danger.disabled.active > a:only-child::after,\\n.ant-btn-danger[disabled].active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-round {\\n  height: 32px;\\n  padding: 0 16px;\\n  font-size: 16px;\\n  border-radius: 32px;\\n}\\n.ant-btn-round.ant-btn-lg {\\n  height: 40px;\\n  padding: 0 20px;\\n  font-size: 18px;\\n  border-radius: 40px;\\n}\\n.ant-btn-round.ant-btn-sm {\\n  height: 24px;\\n  padding: 0 12px;\\n  font-size: 14px;\\n  border-radius: 24px;\\n}\\n.ant-btn-circle,\\n.ant-btn-circle-outline {\\n  width: 32px;\\n  height: 32px;\\n  padding: 0;\\n  font-size: 16px;\\n  border-radius: 50%;\\n}\\n.ant-btn-circle.ant-btn-lg,\\n.ant-btn-circle-outline.ant-btn-lg {\\n  width: 40px;\\n  height: 40px;\\n  padding: 0;\\n  font-size: 18px;\\n  border-radius: 50%;\\n}\\n.ant-btn-circle.ant-btn-sm,\\n.ant-btn-circle-outline.ant-btn-sm {\\n  width: 24px;\\n  height: 24px;\\n  padding: 0;\\n  font-size: 14px;\\n  border-radius: 50%;\\n}\\n.ant-btn::before {\\n  position: absolute;\\n  top: -1px;\\n  right: -1px;\\n  bottom: -1px;\\n  left: -1px;\\n  z-index: 1;\\n  display: none;\\n  background: #fff;\\n  border-radius: inherit;\\n  opacity: 0.35;\\n  transition: opacity 0.2s;\\n  pointer-events: none;\\n  content: '';\\n}\\n.ant-btn .anticon {\\n  transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-btn .anticon.anticon-plus > svg,\\n.ant-btn .anticon.anticon-minus > svg {\\n  shape-rendering: optimizeSpeed;\\n}\\n.ant-btn.ant-btn-loading::before {\\n  display: block;\\n}\\n.ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) {\\n  position: relative;\\n  padding-left: 29px;\\n  pointer-events: none;\\n}\\n.ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon:not(:last-child) {\\n  margin-left: -14px;\\n}\\n.ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) {\\n  padding-left: 24px;\\n}\\n.ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon {\\n  margin-left: -17px;\\n}\\n.ant-btn-group {\\n  position: relative;\\n  display: inline-block;\\n}\\n.ant-btn-group > .ant-btn,\\n.ant-btn-group > span > .ant-btn {\\n  position: relative;\\n}\\n.ant-btn-group > .ant-btn:hover,\\n.ant-btn-group > span > .ant-btn:hover,\\n.ant-btn-group > .ant-btn:focus,\\n.ant-btn-group > span > .ant-btn:focus,\\n.ant-btn-group > .ant-btn:active,\\n.ant-btn-group > span > .ant-btn:active,\\n.ant-btn-group > .ant-btn.active,\\n.ant-btn-group > span > .ant-btn.active {\\n  z-index: 2;\\n}\\n.ant-btn-group > .ant-btn:disabled,\\n.ant-btn-group > span > .ant-btn:disabled {\\n  z-index: 0;\\n}\\n.ant-btn-group-lg > .ant-btn,\\n.ant-btn-group-lg > span > .ant-btn {\\n  height: 40px;\\n  padding: 0 15px;\\n  font-size: 16px;\\n  border-radius: 0;\\n  line-height: 38px;\\n}\\n.ant-btn-group-sm > .ant-btn,\\n.ant-btn-group-sm > span > .ant-btn {\\n  height: 24px;\\n  padding: 0 7px;\\n  font-size: 14px;\\n  border-radius: 0;\\n  line-height: 22px;\\n}\\n.ant-btn-group-sm > .ant-btn > .anticon,\\n.ant-btn-group-sm > span > .ant-btn > .anticon {\\n  font-size: 14px;\\n}\\n.ant-btn-group .ant-btn + .ant-btn,\\n.ant-btn + .ant-btn-group,\\n.ant-btn-group span + .ant-btn,\\n.ant-btn-group .ant-btn + span,\\n.ant-btn-group > span + span,\\n.ant-btn-group + .ant-btn,\\n.ant-btn-group + .ant-btn-group {\\n  margin-left: -1px;\\n}\\n.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) {\\n  border-left-color: transparent;\\n}\\n.ant-btn-group .ant-btn {\\n  border-radius: 0;\\n}\\n.ant-btn-group > .ant-btn:first-child,\\n.ant-btn-group > span:first-child > .ant-btn {\\n  margin-left: 0;\\n}\\n.ant-btn-group > .ant-btn:only-child {\\n  border-radius: 4px;\\n}\\n.ant-btn-group > span:only-child > .ant-btn {\\n  border-radius: 4px;\\n}\\n.ant-btn-group > .ant-btn:first-child:not(:last-child),\\n.ant-btn-group > span:first-child:not(:last-child) > .ant-btn {\\n  border-top-left-radius: 4px;\\n  border-bottom-left-radius: 4px;\\n}\\n.ant-btn-group > .ant-btn:last-child:not(:first-child),\\n.ant-btn-group > span:last-child:not(:first-child) > .ant-btn {\\n  border-top-right-radius: 4px;\\n  border-bottom-right-radius: 4px;\\n}\\n.ant-btn-group-sm > .ant-btn:only-child {\\n  border-radius: 4px;\\n}\\n.ant-btn-group-sm > span:only-child > .ant-btn {\\n  border-radius: 4px;\\n}\\n.ant-btn-group-sm > .ant-btn:first-child:not(:last-child),\\n.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {\\n  border-top-left-radius: 4px;\\n  border-bottom-left-radius: 4px;\\n}\\n.ant-btn-group-sm > .ant-btn:last-child:not(:first-child),\\n.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {\\n  border-top-right-radius: 4px;\\n  border-bottom-right-radius: 4px;\\n}\\n.ant-btn-group > .ant-btn-group {\\n  float: left;\\n}\\n.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn {\\n  border-radius: 0;\\n}\\n.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child {\\n  padding-right: 8px;\\n  border-top-right-radius: 0;\\n  border-bottom-right-radius: 0;\\n}\\n.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child {\\n  padding-left: 8px;\\n  border-top-left-radius: 0;\\n  border-bottom-left-radius: 0;\\n}\\n.ant-btn:not(.ant-btn-circle):not(.ant-btn-circle-outline).ant-btn-icon-only {\\n  padding-right: 8px;\\n  padding-left: 8px;\\n}\\n.ant-btn:focus > span,\\n.ant-btn:active > span {\\n  position: relative;\\n}\\n.ant-btn > .anticon + span,\\n.ant-btn > span + .anticon {\\n  margin-left: 8px;\\n}\\n.ant-btn-background-ghost {\\n  color: #fff;\\n  background: transparent !important;\\n  border-color: #fff;\\n}\\n.ant-btn-background-ghost.ant-btn-primary {\\n  color: #08979c;\\n  background-color: transparent;\\n  border-color: #08979c;\\n  text-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-primary > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-primary:hover,\\n.ant-btn-background-ghost.ant-btn-primary:focus {\\n  color: #23a8a8;\\n  background-color: transparent;\\n  border-color: #23a8a8;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-primary:active,\\n.ant-btn-background-ghost.ant-btn-primary.active {\\n  color: #006d75;\\n  background-color: transparent;\\n  border-color: #006d75;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary.active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary:active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary.active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-primary-disabled,\\n.ant-btn-background-ghost.ant-btn-primary.disabled,\\n.ant-btn-background-ghost.ant-btn-primary[disabled],\\n.ant-btn-background-ghost.ant-btn-primary-disabled:hover,\\n.ant-btn-background-ghost.ant-btn-primary.disabled:hover,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover,\\n.ant-btn-background-ghost.ant-btn-primary-disabled:focus,\\n.ant-btn-background-ghost.ant-btn-primary.disabled:focus,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus,\\n.ant-btn-background-ghost.ant-btn-primary-disabled:active,\\n.ant-btn-background-ghost.ant-btn-primary.disabled:active,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active,\\n.ant-btn-background-ghost.ant-btn-primary-disabled.active,\\n.ant-btn-background-ghost.ant-btn-primary.disabled.active,\\n.ant-btn-background-ghost.ant-btn-primary[disabled].active {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n  text-shadow: none;\\n  box-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-primary-disabled > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary-disabled:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary-disabled:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary-disabled:active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary-disabled.active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-primary-disabled > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary-disabled:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary-disabled:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary-disabled:active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary-disabled.active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger {\\n  color: #f5222d;\\n  background-color: transparent;\\n  border-color: #f5222d;\\n  text-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-danger > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger:hover,\\n.ant-btn-background-ghost.ant-btn-danger:focus {\\n  color: #ff4d4f;\\n  background-color: transparent;\\n  border-color: #ff4d4f;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger:active,\\n.ant-btn-background-ghost.ant-btn-danger.active {\\n  color: #cf1322;\\n  background-color: transparent;\\n  border-color: #cf1322;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger.active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger:active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger.active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-background-ghost.ant-btn-danger-disabled,\\n.ant-btn-background-ghost.ant-btn-danger.disabled,\\n.ant-btn-background-ghost.ant-btn-danger[disabled],\\n.ant-btn-background-ghost.ant-btn-danger-disabled:hover,\\n.ant-btn-background-ghost.ant-btn-danger.disabled:hover,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover,\\n.ant-btn-background-ghost.ant-btn-danger-disabled:focus,\\n.ant-btn-background-ghost.ant-btn-danger.disabled:focus,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus,\\n.ant-btn-background-ghost.ant-btn-danger-disabled:active,\\n.ant-btn-background-ghost.ant-btn-danger.disabled:active,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active,\\n.ant-btn-background-ghost.ant-btn-danger-disabled.active,\\n.ant-btn-background-ghost.ant-btn-danger.disabled.active,\\n.ant-btn-background-ghost.ant-btn-danger[disabled].active {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n  text-shadow: none;\\n  box-shadow: none;\\n}\\n.ant-btn-background-ghost.ant-btn-danger-disabled > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger-disabled:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger-disabled:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger-disabled:active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger-disabled.active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child,\\n.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-btn-background-ghost.ant-btn-danger-disabled > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger-disabled:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger-disabled:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger-disabled:active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger-disabled.active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child::after,\\n.ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-btn-two-chinese-chars::first-letter {\\n  letter-spacing: 0.34em;\\n}\\n.ant-btn-two-chinese-chars > *:not(.anticon) {\\n  margin-right: -0.34em;\\n  letter-spacing: 0.34em;\\n}\\n.ant-btn-block {\\n  width: 100%;\\n}\\n.ant-btn:empty {\\n  vertical-align: top;\\n}\\na.ant-btn {\\n  line-height: 30px;\\n}\\na.ant-btn-lg {\\n  line-height: 38px;\\n}\\na.ant-btn-sm {\\n  line-height: 22px;\\n}\\n.ant-fullcalendar {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  border-top: 1px solid #d9d9d9;\\n  outline: none;\\n}\\n.ant-select.ant-fullcalendar-year-select {\\n  min-width: 90px;\\n}\\n.ant-select.ant-fullcalendar-year-select.ant-select-sm {\\n  min-width: 70px;\\n}\\n.ant-select.ant-fullcalendar-month-select {\\n  min-width: 80px;\\n  margin-left: 8px;\\n}\\n.ant-select.ant-fullcalendar-month-select.ant-select-sm {\\n  min-width: 60px;\\n}\\n.ant-fullcalendar-header {\\n  padding: 11px 16px 11px 0;\\n  text-align: right;\\n}\\n.ant-fullcalendar-header .ant-select-dropdown {\\n  text-align: left;\\n}\\n.ant-fullcalendar-header .ant-radio-group {\\n  margin-left: 8px;\\n  text-align: left;\\n}\\n.ant-fullcalendar-header label.ant-radio-button {\\n  height: 22px;\\n  padding: 0 10px;\\n  line-height: 20px;\\n}\\n.ant-fullcalendar-date-panel {\\n  position: relative;\\n  outline: none;\\n}\\n.ant-fullcalendar-calendar-body {\\n  padding: 8px 12px;\\n}\\n.ant-fullcalendar table {\\n  width: 100%;\\n  max-width: 100%;\\n  height: 256px;\\n  background-color: transparent;\\n  border-collapse: collapse;\\n}\\n.ant-fullcalendar table,\\n.ant-fullcalendar th,\\n.ant-fullcalendar td {\\n  border: 0;\\n}\\n.ant-fullcalendar td {\\n  position: relative;\\n}\\n.ant-fullcalendar-calendar-table {\\n  margin-bottom: 0;\\n  border-spacing: 0;\\n}\\n.ant-fullcalendar-column-header {\\n  width: 33px;\\n  padding: 0;\\n  line-height: 18px;\\n  text-align: center;\\n}\\n.ant-fullcalendar-column-header .ant-fullcalendar-column-header-inner {\\n  display: block;\\n  font-weight: normal;\\n}\\n.ant-fullcalendar-week-number-header .ant-fullcalendar-column-header-inner {\\n  display: none;\\n}\\n.ant-fullcalendar-month,\\n.ant-fullcalendar-date {\\n  text-align: center;\\n  transition: all 0.3s;\\n}\\n.ant-fullcalendar-value {\\n  display: block;\\n  width: 24px;\\n  height: 24px;\\n  margin: 0 auto;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 24px;\\n  background: transparent;\\n  border-radius: 2px;\\n  transition: all 0.3s;\\n}\\n.ant-fullcalendar-value:hover {\\n  background: #c5dbd8;\\n  cursor: pointer;\\n}\\n.ant-fullcalendar-value:active {\\n  color: #fff;\\n  background: #08979c;\\n}\\n.ant-fullcalendar-month-panel-cell .ant-fullcalendar-value {\\n  width: 48px;\\n}\\n.ant-fullcalendar-today .ant-fullcalendar-value,\\n.ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value {\\n  box-shadow: 0 0 0 1px #08979c inset;\\n}\\n.ant-fullcalendar-selected-day .ant-fullcalendar-value,\\n.ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value {\\n  color: #fff;\\n  background: #08979c;\\n}\\n.ant-fullcalendar-disabled-cell-first-of-row .ant-fullcalendar-value {\\n  border-top-left-radius: 4px;\\n  border-bottom-left-radius: 4px;\\n}\\n.ant-fullcalendar-disabled-cell-last-of-row .ant-fullcalendar-value {\\n  border-top-right-radius: 4px;\\n  border-bottom-right-radius: 4px;\\n}\\n.ant-fullcalendar-last-month-cell .ant-fullcalendar-value,\\n.ant-fullcalendar-next-month-btn-day .ant-fullcalendar-value {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-fullcalendar-month-panel-table {\\n  width: 100%;\\n  table-layout: fixed;\\n  border-collapse: separate;\\n}\\n.ant-fullcalendar-content {\\n  position: absolute;\\n  bottom: -9px;\\n  left: 0;\\n  width: 100%;\\n}\\n.ant-fullcalendar-fullscreen {\\n  border-top: 0;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-table {\\n  table-layout: fixed;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-header .ant-radio-group {\\n  margin-left: 16px;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-header label.ant-radio-button {\\n  height: 32px;\\n  line-height: 30px;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month,\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-date {\\n  display: block;\\n  height: 116px;\\n  margin: 0 4px;\\n  padding: 4px 8px;\\n  color: rgba(0, 0, 0, 0.65);\\n  text-align: left;\\n  border-top: 2px solid #e8e8e8;\\n  transition: background 0.3s;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month:hover,\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-date:hover {\\n  background: #c5dbd8;\\n  cursor: pointer;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month:active,\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-date:active {\\n  background: #8fcfc8;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-column-header {\\n  padding-right: 12px;\\n  padding-bottom: 5px;\\n  text-align: right;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-value {\\n  width: auto;\\n  text-align: right;\\n  background: transparent;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-month,\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-date {\\n  background: transparent;\\n  border-top-color: #08979c;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value,\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value {\\n  box-shadow: none;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-month,\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-date {\\n  background: #c5dbd8;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value,\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-value {\\n  color: #08979c;\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-last-month-cell .ant-fullcalendar-date,\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-next-month-btn-day .ant-fullcalendar-date {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-fullcalendar-fullscreen .ant-fullcalendar-content {\\n  position: static;\\n  width: auto;\\n  height: 88px;\\n  overflow-y: auto;\\n}\\n.ant-fullcalendar-disabled-cell .ant-fullcalendar-date,\\n.ant-fullcalendar-disabled-cell .ant-fullcalendar-date:hover {\\n  cursor: not-allowed;\\n}\\n.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date,\\n.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date:hover {\\n  background: transparent;\\n}\\n.ant-fullcalendar-disabled-cell .ant-fullcalendar-value {\\n  width: auto;\\n  color: rgba(0, 0, 0, 0.25);\\n  border-radius: 0;\\n  cursor: not-allowed;\\n}\\n.ant-card {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  background: #fff;\\n  border-radius: 2px;\\n  transition: all 0.3s;\\n}\\n.ant-card-hoverable {\\n  cursor: pointer;\\n}\\n.ant-card-hoverable:hover {\\n  border-color: rgba(0, 0, 0, 0.09);\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.09);\\n}\\n.ant-card-bordered {\\n  border: 1px solid #e8e8e8;\\n}\\n.ant-card-head {\\n  min-height: 48px;\\n  margin-bottom: -1px;\\n  padding: 0 24px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  font-size: 16px;\\n  background: transparent;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 2px 2px 0 0;\\n  zoom: 1;\\n}\\n.ant-card-head::before,\\n.ant-card-head::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-card-head::after {\\n  clear: both;\\n}\\n.ant-card-head::before,\\n.ant-card-head::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-card-head::after {\\n  clear: both;\\n}\\n.ant-card-head-wrapper {\\n  display: flex;\\n  align-items: center;\\n}\\n.ant-card-head-title {\\n  display: inline-block;\\n  flex: 1;\\n  padding: 16px 0;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n}\\n.ant-card-head .ant-tabs {\\n  clear: both;\\n  margin-bottom: -17px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-weight: normal;\\n  font-size: 14px;\\n}\\n.ant-card-head .ant-tabs-bar {\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-card-extra {\\n  float: right;\\n  margin-left: auto;\\n  padding: 16px 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-weight: normal;\\n  font-size: 14px;\\n}\\n.ant-card-body {\\n  padding: 24px;\\n  zoom: 1;\\n}\\n.ant-card-body::before,\\n.ant-card-body::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-card-body::after {\\n  clear: both;\\n}\\n.ant-card-body::before,\\n.ant-card-body::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-card-body::after {\\n  clear: both;\\n}\\n.ant-card-contain-grid:not(.ant-card-loading) .ant-card-body {\\n  margin: -1px 0 0 -1px;\\n  padding: 0;\\n}\\n.ant-card-grid {\\n  float: left;\\n  width: 33.33%;\\n  padding: 24px;\\n  border: 0;\\n  border-radius: 0;\\n  box-shadow: 1px 0 0 0 #e8e8e8, 0 1px 0 0 #e8e8e8, 1px 1px 0 0 #e8e8e8, 1px 0 0 0 #e8e8e8 inset, 0 1px 0 0 #e8e8e8 inset;\\n  transition: all 0.3s;\\n}\\n.ant-card-grid:hover {\\n  position: relative;\\n  z-index: 1;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-card-contain-tabs > .ant-card-head .ant-card-head-title {\\n  min-height: 32px;\\n  padding-bottom: 0;\\n}\\n.ant-card-contain-tabs .ant-card-extra {\\n  padding-bottom: 0;\\n}\\n.ant-card-cover > * {\\n  display: block;\\n  width: 100%;\\n}\\n.ant-card-cover img {\\n  border-radius: 2px 2px 0 0;\\n}\\n.ant-card-actions {\\n  margin: 0;\\n  padding: 0;\\n  list-style: none;\\n  background: #fafafa;\\n  border-top: 1px solid #e8e8e8;\\n  zoom: 1;\\n}\\n.ant-card-actions::before,\\n.ant-card-actions::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-card-actions::after {\\n  clear: both;\\n}\\n.ant-card-actions::before,\\n.ant-card-actions::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-card-actions::after {\\n  clear: both;\\n}\\n.ant-card-actions > li {\\n  float: left;\\n  margin: 12px 0;\\n  color: rgba(0, 0, 0, 0.45);\\n  text-align: center;\\n}\\n.ant-card-actions > li > span {\\n  position: relative;\\n  display: inline-block;\\n  min-width: 32px;\\n  font-size: 14px;\\n  line-height: 22px;\\n  cursor: pointer;\\n}\\n.ant-card-actions > li > span:hover {\\n  color: #08979c;\\n  transition: color 0.3s;\\n}\\n.ant-card-actions > li > span > .anticon {\\n  font-size: 16px;\\n  line-height: 22px;\\n}\\n.ant-card-actions > li > span a {\\n  display: inline-block;\\n  width: 100%;\\n  color: rgba(0, 0, 0, 0.45);\\n  line-height: 22px;\\n}\\n.ant-card-actions > li > span a:hover {\\n  color: #08979c;\\n}\\n.ant-card-actions > li:not(:last-child) {\\n  border-right: 1px solid #e8e8e8;\\n}\\n.ant-card-wider-padding .ant-card-head {\\n  padding: 0 32px;\\n}\\n.ant-card-wider-padding .ant-card-body {\\n  padding: 24px 32px;\\n}\\n.ant-card-padding-transition .ant-card-head,\\n.ant-card-padding-transition .ant-card-body {\\n  transition: padding 0.3s;\\n}\\n.ant-card-type-inner .ant-card-head {\\n  padding: 0 24px;\\n  background: #fafafa;\\n}\\n.ant-card-type-inner .ant-card-head-title {\\n  padding: 12px 0;\\n  font-size: 14px;\\n}\\n.ant-card-type-inner .ant-card-body {\\n  padding: 16px 24px;\\n}\\n.ant-card-type-inner .ant-card-extra {\\n  padding: 13.5px 0;\\n}\\n.ant-card-meta {\\n  margin: -4px 0;\\n  zoom: 1;\\n}\\n.ant-card-meta::before,\\n.ant-card-meta::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-card-meta::after {\\n  clear: both;\\n}\\n.ant-card-meta::before,\\n.ant-card-meta::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-card-meta::after {\\n  clear: both;\\n}\\n.ant-card-meta-avatar {\\n  float: left;\\n  padding-right: 16px;\\n}\\n.ant-card-meta-detail {\\n  overflow: hidden;\\n}\\n.ant-card-meta-detail > div:not(:last-child) {\\n  margin-bottom: 8px;\\n}\\n.ant-card-meta-title {\\n  overflow: hidden;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  font-size: 16px;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n}\\n.ant-card-meta-description {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-card-loading {\\n  overflow: hidden;\\n}\\n.ant-card-loading .ant-card-body {\\n  user-select: none;\\n}\\n.ant-card-loading-content p {\\n  margin: 0;\\n}\\n.ant-card-loading-block {\\n  height: 14px;\\n  margin: 4px 0;\\n  background: linear-gradient(90deg, rgba(207, 216, 220, 0.2), rgba(207, 216, 220, 0.4), rgba(207, 216, 220, 0.2));\\n  background-size: 600% 600%;\\n  border-radius: 2px;\\n  animation: card-loading 1.4s ease infinite;\\n}\\n@keyframes card-loading {\\n  0%,\\n  100% {\\n    background-position: 0 50%;\\n  }\\n  50% {\\n    background-position: 100% 50%;\\n  }\\n}\\n.ant-card-small > .ant-card-head {\\n  min-height: 36px;\\n  padding: 0 12px;\\n  font-size: 14px;\\n}\\n.ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-head-title {\\n  padding: 8px 0;\\n}\\n.ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-extra {\\n  padding: 8px 0;\\n  font-size: 14px;\\n}\\n.ant-card-small > .ant-card-body {\\n  padding: 12px;\\n}\\n.ant-carousel {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n}\\n.ant-carousel .slick-slider {\\n  position: relative;\\n  display: block;\\n  box-sizing: border-box;\\n  -webkit-touch-callout: none;\\n  -ms-touch-action: pan-y;\\n  touch-action: pan-y;\\n  -webkit-tap-highlight-color: transparent;\\n}\\n.ant-carousel .slick-list {\\n  position: relative;\\n  display: block;\\n  margin: 0;\\n  padding: 0;\\n  overflow: hidden;\\n}\\n.ant-carousel .slick-list:focus {\\n  outline: none;\\n}\\n.ant-carousel .slick-list.dragging {\\n  cursor: pointer;\\n}\\n.ant-carousel .slick-list .slick-slide {\\n  pointer-events: none;\\n}\\n.ant-carousel .slick-list .slick-slide.slick-active {\\n  pointer-events: auto;\\n}\\n.ant-carousel .slick-slider .slick-track,\\n.ant-carousel .slick-slider .slick-list {\\n  transform: translate3d(0, 0, 0);\\n}\\n.ant-carousel .slick-track {\\n  position: relative;\\n  top: 0;\\n  left: 0;\\n  display: block;\\n}\\n.ant-carousel .slick-track::before,\\n.ant-carousel .slick-track::after {\\n  display: table;\\n  content: '';\\n}\\n.ant-carousel .slick-track::after {\\n  clear: both;\\n}\\n.slick-loading .ant-carousel .slick-track {\\n  visibility: hidden;\\n}\\n.ant-carousel .slick-slide {\\n  display: none;\\n  float: left;\\n  height: 100%;\\n  min-height: 1px;\\n}\\n[dir='rtl'] .ant-carousel .slick-slide {\\n  float: right;\\n}\\n.ant-carousel .slick-slide img {\\n  display: block;\\n}\\n.ant-carousel .slick-slide.slick-loading img {\\n  display: none;\\n}\\n.ant-carousel .slick-slide.dragging img {\\n  pointer-events: none;\\n}\\n.ant-carousel .slick-initialized .slick-slide {\\n  display: block;\\n}\\n.ant-carousel .slick-loading .slick-slide {\\n  visibility: hidden;\\n}\\n.ant-carousel .slick-vertical .slick-slide {\\n  display: block;\\n  height: auto;\\n  border: 1px solid transparent;\\n}\\n.ant-carousel .slick-arrow.slick-hidden {\\n  display: none;\\n}\\n.ant-carousel .slick-prev,\\n.ant-carousel .slick-next {\\n  position: absolute;\\n  top: 50%;\\n  display: block;\\n  width: 20px;\\n  height: 20px;\\n  margin-top: -10px;\\n  padding: 0;\\n  color: transparent;\\n  font-size: 0;\\n  line-height: 0;\\n  background: transparent;\\n  border: 0;\\n  outline: none;\\n  cursor: pointer;\\n}\\n.ant-carousel .slick-prev:hover,\\n.ant-carousel .slick-next:hover,\\n.ant-carousel .slick-prev:focus,\\n.ant-carousel .slick-next:focus {\\n  color: transparent;\\n  background: transparent;\\n  outline: none;\\n}\\n.ant-carousel .slick-prev:hover::before,\\n.ant-carousel .slick-next:hover::before,\\n.ant-carousel .slick-prev:focus::before,\\n.ant-carousel .slick-next:focus::before {\\n  opacity: 1;\\n}\\n.ant-carousel .slick-prev.slick-disabled::before,\\n.ant-carousel .slick-next.slick-disabled::before {\\n  opacity: 0.25;\\n}\\n.ant-carousel .slick-prev {\\n  left: -25px;\\n}\\n.ant-carousel .slick-prev::before {\\n  content: '←';\\n}\\n.ant-carousel .slick-next {\\n  right: -25px;\\n}\\n.ant-carousel .slick-next::before {\\n  content: '→';\\n}\\n.ant-carousel .slick-dots {\\n  position: absolute;\\n  bottom: 12px;\\n  display: block;\\n  width: 100%;\\n  height: 3px;\\n  margin: 0;\\n  padding: 0;\\n  text-align: center;\\n  list-style: none;\\n}\\n.ant-carousel .slick-dots li {\\n  position: relative;\\n  display: inline-block;\\n  margin: 0 2px;\\n  padding: 0;\\n  text-align: center;\\n  vertical-align: top;\\n}\\n.ant-carousel .slick-dots li button {\\n  display: block;\\n  width: 16px;\\n  height: 3px;\\n  padding: 0;\\n  color: transparent;\\n  font-size: 0;\\n  background: #fff;\\n  border: 0;\\n  border-radius: 1px;\\n  outline: none;\\n  cursor: pointer;\\n  opacity: 0.3;\\n  transition: all 0.5s;\\n}\\n.ant-carousel .slick-dots li button:hover,\\n.ant-carousel .slick-dots li button:focus {\\n  opacity: 0.75;\\n}\\n.ant-carousel .slick-dots li.slick-active button {\\n  width: 24px;\\n  background: #fff;\\n  opacity: 1;\\n}\\n.ant-carousel .slick-dots li.slick-active button:hover,\\n.ant-carousel .slick-dots li.slick-active button:focus {\\n  opacity: 1;\\n}\\n.ant-carousel-vertical .slick-dots {\\n  top: 50%;\\n  right: 12px;\\n  bottom: auto;\\n  width: 3px;\\n  height: auto;\\n  transform: translateY(-50%);\\n}\\n.ant-carousel-vertical .slick-dots li {\\n  margin: 0 2px;\\n  vertical-align: baseline;\\n}\\n.ant-carousel-vertical .slick-dots li button {\\n  width: 3px;\\n  height: 16px;\\n}\\n.ant-carousel-vertical .slick-dots li.slick-active button {\\n  width: 3px;\\n  height: 24px;\\n}\\n.ant-cascader {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n}\\n.ant-cascader-input.ant-input {\\n  position: relative;\\n  width: 100%;\\n  background-color: transparent !important;\\n  cursor: pointer;\\n}\\n.ant-cascader-picker-show-search .ant-cascader-input.ant-input {\\n  position: relative;\\n}\\n.ant-cascader-picker {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  background-color: #fff;\\n  border-radius: 4px;\\n  outline: 0;\\n  cursor: pointer;\\n  transition: color 0.3s;\\n}\\n.ant-cascader-picker-with-value .ant-cascader-picker-label {\\n  color: transparent;\\n}\\n.ant-cascader-picker-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  background: #f5f5f5;\\n  cursor: not-allowed;\\n}\\n.ant-cascader-picker-disabled .ant-cascader-input {\\n  cursor: not-allowed;\\n}\\n.ant-cascader-picker:focus .ant-cascader-input {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-cascader-picker-show-search.ant-cascader-picker-focused {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-cascader-picker-label {\\n  position: absolute;\\n  top: 50%;\\n  left: 0;\\n  width: 100%;\\n  height: 20px;\\n  margin-top: -10px;\\n  padding: 0 12px;\\n  overflow: hidden;\\n  line-height: 20px;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n}\\n.ant-cascader-picker-clear {\\n  position: absolute;\\n  top: 50%;\\n  right: 12px;\\n  z-index: 2;\\n  width: 12px;\\n  height: 12px;\\n  margin-top: -6px;\\n  color: rgba(0, 0, 0, 0.25);\\n  font-size: 12px;\\n  line-height: 12px;\\n  background: #fff;\\n  cursor: pointer;\\n  opacity: 0;\\n  transition: color 0.3s ease, opacity 0.15s ease;\\n}\\n.ant-cascader-picker-clear:hover {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-cascader-picker:hover .ant-cascader-picker-clear {\\n  opacity: 1;\\n}\\n.ant-cascader-picker-arrow {\\n  position: absolute;\\n  top: 50%;\\n  right: 12px;\\n  z-index: 1;\\n  width: 12px;\\n  height: 12px;\\n  margin-top: -6px;\\n  color: rgba(0, 0, 0, 0.25);\\n  font-size: 12px;\\n  line-height: 12px;\\n  transition: transform 0.2s;\\n}\\n.ant-cascader-picker-arrow.ant-cascader-picker-arrow-expand {\\n  transform: rotate(180deg);\\n}\\n.ant-cascader-picker-small .ant-cascader-picker-clear,\\n.ant-cascader-picker-small .ant-cascader-picker-arrow {\\n  right: 8px;\\n}\\n.ant-cascader-menus {\\n  position: absolute;\\n  z-index: 1050;\\n  font-size: 14px;\\n  white-space: nowrap;\\n  background: #fff;\\n  border-radius: 4px;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-cascader-menus ul,\\n.ant-cascader-menus ol {\\n  margin: 0;\\n  padding: 0;\\n  list-style: none;\\n}\\n.ant-cascader-menus-empty,\\n.ant-cascader-menus-hidden {\\n  display: none;\\n}\\n.ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-bottomLeft,\\n.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-bottomLeft {\\n  animation-name: antSlideUpIn;\\n}\\n.ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-topLeft,\\n.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-topLeft {\\n  animation-name: antSlideDownIn;\\n}\\n.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-bottomLeft {\\n  animation-name: antSlideUpOut;\\n}\\n.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-topLeft {\\n  animation-name: antSlideDownOut;\\n}\\n.ant-cascader-menu {\\n  display: inline-block;\\n  min-width: 111px;\\n  height: 180px;\\n  margin: 0;\\n  padding: 0;\\n  overflow: auto;\\n  vertical-align: top;\\n  list-style: none;\\n  border-right: 1px solid #e8e8e8;\\n  -ms-overflow-style: -ms-autohiding-scrollbar;\\n}\\n.ant-cascader-menu:first-child {\\n  border-radius: 4px 0 0 4px;\\n}\\n.ant-cascader-menu:last-child {\\n  margin-right: -1px;\\n  border-right-color: transparent;\\n  border-radius: 0 4px 4px 0;\\n}\\n.ant-cascader-menu:only-child {\\n  border-radius: 4px;\\n}\\n.ant-cascader-menu-item {\\n  padding: 5px 12px;\\n  line-height: 22px;\\n  white-space: nowrap;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-cascader-menu-item:hover {\\n  background: #c5dbd8;\\n}\\n.ant-cascader-menu-item-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-cascader-menu-item-disabled:hover {\\n  background: transparent;\\n}\\n.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled),\\n.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover {\\n  font-weight: 600;\\n  background: #f5f5f5;\\n}\\n.ant-cascader-menu-item-expand {\\n  position: relative;\\n  padding-right: 24px;\\n}\\n.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,\\n.ant-cascader-menu-item-expand .ant-cascader-menu-item-loading-icon {\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n  position: absolute;\\n  right: 12px;\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n:root .ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon,\\n:root .ant-cascader-menu-item-expand .ant-cascader-menu-item-loading-icon {\\n  font-size: 12px;\\n}\\n.ant-cascader-menu-item .ant-cascader-menu-item-keyword {\\n  color: #f5222d;\\n}\\n@keyframes antCheckboxEffect {\\n  0% {\\n    transform: scale(1);\\n    opacity: 0.5;\\n  }\\n  100% {\\n    transform: scale(1.6);\\n    opacity: 0;\\n  }\\n}\\n.ant-checkbox {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  top: -0.09em;\\n  display: inline-block;\\n  line-height: 1;\\n  white-space: nowrap;\\n  vertical-align: middle;\\n  outline: none;\\n  cursor: pointer;\\n}\\n.ant-checkbox-wrapper:hover .ant-checkbox-inner,\\n.ant-checkbox:hover .ant-checkbox-inner,\\n.ant-checkbox-input:focus + .ant-checkbox-inner {\\n  border-color: #08979c;\\n}\\n.ant-checkbox-checked::after {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  width: 100%;\\n  height: 100%;\\n  border: 1px solid #08979c;\\n  border-radius: 2px;\\n  visibility: hidden;\\n  animation: antCheckboxEffect 0.36s ease-in-out;\\n  animation-fill-mode: both;\\n  content: '';\\n}\\n.ant-checkbox:hover::after,\\n.ant-checkbox-wrapper:hover .ant-checkbox::after {\\n  visibility: visible;\\n}\\n.ant-checkbox-inner {\\n  position: relative;\\n  top: 0;\\n  left: 0;\\n  display: block;\\n  width: 16px;\\n  height: 16px;\\n  background-color: #fff;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 2px;\\n  border-collapse: separate;\\n  transition: all 0.3s;\\n}\\n.ant-checkbox-inner::after {\\n  position: absolute;\\n  top: 50%;\\n  left: 21%;\\n  display: table;\\n  width: 5.71428571px;\\n  height: 9.14285714px;\\n  border: 2px solid #fff;\\n  border-top: 0;\\n  border-left: 0;\\n  transform: rotate(45deg) scale(0) translate(-50%, -50%);\\n  opacity: 0;\\n  transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s;\\n  content: ' ';\\n}\\n.ant-checkbox-input {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 1;\\n  width: 100%;\\n  height: 100%;\\n  cursor: pointer;\\n  opacity: 0;\\n}\\n.ant-checkbox-checked .ant-checkbox-inner::after {\\n  position: absolute;\\n  display: table;\\n  border: 2px solid #fff;\\n  border-top: 0;\\n  border-left: 0;\\n  transform: rotate(45deg) scale(1) translate(-50%, -50%);\\n  opacity: 1;\\n  transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;\\n  content: ' ';\\n}\\n.ant-checkbox-checked .ant-checkbox-inner {\\n  background-color: #08979c;\\n  border-color: #08979c;\\n}\\n.ant-checkbox-disabled {\\n  cursor: not-allowed;\\n}\\n.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after {\\n  border-color: rgba(0, 0, 0, 0.25);\\n  animation-name: none;\\n}\\n.ant-checkbox-disabled .ant-checkbox-input {\\n  cursor: not-allowed;\\n}\\n.ant-checkbox-disabled .ant-checkbox-inner {\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9 !important;\\n}\\n.ant-checkbox-disabled .ant-checkbox-inner::after {\\n  border-color: #f5f5f5;\\n  border-collapse: separate;\\n  animation-name: none;\\n}\\n.ant-checkbox-disabled + span {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-checkbox-wrapper {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  display: inline-block;\\n  line-height: unset;\\n  cursor: pointer;\\n}\\n.ant-checkbox-wrapper + .ant-checkbox-wrapper {\\n  margin-left: 8px;\\n}\\n.ant-checkbox-wrapper + span,\\n.ant-checkbox + span {\\n  padding-right: 8px;\\n  padding-left: 8px;\\n}\\n.ant-checkbox-group {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  display: inline-block;\\n}\\n.ant-checkbox-group-item {\\n  display: inline-block;\\n  margin-right: 8px;\\n}\\n.ant-checkbox-group-item:last-child {\\n  margin-right: 0;\\n}\\n.ant-checkbox-group-item + .ant-checkbox-group-item {\\n  margin-left: 0;\\n}\\n.ant-checkbox-indeterminate .ant-checkbox-inner {\\n  background-color: #fff;\\n  border-color: #d9d9d9;\\n}\\n.ant-checkbox-indeterminate .ant-checkbox-inner::after {\\n  top: 50%;\\n  left: 50%;\\n  width: 8px;\\n  height: 8px;\\n  background-color: #08979c;\\n  border: 0;\\n  transform: translate(-50%, -50%) scale(1);\\n  opacity: 1;\\n  content: ' ';\\n}\\n.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner::after {\\n  background-color: rgba(0, 0, 0, 0.25);\\n  border-color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-collapse {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  background-color: #fafafa;\\n  border: 1px solid #d9d9d9;\\n  border-bottom: 0;\\n  border-radius: 4px;\\n}\\n.ant-collapse > .ant-collapse-item {\\n  border-bottom: 1px solid #d9d9d9;\\n}\\n.ant-collapse > .ant-collapse-item:last-child,\\n.ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header {\\n  border-radius: 0 0 4px 4px;\\n}\\n.ant-collapse > .ant-collapse-item > .ant-collapse-header {\\n  position: relative;\\n  padding: 12px 16px 12px 40px;\\n  color: rgba(0, 0, 0, 0.85);\\n  line-height: 22px;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow {\\n  font-style: normal;\\n  line-height: 0;\\n  text-align: center;\\n  text-transform: none;\\n  vertical-align: -0.125em;\\n  text-rendering: optimizeLegibility;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  position: absolute;\\n  top: 50%;\\n  left: 16px;\\n  display: inline-block;\\n  margin-top: 2px;\\n  font-size: 12px;\\n  line-height: 46px;\\n  transform: translateY(-50%);\\n}\\n.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow > * {\\n  line-height: 1;\\n}\\n.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg {\\n  display: inline-block;\\n}\\n.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow::before {\\n  display: none;\\n}\\n.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow-icon {\\n  display: block;\\n}\\n.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg {\\n  transition: transform 0.24s;\\n}\\n.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-extra {\\n  float: right;\\n}\\n.ant-collapse > .ant-collapse-item > .ant-collapse-header:focus {\\n  outline: none;\\n}\\n.ant-collapse > .ant-collapse-item.ant-collapse-no-arrow > .ant-collapse-header {\\n  padding-left: 12px;\\n}\\n.ant-collapse-anim-active {\\n  transition: height 0.2s cubic-bezier(0.215, 0.61, 0.355, 1);\\n}\\n.ant-collapse-content {\\n  overflow: hidden;\\n  color: rgba(0, 0, 0, 0.65);\\n  background-color: #fff;\\n  border-top: 1px solid #d9d9d9;\\n}\\n.ant-collapse-content > .ant-collapse-content-box {\\n  padding: 16px;\\n}\\n.ant-collapse-content-inactive {\\n  display: none;\\n}\\n.ant-collapse-item:last-child > .ant-collapse-content {\\n  border-radius: 0 0 4px 4px;\\n}\\n.ant-collapse-borderless {\\n  background-color: #fff;\\n  border: 0;\\n}\\n.ant-collapse-borderless > .ant-collapse-item {\\n  border-bottom: 1px solid #d9d9d9;\\n}\\n.ant-collapse-borderless > .ant-collapse-item:last-child,\\n.ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header {\\n  border-radius: 0;\\n}\\n.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content {\\n  background-color: transparent;\\n  border-top: 0;\\n}\\n.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box {\\n  padding-top: 4px;\\n}\\n.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header,\\n.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-comment {\\n  position: relative;\\n}\\n.ant-comment-inner {\\n  display: flex;\\n  padding: 16px 0;\\n}\\n.ant-comment-avatar {\\n  position: relative;\\n  flex-shrink: 0;\\n  margin-right: 12px;\\n  cursor: pointer;\\n}\\n.ant-comment-avatar img {\\n  width: 32px;\\n  height: 32px;\\n  border-radius: 50%;\\n}\\n.ant-comment-content {\\n  position: relative;\\n  flex: 1 1 auto;\\n  min-width: 1px;\\n  font-size: 14px;\\n  word-wrap: break-word;\\n}\\n.ant-comment-content-author {\\n  display: flex;\\n  justify-content: flex-start;\\n  margin-bottom: 4px;\\n  font-size: 14px;\\n}\\n.ant-comment-content-author > a,\\n.ant-comment-content-author > span {\\n  height: 18px;\\n  padding-right: 8px;\\n  font-size: 12px;\\n  line-height: 18px;\\n}\\n.ant-comment-content-author-name {\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n  transition: color 0.3s;\\n}\\n.ant-comment-content-author-name > * {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-comment-content-author-name > *:hover {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-comment-content-author-time {\\n  color: #ccc;\\n  white-space: nowrap;\\n  cursor: auto;\\n}\\n.ant-comment-content-detail p {\\n  white-space: pre-wrap;\\n}\\n.ant-comment-actions {\\n  margin-top: 12px;\\n  padding-left: 0;\\n}\\n.ant-comment-actions > li {\\n  display: inline-block;\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-comment-actions > li > span {\\n  padding-right: 10px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 12px;\\n  cursor: pointer;\\n  transition: color 0.3s;\\n  user-select: none;\\n}\\n.ant-comment-actions > li > span:hover {\\n  color: #595959;\\n}\\n.ant-comment-nested {\\n  margin-left: 44px;\\n}\\n.ant-calendar-picker-container {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: absolute;\\n  z-index: 1050;\\n  font-family: \\\"Noto Sans KR\\\", sans-serif, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Hiragino Sans GB\\\", \\\"Microsoft YaHei\\\", \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\";\\n}\\n.ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-topLeft,\\n.ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-topRight,\\n.ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-topLeft,\\n.ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-topRight {\\n  animation-name: antSlideDownIn;\\n}\\n.ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-bottomLeft,\\n.ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-bottomRight,\\n.ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-bottomLeft,\\n.ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-bottomRight {\\n  animation-name: antSlideUpIn;\\n}\\n.ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-topLeft,\\n.ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-topRight {\\n  animation-name: antSlideDownOut;\\n}\\n.ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-bottomLeft,\\n.ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-bottomRight {\\n  animation-name: antSlideUpOut;\\n}\\n.ant-calendar-picker {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  outline: none;\\n  cursor: text;\\n  transition: opacity 0.3s;\\n}\\n.ant-calendar-picker-input {\\n  outline: none;\\n}\\n.ant-calendar-picker-input.ant-input-sm {\\n  padding-top: 0;\\n  padding-bottom: 0;\\n}\\n.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) {\\n  border-color: #08979c;\\n}\\n.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-calendar-picker-clear,\\n.ant-calendar-picker-icon {\\n  position: absolute;\\n  top: 50%;\\n  right: 12px;\\n  z-index: 1;\\n  width: 14px;\\n  height: 14px;\\n  margin-top: -7px;\\n  font-size: 12px;\\n  line-height: 14px;\\n  transition: all 0.3s;\\n  user-select: none;\\n}\\n.ant-calendar-picker-clear {\\n  z-index: 2;\\n  color: rgba(0, 0, 0, 0.25);\\n  font-size: 14px;\\n  background: #fff;\\n  cursor: pointer;\\n  opacity: 0;\\n  pointer-events: none;\\n}\\n.ant-calendar-picker-clear:hover {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-calendar-picker:hover .ant-calendar-picker-clear {\\n  opacity: 1;\\n  pointer-events: auto;\\n}\\n.ant-calendar-picker-icon {\\n  display: inline-block;\\n  color: rgba(0, 0, 0, 0.25);\\n  font-size: 14px;\\n  line-height: 1;\\n}\\n.ant-calendar-picker-small .ant-calendar-picker-clear,\\n.ant-calendar-picker-small .ant-calendar-picker-icon {\\n  right: 8px;\\n}\\n.ant-calendar {\\n  position: relative;\\n  width: 280px;\\n  font-size: 14px;\\n  line-height: 1.5;\\n  text-align: left;\\n  list-style: none;\\n  background-color: #fff;\\n  background-clip: padding-box;\\n  border: 1px solid #fff;\\n  border-radius: 4px;\\n  outline: none;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-calendar-input-wrap {\\n  height: 34px;\\n  padding: 6px 10px;\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-calendar-input {\\n  width: 100%;\\n  height: 22px;\\n  color: rgba(0, 0, 0, 0.65);\\n  background: #fff;\\n  border: 0;\\n  outline: 0;\\n  cursor: auto;\\n}\\n.ant-calendar-input::-moz-placeholder {\\n  color: #bfbfbf;\\n  opacity: 1;\\n}\\n.ant-calendar-input:-ms-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-calendar-input::-webkit-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-calendar-week-number {\\n  width: 286px;\\n}\\n.ant-calendar-week-number-cell {\\n  text-align: center;\\n}\\n.ant-calendar-header {\\n  height: 40px;\\n  line-height: 40px;\\n  text-align: center;\\n  border-bottom: 1px solid #e8e8e8;\\n  user-select: none;\\n}\\n.ant-calendar-header a:hover {\\n  color: #23a8a8;\\n}\\n.ant-calendar-header .ant-calendar-century-select,\\n.ant-calendar-header .ant-calendar-decade-select,\\n.ant-calendar-header .ant-calendar-year-select,\\n.ant-calendar-header .ant-calendar-month-select {\\n  display: inline-block;\\n  padding: 0 2px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  line-height: 40px;\\n}\\n.ant-calendar-header .ant-calendar-century-select-arrow,\\n.ant-calendar-header .ant-calendar-decade-select-arrow,\\n.ant-calendar-header .ant-calendar-year-select-arrow,\\n.ant-calendar-header .ant-calendar-month-select-arrow {\\n  display: none;\\n}\\n.ant-calendar-header .ant-calendar-prev-century-btn,\\n.ant-calendar-header .ant-calendar-next-century-btn,\\n.ant-calendar-header .ant-calendar-prev-decade-btn,\\n.ant-calendar-header .ant-calendar-next-decade-btn,\\n.ant-calendar-header .ant-calendar-prev-month-btn,\\n.ant-calendar-header .ant-calendar-next-month-btn,\\n.ant-calendar-header .ant-calendar-prev-year-btn,\\n.ant-calendar-header .ant-calendar-next-year-btn {\\n  position: absolute;\\n  top: 0;\\n  display: inline-block;\\n  padding: 0 5px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 16px;\\n  font-family: Arial, 'Hiragino Sans GB', 'Microsoft Yahei', 'Microsoft Sans Serif', sans-serif;\\n  line-height: 40px;\\n}\\n.ant-calendar-header .ant-calendar-prev-century-btn,\\n.ant-calendar-header .ant-calendar-prev-decade-btn,\\n.ant-calendar-header .ant-calendar-prev-year-btn {\\n  left: 7px;\\n}\\n.ant-calendar-header .ant-calendar-prev-century-btn::after,\\n.ant-calendar-header .ant-calendar-prev-decade-btn::after,\\n.ant-calendar-header .ant-calendar-prev-year-btn::after {\\n  content: '«';\\n}\\n.ant-calendar-header .ant-calendar-next-century-btn,\\n.ant-calendar-header .ant-calendar-next-decade-btn,\\n.ant-calendar-header .ant-calendar-next-year-btn {\\n  right: 7px;\\n}\\n.ant-calendar-header .ant-calendar-next-century-btn::after,\\n.ant-calendar-header .ant-calendar-next-decade-btn::after,\\n.ant-calendar-header .ant-calendar-next-year-btn::after {\\n  content: '»';\\n}\\n.ant-calendar-header .ant-calendar-prev-month-btn {\\n  left: 29px;\\n}\\n.ant-calendar-header .ant-calendar-prev-month-btn::after {\\n  content: '‹';\\n}\\n.ant-calendar-header .ant-calendar-next-month-btn {\\n  right: 29px;\\n}\\n.ant-calendar-header .ant-calendar-next-month-btn::after {\\n  content: '›';\\n}\\n.ant-calendar-body {\\n  padding: 8px 12px;\\n}\\n.ant-calendar table {\\n  width: 100%;\\n  max-width: 100%;\\n  background-color: transparent;\\n  border-collapse: collapse;\\n}\\n.ant-calendar table,\\n.ant-calendar th,\\n.ant-calendar td {\\n  text-align: center;\\n  border: 0;\\n}\\n.ant-calendar-calendar-table {\\n  margin-bottom: 0;\\n  border-spacing: 0;\\n}\\n.ant-calendar-column-header {\\n  width: 33px;\\n  padding: 6px 0;\\n  line-height: 18px;\\n  text-align: center;\\n}\\n.ant-calendar-column-header .ant-calendar-column-header-inner {\\n  display: block;\\n  font-weight: normal;\\n}\\n.ant-calendar-week-number-header .ant-calendar-column-header-inner {\\n  display: none;\\n}\\n.ant-calendar-cell {\\n  height: 30px;\\n  padding: 3px 0;\\n}\\n.ant-calendar-date {\\n  display: block;\\n  width: 24px;\\n  height: 24px;\\n  margin: 0 auto;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 22px;\\n  text-align: center;\\n  background: transparent;\\n  border: 1px solid transparent;\\n  border-radius: 2px;\\n  transition: background 0.3s ease;\\n}\\n.ant-calendar-date-panel {\\n  position: relative;\\n  outline: none;\\n}\\n.ant-calendar-date:hover {\\n  background: #c5dbd8;\\n  cursor: pointer;\\n}\\n.ant-calendar-date:active {\\n  color: #fff;\\n  background: #23a8a8;\\n}\\n.ant-calendar-today .ant-calendar-date {\\n  color: #08979c;\\n  font-weight: bold;\\n  border-color: #08979c;\\n}\\n.ant-calendar-last-month-cell .ant-calendar-date,\\n.ant-calendar-next-month-btn-day .ant-calendar-date {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-calendar-selected-day .ant-calendar-date {\\n  background: #ceeaeb;\\n}\\n.ant-calendar-selected-date .ant-calendar-date,\\n.ant-calendar-selected-start-date .ant-calendar-date,\\n.ant-calendar-selected-end-date .ant-calendar-date {\\n  color: #fff;\\n  background: #08979c;\\n  border: 1px solid transparent;\\n}\\n.ant-calendar-selected-date .ant-calendar-date:hover,\\n.ant-calendar-selected-start-date .ant-calendar-date:hover,\\n.ant-calendar-selected-end-date .ant-calendar-date:hover {\\n  background: #08979c;\\n}\\n.ant-calendar-disabled-cell .ant-calendar-date {\\n  width: auto;\\n  color: rgba(0, 0, 0, 0.25);\\n  background: #f5f5f5;\\n  border: 1px solid transparent;\\n  border-radius: 0;\\n  cursor: not-allowed;\\n}\\n.ant-calendar-disabled-cell .ant-calendar-date:hover {\\n  background: #f5f5f5;\\n}\\n.ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date {\\n  position: relative;\\n  padding-right: 5px;\\n  padding-left: 5px;\\n}\\n.ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date::before {\\n  position: absolute;\\n  top: -1px;\\n  left: 5px;\\n  width: 24px;\\n  height: 24px;\\n  border: 1px solid rgba(0, 0, 0, 0.25);\\n  border-radius: 2px;\\n  content: ' ';\\n}\\n.ant-calendar-disabled-cell-first-of-row .ant-calendar-date {\\n  border-top-left-radius: 4px;\\n  border-bottom-left-radius: 4px;\\n}\\n.ant-calendar-disabled-cell-last-of-row .ant-calendar-date {\\n  border-top-right-radius: 4px;\\n  border-bottom-right-radius: 4px;\\n}\\n.ant-calendar-footer {\\n  padding: 0 12px;\\n  line-height: 38px;\\n  border-top: 1px solid #e8e8e8;\\n}\\n.ant-calendar-footer:empty {\\n  border-top: 0;\\n}\\n.ant-calendar-footer-btn {\\n  display: block;\\n  text-align: center;\\n}\\n.ant-calendar-footer-extra {\\n  text-align: left;\\n}\\n.ant-calendar .ant-calendar-today-btn,\\n.ant-calendar .ant-calendar-clear-btn {\\n  display: inline-block;\\n  margin: 0 0 0 8px;\\n  text-align: center;\\n}\\n.ant-calendar .ant-calendar-today-btn-disabled,\\n.ant-calendar .ant-calendar-clear-btn-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-calendar .ant-calendar-today-btn:only-child,\\n.ant-calendar .ant-calendar-clear-btn:only-child {\\n  margin: 0;\\n}\\n.ant-calendar .ant-calendar-clear-btn {\\n  position: absolute;\\n  top: 7px;\\n  right: 5px;\\n  display: none;\\n  width: 20px;\\n  height: 20px;\\n  margin: 0;\\n  overflow: hidden;\\n  line-height: 20px;\\n  text-align: center;\\n  text-indent: -76px;\\n}\\n.ant-calendar .ant-calendar-clear-btn::after {\\n  display: inline-block;\\n  width: 20px;\\n  color: rgba(0, 0, 0, 0.25);\\n  font-size: 14px;\\n  line-height: 1;\\n  text-indent: 43px;\\n  transition: color 0.3s ease;\\n}\\n.ant-calendar .ant-calendar-clear-btn:hover::after {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-calendar .ant-calendar-ok-btn {\\n  position: relative;\\n  display: inline-block;\\n  font-weight: 400;\\n  white-space: nowrap;\\n  text-align: center;\\n  background-image: none;\\n  border: 1px solid transparent;\\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);\\n  cursor: pointer;\\n  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n  user-select: none;\\n  touch-action: manipulation;\\n  height: 32px;\\n  padding: 0 15px;\\n  color: #fff;\\n  background-color: #08979c;\\n  border-color: #08979c;\\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\\n  height: 24px;\\n  padding: 0 7px;\\n  font-size: 14px;\\n  border-radius: 4px;\\n  line-height: 22px;\\n}\\n.ant-calendar .ant-calendar-ok-btn > .anticon {\\n  line-height: 1;\\n}\\n.ant-calendar .ant-calendar-ok-btn,\\n.ant-calendar .ant-calendar-ok-btn:active,\\n.ant-calendar .ant-calendar-ok-btn:focus {\\n  outline: 0;\\n}\\n.ant-calendar .ant-calendar-ok-btn:not([disabled]):hover {\\n  text-decoration: none;\\n}\\n.ant-calendar .ant-calendar-ok-btn:not([disabled]):active {\\n  outline: 0;\\n  box-shadow: none;\\n}\\n.ant-calendar .ant-calendar-ok-btn.disabled,\\n.ant-calendar .ant-calendar-ok-btn[disabled] {\\n  cursor: not-allowed;\\n}\\n.ant-calendar .ant-calendar-ok-btn.disabled > *,\\n.ant-calendar .ant-calendar-ok-btn[disabled] > * {\\n  pointer-events: none;\\n}\\n.ant-calendar .ant-calendar-ok-btn-lg {\\n  height: 40px;\\n  padding: 0 15px;\\n  font-size: 16px;\\n  border-radius: 4px;\\n}\\n.ant-calendar .ant-calendar-ok-btn-sm {\\n  height: 24px;\\n  padding: 0 7px;\\n  font-size: 14px;\\n  border-radius: 4px;\\n}\\n.ant-calendar .ant-calendar-ok-btn > a:only-child {\\n  color: currentColor;\\n}\\n.ant-calendar .ant-calendar-ok-btn > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-calendar .ant-calendar-ok-btn:hover,\\n.ant-calendar .ant-calendar-ok-btn:focus {\\n  color: #fff;\\n  background-color: #23a8a8;\\n  border-color: #23a8a8;\\n}\\n.ant-calendar .ant-calendar-ok-btn:hover > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn:focus > a:only-child {\\n  color: currentColor;\\n}\\n.ant-calendar .ant-calendar-ok-btn:hover > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn:focus > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-calendar .ant-calendar-ok-btn:active,\\n.ant-calendar .ant-calendar-ok-btn.active {\\n  color: #fff;\\n  background-color: #006d75;\\n  border-color: #006d75;\\n}\\n.ant-calendar .ant-calendar-ok-btn:active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-calendar .ant-calendar-ok-btn:active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-calendar .ant-calendar-ok-btn-disabled,\\n.ant-calendar .ant-calendar-ok-btn.disabled,\\n.ant-calendar .ant-calendar-ok-btn[disabled],\\n.ant-calendar .ant-calendar-ok-btn-disabled:hover,\\n.ant-calendar .ant-calendar-ok-btn.disabled:hover,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover,\\n.ant-calendar .ant-calendar-ok-btn-disabled:focus,\\n.ant-calendar .ant-calendar-ok-btn.disabled:focus,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus,\\n.ant-calendar .ant-calendar-ok-btn-disabled:active,\\n.ant-calendar .ant-calendar-ok-btn.disabled:active,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:active,\\n.ant-calendar .ant-calendar-ok-btn-disabled.active,\\n.ant-calendar .ant-calendar-ok-btn.disabled.active,\\n.ant-calendar .ant-calendar-ok-btn[disabled].active {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n  text-shadow: none;\\n  box-shadow: none;\\n}\\n.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-calendar .ant-calendar-ok-btn-disabled,\\n.ant-calendar .ant-calendar-ok-btn.disabled,\\n.ant-calendar .ant-calendar-ok-btn[disabled],\\n.ant-calendar .ant-calendar-ok-btn-disabled:hover,\\n.ant-calendar .ant-calendar-ok-btn.disabled:hover,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover,\\n.ant-calendar .ant-calendar-ok-btn-disabled:focus,\\n.ant-calendar .ant-calendar-ok-btn.disabled:focus,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus,\\n.ant-calendar .ant-calendar-ok-btn-disabled:active,\\n.ant-calendar .ant-calendar-ok-btn.disabled:active,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:active,\\n.ant-calendar .ant-calendar-ok-btn-disabled.active,\\n.ant-calendar .ant-calendar-ok-btn.disabled.active,\\n.ant-calendar .ant-calendar-ok-btn[disabled].active {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n  text-shadow: none;\\n  box-shadow: none;\\n}\\n.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child,\\n.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child {\\n  color: currentColor;\\n}\\n.ant-calendar .ant-calendar-ok-btn-disabled > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.disabled > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child::after,\\n.ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  content: '';\\n}\\n.ant-calendar-range-picker-input {\\n  width: 44%;\\n  height: 99%;\\n  text-align: center;\\n  background-color: transparent;\\n  border: 0;\\n  outline: 0;\\n}\\n.ant-calendar-range-picker-input::-moz-placeholder {\\n  color: #bfbfbf;\\n  opacity: 1;\\n}\\n.ant-calendar-range-picker-input:-ms-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-calendar-range-picker-input::-webkit-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-calendar-range-picker-input[disabled] {\\n  cursor: not-allowed;\\n}\\n.ant-calendar-range-picker-separator {\\n  display: inline-block;\\n  min-width: 10px;\\n  height: 100%;\\n  color: rgba(0, 0, 0, 0.45);\\n  white-space: nowrap;\\n  text-align: center;\\n  vertical-align: top;\\n}\\n.ant-calendar-range {\\n  width: 552px;\\n  overflow: hidden;\\n}\\n.ant-calendar-range .ant-calendar-date-panel::after {\\n  display: block;\\n  clear: both;\\n  height: 0;\\n  visibility: hidden;\\n  content: '.';\\n}\\n.ant-calendar-range-part {\\n  position: relative;\\n  width: 50%;\\n}\\n.ant-calendar-range-left {\\n  float: left;\\n}\\n.ant-calendar-range-left .ant-calendar-time-picker-inner {\\n  border-right: 1px solid #e8e8e8;\\n}\\n.ant-calendar-range-right {\\n  float: right;\\n}\\n.ant-calendar-range-right .ant-calendar-time-picker-inner {\\n  border-left: 1px solid #e8e8e8;\\n}\\n.ant-calendar-range-middle {\\n  position: absolute;\\n  left: 50%;\\n  z-index: 1;\\n  height: 34px;\\n  margin: 1px 0 0 0;\\n  padding: 0 200px 0 0;\\n  color: rgba(0, 0, 0, 0.45);\\n  line-height: 34px;\\n  text-align: center;\\n  transform: translateX(-50%);\\n}\\n.ant-calendar-range-right .ant-calendar-date-input-wrap {\\n  margin-left: -90px;\\n}\\n.ant-calendar-range.ant-calendar-time .ant-calendar-range-middle {\\n  padding: 0 10px 0 0;\\n  transform: translateX(-50%);\\n}\\n.ant-calendar-range.ant-calendar-time .ant-calendar-range-right .ant-calendar-date-input-wrap {\\n  margin-left: 0;\\n}\\n.ant-calendar-range .ant-calendar-input-wrap {\\n  position: relative;\\n  height: 34px;\\n}\\n.ant-calendar-range .ant-calendar-input,\\n.ant-calendar-range .ant-calendar-time-picker-input {\\n  position: relative;\\n  display: inline-block;\\n  width: 100%;\\n  height: 32px;\\n  padding: 4px 11px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  line-height: 1.5;\\n  background-color: #fff;\\n  background-image: none;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  transition: all 0.3s;\\n  height: 24px;\\n  padding-right: 0;\\n  padding-left: 0;\\n  border: 0;\\n  box-shadow: none;\\n}\\n.ant-calendar-range .ant-calendar-input::-moz-placeholder,\\n.ant-calendar-range .ant-calendar-time-picker-input::-moz-placeholder {\\n  color: #bfbfbf;\\n  opacity: 1;\\n}\\n.ant-calendar-range .ant-calendar-input:-ms-input-placeholder,\\n.ant-calendar-range .ant-calendar-time-picker-input:-ms-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-calendar-range .ant-calendar-input::-webkit-input-placeholder,\\n.ant-calendar-range .ant-calendar-time-picker-input::-webkit-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-calendar-range .ant-calendar-input:hover,\\n.ant-calendar-range .ant-calendar-time-picker-input:hover {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.ant-calendar-range .ant-calendar-input:focus,\\n.ant-calendar-range .ant-calendar-time-picker-input:focus {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-calendar-range .ant-calendar-input-disabled,\\n.ant-calendar-range .ant-calendar-time-picker-input-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n}\\n.ant-calendar-range .ant-calendar-input-disabled:hover,\\n.ant-calendar-range .ant-calendar-time-picker-input-disabled:hover {\\n  border-color: #e6d8d8;\\n  border-right-width: 1px !important;\\n}\\ntextarea.ant-calendar-range .ant-calendar-input,\\ntextarea.ant-calendar-range .ant-calendar-time-picker-input {\\n  max-width: 100%;\\n  height: auto;\\n  min-height: 32px;\\n  vertical-align: bottom;\\n  transition: all 0.3s, height 0s;\\n}\\n.ant-calendar-range .ant-calendar-input-lg,\\n.ant-calendar-range .ant-calendar-time-picker-input-lg {\\n  height: 40px;\\n  padding: 6px 11px;\\n  font-size: 16px;\\n}\\n.ant-calendar-range .ant-calendar-input-sm,\\n.ant-calendar-range .ant-calendar-time-picker-input-sm {\\n  height: 24px;\\n  padding: 1px 7px;\\n}\\n.ant-calendar-range .ant-calendar-input:focus,\\n.ant-calendar-range .ant-calendar-time-picker-input:focus {\\n  box-shadow: none;\\n}\\n.ant-calendar-range .ant-calendar-time-picker-icon {\\n  display: none;\\n}\\n.ant-calendar-range.ant-calendar-week-number {\\n  width: 574px;\\n}\\n.ant-calendar-range.ant-calendar-week-number .ant-calendar-range-part {\\n  width: 286px;\\n}\\n.ant-calendar-range .ant-calendar-year-panel,\\n.ant-calendar-range .ant-calendar-month-panel,\\n.ant-calendar-range .ant-calendar-decade-panel {\\n  top: 34px;\\n}\\n.ant-calendar-range .ant-calendar-month-panel .ant-calendar-year-panel {\\n  top: 0;\\n}\\n.ant-calendar-range .ant-calendar-decade-panel-table,\\n.ant-calendar-range .ant-calendar-year-panel-table,\\n.ant-calendar-range .ant-calendar-month-panel-table {\\n  height: 208px;\\n}\\n.ant-calendar-range .ant-calendar-in-range-cell {\\n  position: relative;\\n  border-radius: 0;\\n}\\n.ant-calendar-range .ant-calendar-in-range-cell > div {\\n  position: relative;\\n  z-index: 1;\\n}\\n.ant-calendar-range .ant-calendar-in-range-cell::before {\\n  position: absolute;\\n  top: 4px;\\n  right: 0;\\n  bottom: 4px;\\n  left: 0;\\n  display: block;\\n  background: #c5dbd8;\\n  border: 0;\\n  border-radius: 0;\\n  content: '';\\n}\\n.ant-calendar-range .ant-calendar-footer-extra {\\n  float: left;\\n}\\ndiv.ant-calendar-range-quick-selector {\\n  text-align: left;\\n}\\ndiv.ant-calendar-range-quick-selector > a {\\n  margin-right: 8px;\\n}\\n.ant-calendar-range .ant-calendar-header,\\n.ant-calendar-range .ant-calendar-month-panel-header,\\n.ant-calendar-range .ant-calendar-year-panel-header {\\n  border-bottom: 0;\\n}\\n.ant-calendar-range .ant-calendar-body,\\n.ant-calendar-range .ant-calendar-month-panel-body,\\n.ant-calendar-range .ant-calendar-year-panel-body {\\n  border-top: 1px solid #e8e8e8;\\n}\\n.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker {\\n  top: 68px;\\n  z-index: 2;\\n  width: 100%;\\n  height: 207px;\\n}\\n.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-panel {\\n  height: 267px;\\n  margin-top: -34px;\\n}\\n.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-inner {\\n  height: 100%;\\n  padding-top: 40px;\\n  background: none;\\n}\\n.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-combobox {\\n  display: inline-block;\\n  height: 100%;\\n  background-color: #fff;\\n  border-top: 1px solid #e8e8e8;\\n}\\n.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-select {\\n  height: 100%;\\n}\\n.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-select ul {\\n  max-height: 100%;\\n}\\n.ant-calendar-range.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn {\\n  margin-right: 8px;\\n}\\n.ant-calendar-range.ant-calendar-time .ant-calendar-today-btn {\\n  height: 22px;\\n  margin: 8px 12px;\\n  line-height: 22px;\\n}\\n.ant-calendar-range-with-ranges.ant-calendar-time .ant-calendar-time-picker {\\n  height: 233px;\\n}\\n.ant-calendar-range.ant-calendar-show-time-picker .ant-calendar-body {\\n  border-top-color: transparent;\\n}\\n.ant-calendar-time-picker {\\n  position: absolute;\\n  top: 40px;\\n  width: 100%;\\n  background-color: #fff;\\n}\\n.ant-calendar-time-picker-panel {\\n  position: absolute;\\n  z-index: 1050;\\n  width: 100%;\\n}\\n.ant-calendar-time-picker-inner {\\n  position: relative;\\n  display: inline-block;\\n  width: 100%;\\n  overflow: hidden;\\n  font-size: 14px;\\n  line-height: 1.5;\\n  text-align: left;\\n  list-style: none;\\n  background-color: #fff;\\n  background-clip: padding-box;\\n  outline: none;\\n}\\n.ant-calendar-time-picker-combobox {\\n  width: 100%;\\n}\\n.ant-calendar-time-picker-column-1,\\n.ant-calendar-time-picker-column-1 .ant-calendar-time-picker-select {\\n  width: 100%;\\n}\\n.ant-calendar-time-picker-column-2 .ant-calendar-time-picker-select {\\n  width: 50%;\\n}\\n.ant-calendar-time-picker-column-3 .ant-calendar-time-picker-select {\\n  width: 33.33%;\\n}\\n.ant-calendar-time-picker-column-4 .ant-calendar-time-picker-select {\\n  width: 25%;\\n}\\n.ant-calendar-time-picker-input-wrap {\\n  display: none;\\n}\\n.ant-calendar-time-picker-select {\\n  position: relative;\\n  float: left;\\n  box-sizing: border-box;\\n  height: 226px;\\n  overflow: hidden;\\n  font-size: 14px;\\n  border-right: 1px solid #e8e8e8;\\n}\\n.ant-calendar-time-picker-select:hover {\\n  overflow-y: auto;\\n}\\n.ant-calendar-time-picker-select:first-child {\\n  margin-left: 0;\\n  border-left: 0;\\n}\\n.ant-calendar-time-picker-select:last-child {\\n  border-right: 0;\\n}\\n.ant-calendar-time-picker-select ul {\\n  box-sizing: border-box;\\n  width: 100%;\\n  max-height: 206px;\\n  margin: 0;\\n  padding: 0;\\n  list-style: none;\\n}\\n.ant-calendar-time-picker-select li {\\n  box-sizing: content-box;\\n  width: 100%;\\n  height: 24px;\\n  margin: 0;\\n  padding-left: 32px;\\n  line-height: 24px;\\n  list-style: none;\\n  cursor: pointer;\\n  transition: background 0.3s ease;\\n  user-select: none;\\n}\\n.ant-calendar-time-picker-select li:last-child::after {\\n  display: block;\\n  height: 202px;\\n  content: '';\\n}\\n.ant-calendar-time-picker-select li:hover {\\n  background: #c5dbd8;\\n}\\nli.ant-calendar-time-picker-select-option-selected {\\n  font-weight: bold;\\n  background: #f5f5f5;\\n}\\nli.ant-calendar-time-picker-select-option-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\nli.ant-calendar-time-picker-select-option-disabled:hover {\\n  background: transparent;\\n  cursor: not-allowed;\\n}\\n.ant-calendar-time .ant-calendar-day-select {\\n  display: inline-block;\\n  padding: 0 2px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  line-height: 34px;\\n}\\n.ant-calendar-time .ant-calendar-footer {\\n  position: relative;\\n  height: auto;\\n}\\n.ant-calendar-time .ant-calendar-footer-btn {\\n  text-align: right;\\n}\\n.ant-calendar-time .ant-calendar-footer .ant-calendar-today-btn {\\n  float: left;\\n  margin: 0;\\n}\\n.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn {\\n  display: inline-block;\\n  margin-right: 8px;\\n}\\n.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-calendar-month-panel {\\n  position: absolute;\\n  top: 1px;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 10;\\n  background: #fff;\\n  border-radius: 4px;\\n  outline: none;\\n}\\n.ant-calendar-month-panel > div {\\n  display: flex;\\n  flex-direction: column;\\n  height: 100%;\\n}\\n.ant-calendar-month-panel-hidden {\\n  display: none;\\n}\\n.ant-calendar-month-panel-header {\\n  height: 40px;\\n  line-height: 40px;\\n  text-align: center;\\n  border-bottom: 1px solid #e8e8e8;\\n  user-select: none;\\n}\\n.ant-calendar-month-panel-header a:hover {\\n  color: #23a8a8;\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-century-select,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-year-select,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-month-select {\\n  display: inline-block;\\n  padding: 0 2px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  line-height: 40px;\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-century-select-arrow,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select-arrow,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-year-select-arrow,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-month-select-arrow {\\n  display: none;\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn {\\n  position: absolute;\\n  top: 0;\\n  display: inline-block;\\n  padding: 0 5px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 16px;\\n  font-family: Arial, 'Hiragino Sans GB', 'Microsoft Yahei', 'Microsoft Sans Serif', sans-serif;\\n  line-height: 40px;\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn {\\n  left: 7px;\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn::after,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn::after,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn::after {\\n  content: '«';\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn {\\n  right: 7px;\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn::after,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn::after,\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn::after {\\n  content: '»';\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn {\\n  left: 29px;\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn::after {\\n  content: '‹';\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn {\\n  right: 29px;\\n}\\n.ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn::after {\\n  content: '›';\\n}\\n.ant-calendar-month-panel-body {\\n  flex: 1;\\n}\\n.ant-calendar-month-panel-footer {\\n  border-top: 1px solid #e8e8e8;\\n}\\n.ant-calendar-month-panel-footer .ant-calendar-footer-extra {\\n  padding: 0 12px;\\n}\\n.ant-calendar-month-panel-table {\\n  width: 100%;\\n  height: 100%;\\n  table-layout: fixed;\\n  border-collapse: separate;\\n}\\n.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month {\\n  color: #fff;\\n  background: #08979c;\\n}\\n.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover {\\n  color: #fff;\\n  background: #08979c;\\n}\\n.ant-calendar-month-panel-cell {\\n  text-align: center;\\n}\\n.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month,\\n.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month:hover {\\n  color: rgba(0, 0, 0, 0.25);\\n  background: #f5f5f5;\\n  cursor: not-allowed;\\n}\\n.ant-calendar-month-panel-month {\\n  display: inline-block;\\n  height: 24px;\\n  margin: 0 auto;\\n  padding: 0 8px;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 24px;\\n  text-align: center;\\n  background: transparent;\\n  border-radius: 2px;\\n  transition: background 0.3s ease;\\n}\\n.ant-calendar-month-panel-month:hover {\\n  background: #c5dbd8;\\n  cursor: pointer;\\n}\\n.ant-calendar-year-panel {\\n  position: absolute;\\n  top: 1px;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 10;\\n  background: #fff;\\n  border-radius: 4px;\\n  outline: none;\\n}\\n.ant-calendar-year-panel > div {\\n  display: flex;\\n  flex-direction: column;\\n  height: 100%;\\n}\\n.ant-calendar-year-panel-hidden {\\n  display: none;\\n}\\n.ant-calendar-year-panel-header {\\n  height: 40px;\\n  line-height: 40px;\\n  text-align: center;\\n  border-bottom: 1px solid #e8e8e8;\\n  user-select: none;\\n}\\n.ant-calendar-year-panel-header a:hover {\\n  color: #23a8a8;\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-century-select,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-year-select,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-month-select {\\n  display: inline-block;\\n  padding: 0 2px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  line-height: 40px;\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-century-select-arrow,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select-arrow,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-year-select-arrow,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-month-select-arrow {\\n  display: none;\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn {\\n  position: absolute;\\n  top: 0;\\n  display: inline-block;\\n  padding: 0 5px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 16px;\\n  font-family: Arial, 'Hiragino Sans GB', 'Microsoft Yahei', 'Microsoft Sans Serif', sans-serif;\\n  line-height: 40px;\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn {\\n  left: 7px;\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn::after,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn::after,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn::after {\\n  content: '«';\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn {\\n  right: 7px;\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn::after,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn::after,\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn::after {\\n  content: '»';\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn {\\n  left: 29px;\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn::after {\\n  content: '‹';\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn {\\n  right: 29px;\\n}\\n.ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn::after {\\n  content: '›';\\n}\\n.ant-calendar-year-panel-body {\\n  flex: 1;\\n}\\n.ant-calendar-year-panel-footer {\\n  border-top: 1px solid #e8e8e8;\\n}\\n.ant-calendar-year-panel-footer .ant-calendar-footer-extra {\\n  padding: 0 12px;\\n}\\n.ant-calendar-year-panel-table {\\n  width: 100%;\\n  height: 100%;\\n  table-layout: fixed;\\n  border-collapse: separate;\\n}\\n.ant-calendar-year-panel-cell {\\n  text-align: center;\\n}\\n.ant-calendar-year-panel-year {\\n  display: inline-block;\\n  height: 24px;\\n  margin: 0 auto;\\n  padding: 0 8px;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 24px;\\n  text-align: center;\\n  background: transparent;\\n  border-radius: 2px;\\n  transition: background 0.3s ease;\\n}\\n.ant-calendar-year-panel-year:hover {\\n  background: #c5dbd8;\\n  cursor: pointer;\\n}\\n.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year {\\n  color: #fff;\\n  background: #08979c;\\n}\\n.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover {\\n  color: #fff;\\n  background: #08979c;\\n}\\n.ant-calendar-year-panel-last-decade-cell .ant-calendar-year-panel-year,\\n.ant-calendar-year-panel-next-decade-cell .ant-calendar-year-panel-year {\\n  color: rgba(0, 0, 0, 0.25);\\n  user-select: none;\\n}\\n.ant-calendar-decade-panel {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 10;\\n  display: flex;\\n  flex-direction: column;\\n  background: #fff;\\n  border-radius: 4px;\\n  outline: none;\\n}\\n.ant-calendar-decade-panel-hidden {\\n  display: none;\\n}\\n.ant-calendar-decade-panel-header {\\n  height: 40px;\\n  line-height: 40px;\\n  text-align: center;\\n  border-bottom: 1px solid #e8e8e8;\\n  user-select: none;\\n}\\n.ant-calendar-decade-panel-header a:hover {\\n  color: #23a8a8;\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select {\\n  display: inline-block;\\n  padding: 0 2px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  line-height: 40px;\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select-arrow,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select-arrow,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select-arrow,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select-arrow {\\n  display: none;\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn {\\n  position: absolute;\\n  top: 0;\\n  display: inline-block;\\n  padding: 0 5px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 16px;\\n  font-family: Arial, 'Hiragino Sans GB', 'Microsoft Yahei', 'Microsoft Sans Serif', sans-serif;\\n  line-height: 40px;\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn {\\n  left: 7px;\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn::after,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn::after,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn::after {\\n  content: '«';\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn {\\n  right: 7px;\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn::after,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn::after,\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn::after {\\n  content: '»';\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn {\\n  left: 29px;\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn::after {\\n  content: '‹';\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn {\\n  right: 29px;\\n}\\n.ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn::after {\\n  content: '›';\\n}\\n.ant-calendar-decade-panel-body {\\n  flex: 1;\\n}\\n.ant-calendar-decade-panel-footer {\\n  border-top: 1px solid #e8e8e8;\\n}\\n.ant-calendar-decade-panel-footer .ant-calendar-footer-extra {\\n  padding: 0 12px;\\n}\\n.ant-calendar-decade-panel-table {\\n  width: 100%;\\n  height: 100%;\\n  table-layout: fixed;\\n  border-collapse: separate;\\n}\\n.ant-calendar-decade-panel-cell {\\n  white-space: nowrap;\\n  text-align: center;\\n}\\n.ant-calendar-decade-panel-decade {\\n  display: inline-block;\\n  height: 24px;\\n  margin: 0 auto;\\n  padding: 0 6px;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 24px;\\n  text-align: center;\\n  background: transparent;\\n  border-radius: 2px;\\n  transition: background 0.3s ease;\\n}\\n.ant-calendar-decade-panel-decade:hover {\\n  background: #c5dbd8;\\n  cursor: pointer;\\n}\\n.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade {\\n  color: #fff;\\n  background: #08979c;\\n}\\n.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover {\\n  color: #fff;\\n  background: #08979c;\\n}\\n.ant-calendar-decade-panel-last-century-cell .ant-calendar-decade-panel-decade,\\n.ant-calendar-decade-panel-next-century-cell .ant-calendar-decade-panel-decade {\\n  color: rgba(0, 0, 0, 0.25);\\n  user-select: none;\\n}\\n.ant-calendar-month .ant-calendar-month-header-wrap {\\n  position: relative;\\n  height: 288px;\\n}\\n.ant-calendar-month .ant-calendar-month-panel,\\n.ant-calendar-month .ant-calendar-year-panel {\\n  top: 0;\\n  height: 100%;\\n}\\n.ant-calendar-week-number-cell {\\n  opacity: 0.5;\\n}\\n.ant-calendar-week-number .ant-calendar-body tr {\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-calendar-week-number .ant-calendar-body tr:hover {\\n  background: #c5dbd8;\\n}\\n.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week {\\n  font-weight: bold;\\n  background: #8fcfc8;\\n}\\n.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day .ant-calendar-date,\\n.ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day:hover .ant-calendar-date {\\n  color: rgba(0, 0, 0, 0.65);\\n  background: transparent;\\n}\\n.ant-divider {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  background: #e8e8e8;\\n}\\n.ant-divider,\\n.ant-divider-vertical {\\n  position: relative;\\n  top: -0.06em;\\n  display: inline-block;\\n  width: 1px;\\n  height: 0.9em;\\n  margin: 0 8px;\\n  vertical-align: middle;\\n}\\n.ant-divider-horizontal {\\n  display: block;\\n  clear: both;\\n  width: 100%;\\n  min-width: 100%;\\n  height: 1px;\\n  margin: 24px 0;\\n}\\n.ant-divider-horizontal.ant-divider-with-text,\\n.ant-divider-horizontal.ant-divider-with-text-left,\\n.ant-divider-horizontal.ant-divider-with-text-right {\\n  display: table;\\n  margin: 16px 0;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  font-size: 16px;\\n  white-space: nowrap;\\n  text-align: center;\\n  background: transparent;\\n}\\n.ant-divider-horizontal.ant-divider-with-text::before,\\n.ant-divider-horizontal.ant-divider-with-text-left::before,\\n.ant-divider-horizontal.ant-divider-with-text-right::before,\\n.ant-divider-horizontal.ant-divider-with-text::after,\\n.ant-divider-horizontal.ant-divider-with-text-left::after,\\n.ant-divider-horizontal.ant-divider-with-text-right::after {\\n  position: relative;\\n  top: 50%;\\n  display: table-cell;\\n  width: 50%;\\n  border-top: 1px solid #e8e8e8;\\n  transform: translateY(50%);\\n  content: '';\\n}\\n.ant-divider-horizontal.ant-divider-with-text-left .ant-divider-inner-text,\\n.ant-divider-horizontal.ant-divider-with-text-right .ant-divider-inner-text {\\n  display: inline-block;\\n  padding: 0 10px;\\n}\\n.ant-divider-horizontal.ant-divider-with-text-left::before {\\n  top: 50%;\\n  width: 5%;\\n}\\n.ant-divider-horizontal.ant-divider-with-text-left::after {\\n  top: 50%;\\n  width: 95%;\\n}\\n.ant-divider-horizontal.ant-divider-with-text-right::before {\\n  top: 50%;\\n  width: 95%;\\n}\\n.ant-divider-horizontal.ant-divider-with-text-right::after {\\n  top: 50%;\\n  width: 5%;\\n}\\n.ant-divider-inner-text {\\n  display: inline-block;\\n  padding: 0 24px;\\n}\\n.ant-divider-dashed {\\n  background: none;\\n  border-top: 1px dashed #e8e8e8;\\n}\\n.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed,\\n.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed,\\n.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed {\\n  border-top: 0;\\n}\\n.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::before,\\n.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed::before,\\n.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed::before,\\n.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::after,\\n.ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed::after,\\n.ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed::after {\\n  border-style: dashed none none;\\n}\\n.ant-drawer {\\n  position: fixed;\\n  top: 0;\\n  z-index: 1000;\\n  width: 0%;\\n  height: 100%;\\n}\\n.ant-drawer > * {\\n  transition: transform 0.3s cubic-bezier(0.9, 0, 0.3, 0.7), box-shadow 0.3s cubic-bezier(0.9, 0, 0.3, 0.7);\\n}\\n.ant-drawer-content-wrapper {\\n  position: fixed;\\n}\\n.ant-drawer .ant-drawer-content {\\n  width: 100%;\\n  height: 100%;\\n}\\n.ant-drawer-left,\\n.ant-drawer-right {\\n  width: 0%;\\n  height: 100%;\\n}\\n.ant-drawer-left .ant-drawer-content-wrapper,\\n.ant-drawer-right .ant-drawer-content-wrapper {\\n  height: 100%;\\n}\\n.ant-drawer-left.ant-drawer-open,\\n.ant-drawer-right.ant-drawer-open {\\n  width: 100%;\\n}\\n.ant-drawer-left.ant-drawer-open.no-mask,\\n.ant-drawer-right.ant-drawer-open.no-mask {\\n  width: 0%;\\n}\\n.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {\\n  box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-drawer-right .ant-drawer-content-wrapper {\\n  right: 0;\\n}\\n.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {\\n  box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-drawer-top,\\n.ant-drawer-bottom {\\n  width: 100%;\\n  height: 0%;\\n}\\n.ant-drawer-top .ant-drawer-content-wrapper,\\n.ant-drawer-bottom .ant-drawer-content-wrapper {\\n  width: 100%;\\n}\\n.ant-drawer-top.ant-drawer-open,\\n.ant-drawer-bottom.ant-drawer-open {\\n  height: 100%;\\n}\\n.ant-drawer-top.ant-drawer-open.no-mask,\\n.ant-drawer-bottom.ant-drawer-open.no-mask {\\n  height: 0%;\\n}\\n.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper {\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-drawer-bottom .ant-drawer-content-wrapper {\\n  bottom: 0;\\n}\\n.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper {\\n  box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-drawer.ant-drawer-open .ant-drawer-mask {\\n  height: 100%;\\n  opacity: 0.3;\\n  transition: none;\\n  animation: antdDrawerFadeIn 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);\\n}\\n.ant-drawer-title {\\n  margin: 0;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  font-size: 16px;\\n  line-height: 22px;\\n}\\n.ant-drawer-content {\\n  position: relative;\\n  z-index: 1;\\n  background-color: #fff;\\n  background-clip: padding-box;\\n  border: 0;\\n}\\n.ant-drawer-close {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  z-index: 10;\\n  display: block;\\n  width: 56px;\\n  height: 56px;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-weight: 700;\\n  font-size: 16px;\\n  font-style: normal;\\n  line-height: 56px;\\n  text-align: center;\\n  text-transform: none;\\n  text-decoration: none;\\n  background: transparent;\\n  border: 0;\\n  outline: 0;\\n  cursor: pointer;\\n  transition: color 0.3s;\\n  text-rendering: auto;\\n}\\n.ant-drawer-close:focus,\\n.ant-drawer-close:hover {\\n  color: rgba(0, 0, 0, 0.75);\\n  text-decoration: none;\\n}\\n.ant-drawer-header {\\n  position: relative;\\n  padding: 16px 24px;\\n  color: rgba(0, 0, 0, 0.65);\\n  background: #fff;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 4px 4px 0 0;\\n}\\n.ant-drawer-header-no-title {\\n  color: rgba(0, 0, 0, 0.65);\\n  background: #fff;\\n}\\n.ant-drawer-body {\\n  padding: 24px;\\n  font-size: 14px;\\n  line-height: 1.5;\\n  word-wrap: break-word;\\n}\\n.ant-drawer-mask {\\n  position: fixed;\\n  width: 100%;\\n  height: 0;\\n  background-color: rgba(0, 0, 0, 0.65);\\n  opacity: 0;\\n  filter: alpha(opacity=50);\\n  transition: opacity 0.3s linear, height 0s ease 0.3s;\\n}\\n.ant-drawer-open {\\n  transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1);\\n}\\n.ant-drawer-open-content {\\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\\n}\\n@keyframes antdDrawerFadeIn {\\n  0% {\\n    opacity: 0;\\n  }\\n  100% {\\n    opacity: 0.3;\\n  }\\n}\\n.ant-dropdown {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: absolute;\\n  top: -9999px;\\n  left: -9999px;\\n  z-index: 1050;\\n  display: block;\\n}\\n.ant-dropdown::before {\\n  position: absolute;\\n  top: -7px;\\n  right: 0;\\n  bottom: -7px;\\n  left: -7px;\\n  z-index: -9999;\\n  opacity: 0.0001;\\n  content: ' ';\\n}\\n.ant-dropdown-wrap {\\n  position: relative;\\n}\\n.ant-dropdown-wrap .ant-btn > .anticon-down {\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n}\\n:root .ant-dropdown-wrap .ant-btn > .anticon-down {\\n  font-size: 12px;\\n}\\n.ant-dropdown-wrap .anticon-down::before {\\n  transition: transform 0.2s;\\n}\\n.ant-dropdown-wrap-open .anticon-down::before {\\n  transform: rotate(180deg);\\n}\\n.ant-dropdown-hidden,\\n.ant-dropdown-menu-hidden {\\n  display: none;\\n}\\n.ant-dropdown-menu {\\n  position: relative;\\n  margin: 0;\\n  padding: 4px 0;\\n  text-align: left;\\n  list-style-type: none;\\n  background-color: #fff;\\n  background-clip: padding-box;\\n  border-radius: 4px;\\n  outline: none;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n  -webkit-transform: translate3d(0, 0, 0);\\n}\\n.ant-dropdown-menu-item-group-title {\\n  padding: 5px 12px;\\n  color: rgba(0, 0, 0, 0.45);\\n  transition: all 0.3s;\\n}\\n.ant-dropdown-menu-submenu-popup {\\n  position: absolute;\\n  z-index: 1050;\\n}\\n.ant-dropdown-menu-submenu-popup > .ant-dropdown-menu {\\n  transform-origin: 0 0;\\n}\\n.ant-dropdown-menu-item,\\n.ant-dropdown-menu-submenu-title {\\n  clear: both;\\n  margin: 0;\\n  padding: 5px 12px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-weight: normal;\\n  font-size: 14px;\\n  line-height: 22px;\\n  white-space: nowrap;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-dropdown-menu-item > .anticon:first-child,\\n.ant-dropdown-menu-submenu-title > .anticon:first-child {\\n  min-width: 12px;\\n  margin-right: 8px;\\n}\\n.ant-dropdown-menu-item > a,\\n.ant-dropdown-menu-submenu-title > a {\\n  display: block;\\n  margin: -5px -12px;\\n  padding: 5px 12px;\\n  color: rgba(0, 0, 0, 0.65);\\n  transition: all 0.3s;\\n}\\n.ant-dropdown-menu-item > a:focus,\\n.ant-dropdown-menu-submenu-title > a:focus {\\n  text-decoration: none;\\n}\\n.ant-dropdown-menu-item-selected,\\n.ant-dropdown-menu-submenu-title-selected,\\n.ant-dropdown-menu-item-selected > a,\\n.ant-dropdown-menu-submenu-title-selected > a {\\n  color: #08979c;\\n  background-color: #c5dbd8;\\n}\\n.ant-dropdown-menu-item:hover,\\n.ant-dropdown-menu-submenu-title:hover {\\n  background-color: #c5dbd8;\\n}\\n.ant-dropdown-menu-item-disabled,\\n.ant-dropdown-menu-submenu-title-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-dropdown-menu-item-disabled:hover,\\n.ant-dropdown-menu-submenu-title-disabled:hover {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #fff;\\n  cursor: not-allowed;\\n}\\n.ant-dropdown-menu-item-divider,\\n.ant-dropdown-menu-submenu-title-divider {\\n  height: 1px;\\n  margin: 4px 0;\\n  overflow: hidden;\\n  line-height: 0;\\n  background-color: #e8e8e8;\\n}\\n.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow,\\n.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow {\\n  position: absolute;\\n  right: 8px;\\n}\\n.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon,\\n.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {\\n  color: rgba(0, 0, 0, 0.45);\\n  font-style: normal;\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n}\\n:root .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon,\\n:root .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {\\n  font-size: 12px;\\n}\\n.ant-dropdown-menu-submenu-title {\\n  padding-right: 26px;\\n}\\n.ant-dropdown-menu-submenu-vertical {\\n  position: relative;\\n}\\n.ant-dropdown-menu-submenu-vertical > .ant-dropdown-menu {\\n  position: absolute;\\n  top: 0;\\n  left: 100%;\\n  min-width: 100%;\\n  margin-left: 4px;\\n  transform-origin: 0 0;\\n}\\n.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title,\\n.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #fff;\\n  cursor: not-allowed;\\n}\\n.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomLeft,\\n.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomLeft,\\n.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomCenter,\\n.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomCenter,\\n.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomRight,\\n.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomRight {\\n  animation-name: antSlideUpIn;\\n}\\n.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topLeft,\\n.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topLeft,\\n.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topCenter,\\n.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topCenter,\\n.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topRight,\\n.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topRight {\\n  animation-name: antSlideDownIn;\\n}\\n.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomLeft,\\n.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomCenter,\\n.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomRight {\\n  animation-name: antSlideUpOut;\\n}\\n.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topLeft,\\n.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topCenter,\\n.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topRight {\\n  animation-name: antSlideDownOut;\\n}\\n.ant-dropdown-trigger > .anticon.anticon-down,\\n.ant-dropdown-link > .anticon.anticon-down {\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n}\\n:root .ant-dropdown-trigger > .anticon.anticon-down,\\n:root .ant-dropdown-link > .anticon.anticon-down {\\n  font-size: 12px;\\n}\\n.ant-dropdown-button {\\n  white-space: nowrap;\\n}\\n.ant-dropdown-button.ant-btn-group > .ant-btn:last-child:not(:first-child) {\\n  padding-right: 8px;\\n  padding-left: 8px;\\n}\\n.ant-dropdown-button .anticon.anticon-down {\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n}\\n:root .ant-dropdown-button .anticon.anticon-down {\\n  font-size: 12px;\\n}\\n.ant-dropdown-menu-dark,\\n.ant-dropdown-menu-dark .ant-dropdown-menu {\\n  background: #001529;\\n}\\n.ant-dropdown-menu-dark .ant-dropdown-menu-item,\\n.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title,\\n.ant-dropdown-menu-dark .ant-dropdown-menu-item > a {\\n  color: rgba(255, 255, 255, 0.65);\\n}\\n.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow::after,\\n.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow::after,\\n.ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow::after {\\n  color: rgba(255, 255, 255, 0.65);\\n}\\n.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover,\\n.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover,\\n.ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover {\\n  color: #fff;\\n  background: transparent;\\n}\\n.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected,\\n.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover,\\n.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a {\\n  color: #fff;\\n  background: #08979c;\\n}\\n.ant-empty {\\n  margin: 0 8px;\\n  font-size: 14px;\\n  line-height: 22px;\\n  text-align: center;\\n}\\n.ant-empty-image {\\n  height: 100px;\\n  margin-bottom: 8px;\\n}\\n.ant-empty-image img {\\n  height: 100%;\\n}\\n.ant-empty-description {\\n  margin: 0;\\n}\\n.ant-empty-footer {\\n  margin-top: 16px;\\n}\\n.ant-empty-small {\\n  margin: 8px 0;\\n}\\n.ant-empty-small .ant-empty-image {\\n  height: 35px;\\n}\\n.ant-empty-normal {\\n  margin: 32px 0;\\n}\\n.ant-empty-normal .ant-empty-image {\\n  height: 40px;\\n}\\n.ant-select-dropdown--empty .ant-select-dropdown-menu-item {\\n  padding-right: 0;\\n  padding-left: 0;\\n}\\n.ant-form {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n}\\n.ant-form legend {\\n  display: block;\\n  width: 100%;\\n  margin-bottom: 20px;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 16px;\\n  line-height: inherit;\\n  border: 0;\\n  border-bottom: 1px solid #d9d9d9;\\n}\\n.ant-form label {\\n  font-size: 14px;\\n}\\n.ant-form input[type='search'] {\\n  box-sizing: border-box;\\n}\\n.ant-form input[type='radio'],\\n.ant-form input[type='checkbox'] {\\n  line-height: normal;\\n}\\n.ant-form input[type='file'] {\\n  display: block;\\n}\\n.ant-form input[type='range'] {\\n  display: block;\\n  width: 100%;\\n}\\n.ant-form select[multiple],\\n.ant-form select[size] {\\n  height: auto;\\n}\\n.ant-form input[type='file']:focus,\\n.ant-form input[type='radio']:focus,\\n.ant-form input[type='checkbox']:focus {\\n  outline: thin dotted;\\n  outline: 5px auto -webkit-focus-ring-color;\\n  outline-offset: -2px;\\n}\\n.ant-form output {\\n  display: block;\\n  padding-top: 15px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  line-height: 1.5;\\n}\\n.ant-form-item-required::before {\\n  display: inline-block;\\n  margin-right: 4px;\\n  color: #f5222d;\\n  font-size: 14px;\\n  font-family: SimSun, sans-serif;\\n  line-height: 1;\\n  content: '*';\\n}\\n.ant-form-hide-required-mark .ant-form-item-required::before {\\n  display: none;\\n}\\ninput[type='radio'][disabled],\\ninput[type='checkbox'][disabled],\\ninput[type='radio'].disabled,\\ninput[type='checkbox'].disabled {\\n  cursor: not-allowed;\\n}\\n.ant-radio-inline.disabled,\\n.ant-radio-vertical.disabled,\\n.ant-checkbox-inline.disabled,\\n.ant-checkbox-vertical.disabled {\\n  cursor: not-allowed;\\n}\\n.ant-radio.disabled label,\\n.ant-checkbox.disabled label {\\n  cursor: not-allowed;\\n}\\n.ant-form-item {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  margin-bottom: 24px;\\n  vertical-align: top;\\n}\\n.ant-form-item label {\\n  position: relative;\\n}\\n.ant-form-item label > .anticon {\\n  font-size: 14px;\\n  vertical-align: top;\\n}\\n.ant-form-item-control {\\n  position: relative;\\n  line-height: 40px;\\n  zoom: 1;\\n}\\n.ant-form-item-control::before,\\n.ant-form-item-control::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-form-item-control::after {\\n  clear: both;\\n}\\n.ant-form-item-control::before,\\n.ant-form-item-control::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-form-item-control::after {\\n  clear: both;\\n}\\n.ant-form-item-children {\\n  position: relative;\\n}\\n.ant-form-item-with-help {\\n  margin-bottom: 5px;\\n}\\n.ant-form-item-label {\\n  display: inline-block;\\n  overflow: hidden;\\n  line-height: 39.9999px;\\n  white-space: nowrap;\\n  text-align: right;\\n  vertical-align: middle;\\n}\\n.ant-form-item-label-left {\\n  text-align: left;\\n}\\n.ant-form-item-label > label {\\n  color: rgba(0, 0, 0, 0.85);\\n}\\n.ant-form-item-label > label::after {\\n  content: ':';\\n  position: relative;\\n  top: -0.5px;\\n  margin: 0 8px 0 2px;\\n}\\n.ant-form-item .ant-switch {\\n  margin: 2px 0 4px;\\n}\\n.ant-form-item-no-colon .ant-form-item-label label::after {\\n  content: ' ';\\n}\\n.ant-form-explain,\\n.ant-form-extra {\\n  clear: both;\\n  min-height: 22px;\\n  margin-top: -2px;\\n  color: rgba(0, 0, 0, 0.45);\\n  line-height: 1.5;\\n  transition: color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);\\n}\\n.ant-form-explain {\\n  margin-bottom: -1px;\\n}\\n.ant-form-extra {\\n  padding-top: 4px;\\n}\\n.ant-form-text {\\n  display: inline-block;\\n  padding-right: 8px;\\n}\\n.ant-form-split {\\n  display: block;\\n  text-align: center;\\n}\\nform .has-feedback .ant-input {\\n  padding-right: 24px;\\n}\\nform .has-feedback > .ant-select .ant-select-arrow,\\nform .has-feedback > .ant-select .ant-select-selection__clear,\\nform .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-arrow,\\nform .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection__clear {\\n  right: 28px;\\n}\\nform .has-feedback > .ant-select .ant-select-selection-selected-value,\\nform .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection-selected-value {\\n  padding-right: 42px;\\n}\\nform .has-feedback .ant-cascader-picker-arrow {\\n  margin-right: 17px;\\n}\\nform .has-feedback .ant-cascader-picker-clear {\\n  right: 28px;\\n}\\nform .has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix {\\n  right: 28px;\\n}\\nform .has-feedback .ant-calendar-picker-icon,\\nform .has-feedback .ant-time-picker-icon,\\nform .has-feedback .ant-calendar-picker-clear,\\nform .has-feedback .ant-time-picker-clear {\\n  right: 28px;\\n}\\nform textarea.ant-input {\\n  height: auto;\\n  margin-bottom: 4px;\\n}\\nform .ant-upload {\\n  background: transparent;\\n}\\nform input[type='radio'],\\nform input[type='checkbox'] {\\n  width: 14px;\\n  height: 14px;\\n}\\nform .ant-radio-inline,\\nform .ant-checkbox-inline {\\n  display: inline-block;\\n  margin-left: 8px;\\n  font-weight: normal;\\n  vertical-align: middle;\\n  cursor: pointer;\\n}\\nform .ant-radio-inline:first-child,\\nform .ant-checkbox-inline:first-child {\\n  margin-left: 0;\\n}\\nform .ant-checkbox-vertical,\\nform .ant-radio-vertical {\\n  display: block;\\n}\\nform .ant-checkbox-vertical + .ant-checkbox-vertical,\\nform .ant-radio-vertical + .ant-radio-vertical {\\n  margin-left: 0;\\n}\\nform .ant-input-number + .ant-form-text {\\n  margin-left: 8px;\\n}\\nform .ant-input-number-handler-wrap {\\n  z-index: 2;\\n}\\nform .ant-select,\\nform .ant-cascader-picker {\\n  width: 100%;\\n}\\nform .ant-input-group .ant-select,\\nform .ant-input-group .ant-cascader-picker {\\n  width: auto;\\n}\\nform :not(.ant-input-group-wrapper) > .ant-input-group,\\nform .ant-input-group-wrapper {\\n  position: relative;\\n  top: -1px;\\n  display: inline-block;\\n  vertical-align: middle;\\n}\\n.ant-input-group-wrap .ant-select-selection {\\n  border-top-left-radius: 0;\\n  border-bottom-left-radius: 0;\\n}\\n.ant-input-group-wrap .ant-select-selection:hover {\\n  border-color: #d9d9d9;\\n}\\n.ant-input-group-wrap .ant-select-selection--single {\\n  height: 40px;\\n  margin-left: -1px;\\n  background-color: rgba(0, 0, 0, 0.07);\\n}\\n.ant-input-group-wrap .ant-select-selection--single .ant-select-selection__rendered {\\n  padding-right: 25px;\\n  padding-left: 8px;\\n  line-height: 30px;\\n}\\n.ant-input-group-wrap .ant-select-open .ant-select-selection {\\n  border-color: #d9d9d9;\\n  box-shadow: none;\\n}\\n.ant-form-vertical .ant-form-item-label,\\n.ant-col-24.ant-form-item-label,\\n.ant-col-xl-24.ant-form-item-label {\\n  display: block;\\n  margin: 0;\\n  padding: 0 0 8px;\\n  line-height: 1.5;\\n  white-space: initial;\\n  text-align: left;\\n}\\n.ant-form-vertical .ant-form-item-label label::after,\\n.ant-col-24.ant-form-item-label label::after,\\n.ant-col-xl-24.ant-form-item-label label::after {\\n  display: none;\\n}\\n.ant-form-vertical .ant-form-item {\\n  padding-bottom: 8px;\\n}\\n.ant-form-vertical .ant-form-item-control {\\n  line-height: 1.5;\\n}\\n.ant-form-vertical .ant-form-explain {\\n  margin-top: 2px;\\n  margin-bottom: -5px;\\n}\\n.ant-form-vertical .ant-form-extra {\\n  margin-top: 2px;\\n  margin-bottom: -4px;\\n}\\n@media (max-width: 575px) {\\n  .ant-form-item-label,\\n  .ant-form-item-control-wrapper {\\n    display: block;\\n    width: 100%;\\n  }\\n  .ant-form-item-label {\\n    display: block;\\n    margin: 0;\\n    padding: 0 0 8px;\\n    line-height: 1.5;\\n    white-space: initial;\\n    text-align: left;\\n  }\\n  .ant-form-item-label label::after {\\n    display: none;\\n  }\\n  .ant-col-xs-24.ant-form-item-label {\\n    display: block;\\n    margin: 0;\\n    padding: 0 0 8px;\\n    line-height: 1.5;\\n    white-space: initial;\\n    text-align: left;\\n  }\\n  .ant-col-xs-24.ant-form-item-label label::after {\\n    display: none;\\n  }\\n}\\n@media (max-width: 767px) {\\n  .ant-col-sm-24.ant-form-item-label {\\n    display: block;\\n    margin: 0;\\n    padding: 0 0 8px;\\n    line-height: 1.5;\\n    white-space: initial;\\n    text-align: left;\\n  }\\n  .ant-col-sm-24.ant-form-item-label label::after {\\n    display: none;\\n  }\\n}\\n@media (max-width: 991px) {\\n  .ant-col-md-24.ant-form-item-label {\\n    display: block;\\n    margin: 0;\\n    padding: 0 0 8px;\\n    line-height: 1.5;\\n    white-space: initial;\\n    text-align: left;\\n  }\\n  .ant-col-md-24.ant-form-item-label label::after {\\n    display: none;\\n  }\\n}\\n@media (max-width: 1199px) {\\n  .ant-col-lg-24.ant-form-item-label {\\n    display: block;\\n    margin: 0;\\n    padding: 0 0 8px;\\n    line-height: 1.5;\\n    white-space: initial;\\n    text-align: left;\\n  }\\n  .ant-col-lg-24.ant-form-item-label label::after {\\n    display: none;\\n  }\\n}\\n@media (max-width: 1599px) {\\n  .ant-col-xl-24.ant-form-item-label {\\n    display: block;\\n    margin: 0;\\n    padding: 0 0 8px;\\n    line-height: 1.5;\\n    white-space: initial;\\n    text-align: left;\\n  }\\n  .ant-col-xl-24.ant-form-item-label label::after {\\n    display: none;\\n  }\\n}\\n.ant-form-inline .ant-form-item {\\n  display: inline-block;\\n  margin-right: 16px;\\n  margin-bottom: 0;\\n}\\n.ant-form-inline .ant-form-item-with-help {\\n  margin-bottom: 24px;\\n}\\n.ant-form-inline .ant-form-item > .ant-form-item-control-wrapper,\\n.ant-form-inline .ant-form-item > .ant-form-item-label {\\n  display: inline-block;\\n  vertical-align: top;\\n}\\n.ant-form-inline .ant-form-text {\\n  display: inline-block;\\n}\\n.ant-form-inline .has-feedback {\\n  display: inline-block;\\n}\\n.has-success.has-feedback .ant-form-item-children-icon,\\n.has-warning.has-feedback .ant-form-item-children-icon,\\n.has-error.has-feedback .ant-form-item-children-icon,\\n.is-validating.has-feedback .ant-form-item-children-icon {\\n  position: absolute;\\n  top: 50%;\\n  right: 0;\\n  z-index: 1;\\n  width: 32px;\\n  height: 20px;\\n  margin-top: -10px;\\n  font-size: 14px;\\n  line-height: 20px;\\n  text-align: center;\\n  visibility: visible;\\n  animation: zoomIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46);\\n  pointer-events: none;\\n}\\n.has-success.has-feedback .ant-form-item-children-icon svg,\\n.has-warning.has-feedback .ant-form-item-children-icon svg,\\n.has-error.has-feedback .ant-form-item-children-icon svg,\\n.is-validating.has-feedback .ant-form-item-children-icon svg {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n}\\n.has-success.has-feedback .ant-form-item-children-icon {\\n  color: #52c41a;\\n  animation-name: diffZoomIn1 !important;\\n}\\n.has-warning .ant-form-explain,\\n.has-warning .ant-form-split {\\n  color: #faad14;\\n}\\n.has-warning .ant-input,\\n.has-warning .ant-input:hover {\\n  border-color: #faad14;\\n}\\n.has-warning .ant-input:focus {\\n  border-color: #ffc53d;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\\n}\\n.has-warning .ant-input:not([disabled]):hover {\\n  border-color: #faad14;\\n}\\n.has-warning .ant-calendar-picker-open .ant-calendar-picker-input {\\n  border-color: #ffc53d;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\\n}\\n.has-warning .ant-input-affix-wrapper .ant-input,\\n.has-warning .ant-input-affix-wrapper .ant-input:hover {\\n  border-color: #faad14;\\n}\\n.has-warning .ant-input-affix-wrapper .ant-input:focus {\\n  border-color: #ffc53d;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\\n}\\n.has-warning .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {\\n  border-color: #faad14;\\n}\\n.has-warning .ant-input-prefix {\\n  color: #faad14;\\n}\\n.has-warning .ant-input-group-addon {\\n  color: #faad14;\\n  background-color: #fff;\\n  border-color: #faad14;\\n}\\n.has-warning .has-feedback {\\n  color: #faad14;\\n}\\n.has-warning.has-feedback .ant-form-item-children-icon {\\n  color: #faad14;\\n  animation-name: diffZoomIn3 !important;\\n}\\n.has-warning .ant-select-selection {\\n  border-color: #faad14;\\n}\\n.has-warning .ant-select-selection:hover {\\n  border-color: #faad14;\\n}\\n.has-warning .ant-select-open .ant-select-selection,\\n.has-warning .ant-select-focused .ant-select-selection {\\n  border-color: #ffc53d;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\\n}\\n.has-warning .ant-calendar-picker-icon::after,\\n.has-warning .ant-time-picker-icon::after,\\n.has-warning .ant-picker-icon::after,\\n.has-warning .ant-select-arrow,\\n.has-warning .ant-cascader-picker-arrow {\\n  color: #faad14;\\n}\\n.has-warning .ant-input-number,\\n.has-warning .ant-time-picker-input {\\n  border-color: #faad14;\\n}\\n.has-warning .ant-input-number-focused,\\n.has-warning .ant-time-picker-input-focused,\\n.has-warning .ant-input-number:focus,\\n.has-warning .ant-time-picker-input:focus {\\n  border-color: #ffc53d;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\\n}\\n.has-warning .ant-input-number:not([disabled]):hover,\\n.has-warning .ant-time-picker-input:not([disabled]):hover {\\n  border-color: #faad14;\\n}\\n.has-warning .ant-cascader-picker:focus .ant-cascader-input {\\n  border-color: #ffc53d;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);\\n}\\n.has-error .ant-form-explain,\\n.has-error .ant-form-split {\\n  color: #f5222d;\\n}\\n.has-error .ant-input,\\n.has-error .ant-input:hover {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-input:focus {\\n  border-color: #ff4d4f;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\\n}\\n.has-error .ant-input:not([disabled]):hover {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-calendar-picker-open .ant-calendar-picker-input {\\n  border-color: #ff4d4f;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\\n}\\n.has-error .ant-input-affix-wrapper .ant-input,\\n.has-error .ant-input-affix-wrapper .ant-input:hover {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-input-affix-wrapper .ant-input:focus {\\n  border-color: #ff4d4f;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\\n}\\n.has-error .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-input-prefix {\\n  color: #f5222d;\\n}\\n.has-error .ant-input-group-addon {\\n  color: #f5222d;\\n  background-color: #fff;\\n  border-color: #f5222d;\\n}\\n.has-error .has-feedback {\\n  color: #f5222d;\\n}\\n.has-error.has-feedback .ant-form-item-children-icon {\\n  color: #f5222d;\\n  animation-name: diffZoomIn2 !important;\\n}\\n.has-error .ant-select-selection {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-select-selection:hover {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-select-open .ant-select-selection,\\n.has-error .ant-select-focused .ant-select-selection {\\n  border-color: #ff4d4f;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\\n}\\n.has-error .ant-select.ant-select-auto-complete .ant-input:focus {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-input-group-addon .ant-select-selection {\\n  border-color: transparent;\\n  box-shadow: none;\\n}\\n.has-error .ant-calendar-picker-icon::after,\\n.has-error .ant-time-picker-icon::after,\\n.has-error .ant-picker-icon::after,\\n.has-error .ant-select-arrow,\\n.has-error .ant-cascader-picker-arrow {\\n  color: #f5222d;\\n}\\n.has-error .ant-input-number,\\n.has-error .ant-time-picker-input {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-input-number-focused,\\n.has-error .ant-time-picker-input-focused,\\n.has-error .ant-input-number:focus,\\n.has-error .ant-time-picker-input:focus {\\n  border-color: #ff4d4f;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\\n}\\n.has-error .ant-input-number:not([disabled]):hover,\\n.has-error .ant-time-picker-input:not([disabled]):hover {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-mention-wrapper .ant-mention-editor,\\n.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor,\\n.has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus {\\n  border-color: #ff4d4f;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\\n}\\n.has-error .ant-cascader-picker:focus .ant-cascader-input {\\n  border-color: #ff4d4f;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.2);\\n}\\n.has-error .ant-transfer-list {\\n  border-color: #f5222d;\\n}\\n.has-error .ant-transfer-list-search:not([disabled]) {\\n  border-color: #d9d9d9;\\n}\\n.has-error .ant-transfer-list-search:not([disabled]):hover {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.has-error .ant-transfer-list-search:not([disabled]):focus {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.is-validating.has-feedback .ant-form-item-children-icon {\\n  display: inline-block;\\n  color: #08979c;\\n}\\n.ant-advanced-search-form .ant-form-item {\\n  margin-bottom: 24px;\\n}\\n.ant-advanced-search-form .ant-form-item-with-help {\\n  margin-bottom: 5px;\\n}\\n.show-help-enter,\\n.show-help-appear {\\n  animation-duration: 0.3s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.show-help-leave {\\n  animation-duration: 0.3s;\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.show-help-enter.show-help-enter-active,\\n.show-help-appear.show-help-appear-active {\\n  animation-name: antShowHelpIn;\\n  animation-play-state: running;\\n}\\n.show-help-leave.show-help-leave-active {\\n  animation-name: antShowHelpOut;\\n  animation-play-state: running;\\n  pointer-events: none;\\n}\\n.show-help-enter,\\n.show-help-appear {\\n  opacity: 0;\\n  animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.show-help-leave {\\n  animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n@keyframes antShowHelpIn {\\n  0% {\\n    transform: translateY(-5px);\\n    opacity: 0;\\n  }\\n  100% {\\n    transform: translateY(0);\\n    opacity: 1;\\n  }\\n}\\n@keyframes antShowHelpOut {\\n  to {\\n    transform: translateY(-5px);\\n    opacity: 0;\\n  }\\n}\\n@keyframes diffZoomIn1 {\\n  0% {\\n    transform: scale(0);\\n  }\\n  100% {\\n    transform: scale(1);\\n  }\\n}\\n@keyframes diffZoomIn2 {\\n  0% {\\n    transform: scale(0);\\n  }\\n  100% {\\n    transform: scale(1);\\n  }\\n}\\n@keyframes diffZoomIn3 {\\n  0% {\\n    transform: scale(0);\\n  }\\n  100% {\\n    transform: scale(1);\\n  }\\n}\\n.ant-row {\\n  position: relative;\\n  height: auto;\\n  margin-right: 0;\\n  margin-left: 0;\\n  zoom: 1;\\n  display: block;\\n  box-sizing: border-box;\\n}\\n.ant-row::before,\\n.ant-row::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-row::after {\\n  clear: both;\\n}\\n.ant-row::before,\\n.ant-row::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-row::after {\\n  clear: both;\\n}\\n.ant-row-flex {\\n  display: flex;\\n  flex-flow: row wrap;\\n}\\n.ant-row-flex::before,\\n.ant-row-flex::after {\\n  display: flex;\\n}\\n.ant-row-flex-start {\\n  justify-content: flex-start;\\n}\\n.ant-row-flex-center {\\n  justify-content: center;\\n}\\n.ant-row-flex-end {\\n  justify-content: flex-end;\\n}\\n.ant-row-flex-space-between {\\n  justify-content: space-between;\\n}\\n.ant-row-flex-space-around {\\n  justify-content: space-around;\\n}\\n.ant-row-flex-top {\\n  align-items: flex-start;\\n}\\n.ant-row-flex-middle {\\n  align-items: center;\\n}\\n.ant-row-flex-bottom {\\n  align-items: flex-end;\\n}\\n.ant-col {\\n  position: relative;\\n  display: block;\\n}\\n.ant-col-1, .ant-col-xs-1, .ant-col-sm-1, .ant-col-md-1, .ant-col-lg-1, .ant-col-2, .ant-col-xs-2, .ant-col-sm-2, .ant-col-md-2, .ant-col-lg-2, .ant-col-3, .ant-col-xs-3, .ant-col-sm-3, .ant-col-md-3, .ant-col-lg-3, .ant-col-4, .ant-col-xs-4, .ant-col-sm-4, .ant-col-md-4, .ant-col-lg-4, .ant-col-5, .ant-col-xs-5, .ant-col-sm-5, .ant-col-md-5, .ant-col-lg-5, .ant-col-6, .ant-col-xs-6, .ant-col-sm-6, .ant-col-md-6, .ant-col-lg-6, .ant-col-7, .ant-col-xs-7, .ant-col-sm-7, .ant-col-md-7, .ant-col-lg-7, .ant-col-8, .ant-col-xs-8, .ant-col-sm-8, .ant-col-md-8, .ant-col-lg-8, .ant-col-9, .ant-col-xs-9, .ant-col-sm-9, .ant-col-md-9, .ant-col-lg-9, .ant-col-10, .ant-col-xs-10, .ant-col-sm-10, .ant-col-md-10, .ant-col-lg-10, .ant-col-11, .ant-col-xs-11, .ant-col-sm-11, .ant-col-md-11, .ant-col-lg-11, .ant-col-12, .ant-col-xs-12, .ant-col-sm-12, .ant-col-md-12, .ant-col-lg-12, .ant-col-13, .ant-col-xs-13, .ant-col-sm-13, .ant-col-md-13, .ant-col-lg-13, .ant-col-14, .ant-col-xs-14, .ant-col-sm-14, .ant-col-md-14, .ant-col-lg-14, .ant-col-15, .ant-col-xs-15, .ant-col-sm-15, .ant-col-md-15, .ant-col-lg-15, .ant-col-16, .ant-col-xs-16, .ant-col-sm-16, .ant-col-md-16, .ant-col-lg-16, .ant-col-17, .ant-col-xs-17, .ant-col-sm-17, .ant-col-md-17, .ant-col-lg-17, .ant-col-18, .ant-col-xs-18, .ant-col-sm-18, .ant-col-md-18, .ant-col-lg-18, .ant-col-19, .ant-col-xs-19, .ant-col-sm-19, .ant-col-md-19, .ant-col-lg-19, .ant-col-20, .ant-col-xs-20, .ant-col-sm-20, .ant-col-md-20, .ant-col-lg-20, .ant-col-21, .ant-col-xs-21, .ant-col-sm-21, .ant-col-md-21, .ant-col-lg-21, .ant-col-22, .ant-col-xs-22, .ant-col-sm-22, .ant-col-md-22, .ant-col-lg-22, .ant-col-23, .ant-col-xs-23, .ant-col-sm-23, .ant-col-md-23, .ant-col-lg-23, .ant-col-24, .ant-col-xs-24, .ant-col-sm-24, .ant-col-md-24, .ant-col-lg-24 {\\n  position: relative;\\n  min-height: 1px;\\n  padding-right: 0;\\n  padding-left: 0;\\n}\\n.ant-col-1, .ant-col-2, .ant-col-3, .ant-col-4, .ant-col-5, .ant-col-6, .ant-col-7, .ant-col-8, .ant-col-9, .ant-col-10, .ant-col-11, .ant-col-12, .ant-col-13, .ant-col-14, .ant-col-15, .ant-col-16, .ant-col-17, .ant-col-18, .ant-col-19, .ant-col-20, .ant-col-21, .ant-col-22, .ant-col-23, .ant-col-24 {\\n  flex: 0 0 auto;\\n  float: left;\\n}\\n.ant-col-24 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 100%;\\n}\\n.ant-col-push-24 {\\n  left: 100%;\\n}\\n.ant-col-pull-24 {\\n  right: 100%;\\n}\\n.ant-col-offset-24 {\\n  margin-left: 100%;\\n}\\n.ant-col-order-24 {\\n  order: 24;\\n}\\n.ant-col-23 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 95.83333333%;\\n}\\n.ant-col-push-23 {\\n  left: 95.83333333%;\\n}\\n.ant-col-pull-23 {\\n  right: 95.83333333%;\\n}\\n.ant-col-offset-23 {\\n  margin-left: 95.83333333%;\\n}\\n.ant-col-order-23 {\\n  order: 23;\\n}\\n.ant-col-22 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 91.66666667%;\\n}\\n.ant-col-push-22 {\\n  left: 91.66666667%;\\n}\\n.ant-col-pull-22 {\\n  right: 91.66666667%;\\n}\\n.ant-col-offset-22 {\\n  margin-left: 91.66666667%;\\n}\\n.ant-col-order-22 {\\n  order: 22;\\n}\\n.ant-col-21 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 87.5%;\\n}\\n.ant-col-push-21 {\\n  left: 87.5%;\\n}\\n.ant-col-pull-21 {\\n  right: 87.5%;\\n}\\n.ant-col-offset-21 {\\n  margin-left: 87.5%;\\n}\\n.ant-col-order-21 {\\n  order: 21;\\n}\\n.ant-col-20 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 83.33333333%;\\n}\\n.ant-col-push-20 {\\n  left: 83.33333333%;\\n}\\n.ant-col-pull-20 {\\n  right: 83.33333333%;\\n}\\n.ant-col-offset-20 {\\n  margin-left: 83.33333333%;\\n}\\n.ant-col-order-20 {\\n  order: 20;\\n}\\n.ant-col-19 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 79.16666667%;\\n}\\n.ant-col-push-19 {\\n  left: 79.16666667%;\\n}\\n.ant-col-pull-19 {\\n  right: 79.16666667%;\\n}\\n.ant-col-offset-19 {\\n  margin-left: 79.16666667%;\\n}\\n.ant-col-order-19 {\\n  order: 19;\\n}\\n.ant-col-18 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 75%;\\n}\\n.ant-col-push-18 {\\n  left: 75%;\\n}\\n.ant-col-pull-18 {\\n  right: 75%;\\n}\\n.ant-col-offset-18 {\\n  margin-left: 75%;\\n}\\n.ant-col-order-18 {\\n  order: 18;\\n}\\n.ant-col-17 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 70.83333333%;\\n}\\n.ant-col-push-17 {\\n  left: 70.83333333%;\\n}\\n.ant-col-pull-17 {\\n  right: 70.83333333%;\\n}\\n.ant-col-offset-17 {\\n  margin-left: 70.83333333%;\\n}\\n.ant-col-order-17 {\\n  order: 17;\\n}\\n.ant-col-16 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 66.66666667%;\\n}\\n.ant-col-push-16 {\\n  left: 66.66666667%;\\n}\\n.ant-col-pull-16 {\\n  right: 66.66666667%;\\n}\\n.ant-col-offset-16 {\\n  margin-left: 66.66666667%;\\n}\\n.ant-col-order-16 {\\n  order: 16;\\n}\\n.ant-col-15 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 62.5%;\\n}\\n.ant-col-push-15 {\\n  left: 62.5%;\\n}\\n.ant-col-pull-15 {\\n  right: 62.5%;\\n}\\n.ant-col-offset-15 {\\n  margin-left: 62.5%;\\n}\\n.ant-col-order-15 {\\n  order: 15;\\n}\\n.ant-col-14 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 58.33333333%;\\n}\\n.ant-col-push-14 {\\n  left: 58.33333333%;\\n}\\n.ant-col-pull-14 {\\n  right: 58.33333333%;\\n}\\n.ant-col-offset-14 {\\n  margin-left: 58.33333333%;\\n}\\n.ant-col-order-14 {\\n  order: 14;\\n}\\n.ant-col-13 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 54.16666667%;\\n}\\n.ant-col-push-13 {\\n  left: 54.16666667%;\\n}\\n.ant-col-pull-13 {\\n  right: 54.16666667%;\\n}\\n.ant-col-offset-13 {\\n  margin-left: 54.16666667%;\\n}\\n.ant-col-order-13 {\\n  order: 13;\\n}\\n.ant-col-12 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 50%;\\n}\\n.ant-col-push-12 {\\n  left: 50%;\\n}\\n.ant-col-pull-12 {\\n  right: 50%;\\n}\\n.ant-col-offset-12 {\\n  margin-left: 50%;\\n}\\n.ant-col-order-12 {\\n  order: 12;\\n}\\n.ant-col-11 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 45.83333333%;\\n}\\n.ant-col-push-11 {\\n  left: 45.83333333%;\\n}\\n.ant-col-pull-11 {\\n  right: 45.83333333%;\\n}\\n.ant-col-offset-11 {\\n  margin-left: 45.83333333%;\\n}\\n.ant-col-order-11 {\\n  order: 11;\\n}\\n.ant-col-10 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 41.66666667%;\\n}\\n.ant-col-push-10 {\\n  left: 41.66666667%;\\n}\\n.ant-col-pull-10 {\\n  right: 41.66666667%;\\n}\\n.ant-col-offset-10 {\\n  margin-left: 41.66666667%;\\n}\\n.ant-col-order-10 {\\n  order: 10;\\n}\\n.ant-col-9 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 37.5%;\\n}\\n.ant-col-push-9 {\\n  left: 37.5%;\\n}\\n.ant-col-pull-9 {\\n  right: 37.5%;\\n}\\n.ant-col-offset-9 {\\n  margin-left: 37.5%;\\n}\\n.ant-col-order-9 {\\n  order: 9;\\n}\\n.ant-col-8 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 33.33333333%;\\n}\\n.ant-col-push-8 {\\n  left: 33.33333333%;\\n}\\n.ant-col-pull-8 {\\n  right: 33.33333333%;\\n}\\n.ant-col-offset-8 {\\n  margin-left: 33.33333333%;\\n}\\n.ant-col-order-8 {\\n  order: 8;\\n}\\n.ant-col-7 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 29.16666667%;\\n}\\n.ant-col-push-7 {\\n  left: 29.16666667%;\\n}\\n.ant-col-pull-7 {\\n  right: 29.16666667%;\\n}\\n.ant-col-offset-7 {\\n  margin-left: 29.16666667%;\\n}\\n.ant-col-order-7 {\\n  order: 7;\\n}\\n.ant-col-6 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 25%;\\n}\\n.ant-col-push-6 {\\n  left: 25%;\\n}\\n.ant-col-pull-6 {\\n  right: 25%;\\n}\\n.ant-col-offset-6 {\\n  margin-left: 25%;\\n}\\n.ant-col-order-6 {\\n  order: 6;\\n}\\n.ant-col-5 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 20.83333333%;\\n}\\n.ant-col-push-5 {\\n  left: 20.83333333%;\\n}\\n.ant-col-pull-5 {\\n  right: 20.83333333%;\\n}\\n.ant-col-offset-5 {\\n  margin-left: 20.83333333%;\\n}\\n.ant-col-order-5 {\\n  order: 5;\\n}\\n.ant-col-4 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 16.66666667%;\\n}\\n.ant-col-push-4 {\\n  left: 16.66666667%;\\n}\\n.ant-col-pull-4 {\\n  right: 16.66666667%;\\n}\\n.ant-col-offset-4 {\\n  margin-left: 16.66666667%;\\n}\\n.ant-col-order-4 {\\n  order: 4;\\n}\\n.ant-col-3 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 12.5%;\\n}\\n.ant-col-push-3 {\\n  left: 12.5%;\\n}\\n.ant-col-pull-3 {\\n  right: 12.5%;\\n}\\n.ant-col-offset-3 {\\n  margin-left: 12.5%;\\n}\\n.ant-col-order-3 {\\n  order: 3;\\n}\\n.ant-col-2 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 8.33333333%;\\n}\\n.ant-col-push-2 {\\n  left: 8.33333333%;\\n}\\n.ant-col-pull-2 {\\n  right: 8.33333333%;\\n}\\n.ant-col-offset-2 {\\n  margin-left: 8.33333333%;\\n}\\n.ant-col-order-2 {\\n  order: 2;\\n}\\n.ant-col-1 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 4.16666667%;\\n}\\n.ant-col-push-1 {\\n  left: 4.16666667%;\\n}\\n.ant-col-pull-1 {\\n  right: 4.16666667%;\\n}\\n.ant-col-offset-1 {\\n  margin-left: 4.16666667%;\\n}\\n.ant-col-order-1 {\\n  order: 1;\\n}\\n.ant-col-0 {\\n  display: none;\\n}\\n.ant-col-push-0 {\\n  left: auto;\\n}\\n.ant-col-pull-0 {\\n  right: auto;\\n}\\n.ant-col-push-0 {\\n  left: auto;\\n}\\n.ant-col-pull-0 {\\n  right: auto;\\n}\\n.ant-col-offset-0 {\\n  margin-left: 0;\\n}\\n.ant-col-order-0 {\\n  order: 0;\\n}\\n.ant-col-xs-1, .ant-col-xs-2, .ant-col-xs-3, .ant-col-xs-4, .ant-col-xs-5, .ant-col-xs-6, .ant-col-xs-7, .ant-col-xs-8, .ant-col-xs-9, .ant-col-xs-10, .ant-col-xs-11, .ant-col-xs-12, .ant-col-xs-13, .ant-col-xs-14, .ant-col-xs-15, .ant-col-xs-16, .ant-col-xs-17, .ant-col-xs-18, .ant-col-xs-19, .ant-col-xs-20, .ant-col-xs-21, .ant-col-xs-22, .ant-col-xs-23, .ant-col-xs-24 {\\n  flex: 0 0 auto;\\n  float: left;\\n}\\n.ant-col-xs-24 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 100%;\\n}\\n.ant-col-xs-push-24 {\\n  left: 100%;\\n}\\n.ant-col-xs-pull-24 {\\n  right: 100%;\\n}\\n.ant-col-xs-offset-24 {\\n  margin-left: 100%;\\n}\\n.ant-col-xs-order-24 {\\n  order: 24;\\n}\\n.ant-col-xs-23 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 95.83333333%;\\n}\\n.ant-col-xs-push-23 {\\n  left: 95.83333333%;\\n}\\n.ant-col-xs-pull-23 {\\n  right: 95.83333333%;\\n}\\n.ant-col-xs-offset-23 {\\n  margin-left: 95.83333333%;\\n}\\n.ant-col-xs-order-23 {\\n  order: 23;\\n}\\n.ant-col-xs-22 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 91.66666667%;\\n}\\n.ant-col-xs-push-22 {\\n  left: 91.66666667%;\\n}\\n.ant-col-xs-pull-22 {\\n  right: 91.66666667%;\\n}\\n.ant-col-xs-offset-22 {\\n  margin-left: 91.66666667%;\\n}\\n.ant-col-xs-order-22 {\\n  order: 22;\\n}\\n.ant-col-xs-21 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 87.5%;\\n}\\n.ant-col-xs-push-21 {\\n  left: 87.5%;\\n}\\n.ant-col-xs-pull-21 {\\n  right: 87.5%;\\n}\\n.ant-col-xs-offset-21 {\\n  margin-left: 87.5%;\\n}\\n.ant-col-xs-order-21 {\\n  order: 21;\\n}\\n.ant-col-xs-20 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 83.33333333%;\\n}\\n.ant-col-xs-push-20 {\\n  left: 83.33333333%;\\n}\\n.ant-col-xs-pull-20 {\\n  right: 83.33333333%;\\n}\\n.ant-col-xs-offset-20 {\\n  margin-left: 83.33333333%;\\n}\\n.ant-col-xs-order-20 {\\n  order: 20;\\n}\\n.ant-col-xs-19 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 79.16666667%;\\n}\\n.ant-col-xs-push-19 {\\n  left: 79.16666667%;\\n}\\n.ant-col-xs-pull-19 {\\n  right: 79.16666667%;\\n}\\n.ant-col-xs-offset-19 {\\n  margin-left: 79.16666667%;\\n}\\n.ant-col-xs-order-19 {\\n  order: 19;\\n}\\n.ant-col-xs-18 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 75%;\\n}\\n.ant-col-xs-push-18 {\\n  left: 75%;\\n}\\n.ant-col-xs-pull-18 {\\n  right: 75%;\\n}\\n.ant-col-xs-offset-18 {\\n  margin-left: 75%;\\n}\\n.ant-col-xs-order-18 {\\n  order: 18;\\n}\\n.ant-col-xs-17 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 70.83333333%;\\n}\\n.ant-col-xs-push-17 {\\n  left: 70.83333333%;\\n}\\n.ant-col-xs-pull-17 {\\n  right: 70.83333333%;\\n}\\n.ant-col-xs-offset-17 {\\n  margin-left: 70.83333333%;\\n}\\n.ant-col-xs-order-17 {\\n  order: 17;\\n}\\n.ant-col-xs-16 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 66.66666667%;\\n}\\n.ant-col-xs-push-16 {\\n  left: 66.66666667%;\\n}\\n.ant-col-xs-pull-16 {\\n  right: 66.66666667%;\\n}\\n.ant-col-xs-offset-16 {\\n  margin-left: 66.66666667%;\\n}\\n.ant-col-xs-order-16 {\\n  order: 16;\\n}\\n.ant-col-xs-15 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 62.5%;\\n}\\n.ant-col-xs-push-15 {\\n  left: 62.5%;\\n}\\n.ant-col-xs-pull-15 {\\n  right: 62.5%;\\n}\\n.ant-col-xs-offset-15 {\\n  margin-left: 62.5%;\\n}\\n.ant-col-xs-order-15 {\\n  order: 15;\\n}\\n.ant-col-xs-14 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 58.33333333%;\\n}\\n.ant-col-xs-push-14 {\\n  left: 58.33333333%;\\n}\\n.ant-col-xs-pull-14 {\\n  right: 58.33333333%;\\n}\\n.ant-col-xs-offset-14 {\\n  margin-left: 58.33333333%;\\n}\\n.ant-col-xs-order-14 {\\n  order: 14;\\n}\\n.ant-col-xs-13 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 54.16666667%;\\n}\\n.ant-col-xs-push-13 {\\n  left: 54.16666667%;\\n}\\n.ant-col-xs-pull-13 {\\n  right: 54.16666667%;\\n}\\n.ant-col-xs-offset-13 {\\n  margin-left: 54.16666667%;\\n}\\n.ant-col-xs-order-13 {\\n  order: 13;\\n}\\n.ant-col-xs-12 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 50%;\\n}\\n.ant-col-xs-push-12 {\\n  left: 50%;\\n}\\n.ant-col-xs-pull-12 {\\n  right: 50%;\\n}\\n.ant-col-xs-offset-12 {\\n  margin-left: 50%;\\n}\\n.ant-col-xs-order-12 {\\n  order: 12;\\n}\\n.ant-col-xs-11 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 45.83333333%;\\n}\\n.ant-col-xs-push-11 {\\n  left: 45.83333333%;\\n}\\n.ant-col-xs-pull-11 {\\n  right: 45.83333333%;\\n}\\n.ant-col-xs-offset-11 {\\n  margin-left: 45.83333333%;\\n}\\n.ant-col-xs-order-11 {\\n  order: 11;\\n}\\n.ant-col-xs-10 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 41.66666667%;\\n}\\n.ant-col-xs-push-10 {\\n  left: 41.66666667%;\\n}\\n.ant-col-xs-pull-10 {\\n  right: 41.66666667%;\\n}\\n.ant-col-xs-offset-10 {\\n  margin-left: 41.66666667%;\\n}\\n.ant-col-xs-order-10 {\\n  order: 10;\\n}\\n.ant-col-xs-9 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 37.5%;\\n}\\n.ant-col-xs-push-9 {\\n  left: 37.5%;\\n}\\n.ant-col-xs-pull-9 {\\n  right: 37.5%;\\n}\\n.ant-col-xs-offset-9 {\\n  margin-left: 37.5%;\\n}\\n.ant-col-xs-order-9 {\\n  order: 9;\\n}\\n.ant-col-xs-8 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 33.33333333%;\\n}\\n.ant-col-xs-push-8 {\\n  left: 33.33333333%;\\n}\\n.ant-col-xs-pull-8 {\\n  right: 33.33333333%;\\n}\\n.ant-col-xs-offset-8 {\\n  margin-left: 33.33333333%;\\n}\\n.ant-col-xs-order-8 {\\n  order: 8;\\n}\\n.ant-col-xs-7 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 29.16666667%;\\n}\\n.ant-col-xs-push-7 {\\n  left: 29.16666667%;\\n}\\n.ant-col-xs-pull-7 {\\n  right: 29.16666667%;\\n}\\n.ant-col-xs-offset-7 {\\n  margin-left: 29.16666667%;\\n}\\n.ant-col-xs-order-7 {\\n  order: 7;\\n}\\n.ant-col-xs-6 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 25%;\\n}\\n.ant-col-xs-push-6 {\\n  left: 25%;\\n}\\n.ant-col-xs-pull-6 {\\n  right: 25%;\\n}\\n.ant-col-xs-offset-6 {\\n  margin-left: 25%;\\n}\\n.ant-col-xs-order-6 {\\n  order: 6;\\n}\\n.ant-col-xs-5 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 20.83333333%;\\n}\\n.ant-col-xs-push-5 {\\n  left: 20.83333333%;\\n}\\n.ant-col-xs-pull-5 {\\n  right: 20.83333333%;\\n}\\n.ant-col-xs-offset-5 {\\n  margin-left: 20.83333333%;\\n}\\n.ant-col-xs-order-5 {\\n  order: 5;\\n}\\n.ant-col-xs-4 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 16.66666667%;\\n}\\n.ant-col-xs-push-4 {\\n  left: 16.66666667%;\\n}\\n.ant-col-xs-pull-4 {\\n  right: 16.66666667%;\\n}\\n.ant-col-xs-offset-4 {\\n  margin-left: 16.66666667%;\\n}\\n.ant-col-xs-order-4 {\\n  order: 4;\\n}\\n.ant-col-xs-3 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 12.5%;\\n}\\n.ant-col-xs-push-3 {\\n  left: 12.5%;\\n}\\n.ant-col-xs-pull-3 {\\n  right: 12.5%;\\n}\\n.ant-col-xs-offset-3 {\\n  margin-left: 12.5%;\\n}\\n.ant-col-xs-order-3 {\\n  order: 3;\\n}\\n.ant-col-xs-2 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 8.33333333%;\\n}\\n.ant-col-xs-push-2 {\\n  left: 8.33333333%;\\n}\\n.ant-col-xs-pull-2 {\\n  right: 8.33333333%;\\n}\\n.ant-col-xs-offset-2 {\\n  margin-left: 8.33333333%;\\n}\\n.ant-col-xs-order-2 {\\n  order: 2;\\n}\\n.ant-col-xs-1 {\\n  display: block;\\n  box-sizing: border-box;\\n  width: 4.16666667%;\\n}\\n.ant-col-xs-push-1 {\\n  left: 4.16666667%;\\n}\\n.ant-col-xs-pull-1 {\\n  right: 4.16666667%;\\n}\\n.ant-col-xs-offset-1 {\\n  margin-left: 4.16666667%;\\n}\\n.ant-col-xs-order-1 {\\n  order: 1;\\n}\\n.ant-col-xs-0 {\\n  display: none;\\n}\\n.ant-col-push-0 {\\n  left: auto;\\n}\\n.ant-col-pull-0 {\\n  right: auto;\\n}\\n.ant-col-xs-push-0 {\\n  left: auto;\\n}\\n.ant-col-xs-pull-0 {\\n  right: auto;\\n}\\n.ant-col-xs-offset-0 {\\n  margin-left: 0;\\n}\\n.ant-col-xs-order-0 {\\n  order: 0;\\n}\\n@media (min-width: 576px) {\\n  .ant-col-sm-1, .ant-col-sm-2, .ant-col-sm-3, .ant-col-sm-4, .ant-col-sm-5, .ant-col-sm-6, .ant-col-sm-7, .ant-col-sm-8, .ant-col-sm-9, .ant-col-sm-10, .ant-col-sm-11, .ant-col-sm-12, .ant-col-sm-13, .ant-col-sm-14, .ant-col-sm-15, .ant-col-sm-16, .ant-col-sm-17, .ant-col-sm-18, .ant-col-sm-19, .ant-col-sm-20, .ant-col-sm-21, .ant-col-sm-22, .ant-col-sm-23, .ant-col-sm-24 {\\n    flex: 0 0 auto;\\n    float: left;\\n  }\\n  .ant-col-sm-24 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 100%;\\n  }\\n  .ant-col-sm-push-24 {\\n    left: 100%;\\n  }\\n  .ant-col-sm-pull-24 {\\n    right: 100%;\\n  }\\n  .ant-col-sm-offset-24 {\\n    margin-left: 100%;\\n  }\\n  .ant-col-sm-order-24 {\\n    order: 24;\\n  }\\n  .ant-col-sm-23 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 95.83333333%;\\n  }\\n  .ant-col-sm-push-23 {\\n    left: 95.83333333%;\\n  }\\n  .ant-col-sm-pull-23 {\\n    right: 95.83333333%;\\n  }\\n  .ant-col-sm-offset-23 {\\n    margin-left: 95.83333333%;\\n  }\\n  .ant-col-sm-order-23 {\\n    order: 23;\\n  }\\n  .ant-col-sm-22 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 91.66666667%;\\n  }\\n  .ant-col-sm-push-22 {\\n    left: 91.66666667%;\\n  }\\n  .ant-col-sm-pull-22 {\\n    right: 91.66666667%;\\n  }\\n  .ant-col-sm-offset-22 {\\n    margin-left: 91.66666667%;\\n  }\\n  .ant-col-sm-order-22 {\\n    order: 22;\\n  }\\n  .ant-col-sm-21 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 87.5%;\\n  }\\n  .ant-col-sm-push-21 {\\n    left: 87.5%;\\n  }\\n  .ant-col-sm-pull-21 {\\n    right: 87.5%;\\n  }\\n  .ant-col-sm-offset-21 {\\n    margin-left: 87.5%;\\n  }\\n  .ant-col-sm-order-21 {\\n    order: 21;\\n  }\\n  .ant-col-sm-20 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 83.33333333%;\\n  }\\n  .ant-col-sm-push-20 {\\n    left: 83.33333333%;\\n  }\\n  .ant-col-sm-pull-20 {\\n    right: 83.33333333%;\\n  }\\n  .ant-col-sm-offset-20 {\\n    margin-left: 83.33333333%;\\n  }\\n  .ant-col-sm-order-20 {\\n    order: 20;\\n  }\\n  .ant-col-sm-19 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 79.16666667%;\\n  }\\n  .ant-col-sm-push-19 {\\n    left: 79.16666667%;\\n  }\\n  .ant-col-sm-pull-19 {\\n    right: 79.16666667%;\\n  }\\n  .ant-col-sm-offset-19 {\\n    margin-left: 79.16666667%;\\n  }\\n  .ant-col-sm-order-19 {\\n    order: 19;\\n  }\\n  .ant-col-sm-18 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 75%;\\n  }\\n  .ant-col-sm-push-18 {\\n    left: 75%;\\n  }\\n  .ant-col-sm-pull-18 {\\n    right: 75%;\\n  }\\n  .ant-col-sm-offset-18 {\\n    margin-left: 75%;\\n  }\\n  .ant-col-sm-order-18 {\\n    order: 18;\\n  }\\n  .ant-col-sm-17 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 70.83333333%;\\n  }\\n  .ant-col-sm-push-17 {\\n    left: 70.83333333%;\\n  }\\n  .ant-col-sm-pull-17 {\\n    right: 70.83333333%;\\n  }\\n  .ant-col-sm-offset-17 {\\n    margin-left: 70.83333333%;\\n  }\\n  .ant-col-sm-order-17 {\\n    order: 17;\\n  }\\n  .ant-col-sm-16 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 66.66666667%;\\n  }\\n  .ant-col-sm-push-16 {\\n    left: 66.66666667%;\\n  }\\n  .ant-col-sm-pull-16 {\\n    right: 66.66666667%;\\n  }\\n  .ant-col-sm-offset-16 {\\n    margin-left: 66.66666667%;\\n  }\\n  .ant-col-sm-order-16 {\\n    order: 16;\\n  }\\n  .ant-col-sm-15 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 62.5%;\\n  }\\n  .ant-col-sm-push-15 {\\n    left: 62.5%;\\n  }\\n  .ant-col-sm-pull-15 {\\n    right: 62.5%;\\n  }\\n  .ant-col-sm-offset-15 {\\n    margin-left: 62.5%;\\n  }\\n  .ant-col-sm-order-15 {\\n    order: 15;\\n  }\\n  .ant-col-sm-14 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 58.33333333%;\\n  }\\n  .ant-col-sm-push-14 {\\n    left: 58.33333333%;\\n  }\\n  .ant-col-sm-pull-14 {\\n    right: 58.33333333%;\\n  }\\n  .ant-col-sm-offset-14 {\\n    margin-left: 58.33333333%;\\n  }\\n  .ant-col-sm-order-14 {\\n    order: 14;\\n  }\\n  .ant-col-sm-13 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 54.16666667%;\\n  }\\n  .ant-col-sm-push-13 {\\n    left: 54.16666667%;\\n  }\\n  .ant-col-sm-pull-13 {\\n    right: 54.16666667%;\\n  }\\n  .ant-col-sm-offset-13 {\\n    margin-left: 54.16666667%;\\n  }\\n  .ant-col-sm-order-13 {\\n    order: 13;\\n  }\\n  .ant-col-sm-12 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 50%;\\n  }\\n  .ant-col-sm-push-12 {\\n    left: 50%;\\n  }\\n  .ant-col-sm-pull-12 {\\n    right: 50%;\\n  }\\n  .ant-col-sm-offset-12 {\\n    margin-left: 50%;\\n  }\\n  .ant-col-sm-order-12 {\\n    order: 12;\\n  }\\n  .ant-col-sm-11 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 45.83333333%;\\n  }\\n  .ant-col-sm-push-11 {\\n    left: 45.83333333%;\\n  }\\n  .ant-col-sm-pull-11 {\\n    right: 45.83333333%;\\n  }\\n  .ant-col-sm-offset-11 {\\n    margin-left: 45.83333333%;\\n  }\\n  .ant-col-sm-order-11 {\\n    order: 11;\\n  }\\n  .ant-col-sm-10 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 41.66666667%;\\n  }\\n  .ant-col-sm-push-10 {\\n    left: 41.66666667%;\\n  }\\n  .ant-col-sm-pull-10 {\\n    right: 41.66666667%;\\n  }\\n  .ant-col-sm-offset-10 {\\n    margin-left: 41.66666667%;\\n  }\\n  .ant-col-sm-order-10 {\\n    order: 10;\\n  }\\n  .ant-col-sm-9 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 37.5%;\\n  }\\n  .ant-col-sm-push-9 {\\n    left: 37.5%;\\n  }\\n  .ant-col-sm-pull-9 {\\n    right: 37.5%;\\n  }\\n  .ant-col-sm-offset-9 {\\n    margin-left: 37.5%;\\n  }\\n  .ant-col-sm-order-9 {\\n    order: 9;\\n  }\\n  .ant-col-sm-8 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 33.33333333%;\\n  }\\n  .ant-col-sm-push-8 {\\n    left: 33.33333333%;\\n  }\\n  .ant-col-sm-pull-8 {\\n    right: 33.33333333%;\\n  }\\n  .ant-col-sm-offset-8 {\\n    margin-left: 33.33333333%;\\n  }\\n  .ant-col-sm-order-8 {\\n    order: 8;\\n  }\\n  .ant-col-sm-7 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 29.16666667%;\\n  }\\n  .ant-col-sm-push-7 {\\n    left: 29.16666667%;\\n  }\\n  .ant-col-sm-pull-7 {\\n    right: 29.16666667%;\\n  }\\n  .ant-col-sm-offset-7 {\\n    margin-left: 29.16666667%;\\n  }\\n  .ant-col-sm-order-7 {\\n    order: 7;\\n  }\\n  .ant-col-sm-6 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 25%;\\n  }\\n  .ant-col-sm-push-6 {\\n    left: 25%;\\n  }\\n  .ant-col-sm-pull-6 {\\n    right: 25%;\\n  }\\n  .ant-col-sm-offset-6 {\\n    margin-left: 25%;\\n  }\\n  .ant-col-sm-order-6 {\\n    order: 6;\\n  }\\n  .ant-col-sm-5 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 20.83333333%;\\n  }\\n  .ant-col-sm-push-5 {\\n    left: 20.83333333%;\\n  }\\n  .ant-col-sm-pull-5 {\\n    right: 20.83333333%;\\n  }\\n  .ant-col-sm-offset-5 {\\n    margin-left: 20.83333333%;\\n  }\\n  .ant-col-sm-order-5 {\\n    order: 5;\\n  }\\n  .ant-col-sm-4 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 16.66666667%;\\n  }\\n  .ant-col-sm-push-4 {\\n    left: 16.66666667%;\\n  }\\n  .ant-col-sm-pull-4 {\\n    right: 16.66666667%;\\n  }\\n  .ant-col-sm-offset-4 {\\n    margin-left: 16.66666667%;\\n  }\\n  .ant-col-sm-order-4 {\\n    order: 4;\\n  }\\n  .ant-col-sm-3 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 12.5%;\\n  }\\n  .ant-col-sm-push-3 {\\n    left: 12.5%;\\n  }\\n  .ant-col-sm-pull-3 {\\n    right: 12.5%;\\n  }\\n  .ant-col-sm-offset-3 {\\n    margin-left: 12.5%;\\n  }\\n  .ant-col-sm-order-3 {\\n    order: 3;\\n  }\\n  .ant-col-sm-2 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 8.33333333%;\\n  }\\n  .ant-col-sm-push-2 {\\n    left: 8.33333333%;\\n  }\\n  .ant-col-sm-pull-2 {\\n    right: 8.33333333%;\\n  }\\n  .ant-col-sm-offset-2 {\\n    margin-left: 8.33333333%;\\n  }\\n  .ant-col-sm-order-2 {\\n    order: 2;\\n  }\\n  .ant-col-sm-1 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 4.16666667%;\\n  }\\n  .ant-col-sm-push-1 {\\n    left: 4.16666667%;\\n  }\\n  .ant-col-sm-pull-1 {\\n    right: 4.16666667%;\\n  }\\n  .ant-col-sm-offset-1 {\\n    margin-left: 4.16666667%;\\n  }\\n  .ant-col-sm-order-1 {\\n    order: 1;\\n  }\\n  .ant-col-sm-0 {\\n    display: none;\\n  }\\n  .ant-col-push-0 {\\n    left: auto;\\n  }\\n  .ant-col-pull-0 {\\n    right: auto;\\n  }\\n  .ant-col-sm-push-0 {\\n    left: auto;\\n  }\\n  .ant-col-sm-pull-0 {\\n    right: auto;\\n  }\\n  .ant-col-sm-offset-0 {\\n    margin-left: 0;\\n  }\\n  .ant-col-sm-order-0 {\\n    order: 0;\\n  }\\n}\\n@media (min-width: 768px) {\\n  .ant-col-md-1, .ant-col-md-2, .ant-col-md-3, .ant-col-md-4, .ant-col-md-5, .ant-col-md-6, .ant-col-md-7, .ant-col-md-8, .ant-col-md-9, .ant-col-md-10, .ant-col-md-11, .ant-col-md-12, .ant-col-md-13, .ant-col-md-14, .ant-col-md-15, .ant-col-md-16, .ant-col-md-17, .ant-col-md-18, .ant-col-md-19, .ant-col-md-20, .ant-col-md-21, .ant-col-md-22, .ant-col-md-23, .ant-col-md-24 {\\n    flex: 0 0 auto;\\n    float: left;\\n  }\\n  .ant-col-md-24 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 100%;\\n  }\\n  .ant-col-md-push-24 {\\n    left: 100%;\\n  }\\n  .ant-col-md-pull-24 {\\n    right: 100%;\\n  }\\n  .ant-col-md-offset-24 {\\n    margin-left: 100%;\\n  }\\n  .ant-col-md-order-24 {\\n    order: 24;\\n  }\\n  .ant-col-md-23 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 95.83333333%;\\n  }\\n  .ant-col-md-push-23 {\\n    left: 95.83333333%;\\n  }\\n  .ant-col-md-pull-23 {\\n    right: 95.83333333%;\\n  }\\n  .ant-col-md-offset-23 {\\n    margin-left: 95.83333333%;\\n  }\\n  .ant-col-md-order-23 {\\n    order: 23;\\n  }\\n  .ant-col-md-22 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 91.66666667%;\\n  }\\n  .ant-col-md-push-22 {\\n    left: 91.66666667%;\\n  }\\n  .ant-col-md-pull-22 {\\n    right: 91.66666667%;\\n  }\\n  .ant-col-md-offset-22 {\\n    margin-left: 91.66666667%;\\n  }\\n  .ant-col-md-order-22 {\\n    order: 22;\\n  }\\n  .ant-col-md-21 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 87.5%;\\n  }\\n  .ant-col-md-push-21 {\\n    left: 87.5%;\\n  }\\n  .ant-col-md-pull-21 {\\n    right: 87.5%;\\n  }\\n  .ant-col-md-offset-21 {\\n    margin-left: 87.5%;\\n  }\\n  .ant-col-md-order-21 {\\n    order: 21;\\n  }\\n  .ant-col-md-20 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 83.33333333%;\\n  }\\n  .ant-col-md-push-20 {\\n    left: 83.33333333%;\\n  }\\n  .ant-col-md-pull-20 {\\n    right: 83.33333333%;\\n  }\\n  .ant-col-md-offset-20 {\\n    margin-left: 83.33333333%;\\n  }\\n  .ant-col-md-order-20 {\\n    order: 20;\\n  }\\n  .ant-col-md-19 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 79.16666667%;\\n  }\\n  .ant-col-md-push-19 {\\n    left: 79.16666667%;\\n  }\\n  .ant-col-md-pull-19 {\\n    right: 79.16666667%;\\n  }\\n  .ant-col-md-offset-19 {\\n    margin-left: 79.16666667%;\\n  }\\n  .ant-col-md-order-19 {\\n    order: 19;\\n  }\\n  .ant-col-md-18 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 75%;\\n  }\\n  .ant-col-md-push-18 {\\n    left: 75%;\\n  }\\n  .ant-col-md-pull-18 {\\n    right: 75%;\\n  }\\n  .ant-col-md-offset-18 {\\n    margin-left: 75%;\\n  }\\n  .ant-col-md-order-18 {\\n    order: 18;\\n  }\\n  .ant-col-md-17 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 70.83333333%;\\n  }\\n  .ant-col-md-push-17 {\\n    left: 70.83333333%;\\n  }\\n  .ant-col-md-pull-17 {\\n    right: 70.83333333%;\\n  }\\n  .ant-col-md-offset-17 {\\n    margin-left: 70.83333333%;\\n  }\\n  .ant-col-md-order-17 {\\n    order: 17;\\n  }\\n  .ant-col-md-16 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 66.66666667%;\\n  }\\n  .ant-col-md-push-16 {\\n    left: 66.66666667%;\\n  }\\n  .ant-col-md-pull-16 {\\n    right: 66.66666667%;\\n  }\\n  .ant-col-md-offset-16 {\\n    margin-left: 66.66666667%;\\n  }\\n  .ant-col-md-order-16 {\\n    order: 16;\\n  }\\n  .ant-col-md-15 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 62.5%;\\n  }\\n  .ant-col-md-push-15 {\\n    left: 62.5%;\\n  }\\n  .ant-col-md-pull-15 {\\n    right: 62.5%;\\n  }\\n  .ant-col-md-offset-15 {\\n    margin-left: 62.5%;\\n  }\\n  .ant-col-md-order-15 {\\n    order: 15;\\n  }\\n  .ant-col-md-14 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 58.33333333%;\\n  }\\n  .ant-col-md-push-14 {\\n    left: 58.33333333%;\\n  }\\n  .ant-col-md-pull-14 {\\n    right: 58.33333333%;\\n  }\\n  .ant-col-md-offset-14 {\\n    margin-left: 58.33333333%;\\n  }\\n  .ant-col-md-order-14 {\\n    order: 14;\\n  }\\n  .ant-col-md-13 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 54.16666667%;\\n  }\\n  .ant-col-md-push-13 {\\n    left: 54.16666667%;\\n  }\\n  .ant-col-md-pull-13 {\\n    right: 54.16666667%;\\n  }\\n  .ant-col-md-offset-13 {\\n    margin-left: 54.16666667%;\\n  }\\n  .ant-col-md-order-13 {\\n    order: 13;\\n  }\\n  .ant-col-md-12 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 50%;\\n  }\\n  .ant-col-md-push-12 {\\n    left: 50%;\\n  }\\n  .ant-col-md-pull-12 {\\n    right: 50%;\\n  }\\n  .ant-col-md-offset-12 {\\n    margin-left: 50%;\\n  }\\n  .ant-col-md-order-12 {\\n    order: 12;\\n  }\\n  .ant-col-md-11 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 45.83333333%;\\n  }\\n  .ant-col-md-push-11 {\\n    left: 45.83333333%;\\n  }\\n  .ant-col-md-pull-11 {\\n    right: 45.83333333%;\\n  }\\n  .ant-col-md-offset-11 {\\n    margin-left: 45.83333333%;\\n  }\\n  .ant-col-md-order-11 {\\n    order: 11;\\n  }\\n  .ant-col-md-10 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 41.66666667%;\\n  }\\n  .ant-col-md-push-10 {\\n    left: 41.66666667%;\\n  }\\n  .ant-col-md-pull-10 {\\n    right: 41.66666667%;\\n  }\\n  .ant-col-md-offset-10 {\\n    margin-left: 41.66666667%;\\n  }\\n  .ant-col-md-order-10 {\\n    order: 10;\\n  }\\n  .ant-col-md-9 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 37.5%;\\n  }\\n  .ant-col-md-push-9 {\\n    left: 37.5%;\\n  }\\n  .ant-col-md-pull-9 {\\n    right: 37.5%;\\n  }\\n  .ant-col-md-offset-9 {\\n    margin-left: 37.5%;\\n  }\\n  .ant-col-md-order-9 {\\n    order: 9;\\n  }\\n  .ant-col-md-8 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 33.33333333%;\\n  }\\n  .ant-col-md-push-8 {\\n    left: 33.33333333%;\\n  }\\n  .ant-col-md-pull-8 {\\n    right: 33.33333333%;\\n  }\\n  .ant-col-md-offset-8 {\\n    margin-left: 33.33333333%;\\n  }\\n  .ant-col-md-order-8 {\\n    order: 8;\\n  }\\n  .ant-col-md-7 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 29.16666667%;\\n  }\\n  .ant-col-md-push-7 {\\n    left: 29.16666667%;\\n  }\\n  .ant-col-md-pull-7 {\\n    right: 29.16666667%;\\n  }\\n  .ant-col-md-offset-7 {\\n    margin-left: 29.16666667%;\\n  }\\n  .ant-col-md-order-7 {\\n    order: 7;\\n  }\\n  .ant-col-md-6 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 25%;\\n  }\\n  .ant-col-md-push-6 {\\n    left: 25%;\\n  }\\n  .ant-col-md-pull-6 {\\n    right: 25%;\\n  }\\n  .ant-col-md-offset-6 {\\n    margin-left: 25%;\\n  }\\n  .ant-col-md-order-6 {\\n    order: 6;\\n  }\\n  .ant-col-md-5 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 20.83333333%;\\n  }\\n  .ant-col-md-push-5 {\\n    left: 20.83333333%;\\n  }\\n  .ant-col-md-pull-5 {\\n    right: 20.83333333%;\\n  }\\n  .ant-col-md-offset-5 {\\n    margin-left: 20.83333333%;\\n  }\\n  .ant-col-md-order-5 {\\n    order: 5;\\n  }\\n  .ant-col-md-4 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 16.66666667%;\\n  }\\n  .ant-col-md-push-4 {\\n    left: 16.66666667%;\\n  }\\n  .ant-col-md-pull-4 {\\n    right: 16.66666667%;\\n  }\\n  .ant-col-md-offset-4 {\\n    margin-left: 16.66666667%;\\n  }\\n  .ant-col-md-order-4 {\\n    order: 4;\\n  }\\n  .ant-col-md-3 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 12.5%;\\n  }\\n  .ant-col-md-push-3 {\\n    left: 12.5%;\\n  }\\n  .ant-col-md-pull-3 {\\n    right: 12.5%;\\n  }\\n  .ant-col-md-offset-3 {\\n    margin-left: 12.5%;\\n  }\\n  .ant-col-md-order-3 {\\n    order: 3;\\n  }\\n  .ant-col-md-2 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 8.33333333%;\\n  }\\n  .ant-col-md-push-2 {\\n    left: 8.33333333%;\\n  }\\n  .ant-col-md-pull-2 {\\n    right: 8.33333333%;\\n  }\\n  .ant-col-md-offset-2 {\\n    margin-left: 8.33333333%;\\n  }\\n  .ant-col-md-order-2 {\\n    order: 2;\\n  }\\n  .ant-col-md-1 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 4.16666667%;\\n  }\\n  .ant-col-md-push-1 {\\n    left: 4.16666667%;\\n  }\\n  .ant-col-md-pull-1 {\\n    right: 4.16666667%;\\n  }\\n  .ant-col-md-offset-1 {\\n    margin-left: 4.16666667%;\\n  }\\n  .ant-col-md-order-1 {\\n    order: 1;\\n  }\\n  .ant-col-md-0 {\\n    display: none;\\n  }\\n  .ant-col-push-0 {\\n    left: auto;\\n  }\\n  .ant-col-pull-0 {\\n    right: auto;\\n  }\\n  .ant-col-md-push-0 {\\n    left: auto;\\n  }\\n  .ant-col-md-pull-0 {\\n    right: auto;\\n  }\\n  .ant-col-md-offset-0 {\\n    margin-left: 0;\\n  }\\n  .ant-col-md-order-0 {\\n    order: 0;\\n  }\\n}\\n@media (min-width: 992px) {\\n  .ant-col-lg-1, .ant-col-lg-2, .ant-col-lg-3, .ant-col-lg-4, .ant-col-lg-5, .ant-col-lg-6, .ant-col-lg-7, .ant-col-lg-8, .ant-col-lg-9, .ant-col-lg-10, .ant-col-lg-11, .ant-col-lg-12, .ant-col-lg-13, .ant-col-lg-14, .ant-col-lg-15, .ant-col-lg-16, .ant-col-lg-17, .ant-col-lg-18, .ant-col-lg-19, .ant-col-lg-20, .ant-col-lg-21, .ant-col-lg-22, .ant-col-lg-23, .ant-col-lg-24 {\\n    flex: 0 0 auto;\\n    float: left;\\n  }\\n  .ant-col-lg-24 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 100%;\\n  }\\n  .ant-col-lg-push-24 {\\n    left: 100%;\\n  }\\n  .ant-col-lg-pull-24 {\\n    right: 100%;\\n  }\\n  .ant-col-lg-offset-24 {\\n    margin-left: 100%;\\n  }\\n  .ant-col-lg-order-24 {\\n    order: 24;\\n  }\\n  .ant-col-lg-23 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 95.83333333%;\\n  }\\n  .ant-col-lg-push-23 {\\n    left: 95.83333333%;\\n  }\\n  .ant-col-lg-pull-23 {\\n    right: 95.83333333%;\\n  }\\n  .ant-col-lg-offset-23 {\\n    margin-left: 95.83333333%;\\n  }\\n  .ant-col-lg-order-23 {\\n    order: 23;\\n  }\\n  .ant-col-lg-22 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 91.66666667%;\\n  }\\n  .ant-col-lg-push-22 {\\n    left: 91.66666667%;\\n  }\\n  .ant-col-lg-pull-22 {\\n    right: 91.66666667%;\\n  }\\n  .ant-col-lg-offset-22 {\\n    margin-left: 91.66666667%;\\n  }\\n  .ant-col-lg-order-22 {\\n    order: 22;\\n  }\\n  .ant-col-lg-21 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 87.5%;\\n  }\\n  .ant-col-lg-push-21 {\\n    left: 87.5%;\\n  }\\n  .ant-col-lg-pull-21 {\\n    right: 87.5%;\\n  }\\n  .ant-col-lg-offset-21 {\\n    margin-left: 87.5%;\\n  }\\n  .ant-col-lg-order-21 {\\n    order: 21;\\n  }\\n  .ant-col-lg-20 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 83.33333333%;\\n  }\\n  .ant-col-lg-push-20 {\\n    left: 83.33333333%;\\n  }\\n  .ant-col-lg-pull-20 {\\n    right: 83.33333333%;\\n  }\\n  .ant-col-lg-offset-20 {\\n    margin-left: 83.33333333%;\\n  }\\n  .ant-col-lg-order-20 {\\n    order: 20;\\n  }\\n  .ant-col-lg-19 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 79.16666667%;\\n  }\\n  .ant-col-lg-push-19 {\\n    left: 79.16666667%;\\n  }\\n  .ant-col-lg-pull-19 {\\n    right: 79.16666667%;\\n  }\\n  .ant-col-lg-offset-19 {\\n    margin-left: 79.16666667%;\\n  }\\n  .ant-col-lg-order-19 {\\n    order: 19;\\n  }\\n  .ant-col-lg-18 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 75%;\\n  }\\n  .ant-col-lg-push-18 {\\n    left: 75%;\\n  }\\n  .ant-col-lg-pull-18 {\\n    right: 75%;\\n  }\\n  .ant-col-lg-offset-18 {\\n    margin-left: 75%;\\n  }\\n  .ant-col-lg-order-18 {\\n    order: 18;\\n  }\\n  .ant-col-lg-17 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 70.83333333%;\\n  }\\n  .ant-col-lg-push-17 {\\n    left: 70.83333333%;\\n  }\\n  .ant-col-lg-pull-17 {\\n    right: 70.83333333%;\\n  }\\n  .ant-col-lg-offset-17 {\\n    margin-left: 70.83333333%;\\n  }\\n  .ant-col-lg-order-17 {\\n    order: 17;\\n  }\\n  .ant-col-lg-16 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 66.66666667%;\\n  }\\n  .ant-col-lg-push-16 {\\n    left: 66.66666667%;\\n  }\\n  .ant-col-lg-pull-16 {\\n    right: 66.66666667%;\\n  }\\n  .ant-col-lg-offset-16 {\\n    margin-left: 66.66666667%;\\n  }\\n  .ant-col-lg-order-16 {\\n    order: 16;\\n  }\\n  .ant-col-lg-15 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 62.5%;\\n  }\\n  .ant-col-lg-push-15 {\\n    left: 62.5%;\\n  }\\n  .ant-col-lg-pull-15 {\\n    right: 62.5%;\\n  }\\n  .ant-col-lg-offset-15 {\\n    margin-left: 62.5%;\\n  }\\n  .ant-col-lg-order-15 {\\n    order: 15;\\n  }\\n  .ant-col-lg-14 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 58.33333333%;\\n  }\\n  .ant-col-lg-push-14 {\\n    left: 58.33333333%;\\n  }\\n  .ant-col-lg-pull-14 {\\n    right: 58.33333333%;\\n  }\\n  .ant-col-lg-offset-14 {\\n    margin-left: 58.33333333%;\\n  }\\n  .ant-col-lg-order-14 {\\n    order: 14;\\n  }\\n  .ant-col-lg-13 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 54.16666667%;\\n  }\\n  .ant-col-lg-push-13 {\\n    left: 54.16666667%;\\n  }\\n  .ant-col-lg-pull-13 {\\n    right: 54.16666667%;\\n  }\\n  .ant-col-lg-offset-13 {\\n    margin-left: 54.16666667%;\\n  }\\n  .ant-col-lg-order-13 {\\n    order: 13;\\n  }\\n  .ant-col-lg-12 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 50%;\\n  }\\n  .ant-col-lg-push-12 {\\n    left: 50%;\\n  }\\n  .ant-col-lg-pull-12 {\\n    right: 50%;\\n  }\\n  .ant-col-lg-offset-12 {\\n    margin-left: 50%;\\n  }\\n  .ant-col-lg-order-12 {\\n    order: 12;\\n  }\\n  .ant-col-lg-11 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 45.83333333%;\\n  }\\n  .ant-col-lg-push-11 {\\n    left: 45.83333333%;\\n  }\\n  .ant-col-lg-pull-11 {\\n    right: 45.83333333%;\\n  }\\n  .ant-col-lg-offset-11 {\\n    margin-left: 45.83333333%;\\n  }\\n  .ant-col-lg-order-11 {\\n    order: 11;\\n  }\\n  .ant-col-lg-10 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 41.66666667%;\\n  }\\n  .ant-col-lg-push-10 {\\n    left: 41.66666667%;\\n  }\\n  .ant-col-lg-pull-10 {\\n    right: 41.66666667%;\\n  }\\n  .ant-col-lg-offset-10 {\\n    margin-left: 41.66666667%;\\n  }\\n  .ant-col-lg-order-10 {\\n    order: 10;\\n  }\\n  .ant-col-lg-9 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 37.5%;\\n  }\\n  .ant-col-lg-push-9 {\\n    left: 37.5%;\\n  }\\n  .ant-col-lg-pull-9 {\\n    right: 37.5%;\\n  }\\n  .ant-col-lg-offset-9 {\\n    margin-left: 37.5%;\\n  }\\n  .ant-col-lg-order-9 {\\n    order: 9;\\n  }\\n  .ant-col-lg-8 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 33.33333333%;\\n  }\\n  .ant-col-lg-push-8 {\\n    left: 33.33333333%;\\n  }\\n  .ant-col-lg-pull-8 {\\n    right: 33.33333333%;\\n  }\\n  .ant-col-lg-offset-8 {\\n    margin-left: 33.33333333%;\\n  }\\n  .ant-col-lg-order-8 {\\n    order: 8;\\n  }\\n  .ant-col-lg-7 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 29.16666667%;\\n  }\\n  .ant-col-lg-push-7 {\\n    left: 29.16666667%;\\n  }\\n  .ant-col-lg-pull-7 {\\n    right: 29.16666667%;\\n  }\\n  .ant-col-lg-offset-7 {\\n    margin-left: 29.16666667%;\\n  }\\n  .ant-col-lg-order-7 {\\n    order: 7;\\n  }\\n  .ant-col-lg-6 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 25%;\\n  }\\n  .ant-col-lg-push-6 {\\n    left: 25%;\\n  }\\n  .ant-col-lg-pull-6 {\\n    right: 25%;\\n  }\\n  .ant-col-lg-offset-6 {\\n    margin-left: 25%;\\n  }\\n  .ant-col-lg-order-6 {\\n    order: 6;\\n  }\\n  .ant-col-lg-5 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 20.83333333%;\\n  }\\n  .ant-col-lg-push-5 {\\n    left: 20.83333333%;\\n  }\\n  .ant-col-lg-pull-5 {\\n    right: 20.83333333%;\\n  }\\n  .ant-col-lg-offset-5 {\\n    margin-left: 20.83333333%;\\n  }\\n  .ant-col-lg-order-5 {\\n    order: 5;\\n  }\\n  .ant-col-lg-4 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 16.66666667%;\\n  }\\n  .ant-col-lg-push-4 {\\n    left: 16.66666667%;\\n  }\\n  .ant-col-lg-pull-4 {\\n    right: 16.66666667%;\\n  }\\n  .ant-col-lg-offset-4 {\\n    margin-left: 16.66666667%;\\n  }\\n  .ant-col-lg-order-4 {\\n    order: 4;\\n  }\\n  .ant-col-lg-3 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 12.5%;\\n  }\\n  .ant-col-lg-push-3 {\\n    left: 12.5%;\\n  }\\n  .ant-col-lg-pull-3 {\\n    right: 12.5%;\\n  }\\n  .ant-col-lg-offset-3 {\\n    margin-left: 12.5%;\\n  }\\n  .ant-col-lg-order-3 {\\n    order: 3;\\n  }\\n  .ant-col-lg-2 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 8.33333333%;\\n  }\\n  .ant-col-lg-push-2 {\\n    left: 8.33333333%;\\n  }\\n  .ant-col-lg-pull-2 {\\n    right: 8.33333333%;\\n  }\\n  .ant-col-lg-offset-2 {\\n    margin-left: 8.33333333%;\\n  }\\n  .ant-col-lg-order-2 {\\n    order: 2;\\n  }\\n  .ant-col-lg-1 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 4.16666667%;\\n  }\\n  .ant-col-lg-push-1 {\\n    left: 4.16666667%;\\n  }\\n  .ant-col-lg-pull-1 {\\n    right: 4.16666667%;\\n  }\\n  .ant-col-lg-offset-1 {\\n    margin-left: 4.16666667%;\\n  }\\n  .ant-col-lg-order-1 {\\n    order: 1;\\n  }\\n  .ant-col-lg-0 {\\n    display: none;\\n  }\\n  .ant-col-push-0 {\\n    left: auto;\\n  }\\n  .ant-col-pull-0 {\\n    right: auto;\\n  }\\n  .ant-col-lg-push-0 {\\n    left: auto;\\n  }\\n  .ant-col-lg-pull-0 {\\n    right: auto;\\n  }\\n  .ant-col-lg-offset-0 {\\n    margin-left: 0;\\n  }\\n  .ant-col-lg-order-0 {\\n    order: 0;\\n  }\\n}\\n@media (min-width: 1200px) {\\n  .ant-col-xl-1, .ant-col-xl-2, .ant-col-xl-3, .ant-col-xl-4, .ant-col-xl-5, .ant-col-xl-6, .ant-col-xl-7, .ant-col-xl-8, .ant-col-xl-9, .ant-col-xl-10, .ant-col-xl-11, .ant-col-xl-12, .ant-col-xl-13, .ant-col-xl-14, .ant-col-xl-15, .ant-col-xl-16, .ant-col-xl-17, .ant-col-xl-18, .ant-col-xl-19, .ant-col-xl-20, .ant-col-xl-21, .ant-col-xl-22, .ant-col-xl-23, .ant-col-xl-24 {\\n    flex: 0 0 auto;\\n    float: left;\\n  }\\n  .ant-col-xl-24 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 100%;\\n  }\\n  .ant-col-xl-push-24 {\\n    left: 100%;\\n  }\\n  .ant-col-xl-pull-24 {\\n    right: 100%;\\n  }\\n  .ant-col-xl-offset-24 {\\n    margin-left: 100%;\\n  }\\n  .ant-col-xl-order-24 {\\n    order: 24;\\n  }\\n  .ant-col-xl-23 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 95.83333333%;\\n  }\\n  .ant-col-xl-push-23 {\\n    left: 95.83333333%;\\n  }\\n  .ant-col-xl-pull-23 {\\n    right: 95.83333333%;\\n  }\\n  .ant-col-xl-offset-23 {\\n    margin-left: 95.83333333%;\\n  }\\n  .ant-col-xl-order-23 {\\n    order: 23;\\n  }\\n  .ant-col-xl-22 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 91.66666667%;\\n  }\\n  .ant-col-xl-push-22 {\\n    left: 91.66666667%;\\n  }\\n  .ant-col-xl-pull-22 {\\n    right: 91.66666667%;\\n  }\\n  .ant-col-xl-offset-22 {\\n    margin-left: 91.66666667%;\\n  }\\n  .ant-col-xl-order-22 {\\n    order: 22;\\n  }\\n  .ant-col-xl-21 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 87.5%;\\n  }\\n  .ant-col-xl-push-21 {\\n    left: 87.5%;\\n  }\\n  .ant-col-xl-pull-21 {\\n    right: 87.5%;\\n  }\\n  .ant-col-xl-offset-21 {\\n    margin-left: 87.5%;\\n  }\\n  .ant-col-xl-order-21 {\\n    order: 21;\\n  }\\n  .ant-col-xl-20 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 83.33333333%;\\n  }\\n  .ant-col-xl-push-20 {\\n    left: 83.33333333%;\\n  }\\n  .ant-col-xl-pull-20 {\\n    right: 83.33333333%;\\n  }\\n  .ant-col-xl-offset-20 {\\n    margin-left: 83.33333333%;\\n  }\\n  .ant-col-xl-order-20 {\\n    order: 20;\\n  }\\n  .ant-col-xl-19 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 79.16666667%;\\n  }\\n  .ant-col-xl-push-19 {\\n    left: 79.16666667%;\\n  }\\n  .ant-col-xl-pull-19 {\\n    right: 79.16666667%;\\n  }\\n  .ant-col-xl-offset-19 {\\n    margin-left: 79.16666667%;\\n  }\\n  .ant-col-xl-order-19 {\\n    order: 19;\\n  }\\n  .ant-col-xl-18 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 75%;\\n  }\\n  .ant-col-xl-push-18 {\\n    left: 75%;\\n  }\\n  .ant-col-xl-pull-18 {\\n    right: 75%;\\n  }\\n  .ant-col-xl-offset-18 {\\n    margin-left: 75%;\\n  }\\n  .ant-col-xl-order-18 {\\n    order: 18;\\n  }\\n  .ant-col-xl-17 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 70.83333333%;\\n  }\\n  .ant-col-xl-push-17 {\\n    left: 70.83333333%;\\n  }\\n  .ant-col-xl-pull-17 {\\n    right: 70.83333333%;\\n  }\\n  .ant-col-xl-offset-17 {\\n    margin-left: 70.83333333%;\\n  }\\n  .ant-col-xl-order-17 {\\n    order: 17;\\n  }\\n  .ant-col-xl-16 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 66.66666667%;\\n  }\\n  .ant-col-xl-push-16 {\\n    left: 66.66666667%;\\n  }\\n  .ant-col-xl-pull-16 {\\n    right: 66.66666667%;\\n  }\\n  .ant-col-xl-offset-16 {\\n    margin-left: 66.66666667%;\\n  }\\n  .ant-col-xl-order-16 {\\n    order: 16;\\n  }\\n  .ant-col-xl-15 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 62.5%;\\n  }\\n  .ant-col-xl-push-15 {\\n    left: 62.5%;\\n  }\\n  .ant-col-xl-pull-15 {\\n    right: 62.5%;\\n  }\\n  .ant-col-xl-offset-15 {\\n    margin-left: 62.5%;\\n  }\\n  .ant-col-xl-order-15 {\\n    order: 15;\\n  }\\n  .ant-col-xl-14 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 58.33333333%;\\n  }\\n  .ant-col-xl-push-14 {\\n    left: 58.33333333%;\\n  }\\n  .ant-col-xl-pull-14 {\\n    right: 58.33333333%;\\n  }\\n  .ant-col-xl-offset-14 {\\n    margin-left: 58.33333333%;\\n  }\\n  .ant-col-xl-order-14 {\\n    order: 14;\\n  }\\n  .ant-col-xl-13 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 54.16666667%;\\n  }\\n  .ant-col-xl-push-13 {\\n    left: 54.16666667%;\\n  }\\n  .ant-col-xl-pull-13 {\\n    right: 54.16666667%;\\n  }\\n  .ant-col-xl-offset-13 {\\n    margin-left: 54.16666667%;\\n  }\\n  .ant-col-xl-order-13 {\\n    order: 13;\\n  }\\n  .ant-col-xl-12 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 50%;\\n  }\\n  .ant-col-xl-push-12 {\\n    left: 50%;\\n  }\\n  .ant-col-xl-pull-12 {\\n    right: 50%;\\n  }\\n  .ant-col-xl-offset-12 {\\n    margin-left: 50%;\\n  }\\n  .ant-col-xl-order-12 {\\n    order: 12;\\n  }\\n  .ant-col-xl-11 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 45.83333333%;\\n  }\\n  .ant-col-xl-push-11 {\\n    left: 45.83333333%;\\n  }\\n  .ant-col-xl-pull-11 {\\n    right: 45.83333333%;\\n  }\\n  .ant-col-xl-offset-11 {\\n    margin-left: 45.83333333%;\\n  }\\n  .ant-col-xl-order-11 {\\n    order: 11;\\n  }\\n  .ant-col-xl-10 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 41.66666667%;\\n  }\\n  .ant-col-xl-push-10 {\\n    left: 41.66666667%;\\n  }\\n  .ant-col-xl-pull-10 {\\n    right: 41.66666667%;\\n  }\\n  .ant-col-xl-offset-10 {\\n    margin-left: 41.66666667%;\\n  }\\n  .ant-col-xl-order-10 {\\n    order: 10;\\n  }\\n  .ant-col-xl-9 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 37.5%;\\n  }\\n  .ant-col-xl-push-9 {\\n    left: 37.5%;\\n  }\\n  .ant-col-xl-pull-9 {\\n    right: 37.5%;\\n  }\\n  .ant-col-xl-offset-9 {\\n    margin-left: 37.5%;\\n  }\\n  .ant-col-xl-order-9 {\\n    order: 9;\\n  }\\n  .ant-col-xl-8 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 33.33333333%;\\n  }\\n  .ant-col-xl-push-8 {\\n    left: 33.33333333%;\\n  }\\n  .ant-col-xl-pull-8 {\\n    right: 33.33333333%;\\n  }\\n  .ant-col-xl-offset-8 {\\n    margin-left: 33.33333333%;\\n  }\\n  .ant-col-xl-order-8 {\\n    order: 8;\\n  }\\n  .ant-col-xl-7 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 29.16666667%;\\n  }\\n  .ant-col-xl-push-7 {\\n    left: 29.16666667%;\\n  }\\n  .ant-col-xl-pull-7 {\\n    right: 29.16666667%;\\n  }\\n  .ant-col-xl-offset-7 {\\n    margin-left: 29.16666667%;\\n  }\\n  .ant-col-xl-order-7 {\\n    order: 7;\\n  }\\n  .ant-col-xl-6 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 25%;\\n  }\\n  .ant-col-xl-push-6 {\\n    left: 25%;\\n  }\\n  .ant-col-xl-pull-6 {\\n    right: 25%;\\n  }\\n  .ant-col-xl-offset-6 {\\n    margin-left: 25%;\\n  }\\n  .ant-col-xl-order-6 {\\n    order: 6;\\n  }\\n  .ant-col-xl-5 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 20.83333333%;\\n  }\\n  .ant-col-xl-push-5 {\\n    left: 20.83333333%;\\n  }\\n  .ant-col-xl-pull-5 {\\n    right: 20.83333333%;\\n  }\\n  .ant-col-xl-offset-5 {\\n    margin-left: 20.83333333%;\\n  }\\n  .ant-col-xl-order-5 {\\n    order: 5;\\n  }\\n  .ant-col-xl-4 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 16.66666667%;\\n  }\\n  .ant-col-xl-push-4 {\\n    left: 16.66666667%;\\n  }\\n  .ant-col-xl-pull-4 {\\n    right: 16.66666667%;\\n  }\\n  .ant-col-xl-offset-4 {\\n    margin-left: 16.66666667%;\\n  }\\n  .ant-col-xl-order-4 {\\n    order: 4;\\n  }\\n  .ant-col-xl-3 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 12.5%;\\n  }\\n  .ant-col-xl-push-3 {\\n    left: 12.5%;\\n  }\\n  .ant-col-xl-pull-3 {\\n    right: 12.5%;\\n  }\\n  .ant-col-xl-offset-3 {\\n    margin-left: 12.5%;\\n  }\\n  .ant-col-xl-order-3 {\\n    order: 3;\\n  }\\n  .ant-col-xl-2 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 8.33333333%;\\n  }\\n  .ant-col-xl-push-2 {\\n    left: 8.33333333%;\\n  }\\n  .ant-col-xl-pull-2 {\\n    right: 8.33333333%;\\n  }\\n  .ant-col-xl-offset-2 {\\n    margin-left: 8.33333333%;\\n  }\\n  .ant-col-xl-order-2 {\\n    order: 2;\\n  }\\n  .ant-col-xl-1 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 4.16666667%;\\n  }\\n  .ant-col-xl-push-1 {\\n    left: 4.16666667%;\\n  }\\n  .ant-col-xl-pull-1 {\\n    right: 4.16666667%;\\n  }\\n  .ant-col-xl-offset-1 {\\n    margin-left: 4.16666667%;\\n  }\\n  .ant-col-xl-order-1 {\\n    order: 1;\\n  }\\n  .ant-col-xl-0 {\\n    display: none;\\n  }\\n  .ant-col-push-0 {\\n    left: auto;\\n  }\\n  .ant-col-pull-0 {\\n    right: auto;\\n  }\\n  .ant-col-xl-push-0 {\\n    left: auto;\\n  }\\n  .ant-col-xl-pull-0 {\\n    right: auto;\\n  }\\n  .ant-col-xl-offset-0 {\\n    margin-left: 0;\\n  }\\n  .ant-col-xl-order-0 {\\n    order: 0;\\n  }\\n}\\n@media (min-width: 1600px) {\\n  .ant-col-xxl-1, .ant-col-xxl-2, .ant-col-xxl-3, .ant-col-xxl-4, .ant-col-xxl-5, .ant-col-xxl-6, .ant-col-xxl-7, .ant-col-xxl-8, .ant-col-xxl-9, .ant-col-xxl-10, .ant-col-xxl-11, .ant-col-xxl-12, .ant-col-xxl-13, .ant-col-xxl-14, .ant-col-xxl-15, .ant-col-xxl-16, .ant-col-xxl-17, .ant-col-xxl-18, .ant-col-xxl-19, .ant-col-xxl-20, .ant-col-xxl-21, .ant-col-xxl-22, .ant-col-xxl-23, .ant-col-xxl-24 {\\n    flex: 0 0 auto;\\n    float: left;\\n  }\\n  .ant-col-xxl-24 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 100%;\\n  }\\n  .ant-col-xxl-push-24 {\\n    left: 100%;\\n  }\\n  .ant-col-xxl-pull-24 {\\n    right: 100%;\\n  }\\n  .ant-col-xxl-offset-24 {\\n    margin-left: 100%;\\n  }\\n  .ant-col-xxl-order-24 {\\n    order: 24;\\n  }\\n  .ant-col-xxl-23 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 95.83333333%;\\n  }\\n  .ant-col-xxl-push-23 {\\n    left: 95.83333333%;\\n  }\\n  .ant-col-xxl-pull-23 {\\n    right: 95.83333333%;\\n  }\\n  .ant-col-xxl-offset-23 {\\n    margin-left: 95.83333333%;\\n  }\\n  .ant-col-xxl-order-23 {\\n    order: 23;\\n  }\\n  .ant-col-xxl-22 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 91.66666667%;\\n  }\\n  .ant-col-xxl-push-22 {\\n    left: 91.66666667%;\\n  }\\n  .ant-col-xxl-pull-22 {\\n    right: 91.66666667%;\\n  }\\n  .ant-col-xxl-offset-22 {\\n    margin-left: 91.66666667%;\\n  }\\n  .ant-col-xxl-order-22 {\\n    order: 22;\\n  }\\n  .ant-col-xxl-21 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 87.5%;\\n  }\\n  .ant-col-xxl-push-21 {\\n    left: 87.5%;\\n  }\\n  .ant-col-xxl-pull-21 {\\n    right: 87.5%;\\n  }\\n  .ant-col-xxl-offset-21 {\\n    margin-left: 87.5%;\\n  }\\n  .ant-col-xxl-order-21 {\\n    order: 21;\\n  }\\n  .ant-col-xxl-20 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 83.33333333%;\\n  }\\n  .ant-col-xxl-push-20 {\\n    left: 83.33333333%;\\n  }\\n  .ant-col-xxl-pull-20 {\\n    right: 83.33333333%;\\n  }\\n  .ant-col-xxl-offset-20 {\\n    margin-left: 83.33333333%;\\n  }\\n  .ant-col-xxl-order-20 {\\n    order: 20;\\n  }\\n  .ant-col-xxl-19 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 79.16666667%;\\n  }\\n  .ant-col-xxl-push-19 {\\n    left: 79.16666667%;\\n  }\\n  .ant-col-xxl-pull-19 {\\n    right: 79.16666667%;\\n  }\\n  .ant-col-xxl-offset-19 {\\n    margin-left: 79.16666667%;\\n  }\\n  .ant-col-xxl-order-19 {\\n    order: 19;\\n  }\\n  .ant-col-xxl-18 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 75%;\\n  }\\n  .ant-col-xxl-push-18 {\\n    left: 75%;\\n  }\\n  .ant-col-xxl-pull-18 {\\n    right: 75%;\\n  }\\n  .ant-col-xxl-offset-18 {\\n    margin-left: 75%;\\n  }\\n  .ant-col-xxl-order-18 {\\n    order: 18;\\n  }\\n  .ant-col-xxl-17 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 70.83333333%;\\n  }\\n  .ant-col-xxl-push-17 {\\n    left: 70.83333333%;\\n  }\\n  .ant-col-xxl-pull-17 {\\n    right: 70.83333333%;\\n  }\\n  .ant-col-xxl-offset-17 {\\n    margin-left: 70.83333333%;\\n  }\\n  .ant-col-xxl-order-17 {\\n    order: 17;\\n  }\\n  .ant-col-xxl-16 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 66.66666667%;\\n  }\\n  .ant-col-xxl-push-16 {\\n    left: 66.66666667%;\\n  }\\n  .ant-col-xxl-pull-16 {\\n    right: 66.66666667%;\\n  }\\n  .ant-col-xxl-offset-16 {\\n    margin-left: 66.66666667%;\\n  }\\n  .ant-col-xxl-order-16 {\\n    order: 16;\\n  }\\n  .ant-col-xxl-15 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 62.5%;\\n  }\\n  .ant-col-xxl-push-15 {\\n    left: 62.5%;\\n  }\\n  .ant-col-xxl-pull-15 {\\n    right: 62.5%;\\n  }\\n  .ant-col-xxl-offset-15 {\\n    margin-left: 62.5%;\\n  }\\n  .ant-col-xxl-order-15 {\\n    order: 15;\\n  }\\n  .ant-col-xxl-14 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 58.33333333%;\\n  }\\n  .ant-col-xxl-push-14 {\\n    left: 58.33333333%;\\n  }\\n  .ant-col-xxl-pull-14 {\\n    right: 58.33333333%;\\n  }\\n  .ant-col-xxl-offset-14 {\\n    margin-left: 58.33333333%;\\n  }\\n  .ant-col-xxl-order-14 {\\n    order: 14;\\n  }\\n  .ant-col-xxl-13 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 54.16666667%;\\n  }\\n  .ant-col-xxl-push-13 {\\n    left: 54.16666667%;\\n  }\\n  .ant-col-xxl-pull-13 {\\n    right: 54.16666667%;\\n  }\\n  .ant-col-xxl-offset-13 {\\n    margin-left: 54.16666667%;\\n  }\\n  .ant-col-xxl-order-13 {\\n    order: 13;\\n  }\\n  .ant-col-xxl-12 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 50%;\\n  }\\n  .ant-col-xxl-push-12 {\\n    left: 50%;\\n  }\\n  .ant-col-xxl-pull-12 {\\n    right: 50%;\\n  }\\n  .ant-col-xxl-offset-12 {\\n    margin-left: 50%;\\n  }\\n  .ant-col-xxl-order-12 {\\n    order: 12;\\n  }\\n  .ant-col-xxl-11 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 45.83333333%;\\n  }\\n  .ant-col-xxl-push-11 {\\n    left: 45.83333333%;\\n  }\\n  .ant-col-xxl-pull-11 {\\n    right: 45.83333333%;\\n  }\\n  .ant-col-xxl-offset-11 {\\n    margin-left: 45.83333333%;\\n  }\\n  .ant-col-xxl-order-11 {\\n    order: 11;\\n  }\\n  .ant-col-xxl-10 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 41.66666667%;\\n  }\\n  .ant-col-xxl-push-10 {\\n    left: 41.66666667%;\\n  }\\n  .ant-col-xxl-pull-10 {\\n    right: 41.66666667%;\\n  }\\n  .ant-col-xxl-offset-10 {\\n    margin-left: 41.66666667%;\\n  }\\n  .ant-col-xxl-order-10 {\\n    order: 10;\\n  }\\n  .ant-col-xxl-9 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 37.5%;\\n  }\\n  .ant-col-xxl-push-9 {\\n    left: 37.5%;\\n  }\\n  .ant-col-xxl-pull-9 {\\n    right: 37.5%;\\n  }\\n  .ant-col-xxl-offset-9 {\\n    margin-left: 37.5%;\\n  }\\n  .ant-col-xxl-order-9 {\\n    order: 9;\\n  }\\n  .ant-col-xxl-8 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 33.33333333%;\\n  }\\n  .ant-col-xxl-push-8 {\\n    left: 33.33333333%;\\n  }\\n  .ant-col-xxl-pull-8 {\\n    right: 33.33333333%;\\n  }\\n  .ant-col-xxl-offset-8 {\\n    margin-left: 33.33333333%;\\n  }\\n  .ant-col-xxl-order-8 {\\n    order: 8;\\n  }\\n  .ant-col-xxl-7 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 29.16666667%;\\n  }\\n  .ant-col-xxl-push-7 {\\n    left: 29.16666667%;\\n  }\\n  .ant-col-xxl-pull-7 {\\n    right: 29.16666667%;\\n  }\\n  .ant-col-xxl-offset-7 {\\n    margin-left: 29.16666667%;\\n  }\\n  .ant-col-xxl-order-7 {\\n    order: 7;\\n  }\\n  .ant-col-xxl-6 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 25%;\\n  }\\n  .ant-col-xxl-push-6 {\\n    left: 25%;\\n  }\\n  .ant-col-xxl-pull-6 {\\n    right: 25%;\\n  }\\n  .ant-col-xxl-offset-6 {\\n    margin-left: 25%;\\n  }\\n  .ant-col-xxl-order-6 {\\n    order: 6;\\n  }\\n  .ant-col-xxl-5 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 20.83333333%;\\n  }\\n  .ant-col-xxl-push-5 {\\n    left: 20.83333333%;\\n  }\\n  .ant-col-xxl-pull-5 {\\n    right: 20.83333333%;\\n  }\\n  .ant-col-xxl-offset-5 {\\n    margin-left: 20.83333333%;\\n  }\\n  .ant-col-xxl-order-5 {\\n    order: 5;\\n  }\\n  .ant-col-xxl-4 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 16.66666667%;\\n  }\\n  .ant-col-xxl-push-4 {\\n    left: 16.66666667%;\\n  }\\n  .ant-col-xxl-pull-4 {\\n    right: 16.66666667%;\\n  }\\n  .ant-col-xxl-offset-4 {\\n    margin-left: 16.66666667%;\\n  }\\n  .ant-col-xxl-order-4 {\\n    order: 4;\\n  }\\n  .ant-col-xxl-3 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 12.5%;\\n  }\\n  .ant-col-xxl-push-3 {\\n    left: 12.5%;\\n  }\\n  .ant-col-xxl-pull-3 {\\n    right: 12.5%;\\n  }\\n  .ant-col-xxl-offset-3 {\\n    margin-left: 12.5%;\\n  }\\n  .ant-col-xxl-order-3 {\\n    order: 3;\\n  }\\n  .ant-col-xxl-2 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 8.33333333%;\\n  }\\n  .ant-col-xxl-push-2 {\\n    left: 8.33333333%;\\n  }\\n  .ant-col-xxl-pull-2 {\\n    right: 8.33333333%;\\n  }\\n  .ant-col-xxl-offset-2 {\\n    margin-left: 8.33333333%;\\n  }\\n  .ant-col-xxl-order-2 {\\n    order: 2;\\n  }\\n  .ant-col-xxl-1 {\\n    display: block;\\n    box-sizing: border-box;\\n    width: 4.16666667%;\\n  }\\n  .ant-col-xxl-push-1 {\\n    left: 4.16666667%;\\n  }\\n  .ant-col-xxl-pull-1 {\\n    right: 4.16666667%;\\n  }\\n  .ant-col-xxl-offset-1 {\\n    margin-left: 4.16666667%;\\n  }\\n  .ant-col-xxl-order-1 {\\n    order: 1;\\n  }\\n  .ant-col-xxl-0 {\\n    display: none;\\n  }\\n  .ant-col-push-0 {\\n    left: auto;\\n  }\\n  .ant-col-pull-0 {\\n    right: auto;\\n  }\\n  .ant-col-xxl-push-0 {\\n    left: auto;\\n  }\\n  .ant-col-xxl-pull-0 {\\n    right: auto;\\n  }\\n  .ant-col-xxl-offset-0 {\\n    margin-left: 0;\\n  }\\n  .ant-col-xxl-order-0 {\\n    order: 0;\\n  }\\n}\\n.ant-input {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  font-variant: tabular-nums;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  width: 100%;\\n  height: 32px;\\n  padding: 4px 11px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  line-height: 1.5;\\n  background-color: #fff;\\n  background-image: none;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  transition: all 0.3s;\\n}\\n.ant-input::-moz-placeholder {\\n  color: #bfbfbf;\\n  opacity: 1;\\n}\\n.ant-input:-ms-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-input::-webkit-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-input:hover {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.ant-input:focus {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-input-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n}\\n.ant-input-disabled:hover {\\n  border-color: #e6d8d8;\\n  border-right-width: 1px !important;\\n}\\ntextarea.ant-input {\\n  max-width: 100%;\\n  height: auto;\\n  min-height: 32px;\\n  vertical-align: bottom;\\n  transition: all 0.3s, height 0s;\\n}\\n.ant-input-lg {\\n  height: 40px;\\n  padding: 6px 11px;\\n  font-size: 16px;\\n}\\n.ant-input-sm {\\n  height: 24px;\\n  padding: 1px 7px;\\n}\\n.ant-input-group {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: table;\\n  width: 100%;\\n  border-collapse: separate;\\n  border-spacing: 0;\\n}\\n.ant-input-group[class*='col-'] {\\n  float: none;\\n  padding-right: 0;\\n  padding-left: 0;\\n}\\n.ant-input-group > [class*='col-'] {\\n  padding-right: 8px;\\n}\\n.ant-input-group > [class*='col-']:last-child {\\n  padding-right: 0;\\n}\\n.ant-input-group-addon,\\n.ant-input-group-wrap,\\n.ant-input-group > .ant-input {\\n  display: table-cell;\\n}\\n.ant-input-group-addon:not(:first-child):not(:last-child),\\n.ant-input-group-wrap:not(:first-child):not(:last-child),\\n.ant-input-group > .ant-input:not(:first-child):not(:last-child) {\\n  border-radius: 0;\\n}\\n.ant-input-group-addon,\\n.ant-input-group-wrap {\\n  width: 1px;\\n  white-space: nowrap;\\n  vertical-align: middle;\\n}\\n.ant-input-group-wrap > * {\\n  display: block !important;\\n}\\n.ant-input-group .ant-input {\\n  float: left;\\n  width: 100%;\\n  margin-bottom: 0;\\n  text-align: inherit;\\n}\\n.ant-input-group .ant-input:focus {\\n  z-index: 1;\\n  border-right-width: 1px;\\n}\\n.ant-input-group .ant-input:hover {\\n  z-index: 1;\\n  border-right-width: 1px;\\n}\\n.ant-input-group-addon {\\n  position: relative;\\n  padding: 0 11px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-weight: normal;\\n  font-size: 14px;\\n  line-height: 1;\\n  text-align: center;\\n  background-color: #fafafa;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  transition: all 0.3s;\\n}\\n.ant-input-group-addon .ant-select {\\n  margin: -5px -11px;\\n}\\n.ant-input-group-addon .ant-select .ant-select-selection {\\n  margin: -1px;\\n  background-color: inherit;\\n  border: 1px solid transparent;\\n  box-shadow: none;\\n}\\n.ant-input-group-addon .ant-select-open .ant-select-selection,\\n.ant-input-group-addon .ant-select-focused .ant-select-selection {\\n  color: #08979c;\\n}\\n.ant-input-group-addon > i:only-child::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  content: '';\\n}\\n.ant-input-group > .ant-input:first-child,\\n.ant-input-group-addon:first-child {\\n  border-top-right-radius: 0;\\n  border-bottom-right-radius: 0;\\n}\\n.ant-input-group > .ant-input:first-child .ant-select .ant-select-selection,\\n.ant-input-group-addon:first-child .ant-select .ant-select-selection {\\n  border-top-right-radius: 0;\\n  border-bottom-right-radius: 0;\\n}\\n.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input {\\n  border-top-left-radius: 0;\\n  border-bottom-left-radius: 0;\\n}\\n.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input {\\n  border-top-right-radius: 0;\\n  border-bottom-right-radius: 0;\\n}\\n.ant-input-group-addon:first-child {\\n  border-right: 0;\\n}\\n.ant-input-group-addon:last-child {\\n  border-left: 0;\\n}\\n.ant-input-group > .ant-input:last-child,\\n.ant-input-group-addon:last-child {\\n  border-top-left-radius: 0;\\n  border-bottom-left-radius: 0;\\n}\\n.ant-input-group > .ant-input:last-child .ant-select .ant-select-selection,\\n.ant-input-group-addon:last-child .ant-select .ant-select-selection {\\n  border-top-left-radius: 0;\\n  border-bottom-left-radius: 0;\\n}\\n.ant-input-group-lg .ant-input,\\n.ant-input-group-lg > .ant-input-group-addon {\\n  height: 40px;\\n  padding: 6px 11px;\\n  font-size: 16px;\\n}\\n.ant-input-group-sm .ant-input,\\n.ant-input-group-sm > .ant-input-group-addon {\\n  height: 24px;\\n  padding: 1px 7px;\\n}\\n.ant-input-group-lg .ant-select-selection--single {\\n  height: 40px;\\n}\\n.ant-input-group-sm .ant-select-selection--single {\\n  height: 24px;\\n}\\n.ant-input-group .ant-input-affix-wrapper {\\n  display: table-cell;\\n  float: left;\\n  width: 100%;\\n}\\n.ant-input-group.ant-input-group-compact {\\n  display: block;\\n  zoom: 1;\\n}\\n.ant-input-group.ant-input-group-compact::before,\\n.ant-input-group.ant-input-group-compact::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-input-group.ant-input-group-compact::after {\\n  clear: both;\\n}\\n.ant-input-group.ant-input-group-compact::before,\\n.ant-input-group.ant-input-group-compact::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-input-group.ant-input-group-compact::after {\\n  clear: both;\\n}\\n.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child),\\n.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child),\\n.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child) {\\n  border-right-width: 1px;\\n}\\n.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover,\\n.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover,\\n.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):hover {\\n  z-index: 1;\\n}\\n.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus,\\n.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus,\\n.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):focus {\\n  z-index: 1;\\n}\\n.ant-input-group.ant-input-group-compact > * {\\n  display: inline-block;\\n  float: none;\\n  vertical-align: top;\\n  border-radius: 0;\\n}\\n.ant-input-group.ant-input-group-compact > *:not(:last-child) {\\n  margin-right: -1px;\\n  border-right-width: 1px;\\n}\\n.ant-input-group.ant-input-group-compact .ant-input {\\n  float: none;\\n}\\n.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection,\\n.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input,\\n.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input,\\n.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input,\\n.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor,\\n.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input {\\n  border-right-width: 1px;\\n  border-radius: 0;\\n}\\n.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:hover,\\n.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:hover,\\n.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:hover,\\n.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:hover,\\n.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:hover,\\n.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:hover {\\n  z-index: 1;\\n}\\n.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:focus,\\n.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:focus,\\n.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:focus,\\n.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:focus,\\n.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:focus,\\n.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:focus {\\n  z-index: 1;\\n}\\n.ant-input-group.ant-input-group-compact > *:first-child,\\n.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selection,\\n.ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input,\\n.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input,\\n.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input,\\n.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor,\\n.ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input {\\n  border-top-left-radius: 4px;\\n  border-bottom-left-radius: 4px;\\n}\\n.ant-input-group.ant-input-group-compact > *:last-child,\\n.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection,\\n.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input,\\n.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input,\\n.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input,\\n.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input,\\n.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor,\\n.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input {\\n  border-right-width: 1px;\\n  border-top-right-radius: 4px;\\n  border-bottom-right-radius: 4px;\\n}\\n.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input {\\n  vertical-align: top;\\n}\\n.ant-input-group-wrapper {\\n  display: inline-block;\\n  width: 100%;\\n  text-align: start;\\n  vertical-align: top;\\n}\\n.ant-input-affix-wrapper {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  width: 100%;\\n  text-align: start;\\n}\\n.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.ant-input-affix-wrapper .ant-input {\\n  position: relative;\\n  text-align: inherit;\\n}\\n.ant-input-affix-wrapper .ant-input-prefix,\\n.ant-input-affix-wrapper .ant-input-suffix {\\n  position: absolute;\\n  top: 50%;\\n  z-index: 2;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 0;\\n  transform: translateY(-50%);\\n}\\n.ant-input-affix-wrapper .ant-input-prefix :not(.anticon),\\n.ant-input-affix-wrapper .ant-input-suffix :not(.anticon) {\\n  line-height: 1.5;\\n}\\n.ant-input-affix-wrapper .ant-input-prefix {\\n  left: 12px;\\n}\\n.ant-input-affix-wrapper .ant-input-suffix {\\n  right: 12px;\\n}\\n.ant-input-affix-wrapper .ant-input:not(:first-child) {\\n  padding-left: 30px;\\n}\\n.ant-input-affix-wrapper .ant-input:not(:last-child) {\\n  padding-right: 30px;\\n}\\n.ant-input-affix-wrapper .ant-input {\\n  min-height: 100%;\\n}\\n.ant-input-password-icon {\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-input-password-icon:hover {\\n  color: #333;\\n}\\n.ant-input-search-icon {\\n  color: rgba(0, 0, 0, 0.45);\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-input-search-icon:hover {\\n  color: rgba(0, 0, 0, 0.8);\\n}\\n.ant-input-search-enter-button input {\\n  border-right: 0;\\n}\\n.ant-input-search-enter-button + .ant-input-group-addon,\\n.ant-input-search-enter-button input + .ant-input-group-addon {\\n  padding: 0;\\n  border: 0;\\n}\\n.ant-input-search-enter-button + .ant-input-group-addon .ant-input-search-button,\\n.ant-input-search-enter-button input + .ant-input-group-addon .ant-input-search-button {\\n  width: 100%;\\n  border-top-left-radius: 0;\\n  border-bottom-left-radius: 0;\\n}\\n.ant-input-number {\\n  box-sizing: border-box;\\n  font-variant: tabular-nums;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  width: 100%;\\n  height: 32px;\\n  padding: 4px 11px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  line-height: 1.5;\\n  background-color: #fff;\\n  background-image: none;\\n  transition: all 0.3s;\\n  display: inline-block;\\n  width: 90px;\\n  margin: 0;\\n  padding: 0;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n}\\n.ant-input-number::-moz-placeholder {\\n  color: #bfbfbf;\\n  opacity: 1;\\n}\\n.ant-input-number:-ms-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-input-number::-webkit-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-input-number:hover {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.ant-input-number:focus {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-input-number-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n}\\n.ant-input-number-disabled:hover {\\n  border-color: #e6d8d8;\\n  border-right-width: 1px !important;\\n}\\ntextarea.ant-input-number {\\n  max-width: 100%;\\n  height: auto;\\n  min-height: 32px;\\n  vertical-align: bottom;\\n  transition: all 0.3s, height 0s;\\n}\\n.ant-input-number-lg {\\n  height: 40px;\\n  padding: 6px 11px;\\n  font-size: 16px;\\n}\\n.ant-input-number-sm {\\n  height: 24px;\\n  padding: 1px 7px;\\n}\\n.ant-input-number-handler {\\n  position: relative;\\n  display: block;\\n  width: 100%;\\n  height: 50%;\\n  overflow: hidden;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-weight: bold;\\n  line-height: 0;\\n  text-align: center;\\n  transition: all 0.1s linear;\\n}\\n.ant-input-number-handler:active {\\n  background: #f4f4f4;\\n}\\n.ant-input-number-handler:hover .ant-input-number-handler-up-inner,\\n.ant-input-number-handler:hover .ant-input-number-handler-down-inner {\\n  color: #23a8a8;\\n}\\n.ant-input-number-handler-up-inner,\\n.ant-input-number-handler-down-inner {\\n  display: inline-block;\\n  font-style: normal;\\n  line-height: 0;\\n  text-align: center;\\n  text-transform: none;\\n  vertical-align: -0.125em;\\n  text-rendering: optimizeLegibility;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  position: absolute;\\n  right: 4px;\\n  width: 12px;\\n  height: 12px;\\n  color: rgba(0, 0, 0, 0.45);\\n  line-height: 12px;\\n  transition: all 0.1s linear;\\n  user-select: none;\\n}\\n.ant-input-number-handler-up-inner > *,\\n.ant-input-number-handler-down-inner > * {\\n  line-height: 1;\\n}\\n.ant-input-number-handler-up-inner svg,\\n.ant-input-number-handler-down-inner svg {\\n  display: inline-block;\\n}\\n.ant-input-number-handler-up-inner::before,\\n.ant-input-number-handler-down-inner::before {\\n  display: none;\\n}\\n.ant-input-number-handler-up-inner .ant-input-number-handler-up-inner-icon,\\n.ant-input-number-handler-up-inner .ant-input-number-handler-down-inner-icon,\\n.ant-input-number-handler-down-inner .ant-input-number-handler-up-inner-icon,\\n.ant-input-number-handler-down-inner .ant-input-number-handler-down-inner-icon {\\n  display: block;\\n}\\n.ant-input-number:hover {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.ant-input-number-focused {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-input-number-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n}\\n.ant-input-number-disabled:hover {\\n  border-color: #e6d8d8;\\n  border-right-width: 1px !important;\\n}\\n.ant-input-number-disabled .ant-input-number-input {\\n  cursor: not-allowed;\\n}\\n.ant-input-number-disabled .ant-input-number-handler-wrap {\\n  display: none;\\n}\\n.ant-input-number-input {\\n  width: 100%;\\n  height: 30px;\\n  padding: 0 11px;\\n  text-align: left;\\n  background-color: transparent;\\n  border: 0;\\n  border-radius: 4px;\\n  outline: 0;\\n  transition: all 0.3s linear;\\n  -moz-appearance: textfield;\\n}\\n.ant-input-number-input::-moz-placeholder {\\n  color: #bfbfbf;\\n  opacity: 1;\\n}\\n.ant-input-number-input:-ms-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-input-number-input::-webkit-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-input-number-lg {\\n  padding: 0;\\n  font-size: 16px;\\n}\\n.ant-input-number-lg input {\\n  height: 38px;\\n}\\n.ant-input-number-sm {\\n  padding: 0;\\n}\\n.ant-input-number-sm input {\\n  height: 22px;\\n  padding: 0 7px;\\n}\\n.ant-input-number-handler-wrap {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  width: 22px;\\n  height: 100%;\\n  background: #fff;\\n  border-left: 1px solid #d9d9d9;\\n  border-radius: 0 4px 4px 0;\\n  opacity: 0;\\n  transition: opacity 0.24s linear 0.1s;\\n}\\n.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner,\\n.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner {\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 7px \\\\9;\\n  transform: scale(0.58333333) rotate(0deg);\\n  min-width: auto;\\n  margin-right: 0;\\n}\\n:root .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner,\\n:root .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner {\\n  font-size: 12px;\\n}\\n.ant-input-number-handler-wrap:hover .ant-input-number-handler {\\n  height: 40%;\\n}\\n.ant-input-number:hover .ant-input-number-handler-wrap {\\n  opacity: 1;\\n}\\n.ant-input-number-handler-up {\\n  cursor: pointer;\\n}\\n.ant-input-number-handler-up-inner {\\n  top: 50%;\\n  margin-top: -5px;\\n  text-align: center;\\n}\\n.ant-input-number-handler-up:hover {\\n  height: 60% !important;\\n}\\n.ant-input-number-handler-down {\\n  top: 0;\\n  border-top: 1px solid #d9d9d9;\\n  cursor: pointer;\\n}\\n.ant-input-number-handler-down-inner {\\n  top: 50%;\\n  margin-top: -6px;\\n  text-align: center;\\n}\\n.ant-input-number-handler-down:hover {\\n  height: 60% !important;\\n}\\n.ant-input-number-handler-up-disabled,\\n.ant-input-number-handler-down-disabled {\\n  cursor: not-allowed;\\n}\\n.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner,\\n.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-layout {\\n  display: flex;\\n  flex: auto;\\n  flex-direction: column;\\n  /* fix firefox can't set height smaller than content on flex item */\\n  min-height: 0;\\n  background: #f0f2f5;\\n}\\n.ant-layout,\\n.ant-layout * {\\n  box-sizing: border-box;\\n}\\n.ant-layout.ant-layout-has-sider {\\n  flex-direction: row;\\n}\\n.ant-layout.ant-layout-has-sider > .ant-layout,\\n.ant-layout.ant-layout-has-sider > .ant-layout-content {\\n  overflow-x: hidden;\\n}\\n.ant-layout-header,\\n.ant-layout-footer {\\n  flex: 0 0 auto;\\n}\\n.ant-layout-header {\\n  height: 64px;\\n  padding: 0 50px;\\n  line-height: 64px;\\n  background: #001529;\\n}\\n.ant-layout-footer {\\n  padding: 24px 50px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  background: #f0f2f5;\\n}\\n.ant-layout-content {\\n  flex: auto;\\n  /* fix firefox can't set height smaller than content on flex item */\\n  min-height: 0;\\n}\\n.ant-layout-sider {\\n  position: relative;\\n  /* fix firefox can't set width smaller than content on flex item */\\n  min-width: 0;\\n  background: #001529;\\n  transition: all 0.2s;\\n}\\n.ant-layout-sider-children {\\n  height: 100%;\\n  margin-top: -0.1px;\\n  padding-top: 0.1px;\\n}\\n.ant-layout-sider-has-trigger {\\n  padding-bottom: 48px;\\n}\\n.ant-layout-sider-right {\\n  order: 1;\\n}\\n.ant-layout-sider-trigger {\\n  position: fixed;\\n  bottom: 0;\\n  z-index: 1;\\n  height: 48px;\\n  color: #fff;\\n  line-height: 48px;\\n  text-align: center;\\n  background: #002140;\\n  cursor: pointer;\\n  transition: all 0.2s;\\n}\\n.ant-layout-sider-zero-width > * {\\n  overflow: hidden;\\n}\\n.ant-layout-sider-zero-width-trigger {\\n  position: absolute;\\n  top: 64px;\\n  right: -36px;\\n  width: 36px;\\n  height: 42px;\\n  color: #fff;\\n  font-size: 18px;\\n  line-height: 42px;\\n  text-align: center;\\n  background: #001529;\\n  border-radius: 0 4px 4px 0;\\n  cursor: pointer;\\n  transition: background 0.3s ease;\\n}\\n.ant-layout-sider-zero-width-trigger:hover {\\n  background: #192c3e;\\n}\\n.ant-layout-sider-zero-width-trigger-right {\\n  left: -36px;\\n}\\n.ant-layout-sider-light {\\n  background: #fff;\\n}\\n.ant-layout-sider-light .ant-layout-sider-trigger {\\n  color: rgba(0, 0, 0, 0.65);\\n  background: #fff;\\n}\\n.ant-layout-sider-light .ant-layout-sider-zero-width-trigger {\\n  color: rgba(0, 0, 0, 0.65);\\n  background: #fff;\\n}\\n.ant-list {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n}\\n.ant-list * {\\n  outline: none;\\n}\\n.ant-list-pagination {\\n  margin-top: 24px;\\n  text-align: right;\\n}\\n.ant-list-more {\\n  margin-top: 12px;\\n  text-align: center;\\n}\\n.ant-list-more button {\\n  padding-right: 32px;\\n  padding-left: 32px;\\n}\\n.ant-list-spin {\\n  min-height: 40px;\\n  text-align: center;\\n}\\n.ant-list-empty-text {\\n  padding: 16px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n  text-align: center;\\n}\\n.ant-list-item {\\n  display: flex;\\n  padding: 12px 0;\\n}\\n.ant-list-item-no-flex {\\n  display: block;\\n}\\n.ant-list-item-meta {\\n  display: flex;\\n  flex: 1;\\n  align-items: flex-start;\\n  font-size: 0;\\n}\\n.ant-list-item-meta-avatar {\\n  margin-right: 16px;\\n}\\n.ant-list-item-meta-content {\\n  flex: 1 0;\\n}\\n.ant-list-item-meta-title {\\n  margin-bottom: 4px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  line-height: 22px;\\n}\\n.ant-list-item-meta-title > a {\\n  color: rgba(0, 0, 0, 0.65);\\n  transition: all 0.3s;\\n}\\n.ant-list-item-meta-title > a:hover {\\n  color: #08979c;\\n}\\n.ant-list-item-meta-description {\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n  line-height: 22px;\\n}\\n.ant-list-item-action {\\n  flex: 0 0 auto;\\n  margin-left: 48px;\\n  padding: 0;\\n  font-size: 0;\\n  list-style: none;\\n}\\n.ant-list-item-action > li {\\n  position: relative;\\n  display: inline-block;\\n  padding: 0 8px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n  line-height: 22px;\\n  text-align: center;\\n  cursor: pointer;\\n}\\n.ant-list-item-action > li:first-child {\\n  padding-left: 0;\\n}\\n.ant-list-item-action-split {\\n  position: absolute;\\n  top: 50%;\\n  right: 0;\\n  width: 1px;\\n  height: 14px;\\n  margin-top: -7px;\\n  background-color: #e8e8e8;\\n}\\n.ant-list-header {\\n  background: transparent;\\n}\\n.ant-list-footer {\\n  background: transparent;\\n}\\n.ant-list-header,\\n.ant-list-footer {\\n  padding-top: 12px;\\n  padding-bottom: 12px;\\n}\\n.ant-list-empty {\\n  padding: 16px 0;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 12px;\\n  text-align: center;\\n}\\n.ant-list-split .ant-list-item {\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-list-split .ant-list-item:last-child {\\n  border-bottom: none;\\n}\\n.ant-list-split .ant-list-header {\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-list-loading .ant-list-spin-nested-loading {\\n  min-height: 32px;\\n}\\n.ant-list-something-after-last-item .ant-spin-container > .ant-list-item:last-child {\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-list-lg .ant-list-item {\\n  padding-top: 16px;\\n  padding-bottom: 16px;\\n}\\n.ant-list-sm .ant-list-item {\\n  padding-top: 8px;\\n  padding-bottom: 8px;\\n}\\n.ant-list-vertical .ant-list-item-main {\\n  display: block;\\n  flex: 1;\\n}\\n.ant-list-vertical .ant-list-item-extra {\\n  margin-left: 40px;\\n}\\n.ant-list-vertical .ant-list-item-meta {\\n  margin-bottom: 16px;\\n}\\n.ant-list-vertical .ant-list-item-meta-title {\\n  margin-bottom: 12px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-size: 16px;\\n  line-height: 24px;\\n}\\n.ant-list-vertical .ant-list-item-action {\\n  margin-top: 16px;\\n  margin-left: auto;\\n}\\n.ant-list-vertical .ant-list-item-action > li {\\n  padding: 0 16px;\\n}\\n.ant-list-vertical .ant-list-item-action > li:first-child {\\n  padding-left: 0;\\n}\\n.ant-list-grid .ant-list-item {\\n  display: block;\\n  max-width: 100%;\\n  margin-bottom: 16px;\\n  padding-top: 0;\\n  padding-bottom: 0;\\n  border-bottom: none;\\n}\\n.ant-list-bordered {\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n}\\n.ant-list-bordered .ant-list-header {\\n  padding-right: 24px;\\n  padding-left: 24px;\\n}\\n.ant-list-bordered .ant-list-footer {\\n  padding-right: 24px;\\n  padding-left: 24px;\\n}\\n.ant-list-bordered .ant-list-item {\\n  padding-right: 24px;\\n  padding-left: 24px;\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-list-bordered .ant-list-pagination {\\n  margin: 16px 24px;\\n}\\n.ant-list-bordered.ant-list-sm .ant-list-item {\\n  padding-right: 16px;\\n  padding-left: 16px;\\n}\\n.ant-list-bordered.ant-list-sm .ant-list-header,\\n.ant-list-bordered.ant-list-sm .ant-list-footer {\\n  padding: 8px 16px;\\n}\\n.ant-list-bordered.ant-list-lg .ant-list-header,\\n.ant-list-bordered.ant-list-lg .ant-list-footer {\\n  padding: 16px 24px;\\n}\\n@media screen and (max-width: 768px) {\\n  .ant-list-item-action {\\n    margin-left: 24px;\\n  }\\n  .ant-list-vertical .ant-list-item-extra {\\n    margin-left: 24px;\\n  }\\n}\\n@media screen and (max-width: 576px) {\\n  .ant-list-item {\\n    flex-wrap: wrap;\\n  }\\n  .ant-list-item-action {\\n    margin-left: 12px;\\n  }\\n  .ant-list-vertical .ant-list-item {\\n    flex-wrap: wrap-reverse;\\n  }\\n  .ant-list-vertical .ant-list-item-main {\\n    min-width: 220px;\\n  }\\n  .ant-list-vertical .ant-list-item-extra {\\n    margin: auto auto 16px;\\n  }\\n}\\n.ant-mention-wrapper {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  width: 100%;\\n  vertical-align: middle;\\n}\\n.ant-mention-wrapper .ant-mention-editor {\\n  position: relative;\\n  display: inline-block;\\n  width: 100%;\\n  height: 32px;\\n  padding: 4px 11px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  background-color: #fff;\\n  background-image: none;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  transition: all 0.3s;\\n  display: block;\\n  height: auto;\\n  min-height: 32px;\\n  padding: 0;\\n  line-height: 1.5;\\n}\\n.ant-mention-wrapper .ant-mention-editor::-moz-placeholder {\\n  color: #bfbfbf;\\n  opacity: 1;\\n}\\n.ant-mention-wrapper .ant-mention-editor:-ms-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-mention-wrapper .ant-mention-editor::-webkit-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-mention-wrapper .ant-mention-editor:hover {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.ant-mention-wrapper .ant-mention-editor:focus {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-mention-wrapper .ant-mention-editor-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n}\\n.ant-mention-wrapper .ant-mention-editor-disabled:hover {\\n  border-color: #e6d8d8;\\n  border-right-width: 1px !important;\\n}\\ntextarea.ant-mention-wrapper .ant-mention-editor {\\n  max-width: 100%;\\n  height: auto;\\n  min-height: 32px;\\n  vertical-align: bottom;\\n  transition: all 0.3s, height 0s;\\n}\\n.ant-mention-wrapper .ant-mention-editor-lg {\\n  height: 40px;\\n  padding: 6px 11px;\\n  font-size: 16px;\\n}\\n.ant-mention-wrapper .ant-mention-editor-sm {\\n  height: 24px;\\n  padding: 1px 7px;\\n}\\n.ant-mention-wrapper .ant-mention-editor-wrapper {\\n  height: auto;\\n  overflow-y: auto;\\n}\\n.ant-mention-wrapper.ant-mention-active:not(.disabled) .ant-mention-editor {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-mention-wrapper.disabled .ant-mention-editor {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n}\\n.ant-mention-wrapper.disabled .ant-mention-editor:hover {\\n  border-color: #e6d8d8;\\n  border-right-width: 1px !important;\\n}\\n.ant-mention-wrapper .public-DraftEditorPlaceholder-root {\\n  position: absolute;\\n  pointer-events: none;\\n}\\n.ant-mention-wrapper .public-DraftEditorPlaceholder-root .public-DraftEditorPlaceholder-inner {\\n  height: auto;\\n  padding: 5px 11px;\\n  color: #bfbfbf;\\n  white-space: pre-wrap;\\n  word-wrap: break-word;\\n  outline: none;\\n  opacity: 1;\\n}\\n.ant-mention-wrapper .DraftEditor-editorContainer .public-DraftEditor-content {\\n  height: auto;\\n  padding: 5px 11px;\\n}\\n.ant-mention-dropdown {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: absolute;\\n  top: -9999px;\\n  left: -9999px;\\n  z-index: 1050;\\n  min-width: 120px;\\n  max-height: 250px;\\n  margin-top: 1.5em;\\n  overflow-x: hidden;\\n  overflow-y: auto;\\n  background-color: #fff;\\n  border-radius: 4px;\\n  outline: none;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-mention-dropdown-placement-top {\\n  margin-top: -0.1em;\\n}\\n.ant-mention-dropdown-notfound.ant-mention-dropdown-item {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-mention-dropdown-notfound.ant-mention-dropdown-item .anticon-loading {\\n  display: block;\\n  color: #08979c;\\n  text-align: center;\\n}\\n.ant-mention-dropdown-item {\\n  position: relative;\\n  display: block;\\n  padding: 5px 12px;\\n  overflow: hidden;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-weight: normal;\\n  line-height: 22px;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n  cursor: pointer;\\n  transition: background 0.3s;\\n}\\n.ant-mention-dropdown-item:hover {\\n  background-color: #c5dbd8;\\n}\\n.ant-mention-dropdown-item.focus,\\n.ant-mention-dropdown-item-active {\\n  background-color: #c5dbd8;\\n}\\n.ant-mention-dropdown-item-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-mention-dropdown-item-disabled:hover {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #fff;\\n  cursor: not-allowed;\\n}\\n.ant-mention-dropdown-item-selected,\\n.ant-mention-dropdown-item-selected:hover {\\n  color: rgba(0, 0, 0, 0.65);\\n  font-weight: bold;\\n  background-color: #f5f5f5;\\n}\\n.ant-mention-dropdown-item-divider {\\n  height: 1px;\\n  margin: 1px 0;\\n  overflow: hidden;\\n  line-height: 0;\\n  background-color: #e8e8e8;\\n}\\n.ant-menu {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  font-feature-settings: 'tnum';\\n  margin-bottom: 0;\\n  padding-left: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 0;\\n  list-style: none;\\n  background: #fff;\\n  outline: none;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n  transition: background 0.3s, width 0.2s;\\n  zoom: 1;\\n}\\n.ant-menu::before,\\n.ant-menu::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-menu::after {\\n  clear: both;\\n}\\n.ant-menu::before,\\n.ant-menu::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-menu::after {\\n  clear: both;\\n}\\n.ant-menu ul,\\n.ant-menu ol {\\n  margin: 0;\\n  padding: 0;\\n  list-style: none;\\n}\\n.ant-menu-hidden {\\n  display: none;\\n}\\n.ant-menu-item-group-title {\\n  padding: 8px 16px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n  line-height: 1.5;\\n  transition: all 0.3s;\\n}\\n.ant-menu-submenu,\\n.ant-menu-submenu-inline {\\n  transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-menu-item:active,\\n.ant-menu-submenu-title:active {\\n  background: #c5dbd8;\\n}\\n.ant-menu-submenu .ant-menu-sub {\\n  cursor: initial;\\n  transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-menu-item > a {\\n  display: block;\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-menu-item > a:hover {\\n  color: #08979c;\\n}\\n.ant-menu-item > a:focus {\\n  text-decoration: none;\\n}\\n.ant-menu-item > a::before {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background-color: transparent;\\n  content: '';\\n}\\n.ant-menu-item-divider {\\n  height: 1px;\\n  overflow: hidden;\\n  line-height: 0;\\n  background-color: #e8e8e8;\\n}\\n.ant-menu-item:hover,\\n.ant-menu-item-active,\\n.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,\\n.ant-menu-submenu-active,\\n.ant-menu-submenu-title:hover {\\n  color: #08979c;\\n}\\n.ant-menu-horizontal .ant-menu-item,\\n.ant-menu-horizontal .ant-menu-submenu {\\n  margin-top: -1px;\\n}\\n.ant-menu-horizontal > .ant-menu-item:hover,\\n.ant-menu-horizontal > .ant-menu-item-active,\\n.ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover {\\n  background-color: transparent;\\n}\\n.ant-menu-item-selected {\\n  color: #08979c;\\n}\\n.ant-menu-item-selected > a,\\n.ant-menu-item-selected > a:hover {\\n  color: #08979c;\\n}\\n.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {\\n  background-color: #c5dbd8;\\n}\\n.ant-menu-inline,\\n.ant-menu-vertical,\\n.ant-menu-vertical-left {\\n  border-right: 1px solid #e8e8e8;\\n}\\n.ant-menu-vertical-right {\\n  border-left: 1px solid #e8e8e8;\\n}\\n.ant-menu-vertical.ant-menu-sub,\\n.ant-menu-vertical-left.ant-menu-sub,\\n.ant-menu-vertical-right.ant-menu-sub {\\n  min-width: 160px;\\n  padding: 0;\\n  border-right: 0;\\n  transform-origin: 0 0;\\n}\\n.ant-menu-vertical.ant-menu-sub .ant-menu-item,\\n.ant-menu-vertical-left.ant-menu-sub .ant-menu-item,\\n.ant-menu-vertical-right.ant-menu-sub .ant-menu-item {\\n  left: 0;\\n  margin-left: 0;\\n  border-right: 0;\\n}\\n.ant-menu-vertical.ant-menu-sub .ant-menu-item::after,\\n.ant-menu-vertical-left.ant-menu-sub .ant-menu-item::after,\\n.ant-menu-vertical-right.ant-menu-sub .ant-menu-item::after {\\n  border-right: 0;\\n}\\n.ant-menu-vertical.ant-menu-sub > .ant-menu-item,\\n.ant-menu-vertical-left.ant-menu-sub > .ant-menu-item,\\n.ant-menu-vertical-right.ant-menu-sub > .ant-menu-item,\\n.ant-menu-vertical.ant-menu-sub > .ant-menu-submenu,\\n.ant-menu-vertical-left.ant-menu-sub > .ant-menu-submenu,\\n.ant-menu-vertical-right.ant-menu-sub > .ant-menu-submenu {\\n  transform-origin: 0 0;\\n}\\n.ant-menu-horizontal.ant-menu-sub {\\n  min-width: 114px;\\n}\\n.ant-menu-item,\\n.ant-menu-submenu-title {\\n  position: relative;\\n  display: block;\\n  margin: 0;\\n  padding: 0 20px;\\n  white-space: nowrap;\\n  cursor: pointer;\\n  transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-menu-item .anticon,\\n.ant-menu-submenu-title .anticon {\\n  min-width: 14px;\\n  margin-right: 10px;\\n  font-size: 14px;\\n  transition: font-size 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-menu-item .anticon + span,\\n.ant-menu-submenu-title .anticon + span {\\n  opacity: 1;\\n  transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-menu > .ant-menu-item-divider {\\n  height: 1px;\\n  margin: 1px 0;\\n  padding: 0;\\n  overflow: hidden;\\n  line-height: 0;\\n  background-color: #e8e8e8;\\n}\\n.ant-menu-submenu-popup {\\n  position: absolute;\\n  z-index: 1050;\\n  background: #fff;\\n  border-radius: 4px;\\n}\\n.ant-menu-submenu-popup .submenu-title-wrapper {\\n  padding-right: 20px;\\n}\\n.ant-menu-submenu-popup::before {\\n  position: absolute;\\n  top: -7px;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  opacity: 0.0001;\\n  content: ' ';\\n}\\n.ant-menu-submenu > .ant-menu {\\n  background-color: #fff;\\n  border-radius: 4px;\\n}\\n.ant-menu-submenu > .ant-menu-submenu-title::after {\\n  transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow,\\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow,\\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow,\\n.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow {\\n  position: absolute;\\n  top: 50%;\\n  right: 16px;\\n  width: 10px;\\n  transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::after {\\n  position: absolute;\\n  width: 6px;\\n  height: 1.5px;\\n  background: #fff;\\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0.65));\\n  border-radius: 2px;\\n  transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n  content: '';\\n}\\n.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::before {\\n  transform: rotate(45deg) translateY(-2px);\\n}\\n.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::after {\\n  transform: rotate(-45deg) translateY(2px);\\n}\\n.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before {\\n  background: linear-gradient(to right, #08979c, #08979c);\\n}\\n.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::before {\\n  transform: rotate(-45deg) translateX(2px);\\n}\\n.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::after {\\n  transform: rotate(45deg) translateX(-2px);\\n}\\n.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow {\\n  transform: translateY(-2px);\\n}\\n.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::after {\\n  transform: rotate(-45deg) translateX(-2px);\\n}\\n.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::before {\\n  transform: rotate(45deg) translateX(2px);\\n}\\n.ant-menu-vertical .ant-menu-submenu-selected,\\n.ant-menu-vertical-left .ant-menu-submenu-selected,\\n.ant-menu-vertical-right .ant-menu-submenu-selected {\\n  color: #08979c;\\n}\\n.ant-menu-vertical .ant-menu-submenu-selected > a,\\n.ant-menu-vertical-left .ant-menu-submenu-selected > a,\\n.ant-menu-vertical-right .ant-menu-submenu-selected > a {\\n  color: #08979c;\\n}\\n.ant-menu-horizontal {\\n  line-height: 46px;\\n  white-space: nowrap;\\n  border: 0;\\n  border-bottom: 1px solid #e8e8e8;\\n  box-shadow: none;\\n}\\n.ant-menu-horizontal > .ant-menu-item,\\n.ant-menu-horizontal > .ant-menu-submenu {\\n  position: relative;\\n  top: 1px;\\n  display: inline-block;\\n  vertical-align: bottom;\\n  border-bottom: 2px solid transparent;\\n}\\n.ant-menu-horizontal > .ant-menu-item:hover,\\n.ant-menu-horizontal > .ant-menu-submenu:hover,\\n.ant-menu-horizontal > .ant-menu-item-active,\\n.ant-menu-horizontal > .ant-menu-submenu-active,\\n.ant-menu-horizontal > .ant-menu-item-open,\\n.ant-menu-horizontal > .ant-menu-submenu-open,\\n.ant-menu-horizontal > .ant-menu-item-selected,\\n.ant-menu-horizontal > .ant-menu-submenu-selected {\\n  color: #08979c;\\n  border-bottom: 2px solid #08979c;\\n}\\n.ant-menu-horizontal > .ant-menu-item > a {\\n  display: block;\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-menu-horizontal > .ant-menu-item > a:hover {\\n  color: #08979c;\\n}\\n.ant-menu-horizontal > .ant-menu-item > a::before {\\n  bottom: -2px;\\n}\\n.ant-menu-horizontal > .ant-menu-item-selected > a {\\n  color: #08979c;\\n}\\n.ant-menu-horizontal::after {\\n  display: block;\\n  clear: both;\\n  height: 0;\\n  content: '\\\\20';\\n}\\n.ant-menu-vertical .ant-menu-item,\\n.ant-menu-vertical-left .ant-menu-item,\\n.ant-menu-vertical-right .ant-menu-item,\\n.ant-menu-inline .ant-menu-item {\\n  position: relative;\\n}\\n.ant-menu-vertical .ant-menu-item::after,\\n.ant-menu-vertical-left .ant-menu-item::after,\\n.ant-menu-vertical-right .ant-menu-item::after,\\n.ant-menu-inline .ant-menu-item::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  border-right: 3px solid #08979c;\\n  transform: scaleY(0.0001);\\n  opacity: 0;\\n  transition: transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1);\\n  content: '';\\n}\\n.ant-menu-vertical .ant-menu-item,\\n.ant-menu-vertical-left .ant-menu-item,\\n.ant-menu-vertical-right .ant-menu-item,\\n.ant-menu-inline .ant-menu-item,\\n.ant-menu-vertical .ant-menu-submenu-title,\\n.ant-menu-vertical-left .ant-menu-submenu-title,\\n.ant-menu-vertical-right .ant-menu-submenu-title,\\n.ant-menu-inline .ant-menu-submenu-title {\\n  height: 40px;\\n  margin-top: 4px;\\n  margin-bottom: 4px;\\n  padding: 0 16px;\\n  overflow: hidden;\\n  font-size: 14px;\\n  line-height: 40px;\\n  text-overflow: ellipsis;\\n}\\n.ant-menu-vertical .ant-menu-submenu,\\n.ant-menu-vertical-left .ant-menu-submenu,\\n.ant-menu-vertical-right .ant-menu-submenu,\\n.ant-menu-inline .ant-menu-submenu {\\n  padding-bottom: 0.01px;\\n}\\n.ant-menu-vertical .ant-menu-item:not(:last-child),\\n.ant-menu-vertical-left .ant-menu-item:not(:last-child),\\n.ant-menu-vertical-right .ant-menu-item:not(:last-child),\\n.ant-menu-inline .ant-menu-item:not(:last-child) {\\n  margin-bottom: 8px;\\n}\\n.ant-menu-vertical > .ant-menu-item,\\n.ant-menu-vertical-left > .ant-menu-item,\\n.ant-menu-vertical-right > .ant-menu-item,\\n.ant-menu-inline > .ant-menu-item,\\n.ant-menu-vertical > .ant-menu-submenu > .ant-menu-submenu-title,\\n.ant-menu-vertical-left > .ant-menu-submenu > .ant-menu-submenu-title,\\n.ant-menu-vertical-right > .ant-menu-submenu > .ant-menu-submenu-title,\\n.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {\\n  height: 40px;\\n  line-height: 40px;\\n}\\n.ant-menu-inline {\\n  width: 100%;\\n}\\n.ant-menu-inline .ant-menu-selected::after,\\n.ant-menu-inline .ant-menu-item-selected::after {\\n  transform: scaleY(1);\\n  opacity: 1;\\n  transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-menu-inline .ant-menu-item,\\n.ant-menu-inline .ant-menu-submenu-title {\\n  width: calc(100% + 1px);\\n}\\n.ant-menu-inline .ant-menu-submenu-title {\\n  padding-right: 34px;\\n}\\n.ant-menu-inline-collapsed {\\n  width: 80px;\\n}\\n.ant-menu-inline-collapsed > .ant-menu-item,\\n.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item,\\n.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title,\\n.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {\\n  left: 0;\\n  padding: 0 32px !important;\\n  text-overflow: clip;\\n}\\n.ant-menu-inline-collapsed > .ant-menu-item .ant-menu-submenu-arrow,\\n.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .ant-menu-submenu-arrow,\\n.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow,\\n.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow {\\n  display: none;\\n}\\n.ant-menu-inline-collapsed > .ant-menu-item .anticon,\\n.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon,\\n.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon,\\n.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon {\\n  margin: 0;\\n  font-size: 16px;\\n  line-height: 40px;\\n}\\n.ant-menu-inline-collapsed > .ant-menu-item .anticon + span,\\n.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon + span,\\n.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span,\\n.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span {\\n  display: inline-block;\\n  max-width: 0;\\n  opacity: 0;\\n}\\n.ant-menu-inline-collapsed-tooltip {\\n  pointer-events: none;\\n}\\n.ant-menu-inline-collapsed-tooltip .anticon {\\n  display: none;\\n}\\n.ant-menu-inline-collapsed-tooltip a {\\n  color: rgba(255, 255, 255, 0.85);\\n}\\n.ant-menu-inline-collapsed .ant-menu-item-group-title {\\n  padding-right: 4px;\\n  padding-left: 4px;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n}\\n.ant-menu-item-group-list {\\n  margin: 0;\\n  padding: 0;\\n}\\n.ant-menu-item-group-list .ant-menu-item,\\n.ant-menu-item-group-list .ant-menu-submenu-title {\\n  padding: 0 16px 0 28px;\\n}\\n.ant-menu-root.ant-menu-vertical,\\n.ant-menu-root.ant-menu-vertical-left,\\n.ant-menu-root.ant-menu-vertical-right,\\n.ant-menu-root.ant-menu-inline {\\n  box-shadow: none;\\n}\\n.ant-menu-sub.ant-menu-inline {\\n  padding: 0;\\n  border: 0;\\n  border-radius: 0;\\n  box-shadow: none;\\n}\\n.ant-menu-sub.ant-menu-inline > .ant-menu-item,\\n.ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {\\n  height: 40px;\\n  line-height: 40px;\\n  list-style-position: inside;\\n  list-style-type: disc;\\n}\\n.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title {\\n  padding-left: 32px;\\n}\\n.ant-menu-item-disabled,\\n.ant-menu-submenu-disabled {\\n  color: rgba(0, 0, 0, 0.25) !important;\\n  background: none;\\n  border-color: transparent !important;\\n  cursor: not-allowed;\\n}\\n.ant-menu-item-disabled > a,\\n.ant-menu-submenu-disabled > a {\\n  color: rgba(0, 0, 0, 0.25) !important;\\n  pointer-events: none;\\n}\\n.ant-menu-item-disabled > .ant-menu-submenu-title,\\n.ant-menu-submenu-disabled > .ant-menu-submenu-title {\\n  color: rgba(0, 0, 0, 0.25) !important;\\n  cursor: not-allowed;\\n}\\n.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\\n.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\\n.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\\n.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after {\\n  background: rgba(0, 0, 0, 0.25) !important;\\n}\\n.ant-menu-dark,\\n.ant-menu-dark .ant-menu-sub {\\n  color: rgba(255, 255, 255, 0.65);\\n  background: #001529;\\n}\\n.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow {\\n  opacity: 0.45;\\n  transition: all 0.3s;\\n}\\n.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::before {\\n  background: #fff;\\n}\\n.ant-menu-dark.ant-menu-submenu-popup {\\n  background: transparent;\\n}\\n.ant-menu-dark .ant-menu-inline.ant-menu-sub {\\n  background: #000c17;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.45) inset;\\n}\\n.ant-menu-dark.ant-menu-horizontal {\\n  border-bottom: 0;\\n}\\n.ant-menu-dark.ant-menu-horizontal > .ant-menu-item,\\n.ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu {\\n  top: 0;\\n  margin-top: 0;\\n  border-color: #001529;\\n  border-bottom: 0;\\n}\\n.ant-menu-dark.ant-menu-horizontal > .ant-menu-item > a::before {\\n  bottom: 0;\\n}\\n.ant-menu-dark .ant-menu-item,\\n.ant-menu-dark .ant-menu-item-group-title,\\n.ant-menu-dark .ant-menu-item > a {\\n  color: rgba(255, 255, 255, 0.65);\\n}\\n.ant-menu-dark.ant-menu-inline,\\n.ant-menu-dark.ant-menu-vertical,\\n.ant-menu-dark.ant-menu-vertical-left,\\n.ant-menu-dark.ant-menu-vertical-right {\\n  border-right: 0;\\n}\\n.ant-menu-dark.ant-menu-inline .ant-menu-item,\\n.ant-menu-dark.ant-menu-vertical .ant-menu-item,\\n.ant-menu-dark.ant-menu-vertical-left .ant-menu-item,\\n.ant-menu-dark.ant-menu-vertical-right .ant-menu-item {\\n  left: 0;\\n  margin-left: 0;\\n  border-right: 0;\\n}\\n.ant-menu-dark.ant-menu-inline .ant-menu-item::after,\\n.ant-menu-dark.ant-menu-vertical .ant-menu-item::after,\\n.ant-menu-dark.ant-menu-vertical-left .ant-menu-item::after,\\n.ant-menu-dark.ant-menu-vertical-right .ant-menu-item::after {\\n  border-right: 0;\\n}\\n.ant-menu-dark.ant-menu-inline .ant-menu-item,\\n.ant-menu-dark.ant-menu-inline .ant-menu-submenu-title {\\n  width: 100%;\\n}\\n.ant-menu-dark .ant-menu-item:hover,\\n.ant-menu-dark .ant-menu-item-active,\\n.ant-menu-dark .ant-menu-submenu-active,\\n.ant-menu-dark .ant-menu-submenu-open,\\n.ant-menu-dark .ant-menu-submenu-selected,\\n.ant-menu-dark .ant-menu-submenu-title:hover {\\n  color: #fff;\\n  background-color: transparent;\\n}\\n.ant-menu-dark .ant-menu-item:hover > a,\\n.ant-menu-dark .ant-menu-item-active > a,\\n.ant-menu-dark .ant-menu-submenu-active > a,\\n.ant-menu-dark .ant-menu-submenu-open > a,\\n.ant-menu-dark .ant-menu-submenu-selected > a,\\n.ant-menu-dark .ant-menu-submenu-title:hover > a {\\n  color: #fff;\\n}\\n.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow,\\n.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow {\\n  opacity: 1;\\n}\\n.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before {\\n  background: #fff;\\n}\\n.ant-menu-dark .ant-menu-item-selected {\\n  color: #fff;\\n  border-right: 0;\\n}\\n.ant-menu-dark .ant-menu-item-selected::after {\\n  border-right: 0;\\n}\\n.ant-menu-dark .ant-menu-item-selected > a,\\n.ant-menu-dark .ant-menu-item-selected > a:hover {\\n  color: #fff;\\n}\\n.ant-menu.ant-menu-dark .ant-menu-item-selected,\\n.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected {\\n  background-color: #08979c;\\n}\\n.ant-menu-dark .ant-menu-item-disabled,\\n.ant-menu-dark .ant-menu-submenu-disabled,\\n.ant-menu-dark .ant-menu-item-disabled > a,\\n.ant-menu-dark .ant-menu-submenu-disabled > a {\\n  color: rgba(255, 255, 255, 0.35) !important;\\n  opacity: 0.8;\\n}\\n.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title,\\n.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title {\\n  color: rgba(255, 255, 255, 0.35) !important;\\n}\\n.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before,\\n.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after,\\n.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after {\\n  background: rgba(255, 255, 255, 0.35) !important;\\n}\\n.ant-message {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: fixed;\\n  top: 16px;\\n  left: 0;\\n  z-index: 1010;\\n  width: 100%;\\n  pointer-events: none;\\n}\\n.ant-message-notice {\\n  padding: 8px;\\n  text-align: center;\\n}\\n.ant-message-notice:first-child {\\n  margin-top: -8px;\\n}\\n.ant-message-notice-content {\\n  display: inline-block;\\n  padding: 10px 16px;\\n  background: #fff;\\n  border-radius: 4px;\\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\\n  pointer-events: all;\\n}\\n.ant-message-success .anticon {\\n  color: #52c41a;\\n}\\n.ant-message-error .anticon {\\n  color: #f5222d;\\n}\\n.ant-message-warning .anticon {\\n  color: #faad14;\\n}\\n.ant-message-info .anticon,\\n.ant-message-loading .anticon {\\n  color: #1890ff;\\n}\\n.ant-message .anticon {\\n  position: relative;\\n  top: 1px;\\n  margin-right: 8px;\\n  font-size: 16px;\\n}\\n.ant-message-notice.move-up-leave.move-up-leave-active {\\n  overflow: hidden;\\n  animation-name: MessageMoveOut;\\n  animation-duration: 0.3s;\\n}\\n@keyframes MessageMoveOut {\\n  0% {\\n    max-height: 150px;\\n    padding: 8px;\\n    opacity: 1;\\n  }\\n  100% {\\n    max-height: 0;\\n    padding: 0;\\n    opacity: 0;\\n  }\\n}\\n.ant-modal {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  top: 100px;\\n  width: auto;\\n  margin: 0 auto;\\n  padding-bottom: 24px;\\n}\\n.ant-modal-wrap {\\n  position: fixed;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 1000;\\n  overflow: auto;\\n  outline: 0;\\n  -webkit-overflow-scrolling: touch;\\n}\\n.ant-modal-title {\\n  margin: 0;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  font-size: 16px;\\n  line-height: 22px;\\n}\\n.ant-modal-content {\\n  position: relative;\\n  background-color: #fff;\\n  background-clip: padding-box;\\n  border: 0;\\n  border-radius: 4px;\\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\\n}\\n.ant-modal-close {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  z-index: 10;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-weight: 700;\\n  line-height: 1;\\n  text-decoration: none;\\n  background: transparent;\\n  border: 0;\\n  outline: 0;\\n  cursor: pointer;\\n  transition: color 0.3s;\\n}\\n.ant-modal-close-x {\\n  display: block;\\n  width: 56px;\\n  height: 56px;\\n  font-size: 16px;\\n  font-style: normal;\\n  line-height: 56px;\\n  text-align: center;\\n  text-transform: none;\\n  text-rendering: auto;\\n}\\n.ant-modal-close:focus,\\n.ant-modal-close:hover {\\n  color: rgba(0, 0, 0, 0.75);\\n  text-decoration: none;\\n}\\n.ant-modal-header {\\n  padding: 16px 24px;\\n  color: rgba(0, 0, 0, 0.65);\\n  background: #fff;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 4px 4px 0 0;\\n}\\n.ant-modal-body {\\n  padding: 24px;\\n  font-size: 14px;\\n  line-height: 1.5;\\n  word-wrap: break-word;\\n}\\n.ant-modal-footer {\\n  padding: 10px 16px;\\n  text-align: right;\\n  border-top: 1px solid #e8e8e8;\\n  border-radius: 0 0 4px 4px;\\n}\\n.ant-modal-footer button + button {\\n  margin-bottom: 0;\\n  margin-left: 8px;\\n}\\n.ant-modal.zoom-enter,\\n.ant-modal.zoom-appear {\\n  transform: none;\\n  opacity: 0;\\n  animation-duration: 0.3s;\\n  user-select: none;\\n}\\n.ant-modal-mask {\\n  position: fixed;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 1000;\\n  height: 100%;\\n  background-color: rgba(0, 0, 0, 0.65);\\n  filter: alpha(opacity=50);\\n}\\n.ant-modal-mask-hidden {\\n  display: none;\\n}\\n.ant-modal-open {\\n  overflow: hidden;\\n}\\n.ant-modal-centered {\\n  text-align: center;\\n}\\n.ant-modal-centered::before {\\n  display: inline-block;\\n  width: 0;\\n  height: 100%;\\n  vertical-align: middle;\\n  content: '';\\n}\\n.ant-modal-centered .ant-modal {\\n  top: 0;\\n  display: inline-block;\\n  text-align: left;\\n  vertical-align: middle;\\n}\\n@media (max-width: 767px) {\\n  .ant-modal {\\n    max-width: calc(84vw);\\n    margin: 8px auto;\\n  }\\n  .ant-modal-centered .ant-modal {\\n    flex: 1;\\n  }\\n}\\n.ant-modal-confirm .ant-modal-header {\\n  display: none;\\n}\\n.ant-modal-confirm .ant-modal-close {\\n  display: none;\\n}\\n.ant-modal-confirm .ant-modal-body {\\n  padding: 32px 32px 24px;\\n}\\n.ant-modal-confirm-body-wrapper {\\n  zoom: 1;\\n}\\n.ant-modal-confirm-body-wrapper::before,\\n.ant-modal-confirm-body-wrapper::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-modal-confirm-body-wrapper::after {\\n  clear: both;\\n}\\n.ant-modal-confirm-body-wrapper::before,\\n.ant-modal-confirm-body-wrapper::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-modal-confirm-body-wrapper::after {\\n  clear: both;\\n}\\n.ant-modal-confirm-body .ant-modal-confirm-title {\\n  display: block;\\n  overflow: hidden;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  font-size: 16px;\\n  line-height: 1.4;\\n}\\n.ant-modal-confirm-body .ant-modal-confirm-content {\\n  margin-top: 8px;\\n  margin-left: 38px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n}\\n.ant-modal-confirm-body > .anticon {\\n  float: left;\\n  margin-right: 16px;\\n  font-size: 22px;\\n}\\n.ant-modal-confirm .ant-modal-confirm-btns {\\n  float: right;\\n  margin-top: 24px;\\n}\\n.ant-modal-confirm .ant-modal-confirm-btns button + button {\\n  margin-bottom: 0;\\n  margin-left: 8px;\\n}\\n.ant-modal-confirm-error .ant-modal-confirm-body > .anticon {\\n  color: #f5222d;\\n}\\n.ant-modal-confirm-warning .ant-modal-confirm-body > .anticon,\\n.ant-modal-confirm-confirm .ant-modal-confirm-body > .anticon {\\n  color: #faad14;\\n}\\n.ant-modal-confirm-info .ant-modal-confirm-body > .anticon {\\n  color: #1890ff;\\n}\\n.ant-modal-confirm-success .ant-modal-confirm-body > .anticon {\\n  color: #52c41a;\\n}\\n.ant-notification {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: fixed;\\n  z-index: 1010;\\n  width: 384px;\\n  max-width: calc(100vw - 32px);\\n  margin-right: 24px;\\n}\\n.ant-notification-topLeft,\\n.ant-notification-bottomLeft {\\n  margin-right: 0;\\n  margin-left: 24px;\\n}\\n.ant-notification-topLeft .ant-notification-fade-enter.ant-notification-fade-enter-active,\\n.ant-notification-bottomLeft .ant-notification-fade-enter.ant-notification-fade-enter-active,\\n.ant-notification-topLeft .ant-notification-fade-appear.ant-notification-fade-appear-active,\\n.ant-notification-bottomLeft .ant-notification-fade-appear.ant-notification-fade-appear-active {\\n  animation-name: NotificationLeftFadeIn;\\n}\\n.ant-notification-close-icon {\\n  font-size: 14px;\\n  cursor: pointer;\\n}\\n.ant-notification-notice {\\n  position: relative;\\n  margin-bottom: 16px;\\n  padding: 16px 24px;\\n  overflow: hidden;\\n  line-height: 1.5;\\n  background: #fff;\\n  border-radius: 4px;\\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\\n}\\n.ant-notification-notice-message {\\n  display: inline-block;\\n  margin-bottom: 8px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-size: 16px;\\n  line-height: 24px;\\n}\\n.ant-notification-notice-message-single-line-auto-margin {\\n  display: block;\\n  width: calc(384px - 24px * 2 - 24px - 48px - 100%);\\n  max-width: 4px;\\n  background-color: transparent;\\n  pointer-events: none;\\n}\\n.ant-notification-notice-message-single-line-auto-margin::before {\\n  display: block;\\n  content: '';\\n}\\n.ant-notification-notice-description {\\n  font-size: 14px;\\n}\\n.ant-notification-notice-closable .ant-notification-notice-message {\\n  padding-right: 24px;\\n}\\n.ant-notification-notice-with-icon .ant-notification-notice-message {\\n  margin-bottom: 4px;\\n  margin-left: 48px;\\n  font-size: 16px;\\n}\\n.ant-notification-notice-with-icon .ant-notification-notice-description {\\n  margin-left: 48px;\\n  font-size: 14px;\\n}\\n.ant-notification-notice-icon {\\n  position: absolute;\\n  margin-left: 4px;\\n  font-size: 24px;\\n  line-height: 24px;\\n}\\n.ant-notification-notice-icon-success {\\n  color: #52c41a;\\n}\\n.ant-notification-notice-icon-info {\\n  color: #1890ff;\\n}\\n.ant-notification-notice-icon-warning {\\n  color: #faad14;\\n}\\n.ant-notification-notice-icon-error {\\n  color: #f5222d;\\n}\\n.ant-notification-notice-close {\\n  position: absolute;\\n  top: 16px;\\n  right: 22px;\\n  color: rgba(0, 0, 0, 0.45);\\n  outline: none;\\n}\\na.ant-notification-notice-close:focus {\\n  text-decoration: none;\\n}\\n.ant-notification-notice-close:hover {\\n  color: rgba(0, 0, 0, 0.67);\\n}\\n.ant-notification-notice-btn {\\n  float: right;\\n  margin-top: 16px;\\n}\\n.ant-notification .notification-fade-effect {\\n  animation-duration: 0.24s;\\n  animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);\\n  animation-fill-mode: both;\\n}\\n.ant-notification-fade-enter,\\n.ant-notification-fade-appear {\\n  opacity: 0;\\n  animation-duration: 0.24s;\\n  animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);\\n  animation-fill-mode: both;\\n  animation-play-state: paused;\\n}\\n.ant-notification-fade-leave {\\n  animation-duration: 0.24s;\\n  animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);\\n  animation-fill-mode: both;\\n  animation-duration: 0.2s;\\n  animation-play-state: paused;\\n}\\n.ant-notification-fade-enter.ant-notification-fade-enter-active,\\n.ant-notification-fade-appear.ant-notification-fade-appear-active {\\n  animation-name: NotificationFadeIn;\\n  animation-play-state: running;\\n}\\n.ant-notification-fade-leave.ant-notification-fade-leave-active {\\n  animation-name: NotificationFadeOut;\\n  animation-play-state: running;\\n}\\n@keyframes NotificationFadeIn {\\n  0% {\\n    left: 384px;\\n    opacity: 0;\\n  }\\n  100% {\\n    left: 0;\\n    opacity: 1;\\n  }\\n}\\n@keyframes NotificationLeftFadeIn {\\n  0% {\\n    right: 384px;\\n    opacity: 0;\\n  }\\n  100% {\\n    right: 0;\\n    opacity: 1;\\n  }\\n}\\n@keyframes NotificationFadeOut {\\n  0% {\\n    max-height: 150px;\\n    margin-bottom: 16px;\\n    padding-top: 16px 24px;\\n    padding-bottom: 16px 24px;\\n    opacity: 1;\\n  }\\n  100% {\\n    max-height: 0;\\n    margin-bottom: 0;\\n    padding-top: 0;\\n    padding-bottom: 0;\\n    opacity: 0;\\n  }\\n}\\n.ant-page-header {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  padding: 16px 32px;\\n  background: #fff;\\n}\\n.ant-page-header.ant-page-header-has-footer {\\n  padding: 20px 32px;\\n  padding-bottom: 0;\\n}\\n.ant-page-header-back-icon {\\n  display: inline-block;\\n  padding: 4px 0;\\n  font-size: 16px;\\n  line-height: 100%;\\n  cursor: pointer;\\n}\\n.ant-page-header-back-icon i:hover {\\n  color: #08979c;\\n}\\n.ant-page-header .ant-divider {\\n  height: 14px;\\n  margin: 0 12px;\\n  margin-top: 3px;\\n  vertical-align: top;\\n}\\n.ant-page-header .ant-breadcrumb {\\n  margin-bottom: 12px;\\n}\\n.ant-page-header-title-view {\\n  display: inline-block;\\n}\\n.ant-page-header-title-view-title {\\n  display: inline-block;\\n  padding-right: 12px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: bold;\\n  font-size: 16px;\\n  line-height: 1.4;\\n}\\n.ant-page-header-title-view-sub-title {\\n  display: inline-block;\\n  padding-right: 12px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n  line-height: 1.8;\\n}\\n.ant-page-header-title-view-tags {\\n  display: inline-block;\\n  vertical-align: top;\\n}\\n.ant-page-header-title-view-extra {\\n  position: absolute;\\n  top: 16px;\\n  right: 32px;\\n}\\n.ant-page-header-title-view-extra > * {\\n  margin-right: 8px;\\n}\\n.ant-page-header-title-view-extra > *:last-child {\\n  margin-right: 0;\\n}\\n.ant-page-header-content-view {\\n  padding-top: 12px;\\n}\\n.ant-page-header-footer {\\n  margin: 0 -8px;\\n  padding-top: 24px;\\n}\\n.ant-page-header-footer .ant-tabs-bar {\\n  margin-bottom: 1px;\\n  border-bottom: 0;\\n}\\n.ant-page-header-footer .ant-tabs-bar .ant-tabs-nav .ant-tabs-tab {\\n  padding: 12px 8px;\\n  padding-top: 0;\\n}\\n.ant-pagination {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n}\\n.ant-pagination ul,\\n.ant-pagination ol {\\n  margin: 0;\\n  padding: 0;\\n  list-style: none;\\n}\\n.ant-pagination::after {\\n  display: block;\\n  clear: both;\\n  height: 0;\\n  overflow: hidden;\\n  visibility: hidden;\\n  content: ' ';\\n}\\n.ant-pagination-total-text {\\n  display: inline-block;\\n  height: 32px;\\n  margin-right: 8px;\\n  line-height: 30px;\\n  vertical-align: middle;\\n}\\n.ant-pagination-item {\\n  display: inline-block;\\n  min-width: 32px;\\n  height: 32px;\\n  margin-right: 8px;\\n  font-family: Arial;\\n  line-height: 30px;\\n  text-align: center;\\n  vertical-align: middle;\\n  list-style: none;\\n  background-color: #fff;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  outline: 0;\\n  cursor: pointer;\\n  user-select: none;\\n}\\n.ant-pagination-item a {\\n  margin: 0 6px;\\n  color: rgba(0, 0, 0, 0.65);\\n  text-decoration: none;\\n  transition: none;\\n}\\n.ant-pagination-item:focus,\\n.ant-pagination-item:hover {\\n  border-color: #08979c;\\n  transition: all 0.3s;\\n}\\n.ant-pagination-item:focus a,\\n.ant-pagination-item:hover a {\\n  color: #08979c;\\n}\\n.ant-pagination-item-active {\\n  font-weight: 500;\\n  border-color: #08979c;\\n}\\n.ant-pagination-item-active a {\\n  color: #08979c;\\n}\\n.ant-pagination-item-active:focus,\\n.ant-pagination-item-active:hover {\\n  border-color: #23a8a8;\\n}\\n.ant-pagination-item-active:focus a,\\n.ant-pagination-item-active:hover a {\\n  color: #23a8a8;\\n}\\n.ant-pagination-jump-prev,\\n.ant-pagination-jump-next {\\n  outline: 0;\\n}\\n.ant-pagination-jump-prev .ant-pagination-item-container,\\n.ant-pagination-jump-next .ant-pagination-item-container {\\n  position: relative;\\n}\\n.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,\\n.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon {\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 12px \\\\9;\\n  transform: scale(1) rotate(0deg);\\n  color: #08979c;\\n  letter-spacing: -1px;\\n  opacity: 0;\\n  transition: all 0.2s;\\n}\\n:root .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,\\n:root .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon {\\n  font-size: 12px;\\n}\\n.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon-svg,\\n.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon-svg {\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n}\\n.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis,\\n.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  display: block;\\n  margin: auto;\\n  color: rgba(0, 0, 0, 0.25);\\n  letter-spacing: 2px;\\n  text-align: center;\\n  text-indent: 0.13em;\\n  opacity: 1;\\n  transition: all 0.2s;\\n}\\n.ant-pagination-jump-prev:focus .ant-pagination-item-link-icon,\\n.ant-pagination-jump-next:focus .ant-pagination-item-link-icon,\\n.ant-pagination-jump-prev:hover .ant-pagination-item-link-icon,\\n.ant-pagination-jump-next:hover .ant-pagination-item-link-icon {\\n  opacity: 1;\\n}\\n.ant-pagination-jump-prev:focus .ant-pagination-item-ellipsis,\\n.ant-pagination-jump-next:focus .ant-pagination-item-ellipsis,\\n.ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis,\\n.ant-pagination-jump-next:hover .ant-pagination-item-ellipsis {\\n  opacity: 0;\\n}\\n.ant-pagination-prev,\\n.ant-pagination-jump-prev,\\n.ant-pagination-jump-next {\\n  margin-right: 8px;\\n}\\n.ant-pagination-prev,\\n.ant-pagination-next,\\n.ant-pagination-jump-prev,\\n.ant-pagination-jump-next {\\n  display: inline-block;\\n  min-width: 32px;\\n  height: 32px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-family: Arial;\\n  line-height: 32px;\\n  text-align: center;\\n  vertical-align: middle;\\n  list-style: none;\\n  border-radius: 4px;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-pagination-prev,\\n.ant-pagination-next {\\n  outline: 0;\\n}\\n.ant-pagination-prev a,\\n.ant-pagination-next a {\\n  color: rgba(0, 0, 0, 0.65);\\n  user-select: none;\\n}\\n.ant-pagination-prev:hover a,\\n.ant-pagination-next:hover a {\\n  border-color: #23a8a8;\\n}\\n.ant-pagination-prev .ant-pagination-item-link,\\n.ant-pagination-next .ant-pagination-item-link {\\n  display: block;\\n  height: 100%;\\n  font-size: 12px;\\n  text-align: center;\\n  background-color: #fff;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  outline: none;\\n  transition: all 0.3s;\\n}\\n.ant-pagination-prev:focus .ant-pagination-item-link,\\n.ant-pagination-next:focus .ant-pagination-item-link,\\n.ant-pagination-prev:hover .ant-pagination-item-link,\\n.ant-pagination-next:hover .ant-pagination-item-link {\\n  color: #08979c;\\n  border-color: #08979c;\\n}\\n.ant-pagination-disabled,\\n.ant-pagination-disabled:hover,\\n.ant-pagination-disabled:focus {\\n  cursor: not-allowed;\\n}\\n.ant-pagination-disabled a,\\n.ant-pagination-disabled:hover a,\\n.ant-pagination-disabled:focus a,\\n.ant-pagination-disabled .ant-pagination-item-link,\\n.ant-pagination-disabled:hover .ant-pagination-item-link,\\n.ant-pagination-disabled:focus .ant-pagination-item-link {\\n  color: rgba(0, 0, 0, 0.25);\\n  border-color: #d9d9d9;\\n  cursor: not-allowed;\\n}\\n.ant-pagination-slash {\\n  margin: 0 10px 0 5px;\\n}\\n.ant-pagination-options {\\n  display: inline-block;\\n  margin-left: 16px;\\n  vertical-align: middle;\\n}\\n.ant-pagination-options-size-changer.ant-select {\\n  display: inline-block;\\n  width: auto;\\n  margin-right: 8px;\\n}\\n.ant-pagination-options-quick-jumper {\\n  display: inline-block;\\n  height: 32px;\\n  line-height: 32px;\\n  vertical-align: top;\\n}\\n.ant-pagination-options-quick-jumper input {\\n  position: relative;\\n  display: inline-block;\\n  width: 100%;\\n  height: 32px;\\n  padding: 4px 11px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  line-height: 1.5;\\n  background-color: #fff;\\n  background-image: none;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  transition: all 0.3s;\\n  width: 50px;\\n  margin: 0 8px;\\n}\\n.ant-pagination-options-quick-jumper input::-moz-placeholder {\\n  color: #bfbfbf;\\n  opacity: 1;\\n}\\n.ant-pagination-options-quick-jumper input:-ms-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-pagination-options-quick-jumper input::-webkit-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-pagination-options-quick-jumper input:hover {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.ant-pagination-options-quick-jumper input:focus {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-pagination-options-quick-jumper input-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n}\\n.ant-pagination-options-quick-jumper input-disabled:hover {\\n  border-color: #e6d8d8;\\n  border-right-width: 1px !important;\\n}\\ntextarea.ant-pagination-options-quick-jumper input {\\n  max-width: 100%;\\n  height: auto;\\n  min-height: 32px;\\n  vertical-align: bottom;\\n  transition: all 0.3s, height 0s;\\n}\\n.ant-pagination-options-quick-jumper input-lg {\\n  height: 40px;\\n  padding: 6px 11px;\\n  font-size: 16px;\\n}\\n.ant-pagination-options-quick-jumper input-sm {\\n  height: 24px;\\n  padding: 1px 7px;\\n}\\n.ant-pagination-simple .ant-pagination-prev,\\n.ant-pagination-simple .ant-pagination-next {\\n  height: 24px;\\n  line-height: 24px;\\n  vertical-align: top;\\n}\\n.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link,\\n.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link {\\n  height: 24px;\\n  border: 0;\\n}\\n.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link::after,\\n.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link::after {\\n  height: 24px;\\n  line-height: 24px;\\n}\\n.ant-pagination-simple .ant-pagination-simple-pager {\\n  display: inline-block;\\n  height: 24px;\\n  margin-right: 8px;\\n}\\n.ant-pagination-simple .ant-pagination-simple-pager input {\\n  box-sizing: border-box;\\n  height: 100%;\\n  margin-right: 8px;\\n  padding: 0 6px;\\n  text-align: center;\\n  background-color: #fff;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  outline: none;\\n  transition: border-color 0.3s;\\n}\\n.ant-pagination-simple .ant-pagination-simple-pager input:hover {\\n  border-color: #08979c;\\n}\\n.ant-pagination.mini .ant-pagination-total-text,\\n.ant-pagination.mini .ant-pagination-simple-pager {\\n  height: 24px;\\n  line-height: 24px;\\n}\\n.ant-pagination.mini .ant-pagination-item {\\n  min-width: 24px;\\n  height: 24px;\\n  margin: 0;\\n  line-height: 22px;\\n}\\n.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) {\\n  background: transparent;\\n  border-color: transparent;\\n}\\n.ant-pagination.mini .ant-pagination-prev,\\n.ant-pagination.mini .ant-pagination-next {\\n  min-width: 24px;\\n  height: 24px;\\n  margin: 0;\\n  line-height: 24px;\\n}\\n.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link,\\n.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link {\\n  background: transparent;\\n  border-color: transparent;\\n}\\n.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link::after,\\n.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link::after {\\n  height: 24px;\\n  line-height: 24px;\\n}\\n.ant-pagination.mini .ant-pagination-jump-prev,\\n.ant-pagination.mini .ant-pagination-jump-next {\\n  height: 24px;\\n  margin-right: 0;\\n  line-height: 24px;\\n}\\n.ant-pagination.mini .ant-pagination-options {\\n  margin-left: 2px;\\n}\\n.ant-pagination.mini .ant-pagination-options-quick-jumper {\\n  height: 24px;\\n  line-height: 24px;\\n}\\n.ant-pagination.mini .ant-pagination-options-quick-jumper input {\\n  height: 24px;\\n  padding: 1px 7px;\\n  width: 44px;\\n}\\n@media only screen and (max-width: 992px) {\\n  .ant-pagination-item-after-jump-prev,\\n  .ant-pagination-item-before-jump-next {\\n    display: none;\\n  }\\n}\\n@media only screen and (max-width: 576px) {\\n  .ant-pagination-options {\\n    display: none;\\n  }\\n}\\n.ant-popover {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  z-index: 1030;\\n  font-weight: normal;\\n  white-space: normal;\\n  text-align: left;\\n  cursor: auto;\\n  user-select: text;\\n}\\n.ant-popover::after {\\n  position: absolute;\\n  background: rgba(255, 255, 255, 0.01);\\n  content: '';\\n}\\n.ant-popover-hidden {\\n  display: none;\\n}\\n.ant-popover-placement-top,\\n.ant-popover-placement-topLeft,\\n.ant-popover-placement-topRight {\\n  padding-bottom: 10px;\\n}\\n.ant-popover-placement-right,\\n.ant-popover-placement-rightTop,\\n.ant-popover-placement-rightBottom {\\n  padding-left: 10px;\\n}\\n.ant-popover-placement-bottom,\\n.ant-popover-placement-bottomLeft,\\n.ant-popover-placement-bottomRight {\\n  padding-top: 10px;\\n}\\n.ant-popover-placement-left,\\n.ant-popover-placement-leftTop,\\n.ant-popover-placement-leftBottom {\\n  padding-right: 10px;\\n}\\n.ant-popover-inner {\\n  background-color: #fff;\\n  background-clip: padding-box;\\n  border-radius: 4px;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n  box-shadow: 0 0 8px rgba(0, 0, 0, 0.15) \\\\9;\\n}\\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\\n  .ant-popover {\\n    /* IE10+ */\\n  }\\n  .ant-popover-inner {\\n    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n  }\\n}\\n.ant-popover-title {\\n  min-width: 177px;\\n  min-height: 32px;\\n  margin: 0;\\n  padding: 5px 16px 4px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-popover-inner-content {\\n  padding: 12px 16px;\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-popover-message {\\n  position: relative;\\n  padding: 4px 0 12px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n}\\n.ant-popover-message > .anticon {\\n  position: absolute;\\n  top: 8px;\\n  color: #faad14;\\n  font-size: 14px;\\n}\\n.ant-popover-message-title {\\n  padding-left: 22px;\\n}\\n.ant-popover-buttons {\\n  margin-bottom: 4px;\\n  text-align: right;\\n}\\n.ant-popover-buttons button {\\n  margin-left: 8px;\\n}\\n.ant-popover-arrow {\\n  position: absolute;\\n  display: block;\\n  width: 8.48528137px;\\n  height: 8.48528137px;\\n  background: transparent;\\n  border-width: 4.24264069px;\\n  border-style: solid;\\n  transform: rotate(45deg);\\n}\\n.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow,\\n.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow,\\n.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow {\\n  bottom: 6.2px;\\n  border-top-color: transparent;\\n  border-right-color: #fff;\\n  border-bottom-color: #fff;\\n  border-left-color: transparent;\\n  box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);\\n}\\n.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow {\\n  left: 50%;\\n  transform: translateX(-50%) rotate(45deg);\\n}\\n.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow {\\n  left: 16px;\\n}\\n.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow {\\n  right: 16px;\\n}\\n.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow,\\n.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow,\\n.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow {\\n  left: 6px;\\n  border-top-color: transparent;\\n  border-right-color: transparent;\\n  border-bottom-color: #fff;\\n  border-left-color: #fff;\\n  box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);\\n}\\n.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow {\\n  top: 50%;\\n  transform: translateY(-50%) rotate(45deg);\\n}\\n.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow {\\n  top: 12px;\\n}\\n.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow {\\n  bottom: 12px;\\n}\\n.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow,\\n.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow,\\n.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow {\\n  top: 6px;\\n  border-top-color: #fff;\\n  border-right-color: transparent;\\n  border-bottom-color: transparent;\\n  border-left-color: #fff;\\n  box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06);\\n}\\n.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow {\\n  left: 50%;\\n  transform: translateX(-50%) rotate(45deg);\\n}\\n.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow {\\n  left: 16px;\\n}\\n.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow {\\n  right: 16px;\\n}\\n.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow,\\n.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow,\\n.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow {\\n  right: 6px;\\n  border-top-color: #fff;\\n  border-right-color: #fff;\\n  border-bottom-color: transparent;\\n  border-left-color: transparent;\\n  box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07);\\n}\\n.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow {\\n  top: 50%;\\n  transform: translateY(-50%) rotate(45deg);\\n}\\n.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow {\\n  top: 12px;\\n}\\n.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow {\\n  bottom: 12px;\\n}\\n.ant-progress {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  display: inline-block;\\n}\\n.ant-progress-line {\\n  position: relative;\\n  width: 100%;\\n  font-size: 14px;\\n}\\n.ant-progress-small.ant-progress-line,\\n.ant-progress-small.ant-progress-line .ant-progress-text .anticon {\\n  font-size: 12px;\\n}\\n.ant-progress-outer {\\n  display: inline-block;\\n  width: 100%;\\n  margin-right: 0;\\n  padding-right: 0;\\n}\\n.ant-progress-show-info .ant-progress-outer {\\n  margin-right: calc(-2em - 8px);\\n  padding-right: calc(2em + 8px);\\n}\\n.ant-progress-inner {\\n  position: relative;\\n  display: inline-block;\\n  width: 100%;\\n  vertical-align: middle;\\n  background-color: #f5f5f5;\\n  border-radius: 100px;\\n}\\n.ant-progress-circle-trail {\\n  stroke: #f5f5f5;\\n}\\n.ant-progress-circle-path {\\n  animation: ant-progress-appear 0.3s;\\n  stroke: #1890ff;\\n}\\n.ant-progress-success-bg,\\n.ant-progress-bg {\\n  position: relative;\\n  background-color: #1890ff;\\n  transition: all 0.4s cubic-bezier(0.08, 0.82, 0.17, 1) 0s;\\n}\\n.ant-progress-success-bg {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  background-color: #52c41a;\\n}\\n.ant-progress-text {\\n  display: inline-block;\\n  width: 2em;\\n  margin-left: 8px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 1em;\\n  line-height: 1;\\n  white-space: nowrap;\\n  text-align: left;\\n  vertical-align: middle;\\n  word-break: normal;\\n}\\n.ant-progress-text .anticon {\\n  font-size: 14px;\\n}\\n.ant-progress-status-active .ant-progress-bg::before {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: #fff;\\n  border-radius: 10px;\\n  opacity: 0;\\n  animation: ant-progress-active 2.4s cubic-bezier(0.23, 1, 0.32, 1) infinite;\\n  content: '';\\n}\\n.ant-progress-status-exception .ant-progress-bg {\\n  background-color: #f5222d;\\n}\\n.ant-progress-status-exception .ant-progress-text {\\n  color: #f5222d;\\n}\\n.ant-progress-status-exception .ant-progress-circle-path {\\n  stroke: #f5222d;\\n}\\n.ant-progress-status-success .ant-progress-bg {\\n  background-color: #52c41a;\\n}\\n.ant-progress-status-success .ant-progress-text {\\n  color: #52c41a;\\n}\\n.ant-progress-status-success .ant-progress-circle-path {\\n  stroke: #52c41a;\\n}\\n.ant-progress-circle .ant-progress-inner {\\n  position: relative;\\n  line-height: 1;\\n  background-color: transparent;\\n}\\n.ant-progress-circle .ant-progress-text {\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  width: 100%;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 1;\\n  white-space: normal;\\n  text-align: center;\\n  transform: translate(-50%, -50%);\\n}\\n.ant-progress-circle .ant-progress-text .anticon {\\n  font-size: 1.16666667em;\\n}\\n.ant-progress-circle.ant-progress-status-exception .ant-progress-text {\\n  color: #f5222d;\\n}\\n.ant-progress-circle.ant-progress-status-success .ant-progress-text {\\n  color: #52c41a;\\n}\\n@keyframes ant-progress-active {\\n  0% {\\n    width: 0;\\n    opacity: 0.1;\\n  }\\n  20% {\\n    width: 0;\\n    opacity: 0.5;\\n  }\\n  100% {\\n    width: 100%;\\n    opacity: 0;\\n  }\\n}\\n.ant-radio-group {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  display: inline-block;\\n  line-height: unset;\\n}\\n.ant-radio-wrapper {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  margin-right: 8px;\\n  white-space: nowrap;\\n  cursor: pointer;\\n}\\n.ant-radio {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  line-height: 1;\\n  white-space: nowrap;\\n  vertical-align: sub;\\n  outline: none;\\n  cursor: pointer;\\n}\\n.ant-radio-wrapper:hover .ant-radio,\\n.ant-radio:hover .ant-radio-inner,\\n.ant-radio-input:focus + .ant-radio-inner {\\n  border-color: #08979c;\\n}\\n.ant-radio-input:focus + .ant-radio-inner {\\n  box-shadow: 0 0 0 3px rgba(8, 151, 156, 0.08);\\n}\\n.ant-radio-checked::after {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  width: 100%;\\n  height: 100%;\\n  border: 1px solid #08979c;\\n  border-radius: 50%;\\n  visibility: hidden;\\n  animation: antRadioEffect 0.36s ease-in-out;\\n  animation-fill-mode: both;\\n  content: '';\\n}\\n.ant-radio:hover::after,\\n.ant-radio-wrapper:hover .ant-radio::after {\\n  visibility: visible;\\n}\\n.ant-radio-inner {\\n  position: relative;\\n  top: 0;\\n  left: 0;\\n  display: block;\\n  width: 16px;\\n  height: 16px;\\n  background-color: #fff;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: #d9d9d9;\\n  border-radius: 100px;\\n  transition: all 0.3s;\\n}\\n.ant-radio-inner::after {\\n  position: absolute;\\n  top: 3px;\\n  left: 3px;\\n  display: table;\\n  width: 8px;\\n  height: 8px;\\n  background-color: #08979c;\\n  border-top: 0;\\n  border-left: 0;\\n  border-radius: 8px;\\n  transform: scale(0);\\n  opacity: 0;\\n  transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n  content: ' ';\\n}\\n.ant-radio-input {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 1;\\n  cursor: pointer;\\n  opacity: 0;\\n}\\n.ant-radio-checked .ant-radio-inner {\\n  border-color: #08979c;\\n}\\n.ant-radio-checked .ant-radio-inner::after {\\n  transform: scale(0.875);\\n  opacity: 1;\\n  transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.ant-radio-disabled .ant-radio-inner {\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9 !important;\\n  cursor: not-allowed;\\n}\\n.ant-radio-disabled .ant-radio-inner::after {\\n  background-color: rgba(0, 0, 0, 0.2);\\n}\\n.ant-radio-disabled .ant-radio-input {\\n  cursor: not-allowed;\\n}\\n.ant-radio-disabled + span {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\nspan.ant-radio + * {\\n  padding-right: 8px;\\n  padding-left: 8px;\\n}\\n.ant-radio-button-wrapper {\\n  position: relative;\\n  display: inline-block;\\n  height: 32px;\\n  margin: 0;\\n  padding: 0 15px;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 30px;\\n  background: #fff;\\n  border: 1px solid #d9d9d9;\\n  border-top-width: 1.02px;\\n  border-left: 0;\\n  cursor: pointer;\\n  transition: color 0.3s, background 0.3s, border-color 0.3s;\\n}\\n.ant-radio-button-wrapper a {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-radio-button-wrapper > .ant-radio-button {\\n  display: block;\\n  width: 0;\\n  height: 0;\\n  margin-left: 0;\\n}\\n.ant-radio-group-large .ant-radio-button-wrapper {\\n  height: 40px;\\n  font-size: 16px;\\n  line-height: 38px;\\n}\\n.ant-radio-group-small .ant-radio-button-wrapper {\\n  height: 24px;\\n  padding: 0 7px;\\n  line-height: 22px;\\n}\\n.ant-radio-button-wrapper:not(:first-child)::before {\\n  position: absolute;\\n  top: 0;\\n  left: -1px;\\n  display: block;\\n  width: 1px;\\n  height: 100%;\\n  background-color: #d9d9d9;\\n  content: '';\\n}\\n.ant-radio-button-wrapper:first-child {\\n  border-left: 1px solid #d9d9d9;\\n  border-radius: 4px 0 0 4px;\\n}\\n.ant-radio-button-wrapper:last-child {\\n  border-radius: 0 4px 4px 0;\\n}\\n.ant-radio-button-wrapper:first-child:last-child {\\n  border-radius: 4px;\\n}\\n.ant-radio-button-wrapper:hover {\\n  position: relative;\\n  color: #08979c;\\n}\\n.ant-radio-button-wrapper:focus-within {\\n  outline: 3px solid rgba(8, 151, 156, 0.06);\\n}\\n.ant-radio-button-wrapper .ant-radio-inner,\\n.ant-radio-button-wrapper input[type='checkbox'],\\n.ant-radio-button-wrapper input[type='radio'] {\\n  width: 0;\\n  height: 0;\\n  opacity: 0;\\n  pointer-events: none;\\n}\\n.ant-radio-button-wrapper-checked {\\n  z-index: 1;\\n  color: #08979c;\\n  background: #fff;\\n  border-color: #08979c;\\n  box-shadow: -1px 0 0 0 #08979c;\\n}\\n.ant-radio-button-wrapper-checked::before {\\n  background-color: #08979c !important;\\n  opacity: 0.1;\\n}\\n.ant-radio-button-wrapper-checked:first-child {\\n  border-color: #08979c;\\n  box-shadow: none !important;\\n}\\n.ant-radio-button-wrapper-checked:hover {\\n  color: #23a8a8;\\n  border-color: #23a8a8;\\n  box-shadow: -1px 0 0 0 #23a8a8;\\n}\\n.ant-radio-button-wrapper-checked:active {\\n  color: #006d75;\\n  border-color: #006d75;\\n  box-shadow: -1px 0 0 0 #006d75;\\n}\\n.ant-radio-button-wrapper-checked:focus-within {\\n  outline: 3px solid rgba(8, 151, 156, 0.06);\\n}\\n.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {\\n  color: #fff;\\n  background: #08979c;\\n  border-color: #08979c;\\n}\\n.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {\\n  color: #fff;\\n  background: #23a8a8;\\n  border-color: #23a8a8;\\n}\\n.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {\\n  color: #fff;\\n  background: #006d75;\\n  border-color: #006d75;\\n}\\n.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {\\n  outline: 3px solid rgba(8, 151, 156, 0.06);\\n}\\n.ant-radio-button-wrapper-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n  cursor: not-allowed;\\n}\\n.ant-radio-button-wrapper-disabled:first-child,\\n.ant-radio-button-wrapper-disabled:hover {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9;\\n}\\n.ant-radio-button-wrapper-disabled:first-child {\\n  border-left-color: #d9d9d9;\\n}\\n.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked {\\n  color: #fff;\\n  background-color: #e6e6e6;\\n  border-color: #d9d9d9;\\n  box-shadow: none;\\n}\\n@keyframes antRadioEffect {\\n  0% {\\n    transform: scale(1);\\n    opacity: 0.5;\\n  }\\n  100% {\\n    transform: scale(1.6);\\n    opacity: 0;\\n  }\\n}\\n@supports (-moz-appearance: meterbar) and (background-blend-mode: difference, normal) {\\n  .ant-radio {\\n    vertical-align: text-bottom;\\n  }\\n}\\n.ant-rate {\\n  box-sizing: border-box;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  font-feature-settings: 'tnum';\\n  display: inline-block;\\n  margin: 0;\\n  padding: 0;\\n  color: #fadb14;\\n  font-size: 20px;\\n  line-height: unset;\\n  list-style: none;\\n  outline: none;\\n}\\n.ant-rate-disabled .ant-rate-star {\\n  cursor: default;\\n}\\n.ant-rate-disabled .ant-rate-star:hover {\\n  transform: scale(1);\\n}\\n.ant-rate-star {\\n  position: relative;\\n  display: inline-block;\\n  margin: 0;\\n  margin-right: 8px;\\n  padding: 0;\\n  color: inherit;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-rate-star > div:focus {\\n  outline: 0;\\n}\\n.ant-rate-star > div:hover,\\n.ant-rate-star > div:focus {\\n  transform: scale(1.1);\\n}\\n.ant-rate-star-first,\\n.ant-rate-star-second {\\n  color: #e8e8e8;\\n  transition: all 0.3s;\\n  user-select: none;\\n}\\n.ant-rate-star-first .anticon,\\n.ant-rate-star-second .anticon {\\n  vertical-align: middle;\\n}\\n.ant-rate-star-first {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  width: 50%;\\n  height: 100%;\\n  overflow: hidden;\\n  opacity: 0;\\n}\\n.ant-rate-star-half .ant-rate-star-first,\\n.ant-rate-star-half .ant-rate-star-second {\\n  opacity: 1;\\n}\\n.ant-rate-star-half .ant-rate-star-first,\\n.ant-rate-star-full .ant-rate-star-second {\\n  color: inherit;\\n}\\n.ant-rate-text {\\n  display: inline-block;\\n  margin-left: 8px;\\n  font-size: 14px;\\n}\\n.ant-select {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  outline: 0;\\n}\\n.ant-select ul,\\n.ant-select ol {\\n  margin: 0;\\n  padding: 0;\\n  list-style: none;\\n}\\n.ant-select > ul > li > a {\\n  padding: 0;\\n  background-color: #fff;\\n}\\n.ant-select-arrow {\\n  display: inline-block;\\n  font-style: normal;\\n  line-height: 0;\\n  text-align: center;\\n  text-transform: none;\\n  vertical-align: -0.125em;\\n  text-rendering: optimizeLegibility;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  position: absolute;\\n  top: 50%;\\n  right: 11px;\\n  margin-top: -6px;\\n  color: rgba(0, 0, 0, 0.25);\\n  font-size: 12px;\\n  line-height: 1;\\n  transform-origin: 50% 50%;\\n}\\n.ant-select-arrow > * {\\n  line-height: 1;\\n}\\n.ant-select-arrow svg {\\n  display: inline-block;\\n}\\n.ant-select-arrow::before {\\n  display: none;\\n}\\n.ant-select-arrow .ant-select-arrow-icon {\\n  display: block;\\n}\\n.ant-select-arrow .ant-select-arrow-icon svg {\\n  transition: transform 0.3s;\\n}\\n.ant-select-selection {\\n  display: block;\\n  box-sizing: border-box;\\n  background-color: #fff;\\n  border: 1px solid #d9d9d9;\\n  border-top-width: 1.02px;\\n  border-radius: 4px;\\n  outline: none;\\n  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n  user-select: none;\\n}\\n.ant-select-selection:hover {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.ant-select-focused .ant-select-selection,\\n.ant-select-selection:focus,\\n.ant-select-selection:active {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-select-selection__clear {\\n  position: absolute;\\n  top: 50%;\\n  right: 11px;\\n  z-index: 1;\\n  display: inline-block;\\n  width: 12px;\\n  height: 12px;\\n  margin-top: -6px;\\n  color: rgba(0, 0, 0, 0.25);\\n  font-size: 12px;\\n  font-style: normal;\\n  line-height: 12px;\\n  text-align: center;\\n  text-transform: none;\\n  background: #fff;\\n  cursor: pointer;\\n  opacity: 0;\\n  transition: color 0.3s ease, opacity 0.15s ease;\\n  text-rendering: auto;\\n}\\n.ant-select-selection__clear::before {\\n  display: block;\\n}\\n.ant-select-selection__clear:hover {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-select-selection:hover .ant-select-selection__clear {\\n  opacity: 1;\\n}\\n.ant-select-selection-selected-value {\\n  float: left;\\n  max-width: 100%;\\n  padding-right: 20px;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n}\\n.ant-select-no-arrow .ant-select-selection-selected-value {\\n  padding-right: 0;\\n}\\n.ant-select-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-select-disabled .ant-select-selection {\\n  background: #f5f5f5;\\n  cursor: not-allowed;\\n}\\n.ant-select-disabled .ant-select-selection:hover,\\n.ant-select-disabled .ant-select-selection:focus,\\n.ant-select-disabled .ant-select-selection:active {\\n  border-color: #d9d9d9;\\n  box-shadow: none;\\n}\\n.ant-select-disabled .ant-select-selection__clear {\\n  display: none;\\n  visibility: hidden;\\n  pointer-events: none;\\n}\\n.ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice {\\n  padding-right: 10px;\\n  color: rgba(0, 0, 0, 0.33);\\n  background: #f5f5f5;\\n}\\n.ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice__remove {\\n  display: none;\\n}\\n.ant-select-selection--single {\\n  position: relative;\\n  height: 32px;\\n  cursor: pointer;\\n}\\n.ant-select-selection__rendered {\\n  position: relative;\\n  display: block;\\n  margin-right: 11px;\\n  margin-left: 11px;\\n  line-height: 30px;\\n}\\n.ant-select-selection__rendered::after {\\n  display: inline-block;\\n  width: 0;\\n  visibility: hidden;\\n  pointer-events: none;\\n  content: '.';\\n}\\n.ant-select-lg {\\n  font-size: 16px;\\n}\\n.ant-select-lg .ant-select-selection--single {\\n  height: 40px;\\n}\\n.ant-select-lg .ant-select-selection__rendered {\\n  line-height: 38px;\\n}\\n.ant-select-lg .ant-select-selection--multiple {\\n  min-height: 40px;\\n}\\n.ant-select-lg .ant-select-selection--multiple .ant-select-selection__rendered li {\\n  height: 32px;\\n  line-height: 32px;\\n}\\n.ant-select-lg .ant-select-selection--multiple .ant-select-selection__clear,\\n.ant-select-lg .ant-select-selection--multiple .ant-select-arrow {\\n  top: 20px;\\n}\\n.ant-select-sm .ant-select-selection--single {\\n  height: 24px;\\n}\\n.ant-select-sm .ant-select-selection__rendered {\\n  margin: 0 7px;\\n  line-height: 22px;\\n}\\n.ant-select-sm .ant-select-selection--multiple {\\n  min-height: 24px;\\n}\\n.ant-select-sm .ant-select-selection--multiple .ant-select-selection__rendered li {\\n  height: 16px;\\n  line-height: 14px;\\n}\\n.ant-select-sm .ant-select-selection--multiple .ant-select-selection__clear,\\n.ant-select-sm .ant-select-selection--multiple .ant-select-arrow {\\n  top: 12px;\\n}\\n.ant-select-sm .ant-select-selection__clear,\\n.ant-select-sm .ant-select-arrow {\\n  right: 8px;\\n}\\n.ant-select-disabled .ant-select-selection__choice__remove {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: default;\\n}\\n.ant-select-disabled .ant-select-selection__choice__remove:hover {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-select-search__field__wrap {\\n  position: relative;\\n  display: inline-block;\\n}\\n.ant-select-selection__placeholder,\\n.ant-select-search__field__placeholder {\\n  position: absolute;\\n  top: 50%;\\n  right: 9px;\\n  left: 0;\\n  max-width: 100%;\\n  height: 20px;\\n  margin-top: -10px;\\n  overflow: hidden;\\n  color: #bfbfbf;\\n  line-height: 20px;\\n  white-space: nowrap;\\n  text-align: left;\\n  text-overflow: ellipsis;\\n}\\n.ant-select-search__field__placeholder {\\n  left: 12px;\\n}\\n.ant-select-search__field__mirror {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  white-space: pre;\\n  opacity: 0;\\n  pointer-events: none;\\n}\\n.ant-select-search--inline {\\n  position: absolute;\\n  width: 100%;\\n  height: 100%;\\n}\\n.ant-select-search--inline .ant-select-search__field__wrap {\\n  width: 100%;\\n  height: 100%;\\n}\\n.ant-select-search--inline .ant-select-search__field {\\n  width: 100%;\\n  height: 100%;\\n  font-size: 100%;\\n  line-height: 1;\\n  background: transparent;\\n  border-width: 0;\\n  border-radius: 4px;\\n  outline: 0;\\n}\\n.ant-select-search--inline > i {\\n  float: right;\\n}\\n.ant-select-selection--multiple {\\n  min-height: 32px;\\n  padding-bottom: 3px;\\n  cursor: text;\\n  zoom: 1;\\n}\\n.ant-select-selection--multiple::before,\\n.ant-select-selection--multiple::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-select-selection--multiple::after {\\n  clear: both;\\n}\\n.ant-select-selection--multiple::before,\\n.ant-select-selection--multiple::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-select-selection--multiple::after {\\n  clear: both;\\n}\\n.ant-select-selection--multiple .ant-select-search--inline {\\n  position: static;\\n  float: left;\\n  width: auto;\\n  max-width: 100%;\\n  padding: 0;\\n}\\n.ant-select-selection--multiple .ant-select-search--inline .ant-select-search__field {\\n  width: 0.75em;\\n  max-width: 100%;\\n}\\n.ant-select-selection--multiple .ant-select-selection__rendered {\\n  height: auto;\\n  margin-bottom: -3px;\\n  margin-left: 5px;\\n}\\n.ant-select-selection--multiple .ant-select-selection__placeholder {\\n  margin-left: 6px;\\n}\\n.ant-select-selection--multiple > ul > li,\\n.ant-select-selection--multiple .ant-select-selection__rendered > ul > li {\\n  height: 24px;\\n  margin-top: 3px;\\n  line-height: 22px;\\n}\\n.ant-select-selection--multiple .ant-select-selection__choice {\\n  position: relative;\\n  float: left;\\n  max-width: 99%;\\n  margin-right: 4px;\\n  padding: 0 20px 0 10px;\\n  overflow: hidden;\\n  color: rgba(0, 0, 0, 0.65);\\n  background-color: #fafafa;\\n  border: 1px solid #e8e8e8;\\n  border-radius: 2px;\\n  cursor: default;\\n  transition: padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-select-selection--multiple .ant-select-selection__choice__disabled {\\n  padding: 0 10px;\\n}\\n.ant-select-selection--multiple .ant-select-selection__choice__content {\\n  display: inline-block;\\n  max-width: 100%;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n  transition: margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-select-selection--multiple .ant-select-selection__choice__remove {\\n  font-style: normal;\\n  line-height: 0;\\n  text-align: center;\\n  text-transform: none;\\n  vertical-align: -0.125em;\\n  text-rendering: optimizeLegibility;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  position: absolute;\\n  right: 4px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-weight: bold;\\n  line-height: inherit;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n}\\n.ant-select-selection--multiple .ant-select-selection__choice__remove > * {\\n  line-height: 1;\\n}\\n.ant-select-selection--multiple .ant-select-selection__choice__remove svg {\\n  display: inline-block;\\n}\\n.ant-select-selection--multiple .ant-select-selection__choice__remove::before {\\n  display: none;\\n}\\n.ant-select-selection--multiple .ant-select-selection__choice__remove .ant-select-selection--multiple .ant-select-selection__choice__remove-icon {\\n  display: block;\\n}\\n:root .ant-select-selection--multiple .ant-select-selection__choice__remove {\\n  font-size: 12px;\\n}\\n.ant-select-selection--multiple .ant-select-selection__choice__remove:hover {\\n  color: rgba(0, 0, 0, 0.75);\\n}\\n.ant-select-selection--multiple .ant-select-selection__clear,\\n.ant-select-selection--multiple .ant-select-arrow {\\n  top: 16px;\\n}\\n.ant-select-allow-clear .ant-select-selection--single .ant-select-selection-selected-value {\\n  padding-right: 16px;\\n}\\n.ant-select-allow-clear .ant-select-selection--multiple .ant-select-selection__rendered,\\n.ant-select-show-arrow .ant-select-selection--multiple .ant-select-selection__rendered {\\n  margin-right: 20px;\\n}\\n.ant-select-open .ant-select-arrow-icon svg {\\n  transform: rotate(180deg);\\n}\\n.ant-select-open .ant-select-selection {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-select-combobox .ant-select-arrow {\\n  display: none;\\n}\\n.ant-select-combobox .ant-select-search--inline {\\n  float: none;\\n  width: 100%;\\n  height: 100%;\\n}\\n.ant-select-combobox .ant-select-search__field__wrap {\\n  width: 100%;\\n  height: 100%;\\n}\\n.ant-select-combobox .ant-select-search__field {\\n  position: relative;\\n  z-index: 1;\\n  width: 100%;\\n  height: 100%;\\n  box-shadow: none;\\n  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), height 0s;\\n}\\n.ant-select-combobox.ant-select-allow-clear .ant-select-selection:hover .ant-select-selection__rendered,\\n.ant-select-combobox.ant-select-show-arrow .ant-select-selection:hover .ant-select-selection__rendered {\\n  margin-right: 20px;\\n}\\n.ant-select-dropdown {\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: absolute;\\n  top: -9999px;\\n  left: -9999px;\\n  z-index: 1050;\\n  box-sizing: border-box;\\n  font-size: 14px;\\n  font-variant: initial;\\n  background-color: #fff;\\n  border-radius: 4px;\\n  outline: none;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-bottomLeft,\\n.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-bottomLeft {\\n  animation-name: antSlideUpIn;\\n}\\n.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-topLeft,\\n.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-topLeft {\\n  animation-name: antSlideDownIn;\\n}\\n.ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-bottomLeft {\\n  animation-name: antSlideUpOut;\\n}\\n.ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-topLeft {\\n  animation-name: antSlideDownOut;\\n}\\n.ant-select-dropdown-hidden {\\n  display: none;\\n}\\n.ant-select-dropdown-menu {\\n  max-height: 250px;\\n  margin-bottom: 0;\\n  padding-left: 0;\\n  overflow: auto;\\n  list-style: none;\\n  outline: none;\\n}\\n.ant-select-dropdown-menu-item-group-list {\\n  margin: 0;\\n  padding: 0;\\n}\\n.ant-select-dropdown-menu-item-group-list > .ant-select-dropdown-menu-item {\\n  padding-left: 20px;\\n}\\n.ant-select-dropdown-menu-item-group-title {\\n  height: 32px;\\n  padding: 0 12px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 12px;\\n  line-height: 32px;\\n}\\n.ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:first-child:not(:last-child),\\n.ant-select-dropdown-menu-item-group:not(:last-child) .ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:last-child {\\n  border-radius: 0;\\n}\\n.ant-select-dropdown-menu-item {\\n  position: relative;\\n  display: block;\\n  padding: 5px 12px;\\n  overflow: hidden;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-weight: normal;\\n  line-height: 22px;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n  cursor: pointer;\\n  transition: background 0.3s ease;\\n}\\n.ant-select-dropdown-menu-item:hover {\\n  background-color: #c5dbd8;\\n}\\n.ant-select-dropdown-menu-item:first-child {\\n  border-radius: 4px 4px 0 0;\\n}\\n.ant-select-dropdown-menu-item:last-child {\\n  border-radius: 0 0 4px 4px;\\n}\\n.ant-select-dropdown-menu-item-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-select-dropdown-menu-item-disabled:hover {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #fff;\\n  cursor: not-allowed;\\n}\\n.ant-select-dropdown-menu-item-selected,\\n.ant-select-dropdown-menu-item-selected:hover {\\n  color: rgba(0, 0, 0, 0.65);\\n  font-weight: 600;\\n  background-color: #fafafa;\\n}\\n.ant-select-dropdown-menu-item-active {\\n  background-color: #c5dbd8;\\n}\\n.ant-select-dropdown-menu-item-divider {\\n  height: 1px;\\n  margin: 1px 0;\\n  overflow: hidden;\\n  line-height: 0;\\n  background-color: #e8e8e8;\\n}\\n.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item {\\n  padding-right: 32px;\\n}\\n.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item .ant-select-selected-icon {\\n  position: absolute;\\n  top: 50%;\\n  right: 12px;\\n  color: transparent;\\n  font-weight: bold;\\n  font-size: 12px;\\n  text-shadow: 0 0.1px 0, 0.1px 0 0, 0 -0.1px 0, -0.1px 0;\\n  transform: translateY(-50%);\\n  transition: all 0.2s;\\n}\\n.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item:hover .ant-select-selected-icon {\\n  color: rgba(0, 0, 0, 0.87);\\n}\\n.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-disabled .ant-select-selected-icon {\\n  display: none;\\n}\\n.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon,\\n.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon {\\n  display: inline-block;\\n  color: #08979c;\\n}\\n.ant-select-dropdown-container-open .ant-select-dropdown,\\n.ant-select-dropdown-open .ant-select-dropdown {\\n  display: block;\\n}\\n.ant-skeleton {\\n  display: table;\\n  width: 100%;\\n}\\n.ant-skeleton-header {\\n  display: table-cell;\\n  padding-right: 16px;\\n  vertical-align: top;\\n}\\n.ant-skeleton-header .ant-skeleton-avatar {\\n  display: inline-block;\\n  vertical-align: top;\\n  background: #f2f2f2;\\n  width: 32px;\\n  height: 32px;\\n  line-height: 32px;\\n}\\n.ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle {\\n  border-radius: 50%;\\n}\\n.ant-skeleton-header .ant-skeleton-avatar-lg {\\n  width: 40px;\\n  height: 40px;\\n  line-height: 40px;\\n}\\n.ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {\\n  border-radius: 50%;\\n}\\n.ant-skeleton-header .ant-skeleton-avatar-sm {\\n  width: 24px;\\n  height: 24px;\\n  line-height: 24px;\\n}\\n.ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {\\n  border-radius: 50%;\\n}\\n.ant-skeleton-content {\\n  display: table-cell;\\n  width: 100%;\\n  vertical-align: top;\\n}\\n.ant-skeleton-content .ant-skeleton-title {\\n  width: 100%;\\n  height: 16px;\\n  margin-top: 16px;\\n  background: #f2f2f2;\\n}\\n.ant-skeleton-content .ant-skeleton-title + .ant-skeleton-paragraph {\\n  margin-top: 24px;\\n}\\n.ant-skeleton-content .ant-skeleton-paragraph > li {\\n  width: 100%;\\n  height: 16px;\\n  list-style: none;\\n  background: #f2f2f2;\\n}\\n.ant-skeleton-content .ant-skeleton-paragraph > li:last-child:not(:first-child):not(:nth-child(2)) {\\n  width: 61%;\\n}\\n.ant-skeleton-content .ant-skeleton-paragraph > li + li {\\n  margin-top: 16px;\\n}\\n.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title {\\n  margin-top: 12px;\\n}\\n.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title + .ant-skeleton-paragraph {\\n  margin-top: 28px;\\n}\\n.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title,\\n.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li {\\n  background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%);\\n  background-size: 400% 100%;\\n  animation: ant-skeleton-loading 1.4s ease infinite;\\n}\\n.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar {\\n  background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%);\\n  background-size: 400% 100%;\\n  animation: ant-skeleton-loading 1.4s ease infinite;\\n}\\n@keyframes ant-skeleton-loading {\\n  0% {\\n    background-position: 100% 50%;\\n  }\\n  100% {\\n    background-position: 0 50%;\\n  }\\n}\\n.ant-slider {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  height: 12px;\\n  margin: 14px 6px 10px;\\n  padding: 4px 0;\\n  cursor: pointer;\\n  touch-action: none;\\n}\\n.ant-slider-vertical {\\n  width: 12px;\\n  height: 100%;\\n  margin: 6px 10px;\\n  padding: 0 4px;\\n}\\n.ant-slider-vertical .ant-slider-rail {\\n  width: 4px;\\n  height: 100%;\\n}\\n.ant-slider-vertical .ant-slider-track {\\n  width: 4px;\\n}\\n.ant-slider-vertical .ant-slider-handle {\\n  margin-bottom: -7px;\\n  margin-left: -5px;\\n}\\n.ant-slider-vertical .ant-slider-mark {\\n  top: 0;\\n  left: 12px;\\n  width: 18px;\\n  height: 100%;\\n}\\n.ant-slider-vertical .ant-slider-mark-text {\\n  left: 4px;\\n  white-space: nowrap;\\n}\\n.ant-slider-vertical .ant-slider-step {\\n  width: 4px;\\n  height: 100%;\\n}\\n.ant-slider-vertical .ant-slider-dot {\\n  top: auto;\\n  left: 2px;\\n  margin-bottom: -4px;\\n}\\n.ant-slider-with-marks {\\n  margin-bottom: 28px;\\n}\\n.ant-slider-rail {\\n  position: absolute;\\n  width: 100%;\\n  height: 4px;\\n  background-color: #f5f5f5;\\n  border-radius: 2px;\\n  transition: background-color 0.3s;\\n}\\n.ant-slider-track {\\n  position: absolute;\\n  height: 4px;\\n  background-color: #67c2bc;\\n  border-radius: 4px;\\n  transition: background-color 0.3s ease;\\n}\\n.ant-slider-handle {\\n  position: absolute;\\n  width: 14px;\\n  height: 14px;\\n  margin-top: -5px;\\n  margin-left: -7px;\\n  background-color: #fff;\\n  border: solid 2px #67c2bc;\\n  border-radius: 50%;\\n  box-shadow: 0;\\n  cursor: pointer;\\n  transition: border-color 0.3s, box-shadow 0.6s, transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);\\n}\\n.ant-slider-handle:focus {\\n  border-color: #39acb0;\\n  outline: none;\\n  box-shadow: 0 0 0 5px rgba(8, 151, 156, 0.2);\\n}\\n.ant-slider-handle.ant-tooltip-open {\\n  border-color: #08979c;\\n}\\n.ant-slider:hover .ant-slider-rail {\\n  background-color: #e1e1e1;\\n}\\n.ant-slider:hover .ant-slider-track {\\n  background-color: #43b5b1;\\n}\\n.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {\\n  border-color: #43b5b1;\\n}\\n.ant-slider-mark {\\n  position: absolute;\\n  top: 14px;\\n  left: 0;\\n  width: 100%;\\n  font-size: 14px;\\n}\\n.ant-slider-mark-text {\\n  position: absolute;\\n  display: inline-block;\\n  color: rgba(0, 0, 0, 0.45);\\n  text-align: center;\\n  cursor: pointer;\\n}\\n.ant-slider-mark-text-active {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-slider-step {\\n  position: absolute;\\n  width: 100%;\\n  height: 4px;\\n  background: transparent;\\n}\\n.ant-slider-dot {\\n  position: absolute;\\n  top: -2px;\\n  width: 8px;\\n  height: 8px;\\n  margin-left: -4px;\\n  background-color: #fff;\\n  border: 2px solid #e8e8e8;\\n  border-radius: 50%;\\n  cursor: pointer;\\n}\\n.ant-slider-dot:first-child {\\n  margin-left: -4px;\\n}\\n.ant-slider-dot:last-child {\\n  margin-left: -4px;\\n}\\n.ant-slider-dot-active {\\n  border-color: #84cbce;\\n}\\n.ant-slider-disabled {\\n  cursor: not-allowed;\\n}\\n.ant-slider-disabled .ant-slider-track {\\n  background-color: rgba(0, 0, 0, 0.25) !important;\\n}\\n.ant-slider-disabled .ant-slider-handle,\\n.ant-slider-disabled .ant-slider-dot {\\n  background-color: #fff;\\n  border-color: rgba(0, 0, 0, 0.25) !important;\\n  box-shadow: none;\\n  cursor: not-allowed;\\n}\\n.ant-slider-disabled .ant-slider-mark-text,\\n.ant-slider-disabled .ant-slider-dot {\\n  cursor: not-allowed !important;\\n}\\n.ant-spin {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: absolute;\\n  display: none;\\n  color: #08979c;\\n  text-align: center;\\n  vertical-align: middle;\\n  opacity: 0;\\n  transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.ant-spin-spinning {\\n  position: static;\\n  display: inline-block;\\n  opacity: 1;\\n}\\n.ant-spin-nested-loading {\\n  position: relative;\\n}\\n.ant-spin-nested-loading > div > .ant-spin {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  z-index: 4;\\n  display: block;\\n  width: 100%;\\n  height: 100%;\\n  max-height: 400px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin .ant-spin-dot {\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  margin: -10px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin .ant-spin-text {\\n  position: absolute;\\n  top: 50%;\\n  width: 100%;\\n  padding-top: 5px;\\n  text-shadow: 0 1px 2px #fff;\\n}\\n.ant-spin-nested-loading > div > .ant-spin.ant-spin-show-text .ant-spin-dot {\\n  margin-top: -20px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-dot {\\n  margin: -7px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-text {\\n  padding-top: 2px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-sm.ant-spin-show-text .ant-spin-dot {\\n  margin-top: -17px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-dot {\\n  margin: -16px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-text {\\n  padding-top: 11px;\\n}\\n.ant-spin-nested-loading > div > .ant-spin-lg.ant-spin-show-text .ant-spin-dot {\\n  margin-top: -26px;\\n}\\n.ant-spin-container {\\n  position: relative;\\n  transition: opacity 0.3s;\\n}\\n.ant-spin-container::after {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 10;\\n  display: none \\\\9;\\n  width: 100%;\\n  height: 100%;\\n  background: #fff;\\n  opacity: 0;\\n  transition: all 0.3s;\\n  pointer-events: none;\\n  content: '';\\n}\\n.ant-spin-blur {\\n  clear: both;\\n  overflow: hidden;\\n  opacity: 0.5;\\n  user-select: none;\\n  pointer-events: none;\\n}\\n.ant-spin-blur::after {\\n  opacity: 0.4;\\n  pointer-events: auto;\\n}\\n.ant-spin-tip {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-spin-dot {\\n  position: relative;\\n  display: inline-block;\\n  font-size: 20px;\\n  width: 20px;\\n  height: 20px;\\n}\\n.ant-spin-dot i {\\n  position: absolute;\\n  display: block;\\n  width: 9px;\\n  height: 9px;\\n  background-color: #08979c;\\n  border-radius: 100%;\\n  transform: scale(0.75);\\n  transform-origin: 50% 50%;\\n  opacity: 0.3;\\n  animation: antSpinMove 1s infinite linear alternate;\\n}\\n.ant-spin-dot i:nth-child(1) {\\n  top: 0;\\n  left: 0;\\n}\\n.ant-spin-dot i:nth-child(2) {\\n  top: 0;\\n  right: 0;\\n  animation-delay: 0.4s;\\n}\\n.ant-spin-dot i:nth-child(3) {\\n  right: 0;\\n  bottom: 0;\\n  animation-delay: 0.8s;\\n}\\n.ant-spin-dot i:nth-child(4) {\\n  bottom: 0;\\n  left: 0;\\n  animation-delay: 1.2s;\\n}\\n.ant-spin-dot-spin {\\n  transform: rotate(45deg);\\n  animation: antRotate 1.2s infinite linear;\\n}\\n.ant-spin-sm .ant-spin-dot {\\n  font-size: 14px;\\n  width: 14px;\\n  height: 14px;\\n}\\n.ant-spin-sm .ant-spin-dot i {\\n  width: 6px;\\n  height: 6px;\\n}\\n.ant-spin-lg .ant-spin-dot {\\n  font-size: 32px;\\n  width: 32px;\\n  height: 32px;\\n}\\n.ant-spin-lg .ant-spin-dot i {\\n  width: 14px;\\n  height: 14px;\\n}\\n.ant-spin.ant-spin-show-text .ant-spin-text {\\n  display: block;\\n}\\n@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\\n  /* IE10+ */\\n  .ant-spin-blur {\\n    background: #fff;\\n    opacity: 0.5;\\n  }\\n}\\n@keyframes antSpinMove {\\n  to {\\n    opacity: 1;\\n  }\\n}\\n@keyframes antRotate {\\n  to {\\n    transform: rotate(405deg);\\n  }\\n}\\n.ant-statistic {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n}\\n.ant-statistic-title {\\n  margin-bottom: 4px;\\n  font-size: 14px;\\n}\\n.ant-statistic-content {\\n  font-size: 24px;\\n  font-family: Tahoma, 'Helvetica Neue', \\\"Noto Sans KR\\\", sans-serif, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Hiragino Sans GB\\\", \\\"Microsoft YaHei\\\", \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\";\\n}\\n.ant-statistic-content-value-decimal {\\n  font-size: 16px;\\n}\\n.ant-statistic-content-prefix,\\n.ant-statistic-content-suffix {\\n  display: inline-block;\\n}\\n.ant-statistic-content-prefix {\\n  margin-right: 4px;\\n}\\n.ant-statistic-content-suffix {\\n  margin-left: 4px;\\n  font-size: 16px;\\n}\\n.ant-steps {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  display: flex;\\n  width: 100%;\\n  font-size: 0;\\n}\\n.ant-steps-item {\\n  position: relative;\\n  display: inline-block;\\n  flex: 1;\\n  overflow: hidden;\\n  vertical-align: top;\\n}\\n.ant-steps-item:last-child {\\n  flex: none;\\n}\\n.ant-steps-item:last-child .ant-steps-item-tail,\\n.ant-steps-item:last-child .ant-steps-item-title::after {\\n  display: none;\\n}\\n.ant-steps-item-icon,\\n.ant-steps-item-content {\\n  display: inline-block;\\n  vertical-align: top;\\n}\\n.ant-steps-item-icon {\\n  width: 32px;\\n  height: 32px;\\n  margin-right: 8px;\\n  font-size: 16px;\\n  font-family: \\\"Noto Sans KR\\\", sans-serif, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Hiragino Sans GB\\\", \\\"Microsoft YaHei\\\", \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\";\\n  line-height: 32px;\\n  text-align: center;\\n  border: 1px solid rgba(0, 0, 0, 0.25);\\n  border-radius: 32px;\\n  transition: background-color 0.3s, border-color 0.3s;\\n}\\n.ant-steps-item-icon > .ant-steps-icon {\\n  position: relative;\\n  top: -1px;\\n  color: #08979c;\\n  line-height: 1;\\n}\\n.ant-steps-item-tail {\\n  position: absolute;\\n  top: 12px;\\n  left: 0;\\n  width: 100%;\\n  padding: 0 10px;\\n}\\n.ant-steps-item-tail::after {\\n  display: inline-block;\\n  width: 100%;\\n  height: 1px;\\n  background: #e8e8e8;\\n  border-radius: 1px;\\n  transition: background 0.3s;\\n  content: '';\\n}\\n.ant-steps-item-title {\\n  position: relative;\\n  display: inline-block;\\n  padding-right: 16px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 16px;\\n  line-height: 32px;\\n}\\n.ant-steps-item-title::after {\\n  position: absolute;\\n  top: 16px;\\n  left: 100%;\\n  display: block;\\n  width: 9999px;\\n  height: 1px;\\n  background: #e8e8e8;\\n  content: '';\\n}\\n.ant-steps-item-description {\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n}\\n.ant-steps-item-wait .ant-steps-item-icon {\\n  background-color: #fff;\\n  border-color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {\\n  background: rgba(0, 0, 0, 0.25);\\n}\\n.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-title::after {\\n  background-color: #e8e8e8;\\n}\\n.ant-steps-item-wait > .ant-steps-item-content > .ant-steps-item-description {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-steps-item-wait > .ant-steps-item-tail::after {\\n  background-color: #e8e8e8;\\n}\\n.ant-steps-item-process .ant-steps-item-icon {\\n  background-color: #fff;\\n  border-color: #08979c;\\n}\\n.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {\\n  color: #08979c;\\n}\\n.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {\\n  background: #08979c;\\n}\\n.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title {\\n  color: rgba(0, 0, 0, 0.85);\\n}\\n.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-title::after {\\n  background-color: #e8e8e8;\\n}\\n.ant-steps-item-process > .ant-steps-item-content > .ant-steps-item-description {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-steps-item-process > .ant-steps-item-tail::after {\\n  background-color: #e8e8e8;\\n}\\n.ant-steps-item-process .ant-steps-item-icon {\\n  background: #08979c;\\n}\\n.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {\\n  color: #fff;\\n}\\n.ant-steps-item-process .ant-steps-item-title {\\n  font-weight: 500;\\n}\\n.ant-steps-item-finish .ant-steps-item-icon {\\n  background-color: #fff;\\n  border-color: #08979c;\\n}\\n.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {\\n  color: #08979c;\\n}\\n.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {\\n  background: #08979c;\\n}\\n.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-title::after {\\n  background-color: #08979c;\\n}\\n.ant-steps-item-finish > .ant-steps-item-content > .ant-steps-item-description {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-steps-item-finish > .ant-steps-item-tail::after {\\n  background-color: #08979c;\\n}\\n.ant-steps-item-error .ant-steps-item-icon {\\n  background-color: #fff;\\n  border-color: #f5222d;\\n}\\n.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon {\\n  color: #f5222d;\\n}\\n.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {\\n  background: #f5222d;\\n}\\n.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title {\\n  color: #f5222d;\\n}\\n.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-title::after {\\n  background-color: #e8e8e8;\\n}\\n.ant-steps-item-error > .ant-steps-item-content > .ant-steps-item-description {\\n  color: #f5222d;\\n}\\n.ant-steps-item-error > .ant-steps-item-tail::after {\\n  background-color: #e8e8e8;\\n}\\n.ant-steps-item.ant-steps-next-error .ant-steps-item-title::after {\\n  background: #f5222d;\\n}\\n.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {\\n  margin-right: 16px;\\n  white-space: nowrap;\\n}\\n.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child {\\n  margin-right: 0;\\n}\\n.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title {\\n  padding-right: 0;\\n}\\n.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail {\\n  display: none;\\n}\\n.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description {\\n  max-width: 140px;\\n  white-space: normal;\\n}\\n.ant-steps-item-custom .ant-steps-item-icon {\\n  height: auto;\\n  background: none;\\n  border: 0;\\n}\\n.ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon {\\n  top: 0;\\n  left: 0.5px;\\n  width: 32px;\\n  height: 32px;\\n  font-size: 24px;\\n  line-height: 32px;\\n}\\n.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {\\n  color: #08979c;\\n}\\n.ant-steps:not(.ant-steps-vertical) .ant-steps-item-custom .ant-steps-item-icon {\\n  width: auto;\\n}\\n.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {\\n  margin-right: 12px;\\n}\\n.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child {\\n  margin-right: 0;\\n}\\n.ant-steps-small .ant-steps-item-icon {\\n  width: 24px;\\n  height: 24px;\\n  font-size: 12px;\\n  line-height: 24px;\\n  text-align: center;\\n  border-radius: 24px;\\n}\\n.ant-steps-small .ant-steps-item-title {\\n  padding-right: 12px;\\n  font-size: 14px;\\n  line-height: 24px;\\n}\\n.ant-steps-small .ant-steps-item-title::after {\\n  top: 12px;\\n}\\n.ant-steps-small .ant-steps-item-description {\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n}\\n.ant-steps-small .ant-steps-item-tail {\\n  top: 8px;\\n  padding: 0 8px;\\n}\\n.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon {\\n  width: inherit;\\n  height: inherit;\\n  line-height: inherit;\\n  background: none;\\n  border: 0;\\n  border-radius: 0;\\n}\\n.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon {\\n  font-size: 24px;\\n  line-height: 24px;\\n  transform: none;\\n}\\n.ant-steps-vertical {\\n  display: block;\\n}\\n.ant-steps-vertical .ant-steps-item {\\n  display: block;\\n  overflow: visible;\\n}\\n.ant-steps-vertical .ant-steps-item-icon {\\n  float: left;\\n  margin-right: 16px;\\n}\\n.ant-steps-vertical .ant-steps-item-content {\\n  display: block;\\n  min-height: 48px;\\n  overflow: hidden;\\n}\\n.ant-steps-vertical .ant-steps-item-title {\\n  line-height: 32px;\\n}\\n.ant-steps-vertical .ant-steps-item-description {\\n  padding-bottom: 12px;\\n}\\n.ant-steps-vertical > .ant-steps-item > .ant-steps-item-tail {\\n  position: absolute;\\n  top: 0;\\n  left: 16px;\\n  width: 1px;\\n  height: 100%;\\n  padding: 38px 0 6px;\\n}\\n.ant-steps-vertical > .ant-steps-item > .ant-steps-item-tail::after {\\n  width: 1px;\\n  height: 100%;\\n}\\n.ant-steps-vertical > .ant-steps-item:not(:last-child) > .ant-steps-item-tail {\\n  display: block;\\n}\\n.ant-steps-vertical > .ant-steps-item > .ant-steps-item-content > .ant-steps-item-title::after {\\n  display: none;\\n}\\n.ant-steps-vertical.ant-steps-small .ant-steps-item-tail {\\n  position: absolute;\\n  top: 0;\\n  left: 12px;\\n  padding: 30px 0 6px;\\n}\\n.ant-steps-vertical.ant-steps-small .ant-steps-item-title {\\n  line-height: 24px;\\n}\\n@media (max-width: 480px) {\\n  .ant-steps-horizontal.ant-steps-label-horizontal {\\n    display: block;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item {\\n    display: block;\\n    overflow: visible;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-icon {\\n    float: left;\\n    margin-right: 16px;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-content {\\n    display: block;\\n    min-height: 48px;\\n    overflow: hidden;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-title {\\n    line-height: 32px;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-description {\\n    padding-bottom: 12px;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-tail {\\n    position: absolute;\\n    top: 0;\\n    left: 16px;\\n    width: 1px;\\n    height: 100%;\\n    padding: 38px 0 6px;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-tail::after {\\n    width: 1px;\\n    height: 100%;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item:not(:last-child) > .ant-steps-item-tail {\\n    display: block;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-content > .ant-steps-item-title::after {\\n    display: none;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-tail {\\n    position: absolute;\\n    top: 0;\\n    left: 12px;\\n    padding: 30px 0 6px;\\n  }\\n  .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-title {\\n    line-height: 24px;\\n  }\\n}\\n.ant-steps-label-vertical .ant-steps-item {\\n  overflow: visible;\\n}\\n.ant-steps-label-vertical .ant-steps-item-tail {\\n  margin-left: 51px;\\n  padding: 3.5px 24px;\\n}\\n.ant-steps-label-vertical .ant-steps-item-content {\\n  display: block;\\n  width: 104px;\\n  margin-top: 8px;\\n  text-align: center;\\n}\\n.ant-steps-label-vertical .ant-steps-item-icon {\\n  display: inline-block;\\n  margin-left: 36px;\\n}\\n.ant-steps-label-vertical .ant-steps-item-title {\\n  padding-right: 0;\\n}\\n.ant-steps-label-vertical .ant-steps-item-title::after {\\n  display: none;\\n}\\n.ant-steps-label-vertical.ant-steps-small .ant-steps-item-icon {\\n  margin-left: 40px;\\n}\\n.ant-steps-dot .ant-steps-item-title {\\n  line-height: 1.5;\\n}\\n.ant-steps-dot .ant-steps-item-tail {\\n  top: 2px;\\n  width: 100%;\\n  margin: 0 0 0 70px;\\n  padding: 0;\\n}\\n.ant-steps-dot .ant-steps-item-tail::after {\\n  width: calc(100% - 20px);\\n  height: 3px;\\n  margin-left: 12px;\\n}\\n.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot {\\n  left: 2px;\\n}\\n.ant-steps-dot .ant-steps-item-icon {\\n  width: 8px;\\n  height: 8px;\\n  margin-left: 67px;\\n  padding-right: 0;\\n  line-height: 8px;\\n  background: transparent;\\n  border: 0;\\n}\\n.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot {\\n  position: relative;\\n  float: left;\\n  width: 100%;\\n  height: 100%;\\n  border-radius: 100px;\\n  transition: all 0.3s;\\n  /* expand hover area */\\n}\\n.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot::after {\\n  position: absolute;\\n  top: -12px;\\n  left: -26px;\\n  width: 60px;\\n  height: 32px;\\n  background: rgba(0, 0, 0, 0.001);\\n  content: '';\\n}\\n.ant-steps-dot .ant-steps-item-content {\\n  width: 140px;\\n}\\n.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon {\\n  width: 10px;\\n  height: 10px;\\n  line-height: 10px;\\n}\\n.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon-dot {\\n  top: -1px;\\n}\\n.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon {\\n  margin-top: 8px;\\n  margin-left: 0;\\n}\\n.ant-steps-vertical.ant-steps-dot .ant-steps-item-tail {\\n  top: 2px;\\n  left: -9px;\\n  margin: 0;\\n  padding: 22px 0 4px;\\n}\\n.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot {\\n  left: 0;\\n}\\n.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-icon-dot {\\n  left: -2px;\\n}\\n.ant-steps-flex-not-supported.ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item {\\n  margin-left: -16px;\\n  padding-left: 16px;\\n  background: #fff;\\n}\\n.ant-steps-flex-not-supported.ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item {\\n  margin-left: -12px;\\n  padding-left: 12px;\\n}\\n.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item:last-child {\\n  overflow: hidden;\\n}\\n.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item:last-child .ant-steps-icon-dot::after {\\n  right: -200px;\\n  width: 200px;\\n}\\n.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot::before,\\n.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot::after {\\n  position: absolute;\\n  top: 0;\\n  left: -10px;\\n  width: 10px;\\n  height: 8px;\\n  background: #fff;\\n  content: '';\\n}\\n.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot::after {\\n  right: -10px;\\n  left: auto;\\n}\\n.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {\\n  background: #ccc;\\n}\\n.ant-switch {\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  box-sizing: border-box;\\n  min-width: 44px;\\n  height: 22px;\\n  line-height: 20px;\\n  vertical-align: middle;\\n  background-color: rgba(0, 0, 0, 0.25);\\n  border: 1px solid transparent;\\n  border-radius: 100px;\\n  cursor: pointer;\\n  transition: all 0.36s;\\n  user-select: none;\\n}\\n.ant-switch-inner {\\n  display: block;\\n  margin-right: 6px;\\n  margin-left: 24px;\\n  color: #fff;\\n  font-size: 12px;\\n}\\n.ant-switch-loading-icon,\\n.ant-switch::after {\\n  position: absolute;\\n  top: 1px;\\n  left: 1px;\\n  width: 18px;\\n  height: 18px;\\n  background-color: #fff;\\n  border-radius: 18px;\\n  cursor: pointer;\\n  transition: all 0.36s cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n  content: ' ';\\n}\\n.ant-switch::after {\\n  box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2);\\n}\\n.ant-switch:active::before,\\n.ant-switch:active::after {\\n  width: 24px;\\n}\\n.ant-switch-loading-icon {\\n  z-index: 1;\\n  display: none;\\n  font-size: 12px;\\n  background: transparent;\\n}\\n.ant-switch-loading-icon svg {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n}\\n.ant-switch-loading .ant-switch-loading-icon {\\n  display: inline-block;\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon {\\n  color: #08979c;\\n}\\n.ant-switch:focus {\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-switch:focus:hover {\\n  box-shadow: none;\\n}\\n.ant-switch-small {\\n  min-width: 28px;\\n  height: 16px;\\n  line-height: 14px;\\n}\\n.ant-switch-small .ant-switch-inner {\\n  margin-right: 3px;\\n  margin-left: 18px;\\n  font-size: 12px;\\n}\\n.ant-switch-small::after {\\n  width: 12px;\\n  height: 12px;\\n}\\n.ant-switch-small:active::before,\\n.ant-switch-small:active::after {\\n  width: 16px;\\n}\\n.ant-switch-small .ant-switch-loading-icon {\\n  width: 12px;\\n  height: 12px;\\n}\\n.ant-switch-small.ant-switch-checked .ant-switch-inner {\\n  margin-right: 18px;\\n  margin-left: 3px;\\n}\\n.ant-switch-small.ant-switch-checked .ant-switch-loading-icon {\\n  left: 100%;\\n  margin-left: -13px;\\n}\\n.ant-switch-small.ant-switch-loading .ant-switch-loading-icon {\\n  font-weight: bold;\\n  transform: scale(0.66667);\\n}\\n.ant-switch-checked {\\n  background-color: #08979c;\\n}\\n.ant-switch-checked .ant-switch-inner {\\n  margin-right: 24px;\\n  margin-left: 6px;\\n}\\n.ant-switch-checked::after {\\n  left: 100%;\\n  margin-left: -1px;\\n  transform: translateX(-100%);\\n}\\n.ant-switch-checked .ant-switch-loading-icon {\\n  left: 100%;\\n  margin-left: -19px;\\n}\\n.ant-switch-loading,\\n.ant-switch-disabled {\\n  cursor: not-allowed;\\n  opacity: 0.4;\\n}\\n.ant-switch-loading *,\\n.ant-switch-disabled * {\\n  cursor: not-allowed;\\n}\\n.ant-switch-loading::before,\\n.ant-switch-disabled::before,\\n.ant-switch-loading::after,\\n.ant-switch-disabled::after {\\n  cursor: not-allowed;\\n}\\n@keyframes AntSwitchSmallLoadingCircle {\\n  0% {\\n    transform: rotate(0deg) scale(0.66667);\\n    transform-origin: 50% 50%;\\n  }\\n  100% {\\n    transform: rotate(360deg) scale(0.66667);\\n    transform-origin: 50% 50%;\\n  }\\n}\\n.ant-table-wrapper {\\n  zoom: 1;\\n}\\n.ant-table-wrapper::before,\\n.ant-table-wrapper::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-table-wrapper::after {\\n  clear: both;\\n}\\n.ant-table-wrapper::before,\\n.ant-table-wrapper::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-table-wrapper::after {\\n  clear: both;\\n}\\n.ant-table {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  clear: both;\\n}\\n.ant-table-body {\\n  transition: opacity 0.3s;\\n}\\n.ant-table-empty .ant-table-body {\\n  overflow: auto !important;\\n}\\n.ant-table table {\\n  width: 100%;\\n  text-align: left;\\n  border-radius: 4px 4px 0 0;\\n  border-collapse: collapse;\\n}\\n.ant-table-thead > tr > th {\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 500;\\n  text-align: left;\\n  background: #fafafa;\\n  border-bottom: 1px solid #e8e8e8;\\n  transition: background 0.3s ease;\\n}\\n.ant-table-thead > tr > th[colspan] {\\n  text-align: center;\\n}\\n.ant-table-thead > tr > th .anticon-filter,\\n.ant-table-thead > tr > th .ant-table-filter-icon {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  width: 28px;\\n  height: 100%;\\n  color: #bfbfbf;\\n  font-size: 12px;\\n  text-align: center;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-table-thead > tr > th .anticon-filter > svg,\\n.ant-table-thead > tr > th .ant-table-filter-icon > svg {\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  margin-top: -5px;\\n  margin-left: -6px;\\n}\\n.ant-table-thead > tr > th .ant-table-filter-selected.anticon-filter {\\n  color: #08979c;\\n}\\n.ant-table-thead > tr > th .ant-table-column-sorter {\\n  position: absolute;\\n  top: 50%;\\n  right: 6px;\\n  width: 14px;\\n  height: 17px;\\n  margin-top: -8.5px;\\n  color: #bfbfbf;\\n  text-align: center;\\n  transition: all 0.3s;\\n}\\n.ant-table-thead > tr > th .ant-table-column-sorter-up,\\n.ant-table-thead > tr > th .ant-table-column-sorter-down {\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 11px \\\\9;\\n  transform: scale(0.91666667) rotate(0deg);\\n  display: block;\\n  height: 4px;\\n  line-height: 4px;\\n  transition: all 0.3s;\\n}\\n:root .ant-table-thead > tr > th .ant-table-column-sorter-up,\\n:root .ant-table-thead > tr > th .ant-table-column-sorter-down {\\n  font-size: 12px;\\n}\\n.ant-table-thead > tr > th .ant-table-column-sorter-up.on,\\n.ant-table-thead > tr > th .ant-table-column-sorter-down.on {\\n  color: #08979c;\\n}\\n.ant-table-thead > tr > th .ant-table-column-sorter-down {\\n  margin-top: 4px;\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-actions {\\n  position: relative;\\n  background-clip: padding-box;\\n  /* stylelint-disable-next-line */\\n  -webkit-background-clip: border-box;\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .anticon-filter.ant-table-filter-open,\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .ant-table-filter-icon.ant-table-filter-open {\\n  color: rgba(0, 0, 0, 0.45);\\n  background: #e5e5e5;\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .anticon-filter:hover,\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .ant-table-filter-icon:hover {\\n  color: rgba(0, 0, 0, 0.45);\\n  background: #e5e5e5;\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .anticon-filter:active,\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .ant-table-filter-icon:active {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters {\\n  cursor: pointer;\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover {\\n  background: #f2f2f2;\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .anticon-filter,\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .ant-table-filter-icon {\\n  background: #f2f2f2;\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:active .ant-table-column-sorter-up:not(.on),\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:active .ant-table-column-sorter-down:not(.on) {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters,\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters {\\n  padding-right: 30px !important;\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters.ant-table-column-has-filters {\\n  padding-right: 54px !important;\\n}\\n.ant-table-thead > tr > th .ant-table-column-sorters > *:not(.ant-table-column-sorter) {\\n  position: relative;\\n}\\n.ant-table-thead > tr > th .ant-table-column-sorters::before {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  background: transparent;\\n  transition: all 0.3s;\\n  content: '';\\n}\\n.ant-table-thead > tr > th .ant-table-column-sorters:hover::before {\\n  background: rgba(0, 0, 0, 0.04);\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-filters .ant-table-column-sorter {\\n  right: 34px;\\n}\\n.ant-table-thead > tr > th.ant-table-column-has-sorters {\\n  user-select: none;\\n}\\n.ant-table-thead > tr:first-child > th:first-child {\\n  border-top-left-radius: 4px;\\n}\\n.ant-table-thead > tr:first-child > th:last-child {\\n  border-top-right-radius: 4px;\\n}\\n.ant-table-thead > tr:not(:last-child) > th[colspan] {\\n  border-bottom: 0;\\n}\\n.ant-table-tbody > tr > td {\\n  border-bottom: 1px solid #e8e8e8;\\n  transition: all 0.3s, border 0s;\\n}\\n.ant-table-thead > tr,\\n.ant-table-tbody > tr {\\n  transition: all 0.3s, height 0s;\\n}\\n.ant-table-thead > tr.ant-table-row-hover:not(.ant-table-expanded-row) > td,\\n.ant-table-tbody > tr.ant-table-row-hover:not(.ant-table-expanded-row) > td,\\n.ant-table-thead > tr:hover:not(.ant-table-expanded-row) > td,\\n.ant-table-tbody > tr:hover:not(.ant-table-expanded-row) > td {\\n  background: #c5dbd8;\\n}\\n.ant-table-thead > tr:hover {\\n  background: none;\\n}\\n.ant-table-footer {\\n  position: relative;\\n  padding: 16px 16px;\\n  background: #fafafa;\\n  border-top: 1px solid #e8e8e8;\\n  border-radius: 0 0 4px 4px;\\n}\\n.ant-table-footer::before {\\n  position: absolute;\\n  top: -1px;\\n  left: 0;\\n  width: 100%;\\n  height: 1px;\\n  background: #fafafa;\\n  content: '';\\n}\\n.ant-table.ant-table-bordered .ant-table-footer {\\n  border: 1px solid #e8e8e8;\\n}\\n.ant-table-title {\\n  position: relative;\\n  top: 1px;\\n  padding: 16px 0;\\n  border-radius: 4px 4px 0 0;\\n}\\n.ant-table.ant-table-bordered .ant-table-title {\\n  padding-right: 16px;\\n  padding-left: 16px;\\n  border: 1px solid #e8e8e8;\\n}\\n.ant-table-title + .ant-table-content {\\n  position: relative;\\n  overflow: hidden;\\n  border-radius: 4px 4px 0 0;\\n}\\n.ant-table-bordered .ant-table-title + .ant-table-content,\\n.ant-table-bordered .ant-table-title + .ant-table-content table,\\n.ant-table-bordered .ant-table-title + .ant-table-content .ant-table-thead > tr:first-child > th {\\n  border-radius: 0;\\n}\\n.ant-table-without-column-header .ant-table-title + .ant-table-content,\\n.ant-table-without-column-header table {\\n  border-radius: 0;\\n}\\n.ant-table-without-column-header.ant-table-bordered.ant-table-empty .ant-table-placeholder {\\n  border-top: 1px solid #e8e8e8;\\n  border-radius: 4px;\\n}\\n.ant-table-tbody > tr.ant-table-row-selected td {\\n  background: #fafafa;\\n}\\n.ant-table-thead > tr > th.ant-table-column-sort {\\n  background: #f5f5f5;\\n}\\n.ant-table-tbody > tr > td.ant-table-column-sort {\\n  background: rgba(0, 0, 0, 0.01);\\n}\\n.ant-table-thead > tr > th,\\n.ant-table-tbody > tr > td {\\n  padding: 16px 16px;\\n}\\n.ant-table-thead > tr > th.ant-table-selection-column-custom .ant-table-selection {\\n  margin-right: -15px;\\n}\\n.ant-table-thead > tr > th.ant-table-selection-column,\\n.ant-table-tbody > tr > td.ant-table-selection-column {\\n  text-align: center;\\n}\\n.ant-table-thead > tr > th.ant-table-selection-column .ant-radio-wrapper,\\n.ant-table-tbody > tr > td.ant-table-selection-column .ant-radio-wrapper {\\n  margin-right: 0;\\n}\\n.ant-table-expand-icon-th,\\n.ant-table-row-expand-icon-cell {\\n  width: 50px;\\n  min-width: 50px;\\n  text-align: center;\\n}\\n.ant-table-header {\\n  overflow: hidden;\\n  background: #fafafa;\\n}\\n.ant-table-header table {\\n  border-radius: 4px 4px 0 0;\\n}\\n.ant-table-loading {\\n  position: relative;\\n}\\n.ant-table-loading .ant-table-body {\\n  background: #fff;\\n  opacity: 0.5;\\n}\\n.ant-table-loading .ant-table-spin-holder {\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  height: 20px;\\n  margin-left: -30px;\\n  line-height: 20px;\\n}\\n.ant-table-loading .ant-table-with-pagination {\\n  margin-top: -20px;\\n}\\n.ant-table-loading .ant-table-without-pagination {\\n  margin-top: 10px;\\n}\\n.ant-table-bordered .ant-table-header > table,\\n.ant-table-bordered .ant-table-body > table,\\n.ant-table-bordered .ant-table-fixed-left table,\\n.ant-table-bordered .ant-table-fixed-right table {\\n  border: 1px solid #e8e8e8;\\n  border-right: 0;\\n  border-bottom: 0;\\n}\\n.ant-table-bordered.ant-table-empty .ant-table-placeholder {\\n  border-right: 1px solid #e8e8e8;\\n  border-left: 1px solid #e8e8e8;\\n}\\n.ant-table-bordered.ant-table-fixed-header .ant-table-header > table {\\n  border-bottom: 0;\\n}\\n.ant-table-bordered.ant-table-fixed-header .ant-table-body > table {\\n  border-top-left-radius: 0;\\n  border-top-right-radius: 0;\\n}\\n.ant-table-bordered.ant-table-fixed-header .ant-table-header + .ant-table-body > table,\\n.ant-table-bordered.ant-table-fixed-header .ant-table-body-inner > table {\\n  border-top: 0;\\n}\\n.ant-table-bordered .ant-table-thead > tr:not(:last-child) > th {\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-table-bordered .ant-table-thead > tr > th,\\n.ant-table-bordered .ant-table-tbody > tr > td {\\n  border-right: 1px solid #e8e8e8;\\n}\\n.ant-table-placeholder {\\n  position: relative;\\n  z-index: 1;\\n  padding: 16px 16px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n  text-align: center;\\n  background: #fff;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 0 0 4px 4px;\\n}\\n.ant-table-placeholder .anticon {\\n  margin-right: 4px;\\n}\\n.ant-table-pagination.ant-pagination {\\n  float: right;\\n  margin: 16px 0;\\n}\\n.ant-table-filter-dropdown {\\n  position: relative;\\n  min-width: 96px;\\n  margin-left: -8px;\\n  background: #fff;\\n  border-radius: 4px;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-table-filter-dropdown .ant-dropdown-menu {\\n  border: 0;\\n  border-radius: 4px 4px 0 0;\\n  box-shadow: none;\\n}\\n.ant-table-filter-dropdown .ant-dropdown-menu-without-submenu {\\n  max-height: 400px;\\n  overflow-x: hidden;\\n}\\n.ant-table-filter-dropdown .ant-dropdown-menu-item > label + span {\\n  padding-right: 0;\\n}\\n.ant-table-filter-dropdown .ant-dropdown-menu-sub {\\n  border-radius: 4px;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title::after {\\n  color: #08979c;\\n  font-weight: bold;\\n  text-shadow: 0 0 2px #8fcfc8;\\n}\\n.ant-table-filter-dropdown .ant-dropdown-menu-item {\\n  overflow: hidden;\\n}\\n.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-item:last-child,\\n.ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-submenu:last-child .ant-dropdown-menu-submenu-title {\\n  border-radius: 0;\\n}\\n.ant-table-filter-dropdown-btns {\\n  padding: 7px 8px;\\n  overflow: hidden;\\n  border-top: 1px solid #e8e8e8;\\n}\\n.ant-table-filter-dropdown-link {\\n  color: #08979c;\\n}\\n.ant-table-filter-dropdown-link:hover {\\n  color: #23a8a8;\\n}\\n.ant-table-filter-dropdown-link:active {\\n  color: #006d75;\\n}\\n.ant-table-filter-dropdown-link.confirm {\\n  float: left;\\n}\\n.ant-table-filter-dropdown-link.clear {\\n  float: right;\\n}\\n.ant-table-selection {\\n  white-space: nowrap;\\n}\\n.ant-table-selection-select-all-custom {\\n  margin-right: 4px !important;\\n}\\n.ant-table-selection .anticon-down {\\n  color: #bfbfbf;\\n  transition: all 0.3s;\\n}\\n.ant-table-selection-menu {\\n  min-width: 96px;\\n  margin-top: 5px;\\n  margin-left: -30px;\\n  background: #fff;\\n  border-radius: 4px;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-table-selection-menu .ant-action-down {\\n  color: #bfbfbf;\\n}\\n.ant-table-selection-down {\\n  display: inline-block;\\n  padding: 0;\\n  line-height: 1;\\n  cursor: pointer;\\n}\\n.ant-table-selection-down:hover .anticon-down {\\n  color: rgba(0, 0, 0, 0.6);\\n}\\n.ant-table-row-expand-icon {\\n  display: inline-block;\\n  width: 17px;\\n  height: 17px;\\n  line-height: 14px;\\n  text-align: center;\\n  background: #fff;\\n  border: 1px solid #e8e8e8;\\n  cursor: pointer;\\n  user-select: none;\\n}\\n.ant-table-row-expanded::after {\\n  content: '-';\\n}\\n.ant-table-row-collapsed::after {\\n  content: '+';\\n}\\n.ant-table-row-spaced {\\n  visibility: hidden;\\n}\\n.ant-table-row-spaced::after {\\n  content: '.';\\n}\\n.ant-table-row[class*='ant-table-row-level-0'] .ant-table-selection-column > span {\\n  display: inline-block;\\n}\\ntr.ant-table-expanded-row,\\ntr.ant-table-expanded-row:hover {\\n  background: #fbfbfb;\\n}\\ntr.ant-table-expanded-row td > .ant-table-wrapper {\\n  margin: -16px -16px -17px;\\n}\\n.ant-table .ant-table-row-indent + .ant-table-row-expand-icon {\\n  margin-right: 8px;\\n}\\n.ant-table-scroll {\\n  overflow: auto;\\n  overflow-x: hidden;\\n}\\n.ant-table-scroll table {\\n  width: auto;\\n  min-width: 100%;\\n}\\n.ant-table-scroll table .ant-table-fixed-columns-in-body {\\n  visibility: hidden;\\n}\\n.ant-table-body-inner {\\n  height: 100%;\\n}\\n.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {\\n  position: relative;\\n  background: #fff;\\n}\\n.ant-table-fixed-header .ant-table-body-inner {\\n  overflow: scroll;\\n}\\n.ant-table-fixed-header .ant-table-scroll .ant-table-header {\\n  margin-bottom: -20px;\\n  padding-bottom: 20px;\\n  overflow: scroll;\\n  opacity: 0.9999;\\n}\\n.ant-table-fixed-left,\\n.ant-table-fixed-right {\\n  position: absolute;\\n  top: 0;\\n  z-index: 20;\\n  overflow: hidden;\\n  border-radius: 0;\\n  transition: box-shadow 0.3s ease;\\n}\\n.ant-table-fixed-left table,\\n.ant-table-fixed-right table {\\n  width: auto;\\n  background: #fff;\\n}\\n.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-outer .ant-table-fixed,\\n.ant-table-fixed-header .ant-table-fixed-right .ant-table-body-outer .ant-table-fixed {\\n  border-radius: 0;\\n}\\n.ant-table-fixed-left {\\n  left: 0;\\n  box-shadow: 6px 0 6px -4px rgba(0, 0, 0, 0.15);\\n}\\n.ant-table-fixed-left .ant-table-header {\\n  overflow-y: hidden;\\n}\\n.ant-table-fixed-left .ant-table-body-inner {\\n  margin-right: -20px;\\n  padding-right: 20px;\\n}\\n.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-inner {\\n  padding-right: 0;\\n}\\n.ant-table-fixed-left,\\n.ant-table-fixed-left table {\\n  border-radius: 4px 0 0 0;\\n}\\n.ant-table-fixed-left .ant-table-thead > tr > th:last-child {\\n  border-top-right-radius: 0;\\n}\\n.ant-table-fixed-right {\\n  right: 0;\\n  box-shadow: -6px 0 6px -4px rgba(0, 0, 0, 0.15);\\n}\\n.ant-table-fixed-right,\\n.ant-table-fixed-right table {\\n  border-radius: 0 4px 0 0;\\n}\\n.ant-table-fixed-right .ant-table-expanded-row {\\n  color: transparent;\\n  pointer-events: none;\\n}\\n.ant-table-fixed-right .ant-table-thead > tr > th:first-child {\\n  border-top-left-radius: 0;\\n}\\n.ant-table.ant-table-scroll-position-left .ant-table-fixed-left {\\n  box-shadow: none;\\n}\\n.ant-table.ant-table-scroll-position-right .ant-table-fixed-right {\\n  box-shadow: none;\\n}\\n.ant-table-middle > .ant-table-title,\\n.ant-table-middle > .ant-table-footer {\\n  padding: 12px 8px;\\n}\\n.ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th,\\n.ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th,\\n.ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th,\\n.ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th,\\n.ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-tbody > tr > td,\\n.ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-tbody > tr > td,\\n.ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-tbody > tr > td,\\n.ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td,\\n.ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-tbody > tr > td,\\n.ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-tbody > tr > td,\\n.ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td,\\n.ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td {\\n  padding: 12px 8px;\\n}\\n.ant-table-middle tr.ant-table-expanded-row td > .ant-table-wrapper {\\n  margin: -12px -16px -13px;\\n}\\n.ant-table-small {\\n  border: 1px solid #e8e8e8;\\n  border-radius: 4px;\\n}\\n.ant-table-small > .ant-table-title,\\n.ant-table-small > .ant-table-footer {\\n  padding: 8px 8px;\\n}\\n.ant-table-small > .ant-table-title {\\n  top: 0;\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-table-small > .ant-table-content > .ant-table-body {\\n  margin: 0 8px;\\n}\\n.ant-table-small > .ant-table-content > .ant-table-header > table,\\n.ant-table-small > .ant-table-content > .ant-table-body > table,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table {\\n  border: 0;\\n}\\n.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-tbody > tr > td,\\n.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-tbody > tr > td,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-tbody > tr > td,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-tbody > tr > td,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-tbody > tr > td,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td {\\n  padding: 8px 8px;\\n}\\n.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th {\\n  background-color: transparent;\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort,\\n.ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th.ant-table-column-sort,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th.ant-table-column-sort,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th.ant-table-column-sort,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th.ant-table-column-sort {\\n  background-color: rgba(0, 0, 0, 0.01);\\n}\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table,\\n.ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table,\\n.ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table {\\n  padding: 0;\\n}\\n.ant-table-small > .ant-table-content .ant-table-header {\\n  background-color: #fff;\\n}\\n.ant-table-small > .ant-table-content .ant-table-placeholder,\\n.ant-table-small > .ant-table-content .ant-table-row:last-child td {\\n  border-bottom: 0;\\n}\\n.ant-table-small.ant-table-bordered {\\n  border-right: 0;\\n}\\n.ant-table-small.ant-table-bordered .ant-table-title {\\n  border: 0;\\n  border-right: 1px solid #e8e8e8;\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-table-small.ant-table-bordered .ant-table-content {\\n  border-right: 1px solid #e8e8e8;\\n}\\n.ant-table-small.ant-table-bordered .ant-table-footer {\\n  border: 0;\\n  border-top: 1px solid #e8e8e8;\\n  border-right: 1px solid #e8e8e8;\\n}\\n.ant-table-small.ant-table-bordered .ant-table-footer::before {\\n  display: none;\\n}\\n.ant-table-small.ant-table-bordered .ant-table-placeholder {\\n  border-right: 0;\\n  border-bottom: 0;\\n  border-left: 0;\\n}\\n.ant-table-small.ant-table-bordered .ant-table-thead > tr > th:last-child,\\n.ant-table-small.ant-table-bordered .ant-table-tbody > tr > td:last-child {\\n  border-right: none;\\n}\\n.ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-thead > tr > th:last-child,\\n.ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-tbody > tr > td:last-child {\\n  border-right: 1px solid #e8e8e8;\\n}\\n.ant-table-small.ant-table-bordered .ant-table-fixed-right {\\n  border-right: 1px solid #e8e8e8;\\n  border-left: 1px solid #e8e8e8;\\n}\\n.ant-table-small tr.ant-table-expanded-row td > .ant-table-wrapper {\\n  margin: -8px -16px -9px;\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-nav-container {\\n  height: 40px;\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-ink-bar {\\n  visibility: hidden;\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab {\\n  margin: 0;\\n  margin-right: 2px;\\n  padding: 0 16px;\\n  line-height: 38px;\\n  background: #fafafa;\\n  border: 1px solid #e8e8e8;\\n  border-bottom: 0;\\n  border-radius: 4px 4px 0 0;\\n  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active {\\n  padding-bottom: 1px;\\n  color: #08979c;\\n  background: #fff;\\n  border-color: #e8e8e8;\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-inactive {\\n  padding: 0;\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-nav-wrap {\\n  margin-bottom: 0;\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab .ant-tabs-close-x {\\n  width: 16px;\\n  height: 16px;\\n  height: 14px;\\n  margin-right: -5px;\\n  margin-left: 3px;\\n  overflow: hidden;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 12px;\\n  vertical-align: middle;\\n  transition: all 0.3s;\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab .ant-tabs-close-x:hover {\\n  color: rgba(0, 0, 0, 0.85);\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-content > .ant-tabs-tabpane,\\n.ant-tabs.ant-tabs-editable-card .ant-tabs-card-content > .ant-tabs-tabpane {\\n  transition: none !important;\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-content > .ant-tabs-tabpane-inactive,\\n.ant-tabs.ant-tabs-editable-card .ant-tabs-card-content > .ant-tabs-tabpane-inactive {\\n  overflow: hidden;\\n}\\n.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab:hover .anticon-close {\\n  opacity: 1;\\n}\\n.ant-tabs-extra-content {\\n  line-height: 40px;\\n}\\n.ant-tabs-extra-content .ant-tabs-new-tab {\\n  position: relative;\\n  width: 20px;\\n  height: 20px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 12px;\\n  line-height: 20px;\\n  text-align: center;\\n  border: 1px solid #e8e8e8;\\n  border-radius: 2px;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-tabs-extra-content .ant-tabs-new-tab:hover {\\n  color: #08979c;\\n  border-color: #08979c;\\n}\\n.ant-tabs-extra-content .ant-tabs-new-tab svg {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n}\\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-nav-container,\\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-nav-container {\\n  height: auto;\\n}\\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab,\\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab {\\n  margin-bottom: 8px;\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab-active,\\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab-active {\\n  padding-bottom: 4px;\\n}\\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab:last-child,\\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab:last-child {\\n  margin-bottom: 8px;\\n}\\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-new-tab,\\n.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-new-tab {\\n  width: 90%;\\n}\\n.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-nav-wrap {\\n  margin-right: 0;\\n}\\n.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab {\\n  margin-right: 1px;\\n  border-right: 0;\\n  border-radius: 4px 0 0 4px;\\n}\\n.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab-active {\\n  margin-right: -1px;\\n  padding-right: 18px;\\n}\\n.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-nav-wrap {\\n  margin-left: 0;\\n}\\n.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab {\\n  margin-left: 1px;\\n  border-left: 0;\\n  border-radius: 0 4px 4px 0;\\n}\\n.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab-active {\\n  margin-left: -1px;\\n  padding-left: 18px;\\n}\\n.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab {\\n  border-top: 0;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 0 0 4px 4px;\\n}\\n.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active {\\n  padding-top: 1px;\\n  padding-bottom: 0;\\n  color: #08979c;\\n}\\n.ant-tabs {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  overflow: hidden;\\n  zoom: 1;\\n}\\n.ant-tabs::before,\\n.ant-tabs::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-tabs::after {\\n  clear: both;\\n}\\n.ant-tabs::before,\\n.ant-tabs::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-tabs::after {\\n  clear: both;\\n}\\n.ant-tabs-ink-bar {\\n  position: absolute;\\n  bottom: 1px;\\n  left: 0;\\n  z-index: 1;\\n  box-sizing: border-box;\\n  height: 2px;\\n  background-color: #08979c;\\n  transform-origin: 0 0;\\n}\\n.ant-tabs-bar {\\n  margin: 0 0 16px 0;\\n  border-bottom: 1px solid #e8e8e8;\\n  outline: none;\\n  transition: padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-tabs-nav-container {\\n  position: relative;\\n  box-sizing: border-box;\\n  margin-bottom: -1px;\\n  overflow: hidden;\\n  font-size: 14px;\\n  line-height: 1.5;\\n  white-space: nowrap;\\n  transition: padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n  zoom: 1;\\n}\\n.ant-tabs-nav-container::before,\\n.ant-tabs-nav-container::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-tabs-nav-container::after {\\n  clear: both;\\n}\\n.ant-tabs-nav-container::before,\\n.ant-tabs-nav-container::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-tabs-nav-container::after {\\n  clear: both;\\n}\\n.ant-tabs-nav-container-scrolling {\\n  padding-right: 32px;\\n  padding-left: 32px;\\n}\\n.ant-tabs-bottom .ant-tabs-bottom-bar {\\n  margin-top: 16px;\\n  margin-bottom: 0;\\n  border-top: 1px solid #e8e8e8;\\n  border-bottom: none;\\n}\\n.ant-tabs-bottom .ant-tabs-bottom-bar .ant-tabs-ink-bar {\\n  top: 1px;\\n  bottom: auto;\\n}\\n.ant-tabs-bottom .ant-tabs-bottom-bar .ant-tabs-nav-container {\\n  margin-top: -1px;\\n  margin-bottom: 0;\\n}\\n.ant-tabs-tab-prev,\\n.ant-tabs-tab-next {\\n  position: absolute;\\n  z-index: 2;\\n  width: 0;\\n  height: 100%;\\n  color: rgba(0, 0, 0, 0.45);\\n  text-align: center;\\n  background-color: transparent;\\n  border: 0;\\n  cursor: pointer;\\n  opacity: 0;\\n  transition: width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n  user-select: none;\\n  pointer-events: none;\\n}\\n.ant-tabs-tab-prev.ant-tabs-tab-arrow-show,\\n.ant-tabs-tab-next.ant-tabs-tab-arrow-show {\\n  width: 32px;\\n  height: 100%;\\n  opacity: 1;\\n  pointer-events: auto;\\n}\\n.ant-tabs-tab-prev:hover,\\n.ant-tabs-tab-next:hover {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-tabs-tab-prev-icon,\\n.ant-tabs-tab-next-icon {\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  font-weight: bold;\\n  font-style: normal;\\n  font-variant: normal;\\n  line-height: inherit;\\n  text-align: center;\\n  text-transform: none;\\n  transform: translate(-50%, -50%);\\n}\\n.ant-tabs-tab-prev-icon-target,\\n.ant-tabs-tab-next-icon-target {\\n  display: block;\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n}\\n:root .ant-tabs-tab-prev-icon-target,\\n:root .ant-tabs-tab-next-icon-target {\\n  font-size: 12px;\\n}\\n.ant-tabs-tab-btn-disabled {\\n  cursor: not-allowed;\\n}\\n.ant-tabs-tab-btn-disabled,\\n.ant-tabs-tab-btn-disabled:hover {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-tabs-tab-next {\\n  right: 2px;\\n}\\n.ant-tabs-tab-prev {\\n  left: 0;\\n}\\n:root .ant-tabs-tab-prev {\\n  filter: none;\\n}\\n.ant-tabs-nav-wrap {\\n  margin-bottom: -1px;\\n  overflow: hidden;\\n}\\n.ant-tabs-nav-scroll {\\n  overflow: hidden;\\n  white-space: nowrap;\\n}\\n.ant-tabs-nav {\\n  position: relative;\\n  display: inline-block;\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding-left: 0;\\n  list-style: none;\\n  transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-tabs-nav::before,\\n.ant-tabs-nav::after {\\n  display: table;\\n  content: ' ';\\n}\\n.ant-tabs-nav::after {\\n  clear: both;\\n}\\n.ant-tabs-nav .ant-tabs-tab {\\n  position: relative;\\n  display: inline-block;\\n  box-sizing: border-box;\\n  height: 100%;\\n  margin: 0 32px 0 0;\\n  padding: 12px 16px;\\n  text-decoration: none;\\n  cursor: pointer;\\n  transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-tabs-nav .ant-tabs-tab:last-child {\\n  margin-right: 0;\\n}\\n.ant-tabs-nav .ant-tabs-tab:hover {\\n  color: #23a8a8;\\n}\\n.ant-tabs-nav .ant-tabs-tab:active {\\n  color: #006d75;\\n}\\n.ant-tabs-nav .ant-tabs-tab .anticon {\\n  margin-right: 8px;\\n}\\n.ant-tabs-nav .ant-tabs-tab-disabled,\\n.ant-tabs-nav .ant-tabs-tab-disabled:hover {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-tabs-nav .ant-tabs-tab-active {\\n  color: #08979c;\\n  font-weight: 500;\\n}\\n.ant-tabs .ant-tabs-large-bar .ant-tabs-nav-container {\\n  font-size: 16px;\\n}\\n.ant-tabs .ant-tabs-large-bar .ant-tabs-tab {\\n  padding: 16px;\\n}\\n.ant-tabs .ant-tabs-small-bar .ant-tabs-nav-container {\\n  font-size: 14px;\\n}\\n.ant-tabs .ant-tabs-small-bar .ant-tabs-tab {\\n  padding: 8px 16px;\\n}\\n.ant-tabs .ant-tabs-top-content,\\n.ant-tabs .ant-tabs-bottom-content {\\n  width: 100%;\\n}\\n.ant-tabs .ant-tabs-top-content > .ant-tabs-tabpane,\\n.ant-tabs .ant-tabs-bottom-content > .ant-tabs-tabpane {\\n  flex-shrink: 0;\\n  width: 100%;\\n  opacity: 1;\\n  transition: opacity 0.45s;\\n}\\n.ant-tabs .ant-tabs-top-content > .ant-tabs-tabpane-inactive,\\n.ant-tabs .ant-tabs-bottom-content > .ant-tabs-tabpane-inactive {\\n  height: 0;\\n  padding: 0 !important;\\n  opacity: 0;\\n  pointer-events: none;\\n}\\n.ant-tabs .ant-tabs-top-content > .ant-tabs-tabpane-inactive input,\\n.ant-tabs .ant-tabs-bottom-content > .ant-tabs-tabpane-inactive input {\\n  visibility: hidden;\\n}\\n.ant-tabs .ant-tabs-top-content.ant-tabs-content-animated,\\n.ant-tabs .ant-tabs-bottom-content.ant-tabs-content-animated {\\n  display: flex;\\n  flex-direction: row;\\n  transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n  will-change: margin-left;\\n}\\n.ant-tabs .ant-tabs-left-bar,\\n.ant-tabs .ant-tabs-right-bar {\\n  height: 100%;\\n  border-bottom: 0;\\n}\\n.ant-tabs .ant-tabs-left-bar-tab-prev,\\n.ant-tabs .ant-tabs-right-bar-tab-prev,\\n.ant-tabs .ant-tabs-left-bar-tab-next,\\n.ant-tabs .ant-tabs-right-bar-tab-next {\\n  width: 32px;\\n  height: 0;\\n  transition: height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-tabs .ant-tabs-left-bar-tab-prev.ant-tabs-tab-arrow-show,\\n.ant-tabs .ant-tabs-right-bar-tab-prev.ant-tabs-tab-arrow-show,\\n.ant-tabs .ant-tabs-left-bar-tab-next.ant-tabs-tab-arrow-show,\\n.ant-tabs .ant-tabs-right-bar-tab-next.ant-tabs-tab-arrow-show {\\n  width: 100%;\\n  height: 32px;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-tab,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-tab {\\n  display: block;\\n  float: none;\\n  margin: 0 0 16px 0;\\n  padding: 8px 24px;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-tab:last-child,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-tab:last-child {\\n  margin-bottom: 0;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-extra-content,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-extra-content {\\n  text-align: center;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-scroll,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-scroll {\\n  width: auto;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container,\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {\\n  height: 100%;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container {\\n  margin-bottom: 0;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container.ant-tabs-nav-container-scrolling,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container.ant-tabs-nav-container-scrolling {\\n  padding: 32px 0;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {\\n  margin-bottom: 0;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-nav,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-nav {\\n  width: 100%;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-ink-bar,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-ink-bar {\\n  top: 0;\\n  bottom: auto;\\n  left: auto;\\n  width: 2px;\\n  height: auto;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-tab-next,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-tab-next {\\n  bottom: 0;\\n  width: 100%;\\n  height: 32px;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-tab-prev,\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-tab-prev {\\n  top: 0;\\n  width: 100%;\\n  height: 32px;\\n}\\n.ant-tabs .ant-tabs-left-content,\\n.ant-tabs .ant-tabs-right-content {\\n  width: auto;\\n  margin-top: 0 !important;\\n  overflow: hidden;\\n}\\n.ant-tabs .ant-tabs-left-bar {\\n  float: left;\\n  margin-right: -1px;\\n  margin-bottom: 0;\\n  border-right: 1px solid #e8e8e8;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-tab {\\n  text-align: right;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container {\\n  margin-right: -1px;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap {\\n  margin-right: -1px;\\n}\\n.ant-tabs .ant-tabs-left-bar .ant-tabs-ink-bar {\\n  right: 1px;\\n}\\n.ant-tabs .ant-tabs-left-content {\\n  padding-left: 24px;\\n  border-left: 1px solid #e8e8e8;\\n}\\n.ant-tabs .ant-tabs-right-bar {\\n  float: right;\\n  margin-bottom: 0;\\n  margin-left: -1px;\\n  border-left: 1px solid #e8e8e8;\\n}\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container {\\n  margin-left: -1px;\\n}\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {\\n  margin-left: -1px;\\n}\\n.ant-tabs .ant-tabs-right-bar .ant-tabs-ink-bar {\\n  left: 1px;\\n}\\n.ant-tabs .ant-tabs-right-content {\\n  padding-right: 24px;\\n  border-right: 1px solid #e8e8e8;\\n}\\n.ant-tabs-top .ant-tabs-ink-bar-animated,\\n.ant-tabs-bottom .ant-tabs-ink-bar-animated {\\n  transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.ant-tabs-left .ant-tabs-ink-bar-animated,\\n.ant-tabs-right .ant-tabs-ink-bar-animated {\\n  transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), height 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n}\\n.no-flex > .ant-tabs-content > .ant-tabs-content-animated,\\n.ant-tabs-no-animation > .ant-tabs-content > .ant-tabs-content-animated {\\n  margin-left: 0 !important;\\n  transform: none !important;\\n}\\n.no-flex > .ant-tabs-content > .ant-tabs-tabpane-inactive,\\n.ant-tabs-no-animation > .ant-tabs-content > .ant-tabs-tabpane-inactive {\\n  display: none;\\n}\\n.ant-tabs-left-content > .ant-tabs-content-animated,\\n.ant-tabs-right-content > .ant-tabs-content-animated {\\n  margin-left: 0 !important;\\n  transform: none !important;\\n}\\n.ant-tabs-left-content > .ant-tabs-tabpane-inactive,\\n.ant-tabs-right-content > .ant-tabs-tabpane-inactive {\\n  display: none;\\n}\\n.ant-tag {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  display: inline-block;\\n  height: 22px;\\n  margin-right: 8px;\\n  padding: 0 7px;\\n  font-size: 12px;\\n  line-height: 20px;\\n  white-space: nowrap;\\n  background: #fafafa;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  cursor: pointer;\\n  opacity: 1;\\n  transition: all 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);\\n}\\n.ant-tag:hover {\\n  opacity: 0.85;\\n}\\n.ant-tag,\\n.ant-tag a,\\n.ant-tag a:hover {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-tag > a:first-child:last-child {\\n  display: inline-block;\\n  margin: 0 -8px;\\n  padding: 0 8px;\\n}\\n.ant-tag .anticon-close {\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n  margin-left: 3px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-weight: bold;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n:root .ant-tag .anticon-close {\\n  font-size: 12px;\\n}\\n.ant-tag .anticon-close:hover {\\n  color: rgba(0, 0, 0, 0.85);\\n}\\n.ant-tag-has-color {\\n  border-color: transparent;\\n}\\n.ant-tag-has-color,\\n.ant-tag-has-color a,\\n.ant-tag-has-color a:hover,\\n.ant-tag-has-color .anticon-close,\\n.ant-tag-has-color .anticon-close:hover {\\n  color: #fff;\\n}\\n.ant-tag-checkable {\\n  background-color: transparent;\\n  border-color: transparent;\\n}\\n.ant-tag-checkable:not(.ant-tag-checkable-checked):hover {\\n  color: #08979c;\\n}\\n.ant-tag-checkable:active,\\n.ant-tag-checkable-checked {\\n  color: #fff;\\n}\\n.ant-tag-checkable-checked {\\n  background-color: #08979c;\\n}\\n.ant-tag-checkable:active {\\n  background-color: #006d75;\\n}\\n.ant-tag-close {\\n  width: 0 !important;\\n  margin: 0;\\n  padding: 0;\\n}\\n.ant-tag-zoom-enter,\\n.ant-tag-zoom-appear {\\n  animation: antFadeIn 0.2s cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n  animation-fill-mode: both;\\n}\\n.ant-tag-zoom-leave {\\n  animation: antZoomOut 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n  animation-fill-mode: both;\\n}\\n.ant-tag-hidden {\\n  display: none;\\n}\\n.ant-tag-pink {\\n  color: #eb2f96;\\n  background: #fff0f6;\\n  border-color: #ffadd2;\\n}\\n.ant-tag-pink-inverse {\\n  color: #fff;\\n  background: #eb2f96;\\n  border-color: #eb2f96;\\n}\\n.ant-tag-magenta {\\n  color: #eb2f96;\\n  background: #fff0f6;\\n  border-color: #ffadd2;\\n}\\n.ant-tag-magenta-inverse {\\n  color: #fff;\\n  background: #eb2f96;\\n  border-color: #eb2f96;\\n}\\n.ant-tag-red {\\n  color: #f5222d;\\n  background: #fff1f0;\\n  border-color: #ffa39e;\\n}\\n.ant-tag-red-inverse {\\n  color: #fff;\\n  background: #f5222d;\\n  border-color: #f5222d;\\n}\\n.ant-tag-volcano {\\n  color: #fa541c;\\n  background: #fff2e8;\\n  border-color: #ffbb96;\\n}\\n.ant-tag-volcano-inverse {\\n  color: #fff;\\n  background: #fa541c;\\n  border-color: #fa541c;\\n}\\n.ant-tag-orange {\\n  color: #fa8c16;\\n  background: #fff7e6;\\n  border-color: #ffd591;\\n}\\n.ant-tag-orange-inverse {\\n  color: #fff;\\n  background: #fa8c16;\\n  border-color: #fa8c16;\\n}\\n.ant-tag-yellow {\\n  color: #fadb14;\\n  background: #feffe6;\\n  border-color: #fffb8f;\\n}\\n.ant-tag-yellow-inverse {\\n  color: #fff;\\n  background: #fadb14;\\n  border-color: #fadb14;\\n}\\n.ant-tag-gold {\\n  color: #faad14;\\n  background: #fffbe6;\\n  border-color: #ffe58f;\\n}\\n.ant-tag-gold-inverse {\\n  color: #fff;\\n  background: #faad14;\\n  border-color: #faad14;\\n}\\n.ant-tag-cyan {\\n  color: #13c2c2;\\n  background: #e6fffb;\\n  border-color: #87e8de;\\n}\\n.ant-tag-cyan-inverse {\\n  color: #fff;\\n  background: #13c2c2;\\n  border-color: #13c2c2;\\n}\\n.ant-tag-lime {\\n  color: #a0d911;\\n  background: #fcffe6;\\n  border-color: #eaff8f;\\n}\\n.ant-tag-lime-inverse {\\n  color: #fff;\\n  background: #a0d911;\\n  border-color: #a0d911;\\n}\\n.ant-tag-green {\\n  color: #52c41a;\\n  background: #f6ffed;\\n  border-color: #b7eb8f;\\n}\\n.ant-tag-green-inverse {\\n  color: #fff;\\n  background: #52c41a;\\n  border-color: #52c41a;\\n}\\n.ant-tag-blue {\\n  color: #1890ff;\\n  background: #e6f7ff;\\n  border-color: #91d5ff;\\n}\\n.ant-tag-blue-inverse {\\n  color: #fff;\\n  background: #1890ff;\\n  border-color: #1890ff;\\n}\\n.ant-tag-geekblue {\\n  color: #2f54eb;\\n  background: #f0f5ff;\\n  border-color: #adc6ff;\\n}\\n.ant-tag-geekblue-inverse {\\n  color: #fff;\\n  background: #2f54eb;\\n  border-color: #2f54eb;\\n}\\n.ant-tag-purple {\\n  color: #722ed1;\\n  background: #f9f0ff;\\n  border-color: #d3adf7;\\n}\\n.ant-tag-purple-inverse {\\n  color: #fff;\\n  background: #722ed1;\\n  border-color: #722ed1;\\n}\\n.ant-time-picker-panel {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: absolute;\\n  z-index: 1050;\\n  font-family: \\\"Noto Sans KR\\\", sans-serif, -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", \\\"PingFang SC\\\", \\\"Hiragino Sans GB\\\", \\\"Microsoft YaHei\\\", \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\";\\n}\\n.ant-time-picker-panel-inner {\\n  position: relative;\\n  left: -2px;\\n  font-size: 14px;\\n  text-align: left;\\n  list-style: none;\\n  background-color: #fff;\\n  background-clip: padding-box;\\n  border-radius: 4px;\\n  outline: none;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-time-picker-panel-input {\\n  width: 100%;\\n  max-width: 154px;\\n  margin: 0;\\n  padding: 0;\\n  line-height: normal;\\n  border: 0;\\n  outline: 0;\\n  cursor: auto;\\n}\\n.ant-time-picker-panel-input::-moz-placeholder {\\n  color: #bfbfbf;\\n  opacity: 1;\\n}\\n.ant-time-picker-panel-input:-ms-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-time-picker-panel-input::-webkit-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-time-picker-panel-input-wrap {\\n  position: relative;\\n  box-sizing: border-box;\\n  padding: 7px 2px 7px 12px;\\n  border-bottom: 1px solid #e8e8e8;\\n}\\n.ant-time-picker-panel-input-invalid {\\n  border-color: #f5222d;\\n}\\n.ant-time-picker-panel-narrow .ant-time-picker-panel-input-wrap {\\n  max-width: 112px;\\n}\\n.ant-time-picker-panel-select {\\n  position: relative;\\n  float: left;\\n  box-sizing: border-box;\\n  width: 56px;\\n  max-height: 192px;\\n  overflow: hidden;\\n  font-size: 14px;\\n  border-left: 1px solid #e8e8e8;\\n}\\n.ant-time-picker-panel-select:hover {\\n  overflow-y: auto;\\n}\\n.ant-time-picker-panel-select:first-child {\\n  margin-left: 0;\\n  border-left: 0;\\n}\\n.ant-time-picker-panel-select:last-child {\\n  border-right: 0;\\n}\\n.ant-time-picker-panel-select:only-child {\\n  width: 100%;\\n}\\n.ant-time-picker-panel-select ul {\\n  box-sizing: border-box;\\n  width: 100%;\\n  margin: 0;\\n  padding: 0 0 160px;\\n  list-style: none;\\n}\\n.ant-time-picker-panel-select li {\\n  box-sizing: content-box;\\n  width: 100%;\\n  height: 32px;\\n  margin: 0;\\n  padding: 0 0 0 12px;\\n  line-height: 32px;\\n  text-align: left;\\n  list-style: none;\\n  cursor: pointer;\\n  transition: background 0.3s;\\n  user-select: none;\\n}\\n.ant-time-picker-panel-select li:hover {\\n  background: #c5dbd8;\\n}\\nli.ant-time-picker-panel-select-option-selected {\\n  font-weight: bold;\\n  background: #f5f5f5;\\n}\\nli.ant-time-picker-panel-select-option-selected:hover {\\n  background: #f5f5f5;\\n}\\nli.ant-time-picker-panel-select-option-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n}\\nli.ant-time-picker-panel-select-option-disabled:hover {\\n  background: transparent;\\n  cursor: not-allowed;\\n}\\n.ant-time-picker-panel-combobox {\\n  zoom: 1;\\n}\\n.ant-time-picker-panel-combobox::before,\\n.ant-time-picker-panel-combobox::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-time-picker-panel-combobox::after {\\n  clear: both;\\n}\\n.ant-time-picker-panel-combobox::before,\\n.ant-time-picker-panel-combobox::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-time-picker-panel-combobox::after {\\n  clear: both;\\n}\\n.ant-time-picker-panel-addon {\\n  padding: 8px;\\n  border-top: 1px solid #e8e8e8;\\n}\\n.ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-topLeft,\\n.ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-topRight,\\n.ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-topLeft,\\n.ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-topRight {\\n  animation-name: antSlideDownIn;\\n}\\n.ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-bottomLeft,\\n.ant-time-picker-panel.slide-up-enter.slide-up-enter-active.ant-time-picker-panel-placement-bottomRight,\\n.ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-bottomLeft,\\n.ant-time-picker-panel.slide-up-appear.slide-up-appear-active.ant-time-picker-panel-placement-bottomRight {\\n  animation-name: antSlideUpIn;\\n}\\n.ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-topLeft,\\n.ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-topRight {\\n  animation-name: antSlideDownOut;\\n}\\n.ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-bottomLeft,\\n.ant-time-picker-panel.slide-up-leave.slide-up-leave-active.ant-time-picker-panel-placement-bottomRight {\\n  animation-name: antSlideUpOut;\\n}\\n.ant-time-picker {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  display: inline-block;\\n  width: 128px;\\n  outline: none;\\n  cursor: text;\\n  transition: opacity 0.3s;\\n}\\n.ant-time-picker-input {\\n  position: relative;\\n  display: inline-block;\\n  width: 100%;\\n  height: 32px;\\n  padding: 4px 11px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  line-height: 1.5;\\n  background-color: #fff;\\n  background-image: none;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  transition: all 0.3s;\\n}\\n.ant-time-picker-input::-moz-placeholder {\\n  color: #bfbfbf;\\n  opacity: 1;\\n}\\n.ant-time-picker-input:-ms-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-time-picker-input::-webkit-input-placeholder {\\n  color: #bfbfbf;\\n}\\n.ant-time-picker-input:hover {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n}\\n.ant-time-picker-input:focus {\\n  border-color: #23a8a8;\\n  border-right-width: 1px !important;\\n  outline: 0;\\n  box-shadow: 0 0 0 2px rgba(8, 151, 156, 0.2);\\n}\\n.ant-time-picker-input-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n}\\n.ant-time-picker-input-disabled:hover {\\n  border-color: #e6d8d8;\\n  border-right-width: 1px !important;\\n}\\ntextarea.ant-time-picker-input {\\n  max-width: 100%;\\n  height: auto;\\n  min-height: 32px;\\n  vertical-align: bottom;\\n  transition: all 0.3s, height 0s;\\n}\\n.ant-time-picker-input-lg {\\n  height: 40px;\\n  padding: 6px 11px;\\n  font-size: 16px;\\n}\\n.ant-time-picker-input-sm {\\n  height: 24px;\\n  padding: 1px 7px;\\n}\\n.ant-time-picker-input[disabled] {\\n  color: rgba(0, 0, 0, 0.25);\\n  background-color: #f5f5f5;\\n  cursor: not-allowed;\\n  opacity: 1;\\n}\\n.ant-time-picker-input[disabled]:hover {\\n  border-color: #e6d8d8;\\n  border-right-width: 1px !important;\\n}\\n.ant-time-picker-open {\\n  opacity: 0;\\n}\\n.ant-time-picker-icon,\\n.ant-time-picker-clear {\\n  position: absolute;\\n  top: 50%;\\n  right: 11px;\\n  z-index: 1;\\n  width: 14px;\\n  height: 14px;\\n  margin-top: -7px;\\n  color: rgba(0, 0, 0, 0.25);\\n  line-height: 14px;\\n  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\\n  user-select: none;\\n}\\n.ant-time-picker-icon .ant-time-picker-clock-icon,\\n.ant-time-picker-clear .ant-time-picker-clock-icon {\\n  display: block;\\n  color: rgba(0, 0, 0, 0.25);\\n  line-height: 1;\\n}\\n.ant-time-picker-clear {\\n  z-index: 2;\\n  background: #fff;\\n  opacity: 0;\\n  pointer-events: none;\\n}\\n.ant-time-picker-clear:hover {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-time-picker:hover .ant-time-picker-clear {\\n  opacity: 1;\\n  pointer-events: auto;\\n}\\n.ant-time-picker-large .ant-time-picker-input {\\n  height: 40px;\\n  padding: 6px 11px;\\n  font-size: 16px;\\n}\\n.ant-time-picker-small .ant-time-picker-input {\\n  height: 24px;\\n  padding: 1px 7px;\\n}\\n.ant-time-picker-small .ant-time-picker-icon,\\n.ant-time-picker-small .ant-time-picker-clear {\\n  right: 7px;\\n}\\n.ant-timeline {\\n  box-sizing: border-box;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  font-feature-settings: 'tnum';\\n  margin: 0;\\n  padding: 0;\\n  list-style: none;\\n}\\n.ant-timeline-item {\\n  position: relative;\\n  margin: 0;\\n  padding: 0 0 20px;\\n  font-size: 14px;\\n  list-style: none;\\n}\\n.ant-timeline-item-tail {\\n  position: absolute;\\n  top: 0.75em;\\n  left: 4px;\\n  height: 100%;\\n  border-left: 2px solid #e8e8e8;\\n}\\n.ant-timeline-item-pending .ant-timeline-item-head {\\n  font-size: 12px;\\n}\\n.ant-timeline-item-pending .ant-timeline-item-tail {\\n  display: none;\\n}\\n.ant-timeline-item-head {\\n  position: absolute;\\n  width: 10px;\\n  height: 10px;\\n  background-color: #fff;\\n  border: 2px solid transparent;\\n  border-radius: 100px;\\n}\\n.ant-timeline-item-head-blue {\\n  color: #08979c;\\n  border-color: #08979c;\\n}\\n.ant-timeline-item-head-red {\\n  color: #f5222d;\\n  border-color: #f5222d;\\n}\\n.ant-timeline-item-head-green {\\n  color: #52c41a;\\n  border-color: #52c41a;\\n}\\n.ant-timeline-item-head-custom {\\n  position: absolute;\\n  top: 5.5px;\\n  left: 5px;\\n  width: auto;\\n  height: auto;\\n  margin-top: 0;\\n  padding: 3px 1px;\\n  line-height: 1;\\n  text-align: center;\\n  border: 0;\\n  border-radius: 0;\\n  transform: translate(-50%, -50%);\\n}\\n.ant-timeline-item-content {\\n  position: relative;\\n  top: -6px;\\n  margin: 0 0 0 18px;\\n}\\n.ant-timeline-item-last > .ant-timeline-item-tail {\\n  display: none;\\n}\\n.ant-timeline-item-last > .ant-timeline-item-content {\\n  min-height: 48px;\\n}\\n.ant-timeline.ant-timeline-alternate .ant-timeline-item-tail,\\n.ant-timeline.ant-timeline-right .ant-timeline-item-tail,\\n.ant-timeline.ant-timeline-alternate .ant-timeline-item-head,\\n.ant-timeline.ant-timeline-right .ant-timeline-item-head,\\n.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom,\\n.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom {\\n  left: 50%;\\n}\\n.ant-timeline.ant-timeline-alternate .ant-timeline-item-head,\\n.ant-timeline.ant-timeline-right .ant-timeline-item-head {\\n  margin-left: -4px;\\n}\\n.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom,\\n.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom {\\n  margin-left: 1px;\\n}\\n.ant-timeline.ant-timeline-alternate .ant-timeline-item-left .ant-timeline-item-content,\\n.ant-timeline.ant-timeline-right .ant-timeline-item-left .ant-timeline-item-content {\\n  left: 50%;\\n  width: 50%;\\n  text-align: left;\\n}\\n.ant-timeline.ant-timeline-alternate .ant-timeline-item-right .ant-timeline-item-content,\\n.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content {\\n  right: 50%;\\n  left: -30px;\\n  width: 50%;\\n  margin-right: 18px;\\n  text-align: right;\\n}\\n.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-tail,\\n.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head,\\n.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head-custom {\\n  left: 100%;\\n}\\n.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content {\\n  right: 0;\\n  left: -30px;\\n  width: 100%;\\n}\\n.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail {\\n  display: block;\\n  border-left: 2px dotted #e8e8e8;\\n}\\n.ant-timeline.ant-timeline-reverse .ant-timeline-item-last .ant-timeline-item-tail {\\n  display: none;\\n}\\n.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail {\\n  display: block;\\n  border-left: 2px dotted #e8e8e8;\\n}\\n.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-content {\\n  min-height: 48px;\\n}\\n.ant-tooltip {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: absolute;\\n  z-index: 1060;\\n  display: block;\\n  max-width: 250px;\\n  visibility: visible;\\n}\\n.ant-tooltip-hidden {\\n  display: none;\\n}\\n.ant-tooltip-placement-top,\\n.ant-tooltip-placement-topLeft,\\n.ant-tooltip-placement-topRight {\\n  padding-bottom: 8px;\\n}\\n.ant-tooltip-placement-right,\\n.ant-tooltip-placement-rightTop,\\n.ant-tooltip-placement-rightBottom {\\n  padding-left: 8px;\\n}\\n.ant-tooltip-placement-bottom,\\n.ant-tooltip-placement-bottomLeft,\\n.ant-tooltip-placement-bottomRight {\\n  padding-top: 8px;\\n}\\n.ant-tooltip-placement-left,\\n.ant-tooltip-placement-leftTop,\\n.ant-tooltip-placement-leftBottom {\\n  padding-right: 8px;\\n}\\n.ant-tooltip-inner {\\n  min-width: 30px;\\n  min-height: 32px;\\n  padding: 6px 8px;\\n  color: #fff;\\n  text-align: left;\\n  text-decoration: none;\\n  word-wrap: break-word;\\n  background-color: rgba(0, 0, 0, 0.75);\\n  border-radius: 4px;\\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\\n}\\n.ant-tooltip-arrow {\\n  position: absolute;\\n  width: 0;\\n  height: 0;\\n  border-style: solid;\\n  border-color: transparent;\\n}\\n.ant-tooltip-placement-top .ant-tooltip-arrow,\\n.ant-tooltip-placement-topLeft .ant-tooltip-arrow,\\n.ant-tooltip-placement-topRight .ant-tooltip-arrow {\\n  bottom: 3px;\\n  border-width: 5px 5px 0;\\n  border-top-color: rgba(0, 0, 0, 0.75);\\n}\\n.ant-tooltip-placement-top .ant-tooltip-arrow {\\n  left: 50%;\\n  margin-left: -5px;\\n}\\n.ant-tooltip-placement-topLeft .ant-tooltip-arrow {\\n  left: 16px;\\n}\\n.ant-tooltip-placement-topRight .ant-tooltip-arrow {\\n  right: 16px;\\n}\\n.ant-tooltip-placement-right .ant-tooltip-arrow,\\n.ant-tooltip-placement-rightTop .ant-tooltip-arrow,\\n.ant-tooltip-placement-rightBottom .ant-tooltip-arrow {\\n  left: 3px;\\n  border-width: 5px 5px 5px 0;\\n  border-right-color: rgba(0, 0, 0, 0.75);\\n}\\n.ant-tooltip-placement-right .ant-tooltip-arrow {\\n  top: 50%;\\n  margin-top: -5px;\\n}\\n.ant-tooltip-placement-rightTop .ant-tooltip-arrow {\\n  top: 8px;\\n}\\n.ant-tooltip-placement-rightBottom .ant-tooltip-arrow {\\n  bottom: 8px;\\n}\\n.ant-tooltip-placement-left .ant-tooltip-arrow,\\n.ant-tooltip-placement-leftTop .ant-tooltip-arrow,\\n.ant-tooltip-placement-leftBottom .ant-tooltip-arrow {\\n  right: 3px;\\n  border-width: 5px 0 5px 5px;\\n  border-left-color: rgba(0, 0, 0, 0.75);\\n}\\n.ant-tooltip-placement-left .ant-tooltip-arrow {\\n  top: 50%;\\n  margin-top: -5px;\\n}\\n.ant-tooltip-placement-leftTop .ant-tooltip-arrow {\\n  top: 8px;\\n}\\n.ant-tooltip-placement-leftBottom .ant-tooltip-arrow {\\n  bottom: 8px;\\n}\\n.ant-tooltip-placement-bottom .ant-tooltip-arrow,\\n.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,\\n.ant-tooltip-placement-bottomRight .ant-tooltip-arrow {\\n  top: 3px;\\n  border-width: 0 5px 5px;\\n  border-bottom-color: rgba(0, 0, 0, 0.75);\\n}\\n.ant-tooltip-placement-bottom .ant-tooltip-arrow {\\n  left: 50%;\\n  margin-left: -5px;\\n}\\n.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow {\\n  left: 16px;\\n}\\n.ant-tooltip-placement-bottomRight .ant-tooltip-arrow {\\n  right: 16px;\\n}\\n.ant-transfer {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n}\\n.ant-transfer-disabled .ant-transfer-list {\\n  background: #f5f5f5;\\n}\\n.ant-transfer-list {\\n  position: relative;\\n  display: inline-block;\\n  width: 180px;\\n  height: 200px;\\n  padding-top: 34px;\\n  vertical-align: middle;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n}\\n.ant-transfer-list-with-footer {\\n  padding-bottom: 34px;\\n}\\n.ant-transfer-list-search {\\n  padding: 0 8px;\\n}\\n.ant-transfer-list-search-action {\\n  position: absolute;\\n  top: 4px;\\n  right: 4px;\\n  bottom: 4px;\\n  width: 28px;\\n  color: rgba(0, 0, 0, 0.25);\\n  line-height: 32px;\\n  text-align: center;\\n}\\n.ant-transfer-list-search-action .anticon {\\n  color: rgba(0, 0, 0, 0.25);\\n  transition: all 0.3s;\\n}\\n.ant-transfer-list-search-action .anticon:hover {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\nspan.ant-transfer-list-search-action {\\n  pointer-events: none;\\n}\\n.ant-transfer-list-header {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  width: 100%;\\n  padding: 6px 12px;\\n  overflow: hidden;\\n  color: rgba(0, 0, 0, 0.65);\\n  background: #fff;\\n  border-bottom: 1px solid #e8e8e8;\\n  border-radius: 4px 4px 0 0;\\n}\\n.ant-transfer-list-header-title {\\n  position: absolute;\\n  right: 12px;\\n}\\n.ant-transfer-list-body {\\n  position: relative;\\n  height: 100%;\\n  font-size: 14px;\\n}\\n.ant-transfer-list-body-search-wrapper {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  width: 100%;\\n  padding: 4px;\\n}\\n.ant-transfer-list-body-with-search {\\n  padding-top: 40px;\\n}\\n.ant-transfer-list-content {\\n  height: 100%;\\n  margin: 0;\\n  padding: 0;\\n  overflow: auto;\\n  list-style: none;\\n}\\n.ant-transfer-list-content > .LazyLoad {\\n  animation: transferHighlightIn 1s;\\n}\\n.ant-transfer-list-content-item {\\n  min-height: 32px;\\n  padding: 6px 12px;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n  transition: all 0.3s;\\n}\\n.ant-transfer-list-content-item > span {\\n  padding-right: 0;\\n}\\n.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover {\\n  background-color: #c5dbd8;\\n  cursor: pointer;\\n}\\n.ant-transfer-list-content-item-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-transfer-list-body-not-found {\\n  position: absolute;\\n  top: 50%;\\n  width: 100%;\\n  padding-top: 0;\\n  color: rgba(0, 0, 0, 0.25);\\n  text-align: center;\\n  transform: translateY(-50%);\\n}\\n.ant-transfer-list-body-with-search .ant-transfer-list-body-not-found {\\n  margin-top: 16px;\\n}\\n.ant-transfer-list-footer {\\n  position: absolute;\\n  bottom: 0;\\n  left: 0;\\n  width: 100%;\\n  border-top: 1px solid #e8e8e8;\\n  border-radius: 0 0 4px 4px;\\n}\\n.ant-transfer-operation {\\n  display: inline-block;\\n  margin: 0 8px;\\n  overflow: hidden;\\n  vertical-align: middle;\\n}\\n.ant-transfer-operation .ant-btn {\\n  display: block;\\n}\\n.ant-transfer-operation .ant-btn:first-child {\\n  margin-bottom: 4px;\\n}\\n.ant-transfer-operation .ant-btn .anticon {\\n  font-size: 12px;\\n}\\n@keyframes transferHighlightIn {\\n  0% {\\n    background: #8fcfc8;\\n  }\\n  100% {\\n    background: transparent;\\n  }\\n}\\n.ant-tree.ant-tree-directory {\\n  position: relative;\\n}\\n.ant-tree.ant-tree-directory > li span.ant-tree-switcher,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-switcher {\\n  position: relative;\\n  z-index: 1;\\n}\\n.ant-tree.ant-tree-directory > li span.ant-tree-switcher.ant-tree-switcher-noop,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-switcher.ant-tree-switcher-noop {\\n  pointer-events: none;\\n}\\n.ant-tree.ant-tree-directory > li span.ant-tree-checkbox,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-checkbox {\\n  position: relative;\\n  z-index: 1;\\n}\\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper {\\n  border-radius: 0;\\n  user-select: none;\\n}\\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover {\\n  background: transparent;\\n}\\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover::before,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover::before {\\n  background: #c5dbd8;\\n}\\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper.ant-tree-node-selected,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper.ant-tree-node-selected {\\n  color: #fff;\\n  background: transparent;\\n}\\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper::before,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper::before {\\n  position: absolute;\\n  right: 0;\\n  left: 0;\\n  height: 24px;\\n  transition: all 0.3s;\\n  content: '';\\n}\\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper > span,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper > span {\\n  position: relative;\\n  z-index: 1;\\n}\\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-switcher,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-switcher {\\n  color: #fff;\\n}\\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner {\\n  border-color: #08979c;\\n}\\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked::after,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked::after {\\n  border-color: #fff;\\n}\\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner {\\n  background: #fff;\\n}\\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {\\n  border-color: #08979c;\\n}\\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper::before,\\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper::before {\\n  background: #08979c;\\n}\\n.ant-tree-checkbox {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  top: -0.09em;\\n  display: inline-block;\\n  line-height: 1;\\n  white-space: nowrap;\\n  vertical-align: middle;\\n  outline: none;\\n  cursor: pointer;\\n}\\n.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner,\\n.ant-tree-checkbox:hover .ant-tree-checkbox-inner,\\n.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner {\\n  border-color: #08979c;\\n}\\n.ant-tree-checkbox-checked::after {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  width: 100%;\\n  height: 100%;\\n  border: 1px solid #08979c;\\n  border-radius: 2px;\\n  visibility: hidden;\\n  animation: antCheckboxEffect 0.36s ease-in-out;\\n  animation-fill-mode: both;\\n  content: '';\\n}\\n.ant-tree-checkbox:hover::after,\\n.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox::after {\\n  visibility: visible;\\n}\\n.ant-tree-checkbox-inner {\\n  position: relative;\\n  top: 0;\\n  left: 0;\\n  display: block;\\n  width: 16px;\\n  height: 16px;\\n  background-color: #fff;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 2px;\\n  border-collapse: separate;\\n  transition: all 0.3s;\\n}\\n.ant-tree-checkbox-inner::after {\\n  position: absolute;\\n  top: 50%;\\n  left: 21%;\\n  display: table;\\n  width: 5.71428571px;\\n  height: 9.14285714px;\\n  border: 2px solid #fff;\\n  border-top: 0;\\n  border-left: 0;\\n  transform: rotate(45deg) scale(0) translate(-50%, -50%);\\n  opacity: 0;\\n  transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s;\\n  content: ' ';\\n}\\n.ant-tree-checkbox-input {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 1;\\n  width: 100%;\\n  height: 100%;\\n  cursor: pointer;\\n  opacity: 0;\\n}\\n.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {\\n  position: absolute;\\n  display: table;\\n  border: 2px solid #fff;\\n  border-top: 0;\\n  border-left: 0;\\n  transform: rotate(45deg) scale(1) translate(-50%, -50%);\\n  opacity: 1;\\n  transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;\\n  content: ' ';\\n}\\n.ant-tree-checkbox-checked .ant-tree-checkbox-inner {\\n  background-color: #08979c;\\n  border-color: #08979c;\\n}\\n.ant-tree-checkbox-disabled {\\n  cursor: not-allowed;\\n}\\n.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {\\n  border-color: rgba(0, 0, 0, 0.25);\\n  animation-name: none;\\n}\\n.ant-tree-checkbox-disabled .ant-tree-checkbox-input {\\n  cursor: not-allowed;\\n}\\n.ant-tree-checkbox-disabled .ant-tree-checkbox-inner {\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9 !important;\\n}\\n.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after {\\n  border-color: #f5f5f5;\\n  border-collapse: separate;\\n  animation-name: none;\\n}\\n.ant-tree-checkbox-disabled + span {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-tree-checkbox-wrapper {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  display: inline-block;\\n  line-height: unset;\\n  cursor: pointer;\\n}\\n.ant-tree-checkbox-wrapper + .ant-tree-checkbox-wrapper {\\n  margin-left: 8px;\\n}\\n.ant-tree-checkbox-wrapper + span,\\n.ant-tree-checkbox + span {\\n  padding-right: 8px;\\n  padding-left: 8px;\\n}\\n.ant-tree-checkbox-group {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  display: inline-block;\\n}\\n.ant-tree-checkbox-group-item {\\n  display: inline-block;\\n  margin-right: 8px;\\n}\\n.ant-tree-checkbox-group-item:last-child {\\n  margin-right: 0;\\n}\\n.ant-tree-checkbox-group-item + .ant-tree-checkbox-group-item {\\n  margin-left: 0;\\n}\\n.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner {\\n  background-color: #fff;\\n  border-color: #d9d9d9;\\n}\\n.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner::after {\\n  top: 50%;\\n  left: 50%;\\n  width: 8px;\\n  height: 8px;\\n  background-color: #08979c;\\n  border: 0;\\n  transform: translate(-50%, -50%) scale(1);\\n  opacity: 1;\\n  content: ' ';\\n}\\n.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after {\\n  background-color: rgba(0, 0, 0, 0.25);\\n  border-color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-tree {\\n  box-sizing: border-box;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  margin: 0;\\n  padding: 0;\\n}\\n.ant-tree ol,\\n.ant-tree ul {\\n  margin: 0;\\n  padding: 0;\\n  list-style: none;\\n}\\n.ant-tree li {\\n  margin: 0;\\n  padding: 4px 0;\\n  white-space: nowrap;\\n  list-style: none;\\n  outline: 0;\\n}\\n.ant-tree li span[draggable],\\n.ant-tree li span[draggable='true'] {\\n  line-height: 20px;\\n  border-top: 2px transparent solid;\\n  border-bottom: 2px transparent solid;\\n  user-select: none;\\n  /* Required to make elements draggable in old WebKit */\\n  -khtml-user-drag: element;\\n  -webkit-user-drag: element;\\n}\\n.ant-tree li.drag-over > span[draggable] {\\n  color: white;\\n  background-color: #08979c;\\n  opacity: 0.8;\\n}\\n.ant-tree li.drag-over-gap-top > span[draggable] {\\n  border-top-color: #08979c;\\n}\\n.ant-tree li.drag-over-gap-bottom > span[draggable] {\\n  border-bottom-color: #08979c;\\n}\\n.ant-tree li.filter-node > span {\\n  color: #f5222d !important;\\n  font-weight: 500 !important;\\n}\\n.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon,\\n.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon {\\n  position: absolute;\\n  left: 0;\\n  display: inline-block;\\n  width: 24px;\\n  height: 24px;\\n  color: #08979c;\\n  font-size: 14px;\\n  transform: none;\\n}\\n.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon svg,\\n.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon svg {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n}\\n:root .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open::after,\\n:root .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close::after {\\n  opacity: 0;\\n}\\n.ant-tree li ul {\\n  margin: 0;\\n  padding: 0 0 0 18px;\\n}\\n.ant-tree li .ant-tree-node-content-wrapper {\\n  display: inline-block;\\n  height: 24px;\\n  margin: 0;\\n  padding: 0 5px;\\n  color: rgba(0, 0, 0, 0.65);\\n  line-height: 24px;\\n  text-decoration: none;\\n  vertical-align: top;\\n  border-radius: 2px;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-tree li .ant-tree-node-content-wrapper:hover {\\n  background-color: #c5dbd8;\\n}\\n.ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected {\\n  background-color: #8fcfc8;\\n}\\n.ant-tree li span.ant-tree-checkbox {\\n  margin: 4px 4px 0 2px;\\n}\\n.ant-tree li span.ant-tree-switcher,\\n.ant-tree li span.ant-tree-iconEle {\\n  display: inline-block;\\n  width: 24px;\\n  height: 24px;\\n  margin: 0;\\n  line-height: 24px;\\n  text-align: center;\\n  vertical-align: top;\\n  border: 0 none;\\n  outline: none;\\n  cursor: pointer;\\n}\\n.ant-tree li span.ant-tree-switcher {\\n  position: relative;\\n}\\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher-noop {\\n  cursor: default;\\n}\\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon,\\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon {\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n  display: inline-block;\\n  font-weight: bold;\\n}\\n:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon,\\n:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon {\\n  font-size: 12px;\\n}\\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon svg,\\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon svg {\\n  transition: transform 0.3s;\\n}\\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon,\\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon {\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n  display: inline-block;\\n  font-weight: bold;\\n}\\n:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon,\\n:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon {\\n  font-size: 12px;\\n}\\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon svg,\\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon svg {\\n  transition: transform 0.3s;\\n}\\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon svg {\\n  transform: rotate(-90deg);\\n}\\n.ant-tree li:last-child > span.ant-tree-switcher::before,\\n.ant-tree li:last-child > span.ant-tree-iconEle::before {\\n  display: none;\\n}\\n.ant-tree > li:first-child {\\n  padding-top: 7px;\\n}\\n.ant-tree > li:last-child {\\n  padding-bottom: 7px;\\n}\\n.ant-tree-child-tree {\\n  display: none;\\n}\\n.ant-tree-child-tree-open {\\n  display: block;\\n}\\n.ant-tree-child-tree > li:first-child {\\n  padding-top: 8px;\\n}\\n.ant-tree-child-tree > li:last-child {\\n  padding-bottom: 0;\\n}\\nli.ant-tree-treenode-disabled > span:not(.ant-tree-switcher),\\nli.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper,\\nli.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper span {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\nli.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper:hover {\\n  background: transparent;\\n}\\n.ant-tree-icon__open {\\n  margin-right: 2px;\\n  vertical-align: top;\\n}\\n.ant-tree-icon__close {\\n  margin-right: 2px;\\n  vertical-align: top;\\n}\\n.ant-tree.ant-tree-show-line li {\\n  position: relative;\\n}\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher {\\n  color: rgba(0, 0, 0, 0.45);\\n  background: #fff;\\n}\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-tree-switcher-icon,\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-select-switcher-icon {\\n  display: inline-block;\\n  font-weight: normal;\\n  font-size: 12px;\\n}\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-tree-switcher-icon svg,\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-select-switcher-icon svg {\\n  transition: transform 0.3s;\\n}\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon,\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon {\\n  display: inline-block;\\n  font-weight: normal;\\n  font-size: 12px;\\n}\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon svg,\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon svg {\\n  transition: transform 0.3s;\\n}\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon,\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon {\\n  display: inline-block;\\n  font-weight: normal;\\n  font-size: 12px;\\n}\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon svg,\\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon svg {\\n  transition: transform 0.3s;\\n}\\n.ant-tree.ant-tree-show-line li:not(:last-child)::before {\\n  position: absolute;\\n  left: 12px;\\n  width: 1px;\\n  height: 100%;\\n  margin: 22px 0;\\n  border-left: 1px solid #d9d9d9;\\n  content: ' ';\\n}\\n.ant-tree.ant-tree-icon-hide .ant-tree-treenode-loading .ant-tree-iconEle {\\n  display: none;\\n}\\n.ant-tree.ant-tree-block-node li .ant-tree-node-content-wrapper {\\n  width: calc(100% - 24px);\\n}\\n.ant-tree.ant-tree-block-node li span.ant-tree-checkbox + .ant-tree-node-content-wrapper {\\n  width: calc(100% - 46px);\\n}\\n.ant-select-tree-checkbox {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  position: relative;\\n  top: -0.09em;\\n  display: inline-block;\\n  line-height: 1;\\n  white-space: nowrap;\\n  vertical-align: middle;\\n  outline: none;\\n  cursor: pointer;\\n}\\n.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner,\\n.ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner,\\n.ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner {\\n  border-color: #08979c;\\n}\\n.ant-select-tree-checkbox-checked::after {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  width: 100%;\\n  height: 100%;\\n  border: 1px solid #08979c;\\n  border-radius: 2px;\\n  visibility: hidden;\\n  animation: antCheckboxEffect 0.36s ease-in-out;\\n  animation-fill-mode: both;\\n  content: '';\\n}\\n.ant-select-tree-checkbox:hover::after,\\n.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox::after {\\n  visibility: visible;\\n}\\n.ant-select-tree-checkbox-inner {\\n  position: relative;\\n  top: 0;\\n  left: 0;\\n  display: block;\\n  width: 16px;\\n  height: 16px;\\n  background-color: #fff;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 2px;\\n  border-collapse: separate;\\n  transition: all 0.3s;\\n}\\n.ant-select-tree-checkbox-inner::after {\\n  position: absolute;\\n  top: 50%;\\n  left: 21%;\\n  display: table;\\n  width: 5.71428571px;\\n  height: 9.14285714px;\\n  border: 2px solid #fff;\\n  border-top: 0;\\n  border-left: 0;\\n  transform: rotate(45deg) scale(0) translate(-50%, -50%);\\n  opacity: 0;\\n  transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s;\\n  content: ' ';\\n}\\n.ant-select-tree-checkbox-input {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 1;\\n  width: 100%;\\n  height: 100%;\\n  cursor: pointer;\\n  opacity: 0;\\n}\\n.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner::after {\\n  position: absolute;\\n  display: table;\\n  border: 2px solid #fff;\\n  border-top: 0;\\n  border-left: 0;\\n  transform: rotate(45deg) scale(1) translate(-50%, -50%);\\n  opacity: 1;\\n  transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;\\n  content: ' ';\\n}\\n.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner {\\n  background-color: #08979c;\\n  border-color: #08979c;\\n}\\n.ant-select-tree-checkbox-disabled {\\n  cursor: not-allowed;\\n}\\n.ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner::after {\\n  border-color: rgba(0, 0, 0, 0.25);\\n  animation-name: none;\\n}\\n.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-input {\\n  cursor: not-allowed;\\n}\\n.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner {\\n  background-color: #f5f5f5;\\n  border-color: #d9d9d9 !important;\\n}\\n.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner::after {\\n  border-color: #f5f5f5;\\n  border-collapse: separate;\\n  animation-name: none;\\n}\\n.ant-select-tree-checkbox-disabled + span {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-select-tree-checkbox-wrapper {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  display: inline-block;\\n  line-height: unset;\\n  cursor: pointer;\\n}\\n.ant-select-tree-checkbox-wrapper + .ant-select-tree-checkbox-wrapper {\\n  margin-left: 8px;\\n}\\n.ant-select-tree-checkbox-wrapper + span,\\n.ant-select-tree-checkbox + span {\\n  padding-right: 8px;\\n  padding-left: 8px;\\n}\\n.ant-select-tree-checkbox-group {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  display: inline-block;\\n}\\n.ant-select-tree-checkbox-group-item {\\n  display: inline-block;\\n  margin-right: 8px;\\n}\\n.ant-select-tree-checkbox-group-item:last-child {\\n  margin-right: 0;\\n}\\n.ant-select-tree-checkbox-group-item + .ant-select-tree-checkbox-group-item {\\n  margin-left: 0;\\n}\\n.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner {\\n  background-color: #fff;\\n  border-color: #d9d9d9;\\n}\\n.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner::after {\\n  top: 50%;\\n  left: 50%;\\n  width: 8px;\\n  height: 8px;\\n  background-color: #08979c;\\n  border: 0;\\n  transform: translate(-50%, -50%) scale(1);\\n  opacity: 1;\\n  content: ' ';\\n}\\n.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner::after {\\n  background-color: rgba(0, 0, 0, 0.25);\\n  border-color: rgba(0, 0, 0, 0.25);\\n}\\n.ant-select-tree {\\n  box-sizing: border-box;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  margin: 0;\\n  margin-top: -4px;\\n  padding: 0 4px;\\n}\\n.ant-select-tree li {\\n  margin: 8px 0;\\n  padding: 0;\\n  white-space: nowrap;\\n  list-style: none;\\n  outline: 0;\\n}\\n.ant-select-tree li.filter-node > span {\\n  font-weight: 500;\\n}\\n.ant-select-tree li ul {\\n  margin: 0;\\n  padding: 0 0 0 18px;\\n}\\n.ant-select-tree li .ant-select-tree-node-content-wrapper {\\n  display: inline-block;\\n  width: calc(100% - 24px);\\n  margin: 0;\\n  padding: 3px 5px;\\n  color: rgba(0, 0, 0, 0.65);\\n  text-decoration: none;\\n  border-radius: 2px;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-select-tree li .ant-select-tree-node-content-wrapper:hover {\\n  background-color: #c5dbd8;\\n}\\n.ant-select-tree li .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected {\\n  background-color: #8fcfc8;\\n}\\n.ant-select-tree li span.ant-select-tree-checkbox {\\n  margin: 0 4px 0 0;\\n}\\n.ant-select-tree li span.ant-select-tree-checkbox + .ant-select-tree-node-content-wrapper {\\n  width: calc(100% - 46px);\\n}\\n.ant-select-tree li span.ant-select-tree-switcher,\\n.ant-select-tree li span.ant-select-tree-iconEle {\\n  display: inline-block;\\n  width: 24px;\\n  height: 24px;\\n  margin: 0;\\n  line-height: 22px;\\n  text-align: center;\\n  vertical-align: middle;\\n  border: 0 none;\\n  outline: none;\\n  cursor: pointer;\\n}\\n.ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon {\\n  position: absolute;\\n  left: 0;\\n  display: inline-block;\\n  color: #08979c;\\n  font-size: 14px;\\n  transform: none;\\n}\\n.ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon svg {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n}\\n.ant-select-tree li span.ant-select-tree-switcher {\\n  position: relative;\\n}\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher-noop {\\n  cursor: auto;\\n}\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-tree-switcher-icon,\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-icon {\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n  display: inline-block;\\n  font-weight: bold;\\n}\\n:root .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-tree-switcher-icon,\\n:root .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-icon {\\n  font-size: 12px;\\n}\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-tree-switcher-icon svg,\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-icon svg {\\n  transition: transform 0.3s;\\n}\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-tree-switcher-icon,\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-icon {\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n  display: inline-block;\\n  font-weight: bold;\\n}\\n:root .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-tree-switcher-icon,\\n:root .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-icon {\\n  font-size: 12px;\\n}\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-tree-switcher-icon svg,\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-icon svg {\\n  transition: transform 0.3s;\\n}\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-icon svg {\\n  transform: rotate(-90deg);\\n}\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon,\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon {\\n  position: absolute;\\n  left: 0;\\n  display: inline-block;\\n  width: 24px;\\n  height: 24px;\\n  color: #08979c;\\n  font-size: 14px;\\n  transform: none;\\n}\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon svg,\\n.ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon svg {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n}\\n.ant-select-tree .ant-select-tree-treenode-loading .ant-select-tree-iconEle {\\n  display: none;\\n}\\n.ant-select-tree-child-tree {\\n  display: none;\\n}\\n.ant-select-tree-child-tree-open {\\n  display: block;\\n}\\nli.ant-select-tree-treenode-disabled > span:not(.ant-select-tree-switcher),\\nli.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper,\\nli.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper span {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\nli.ant-select-tree-treenode-disabled > .ant-select-tree-node-content-wrapper:hover {\\n  background: transparent;\\n}\\n.ant-select-tree-icon__open {\\n  margin-right: 2px;\\n  vertical-align: top;\\n}\\n.ant-select-tree-icon__close {\\n  margin-right: 2px;\\n  vertical-align: top;\\n}\\n.ant-select-tree-dropdown {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n}\\n.ant-select-tree-dropdown .ant-select-dropdown-search {\\n  position: sticky;\\n  top: 0;\\n  z-index: 1;\\n  display: block;\\n  padding: 4px;\\n  background: #fff;\\n}\\n.ant-select-tree-dropdown .ant-select-dropdown-search .ant-select-search__field__wrap {\\n  width: 100%;\\n}\\n.ant-select-tree-dropdown .ant-select-dropdown-search .ant-select-search__field {\\n  box-sizing: border-box;\\n  width: 100%;\\n  padding: 4px 7px;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  outline: none;\\n}\\n.ant-select-tree-dropdown .ant-select-dropdown-search.ant-select-search--hide {\\n  display: none;\\n}\\n.ant-select-tree-dropdown .ant-select-not-found {\\n  display: block;\\n  padding: 7px 16px;\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n}\\n.ant-typography {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-typography-secondary {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-typography-warning {\\n  color: #d48806;\\n}\\n.ant-typography-danger {\\n  color: #cf1322;\\n}\\n.ant-typography-disabled {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n  user-select: none;\\n}\\ndiv.ant-typography,\\n.ant-typography p {\\n  margin-bottom: 1em;\\n}\\nh1.ant-typography,\\n.ant-typography h1 {\\n  margin-bottom: 0.5em;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 600;\\n  font-size: 38px;\\n  line-height: 1.23;\\n}\\nh2.ant-typography,\\n.ant-typography h2 {\\n  margin-bottom: 0.5em;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 600;\\n  font-size: 30px;\\n  line-height: 1.35;\\n}\\nh3.ant-typography,\\n.ant-typography h3 {\\n  margin-bottom: 0.5em;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 600;\\n  font-size: 24px;\\n  line-height: 1.35;\\n}\\nh4.ant-typography,\\n.ant-typography h4 {\\n  margin-bottom: 0.5em;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-weight: 600;\\n  font-size: 20px;\\n  line-height: 1.4;\\n}\\n.ant-typography + h1.ant-typography,\\n.ant-typography + h2.ant-typography,\\n.ant-typography + h3.ant-typography,\\n.ant-typography + h4.ant-typography {\\n  margin-top: 1.2em;\\n}\\n.ant-typography div + h1,\\n.ant-typography ul + h1,\\n.ant-typography li + h1,\\n.ant-typography p + h1,\\n.ant-typography h1 + h1,\\n.ant-typography h2 + h1,\\n.ant-typography h3 + h1,\\n.ant-typography h4 + h1,\\n.ant-typography div + h2,\\n.ant-typography ul + h2,\\n.ant-typography li + h2,\\n.ant-typography p + h2,\\n.ant-typography h1 + h2,\\n.ant-typography h2 + h2,\\n.ant-typography h3 + h2,\\n.ant-typography h4 + h2,\\n.ant-typography div + h3,\\n.ant-typography ul + h3,\\n.ant-typography li + h3,\\n.ant-typography p + h3,\\n.ant-typography h1 + h3,\\n.ant-typography h2 + h3,\\n.ant-typography h3 + h3,\\n.ant-typography h4 + h3,\\n.ant-typography div + h4,\\n.ant-typography ul + h4,\\n.ant-typography li + h4,\\n.ant-typography p + h4,\\n.ant-typography h1 + h4,\\n.ant-typography h2 + h4,\\n.ant-typography h3 + h4,\\n.ant-typography h4 + h4 {\\n  margin-top: 1.2em;\\n}\\nspan.ant-typography-ellipsis {\\n  display: inline-block;\\n}\\n.ant-typography a {\\n  color: #08979c;\\n  text-decoration: none;\\n  outline: none;\\n  cursor: pointer;\\n  transition: color 0.3s;\\n}\\n.ant-typography a:focus,\\n.ant-typography a:hover {\\n  color: #23a8a8;\\n}\\n.ant-typography a:focus {\\n  text-decoration: underline;\\n  text-decoration-skip-ink: auto;\\n}\\n.ant-typography a:active {\\n  color: #006d75;\\n}\\n.ant-typography a:active,\\n.ant-typography a:hover {\\n  text-decoration: none;\\n}\\n.ant-typography a[disabled] {\\n  color: rgba(0, 0, 0, 0.25);\\n  cursor: not-allowed;\\n  pointer-events: none;\\n}\\n.ant-typography code {\\n  margin: 0 0.2em;\\n  padding: 0.2em 0.4em 0.1em;\\n  font-size: 85%;\\n  background: rgba(0, 0, 0, 0.06);\\n  border: 1px solid rgba(0, 0, 0, 0.06);\\n  border-radius: 3px;\\n}\\n.ant-typography mark {\\n  padding: 0;\\n  background-color: #ffe58f;\\n}\\n.ant-typography u,\\n.ant-typography ins {\\n  text-decoration: underline;\\n  text-decoration-skip-ink: auto;\\n}\\n.ant-typography s,\\n.ant-typography del {\\n  text-decoration: line-through;\\n}\\n.ant-typography strong {\\n  font-weight: 600;\\n}\\n.ant-typography-expand,\\n.ant-typography-edit,\\n.ant-typography-copy {\\n  color: #08979c;\\n  text-decoration: none;\\n  outline: none;\\n  cursor: pointer;\\n  transition: color 0.3s;\\n  margin-left: 8px;\\n}\\n.ant-typography-expand:focus,\\n.ant-typography-edit:focus,\\n.ant-typography-copy:focus,\\n.ant-typography-expand:hover,\\n.ant-typography-edit:hover,\\n.ant-typography-copy:hover {\\n  color: #23a8a8;\\n}\\n.ant-typography-expand:focus,\\n.ant-typography-edit:focus,\\n.ant-typography-copy:focus {\\n  text-decoration: underline;\\n  text-decoration-skip-ink: auto;\\n}\\n.ant-typography-expand:active,\\n.ant-typography-edit:active,\\n.ant-typography-copy:active {\\n  color: #006d75;\\n}\\n.ant-typography-copy-success,\\n.ant-typography-copy-success:hover,\\n.ant-typography-copy-success:focus {\\n  color: #52c41a;\\n}\\n.ant-typography-edit-content {\\n  position: relative;\\n}\\n.ant-typography-edit-content-confirm {\\n  position: absolute;\\n  right: 10px;\\n  bottom: 8px;\\n  color: rgba(0, 0, 0, 0.45);\\n  pointer-events: none;\\n}\\n.ant-typography ul,\\n.ant-typography ol {\\n  margin: 0 0 1em 0;\\n  padding: 0;\\n}\\n.ant-typography ul li,\\n.ant-typography ol li {\\n  margin: 0 0 0 20px;\\n  padding: 0 0 0 4px;\\n}\\n.ant-typography ul li {\\n  list-style-type: circle;\\n}\\n.ant-typography ul li li {\\n  list-style-type: disc;\\n}\\n.ant-typography ol li {\\n  list-style-type: decimal;\\n}\\n.ant-typography-ellipsis-single-line {\\n  overflow: hidden;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n}\\n.ant-typography-ellipsis-multiple-line {\\n  display: -webkit-box;\\n  -webkit-line-clamp: 3;\\n  /*! autoprefixer: ignore next */\\n  -webkit-box-orient: vertical;\\n  overflow: hidden;\\n}\\n.ant-upload {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  outline: 0;\\n}\\n.ant-upload p {\\n  margin: 0;\\n}\\n.ant-upload-btn {\\n  display: block;\\n  width: 100%;\\n  outline: none;\\n}\\n.ant-upload input[type='file'] {\\n  cursor: pointer;\\n}\\n.ant-upload.ant-upload-select {\\n  display: inline-block;\\n}\\n.ant-upload.ant-upload-select-picture-card {\\n  display: table;\\n  width: 104px;\\n  height: 104px;\\n  margin-right: 8px;\\n  margin-bottom: 8px;\\n  text-align: center;\\n  vertical-align: top;\\n  background-color: #fafafa;\\n  border: 1px dashed #d9d9d9;\\n  border-radius: 4px;\\n  cursor: pointer;\\n  transition: border-color 0.3s ease;\\n}\\n.ant-upload.ant-upload-select-picture-card > .ant-upload {\\n  display: table-cell;\\n  width: 100%;\\n  height: 100%;\\n  padding: 8px;\\n  text-align: center;\\n  vertical-align: middle;\\n}\\n.ant-upload.ant-upload-select-picture-card:hover {\\n  border-color: #08979c;\\n}\\n.ant-upload.ant-upload-drag {\\n  position: relative;\\n  width: 100%;\\n  height: 100%;\\n  text-align: center;\\n  background: #fafafa;\\n  border: 1px dashed #d9d9d9;\\n  border-radius: 4px;\\n  cursor: pointer;\\n  transition: border-color 0.3s;\\n}\\n.ant-upload.ant-upload-drag .ant-upload {\\n  padding: 16px 0;\\n}\\n.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) {\\n  border: 2px dashed #23a8a8;\\n}\\n.ant-upload.ant-upload-drag.ant-upload-disabled {\\n  cursor: not-allowed;\\n}\\n.ant-upload.ant-upload-drag .ant-upload-btn {\\n  display: table;\\n  height: 100%;\\n}\\n.ant-upload.ant-upload-drag .ant-upload-drag-container {\\n  display: table-cell;\\n  vertical-align: middle;\\n}\\n.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover {\\n  border-color: #23a8a8;\\n}\\n.ant-upload.ant-upload-drag p.ant-upload-drag-icon {\\n  margin-bottom: 20px;\\n}\\n.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon {\\n  color: #23a8a8;\\n  font-size: 48px;\\n}\\n.ant-upload.ant-upload-drag p.ant-upload-text {\\n  margin: 0 0 4px;\\n  color: rgba(0, 0, 0, 0.85);\\n  font-size: 16px;\\n}\\n.ant-upload.ant-upload-drag p.ant-upload-hint {\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n}\\n.ant-upload.ant-upload-drag .anticon-plus {\\n  color: rgba(0, 0, 0, 0.25);\\n  font-size: 30px;\\n  transition: all 0.3s;\\n}\\n.ant-upload.ant-upload-drag .anticon-plus:hover {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-upload.ant-upload-drag:hover .anticon-plus {\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-upload-list {\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 0;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-size: 14px;\\n  font-variant: tabular-nums;\\n  line-height: 1.5;\\n  list-style: none;\\n  font-feature-settings: 'tnum';\\n  zoom: 1;\\n}\\n.ant-upload-list::before,\\n.ant-upload-list::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-upload-list::after {\\n  clear: both;\\n}\\n.ant-upload-list::before,\\n.ant-upload-list::after {\\n  content: '';\\n  display: table;\\n}\\n.ant-upload-list::after {\\n  clear: both;\\n}\\n.ant-upload-list-item {\\n  position: relative;\\n  height: 22px;\\n  margin-top: 8px;\\n  font-size: 14px;\\n}\\n.ant-upload-list-item-name {\\n  display: inline-block;\\n  width: 100%;\\n  padding-left: 22px;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n}\\n.ant-upload-list-item-info {\\n  height: 100%;\\n  padding: 0 12px 0 4px;\\n  transition: background-color 0.3s;\\n}\\n.ant-upload-list-item-info > span {\\n  display: block;\\n}\\n.ant-upload-list-item-info .anticon-loading,\\n.ant-upload-list-item-info .anticon-paper-clip {\\n  position: absolute;\\n  top: 5px;\\n  color: rgba(0, 0, 0, 0.45);\\n  font-size: 14px;\\n}\\n.ant-upload-list-item .anticon-close {\\n  display: inline-block;\\n  font-size: 12px;\\n  font-size: 10px \\\\9;\\n  transform: scale(0.83333333) rotate(0deg);\\n  position: absolute;\\n  top: 6px;\\n  right: 4px;\\n  color: rgba(0, 0, 0, 0.45);\\n  line-height: 0;\\n  cursor: pointer;\\n  opacity: 0;\\n  transition: all 0.3s;\\n}\\n:root .ant-upload-list-item .anticon-close {\\n  font-size: 12px;\\n}\\n.ant-upload-list-item .anticon-close:hover {\\n  color: rgba(0, 0, 0, 0.65);\\n}\\n.ant-upload-list-item:hover .ant-upload-list-item-info {\\n  background-color: #c5dbd8;\\n}\\n.ant-upload-list-item:hover .anticon-close {\\n  opacity: 1;\\n}\\n.ant-upload-list-item-error,\\n.ant-upload-list-item-error .anticon-paper-clip,\\n.ant-upload-list-item-error .ant-upload-list-item-name {\\n  color: #f5222d;\\n}\\n.ant-upload-list-item-error .anticon-close {\\n  color: #f5222d !important;\\n  opacity: 1;\\n}\\n.ant-upload-list-item-progress {\\n  position: absolute;\\n  bottom: -12px;\\n  width: 100%;\\n  padding-left: 26px;\\n  font-size: 14px;\\n  line-height: 0;\\n}\\n.ant-upload-list-picture .ant-upload-list-item,\\n.ant-upload-list-picture-card .ant-upload-list-item {\\n  position: relative;\\n  height: 66px;\\n  padding: 8px;\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n}\\n.ant-upload-list-picture .ant-upload-list-item:hover,\\n.ant-upload-list-picture-card .ant-upload-list-item:hover {\\n  background: transparent;\\n}\\n.ant-upload-list-picture .ant-upload-list-item-error,\\n.ant-upload-list-picture-card .ant-upload-list-item-error {\\n  border-color: #f5222d;\\n}\\n.ant-upload-list-picture .ant-upload-list-item-info,\\n.ant-upload-list-picture-card .ant-upload-list-item-info {\\n  padding: 0;\\n}\\n.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info,\\n.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {\\n  background: transparent;\\n}\\n.ant-upload-list-picture .ant-upload-list-item-uploading,\\n.ant-upload-list-picture-card .ant-upload-list-item-uploading {\\n  border-style: dashed;\\n}\\n.ant-upload-list-picture .ant-upload-list-item-thumbnail,\\n.ant-upload-list-picture-card .ant-upload-list-item-thumbnail {\\n  position: absolute;\\n  top: 8px;\\n  left: 8px;\\n  width: 48px;\\n  height: 48px;\\n  font-size: 26px;\\n  line-height: 54px;\\n  text-align: center;\\n  opacity: 0.8;\\n}\\n.ant-upload-list-picture .ant-upload-list-item-icon,\\n.ant-upload-list-picture-card .ant-upload-list-item-icon {\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  font-size: 26px;\\n  transform: translate(-50%, -50%);\\n}\\n.ant-upload-list-picture .ant-upload-list-item-thumbnail img,\\n.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img {\\n  display: block;\\n  width: 48px;\\n  height: 48px;\\n  overflow: hidden;\\n}\\n.ant-upload-list-picture .ant-upload-list-item-name,\\n.ant-upload-list-picture-card .ant-upload-list-item-name {\\n  display: inline-block;\\n  box-sizing: border-box;\\n  max-width: 100%;\\n  margin: 0 0 0 8px;\\n  padding-right: 8px;\\n  padding-left: 48px;\\n  overflow: hidden;\\n  line-height: 44px;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n  transition: all 0.3s;\\n}\\n.ant-upload-list-picture .ant-upload-list-item-uploading .ant-upload-list-item-name,\\n.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-name {\\n  line-height: 28px;\\n}\\n.ant-upload-list-picture .ant-upload-list-item-progress,\\n.ant-upload-list-picture-card .ant-upload-list-item-progress {\\n  bottom: 14px;\\n  width: calc(100% - 24px);\\n  margin-top: 0;\\n  padding-left: 56px;\\n}\\n.ant-upload-list-picture .anticon-close,\\n.ant-upload-list-picture-card .anticon-close {\\n  position: absolute;\\n  top: 8px;\\n  right: 8px;\\n  line-height: 1;\\n  opacity: 1;\\n}\\n.ant-upload-list-picture-card {\\n  float: left;\\n}\\n.ant-upload-list-picture-card.ant-upload-list::after {\\n  display: none;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item {\\n  float: left;\\n  width: 104px;\\n  height: 104px;\\n  margin: 0 8px 8px 0;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-info {\\n  position: relative;\\n  height: 100%;\\n  overflow: hidden;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-info::before {\\n  position: absolute;\\n  z-index: 1;\\n  width: 100%;\\n  height: 100%;\\n  background-color: rgba(0, 0, 0, 0.5);\\n  opacity: 0;\\n  transition: all 0.3s;\\n  content: ' ';\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info::before {\\n  opacity: 1;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-actions {\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  z-index: 10;\\n  white-space: nowrap;\\n  transform: translate(-50%, -50%);\\n  opacity: 0;\\n  transition: all 0.3s;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o,\\n.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {\\n  z-index: 10;\\n  width: 16px;\\n  margin: 0 4px;\\n  color: rgba(255, 255, 255, 0.85);\\n  font-size: 16px;\\n  cursor: pointer;\\n  transition: all 0.3s;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye-o:hover,\\n.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover {\\n  color: #fff;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-info:hover + .ant-upload-list-item-actions,\\n.ant-upload-list-picture-card .ant-upload-list-item-actions:hover {\\n  opacity: 1;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-thumbnail,\\n.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img {\\n  position: static;\\n  display: block;\\n  width: 100%;\\n  height: 100%;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-name {\\n  display: none;\\n  margin: 8px 0 0;\\n  padding: 0;\\n  line-height: 1.5;\\n  text-align: center;\\n}\\n.ant-upload-list-picture-card .anticon-picture + .ant-upload-list-item-name {\\n  display: block;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item {\\n  background-color: #fafafa;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info {\\n  height: auto;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info::before,\\n.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-eye-o,\\n.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-delete {\\n  display: none;\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-uploading-text {\\n  margin-top: 18px;\\n  color: rgba(0, 0, 0, 0.45);\\n}\\n.ant-upload-list-picture-card .ant-upload-list-item-progress {\\n  bottom: 32px;\\n  padding-left: 0;\\n}\\n.ant-upload-list .ant-upload-success-icon {\\n  color: #52c41a;\\n  font-weight: bold;\\n}\\n.ant-upload-list .ant-upload-animate-enter,\\n.ant-upload-list .ant-upload-animate-leave,\\n.ant-upload-list .ant-upload-animate-inline-enter,\\n.ant-upload-list .ant-upload-animate-inline-leave {\\n  animation-duration: 0.3s;\\n  animation-fill-mode: cubic-bezier(0.78, 0.14, 0.15, 0.86);\\n}\\n.ant-upload-list .ant-upload-animate-enter {\\n  animation-name: uploadAnimateIn;\\n}\\n.ant-upload-list .ant-upload-animate-leave {\\n  animation-name: uploadAnimateOut;\\n}\\n.ant-upload-list .ant-upload-animate-inline-enter {\\n  animation-name: uploadAnimateInlineIn;\\n}\\n.ant-upload-list .ant-upload-animate-inline-leave {\\n  animation-name: uploadAnimateInlineOut;\\n}\\n@keyframes uploadAnimateIn {\\n  from {\\n    height: 0;\\n    margin: 0;\\n    padding: 0;\\n    opacity: 0;\\n  }\\n}\\n@keyframes uploadAnimateOut {\\n  to {\\n    height: 0;\\n    margin: 0;\\n    padding: 0;\\n    opacity: 0;\\n  }\\n}\\n@keyframes uploadAnimateInlineIn {\\n  from {\\n    width: 0;\\n    height: 0;\\n    margin: 0;\\n    padding: 0;\\n    opacity: 0;\\n  }\\n}\\n@keyframes uploadAnimateInlineOut {\\n  to {\\n    width: 0;\\n    height: 0;\\n    margin: 0;\\n    padding: 0;\\n    opacity: 0;\\n  }\\n}\\n.rde-editor {\\n  overflow: hidden;\\n  display: -webkit-box;\\n  display: -ms-flexbox;\\n  display: flex;\\n  flex: 1;\\n}\\n.rde-editor-items {\\n  position: relative;\\n  width: 240px;\\n  -webkit-box-shadow: 5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: 5px 0 5px -5px rgba(56, 41, 41, 0.5);\\n  box-shadow: 5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n  z-index: 900;\\n  transition: width .5s ease;\\n}\\n.rde-editor-items:hover .rde-track-vertical {\\n  opacity: 1;\\n  z-index: 9999;\\n}\\n.rde-editor-items.minimize {\\n  width: 47px;\\n}\\n.rde-editor-items .ant-collapse-content-box {\\n  padding: 0;\\n}\\n.rde-editor-items-item {\\n  display: flex;\\n  height: 40px;\\n  align-items: center;\\n  transition: .5s ease;\\n  border: 0 solid transparent;\\n  position: relative;\\n  background: #fff;\\n  cursor: pointer;\\n}\\n.rde-editor-items-item-icon {\\n  padding: 0 8px;\\n  font-size: 1.5em;\\n  width: 40px;\\n  display: flex;\\n  justify-content: center;\\n}\\n.rde-editor-items-item-text {\\n  padding: 0 8px;\\n  font-size: 14px;\\n  font-weight: 500;\\n}\\n.rde-editor-items-item:hover {\\n  background: rgba(0, 0, 0, 0.2);\\n  box-shadow: 0 0 11px rgba(33, 33, 33, 0.2);\\n}\\n.rde-editor-items-item:not(:last-child):after {\\n  background-color: #e8e8e8;\\n  position: absolute;\\n  bottom: 0;\\n  width: 100%;\\n  height: 1px;\\n  content: \\\"\\\";\\n}\\n.rde-editor-canvas {\\n  position: relative;\\n  -webkit-box-flex: 1;\\n  -ms-flex: 1;\\n  flex: 1;\\n}\\n.rde-editor-canvas .rde-canvas {\\n  position: absolute;\\n  width: 100%;\\n  height: 100%;\\n  top: 0;\\n  left: 0;\\n}\\n.rde-editor-canvas .rde-canvas iframe {\\n  pointer-events: none;\\n}\\n.rde-editor-toolbar-debug {\\n  background: rgba(0, 0, 0, 0.25);\\n  position: absolute;\\n  display: block;\\n  top: 30px;\\n  left: 40px;\\n  border-radius: 12px;\\n  -webkit-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n}\\n.rde-editor-toolbar-interaction {\\n  color: #fff;\\n  background: rgba(0, 0, 0, 0.25);\\n  position: absolute;\\n  display: block;\\n  bottom: 30px;\\n  left: 40px;\\n  border-radius: 12px;\\n  -webkit-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n}\\n.rde-editor-toolbar-zoom {\\n  background: rgba(0, 0, 0, 0.25);\\n  position: absolute;\\n  display: block;\\n  bottom: 30px;\\n  left: 150px;\\n  border-radius: 12px;\\n  -webkit-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n}\\n.rde-editor-properties {\\n  position: absolute;\\n  overflow-y: auto;\\n  width: 400px;\\n  right: 0;\\n  height: 100%;\\n  background: rgba(255, 255, 255, 0.85);\\n  -webkit-box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n}\\n.rde-editor-properties:hover .rde-track-vertical {\\n  opacity: 1;\\n  z-index: 9999;\\n}\\n.rde-editor-configurations {\\n  position: relative;\\n  overflow-y: auto;\\n  width: 400px;\\n  right: 0;\\n  -webkit-box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: -5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n  background: #fff;\\n  transition: width .5s ease;\\n}\\n.rde-editor-configurations.minimize {\\n  width: 60px;\\n}\\n.rde-editor-configurations .ant-tabs .ant-tabs-content {\\n  padding-right: 0;\\n  height: 100%;\\n}\\n.rde-editor-configurations .ant-tabs .ant-tabs-content .ant-tabs-tabpane {\\n  height: 100%;\\n}\\n.rde-editor-configurations .ant-list-item .ant-list-item-meta .ant-list-item-meta-content h4 {\\n  font-size: 16px;\\n  margin: 0;\\n}\\n.rde-editor-configurations .ant-list-item .ant-list-item-meta .ant-list-item-meta-content .ant-list-item-meta-description {\\n  font-size: 11px;\\n}\\n.rde-editor-configurations .ant-table .ant-table-content table {\\n  border: 0;\\n  background: transparent;\\n}\\n.rde-editor-configurations .ant-table .ant-table-content table tr.selected-item {\\n  background: rgba(0, 0, 0, 0.25);\\n}\\n.rde-editor-configurations .ant-table .ant-table-content table tr:hover td {\\n  cursor: pointer;\\n  background: rgba(0, 0, 0, 0.25);\\n}\\n.rde-editor-configurations .ant-table .ant-table-content .ant-table-placeholder {\\n  background: transparent;\\n  border-bottom: 0;\\n}\\n.rde-editor-configurations:hover .rde-track-vertical {\\n  opacity: 1;\\n  z-index: 9999;\\n}\\n.rde-editor-configurations-console-item {\\n  background-color: inherit;\\n  padding: 4px 0 0 0;\\n  animation: slide-up 0.4s ease-in-out;\\n}\\n.rde-editor-configurations-console-item-content {\\n  position: relative;\\n  max-height: 0;\\n  -moz-transition: max-height 0.5s;\\n  -ms-transition: max-height 0.5s;\\n  -o-transition: max-height 0.5s;\\n  -webkit-transition: max-height 0.5s;\\n  transition: max-height 0.5s;\\n  overflow: hidden;\\n}\\n.rde-editor-configurations-console-item-content.selected-item {\\n  max-height: 1000px;\\n}\\n.rde-editor-configurations-console-item-content .clipboard {\\n  position: absolute;\\n  top: 20px;\\n  right: 20px;\\n}\\n.rde-editor-configurations-console-item-content .popup {\\n  position: absolute;\\n  top: 20px;\\n  right: 50px;\\n}\\n.rde-editor-configurations-console-item.selected-item {\\n  background: rgba(0, 0, 0, 0.25);\\n  box-shadow: 0 0 11px rgba(33, 33, 33, 0.2);\\n}\\n.rde-editor-configurations-console-item:hover {\\n  cursor: pointer;\\n  background: rgba(0, 0, 0, 0.15);\\n  box-shadow: 0 0 11px rgba(33, 33, 33, 0.2);\\n}\\n.rde-editor-canvas-container {\\n  display: flex;\\n  flex: 1;\\n  flex-direction: column;\\n}\\n.rde-editor-header-toolbar {\\n  background: rgba(0, 0, 0, 0.05);\\n  transition: width 0.05s linear;\\n  display: flex;\\n  height: 40px;\\n  z-index: 800;\\n  -webkit-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar {\\n  display: flex;\\n  align-items: center;\\n  position: relative;\\n  margin-left: 4px;\\n  margin-right: 4px;\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar:not(:last-child):after {\\n  background-color: #fff;\\n  position: absolute;\\n  right: -5px;\\n  width: 1px;\\n  height: 20px;\\n  content: '';\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar-list:hover .rde-canvas-list {\\n  background: rgba(0, 0, 0, 0.05);\\n  display: block;\\n  z-index: 1;\\n  -webkit-animation: slide-right 0.3s linear;\\n  -moz-animation: slide-right 0.3s linear;\\n  animation: slide-right 0.3s linear;\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar-history {\\n  flex: 1;\\n  justify-content: flex-end;\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar-action {\\n  flex: 1;\\n  justify-content: flex-end;\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar .rde-canvas-list {\\n  position: absolute;\\n  display: none;\\n  width: 300px;\\n  height: -webkit-calc(100vh - 140px);\\n  height: -moz-calc(100vh - 140px);\\n  height: calc(100vh - 140px);\\n  top: 40px;\\n  left: -4px;\\n  z-index: 0;\\n  -webkit-box-shadow: 5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: 5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: 5px 0 5px -5px rgba(0, 0, 0, 0.5);\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar .rde-canvas-list-actions {\\n  border-bottom: 1px solid;\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar .rde-canvas-list-items {\\n  overflow-y: auto;\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar .rde-canvas-list-item {\\n  position: relative;\\n  margin: 8px 8px;\\n  text-align: center;\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar .rde-canvas-list-item-icon {\\n  margin: 0 8px 0 4px;\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar .rde-canvas-list-item-text {\\n  font-size: 16px;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n  overflow: hidden;\\n  flex: 1;\\n  text-align: left;\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar .rde-canvas-list-item-actions {\\n  margin: 0 4px 0 8px;\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar .rde-canvas-list-item.selected-item {\\n  background: rgba(0, 0, 0, 0.2);\\n  box-shadow: 0 0 11px rgba(33, 33, 33, 0.2);\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar .rde-canvas-list-item:hover {\\n  cursor: pointer;\\n  background: rgba(0, 0, 0, 0.2);\\n  box-shadow: 0 0 11px rgba(33, 33, 33, 0.2);\\n}\\n.rde-editor-header-toolbar-container .rde-canvas-toolbar .rde-canvas-list-item::after {\\n  position: absolute;\\n  left: 0;\\n  bottom: -4px;\\n  background: #fff;\\n  width: 100%;\\n  height: 1px;\\n  content: '';\\n}\\n.rde-editor-footer-toolbar {\\n  position: relative;\\n}\\n.rde-editor-footer-toolbar-interaction {\\n  color: #fff;\\n  background: rgba(0, 0, 0, 0.25);\\n  position: absolute;\\n  display: block;\\n  bottom: 30px;\\n  left: 40px;\\n  border-radius: 12px;\\n  -webkit-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n}\\n.rde-editor-footer-toolbar-zoom {\\n  background: rgba(0, 0, 0, 0.25);\\n  position: absolute;\\n  display: block;\\n  bottom: 30px;\\n  left: 150px;\\n  border-radius: 12px;\\n  -webkit-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n}\\n.rde-editor-footer-toolbar-preview {\\n  background: rgba(0, 0, 0, 0.25);\\n  position: absolute;\\n  display: block;\\n  bottom: 35px;\\n  right: 30px;\\n  border-radius: 12px;\\n  -webkit-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.5);\\n}\\n* {\\n  margin: 0;\\n  padding: 0;\\n}\\nhtml,\\nbody,\\n#root {\\n  height: 100%;\\n  width: 100%;\\n  overflow: hidden;\\n}\\nvideo {\\n  left: 0;\\n  top: 0;\\n}\\n.rde-main {\\n  overflow: hidden;\\n  display: -webkit-box;\\n  display: -ms-flexbox;\\n  display: flex;\\n  -webkit-box-orient: vertical;\\n  -webkit-box-direction: normal;\\n  -ms-flex-direction: column;\\n  flex-direction: column;\\n}\\n.rde-main .rde-title {\\n  position: absolute;\\n  width: 100%;\\n  height: 60px;\\n  display: -webkit-box;\\n  display: -ms-flexbox;\\n  display: flex;\\n  -webkit-box-shadow: 0 5px 5px -5px rgba(0, 0, 0, 0.5);\\n  -moz-box-shadow: 0 5px 5px -5px rgba(0, 0, 0, 0.5);\\n  box-shadow: 0 5px 5px -5px rgba(0, 0, 0, 0.5);\\n  z-index: 2000;\\n}\\n.rde-main .rde-content {\\n  padding-top: 60px;\\n}\\n.rde-main .rde-preview {\\n  position: absolute;\\n  transform: scale(0);\\n  transition: transform 0.3s linear;\\n  transform-origin: bottom right;\\n}\\n.rde-main .rde-preview.preview {\\n  width: 100%;\\n  transform: scale(1);\\n  background: #fff;\\n  z-index: 5000;\\n  top: 0;\\n  bottom: 0;\\n}\\n.rde-main .rde-preview-close-btn {\\n  position: absolute;\\n  top: 12px;\\n  right: 12px;\\n}\\n.rde-content-layout {\\n  overflow: hidden;\\n  width: 100%;\\n  height: 100%;\\n  background: #f2f4f8;\\n}\\n.rde-content-layout-title {\\n  width: 100%;\\n  height: 38px;\\n  background: rgba(217, 217, 217, 0.45);\\n  border-bottom: 1px solid #f3f3f3;\\n  line-height: 38px;\\n}\\n.rde-content-layout-title-title {\\n  justify-content: flex-start;\\n  margin-left: 30px;\\n  font-size: 20px;\\n  color: rgba(0, 0, 0, 0.65);\\n  font-weight: 500;\\n}\\n.rde-content-layout-title-title div {\\n  line-height: 35px;\\n}\\n.rde-content-layout-title-content {\\n  margin-left: 60px;\\n}\\n.rde-content-layout-title-action {\\n  margin-right: 12px;\\n}\\n.rde-content-layout-main {\\n  padding: 20px;\\n}\\n.rde-content-layout-sider {\\n  background: #f3f3f3;\\n  border-right: 1px solid #f3f3f3;\\n}\\n.rde-content-layout-sider .ant-tree {\\n  margin: 5px 0;\\n}\\n.rde-content-layout-sider .ant-tree li {\\n  padding: 0;\\n}\\n.rde-content-layout-sider .ant-tree .ant-tag {\\n  width: 18px;\\n  height: 18px;\\n  line-height: 16px;\\n  font-size: 8px;\\n  padding: 0 4px;\\n  opacity: 0.8;\\n}\\n.rde-content-layout-sider .ant-tree .ant-badge {\\n  opacity: 0.8;\\n  margin-left: 8px;\\n}\\n.rde-content-layout .ant-layout {\\n  background: #f2f4f8;\\n}\\n.ant-btn[disabled] {\\n  background: transparent;\\n  border-color: transparent;\\n}\\n.ant-btn.rde-action-button {\\n  background: transparent;\\n  border-color: transparent;\\n}\\n.ant-btn.rde-action-button.ant-btn-danger {\\n  color: #f04134;\\n}\\n.ant-btn.rde-action-button.ant-btn-danger:focus {\\n  color: #f04134;\\n  background: unset;\\n  border-color: transparent;\\n}\\n.ant-btn.rde-action-button.ant-btn-danger:hover {\\n  color: #fff;\\n  background-color: #f46e65;\\n  border-color: #f46e65;\\n}\\n.ant-btn.rde-action-button:focus {\\n  color: unset;\\n  background: unset;\\n  border-color: transparent;\\n}\\n.ant-btn.rde-action-button:hover {\\n  background: rgba(219, 234, 251, 0.85);\\n  border-color: transparent;\\n}\\n.rde-action-btn {\\n  background: transparent;\\n  border: transparent;\\n}\\n.rde-action-btn button {\\n  background: transparent !important;\\n  border-color: transparent !important;\\n  border: unset;\\n}\\n.rde-action-btn:hover {\\n  background: transparent;\\n  border: transparent;\\n}\\n.rde-action-btn:focus {\\n  background: transparent;\\n  border: transparent;\\n}\\n.rde-icon-container {\\n  border-radius: 4px;\\n  margin: 8px;\\n  text-align: center;\\n  cursor: pointer;\\n}\\n.rde-icon-container .rde-icon-top {\\n  transition: 0.5s ease;\\n  color: inherit;\\n  background-color: transparent;\\n  border-top-left-radius: 4px;\\n  border-top-right-radius: 4px;\\n}\\n.rde-icon-container .rde-icon-top i {\\n  margin: 8px 0 8px 0;\\n}\\n.rde-icon-container .rde-icon-top:hover,\\n.rde-icon-container .rde-icon-top:focus {\\n  background-color: #4dabf7;\\n  color: #fff;\\n}\\n.rde-icon-container .rde-icon-bottom {\\n  transition: 0.5s ease;\\n  color: #adb5bd;\\n  font-size: 0.8rem;\\n  border-bottom-left-radius: 4px;\\n  border-bottom-right-radius: 4px;\\n}\\n.rde-icon-container .rde-icon-bottom:hover,\\n.rde-icon-container .rde-icon-bottomfoucs {\\n  background-color: rgba(0, 0, 0, 0.2);\\n  color: #495057;\\n}\\n.rde-action-tag {\\n  width: 32px;\\n  padding: 0;\\n  font-size: 16px;\\n  border-radius: 50%;\\n  height: 32px;\\n  text-align: center;\\n  padding-top: 4px;\\n}\\n.rde-action-tag.ant-tag-checkable {\\n  border: 1px solid #d9d9d9;\\n}\\n.rde-editable-cell {\\n  padding: 5px 12px;\\n  cursor: pointer;\\n}\\n.rde-editable-cell:hover {\\n  border: 1px solid #d9d9d9;\\n  border-radius: 4px;\\n  padding: 4px 11px;\\n}\\n[draggable] {\\n  -moz-user-select: none;\\n  -khtml-user-select: none;\\n  -webkit-user-select: none;\\n  user-select: none;\\n  -khtml-user-drag: element;\\n  -webkit-user-drag: element;\\n  cursor: pointer;\\n}\\n.rde-track-vertical {\\n  right: 0px;\\n  bottom: 2px;\\n  top: 2px;\\n  border-radius: 3px;\\n  opacity: 0;\\n}\\n.rde-shortcut-help {\\n  display: flex;\\n  justify-content: space-around;\\n}\\n.rde-shortcut-help-list {\\n  list-style: none;\\n  margin: 0;\\n  padding: 0 0 10px;\\n  width: 350px;\\n}\\n.rde-shortcut-help-list li {\\n  margin-right: 40px;\\n}\\n.rde-shortcut-help-key {\\n  line-height: 1.8;\\n  margin-right: 2em;\\n  padding: 5px 0;\\n}\\n.rde-shortcut-help-key span {\\n  background-color: #fefefe;\\n  background-repeat: repeat-x;\\n  border: 1px solid #666;\\n  border-radius: 3px;\\n  box-shadow: 0 0 5px #7e7e7e;\\n  color: #3a3a3a;\\n  display: inline-block;\\n  font-size: 12px;\\n  padding: 0 8px;\\n  text-align: center;\\n}\\n.rde-shortcut-help-key-unit {\\n  bottom: 2px;\\n  margin-right: 4px;\\n  min-width: 60px;\\n  position: relative;\\n}\\n.rde-shortcut-help-key-def {\\n  color: #3a3a3a;\\n  display: inline-block;\\n  margin-left: 1em;\\n}\\n@-moz-keyframes visibility {\\n  0% {\\n    opacity: 0;\\n  }\\n  50% {\\n    opacity: 0.5;\\n  }\\n  100% {\\n    opacity: 1;\\n  }\\n}\\n@-webkit-keyframes visibility {\\n  0% {\\n    opacity: 0;\\n  }\\n  50% {\\n    opacity: 0.5;\\n  }\\n  100% {\\n    opacity: 1;\\n  }\\n}\\n@keyframes visibility {\\n  0% {\\n    opacity: 0;\\n  }\\n  50% {\\n    opacity: 0.5;\\n  }\\n  100% {\\n    opacity: 1;\\n  }\\n}\\n@-webkit-keyframes slide-right {\\n  0% {\\n    opacity: 0;\\n    -webkit-transform: translateX(-100%);\\n  }\\n  50% {\\n    opacity: 0;\\n    -webkit-transform: translateX(-50%);\\n  }\\n  100% {\\n    opacity: 1;\\n    transform: translateX(0);\\n  }\\n}\\n@-moz-keyframes slide-right {\\n  0% {\\n    opacity: 0;\\n    -moz-transform: translateX(-100%);\\n  }\\n  50% {\\n    opacity: 0;\\n    -webkit-transform: translateX(-50%);\\n  }\\n  100% {\\n    opacity: 1;\\n    transform: translateX(0);\\n  }\\n}\\n@keyframes slide-right {\\n  0% {\\n    opacity: 0;\\n    -moz-transform: translateX(-100%);\\n  }\\n  50% {\\n    opacity: 0;\\n    -webkit-transform: translateX(-50%);\\n  }\\n  100% {\\n    opacity: 1;\\n    transform: translateX(0);\\n  }\\n}\\n/* abril-fatface-regular - latin */\\n@font-face {\\n  font-family: 'Abril Fatface';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Abril Fatface'), local('AbrilFatface-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* alegreya-sans-regular - latin */\\n@font-face {\\n  font-family: 'Alegreya Sans';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Alegreya Sans Regular'), local('AlegreyaSans-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* alegreya-regular - latin */\\n@font-face {\\n  font-family: 'Alegreya';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Alegreya Regular'), local('Alegreya-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* amatic-sc-regular - latin */\\n@font-face {\\n  font-family: 'Amatic SC';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_18___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Amatic SC Regular'), local('AmaticSC-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_19___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_20___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_21___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_22___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_23___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* eb-garamond-regular - latin */\\n@font-face {\\n  font-family: 'EB Garamond';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_24___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('EB Garamond Regular'), local('EBGaramond-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_25___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_26___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_27___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_28___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_29___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* fjalla-one-regular - latin */\\n@font-face {\\n  font-family: 'Fjalla One';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_30___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Fjalla One'), local('FjallaOne-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_31___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_32___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_33___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_34___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_35___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* josefin-sans-regular - latin */\\n@font-face {\\n  font-family: 'Josefin Sans';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_36___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Josefin Sans Regular'), local('JosefinSans-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_37___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_38___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_39___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_40___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_41___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* lato-regular - latin */\\n@font-face {\\n  font-family: 'Lato';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_42___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Lato Regular'), local('Lato-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_43___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_44___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_45___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_46___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_47___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* merriweather-regular - latin */\\n@font-face {\\n  font-family: 'Merriweather';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_48___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Merriweather Regular'), local('Merriweather-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_49___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_50___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_51___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_52___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_53___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* montserrat-regular - latin */\\n@font-face {\\n  font-family: 'Montserrat';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_54___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Montserrat Regular'), local('Montserrat-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_55___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_56___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_57___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_58___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_59___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* noto-sans-regular - latin */\\n@font-face {\\n  font-family: 'Noto Sans';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_60___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Noto Sans'), local('NotoSans'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_61___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_62___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_63___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_64___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_65___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* open-sans-condensed-300 - latin */\\n@font-face {\\n  font-family: 'Open Sans Condensed';\\n  font-style: normal;\\n  font-weight: 300;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_66___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Open Sans Condensed Light'), local('OpenSansCondensed-Light'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_67___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_68___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_69___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_70___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_71___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* open-sans-regular - latin */\\n@font-face {\\n  font-family: 'Open Sans';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_72___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Open Sans Regular'), local('OpenSans-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_73___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_74___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_75___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_76___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_77___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* oswald-regular - latin */\\n@font-face {\\n  font-family: 'Oswald';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_78___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Oswald Regular'), local('Oswald-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_79___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_80___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_81___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_82___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_83___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* playfair-display-regular - latin */\\n@font-face {\\n  font-family: 'Playfair Display';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_84___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Playfair Display Regular'), local('PlayfairDisplay-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_85___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_86___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_87___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_88___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_89___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* pt-sans-narrow-regular - latin */\\n@font-face {\\n  font-family: 'PT Sans Narrow';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_90___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('PT Sans Narrow'), local('PTSans-Narrow'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_91___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_92___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_93___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_94___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_95___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* pt-sans-regular - latin */\\n@font-face {\\n  font-family: 'PT Sans';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_96___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('PT Sans'), local('PTSans-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_97___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_98___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_99___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_100___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_101___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* raleway-regular - latin */\\n@font-face {\\n  font-family: 'Raleway';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_102___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Raleway'), local('Raleway-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_103___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_104___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_105___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_106___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_107___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* roboto-mono-regular - latin */\\n@font-face {\\n  font-family: 'Roboto Mono';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_108___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Roboto Mono'), local('RobotoMono-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_109___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_110___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_111___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_112___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_113___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* roboto-slab-regular - latin */\\n@font-face {\\n  font-family: 'Roboto Slab';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_114___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_115___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_116___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_117___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_118___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_119___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* roboto-regular - latin */\\n@font-face {\\n  font-family: 'Roboto';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_120___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Roboto'), local('Roboto-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_121___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_122___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_123___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_124___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_125___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n/* source-sans-pro-regular - latin */\\n@font-face {\\n  font-family: 'Source Sans Pro';\\n  font-style: normal;\\n  font-weight: 400;\\n  src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_126___ + \");\\n  /* IE9 Compat Modes */\\n  src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_127___ + \") format('embedded-opentype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_128___ + \") format('woff2'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_129___ + \") format('woff'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_130___ + \") format('truetype'),  url(\" + ___CSS_LOADER_URL_REPLACEMENT_131___ + \") format('svg');\\n  /* Legacy iOS */\\n}\\n.ant-spin-nested-loading > div > .ant-spin {\\n  position: absolute;\\n  max-height: 100%;\\n}\\n.ant-tabs .ant-tabs-bar {\\n  margin: 0;\\n}\\n.ant-tabs .ant-tabs-content {\\n  height: -webkit-calc(100% - 44px);\\n  height: -moz-calc(100% - 44px);\\n  height: calc(100% - 44px);\\n}\\n.ant-tabs .ant-tabs-content .ant-tabs-tabpane {\\n  overflow-y: auto;\\n}\\n.has-error .ant-input {\\n  box-shadow: none !important;\\n}\\n.ant-form label {\\n  font-size: 12px;\\n}\\n.ant-form-item {\\n  margin-bottom: 0px;\\n}\\n.ant-input {\\n  outline: none;\\n  border: 0;\\n  border-radius: 0;\\n  border-bottom: 1px solid #d9d9d9;\\n  background-color: transparent;\\n}\\n.ant-input:focus {\\n  box-shadow: none;\\n}\\n.ant-input-number {\\n  outline: none;\\n  border: 0;\\n  border-radius: 0;\\n  border-bottom: 1px solid #d9d9d9;\\n  background-color: transparent;\\n}\\n.ant-input-number:focus {\\n  box-shadow: none;\\n}\\n.ant-input-number-focused {\\n  box-shadow: none;\\n  border-bottom: 1px solid #23a8a8;\\n}\\n.sketch-picker {\\n  padding: 0 !important;\\n  box-shadow: unset !important;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n\n\n/***/ }),\n/* 1383 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/d702c3b1183b46337bae4cc4918fe614.eot\");\n\n/***/ }),\n/* 1384 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/1d5ad1d09ede0d8412433a42533f27d3.woff2\");\n\n/***/ }),\n/* 1385 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/c4c0c9429c30715c76275d5d3354bea4.woff\");\n\n/***/ }),\n/* 1386 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/7f76cf6a1b834d95233525362bc5678c.ttf\");\n\n/***/ }),\n/* 1387 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/b96dc2e87a6e3756765cedf37d9152db.svg\");\n\n/***/ }),\n/* 1388 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/e8bbbf2c689c434a253a622618975217.eot\");\n\n/***/ }),\n/* 1389 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/519d275306221a976adaa8c37af61ec0.woff2\");\n\n/***/ }),\n/* 1390 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/55a153492b7c16c1b6e13e7d9c38129e.woff\");\n\n/***/ }),\n/* 1391 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/fe345ddc9f3a2fd0379c2124ef00c11c.ttf\");\n\n/***/ }),\n/* 1392 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/def93cff0c7e05f7165f5c77555f78b9.svg\");\n\n/***/ }),\n/* 1393 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/fec337956290334c2a24dd29410ccc68.eot\");\n\n/***/ }),\n/* 1394 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/372d513cf8e617e652a7695f5a5c2b50.woff2\");\n\n/***/ }),\n/* 1395 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/f928e70abc46ea2a19ca91545fd645d6.woff\");\n\n/***/ }),\n/* 1396 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/3cebcf4e6c0b316bda7b196fe6b6c109.ttf\");\n\n/***/ }),\n/* 1397 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/3bf6aa826f81bc28428846e6df32db6a.svg\");\n\n/***/ }),\n/* 1398 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/9b33a278597f10fd97c0b68928834f9a.eot\");\n\n/***/ }),\n/* 1399 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/10b4c16969c165fd6564c9aba0f70ba7.woff2\");\n\n/***/ }),\n/* 1400 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/3eaab0f59c9c6eab6b37746c17e85971.woff\");\n\n/***/ }),\n/* 1401 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/6aa885ee8df1bd34b1756488a23642b4.ttf\");\n\n/***/ }),\n/* 1402 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/91d102eaf9dee5fbeb0181c0f5bbb547.svg\");\n\n/***/ }),\n/* 1403 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/85e223daccdc88cf67c7335cd31dfb89.eot\");\n\n/***/ }),\n/* 1404 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/8552fc69e1dd3b6f500fb89717ab3b57.woff2\");\n\n/***/ }),\n/* 1405 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/00339138fe04154f58c0e481e9344036.woff\");\n\n/***/ }),\n/* 1406 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/e96e94517c11a48588a9fbfaded380ae.ttf\");\n\n/***/ }),\n/* 1407 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/023f6b0f912ace93310e1f12d7b81f59.svg\");\n\n/***/ }),\n/* 1408 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/39ab5aad23912e77a327af5ca1d316e9.eot\");\n\n/***/ }),\n/* 1409 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/807254fb1c654ab42c9fb253c385edfa.woff2\");\n\n/***/ }),\n/* 1410 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/449771156a0bebf25d3318333fbcdb7a.woff\");\n\n/***/ }),\n/* 1411 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/343ac79a2f8a42da54fc6bce1c164a79.ttf\");\n\n/***/ }),\n/* 1412 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/2580399211d2b4cfd8c6f130772f1672.svg\");\n\n/***/ }),\n/* 1413 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/30de16e2e17663dc41f9f7b1d87f30db.eot\");\n\n/***/ }),\n/* 1414 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/1d07caf4ae3390847ed5bd92258aac00.woff2\");\n\n/***/ }),\n/* 1415 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/efaf7edc59082b05a8c7b0ad9a50b93a.woff\");\n\n/***/ }),\n/* 1416 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/e52c353c1ce95f49dbc73c465185e8b5.ttf\");\n\n/***/ }),\n/* 1417 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/e27cdc80ba00a024a41d95928d708e33.svg\");\n\n/***/ }),\n/* 1418 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/5d92671aef0a4ada3c20a2787f651035.eot\");\n\n/***/ }),\n/* 1419 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/cd7c081289c3ce85d15d7c3c9cae49e2.woff2\");\n\n/***/ }),\n/* 1420 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/861cb1eb52649343e7638a042670a919.woff\");\n\n/***/ }),\n/* 1421 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/390098f3e105f0b93f65adda62da4b6f.ttf\");\n\n/***/ }),\n/* 1422 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/ec5307044f561bd0e346d2a1d9139d4e.svg\");\n\n/***/ }),\n/* 1423 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/d6b57030e61c2b8d8000ba600724d994.eot\");\n\n/***/ }),\n/* 1424 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/d11f9990f7d50aa994d8d79f26e4bf55.woff2\");\n\n/***/ }),\n/* 1425 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/d4b30e9df280a376a436f5fb4383ce90.woff\");\n\n/***/ }),\n/* 1426 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/3629881a572a8b87914f5d6ae3b71050.ttf\");\n\n/***/ }),\n/* 1427 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/584dcde2561d27d0b009b190d85161c2.svg\");\n\n/***/ }),\n/* 1428 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/d30ff382ccfe31135153c6cc85048cfb.eot\");\n\n/***/ }),\n/* 1429 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/504499c7e16ee847a32a7a8bf6923a79.woff2\");\n\n/***/ }),\n/* 1430 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/7710fcbaccd9837e1c5e7e819bf1d230.woff\");\n\n/***/ }),\n/* 1431 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/995cee680a6f49f2548d04c0300c293a.ttf\");\n\n/***/ }),\n/* 1432 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/22d8566c41c8d731931b58ae64f72170.svg\");\n\n/***/ }),\n/* 1433 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/cd45f20a370a3bb3dbcc7e65e2f20e1b.eot\");\n\n/***/ }),\n/* 1434 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/0f21a2f5d44e3ad76acb34710d7bc342.woff2\");\n\n/***/ }),\n/* 1435 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/9506993f27eb0b3f47151e1f9ffa6a1d.woff\");\n\n/***/ }),\n/* 1436 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/fcc35ed481274838553903b827db73c8.ttf\");\n\n/***/ }),\n/* 1437 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/ab6e42380f2a05e00234ca358b706581.svg\");\n\n/***/ }),\n/* 1438 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/ba07cfbbe37722e9fec0033843b3e116.eot\");\n\n/***/ }),\n/* 1439 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/f248d2fad011280c2d3ed1514a7698dd.woff2\");\n\n/***/ }),\n/* 1440 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/4811a01c1c4104078a1f2e249dac55d6.woff\");\n\n/***/ }),\n/* 1441 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/3627ff053e7be7f30d4dd3ec1265cebd.ttf\");\n\n/***/ }),\n/* 1442 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/1987df4bf3118050778590947fb9bc85.svg\");\n\n/***/ }),\n/* 1443 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/a356e361ee6765f3d6d4c1d4664f12ab.eot\");\n\n/***/ }),\n/* 1444 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/ec806460121999bcfb12bc264d46d41e.woff2\");\n\n/***/ }),\n/* 1445 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/87a454b233bedae23f8d1be11e8b4f68.woff\");\n\n/***/ }),\n/* 1446 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/61747992dd9a412e601e3defa3f3baa6.ttf\");\n\n/***/ }),\n/* 1447 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/1d0d8b66fa1da76d69b95b6d0ed5cca9.svg\");\n\n/***/ }),\n/* 1448 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/cfdef499dce5959a987225bf14d1e832.eot\");\n\n/***/ }),\n/* 1449 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/1c303a00c4d1453b19d223d3c9584598.woff2\");\n\n/***/ }),\n/* 1450 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/db318019bb0ad643911895c6d758f956.woff\");\n\n/***/ }),\n/* 1451 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/1fc68b28d332f381d7dc6ea131908d48.ttf\");\n\n/***/ }),\n/* 1452 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/21a7ee018a7da9225d2f4de680fca55b.svg\");\n\n/***/ }),\n/* 1453 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/7229436de2e14143a83512cea933bef3.eot\");\n\n/***/ }),\n/* 1454 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/ab76f448d0fe3fdf92285e3778956bc9.woff2\");\n\n/***/ }),\n/* 1455 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/0242d39c091519812641569fd8dcbb51.woff\");\n\n/***/ }),\n/* 1456 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/9ddc01131808d88683297b2e0b4d207a.ttf\");\n\n/***/ }),\n/* 1457 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/01235040ee962a4ab14ddf033f7f084e.svg\");\n\n/***/ }),\n/* 1458 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/17b3183d708c7a9915719ee0db2acec4.eot\");\n\n/***/ }),\n/* 1459 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/5ad4c4808bcb674b533305c18d58d724.woff2\");\n\n/***/ }),\n/* 1460 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/3cd0114975eaa8e9c3c0cb38e8f89132.woff\");\n\n/***/ }),\n/* 1461 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/f1f126c001a83b44a41c141aa4e42d3c.ttf\");\n\n/***/ }),\n/* 1462 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/576f2c25747cab2199fb1be1a3a64863.svg\");\n\n/***/ }),\n/* 1463 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/b523289417c944215beebfa10cc5aa89.eot\");\n\n/***/ }),\n/* 1464 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/070b269439953b54344dc2b0cc231f7e.woff2\");\n\n/***/ }),\n/* 1465 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/7d77968bb2d6005504dd3831b4ff5dca.woff\");\n\n/***/ }),\n/* 1466 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/072805fcbd74782af5db500cc9158e6c.ttf\");\n\n/***/ }),\n/* 1467 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/8b94e79c7f6c6d73b9a9831fe4ad43b4.svg\");\n\n/***/ }),\n/* 1468 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/a2d316b0df4c9bd02cfada4c44f40686.eot\");\n\n/***/ }),\n/* 1469 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/1408ce3e7444623962adbce36e59c6aa.woff2\");\n\n/***/ }),\n/* 1470 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/64c07b0dff2ecc2d492eee248a8963a7.woff\");\n\n/***/ }),\n/* 1471 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/5dda55edb6b9171f027c6d92f4c3d30f.ttf\");\n\n/***/ }),\n/* 1472 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/da7587ed9bc5a0aff3cb7cae81e8372b.svg\");\n\n/***/ }),\n/* 1473 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/6a448a94206d510e681c9281c8a4a834.eot\");\n\n/***/ }),\n/* 1474 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/f1dc10a756c2c544588b7408095ffed7.woff2\");\n\n/***/ }),\n/* 1475 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/a3246d29b40a8b0da142caea1bc84974.woff\");\n\n/***/ }),\n/* 1476 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/215adb34128fcb20668b963ec7926ef2.ttf\");\n\n/***/ }),\n/* 1477 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/27d4380fadf20e01f8e488a9c1a0cd00.svg\");\n\n/***/ }),\n/* 1478 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/5f092ea5c2d20399848a35add1c998a2.eot\");\n\n/***/ }),\n/* 1479 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/6872befb39ae4f8678391b584b5c73fa.woff2\");\n\n/***/ }),\n/* 1480 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/507e4906c8a526e19597335ee9821b17.woff\");\n\n/***/ }),\n/* 1481 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/81f30f7e618cf7de169bfde69cb1273d.ttf\");\n\n/***/ }),\n/* 1482 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/83ce5c5d982a0b679bb83d2d43ec21dc.svg\");\n\n/***/ }),\n/* 1483 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/1df558950e461ee8e0c15dd4d7a785bb.eot\");\n\n/***/ }),\n/* 1484 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/cb41c1e71debe927815c690f8bb471b0.woff2\");\n\n/***/ }),\n/* 1485 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/fbebe70817c0f48eb4ee894d68e5562f.woff\");\n\n/***/ }),\n/* 1486 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/cf27fb904103a7092df11a026c7c3089.ttf\");\n\n/***/ }),\n/* 1487 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/4f862c8ba4ed785461ee30cf79232437.svg\");\n\n/***/ }),\n/* 1488 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/461a6d24e335e07a72876366180767b3.eot\");\n\n/***/ }),\n/* 1489 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/96b158827eaacc5f7912648f2f99c752.woff2\");\n\n/***/ }),\n/* 1490 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/74ddb2b07a7f05bded6da1fb93301a05.woff\");\n\n/***/ }),\n/* 1491 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/b4e99e336932c4c0bb59c5fb77c56a69.ttf\");\n\n/***/ }),\n/* 1492 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"./fonts/3bb9538c509636d72200940443e23d48.svg\");\n\n/***/ }),\n/* 1493 */\n/***/ (function(module, exports) {\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 `_.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\nmodule.exports = baseHas;\n\n\n/***/ }),\n/* 1494 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar memoizeCapped = __webpack_require__(1495);\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\n\n/***/ }),\n/* 1495 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar memoize = __webpack_require__(1496);\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\n\n/***/ }),\n/* 1496 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MapCache = __webpack_require__(392);\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\n\n/***/ }),\n/* 1497 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseToString = __webpack_require__(1498);\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\n\n/***/ }),\n/* 1498 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(209),\n    arrayMap = __webpack_require__(452),\n    isArray = __webpack_require__(97),\n    isSymbol = __webpack_require__(251);\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\n\n/***/ }),\n/* 1499 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(1500), __esModule: true };\n\n/***/ }),\n/* 1500 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(636);\n__webpack_require__(1501);\nmodule.exports = __webpack_require__(109).Array.from;\n\n\n/***/ }),\n/* 1501 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ctx = __webpack_require__(436);\nvar $export = __webpack_require__(158);\nvar toObject = __webpack_require__(269);\nvar call = __webpack_require__(1502);\nvar isArrayIter = __webpack_require__(1503);\nvar toLength = __webpack_require__(635);\nvar createProperty = __webpack_require__(1504);\nvar getIterFn = __webpack_require__(1505);\n\n$export($export.S + $export.F * !__webpack_require__(1507)(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n\n\n/***/ }),\n/* 1502 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(222);\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n\n\n/***/ }),\n/* 1503 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// check on default Array iterator\nvar Iterators = __webpack_require__(270);\nvar ITERATOR = __webpack_require__(133)('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n/***/ }),\n/* 1504 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $defineProperty = __webpack_require__(160);\nvar createDesc = __webpack_require__(268);\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n\n\n/***/ }),\n/* 1505 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(1506);\nvar ITERATOR = __webpack_require__(133)('iterator');\nvar Iterators = __webpack_require__(270);\nmodule.exports = __webpack_require__(109).getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n/***/ }),\n/* 1506 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(438);\nvar TAG = __webpack_require__(133)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(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 (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n/* 1507 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ITERATOR = __webpack_require__(133)('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n\n\n/***/ }),\n/* 1508 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\n\n\nvar _assign = __webpack_require__(641);\n\n// -- Inlined from fbjs --\n\nvar emptyObject = {};\n\nif (false) {}\n\nvar validateFormat = function validateFormat(format) {};\n\nif (false) {}\n\nfunction _invariant(condition, format, a, b, c, d, e, f) {\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        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\nvar warning = function(){};\n\nif (false) { var printWarning; }\n\n// /-- Inlined from fbjs --\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n  return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (false) {} else {\n  ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n  /**\n   * Policies that describe methods in `ReactClassInterface`.\n   */\n\n  var injectedMixins = [];\n\n  /**\n   * Composite components are higher-level components that compose other composite\n   * or host components.\n   *\n   * To create a new type of `ReactClass`, pass a specification of\n   * your new class to `React.createClass`. The only requirement of your class\n   * specification is that you implement a `render` method.\n   *\n   *   var MyComponent = React.createClass({\n   *     render: function() {\n   *       return <div>Hello World</div>;\n   *     }\n   *   });\n   *\n   * The class specification supports a specific protocol of methods that have\n   * special meaning (e.g. `render`). See `ReactClassInterface` for\n   * more the comprehensive protocol. Any other properties and methods in the\n   * class specification will be available on the prototype.\n   *\n   * @interface ReactClassInterface\n   * @internal\n   */\n  var ReactClassInterface = {\n    /**\n     * An array of Mixin objects to include when defining your component.\n     *\n     * @type {array}\n     * @optional\n     */\n    mixins: 'DEFINE_MANY',\n\n    /**\n     * An object containing properties and methods that should be defined on\n     * the component's constructor instead of its prototype (static methods).\n     *\n     * @type {object}\n     * @optional\n     */\n    statics: 'DEFINE_MANY',\n\n    /**\n     * Definition of prop types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    propTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types for this component.\n     *\n     * @type {object}\n     * @optional\n     */\n    contextTypes: 'DEFINE_MANY',\n\n    /**\n     * Definition of context types this component sets for its children.\n     *\n     * @type {object}\n     * @optional\n     */\n    childContextTypes: 'DEFINE_MANY',\n\n    // ==== Definition methods ====\n\n    /**\n     * Invoked when the component is mounted. Values in the mapping will be set on\n     * `this.props` if that prop is not specified (i.e. using an `in` check).\n     *\n     * This method is invoked before `getInitialState` and therefore cannot rely\n     * on `this.state` or use `this.setState`.\n     *\n     * @return {object}\n     * @optional\n     */\n    getDefaultProps: 'DEFINE_MANY_MERGED',\n\n    /**\n     * Invoked once before the component is mounted. The return value will be used\n     * as the initial value of `this.state`.\n     *\n     *   getInitialState: function() {\n     *     return {\n     *       isOn: false,\n     *       fooBaz: new BazFoo()\n     *     }\n     *   }\n     *\n     * @return {object}\n     * @optional\n     */\n    getInitialState: 'DEFINE_MANY_MERGED',\n\n    /**\n     * @return {object}\n     * @optional\n     */\n    getChildContext: 'DEFINE_MANY_MERGED',\n\n    /**\n     * Uses props from `this.props` and state from `this.state` to render the\n     * structure of the component.\n     *\n     * No guarantees are made about when or how often this method is invoked, so\n     * it must not have side effects.\n     *\n     *   render: function() {\n     *     var name = this.props.name;\n     *     return <div>Hello, {name}!</div>;\n     *   }\n     *\n     * @return {ReactComponent}\n     * @required\n     */\n    render: 'DEFINE_ONCE',\n\n    // ==== Delegate methods ====\n\n    /**\n     * Invoked when the component is initially created and about to be mounted.\n     * This may have side effects, but any external subscriptions or data created\n     * by this method must be cleaned up in `componentWillUnmount`.\n     *\n     * @optional\n     */\n    componentWillMount: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component has been mounted and has a DOM representation.\n     * However, there is no guarantee that the DOM node is in the document.\n     *\n     * Use this as an opportunity to operate on the DOM when the component has\n     * been mounted (initialized and rendered) for the first time.\n     *\n     * @param {DOMElement} rootNode DOM element representing the component.\n     * @optional\n     */\n    componentDidMount: 'DEFINE_MANY',\n\n    /**\n     * Invoked before the component receives new props.\n     *\n     * Use this as an opportunity to react to a prop transition by updating the\n     * state using `this.setState`. Current props are accessed via `this.props`.\n     *\n     *   componentWillReceiveProps: function(nextProps, nextContext) {\n     *     this.setState({\n     *       likesIncreasing: nextProps.likeCount > this.props.likeCount\n     *     });\n     *   }\n     *\n     * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n     * transition may cause a state change, but the opposite is not true. If you\n     * need it, you are probably looking for `componentWillUpdate`.\n     *\n     * @param {object} nextProps\n     * @optional\n     */\n    componentWillReceiveProps: 'DEFINE_MANY',\n\n    /**\n     * Invoked while deciding if the component should be updated as a result of\n     * receiving new props, state and/or context.\n     *\n     * Use this as an opportunity to `return false` when you're certain that the\n     * transition to the new props/state/context will not require a component\n     * update.\n     *\n     *   shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n     *     return !equal(nextProps, this.props) ||\n     *       !equal(nextState, this.state) ||\n     *       !equal(nextContext, this.context);\n     *   }\n     *\n     * @param {object} nextProps\n     * @param {?object} nextState\n     * @param {?object} nextContext\n     * @return {boolean} True if the component should update.\n     * @optional\n     */\n    shouldComponentUpdate: 'DEFINE_ONCE',\n\n    /**\n     * Invoked when the component is about to update due to a transition from\n     * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n     * and `nextContext`.\n     *\n     * Use this as an opportunity to perform preparation before an update occurs.\n     *\n     * NOTE: You **cannot** use `this.setState()` in this method.\n     *\n     * @param {object} nextProps\n     * @param {?object} nextState\n     * @param {?object} nextContext\n     * @param {ReactReconcileTransaction} transaction\n     * @optional\n     */\n    componentWillUpdate: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component's DOM representation has been updated.\n     *\n     * Use this as an opportunity to operate on the DOM when the component has\n     * been updated.\n     *\n     * @param {object} prevProps\n     * @param {?object} prevState\n     * @param {?object} prevContext\n     * @param {DOMElement} rootNode DOM element representing the component.\n     * @optional\n     */\n    componentDidUpdate: 'DEFINE_MANY',\n\n    /**\n     * Invoked when the component is about to be removed from its parent and have\n     * its DOM representation destroyed.\n     *\n     * Use this as an opportunity to deallocate any external resources.\n     *\n     * NOTE: There is no `componentDidUnmount` since your component will have been\n     * destroyed by that point.\n     *\n     * @optional\n     */\n    componentWillUnmount: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillMount`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillReceiveProps`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n    /**\n     * Replacement for (deprecated) `componentWillUpdate`.\n     *\n     * @optional\n     */\n    UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n    // ==== Advanced methods ====\n\n    /**\n     * Updates the component's currently mounted DOM representation.\n     *\n     * By default, this implements React's rendering and reconciliation algorithm.\n     * Sophisticated clients may wish to override this.\n     *\n     * @param {ReactReconcileTransaction} transaction\n     * @internal\n     * @overridable\n     */\n    updateComponent: 'OVERRIDE_BASE'\n  };\n\n  /**\n   * Similar to ReactClassInterface but for static methods.\n   */\n  var ReactClassStaticInterface = {\n    /**\n     * This method is invoked after a component is instantiated and when it\n     * receives new props. Return an object to update state in response to\n     * prop changes. Return null to indicate no change to state.\n     *\n     * If an object is returned, its keys will be merged into the existing state.\n     *\n     * @return {object || null}\n     * @optional\n     */\n    getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n  };\n\n  /**\n   * Mapping from class specification keys to special processing functions.\n   *\n   * Although these are declared like instance properties in the specification\n   * when defining classes using `React.createClass`, they are actually static\n   * and are accessible on the constructor instead of the prototype. Despite\n   * being static, they must be defined outside of the \"statics\" key under\n   * which all other static methods are defined.\n   */\n  var RESERVED_SPEC_KEYS = {\n    displayName: function(Constructor, displayName) {\n      Constructor.displayName = displayName;\n    },\n    mixins: function(Constructor, mixins) {\n      if (mixins) {\n        for (var i = 0; i < mixins.length; i++) {\n          mixSpecIntoComponent(Constructor, mixins[i]);\n        }\n      }\n    },\n    childContextTypes: function(Constructor, childContextTypes) {\n      if (false) {}\n      Constructor.childContextTypes = _assign(\n        {},\n        Constructor.childContextTypes,\n        childContextTypes\n      );\n    },\n    contextTypes: function(Constructor, contextTypes) {\n      if (false) {}\n      Constructor.contextTypes = _assign(\n        {},\n        Constructor.contextTypes,\n        contextTypes\n      );\n    },\n    /**\n     * Special case getDefaultProps which should move into statics but requires\n     * automatic merging.\n     */\n    getDefaultProps: function(Constructor, getDefaultProps) {\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps = createMergedResultFunction(\n          Constructor.getDefaultProps,\n          getDefaultProps\n        );\n      } else {\n        Constructor.getDefaultProps = getDefaultProps;\n      }\n    },\n    propTypes: function(Constructor, propTypes) {\n      if (false) {}\n      Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n    },\n    statics: function(Constructor, statics) {\n      mixStaticSpecIntoComponent(Constructor, statics);\n    },\n    autobind: function() {}\n  };\n\n  function validateTypeDef(Constructor, typeDef, location) {\n    for (var propName in typeDef) {\n      if (typeDef.hasOwnProperty(propName)) {\n        // use a warning instead of an _invariant so components\n        // don't show up in prod but only in __DEV__\n        if (false) {}\n      }\n    }\n  }\n\n  function validateMethodOverride(isAlreadyDefined, name) {\n    var specPolicy = ReactClassInterface.hasOwnProperty(name)\n      ? ReactClassInterface[name]\n      : null;\n\n    // Disallow overriding of base class methods unless explicitly allowed.\n    if (ReactClassMixin.hasOwnProperty(name)) {\n      _invariant(\n        specPolicy === 'OVERRIDE_BASE',\n        'ReactClassInterface: You are attempting to override ' +\n          '`%s` from your class specification. Ensure that your method names ' +\n          'do not overlap with React methods.',\n        name\n      );\n    }\n\n    // Disallow defining methods more than once unless explicitly allowed.\n    if (isAlreadyDefined) {\n      _invariant(\n        specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n        'ReactClassInterface: You are attempting to define ' +\n          '`%s` on your component more than once. This conflict may be due ' +\n          'to a mixin.',\n        name\n      );\n    }\n  }\n\n  /**\n   * Mixin helper which handles policy validation and reserved\n   * specification keys when building React classes.\n   */\n  function mixSpecIntoComponent(Constructor, spec) {\n    if (!spec) {\n      if (false) { var isMixinValid, typeofSpec; }\n\n      return;\n    }\n\n    _invariant(\n      typeof spec !== 'function',\n      \"ReactClass: You're attempting to \" +\n        'use a component class or function as a mixin. Instead, just use a ' +\n        'regular object.'\n    );\n    _invariant(\n      !isValidElement(spec),\n      \"ReactClass: You're attempting to \" +\n        'use a component as a mixin. Instead, just use a regular object.'\n    );\n\n    var proto = Constructor.prototype;\n    var autoBindPairs = proto.__reactAutoBindPairs;\n\n    // By handling mixins before any other properties, we ensure the same\n    // chaining order is applied to methods with DEFINE_MANY policy, whether\n    // mixins are listed before or after these methods in the spec.\n    if (spec.hasOwnProperty(MIXINS_KEY)) {\n      RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n    }\n\n    for (var name in spec) {\n      if (!spec.hasOwnProperty(name)) {\n        continue;\n      }\n\n      if (name === MIXINS_KEY) {\n        // We have already handled mixins in a special case above.\n        continue;\n      }\n\n      var property = spec[name];\n      var isAlreadyDefined = proto.hasOwnProperty(name);\n      validateMethodOverride(isAlreadyDefined, name);\n\n      if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n        RESERVED_SPEC_KEYS[name](Constructor, property);\n      } else {\n        // Setup methods on prototype:\n        // The following member methods should not be automatically bound:\n        // 1. Expected ReactClass methods (in the \"interface\").\n        // 2. Overridden methods (that were mixed in).\n        var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n        var isFunction = typeof property === 'function';\n        var shouldAutoBind =\n          isFunction &&\n          !isReactClassMethod &&\n          !isAlreadyDefined &&\n          spec.autobind !== false;\n\n        if (shouldAutoBind) {\n          autoBindPairs.push(name, property);\n          proto[name] = property;\n        } else {\n          if (isAlreadyDefined) {\n            var specPolicy = ReactClassInterface[name];\n\n            // These cases should already be caught by validateMethodOverride.\n            _invariant(\n              isReactClassMethod &&\n                (specPolicy === 'DEFINE_MANY_MERGED' ||\n                  specPolicy === 'DEFINE_MANY'),\n              'ReactClass: Unexpected spec policy %s for key %s ' +\n                'when mixing in component specs.',\n              specPolicy,\n              name\n            );\n\n            // For methods which are defined more than once, call the existing\n            // methods before calling the new property, merging if appropriate.\n            if (specPolicy === 'DEFINE_MANY_MERGED') {\n              proto[name] = createMergedResultFunction(proto[name], property);\n            } else if (specPolicy === 'DEFINE_MANY') {\n              proto[name] = createChainedFunction(proto[name], property);\n            }\n          } else {\n            proto[name] = property;\n            if (false) {}\n          }\n        }\n      }\n    }\n  }\n\n  function mixStaticSpecIntoComponent(Constructor, statics) {\n    if (!statics) {\n      return;\n    }\n\n    for (var name in statics) {\n      var property = statics[name];\n      if (!statics.hasOwnProperty(name)) {\n        continue;\n      }\n\n      var isReserved = name in RESERVED_SPEC_KEYS;\n      _invariant(\n        !isReserved,\n        'ReactClass: You are attempting to define a reserved ' +\n          'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n          'as an instance property instead; it will still be accessible on the ' +\n          'constructor.',\n        name\n      );\n\n      var isAlreadyDefined = name in Constructor;\n      if (isAlreadyDefined) {\n        var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n          ? ReactClassStaticInterface[name]\n          : null;\n\n        _invariant(\n          specPolicy === 'DEFINE_MANY_MERGED',\n          'ReactClass: You are attempting to define ' +\n            '`%s` on your component more than once. This conflict may be ' +\n            'due to a mixin.',\n          name\n        );\n\n        Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n        return;\n      }\n\n      Constructor[name] = property;\n    }\n  }\n\n  /**\n   * Merge two objects, but throw if both contain the same key.\n   *\n   * @param {object} one The first object, which is mutated.\n   * @param {object} two The second object\n   * @return {object} one after it has been mutated to contain everything in two.\n   */\n  function mergeIntoWithNoDuplicateKeys(one, two) {\n    _invariant(\n      one && two && typeof one === 'object' && typeof two === 'object',\n      'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n    );\n\n    for (var key in two) {\n      if (two.hasOwnProperty(key)) {\n        _invariant(\n          one[key] === undefined,\n          'mergeIntoWithNoDuplicateKeys(): ' +\n            'Tried to merge two objects with the same key: `%s`. This conflict ' +\n            'may be due to a mixin; in particular, this may be caused by two ' +\n            'getInitialState() or getDefaultProps() methods returning objects ' +\n            'with clashing keys.',\n          key\n        );\n        one[key] = two[key];\n      }\n    }\n    return one;\n  }\n\n  /**\n   * Creates a function that invokes two functions and merges their return values.\n   *\n   * @param {function} one Function to invoke first.\n   * @param {function} two Function to invoke second.\n   * @return {function} Function that invokes the two argument functions.\n   * @private\n   */\n  function createMergedResultFunction(one, two) {\n    return function mergedResult() {\n      var a = one.apply(this, arguments);\n      var b = two.apply(this, arguments);\n      if (a == null) {\n        return b;\n      } else if (b == null) {\n        return a;\n      }\n      var c = {};\n      mergeIntoWithNoDuplicateKeys(c, a);\n      mergeIntoWithNoDuplicateKeys(c, b);\n      return c;\n    };\n  }\n\n  /**\n   * Creates a function that invokes two functions and ignores their return vales.\n   *\n   * @param {function} one Function to invoke first.\n   * @param {function} two Function to invoke second.\n   * @return {function} Function that invokes the two argument functions.\n   * @private\n   */\n  function createChainedFunction(one, two) {\n    return function chainedFunction() {\n      one.apply(this, arguments);\n      two.apply(this, arguments);\n    };\n  }\n\n  /**\n   * Binds a method to the component.\n   *\n   * @param {object} component Component whose method is going to be bound.\n   * @param {function} method Method to be bound.\n   * @return {function} The bound method.\n   */\n  function bindAutoBindMethod(component, method) {\n    var boundMethod = method.bind(component);\n    if (false) { var _bind, componentName; }\n    return boundMethod;\n  }\n\n  /**\n   * Binds all auto-bound methods in a component.\n   *\n   * @param {object} component Component whose method is going to be bound.\n   */\n  function bindAutoBindMethods(component) {\n    var pairs = component.__reactAutoBindPairs;\n    for (var i = 0; i < pairs.length; i += 2) {\n      var autoBindKey = pairs[i];\n      var method = pairs[i + 1];\n      component[autoBindKey] = bindAutoBindMethod(component, method);\n    }\n  }\n\n  var IsMountedPreMixin = {\n    componentDidMount: function() {\n      this.__isMounted = true;\n    }\n  };\n\n  var IsMountedPostMixin = {\n    componentWillUnmount: function() {\n      this.__isMounted = false;\n    }\n  };\n\n  /**\n   * Add more to the ReactClass base class. These are all legacy features and\n   * therefore not already part of the modern ReactComponent.\n   */\n  var ReactClassMixin = {\n    /**\n     * TODO: This will be deprecated because state should always keep a consistent\n     * type signature and the only use case for this, is to avoid that.\n     */\n    replaceState: function(newState, callback) {\n      this.updater.enqueueReplaceState(this, newState, callback);\n    },\n\n    /**\n     * Checks whether or not this composite component is mounted.\n     * @return {boolean} True if mounted, false otherwise.\n     * @protected\n     * @final\n     */\n    isMounted: function() {\n      if (false) {}\n      return !!this.__isMounted;\n    }\n  };\n\n  var ReactClassComponent = function() {};\n  _assign(\n    ReactClassComponent.prototype,\n    ReactComponent.prototype,\n    ReactClassMixin\n  );\n\n  /**\n   * Creates a composite component class given a class specification.\n   * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n   *\n   * @param {object} spec Class specification (which must define `render`).\n   * @return {function} Component constructor function.\n   * @public\n   */\n  function createClass(spec) {\n    // To keep our warnings more understandable, we'll use a little hack here to\n    // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n    // unnecessarily identify a class without displayName as 'Constructor'.\n    var Constructor = identity(function(props, context, updater) {\n      // This constructor gets overridden by mocks. The argument is used\n      // by mocks to assert on what gets mounted.\n\n      if (false) {}\n\n      // Wire up auto-binding\n      if (this.__reactAutoBindPairs.length) {\n        bindAutoBindMethods(this);\n      }\n\n      this.props = props;\n      this.context = context;\n      this.refs = emptyObject;\n      this.updater = updater || ReactNoopUpdateQueue;\n\n      this.state = null;\n\n      // ReactClasses doesn't have constructors. Instead, they use the\n      // getInitialState and componentWillMount methods for initialization.\n\n      var initialState = this.getInitialState ? this.getInitialState() : null;\n      if (false) {}\n      _invariant(\n        typeof initialState === 'object' && !Array.isArray(initialState),\n        '%s.getInitialState(): must return an object or null',\n        Constructor.displayName || 'ReactCompositeComponent'\n      );\n\n      this.state = initialState;\n    });\n    Constructor.prototype = new ReactClassComponent();\n    Constructor.prototype.constructor = Constructor;\n    Constructor.prototype.__reactAutoBindPairs = [];\n\n    injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n    mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n    mixSpecIntoComponent(Constructor, spec);\n    mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n    // Initialize the defaultProps property after all mixins have been merged.\n    if (Constructor.getDefaultProps) {\n      Constructor.defaultProps = Constructor.getDefaultProps();\n    }\n\n    if (false) {}\n\n    _invariant(\n      Constructor.prototype.render,\n      'createClass(...): Class specification must implement a `render` method.'\n    );\n\n    if (false) {}\n\n    // Reduce time spent doing lookups by setting these on the prototype.\n    for (var methodName in ReactClassInterface) {\n      if (!Constructor.prototype[methodName]) {\n        Constructor.prototype[methodName] = null;\n      }\n    }\n\n    return Constructor;\n  }\n\n  return createClass;\n}\n\nmodule.exports = factory;\n\n\n/***/ }),\n/* 1509 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _string = __webpack_require__(1510);\n\nvar _string2 = _interopRequireDefault(_string);\n\nvar _method = __webpack_require__(1516);\n\nvar _method2 = _interopRequireDefault(_method);\n\nvar _number = __webpack_require__(1517);\n\nvar _number2 = _interopRequireDefault(_number);\n\nvar _boolean = __webpack_require__(1518);\n\nvar _boolean2 = _interopRequireDefault(_boolean);\n\nvar _regexp = __webpack_require__(1519);\n\nvar _regexp2 = _interopRequireDefault(_regexp);\n\nvar _integer = __webpack_require__(1520);\n\nvar _integer2 = _interopRequireDefault(_integer);\n\nvar _float = __webpack_require__(1521);\n\nvar _float2 = _interopRequireDefault(_float);\n\nvar _array = __webpack_require__(1522);\n\nvar _array2 = _interopRequireDefault(_array);\n\nvar _object = __webpack_require__(1523);\n\nvar _object2 = _interopRequireDefault(_object);\n\nvar _enum = __webpack_require__(1524);\n\nvar _enum2 = _interopRequireDefault(_enum);\n\nvar _pattern = __webpack_require__(1525);\n\nvar _pattern2 = _interopRequireDefault(_pattern);\n\nvar _date = __webpack_require__(1526);\n\nvar _date2 = _interopRequireDefault(_date);\n\nvar _required = __webpack_require__(1527);\n\nvar _required2 = _interopRequireDefault(_required);\n\nvar _type = __webpack_require__(1528);\n\nvar _type2 = _interopRequireDefault(_type);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nexports['default'] = {\n  string: _string2['default'],\n  method: _method2['default'],\n  number: _number2['default'],\n  boolean: _boolean2['default'],\n  regexp: _regexp2['default'],\n  integer: _integer2['default'],\n  float: _float2['default'],\n  array: _array2['default'],\n  object: _object2['default'],\n  'enum': _enum2['default'],\n  pattern: _pattern2['default'],\n  date: _date2['default'],\n  url: _type2['default'],\n  hex: _type2['default'],\n  email: _type2['default'],\n  required: _required2['default']\n};\n\n/***/ }),\n/* 1510 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Performs validation for string types.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction string(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value, 'string') && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options, 'string');\n    if (!(0, _util.isEmptyValue)(value, 'string')) {\n      _rule2['default'].type(rule, value, source, errors, options);\n      _rule2['default'].range(rule, value, source, errors, options);\n      _rule2['default'].pattern(rule, value, source, errors, options);\n      if (rule.whitespace === true) {\n        _rule2['default'].whitespace(rule, value, source, errors, options);\n      }\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = string;\n\n/***/ }),\n/* 1511 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _util = __webpack_require__(70);\n\nvar util = _interopRequireWildcard(_util);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\n/**\n *  Rule for validating whitespace.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction whitespace(rule, value, source, errors, options) {\n  if (/^\\s+$/.test(value) || value === '') {\n    errors.push(util.format(options.messages.whitespace, rule.fullField));\n  }\n}\n\nexports['default'] = whitespace;\n\n/***/ }),\n/* 1512 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 _util = __webpack_require__(70);\n\nvar util = _interopRequireWildcard(_util);\n\nvar _required = __webpack_require__(647);\n\nvar _required2 = _interopRequireDefault(_required);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\n/* eslint max-len:0 */\n\nvar pattern = {\n  // http://emailregex.com/\n  email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n  url: new RegExp('^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$', 'i'),\n  hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i\n};\n\nvar types = {\n  integer: function integer(value) {\n    return types.number(value) && parseInt(value, 10) === value;\n  },\n  float: function float(value) {\n    return types.number(value) && !types.integer(value);\n  },\n  array: function array(value) {\n    return Array.isArray(value);\n  },\n  regexp: function regexp(value) {\n    if (value instanceof RegExp) {\n      return true;\n    }\n    try {\n      return !!new RegExp(value);\n    } catch (e) {\n      return false;\n    }\n  },\n  date: function date(value) {\n    return typeof value.getTime === 'function' && typeof value.getMonth === 'function' && typeof value.getYear === 'function';\n  },\n  number: function number(value) {\n    if (isNaN(value)) {\n      return false;\n    }\n    return typeof value === 'number';\n  },\n  object: function object(value) {\n    return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !types.array(value);\n  },\n  method: function method(value) {\n    return typeof value === 'function';\n  },\n  email: function email(value) {\n    return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255;\n  },\n  url: function url(value) {\n    return typeof value === 'string' && !!value.match(pattern.url);\n  },\n  hex: function hex(value) {\n    return typeof value === 'string' && !!value.match(pattern.hex);\n  }\n};\n\n/**\n *  Rule for validating the type of a value.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction type(rule, value, source, errors, options) {\n  if (rule.required && value === undefined) {\n    (0, _required2['default'])(rule, value, source, errors, options);\n    return;\n  }\n  var custom = ['integer', 'float', 'array', 'regexp', 'object', 'method', 'email', 'number', 'date', 'url', 'hex'];\n  var ruleType = rule.type;\n  if (custom.indexOf(ruleType) > -1) {\n    if (!types[ruleType](value)) {\n      errors.push(util.format(options.messages.types[ruleType], rule.fullField, rule.type));\n    }\n    // straight typeof check\n  } else if (ruleType && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== rule.type) {\n    errors.push(util.format(options.messages.types[ruleType], rule.fullField, rule.type));\n  }\n}\n\nexports['default'] = type;\n\n/***/ }),\n/* 1513 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _util = __webpack_require__(70);\n\nvar util = _interopRequireWildcard(_util);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\n/**\n *  Rule for validating minimum and maximum allowed values.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction range(rule, value, source, errors, options) {\n  var len = typeof rule.len === 'number';\n  var min = typeof rule.min === 'number';\n  var max = typeof rule.max === 'number';\n  // 正则匹配码点范围从U+010000一直到U+10FFFF的文字（补充平面Supplementary Plane）\n  var spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n  var val = value;\n  var key = null;\n  var num = typeof value === 'number';\n  var str = typeof value === 'string';\n  var arr = Array.isArray(value);\n  if (num) {\n    key = 'number';\n  } else if (str) {\n    key = 'string';\n  } else if (arr) {\n    key = 'array';\n  }\n  // if the value is not of a supported type for range validation\n  // the validation rule rule should use the\n  // type property to also test for a particular type\n  if (!key) {\n    return false;\n  }\n  if (arr) {\n    val = value.length;\n  }\n  if (str) {\n    // 处理码点大于U+010000的文字length属性不准确的bug，如\"𠮷𠮷𠮷\".lenght !== 3\n    val = value.replace(spRegexp, '_').length;\n  }\n  if (len) {\n    if (val !== rule.len) {\n      errors.push(util.format(options.messages[key].len, rule.fullField, rule.len));\n    }\n  } else if (min && !max && val < rule.min) {\n    errors.push(util.format(options.messages[key].min, rule.fullField, rule.min));\n  } else if (max && !min && val > rule.max) {\n    errors.push(util.format(options.messages[key].max, rule.fullField, rule.max));\n  } else if (min && max && (val < rule.min || val > rule.max)) {\n    errors.push(util.format(options.messages[key].range, rule.fullField, rule.min, rule.max));\n  }\n}\n\nexports['default'] = range;\n\n/***/ }),\n/* 1514 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _util = __webpack_require__(70);\n\nvar util = _interopRequireWildcard(_util);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar ENUM = 'enum';\n\n/**\n *  Rule for validating a value exists in an enumerable list.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, source, errors, options) {\n  rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n  if (rule[ENUM].indexOf(value) === -1) {\n    errors.push(util.format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', ')));\n  }\n}\n\nexports['default'] = enumerable;\n\n/***/ }),\n/* 1515 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _util = __webpack_require__(70);\n\nvar util = _interopRequireWildcard(_util);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\n/**\n *  Rule for validating a regular expression pattern.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction pattern(rule, value, source, errors, options) {\n  if (rule.pattern) {\n    if (rule.pattern instanceof RegExp) {\n      // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n      // flag is accidentally set to `true`, which in a validation scenario\n      // is not necessary and the result might be misleading\n      rule.pattern.lastIndex = 0;\n      if (!rule.pattern.test(value)) {\n        errors.push(util.format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n      }\n    } else if (typeof rule.pattern === 'string') {\n      var _pattern = new RegExp(rule.pattern);\n      if (!_pattern.test(value)) {\n        errors.push(util.format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));\n      }\n    }\n  }\n}\n\nexports['default'] = pattern;\n\n/***/ }),\n/* 1516 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Validates a function.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction method(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value) && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      _rule2['default'].type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = method;\n\n/***/ }),\n/* 1517 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Validates a number.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction number(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if (value === '') {\n      value = undefined;\n    }\n    if ((0, _util.isEmptyValue)(value) && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      _rule2['default'].type(rule, value, source, errors, options);\n      _rule2['default'].range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = number;\n\n/***/ }),\n/* 1518 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _util = __webpack_require__(70);\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Validates a boolean.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction boolean(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value) && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      _rule2['default'].type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = boolean;\n\n/***/ }),\n/* 1519 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Validates the regular expression type.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction regexp(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value) && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options);\n    if (!(0, _util.isEmptyValue)(value)) {\n      _rule2['default'].type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = regexp;\n\n/***/ }),\n/* 1520 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Validates a number is an integer.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction integer(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value) && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      _rule2['default'].type(rule, value, source, errors, options);\n      _rule2['default'].range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = integer;\n\n/***/ }),\n/* 1521 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Validates a number is a floating point number.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction floatFn(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value) && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      _rule2['default'].type(rule, value, source, errors, options);\n      _rule2['default'].range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = floatFn;\n\n/***/ }),\n/* 1522 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Validates an array.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction array(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value, 'array') && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options, 'array');\n    if (!(0, _util.isEmptyValue)(value, 'array')) {\n      _rule2['default'].type(rule, value, source, errors, options);\n      _rule2['default'].range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = array;\n\n/***/ }),\n/* 1523 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Validates an object.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction object(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value) && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      _rule2['default'].type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = object;\n\n/***/ }),\n/* 1524 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar ENUM = 'enum';\n\n/**\n *  Validates an enumerable list.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction enumerable(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value) && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options);\n    if (value) {\n      _rule2['default'][ENUM](rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = enumerable;\n\n/***/ }),\n/* 1525 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n *  Validates a regular expression pattern.\n *\n *  Performs validation when a rule only contains\n *  a pattern property but is not declared as a string type.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param callback The callback function.\n *  @param source The source object being validated.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nfunction pattern(rule, value, callback, source, options) {\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value, 'string') && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options);\n    if (!(0, _util.isEmptyValue)(value, 'string')) {\n      _rule2['default'].pattern(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = pattern;\n\n/***/ }),\n/* 1526 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction date(rule, value, callback, source, options) {\n  // console.log('integer rule called %j', rule);\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  // console.log('validate on %s value', value);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value) && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options);\n    if (!(0, _util.isEmptyValue)(value)) {\n      var dateObject = void 0;\n\n      if (typeof value === 'number') {\n        dateObject = new Date(value);\n      } else {\n        dateObject = value;\n      }\n\n      _rule2['default'].type(rule, dateObject, source, errors, options);\n      if (dateObject) {\n        _rule2['default'].range(rule, dateObject.getTime(), source, errors, options);\n      }\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = date;\n\n/***/ }),\n/* 1527 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction required(rule, value, callback, source, options) {\n  var errors = [];\n  var type = Array.isArray(value) ? 'array' : typeof value === 'undefined' ? 'undefined' : _typeof(value);\n  _rule2['default'].required(rule, value, source, errors, options, type);\n  callback(errors);\n}\n\nexports['default'] = required;\n\n/***/ }),\n/* 1528 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _rule = __webpack_require__(98);\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _util = __webpack_require__(70);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction type(rule, value, callback, source, options) {\n  var ruleType = rule.type;\n  var errors = [];\n  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);\n  if (validate) {\n    if ((0, _util.isEmptyValue)(value, ruleType) && !rule.required) {\n      return callback();\n    }\n    _rule2['default'].required(rule, value, source, errors, options, ruleType);\n    if (!(0, _util.isEmptyValue)(value, ruleType)) {\n      _rule2['default'].type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n}\n\nexports['default'] = type;\n\n/***/ }),\n/* 1529 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.newMessages = newMessages;\nfunction newMessages() {\n  return {\n    'default': 'Validation error on field %s',\n    required: '%s is required',\n    'enum': '%s must be one of %s',\n    whitespace: '%s cannot be empty',\n    date: {\n      format: '%s date %s is invalid for format %s',\n      parse: '%s date could not be parsed, %s is invalid ',\n      invalid: '%s date %s is invalid'\n    },\n    types: {\n      string: '%s is not a %s',\n      method: '%s is not a %s (function)',\n      array: '%s is not an %s',\n      object: '%s is not an %s',\n      number: '%s is not a %s',\n      date: '%s is not a %s',\n      boolean: '%s is not a %s',\n      integer: '%s is not an %s',\n      float: '%s is not a %s',\n      regexp: '%s is not a valid %s',\n      email: '%s is not a valid %s',\n      url: '%s is not a valid %s',\n      hex: '%s is not a valid %s'\n    },\n    string: {\n      len: '%s must be exactly %s characters',\n      min: '%s must be at least %s characters',\n      max: '%s cannot be longer than %s characters',\n      range: '%s must be between %s and %s characters'\n    },\n    number: {\n      len: '%s must equal %s',\n      min: '%s cannot be less than %s',\n      max: '%s cannot be greater than %s',\n      range: '%s must be between %s and %s'\n    },\n    array: {\n      len: '%s must be exactly %s in length',\n      min: '%s cannot be less than %s in length',\n      max: '%s cannot be greater than %s in length',\n      range: '%s must be between %s and %s in length'\n    },\n    pattern: {\n      mismatch: '%s value %s does not match pattern %s'\n    },\n    clone: function clone() {\n      var cloned = JSON.parse(JSON.stringify(this));\n      cloned.clone = this.clone;\n      return cloned;\n    }\n  };\n}\n\nvar messages = exports.messages = newMessages();\n\n/***/ }),\n/* 1530 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(454),\n    castPath = __webpack_require__(450),\n    isIndex = __webpack_require__(319),\n    isObject = __webpack_require__(106),\n    toKey = __webpack_require__(271);\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\nmodule.exports = baseSet;\n\n\n/***/ }),\n/* 1531 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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\nvar 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\n\n/***/ }),\n/* 1532 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MediaQueryDispatch = __webpack_require__(1533);\nmodule.exports = new MediaQueryDispatch();\n\n\n/***/ }),\n/* 1533 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MediaQuery = __webpack_require__(1534);\nvar Util = __webpack_require__(649);\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n    if(!window.matchMedia) {\n        throw new Error('matchMedia not present, legacy browsers require a polyfill');\n    }\n\n    this.queries = {};\n    this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n    constructor : MediaQueryDispatch,\n\n    /**\n     * Registers a handler for the given media query\n     *\n     * @param {string} q the media query\n     * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n     * @param {function} options.match fired when query matched\n     * @param {function} [options.unmatch] fired when a query is no longer matched\n     * @param {function} [options.setup] fired when handler first triggered\n     * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n     * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n     */\n    register : function(q, options, shouldDegrade) {\n        var queries         = this.queries,\n            isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n        if(!queries[q]) {\n            queries[q] = new MediaQuery(q, isUnconditional);\n        }\n\n        //normalise to object in an array\n        if(isFunction(options)) {\n            options = { match : options };\n        }\n        if(!isArray(options)) {\n            options = [options];\n        }\n        each(options, function(handler) {\n            if (isFunction(handler)) {\n                handler = { match : handler };\n            }\n            queries[q].addHandler(handler);\n        });\n\n        return this;\n    },\n\n    /**\n     * unregisters a query and all it's handlers, or a specific handler for a query\n     *\n     * @param {string} q the media query to target\n     * @param {object || function} [handler] specific handler to unregister\n     */\n    unregister : function(q, handler) {\n        var query = this.queries[q];\n\n        if(query) {\n            if(handler) {\n                query.removeHandler(handler);\n            }\n            else {\n                query.clear();\n                delete this.queries[q];\n            }\n        }\n\n        return this;\n    }\n};\n\nmodule.exports = MediaQueryDispatch;\n\n\n/***/ }),\n/* 1534 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar QueryHandler = __webpack_require__(1535);\nvar each = __webpack_require__(649).each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n    this.query = query;\n    this.isUnconditional = isUnconditional;\n    this.handlers = [];\n    this.mql = window.matchMedia(query);\n\n    var self = this;\n    this.listener = function(mql) {\n        // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n        self.mql = mql.currentTarget || mql;\n        self.assess();\n    };\n    this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n    constuctor : MediaQuery,\n\n    /**\n     * add a handler for this query, triggering if already active\n     *\n     * @param {object} handler\n     * @param {function} handler.match callback for when query is activated\n     * @param {function} [handler.unmatch] callback for when query is deactivated\n     * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n     * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n     */\n    addHandler : function(handler) {\n        var qh = new QueryHandler(handler);\n        this.handlers.push(qh);\n\n        this.matches() && qh.on();\n    },\n\n    /**\n     * removes the given handler from the collection, and calls it's destroy methods\n     *\n     * @param {object || function} handler the handler to remove\n     */\n    removeHandler : function(handler) {\n        var handlers = this.handlers;\n        each(handlers, function(h, i) {\n            if(h.equals(handler)) {\n                h.destroy();\n                return !handlers.splice(i,1); //remove from array and exit each early\n            }\n        });\n    },\n\n    /**\n     * Determine whether the media query should be considered a match\n     *\n     * @return {Boolean} true if media query can be considered a match, false otherwise\n     */\n    matches : function() {\n        return this.mql.matches || this.isUnconditional;\n    },\n\n    /**\n     * Clears all handlers and unbinds events\n     */\n    clear : function() {\n        each(this.handlers, function(handler) {\n            handler.destroy();\n        });\n        this.mql.removeListener(this.listener);\n        this.handlers.length = 0; //clear array\n    },\n\n    /*\n        * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n        */\n    assess : function() {\n        var action = this.matches() ? 'on' : 'off';\n\n        each(this.handlers, function(handler) {\n            handler[action]();\n        });\n    }\n};\n\nmodule.exports = MediaQuery;\n\n\n/***/ }),\n/* 1535 */\n/***/ (function(module, exports) {\n\n/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n    this.options = options;\n    !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n    constructor : QueryHandler,\n\n    /**\n     * coordinates setup of the handler\n     *\n     * @function\n     */\n    setup : function() {\n        if(this.options.setup) {\n            this.options.setup();\n        }\n        this.initialised = true;\n    },\n\n    /**\n     * coordinates setup and triggering of the handler\n     *\n     * @function\n     */\n    on : function() {\n        !this.initialised && this.setup();\n        this.options.match && this.options.match();\n    },\n\n    /**\n     * coordinates the unmatch event for the handler\n     *\n     * @function\n     */\n    off : function() {\n        this.options.unmatch && this.options.unmatch();\n    },\n\n    /**\n     * called when a handler is to be destroyed.\n     * delegates to the destroy or unmatch callbacks, depending on availability.\n     *\n     * @function\n     */\n    destroy : function() {\n        this.options.destroy ? this.options.destroy() : this.off();\n    },\n\n    /**\n     * determines equality by reference.\n     * if object is supplied compare options, if function, compare match callback\n     *\n     * @function\n     * @param {object || function} [target] the target for comparison\n     */\n    equals : function(target) {\n        return this.options === target || this.options.match === target;\n    }\n\n};\n\nmodule.exports = QueryHandler;\n\n\n/***/ }),\n/* 1536 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_lifecycles_compat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27);\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 _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; }\n\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; }\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\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\n\n\nvar classNames = __webpack_require__(21);\n\nvar Switch = /*#__PURE__*/function (_Component) {\n  _inherits(Switch, _Component);\n\n  var _super = _createSuper(Switch);\n\n  function Switch(props) {\n    var _this;\n\n    _classCallCheck(this, Switch);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleClick\", function (e) {\n      var checked = _this.state.checked;\n      var onClick = _this.props.onClick;\n      var newChecked = !checked;\n\n      _this.setChecked(newChecked, e);\n\n      if (onClick) {\n        onClick(newChecked, e);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleKeyDown\", function (e) {\n      if (e.keyCode === 37) {\n        // Left\n        _this.setChecked(false, e);\n      } else if (e.keyCode === 39) {\n        // Right\n        _this.setChecked(true, e);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleMouseUp\", function (e) {\n      var onMouseUp = _this.props.onMouseUp;\n\n      if (_this.node) {\n        _this.node.blur();\n      }\n\n      if (onMouseUp) {\n        onMouseUp(e);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"saveNode\", function (node) {\n      _this.node = node;\n    });\n\n    var _checked = false;\n\n    if ('checked' in props) {\n      _checked = !!props.checked;\n    } else {\n      _checked = !!props.defaultChecked;\n    }\n\n    _this.state = {\n      checked: _checked\n    };\n    return _this;\n  }\n\n  _createClass(Switch, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props = this.props,\n          autoFocus = _this$props.autoFocus,\n          disabled = _this$props.disabled;\n\n      if (autoFocus && !disabled) {\n        this.focus();\n      }\n    }\n  }, {\n    key: \"setChecked\",\n    value: function setChecked(checked, e) {\n      var _this$props2 = this.props,\n          disabled = _this$props2.disabled,\n          onChange = _this$props2.onChange;\n\n      if (disabled) {\n        return;\n      }\n\n      if (!('checked' in this.props)) {\n        this.setState({\n          checked: checked\n        });\n      }\n\n      if (onChange) {\n        onChange(checked, e);\n      }\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      this.node.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.node.blur();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames;\n\n      var _this$props3 = this.props,\n          className = _this$props3.className,\n          prefixCls = _this$props3.prefixCls,\n          disabled = _this$props3.disabled,\n          loadingIcon = _this$props3.loadingIcon,\n          checkedChildren = _this$props3.checkedChildren,\n          unCheckedChildren = _this$props3.unCheckedChildren,\n          restProps = _objectWithoutProperties(_this$props3, [\"className\", \"prefixCls\", \"disabled\", \"loadingIcon\", \"checkedChildren\", \"unCheckedChildren\"]);\n\n      var checked = this.state.checked;\n      var switchClassName = classNames((_classNames = {}, _defineProperty(_classNames, className, !!className), _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-checked\"), checked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames));\n      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", _extends({}, restProps, {\n        type: \"button\",\n        role: \"switch\",\n        \"aria-checked\": checked,\n        disabled: disabled,\n        className: switchClassName,\n        ref: this.saveNode,\n        onKeyDown: this.handleKeyDown,\n        onClick: this.handleClick,\n        onMouseUp: this.handleMouseUp\n      }), loadingIcon, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n        className: \"\".concat(prefixCls, \"-inner\")\n      }, checked ? checkedChildren : unCheckedChildren));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      var newState = {};\n      var checked = nextProps.checked;\n\n      if ('checked' in nextProps) {\n        newState.checked = !!checked;\n      }\n\n      return newState;\n    }\n  }]);\n\n  return Switch;\n}(react__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\nSwitch.propTypes = {\n  className: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n  prefixCls: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n  disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n  checkedChildren: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.any,\n  unCheckedChildren: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.any,\n  onChange: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n  onMouseUp: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n  onClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n  tabIndex: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number,\n  checked: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n  defaultChecked: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n  autoFocus: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n  loadingIcon: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node\n};\nSwitch.defaultProps = {\n  prefixCls: 'rc-switch',\n  checkedChildren: null,\n  unCheckedChildren: null,\n  className: '',\n  defaultChecked: false\n};\nObject(react_lifecycles_compat__WEBPACK_IMPORTED_MODULE_2__[\"polyfill\"])(Switch);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Switch);\n\n/***/ }),\n/* 1537 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(1538), __esModule: true };\n\n/***/ }),\n/* 1538 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(1539);\nmodule.exports = __webpack_require__(109).Object.getPrototypeOf;\n\n\n/***/ }),\n/* 1539 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(269);\nvar $getPrototypeOf = __webpack_require__(639);\n\n__webpack_require__(650)('getPrototypeOf', function () {\n  return function getPrototypeOf(it) {\n    return $getPrototypeOf(toObject(it));\n  };\n});\n\n\n/***/ }),\n/* 1540 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(1541), __esModule: true };\n\n/***/ }),\n/* 1541 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(1542);\nvar $Object = __webpack_require__(109).Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n  return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n/***/ }),\n/* 1542 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(188);\nvar $getOwnPropertyDescriptor = __webpack_require__(449).f;\n\n__webpack_require__(650)('getOwnPropertyDescriptor', function () {\n  return function getOwnPropertyDescriptor(it, key) {\n    return $getOwnPropertyDescriptor(toIObject(it), key);\n  };\n});\n\n\n/***/ }),\n/* 1543 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.flattenNames = undefined;\n\nvar _isString2 = __webpack_require__(1544);\n\nvar _isString3 = _interopRequireDefault(_isString2);\n\nvar _forOwn2 = __webpack_require__(456);\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _isPlainObject2 = __webpack_require__(653);\n\nvar _isPlainObject3 = _interopRequireDefault(_isPlainObject2);\n\nvar _map2 = __webpack_require__(1547);\n\nvar _map3 = _interopRequireDefault(_map2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar flattenNames = exports.flattenNames = function flattenNames() {\n  var things = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n  var names = [];\n\n  (0, _map3.default)(things, function (thing) {\n    if (Array.isArray(thing)) {\n      flattenNames(thing).map(function (name) {\n        return names.push(name);\n      });\n    } else if ((0, _isPlainObject3.default)(thing)) {\n      (0, _forOwn3.default)(thing, function (value, key) {\n        value === true && names.push(key);\n        names.push(key + '-' + value);\n      });\n    } else if ((0, _isString3.default)(thing)) {\n      names.push(thing);\n    }\n  });\n\n  return names;\n};\n\nexports.default = flattenNames;\n\n/***/ }),\n/* 1544 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(174),\n    isArray = __webpack_require__(97),\n    isObjectLike = __webpack_require__(128);\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\nmodule.exports = isString;\n\n\n/***/ }),\n/* 1545 */\n/***/ (function(module, exports) {\n\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\nmodule.exports = createBaseFor;\n\n\n/***/ }),\n/* 1546 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar identity = __webpack_require__(272);\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\n\n/***/ }),\n/* 1547 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayMap = __webpack_require__(452),\n    baseIteratee = __webpack_require__(345),\n    baseMap = __webpack_require__(656),\n    isArray = __webpack_require__(97);\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\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 * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n *   { 'user': 'barney' },\n *   { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n  var func = isArray(collection) ? arrayMap : baseMap;\n  return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n\n\n/***/ }),\n/* 1548 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsMatch = __webpack_require__(1549),\n    getMatchData = __webpack_require__(1550),\n    matchesStrictComparable = __webpack_require__(655);\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\n\n/***/ }),\n/* 1549 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Stack = __webpack_require__(312),\n    baseIsEqual = __webpack_require__(389);\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\n\n/***/ }),\n/* 1550 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isStrictComparable = __webpack_require__(654),\n    keys = __webpack_require__(252);\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\n\n/***/ }),\n/* 1551 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsEqual = __webpack_require__(389),\n    get = __webpack_require__(166),\n    hasIn = __webpack_require__(1552),\n    isKey = __webpack_require__(451),\n    isStrictComparable = __webpack_require__(654),\n    matchesStrictComparable = __webpack_require__(655),\n    toKey = __webpack_require__(271);\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\n\n/***/ }),\n/* 1552 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseHasIn = __webpack_require__(1553),\n    hasPath = __webpack_require__(646);\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\n\n/***/ }),\n/* 1553 */\n/***/ (function(module, exports) {\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\n/***/ }),\n/* 1554 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseProperty = __webpack_require__(1555),\n    basePropertyDeep = __webpack_require__(1556),\n    isKey = __webpack_require__(451),\n    toKey = __webpack_require__(271);\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\n\n/***/ }),\n/* 1555 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 1556 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGet = __webpack_require__(453);\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\n\n/***/ }),\n/* 1557 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseForOwn = __webpack_require__(651),\n    createBaseEach = __webpack_require__(1558);\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\n\n/***/ }),\n/* 1558 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArrayLike = __webpack_require__(210);\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\n\n/***/ }),\n/* 1559 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.mergeClasses = undefined;\n\nvar _forOwn2 = __webpack_require__(456);\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\n\nvar _cloneDeep2 = __webpack_require__(1560);\n\nvar _cloneDeep3 = _interopRequireDefault(_cloneDeep2);\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\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar mergeClasses = exports.mergeClasses = function mergeClasses(classes) {\n  var activeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n  var styles = classes.default && (0, _cloneDeep3.default)(classes.default) || {};\n  activeNames.map(function (name) {\n    var toMerge = classes[name];\n    if (toMerge) {\n      (0, _forOwn3.default)(toMerge, function (value, key) {\n        if (!styles[key]) {\n          styles[key] = {};\n        }\n\n        styles[key] = _extends({}, styles[key], toMerge[key]);\n      });\n    }\n\n    return name;\n  });\n  return styles;\n};\n\nexports.default = mergeClasses;\n\n/***/ }),\n/* 1560 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseClone = __webpack_require__(1561);\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\n\n/***/ }),\n/* 1561 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Stack = __webpack_require__(312),\n    arrayEach = __webpack_require__(1562),\n    assignValue = __webpack_require__(454),\n    baseAssign = __webpack_require__(1563),\n    baseAssignIn = __webpack_require__(1564),\n    cloneBuffer = __webpack_require__(657),\n    copyArray = __webpack_require__(658),\n    copySymbols = __webpack_require__(1567),\n    copySymbolsIn = __webpack_require__(1568),\n    getAllKeys = __webpack_require__(540),\n    getAllKeysIn = __webpack_require__(1569),\n    getTag = __webpack_require__(321),\n    initCloneArray = __webpack_require__(1570),\n    initCloneByTag = __webpack_require__(1571),\n    initCloneObject = __webpack_require__(661),\n    isArray = __webpack_require__(97),\n    isBuffer = __webpack_require__(318),\n    isMap = __webpack_require__(1576),\n    isObject = __webpack_require__(106),\n    isSet = __webpack_require__(1578),\n    keys = __webpack_require__(252),\n    keysIn = __webpack_require__(274);\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\n\n/***/ }),\n/* 1562 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 1563 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar copyObject = __webpack_require__(273),\n    keys = __webpack_require__(252);\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\n\n/***/ }),\n/* 1564 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar copyObject = __webpack_require__(273),\n    keysIn = __webpack_require__(274);\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\n\n/***/ }),\n/* 1565 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(106),\n    isPrototype = __webpack_require__(399),\n    nativeKeysIn = __webpack_require__(1566);\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\n\n/***/ }),\n/* 1566 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 1567 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar copyObject = __webpack_require__(273),\n    getSymbols = __webpack_require__(395);\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\n\n/***/ }),\n/* 1568 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar copyObject = __webpack_require__(273),\n    getSymbolsIn = __webpack_require__(659);\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\n\n/***/ }),\n/* 1569 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetAllKeys = __webpack_require__(541),\n    getSymbolsIn = __webpack_require__(659),\n    keysIn = __webpack_require__(274);\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\n\n/***/ }),\n/* 1570 */\n/***/ (function(module, exports) {\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 * 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\n\n/***/ }),\n/* 1571 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar cloneArrayBuffer = __webpack_require__(458),\n    cloneDataView = __webpack_require__(1572),\n    cloneRegExp = __webpack_require__(1573),\n    cloneSymbol = __webpack_require__(1574),\n    cloneTypedArray = __webpack_require__(660);\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\n/***/ }),\n/* 1572 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar cloneArrayBuffer = __webpack_require__(458);\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\n\n/***/ }),\n/* 1573 */\n/***/ (function(module, exports) {\n\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\nmodule.exports = cloneRegExp;\n\n\n/***/ }),\n/* 1574 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(209);\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\n\n/***/ }),\n/* 1575 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(106);\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\n\n/***/ }),\n/* 1576 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsMap = __webpack_require__(1577),\n    baseUnary = __webpack_require__(320),\n    nodeUtil = __webpack_require__(398);\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\n\n/***/ }),\n/* 1577 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getTag = __webpack_require__(321),\n    isObjectLike = __webpack_require__(128);\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\n\n/***/ }),\n/* 1578 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsSet = __webpack_require__(1579),\n    baseUnary = __webpack_require__(320),\n    nodeUtil = __webpack_require__(398);\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\n\n/***/ }),\n/* 1579 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getTag = __webpack_require__(321),\n    isObjectLike = __webpack_require__(128);\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\n\n/***/ }),\n/* 1580 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.autoprefix = undefined;\n\nvar _forOwn2 = __webpack_require__(456);\n\nvar _forOwn3 = _interopRequireDefault(_forOwn2);\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\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar transforms = {\n  borderRadius: function borderRadius(value) {\n    return {\n      msBorderRadius: value,\n      MozBorderRadius: value,\n      OBorderRadius: value,\n      WebkitBorderRadius: value,\n      borderRadius: value\n    };\n  },\n  boxShadow: function boxShadow(value) {\n    return {\n      msBoxShadow: value,\n      MozBoxShadow: value,\n      OBoxShadow: value,\n      WebkitBoxShadow: value,\n      boxShadow: value\n    };\n  },\n  userSelect: function userSelect(value) {\n    return {\n      WebkitTouchCallout: value,\n      KhtmlUserSelect: value,\n      MozUserSelect: value,\n      msUserSelect: value,\n      WebkitUserSelect: value,\n      userSelect: value\n    };\n  },\n\n  flex: function flex(value) {\n    return {\n      WebkitBoxFlex: value,\n      MozBoxFlex: value,\n      WebkitFlex: value,\n      msFlex: value,\n      flex: value\n    };\n  },\n  flexBasis: function flexBasis(value) {\n    return {\n      WebkitFlexBasis: value,\n      flexBasis: value\n    };\n  },\n  justifyContent: function justifyContent(value) {\n    return {\n      WebkitJustifyContent: value,\n      justifyContent: value\n    };\n  },\n\n  transition: function transition(value) {\n    return {\n      msTransition: value,\n      MozTransition: value,\n      OTransition: value,\n      WebkitTransition: value,\n      transition: value\n    };\n  },\n\n  transform: function transform(value) {\n    return {\n      msTransform: value,\n      MozTransform: value,\n      OTransform: value,\n      WebkitTransform: value,\n      transform: value\n    };\n  },\n  absolute: function absolute(value) {\n    var direction = value && value.split(' ');\n    return {\n      position: 'absolute',\n      top: direction && direction[0],\n      right: direction && direction[1],\n      bottom: direction && direction[2],\n      left: direction && direction[3]\n    };\n  },\n  extend: function extend(name, otherElementStyles) {\n    var otherStyle = otherElementStyles[name];\n    if (otherStyle) {\n      return otherStyle;\n    }\n    return {\n      'extend': name\n    };\n  }\n};\n\nvar autoprefix = exports.autoprefix = function autoprefix(elements) {\n  var prefixed = {};\n  (0, _forOwn3.default)(elements, function (styles, element) {\n    var expanded = {};\n    (0, _forOwn3.default)(styles, function (value, key) {\n      var transform = transforms[key];\n      if (transform) {\n        expanded = _extends({}, expanded, transform(value));\n      } else {\n        expanded[key] = value;\n      }\n    });\n    prefixed[element] = expanded;\n  });\n  return prefixed;\n};\n\nexports.default = autoprefix;\n\n/***/ }),\n/* 1581 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.hover = undefined;\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 = __webpack_require__(0);\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 hover = exports.hover = function hover(Component) {\n  var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n  return function (_React$Component) {\n    _inherits(Hover, _React$Component);\n\n    function Hover() {\n      var _ref;\n\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Hover);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Hover.__proto__ || Object.getPrototypeOf(Hover)).call.apply(_ref, [this].concat(args))), _this), _this.state = { hover: false }, _this.handleMouseOver = function () {\n        return _this.setState({ hover: true });\n      }, _this.handleMouseOut = function () {\n        return _this.setState({ hover: false });\n      }, _this.render = function () {\n        return _react2.default.createElement(\n          Span,\n          { onMouseOver: _this.handleMouseOver, onMouseOut: _this.handleMouseOut },\n          _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n        );\n      }, _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    return Hover;\n  }(_react2.default.Component);\n};\n\nexports.default = hover;\n\n/***/ }),\n/* 1582 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.active = undefined;\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 = __webpack_require__(0);\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 active = exports.active = function active(Component) {\n  var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n\n  return function (_React$Component) {\n    _inherits(Active, _React$Component);\n\n    function Active() {\n      var _ref;\n\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Active);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Active.__proto__ || Object.getPrototypeOf(Active)).call.apply(_ref, [this].concat(args))), _this), _this.state = { active: false }, _this.handleMouseDown = function () {\n        return _this.setState({ active: true });\n      }, _this.handleMouseUp = function () {\n        return _this.setState({ active: false });\n      }, _this.render = function () {\n        return _react2.default.createElement(\n          Span,\n          { onMouseDown: _this.handleMouseDown, onMouseUp: _this.handleMouseUp },\n          _react2.default.createElement(Component, _extends({}, _this.props, _this.state))\n        );\n      }, _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    return Active;\n  }(_react2.default.Component);\n};\n\nexports.default = active;\n\n/***/ }),\n/* 1583 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar loopable = function loopable(i, length) {\n  var props = {};\n  var setProp = function setProp(name) {\n    var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    props[name] = value;\n  };\n\n  i === 0 && setProp('first-child');\n  i === length - 1 && setProp('last-child');\n  (i === 0 || i % 2 === 0) && setProp('even');\n  Math.abs(i % 2) === 1 && setProp('odd');\n  setProp('nth-child', i);\n\n  return props;\n};\n\nexports.default = loopable;\n\n/***/ }),\n/* 1584 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar SetCache = __webpack_require__(537),\n    arrayIncludes = __webpack_require__(1585),\n    arrayIncludesWith = __webpack_require__(1589),\n    cacheHas = __webpack_require__(538),\n    createSet = __webpack_require__(1590),\n    setToArray = __webpack_require__(393);\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\n\n/***/ }),\n/* 1585 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIndexOf = __webpack_require__(1586);\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\n\n/***/ }),\n/* 1586 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFindIndex = __webpack_require__(662),\n    baseIsNaN = __webpack_require__(1587),\n    strictIndexOf = __webpack_require__(1588);\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\n\n/***/ }),\n/* 1587 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 1588 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 1589 */\n/***/ (function(module, exports) {\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\n\n/***/ }),\n/* 1590 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Set = __webpack_require__(545),\n    noop = __webpack_require__(1591),\n    setToArray = __webpack_require__(393);\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\n\n/***/ }),\n/* 1591 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 1592 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toFinite = __webpack_require__(1593);\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\nmodule.exports = toInteger;\n\n\n/***/ }),\n/* 1593 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toNumber = __webpack_require__(534);\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\nmodule.exports = toFinite;\n\n\n/***/ }),\n/* 1594 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayPush = __webpack_require__(394),\n    isFlattenable = __webpack_require__(1595);\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\n\n/***/ }),\n/* 1595 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(209),\n    isArguments = __webpack_require__(317),\n    isArray = __webpack_require__(97);\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\n\n/***/ }),\n/* 1596 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayMap = __webpack_require__(452),\n    baseGet = __webpack_require__(453),\n    baseIteratee = __webpack_require__(345),\n    baseMap = __webpack_require__(656),\n    baseSortBy = __webpack_require__(1597),\n    baseUnary = __webpack_require__(320),\n    compareMultiple = __webpack_require__(1598),\n    identity = __webpack_require__(272),\n    isArray = __webpack_require__(97);\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\n\n/***/ }),\n/* 1597 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 1598 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar compareAscending = __webpack_require__(1599);\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\n\n/***/ }),\n/* 1599 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isSymbol = __webpack_require__(251);\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\n\n/***/ }),\n/* 1600 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar apply = __webpack_require__(1601);\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\n\n/***/ }),\n/* 1601 */\n/***/ (function(module, exports) {\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\n\n/***/ }),\n/* 1602 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseSetToString = __webpack_require__(1603),\n    shortOut = __webpack_require__(1605);\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\n\n/***/ }),\n/* 1603 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar constant = __webpack_require__(1604),\n    defineProperty = __webpack_require__(648),\n    identity = __webpack_require__(272);\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\n\n/***/ }),\n/* 1604 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 1605 */\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n/* 1606 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 PropTypes = __webpack_require__(1);\nvar React = __webpack_require__(0);\nvar isEqual = __webpack_require__(665);\nvar editorOptions_1 = __webpack_require__(666);\nvar ace = editorOptions_1.getAceInstance();\nvar Range = ace.require(\"ace/range\").Range;\nvar ReactAce = /** @class */ (function (_super) {\n    __extends(ReactAce, _super);\n    function ReactAce(props) {\n        var _this = _super.call(this, props) || this;\n        editorOptions_1.editorEvents.forEach(function (method) {\n            _this[method] = _this[method].bind(_this);\n        });\n        _this.debounce = editorOptions_1.debounce;\n        return _this;\n    }\n    ReactAce.prototype.componentDidMount = function () {\n        var _this = this;\n        var _a = this.props, className = _a.className, onBeforeLoad = _a.onBeforeLoad, onValidate = _a.onValidate, mode = _a.mode, focus = _a.focus, theme = _a.theme, fontSize = _a.fontSize, value = _a.value, defaultValue = _a.defaultValue, cursorStart = _a.cursorStart, showGutter = _a.showGutter, wrapEnabled = _a.wrapEnabled, showPrintMargin = _a.showPrintMargin, _b = _a.scrollMargin, scrollMargin = _b === void 0 ? [0, 0, 0, 0] : _b, keyboardHandler = _a.keyboardHandler, onLoad = _a.onLoad, commands = _a.commands, annotations = _a.annotations, markers = _a.markers, placeholder = _a.placeholder;\n        this.editor = ace.edit(this.refEditor);\n        if (onBeforeLoad) {\n            onBeforeLoad(ace);\n        }\n        var editorProps = Object.keys(this.props.editorProps);\n        for (var i = 0; i < editorProps.length; i++) {\n            this.editor[editorProps[i]] = this.props.editorProps[editorProps[i]];\n        }\n        if (this.props.debounceChangePeriod) {\n            this.onChange = this.debounce(this.onChange, this.props.debounceChangePeriod);\n        }\n        this.editor.renderer.setScrollMargin(scrollMargin[0], scrollMargin[1], scrollMargin[2], scrollMargin[3]);\n        this.editor.getSession().setMode(\"ace/mode/\" + mode);\n        this.editor.setTheme(\"ace/theme/\" + theme);\n        this.editor.setFontSize(fontSize);\n        this.editor\n            .getSession()\n            .setValue(!defaultValue ? value : defaultValue, cursorStart);\n        if (this.props.navigateToFileEnd) {\n            this.editor.navigateFileEnd();\n        }\n        this.editor.renderer.setShowGutter(showGutter);\n        this.editor.getSession().setUseWrapMode(wrapEnabled);\n        this.editor.setShowPrintMargin(showPrintMargin);\n        this.editor.on(\"focus\", this.onFocus);\n        this.editor.on(\"blur\", this.onBlur);\n        this.editor.on(\"copy\", this.onCopy);\n        this.editor.on(\"paste\", this.onPaste);\n        this.editor.on(\"change\", this.onChange);\n        this.editor.on(\"input\", this.onInput);\n        if (placeholder) {\n            this.updatePlaceholder();\n        }\n        this.editor\n            .getSession()\n            .selection.on(\"changeSelection\", this.onSelectionChange);\n        this.editor.getSession().selection.on(\"changeCursor\", this.onCursorChange);\n        if (onValidate) {\n            this.editor.getSession().on(\"changeAnnotation\", function () {\n                // tslint:disable-next-line:no-shadowed-variable\n                var annotations = _this.editor.getSession().getAnnotations();\n                _this.props.onValidate(annotations);\n            });\n        }\n        this.editor.session.on(\"changeScrollTop\", this.onScroll);\n        this.editor.getSession().setAnnotations(annotations || []);\n        if (markers && markers.length > 0) {\n            this.handleMarkers(markers);\n        }\n        // get a list of possible options to avoid 'misspelled option errors'\n        var availableOptions = this.editor.$options;\n        editorOptions_1.editorOptions.forEach(function (option) {\n            if (availableOptions.hasOwnProperty(option)) {\n                _this.editor.setOption(option, _this.props[option]);\n            }\n            else if (_this.props[option]) {\n                console.warn(\"ReactAce: editor option \" + option + \" was activated but not found. Did you need to import a related tool or did you possibly mispell the option?\");\n            }\n        });\n        this.handleOptions(this.props);\n        if (Array.isArray(commands)) {\n            commands.forEach(function (command) {\n                if (typeof command.exec === \"string\") {\n                    _this.editor.commands.bindKey(command.bindKey, command.exec);\n                }\n                else {\n                    _this.editor.commands.addCommand(command);\n                }\n            });\n        }\n        if (keyboardHandler) {\n            this.editor.setKeyboardHandler(\"ace/keyboard/\" + keyboardHandler);\n        }\n        if (className) {\n            this.refEditor.className += \" \" + className;\n        }\n        if (onLoad) {\n            onLoad(this.editor);\n        }\n        this.editor.resize();\n        if (focus) {\n            this.editor.focus();\n        }\n    };\n    ReactAce.prototype.componentDidUpdate = function (prevProps) {\n        var oldProps = prevProps;\n        var nextProps = this.props;\n        for (var i = 0; i < editorOptions_1.editorOptions.length; i++) {\n            var option = editorOptions_1.editorOptions[i];\n            if (nextProps[option] !== oldProps[option]) {\n                this.editor.setOption(option, nextProps[option]);\n            }\n        }\n        if (nextProps.className !== oldProps.className) {\n            var appliedClasses = this.refEditor.className;\n            var appliedClassesArray_1 = appliedClasses.trim().split(\" \");\n            var oldClassesArray = oldProps.className.trim().split(\" \");\n            oldClassesArray.forEach(function (oldClass) {\n                var index = appliedClassesArray_1.indexOf(oldClass);\n                appliedClassesArray_1.splice(index, 1);\n            });\n            this.refEditor.className =\n                \" \" + nextProps.className + \" \" + appliedClassesArray_1.join(\" \");\n        }\n        // First process editor value, as it may create a new session (see issue #300)\n        if (this.editor && this.editor.getValue() !== nextProps.value) {\n            // editor.setValue is a synchronous function call, change event is emitted before setValue return.\n            this.silent = true;\n            var pos = this.editor.session.selection.toJSON();\n            this.editor.setValue(nextProps.value, nextProps.cursorStart);\n            this.editor.session.selection.fromJSON(pos);\n            this.silent = false;\n        }\n        if (nextProps.placeholder !== oldProps.placeholder) {\n            this.updatePlaceholder();\n        }\n        if (nextProps.mode !== oldProps.mode) {\n            this.editor.getSession().setMode(\"ace/mode/\" + nextProps.mode);\n        }\n        if (nextProps.theme !== oldProps.theme) {\n            this.editor.setTheme(\"ace/theme/\" + nextProps.theme);\n        }\n        if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {\n            if (nextProps.keyboardHandler) {\n                this.editor.setKeyboardHandler(\"ace/keyboard/\" + nextProps.keyboardHandler);\n            }\n            else {\n                this.editor.setKeyboardHandler(null);\n            }\n        }\n        if (nextProps.fontSize !== oldProps.fontSize) {\n            this.editor.setFontSize(nextProps.fontSize);\n        }\n        if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {\n            this.editor.getSession().setUseWrapMode(nextProps.wrapEnabled);\n        }\n        if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {\n            this.editor.setShowPrintMargin(nextProps.showPrintMargin);\n        }\n        if (nextProps.showGutter !== oldProps.showGutter) {\n            this.editor.renderer.setShowGutter(nextProps.showGutter);\n        }\n        if (!isEqual(nextProps.setOptions, oldProps.setOptions)) {\n            this.handleOptions(nextProps);\n        }\n        if (!isEqual(nextProps.annotations, oldProps.annotations)) {\n            this.editor.getSession().setAnnotations(nextProps.annotations || []);\n        }\n        if (!isEqual(nextProps.markers, oldProps.markers) &&\n            Array.isArray(nextProps.markers)) {\n            this.handleMarkers(nextProps.markers);\n        }\n        // this doesn't look like it works at all....\n        if (!isEqual(nextProps.scrollMargin, oldProps.scrollMargin)) {\n            this.handleScrollMargins(nextProps.scrollMargin);\n        }\n        if (prevProps.height !== this.props.height ||\n            prevProps.width !== this.props.width) {\n            this.editor.resize();\n        }\n        if (this.props.focus && !prevProps.focus) {\n            this.editor.focus();\n        }\n    };\n    ReactAce.prototype.handleScrollMargins = function (margins) {\n        if (margins === void 0) { margins = [0, 0, 0, 0]; }\n        this.editor.renderer.setScrollMargins(margins[0], margins[1], margins[2], margins[3]);\n    };\n    ReactAce.prototype.componentWillUnmount = function () {\n        this.editor.destroy();\n        this.editor = null;\n    };\n    ReactAce.prototype.onChange = function (event) {\n        if (this.props.onChange && !this.silent) {\n            var value = this.editor.getValue();\n            this.props.onChange(value, event);\n        }\n    };\n    ReactAce.prototype.onSelectionChange = function (event) {\n        if (this.props.onSelectionChange) {\n            var value = this.editor.getSelection();\n            this.props.onSelectionChange(value, event);\n        }\n    };\n    ReactAce.prototype.onCursorChange = function (event) {\n        if (this.props.onCursorChange) {\n            var value = this.editor.getSelection();\n            this.props.onCursorChange(value, event);\n        }\n    };\n    ReactAce.prototype.onInput = function (event) {\n        if (this.props.onInput) {\n            this.props.onInput(event);\n        }\n        if (this.props.placeholder) {\n            this.updatePlaceholder();\n        }\n    };\n    ReactAce.prototype.onFocus = function (event) {\n        if (this.props.onFocus) {\n            this.props.onFocus(event, this.editor);\n        }\n    };\n    ReactAce.prototype.onBlur = function (event) {\n        if (this.props.onBlur) {\n            this.props.onBlur(event, this.editor);\n        }\n    };\n    ReactAce.prototype.onCopy = function (text) {\n        if (this.props.onCopy) {\n            this.props.onCopy(text);\n        }\n    };\n    ReactAce.prototype.onPaste = function (text) {\n        if (this.props.onPaste) {\n            this.props.onPaste(text);\n        }\n    };\n    ReactAce.prototype.onScroll = function () {\n        if (this.props.onScroll) {\n            this.props.onScroll(this.editor);\n        }\n    };\n    ReactAce.prototype.handleOptions = function (props) {\n        var setOptions = Object.keys(props.setOptions);\n        for (var y = 0; y < setOptions.length; y++) {\n            this.editor.setOption(setOptions[y], props.setOptions[setOptions[y]]);\n        }\n    };\n    ReactAce.prototype.handleMarkers = function (markers) {\n        var _this = this;\n        // remove foreground markers\n        var currentMarkers = this.editor.getSession().getMarkers(true);\n        for (var i in currentMarkers) {\n            if (currentMarkers.hasOwnProperty(i)) {\n                this.editor.getSession().removeMarker(currentMarkers[i].id);\n            }\n        }\n        // remove background markers except active line marker and selected word marker\n        currentMarkers = this.editor.getSession().getMarkers(false);\n        for (var i in currentMarkers) {\n            if (currentMarkers.hasOwnProperty(i) &&\n                currentMarkers[i].clazz !== \"ace_active-line\" &&\n                currentMarkers[i].clazz !== \"ace_selected-word\") {\n                this.editor.getSession().removeMarker(currentMarkers[i].id);\n            }\n        }\n        // add new markers\n        markers.forEach(function (_a) {\n            var startRow = _a.startRow, startCol = _a.startCol, endRow = _a.endRow, endCol = _a.endCol, className = _a.className, type = _a.type, _b = _a.inFront, inFront = _b === void 0 ? false : _b;\n            var range = new Range(startRow, startCol, endRow, endCol);\n            _this.editor.getSession().addMarker(range, className, type, inFront);\n        });\n    };\n    ReactAce.prototype.updatePlaceholder = function () {\n        // Adapted from https://stackoverflow.com/questions/26695708/how-can-i-add-placeholder-text-when-the-editor-is-empty\n        var editor = this.editor;\n        var placeholder = this.props.placeholder;\n        var showPlaceholder = !editor.session.getValue().length;\n        var node = editor.renderer.placeholderNode;\n        if (!showPlaceholder && node) {\n            editor.renderer.scroller.removeChild(editor.renderer.placeholderNode);\n            editor.renderer.placeholderNode = null;\n        }\n        else if (showPlaceholder && !node) {\n            node = editor.renderer.placeholderNode = document.createElement(\"div\");\n            node.textContent = placeholder || \"\";\n            node.className = \"ace_comment ace_placeholder\";\n            node.style.padding = \"0 9px\";\n            node.style.position = \"absolute\";\n            node.style.zIndex = \"3\";\n            editor.renderer.scroller.appendChild(node);\n        }\n        else if (showPlaceholder && node) {\n            node.textContent = placeholder;\n        }\n    };\n    ReactAce.prototype.updateRef = function (item) {\n        this.refEditor = item;\n    };\n    ReactAce.prototype.render = function () {\n        var _a = this.props, name = _a.name, width = _a.width, height = _a.height, style = _a.style;\n        var divStyle = __assign({ width: width, height: height }, style);\n        return React.createElement(\"div\", { ref: this.updateRef, id: name, style: divStyle });\n    };\n    ReactAce.propTypes = {\n        mode: PropTypes.string,\n        focus: PropTypes.bool,\n        theme: PropTypes.string,\n        name: PropTypes.string,\n        className: PropTypes.string,\n        height: PropTypes.string,\n        width: PropTypes.string,\n        fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        showGutter: PropTypes.bool,\n        onChange: PropTypes.func,\n        onCopy: PropTypes.func,\n        onPaste: PropTypes.func,\n        onFocus: PropTypes.func,\n        onInput: PropTypes.func,\n        onBlur: PropTypes.func,\n        onScroll: PropTypes.func,\n        value: PropTypes.string,\n        defaultValue: PropTypes.string,\n        onLoad: PropTypes.func,\n        onSelectionChange: PropTypes.func,\n        onCursorChange: PropTypes.func,\n        onBeforeLoad: PropTypes.func,\n        onValidate: PropTypes.func,\n        minLines: PropTypes.number,\n        maxLines: PropTypes.number,\n        readOnly: PropTypes.bool,\n        highlightActiveLine: PropTypes.bool,\n        tabSize: PropTypes.number,\n        showPrintMargin: PropTypes.bool,\n        cursorStart: PropTypes.number,\n        debounceChangePeriod: PropTypes.number,\n        editorProps: PropTypes.object,\n        setOptions: PropTypes.object,\n        style: PropTypes.object,\n        scrollMargin: PropTypes.array,\n        annotations: PropTypes.array,\n        markers: PropTypes.array,\n        keyboardHandler: PropTypes.string,\n        wrapEnabled: PropTypes.bool,\n        enableSnippets: PropTypes.bool,\n        enableBasicAutocompletion: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.array\n        ]),\n        enableLiveAutocompletion: PropTypes.oneOfType([\n            PropTypes.bool,\n            PropTypes.array\n        ]),\n        navigateToFileEnd: PropTypes.bool,\n        commands: PropTypes.array,\n        placeholder: PropTypes.string\n    };\n    ReactAce.defaultProps = {\n        name: \"ace-editor\",\n        focus: false,\n        mode: \"\",\n        theme: \"\",\n        height: \"500px\",\n        width: \"500px\",\n        value: \"\",\n        fontSize: 12,\n        enableSnippets: false,\n        showGutter: true,\n        onChange: null,\n        onPaste: null,\n        onLoad: null,\n        onScroll: null,\n        minLines: null,\n        maxLines: null,\n        readOnly: false,\n        highlightActiveLine: true,\n        showPrintMargin: true,\n        tabSize: 4,\n        cursorStart: 1,\n        editorProps: {},\n        style: {},\n        scrollMargin: [0, 0, 0, 0],\n        setOptions: {},\n        wrapEnabled: false,\n        enableBasicAutocompletion: false,\n        enableLiveAutocompletion: false,\n        placeholder: null,\n        navigateToFileEnd: true\n    };\n    return ReactAce;\n}(React.Component));\nexports.default = ReactAce;\n\n\n/***/ }),\n/* 1607 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PropTypes = __webpack_require__(1);\nvar React = __webpack_require__(0);\nvar split_1 = __webpack_require__(669);\nvar DiffMatchPatch = __webpack_require__(1610);\nvar DiffComponent = /** @class */ (function (_super) {\n    __extends(DiffComponent, _super);\n    function DiffComponent(props) {\n        var _this = _super.call(this, props) || this;\n        _this.state = {\n            value: _this.props.value\n        };\n        _this.onChange = _this.onChange.bind(_this);\n        _this.diff = _this.diff.bind(_this);\n        return _this;\n    }\n    DiffComponent.prototype.componentDidUpdate = function () {\n        var value = this.props.value;\n        if (value !== this.state.value) {\n            this.setState({ value: value });\n        }\n    };\n    DiffComponent.prototype.onChange = function (value) {\n        this.setState({\n            value: value\n        });\n        if (this.props.onChange) {\n            this.props.onChange(value);\n        }\n    };\n    DiffComponent.prototype.diff = function () {\n        var dmp = new DiffMatchPatch();\n        var lhString = this.state.value[0];\n        var rhString = this.state.value[1];\n        if (lhString.length === 0 && rhString.length === 0) {\n            return [];\n        }\n        var diff = dmp.diff_main(lhString, rhString);\n        dmp.diff_cleanupSemantic(diff);\n        var diffedLines = this.generateDiffedLines(diff);\n        var codeEditorSettings = this.setCodeMarkers(diffedLines);\n        return codeEditorSettings;\n    };\n    DiffComponent.prototype.generateDiffedLines = function (diff) {\n        var C = {\n            DIFF_EQUAL: 0,\n            DIFF_DELETE: -1,\n            DIFF_INSERT: 1\n        };\n        var diffedLines = {\n            left: [],\n            right: []\n        };\n        var cursor = {\n            left: 1,\n            right: 1\n        };\n        diff.forEach(function (chunk) {\n            var chunkType = chunk[0];\n            var text = chunk[1];\n            var lines = text.split(\"\\n\").length - 1;\n            // diff-match-patch sometimes returns empty strings at random\n            if (text.length === 0) {\n                return;\n            }\n            var firstChar = text[0];\n            var lastChar = text[text.length - 1];\n            var linesToHighlight = 0;\n            switch (chunkType) {\n                case C.DIFF_EQUAL:\n                    cursor.left += lines;\n                    cursor.right += lines;\n                    break;\n                case C.DIFF_DELETE:\n                    // If the deletion starts with a newline, push the cursor down to that line\n                    if (firstChar === \"\\n\") {\n                        cursor.left++;\n                        lines--;\n                    }\n                    linesToHighlight = lines;\n                    // If the deletion does not include a newline, highlight the same line on the right\n                    if (linesToHighlight === 0) {\n                        diffedLines.right.push({\n                            startLine: cursor.right,\n                            endLine: cursor.right\n                        });\n                    }\n                    // If the last character is a newline, we don't want to highlight that line\n                    if (lastChar === \"\\n\") {\n                        linesToHighlight -= 1;\n                    }\n                    diffedLines.left.push({\n                        startLine: cursor.left,\n                        endLine: cursor.left + linesToHighlight\n                    });\n                    cursor.left += lines;\n                    break;\n                case C.DIFF_INSERT:\n                    // If the insertion starts with a newline, push the cursor down to that line\n                    if (firstChar === \"\\n\") {\n                        cursor.right++;\n                        lines--;\n                    }\n                    linesToHighlight = lines;\n                    // If the insertion does not include a newline, highlight the same line on the left\n                    if (linesToHighlight === 0) {\n                        diffedLines.left.push({\n                            startLine: cursor.left,\n                            endLine: cursor.left\n                        });\n                    }\n                    // If the last character is a newline, we don't want to highlight that line\n                    if (lastChar === \"\\n\") {\n                        linesToHighlight -= 1;\n                    }\n                    diffedLines.right.push({\n                        startLine: cursor.right,\n                        endLine: cursor.right + linesToHighlight\n                    });\n                    cursor.right += lines;\n                    break;\n                default:\n                    throw new Error(\"Diff type was not defined.\");\n            }\n        });\n        return diffedLines;\n    };\n    // Receives a collection of line numbers and iterates through them to highlight appropriately\n    // Returns an object that tells the render() method how to display the code editors\n    DiffComponent.prototype.setCodeMarkers = function (diffedLines) {\n        if (diffedLines === void 0) { diffedLines = { left: [], right: [] }; }\n        var codeEditorSettings = [];\n        var newMarkerSet = {\n            left: [],\n            right: []\n        };\n        for (var i = 0; i < diffedLines.left.length; i++) {\n            var markerObj = {\n                startRow: diffedLines.left[i].startLine - 1,\n                endRow: diffedLines.left[i].endLine,\n                type: \"text\",\n                className: \"codeMarker\"\n            };\n            newMarkerSet.left.push(markerObj);\n        }\n        for (var i = 0; i < diffedLines.right.length; i++) {\n            var markerObj = {\n                startRow: diffedLines.right[i].startLine - 1,\n                endRow: diffedLines.right[i].endLine,\n                type: \"text\",\n                className: \"codeMarker\"\n            };\n            newMarkerSet.right.push(markerObj);\n        }\n        codeEditorSettings[0] = newMarkerSet.left;\n        codeEditorSettings[1] = newMarkerSet.right;\n        return codeEditorSettings;\n    };\n    DiffComponent.prototype.render = function () {\n        var markers = this.diff();\n        return (React.createElement(split_1.default, { name: this.props.name, className: this.props.className, focus: this.props.focus, orientation: this.props.orientation, splits: this.props.splits, mode: this.props.mode, theme: this.props.theme, height: this.props.height, width: this.props.width, fontSize: this.props.fontSize, showGutter: this.props.showGutter, onChange: this.onChange, onPaste: this.props.onPaste, onLoad: this.props.onLoad, onScroll: this.props.onScroll, minLines: this.props.minLines, maxLines: this.props.maxLines, readOnly: this.props.readOnly, highlightActiveLine: this.props.highlightActiveLine, showPrintMargin: this.props.showPrintMargin, tabSize: this.props.tabSize, cursorStart: this.props.cursorStart, editorProps: this.props.editorProps, style: this.props.style, scrollMargin: this.props.scrollMargin, setOptions: this.props.setOptions, wrapEnabled: this.props.wrapEnabled, enableBasicAutocompletion: this.props.enableBasicAutocompletion, enableLiveAutocompletion: this.props.enableLiveAutocompletion, value: this.state.value, markers: markers }));\n    };\n    DiffComponent.propTypes = {\n        cursorStart: PropTypes.number,\n        editorProps: PropTypes.object,\n        enableBasicAutocompletion: PropTypes.bool,\n        enableLiveAutocompletion: PropTypes.bool,\n        focus: PropTypes.bool,\n        fontSize: PropTypes.number,\n        height: PropTypes.string,\n        highlightActiveLine: PropTypes.bool,\n        maxLines: PropTypes.number,\n        minLines: PropTypes.number,\n        mode: PropTypes.string,\n        name: PropTypes.string,\n        className: PropTypes.string,\n        onLoad: PropTypes.func,\n        onPaste: PropTypes.func,\n        onScroll: PropTypes.func,\n        onChange: PropTypes.func,\n        orientation: PropTypes.string,\n        readOnly: PropTypes.bool,\n        scrollMargin: PropTypes.array,\n        setOptions: PropTypes.object,\n        showGutter: PropTypes.bool,\n        showPrintMargin: PropTypes.bool,\n        splits: PropTypes.number,\n        style: PropTypes.object,\n        tabSize: PropTypes.number,\n        theme: PropTypes.string,\n        value: PropTypes.array,\n        width: PropTypes.string,\n        wrapEnabled: PropTypes.bool\n    };\n    DiffComponent.defaultProps = {\n        cursorStart: 1,\n        editorProps: {},\n        enableBasicAutocompletion: false,\n        enableLiveAutocompletion: false,\n        focus: false,\n        fontSize: 12,\n        height: \"500px\",\n        highlightActiveLine: true,\n        maxLines: null,\n        minLines: null,\n        mode: \"\",\n        name: \"ace-editor\",\n        onLoad: null,\n        onScroll: null,\n        onPaste: null,\n        onChange: null,\n        orientation: \"beside\",\n        readOnly: false,\n        scrollMargin: [0, 0, 0, 0],\n        setOptions: {},\n        showGutter: true,\n        showPrintMargin: true,\n        splits: 2,\n        style: {},\n        tabSize: 4,\n        theme: \"github\",\n        value: [\"\", \"\"],\n        width: \"500px\",\n        wrapEnabled: true\n    };\n    return DiffComponent;\n}(React.Component));\nexports.default = DiffComponent;\n\n\n/***/ }),\n/* 1608 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {ace.define(\"ace/split\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/editor\",\"ace/virtual_renderer\",\"ace/edit_session\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Editor = require(\"./editor\").Editor;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Split = function (container, theme, splits) {\n    this.BELOW = 1;\n    this.BESIDE = 0;\n    this.$container = container;\n    this.$theme = theme;\n    this.$splits = 0;\n    this.$editorCSS = \"\";\n    this.$editors = [];\n    this.$orientation = this.BESIDE;\n    this.setSplits(splits || 1);\n    this.$cEditor = this.$editors[0];\n    this.on(\"focus\", function (editor) {\n        this.$cEditor = editor;\n    }.bind(this));\n};\n(function () {\n    oop.implement(this, EventEmitter);\n    this.$createEditor = function () {\n        var el = document.createElement(\"div\");\n        el.className = this.$editorCSS;\n        el.style.cssText = \"position: absolute; top:0px; bottom:0px\";\n        this.$container.appendChild(el);\n        var editor = new Editor(new Renderer(el, this.$theme));\n        editor.on(\"focus\", function () {\n            this._emit(\"focus\", editor);\n        }.bind(this));\n        this.$editors.push(editor);\n        editor.setFontSize(this.$fontSize);\n        return editor;\n    };\n    this.setSplits = function (splits) {\n        var editor;\n        if (splits < 1) {\n            throw \"The number of splits have to be > 0!\";\n        }\n        if (splits == this.$splits) {\n            return;\n        }\n        else if (splits > this.$splits) {\n            while (this.$splits < this.$editors.length && this.$splits < splits) {\n                editor = this.$editors[this.$splits];\n                this.$container.appendChild(editor.container);\n                editor.setFontSize(this.$fontSize);\n                this.$splits++;\n            }\n            while (this.$splits < splits) {\n                this.$createEditor();\n                this.$splits++;\n            }\n        }\n        else {\n            while (this.$splits > splits) {\n                editor = this.$editors[this.$splits - 1];\n                this.$container.removeChild(editor.container);\n                this.$splits--;\n            }\n        }\n        this.resize();\n    };\n    this.getSplits = function () {\n        return this.$splits;\n    };\n    this.getEditor = function (idx) {\n        return this.$editors[idx];\n    };\n    this.getCurrentEditor = function () {\n        return this.$cEditor;\n    };\n    this.focus = function () {\n        this.$cEditor.focus();\n    };\n    this.blur = function () {\n        this.$cEditor.blur();\n    };\n    this.setTheme = function (theme) {\n        this.$editors.forEach(function (editor) {\n            editor.setTheme(theme);\n        });\n    };\n    this.setKeyboardHandler = function (keybinding) {\n        this.$editors.forEach(function (editor) {\n            editor.setKeyboardHandler(keybinding);\n        });\n    };\n    this.forEach = function (callback, scope) {\n        this.$editors.forEach(callback, scope);\n    };\n    this.$fontSize = \"\";\n    this.setFontSize = function (size) {\n        this.$fontSize = size;\n        this.forEach(function (editor) {\n            editor.setFontSize(size);\n        });\n    };\n    this.$cloneSession = function (session) {\n        var s = new EditSession(session.getDocument(), session.getMode());\n        var undoManager = session.getUndoManager();\n        s.setUndoManager(undoManager);\n        s.setTabSize(session.getTabSize());\n        s.setUseSoftTabs(session.getUseSoftTabs());\n        s.setOverwrite(session.getOverwrite());\n        s.setBreakpoints(session.getBreakpoints());\n        s.setUseWrapMode(session.getUseWrapMode());\n        s.setUseWorker(session.getUseWorker());\n        s.setWrapLimitRange(session.$wrapLimitRange.min, session.$wrapLimitRange.max);\n        s.$foldData = session.$cloneFoldData();\n        return s;\n    };\n    this.setSession = function (session, idx) {\n        var editor;\n        if (idx == null) {\n            editor = this.$cEditor;\n        }\n        else {\n            editor = this.$editors[idx];\n        }\n        var isUsed = this.$editors.some(function (editor) {\n            return editor.session === session;\n        });\n        if (isUsed) {\n            session = this.$cloneSession(session);\n        }\n        editor.setSession(session);\n        return session;\n    };\n    this.getOrientation = function () {\n        return this.$orientation;\n    };\n    this.setOrientation = function (orientation) {\n        if (this.$orientation == orientation) {\n            return;\n        }\n        this.$orientation = orientation;\n        this.resize();\n    };\n    this.resize = function () {\n        var width = this.$container.clientWidth;\n        var height = this.$container.clientHeight;\n        var editor;\n        if (this.$orientation == this.BESIDE) {\n            var editorWidth = width / this.$splits;\n            for (var i = 0; i < this.$splits; i++) {\n                editor = this.$editors[i];\n                editor.container.style.width = editorWidth + \"px\";\n                editor.container.style.top = \"0px\";\n                editor.container.style.left = i * editorWidth + \"px\";\n                editor.container.style.height = height + \"px\";\n                editor.resize();\n            }\n        }\n        else {\n            var editorHeight = height / this.$splits;\n            for (var i = 0; i < this.$splits; i++) {\n                editor = this.$editors[i];\n                editor.container.style.width = width + \"px\";\n                editor.container.style.top = i * editorHeight + \"px\";\n                editor.container.style.left = \"0px\";\n                editor.container.style.height = editorHeight + \"px\";\n                editor.resize();\n            }\n        }\n    };\n}).call(Split.prototype);\nexports.Split = Split;\n\n});\n\nace.define(\"ace/ext/split\",[\"require\",\"exports\",\"module\",\"ace/split\"], function(require, exports, module){\"use strict\";\nmodule.exports = require(\"../split\");\n\n});                (function() {\n                    ace.require([\"ace/ext/split\"], function(m) {\n                        if ( true && module) {\n                            module.exports = m;\n                        }\n                    });\n                })();\n            \n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 1609 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\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 `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\n    rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\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 match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\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/**\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/** 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    splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\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 * 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 * 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 `_.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 = isKey(path, object) ? [path] : castPath(path);\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\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 `_.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 (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\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 * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\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 * 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\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 * 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 = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\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\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 * 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 `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 && 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);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\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 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 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 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 `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) && objectToString.call(value) == symbolTag);\n}\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 process.\n * @returns {string} Returns the 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\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\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(91)))\n\n/***/ }),\n/* 1610 */\n/***/ (function(module, exports) {\n\n/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * Class containing the diff, match and patch methods.\n * @constructor\n */\nvar diff_match_patch = function() {\n\n  // Defaults.\n  // Redefine these in your program to override the defaults.\n\n  // Number of seconds to map a diff before giving up (0 for infinity).\n  this.Diff_Timeout = 1.0;\n  // Cost of an empty edit operation in terms of edit characters.\n  this.Diff_EditCost = 4;\n  // At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n  this.Match_Threshold = 0.5;\n  // How far to search for a match (0 = exact location, 1000+ = broad match).\n  // A match this many characters away from the expected location will add\n  // 1.0 to the score (0.0 is a perfect match).\n  this.Match_Distance = 1000;\n  // When deleting a large block of text (over ~64 characters), how close do\n  // the contents have to be to match the expected contents. (0.0 = perfection,\n  // 1.0 = very loose).  Note that Match_Threshold controls how closely the\n  // end points of a delete need to match.\n  this.Patch_DeleteThreshold = 0.5;\n  // Chunk size for context length.\n  this.Patch_Margin = 4;\n\n  // The number of bits in an int.\n  this.Match_MaxBits = 32;\n};\n\n\n//  DIFF FUNCTIONS\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n/**\n * Class representing one diff tuple.\n * ~Attempts to look like a two-element array (which is what this used to be).~\n * Constructor returns an actual two-element array, to allow destructing @JackuB\n * See https://github.com/JackuB/diff-match-patch/issues/14 for details\n * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.\n * @param {string} text Text to be deleted, inserted, or retained.\n * @constructor\n */\ndiff_match_patch.Diff = function(op, text) {\n  return [op, text];\n};\n\n/**\n * Find the differences between two texts.  Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean=} opt_checklines Optional speedup flag. If present and false,\n *     then don't run a line-level diff first to identify the changed areas.\n *     Defaults to true, which does a faster, slightly less optimal diff.\n * @param {number=} opt_deadline Optional time when the diff should be complete\n *     by.  Used internally for recursive calls.  Users should set DiffTimeout\n *     instead.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines,\n    opt_deadline) {\n  // Set a deadline by which time the diff must be complete.\n  if (typeof opt_deadline == 'undefined') {\n    if (this.Diff_Timeout <= 0) {\n      opt_deadline = Number.MAX_VALUE;\n    } else {\n      opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000;\n    }\n  }\n  var deadline = opt_deadline;\n\n  // Check for null inputs.\n  if (text1 == null || text2 == null) {\n    throw new Error('Null input. (diff_main)');\n  }\n\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [new diff_match_patch.Diff(DIFF_EQUAL, text1)];\n    }\n    return [];\n  }\n\n  if (typeof opt_checklines == 'undefined') {\n    opt_checklines = true;\n  }\n  var checklines = opt_checklines;\n\n  // Trim off common prefix (speedup).\n  var commonlength = this.diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = this.diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = this.diff_compute_(text1, text2, checklines, deadline);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, commonprefix));\n  }\n  if (commonsuffix) {\n    diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, commonsuffix));\n  }\n  this.diff_cleanupMerge(diffs);\n  return diffs;\n};\n\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean} checklines Speedup flag.  If false, then don't run a\n *     line-level diff first to identify the changed areas.\n *     If true, then run a faster, slightly less optimal diff.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines,\n    deadline) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [new diff_match_patch.Diff(DIFF_INSERT, text2)];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [new diff_match_patch.Diff(DIFF_DELETE, text1)];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(0, i)),\n             new diff_match_patch.Diff(DIFF_EQUAL, shorttext),\n             new diff_match_patch.Diff(DIFF_INSERT,\n                 longtext.substring(i + shorttext.length))];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [new diff_match_patch.Diff(DIFF_DELETE, text1),\n            new diff_match_patch.Diff(DIFF_INSERT, text2)];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = this.diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);\n    var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);\n    // Merge the results.\n    return diffs_a.concat([new diff_match_patch.Diff(DIFF_EQUAL, mid_common)],\n                          diffs_b);\n  }\n\n  if (checklines && text1.length > 100 && text2.length > 100) {\n    return this.diff_lineMode_(text1, text2, deadline);\n  }\n\n  return this.diff_bisect_(text1, text2, deadline);\n};\n\n\n/**\n * Do a quick line-level diff on both strings, then rediff the parts for\n * greater accuracy.\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) {\n  // Scan the text on a line-by-line basis first.\n  var a = this.diff_linesToChars_(text1, text2);\n  text1 = a.chars1;\n  text2 = a.chars2;\n  var linearray = a.lineArray;\n\n  var diffs = this.diff_main(text1, text2, false, deadline);\n\n  // Convert the diff back to original text.\n  this.diff_charsToLines_(diffs, linearray);\n  // Eliminate freak matches (e.g. blank lines)\n  this.diff_cleanupSemantic(diffs);\n\n  // Rediff any replacement blocks, this time character-by-character.\n  // Add a dummy entry at the end.\n  diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete >= 1 && count_insert >= 1) {\n          // Delete the offending records and add the merged ones.\n          diffs.splice(pointer - count_delete - count_insert,\n                       count_delete + count_insert);\n          pointer = pointer - count_delete - count_insert;\n          var subDiff =\n              this.diff_main(text_delete, text_insert, false, deadline);\n          for (var j = subDiff.length - 1; j >= 0; j--) {\n            diffs.splice(pointer, 0, subDiff[j]);\n          }\n          pointer = pointer + subDiff.length;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n    pointer++;\n  }\n  diffs.pop();  // Remove the dummy entry at the end.\n\n  return diffs;\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = (delta % 2 != 0);\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Bail out if deadline is reached.\n    if ((new Date()).getTime() > deadline) {\n      break;\n    }\n\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length &&\n             text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length &&\n             text1.charAt(text1_length - x2 - 1) ==\n             text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [new diff_match_patch.Diff(DIFF_DELETE, text1),\n          new diff_match_patch.Diff(DIFF_INSERT, text2)];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y,\n    deadline) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = this.diff_main(text1a, text2a, false, deadline);\n  var diffsb = this.diff_main(text1b, text2b, false, deadline);\n\n  return diffs.concat(diffsb);\n};\n\n\n/**\n * Split two texts into an array of strings.  Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {{chars1: string, chars2: string, lineArray: !Array.<string>}}\n *     An object containing the encoded text1, the encoded text2 and\n *     the array of unique strings.\n *     The zeroth element of the array of unique strings is intentionally blank.\n * @private\n */\ndiff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) {\n  var lineArray = [];  // e.g. lineArray[4] == 'Hello\\n'\n  var lineHash = {};   // e.g. lineHash['Hello\\n'] == 4\n\n  // '\\x00' is a valid character, but various debuggers don't like it.\n  // So we'll insert a junk entry to avoid generating a null character.\n  lineArray[0] = '';\n\n  /**\n   * Split a text into an array of strings.  Reduce the texts to a string of\n   * hashes where each Unicode character represents one line.\n   * Modifies linearray and linehash through being a closure.\n   * @param {string} text String to encode.\n   * @return {string} Encoded string.\n   * @private\n   */\n  function diff_linesToCharsMunge_(text) {\n    var chars = '';\n    // Walk the text, pulling out a substring for each line.\n    // text.split('\\n') would would temporarily double our memory footprint.\n    // Modifying text would create many large strings to garbage collect.\n    var lineStart = 0;\n    var lineEnd = -1;\n    // Keeping our own length variable is faster than looking it up.\n    var lineArrayLength = lineArray.length;\n    while (lineEnd < text.length - 1) {\n      lineEnd = text.indexOf('\\n', lineStart);\n      if (lineEnd == -1) {\n        lineEnd = text.length - 1;\n      }\n      var line = text.substring(lineStart, lineEnd + 1);\n\n      if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) :\n          (lineHash[line] !== undefined)) {\n        chars += String.fromCharCode(lineHash[line]);\n      } else {\n        if (lineArrayLength == maxLines) {\n          // Bail out at 65535 because\n          // String.fromCharCode(65536) == String.fromCharCode(0)\n          line = text.substring(lineStart);\n          lineEnd = text.length;\n        }\n        chars += String.fromCharCode(lineArrayLength);\n        lineHash[line] = lineArrayLength;\n        lineArray[lineArrayLength++] = line;\n      }\n      lineStart = lineEnd + 1;\n    }\n    return chars;\n  }\n  // Allocate 2/3rds of the space for text1, the rest for text2.\n  var maxLines = 40000;\n  var chars1 = diff_linesToCharsMunge_(text1);\n  maxLines = 65535;\n  var chars2 = diff_linesToCharsMunge_(text2);\n  return {chars1: chars1, chars2: chars2, lineArray: lineArray};\n};\n\n\n/**\n * Rehydrate the text in a diff from a string of line hashes to real lines of\n * text.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @param {!Array.<string>} lineArray Array of unique strings.\n * @private\n */\ndiff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) {\n  for (var i = 0; i < diffs.length; i++) {\n    var chars = diffs[i][1];\n    var text = [];\n    for (var j = 0; j < chars.length; j++) {\n      text[j] = lineArray[chars.charCodeAt(j)];\n    }\n    diffs[i][1] = text.join('');\n  }\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\ndiff_match_patch.prototype.diff_commonPrefix = function(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) ==\n        text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\ndiff_match_patch.prototype.diff_commonSuffix = function(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 ||\n      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n        text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n *     string and the start of the second string.\n * @private\n */\ndiff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  // Eliminate the null case.\n  if (text1_length == 0 || text2_length == 0) {\n    return 0;\n  }\n  // Truncate the longer string.\n  if (text1_length > text2_length) {\n    text1 = text1.substring(text1_length - text2_length);\n  } else if (text1_length < text2_length) {\n    text2 = text2.substring(0, text1_length);\n  }\n  var text_length = Math.min(text1_length, text2_length);\n  // Quick check for the worst case.\n  if (text1 == text2) {\n    return text_length;\n  }\n\n  // Start by looking for a single character match\n  // and increase length until no match is found.\n  // Performance analysis: https://neil.fraser.name/news/2010/11/04/\n  var best = 0;\n  var length = 1;\n  while (true) {\n    var pattern = text1.substring(text_length - length);\n    var found = text2.indexOf(pattern);\n    if (found == -1) {\n      return best;\n    }\n    length += found;\n    if (found == 0 || text1.substring(text_length - length) ==\n        text2.substring(0, length)) {\n      best = length;\n      length++;\n    }\n  }\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n * @private\n */\ndiff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) {\n  if (this.Diff_Timeout <= 0) {\n    // Don't risk returning a non-optimal diff if we have unlimited time.\n    return null;\n  }\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;  // Pointless.\n  }\n  var dmp = this;  // 'this' becomes 'window' in a closure.\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = dmp.diff_commonPrefix(longtext.substring(i),\n                                               shorttext.substring(j));\n      var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i),\n                                               shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) +\n            shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b,\n              best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemantic = function(diffs) {\n  var changes = false;\n  var equalities = [];  // Stack of indices where equalities are found.\n  var equalitiesLength = 0;  // Keeping our own length var is faster in JS.\n  /** @type {?string} */\n  var lastEquality = null;\n  // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n  var pointer = 0;  // Index of current position.\n  // Number of characters that changed prior to the equality.\n  var length_insertions1 = 0;\n  var length_deletions1 = 0;\n  // Number of characters that changed after the equality.\n  var length_insertions2 = 0;\n  var length_deletions2 = 0;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {  // Equality found.\n      equalities[equalitiesLength++] = pointer;\n      length_insertions1 = length_insertions2;\n      length_deletions1 = length_deletions2;\n      length_insertions2 = 0;\n      length_deletions2 = 0;\n      lastEquality = diffs[pointer][1];\n    } else {  // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_INSERT) {\n        length_insertions2 += diffs[pointer][1].length;\n      } else {\n        length_deletions2 += diffs[pointer][1].length;\n      }\n      // Eliminate an equality that is smaller or equal to the edits on both\n      // sides of it.\n      if (lastEquality && (lastEquality.length <=\n          Math.max(length_insertions1, length_deletions1)) &&\n          (lastEquality.length <= Math.max(length_insertions2,\n                                           length_deletions2))) {\n        // Duplicate record.\n        diffs.splice(equalities[equalitiesLength - 1], 0,\n                     new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n        // Change second copy to insert.\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        // Throw away the equality we just deleted.\n        equalitiesLength--;\n        // Throw away the previous equality (it needs to be reevaluated).\n        equalitiesLength--;\n        pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n        length_insertions1 = 0;  // Reset the counters.\n        length_deletions1 = 0;\n        length_insertions2 = 0;\n        length_deletions2 = 0;\n        lastEquality = null;\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n\n  // Normalize the diff.\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n  this.diff_cleanupSemanticLossless(diffs);\n\n  // Find any overlaps between deletions and insertions.\n  // e.g: <del>abcxxx</del><ins>xxxdef</ins>\n  //   -> <del>abc</del>xxx<ins>def</ins>\n  // e.g: <del>xxxabc</del><ins>defxxx</ins>\n  //   -> <ins>def</ins>xxx<del>abc</del>\n  // Only extract an overlap if it is as big as the edit ahead or behind it.\n  pointer = 1;\n  while (pointer < diffs.length) {\n    if (diffs[pointer - 1][0] == DIFF_DELETE &&\n        diffs[pointer][0] == DIFF_INSERT) {\n      var deletion = diffs[pointer - 1][1];\n      var insertion = diffs[pointer][1];\n      var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);\n      var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);\n      if (overlap_length1 >= overlap_length2) {\n        if (overlap_length1 >= deletion.length / 2 ||\n            overlap_length1 >= insertion.length / 2) {\n          // Overlap found.  Insert an equality and trim the surrounding edits.\n          diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n              insertion.substring(0, overlap_length1)));\n          diffs[pointer - 1][1] =\n              deletion.substring(0, deletion.length - overlap_length1);\n          diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n          pointer++;\n        }\n      } else {\n        if (overlap_length2 >= deletion.length / 2 ||\n            overlap_length2 >= insertion.length / 2) {\n          // Reverse overlap found.\n          // Insert an equality and swap and trim the surrounding edits.\n          diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n              deletion.substring(0, overlap_length2)));\n          diffs[pointer - 1][0] = DIFF_INSERT;\n          diffs[pointer - 1][1] =\n              insertion.substring(0, insertion.length - overlap_length2);\n          diffs[pointer + 1][0] = DIFF_DELETE;\n          diffs[pointer + 1][1] =\n              deletion.substring(overlap_length2);\n          pointer++;\n        }\n      }\n      pointer++;\n    }\n    pointer++;\n  }\n};\n\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) {\n  /**\n   * Given two strings, compute a score representing whether the internal\n   * boundary falls on logical boundaries.\n   * Scores range from 6 (best) to 0 (worst).\n   * Closure, but does not reference any external variables.\n   * @param {string} one First string.\n   * @param {string} two Second string.\n   * @return {number} The score.\n   * @private\n   */\n  function diff_cleanupSemanticScore_(one, two) {\n    if (!one || !two) {\n      // Edges are the best.\n      return 6;\n    }\n\n    // Each port of this function behaves slightly differently due to\n    // subtle differences in each language's definition of things like\n    // 'whitespace'.  Since this function's purpose is largely cosmetic,\n    // the choice has been made to use each language's native features\n    // rather than force total conformity.\n    var char1 = one.charAt(one.length - 1);\n    var char2 = two.charAt(0);\n    var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);\n    var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);\n    var whitespace1 = nonAlphaNumeric1 &&\n        char1.match(diff_match_patch.whitespaceRegex_);\n    var whitespace2 = nonAlphaNumeric2 &&\n        char2.match(diff_match_patch.whitespaceRegex_);\n    var lineBreak1 = whitespace1 &&\n        char1.match(diff_match_patch.linebreakRegex_);\n    var lineBreak2 = whitespace2 &&\n        char2.match(diff_match_patch.linebreakRegex_);\n    var blankLine1 = lineBreak1 &&\n        one.match(diff_match_patch.blanklineEndRegex_);\n    var blankLine2 = lineBreak2 &&\n        two.match(diff_match_patch.blanklineStartRegex_);\n\n    if (blankLine1 || blankLine2) {\n      // Five points for blank lines.\n      return 5;\n    } else if (lineBreak1 || lineBreak2) {\n      // Four points for line breaks.\n      return 4;\n    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n      // Three points for end of sentences.\n      return 3;\n    } else if (whitespace1 || whitespace2) {\n      // Two points for whitespace.\n      return 2;\n    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n      // One point for non-alphanumeric.\n      return 1;\n    }\n    return 0;\n  }\n\n  var pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      var equality1 = diffs[pointer - 1][1];\n      var edit = diffs[pointer][1];\n      var equality2 = diffs[pointer + 1][1];\n\n      // First, shift the edit as far left as possible.\n      var commonOffset = this.diff_commonSuffix(equality1, edit);\n      if (commonOffset) {\n        var commonString = edit.substring(edit.length - commonOffset);\n        equality1 = equality1.substring(0, equality1.length - commonOffset);\n        edit = commonString + edit.substring(0, edit.length - commonOffset);\n        equality2 = commonString + equality2;\n      }\n\n      // Second, step character by character right, looking for the best fit.\n      var bestEquality1 = equality1;\n      var bestEdit = edit;\n      var bestEquality2 = equality2;\n      var bestScore = diff_cleanupSemanticScore_(equality1, edit) +\n          diff_cleanupSemanticScore_(edit, equality2);\n      while (edit.charAt(0) === equality2.charAt(0)) {\n        equality1 += edit.charAt(0);\n        edit = edit.substring(1) + equality2.charAt(0);\n        equality2 = equality2.substring(1);\n        var score = diff_cleanupSemanticScore_(equality1, edit) +\n            diff_cleanupSemanticScore_(edit, equality2);\n        // The >= encourages trailing rather than leading whitespace on edits.\n        if (score >= bestScore) {\n          bestScore = score;\n          bestEquality1 = equality1;\n          bestEdit = edit;\n          bestEquality2 = equality2;\n        }\n      }\n\n      if (diffs[pointer - 1][1] != bestEquality1) {\n        // We have an improvement, save it back to the diff.\n        if (bestEquality1) {\n          diffs[pointer - 1][1] = bestEquality1;\n        } else {\n          diffs.splice(pointer - 1, 1);\n          pointer--;\n        }\n        diffs[pointer][1] = bestEdit;\n        if (bestEquality2) {\n          diffs[pointer + 1][1] = bestEquality2;\n        } else {\n          diffs.splice(pointer + 1, 1);\n          pointer--;\n        }\n      }\n    }\n    pointer++;\n  }\n};\n\n// Define some regex patterns for matching boundaries.\ndiff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\ndiff_match_patch.whitespaceRegex_ = /\\s/;\ndiff_match_patch.linebreakRegex_ = /[\\r\\n]/;\ndiff_match_patch.blanklineEndRegex_ = /\\n\\r?\\n$/;\ndiff_match_patch.blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Reduce the number of edits by eliminating operationally trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) {\n  var changes = false;\n  var equalities = [];  // Stack of indices where equalities are found.\n  var equalitiesLength = 0;  // Keeping our own length var is faster in JS.\n  /** @type {?string} */\n  var lastEquality = null;\n  // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n  var pointer = 0;  // Index of current position.\n  // Is there an insertion operation before the last equality.\n  var pre_ins = false;\n  // Is there a deletion operation before the last equality.\n  var pre_del = false;\n  // Is there an insertion operation after the last equality.\n  var post_ins = false;\n  // Is there a deletion operation after the last equality.\n  var post_del = false;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {  // Equality found.\n      if (diffs[pointer][1].length < this.Diff_EditCost &&\n          (post_ins || post_del)) {\n        // Candidate found.\n        equalities[equalitiesLength++] = pointer;\n        pre_ins = post_ins;\n        pre_del = post_del;\n        lastEquality = diffs[pointer][1];\n      } else {\n        // Not a candidate, and can never become one.\n        equalitiesLength = 0;\n        lastEquality = null;\n      }\n      post_ins = post_del = false;\n    } else {  // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_DELETE) {\n        post_del = true;\n      } else {\n        post_ins = true;\n      }\n      /*\n       * Five types to be split:\n       * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>\n       * <ins>A</ins>X<ins>C</ins><del>D</del>\n       * <ins>A</ins><del>B</del>X<ins>C</ins>\n       * <ins>A</del>X<ins>C</ins><del>D</del>\n       * <ins>A</ins><del>B</del>X<del>C</del>\n       */\n      if (lastEquality && ((pre_ins && pre_del && post_ins && post_del) ||\n                           ((lastEquality.length < this.Diff_EditCost / 2) &&\n                            (pre_ins + pre_del + post_ins + post_del) == 3))) {\n        // Duplicate record.\n        diffs.splice(equalities[equalitiesLength - 1], 0,\n                     new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n        // Change second copy to insert.\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        equalitiesLength--;  // Throw away the equality we just deleted;\n        lastEquality = null;\n        if (pre_ins && pre_del) {\n          // No changes made which could affect previous entry, keep going.\n          post_ins = post_del = true;\n          equalitiesLength = 0;\n        } else {\n          equalitiesLength--;  // Throw away the previous equality.\n          pointer = equalitiesLength > 0 ?\n              equalities[equalitiesLength - 1] : -1;\n          post_ins = post_del = false;\n        }\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n};\n\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupMerge = function(diffs) {\n  // Add a dummy entry at the end.\n  diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = this.diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if ((pointer - count_delete - count_insert) > 0 &&\n                  diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] +=\n                    text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n                    text_insert.substring(0, commonlength)));\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = this.diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length -\n                  commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length -\n                  commonlength);\n              text_delete = text_delete.substring(0, text_delete.length -\n                  commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          pointer -= count_delete + count_insert;\n          diffs.splice(pointer, count_delete + count_insert);\n          if (text_delete.length) {\n            diffs.splice(pointer, 0,\n                new diff_match_patch.Diff(DIFF_DELETE, text_delete));\n            pointer++;\n          }\n          if (text_insert.length) {\n            diffs.splice(pointer, 0,\n                new diff_match_patch.Diff(DIFF_INSERT, text_insert));\n            pointer++;\n          }\n          pointer++;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop();  // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] +\n            diffs[pointer][1].substring(0, diffs[pointer][1].length -\n                                        diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n          diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n            diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n};\n\n\n/**\n * loc is a location in text1, compute and return the equivalent location in\n * text2.\n * e.g. 'The cat' vs 'The big cat', 1->1, 5->8\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @param {number} loc Location within text1.\n * @return {number} Location within text2.\n */\ndiff_match_patch.prototype.diff_xIndex = function(diffs, loc) {\n  var chars1 = 0;\n  var chars2 = 0;\n  var last_chars1 = 0;\n  var last_chars2 = 0;\n  var x;\n  for (x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_INSERT) {  // Equality or deletion.\n      chars1 += diffs[x][1].length;\n    }\n    if (diffs[x][0] !== DIFF_DELETE) {  // Equality or insertion.\n      chars2 += diffs[x][1].length;\n    }\n    if (chars1 > loc) {  // Overshot the location.\n      break;\n    }\n    last_chars1 = chars1;\n    last_chars2 = chars2;\n  }\n  // Was the location was deleted?\n  if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {\n    return last_chars2;\n  }\n  // Add the remaining character length.\n  return last_chars2 + (loc - last_chars1);\n};\n\n\n/**\n * Convert a diff array into a pretty HTML report.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} HTML representation.\n */\ndiff_match_patch.prototype.diff_prettyHtml = function(diffs) {\n  var html = [];\n  var pattern_amp = /&/g;\n  var pattern_lt = /</g;\n  var pattern_gt = />/g;\n  var pattern_para = /\\n/g;\n  for (var x = 0; x < diffs.length; x++) {\n    var op = diffs[x][0];    // Operation (insert, delete, equal)\n    var data = diffs[x][1];  // Text of change.\n    var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;')\n        .replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>');\n    switch (op) {\n      case DIFF_INSERT:\n        html[x] = '<ins style=\"background:#e6ffe6;\">' + text + '</ins>';\n        break;\n      case DIFF_DELETE:\n        html[x] = '<del style=\"background:#ffe6e6;\">' + text + '</del>';\n        break;\n      case DIFF_EQUAL:\n        html[x] = '<span>' + text + '</span>';\n        break;\n    }\n  }\n  return html.join('');\n};\n\n\n/**\n * Compute and return the source text (all equalities and deletions).\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Source text.\n */\ndiff_match_patch.prototype.diff_text1 = function(diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_INSERT) {\n      text[x] = diffs[x][1];\n    }\n  }\n  return text.join('');\n};\n\n\n/**\n * Compute and return the destination text (all equalities and insertions).\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Destination text.\n */\ndiff_match_patch.prototype.diff_text2 = function(diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_DELETE) {\n      text[x] = diffs[x][1];\n    }\n  }\n  return text.join('');\n};\n\n\n/**\n * Compute the Levenshtein distance; the number of inserted, deleted or\n * substituted characters.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {number} Number of changes.\n */\ndiff_match_patch.prototype.diff_levenshtein = function(diffs) {\n  var levenshtein = 0;\n  var insertions = 0;\n  var deletions = 0;\n  for (var x = 0; x < diffs.length; x++) {\n    var op = diffs[x][0];\n    var data = diffs[x][1];\n    switch (op) {\n      case DIFF_INSERT:\n        insertions += data.length;\n        break;\n      case DIFF_DELETE:\n        deletions += data.length;\n        break;\n      case DIFF_EQUAL:\n        // A deletion and an insertion is one substitution.\n        levenshtein += Math.max(insertions, deletions);\n        insertions = 0;\n        deletions = 0;\n        break;\n    }\n  }\n  levenshtein += Math.max(insertions, deletions);\n  return levenshtein;\n};\n\n\n/**\n * Crush the diff into an encoded string which describes the operations\n * required to transform text1 into text2.\n * E.g. =3\\t-2\\t+ing  -> Keep 3 chars, delete 2 chars, insert 'ing'.\n * Operations are tab-separated.  Inserted text is escaped using %xx notation.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Delta text.\n */\ndiff_match_patch.prototype.diff_toDelta = function(diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    switch (diffs[x][0]) {\n      case DIFF_INSERT:\n        text[x] = '+' + encodeURI(diffs[x][1]);\n        break;\n      case DIFF_DELETE:\n        text[x] = '-' + diffs[x][1].length;\n        break;\n      case DIFF_EQUAL:\n        text[x] = '=' + diffs[x][1].length;\n        break;\n    }\n  }\n  return text.join('\\t').replace(/%20/g, ' ');\n};\n\n\n/**\n * Given the original text1, and an encoded string which describes the\n * operations required to transform text1 into text2, compute the full diff.\n * @param {string} text1 Source string for the diff.\n * @param {string} delta Delta text.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.diff_fromDelta = function(text1, delta) {\n  var diffs = [];\n  var diffsLength = 0;  // Keeping our own length var is faster in JS.\n  var pointer = 0;  // Cursor in text1\n  var tokens = delta.split(/\\t/g);\n  for (var x = 0; x < tokens.length; x++) {\n    // Each token begins with a one character parameter which specifies the\n    // operation of this token (delete, insert, equality).\n    var param = tokens[x].substring(1);\n    switch (tokens[x].charAt(0)) {\n      case '+':\n        try {\n          diffs[diffsLength++] =\n              new diff_match_patch.Diff(DIFF_INSERT, decodeURI(param));\n        } catch (ex) {\n          // Malformed URI sequence.\n          throw new Error('Illegal escape in diff_fromDelta: ' + param);\n        }\n        break;\n      case '-':\n        // Fall through.\n      case '=':\n        var n = parseInt(param, 10);\n        if (isNaN(n) || n < 0) {\n          throw new Error('Invalid number in diff_fromDelta: ' + param);\n        }\n        var text = text1.substring(pointer, pointer += n);\n        if (tokens[x].charAt(0) == '=') {\n          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_EQUAL, text);\n        } else {\n          diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_DELETE, text);\n        }\n        break;\n      default:\n        // Blank tokens are ok (from a trailing \\t).\n        // Anything else is an error.\n        if (tokens[x]) {\n          throw new Error('Invalid diff operation in diff_fromDelta: ' +\n                          tokens[x]);\n        }\n    }\n  }\n  if (pointer != text1.length) {\n    throw new Error('Delta length (' + pointer +\n        ') does not equal source text length (' + text1.length + ').');\n  }\n  return diffs;\n};\n\n\n//  MATCH FUNCTIONS\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc'.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n */\ndiff_match_patch.prototype.match_main = function(text, pattern, loc) {\n  // Check for null inputs.\n  if (text == null || pattern == null || loc == null) {\n    throw new Error('Null input. (match_main)');\n  }\n\n  loc = Math.max(0, Math.min(loc, text.length));\n  if (text == pattern) {\n    // Shortcut (potentially not guaranteed by the algorithm)\n    return 0;\n  } else if (!text.length) {\n    // Nothing to match.\n    return -1;\n  } else if (text.substring(loc, loc + pattern.length) == pattern) {\n    // Perfect match at the perfect spot!  (Includes case of null pattern)\n    return loc;\n  } else {\n    // Do a fuzzy compare.\n    return this.match_bitap_(text, pattern, loc);\n  }\n};\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc' using the\n * Bitap algorithm.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n * @private\n */\ndiff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) {\n  if (pattern.length > this.Match_MaxBits) {\n    throw new Error('Pattern too long for this browser.');\n  }\n\n  // Initialise the alphabet.\n  var s = this.match_alphabet_(pattern);\n\n  var dmp = this;  // 'this' becomes 'window' in a closure.\n\n  /**\n   * Compute and return the score for a match with e errors and x location.\n   * Accesses loc and pattern through being a closure.\n   * @param {number} e Number of errors in match.\n   * @param {number} x Location of match.\n   * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n   * @private\n   */\n  function match_bitapScore_(e, x) {\n    var accuracy = e / pattern.length;\n    var proximity = Math.abs(loc - x);\n    if (!dmp.Match_Distance) {\n      // Dodge divide by zero error.\n      return proximity ? 1.0 : accuracy;\n    }\n    return accuracy + (proximity / dmp.Match_Distance);\n  }\n\n  // Highest score beyond which we give up.\n  var score_threshold = this.Match_Threshold;\n  // Is there a nearby exact match? (speedup)\n  var best_loc = text.indexOf(pattern, loc);\n  if (best_loc != -1) {\n    score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n    // What about in the other direction? (speedup)\n    best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n    if (best_loc != -1) {\n      score_threshold =\n          Math.min(match_bitapScore_(0, best_loc), score_threshold);\n    }\n  }\n\n  // Initialise the bit arrays.\n  var matchmask = 1 << (pattern.length - 1);\n  best_loc = -1;\n\n  var bin_min, bin_mid;\n  var bin_max = pattern.length + text.length;\n  var last_rd;\n  for (var d = 0; d < pattern.length; d++) {\n    // Scan for the best match; each iteration allows for one more error.\n    // Run a binary search to determine how far from 'loc' we can stray at this\n    // error level.\n    bin_min = 0;\n    bin_mid = bin_max;\n    while (bin_min < bin_mid) {\n      if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n        bin_min = bin_mid;\n      } else {\n        bin_max = bin_mid;\n      }\n      bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n    }\n    // Use the result from this iteration as the maximum for the next.\n    bin_max = bin_mid;\n    var start = Math.max(1, loc - bin_mid + 1);\n    var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n\n    var rd = Array(finish + 2);\n    rd[finish + 1] = (1 << d) - 1;\n    for (var j = finish; j >= start; j--) {\n      // The alphabet (s) is a sparse hash, so the following line generates\n      // warnings.\n      var charMatch = s[text.charAt(j - 1)];\n      if (d === 0) {  // First pass: exact match.\n        rd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n      } else {  // Subsequent passes: fuzzy match.\n        rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) |\n                (((last_rd[j + 1] | last_rd[j]) << 1) | 1) |\n                last_rd[j + 1];\n      }\n      if (rd[j] & matchmask) {\n        var score = match_bitapScore_(d, j - 1);\n        // This match will almost certainly be better than any existing match.\n        // But check anyway.\n        if (score <= score_threshold) {\n          // Told you so.\n          score_threshold = score;\n          best_loc = j - 1;\n          if (best_loc > loc) {\n            // When passing loc, don't exceed our current distance from loc.\n            start = Math.max(1, 2 * loc - best_loc);\n          } else {\n            // Already passed loc, downhill from here on in.\n            break;\n          }\n        }\n      }\n    }\n    // No hope for a (better) match at greater error levels.\n    if (match_bitapScore_(d + 1, loc) > score_threshold) {\n      break;\n    }\n    last_rd = rd;\n  }\n  return best_loc;\n};\n\n\n/**\n * Initialise the alphabet for the Bitap algorithm.\n * @param {string} pattern The text to encode.\n * @return {!Object} Hash of character locations.\n * @private\n */\ndiff_match_patch.prototype.match_alphabet_ = function(pattern) {\n  var s = {};\n  for (var i = 0; i < pattern.length; i++) {\n    s[pattern.charAt(i)] = 0;\n  }\n  for (var i = 0; i < pattern.length; i++) {\n    s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1);\n  }\n  return s;\n};\n\n\n//  PATCH FUNCTIONS\n\n\n/**\n * Increase the context until it is unique,\n * but don't let the pattern expand beyond Match_MaxBits.\n * @param {!diff_match_patch.patch_obj} patch The patch to grow.\n * @param {string} text Source text.\n * @private\n */\ndiff_match_patch.prototype.patch_addContext_ = function(patch, text) {\n  if (text.length == 0) {\n    return;\n  }\n  if (patch.start2 === null) {\n    throw Error('patch not initialized');\n  }\n  var pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n  var padding = 0;\n\n  // Look for the first and last matches of pattern in text.  If two different\n  // matches are found, increase the pattern length.\n  while (text.indexOf(pattern) != text.lastIndexOf(pattern) &&\n         pattern.length < this.Match_MaxBits - this.Patch_Margin -\n         this.Patch_Margin) {\n    padding += this.Patch_Margin;\n    pattern = text.substring(patch.start2 - padding,\n                             patch.start2 + patch.length1 + padding);\n  }\n  // Add one chunk for good luck.\n  padding += this.Patch_Margin;\n\n  // Add the prefix.\n  var prefix = text.substring(patch.start2 - padding, patch.start2);\n  if (prefix) {\n    patch.diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, prefix));\n  }\n  // Add the suffix.\n  var suffix = text.substring(patch.start2 + patch.length1,\n                              patch.start2 + patch.length1 + padding);\n  if (suffix) {\n    patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, suffix));\n  }\n\n  // Roll back the start points.\n  patch.start1 -= prefix.length;\n  patch.start2 -= prefix.length;\n  // Extend the lengths.\n  patch.length1 += prefix.length + suffix.length;\n  patch.length2 += prefix.length + suffix.length;\n};\n\n\n/**\n * Compute a list of patches to turn text1 into text2.\n * Use diffs if provided, otherwise compute it ourselves.\n * There are four ways to call this function, depending on what data is\n * available to the caller:\n * Method 1:\n * a = text1, b = text2\n * Method 2:\n * a = diffs\n * Method 3 (optimal):\n * a = text1, b = diffs\n * Method 4 (deprecated, use method 3):\n * a = text1, b = text2, c = diffs\n *\n * @param {string|!Array.<!diff_match_patch.Diff>} a text1 (methods 1,3,4) or\n * Array of diff tuples for text1 to text2 (method 2).\n * @param {string|!Array.<!diff_match_patch.Diff>=} opt_b text2 (methods 1,4) or\n * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).\n * @param {string|!Array.<!diff_match_patch.Diff>=} opt_c Array of diff tuples\n * for text1 to text2 (method 4) or undefined (methods 1,2,3).\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) {\n  var text1, diffs;\n  if (typeof a == 'string' && typeof opt_b == 'string' &&\n      typeof opt_c == 'undefined') {\n    // Method 1: text1, text2\n    // Compute diffs from text1 and text2.\n    text1 = /** @type {string} */(a);\n    diffs = this.diff_main(text1, /** @type {string} */(opt_b), true);\n    if (diffs.length > 2) {\n      this.diff_cleanupSemantic(diffs);\n      this.diff_cleanupEfficiency(diffs);\n    }\n  } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' &&\n      typeof opt_c == 'undefined') {\n    // Method 2: diffs\n    // Compute text1 from diffs.\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */(a);\n    text1 = this.diff_text1(diffs);\n  } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' &&\n      typeof opt_c == 'undefined') {\n    // Method 3: text1, diffs\n    text1 = /** @type {string} */(a);\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */(opt_b);\n  } else if (typeof a == 'string' && typeof opt_b == 'string' &&\n      opt_c && typeof opt_c == 'object') {\n    // Method 4: text1, text2, diffs\n    // text2 is not used.\n    text1 = /** @type {string} */(a);\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */(opt_c);\n  } else {\n    throw new Error('Unknown call format to patch_make.');\n  }\n\n  if (diffs.length === 0) {\n    return [];  // Get rid of the null case.\n  }\n  var patches = [];\n  var patch = new diff_match_patch.patch_obj();\n  var patchDiffLength = 0;  // Keeping our own length var is faster in JS.\n  var char_count1 = 0;  // Number of characters into the text1 string.\n  var char_count2 = 0;  // Number of characters into the text2 string.\n  // Start with text1 (prepatch_text) and apply the diffs until we arrive at\n  // text2 (postpatch_text).  We recreate the patches one by one to determine\n  // context info.\n  var prepatch_text = text1;\n  var postpatch_text = text1;\n  for (var x = 0; x < diffs.length; x++) {\n    var diff_type = diffs[x][0];\n    var diff_text = diffs[x][1];\n\n    if (!patchDiffLength && diff_type !== DIFF_EQUAL) {\n      // A new patch starts here.\n      patch.start1 = char_count1;\n      patch.start2 = char_count2;\n    }\n\n    switch (diff_type) {\n      case DIFF_INSERT:\n        patch.diffs[patchDiffLength++] = diffs[x];\n        patch.length2 += diff_text.length;\n        postpatch_text = postpatch_text.substring(0, char_count2) + diff_text +\n                         postpatch_text.substring(char_count2);\n        break;\n      case DIFF_DELETE:\n        patch.length1 += diff_text.length;\n        patch.diffs[patchDiffLength++] = diffs[x];\n        postpatch_text = postpatch_text.substring(0, char_count2) +\n                         postpatch_text.substring(char_count2 +\n                             diff_text.length);\n        break;\n      case DIFF_EQUAL:\n        if (diff_text.length <= 2 * this.Patch_Margin &&\n            patchDiffLength && diffs.length != x + 1) {\n          // Small equality inside a patch.\n          patch.diffs[patchDiffLength++] = diffs[x];\n          patch.length1 += diff_text.length;\n          patch.length2 += diff_text.length;\n        } else if (diff_text.length >= 2 * this.Patch_Margin) {\n          // Time for a new patch.\n          if (patchDiffLength) {\n            this.patch_addContext_(patch, prepatch_text);\n            patches.push(patch);\n            patch = new diff_match_patch.patch_obj();\n            patchDiffLength = 0;\n            // Unlike Unidiff, our patch lists have a rolling context.\n            // https://github.com/google/diff-match-patch/wiki/Unidiff\n            // Update prepatch text & pos to reflect the application of the\n            // just completed patch.\n            prepatch_text = postpatch_text;\n            char_count1 = char_count2;\n          }\n        }\n        break;\n    }\n\n    // Update the current character count.\n    if (diff_type !== DIFF_INSERT) {\n      char_count1 += diff_text.length;\n    }\n    if (diff_type !== DIFF_DELETE) {\n      char_count2 += diff_text.length;\n    }\n  }\n  // Pick up the leftover patch if not empty.\n  if (patchDiffLength) {\n    this.patch_addContext_(patch, prepatch_text);\n    patches.push(patch);\n  }\n\n  return patches;\n};\n\n\n/**\n * Given an array of patches, return another array that is identical.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_deepCopy = function(patches) {\n  // Making deep copies is hard in JavaScript.\n  var patchesCopy = [];\n  for (var x = 0; x < patches.length; x++) {\n    var patch = patches[x];\n    var patchCopy = new diff_match_patch.patch_obj();\n    patchCopy.diffs = [];\n    for (var y = 0; y < patch.diffs.length; y++) {\n      patchCopy.diffs[y] =\n          new diff_match_patch.Diff(patch.diffs[y][0], patch.diffs[y][1]);\n    }\n    patchCopy.start1 = patch.start1;\n    patchCopy.start2 = patch.start2;\n    patchCopy.length1 = patch.length1;\n    patchCopy.length2 = patch.length2;\n    patchesCopy[x] = patchCopy;\n  }\n  return patchesCopy;\n};\n\n\n/**\n * Merge a set of patches onto the text.  Return a patched text, as well\n * as a list of true/false values indicating which patches were applied.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @param {string} text Old text.\n * @return {!Array.<string|!Array.<boolean>>} Two element Array, containing the\n *      new text and an array of boolean values.\n */\ndiff_match_patch.prototype.patch_apply = function(patches, text) {\n  if (patches.length == 0) {\n    return [text, []];\n  }\n\n  // Deep copy the patches so that no changes are made to originals.\n  patches = this.patch_deepCopy(patches);\n\n  var nullPadding = this.patch_addPadding(patches);\n  text = nullPadding + text + nullPadding;\n\n  this.patch_splitMax(patches);\n  // delta keeps track of the offset between the expected and actual location\n  // of the previous patch.  If there are patches expected at positions 10 and\n  // 20, but the first patch was found at 12, delta is 2 and the second patch\n  // has an effective expected position of 22.\n  var delta = 0;\n  var results = [];\n  for (var x = 0; x < patches.length; x++) {\n    var expected_loc = patches[x].start2 + delta;\n    var text1 = this.diff_text1(patches[x].diffs);\n    var start_loc;\n    var end_loc = -1;\n    if (text1.length > this.Match_MaxBits) {\n      // patch_splitMax will only provide an oversized pattern in the case of\n      // a monster delete.\n      start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits),\n                                  expected_loc);\n      if (start_loc != -1) {\n        end_loc = this.match_main(text,\n            text1.substring(text1.length - this.Match_MaxBits),\n            expected_loc + text1.length - this.Match_MaxBits);\n        if (end_loc == -1 || start_loc >= end_loc) {\n          // Can't find valid trailing context.  Drop this patch.\n          start_loc = -1;\n        }\n      }\n    } else {\n      start_loc = this.match_main(text, text1, expected_loc);\n    }\n    if (start_loc == -1) {\n      // No match found.  :(\n      results[x] = false;\n      // Subtract the delta for this failed patch from subsequent patches.\n      delta -= patches[x].length2 - patches[x].length1;\n    } else {\n      // Found a match.  :)\n      results[x] = true;\n      delta = start_loc - expected_loc;\n      var text2;\n      if (end_loc == -1) {\n        text2 = text.substring(start_loc, start_loc + text1.length);\n      } else {\n        text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);\n      }\n      if (text1 == text2) {\n        // Perfect match, just shove the replacement text in.\n        text = text.substring(0, start_loc) +\n               this.diff_text2(patches[x].diffs) +\n               text.substring(start_loc + text1.length);\n      } else {\n        // Imperfect match.  Run a diff to get a framework of equivalent\n        // indices.\n        var diffs = this.diff_main(text1, text2, false);\n        if (text1.length > this.Match_MaxBits &&\n            this.diff_levenshtein(diffs) / text1.length >\n            this.Patch_DeleteThreshold) {\n          // The end points match, but the content is unacceptably bad.\n          results[x] = false;\n        } else {\n          this.diff_cleanupSemanticLossless(diffs);\n          var index1 = 0;\n          var index2;\n          for (var y = 0; y < patches[x].diffs.length; y++) {\n            var mod = patches[x].diffs[y];\n            if (mod[0] !== DIFF_EQUAL) {\n              index2 = this.diff_xIndex(diffs, index1);\n            }\n            if (mod[0] === DIFF_INSERT) {  // Insertion\n              text = text.substring(0, start_loc + index2) + mod[1] +\n                     text.substring(start_loc + index2);\n            } else if (mod[0] === DIFF_DELETE) {  // Deletion\n              text = text.substring(0, start_loc + index2) +\n                     text.substring(start_loc + this.diff_xIndex(diffs,\n                         index1 + mod[1].length));\n            }\n            if (mod[0] !== DIFF_DELETE) {\n              index1 += mod[1].length;\n            }\n          }\n        }\n      }\n    }\n  }\n  // Strip the padding off.\n  text = text.substring(nullPadding.length, text.length - nullPadding.length);\n  return [text, results];\n};\n\n\n/**\n * Add some padding on text start and end so that edges can match something.\n * Intended to be called only from within patch_apply.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {string} The padding string added to each side.\n */\ndiff_match_patch.prototype.patch_addPadding = function(patches) {\n  var paddingLength = this.Patch_Margin;\n  var nullPadding = '';\n  for (var x = 1; x <= paddingLength; x++) {\n    nullPadding += String.fromCharCode(x);\n  }\n\n  // Bump all the patches forward.\n  for (var x = 0; x < patches.length; x++) {\n    patches[x].start1 += paddingLength;\n    patches[x].start2 += paddingLength;\n  }\n\n  // Add some padding on start of first diff.\n  var patch = patches[0];\n  var diffs = patch.diffs;\n  if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {\n    // Add nullPadding equality.\n    diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n    patch.start1 -= paddingLength;  // Should be 0.\n    patch.start2 -= paddingLength;  // Should be 0.\n    patch.length1 += paddingLength;\n    patch.length2 += paddingLength;\n  } else if (paddingLength > diffs[0][1].length) {\n    // Grow first equality.\n    var extraLength = paddingLength - diffs[0][1].length;\n    diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];\n    patch.start1 -= extraLength;\n    patch.start2 -= extraLength;\n    patch.length1 += extraLength;\n    patch.length2 += extraLength;\n  }\n\n  // Add some padding on end of last diff.\n  patch = patches[patches.length - 1];\n  diffs = patch.diffs;\n  if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {\n    // Add nullPadding equality.\n    diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n    patch.length1 += paddingLength;\n    patch.length2 += paddingLength;\n  } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n    // Grow last equality.\n    var extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n    diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n    patch.length1 += extraLength;\n    patch.length2 += extraLength;\n  }\n\n  return nullPadding;\n};\n\n\n/**\n * Look through the patches and break up any which are longer than the maximum\n * limit of the match algorithm.\n * Intended to be called only from within patch_apply.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_splitMax = function(patches) {\n  var patch_size = this.Match_MaxBits;\n  for (var x = 0; x < patches.length; x++) {\n    if (patches[x].length1 <= patch_size) {\n      continue;\n    }\n    var bigpatch = patches[x];\n    // Remove the big old patch.\n    patches.splice(x--, 1);\n    var start1 = bigpatch.start1;\n    var start2 = bigpatch.start2;\n    var precontext = '';\n    while (bigpatch.diffs.length !== 0) {\n      // Create one of several smaller patches.\n      var patch = new diff_match_patch.patch_obj();\n      var empty = true;\n      patch.start1 = start1 - precontext.length;\n      patch.start2 = start2 - precontext.length;\n      if (precontext !== '') {\n        patch.length1 = patch.length2 = precontext.length;\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, precontext));\n      }\n      while (bigpatch.diffs.length !== 0 &&\n             patch.length1 < patch_size - this.Patch_Margin) {\n        var diff_type = bigpatch.diffs[0][0];\n        var diff_text = bigpatch.diffs[0][1];\n        if (diff_type === DIFF_INSERT) {\n          // Insertions are harmless.\n          patch.length2 += diff_text.length;\n          start2 += diff_text.length;\n          patch.diffs.push(bigpatch.diffs.shift());\n          empty = false;\n        } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 &&\n                   patch.diffs[0][0] == DIFF_EQUAL &&\n                   diff_text.length > 2 * patch_size) {\n          // This is a large deletion.  Let it pass in one chunk.\n          patch.length1 += diff_text.length;\n          start1 += diff_text.length;\n          empty = false;\n          patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n          bigpatch.diffs.shift();\n        } else {\n          // Deletion or equality.  Only take as much as we can stomach.\n          diff_text = diff_text.substring(0,\n              patch_size - patch.length1 - this.Patch_Margin);\n          patch.length1 += diff_text.length;\n          start1 += diff_text.length;\n          if (diff_type === DIFF_EQUAL) {\n            patch.length2 += diff_text.length;\n            start2 += diff_text.length;\n          } else {\n            empty = false;\n          }\n          patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n          if (diff_text == bigpatch.diffs[0][1]) {\n            bigpatch.diffs.shift();\n          } else {\n            bigpatch.diffs[0][1] =\n                bigpatch.diffs[0][1].substring(diff_text.length);\n          }\n        }\n      }\n      // Compute the head context for the next patch.\n      precontext = this.diff_text2(patch.diffs);\n      precontext =\n          precontext.substring(precontext.length - this.Patch_Margin);\n      // Append the end context for this patch.\n      var postcontext = this.diff_text1(bigpatch.diffs)\n                            .substring(0, this.Patch_Margin);\n      if (postcontext !== '') {\n        patch.length1 += postcontext.length;\n        patch.length2 += postcontext.length;\n        if (patch.diffs.length !== 0 &&\n            patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n          patch.diffs[patch.diffs.length - 1][1] += postcontext;\n        } else {\n          patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, postcontext));\n        }\n      }\n      if (!empty) {\n        patches.splice(++x, 0, patch);\n      }\n    }\n  }\n};\n\n\n/**\n * Take a list of patches and return a textual representation.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {string} Text representation of patches.\n */\ndiff_match_patch.prototype.patch_toText = function(patches) {\n  var text = [];\n  for (var x = 0; x < patches.length; x++) {\n    text[x] = patches[x];\n  }\n  return text.join('');\n};\n\n\n/**\n * Parse a textual representation of patches and return a list of Patch objects.\n * @param {string} textline Text representation of patches.\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.patch_fromText = function(textline) {\n  var patches = [];\n  if (!textline) {\n    return patches;\n  }\n  var text = textline.split('\\n');\n  var textPointer = 0;\n  var patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\n  while (textPointer < text.length) {\n    var m = text[textPointer].match(patchHeader);\n    if (!m) {\n      throw new Error('Invalid patch string: ' + text[textPointer]);\n    }\n    var patch = new diff_match_patch.patch_obj();\n    patches.push(patch);\n    patch.start1 = parseInt(m[1], 10);\n    if (m[2] === '') {\n      patch.start1--;\n      patch.length1 = 1;\n    } else if (m[2] == '0') {\n      patch.length1 = 0;\n    } else {\n      patch.start1--;\n      patch.length1 = parseInt(m[2], 10);\n    }\n\n    patch.start2 = parseInt(m[3], 10);\n    if (m[4] === '') {\n      patch.start2--;\n      patch.length2 = 1;\n    } else if (m[4] == '0') {\n      patch.length2 = 0;\n    } else {\n      patch.start2--;\n      patch.length2 = parseInt(m[4], 10);\n    }\n    textPointer++;\n\n    while (textPointer < text.length) {\n      var sign = text[textPointer].charAt(0);\n      try {\n        var line = decodeURI(text[textPointer].substring(1));\n      } catch (ex) {\n        // Malformed URI sequence.\n        throw new Error('Illegal escape in patch_fromText: ' + line);\n      }\n      if (sign == '-') {\n        // Deletion.\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_DELETE, line));\n      } else if (sign == '+') {\n        // Insertion.\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_INSERT, line));\n      } else if (sign == ' ') {\n        // Minor equality.\n        patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, line));\n      } else if (sign == '@') {\n        // Start of next patch.\n        break;\n      } else if (sign === '') {\n        // Blank line?  Whatever.\n      } else {\n        // WTF?\n        throw new Error('Invalid patch mode \"' + sign + '\" in: ' + line);\n      }\n      textPointer++;\n    }\n  }\n  return patches;\n};\n\n\n/**\n * Class representing one patch operation.\n * @constructor\n */\ndiff_match_patch.patch_obj = function() {\n  /** @type {!Array.<!diff_match_patch.Diff>} */\n  this.diffs = [];\n  /** @type {?number} */\n  this.start1 = null;\n  /** @type {?number} */\n  this.start2 = null;\n  /** @type {number} */\n  this.length1 = 0;\n  /** @type {number} */\n  this.length2 = 0;\n};\n\n\n/**\n * Emulate GNU diff's format.\n * Header: @@ -382,8 +481,9 @@\n * Indices are printed as 1-based, not 0-based.\n * @return {string} The GNU diff string.\n */\ndiff_match_patch.patch_obj.prototype.toString = function() {\n  var coords1, coords2;\n  if (this.length1 === 0) {\n    coords1 = this.start1 + ',0';\n  } else if (this.length1 == 1) {\n    coords1 = this.start1 + 1;\n  } else {\n    coords1 = (this.start1 + 1) + ',' + this.length1;\n  }\n  if (this.length2 === 0) {\n    coords2 = this.start2 + ',0';\n  } else if (this.length2 == 1) {\n    coords2 = this.start2 + 1;\n  } else {\n    coords2 = (this.start2 + 1) + ',' + this.length2;\n  }\n  var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\\n'];\n  var op;\n  // Escape the body of the patch with %xx notation.\n  for (var x = 0; x < this.diffs.length; x++) {\n    switch (this.diffs[x][0]) {\n      case DIFF_INSERT:\n        op = '+';\n        break;\n      case DIFF_DELETE:\n        op = '-';\n        break;\n      case DIFF_EQUAL:\n        op = ' ';\n        break;\n    }\n    text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\\n';\n  }\n  return text.join('').replace(/%20/g, ' ');\n};\n\n\n// The following export code was added by @ForbesLindesay\nmodule.exports = diff_match_patch;\nmodule.exports['diff_match_patch'] = diff_match_patch;\nmodule.exports['DIFF_DELETE'] = DIFF_DELETE;\nmodule.exports['DIFF_INSERT'] = DIFF_INSERT;\nmodule.exports['DIFF_EQUAL'] = DIFF_EQUAL;\n\n/***/ }),\n/* 1611 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n    var keywordMapper = this.createKeywordMapper({\n        \"support.function\": supportFunction,\n        \"support.constant\": supportConstant,\n        \"support.type\": supportType,\n        \"support.constant.color\": supportConstantColor,\n        \"support.constant.fonts\": supportConstantFonts\n    }, \"text\", true);\n    this.$rules = {\n        \"start\": [{\n                include: [\"strings\", \"url\", \"comments\"]\n            }, {\n                token: \"paren.lparen\",\n                regex: \"\\\\{\",\n                next: \"ruleset\"\n            }, {\n                token: \"paren.rparen\",\n                regex: \"\\\\}\"\n            }, {\n                token: \"string\",\n                regex: \"@(?!viewport)\",\n                next: \"media\"\n            }, {\n                token: \"keyword\",\n                regex: \"#[a-z0-9-_]+\"\n            }, {\n                token: \"keyword\",\n                regex: \"%\"\n            }, {\n                token: \"variable\",\n                regex: \"\\\\.[a-z0-9-_]+\"\n            }, {\n                token: \"string\",\n                regex: \":[a-z0-9-_]+\"\n            }, {\n                token: \"constant.numeric\",\n                regex: numRe\n            }, {\n                token: \"constant\",\n                regex: \"[a-z0-9-_]+\"\n            }, {\n                caseInsensitive: true\n            }],\n        \"media\": [{\n                include: [\"strings\", \"url\", \"comments\"]\n            }, {\n                token: \"paren.lparen\",\n                regex: \"\\\\{\",\n                next: \"start\"\n            }, {\n                token: \"paren.rparen\",\n                regex: \"\\\\}\",\n                next: \"start\"\n            }, {\n                token: \"string\",\n                regex: \";\",\n                next: \"start\"\n            }, {\n                token: \"keyword\",\n                regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n                    + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n                    + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n            }],\n        \"comments\": [{\n                token: \"comment\",\n                regex: \"\\\\/\\\\*\",\n                push: [{\n                        token: \"comment\",\n                        regex: \"\\\\*\\\\/\",\n                        next: \"pop\"\n                    }, {\n                        defaultToken: \"comment\"\n                    }]\n            }],\n        \"ruleset\": [{\n                regex: \"-(webkit|ms|moz|o)-\",\n                token: \"text\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: \"[:;]\"\n            }, {\n                token: \"paren.rparen\",\n                regex: \"\\\\}\",\n                next: \"start\"\n            }, {\n                include: [\"strings\", \"url\", \"comments\"]\n            }, {\n                token: [\"constant.numeric\", \"keyword\"],\n                regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n            }, {\n                token: \"constant.numeric\",\n                regex: numRe\n            }, {\n                token: \"constant.numeric\",\n                regex: \"#[a-f0-9]{6}\"\n            }, {\n                token: \"constant.numeric\",\n                regex: \"#[a-f0-9]{3}\"\n            }, {\n                token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n                regex: pseudoElements\n            }, {\n                token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n                regex: pseudoClasses\n            }, {\n                include: \"url\"\n            }, {\n                token: keywordMapper,\n                regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n            }, {\n                caseInsensitive: true\n            }],\n        url: [{\n                token: \"support.function\",\n                regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n                push: [{\n                        token: \"support.function\",\n                        regex: \"\\\\)\",\n                        next: \"pop\"\n                    }, {\n                        defaultToken: \"string\"\n                    }]\n            }],\n        strings: [{\n                token: \"string.start\",\n                regex: \"'\",\n                push: [{\n                        token: \"string.end\",\n                        regex: \"'|$\",\n                        next: \"pop\"\n                    }, {\n                        include: \"escapes\"\n                    }, {\n                        token: \"constant.language.escape\",\n                        regex: /\\\\$/,\n                        consumeLineEnd: true\n                    }, {\n                        defaultToken: \"string\"\n                    }]\n            }, {\n                token: \"string.start\",\n                regex: '\"',\n                push: [{\n                        token: \"string.end\",\n                        regex: '\"|$',\n                        next: \"pop\"\n                    }, {\n                        include: \"escapes\"\n                    }, {\n                        token: \"constant.language.escape\",\n                        regex: /\\\\$/,\n                        consumeLineEnd: true\n                    }, {\n                        defaultToken: \"string\"\n                    }]\n            }],\n        escapes: [{\n                token: \"constant.language.escape\",\n                regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n            }]\n    };\n    this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n    this.checkOutdent = function (line, input) {\n        if (!/^\\s+$/.test(line))\n            return false;\n        return /^\\s*\\}/.test(input);\n    };\n    this.autoOutdent = function (doc, row) {\n        var line = doc.getLine(row);\n        var match = line.match(/^(\\s*\\})/);\n        if (!match)\n            return 0;\n        var column = match[1].length;\n        var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n        if (!openBracePos || openBracePos.row == row)\n            return 0;\n        var indent = this.$getIndent(doc.getLine(openBracePos.row));\n        doc.replace(new Range(row, 0, row, column - 1), indent);\n    };\n    this.$getIndent = function (line) {\n        return line.match(/^\\s*/)[0];\n    };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n    \"background\": { \"#$0\": 1 },\n    \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n    \"background-image\": { \"url('/$0')\": 1 },\n    \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n    \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n    \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n    \"background-size\": { \"cover\": 1, \"contain\": 1 },\n    \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n    \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n    \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n    \"border-color\": { \"#$0\": 1 },\n    \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n    \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n    \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n    \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n    \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n    \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n    \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n    \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n    \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n    \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n    \"font-style\": { \"italic\": 1, \"normal\": 1 },\n    \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n    \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"letter-spacing\": { \"normal\": 1 },\n    \"line-height\": { \"normal\": 1 },\n    \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n    \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n    \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n    \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n    \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n    \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n    \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n    \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n    \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n    \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n    \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n    \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n    \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n    \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n    \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"word-spacing\": { \"normal\": 1 },\n    \"filter\": { \"alpha(opacity=$0100)\": 1 },\n    \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n    \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n    \"-moz-border-radius\": 1,\n    \"-moz-border-radius-topright\": 1,\n    \"-moz-border-radius-bottomright\": 1,\n    \"-moz-border-radius-topleft\": 1,\n    \"-moz-border-radius-bottomleft\": 1,\n    \"-webkit-border-radius\": 1,\n    \"-webkit-border-top-right-radius\": 1,\n    \"-webkit-border-top-left-radius\": 1,\n    \"-webkit-border-bottom-right-radius\": 1,\n    \"-webkit-border-bottom-left-radius\": 1,\n    \"-moz-box-shadow\": 1,\n    \"-webkit-box-shadow\": 1,\n    \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n    \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n    \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n    this.completionsDefined = false;\n    this.defineCompletions = function () {\n        if (document) {\n            var style = document.createElement('c').style;\n            for (var i in style) {\n                if (typeof style[i] !== 'string')\n                    continue;\n                var name = i.replace(/[A-Z]/g, function (x) {\n                    return '-' + x.toLowerCase();\n                });\n                if (!propertyMap.hasOwnProperty(name))\n                    propertyMap[name] = 1;\n            }\n        }\n        this.completionsDefined = true;\n    };\n    this.getCompletions = function (state, session, pos, prefix) {\n        if (!this.completionsDefined) {\n            this.defineCompletions();\n        }\n        if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n            var line = session.getLine(pos.row).substr(0, pos.column);\n            if (/:[^;]+$/.test(line)) {\n                /([\\w\\-]+):[^:]*$/.test(line);\n                return this.getPropertyValueCompletions(state, session, pos, prefix);\n            }\n            else {\n                return this.getPropertyCompletions(state, session, pos, prefix);\n            }\n        }\n        return [];\n    };\n    this.getPropertyCompletions = function (state, session, pos, prefix) {\n        var properties = Object.keys(propertyMap);\n        return properties.map(function (property) {\n            return {\n                caption: property,\n                snippet: property + ': $0;',\n                meta: \"property\",\n                score: 1000000\n            };\n        });\n    };\n    this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n        var line = session.getLine(pos.row).substr(0, pos.column);\n        var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n        if (!property)\n            return [];\n        var values = [];\n        if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n            values = Object.keys(propertyMap[property]);\n        }\n        return values.map(function (value) {\n            return {\n                caption: value,\n                snippet: value,\n                meta: \"property value\",\n                score: 1000000\n            };\n        });\n    };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n    this.inherit(CstyleBehaviour);\n    this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n        if (text === ':' && editor.selection.isEmpty()) {\n            var cursor = editor.getCursorPosition();\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            if (token && token.value.match(/\\s+/)) {\n                token = iterator.stepBackward();\n            }\n            if (token && token.type === 'support.type') {\n                var line = session.doc.getLine(cursor.row);\n                var rightChar = line.substring(cursor.column, cursor.column + 1);\n                if (rightChar === ':') {\n                    return {\n                        text: '',\n                        selection: [1, 1]\n                    };\n                }\n                if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n                    return {\n                        text: ':;',\n                        selection: [1, 1]\n                    };\n                }\n            }\n        }\n    });\n    this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n        var selected = session.doc.getTextRange(range);\n        if (!range.isMultiLine() && selected === ':') {\n            var cursor = editor.getCursorPosition();\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            if (token && token.value.match(/\\s+/)) {\n                token = iterator.stepBackward();\n            }\n            if (token && token.type === 'support.type') {\n                var line = session.doc.getLine(range.start.row);\n                var rightChar = line.substring(range.end.column, range.end.column + 1);\n                if (rightChar === ';') {\n                    range.end.column++;\n                    return range;\n                }\n            }\n        }\n    });\n    this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n        if (text === ';' && editor.selection.isEmpty()) {\n            var cursor = editor.getCursorPosition();\n            var line = session.doc.getLine(cursor.row);\n            var rightChar = line.substring(cursor.column, cursor.column + 1);\n            if (rightChar === ';') {\n                return {\n                    text: '',\n                    selection: [1, 1]\n                };\n            }\n        }\n    });\n    this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n        if (text === '!' && editor.selection.isEmpty()) {\n            var cursor = editor.getCursorPosition();\n            var line = session.doc.getLine(cursor.row);\n            if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n                return {\n                    text: '!important',\n                    selection: [10, 10]\n                };\n            }\n        }\n    });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n    if (commentRegex) {\n        this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n        this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n    }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n    this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n    this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n    this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n    this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n    this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n    this._getFoldWidgetBase = this.getFoldWidget;\n    this.getFoldWidget = function (session, foldStyle, row) {\n        var line = session.getLine(row);\n        if (this.singleLineBlockCommentRe.test(line)) {\n            if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n                return \"\";\n        }\n        var fw = this._getFoldWidgetBase(session, foldStyle, row);\n        if (!fw && this.startRegionRe.test(line))\n            return \"start\"; // lineCommentRegionStart\n        return fw;\n    };\n    this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n        var line = session.getLine(row);\n        if (this.startRegionRe.test(line))\n            return this.getCommentRegionBlock(session, line, row);\n        var match = line.match(this.foldingStartMarker);\n        if (match) {\n            var i = match.index;\n            if (match[1])\n                return this.openingBracketBlock(session, match[1], row, i);\n            var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n            if (range && !range.isMultiLine()) {\n                if (forceMultiline) {\n                    range = this.getSectionRange(session, row);\n                }\n                else if (foldStyle != \"all\")\n                    range = null;\n            }\n            return range;\n        }\n        if (foldStyle === \"markbegin\")\n            return;\n        var match = line.match(this.foldingStopMarker);\n        if (match) {\n            var i = match.index + match[0].length;\n            if (match[1])\n                return this.closingBracketBlock(session, match[1], row, i);\n            return session.getCommentFoldRange(row, i, -1);\n        }\n    };\n    this.getSectionRange = function (session, row) {\n        var line = session.getLine(row);\n        var startIndent = line.search(/\\S/);\n        var startRow = row;\n        var startColumn = line.length;\n        row = row + 1;\n        var endRow = row;\n        var maxRow = session.getLength();\n        while (++row < maxRow) {\n            line = session.getLine(row);\n            var indent = line.search(/\\S/);\n            if (indent === -1)\n                continue;\n            if (startIndent > indent)\n                break;\n            var subRange = this.getFoldWidgetRange(session, \"all\", row);\n            if (subRange) {\n                if (subRange.start.row <= startRow) {\n                    break;\n                }\n                else if (subRange.isMultiLine()) {\n                    row = subRange.end.row;\n                }\n                else if (startIndent == indent) {\n                    break;\n                }\n            }\n            endRow = row;\n        }\n        return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n    };\n    this.getCommentRegionBlock = function (session, line, row) {\n        var startColumn = line.search(/\\s*$/);\n        var maxRow = session.getLength();\n        var startRow = row;\n        var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n        var depth = 1;\n        while (++row < maxRow) {\n            line = session.getLine(row);\n            var m = re.exec(line);\n            if (!m)\n                continue;\n            if (m[1])\n                depth--;\n            else\n                depth++;\n            if (!depth)\n                break;\n        }\n        var endRow = row;\n        if (endRow > startRow) {\n            return new Range(startRow, startColumn, endRow, line.length);\n        }\n    };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n    this.HighlightRules = CssHighlightRules;\n    this.$outdent = new MatchingBraceOutdent();\n    this.$behaviour = new CssBehaviour();\n    this.$completer = new CssCompletions();\n    this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n    this.foldingRules = \"cStyle\";\n    this.blockComment = { start: \"/*\", end: \"*/\" };\n    this.getNextLineIndent = function (state, line, tab) {\n        var indent = this.$getIndent(line);\n        var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n        if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n            return indent;\n        }\n        var match = line.match(/^.*\\{\\s*$/);\n        if (match) {\n            indent += tab;\n        }\n        return indent;\n    };\n    this.checkOutdent = function (state, line, input) {\n        return this.$outdent.checkOutdent(line, input);\n    };\n    this.autoOutdent = function (state, doc, row) {\n        this.$outdent.autoOutdent(doc, row);\n    };\n    this.getCompletions = function (state, session, pos, prefix) {\n        return this.$completer.getCompletions(state, session, pos, prefix);\n    };\n    this.createWorker = function (session) {\n        var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n        worker.attachToDocument(session.getDocument());\n        worker.on(\"annotate\", function (e) {\n            session.setAnnotations(e.data);\n        });\n        worker.on(\"terminate\", function () {\n            session.clearAnnotations();\n        });\n        return worker;\n    };\n    this.$id = \"ace/mode/css\";\n    this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});                (function() {\n                    ace.require([\"ace/mode/css\"], function(m) {\n                        if ( true && module) {\n                            module.exports = m;\n                        }\n                    });\n                })();\n            \n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 1612 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Stack = __webpack_require__(312),\n    assignMergeValue = __webpack_require__(671),\n    baseFor = __webpack_require__(652),\n    baseMergeDeep = __webpack_require__(1613),\n    isObject = __webpack_require__(106),\n    keysIn = __webpack_require__(274),\n    safeGet = __webpack_require__(672);\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\n\n/***/ }),\n/* 1613 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignMergeValue = __webpack_require__(671),\n    cloneBuffer = __webpack_require__(657),\n    cloneTypedArray = __webpack_require__(660),\n    copyArray = __webpack_require__(658),\n    initCloneObject = __webpack_require__(661),\n    isArguments = __webpack_require__(317),\n    isArray = __webpack_require__(97),\n    isArrayLikeObject = __webpack_require__(1614),\n    isBuffer = __webpack_require__(318),\n    isFunction = __webpack_require__(391),\n    isObject = __webpack_require__(106),\n    isPlainObject = __webpack_require__(653),\n    isTypedArray = __webpack_require__(396),\n    safeGet = __webpack_require__(672),\n    toPlainObject = __webpack_require__(1615);\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\n\n/***/ }),\n/* 1614 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArrayLike = __webpack_require__(210),\n    isObjectLike = __webpack_require__(128);\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\n/***/ }),\n/* 1615 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar copyObject = __webpack_require__(273),\n    keysIn = __webpack_require__(274);\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\n\n/***/ }),\n/* 1616 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseRest = __webpack_require__(663),\n    isIterateeCall = __webpack_require__(664);\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\n\n/***/ }),\n/* 1617 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Determine if a DOM element matches a CSS selector\n *\n * @param {Element} elem\n * @param {String} selector\n * @return {Boolean}\n * @api public\n */\n\nfunction matches(elem, selector) {\n  // Vendor-specific implementations of `Element.prototype.matches()`.\n  var proto = window.Element.prototype;\n  var nativeMatches = proto.matches ||\n      proto.mozMatchesSelector ||\n      proto.msMatchesSelector ||\n      proto.oMatchesSelector ||\n      proto.webkitMatchesSelector;\n\n  if (!elem || elem.nodeType !== 1) {\n    return false;\n  }\n\n  var parentElem = elem.parentNode;\n\n  // use native 'matches'\n  if (nativeMatches) {\n    return nativeMatches.call(elem, selector);\n  }\n\n  // native support for `matches` is missing and a fallback is required\n  var nodes = parentElem.querySelectorAll(selector);\n  var len = nodes.length;\n\n  for (var i = 0; i < len; i++) {\n    if (nodes[i] === elem) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/**\n * Expose `matches`\n */\n\nmodule.exports = matches;\n\n\n/***/ }),\n/* 1618 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 _raf2 = __webpack_require__(90);\n\nvar _raf3 = _interopRequireDefault(_raf2);\n\nvar _domCss = __webpack_require__(673);\n\nvar _domCss2 = _interopRequireDefault(_domCss);\n\nvar _react = __webpack_require__(0);\n\nvar _propTypes = __webpack_require__(1);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _isString = __webpack_require__(1624);\n\nvar _isString2 = _interopRequireDefault(_isString);\n\nvar _getScrollbarWidth = __webpack_require__(1625);\n\nvar _getScrollbarWidth2 = _interopRequireDefault(_getScrollbarWidth);\n\nvar _returnFalse = __webpack_require__(1626);\n\nvar _returnFalse2 = _interopRequireDefault(_returnFalse);\n\nvar _getInnerWidth = __webpack_require__(1627);\n\nvar _getInnerWidth2 = _interopRequireDefault(_getInnerWidth);\n\nvar _getInnerHeight = __webpack_require__(1628);\n\nvar _getInnerHeight2 = _interopRequireDefault(_getInnerHeight);\n\nvar _styles = __webpack_require__(1629);\n\nvar _defaultRenderElements = __webpack_require__(1630);\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\nvar Scrollbars = function (_Component) {\n    _inherits(Scrollbars, _Component);\n\n    function Scrollbars(props) {\n        var _ref;\n\n        _classCallCheck(this, Scrollbars);\n\n        for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n            rest[_key - 1] = arguments[_key];\n        }\n\n        var _this = _possibleConstructorReturn(this, (_ref = Scrollbars.__proto__ || Object.getPrototypeOf(Scrollbars)).call.apply(_ref, [this, props].concat(rest)));\n\n        _this.getScrollLeft = _this.getScrollLeft.bind(_this);\n        _this.getScrollTop = _this.getScrollTop.bind(_this);\n        _this.getScrollWidth = _this.getScrollWidth.bind(_this);\n        _this.getScrollHeight = _this.getScrollHeight.bind(_this);\n        _this.getClientWidth = _this.getClientWidth.bind(_this);\n        _this.getClientHeight = _this.getClientHeight.bind(_this);\n        _this.getValues = _this.getValues.bind(_this);\n        _this.getThumbHorizontalWidth = _this.getThumbHorizontalWidth.bind(_this);\n        _this.getThumbVerticalHeight = _this.getThumbVerticalHeight.bind(_this);\n        _this.getScrollLeftForOffset = _this.getScrollLeftForOffset.bind(_this);\n        _this.getScrollTopForOffset = _this.getScrollTopForOffset.bind(_this);\n\n        _this.scrollLeft = _this.scrollLeft.bind(_this);\n        _this.scrollTop = _this.scrollTop.bind(_this);\n        _this.scrollToLeft = _this.scrollToLeft.bind(_this);\n        _this.scrollToTop = _this.scrollToTop.bind(_this);\n        _this.scrollToRight = _this.scrollToRight.bind(_this);\n        _this.scrollToBottom = _this.scrollToBottom.bind(_this);\n\n        _this.handleTrackMouseEnter = _this.handleTrackMouseEnter.bind(_this);\n        _this.handleTrackMouseLeave = _this.handleTrackMouseLeave.bind(_this);\n        _this.handleHorizontalTrackMouseDown = _this.handleHorizontalTrackMouseDown.bind(_this);\n        _this.handleVerticalTrackMouseDown = _this.handleVerticalTrackMouseDown.bind(_this);\n        _this.handleHorizontalThumbMouseDown = _this.handleHorizontalThumbMouseDown.bind(_this);\n        _this.handleVerticalThumbMouseDown = _this.handleVerticalThumbMouseDown.bind(_this);\n        _this.handleWindowResize = _this.handleWindowResize.bind(_this);\n        _this.handleScroll = _this.handleScroll.bind(_this);\n        _this.handleDrag = _this.handleDrag.bind(_this);\n        _this.handleDragEnd = _this.handleDragEnd.bind(_this);\n\n        _this.state = {\n            didMountUniversal: false\n        };\n        return _this;\n    }\n\n    _createClass(Scrollbars, [{\n        key: 'componentDidMount',\n        value: function componentDidMount() {\n            this.addListeners();\n            this.update();\n            this.componentDidMountUniversal();\n        }\n    }, {\n        key: 'componentDidMountUniversal',\n        value: function componentDidMountUniversal() {\n            // eslint-disable-line react/sort-comp\n            var universal = this.props.universal;\n\n            if (!universal) return;\n            this.setState({ didMountUniversal: true });\n        }\n    }, {\n        key: 'componentDidUpdate',\n        value: function componentDidUpdate() {\n            this.update();\n        }\n    }, {\n        key: 'componentWillUnmount',\n        value: function componentWillUnmount() {\n            this.removeListeners();\n            (0, _raf2.cancel)(this.requestFrame);\n            clearTimeout(this.hideTracksTimeout);\n            clearInterval(this.detectScrollingInterval);\n        }\n    }, {\n        key: 'getScrollLeft',\n        value: function getScrollLeft() {\n            if (!this.view) return 0;\n            return this.view.scrollLeft;\n        }\n    }, {\n        key: 'getScrollTop',\n        value: function getScrollTop() {\n            if (!this.view) return 0;\n            return this.view.scrollTop;\n        }\n    }, {\n        key: 'getScrollWidth',\n        value: function getScrollWidth() {\n            if (!this.view) return 0;\n            return this.view.scrollWidth;\n        }\n    }, {\n        key: 'getScrollHeight',\n        value: function getScrollHeight() {\n            if (!this.view) return 0;\n            return this.view.scrollHeight;\n        }\n    }, {\n        key: 'getClientWidth',\n        value: function getClientWidth() {\n            if (!this.view) return 0;\n            return this.view.clientWidth;\n        }\n    }, {\n        key: 'getClientHeight',\n        value: function getClientHeight() {\n            if (!this.view) return 0;\n            return this.view.clientHeight;\n        }\n    }, {\n        key: 'getValues',\n        value: function getValues() {\n            var _ref2 = this.view || {},\n                _ref2$scrollLeft = _ref2.scrollLeft,\n                scrollLeft = _ref2$scrollLeft === undefined ? 0 : _ref2$scrollLeft,\n                _ref2$scrollTop = _ref2.scrollTop,\n                scrollTop = _ref2$scrollTop === undefined ? 0 : _ref2$scrollTop,\n                _ref2$scrollWidth = _ref2.scrollWidth,\n                scrollWidth = _ref2$scrollWidth === undefined ? 0 : _ref2$scrollWidth,\n                _ref2$scrollHeight = _ref2.scrollHeight,\n                scrollHeight = _ref2$scrollHeight === undefined ? 0 : _ref2$scrollHeight,\n                _ref2$clientWidth = _ref2.clientWidth,\n                clientWidth = _ref2$clientWidth === undefined ? 0 : _ref2$clientWidth,\n                _ref2$clientHeight = _ref2.clientHeight,\n                clientHeight = _ref2$clientHeight === undefined ? 0 : _ref2$clientHeight;\n\n            return {\n                left: scrollLeft / (scrollWidth - clientWidth) || 0,\n                top: scrollTop / (scrollHeight - clientHeight) || 0,\n                scrollLeft: scrollLeft,\n                scrollTop: scrollTop,\n                scrollWidth: scrollWidth,\n                scrollHeight: scrollHeight,\n                clientWidth: clientWidth,\n                clientHeight: clientHeight\n            };\n        }\n    }, {\n        key: 'getThumbHorizontalWidth',\n        value: function getThumbHorizontalWidth() {\n            var _props = this.props,\n                thumbSize = _props.thumbSize,\n                thumbMinSize = _props.thumbMinSize;\n            var _view = this.view,\n                scrollWidth = _view.scrollWidth,\n                clientWidth = _view.clientWidth;\n\n            var trackWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n            var width = Math.ceil(clientWidth / scrollWidth * trackWidth);\n            if (trackWidth === width) return 0;\n            if (thumbSize) return thumbSize;\n            return Math.max(width, thumbMinSize);\n        }\n    }, {\n        key: 'getThumbVerticalHeight',\n        value: function getThumbVerticalHeight() {\n            var _props2 = this.props,\n                thumbSize = _props2.thumbSize,\n                thumbMinSize = _props2.thumbMinSize;\n            var _view2 = this.view,\n                scrollHeight = _view2.scrollHeight,\n                clientHeight = _view2.clientHeight;\n\n            var trackHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n            var height = Math.ceil(clientHeight / scrollHeight * trackHeight);\n            if (trackHeight === height) return 0;\n            if (thumbSize) return thumbSize;\n            return Math.max(height, thumbMinSize);\n        }\n    }, {\n        key: 'getScrollLeftForOffset',\n        value: function getScrollLeftForOffset(offset) {\n            var _view3 = this.view,\n                scrollWidth = _view3.scrollWidth,\n                clientWidth = _view3.clientWidth;\n\n            var trackWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n            var thumbWidth = this.getThumbHorizontalWidth();\n            return offset / (trackWidth - thumbWidth) * (scrollWidth - clientWidth);\n        }\n    }, {\n        key: 'getScrollTopForOffset',\n        value: function getScrollTopForOffset(offset) {\n            var _view4 = this.view,\n                scrollHeight = _view4.scrollHeight,\n                clientHeight = _view4.clientHeight;\n\n            var trackHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n            var thumbHeight = this.getThumbVerticalHeight();\n            return offset / (trackHeight - thumbHeight) * (scrollHeight - clientHeight);\n        }\n    }, {\n        key: 'scrollLeft',\n        value: function scrollLeft() {\n            var left = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n            if (!this.view) return;\n            this.view.scrollLeft = left;\n        }\n    }, {\n        key: 'scrollTop',\n        value: function scrollTop() {\n            var top = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n            if (!this.view) return;\n            this.view.scrollTop = top;\n        }\n    }, {\n        key: 'scrollToLeft',\n        value: function scrollToLeft() {\n            if (!this.view) return;\n            this.view.scrollLeft = 0;\n        }\n    }, {\n        key: 'scrollToTop',\n        value: function scrollToTop() {\n            if (!this.view) return;\n            this.view.scrollTop = 0;\n        }\n    }, {\n        key: 'scrollToRight',\n        value: function scrollToRight() {\n            if (!this.view) return;\n            this.view.scrollLeft = this.view.scrollWidth;\n        }\n    }, {\n        key: 'scrollToBottom',\n        value: function scrollToBottom() {\n            if (!this.view) return;\n            this.view.scrollTop = this.view.scrollHeight;\n        }\n    }, {\n        key: 'addListeners',\n        value: function addListeners() {\n            /* istanbul ignore if */\n            if (typeof document === 'undefined' || !this.view) return;\n            var view = this.view,\n                trackHorizontal = this.trackHorizontal,\n                trackVertical = this.trackVertical,\n                thumbHorizontal = this.thumbHorizontal,\n                thumbVertical = this.thumbVertical;\n\n            view.addEventListener('scroll', this.handleScroll);\n            if (!(0, _getScrollbarWidth2[\"default\"])()) return;\n            trackHorizontal.addEventListener('mouseenter', this.handleTrackMouseEnter);\n            trackHorizontal.addEventListener('mouseleave', this.handleTrackMouseLeave);\n            trackHorizontal.addEventListener('mousedown', this.handleHorizontalTrackMouseDown);\n            trackVertical.addEventListener('mouseenter', this.handleTrackMouseEnter);\n            trackVertical.addEventListener('mouseleave', this.handleTrackMouseLeave);\n            trackVertical.addEventListener('mousedown', this.handleVerticalTrackMouseDown);\n            thumbHorizontal.addEventListener('mousedown', this.handleHorizontalThumbMouseDown);\n            thumbVertical.addEventListener('mousedown', this.handleVerticalThumbMouseDown);\n            window.addEventListener('resize', this.handleWindowResize);\n        }\n    }, {\n        key: 'removeListeners',\n        value: function removeListeners() {\n            /* istanbul ignore if */\n            if (typeof document === 'undefined' || !this.view) return;\n            var view = this.view,\n                trackHorizontal = this.trackHorizontal,\n                trackVertical = this.trackVertical,\n                thumbHorizontal = this.thumbHorizontal,\n                thumbVertical = this.thumbVertical;\n\n            view.removeEventListener('scroll', this.handleScroll);\n            if (!(0, _getScrollbarWidth2[\"default\"])()) return;\n            trackHorizontal.removeEventListener('mouseenter', this.handleTrackMouseEnter);\n            trackHorizontal.removeEventListener('mouseleave', this.handleTrackMouseLeave);\n            trackHorizontal.removeEventListener('mousedown', this.handleHorizontalTrackMouseDown);\n            trackVertical.removeEventListener('mouseenter', this.handleTrackMouseEnter);\n            trackVertical.removeEventListener('mouseleave', this.handleTrackMouseLeave);\n            trackVertical.removeEventListener('mousedown', this.handleVerticalTrackMouseDown);\n            thumbHorizontal.removeEventListener('mousedown', this.handleHorizontalThumbMouseDown);\n            thumbVertical.removeEventListener('mousedown', this.handleVerticalThumbMouseDown);\n            window.removeEventListener('resize', this.handleWindowResize);\n            // Possibly setup by `handleDragStart`\n            this.teardownDragging();\n        }\n    }, {\n        key: 'handleScroll',\n        value: function handleScroll(event) {\n            var _this2 = this;\n\n            var _props3 = this.props,\n                onScroll = _props3.onScroll,\n                onScrollFrame = _props3.onScrollFrame;\n\n            if (onScroll) onScroll(event);\n            this.update(function (values) {\n                var scrollLeft = values.scrollLeft,\n                    scrollTop = values.scrollTop;\n\n                _this2.viewScrollLeft = scrollLeft;\n                _this2.viewScrollTop = scrollTop;\n                if (onScrollFrame) onScrollFrame(values);\n            });\n            this.detectScrolling();\n        }\n    }, {\n        key: 'handleScrollStart',\n        value: function handleScrollStart() {\n            var onScrollStart = this.props.onScrollStart;\n\n            if (onScrollStart) onScrollStart();\n            this.handleScrollStartAutoHide();\n        }\n    }, {\n        key: 'handleScrollStartAutoHide',\n        value: function handleScrollStartAutoHide() {\n            var autoHide = this.props.autoHide;\n\n            if (!autoHide) return;\n            this.showTracks();\n        }\n    }, {\n        key: 'handleScrollStop',\n        value: function handleScrollStop() {\n            var onScrollStop = this.props.onScrollStop;\n\n            if (onScrollStop) onScrollStop();\n            this.handleScrollStopAutoHide();\n        }\n    }, {\n        key: 'handleScrollStopAutoHide',\n        value: function handleScrollStopAutoHide() {\n            var autoHide = this.props.autoHide;\n\n            if (!autoHide) return;\n            this.hideTracks();\n        }\n    }, {\n        key: 'handleWindowResize',\n        value: function handleWindowResize() {\n            this.update();\n        }\n    }, {\n        key: 'handleHorizontalTrackMouseDown',\n        value: function handleHorizontalTrackMouseDown(event) {\n            event.preventDefault();\n            var target = event.target,\n                clientX = event.clientX;\n\n            var _target$getBoundingCl = target.getBoundingClientRect(),\n                targetLeft = _target$getBoundingCl.left;\n\n            var thumbWidth = this.getThumbHorizontalWidth();\n            var offset = Math.abs(targetLeft - clientX) - thumbWidth / 2;\n            this.view.scrollLeft = this.getScrollLeftForOffset(offset);\n        }\n    }, {\n        key: 'handleVerticalTrackMouseDown',\n        value: function handleVerticalTrackMouseDown(event) {\n            event.preventDefault();\n            var target = event.target,\n                clientY = event.clientY;\n\n            var _target$getBoundingCl2 = target.getBoundingClientRect(),\n                targetTop = _target$getBoundingCl2.top;\n\n            var thumbHeight = this.getThumbVerticalHeight();\n            var offset = Math.abs(targetTop - clientY) - thumbHeight / 2;\n            this.view.scrollTop = this.getScrollTopForOffset(offset);\n        }\n    }, {\n        key: 'handleHorizontalThumbMouseDown',\n        value: function handleHorizontalThumbMouseDown(event) {\n            event.preventDefault();\n            this.handleDragStart(event);\n            var target = event.target,\n                clientX = event.clientX;\n            var offsetWidth = target.offsetWidth;\n\n            var _target$getBoundingCl3 = target.getBoundingClientRect(),\n                left = _target$getBoundingCl3.left;\n\n            this.prevPageX = offsetWidth - (clientX - left);\n        }\n    }, {\n        key: 'handleVerticalThumbMouseDown',\n        value: function handleVerticalThumbMouseDown(event) {\n            event.preventDefault();\n            this.handleDragStart(event);\n            var target = event.target,\n                clientY = event.clientY;\n            var offsetHeight = target.offsetHeight;\n\n            var _target$getBoundingCl4 = target.getBoundingClientRect(),\n                top = _target$getBoundingCl4.top;\n\n            this.prevPageY = offsetHeight - (clientY - top);\n        }\n    }, {\n        key: 'setupDragging',\n        value: function setupDragging() {\n            (0, _domCss2[\"default\"])(document.body, _styles.disableSelectStyle);\n            document.addEventListener('mousemove', this.handleDrag);\n            document.addEventListener('mouseup', this.handleDragEnd);\n            document.onselectstart = _returnFalse2[\"default\"];\n        }\n    }, {\n        key: 'teardownDragging',\n        value: function teardownDragging() {\n            (0, _domCss2[\"default\"])(document.body, _styles.disableSelectStyleReset);\n            document.removeEventListener('mousemove', this.handleDrag);\n            document.removeEventListener('mouseup', this.handleDragEnd);\n            document.onselectstart = undefined;\n        }\n    }, {\n        key: 'handleDragStart',\n        value: function handleDragStart(event) {\n            this.dragging = true;\n            event.stopImmediatePropagation();\n            this.setupDragging();\n        }\n    }, {\n        key: 'handleDrag',\n        value: function handleDrag(event) {\n            if (this.prevPageX) {\n                var clientX = event.clientX;\n\n                var _trackHorizontal$getB = this.trackHorizontal.getBoundingClientRect(),\n                    trackLeft = _trackHorizontal$getB.left;\n\n                var thumbWidth = this.getThumbHorizontalWidth();\n                var clickPosition = thumbWidth - this.prevPageX;\n                var offset = -trackLeft + clientX - clickPosition;\n                this.view.scrollLeft = this.getScrollLeftForOffset(offset);\n            }\n            if (this.prevPageY) {\n                var clientY = event.clientY;\n\n                var _trackVertical$getBou = this.trackVertical.getBoundingClientRect(),\n                    trackTop = _trackVertical$getBou.top;\n\n                var thumbHeight = this.getThumbVerticalHeight();\n                var _clickPosition = thumbHeight - this.prevPageY;\n                var _offset = -trackTop + clientY - _clickPosition;\n                this.view.scrollTop = this.getScrollTopForOffset(_offset);\n            }\n            return false;\n        }\n    }, {\n        key: 'handleDragEnd',\n        value: function handleDragEnd() {\n            this.dragging = false;\n            this.prevPageX = this.prevPageY = 0;\n            this.teardownDragging();\n            this.handleDragEndAutoHide();\n        }\n    }, {\n        key: 'handleDragEndAutoHide',\n        value: function handleDragEndAutoHide() {\n            var autoHide = this.props.autoHide;\n\n            if (!autoHide) return;\n            this.hideTracks();\n        }\n    }, {\n        key: 'handleTrackMouseEnter',\n        value: function handleTrackMouseEnter() {\n            this.trackMouseOver = true;\n            this.handleTrackMouseEnterAutoHide();\n        }\n    }, {\n        key: 'handleTrackMouseEnterAutoHide',\n        value: function handleTrackMouseEnterAutoHide() {\n            var autoHide = this.props.autoHide;\n\n            if (!autoHide) return;\n            this.showTracks();\n        }\n    }, {\n        key: 'handleTrackMouseLeave',\n        value: function handleTrackMouseLeave() {\n            this.trackMouseOver = false;\n            this.handleTrackMouseLeaveAutoHide();\n        }\n    }, {\n        key: 'handleTrackMouseLeaveAutoHide',\n        value: function handleTrackMouseLeaveAutoHide() {\n            var autoHide = this.props.autoHide;\n\n            if (!autoHide) return;\n            this.hideTracks();\n        }\n    }, {\n        key: 'showTracks',\n        value: function showTracks() {\n            clearTimeout(this.hideTracksTimeout);\n            (0, _domCss2[\"default\"])(this.trackHorizontal, { opacity: 1 });\n            (0, _domCss2[\"default\"])(this.trackVertical, { opacity: 1 });\n        }\n    }, {\n        key: 'hideTracks',\n        value: function hideTracks() {\n            var _this3 = this;\n\n            if (this.dragging) return;\n            if (this.scrolling) return;\n            if (this.trackMouseOver) return;\n            var autoHideTimeout = this.props.autoHideTimeout;\n\n            clearTimeout(this.hideTracksTimeout);\n            this.hideTracksTimeout = setTimeout(function () {\n                (0, _domCss2[\"default\"])(_this3.trackHorizontal, { opacity: 0 });\n                (0, _domCss2[\"default\"])(_this3.trackVertical, { opacity: 0 });\n            }, autoHideTimeout);\n        }\n    }, {\n        key: 'detectScrolling',\n        value: function detectScrolling() {\n            var _this4 = this;\n\n            if (this.scrolling) return;\n            this.scrolling = true;\n            this.handleScrollStart();\n            this.detectScrollingInterval = setInterval(function () {\n                if (_this4.lastViewScrollLeft === _this4.viewScrollLeft && _this4.lastViewScrollTop === _this4.viewScrollTop) {\n                    clearInterval(_this4.detectScrollingInterval);\n                    _this4.scrolling = false;\n                    _this4.handleScrollStop();\n                }\n                _this4.lastViewScrollLeft = _this4.viewScrollLeft;\n                _this4.lastViewScrollTop = _this4.viewScrollTop;\n            }, 100);\n        }\n    }, {\n        key: 'raf',\n        value: function raf(callback) {\n            var _this5 = this;\n\n            if (this.requestFrame) _raf3[\"default\"].cancel(this.requestFrame);\n            this.requestFrame = (0, _raf3[\"default\"])(function () {\n                _this5.requestFrame = undefined;\n                callback();\n            });\n        }\n    }, {\n        key: 'update',\n        value: function update(callback) {\n            var _this6 = this;\n\n            this.raf(function () {\n                return _this6._update(callback);\n            });\n        }\n    }, {\n        key: '_update',\n        value: function _update(callback) {\n            var _props4 = this.props,\n                onUpdate = _props4.onUpdate,\n                hideTracksWhenNotNeeded = _props4.hideTracksWhenNotNeeded;\n\n            var values = this.getValues();\n            if ((0, _getScrollbarWidth2[\"default\"])()) {\n                var scrollLeft = values.scrollLeft,\n                    clientWidth = values.clientWidth,\n                    scrollWidth = values.scrollWidth;\n\n                var trackHorizontalWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n                var thumbHorizontalWidth = this.getThumbHorizontalWidth();\n                var thumbHorizontalX = scrollLeft / (scrollWidth - clientWidth) * (trackHorizontalWidth - thumbHorizontalWidth);\n                var thumbHorizontalStyle = {\n                    width: thumbHorizontalWidth,\n                    transform: 'translateX(' + thumbHorizontalX + 'px)'\n                };\n                var scrollTop = values.scrollTop,\n                    clientHeight = values.clientHeight,\n                    scrollHeight = values.scrollHeight;\n\n                var trackVerticalHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n                var thumbVerticalHeight = this.getThumbVerticalHeight();\n                var thumbVerticalY = scrollTop / (scrollHeight - clientHeight) * (trackVerticalHeight - thumbVerticalHeight);\n                var thumbVerticalStyle = {\n                    height: thumbVerticalHeight,\n                    transform: 'translateY(' + thumbVerticalY + 'px)'\n                };\n                if (hideTracksWhenNotNeeded) {\n                    var trackHorizontalStyle = {\n                        visibility: scrollWidth > clientWidth ? 'visible' : 'hidden'\n                    };\n                    var trackVerticalStyle = {\n                        visibility: scrollHeight > clientHeight ? 'visible' : 'hidden'\n                    };\n                    (0, _domCss2[\"default\"])(this.trackHorizontal, trackHorizontalStyle);\n                    (0, _domCss2[\"default\"])(this.trackVertical, trackVerticalStyle);\n                }\n                (0, _domCss2[\"default\"])(this.thumbHorizontal, thumbHorizontalStyle);\n                (0, _domCss2[\"default\"])(this.thumbVertical, thumbVerticalStyle);\n            }\n            if (onUpdate) onUpdate(values);\n            if (typeof callback !== 'function') return;\n            callback(values);\n        }\n    }, {\n        key: 'render',\n        value: function render() {\n            var _this7 = this;\n\n            var scrollbarWidth = (0, _getScrollbarWidth2[\"default\"])();\n            /* eslint-disable no-unused-vars */\n\n            var _props5 = this.props,\n                onScroll = _props5.onScroll,\n                onScrollFrame = _props5.onScrollFrame,\n                onScrollStart = _props5.onScrollStart,\n                onScrollStop = _props5.onScrollStop,\n                onUpdate = _props5.onUpdate,\n                renderView = _props5.renderView,\n                renderTrackHorizontal = _props5.renderTrackHorizontal,\n                renderTrackVertical = _props5.renderTrackVertical,\n                renderThumbHorizontal = _props5.renderThumbHorizontal,\n                renderThumbVertical = _props5.renderThumbVertical,\n                tagName = _props5.tagName,\n                hideTracksWhenNotNeeded = _props5.hideTracksWhenNotNeeded,\n                autoHide = _props5.autoHide,\n                autoHideTimeout = _props5.autoHideTimeout,\n                autoHideDuration = _props5.autoHideDuration,\n                thumbSize = _props5.thumbSize,\n                thumbMinSize = _props5.thumbMinSize,\n                universal = _props5.universal,\n                autoHeight = _props5.autoHeight,\n                autoHeightMin = _props5.autoHeightMin,\n                autoHeightMax = _props5.autoHeightMax,\n                style = _props5.style,\n                children = _props5.children,\n                props = _objectWithoutProperties(_props5, ['onScroll', 'onScrollFrame', 'onScrollStart', 'onScrollStop', 'onUpdate', 'renderView', 'renderTrackHorizontal', 'renderTrackVertical', 'renderThumbHorizontal', 'renderThumbVertical', 'tagName', 'hideTracksWhenNotNeeded', 'autoHide', 'autoHideTimeout', 'autoHideDuration', 'thumbSize', 'thumbMinSize', 'universal', 'autoHeight', 'autoHeightMin', 'autoHeightMax', 'style', 'children']);\n            /* eslint-enable no-unused-vars */\n\n            var didMountUniversal = this.state.didMountUniversal;\n\n\n            var containerStyle = _extends({}, _styles.containerStyleDefault, autoHeight && _extends({}, _styles.containerStyleAutoHeight, {\n                minHeight: autoHeightMin,\n                maxHeight: autoHeightMax\n            }), style);\n\n            var viewStyle = _extends({}, _styles.viewStyleDefault, {\n                // Hide scrollbars by setting a negative margin\n                marginRight: scrollbarWidth ? -scrollbarWidth : 0,\n                marginBottom: scrollbarWidth ? -scrollbarWidth : 0\n            }, autoHeight && _extends({}, _styles.viewStyleAutoHeight, {\n                // Add scrollbarWidth to autoHeight in order to compensate negative margins\n                minHeight: (0, _isString2[\"default\"])(autoHeightMin) ? 'calc(' + autoHeightMin + ' + ' + scrollbarWidth + 'px)' : autoHeightMin + scrollbarWidth,\n                maxHeight: (0, _isString2[\"default\"])(autoHeightMax) ? 'calc(' + autoHeightMax + ' + ' + scrollbarWidth + 'px)' : autoHeightMax + scrollbarWidth\n            }), autoHeight && universal && !didMountUniversal && {\n                minHeight: autoHeightMin,\n                maxHeight: autoHeightMax\n            }, universal && !didMountUniversal && _styles.viewStyleUniversalInitial);\n\n            var trackAutoHeightStyle = {\n                transition: 'opacity ' + autoHideDuration + 'ms',\n                opacity: 0\n            };\n\n            var trackHorizontalStyle = _extends({}, _styles.trackHorizontalStyleDefault, autoHide && trackAutoHeightStyle, (!scrollbarWidth || universal && !didMountUniversal) && {\n                display: 'none'\n            });\n\n            var trackVerticalStyle = _extends({}, _styles.trackVerticalStyleDefault, autoHide && trackAutoHeightStyle, (!scrollbarWidth || universal && !didMountUniversal) && {\n                display: 'none'\n            });\n\n            return (0, _react.createElement)(tagName, _extends({}, props, { style: containerStyle, ref: function ref(_ref3) {\n                    _this7.container = _ref3;\n                } }), [(0, _react.cloneElement)(renderView({ style: viewStyle }), { key: 'view', ref: function ref(_ref4) {\n                    _this7.view = _ref4;\n                } }, children), (0, _react.cloneElement)(renderTrackHorizontal({ style: trackHorizontalStyle }), { key: 'trackHorizontal', ref: function ref(_ref5) {\n                    _this7.trackHorizontal = _ref5;\n                } }, (0, _react.cloneElement)(renderThumbHorizontal({ style: _styles.thumbHorizontalStyleDefault }), { ref: function ref(_ref6) {\n                    _this7.thumbHorizontal = _ref6;\n                } })), (0, _react.cloneElement)(renderTrackVertical({ style: trackVerticalStyle }), { key: 'trackVertical', ref: function ref(_ref7) {\n                    _this7.trackVertical = _ref7;\n                } }, (0, _react.cloneElement)(renderThumbVertical({ style: _styles.thumbVerticalStyleDefault }), { ref: function ref(_ref8) {\n                    _this7.thumbVertical = _ref8;\n                } }))]);\n        }\n    }]);\n\n    return Scrollbars;\n}(_react.Component);\n\nexports[\"default\"] = Scrollbars;\n\n\nScrollbars.propTypes = {\n    onScroll: _propTypes2[\"default\"].func,\n    onScrollFrame: _propTypes2[\"default\"].func,\n    onScrollStart: _propTypes2[\"default\"].func,\n    onScrollStop: _propTypes2[\"default\"].func,\n    onUpdate: _propTypes2[\"default\"].func,\n    renderView: _propTypes2[\"default\"].func,\n    renderTrackHorizontal: _propTypes2[\"default\"].func,\n    renderTrackVertical: _propTypes2[\"default\"].func,\n    renderThumbHorizontal: _propTypes2[\"default\"].func,\n    renderThumbVertical: _propTypes2[\"default\"].func,\n    tagName: _propTypes2[\"default\"].string,\n    thumbSize: _propTypes2[\"default\"].number,\n    thumbMinSize: _propTypes2[\"default\"].number,\n    hideTracksWhenNotNeeded: _propTypes2[\"default\"].bool,\n    autoHide: _propTypes2[\"default\"].bool,\n    autoHideTimeout: _propTypes2[\"default\"].number,\n    autoHideDuration: _propTypes2[\"default\"].number,\n    autoHeight: _propTypes2[\"default\"].bool,\n    autoHeightMin: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].number, _propTypes2[\"default\"].string]),\n    autoHeightMax: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].number, _propTypes2[\"default\"].string]),\n    universal: _propTypes2[\"default\"].bool,\n    style: _propTypes2[\"default\"].object,\n    children: _propTypes2[\"default\"].node\n};\n\nScrollbars.defaultProps = {\n    renderView: _defaultRenderElements.renderViewDefault,\n    renderTrackHorizontal: _defaultRenderElements.renderTrackHorizontalDefault,\n    renderTrackVertical: _defaultRenderElements.renderTrackVerticalDefault,\n    renderThumbHorizontal: _defaultRenderElements.renderThumbHorizontalDefault,\n    renderThumbVertical: _defaultRenderElements.renderThumbVerticalDefault,\n    tagName: 'div',\n    thumbMinSize: 30,\n    hideTracksWhenNotNeeded: false,\n    autoHide: false,\n    autoHideTimeout: 1000,\n    autoHideDuration: 200,\n    autoHeight: false,\n    autoHeightMin: 0,\n    autoHeightMax: 200,\n    universal: false\n};\n\n/***/ }),\n/* 1619 */\n/***/ (function(module, exports) {\n\nvar div = null\nvar prefixes = [ 'Webkit', 'Moz', 'O', 'ms' ]\n\nmodule.exports = function prefixStyle (prop) {\n  // re-use a dummy div\n  if (!div) {\n    div = document.createElement('div')\n  }\n\n  var style = div.style\n\n  // prop exists without prefix\n  if (prop in style) {\n    return prop\n  }\n\n  // borderRadius -> BorderRadius\n  var titleCase = prop.charAt(0).toUpperCase() + prop.slice(1)\n\n  // find the vendor-prefixed prop\n  for (var i = prefixes.length; i >= 0; i--) {\n    var name = prefixes[i] + titleCase\n    // e.g. WebkitBorderRadius or webkitBorderRadius\n    if (name in style) {\n      return name\n    }\n  }\n\n  return false\n}\n\n\n/***/ }),\n/* 1620 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar space = __webpack_require__(1621)\n\n/**\n * Export.\n */\n\nmodule.exports = toCamelCase\n\n/**\n * Convert a `string` to camel case.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toCamelCase(string) {\n  return space(string).replace(/\\s(\\w)/g, function (matches, letter) {\n    return letter.toUpperCase()\n  })\n}\n\n\n/***/ }),\n/* 1621 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar clean = __webpack_require__(1622)\n\n/**\n * Export.\n */\n\nmodule.exports = toSpaceCase\n\n/**\n * Convert a `string` to space case.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toSpaceCase(string) {\n  return clean(string).replace(/[\\W_]+(.|$)/g, function (matches, match) {\n    return match ? ' ' + match : ''\n  }).trim()\n}\n\n\n/***/ }),\n/* 1622 */\n/***/ (function(module, exports) {\n\n\n/**\n * Export.\n */\n\nmodule.exports = toNoCase\n\n/**\n * Test whether a string is camel-case.\n */\n\nvar hasSpace = /\\s/\nvar hasSeparator = /(_|-|\\.|:)/\nvar hasCamel = /([a-z][A-Z]|[A-Z][a-z])/\n\n/**\n * Remove any starting case from a `string`, like camel or snake, but keep\n * spaces and punctuation that may be important otherwise.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toNoCase(string) {\n  if (hasSpace.test(string)) return string.toLowerCase()\n  if (hasSeparator.test(string)) return (unseparate(string) || string).toLowerCase()\n  if (hasCamel.test(string)) return uncamelize(string).toLowerCase()\n  return string.toLowerCase()\n}\n\n/**\n * Separator splitter.\n */\n\nvar separatorSplitter = /[\\W_]+(.|$)/g\n\n/**\n * Un-separate a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction unseparate(string) {\n  return string.replace(separatorSplitter, function (m, next) {\n    return next ? ' ' + next : ''\n  })\n}\n\n/**\n * Camelcase splitter.\n */\n\nvar camelSplitter = /(.)([A-Z]+)/g\n\n/**\n * Un-camelcase a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction uncamelize(string) {\n  return string.replace(camelSplitter, function (m, previous, uppers) {\n    return previous + ' ' + uppers.toLowerCase().split('').join(' ')\n  })\n}\n\n\n/***/ }),\n/* 1623 */\n/***/ (function(module, exports) {\n\n/* The following list is defined in React's core */\nvar IS_UNITLESS = {\n  animationIterationCount: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridRow: true,\n  gridColumn: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n\n  // SVG-related properties\n  fillOpacity: true,\n  stopOpacity: true,\n  strokeDashoffset: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n\nmodule.exports = function(name, value) {\n  if(typeof value === 'number' && !IS_UNITLESS[ name ]) {\n    return value + 'px';\n  } else {\n    return value;\n  }\n};\n\n/***/ }),\n/* 1624 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports[\"default\"] = isString;\nfunction isString(maybe) {\n    return typeof maybe === 'string';\n}\n\n/***/ }),\n/* 1625 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports[\"default\"] = getScrollbarWidth;\n\nvar _domCss = __webpack_require__(673);\n\nvar _domCss2 = _interopRequireDefault(_domCss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar scrollbarWidth = false;\n\nfunction getScrollbarWidth() {\n    if (scrollbarWidth !== false) return scrollbarWidth;\n    /* istanbul ignore else */\n    if (typeof document !== 'undefined') {\n        var div = document.createElement('div');\n        (0, _domCss2[\"default\"])(div, {\n            width: 100,\n            height: 100,\n            position: 'absolute',\n            top: -9999,\n            overflow: 'scroll',\n            MsOverflowStyle: 'scrollbar'\n        });\n        document.body.appendChild(div);\n        scrollbarWidth = div.offsetWidth - div.clientWidth;\n        document.body.removeChild(div);\n    } else {\n        scrollbarWidth = 0;\n    }\n    return scrollbarWidth || 0;\n}\n\n/***/ }),\n/* 1626 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports[\"default\"] = returnFalse;\nfunction returnFalse() {\n    return false;\n}\n\n/***/ }),\n/* 1627 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports[\"default\"] = getInnerWidth;\nfunction getInnerWidth(el) {\n    var clientWidth = el.clientWidth;\n\n    var _getComputedStyle = getComputedStyle(el),\n        paddingLeft = _getComputedStyle.paddingLeft,\n        paddingRight = _getComputedStyle.paddingRight;\n\n    return clientWidth - parseFloat(paddingLeft) - parseFloat(paddingRight);\n}\n\n/***/ }),\n/* 1628 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports[\"default\"] = getInnerHeight;\nfunction getInnerHeight(el) {\n    var clientHeight = el.clientHeight;\n\n    var _getComputedStyle = getComputedStyle(el),\n        paddingTop = _getComputedStyle.paddingTop,\n        paddingBottom = _getComputedStyle.paddingBottom;\n\n    return clientHeight - parseFloat(paddingTop) - parseFloat(paddingBottom);\n}\n\n/***/ }),\n/* 1629 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nvar containerStyleDefault = exports.containerStyleDefault = {\n    position: 'relative',\n    overflow: 'hidden',\n    width: '100%',\n    height: '100%'\n};\n\n// Overrides containerStyleDefault properties\nvar containerStyleAutoHeight = exports.containerStyleAutoHeight = {\n    height: 'auto'\n};\n\nvar viewStyleDefault = exports.viewStyleDefault = {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    right: 0,\n    bottom: 0,\n    overflow: 'scroll',\n    WebkitOverflowScrolling: 'touch'\n};\n\n// Overrides viewStyleDefault properties\nvar viewStyleAutoHeight = exports.viewStyleAutoHeight = {\n    position: 'relative',\n    top: undefined,\n    left: undefined,\n    right: undefined,\n    bottom: undefined\n};\n\nvar viewStyleUniversalInitial = exports.viewStyleUniversalInitial = {\n    overflow: 'hidden',\n    marginRight: 0,\n    marginBottom: 0\n};\n\nvar trackHorizontalStyleDefault = exports.trackHorizontalStyleDefault = {\n    position: 'absolute',\n    height: 6\n};\n\nvar trackVerticalStyleDefault = exports.trackVerticalStyleDefault = {\n    position: 'absolute',\n    width: 6\n};\n\nvar thumbHorizontalStyleDefault = exports.thumbHorizontalStyleDefault = {\n    position: 'relative',\n    display: 'block',\n    height: '100%'\n};\n\nvar thumbVerticalStyleDefault = exports.thumbVerticalStyleDefault = {\n    position: 'relative',\n    display: 'block',\n    width: '100%'\n};\n\nvar disableSelectStyle = exports.disableSelectStyle = {\n    userSelect: 'none'\n};\n\nvar disableSelectStyleReset = exports.disableSelectStyleReset = {\n    userSelect: ''\n};\n\n/***/ }),\n/* 1630 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\nexports.renderViewDefault = renderViewDefault;\nexports.renderTrackHorizontalDefault = renderTrackHorizontalDefault;\nexports.renderTrackVerticalDefault = renderTrackVerticalDefault;\nexports.renderThumbHorizontalDefault = renderThumbHorizontalDefault;\nexports.renderThumbVerticalDefault = renderThumbVerticalDefault;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\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\n/* eslint-disable react/prop-types */\n\nfunction renderViewDefault(props) {\n    return _react2[\"default\"].createElement('div', props);\n}\n\nfunction renderTrackHorizontalDefault(_ref) {\n    var style = _ref.style,\n        props = _objectWithoutProperties(_ref, ['style']);\n\n    var finalStyle = _extends({}, style, {\n        right: 2,\n        bottom: 2,\n        left: 2,\n        borderRadius: 3\n    });\n    return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}\n\nfunction renderTrackVerticalDefault(_ref2) {\n    var style = _ref2.style,\n        props = _objectWithoutProperties(_ref2, ['style']);\n\n    var finalStyle = _extends({}, style, {\n        right: 2,\n        bottom: 2,\n        top: 2,\n        borderRadius: 3\n    });\n    return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}\n\nfunction renderThumbHorizontalDefault(_ref3) {\n    var style = _ref3.style,\n        props = _objectWithoutProperties(_ref3, ['style']);\n\n    var finalStyle = _extends({}, style, {\n        cursor: 'pointer',\n        borderRadius: 'inherit',\n        backgroundColor: 'rgba(0,0,0,.2)'\n    });\n    return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}\n\nfunction renderThumbVerticalDefault(_ref4) {\n    var style = _ref4.style,\n        props = _objectWithoutProperties(_ref4, ['style']);\n\n    var finalStyle = _extends({}, style, {\n        cursor: 'pointer',\n        borderRadius: 'inherit',\n        backgroundColor: 'rgba(0,0,0,.2)'\n    });\n    return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}\n\n/***/ }),\n/* 1631 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(1);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = __webpack_require__(644);\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = __webpack_require__(46);\n\nvar _warning2 = _interopRequireDefault(_warning);\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 MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\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-' + (0, _gud2.default)() + '__';\n\n  var Provider = function (_Component) {\n    _inherits(Provider, _Component);\n\n    function Provider() {\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Provider);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    Provider.prototype.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n    };\n\n    Provider.prototype.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 = void 0;\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          if (false) {}\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    };\n\n    Provider.prototype.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] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n  var Consumer = function (_Component2) {\n    _inherits(Consumer, _Component2);\n\n    function Consumer() {\n      var _temp2, _this2, _ret2;\n\n      _classCallCheck(this, Consumer);\n\n      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n        value: _this2.getValue()\n      }, _this2.onUpdate = function (newValue, changedBits) {\n        var observedBits = _this2.observedBits | 0;\n        if ((observedBits & changedBits) !== 0) {\n          _this2.setState({ value: _this2.getValue() });\n        }\n      }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n    }\n\n    Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var observedBits = nextProps.observedBits;\n\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentDidMount = function componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n      var observedBits = this.props.observedBits;\n\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    };\n\n    Consumer.prototype.getValue = function getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    };\n\n    Consumer.prototype.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] = _propTypes2.default.object, _Consumer$contextType);\n\n\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 1632 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {ace.define(\"ace/mode/json_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar JsonHighlightRules = function () {\n    this.$rules = {\n        \"start\": [\n            {\n                token: \"variable\",\n                regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n            }, {\n                token: \"string\",\n                regex: '\"',\n                next: \"string\"\n            }, {\n                token: \"constant.numeric\",\n                regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n            }, {\n                token: \"constant.numeric\",\n                regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n            }, {\n                token: \"constant.language.boolean\",\n                regex: \"(?:true|false)\\\\b\"\n            }, {\n                token: \"text\",\n                regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n            }, {\n                token: \"comment\",\n                regex: \"\\\\/\\\\/.*$\"\n            }, {\n                token: \"comment.start\",\n                regex: \"\\\\/\\\\*\",\n                next: \"comment\"\n            }, {\n                token: \"paren.lparen\",\n                regex: \"[[({]\"\n            }, {\n                token: \"paren.rparen\",\n                regex: \"[\\\\])}]\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: /[,]/\n            }, {\n                token: \"text\",\n                regex: \"\\\\s+\"\n            }\n        ],\n        \"string\": [\n            {\n                token: \"constant.language.escape\",\n                regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n            }, {\n                token: \"string\",\n                regex: '\"|$',\n                next: \"start\"\n            }, {\n                defaultToken: \"string\"\n            }\n        ],\n        \"comment\": [\n            {\n                token: \"comment.end\",\n                regex: \"\\\\*\\\\/\",\n                next: \"start\"\n            }, {\n                defaultToken: \"comment\"\n            }\n        ]\n    };\n};\noop.inherits(JsonHighlightRules, TextHighlightRules);\nexports.JsonHighlightRules = JsonHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n    this.checkOutdent = function (line, input) {\n        if (!/^\\s+$/.test(line))\n            return false;\n        return /^\\s*\\}/.test(input);\n    };\n    this.autoOutdent = function (doc, row) {\n        var line = doc.getLine(row);\n        var match = line.match(/^(\\s*\\})/);\n        if (!match)\n            return 0;\n        var column = match[1].length;\n        var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n        if (!openBracePos || openBracePos.row == row)\n            return 0;\n        var indent = this.$getIndent(doc.getLine(openBracePos.row));\n        doc.replace(new Range(row, 0, row, column - 1), indent);\n    };\n    this.$getIndent = function (line) {\n        return line.match(/^\\s*/)[0];\n    };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n    if (commentRegex) {\n        this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n        this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n    }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n    this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n    this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n    this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n    this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n    this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n    this._getFoldWidgetBase = this.getFoldWidget;\n    this.getFoldWidget = function (session, foldStyle, row) {\n        var line = session.getLine(row);\n        if (this.singleLineBlockCommentRe.test(line)) {\n            if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n                return \"\";\n        }\n        var fw = this._getFoldWidgetBase(session, foldStyle, row);\n        if (!fw && this.startRegionRe.test(line))\n            return \"start\"; // lineCommentRegionStart\n        return fw;\n    };\n    this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n        var line = session.getLine(row);\n        if (this.startRegionRe.test(line))\n            return this.getCommentRegionBlock(session, line, row);\n        var match = line.match(this.foldingStartMarker);\n        if (match) {\n            var i = match.index;\n            if (match[1])\n                return this.openingBracketBlock(session, match[1], row, i);\n            var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n            if (range && !range.isMultiLine()) {\n                if (forceMultiline) {\n                    range = this.getSectionRange(session, row);\n                }\n                else if (foldStyle != \"all\")\n                    range = null;\n            }\n            return range;\n        }\n        if (foldStyle === \"markbegin\")\n            return;\n        var match = line.match(this.foldingStopMarker);\n        if (match) {\n            var i = match.index + match[0].length;\n            if (match[1])\n                return this.closingBracketBlock(session, match[1], row, i);\n            return session.getCommentFoldRange(row, i, -1);\n        }\n    };\n    this.getSectionRange = function (session, row) {\n        var line = session.getLine(row);\n        var startIndent = line.search(/\\S/);\n        var startRow = row;\n        var startColumn = line.length;\n        row = row + 1;\n        var endRow = row;\n        var maxRow = session.getLength();\n        while (++row < maxRow) {\n            line = session.getLine(row);\n            var indent = line.search(/\\S/);\n            if (indent === -1)\n                continue;\n            if (startIndent > indent)\n                break;\n            var subRange = this.getFoldWidgetRange(session, \"all\", row);\n            if (subRange) {\n                if (subRange.start.row <= startRow) {\n                    break;\n                }\n                else if (subRange.isMultiLine()) {\n                    row = subRange.end.row;\n                }\n                else if (startIndent == indent) {\n                    break;\n                }\n            }\n            endRow = row;\n        }\n        return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n    };\n    this.getCommentRegionBlock = function (session, line, row) {\n        var startColumn = line.search(/\\s*$/);\n        var maxRow = session.getLength();\n        var startRow = row;\n        var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n        var depth = 1;\n        while (++row < maxRow) {\n            line = session.getLine(row);\n            var m = re.exec(line);\n            if (!m)\n                continue;\n            if (m[1])\n                depth--;\n            else\n                depth++;\n            if (!depth)\n                break;\n        }\n        var endRow = row;\n        if (endRow > startRow) {\n            return new Range(startRow, startColumn, endRow, line.length);\n        }\n    };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/json\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/json_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar HighlightRules = require(\"./json_highlight_rules\").JsonHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar Mode = function () {\n    this.HighlightRules = HighlightRules;\n    this.$outdent = new MatchingBraceOutdent();\n    this.$behaviour = new CstyleBehaviour();\n    this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n    this.lineCommentStart = \"//\";\n    this.blockComment = { start: \"/*\", end: \"*/\" };\n    this.getNextLineIndent = function (state, line, tab) {\n        var indent = this.$getIndent(line);\n        if (state == \"start\") {\n            var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n            if (match) {\n                indent += tab;\n            }\n        }\n        return indent;\n    };\n    this.checkOutdent = function (state, line, input) {\n        return this.$outdent.checkOutdent(line, input);\n    };\n    this.autoOutdent = function (state, doc, row) {\n        this.$outdent.autoOutdent(doc, row);\n    };\n    this.createWorker = function (session) {\n        var worker = new WorkerClient([\"ace\"], \"ace/mode/json_worker\", \"JsonWorker\");\n        worker.attachToDocument(session.getDocument());\n        worker.on(\"annotate\", function (e) {\n            session.setAnnotations(e.data);\n        });\n        worker.on(\"terminate\", function () {\n            session.clearAnnotations();\n        });\n        return worker;\n    };\n    this.$id = \"ace/mode/json\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});                (function() {\n                    ace.require([\"ace/mode/json\"], function(m) {\n                        if ( true && module) {\n                            module.exports = m;\n                        }\n                    });\n                })();\n            \n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 1633 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar DocCommentHighlightRules = function () {\n    this.$rules = {\n        \"start\": [{\n                token: \"comment.doc.tag\",\n                regex: \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n            },\n            DocCommentHighlightRules.getTagRule(),\n            {\n                defaultToken: \"comment.doc\",\n                caseInsensitive: true\n            }]\n    };\n};\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\nDocCommentHighlightRules.getTagRule = function (start) {\n    return {\n        token: \"comment.doc.tag.storage.type\",\n        regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n    };\n};\nDocCommentHighlightRules.getStartRule = function (start) {\n    return {\n        token: \"comment.doc\",\n        regex: \"\\\\/\\\\*(?=\\\\*)\",\n        next: start\n    };\n};\nDocCommentHighlightRules.getEndRule = function (start) {\n    return {\n        token: \"comment.doc\",\n        regex: \"\\\\*\\\\/\",\n        next: start\n    };\n};\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar DocCommentHighlightRules = require(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\nvar JavaScriptHighlightRules = function (options) {\n    var keywordMapper = this.createKeywordMapper({\n        \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n            \"Namespace|QName|XML|XMLList|\" + // E4X\n            \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n            \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n            \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n            \"SyntaxError|TypeError|URIError|\" +\n            \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n            \"isNaN|parseFloat|parseInt|\" +\n            \"JSON|Math|\" + // Other\n            \"this|arguments|prototype|window|document\",\n        \"keyword\": \"const|yield|import|get|set|async|await|\" +\n            \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n            \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n            \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n            \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n        \"storage.type\": \"const|let|var|function\",\n        \"constant.language\": \"null|Infinity|NaN|undefined\",\n        \"support.function\": \"alert\",\n        \"constant.language.boolean\": \"true|false\"\n    }, \"identifier\");\n    var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n    var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n        \"u[0-9a-fA-F]{4}|\" + // unicode\n        \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n        \"[0-2][0-7]{0,2}|\" + // oct\n        \"3[0-7][0-7]?|\" + // oct\n        \"[4-7][0-7]?|\" + //oct\n        \".)\";\n    this.$rules = {\n        \"no_regex\": [\n            DocCommentHighlightRules.getStartRule(\"doc-start\"),\n            comments(\"no_regex\"),\n            {\n                token: \"string\",\n                regex: \"'(?=.)\",\n                next: \"qstring\"\n            }, {\n                token: \"string\",\n                regex: '\"(?=.)',\n                next: \"qqstring\"\n            }, {\n                token: \"constant.numeric\",\n                regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n            }, {\n                token: \"constant.numeric\",\n                regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"support.function\",\n                    \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n                    \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n                    \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n                    \"keyword.operator\", \"text\",\n                    \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"entity.name.function\", \"text\", \"punctuation.operator\",\n                    \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: [\n                    \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: \"keyword\",\n                regex: \"from(?=\\\\s*('|\\\"))\"\n            }, {\n                token: \"keyword\",\n                regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n                next: \"start\"\n            }, {\n                token: [\"support.constant\"],\n                regex: /that\\b/\n            }, {\n                token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n                regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n            }, {\n                token: keywordMapper,\n                regex: identifierRe\n            }, {\n                token: \"punctuation.operator\",\n                regex: /[.](?![.])/,\n                next: \"property\"\n            }, {\n                token: \"storage.type\",\n                regex: /=>/,\n                next: \"start\"\n            }, {\n                token: \"keyword.operator\",\n                regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n                next: \"start\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: /[?:,;.]/,\n                next: \"start\"\n            }, {\n                token: \"paren.lparen\",\n                regex: /[\\[({]/,\n                next: \"start\"\n            }, {\n                token: \"paren.rparen\",\n                regex: /[\\])}]/\n            }, {\n                token: \"comment\",\n                regex: /^#!.*$/\n            }\n        ],\n        property: [{\n                token: \"text\",\n                regex: \"\\\\s+\"\n            }, {\n                token: [\n                    \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n                    \"keyword.operator\", \"text\",\n                    \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n                ],\n                regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n                next: \"function_arguments\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: /[.](?![.])/\n            }, {\n                token: \"support.function\",\n                regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n            }, {\n                token: \"support.function.dom\",\n                regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n            }, {\n                token: \"support.constant\",\n                regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n            }, {\n                token: \"identifier\",\n                regex: identifierRe\n            }, {\n                regex: \"\",\n                token: \"empty\",\n                next: \"no_regex\"\n            }\n        ],\n        \"start\": [\n            DocCommentHighlightRules.getStartRule(\"doc-start\"),\n            comments(\"start\"),\n            {\n                token: \"string.regexp\",\n                regex: \"\\\\/\",\n                next: \"regex\"\n            }, {\n                token: \"text\",\n                regex: \"\\\\s+|^$\",\n                next: \"start\"\n            }, {\n                token: \"empty\",\n                regex: \"\",\n                next: \"no_regex\"\n            }\n        ],\n        \"regex\": [\n            {\n                token: \"regexp.keyword.operator\",\n                regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n            }, {\n                token: \"string.regexp\",\n                regex: \"/[sxngimy]*\",\n                next: \"no_regex\"\n            }, {\n                token: \"invalid\",\n                regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n            }, {\n                token: \"constant.language.escape\",\n                regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n            }, {\n                token: \"constant.language.delimiter\",\n                regex: /\\|/\n            }, {\n                token: \"constant.language.escape\",\n                regex: /\\[\\^?/,\n                next: \"regex_character_class\"\n            }, {\n                token: \"empty\",\n                regex: \"$\",\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string.regexp\"\n            }\n        ],\n        \"regex_character_class\": [\n            {\n                token: \"regexp.charclass.keyword.operator\",\n                regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n            }, {\n                token: \"constant.language.escape\",\n                regex: \"]\",\n                next: \"regex\"\n            }, {\n                token: \"constant.language.escape\",\n                regex: \"-\"\n            }, {\n                token: \"empty\",\n                regex: \"$\",\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string.regexp.charachterclass\"\n            }\n        ],\n        \"function_arguments\": [\n            {\n                token: \"variable.parameter\",\n                regex: identifierRe\n            }, {\n                token: \"punctuation.operator\",\n                regex: \"[, ]+\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: \"$\"\n            }, {\n                token: \"empty\",\n                regex: \"\",\n                next: \"no_regex\"\n            }\n        ],\n        \"qqstring\": [\n            {\n                token: \"constant.language.escape\",\n                regex: escapedRe\n            }, {\n                token: \"string\",\n                regex: \"\\\\\\\\$\",\n                consumeLineEnd: true\n            }, {\n                token: \"string\",\n                regex: '\"|$',\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string\"\n            }\n        ],\n        \"qstring\": [\n            {\n                token: \"constant.language.escape\",\n                regex: escapedRe\n            }, {\n                token: \"string\",\n                regex: \"\\\\\\\\$\",\n                consumeLineEnd: true\n            }, {\n                token: \"string\",\n                regex: \"'|$\",\n                next: \"no_regex\"\n            }, {\n                defaultToken: \"string\"\n            }\n        ]\n    };\n    if (!options || !options.noES6) {\n        this.$rules.no_regex.unshift({\n            regex: \"[{}]\", onMatch: function (val, state, stack) {\n                this.next = val == \"{\" ? this.nextState : \"\";\n                if (val == \"{\" && stack.length) {\n                    stack.unshift(\"start\", state);\n                }\n                else if (val == \"}\" && stack.length) {\n                    stack.shift();\n                    this.next = stack.shift();\n                    if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n                        return \"paren.quasi.end\";\n                }\n                return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n            },\n            nextState: \"start\"\n        }, {\n            token: \"string.quasi.start\",\n            regex: /`/,\n            push: [{\n                    token: \"constant.language.escape\",\n                    regex: escapedRe\n                }, {\n                    token: \"paren.quasi.start\",\n                    regex: /\\${/,\n                    push: \"start\"\n                }, {\n                    token: \"string.quasi.end\",\n                    regex: /`/,\n                    next: \"pop\"\n                }, {\n                    defaultToken: \"string.quasi\"\n                }]\n        });\n        if (!options || options.jsx != false)\n            JSX.call(this);\n    }\n    this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n    this.normalizeRules();\n};\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\nfunction JSX() {\n    var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n    var jsxTag = {\n        onMatch: function (val, state, stack) {\n            var offset = val.charAt(1) == \"/\" ? 2 : 1;\n            if (offset == 1) {\n                if (state != this.nextState)\n                    stack.unshift(this.next, this.nextState, 0);\n                else\n                    stack.unshift(this.next);\n                stack[2]++;\n            }\n            else if (offset == 2) {\n                if (state == this.nextState) {\n                    stack[1]--;\n                    if (!stack[1] || stack[1] < 0) {\n                        stack.shift();\n                        stack.shift();\n                    }\n                }\n            }\n            return [{\n                    type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n                    value: val.slice(0, offset)\n                }, {\n                    type: \"meta.tag.tag-name.xml\",\n                    value: val.substr(offset)\n                }];\n        },\n        regex: \"</?\" + tagRegex + \"\",\n        next: \"jsxAttributes\",\n        nextState: \"jsx\"\n    };\n    this.$rules.start.unshift(jsxTag);\n    var jsxJsRule = {\n        regex: \"{\",\n        token: \"paren.quasi.start\",\n        push: \"start\"\n    };\n    this.$rules.jsx = [\n        jsxJsRule,\n        jsxTag,\n        { include: \"reference\" },\n        { defaultToken: \"string\" }\n    ];\n    this.$rules.jsxAttributes = [{\n            token: \"meta.tag.punctuation.tag-close.xml\",\n            regex: \"/?>\",\n            onMatch: function (value, currentState, stack) {\n                if (currentState == stack[0])\n                    stack.shift();\n                if (value.length == 2) {\n                    if (stack[0] == this.nextState)\n                        stack[1]--;\n                    if (!stack[1] || stack[1] < 0) {\n                        stack.splice(0, 2);\n                    }\n                }\n                this.next = stack[0] || \"start\";\n                return [{ type: this.token, value: value }];\n            },\n            nextState: \"jsx\"\n        },\n        jsxJsRule,\n        comments(\"jsxAttributes\"),\n        {\n            token: \"entity.other.attribute-name.xml\",\n            regex: tagRegex\n        }, {\n            token: \"keyword.operator.attribute-equals.xml\",\n            regex: \"=\"\n        }, {\n            token: \"text.tag-whitespace.xml\",\n            regex: \"\\\\s+\"\n        }, {\n            token: \"string.attribute-value.xml\",\n            regex: \"'\",\n            stateName: \"jsx_attr_q\",\n            push: [\n                { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n                { include: \"reference\" },\n                { defaultToken: \"string.attribute-value.xml\" }\n            ]\n        }, {\n            token: \"string.attribute-value.xml\",\n            regex: '\"',\n            stateName: \"jsx_attr_qq\",\n            push: [\n                { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n                { include: \"reference\" },\n                { defaultToken: \"string.attribute-value.xml\" }\n            ]\n        },\n        jsxTag\n    ];\n    this.$rules.reference = [{\n            token: \"constant.language.escape.reference.xml\",\n            regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n        }];\n}\nfunction comments(next) {\n    return [\n        {\n            token: \"comment\",\n            regex: /\\/\\*/,\n            next: [\n                DocCommentHighlightRules.getTagRule(),\n                { token: \"comment\", regex: \"\\\\*\\\\/\", next: next || \"pop\" },\n                { defaultToken: \"comment\", caseInsensitive: true }\n            ]\n        }, {\n            token: \"comment\",\n            regex: \"\\\\/\\\\/\",\n            next: [\n                DocCommentHighlightRules.getTagRule(),\n                { token: \"comment\", regex: \"$|^\", next: next || \"pop\" },\n                { defaultToken: \"comment\", caseInsensitive: true }\n            ]\n        }\n    ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module){\"use strict\";\nvar Range = require(\"../range\").Range;\nvar MatchingBraceOutdent = function () { };\n(function () {\n    this.checkOutdent = function (line, input) {\n        if (!/^\\s+$/.test(line))\n            return false;\n        return /^\\s*\\}/.test(input);\n    };\n    this.autoOutdent = function (doc, row) {\n        var line = doc.getLine(row);\n        var match = line.match(/^(\\s*\\})/);\n        if (!match)\n            return 0;\n        var column = match[1].length;\n        var openBracePos = doc.findMatchingBracket({ row: row, column: column });\n        if (!openBracePos || openBracePos.row == row)\n            return 0;\n        var indent = this.$getIndent(doc.getLine(openBracePos.row));\n        doc.replace(new Range(row, 0, row, column - 1), indent);\n    };\n    this.$getIndent = function (line) {\n        return line.match(/^\\s*/)[0];\n    };\n}).call(MatchingBraceOutdent.prototype);\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (commentRegex) {\n    if (commentRegex) {\n        this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n        this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n    }\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n    this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n    this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n    this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n    this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n    this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n    this._getFoldWidgetBase = this.getFoldWidget;\n    this.getFoldWidget = function (session, foldStyle, row) {\n        var line = session.getLine(row);\n        if (this.singleLineBlockCommentRe.test(line)) {\n            if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n                return \"\";\n        }\n        var fw = this._getFoldWidgetBase(session, foldStyle, row);\n        if (!fw && this.startRegionRe.test(line))\n            return \"start\"; // lineCommentRegionStart\n        return fw;\n    };\n    this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n        var line = session.getLine(row);\n        if (this.startRegionRe.test(line))\n            return this.getCommentRegionBlock(session, line, row);\n        var match = line.match(this.foldingStartMarker);\n        if (match) {\n            var i = match.index;\n            if (match[1])\n                return this.openingBracketBlock(session, match[1], row, i);\n            var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n            if (range && !range.isMultiLine()) {\n                if (forceMultiline) {\n                    range = this.getSectionRange(session, row);\n                }\n                else if (foldStyle != \"all\")\n                    range = null;\n            }\n            return range;\n        }\n        if (foldStyle === \"markbegin\")\n            return;\n        var match = line.match(this.foldingStopMarker);\n        if (match) {\n            var i = match.index + match[0].length;\n            if (match[1])\n                return this.closingBracketBlock(session, match[1], row, i);\n            return session.getCommentFoldRange(row, i, -1);\n        }\n    };\n    this.getSectionRange = function (session, row) {\n        var line = session.getLine(row);\n        var startIndent = line.search(/\\S/);\n        var startRow = row;\n        var startColumn = line.length;\n        row = row + 1;\n        var endRow = row;\n        var maxRow = session.getLength();\n        while (++row < maxRow) {\n            line = session.getLine(row);\n            var indent = line.search(/\\S/);\n            if (indent === -1)\n                continue;\n            if (startIndent > indent)\n                break;\n            var subRange = this.getFoldWidgetRange(session, \"all\", row);\n            if (subRange) {\n                if (subRange.start.row <= startRow) {\n                    break;\n                }\n                else if (subRange.isMultiLine()) {\n                    row = subRange.end.row;\n                }\n                else if (startIndent == indent) {\n                    break;\n                }\n            }\n            endRow = row;\n        }\n        return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n    };\n    this.getCommentRegionBlock = function (session, line, row) {\n        var startColumn = line.search(/\\s*$/);\n        var maxRow = session.getLength();\n        var startRow = row;\n        var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n        var depth = 1;\n        while (++row < maxRow) {\n            line = session.getLine(row);\n            var m = re.exec(line);\n            if (!m)\n                continue;\n            if (m[1])\n                depth--;\n            else\n                depth++;\n            if (!depth)\n                break;\n        }\n        var endRow = row;\n        if (endRow > startRow) {\n            return new Range(startRow, startColumn, endRow, line.length);\n        }\n    };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n    this.HighlightRules = JavaScriptHighlightRules;\n    this.$outdent = new MatchingBraceOutdent();\n    this.$behaviour = new CstyleBehaviour();\n    this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n    this.lineCommentStart = \"//\";\n    this.blockComment = { start: \"/*\", end: \"*/\" };\n    this.$quotes = { '\"': '\"', \"'\": \"'\", \"`\": \"`\" };\n    this.getNextLineIndent = function (state, line, tab) {\n        var indent = this.$getIndent(line);\n        var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n        var tokens = tokenizedLine.tokens;\n        var endState = tokenizedLine.state;\n        if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n            return indent;\n        }\n        if (state == \"start\" || state == \"no_regex\") {\n            var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n            if (match) {\n                indent += tab;\n            }\n        }\n        else if (state == \"doc-start\") {\n            if (endState == \"start\" || endState == \"no_regex\") {\n                return \"\";\n            }\n            var match = line.match(/^\\s*(\\/?)\\*/);\n            if (match) {\n                if (match[1]) {\n                    indent += \" \";\n                }\n                indent += \"* \";\n            }\n        }\n        return indent;\n    };\n    this.checkOutdent = function (state, line, input) {\n        return this.$outdent.checkOutdent(line, input);\n    };\n    this.autoOutdent = function (state, doc, row) {\n        this.$outdent.autoOutdent(doc, row);\n    };\n    this.createWorker = function (session) {\n        var worker = new WorkerClient([\"ace\"], \"ace/mode/javascript_worker\", \"JavaScriptWorker\");\n        worker.attachToDocument(session.getDocument());\n        worker.on(\"annotate\", function (results) {\n            session.setAnnotations(results.data);\n        });\n        worker.on(\"terminate\", function () {\n            session.clearAnnotations();\n        });\n        return worker;\n    };\n    this.$id = \"ace/mode/javascript\";\n    this.snippetFileId = \"ace/snippets/javascript\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\\\b\";\nvar CssHighlightRules = function () {\n    var keywordMapper = this.createKeywordMapper({\n        \"support.function\": supportFunction,\n        \"support.constant\": supportConstant,\n        \"support.type\": supportType,\n        \"support.constant.color\": supportConstantColor,\n        \"support.constant.fonts\": supportConstantFonts\n    }, \"text\", true);\n    this.$rules = {\n        \"start\": [{\n                include: [\"strings\", \"url\", \"comments\"]\n            }, {\n                token: \"paren.lparen\",\n                regex: \"\\\\{\",\n                next: \"ruleset\"\n            }, {\n                token: \"paren.rparen\",\n                regex: \"\\\\}\"\n            }, {\n                token: \"string\",\n                regex: \"@(?!viewport)\",\n                next: \"media\"\n            }, {\n                token: \"keyword\",\n                regex: \"#[a-z0-9-_]+\"\n            }, {\n                token: \"keyword\",\n                regex: \"%\"\n            }, {\n                token: \"variable\",\n                regex: \"\\\\.[a-z0-9-_]+\"\n            }, {\n                token: \"string\",\n                regex: \":[a-z0-9-_]+\"\n            }, {\n                token: \"constant.numeric\",\n                regex: numRe\n            }, {\n                token: \"constant\",\n                regex: \"[a-z0-9-_]+\"\n            }, {\n                caseInsensitive: true\n            }],\n        \"media\": [{\n                include: [\"strings\", \"url\", \"comments\"]\n            }, {\n                token: \"paren.lparen\",\n                regex: \"\\\\{\",\n                next: \"start\"\n            }, {\n                token: \"paren.rparen\",\n                regex: \"\\\\}\",\n                next: \"start\"\n            }, {\n                token: \"string\",\n                regex: \";\",\n                next: \"start\"\n            }, {\n                token: \"keyword\",\n                regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n                    + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n                    + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n            }],\n        \"comments\": [{\n                token: \"comment\",\n                regex: \"\\\\/\\\\*\",\n                push: [{\n                        token: \"comment\",\n                        regex: \"\\\\*\\\\/\",\n                        next: \"pop\"\n                    }, {\n                        defaultToken: \"comment\"\n                    }]\n            }],\n        \"ruleset\": [{\n                regex: \"-(webkit|ms|moz|o)-\",\n                token: \"text\"\n            }, {\n                token: \"punctuation.operator\",\n                regex: \"[:;]\"\n            }, {\n                token: \"paren.rparen\",\n                regex: \"\\\\}\",\n                next: \"start\"\n            }, {\n                include: [\"strings\", \"url\", \"comments\"]\n            }, {\n                token: [\"constant.numeric\", \"keyword\"],\n                regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)\"\n            }, {\n                token: \"constant.numeric\",\n                regex: numRe\n            }, {\n                token: \"constant.numeric\",\n                regex: \"#[a-f0-9]{6}\"\n            }, {\n                token: \"constant.numeric\",\n                regex: \"#[a-f0-9]{3}\"\n            }, {\n                token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n                regex: pseudoElements\n            }, {\n                token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n                regex: pseudoClasses\n            }, {\n                include: \"url\"\n            }, {\n                token: keywordMapper,\n                regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n            }, {\n                caseInsensitive: true\n            }],\n        url: [{\n                token: \"support.function\",\n                regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n                push: [{\n                        token: \"support.function\",\n                        regex: \"\\\\)\",\n                        next: \"pop\"\n                    }, {\n                        defaultToken: \"string\"\n                    }]\n            }],\n        strings: [{\n                token: \"string.start\",\n                regex: \"'\",\n                push: [{\n                        token: \"string.end\",\n                        regex: \"'|$\",\n                        next: \"pop\"\n                    }, {\n                        include: \"escapes\"\n                    }, {\n                        token: \"constant.language.escape\",\n                        regex: /\\\\$/,\n                        consumeLineEnd: true\n                    }, {\n                        defaultToken: \"string\"\n                    }]\n            }, {\n                token: \"string.start\",\n                regex: '\"',\n                push: [{\n                        token: \"string.end\",\n                        regex: '\"|$',\n                        next: \"pop\"\n                    }, {\n                        include: \"escapes\"\n                    }, {\n                        token: \"constant.language.escape\",\n                        regex: /\\\\$/,\n                        consumeLineEnd: true\n                    }, {\n                        defaultToken: \"string\"\n                    }]\n            }],\n        escapes: [{\n                token: \"constant.language.escape\",\n                regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n            }]\n    };\n    this.normalizeRules();\n};\noop.inherits(CssHighlightRules, TextHighlightRules);\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(require, exports, module){\"use strict\";\nvar propertyMap = {\n    \"background\": { \"#$0\": 1 },\n    \"background-color\": { \"#$0\": 1, \"transparent\": 1, \"fixed\": 1 },\n    \"background-image\": { \"url('/$0')\": 1 },\n    \"background-repeat\": { \"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1 },\n    \"background-position\": { \"bottom\": 2, \"center\": 2, \"left\": 2, \"right\": 2, \"top\": 2, \"inherit\": 2 },\n    \"background-attachment\": { \"scroll\": 1, \"fixed\": 1 },\n    \"background-size\": { \"cover\": 1, \"contain\": 1 },\n    \"background-clip\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n    \"background-origin\": { \"border-box\": 1, \"padding-box\": 1, \"content-box\": 1 },\n    \"border\": { \"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1 },\n    \"border-color\": { \"#$0\": 1 },\n    \"border-style\": { \"solid\": 2, \"dashed\": 2, \"dotted\": 2, \"double\": 2, \"groove\": 2, \"hidden\": 2, \"inherit\": 2, \"inset\": 2, \"none\": 2, \"outset\": 2, \"ridged\": 2 },\n    \"border-collapse\": { \"collapse\": 1, \"separate\": 1 },\n    \"bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"clear\": { \"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1 },\n    \"color\": { \"#$0\": 1, \"rgb(#$00,0,0)\": 1 },\n    \"cursor\": { \"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1 },\n    \"display\": { \"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1 },\n    \"empty-cells\": { \"show\": 1, \"hide\": 1 },\n    \"float\": { \"left\": 1, \"right\": 1, \"none\": 1 },\n    \"font-family\": { \"Arial\": 2, \"Comic Sans MS\": 2, \"Consolas\": 2, \"Courier New\": 2, \"Courier\": 2, \"Georgia\": 2, \"Monospace\": 2, \"Sans-Serif\": 2, \"Segoe UI\": 2, \"Tahoma\": 2, \"Times New Roman\": 2, \"Trebuchet MS\": 2, \"Verdana\": 1 },\n    \"font-size\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"font-weight\": { \"bold\": 1, \"normal\": 1 },\n    \"font-style\": { \"italic\": 1, \"normal\": 1 },\n    \"font-variant\": { \"normal\": 1, \"small-caps\": 1 },\n    \"height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"letter-spacing\": { \"normal\": 1 },\n    \"line-height\": { \"normal\": 1 },\n    \"list-style-type\": { \"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1 },\n    \"margin\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"margin-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"max-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"max-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"min-height\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"min-width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"overflow\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n    \"overflow-x\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n    \"overflow-y\": { \"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1 },\n    \"padding\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-bottom\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"padding-left\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"page-break-after\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n    \"page-break-before\": { \"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1 },\n    \"position\": { \"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1 },\n    \"right\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"table-layout\": { \"fixed\": 1, \"auto\": 1 },\n    \"text-decoration\": { \"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1 },\n    \"text-align\": { \"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1 },\n    \"text-transform\": { \"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1 },\n    \"top\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"vertical-align\": { \"top\": 1, \"bottom\": 1 },\n    \"visibility\": { \"hidden\": 1, \"visible\": 1 },\n    \"white-space\": { \"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1 },\n    \"width\": { \"px\": 1, \"em\": 1, \"%\": 1 },\n    \"word-spacing\": { \"normal\": 1 },\n    \"filter\": { \"alpha(opacity=$0100)\": 1 },\n    \"text-shadow\": { \"$02px 2px 2px #777\": 1 },\n    \"text-overflow\": { \"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1 },\n    \"-moz-border-radius\": 1,\n    \"-moz-border-radius-topright\": 1,\n    \"-moz-border-radius-bottomright\": 1,\n    \"-moz-border-radius-topleft\": 1,\n    \"-moz-border-radius-bottomleft\": 1,\n    \"-webkit-border-radius\": 1,\n    \"-webkit-border-top-right-radius\": 1,\n    \"-webkit-border-top-left-radius\": 1,\n    \"-webkit-border-bottom-right-radius\": 1,\n    \"-webkit-border-bottom-left-radius\": 1,\n    \"-moz-box-shadow\": 1,\n    \"-webkit-box-shadow\": 1,\n    \"transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n    \"-moz-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 },\n    \"-webkit-transform\": { \"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\nvar CssCompletions = function () {\n};\n(function () {\n    this.completionsDefined = false;\n    this.defineCompletions = function () {\n        if (document) {\n            var style = document.createElement('c').style;\n            for (var i in style) {\n                if (typeof style[i] !== 'string')\n                    continue;\n                var name = i.replace(/[A-Z]/g, function (x) {\n                    return '-' + x.toLowerCase();\n                });\n                if (!propertyMap.hasOwnProperty(name))\n                    propertyMap[name] = 1;\n            }\n        }\n        this.completionsDefined = true;\n    };\n    this.getCompletions = function (state, session, pos, prefix) {\n        if (!this.completionsDefined) {\n            this.defineCompletions();\n        }\n        if (state === 'ruleset' || session.$mode.$id == \"ace/mode/scss\") {\n            var line = session.getLine(pos.row).substr(0, pos.column);\n            if (/:[^;]+$/.test(line)) {\n                /([\\w\\-]+):[^:]*$/.test(line);\n                return this.getPropertyValueCompletions(state, session, pos, prefix);\n            }\n            else {\n                return this.getPropertyCompletions(state, session, pos, prefix);\n            }\n        }\n        return [];\n    };\n    this.getPropertyCompletions = function (state, session, pos, prefix) {\n        var properties = Object.keys(propertyMap);\n        return properties.map(function (property) {\n            return {\n                caption: property,\n                snippet: property + ': $0;',\n                meta: \"property\",\n                score: 1000000\n            };\n        });\n    };\n    this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n        var line = session.getLine(pos.row).substr(0, pos.column);\n        var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n        if (!property)\n            return [];\n        var values = [];\n        if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n            values = Object.keys(propertyMap[property]);\n        }\n        return values.map(function (value) {\n            return {\n                caption: value,\n                snippet: value,\n                meta: \"property value\",\n                score: 1000000\n            };\n        });\n    };\n}).call(CssCompletions.prototype);\nexports.CssCompletions = CssCompletions;\n\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = require(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar CssBehaviour = function () {\n    this.inherit(CstyleBehaviour);\n    this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n        if (text === ':' && editor.selection.isEmpty()) {\n            var cursor = editor.getCursorPosition();\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            if (token && token.value.match(/\\s+/)) {\n                token = iterator.stepBackward();\n            }\n            if (token && token.type === 'support.type') {\n                var line = session.doc.getLine(cursor.row);\n                var rightChar = line.substring(cursor.column, cursor.column + 1);\n                if (rightChar === ':') {\n                    return {\n                        text: '',\n                        selection: [1, 1]\n                    };\n                }\n                if (/^(\\s+[^;]|\\s*$)/.test(line.substring(cursor.column))) {\n                    return {\n                        text: ':;',\n                        selection: [1, 1]\n                    };\n                }\n            }\n        }\n    });\n    this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n        var selected = session.doc.getTextRange(range);\n        if (!range.isMultiLine() && selected === ':') {\n            var cursor = editor.getCursorPosition();\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            if (token && token.value.match(/\\s+/)) {\n                token = iterator.stepBackward();\n            }\n            if (token && token.type === 'support.type') {\n                var line = session.doc.getLine(range.start.row);\n                var rightChar = line.substring(range.end.column, range.end.column + 1);\n                if (rightChar === ';') {\n                    range.end.column++;\n                    return range;\n                }\n            }\n        }\n    });\n    this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n        if (text === ';' && editor.selection.isEmpty()) {\n            var cursor = editor.getCursorPosition();\n            var line = session.doc.getLine(cursor.row);\n            var rightChar = line.substring(cursor.column, cursor.column + 1);\n            if (rightChar === ';') {\n                return {\n                    text: '',\n                    selection: [1, 1]\n                };\n            }\n        }\n    });\n    this.add(\"!important\", \"insertion\", function (state, action, editor, session, text) {\n        if (text === '!' && editor.selection.isEmpty()) {\n            var cursor = editor.getCursorPosition();\n            var line = session.doc.getLine(cursor.row);\n            if (/^\\s*(;|}|$)/.test(line.substring(cursor.column))) {\n                return {\n                    text: '!important',\n                    selection: [10, 10]\n                };\n            }\n        }\n    });\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\nexports.CssBehaviour = CssBehaviour;\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextMode = require(\"./text\").Mode;\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = require(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = require(\"./css_completions\").CssCompletions;\nvar CssBehaviour = require(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = require(\"./folding/cstyle\").FoldMode;\nvar Mode = function () {\n    this.HighlightRules = CssHighlightRules;\n    this.$outdent = new MatchingBraceOutdent();\n    this.$behaviour = new CssBehaviour();\n    this.$completer = new CssCompletions();\n    this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n(function () {\n    this.foldingRules = \"cStyle\";\n    this.blockComment = { start: \"/*\", end: \"*/\" };\n    this.getNextLineIndent = function (state, line, tab) {\n        var indent = this.$getIndent(line);\n        var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n        if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n            return indent;\n        }\n        var match = line.match(/^.*\\{\\s*$/);\n        if (match) {\n            indent += tab;\n        }\n        return indent;\n    };\n    this.checkOutdent = function (state, line, input) {\n        return this.$outdent.checkOutdent(line, input);\n    };\n    this.autoOutdent = function (state, doc, row) {\n        this.$outdent.autoOutdent(doc, row);\n    };\n    this.getCompletions = function (state, session, pos, prefix) {\n        return this.$completer.getCompletions(state, session, pos, prefix);\n    };\n    this.createWorker = function (session) {\n        var worker = new WorkerClient([\"ace\"], \"ace/mode/css_worker\", \"Worker\");\n        worker.attachToDocument(session.getDocument());\n        worker.on(\"annotate\", function (e) {\n            session.setAnnotations(e.data);\n        });\n        worker.on(\"terminate\", function () {\n            session.clearAnnotations();\n        });\n        return worker;\n    };\n    this.$id = \"ace/mode/css\";\n    this.snippetFileId = \"ace/snippets/css\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/xml_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar XmlHighlightRules = function (normalize) {\n    var tagRegex = \"[_:a-zA-Z\\xc0-\\uffff][-_:.a-zA-Z0-9\\xc0-\\uffff]*\";\n    this.$rules = {\n        start: [\n            { token: \"string.cdata.xml\", regex: \"<\\\\!\\\\[CDATA\\\\[\", next: \"cdata\" },\n            {\n                token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n                regex: \"(<\\\\?)(\" + tagRegex + \")\", next: \"processing_instruction\"\n            },\n            { token: \"comment.start.xml\", regex: \"<\\\\!--\", next: \"comment\" },\n            {\n                token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n                regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\", next: \"doctype\", caseInsensitive: true\n            },\n            { include: \"tag\" },\n            { token: \"text.end-tag-open.xml\", regex: \"</\" },\n            { token: \"text.tag-open.xml\", regex: \"<\" },\n            { include: \"reference\" },\n            { defaultToken: \"text.xml\" }\n        ],\n        processing_instruction: [{\n                token: \"entity.other.attribute-name.decl-attribute-name.xml\",\n                regex: tagRegex\n            }, {\n                token: \"keyword.operator.decl-attribute-equals.xml\",\n                regex: \"=\"\n            }, {\n                include: \"whitespace\"\n            }, {\n                include: \"string\"\n            }, {\n                token: \"punctuation.xml-decl.xml\",\n                regex: \"\\\\?>\",\n                next: \"start\"\n            }],\n        doctype: [\n            { include: \"whitespace\" },\n            { include: \"string\" },\n            { token: \"xml-pe.doctype.xml\", regex: \">\", next: \"start\" },\n            { token: \"xml-pe.xml\", regex: \"[-_a-zA-Z0-9:]+\" },\n            { token: \"punctuation.int-subset\", regex: \"\\\\[\", push: \"int_subset\" }\n        ],\n        int_subset: [{\n                token: \"text.xml\",\n                regex: \"\\\\s+\"\n            }, {\n                token: \"punctuation.int-subset.xml\",\n                regex: \"]\",\n                next: \"pop\"\n            }, {\n                token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n                regex: \"(<\\\\!)(\" + tagRegex + \")\",\n                push: [{\n                        token: \"text\",\n                        regex: \"\\\\s+\"\n                    },\n                    {\n                        token: \"punctuation.markup-decl.xml\",\n                        regex: \">\",\n                        next: \"pop\"\n                    },\n                    { include: \"string\" }]\n            }],\n        cdata: [\n            { token: \"string.cdata.xml\", regex: \"\\\\]\\\\]>\", next: \"start\" },\n            { token: \"text.xml\", regex: \"\\\\s+\" },\n            { token: \"text.xml\", regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\" }\n        ],\n        comment: [\n            { token: \"comment.end.xml\", regex: \"-->\", next: \"start\" },\n            { defaultToken: \"comment.xml\" }\n        ],\n        reference: [{\n                token: \"constant.language.escape.reference.xml\",\n                regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n            }],\n        attr_reference: [{\n                token: \"constant.language.escape.reference.attribute-value.xml\",\n                regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n            }],\n        tag: [{\n                token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n                regex: \"(?:(<)|(</))((?:\" + tagRegex + \":)?\" + tagRegex + \")\",\n                next: [\n                    { include: \"attributes\" },\n                    { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\" }\n                ]\n            }],\n        tag_whitespace: [\n            { token: \"text.tag-whitespace.xml\", regex: \"\\\\s+\" }\n        ],\n        whitespace: [\n            { token: \"text.whitespace.xml\", regex: \"\\\\s+\" }\n        ],\n        string: [{\n                token: \"string.xml\",\n                regex: \"'\",\n                push: [\n                    { token: \"string.xml\", regex: \"'\", next: \"pop\" },\n                    { defaultToken: \"string.xml\" }\n                ]\n            }, {\n                token: \"string.xml\",\n                regex: '\"',\n                push: [\n                    { token: \"string.xml\", regex: '\"', next: \"pop\" },\n                    { defaultToken: \"string.xml\" }\n                ]\n            }],\n        attributes: [{\n                token: \"entity.other.attribute-name.xml\",\n                regex: tagRegex\n            }, {\n                token: \"keyword.operator.attribute-equals.xml\",\n                regex: \"=\"\n            }, {\n                include: \"tag_whitespace\"\n            }, {\n                include: \"attribute_value\"\n            }],\n        attribute_value: [{\n                token: \"string.attribute-value.xml\",\n                regex: \"'\",\n                push: [\n                    { token: \"string.attribute-value.xml\", regex: \"'\", next: \"pop\" },\n                    { include: \"attr_reference\" },\n                    { defaultToken: \"string.attribute-value.xml\" }\n                ]\n            }, {\n                token: \"string.attribute-value.xml\",\n                regex: '\"',\n                push: [\n                    { token: \"string.attribute-value.xml\", regex: '\"', next: \"pop\" },\n                    { include: \"attr_reference\" },\n                    { defaultToken: \"string.attribute-value.xml\" }\n                ]\n            }]\n    };\n    if (this.constructor === XmlHighlightRules)\n        this.normalizeRules();\n};\n(function () {\n    this.embedTagRules = function (HighlightRules, prefix, tag) {\n        this.$rules.tag.unshift({\n            token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n            regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n            next: [\n                { include: \"attributes\" },\n                { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: prefix + \"start\" }\n            ]\n        });\n        this.$rules[tag + \"-end\"] = [\n            { include: \"attributes\" },\n            { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\",\n                onMatch: function (value, currentState, stack) {\n                    stack.splice(0);\n                    return this.token;\n                } }\n        ];\n        this.embedRules(HighlightRules, prefix, [{\n                token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n                regex: \"(</)(\" + tag + \"(?=\\\\s|>|$))\",\n                next: tag + \"-end\"\n            }, {\n                token: \"string.cdata.xml\",\n                regex: \"<\\\\!\\\\[CDATA\\\\[\"\n            }, {\n                token: \"string.cdata.xml\",\n                regex: \"\\\\]\\\\]>\"\n            }]);\n    };\n}).call(TextHighlightRules.prototype);\noop.inherits(XmlHighlightRules, TextHighlightRules);\nexports.XmlHighlightRules = XmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/html_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/css_highlight_rules\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/xml_highlight_rules\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar CssHighlightRules = require(\"./css_highlight_rules\").CssHighlightRules;\nvar JavaScriptHighlightRules = require(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar XmlHighlightRules = require(\"./xml_highlight_rules\").XmlHighlightRules;\nvar tagMap = lang.createMap({\n    a: 'anchor',\n    button: 'form',\n    form: 'form',\n    img: 'image',\n    input: 'form',\n    label: 'form',\n    option: 'form',\n    script: 'script',\n    select: 'form',\n    textarea: 'form',\n    style: 'style',\n    table: 'table',\n    tbody: 'table',\n    td: 'table',\n    tfoot: 'table',\n    th: 'table',\n    tr: 'table'\n});\nvar HtmlHighlightRules = function () {\n    XmlHighlightRules.call(this);\n    this.addRules({\n        attributes: [{\n                include: \"tag_whitespace\"\n            }, {\n                token: \"entity.other.attribute-name.xml\",\n                regex: \"[-_a-zA-Z0-9:.]+\"\n            }, {\n                token: \"keyword.operator.attribute-equals.xml\",\n                regex: \"=\",\n                push: [{\n                        include: \"tag_whitespace\"\n                    }, {\n                        token: \"string.unquoted.attribute-value.html\",\n                        regex: \"[^<>='\\\"`\\\\s]+\",\n                        next: \"pop\"\n                    }, {\n                        token: \"empty\",\n                        regex: \"\",\n                        next: \"pop\"\n                    }]\n            }, {\n                include: \"attribute_value\"\n            }],\n        tag: [{\n                token: function (start, tag) {\n                    var group = tagMap[tag];\n                    return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\",\n                        \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n                },\n                regex: \"(</?)([-_a-zA-Z0-9:.]+)\",\n                next: \"tag_stuff\"\n            }],\n        tag_stuff: [\n            { include: \"attributes\" },\n            { token: \"meta.tag.punctuation.tag-close.xml\", regex: \"/?>\", next: \"start\" }\n        ]\n    });\n    this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n    this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), \"js-\", \"script\");\n    if (this.constructor === HtmlHighlightRules)\n        this.normalizeRules();\n};\noop.inherits(HtmlHighlightRules, XmlHighlightRules);\nexports.HtmlHighlightRules = HtmlHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\nfunction is(token, type) {\n    return token && token.type.lastIndexOf(type + \".xml\") > -1;\n}\nvar XmlBehaviour = function () {\n    this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n        if (text == '\"' || text == \"'\") {\n            var quote = text;\n            var selected = session.doc.getTextRange(editor.getSelectionRange());\n            if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n                return {\n                    text: quote + selected + quote,\n                    selection: false\n                };\n            }\n            var cursor = editor.getCursorPosition();\n            var line = session.doc.getLine(cursor.row);\n            var rightChar = line.substring(cursor.column, cursor.column + 1);\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n                return {\n                    text: \"\",\n                    selection: [1, 1]\n                };\n            }\n            if (!token)\n                token = iterator.stepBackward();\n            if (!token)\n                return;\n            while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n                token = iterator.stepBackward();\n            }\n            var rightSpace = !rightChar || rightChar.match(/\\s/);\n            if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || (is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?'))) {\n                return {\n                    text: quote + quote,\n                    selection: [1, 1]\n                };\n            }\n        }\n    });\n    this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n        var selected = session.doc.getTextRange(range);\n        if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n            var line = session.doc.getLine(range.start.row);\n            var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n            if (rightChar == selected) {\n                range.end.column++;\n                return range;\n            }\n        }\n    });\n    this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n        if (text == '>') {\n            var position = editor.getSelectionRange().start;\n            var iterator = new TokenIterator(session, position.row, position.column);\n            var token = iterator.getCurrentToken() || iterator.stepBackward();\n            if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\")))\n                return;\n            if (is(token, \"reference.attribute-value\"))\n                return;\n            if (is(token, \"attribute-value\")) {\n                var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length;\n                if (position.column < tokenEndColumn)\n                    return;\n                if (position.column == tokenEndColumn) {\n                    var nextToken = iterator.stepForward();\n                    if (nextToken && is(nextToken, \"attribute-value\"))\n                        return;\n                    iterator.stepBackward();\n                }\n            }\n            if (/^\\s*>/.test(session.getLine(position.row).slice(position.column)))\n                return;\n            while (!is(token, \"tag-name\")) {\n                token = iterator.stepBackward();\n                if (token.value == \"<\") {\n                    token = iterator.stepForward();\n                    break;\n                }\n            }\n            var tokenRow = iterator.getCurrentTokenRow();\n            var tokenColumn = iterator.getCurrentTokenColumn();\n            if (is(iterator.stepBackward(), \"end-tag-open\"))\n                return;\n            var element = token.value;\n            if (tokenRow == position.row)\n                element = element.substring(0, position.column - tokenColumn);\n            if (this.voidElements.hasOwnProperty(element.toLowerCase()))\n                return;\n            return {\n                text: \">\" + \"</\" + element + \">\",\n                selection: [1, 1]\n            };\n        }\n    });\n    this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n        if (text == \"\\n\") {\n            var cursor = editor.getCursorPosition();\n            var line = session.getLine(cursor.row);\n            var iterator = new TokenIterator(session, cursor.row, cursor.column);\n            var token = iterator.getCurrentToken();\n            if (token && token.type.indexOf(\"tag-close\") !== -1) {\n                if (token.value == \"/>\")\n                    return;\n                while (token && token.type.indexOf(\"tag-name\") === -1) {\n                    token = iterator.stepBackward();\n                }\n                if (!token) {\n                    return;\n                }\n                var tag = token.value;\n                var row = iterator.getCurrentTokenRow();\n                token = iterator.stepBackward();\n                if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n                    return;\n                }\n                if (this.voidElements && !this.voidElements[tag]) {\n                    var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n                    var line = session.getLine(row);\n                    var nextIndent = this.$getIndent(line);\n                    var indent = nextIndent + session.getTabString();\n                    if (nextToken && nextToken.value === \"</\") {\n                        return {\n                            text: \"\\n\" + indent + \"\\n\" + nextIndent,\n                            selection: [1, indent.length, 1, indent.length]\n                        };\n                    }\n                    else {\n                        return {\n                            text: \"\\n\" + indent\n                        };\n                    }\n                }\n            }\n        }\n    });\n};\noop.inherits(XmlBehaviour, Behaviour);\nexports.XmlBehaviour = XmlBehaviour;\n\n});\n\nace.define(\"ace/mode/folding/mixed\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar FoldMode = exports.FoldMode = function (defaultMode, subModes) {\n    this.defaultMode = defaultMode;\n    this.subModes = subModes;\n};\noop.inherits(FoldMode, BaseFoldMode);\n(function () {\n    this.$getMode = function (state) {\n        if (typeof state != \"string\")\n            state = state[0];\n        for (var key in this.subModes) {\n            if (state.indexOf(key) === 0)\n                return this.subModes[key];\n        }\n        return null;\n    };\n    this.$tryMode = function (state, session, foldStyle, row) {\n        var mode = this.$getMode(state);\n        return (mode ? mode.getFoldWidget(session, foldStyle, row) : \"\");\n    };\n    this.getFoldWidget = function (session, foldStyle, row) {\n        return (this.$tryMode(session.getState(row - 1), session, foldStyle, row) ||\n            this.$tryMode(session.getState(row), session, foldStyle, row) ||\n            this.defaultMode.getFoldWidget(session, foldStyle, row));\n    };\n    this.getFoldWidgetRange = function (session, foldStyle, row) {\n        var mode = this.$getMode(session.getState(row - 1));\n        if (!mode || !mode.getFoldWidget(session, foldStyle, row))\n            mode = this.$getMode(session.getState(row));\n        if (!mode || !mode.getFoldWidget(session, foldStyle, row))\n            mode = this.defaultMode;\n        return mode.getFoldWidgetRange(session, foldStyle, row);\n    };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/xml\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/range\",\"ace/mode/folding/fold_mode\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar lang = require(\"../../lib/lang\");\nvar Range = require(\"../../range\").Range;\nvar BaseFoldMode = require(\"./fold_mode\").FoldMode;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar FoldMode = exports.FoldMode = function (voidElements, optionalEndTags) {\n    BaseFoldMode.call(this);\n    this.voidElements = voidElements || {};\n    this.optionalEndTags = oop.mixin({}, this.voidElements);\n    if (optionalEndTags)\n        oop.mixin(this.optionalEndTags, optionalEndTags);\n};\noop.inherits(FoldMode, BaseFoldMode);\nvar Tag = function () {\n    this.tagName = \"\";\n    this.closing = false;\n    this.selfClosing = false;\n    this.start = { row: 0, column: 0 };\n    this.end = { row: 0, column: 0 };\n};\nfunction is(token, type) {\n    return token.type.lastIndexOf(type + \".xml\") > -1;\n}\n(function () {\n    this.getFoldWidget = function (session, foldStyle, row) {\n        var tag = this._getFirstTagInLine(session, row);\n        if (!tag)\n            return this.getCommentFoldWidget(session, row);\n        if (tag.closing || (!tag.tagName && tag.selfClosing))\n            return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n        if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase()))\n            return \"\";\n        if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column))\n            return \"\";\n        return \"start\";\n    };\n    this.getCommentFoldWidget = function (session, row) {\n        if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row)))\n            return \"start\";\n        return \"\";\n    };\n    this._getFirstTagInLine = function (session, row) {\n        var tokens = session.getTokens(row);\n        var tag = new Tag();\n        for (var i = 0; i < tokens.length; i++) {\n            var token = tokens[i];\n            if (is(token, \"tag-open\")) {\n                tag.end.column = tag.start.column + token.value.length;\n                tag.closing = is(token, \"end-tag-open\");\n                token = tokens[++i];\n                if (!token)\n                    return null;\n                tag.tagName = token.value;\n                tag.end.column += token.value.length;\n                for (i++; i < tokens.length; i++) {\n                    token = tokens[i];\n                    tag.end.column += token.value.length;\n                    if (is(token, \"tag-close\")) {\n                        tag.selfClosing = token.value == '/>';\n                        break;\n                    }\n                }\n                return tag;\n            }\n            else if (is(token, \"tag-close\")) {\n                tag.selfClosing = token.value == '/>';\n                return tag;\n            }\n            tag.start.column += token.value.length;\n        }\n        return null;\n    };\n    this._findEndTagInLine = function (session, row, tagName, startColumn) {\n        var tokens = session.getTokens(row);\n        var column = 0;\n        for (var i = 0; i < tokens.length; i++) {\n            var token = tokens[i];\n            column += token.value.length;\n            if (column < startColumn)\n                continue;\n            if (is(token, \"end-tag-open\")) {\n                token = tokens[i + 1];\n                if (token && token.value == tagName)\n                    return true;\n            }\n        }\n        return false;\n    };\n    this._readTagForward = function (iterator) {\n        var token = iterator.getCurrentToken();\n        if (!token)\n            return null;\n        var tag = new Tag();\n        do {\n            if (is(token, \"tag-open\")) {\n                tag.closing = is(token, \"end-tag-open\");\n                tag.start.row = iterator.getCurrentTokenRow();\n                tag.start.column = iterator.getCurrentTokenColumn();\n            }\n            else if (is(token, \"tag-name\")) {\n                tag.tagName = token.value;\n            }\n            else if (is(token, \"tag-close\")) {\n                tag.selfClosing = token.value == \"/>\";\n                tag.end.row = iterator.getCurrentTokenRow();\n                tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n                iterator.stepForward();\n                return tag;\n            }\n        } while (token = iterator.stepForward());\n        return null;\n    };\n    this._readTagBackward = function (iterator) {\n        var token = iterator.getCurrentToken();\n        if (!token)\n            return null;\n        var tag = new Tag();\n        do {\n            if (is(token, \"tag-open\")) {\n                tag.closing = is(token, \"end-tag-open\");\n                tag.start.row = iterator.getCurrentTokenRow();\n                tag.start.column = iterator.getCurrentTokenColumn();\n                iterator.stepBackward();\n                return tag;\n            }\n            else if (is(token, \"tag-name\")) {\n                tag.tagName = token.value;\n            }\n            else if (is(token, \"tag-close\")) {\n                tag.selfClosing = token.value == \"/>\";\n                tag.end.row = iterator.getCurrentTokenRow();\n                tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n            }\n        } while (token = iterator.stepBackward());\n        return null;\n    };\n    this._pop = function (stack, tag) {\n        while (stack.length) {\n            var top = stack[stack.length - 1];\n            if (!tag || top.tagName == tag.tagName) {\n                return stack.pop();\n            }\n            else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n                stack.pop();\n                continue;\n            }\n            else {\n                return null;\n            }\n        }\n    };\n    this.getFoldWidgetRange = function (session, foldStyle, row) {\n        var firstTag = this._getFirstTagInLine(session, row);\n        if (!firstTag) {\n            return this.getCommentFoldWidget(session, row)\n                && session.getCommentFoldRange(row, session.getLine(row).length);\n        }\n        var isBackward = firstTag.closing || firstTag.selfClosing;\n        var stack = [];\n        var tag;\n        if (!isBackward) {\n            var iterator = new TokenIterator(session, row, firstTag.start.column);\n            var start = {\n                row: row,\n                column: firstTag.start.column + firstTag.tagName.length + 2\n            };\n            if (firstTag.start.row == firstTag.end.row)\n                start.column = firstTag.end.column;\n            while (tag = this._readTagForward(iterator)) {\n                if (tag.selfClosing) {\n                    if (!stack.length) {\n                        tag.start.column += tag.tagName.length + 2;\n                        tag.end.column -= 2;\n                        return Range.fromPoints(tag.start, tag.end);\n                    }\n                    else\n                        continue;\n                }\n                if (tag.closing) {\n                    this._pop(stack, tag);\n                    if (stack.length == 0)\n                        return Range.fromPoints(start, tag.start);\n                }\n                else {\n                    stack.push(tag);\n                }\n            }\n        }\n        else {\n            var iterator = new TokenIterator(session, row, firstTag.end.column);\n            var end = {\n                row: row,\n                column: firstTag.start.column\n            };\n            while (tag = this._readTagBackward(iterator)) {\n                if (tag.selfClosing) {\n                    if (!stack.length) {\n                        tag.start.column += tag.tagName.length + 2;\n                        tag.end.column -= 2;\n                        return Range.fromPoints(tag.start, tag.end);\n                    }\n                    else\n                        continue;\n                }\n                if (!tag.closing) {\n                    this._pop(stack, tag);\n                    if (stack.length == 0) {\n                        tag.start.column += tag.tagName.length + 2;\n                        if (tag.start.row == tag.end.row && tag.start.column < tag.end.column)\n                            tag.start.column = tag.end.column;\n                        return Range.fromPoints(tag.start, end);\n                    }\n                }\n                else {\n                    stack.push(tag);\n                }\n            }\n        }\n    };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/folding/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/mixed\",\"ace/mode/folding/xml\",\"ace/mode/folding/cstyle\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar MixedFoldMode = require(\"./mixed\").FoldMode;\nvar XmlFoldMode = require(\"./xml\").FoldMode;\nvar CStyleFoldMode = require(\"./cstyle\").FoldMode;\nvar FoldMode = exports.FoldMode = function (voidElements, optionalTags) {\n    MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n        \"js-\": new CStyleFoldMode(),\n        \"css-\": new CStyleFoldMode()\n    });\n};\noop.inherits(FoldMode, MixedFoldMode);\n\n});\n\nace.define(\"ace/mode/html_completions\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\"], function(require, exports, module){\"use strict\";\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar commonAttributes = [\n    \"accesskey\",\n    \"class\",\n    \"contenteditable\",\n    \"contextmenu\",\n    \"dir\",\n    \"draggable\",\n    \"dropzone\",\n    \"hidden\",\n    \"id\",\n    \"inert\",\n    \"itemid\",\n    \"itemprop\",\n    \"itemref\",\n    \"itemscope\",\n    \"itemtype\",\n    \"lang\",\n    \"spellcheck\",\n    \"style\",\n    \"tabindex\",\n    \"title\",\n    \"translate\"\n];\nvar eventAttributes = [\n    \"onabort\",\n    \"onblur\",\n    \"oncancel\",\n    \"oncanplay\",\n    \"oncanplaythrough\",\n    \"onchange\",\n    \"onclick\",\n    \"onclose\",\n    \"oncontextmenu\",\n    \"oncuechange\",\n    \"ondblclick\",\n    \"ondrag\",\n    \"ondragend\",\n    \"ondragenter\",\n    \"ondragleave\",\n    \"ondragover\",\n    \"ondragstart\",\n    \"ondrop\",\n    \"ondurationchange\",\n    \"onemptied\",\n    \"onended\",\n    \"onerror\",\n    \"onfocus\",\n    \"oninput\",\n    \"oninvalid\",\n    \"onkeydown\",\n    \"onkeypress\",\n    \"onkeyup\",\n    \"onload\",\n    \"onloadeddata\",\n    \"onloadedmetadata\",\n    \"onloadstart\",\n    \"onmousedown\",\n    \"onmousemove\",\n    \"onmouseout\",\n    \"onmouseover\",\n    \"onmouseup\",\n    \"onmousewheel\",\n    \"onpause\",\n    \"onplay\",\n    \"onplaying\",\n    \"onprogress\",\n    \"onratechange\",\n    \"onreset\",\n    \"onscroll\",\n    \"onseeked\",\n    \"onseeking\",\n    \"onselect\",\n    \"onshow\",\n    \"onstalled\",\n    \"onsubmit\",\n    \"onsuspend\",\n    \"ontimeupdate\",\n    \"onvolumechange\",\n    \"onwaiting\"\n];\nvar globalAttributes = commonAttributes.concat(eventAttributes);\nvar attributeMap = {\n    \"a\": { \"href\": 1, \"target\": { \"_blank\": 1, \"top\": 1 }, \"ping\": 1, \"rel\": { \"nofollow\": 1, \"alternate\": 1, \"author\": 1, \"bookmark\": 1, \"help\": 1, \"license\": 1, \"next\": 1, \"noreferrer\": 1, \"prefetch\": 1, \"prev\": 1, \"search\": 1, \"tag\": 1 }, \"media\": 1, \"hreflang\": 1, \"type\": 1 },\n    \"abbr\": {},\n    \"address\": {},\n    \"area\": { \"shape\": 1, \"coords\": 1, \"href\": 1, \"hreflang\": 1, \"alt\": 1, \"target\": 1, \"media\": 1, \"rel\": 1, \"ping\": 1, \"type\": 1 },\n    \"article\": { \"pubdate\": 1 },\n    \"aside\": {},\n    \"audio\": { \"src\": 1, \"autobuffer\": 1, \"autoplay\": { \"autoplay\": 1 }, \"loop\": { \"loop\": 1 }, \"controls\": { \"controls\": 1 }, \"muted\": { \"muted\": 1 }, \"preload\": { \"auto\": 1, \"metadata\": 1, \"none\": 1 } },\n    \"b\": {},\n    \"base\": { \"href\": 1, \"target\": 1 },\n    \"bdi\": {},\n    \"bdo\": {},\n    \"blockquote\": { \"cite\": 1 },\n    \"body\": { \"onafterprint\": 1, \"onbeforeprint\": 1, \"onbeforeunload\": 1, \"onhashchange\": 1, \"onmessage\": 1, \"onoffline\": 1, \"onpopstate\": 1, \"onredo\": 1, \"onresize\": 1, \"onstorage\": 1, \"onundo\": 1, \"onunload\": 1 },\n    \"br\": {},\n    \"button\": { \"autofocus\": 1, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"formaction\": 1, \"formenctype\": 1, \"formmethod\": 1, \"formnovalidate\": 1, \"formtarget\": 1, \"name\": 1, \"value\": 1, \"type\": { \"button\": 1, \"submit\": 1 } },\n    \"canvas\": { \"width\": 1, \"height\": 1 },\n    \"caption\": {},\n    \"cite\": {},\n    \"code\": {},\n    \"col\": { \"span\": 1 },\n    \"colgroup\": { \"span\": 1 },\n    \"command\": { \"type\": 1, \"label\": 1, \"icon\": 1, \"disabled\": 1, \"checked\": 1, \"radiogroup\": 1, \"command\": 1 },\n    \"data\": {},\n    \"datalist\": {},\n    \"dd\": {},\n    \"del\": { \"cite\": 1, \"datetime\": 1 },\n    \"details\": { \"open\": 1 },\n    \"dfn\": {},\n    \"dialog\": { \"open\": 1 },\n    \"div\": {},\n    \"dl\": {},\n    \"dt\": {},\n    \"em\": {},\n    \"embed\": { \"src\": 1, \"height\": 1, \"width\": 1, \"type\": 1 },\n    \"fieldset\": { \"disabled\": 1, \"form\": 1, \"name\": 1 },\n    \"figcaption\": {},\n    \"figure\": {},\n    \"footer\": {},\n    \"form\": { \"accept-charset\": 1, \"action\": 1, \"autocomplete\": 1, \"enctype\": { \"multipart/form-data\": 1, \"application/x-www-form-urlencoded\": 1 }, \"method\": { \"get\": 1, \"post\": 1 }, \"name\": 1, \"novalidate\": 1, \"target\": { \"_blank\": 1, \"top\": 1 } },\n    \"h1\": {},\n    \"h2\": {},\n    \"h3\": {},\n    \"h4\": {},\n    \"h5\": {},\n    \"h6\": {},\n    \"head\": {},\n    \"header\": {},\n    \"hr\": {},\n    \"html\": { \"manifest\": 1 },\n    \"i\": {},\n    \"iframe\": { \"name\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"sandbox\": { \"allow-same-origin\": 1, \"allow-top-navigation\": 1, \"allow-forms\": 1, \"allow-scripts\": 1 }, \"seamless\": { \"seamless\": 1 } },\n    \"img\": { \"alt\": 1, \"src\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"ismap\": 1 },\n    \"input\": {\n        \"type\": { \"text\": 1, \"password\": 1, \"hidden\": 1, \"checkbox\": 1, \"submit\": 1, \"radio\": 1, \"file\": 1, \"button\": 1, \"reset\": 1, \"image\": 31, \"color\": 1, \"date\": 1, \"datetime\": 1, \"datetime-local\": 1, \"email\": 1, \"month\": 1, \"number\": 1, \"range\": 1, \"search\": 1, \"tel\": 1, \"time\": 1, \"url\": 1, \"week\": 1 },\n        \"accept\": 1, \"alt\": 1, \"autocomplete\": { \"on\": 1, \"off\": 1 }, \"autofocus\": { \"autofocus\": 1 }, \"checked\": { \"checked\": 1 }, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"formaction\": 1, \"formenctype\": { \"application/x-www-form-urlencoded\": 1, \"multipart/form-data\": 1, \"text/plain\": 1 }, \"formmethod\": { \"get\": 1, \"post\": 1 }, \"formnovalidate\": { \"formnovalidate\": 1 }, \"formtarget\": { \"_blank\": 1, \"_self\": 1, \"_parent\": 1, \"_top\": 1 }, \"height\": 1, \"list\": 1, \"max\": 1, \"maxlength\": 1, \"min\": 1, \"multiple\": { \"multiple\": 1 }, \"name\": 1, \"pattern\": 1, \"placeholder\": 1, \"readonly\": { \"readonly\": 1 }, \"required\": { \"required\": 1 }, \"size\": 1, \"src\": 1, \"step\": 1, \"width\": 1, \"files\": 1, \"value\": 1\n    },\n    \"ins\": { \"cite\": 1, \"datetime\": 1 },\n    \"kbd\": {},\n    \"keygen\": { \"autofocus\": 1, \"challenge\": { \"challenge\": 1 }, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"keytype\": { \"rsa\": 1, \"dsa\": 1, \"ec\": 1 }, \"name\": 1 },\n    \"label\": { \"form\": 1, \"for\": 1 },\n    \"legend\": {},\n    \"li\": { \"value\": 1 },\n    \"link\": { \"href\": 1, \"hreflang\": 1, \"rel\": { \"stylesheet\": 1, \"icon\": 1 }, \"media\": { \"all\": 1, \"screen\": 1, \"print\": 1 }, \"type\": { \"text/css\": 1, \"image/png\": 1, \"image/jpeg\": 1, \"image/gif\": 1 }, \"sizes\": 1 },\n    \"main\": {},\n    \"map\": { \"name\": 1 },\n    \"mark\": {},\n    \"math\": {},\n    \"menu\": { \"type\": 1, \"label\": 1 },\n    \"meta\": { \"http-equiv\": { \"content-type\": 1 }, \"name\": { \"description\": 1, \"keywords\": 1 }, \"content\": { \"text/html; charset=UTF-8\": 1 }, \"charset\": 1 },\n    \"meter\": { \"value\": 1, \"min\": 1, \"max\": 1, \"low\": 1, \"high\": 1, \"optimum\": 1 },\n    \"nav\": {},\n    \"noscript\": { \"href\": 1 },\n    \"object\": { \"param\": 1, \"data\": 1, \"type\": 1, \"height\": 1, \"width\": 1, \"usemap\": 1, \"name\": 1, \"form\": 1, \"classid\": 1 },\n    \"ol\": { \"start\": 1, \"reversed\": 1 },\n    \"optgroup\": { \"disabled\": 1, \"label\": 1 },\n    \"option\": { \"disabled\": 1, \"selected\": 1, \"label\": 1, \"value\": 1 },\n    \"output\": { \"for\": 1, \"form\": 1, \"name\": 1 },\n    \"p\": {},\n    \"param\": { \"name\": 1, \"value\": 1 },\n    \"pre\": {},\n    \"progress\": { \"value\": 1, \"max\": 1 },\n    \"q\": { \"cite\": 1 },\n    \"rp\": {},\n    \"rt\": {},\n    \"ruby\": {},\n    \"s\": {},\n    \"samp\": {},\n    \"script\": { \"charset\": 1, \"type\": { \"text/javascript\": 1 }, \"src\": 1, \"defer\": 1, \"async\": 1 },\n    \"select\": { \"autofocus\": 1, \"disabled\": 1, \"form\": 1, \"multiple\": { \"multiple\": 1 }, \"name\": 1, \"size\": 1, \"readonly\": { \"readonly\": 1 } },\n    \"small\": {},\n    \"source\": { \"src\": 1, \"type\": 1, \"media\": 1 },\n    \"span\": {},\n    \"strong\": {},\n    \"style\": { \"type\": 1, \"media\": { \"all\": 1, \"screen\": 1, \"print\": 1 }, \"scoped\": 1 },\n    \"sub\": {},\n    \"sup\": {},\n    \"svg\": {},\n    \"table\": { \"summary\": 1 },\n    \"tbody\": {},\n    \"td\": { \"headers\": 1, \"rowspan\": 1, \"colspan\": 1 },\n    \"textarea\": { \"autofocus\": { \"autofocus\": 1 }, \"disabled\": { \"disabled\": 1 }, \"form\": 1, \"maxlength\": 1, \"name\": 1, \"placeholder\": 1, \"readonly\": { \"readonly\": 1 }, \"required\": { \"required\": 1 }, \"rows\": 1, \"cols\": 1, \"wrap\": { \"on\": 1, \"off\": 1, \"hard\": 1, \"soft\": 1 } },\n    \"tfoot\": {},\n    \"th\": { \"headers\": 1, \"rowspan\": 1, \"colspan\": 1, \"scope\": 1 },\n    \"thead\": {},\n    \"time\": { \"datetime\": 1 },\n    \"title\": {},\n    \"tr\": {},\n    \"track\": { \"kind\": 1, \"src\": 1, \"srclang\": 1, \"label\": 1, \"default\": 1 },\n    \"section\": {},\n    \"summary\": {},\n    \"u\": {},\n    \"ul\": {},\n    \"var\": {},\n    \"video\": { \"src\": 1, \"autobuffer\": 1, \"autoplay\": { \"autoplay\": 1 }, \"loop\": { \"loop\": 1 }, \"controls\": { \"controls\": 1 }, \"width\": 1, \"height\": 1, \"poster\": 1, \"muted\": { \"muted\": 1 }, \"preload\": { \"auto\": 1, \"metadata\": 1, \"none\": 1 } },\n    \"wbr\": {}\n};\nvar elements = Object.keys(attributeMap);\nfunction is(token, type) {\n    return token.type.lastIndexOf(type + \".xml\") > -1;\n}\nfunction findTagName(session, pos) {\n    var iterator = new TokenIterator(session, pos.row, pos.column);\n    var token = iterator.getCurrentToken();\n    while (token && !is(token, \"tag-name\")) {\n        token = iterator.stepBackward();\n    }\n    if (token)\n        return token.value;\n}\nfunction findAttributeName(session, pos) {\n    var iterator = new TokenIterator(session, pos.row, pos.column);\n    var token = iterator.getCurrentToken();\n    while (token && !is(token, \"attribute-name\")) {\n        token = iterator.stepBackward();\n    }\n    if (token)\n        return token.value;\n}\nvar HtmlCompletions = function () {\n};\n(function () {\n    this.getCompletions = function (state, session, pos, prefix) {\n        var token = session.getTokenAt(pos.row, pos.column);\n        if (!token)\n            return [];\n        if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\"))\n            return this.getTagCompletions(state, session, pos, prefix);\n        if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\"))\n            return this.getAttributeCompletions(state, session, pos, prefix);\n        if (is(token, \"attribute-value\"))\n            return this.getAttributeValueCompletions(state, session, pos, prefix);\n        var line = session.getLine(pos.row).substr(0, pos.column);\n        if (/&[a-z]*$/i.test(line))\n            return this.getHTMLEntityCompletions(state, session, pos, prefix);\n        return [];\n    };\n    this.getTagCompletions = function (state, session, pos, prefix) {\n        return elements.map(function (element) {\n            return {\n                value: element,\n                meta: \"tag\",\n                score: 1000000\n            };\n        });\n    };\n    this.getAttributeCompletions = function (state, session, pos, prefix) {\n        var tagName = findTagName(session, pos);\n        if (!tagName)\n            return [];\n        var attributes = globalAttributes;\n        if (tagName in attributeMap) {\n            attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n        }\n        return attributes.map(function (attribute) {\n            return {\n                caption: attribute,\n                snippet: attribute + '=\"$0\"',\n                meta: \"attribute\",\n                score: 1000000\n            };\n        });\n    };\n    this.getAttributeValueCompletions = function (state, session, pos, prefix) {\n        var tagName = findTagName(session, pos);\n        var attributeName = findAttributeName(session, pos);\n        if (!tagName)\n            return [];\n        var values = [];\n        if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n            values = Object.keys(attributeMap[tagName][attributeName]);\n        }\n        return values.map(function (value) {\n            return {\n                caption: value,\n                snippet: value,\n                meta: \"attribute value\",\n                score: 1000000\n            };\n        });\n    };\n    this.getHTMLEntityCompletions = function (state, session, pos, prefix) {\n        var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n        return values.map(function (value) {\n            return {\n                caption: value,\n                snippet: value,\n                meta: \"html entity\",\n                score: 1000000\n            };\n        });\n    };\n}).call(HtmlCompletions.prototype);\nexports.HtmlCompletions = HtmlCompletions;\n\n});\n\nace.define(\"ace/mode/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text\",\"ace/mode/javascript\",\"ace/mode/css\",\"ace/mode/html_highlight_rules\",\"ace/mode/behaviour/xml\",\"ace/mode/folding/html\",\"ace/mode/html_completions\",\"ace/worker/worker_client\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar TextMode = require(\"./text\").Mode;\nvar JavaScriptMode = require(\"./javascript\").Mode;\nvar CssMode = require(\"./css\").Mode;\nvar HtmlHighlightRules = require(\"./html_highlight_rules\").HtmlHighlightRules;\nvar XmlBehaviour = require(\"./behaviour/xml\").XmlBehaviour;\nvar HtmlFoldMode = require(\"./folding/html\").FoldMode;\nvar HtmlCompletions = require(\"./html_completions\").HtmlCompletions;\nvar WorkerClient = require(\"../worker/worker_client\").WorkerClient;\nvar voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\nvar optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\nvar Mode = function (options) {\n    this.fragmentContext = options && options.fragmentContext;\n    this.HighlightRules = HtmlHighlightRules;\n    this.$behaviour = new XmlBehaviour();\n    this.$completer = new HtmlCompletions();\n    this.createModeDelegates({\n        \"js-\": JavaScriptMode,\n        \"css-\": CssMode\n    });\n    this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n};\noop.inherits(Mode, TextMode);\n(function () {\n    this.blockComment = { start: \"<!--\", end: \"-->\" };\n    this.voidElements = lang.arrayToMap(voidElements);\n    this.getNextLineIndent = function (state, line, tab) {\n        return this.$getIndent(line);\n    };\n    this.checkOutdent = function (state, line, input) {\n        return false;\n    };\n    this.getCompletions = function (state, session, pos, prefix) {\n        return this.$completer.getCompletions(state, session, pos, prefix);\n    };\n    this.createWorker = function (session) {\n        if (this.constructor != Mode)\n            return;\n        var worker = new WorkerClient([\"ace\"], \"ace/mode/html_worker\", \"Worker\");\n        worker.attachToDocument(session.getDocument());\n        if (this.fragmentContext)\n            worker.call(\"setOptions\", [{ context: this.fragmentContext }]);\n        worker.on(\"error\", function (e) {\n            session.setAnnotations(e.data);\n        });\n        worker.on(\"terminate\", function () {\n            session.clearAnnotations();\n        });\n        return worker;\n    };\n    this.$id = \"ace/mode/html\";\n    this.snippetFileId = \"ace/snippets/html\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});\n\nace.define(\"ace/mode/handlebars_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html_highlight_rules\"], function(require, exports, module){/* global define */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar HtmlHighlightRules = require(\"./html_highlight_rules\").HtmlHighlightRules;\nfunction pop2(currentState, stack) {\n    stack.splice(0, 3);\n    return stack.shift() || \"start\";\n}\nvar HandlebarsHighlightRules = function () {\n    HtmlHighlightRules.call(this);\n    var hbs = {\n        regex: \"(?={{)\",\n        push: \"handlebars\"\n    };\n    for (var key in this.$rules) {\n        this.$rules[key].unshift(hbs);\n    }\n    this.$rules.handlebars = [{\n            token: \"comment.start\",\n            regex: \"{{!--\",\n            push: [{\n                    token: \"comment.end\",\n                    regex: \"--}}\",\n                    next: pop2\n                }, {\n                    defaultToken: \"comment\"\n                }]\n        }, {\n            token: \"comment.start\",\n            regex: \"{{!\",\n            push: [{\n                    token: \"comment.end\",\n                    regex: \"}}\",\n                    next: pop2\n                }, {\n                    defaultToken: \"comment\"\n                }]\n        }, {\n            token: \"support.function\",\n            regex: \"{{{\",\n            push: [{\n                    token: \"support.function\",\n                    regex: \"}}}\",\n                    next: pop2\n                }, {\n                    token: \"variable.parameter\",\n                    regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\"\n                }]\n        }, {\n            token: \"storage.type.start\",\n            regex: \"{{[#\\\\^/&]?\",\n            push: [{\n                    token: \"storage.type.end\",\n                    regex: \"}}\",\n                    next: pop2\n                }, {\n                    token: \"variable.parameter\",\n                    regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\"\n                }]\n        }];\n    this.normalizeRules();\n};\noop.inherits(HandlebarsHighlightRules, HtmlHighlightRules);\nexports.HandlebarsHighlightRules = HandlebarsHighlightRules;\n\n});\n\nace.define(\"ace/mode/behaviour/html\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour/xml\"], function(require, exports, module){\"use strict\";\nvar oop = require(\"../../lib/oop\");\nvar XmlBehaviour = require(\"../behaviour/xml\").XmlBehaviour;\nvar HtmlBehaviour = function () {\n    XmlBehaviour.call(this);\n};\noop.inherits(HtmlBehaviour, XmlBehaviour);\nexports.HtmlBehaviour = HtmlBehaviour;\n\n});\n\nace.define(\"ace/mode/handlebars\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/html\",\"ace/mode/handlebars_highlight_rules\",\"ace/mode/behaviour/html\",\"ace/mode/folding/html\"], function(require, exports, module){/* global define */\n\"use strict\";\nvar oop = require(\"../lib/oop\");\nvar HtmlMode = require(\"./html\").Mode;\nvar HandlebarsHighlightRules = require(\"./handlebars_highlight_rules\").HandlebarsHighlightRules;\nvar HtmlBehaviour = require(\"./behaviour/html\").HtmlBehaviour;\nvar HtmlFoldMode = require(\"./folding/html\").FoldMode;\nvar Mode = function () {\n    HtmlMode.call(this);\n    this.HighlightRules = HandlebarsHighlightRules;\n    this.$behaviour = new HtmlBehaviour();\n};\noop.inherits(Mode, HtmlMode);\n(function () {\n    this.blockComment = { start: \"{{!--\", end: \"--}}\" };\n    this.$id = \"ace/mode/handlebars\";\n}).call(Mode.prototype);\nexports.Mode = Mode;\n\n});                (function() {\n                    ace.require([\"ace/mode/handlebars\"], function(m) {\n                        if ( true && module) {\n                            module.exports = m;\n                        }\n                    });\n                })();\n            \n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))\n\n/***/ }),\n/* 1634 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// NAMESPACE OBJECT: ./src/canvas/constants/defaults.ts\nvar defaults_namespaceObject = {};\n__webpack_require__.r(defaults_namespaceObject);\n__webpack_require__.d(defaults_namespaceObject, \"canvasOption\", function() { return defaults_canvasOption; });\n__webpack_require__.d(defaults_namespaceObject, \"keyEvent\", function() { return keyEvent; });\n__webpack_require__.d(defaults_namespaceObject, \"gridOption\", function() { return gridOption; });\n__webpack_require__.d(defaults_namespaceObject, \"workareaOption\", function() { return defaults_workareaOption; });\n__webpack_require__.d(defaults_namespaceObject, \"objectOption\", function() { return defaults_objectOption; });\n__webpack_require__.d(defaults_namespaceObject, \"guidelineOption\", function() { return guidelineOption; });\n__webpack_require__.d(defaults_namespaceObject, \"activeSelectionOption\", function() { return activeSelectionOption; });\n__webpack_require__.d(defaults_namespaceObject, \"propertiesToInclude\", function() { return defaults_propertiesToInclude; });\n\n// NAMESPACE OBJECT: ./src/canvas/constants/code.ts\nvar code_namespaceObject = {};\n__webpack_require__.r(code_namespaceObject);\n__webpack_require__.d(code_namespaceObject, \"ESCAPE\", function() { return ESCAPE; });\n__webpack_require__.d(code_namespaceObject, \"DELETE\", function() { return DELETE; });\n__webpack_require__.d(code_namespaceObject, \"BACKSPACE\", function() { return BACKSPACE; });\n__webpack_require__.d(code_namespaceObject, \"EQUAL\", function() { return EQUAL; });\n__webpack_require__.d(code_namespaceObject, \"MINUS\", function() { return MINUS; });\n__webpack_require__.d(code_namespaceObject, \"KEY_A\", function() { return KEY_A; });\n__webpack_require__.d(code_namespaceObject, \"KEY_Q\", function() { return KEY_Q; });\n__webpack_require__.d(code_namespaceObject, \"KEY_W\", function() { return KEY_W; });\n__webpack_require__.d(code_namespaceObject, \"KEY_C\", function() { return KEY_C; });\n__webpack_require__.d(code_namespaceObject, \"KEY_V\", function() { return KEY_V; });\n__webpack_require__.d(code_namespaceObject, \"KEY_Z\", function() { return KEY_Z; });\n__webpack_require__.d(code_namespaceObject, \"KEY_Y\", function() { return KEY_Y; });\n__webpack_require__.d(code_namespaceObject, \"KEY_O\", function() { return KEY_O; });\n__webpack_require__.d(code_namespaceObject, \"KEY_P\", function() { return KEY_P; });\n__webpack_require__.d(code_namespaceObject, \"KEY_X\", function() { return KEY_X; });\n__webpack_require__.d(code_namespaceObject, \"ARROW_UP\", function() { return ARROW_UP; });\n__webpack_require__.d(code_namespaceObject, \"ARROW_DOWN\", function() { return ARROW_DOWN; });\n__webpack_require__.d(code_namespaceObject, \"ARROW_LEFT\", function() { return ARROW_LEFT; });\n__webpack_require__.d(code_namespaceObject, \"ARROW_RIGHT\", function() { return ARROW_RIGHT; });\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.reflect.construct.js\nvar es_reflect_construct = __webpack_require__(34);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/typeof.js\nvar helpers_typeof = __webpack_require__(347);\nvar typeof_default = /*#__PURE__*/__webpack_require__.n(helpers_typeof);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/classCallCheck.js\nvar classCallCheck = __webpack_require__(7);\nvar classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/createClass.js\nvar createClass = __webpack_require__(8);\nvar createClass_default = /*#__PURE__*/__webpack_require__.n(createClass);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/inherits.js\nvar inherits = __webpack_require__(17);\nvar inherits_default = /*#__PURE__*/__webpack_require__.n(inherits);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\nvar possibleConstructorReturn = __webpack_require__(18);\nvar possibleConstructorReturn_default = /*#__PURE__*/__webpack_require__.n(possibleConstructorReturn);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/getPrototypeOf.js\nvar getPrototypeOf = __webpack_require__(9);\nvar getPrototypeOf_default = /*#__PURE__*/__webpack_require__.n(getPrototypeOf);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __webpack_require__(33);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.for-each.js\nvar es_array_for_each = __webpack_require__(51);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __webpack_require__(24);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js\nvar web_dom_collections_for_each = __webpack_require__(52);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.keys.js\nvar es_object_keys = __webpack_require__(55);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.assign.js\nvar es_object_assign = __webpack_require__(88);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.link.js\nvar es_string_link = __webpack_require__(310);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.parse-int.js\nvar es_parse_int = __webpack_require__(205);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.from-code-point.js\nvar es_string_from_code_point = __webpack_require__(515);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __webpack_require__(87);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __webpack_require__(96);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __webpack_require__(54);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.timers.js\nvar web_timers = __webpack_require__(208);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.reduce.js\nvar es_array_reduce = __webpack_require__(150);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.values.js\nvar es_object_values = __webpack_require__(381);\n\n// EXTERNAL MODULE: external \"react\"\nvar external_react_ = __webpack_require__(0);\nvar external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);\n\n// EXTERNAL MODULE: ./node_modules/prop-types/index.js\nvar prop_types = __webpack_require__(1);\nvar prop_types_default = /*#__PURE__*/__webpack_require__.n(prop_types);\n\n// EXTERNAL MODULE: ./node_modules/antd/node_modules/classnames/index.js\nvar classnames = __webpack_require__(6);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// EXTERNAL MODULE: ./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js\nvar react_lifecycles_compat_es = __webpack_require__(27);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/extends.js\nvar helpers_extends = __webpack_require__(4);\nvar extends_default = /*#__PURE__*/__webpack_require__.n(helpers_extends);\n\n// CONCATENATED MODULE: ./node_modules/omit.js/es/index.js\n\nfunction omit(obj, fields) {\n  var shallowCopy = extends_default()({}, obj);\n  for (var i = 0; i < fields.length; i++) {\n    var key = fields[i];\n    delete shallowCopy[key];\n  }\n  return shallowCopy;\n}\n\n/* harmony default export */ var es = (omit);\n// EXTERNAL MODULE: ./node_modules/@ant-design/icons/lib/dist.js\nvar dist = __webpack_require__(462);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/defineProperty.js\nvar defineProperty = __webpack_require__(15);\nvar defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/objectWithoutProperties.js\nvar objectWithoutProperties = __webpack_require__(40);\nvar objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/classCallCheck.js\nvar helpers_classCallCheck = __webpack_require__(11);\nvar helpers_classCallCheck_default = /*#__PURE__*/__webpack_require__.n(helpers_classCallCheck);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/createClass.js\nvar helpers_createClass = __webpack_require__(22);\nvar helpers_createClass_default = /*#__PURE__*/__webpack_require__.n(helpers_createClass);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\nvar helpers_possibleConstructorReturn = __webpack_require__(10);\nvar helpers_possibleConstructorReturn_default = /*#__PURE__*/__webpack_require__.n(helpers_possibleConstructorReturn);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/inherits.js\nvar helpers_inherits = __webpack_require__(12);\nvar helpers_inherits_default = /*#__PURE__*/__webpack_require__.n(helpers_inherits);\n\n// EXTERNAL MODULE: ./node_modules/@ant-design/icons-react/es/utils.js\nvar utils = __webpack_require__(167);\n\n// CONCATENATED MODULE: ./node_modules/@ant-design/icons-react/es/components/Icon.js\n\n\n\n\n\n\n\n\n\nvar twoToneColorPalette = {\n    primaryColor: '#333',\n    secondaryColor: '#E6E6E6'\n};\n\nvar Icon_Icon = function (_React$Component) {\n    helpers_inherits_default()(Icon, _React$Component);\n\n    function Icon() {\n        helpers_classCallCheck_default()(this, Icon);\n\n        return helpers_possibleConstructorReturn_default()(this, (Icon.__proto__ || Object.getPrototypeOf(Icon)).apply(this, arguments));\n    }\n\n    helpers_createClass_default()(Icon, [{\n        key: 'render',\n        value: function render() {\n            var _extends2;\n\n            var _props = this.props,\n                type = _props.type,\n                className = _props.className,\n                onClick = _props.onClick,\n                style = _props.style,\n                primaryColor = _props.primaryColor,\n                secondaryColor = _props.secondaryColor,\n                rest = objectWithoutProperties_default()(_props, ['type', 'className', 'onClick', 'style', 'primaryColor', 'secondaryColor']);\n\n            var target = void 0;\n            var colors = twoToneColorPalette;\n            if (primaryColor) {\n                colors = {\n                    primaryColor: primaryColor,\n                    secondaryColor: secondaryColor || Object(utils[\"c\" /* getSecondaryColor */])(primaryColor)\n                };\n            }\n            if (Object(utils[\"d\" /* isIconDefinition */])(type)) {\n                target = type;\n            } else if (typeof type === 'string') {\n                target = Icon.get(type, colors);\n                if (!target) {\n                    // log(`Could not find icon: ${type}`);\n                    return null;\n                }\n            }\n            if (!target) {\n                Object(utils[\"e\" /* log */])('type should be string or icon definiton, but got ' + type);\n                return null;\n            }\n            if (target && typeof target.icon === 'function') {\n                target = extends_default()({}, target, {\n                    icon: target.icon(colors.primaryColor, colors.secondaryColor)\n                });\n            }\n            return Object(utils[\"b\" /* generate */])(target.icon, 'svg-' + target.name, extends_default()((_extends2 = {\n                className: className,\n                onClick: onClick,\n                style: style\n            }, defineProperty_default()(_extends2, 'data-icon', target.name), defineProperty_default()(_extends2, 'width', '1em'), defineProperty_default()(_extends2, 'height', '1em'), defineProperty_default()(_extends2, 'fill', 'currentColor'), defineProperty_default()(_extends2, 'aria-hidden', 'true'), defineProperty_default()(_extends2, 'focusable', 'false'), _extends2), rest));\n        }\n    }], [{\n        key: 'add',\n        value: function add() {\n            var _this2 = this;\n\n            for (var _len = arguments.length, icons = Array(_len), _key = 0; _key < _len; _key++) {\n                icons[_key] = arguments[_key];\n            }\n\n            icons.forEach(function (icon) {\n                _this2.definitions.set(Object(utils[\"f\" /* withSuffix */])(icon.name, icon.theme), icon);\n            });\n        }\n    }, {\n        key: 'clear',\n        value: function clear() {\n            this.definitions.clear();\n        }\n    }, {\n        key: 'get',\n        value: function get(key) {\n            var colors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : twoToneColorPalette;\n\n            if (key) {\n                var target = this.definitions.get(key);\n                if (target && typeof target.icon === 'function') {\n                    target = extends_default()({}, target, {\n                        icon: target.icon(colors.primaryColor, colors.secondaryColor)\n                    });\n                }\n                return target;\n            }\n        }\n    }, {\n        key: 'setTwoToneColors',\n        value: function setTwoToneColors(_ref) {\n            var primaryColor = _ref.primaryColor,\n                secondaryColor = _ref.secondaryColor;\n\n            twoToneColorPalette.primaryColor = primaryColor;\n            twoToneColorPalette.secondaryColor = secondaryColor || Object(utils[\"c\" /* getSecondaryColor */])(primaryColor);\n        }\n    }, {\n        key: 'getTwoToneColors',\n        value: function getTwoToneColors() {\n            return extends_default()({}, twoToneColorPalette);\n        }\n    }]);\n\n    return Icon;\n}(external_react_[\"Component\"]);\n\nIcon_Icon.displayName = 'IconReact';\nIcon_Icon.definitions = new utils[\"a\" /* MiniMap */]();\n/* harmony default export */ var components_Icon = (Icon_Icon);\n// CONCATENATED MODULE: ./node_modules/antd/es/icon/IconFont.js\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\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\nvar customCache = new Set();\nfunction IconFont_create() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var scriptUrl = options.scriptUrl,\n      _options$extraCommonP = options.extraCommonProps,\n      extraCommonProps = _options$extraCommonP === void 0 ? {} : _options$extraCommonP;\n  /**\n   * DOM API required.\n   * Make sure in browser environment.\n   * The Custom Icon will create a <script/>\n   * that loads SVG symbols and insert the SVG Element into the document body.\n   */\n\n  if (typeof document !== 'undefined' && typeof window !== 'undefined' && typeof document.createElement === 'function' && typeof scriptUrl === 'string' && scriptUrl.length && !customCache.has(scriptUrl)) {\n    var script = document.createElement('script');\n    script.setAttribute('src', scriptUrl);\n    script.setAttribute('data-namespace', scriptUrl);\n    customCache.add(scriptUrl);\n    document.body.appendChild(script);\n  }\n\n  var Iconfont = function Iconfont(props) {\n    var type = props.type,\n        children = props.children,\n        restProps = __rest(props, [\"type\", \"children\"]); // component > children > type\n\n\n    var content = null;\n\n    if (props.type) {\n      content = external_react_[\"createElement\"](\"use\", {\n        xlinkHref: \"#\".concat(type)\n      });\n    }\n\n    if (children) {\n      content = children;\n    }\n\n    return external_react_[\"createElement\"](es_icon, _extends({}, restProps, extraCommonProps), content);\n  };\n\n  Iconfont.displayName = 'Iconfont';\n  return Iconfont;\n}\n// EXTERNAL MODULE: ./node_modules/warning/warning.js\nvar warning = __webpack_require__(46);\nvar warning_default = /*#__PURE__*/__webpack_require__.n(warning);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/_util/warning.js\n\nvar warned = {};\n/* harmony default export */ var _util_warning = (function (valid, component, message) {\n  if (!valid && !warned[message]) {\n    warning_default()(false, \"[antd: \".concat(component, \"] \").concat(message));\n    warned[message] = true;\n  }\n});\n// CONCATENATED MODULE: ./node_modules/antd/es/icon/utils.js\nvar _svgBaseProps;\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 // These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n\nvar svgBaseProps = (_svgBaseProps = {\n  width: '1em',\n  height: '1em',\n  fill: 'currentColor'\n}, _defineProperty(_svgBaseProps, 'aria-hidden', 'true'), _defineProperty(_svgBaseProps, \"focusable\", 'false'), _svgBaseProps);\nvar fillTester = /-fill$/;\nvar outlineTester = /-o$/;\nvar twoToneTester = /-twotone$/;\nfunction getThemeFromTypeName(type) {\n  var result = null;\n\n  if (fillTester.test(type)) {\n    result = 'filled';\n  } else if (outlineTester.test(type)) {\n    result = 'outlined';\n  } else if (twoToneTester.test(type)) {\n    result = 'twoTone';\n  }\n\n  return result;\n}\nfunction removeTypeTheme(type) {\n  return type.replace(fillTester, '').replace(outlineTester, '').replace(twoToneTester, '');\n}\nfunction withThemeSuffix(type, theme) {\n  var result = type;\n\n  if (theme === 'filled') {\n    result += '-fill';\n  } else if (theme === 'outlined') {\n    result += '-o';\n  } else if (theme === 'twoTone') {\n    result += '-twotone';\n  } else {\n    _util_warning(false, 'Icon', \"This icon '\".concat(type, \"' has unknown theme '\").concat(theme, \"'\"));\n  }\n\n  return result;\n} // For alias or compatibility\n\nfunction alias(type) {\n  switch (type) {\n    case 'cross':\n      return 'close';\n\n    default:\n  }\n\n  return type;\n}\n// CONCATENATED MODULE: ./node_modules/rc-pagination/es/locale/en_US.js\n/* harmony default export */ var en_US = ({\n  // Options.jsx\n  items_per_page: '/ page',\n  jump_to: 'Goto',\n  jump_to_confirm: 'confirm',\n  page: '',\n\n  // Pagination.jsx\n  prev_page: 'Previous Page',\n  next_page: 'Next Page',\n  prev_5: 'Previous 5 Pages',\n  next_5: 'Next 5 Pages',\n  prev_3: 'Previous 3 Pages',\n  next_3: 'Next 3 Pages'\n});\n// EXTERNAL MODULE: ./node_modules/rc-calendar/es/locale/en_US.js\nvar locale_en_US = __webpack_require__(677);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/time-picker/locale/en_US.js\nvar en_US_locale = {\n  placeholder: 'Select time'\n};\n/* harmony default export */ var time_picker_locale_en_US = (en_US_locale);\n// CONCATENATED MODULE: ./node_modules/antd/es/date-picker/locale/en_US.js\nfunction en_US_extends() { en_US_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 en_US_extends.apply(this, arguments); }\n\n\n // Merge into a locale object\n\nvar locale_en_US_locale = {\n  lang: en_US_extends({\n    placeholder: 'Select date',\n    rangePlaceholder: ['Start date', 'End date']\n  }, locale_en_US[\"a\" /* default */]),\n  timePickerLocale: en_US_extends({}, time_picker_locale_en_US)\n}; // All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\n\n/* harmony default export */ var date_picker_locale_en_US = (locale_en_US_locale);\n// CONCATENATED MODULE: ./node_modules/antd/es/calendar/locale/en_US.js\n\n/* harmony default export */ var calendar_locale_en_US = (date_picker_locale_en_US);\n// CONCATENATED MODULE: ./node_modules/antd/es/locale-provider/default.js\n\n\n\n\n/* harmony default export */ var locale_provider_default = ({\n  locale: 'en',\n  Pagination: en_US,\n  DatePicker: date_picker_locale_en_US,\n  TimePicker: time_picker_locale_en_US,\n  Calendar: calendar_locale_en_US,\n  global: {\n    placeholder: 'Please select'\n  },\n  Table: {\n    filterTitle: 'Filter menu',\n    filterConfirm: 'OK',\n    filterReset: 'Reset',\n    selectAll: 'Select current page',\n    selectInvert: 'Invert current page',\n    sortTitle: 'Sort'\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Cancel',\n    justOkText: 'OK'\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Cancel'\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Search here',\n    itemUnit: 'item',\n    itemsUnit: 'items'\n  },\n  Upload: {\n    uploading: 'Uploading...',\n    removeFile: 'Remove file',\n    uploadError: 'Upload error',\n    previewFile: 'Preview file'\n  },\n  Empty: {\n    description: 'No Data'\n  },\n  Icon: {\n    icon: 'icon'\n  },\n  Text: {\n    edit: 'edit',\n    copy: 'copy',\n    copied: 'copy success',\n    expand: 'expand'\n  }\n});\n// CONCATENATED MODULE: ./node_modules/antd/es/locale-provider/LocaleReceiver.js\nfunction _typeof(obj) { 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 LocaleReceiver_extends() { LocaleReceiver_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 LocaleReceiver_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 _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 _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\n\n\n\n\nvar LocaleReceiver_LocaleReceiver =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inherits(LocaleReceiver, _React$Component);\n\n  function LocaleReceiver() {\n    _classCallCheck(this, LocaleReceiver);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(LocaleReceiver).apply(this, arguments));\n  }\n\n  _createClass(LocaleReceiver, [{\n    key: \"getLocale\",\n    value: function getLocale() {\n      var _this$props = this.props,\n          componentName = _this$props.componentName,\n          defaultLocale = _this$props.defaultLocale;\n      var locale = defaultLocale || locale_provider_default[componentName || 'global'];\n      var antLocale = this.context.antLocale;\n      var localeFromContext = componentName && antLocale ? antLocale[componentName] : {};\n      return LocaleReceiver_extends({}, typeof locale === 'function' ? locale() : locale, localeFromContext || {});\n    }\n  }, {\n    key: \"getLocaleCode\",\n    value: function getLocaleCode() {\n      var antLocale = this.context.antLocale;\n      var localeCode = antLocale && antLocale.locale; // Had use LocaleProvide but didn't set locale\n\n      if (antLocale && antLocale.exist && !localeCode) {\n        return locale_provider_default.locale;\n      }\n\n      return localeCode;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return this.props.children(this.getLocale(), this.getLocaleCode());\n    }\n  }]);\n\n  return LocaleReceiver;\n}(external_react_[\"Component\"]);\n\n\nLocaleReceiver_LocaleReceiver.defaultProps = {\n  componentName: 'global'\n};\nLocaleReceiver_LocaleReceiver.contextTypes = {\n  antLocale: prop_types[\"object\"]\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/icon/twoTonePrimaryColor.js\n\nfunction setTwoToneColor(primaryColor) {\n  return components_Icon.setTwoToneColors({\n    primaryColor: primaryColor\n  });\n}\nfunction getTwoToneColor() {\n  var colors = components_Icon.getTwoToneColors();\n  return colors.primaryColor;\n}\n// CONCATENATED MODULE: ./node_modules/antd/es/icon/index.js\nfunction icon_extends() { icon_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 icon_extends.apply(this, arguments); }\n\nfunction icon_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\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar icon_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n // Initial setting\n\ncomponents_Icon.add.apply(components_Icon, _toConsumableArray(Object.keys(dist).map(function (key) {\n  return dist[key];\n})));\nsetTwoToneColor('#1890ff');\nvar defaultTheme = 'outlined';\nvar dangerousTheme = undefined;\n\nvar icon_Icon = function Icon(props) {\n  var _classNames;\n\n  var className = props.className,\n      type = props.type,\n      Component = props.component,\n      viewBox = props.viewBox,\n      spin = props.spin,\n      rotate = props.rotate,\n      tabIndex = props.tabIndex,\n      onClick = props.onClick,\n      children = props.children,\n      theme = props.theme,\n      twoToneColor = props.twoToneColor,\n      restProps = icon_rest(props, [\"className\", \"type\", \"component\", \"viewBox\", \"spin\", \"rotate\", \"tabIndex\", \"onClick\", \"children\", \"theme\", \"twoToneColor\"]);\n\n  _util_warning(Boolean(type || Component || children), 'Icon', 'Should have `type` prop or `component` prop or `children`.');\n  var classString = classnames_default()((_classNames = {}, icon_defineProperty(_classNames, \"anticon\", true), icon_defineProperty(_classNames, \"anticon-\".concat(type), Boolean(type)), _classNames), className);\n  var svgClassString = classnames_default()(icon_defineProperty({}, \"anticon-spin\", !!spin || type === 'loading'));\n  var innerNode;\n  var svgStyle = rotate ? {\n    msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n    transform: \"rotate(\".concat(rotate, \"deg)\")\n  } : undefined;\n\n  var innerSvgProps = icon_extends({}, svgBaseProps, {\n    className: svgClassString,\n    style: svgStyle,\n    viewBox: viewBox\n  });\n\n  if (!viewBox) {\n    delete innerSvgProps.viewBox;\n  } // component > children > type\n\n\n  if (Component) {\n    innerNode = external_react_[\"createElement\"](Component, innerSvgProps, children);\n  }\n\n  if (children) {\n    _util_warning(Boolean(viewBox) || external_react_[\"Children\"].count(children) === 1 && external_react_[\"isValidElement\"](children) && external_react_[\"Children\"].only(children).type === 'use', 'Icon', 'Make sure that you provide correct `viewBox`' + ' prop (default `0 0 1024 1024`) to the icon.');\n    innerNode = external_react_[\"createElement\"](\"svg\", icon_extends({}, innerSvgProps, {\n      viewBox: viewBox\n    }), children);\n  }\n\n  if (typeof type === 'string') {\n    var computedType = type;\n\n    if (theme) {\n      var themeInName = getThemeFromTypeName(type);\n      _util_warning(!themeInName || theme === themeInName, 'Icon', \"The icon name '\".concat(type, \"' already specify a theme '\").concat(themeInName, \"',\") + \" the 'theme' prop '\".concat(theme, \"' will be ignored.\"));\n    }\n\n    computedType = withThemeSuffix(removeTypeTheme(alias(computedType)), dangerousTheme || theme || defaultTheme);\n    innerNode = external_react_[\"createElement\"](components_Icon, {\n      className: svgClassString,\n      type: computedType,\n      primaryColor: twoToneColor,\n      style: svgStyle\n    });\n  }\n\n  var iconTabIndex = tabIndex;\n\n  if (iconTabIndex === undefined && onClick) {\n    iconTabIndex = -1;\n  }\n\n  return external_react_[\"createElement\"](LocaleReceiver_LocaleReceiver, {\n    componentName: \"Icon\"\n  }, function (locale) {\n    return external_react_[\"createElement\"](\"i\", icon_extends({\n      \"aria-label\": type && \"\".concat(locale.icon, \": \").concat(type)\n    }, restProps, {\n      tabIndex: iconTabIndex,\n      onClick: onClick,\n      className: classString\n    }), innerNode);\n  });\n};\n\nfunction unstable_ChangeThemeOfIconsDangerously(theme) {\n  _util_warning(false, 'Icon', \"You are using the unstable method 'Icon.unstable_ChangeThemeOfAllIconsDangerously', \" + \"make sure that all the icons with theme '\".concat(theme, \"' display correctly.\"));\n  dangerousTheme = theme;\n}\n\nfunction unstable_ChangeDefaultThemeOfIcons(theme) {\n  _util_warning(false, 'Icon', \"You are using the unstable method 'Icon.unstable_ChangeDefaultThemeOfIcons', \" + \"make sure that all the icons with theme '\".concat(theme, \"' display correctly.\"));\n  defaultTheme = theme;\n}\n\nicon_Icon.createFromIconfontCN = IconFont_create;\nicon_Icon.getTwoToneColor = getTwoToneColor;\nicon_Icon.setTwoToneColor = setTwoToneColor;\n/* harmony default export */ var es_icon = (icon_Icon);\n// EXTERNAL MODULE: ./node_modules/create-react-context/lib/index.js\nvar lib = __webpack_require__(225);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/empty/index.js\nfunction empty_extends() { empty_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 empty_extends.apply(this, arguments); }\n\nvar empty_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n/* babel-plugin-inline-import './empty.svg' */\nvar emptyImg = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTg0IiBoZWlnaHQ9IjE1MiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjQgMzEuNjcpIj4KICAgICAgPGVsbGlwc2UgZmlsbC1vcGFjaXR5PSIuOCIgZmlsbD0iI0Y1RjVGNyIgY3g9IjY3Ljc5NyIgY3k9IjEwNi44OSIgcng9IjY3Ljc5NyIgcnk9IjEyLjY2OCIvPgogICAgICA8cGF0aCBkPSJNMTIyLjAzNCA2OS42NzRMOTguMTA5IDQwLjIyOWMtMS4xNDgtMS4zODYtMi44MjYtMi4yMjUtNC41OTMtMi4yMjVoLTUxLjQ0Yy0xLjc2NiAwLTMuNDQ0LjgzOS00LjU5MiAyLjIyNUwxMy41NiA2OS42NzR2MTUuMzgzaDEwOC40NzVWNjkuNjc0eiIgZmlsbD0iI0FFQjhDMiIvPgogICAgICA8cGF0aCBkPSJNMTAxLjUzNyA4Ni4yMTRMODAuNjMgNjEuMTAyYy0xLjAwMS0xLjIwNy0yLjUwNy0xLjg2Ny00LjA0OC0xLjg2N0gzMS43MjRjLTEuNTQgMC0zLjA0Ny42Ni00LjA0OCAxLjg2N0w2Ljc2OSA4Ni4yMTR2MTMuNzkyaDk0Ljc2OFY4Ni4yMTR6IiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTEpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMy41NikiLz4KICAgICAgPHBhdGggZD0iTTMzLjgzIDBoNjcuOTMzYTQgNCAwIDAgMSA0IDR2OTMuMzQ0YTQgNCAwIDAgMS00IDRIMzMuODNhNCA0IDAgMCAxLTQtNFY0YTQgNCAwIDAgMSA0LTR6IiBmaWxsPSIjRjVGNUY3Ii8+CiAgICAgIDxwYXRoIGQ9Ik00Mi42NzggOS45NTNoNTAuMjM3YTIgMiAwIDAgMSAyIDJWMzYuOTFhMiAyIDAgMCAxLTIgMkg0Mi42NzhhMiAyIDAgMCAxLTItMlYxMS45NTNhMiAyIDAgMCAxIDItMnpNNDIuOTQgNDkuNzY3aDQ5LjcxM2EyLjI2MiAyLjI2MiAwIDEgMSAwIDQuNTI0SDQyLjk0YTIuMjYyIDIuMjYyIDAgMCAxIDAtNC41MjR6TTQyLjk0IDYxLjUzaDQ5LjcxM2EyLjI2MiAyLjI2MiAwIDEgMSAwIDQuNTI1SDQyLjk0YTIuMjYyIDIuMjYyIDAgMCAxIDAtNC41MjV6TTEyMS44MTMgMTA1LjAzMmMtLjc3NSAzLjA3MS0zLjQ5NyA1LjM2LTYuNzM1IDUuMzZIMjAuNTE1Yy0zLjIzOCAwLTUuOTYtMi4yOS02LjczNC01LjM2YTcuMzA5IDcuMzA5IDAgMCAxLS4yMjItMS43OVY2OS42NzVoMjYuMzE4YzIuOTA3IDAgNS4yNSAyLjQ0OCA1LjI1IDUuNDJ2LjA0YzAgMi45NzEgMi4zNyA1LjM3IDUuMjc3IDUuMzdoMzQuNzg1YzIuOTA3IDAgNS4yNzctMi40MjEgNS4yNzctNS4zOTNWNzUuMWMwLTIuOTcyIDIuMzQzLTUuNDI2IDUuMjUtNS40MjZoMjYuMzE4djMzLjU2OWMwIC42MTctLjA3NyAxLjIxNi0uMjIxIDEuNzg5eiIgZmlsbD0iI0RDRTBFNiIvPgogICAgPC9nPgogICAgPHBhdGggZD0iTTE0OS4xMjEgMzMuMjkybC02LjgzIDIuNjVhMSAxIDAgMCAxLTEuMzE3LTEuMjNsMS45MzctNi4yMDdjLTIuNTg5LTIuOTQ0LTQuMTA5LTYuNTM0LTQuMTA5LTEwLjQwOEMxMzguODAyIDguMTAyIDE0OC45MiAwIDE2MS40MDIgMCAxNzMuODgxIDAgMTg0IDguMTAyIDE4NCAxOC4wOTdjMCA5Ljk5NS0xMC4xMTggMTguMDk3LTIyLjU5OSAxOC4wOTctNC41MjggMC04Ljc0NC0xLjA2Ni0xMi4yOC0yLjkwMnoiIGZpbGw9IiNEQ0UwRTYiLz4KICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0OS42NSAxNS4zODMpIiBmaWxsPSIjRkZGIj4KICAgICAgPGVsbGlwc2UgY3g9IjIwLjY1NCIgY3k9IjMuMTY3IiByeD0iMi44NDkiIHJ5PSIyLjgxNSIvPgogICAgICA8cGF0aCBkPSJNNS42OTggNS42M0gwTDIuODk4LjcwNHpNOS4yNTkuNzA0aDQuOTg1VjUuNjNIOS4yNTl6Ii8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K\";\n\nvar empty_Empty = function Empty(props) {\n  return external_react_[\"createElement\"](ConfigConsumer, null, function (_ref) {\n    var getPrefixCls = _ref.getPrefixCls;\n\n    var className = props.className,\n        customizePrefixCls = props.prefixCls,\n        image = props.image,\n        description = props.description,\n        children = props.children,\n        restProps = empty_rest(props, [\"className\", \"prefixCls\", \"image\", \"description\", \"children\"]);\n\n    var prefixCls = getPrefixCls('empty', customizePrefixCls);\n    return external_react_[\"createElement\"](LocaleReceiver_LocaleReceiver, {\n      componentName: \"Empty\"\n    }, function (locale) {\n      var des = description || locale.description;\n      var alt = typeof des === 'string' ? des : 'empty';\n      var imageNode = null;\n\n      if (!image) {\n        imageNode = external_react_[\"createElement\"](\"img\", {\n          alt: alt,\n          src: emptyImg\n        });\n      } else if (typeof image === 'string') {\n        imageNode = external_react_[\"createElement\"](\"img\", {\n          alt: alt,\n          src: image\n        });\n      } else {\n        imageNode = image;\n      }\n\n      return external_react_[\"createElement\"](\"div\", empty_extends({\n        className: classnames_default()(prefixCls, className)\n      }, restProps), external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-image\")\n      }, imageNode), external_react_[\"createElement\"](\"p\", {\n        className: \"\".concat(prefixCls, \"-description\")\n      }, des), children && external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-footer\")\n      }, children));\n    });\n  });\n};\n\n/* harmony default export */ var es_empty = (empty_Empty);\n// CONCATENATED MODULE: ./node_modules/antd/es/config-provider/renderEmpty.js\n\n\n\n\n/* babel-plugin-inline-import './empty.svg' */\nvar renderEmpty_emptyImg = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAxKSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgIDxlbGxpcHNlIGZpbGw9IiNGNUY1RjUiIGN4PSIzMiIgY3k9IjMzIiByeD0iMzIiIHJ5PSI3Ii8+CiAgICA8ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0iI0Q5RDlEOSI+CiAgICAgIDxwYXRoIGQ9Ik01NSAxMi43Nkw0NC44NTQgMS4yNThDNDQuMzY3LjQ3NCA0My42NTYgMCA0Mi45MDcgMEgyMS4wOTNjLS43NDkgMC0xLjQ2LjQ3NC0xLjk0NyAxLjI1N0w5IDEyLjc2MVYyMmg0NnYtOS4yNHoiLz4KICAgICAgPHBhdGggZD0iTTQxLjYxMyAxNS45MzFjMC0xLjYwNS45OTQtMi45MyAyLjIyNy0yLjkzMUg1NXYxOC4xMzdDNTUgMzMuMjYgNTMuNjggMzUgNTIuMDUgMzVoLTQwLjFDMTAuMzIgMzUgOSAzMy4yNTkgOSAzMS4xMzdWMTNoMTEuMTZjMS4yMzMgMCAyLjIyNyAxLjMyMyAyLjIyNyAyLjkyOHYuMDIyYzAgMS42MDUgMS4wMDUgMi45MDEgMi4yMzcgMi45MDFoMTQuNzUyYzEuMjMyIDAgMi4yMzctMS4zMDggMi4yMzctMi45MTN2LS4wMDd6IiBmaWxsPSIjRkFGQUZBIi8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K\";\n\nvar renderEmpty_renderEmpty = function renderEmpty(componentName) {\n  return external_react_[\"createElement\"](ConfigConsumer, null, function (_ref) {\n    var getPrefixCls = _ref.getPrefixCls;\n    var prefix = getPrefixCls('empty');\n\n    switch (componentName) {\n      case 'Table':\n      case 'List':\n        return external_react_[\"createElement\"](es_empty, {\n          image: renderEmpty_emptyImg,\n          className: \"\".concat(prefix, \"-normal\")\n        });\n\n      case 'Select':\n      case 'TreeSelect':\n      case 'Cascader':\n      case 'Transfer':\n        return external_react_[\"createElement\"](es_empty, {\n          image: renderEmpty_emptyImg,\n          className: \"\".concat(prefix, \"-small\")\n        });\n\n      default:\n        return external_react_[\"createElement\"](es_empty, null);\n    }\n  });\n};\n\n/* harmony default export */ var config_provider_renderEmpty = (renderEmpty_renderEmpty);\n// CONCATENATED MODULE: ./node_modules/antd/es/config-provider/index.js\nfunction config_provider_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { config_provider_typeof = function _typeof(obj) { return typeof obj; }; } else { config_provider_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return config_provider_typeof(obj); }\n\nfunction config_provider_extends() { config_provider_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 config_provider_extends.apply(this, arguments); }\n\nfunction config_provider_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction config_provider_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 config_provider_createClass(Constructor, protoProps, staticProps) { if (protoProps) config_provider_defineProperties(Constructor.prototype, protoProps); if (staticProps) config_provider_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction config_provider_possibleConstructorReturn(self, call) { if (call && (config_provider_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return config_provider_assertThisInitialized(self); }\n\nfunction config_provider_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction config_provider_getPrototypeOf(o) { config_provider_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return config_provider_getPrototypeOf(o); }\n\nfunction config_provider_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) config_provider_setPrototypeOf(subClass, superClass); }\n\nfunction config_provider_setPrototypeOf(o, p) { config_provider_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return config_provider_setPrototypeOf(o, p); }\n\n\n\n\nvar configConsumerProps = ['getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton'];\nvar ConfigContext = lib_default()({\n  // We provide a default function for Context without provider\n  getPrefixCls: function getPrefixCls(suffixCls, customizePrefixCls) {\n    if (customizePrefixCls) return customizePrefixCls;\n    return \"ant-\".concat(suffixCls);\n  },\n  renderEmpty: config_provider_renderEmpty\n});\nvar ConfigConsumer = ConfigContext.Consumer;\n\nvar config_provider_ConfigProvider =\n/*#__PURE__*/\nfunction (_React$Component) {\n  config_provider_inherits(ConfigProvider, _React$Component);\n\n  function ConfigProvider() {\n    var _this;\n\n    config_provider_classCallCheck(this, ConfigProvider);\n\n    _this = config_provider_possibleConstructorReturn(this, config_provider_getPrototypeOf(ConfigProvider).apply(this, arguments));\n\n    _this.getPrefixCls = function (suffixCls, customizePrefixCls) {\n      var _this$props$prefixCls = _this.props.prefixCls,\n          prefixCls = _this$props$prefixCls === void 0 ? 'ant' : _this$props$prefixCls;\n      if (customizePrefixCls) return customizePrefixCls;\n      return suffixCls ? \"\".concat(prefixCls, \"-\").concat(suffixCls) : prefixCls;\n    };\n\n    _this.renderProvider = function (context) {\n      var _this$props = _this.props,\n          children = _this$props.children,\n          getPopupContainer = _this$props.getPopupContainer,\n          renderEmpty = _this$props.renderEmpty,\n          csp = _this$props.csp,\n          autoInsertSpaceInButton = _this$props.autoInsertSpaceInButton;\n\n      var config = config_provider_extends({}, context, {\n        getPrefixCls: _this.getPrefixCls,\n        csp: csp,\n        autoInsertSpaceInButton: autoInsertSpaceInButton\n      });\n\n      if (getPopupContainer) {\n        config.getPopupContainer = getPopupContainer;\n      }\n\n      if (renderEmpty) {\n        config.renderEmpty = renderEmpty;\n      }\n\n      return external_react_[\"createElement\"](ConfigContext.Provider, {\n        value: config\n      }, children);\n    };\n\n    return _this;\n  }\n\n  config_provider_createClass(ConfigProvider, [{\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderProvider);\n    }\n  }]);\n\n  return ConfigProvider;\n}(external_react_[\"Component\"]);\n\nfunction withConfigConsumer(config) {\n  return function (Component) {\n    // Wrap with ConfigConsumer. Since we need compatible with react 15, be care when using ref methods\n    var SFC = function SFC(props) {\n      return external_react_[\"createElement\"](ConfigConsumer, null, function (configProps) {\n        var basicPrefixCls = config.prefixCls;\n        var getPrefixCls = configProps.getPrefixCls;\n        var customizePrefixCls = props.prefixCls;\n        var prefixCls = getPrefixCls(basicPrefixCls, customizePrefixCls);\n        return external_react_[\"createElement\"](Component, config_provider_extends({}, configProps, props, {\n          prefixCls: prefixCls\n        }));\n      });\n    };\n\n    var cons = Component.constructor;\n    var name = cons && cons.displayName || Component.name || 'Component';\n    SFC.displayName = \"withConfigConsumer(\".concat(name, \")\");\n    return SFC;\n  };\n}\n/* harmony default export */ var config_provider = (config_provider_ConfigProvider);\n// EXTERNAL MODULE: external \"react-dom\"\nvar external_react_dom_ = __webpack_require__(19);\nvar external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_);\n\n// EXTERNAL MODULE: ./node_modules/css-animation/es/Event.js\nvar Event = __webpack_require__(123);\n\n// EXTERNAL MODULE: ./node_modules/raf/index.js\nvar raf = __webpack_require__(90);\nvar raf_default = /*#__PURE__*/__webpack_require__.n(raf);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/_util/raf.js\n\nvar raf_id = 0;\nvar ids = {}; // Support call raf with delay specified frame\n\nfunction wrapperRaf(callback) {\n  var delayFrames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  var myId = raf_id++;\n  var restFrames = delayFrames;\n\n  function internalCallback() {\n    restFrames -= 1;\n\n    if (restFrames <= 0) {\n      callback();\n      delete ids[raf_id];\n    } else {\n      ids[raf_id] = raf_default()(internalCallback);\n    }\n  }\n\n  ids[raf_id] = raf_default()(internalCallback);\n  return myId;\n}\n\nwrapperRaf.cancel = function (pid) {\n  if (pid === undefined) return;\n  raf_default.a.cancel(ids[pid]);\n  delete ids[pid];\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/_util/wave.js\nfunction wave_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { wave_typeof = function _typeof(obj) { return typeof obj; }; } else { wave_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return wave_typeof(obj); }\n\nfunction wave_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction wave_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 wave_createClass(Constructor, protoProps, staticProps) { if (protoProps) wave_defineProperties(Constructor.prototype, protoProps); if (staticProps) wave_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction wave_possibleConstructorReturn(self, call) { if (call && (wave_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return wave_assertThisInitialized(self); }\n\nfunction wave_getPrototypeOf(o) { wave_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return wave_getPrototypeOf(o); }\n\nfunction wave_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction wave_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) wave_setPrototypeOf(subClass, superClass); }\n\nfunction wave_setPrototypeOf(o, p) { wave_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return wave_setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar styleForPesudo; // Where el is the DOM element you'd like to test for visibility\n\nfunction isHidden(element) {\n  if (false) {}\n\n  return !element || element.offsetParent === null;\n}\n\nvar wave_Wave =\n/*#__PURE__*/\nfunction (_React$Component) {\n  wave_inherits(Wave, _React$Component);\n\n  function Wave() {\n    var _this;\n\n    wave_classCallCheck(this, Wave);\n\n    _this = wave_possibleConstructorReturn(this, wave_getPrototypeOf(Wave).apply(this, arguments));\n    _this.animationStart = false;\n    _this.destroy = false;\n\n    _this.onClick = function (node, waveColor) {\n      if (!node || isHidden(node) || node.className.indexOf('-leave') >= 0) {\n        return;\n      }\n\n      var insertExtraNode = _this.props.insertExtraNode;\n      _this.extraNode = document.createElement('div');\n      var extraNode = _this.extraNode;\n      extraNode.className = 'ant-click-animating-node';\n\n      var attributeName = _this.getAttributeName();\n\n      node.setAttribute(attributeName, 'true'); // Not white or transparnt or grey\n\n      styleForPesudo = styleForPesudo || document.createElement('style');\n\n      if (waveColor && waveColor !== '#ffffff' && waveColor !== 'rgb(255, 255, 255)' && _this.isNotGrey(waveColor) && !/rgba\\(\\d*, \\d*, \\d*, 0\\)/.test(waveColor) && // any transparent rgba color\n      waveColor !== 'transparent') {\n        // Add nonce if CSP exist\n        if (_this.csp && _this.csp.nonce) {\n          styleForPesudo.nonce = _this.csp.nonce;\n        }\n\n        extraNode.style.borderColor = waveColor;\n        styleForPesudo.innerHTML = \"[ant-click-animating-without-extra-node=\\\"true\\\"]:after { border-color: \".concat(waveColor, \"; }\");\n\n        if (!document.body.contains(styleForPesudo)) {\n          document.body.appendChild(styleForPesudo);\n        }\n      }\n\n      if (insertExtraNode) {\n        node.appendChild(extraNode);\n      }\n\n      Event[\"a\" /* default */].addStartEventListener(node, _this.onTransitionStart);\n      Event[\"a\" /* default */].addEndEventListener(node, _this.onTransitionEnd);\n    };\n\n    _this.bindAnimationEvent = function (node) {\n      if (!node || !node.getAttribute || node.getAttribute('disabled') || node.className.indexOf('disabled') >= 0) {\n        return;\n      }\n\n      var onClick = function onClick(e) {\n        // Fix radio button click twice\n        if (e.target.tagName === 'INPUT' || isHidden(e.target)) {\n          return;\n        }\n\n        _this.resetEffect(node); // Get wave color from target\n\n\n        var waveColor = getComputedStyle(node).getPropertyValue('border-top-color') || // Firefox Compatible\n        getComputedStyle(node).getPropertyValue('border-color') || getComputedStyle(node).getPropertyValue('background-color');\n        _this.clickWaveTimeoutId = window.setTimeout(function () {\n          return _this.onClick(node, waveColor);\n        }, 0);\n        wrapperRaf.cancel(_this.animationStartId);\n        _this.animationStart = true; // Render to trigger transition event cost 3 frames. Let's delay 10 frames to reset this.\n\n        _this.animationStartId = wrapperRaf(function () {\n          _this.animationStart = false;\n        }, 10);\n      };\n\n      node.addEventListener('click', onClick, true);\n      return {\n        cancel: function cancel() {\n          node.removeEventListener('click', onClick, true);\n        }\n      };\n    };\n\n    _this.onTransitionStart = function (e) {\n      if (_this.destroy) return;\n      var node = Object(external_react_dom_[\"findDOMNode\"])(wave_assertThisInitialized(_this));\n\n      if (!e || e.target !== node) {\n        return;\n      }\n\n      if (!_this.animationStart) {\n        _this.resetEffect(node);\n      }\n    };\n\n    _this.onTransitionEnd = function (e) {\n      if (!e || e.animationName !== 'fadeEffect') {\n        return;\n      }\n\n      _this.resetEffect(e.target);\n    };\n\n    _this.renderWave = function (_ref) {\n      var csp = _ref.csp;\n      var children = _this.props.children;\n      _this.csp = csp;\n      return children;\n    };\n\n    return _this;\n  }\n\n  wave_createClass(Wave, [{\n    key: \"isNotGrey\",\n    value: function isNotGrey(color) {\n      var match = (color || '').match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\.\\d]*)?\\)/);\n\n      if (match && match[1] && match[2] && match[3]) {\n        return !(match[1] === match[2] && match[2] === match[3]);\n      }\n\n      return true;\n    }\n  }, {\n    key: \"getAttributeName\",\n    value: function getAttributeName() {\n      var insertExtraNode = this.props.insertExtraNode;\n      return insertExtraNode ? 'ant-click-animating' : 'ant-click-animating-without-extra-node';\n    }\n  }, {\n    key: \"resetEffect\",\n    value: function resetEffect(node) {\n      if (!node || node === this.extraNode || !(node instanceof Element)) {\n        return;\n      }\n\n      var insertExtraNode = this.props.insertExtraNode;\n      var attributeName = this.getAttributeName();\n      node.setAttribute(attributeName, 'false'); // edge has bug on `removeAttribute` #14466\n\n      this.removeExtraStyleNode();\n\n      if (insertExtraNode && this.extraNode && node.contains(this.extraNode)) {\n        node.removeChild(this.extraNode);\n      }\n\n      Event[\"a\" /* default */].removeStartEventListener(node, this.onTransitionStart);\n      Event[\"a\" /* default */].removeEndEventListener(node, this.onTransitionEnd);\n    }\n  }, {\n    key: \"removeExtraStyleNode\",\n    value: function removeExtraStyleNode() {\n      if (styleForPesudo) {\n        styleForPesudo.innerHTML = '';\n      }\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var node = Object(external_react_dom_[\"findDOMNode\"])(this);\n\n      if (node.nodeType !== 1) {\n        return;\n      }\n\n      this.instance = this.bindAnimationEvent(node);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.instance) {\n        this.instance.cancel();\n      }\n\n      if (this.clickWaveTimeoutId) {\n        clearTimeout(this.clickWaveTimeoutId);\n      }\n\n      this.destroy = true;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderWave);\n    }\n  }]);\n\n  return Wave;\n}(external_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/antd/es/_util/type.js\n// https://stackoverflow.com/questions/46176165/ways-to-get-string-literal-type-of-array-values-without-enum-overhead\nvar tuple = function tuple() {\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;\n};\nvar tupleNum = function tupleNum() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n\n  return args;\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/button/button.js\nfunction button_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { button_typeof = function _typeof(obj) { return typeof obj; }; } else { button_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return button_typeof(obj); }\n\nfunction button_extends() { button_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 button_extends.apply(this, arguments); }\n\nfunction button_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\nfunction button_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction button_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 button_createClass(Constructor, protoProps, staticProps) { if (protoProps) button_defineProperties(Constructor.prototype, protoProps); if (staticProps) button_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction button_possibleConstructorReturn(self, call) { if (call && (button_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return button_assertThisInitialized(self); }\n\nfunction button_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction button_getPrototypeOf(o) { button_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return button_getPrototypeOf(o); }\n\nfunction button_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) button_setPrototypeOf(subClass, superClass); }\n\nfunction button_setPrototypeOf(o, p) { button_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return button_setPrototypeOf(o, p); }\n\nvar button_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\nvar rxTwoCNChar = /^[\\u4e00-\\u9fa5]{2}$/;\nvar isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\n\nfunction isString(str) {\n  return typeof str === 'string';\n} // Insert one space between two chinese characters automatically.\n\n\nfunction insertSpace(child, needInserted) {\n  // Check the child if is undefined or null.\n  if (child == null) {\n    return;\n  }\n\n  var SPACE = needInserted ? ' ' : ''; // strictNullChecks oops.\n\n  if (typeof child !== 'string' && typeof child !== 'number' && isString(child.type) && isTwoCNChar(child.props.children)) {\n    return external_react_[\"cloneElement\"](child, {}, child.props.children.split('').join(SPACE));\n  }\n\n  if (typeof child === 'string') {\n    if (isTwoCNChar(child)) {\n      child = child.split('').join(SPACE);\n    }\n\n    return external_react_[\"createElement\"](\"span\", null, child);\n  }\n\n  return child;\n}\n\nvar ButtonTypes = tuple('default', 'primary', 'ghost', 'dashed', 'danger');\nvar ButtonShapes = tuple('circle', 'circle-outline', 'round');\nvar ButtonSizes = tuple('large', 'default', 'small');\nvar ButtonHTMLTypes = tuple('submit', 'button', 'reset');\n\nvar button_Button =\n/*#__PURE__*/\nfunction (_React$Component) {\n  button_inherits(Button, _React$Component);\n\n  function Button(props) {\n    var _this;\n\n    button_classCallCheck(this, Button);\n\n    _this = button_possibleConstructorReturn(this, button_getPrototypeOf(Button).call(this, props));\n\n    _this.saveButtonRef = function (node) {\n      _this.buttonNode = node;\n    };\n\n    _this.handleClick = function (e) {\n      var loading = _this.state.loading;\n      var onClick = _this.props.onClick;\n\n      if (!!loading) {\n        return;\n      }\n\n      if (onClick) {\n        onClick(e);\n      }\n    };\n\n    _this.renderButton = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls,\n          autoInsertSpaceInButton = _ref.autoInsertSpaceInButton;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          type = _a.type,\n          shape = _a.shape,\n          size = _a.size,\n          className = _a.className,\n          children = _a.children,\n          icon = _a.icon,\n          ghost = _a.ghost,\n          _loadingProp = _a.loading,\n          block = _a.block,\n          rest = button_rest(_a, [\"prefixCls\", \"type\", \"shape\", \"size\", \"className\", \"children\", \"icon\", \"ghost\", \"loading\", \"block\"]);\n\n      var _this$state = _this.state,\n          loading = _this$state.loading,\n          hasTwoCNChar = _this$state.hasTwoCNChar;\n      var prefixCls = getPrefixCls('btn', customizePrefixCls);\n      var autoInsertSpace = autoInsertSpaceInButton !== false; // large => lg\n      // small => sm\n\n      var sizeCls = '';\n\n      switch (size) {\n        case 'large':\n          sizeCls = 'lg';\n          break;\n\n        case 'small':\n          sizeCls = 'sm';\n\n        default:\n          break;\n      }\n\n      var classes = classnames_default()(prefixCls, className, (_classNames = {}, button_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type), type), button_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(shape), shape), button_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), button_defineProperty(_classNames, \"\".concat(prefixCls, \"-icon-only\"), !children && children !== 0 && icon), button_defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), loading), button_defineProperty(_classNames, \"\".concat(prefixCls, \"-background-ghost\"), ghost), button_defineProperty(_classNames, \"\".concat(prefixCls, \"-two-chinese-chars\"), hasTwoCNChar && autoInsertSpace), button_defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _classNames));\n      var iconType = loading ? 'loading' : icon;\n      var iconNode = iconType ? external_react_[\"createElement\"](es_icon, {\n        type: iconType\n      }) : null;\n      var kids = children || children === 0 ? external_react_[\"Children\"].map(children, function (child) {\n        return insertSpace(child, _this.isNeedInserted() && autoInsertSpace);\n      }) : null;\n      var linkButtonRestProps = es(rest, ['htmlType']);\n\n      if (linkButtonRestProps.href !== undefined) {\n        return external_react_[\"createElement\"](\"a\", button_extends({}, linkButtonRestProps, {\n          className: classes,\n          onClick: _this.handleClick,\n          ref: _this.saveButtonRef\n        }), iconNode, kids);\n      } // React does not recognize the `htmlType` prop on a DOM element. Here we pick it out of `rest`.\n\n\n      var _b = rest,\n          htmlType = _b.htmlType,\n          otherProps = button_rest(_b, [\"htmlType\"]);\n\n      return external_react_[\"createElement\"](wave_Wave, null, external_react_[\"createElement\"](\"button\", button_extends({}, otherProps, {\n        type: htmlType || 'button',\n        className: classes,\n        onClick: _this.handleClick,\n        ref: _this.saveButtonRef\n      }), iconNode, kids));\n    };\n\n    _this.state = {\n      loading: props.loading,\n      hasTwoCNChar: false\n    };\n    return _this;\n  }\n\n  button_createClass(Button, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.fixTwoCNChar();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this2 = this;\n\n      this.fixTwoCNChar();\n\n      if (prevProps.loading && typeof prevProps.loading !== 'boolean') {\n        clearTimeout(this.delayTimeout);\n      }\n\n      var loading = this.props.loading;\n\n      if (loading && typeof loading !== 'boolean' && loading.delay) {\n        this.delayTimeout = window.setTimeout(function () {\n          return _this2.setState({\n            loading: loading\n          });\n        }, loading.delay);\n      } else if (prevProps.loading === this.props.loading) {\n        return;\n      } else {\n        this.setState({\n          loading: loading\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.delayTimeout) {\n        clearTimeout(this.delayTimeout);\n      }\n    }\n  }, {\n    key: \"fixTwoCNChar\",\n    value: function fixTwoCNChar() {\n      // Fix for HOC usage like <FormatMessage />\n      if (!this.buttonNode) {\n        return;\n      }\n\n      var buttonText = this.buttonNode.textContent || this.buttonNode.innerText;\n\n      if (this.isNeedInserted() && isTwoCNChar(buttonText)) {\n        if (!this.state.hasTwoCNChar) {\n          this.setState({\n            hasTwoCNChar: true\n          });\n        }\n      } else if (this.state.hasTwoCNChar) {\n        this.setState({\n          hasTwoCNChar: false\n        });\n      }\n    }\n  }, {\n    key: \"isNeedInserted\",\n    value: function isNeedInserted() {\n      var _this$props = this.props,\n          icon = _this$props.icon,\n          children = _this$props.children;\n      return external_react_[\"Children\"].count(children) === 1 && !icon;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderButton);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.loading instanceof Boolean) {\n        return button_extends({}, prevState, {\n          loading: nextProps.loading\n        });\n      }\n\n      return null;\n    }\n  }]);\n\n  return Button;\n}(external_react_[\"Component\"]);\n\nbutton_Button.__ANT_BUTTON = true;\nbutton_Button.defaultProps = {\n  loading: false,\n  ghost: false,\n  block: false\n};\nbutton_Button.propTypes = {\n  type: prop_types[\"string\"],\n  shape: prop_types[\"oneOf\"](ButtonShapes),\n  size: prop_types[\"oneOf\"](ButtonSizes),\n  htmlType: prop_types[\"oneOf\"](ButtonHTMLTypes),\n  onClick: prop_types[\"func\"],\n  loading: prop_types[\"oneOfType\"]([prop_types[\"bool\"], prop_types[\"object\"]]),\n  className: prop_types[\"string\"],\n  icon: prop_types[\"string\"],\n  block: prop_types[\"bool\"]\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(button_Button);\n/* harmony default export */ var button_button = (button_Button);\n// CONCATENATED MODULE: ./node_modules/antd/es/button/button-group.js\nfunction button_group_extends() { button_group_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 button_group_extends.apply(this, arguments); }\n\nfunction button_group_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\nvar button_group_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\nvar button_group_ButtonGroup = function ButtonGroup(props) {\n  return external_react_[\"createElement\"](ConfigConsumer, null, function (_ref) {\n    var getPrefixCls = _ref.getPrefixCls;\n\n    var customizePrefixCls = props.prefixCls,\n        size = props.size,\n        className = props.className,\n        others = button_group_rest(props, [\"prefixCls\", \"size\", \"className\"]);\n\n    var prefixCls = getPrefixCls('btn-group', customizePrefixCls); // large => lg\n    // small => sm\n\n    var sizeCls = '';\n\n    switch (size) {\n      case 'large':\n        sizeCls = 'lg';\n        break;\n\n      case 'small':\n        sizeCls = 'sm';\n\n      default:\n        break;\n    }\n\n    var classes = classnames_default()(prefixCls, button_group_defineProperty({}, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), className);\n    return external_react_[\"createElement\"](\"div\", button_group_extends({}, others, {\n      className: classes\n    }));\n  });\n};\n\n/* harmony default export */ var button_group = (button_group_ButtonGroup);\n// CONCATENATED MODULE: ./node_modules/antd/es/button/index.js\n\n\nbutton_button.Group = button_group;\n/* harmony default export */ var es_button = (button_button);\n// EXTERNAL MODULE: ./node_modules/rc-animate/es/Animate.js + 3 modules\nvar Animate = __webpack_require__(60);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/badge/ScrollNumber.js\nfunction ScrollNumber_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { ScrollNumber_typeof = function _typeof(obj) { return typeof obj; }; } else { ScrollNumber_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return ScrollNumber_typeof(obj); }\n\nfunction ScrollNumber_extends() { ScrollNumber_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 ScrollNumber_extends.apply(this, arguments); }\n\nfunction ScrollNumber_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ScrollNumber_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 ScrollNumber_createClass(Constructor, protoProps, staticProps) { if (protoProps) ScrollNumber_defineProperties(Constructor.prototype, protoProps); if (staticProps) ScrollNumber_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction ScrollNumber_possibleConstructorReturn(self, call) { if (call && (ScrollNumber_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return ScrollNumber_assertThisInitialized(self); }\n\nfunction ScrollNumber_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction ScrollNumber_getPrototypeOf(o) { ScrollNumber_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ScrollNumber_getPrototypeOf(o); }\n\nfunction ScrollNumber_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) ScrollNumber_setPrototypeOf(subClass, superClass); }\n\nfunction ScrollNumber_setPrototypeOf(o, p) { ScrollNumber_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ScrollNumber_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\nfunction getNumberArray(num) {\n  return num ? num.toString().split('').reverse().map(function (i) {\n    return Number(i);\n  }) : [];\n}\n\nvar ScrollNumber_ScrollNumber =\n/*#__PURE__*/\nfunction (_Component) {\n  ScrollNumber_inherits(ScrollNumber, _Component);\n\n  function ScrollNumber(props) {\n    var _this;\n\n    ScrollNumber_classCallCheck(this, ScrollNumber);\n\n    _this = ScrollNumber_possibleConstructorReturn(this, ScrollNumber_getPrototypeOf(ScrollNumber).call(this, props));\n\n    _this.renderScrollNumber = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n      var _this$props = _this.props,\n          customizePrefixCls = _this$props.prefixCls,\n          className = _this$props.className,\n          style = _this$props.style,\n          title = _this$props.title,\n          _this$props$component = _this$props.component,\n          component = _this$props$component === void 0 ? 'sup' : _this$props$component,\n          displayComponent = _this$props.displayComponent; // fix https://fb.me/react-unknown-prop\n\n      var restProps = es(_this.props, ['count', 'onAnimated', 'component', 'prefixCls', 'displayComponent']);\n      var prefixCls = getPrefixCls('scroll-number', customizePrefixCls);\n\n      var newProps = ScrollNumber_extends({}, restProps, {\n        className: classnames_default()(prefixCls, className),\n        title: title\n      }); // allow specify the border\n      // mock border-color by box-shadow for compatible with old usage:\n      // <Badge count={4} style={{ backgroundColor: '#fff', color: '#999', borderColor: '#d9d9d9' }} />\n\n\n      if (style && style.borderColor) {\n        newProps.style = ScrollNumber_extends({}, style, {\n          boxShadow: \"0 0 0 1px \".concat(style.borderColor, \" inset\")\n        });\n      }\n\n      if (displayComponent) {\n        return external_react_[\"cloneElement\"](displayComponent, {\n          className: classnames_default()(\"\".concat(prefixCls, \"-custom-component\"), displayComponent.props && displayComponent.props.className)\n        });\n      }\n\n      return Object(external_react_[\"createElement\"])(component, newProps, _this.renderNumberElement(prefixCls));\n    };\n\n    _this.state = {\n      animateStarted: true,\n      count: props.count\n    };\n    return _this;\n  }\n\n  ScrollNumber_createClass(ScrollNumber, [{\n    key: \"getPositionByNum\",\n    value: function getPositionByNum(num, i) {\n      if (this.state.animateStarted) {\n        return 10 + num;\n      }\n\n      var currentDigit = getNumberArray(this.state.count)[i];\n      var lastDigit = getNumberArray(this.lastCount)[i]; // 同方向则在同一侧切换数字\n\n      if (Number(this.state.count) > Number(this.lastCount)) {\n        if (currentDigit >= lastDigit) {\n          return 10 + num;\n        }\n\n        return 20 + num;\n      }\n\n      if (currentDigit <= lastDigit) {\n        return 10 + num;\n      }\n\n      return num;\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(_, prevState) {\n      var _this2 = this;\n\n      this.lastCount = prevState.count;\n\n      if (this.state.animateStarted) {\n        this.setState({\n          animateStarted: false,\n          count: this.props.count\n        }, function () {\n          var onAnimated = _this2.props.onAnimated;\n\n          if (onAnimated) {\n            onAnimated();\n          }\n        });\n      }\n    }\n  }, {\n    key: \"renderNumberList\",\n    value: function renderNumberList(position) {\n      var childrenToReturn = [];\n\n      for (var i = 0; i < 30; i++) {\n        var currentClassName = position === i ? 'current' : '';\n        childrenToReturn.push(external_react_[\"createElement\"](\"p\", {\n          key: i.toString(),\n          className: currentClassName\n        }, i % 10));\n      }\n\n      return childrenToReturn;\n    }\n  }, {\n    key: \"renderCurrentNumber\",\n    value: function renderCurrentNumber(prefixCls, num, i) {\n      var position = this.getPositionByNum(num, i);\n      var removeTransition = this.state.animateStarted || getNumberArray(this.lastCount)[i] === undefined;\n      return Object(external_react_[\"createElement\"])('span', {\n        className: \"\".concat(prefixCls, \"-only\"),\n        style: {\n          transition: removeTransition ? 'none' : undefined,\n          msTransform: \"translateY(\".concat(-position * 100, \"%)\"),\n          WebkitTransform: \"translateY(\".concat(-position * 100, \"%)\"),\n          transform: \"translateY(\".concat(-position * 100, \"%)\")\n        },\n        key: i\n      }, this.renderNumberList(position));\n    }\n  }, {\n    key: \"renderNumberElement\",\n    value: function renderNumberElement(prefixCls) {\n      var _this3 = this;\n\n      var count = this.state.count;\n\n      if (count && Number(count) % 1 === 0) {\n        return getNumberArray(count).map(function (num, i) {\n          return _this3.renderCurrentNumber(prefixCls, num, i);\n        }).reverse();\n      }\n\n      return count;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderScrollNumber);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, nextState) {\n      if ('count' in nextProps) {\n        if (nextState.count === nextProps.count) {\n          return null;\n        }\n\n        return {\n          animateStarted: true\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return ScrollNumber;\n}(external_react_[\"Component\"]);\n\nScrollNumber_ScrollNumber.defaultProps = {\n  count: null,\n  onAnimated: function onAnimated() {}\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(ScrollNumber_ScrollNumber);\n/* harmony default export */ var badge_ScrollNumber = (ScrollNumber_ScrollNumber);\n// CONCATENATED MODULE: ./node_modules/antd/es/badge/index.js\nfunction badge_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { badge_typeof = function _typeof(obj) { return typeof obj; }; } else { badge_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return badge_typeof(obj); }\n\nfunction badge_extends() { badge_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 badge_extends.apply(this, arguments); }\n\nfunction badge_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\nfunction badge_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction badge_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 badge_createClass(Constructor, protoProps, staticProps) { if (protoProps) badge_defineProperties(Constructor.prototype, protoProps); if (staticProps) badge_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction badge_possibleConstructorReturn(self, call) { if (call && (badge_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return badge_assertThisInitialized(self); }\n\nfunction badge_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction badge_getPrototypeOf(o) { badge_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return badge_getPrototypeOf(o); }\n\nfunction badge_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) badge_setPrototypeOf(subClass, superClass); }\n\nfunction badge_setPrototypeOf(o, p) { badge_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return badge_setPrototypeOf(o, p); }\n\nvar badge_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\nvar badge_Badge =\n/*#__PURE__*/\nfunction (_React$Component) {\n  badge_inherits(Badge, _React$Component);\n\n  function Badge() {\n    var _this;\n\n    badge_classCallCheck(this, Badge);\n\n    _this = badge_possibleConstructorReturn(this, badge_getPrototypeOf(Badge).apply(this, arguments));\n\n    _this.renderBadge = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          count = _a.count,\n          showZero = _a.showZero,\n          customizePrefixCls = _a.prefixCls,\n          customizeScrollNumberPrefixCls = _a.scrollNumberPrefixCls,\n          overflowCount = _a.overflowCount,\n          className = _a.className,\n          style = _a.style,\n          children = _a.children,\n          dot = _a.dot,\n          status = _a.status,\n          text = _a.text,\n          offset = _a.offset,\n          title = _a.title,\n          restProps = badge_rest(_a, [\"count\", \"showZero\", \"prefixCls\", \"scrollNumberPrefixCls\", \"overflowCount\", \"className\", \"style\", \"children\", \"dot\", \"status\", \"text\", \"offset\", \"title\"]);\n\n      var prefixCls = getPrefixCls('badge', customizePrefixCls);\n      var scrollNumberPrefixCls = getPrefixCls('scroll-number', customizeScrollNumberPrefixCls);\n\n      var scrollNumber = _this.renderBadgeNumber(prefixCls, scrollNumberPrefixCls);\n\n      var statusText = _this.renderStatusText(prefixCls);\n\n      var statusCls = classnames_default()((_classNames = {}, badge_defineProperty(_classNames, \"\".concat(prefixCls, \"-status-dot\"), !!status), badge_defineProperty(_classNames, \"\".concat(prefixCls, \"-status-\").concat(status), !!status), _classNames)); // <Badge status=\"success\" />\n\n      if (!children && status) {\n        return external_react_[\"createElement\"](\"span\", badge_extends({}, restProps, {\n          className: _this.getBadgeClassName(prefixCls),\n          style: _this.getStyleWithOffset()\n        }), external_react_[\"createElement\"](\"span\", {\n          className: statusCls\n        }), external_react_[\"createElement\"](\"span\", {\n          className: \"\".concat(prefixCls, \"-status-text\")\n        }, text));\n      }\n\n      return external_react_[\"createElement\"](\"span\", badge_extends({}, restProps, {\n        className: _this.getBadgeClassName(prefixCls)\n      }), children, external_react_[\"createElement\"](Animate[\"a\" /* default */], {\n        component: \"\",\n        showProp: \"data-show\",\n        transitionName: children ? \"\".concat(prefixCls, \"-zoom\") : '',\n        transitionAppear: true\n      }, scrollNumber), statusText);\n    };\n\n    return _this;\n  }\n\n  badge_createClass(Badge, [{\n    key: \"getBadgeClassName\",\n    value: function getBadgeClassName(prefixCls) {\n      var _classNames2;\n\n      var _this$props = this.props,\n          className = _this$props.className,\n          status = _this$props.status,\n          children = _this$props.children;\n      return classnames_default()(className, prefixCls, (_classNames2 = {}, badge_defineProperty(_classNames2, \"\".concat(prefixCls, \"-status\"), !!status), badge_defineProperty(_classNames2, \"\".concat(prefixCls, \"-not-a-wrapper\"), !children), _classNames2));\n    }\n  }, {\n    key: \"isZero\",\n    value: function isZero() {\n      var numberedDispayCount = this.getNumberedDispayCount();\n      return numberedDispayCount === '0' || numberedDispayCount === 0;\n    }\n  }, {\n    key: \"isDot\",\n    value: function isDot() {\n      var _this$props2 = this.props,\n          dot = _this$props2.dot,\n          status = _this$props2.status;\n      var isZero = this.isZero();\n      return dot && !isZero || status;\n    }\n  }, {\n    key: \"isHidden\",\n    value: function isHidden() {\n      var showZero = this.props.showZero;\n      var displayCount = this.getDispayCount();\n      var isZero = this.isZero();\n      var isDot = this.isDot();\n      var isEmpty = displayCount === null || displayCount === undefined || displayCount === '';\n      return (isEmpty || isZero && !showZero) && !isDot;\n    }\n  }, {\n    key: \"getNumberedDispayCount\",\n    value: function getNumberedDispayCount() {\n      var _this$props3 = this.props,\n          count = _this$props3.count,\n          overflowCount = _this$props3.overflowCount;\n      var displayCount = count > overflowCount ? \"\".concat(overflowCount, \"+\") : count;\n      return displayCount;\n    }\n  }, {\n    key: \"getDispayCount\",\n    value: function getDispayCount() {\n      var isDot = this.isDot(); // dot mode don't need count\n\n      if (isDot) {\n        return '';\n      }\n\n      return this.getNumberedDispayCount();\n    }\n  }, {\n    key: \"getScrollNumberTitle\",\n    value: function getScrollNumberTitle() {\n      var _this$props4 = this.props,\n          title = _this$props4.title,\n          count = _this$props4.count;\n\n      if (title) {\n        return title;\n      }\n\n      return typeof count === 'string' || typeof count === 'number' ? count : undefined;\n    }\n  }, {\n    key: \"getStyleWithOffset\",\n    value: function getStyleWithOffset() {\n      var _this$props5 = this.props,\n          offset = _this$props5.offset,\n          style = _this$props5.style;\n      return offset ? badge_extends({\n        right: -parseInt(offset[0], 10),\n        marginTop: offset[1]\n      }, style) : style;\n    }\n  }, {\n    key: \"renderStatusText\",\n    value: function renderStatusText(prefixCls) {\n      var text = this.props.text;\n      var hidden = this.isHidden();\n      return hidden || !text ? null : external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-status-text\")\n      }, text);\n    }\n  }, {\n    key: \"renderDispayComponent\",\n    value: function renderDispayComponent() {\n      var count = this.props.count;\n      var customNode = count;\n\n      if (!customNode || badge_typeof(customNode) !== 'object') {\n        return undefined;\n      }\n\n      return external_react_[\"cloneElement\"](customNode, {\n        style: badge_extends({}, this.getStyleWithOffset(), customNode.props && customNode.props.style)\n      });\n    }\n  }, {\n    key: \"renderBadgeNumber\",\n    value: function renderBadgeNumber(prefixCls, scrollNumberPrefixCls) {\n      var _classNames3;\n\n      var _this$props6 = this.props,\n          count = _this$props6.count,\n          status = _this$props6.status;\n      var displayCount = this.getDispayCount();\n      var isDot = this.isDot();\n      var hidden = this.isHidden();\n      var scrollNumberCls = classnames_default()((_classNames3 = {}, badge_defineProperty(_classNames3, \"\".concat(prefixCls, \"-dot\"), isDot), badge_defineProperty(_classNames3, \"\".concat(prefixCls, \"-count\"), !isDot), badge_defineProperty(_classNames3, \"\".concat(prefixCls, \"-multiple-words\"), !isDot && count && count.toString && count.toString().length > 1), badge_defineProperty(_classNames3, \"\".concat(prefixCls, \"-status-\").concat(status), !!status), _classNames3));\n      return hidden ? null : external_react_[\"createElement\"](badge_ScrollNumber, {\n        prefixCls: scrollNumberPrefixCls,\n        \"data-show\": !hidden,\n        className: scrollNumberCls,\n        count: displayCount,\n        displayComponent: this.renderDispayComponent() // <Badge status=\"success\" count={<Icon type=\"xxx\" />}></Badge>\n        ,\n        title: this.getScrollNumberTitle(),\n        style: this.getStyleWithOffset(),\n        key: \"scrollNumber\"\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderBadge);\n    }\n  }]);\n\n  return Badge;\n}(external_react_[\"Component\"]);\n\n\nbadge_Badge.defaultProps = {\n  count: null,\n  showZero: false,\n  dot: false,\n  overflowCount: 99\n};\nbadge_Badge.propTypes = {\n  count: prop_types[\"node\"],\n  showZero: prop_types[\"bool\"],\n  dot: prop_types[\"bool\"],\n  overflowCount: prop_types[\"number\"]\n};\n// EXTERNAL MODULE: ./node_modules/mini-store/lib/index.js\nvar mini_store_lib = __webpack_require__(65);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/KeyCode.js\nvar KeyCode = __webpack_require__(32);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/createChainedFunction.js\nvar createChainedFunction = __webpack_require__(352);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar node_modules_classnames = __webpack_require__(21);\nvar node_modules_classnames_default = /*#__PURE__*/__webpack_require__.n(node_modules_classnames);\n\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/utils/isMobile.js\nfunction isMobile_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) { isMobile_ownKeys(source, true).forEach(function (key) { isMobile_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { isMobile_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction isMobile_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\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { 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// MIT License from https://github.com/kaimallea/isMobile\nvar applePhone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i; // Match 'Android' AND 'Mobile'\n\nvar androidTablet = /Android/i;\nvar amazonPhone = /\\bAndroid(?:.+)SD4930UR\\b/i;\nvar amazonTablet = /\\bAndroid(?:.+)(?:KF[A-Z]{2,4})\\b/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i; // Match 'Windows' AND 'ARM'\n\nvar otherBlackberry = /BlackBerry/i;\nvar otherBlackberry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i; // Match 'Mobile' AND 'Firefox'\n\nfunction isMobile_match(regex, userAgent) {\n  return regex.test(userAgent);\n}\n\nfunction isMobile(userAgent) {\n  var ua = userAgent || (typeof navigator !== 'undefined' ? navigator.userAgent : ''); // Facebook mobile app's integrated browser adds a bunch of strings that\n  // match everything. Strip it out if it exists.\n\n  var tmp = ua.split('[FBAN');\n\n  if (typeof tmp[1] !== 'undefined') {\n    var _tmp = tmp;\n\n    var _tmp2 = _slicedToArray(_tmp, 1);\n\n    ua = _tmp2[0];\n  } // Twitter mobile app's integrated browser on iPad adds a \"Twitter for\n  // iPhone\" string. Same probably happens on other tablet platforms.\n  // This will confuse detection so strip it out if it exists.\n\n\n  tmp = ua.split('Twitter');\n\n  if (typeof tmp[1] !== 'undefined') {\n    var _tmp3 = tmp;\n\n    var _tmp4 = _slicedToArray(_tmp3, 1);\n\n    ua = _tmp4[0];\n  }\n\n  var result = {\n    apple: {\n      phone: isMobile_match(applePhone, ua) && !isMobile_match(windowsPhone, ua),\n      ipod: isMobile_match(appleIpod, ua),\n      tablet: !isMobile_match(applePhone, ua) && isMobile_match(appleTablet, ua) && !isMobile_match(windowsPhone, ua),\n      device: (isMobile_match(applePhone, ua) || isMobile_match(appleIpod, ua) || isMobile_match(appleTablet, ua)) && !isMobile_match(windowsPhone, ua)\n    },\n    amazon: {\n      phone: isMobile_match(amazonPhone, ua),\n      tablet: !isMobile_match(amazonPhone, ua) && isMobile_match(amazonTablet, ua),\n      device: isMobile_match(amazonPhone, ua) || isMobile_match(amazonTablet, ua)\n    },\n    android: {\n      phone: !isMobile_match(windowsPhone, ua) && isMobile_match(amazonPhone, ua) || !isMobile_match(windowsPhone, ua) && isMobile_match(androidPhone, ua),\n      tablet: !isMobile_match(windowsPhone, ua) && !isMobile_match(amazonPhone, ua) && !isMobile_match(androidPhone, ua) && (isMobile_match(amazonTablet, ua) || isMobile_match(androidTablet, ua)),\n      device: !isMobile_match(windowsPhone, ua) && (isMobile_match(amazonPhone, ua) || isMobile_match(amazonTablet, ua) || isMobile_match(androidPhone, ua) || isMobile_match(androidTablet, ua)) || isMobile_match(/\\bokhttp\\b/i, ua)\n    },\n    windows: {\n      phone: isMobile_match(windowsPhone, ua),\n      tablet: isMobile_match(windowsTablet, ua),\n      device: isMobile_match(windowsPhone, ua) || isMobile_match(windowsTablet, ua)\n    },\n    other: {\n      blackberry: isMobile_match(otherBlackberry, ua),\n      blackberry10: isMobile_match(otherBlackberry10, ua),\n      opera: isMobile_match(otherOpera, ua),\n      firefox: isMobile_match(otherFirefox, ua),\n      chrome: isMobile_match(otherChrome, ua),\n      device: isMobile_match(otherBlackberry, ua) || isMobile_match(otherBlackberry10, ua) || isMobile_match(otherOpera, ua) || isMobile_match(otherFirefox, ua) || isMobile_match(otherChrome, ua)\n    },\n    // Additional\n    any: null,\n    phone: null,\n    tablet: null\n  };\n  result.any = result.apple.device || result.android.device || result.windows.device || result.other.device; // excludes 'other' devices and ipods, targeting touchscreen phones\n\n  result.phone = result.apple.phone || result.android.phone || result.windows.phone;\n  result.tablet = result.apple.tablet || result.android.tablet || result.windows.tablet;\n  return result;\n}\n\nvar defaultResult = _objectSpread({}, isMobile(), {\n  isMobile: isMobile\n});\n\n/* harmony default export */ var utils_isMobile = (defaultResult);\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/util.js\nfunction util_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { util_typeof = function _typeof(obj) { return typeof obj; }; } else { util_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return util_typeof(obj); }\n\n\n\nfunction noop() {}\nfunction getKeyFromChildrenIndex(child, menuEventKey, index) {\n  var prefix = menuEventKey || '';\n  return child.key || \"\".concat(prefix, \"item_\").concat(index);\n}\nfunction getMenuIdFromSubMenuEventKey(eventKey) {\n  return \"\".concat(eventKey, \"-menu-\");\n}\nfunction loopMenuItem(children, cb) {\n  var index = -1;\n  external_react_default.a.Children.forEach(children, function (c) {\n    index += 1;\n\n    if (c && c.type && c.type.isMenuItemGroup) {\n      external_react_default.a.Children.forEach(c.props.children, function (c2) {\n        index += 1;\n        cb(c2, index);\n      });\n    } else {\n      cb(c, index);\n    }\n  });\n}\nfunction loopMenuItemRecursively(children, keys, ret) {\n  /* istanbul ignore if */\n  if (!children || ret.find) {\n    return;\n  }\n\n  external_react_default.a.Children.forEach(children, function (c) {\n    if (c) {\n      var construct = c.type;\n\n      if (!construct || !(construct.isSubMenu || construct.isMenuItem || construct.isMenuItemGroup)) {\n        return;\n      }\n\n      if (keys.indexOf(c.key) !== -1) {\n        ret.find = true;\n      } else if (c.props.children) {\n        loopMenuItemRecursively(c.props.children, keys, ret);\n      }\n    }\n  });\n}\nvar menuAllProps = ['defaultSelectedKeys', 'selectedKeys', 'defaultOpenKeys', 'openKeys', 'mode', 'getPopupContainer', 'onSelect', 'onDeselect', 'onDestroy', 'openTransitionName', 'openAnimation', 'subMenuOpenDelay', 'subMenuCloseDelay', 'forceSubMenuRender', 'triggerSubMenuAction', 'level', 'selectable', 'multiple', 'onOpenChange', 'visible', 'focusable', 'defaultActiveFirst', 'prefixCls', 'inlineIndent', 'parentMenu', 'title', 'rootPrefixCls', 'eventKey', 'active', 'onItemHover', 'onTitleMouseEnter', 'onTitleMouseLeave', 'onTitleClick', 'popupAlign', 'popupOffset', 'isOpen', 'renderMenuItem', 'manualRef', 'subMenuKey', 'disabled', 'index', 'isSelected', 'store', 'activeKey', 'builtinPlacements', 'overflowedIndicator', // the following keys found need to be removed from test regression\n'attribute', 'value', 'popupClassName', 'inlineCollapsed', 'menu', 'theme', 'itemIcon', 'expandIcon']; // ref: https://github.com/ant-design/ant-design/issues/14007\n// ref: https://bugs.chromium.org/p/chromium/issues/detail?id=360889\n// getBoundingClientRect return the full precision value, which is\n// not the same behavior as on chrome. Set the precision to 6 to\n// unify their behavior\n\nvar getWidth = function getWidth(elem) {\n  var width = elem && typeof elem.getBoundingClientRect === 'function' && elem.getBoundingClientRect().width;\n\n  if (width) {\n    width = +width.toFixed(6);\n  }\n\n  return width || 0;\n};\nvar setStyle = function setStyle(elem, styleProperty, value) {\n  if (elem && util_typeof(elem.style) === 'object') {\n    elem.style[styleProperty] = value;\n  }\n};\nvar util_isMobileDevice = function isMobileDevice() {\n  return utils_isMobile.any;\n};\n// EXTERNAL MODULE: ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js\nvar ResizeObserver_es = __webpack_require__(163);\n\n// EXTERNAL MODULE: ./node_modules/rc-trigger/es/index.js + 4 modules\nvar rc_trigger_es = __webpack_require__(146);\n\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/placements.js\nvar placements_autoAdjustOverflow = {\n  adjustX: 1,\n  adjustY: 1\n};\nvar placements = {\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: placements_autoAdjustOverflow,\n    offset: [0, -7]\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: placements_autoAdjustOverflow,\n    offset: [0, 7]\n  },\n  leftTop: {\n    points: ['tr', 'tl'],\n    overflow: placements_autoAdjustOverflow,\n    offset: [-4, 0]\n  },\n  rightTop: {\n    points: ['tl', 'tr'],\n    overflow: placements_autoAdjustOverflow,\n    offset: [4, 0]\n  }\n};\n/* harmony default export */ var es_placements = (placements);\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/SubMenu.js\nfunction SubMenu_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { SubMenu_typeof = function _typeof(obj) { return typeof obj; }; } else { SubMenu_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return SubMenu_typeof(obj); }\n\nfunction SubMenu_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction SubMenu_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 SubMenu_createClass(Constructor, protoProps, staticProps) { if (protoProps) SubMenu_defineProperties(Constructor.prototype, protoProps); if (staticProps) SubMenu_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction SubMenu_possibleConstructorReturn(self, call) { if (call && (SubMenu_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return SubMenu_assertThisInitialized(self); }\n\nfunction SubMenu_getPrototypeOf(o) { SubMenu_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SubMenu_getPrototypeOf(o); }\n\nfunction SubMenu_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction SubMenu_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) SubMenu_setPrototypeOf(subClass, superClass); }\n\nfunction SubMenu_setPrototypeOf(o, p) { SubMenu_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SubMenu_setPrototypeOf(o, p); }\n\nfunction SubMenu_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 SubMenu_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { SubMenu_ownKeys(source, true).forEach(function (key) { SubMenu_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { SubMenu_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction SubMenu_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\n\n\n\n\n\n\n\n\nvar guid = 0;\nvar popupPlacementMap = {\n  horizontal: 'bottomLeft',\n  vertical: 'rightTop',\n  'vertical-left': 'rightTop',\n  'vertical-right': 'leftTop'\n};\n\nvar SubMenu_updateDefaultActiveFirst = function updateDefaultActiveFirst(store, eventKey, defaultActiveFirst) {\n  var menuId = getMenuIdFromSubMenuEventKey(eventKey);\n  var state = store.getState();\n  store.setState({\n    defaultActiveFirst: SubMenu_objectSpread({}, state.defaultActiveFirst, SubMenu_defineProperty({}, menuId, defaultActiveFirst))\n  });\n};\n\nvar SubMenu_SubMenu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  SubMenu_inherits(SubMenu, _React$Component);\n\n  function SubMenu(props) {\n    var _this;\n\n    SubMenu_classCallCheck(this, SubMenu);\n\n    _this = SubMenu_possibleConstructorReturn(this, SubMenu_getPrototypeOf(SubMenu).call(this, props));\n\n    _this.onDestroy = function (key) {\n      _this.props.onDestroy(key);\n    };\n    /**\n     * note:\n     *  This legacy code that `onKeyDown` is called by parent instead of dom self.\n     *  which need return code to check if this event is handled\n     */\n\n\n    _this.onKeyDown = function (e) {\n      var keyCode = e.keyCode;\n      var menu = _this.menuInstance;\n      var _this$props = _this.props,\n          isOpen = _this$props.isOpen,\n          store = _this$props.store;\n\n      if (keyCode === KeyCode[\"a\" /* default */].ENTER) {\n        _this.onTitleClick(e);\n\n        SubMenu_updateDefaultActiveFirst(store, _this.props.eventKey, true);\n        return true;\n      }\n\n      if (keyCode === KeyCode[\"a\" /* default */].RIGHT) {\n        if (isOpen) {\n          menu.onKeyDown(e);\n        } else {\n          _this.triggerOpenChange(true); // need to update current menu's defaultActiveFirst value\n\n\n          SubMenu_updateDefaultActiveFirst(store, _this.props.eventKey, true);\n        }\n\n        return true;\n      }\n\n      if (keyCode === KeyCode[\"a\" /* default */].LEFT) {\n        var handled;\n\n        if (isOpen) {\n          handled = menu.onKeyDown(e);\n        } else {\n          return undefined;\n        }\n\n        if (!handled) {\n          _this.triggerOpenChange(false);\n\n          handled = true;\n        }\n\n        return handled;\n      }\n\n      if (isOpen && (keyCode === KeyCode[\"a\" /* default */].UP || keyCode === KeyCode[\"a\" /* default */].DOWN)) {\n        return menu.onKeyDown(e);\n      }\n\n      return undefined;\n    };\n\n    _this.onOpenChange = function (e) {\n      _this.props.onOpenChange(e);\n    };\n\n    _this.onPopupVisibleChange = function (visible) {\n      _this.triggerOpenChange(visible, visible ? 'mouseenter' : 'mouseleave');\n    };\n\n    _this.onMouseEnter = function (e) {\n      var _this$props2 = _this.props,\n          key = _this$props2.eventKey,\n          onMouseEnter = _this$props2.onMouseEnter,\n          store = _this$props2.store;\n      SubMenu_updateDefaultActiveFirst(store, _this.props.eventKey, false);\n      onMouseEnter({\n        key: key,\n        domEvent: e\n      });\n    };\n\n    _this.onMouseLeave = function (e) {\n      var _this$props3 = _this.props,\n          parentMenu = _this$props3.parentMenu,\n          eventKey = _this$props3.eventKey,\n          onMouseLeave = _this$props3.onMouseLeave;\n      parentMenu.subMenuInstance = SubMenu_assertThisInitialized(_this);\n      onMouseLeave({\n        key: eventKey,\n        domEvent: e\n      });\n    };\n\n    _this.onTitleMouseEnter = function (domEvent) {\n      var _this$props4 = _this.props,\n          key = _this$props4.eventKey,\n          onItemHover = _this$props4.onItemHover,\n          onTitleMouseEnter = _this$props4.onTitleMouseEnter;\n      onItemHover({\n        key: key,\n        hover: true\n      });\n      onTitleMouseEnter({\n        key: key,\n        domEvent: domEvent\n      });\n    };\n\n    _this.onTitleMouseLeave = function (e) {\n      var _this$props5 = _this.props,\n          parentMenu = _this$props5.parentMenu,\n          eventKey = _this$props5.eventKey,\n          onItemHover = _this$props5.onItemHover,\n          onTitleMouseLeave = _this$props5.onTitleMouseLeave;\n      parentMenu.subMenuInstance = SubMenu_assertThisInitialized(_this);\n      onItemHover({\n        key: eventKey,\n        hover: false\n      });\n      onTitleMouseLeave({\n        key: eventKey,\n        domEvent: e\n      });\n    };\n\n    _this.onTitleClick = function (e) {\n      var _assertThisInitialize = SubMenu_assertThisInitialized(_this),\n          props = _assertThisInitialize.props;\n\n      props.onTitleClick({\n        key: props.eventKey,\n        domEvent: e\n      });\n\n      if (props.triggerSubMenuAction === 'hover') {\n        return;\n      }\n\n      _this.triggerOpenChange(!props.isOpen, 'click');\n\n      SubMenu_updateDefaultActiveFirst(props.store, _this.props.eventKey, false);\n    };\n\n    _this.onSubMenuClick = function (info) {\n      // in the case of overflowed submenu\n      // onClick is not copied over\n      if (typeof _this.props.onClick === 'function') {\n        _this.props.onClick(_this.addKeyPath(info));\n      }\n    };\n\n    _this.onSelect = function (info) {\n      _this.props.onSelect(info);\n    };\n\n    _this.onDeselect = function (info) {\n      _this.props.onDeselect(info);\n    };\n\n    _this.getPrefixCls = function () {\n      return \"\".concat(_this.props.rootPrefixCls, \"-submenu\");\n    };\n\n    _this.getActiveClassName = function () {\n      return \"\".concat(_this.getPrefixCls(), \"-active\");\n    };\n\n    _this.getDisabledClassName = function () {\n      return \"\".concat(_this.getPrefixCls(), \"-disabled\");\n    };\n\n    _this.getSelectedClassName = function () {\n      return \"\".concat(_this.getPrefixCls(), \"-selected\");\n    };\n\n    _this.getOpenClassName = function () {\n      return \"\".concat(_this.props.rootPrefixCls, \"-submenu-open\");\n    };\n\n    _this.saveMenuInstance = function (c) {\n      // children menu instance\n      _this.menuInstance = c;\n    };\n\n    _this.addKeyPath = function (info) {\n      return SubMenu_objectSpread({}, info, {\n        keyPath: (info.keyPath || []).concat(_this.props.eventKey)\n      });\n    };\n\n    _this.triggerOpenChange = function (open, type) {\n      var key = _this.props.eventKey;\n\n      var openChange = function openChange() {\n        _this.onOpenChange({\n          key: key,\n          item: SubMenu_assertThisInitialized(_this),\n          trigger: type,\n          open: open\n        });\n      };\n\n      if (type === 'mouseenter') {\n        // make sure mouseenter happen after other menu item's mouseleave\n        _this.mouseenterTimeout = setTimeout(function () {\n          openChange();\n        }, 0);\n      } else {\n        openChange();\n      }\n    };\n\n    _this.isChildrenSelected = function () {\n      var ret = {\n        find: false\n      };\n      loopMenuItemRecursively(_this.props.children, _this.props.selectedKeys, ret);\n      return ret.find;\n    };\n\n    _this.isOpen = function () {\n      return _this.props.openKeys.indexOf(_this.props.eventKey) !== -1;\n    };\n\n    _this.adjustWidth = function () {\n      /* istanbul ignore if */\n      if (!_this.subMenuTitle || !_this.menuInstance) {\n        return;\n      }\n\n      var popupMenu = external_react_dom_default.a.findDOMNode(_this.menuInstance);\n\n      if (popupMenu.offsetWidth >= _this.subMenuTitle.offsetWidth) {\n        return;\n      }\n      /* istanbul ignore next */\n\n\n      popupMenu.style.minWidth = \"\".concat(_this.subMenuTitle.offsetWidth, \"px\");\n    };\n\n    _this.saveSubMenuTitle = function (subMenuTitle) {\n      _this.subMenuTitle = subMenuTitle;\n    };\n\n    var store = props.store,\n        eventKey = props.eventKey;\n\n    var _store$getState = store.getState(),\n        defaultActiveFirst = _store$getState.defaultActiveFirst;\n\n    _this.isRootMenu = false;\n    var value = false;\n\n    if (defaultActiveFirst) {\n      value = defaultActiveFirst[eventKey];\n    }\n\n    SubMenu_updateDefaultActiveFirst(store, eventKey, value);\n    return _this;\n  }\n\n  SubMenu_createClass(SubMenu, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.componentDidUpdate();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      var _this2 = this;\n\n      var _this$props6 = this.props,\n          mode = _this$props6.mode,\n          parentMenu = _this$props6.parentMenu,\n          manualRef = _this$props6.manualRef; // invoke customized ref to expose component to mixin\n\n      if (manualRef) {\n        manualRef(this);\n      }\n\n      if (mode !== 'horizontal' || !parentMenu.isRootMenu || !this.props.isOpen) {\n        return;\n      }\n\n      this.minWidthTimeout = setTimeout(function () {\n        return _this2.adjustWidth();\n      }, 0);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var _this$props7 = this.props,\n          onDestroy = _this$props7.onDestroy,\n          eventKey = _this$props7.eventKey;\n\n      if (onDestroy) {\n        onDestroy(eventKey);\n      }\n      /* istanbul ignore if */\n\n\n      if (this.minWidthTimeout) {\n        clearTimeout(this.minWidthTimeout);\n      }\n      /* istanbul ignore if */\n\n\n      if (this.mouseenterTimeout) {\n        clearTimeout(this.mouseenterTimeout);\n      }\n    }\n  }, {\n    key: \"renderChildren\",\n    value: function renderChildren(children) {\n      var props = this.props;\n      var baseProps = {\n        mode: props.mode === 'horizontal' ? 'vertical' : props.mode,\n        visible: this.props.isOpen,\n        level: props.level + 1,\n        inlineIndent: props.inlineIndent,\n        focusable: false,\n        onClick: this.onSubMenuClick,\n        onSelect: this.onSelect,\n        onDeselect: this.onDeselect,\n        onDestroy: this.onDestroy,\n        selectedKeys: props.selectedKeys,\n        eventKey: \"\".concat(props.eventKey, \"-menu-\"),\n        openKeys: props.openKeys,\n        openTransitionName: props.openTransitionName,\n        openAnimation: props.openAnimation,\n        onOpenChange: this.onOpenChange,\n        subMenuOpenDelay: props.subMenuOpenDelay,\n        parentMenu: this,\n        subMenuCloseDelay: props.subMenuCloseDelay,\n        forceSubMenuRender: props.forceSubMenuRender,\n        triggerSubMenuAction: props.triggerSubMenuAction,\n        builtinPlacements: props.builtinPlacements,\n        defaultActiveFirst: props.store.getState().defaultActiveFirst[getMenuIdFromSubMenuEventKey(props.eventKey)],\n        multiple: props.multiple,\n        prefixCls: props.rootPrefixCls,\n        id: this.internalMenuId,\n        manualRef: this.saveMenuInstance,\n        itemIcon: props.itemIcon,\n        expandIcon: props.expandIcon\n      };\n      var haveRendered = this.haveRendered;\n      this.haveRendered = true;\n      this.haveOpened = this.haveOpened || baseProps.visible || baseProps.forceSubMenuRender; // never rendered not planning to, don't render\n\n      if (!this.haveOpened) {\n        return external_react_default.a.createElement(\"div\", null);\n      } // don't show transition on first rendering (no animation for opened menu)\n      // show appear transition if it's not visible (not sure why)\n      // show appear transition if it's not inline mode\n\n\n      var transitionAppear = haveRendered || !baseProps.visible || baseProps.mode !== 'inline';\n      baseProps.className = \" \".concat(baseProps.prefixCls, \"-sub\");\n      var animProps = {};\n\n      if (baseProps.openTransitionName) {\n        animProps.transitionName = baseProps.openTransitionName;\n      } else if (SubMenu_typeof(baseProps.openAnimation) === 'object') {\n        animProps.animation = SubMenu_objectSpread({}, baseProps.openAnimation);\n\n        if (!transitionAppear) {\n          delete animProps.animation.appear;\n        }\n      }\n\n      return external_react_default.a.createElement(Animate[\"a\" /* default */], Object.assign({}, animProps, {\n        showProp: \"visible\",\n        component: \"\",\n        transitionAppear: transitionAppear\n      }), external_react_default.a.createElement(es_SubPopupMenu, Object.assign({}, baseProps, {\n        id: this.internalMenuId\n      }), children));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames;\n\n      var props = SubMenu_objectSpread({}, this.props);\n\n      var isOpen = props.isOpen;\n      var prefixCls = this.getPrefixCls();\n      var isInlineMode = props.mode === 'inline';\n      var className = node_modules_classnames_default()(prefixCls, \"\".concat(prefixCls, \"-\").concat(props.mode), (_classNames = {}, SubMenu_defineProperty(_classNames, props.className, !!props.className), SubMenu_defineProperty(_classNames, this.getOpenClassName(), isOpen), SubMenu_defineProperty(_classNames, this.getActiveClassName(), props.active || isOpen && !isInlineMode), SubMenu_defineProperty(_classNames, this.getDisabledClassName(), props.disabled), SubMenu_defineProperty(_classNames, this.getSelectedClassName(), this.isChildrenSelected()), _classNames));\n\n      if (!this.internalMenuId) {\n        if (props.eventKey) {\n          this.internalMenuId = \"\".concat(props.eventKey, \"$Menu\");\n        } else {\n          guid += 1;\n          this.internalMenuId = \"$__$\".concat(guid, \"$Menu\");\n        }\n      }\n\n      var mouseEvents = {};\n      var titleClickEvents = {};\n      var titleMouseEvents = {};\n\n      if (!props.disabled) {\n        mouseEvents = {\n          onMouseLeave: this.onMouseLeave,\n          onMouseEnter: this.onMouseEnter\n        }; // only works in title, not outer li\n\n        titleClickEvents = {\n          onClick: this.onTitleClick\n        };\n        titleMouseEvents = {\n          onMouseEnter: this.onTitleMouseEnter,\n          onMouseLeave: this.onTitleMouseLeave\n        };\n      }\n\n      var style = {};\n\n      if (isInlineMode) {\n        style.paddingLeft = props.inlineIndent * props.level;\n      }\n\n      var ariaOwns = {}; // only set aria-owns when menu is open\n      // otherwise it would be an invalid aria-owns value\n      // since corresponding node cannot be found\n\n      if (this.props.isOpen) {\n        ariaOwns = {\n          'aria-owns': this.internalMenuId\n        };\n      } // expand custom icon should NOT be displayed in menu with horizontal mode.\n\n\n      var icon = null;\n\n      if (props.mode !== 'horizontal') {\n        icon = this.props.expandIcon; // ReactNode\n\n        if (typeof this.props.expandIcon === 'function') {\n          icon = external_react_default.a.createElement(this.props.expandIcon, SubMenu_objectSpread({}, this.props));\n        }\n      }\n\n      var title = external_react_default.a.createElement(\"div\", Object.assign({\n        ref: this.saveSubMenuTitle,\n        style: style,\n        className: \"\".concat(prefixCls, \"-title\")\n      }, titleMouseEvents, titleClickEvents, {\n        \"aria-expanded\": isOpen\n      }, ariaOwns, {\n        \"aria-haspopup\": \"true\",\n        title: typeof props.title === 'string' ? props.title : undefined\n      }), props.title, icon || external_react_default.a.createElement(\"i\", {\n        className: \"\".concat(prefixCls, \"-arrow\")\n      }));\n      var children = this.renderChildren(props.children);\n      var getPopupContainer = props.parentMenu.isRootMenu ? props.parentMenu.props.getPopupContainer : function (triggerNode) {\n        return triggerNode.parentNode;\n      };\n      var popupPlacement = popupPlacementMap[props.mode];\n      var popupAlign = props.popupOffset ? {\n        offset: props.popupOffset\n      } : {};\n      var popupClassName = props.mode === 'inline' ? '' : props.popupClassName;\n      var disabled = props.disabled,\n          triggerSubMenuAction = props.triggerSubMenuAction,\n          subMenuOpenDelay = props.subMenuOpenDelay,\n          forceSubMenuRender = props.forceSubMenuRender,\n          subMenuCloseDelay = props.subMenuCloseDelay,\n          builtinPlacements = props.builtinPlacements;\n      menuAllProps.forEach(function (key) {\n        return delete props[key];\n      }); // Set onClick to null, to ignore propagated onClick event\n\n      delete props.onClick;\n      return external_react_default.a.createElement(\"li\", Object.assign({}, props, mouseEvents, {\n        className: className,\n        role: \"menuitem\"\n      }), isInlineMode && title, isInlineMode && children, !isInlineMode && external_react_default.a.createElement(rc_trigger_es[\"a\" /* default */], {\n        prefixCls: prefixCls,\n        popupClassName: \"\".concat(prefixCls, \"-popup \").concat(popupClassName),\n        getPopupContainer: getPopupContainer,\n        builtinPlacements: Object.assign({}, es_placements, builtinPlacements),\n        popupPlacement: popupPlacement,\n        popupVisible: isOpen,\n        popupAlign: popupAlign,\n        popup: children,\n        action: disabled ? [] : [triggerSubMenuAction],\n        mouseEnterDelay: subMenuOpenDelay,\n        mouseLeaveDelay: subMenuCloseDelay,\n        onPopupVisibleChange: this.onPopupVisibleChange,\n        forceRender: forceSubMenuRender\n      }, title));\n    }\n  }]);\n\n  return SubMenu;\n}(external_react_default.a.Component);\nSubMenu_SubMenu.defaultProps = {\n  onMouseEnter: noop,\n  onMouseLeave: noop,\n  onTitleMouseEnter: noop,\n  onTitleMouseLeave: noop,\n  onTitleClick: noop,\n  manualRef: noop,\n  mode: 'vertical',\n  title: ''\n};\nvar connected = Object(mini_store_lib[\"connect\"])(function (_ref, _ref2) {\n  var openKeys = _ref.openKeys,\n      activeKey = _ref.activeKey,\n      selectedKeys = _ref.selectedKeys;\n  var eventKey = _ref2.eventKey,\n      subMenuKey = _ref2.subMenuKey;\n  return {\n    isOpen: openKeys.indexOf(eventKey) > -1,\n    active: activeKey[subMenuKey] === eventKey,\n    selectedKeys: selectedKeys\n  };\n})(SubMenu_SubMenu);\nconnected.isSubMenu = true;\n/* harmony default export */ var es_SubMenu = (connected);\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/DOMWrap.js\nfunction DOMWrap_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { DOMWrap_typeof = function _typeof(obj) { return typeof obj; }; } else { DOMWrap_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return DOMWrap_typeof(obj); }\n\nfunction DOMWrap_toConsumableArray(arr) { return DOMWrap_arrayWithoutHoles(arr) || DOMWrap_iterableToArray(arr) || DOMWrap_nonIterableSpread(); }\n\nfunction DOMWrap_nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction DOMWrap_iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction DOMWrap_arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction DOMWrap_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 DOMWrap_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { DOMWrap_ownKeys(source, true).forEach(function (key) { DOMWrap_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { DOMWrap_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction DOMWrap_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\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; }\n\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; }\n\nfunction DOMWrap_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction DOMWrap_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 DOMWrap_createClass(Constructor, protoProps, staticProps) { if (protoProps) DOMWrap_defineProperties(Constructor.prototype, protoProps); if (staticProps) DOMWrap_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction DOMWrap_possibleConstructorReturn(self, call) { if (call && (DOMWrap_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return DOMWrap_assertThisInitialized(self); }\n\nfunction DOMWrap_getPrototypeOf(o) { DOMWrap_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return DOMWrap_getPrototypeOf(o); }\n\nfunction DOMWrap_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction DOMWrap_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) DOMWrap_setPrototypeOf(subClass, superClass); }\n\nfunction DOMWrap_setPrototypeOf(o, p) { DOMWrap_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return DOMWrap_setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nvar MENUITEM_OVERFLOWED_CLASSNAME = 'menuitem-overflowed';\nvar FLOAT_PRECISION_ADJUST = 0.5; // Fix ssr\n\nif (canUseDOM) {\n  // eslint-disable-next-line global-require\n  __webpack_require__(1361);\n}\n\nvar DOMWrap_DOMWrap =\n/*#__PURE__*/\nfunction (_React$Component) {\n  DOMWrap_inherits(DOMWrap, _React$Component);\n\n  function DOMWrap() {\n    var _this;\n\n    DOMWrap_classCallCheck(this, DOMWrap);\n\n    _this = DOMWrap_possibleConstructorReturn(this, DOMWrap_getPrototypeOf(DOMWrap).apply(this, arguments));\n    _this.resizeObserver = null;\n    _this.mutationObserver = null; // original scroll size of the list\n\n    _this.originalTotalWidth = 0; // copy of overflowed items\n\n    _this.overflowedItems = []; // cache item of the original items (so we can track the size and order)\n\n    _this.menuItemSizes = [];\n    _this.state = {\n      lastVisibleIndex: undefined\n    }; // get all valid menuItem nodes\n\n    _this.getMenuItemNodes = function () {\n      var prefixCls = _this.props.prefixCls;\n      var ul = external_react_dom_default.a.findDOMNode(DOMWrap_assertThisInitialized(_this));\n\n      if (!ul) {\n        return [];\n      } // filter out all overflowed indicator placeholder\n\n\n      return [].slice.call(ul.children).filter(function (node) {\n        return node.className.split(' ').indexOf(\"\".concat(prefixCls, \"-overflowed-submenu\")) < 0;\n      });\n    };\n\n    _this.getOverflowedSubMenuItem = function (keyPrefix, overflowedItems, renderPlaceholder) {\n      var _this$props = _this.props,\n          overflowedIndicator = _this$props.overflowedIndicator,\n          level = _this$props.level,\n          mode = _this$props.mode,\n          prefixCls = _this$props.prefixCls,\n          theme = _this$props.theme;\n\n      if (level !== 1 || mode !== 'horizontal') {\n        return null;\n      } // put all the overflowed item inside a submenu\n      // with a title of overflow indicator ('...')\n\n\n      var copy = _this.props.children[0];\n\n      var _copy$props = copy.props,\n          throwAway = _copy$props.children,\n          title = _copy$props.title,\n          propStyle = _copy$props.style,\n          rest = _objectWithoutProperties(_copy$props, [\"children\", \"title\", \"style\"]);\n\n      var style = DOMWrap_objectSpread({}, propStyle);\n\n      var key = \"\".concat(keyPrefix, \"-overflowed-indicator\");\n      var eventKey = \"\".concat(keyPrefix, \"-overflowed-indicator\");\n\n      if (overflowedItems.length === 0 && renderPlaceholder !== true) {\n        style = DOMWrap_objectSpread({}, style, {\n          display: 'none'\n        });\n      } else if (renderPlaceholder) {\n        style = DOMWrap_objectSpread({}, style, {\n          visibility: 'hidden',\n          // prevent from taking normal dom space\n          position: 'absolute'\n        });\n        key = \"\".concat(key, \"-placeholder\");\n        eventKey = \"\".concat(eventKey, \"-placeholder\");\n      }\n\n      var popupClassName = theme ? \"\".concat(prefixCls, \"-\").concat(theme) : '';\n      var props = {};\n      menuAllProps.forEach(function (k) {\n        if (rest[k] !== undefined) {\n          props[k] = rest[k];\n        }\n      });\n      return external_react_default.a.createElement(es_SubMenu, Object.assign({\n        title: overflowedIndicator,\n        className: \"\".concat(prefixCls, \"-overflowed-submenu\"),\n        popupClassName: popupClassName\n      }, props, {\n        key: key,\n        eventKey: eventKey,\n        disabled: false,\n        style: style\n      }), overflowedItems);\n    }; // memorize rendered menuSize\n\n\n    _this.setChildrenWidthAndResize = function () {\n      if (_this.props.mode !== 'horizontal') {\n        return;\n      }\n\n      var ul = external_react_dom_default.a.findDOMNode(DOMWrap_assertThisInitialized(_this));\n\n      if (!ul) {\n        return;\n      }\n\n      var ulChildrenNodes = ul.children;\n\n      if (!ulChildrenNodes || ulChildrenNodes.length === 0) {\n        return;\n      }\n\n      var lastOverflowedIndicatorPlaceholder = ul.children[ulChildrenNodes.length - 1]; // need last overflowed indicator for calculating length;\n\n      setStyle(lastOverflowedIndicatorPlaceholder, 'display', 'inline-block');\n\n      var menuItemNodes = _this.getMenuItemNodes(); // reset display attribute for all hidden elements caused by overflow to calculate updated width\n      // and then reset to original state after width calculation\n\n\n      var overflowedItems = menuItemNodes.filter(function (c) {\n        return c.className.split(' ').indexOf(MENUITEM_OVERFLOWED_CLASSNAME) >= 0;\n      });\n      overflowedItems.forEach(function (c) {\n        setStyle(c, 'display', 'inline-block');\n      });\n      _this.menuItemSizes = menuItemNodes.map(function (c) {\n        return getWidth(c);\n      });\n      overflowedItems.forEach(function (c) {\n        setStyle(c, 'display', 'none');\n      });\n      _this.overflowedIndicatorWidth = getWidth(ul.children[ul.children.length - 1]);\n      _this.originalTotalWidth = _this.menuItemSizes.reduce(function (acc, cur) {\n        return acc + cur;\n      }, 0);\n\n      _this.handleResize(); // prevent the overflowed indicator from taking space;\n\n\n      setStyle(lastOverflowedIndicatorPlaceholder, 'display', 'none');\n    };\n\n    _this.handleResize = function () {\n      if (_this.props.mode !== 'horizontal') {\n        return;\n      }\n\n      var ul = external_react_dom_default.a.findDOMNode(DOMWrap_assertThisInitialized(_this));\n\n      if (!ul) {\n        return;\n      }\n\n      var width = getWidth(ul);\n      _this.overflowedItems = [];\n      var currentSumWidth = 0; // index for last visible child in horizontal mode\n\n      var lastVisibleIndex; // float number comparison could be problematic\n      // e.g. 0.1 + 0.2 > 0.3 =====> true\n      // thus using FLOAT_PRECISION_ADJUST as buffer to help the situation\n\n      if (_this.originalTotalWidth > width + FLOAT_PRECISION_ADJUST) {\n        lastVisibleIndex = -1;\n\n        _this.menuItemSizes.forEach(function (liWidth) {\n          currentSumWidth += liWidth;\n\n          if (currentSumWidth + _this.overflowedIndicatorWidth <= width) {\n            lastVisibleIndex += 1;\n          }\n        });\n      }\n\n      _this.setState({\n        lastVisibleIndex: lastVisibleIndex\n      });\n    };\n\n    return _this;\n  }\n\n  DOMWrap_createClass(DOMWrap, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      this.setChildrenWidthAndResize();\n\n      if (this.props.level === 1 && this.props.mode === 'horizontal') {\n        var menuUl = external_react_dom_default.a.findDOMNode(this);\n\n        if (!menuUl) {\n          return;\n        }\n\n        this.resizeObserver = new ResizeObserver_es[\"a\" /* default */](function (entries) {\n          entries.forEach(_this2.setChildrenWidthAndResize);\n        });\n        [].slice.call(menuUl.children).concat(menuUl).forEach(function (el) {\n          _this2.resizeObserver.observe(el);\n        });\n\n        if (typeof MutationObserver !== 'undefined') {\n          this.mutationObserver = new MutationObserver(function () {\n            _this2.resizeObserver.disconnect();\n\n            [].slice.call(menuUl.children).concat(menuUl).forEach(function (el) {\n              _this2.resizeObserver.observe(el);\n            });\n\n            _this2.setChildrenWidthAndResize();\n          });\n          this.mutationObserver.observe(menuUl, {\n            attributes: false,\n            childList: true,\n            subTree: false\n          });\n        }\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.resizeObserver) {\n        this.resizeObserver.disconnect();\n      }\n\n      if (this.mutationObserver) {\n        this.resizeObserver.disconnect();\n      }\n    }\n  }, {\n    key: \"renderChildren\",\n    value: function renderChildren(children) {\n      var _this3 = this;\n\n      // need to take care of overflowed items in horizontal mode\n      var lastVisibleIndex = this.state.lastVisibleIndex;\n      return (children || []).reduce(function (acc, childNode, index) {\n        var item = childNode;\n\n        if (_this3.props.mode === 'horizontal') {\n          var overflowed = _this3.getOverflowedSubMenuItem(childNode.props.eventKey, []);\n\n          if (lastVisibleIndex !== undefined && _this3.props.className.indexOf(\"\".concat(_this3.props.prefixCls, \"-root\")) !== -1) {\n            if (index > lastVisibleIndex) {\n              item = external_react_default.a.cloneElement(childNode, // 这里修改 eventKey 是为了防止隐藏状态下还会触发 openkeys 事件\n              {\n                style: {\n                  display: 'none'\n                },\n                eventKey: \"\".concat(childNode.props.eventKey, \"-hidden\"),\n\n                /**\n                 * Legacy code. Here `className` never used:\n                 * https://github.com/react-component/menu/commit/4cd6b49fce9d116726f4ea00dda85325d6f26500#diff-e2fa48f75c2dd2318295cde428556a76R240\n                 */\n                className: \"\".concat(MENUITEM_OVERFLOWED_CLASSNAME)\n              });\n            }\n\n            if (index === lastVisibleIndex + 1) {\n              _this3.overflowedItems = children.slice(lastVisibleIndex + 1).map(function (c) {\n                return external_react_default.a.cloneElement(c, // children[index].key will become '.$key' in clone by default,\n                // we have to overwrite with the correct key explicitly\n                {\n                  key: c.props.eventKey,\n                  mode: 'vertical-left'\n                });\n              });\n              overflowed = _this3.getOverflowedSubMenuItem(childNode.props.eventKey, _this3.overflowedItems);\n            }\n          }\n\n          var ret = [].concat(DOMWrap_toConsumableArray(acc), [overflowed, item]);\n\n          if (index === children.length - 1) {\n            // need a placeholder for calculating overflowed indicator width\n            ret.push(_this3.getOverflowedSubMenuItem(childNode.props.eventKey, [], true));\n          }\n\n          return ret;\n        }\n\n        return [].concat(DOMWrap_toConsumableArray(acc), [item]);\n      }, []);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          hiddenClassName = _this$props2.hiddenClassName,\n          visible = _this$props2.visible,\n          prefixCls = _this$props2.prefixCls,\n          overflowedIndicator = _this$props2.overflowedIndicator,\n          mode = _this$props2.mode,\n          level = _this$props2.level,\n          tag = _this$props2.tag,\n          children = _this$props2.children,\n          theme = _this$props2.theme,\n          rest = _objectWithoutProperties(_this$props2, [\"hiddenClassName\", \"visible\", \"prefixCls\", \"overflowedIndicator\", \"mode\", \"level\", \"tag\", \"children\", \"theme\"]);\n\n      if (!visible) {\n        rest.className += \" \".concat(hiddenClassName);\n      }\n\n      var Tag = tag;\n      return external_react_default.a.createElement(Tag, Object.assign({}, rest), this.renderChildren(children));\n    }\n  }]);\n\n  return DOMWrap;\n}(external_react_default.a.Component);\n\nDOMWrap_DOMWrap.defaultProps = {\n  tag: 'div',\n  className: ''\n};\n/* harmony default export */ var es_DOMWrap = (DOMWrap_DOMWrap);\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/SubPopupMenu.js\nfunction SubPopupMenu_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { SubPopupMenu_typeof = function _typeof(obj) { return typeof obj; }; } else { SubPopupMenu_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return SubPopupMenu_typeof(obj); }\n\nfunction SubPopupMenu_extends() { SubPopupMenu_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 SubPopupMenu_extends.apply(this, arguments); }\n\nfunction SubPopupMenu_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction SubPopupMenu_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 SubPopupMenu_createClass(Constructor, protoProps, staticProps) { if (protoProps) SubPopupMenu_defineProperties(Constructor.prototype, protoProps); if (staticProps) SubPopupMenu_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction SubPopupMenu_possibleConstructorReturn(self, call) { if (call && (SubPopupMenu_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return SubPopupMenu_assertThisInitialized(self); }\n\nfunction SubPopupMenu_getPrototypeOf(o) { SubPopupMenu_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SubPopupMenu_getPrototypeOf(o); }\n\nfunction SubPopupMenu_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction SubPopupMenu_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) SubPopupMenu_setPrototypeOf(subClass, superClass); }\n\nfunction SubPopupMenu_setPrototypeOf(o, p) { SubPopupMenu_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SubPopupMenu_setPrototypeOf(o, p); }\n\nfunction SubPopupMenu_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 SubPopupMenu_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { SubPopupMenu_ownKeys(source, true).forEach(function (key) { SubPopupMenu_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { SubPopupMenu_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction SubPopupMenu_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\n\n\n\n\n\n\nfunction allDisabled(arr) {\n  if (!arr.length) {\n    return true;\n  }\n\n  return arr.every(function (c) {\n    return !!c.props.disabled;\n  });\n}\n\nfunction updateActiveKey(store, menuId, activeKey) {\n  var state = store.getState();\n  store.setState({\n    activeKey: SubPopupMenu_objectSpread({}, state.activeKey, SubPopupMenu_defineProperty({}, menuId, activeKey))\n  });\n}\n\nfunction getEventKey(props) {\n  // when eventKey not available ,it's menu and return menu id '0-menu-'\n  return props.eventKey || '0-menu-';\n}\n\nfunction getActiveKey(props, originalActiveKey) {\n  var activeKey = originalActiveKey;\n  var children = props.children,\n      eventKey = props.eventKey;\n\n  if (activeKey) {\n    var found;\n    loopMenuItem(children, function (c, i) {\n      if (c && c.props && !c.props.disabled && activeKey === getKeyFromChildrenIndex(c, eventKey, i)) {\n        found = true;\n      }\n    });\n\n    if (found) {\n      return activeKey;\n    }\n  }\n\n  activeKey = null;\n\n  if (props.defaultActiveFirst) {\n    loopMenuItem(children, function (c, i) {\n      if (!activeKey && c && !c.props.disabled) {\n        activeKey = getKeyFromChildrenIndex(c, eventKey, i);\n      }\n    });\n    return activeKey;\n  }\n\n  return activeKey;\n}\nfunction SubPopupMenu_saveRef(c) {\n  if (c) {\n    var index = this.instanceArray.indexOf(c);\n\n    if (index !== -1) {\n      // update component if it's already inside instanceArray\n      this.instanceArray[index] = c;\n    } else {\n      // add component if it's not in instanceArray yet;\n      this.instanceArray.push(c);\n    }\n  }\n}\nvar SubPopupMenu_SubPopupMenu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  SubPopupMenu_inherits(SubPopupMenu, _React$Component);\n\n  function SubPopupMenu(props) {\n    var _this;\n\n    SubPopupMenu_classCallCheck(this, SubPopupMenu);\n\n    _this = SubPopupMenu_possibleConstructorReturn(this, SubPopupMenu_getPrototypeOf(SubPopupMenu).call(this, props));\n    /**\n     * all keyboard events callbacks run from here at first\n     *\n     * note:\n     *  This legacy code that `onKeyDown` is called by parent instead of dom self.\n     *  which need return code to check if this event is handled\n     */\n\n    _this.onKeyDown = function (e, callback) {\n      var keyCode = e.keyCode;\n      var handled;\n\n      _this.getFlatInstanceArray().forEach(function (obj) {\n        if (obj && obj.props.active && obj.onKeyDown) {\n          handled = obj.onKeyDown(e);\n        }\n      });\n\n      if (handled) {\n        return 1;\n      }\n\n      var activeItem = null;\n\n      if (keyCode === KeyCode[\"a\" /* default */].UP || keyCode === KeyCode[\"a\" /* default */].DOWN) {\n        activeItem = _this.step(keyCode === KeyCode[\"a\" /* default */].UP ? -1 : 1);\n      }\n\n      if (activeItem) {\n        e.preventDefault();\n        updateActiveKey(_this.props.store, getEventKey(_this.props), activeItem.props.eventKey);\n\n        if (typeof callback === 'function') {\n          callback(activeItem);\n        }\n\n        return 1;\n      }\n\n      return undefined;\n    };\n\n    _this.onItemHover = function (e) {\n      var key = e.key,\n          hover = e.hover;\n      updateActiveKey(_this.props.store, getEventKey(_this.props), hover ? key : null);\n    };\n\n    _this.onDeselect = function (selectInfo) {\n      _this.props.onDeselect(selectInfo);\n    };\n\n    _this.onSelect = function (selectInfo) {\n      _this.props.onSelect(selectInfo);\n    };\n\n    _this.onClick = function (e) {\n      _this.props.onClick(e);\n    };\n\n    _this.onOpenChange = function (e) {\n      _this.props.onOpenChange(e);\n    };\n\n    _this.onDestroy = function (key) {\n      /* istanbul ignore next */\n      _this.props.onDestroy(key);\n    };\n\n    _this.getFlatInstanceArray = function () {\n      return _this.instanceArray;\n    };\n\n    _this.getOpenTransitionName = function () {\n      return _this.props.openTransitionName;\n    };\n\n    _this.step = function (direction) {\n      var children = _this.getFlatInstanceArray();\n\n      var activeKey = _this.props.store.getState().activeKey[getEventKey(_this.props)];\n\n      var len = children.length;\n\n      if (!len) {\n        return null;\n      }\n\n      if (direction < 0) {\n        children = children.concat().reverse();\n      } // find current activeIndex\n\n\n      var activeIndex = -1;\n      children.every(function (c, ci) {\n        if (c && c.props.eventKey === activeKey) {\n          activeIndex = ci;\n          return false;\n        }\n\n        return true;\n      });\n\n      if (!_this.props.defaultActiveFirst && activeIndex !== -1 && allDisabled(children.slice(activeIndex, len - 1))) {\n        return undefined;\n      }\n\n      var start = (activeIndex + 1) % len;\n      var i = start;\n\n      do {\n        var child = children[i];\n\n        if (!child || child.props.disabled) {\n          i = (i + 1) % len;\n        } else {\n          return child;\n        }\n      } while (i !== start);\n\n      return null;\n    };\n\n    _this.renderCommonMenuItem = function (child, i, extraProps) {\n      var state = _this.props.store.getState();\n\n      var _assertThisInitialize = SubPopupMenu_assertThisInitialized(_this),\n          props = _assertThisInitialize.props;\n\n      var key = getKeyFromChildrenIndex(child, props.eventKey, i);\n      var childProps = child.props; // https://github.com/ant-design/ant-design/issues/11517#issuecomment-477403055\n\n      if (!childProps || typeof child.type === 'string') {\n        return child;\n      }\n\n      var isActive = key === state.activeKey;\n\n      var newChildProps = SubPopupMenu_objectSpread({\n        mode: childProps.mode || props.mode,\n        level: props.level,\n        inlineIndent: props.inlineIndent,\n        renderMenuItem: _this.renderMenuItem,\n        rootPrefixCls: props.prefixCls,\n        index: i,\n        parentMenu: props.parentMenu,\n        // customized ref function, need to be invoked manually in child's componentDidMount\n        manualRef: childProps.disabled ? undefined : Object(createChainedFunction[\"a\" /* default */])(child.ref, SubPopupMenu_saveRef.bind(SubPopupMenu_assertThisInitialized(_this))),\n        eventKey: key,\n        active: !childProps.disabled && isActive,\n        multiple: props.multiple,\n        onClick: function onClick(e) {\n          (childProps.onClick || noop)(e);\n\n          _this.onClick(e);\n        },\n        onItemHover: _this.onItemHover,\n        openTransitionName: _this.getOpenTransitionName(),\n        openAnimation: props.openAnimation,\n        subMenuOpenDelay: props.subMenuOpenDelay,\n        subMenuCloseDelay: props.subMenuCloseDelay,\n        forceSubMenuRender: props.forceSubMenuRender,\n        onOpenChange: _this.onOpenChange,\n        onDeselect: _this.onDeselect,\n        onSelect: _this.onSelect,\n        builtinPlacements: props.builtinPlacements,\n        itemIcon: childProps.itemIcon || _this.props.itemIcon,\n        expandIcon: childProps.expandIcon || _this.props.expandIcon\n      }, extraProps); // ref: https://github.com/ant-design/ant-design/issues/13943\n\n\n      if (props.mode === 'inline' || util_isMobileDevice()) {\n        newChildProps.triggerSubMenuAction = 'click';\n      }\n\n      return external_react_default.a.cloneElement(child, newChildProps);\n    };\n\n    _this.renderMenuItem = function (c, i, subMenuKey) {\n      /* istanbul ignore if */\n      if (!c) {\n        return null;\n      }\n\n      var state = _this.props.store.getState();\n\n      var extraProps = {\n        openKeys: state.openKeys,\n        selectedKeys: state.selectedKeys,\n        triggerSubMenuAction: _this.props.triggerSubMenuAction,\n        subMenuKey: subMenuKey\n      };\n      return _this.renderCommonMenuItem(c, i, extraProps);\n    };\n\n    props.store.setState({\n      activeKey: SubPopupMenu_objectSpread({}, props.store.getState().activeKey, SubPopupMenu_defineProperty({}, props.eventKey, getActiveKey(props, props.activeKey)))\n    });\n    _this.instanceArray = [];\n    return _this;\n  }\n\n  SubPopupMenu_createClass(SubPopupMenu, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      // invoke customized ref to expose component to mixin\n      if (this.props.manualRef) {\n        this.props.manualRef(this);\n      }\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      return this.props.visible || nextProps.visible;\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var props = this.props;\n      var originalActiveKey = 'activeKey' in props ? props.activeKey : props.store.getState().activeKey[getEventKey(props)];\n      var activeKey = getActiveKey(props, originalActiveKey);\n\n      if (activeKey !== originalActiveKey) {\n        updateActiveKey(props.store, getEventKey(props), activeKey);\n      } else if ('activeKey' in prevProps) {\n        // If prev activeKey is not same as current activeKey,\n        // we should set it.\n        var prevActiveKey = getActiveKey(prevProps, prevProps.activeKey);\n\n        if (activeKey !== prevActiveKey) {\n          updateActiveKey(props.store, getEventKey(props), activeKey);\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var props = SubPopupMenu_extends({}, this.props);\n\n      this.instanceArray = [];\n      var className = node_modules_classnames_default()(props.prefixCls, props.className, \"\".concat(props.prefixCls, \"-\").concat(props.mode));\n      var domProps = {\n        className: className,\n        // role could be 'select' and by default set to menu\n        role: props.role || 'menu'\n      };\n\n      if (props.id) {\n        domProps.id = props.id;\n      }\n\n      if (props.focusable) {\n        domProps.tabIndex = 0;\n        domProps.onKeyDown = this.onKeyDown;\n      }\n\n      var prefixCls = props.prefixCls,\n          eventKey = props.eventKey,\n          visible = props.visible,\n          level = props.level,\n          mode = props.mode,\n          overflowedIndicator = props.overflowedIndicator,\n          theme = props.theme;\n      menuAllProps.forEach(function (key) {\n        return delete props[key];\n      }); // Otherwise, the propagated click event will trigger another onClick\n\n      delete props.onClick;\n      return external_react_default.a.createElement(es_DOMWrap, Object.assign({}, props, {\n        prefixCls: prefixCls,\n        mode: mode,\n        tag: \"ul\",\n        level: level,\n        theme: theme,\n        hiddenClassName: \"\".concat(prefixCls, \"-hidden\"),\n        visible: visible,\n        overflowedIndicator: overflowedIndicator\n      }, domProps), external_react_default.a.Children.map(props.children, function (c, i) {\n        return _this2.renderMenuItem(c, i, eventKey || '0-menu-');\n      }));\n    }\n  }]);\n\n  return SubPopupMenu;\n}(external_react_default.a.Component);\nSubPopupMenu_SubPopupMenu.defaultProps = {\n  prefixCls: 'rc-menu',\n  className: '',\n  mode: 'vertical',\n  level: 1,\n  inlineIndent: 24,\n  visible: true,\n  focusable: true,\n  style: {},\n  manualRef: noop\n};\nvar SubPopupMenu_connected = Object(mini_store_lib[\"connect\"])()(SubPopupMenu_SubPopupMenu);\n/* harmony default export */ var es_SubPopupMenu = (SubPopupMenu_connected);\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/Menu.js\nfunction Menu_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Menu_typeof = function _typeof(obj) { return typeof obj; }; } else { Menu_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Menu_typeof(obj); }\n\nfunction Menu_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 Menu_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { Menu_ownKeys(source, true).forEach(function (key) { Menu_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { Menu_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction Menu_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\nfunction Menu_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Menu_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 Menu_createClass(Constructor, protoProps, staticProps) { if (protoProps) Menu_defineProperties(Constructor.prototype, protoProps); if (staticProps) Menu_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Menu_possibleConstructorReturn(self, call) { if (call && (Menu_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Menu_assertThisInitialized(self); }\n\nfunction Menu_getPrototypeOf(o) { Menu_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Menu_getPrototypeOf(o); }\n\nfunction Menu_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Menu_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) Menu_setPrototypeOf(subClass, superClass); }\n\nfunction Menu_setPrototypeOf(o, p) { Menu_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Menu_setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar Menu_Menu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Menu_inherits(Menu, _React$Component);\n\n  function Menu(props) {\n    var _this;\n\n    Menu_classCallCheck(this, Menu);\n\n    _this = Menu_possibleConstructorReturn(this, Menu_getPrototypeOf(Menu).call(this, props));\n\n    _this.onSelect = function (selectInfo) {\n      var _assertThisInitialize = Menu_assertThisInitialized(_this),\n          props = _assertThisInitialize.props;\n\n      if (props.selectable) {\n        // root menu\n        var _this$store$getState = _this.store.getState(),\n            _selectedKeys = _this$store$getState.selectedKeys;\n\n        var selectedKey = selectInfo.key;\n\n        if (props.multiple) {\n          _selectedKeys = _selectedKeys.concat([selectedKey]);\n        } else {\n          _selectedKeys = [selectedKey];\n        }\n\n        if (!('selectedKeys' in props)) {\n          _this.store.setState({\n            selectedKeys: _selectedKeys\n          });\n        }\n\n        props.onSelect(Menu_objectSpread({}, selectInfo, {\n          selectedKeys: _selectedKeys\n        }));\n      }\n    };\n\n    _this.onClick = function (e) {\n      _this.props.onClick(e);\n    }; // onKeyDown needs to be exposed as a instance method\n    // e.g., in rc-select, we need to navigate menu item while\n    // current active item is rc-select input box rather than the menu itself\n\n\n    _this.onKeyDown = function (e, callback) {\n      _this.innerMenu.getWrappedInstance().onKeyDown(e, callback);\n    };\n\n    _this.onOpenChange = function (event) {\n      var _assertThisInitialize2 = Menu_assertThisInitialized(_this),\n          props = _assertThisInitialize2.props;\n\n      var openKeys = _this.store.getState().openKeys.concat();\n\n      var changed = false;\n\n      var processSingle = function processSingle(e) {\n        var oneChanged = false;\n\n        if (e.open) {\n          oneChanged = openKeys.indexOf(e.key) === -1;\n\n          if (oneChanged) {\n            openKeys.push(e.key);\n          }\n        } else {\n          var index = openKeys.indexOf(e.key);\n          oneChanged = index !== -1;\n\n          if (oneChanged) {\n            openKeys.splice(index, 1);\n          }\n        }\n\n        changed = changed || oneChanged;\n      };\n\n      if (Array.isArray(event)) {\n        // batch change call\n        event.forEach(processSingle);\n      } else {\n        processSingle(event);\n      }\n\n      if (changed) {\n        if (!('openKeys' in _this.props)) {\n          _this.store.setState({\n            openKeys: openKeys\n          });\n        }\n\n        props.onOpenChange(openKeys);\n      }\n    };\n\n    _this.onDeselect = function (selectInfo) {\n      var _assertThisInitialize3 = Menu_assertThisInitialized(_this),\n          props = _assertThisInitialize3.props;\n\n      if (props.selectable) {\n        var _selectedKeys2 = _this.store.getState().selectedKeys.concat();\n\n        var selectedKey = selectInfo.key;\n\n        var index = _selectedKeys2.indexOf(selectedKey);\n\n        if (index !== -1) {\n          _selectedKeys2.splice(index, 1);\n        }\n\n        if (!('selectedKeys' in props)) {\n          _this.store.setState({\n            selectedKeys: _selectedKeys2\n          });\n        }\n\n        props.onDeselect(Menu_objectSpread({}, selectInfo, {\n          selectedKeys: _selectedKeys2\n        }));\n      }\n    };\n\n    _this.getOpenTransitionName = function () {\n      var _assertThisInitialize4 = Menu_assertThisInitialized(_this),\n          props = _assertThisInitialize4.props;\n\n      var transitionName = props.openTransitionName;\n      var animationName = props.openAnimation;\n\n      if (!transitionName && typeof animationName === 'string') {\n        transitionName = \"\".concat(props.prefixCls, \"-open-\").concat(animationName);\n      }\n\n      return transitionName;\n    };\n\n    _this.setInnerMenu = function (node) {\n      _this.innerMenu = node;\n    };\n\n    _this.isRootMenu = true;\n    var selectedKeys = props.defaultSelectedKeys;\n    var openKeys = props.defaultOpenKeys;\n\n    if ('selectedKeys' in props) {\n      selectedKeys = props.selectedKeys || [];\n    }\n\n    if ('openKeys' in props) {\n      openKeys = props.openKeys || [];\n    }\n\n    _this.store = Object(mini_store_lib[\"create\"])({\n      selectedKeys: selectedKeys,\n      openKeys: openKeys,\n      activeKey: {\n        '0-menu-': getActiveKey(props, props.activeKey)\n      }\n    });\n    return _this;\n  }\n\n  Menu_createClass(Menu, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.updateMiniStore();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.updateMiniStore();\n    }\n  }, {\n    key: \"updateMiniStore\",\n    value: function updateMiniStore() {\n      if ('selectedKeys' in this.props) {\n        this.store.setState({\n          selectedKeys: this.props.selectedKeys || []\n        });\n      }\n\n      if ('openKeys' in this.props) {\n        this.store.setState({\n          openKeys: this.props.openKeys || []\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var props = Menu_objectSpread({}, this.props);\n\n      props.className += \" \".concat(props.prefixCls, \"-root\");\n      props = Menu_objectSpread({}, props, {\n        onClick: this.onClick,\n        onOpenChange: this.onOpenChange,\n        onDeselect: this.onDeselect,\n        onSelect: this.onSelect,\n        openTransitionName: this.getOpenTransitionName(),\n        parentMenu: this\n      });\n      return external_react_default.a.createElement(mini_store_lib[\"Provider\"], {\n        store: this.store\n      }, external_react_default.a.createElement(es_SubPopupMenu, Object.assign({}, props, {\n        ref: this.setInnerMenu\n      }), this.props.children));\n    }\n  }]);\n\n  return Menu;\n}(external_react_default.a.Component);\n\nMenu_Menu.defaultProps = {\n  selectable: true,\n  onClick: noop,\n  onSelect: noop,\n  onOpenChange: noop,\n  onDeselect: noop,\n  defaultSelectedKeys: [],\n  defaultOpenKeys: [],\n  subMenuOpenDelay: 0.1,\n  subMenuCloseDelay: 0.1,\n  triggerSubMenuAction: 'hover',\n  prefixCls: 'rc-menu',\n  className: '',\n  mode: 'vertical',\n  style: {},\n  builtinPlacements: {},\n  overflowedIndicator: external_react_default.a.createElement(\"span\", null, \"\\xB7\\xB7\\xB7\")\n};\n/* harmony default export */ var es_Menu = (Menu_Menu);\n// EXTERNAL MODULE: ./node_modules/dom-scroll-into-view/lib/index.js\nvar dom_scroll_into_view_lib = __webpack_require__(226);\nvar dom_scroll_into_view_lib_default = /*#__PURE__*/__webpack_require__.n(dom_scroll_into_view_lib);\n\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/MenuItem.js\nfunction MenuItem_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { MenuItem_typeof = function _typeof(obj) { return typeof obj; }; } else { MenuItem_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return MenuItem_typeof(obj); }\n\nfunction MenuItem_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 MenuItem_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { MenuItem_ownKeys(source, true).forEach(function (key) { MenuItem_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { MenuItem_ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction MenuItem_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\nfunction MenuItem_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction MenuItem_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 MenuItem_createClass(Constructor, protoProps, staticProps) { if (protoProps) MenuItem_defineProperties(Constructor.prototype, protoProps); if (staticProps) MenuItem_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction MenuItem_possibleConstructorReturn(self, call) { if (call && (MenuItem_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return MenuItem_assertThisInitialized(self); }\n\nfunction MenuItem_getPrototypeOf(o) { MenuItem_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return MenuItem_getPrototypeOf(o); }\n\nfunction MenuItem_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction MenuItem_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) MenuItem_setPrototypeOf(subClass, superClass); }\n\nfunction MenuItem_setPrototypeOf(o, p) { MenuItem_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return MenuItem_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\nvar MenuItem_MenuItem =\n/*#__PURE__*/\nfunction (_React$Component) {\n  MenuItem_inherits(MenuItem, _React$Component);\n\n  function MenuItem() {\n    var _this;\n\n    MenuItem_classCallCheck(this, MenuItem);\n\n    _this = MenuItem_possibleConstructorReturn(this, MenuItem_getPrototypeOf(MenuItem).apply(this, arguments));\n\n    _this.onKeyDown = function (e) {\n      var keyCode = e.keyCode;\n\n      if (keyCode === KeyCode[\"a\" /* default */].ENTER) {\n        _this.onClick(e);\n\n        return true;\n      }\n\n      return undefined;\n    };\n\n    _this.onMouseLeave = function (e) {\n      var _this$props = _this.props,\n          eventKey = _this$props.eventKey,\n          onItemHover = _this$props.onItemHover,\n          onMouseLeave = _this$props.onMouseLeave;\n      onItemHover({\n        key: eventKey,\n        hover: false\n      });\n      onMouseLeave({\n        key: eventKey,\n        domEvent: e\n      });\n    };\n\n    _this.onMouseEnter = function (e) {\n      var _this$props2 = _this.props,\n          eventKey = _this$props2.eventKey,\n          onItemHover = _this$props2.onItemHover,\n          onMouseEnter = _this$props2.onMouseEnter;\n      onItemHover({\n        key: eventKey,\n        hover: true\n      });\n      onMouseEnter({\n        key: eventKey,\n        domEvent: e\n      });\n    };\n\n    _this.onClick = function (e) {\n      var _this$props3 = _this.props,\n          eventKey = _this$props3.eventKey,\n          multiple = _this$props3.multiple,\n          onClick = _this$props3.onClick,\n          onSelect = _this$props3.onSelect,\n          onDeselect = _this$props3.onDeselect,\n          isSelected = _this$props3.isSelected;\n      var info = {\n        key: eventKey,\n        keyPath: [eventKey],\n        item: MenuItem_assertThisInitialized(_this),\n        domEvent: e\n      };\n      onClick(info);\n\n      if (multiple) {\n        if (isSelected) {\n          onDeselect(info);\n        } else {\n          onSelect(info);\n        }\n      } else if (!isSelected) {\n        onSelect(info);\n      }\n    };\n\n    _this.saveNode = function (node) {\n      _this.node = node;\n    };\n\n    return _this;\n  }\n\n  MenuItem_createClass(MenuItem, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      // invoke customized ref to expose component to mixin\n      this.callRef();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props4 = this.props,\n          active = _this$props4.active,\n          parentMenu = _this$props4.parentMenu,\n          eventKey = _this$props4.eventKey; // 在 parentMenu 上层保存滚动状态，避免重复的 MenuItem key 导致滚动跳动\n      // https://github.com/ant-design/ant-design/issues/16181\n\n      if (!prevProps.active && active && (!parentMenu || !parentMenu[\"scrolled-\".concat(eventKey)])) {\n        if (this.node) {\n          dom_scroll_into_view_lib_default()(this.node, external_react_dom_default.a.findDOMNode(parentMenu), {\n            onlyScrollIfNeeded: true\n          });\n          parentMenu[\"scrolled-\".concat(eventKey)] = true;\n        }\n      } else if (parentMenu && parentMenu[\"scrolled-\".concat(eventKey)]) {\n        delete parentMenu[\"scrolled-\".concat(eventKey)];\n      }\n\n      this.callRef();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var props = this.props;\n\n      if (props.onDestroy) {\n        props.onDestroy(props.eventKey);\n      }\n    }\n  }, {\n    key: \"getPrefixCls\",\n    value: function getPrefixCls() {\n      return \"\".concat(this.props.rootPrefixCls, \"-item\");\n    }\n  }, {\n    key: \"getActiveClassName\",\n    value: function getActiveClassName() {\n      return \"\".concat(this.getPrefixCls(), \"-active\");\n    }\n  }, {\n    key: \"getSelectedClassName\",\n    value: function getSelectedClassName() {\n      return \"\".concat(this.getPrefixCls(), \"-selected\");\n    }\n  }, {\n    key: \"getDisabledClassName\",\n    value: function getDisabledClassName() {\n      return \"\".concat(this.getPrefixCls(), \"-disabled\");\n    }\n  }, {\n    key: \"callRef\",\n    value: function callRef() {\n      if (this.props.manualRef) {\n        this.props.manualRef(this);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _classNames;\n\n      var props = MenuItem_objectSpread({}, this.props);\n\n      var className = node_modules_classnames_default()(this.getPrefixCls(), props.className, (_classNames = {}, MenuItem_defineProperty(_classNames, this.getActiveClassName(), !props.disabled && props.active), MenuItem_defineProperty(_classNames, this.getSelectedClassName(), props.isSelected), MenuItem_defineProperty(_classNames, this.getDisabledClassName(), props.disabled), _classNames));\n\n      var attrs = MenuItem_objectSpread({}, props.attribute, {\n        title: props.title,\n        className: className,\n        // set to menuitem by default\n        role: props.role || 'menuitem',\n        'aria-disabled': props.disabled\n      });\n\n      if (props.role === 'option') {\n        // overwrite to option\n        attrs = MenuItem_objectSpread({}, attrs, {\n          role: 'option',\n          'aria-selected': props.isSelected\n        });\n      } else if (props.role === null || props.role === 'none') {\n        // sometimes we want to specify role inside <li/> element\n        // <li><a role='menuitem'>Link</a></li> would be a good example\n        // in this case the role on <li/> should be \"none\" to\n        // remove the implied listitem role.\n        // https://www.w3.org/TR/wai-aria-practices-1.1/examples/menubar/menubar-1/menubar-1.html\n        attrs.role = 'none';\n      } // In case that onClick/onMouseLeave/onMouseEnter is passed down from owner\n\n\n      var mouseEvent = {\n        onClick: props.disabled ? null : this.onClick,\n        onMouseLeave: props.disabled ? null : this.onMouseLeave,\n        onMouseEnter: props.disabled ? null : this.onMouseEnter\n      };\n\n      var style = MenuItem_objectSpread({}, props.style);\n\n      if (props.mode === 'inline') {\n        style.paddingLeft = props.inlineIndent * props.level;\n      }\n\n      menuAllProps.forEach(function (key) {\n        return delete props[key];\n      });\n      var icon = this.props.itemIcon;\n\n      if (typeof this.props.itemIcon === 'function') {\n        // TODO: This is a bug which should fixed after TS refactor\n        icon = external_react_default.a.createElement(this.props.itemIcon, this.props);\n      }\n\n      return external_react_default.a.createElement(\"li\", Object.assign({}, props, attrs, mouseEvent, {\n        style: style,\n        ref: this.saveNode\n      }), props.children, icon);\n    }\n  }]);\n\n  return MenuItem;\n}(external_react_default.a.Component);\nMenuItem_MenuItem.isMenuItem = true;\nMenuItem_MenuItem.defaultProps = {\n  onSelect: noop,\n  onMouseEnter: noop,\n  onMouseLeave: noop,\n  manualRef: noop\n};\nvar MenuItem_connected = Object(mini_store_lib[\"connect\"])(function (_ref, _ref2) {\n  var activeKey = _ref.activeKey,\n      selectedKeys = _ref.selectedKeys;\n  var eventKey = _ref2.eventKey,\n      subMenuKey = _ref2.subMenuKey;\n  return {\n    active: activeKey[subMenuKey] === eventKey,\n    isSelected: selectedKeys.indexOf(eventKey) !== -1\n  };\n})(MenuItem_MenuItem);\n/* harmony default export */ var es_MenuItem = (MenuItem_connected);\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/MenuItemGroup.js\nfunction MenuItemGroup_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { MenuItemGroup_typeof = function _typeof(obj) { return typeof obj; }; } else { MenuItemGroup_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return MenuItemGroup_typeof(obj); }\n\nfunction MenuItemGroup_extends() { MenuItemGroup_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 MenuItemGroup_extends.apply(this, arguments); }\n\nfunction MenuItemGroup_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction MenuItemGroup_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 MenuItemGroup_createClass(Constructor, protoProps, staticProps) { if (protoProps) MenuItemGroup_defineProperties(Constructor.prototype, protoProps); if (staticProps) MenuItemGroup_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction MenuItemGroup_possibleConstructorReturn(self, call) { if (call && (MenuItemGroup_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return MenuItemGroup_assertThisInitialized(self); }\n\nfunction MenuItemGroup_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction MenuItemGroup_getPrototypeOf(o) { MenuItemGroup_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return MenuItemGroup_getPrototypeOf(o); }\n\nfunction MenuItemGroup_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) MenuItemGroup_setPrototypeOf(subClass, superClass); }\n\nfunction MenuItemGroup_setPrototypeOf(o, p) { MenuItemGroup_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return MenuItemGroup_setPrototypeOf(o, p); }\n\n\n\n\nvar MenuItemGroup_MenuItemGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  MenuItemGroup_inherits(MenuItemGroup, _React$Component);\n\n  function MenuItemGroup() {\n    var _this;\n\n    MenuItemGroup_classCallCheck(this, MenuItemGroup);\n\n    _this = MenuItemGroup_possibleConstructorReturn(this, MenuItemGroup_getPrototypeOf(MenuItemGroup).apply(this, arguments));\n\n    _this.renderInnerMenuItem = function (item) {\n      var _this$props = _this.props,\n          renderMenuItem = _this$props.renderMenuItem,\n          index = _this$props.index;\n      return renderMenuItem(item, index, _this.props.subMenuKey);\n    };\n\n    return _this;\n  }\n\n  MenuItemGroup_createClass(MenuItemGroup, [{\n    key: \"render\",\n    value: function render() {\n      var props = MenuItemGroup_extends({}, this.props);\n\n      var _props$className = props.className,\n          className = _props$className === void 0 ? '' : _props$className,\n          rootPrefixCls = props.rootPrefixCls;\n      var titleClassName = \"\".concat(rootPrefixCls, \"-item-group-title\");\n      var listClassName = \"\".concat(rootPrefixCls, \"-item-group-list\");\n      var title = props.title,\n          children = props.children;\n      menuAllProps.forEach(function (key) {\n        return delete props[key];\n      }); // Set onClick to null, to ignore propagated onClick event\n\n      delete props.onClick;\n      return external_react_default.a.createElement(\"li\", Object.assign({}, props, {\n        className: \"\".concat(className, \" \").concat(rootPrefixCls, \"-item-group\")\n      }), external_react_default.a.createElement(\"div\", {\n        className: titleClassName,\n        title: typeof title === 'string' ? title : undefined\n      }, title), external_react_default.a.createElement(\"ul\", {\n        className: listClassName\n      }, external_react_default.a.Children.map(children, this.renderInnerMenuItem)));\n    }\n  }]);\n\n  return MenuItemGroup;\n}(external_react_default.a.Component);\n\nMenuItemGroup_MenuItemGroup.isMenuItemGroup = true;\nMenuItemGroup_MenuItemGroup.defaultProps = {\n  disabled: true\n};\n/* harmony default export */ var es_MenuItemGroup = (MenuItemGroup_MenuItemGroup);\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/Divider.js\n\n\nvar Divider_Divider = function Divider(_ref) {\n  var className = _ref.className,\n      rootPrefixCls = _ref.rootPrefixCls,\n      style = _ref.style;\n  return external_react_default.a.createElement(\"li\", {\n    className: \"\".concat(className, \" \").concat(rootPrefixCls, \"-item-divider\"),\n    style: style\n  });\n};\n\nDivider_Divider.defaultProps = {\n  // To fix keyboard UX.\n  disabled: true,\n  className: '',\n  style: {}\n};\n/* harmony default export */ var es_Divider = (Divider_Divider);\n// CONCATENATED MODULE: ./node_modules/rc-menu/es/index.js\n\n\n\n\n\n\n/* harmony default export */ var rc_menu_es = (es_Menu);\n// CONCATENATED MODULE: ./node_modules/antd/es/menu/SubMenu.js\nfunction menu_SubMenu_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { menu_SubMenu_typeof = function _typeof(obj) { return typeof obj; }; } else { menu_SubMenu_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return menu_SubMenu_typeof(obj); }\n\nfunction SubMenu_extends() { SubMenu_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 SubMenu_extends.apply(this, arguments); }\n\nfunction menu_SubMenu_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction menu_SubMenu_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 menu_SubMenu_createClass(Constructor, protoProps, staticProps) { if (protoProps) menu_SubMenu_defineProperties(Constructor.prototype, protoProps); if (staticProps) menu_SubMenu_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction menu_SubMenu_possibleConstructorReturn(self, call) { if (call && (menu_SubMenu_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return menu_SubMenu_assertThisInitialized(self); }\n\nfunction menu_SubMenu_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction menu_SubMenu_getPrototypeOf(o) { menu_SubMenu_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return menu_SubMenu_getPrototypeOf(o); }\n\nfunction menu_SubMenu_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) menu_SubMenu_setPrototypeOf(subClass, superClass); }\n\nfunction menu_SubMenu_setPrototypeOf(o, p) { menu_SubMenu_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return menu_SubMenu_setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar menu_SubMenu_SubMenu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  menu_SubMenu_inherits(SubMenu, _React$Component);\n\n  function SubMenu() {\n    var _this;\n\n    menu_SubMenu_classCallCheck(this, SubMenu);\n\n    _this = menu_SubMenu_possibleConstructorReturn(this, menu_SubMenu_getPrototypeOf(SubMenu).apply(this, arguments));\n\n    _this.onKeyDown = function (e) {\n      _this.subMenu.onKeyDown(e);\n    };\n\n    _this.saveSubMenu = function (subMenu) {\n      _this.subMenu = subMenu;\n    };\n\n    return _this;\n  }\n\n  menu_SubMenu_createClass(SubMenu, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          rootPrefixCls = _this$props.rootPrefixCls,\n          className = _this$props.className;\n      var theme = this.context.antdMenuTheme;\n      return external_react_[\"createElement\"](es_SubMenu, SubMenu_extends({}, this.props, {\n        ref: this.saveSubMenu,\n        popupClassName: classnames_default()(\"\".concat(rootPrefixCls, \"-\").concat(theme), className)\n      }));\n    }\n  }]);\n\n  return SubMenu;\n}(external_react_[\"Component\"]);\n\nmenu_SubMenu_SubMenu.contextTypes = {\n  antdMenuTheme: prop_types[\"string\"]\n}; // fix issue:https://github.com/ant-design/ant-design/issues/8666\n\nmenu_SubMenu_SubMenu.isSubMenu = 1;\n/* harmony default export */ var menu_SubMenu = (menu_SubMenu_SubMenu);\n// CONCATENATED MODULE: ./node_modules/rc-tooltip/es/placements.js\nvar es_placements_autoAdjustOverflow = {\n  adjustX: 1,\n  adjustY: 1\n};\n\nvar targetOffset = [0, 0];\n\nvar placements_placements = {\n  left: {\n    points: ['cr', 'cl'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [-4, 0],\n    targetOffset: targetOffset\n  },\n  right: {\n    points: ['cl', 'cr'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [4, 0],\n    targetOffset: targetOffset\n  },\n  top: {\n    points: ['bc', 'tc'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  bottom: {\n    points: ['tc', 'bc'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  leftTop: {\n    points: ['tr', 'tl'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [-4, 0],\n    targetOffset: targetOffset\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset: targetOffset\n  },\n  rightTop: {\n    points: ['tl', 'tr'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [4, 0],\n    targetOffset: targetOffset\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  rightBottom: {\n    points: ['bl', 'br'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [4, 0],\n    targetOffset: targetOffset\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset: targetOffset\n  },\n  leftBottom: {\n    points: ['br', 'bl'],\n    overflow: es_placements_autoAdjustOverflow,\n    offset: [-4, 0],\n    targetOffset: targetOffset\n  }\n};\n\n/* harmony default export */ var rc_tooltip_es_placements = (placements_placements);\n// CONCATENATED MODULE: ./node_modules/rc-tooltip/es/Content.js\n\n\n\n\n\n\nvar Content_Content = function (_React$Component) {\n  helpers_inherits_default()(Content, _React$Component);\n\n  function Content() {\n    helpers_classCallCheck_default()(this, Content);\n\n    return helpers_possibleConstructorReturn_default()(this, _React$Component.apply(this, arguments));\n  }\n\n  Content.prototype.componentDidUpdate = function componentDidUpdate() {\n    var trigger = this.props.trigger;\n\n    if (trigger) {\n      trigger.forcePopupAlign();\n    }\n  };\n\n  Content.prototype.render = function render() {\n    var _props = this.props,\n        overlay = _props.overlay,\n        prefixCls = _props.prefixCls,\n        id = _props.id;\n\n    return external_react_default.a.createElement(\n      'div',\n      { className: prefixCls + '-inner', id: id, role: 'tooltip' },\n      typeof overlay === 'function' ? overlay() : overlay\n    );\n  };\n\n  return Content;\n}(external_react_default.a.Component);\n\nContent_Content.propTypes = {\n  prefixCls: prop_types_default.a.string,\n  overlay: prop_types_default.a.oneOfType([prop_types_default.a.node, prop_types_default.a.func]).isRequired,\n  id: prop_types_default.a.string,\n  trigger: prop_types_default.a.any\n};\n/* harmony default export */ var es_Content = (Content_Content);\n// CONCATENATED MODULE: ./node_modules/rc-tooltip/es/Tooltip.js\n\n\n\n\n\n\n\n\n\n\n\nvar Tooltip_Tooltip = function (_Component) {\n  helpers_inherits_default()(Tooltip, _Component);\n\n  function Tooltip() {\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, Tooltip);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.getPopupElement = function () {\n      var _this$props = _this.props,\n          arrowContent = _this$props.arrowContent,\n          overlay = _this$props.overlay,\n          prefixCls = _this$props.prefixCls,\n          id = _this$props.id;\n\n      return [external_react_default.a.createElement(\n        'div',\n        { className: prefixCls + '-arrow', key: 'arrow' },\n        arrowContent\n      ), external_react_default.a.createElement(es_Content, {\n        key: 'content',\n        trigger: _this.trigger,\n        prefixCls: prefixCls,\n        id: id,\n        overlay: overlay\n      })];\n    }, _this.saveTrigger = function (node) {\n      _this.trigger = node;\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  Tooltip.prototype.getPopupDomNode = function getPopupDomNode() {\n    return this.trigger.getPopupDomNode();\n  };\n\n  Tooltip.prototype.render = function render() {\n    var _props = this.props,\n        overlayClassName = _props.overlayClassName,\n        trigger = _props.trigger,\n        mouseEnterDelay = _props.mouseEnterDelay,\n        mouseLeaveDelay = _props.mouseLeaveDelay,\n        overlayStyle = _props.overlayStyle,\n        prefixCls = _props.prefixCls,\n        children = _props.children,\n        onVisibleChange = _props.onVisibleChange,\n        afterVisibleChange = _props.afterVisibleChange,\n        transitionName = _props.transitionName,\n        animation = _props.animation,\n        placement = _props.placement,\n        align = _props.align,\n        destroyTooltipOnHide = _props.destroyTooltipOnHide,\n        defaultVisible = _props.defaultVisible,\n        getTooltipContainer = _props.getTooltipContainer,\n        restProps = objectWithoutProperties_default()(_props, ['overlayClassName', 'trigger', 'mouseEnterDelay', 'mouseLeaveDelay', 'overlayStyle', 'prefixCls', 'children', 'onVisibleChange', 'afterVisibleChange', 'transitionName', 'animation', 'placement', 'align', 'destroyTooltipOnHide', 'defaultVisible', 'getTooltipContainer']);\n\n    var extraProps = extends_default()({}, restProps);\n    if ('visible' in this.props) {\n      extraProps.popupVisible = this.props.visible;\n    }\n    return external_react_default.a.createElement(\n      rc_trigger_es[\"a\" /* default */],\n      extends_default()({\n        popupClassName: overlayClassName,\n        ref: this.saveTrigger,\n        prefixCls: prefixCls,\n        popup: this.getPopupElement,\n        action: trigger,\n        builtinPlacements: placements_placements,\n        popupPlacement: placement,\n        popupAlign: align,\n        getPopupContainer: getTooltipContainer,\n        onPopupVisibleChange: onVisibleChange,\n        afterPopupVisibleChange: afterVisibleChange,\n        popupTransitionName: transitionName,\n        popupAnimation: animation,\n        defaultPopupVisible: defaultVisible,\n        destroyPopupOnHide: destroyTooltipOnHide,\n        mouseLeaveDelay: mouseLeaveDelay,\n        popupStyle: overlayStyle,\n        mouseEnterDelay: mouseEnterDelay\n      }, extraProps),\n      children\n    );\n  };\n\n  return Tooltip;\n}(external_react_[\"Component\"]);\n\nTooltip_Tooltip.propTypes = {\n  trigger: prop_types_default.a.any,\n  children: prop_types_default.a.any,\n  defaultVisible: prop_types_default.a.bool,\n  visible: prop_types_default.a.bool,\n  placement: prop_types_default.a.string,\n  transitionName: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.object]),\n  animation: prop_types_default.a.any,\n  onVisibleChange: prop_types_default.a.func,\n  afterVisibleChange: prop_types_default.a.func,\n  overlay: prop_types_default.a.oneOfType([prop_types_default.a.node, prop_types_default.a.func]).isRequired,\n  overlayStyle: prop_types_default.a.object,\n  overlayClassName: prop_types_default.a.string,\n  prefixCls: prop_types_default.a.string,\n  mouseEnterDelay: prop_types_default.a.number,\n  mouseLeaveDelay: prop_types_default.a.number,\n  getTooltipContainer: prop_types_default.a.func,\n  destroyTooltipOnHide: prop_types_default.a.bool,\n  align: prop_types_default.a.object,\n  arrowContent: prop_types_default.a.any,\n  id: prop_types_default.a.string\n};\nTooltip_Tooltip.defaultProps = {\n  prefixCls: 'rc-tooltip',\n  mouseEnterDelay: 0,\n  destroyTooltipOnHide: false,\n  mouseLeaveDelay: 0.1,\n  align: {},\n  placement: 'right',\n  trigger: ['hover'],\n  arrowContent: null\n};\n\n\n/* harmony default export */ var es_Tooltip = (Tooltip_Tooltip);\n// CONCATENATED MODULE: ./node_modules/rc-tooltip/es/index.js\n\n\n/* harmony default export */ var rc_tooltip_es = (es_Tooltip);\n// CONCATENATED MODULE: ./node_modules/antd/es/tooltip/placements.js\nfunction placements_extends() { placements_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 placements_extends.apply(this, arguments); }\n\n\nvar autoAdjustOverflowEnabled = {\n  adjustX: 1,\n  adjustY: 1\n};\nvar autoAdjustOverflowDisabled = {\n  adjustX: 0,\n  adjustY: 0\n};\nvar placements_targetOffset = [0, 0];\nfunction getOverflowOptions(autoAdjustOverflow) {\n  if (typeof autoAdjustOverflow === 'boolean') {\n    return autoAdjustOverflow ? autoAdjustOverflowEnabled : autoAdjustOverflowDisabled;\n  }\n\n  return placements_extends({}, autoAdjustOverflowDisabled, autoAdjustOverflow);\n}\nfunction placements_getPlacements() {\n  var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _config$arrowWidth = config.arrowWidth,\n      arrowWidth = _config$arrowWidth === void 0 ? 5 : _config$arrowWidth,\n      _config$horizontalArr = config.horizontalArrowShift,\n      horizontalArrowShift = _config$horizontalArr === void 0 ? 16 : _config$horizontalArr,\n      _config$verticalArrow = config.verticalArrowShift,\n      verticalArrowShift = _config$verticalArrow === void 0 ? 12 : _config$verticalArrow,\n      _config$autoAdjustOve = config.autoAdjustOverflow,\n      autoAdjustOverflow = _config$autoAdjustOve === void 0 ? true : _config$autoAdjustOve;\n  var placementMap = {\n    left: {\n      points: ['cr', 'cl'],\n      offset: [-4, 0]\n    },\n    right: {\n      points: ['cl', 'cr'],\n      offset: [4, 0]\n    },\n    top: {\n      points: ['bc', 'tc'],\n      offset: [0, -4]\n    },\n    bottom: {\n      points: ['tc', 'bc'],\n      offset: [0, 4]\n    },\n    topLeft: {\n      points: ['bl', 'tc'],\n      offset: [-(horizontalArrowShift + arrowWidth), -4]\n    },\n    leftTop: {\n      points: ['tr', 'cl'],\n      offset: [-4, -(verticalArrowShift + arrowWidth)]\n    },\n    topRight: {\n      points: ['br', 'tc'],\n      offset: [horizontalArrowShift + arrowWidth, -4]\n    },\n    rightTop: {\n      points: ['tl', 'cr'],\n      offset: [4, -(verticalArrowShift + arrowWidth)]\n    },\n    bottomRight: {\n      points: ['tr', 'bc'],\n      offset: [horizontalArrowShift + arrowWidth, 4]\n    },\n    rightBottom: {\n      points: ['bl', 'cr'],\n      offset: [4, verticalArrowShift + arrowWidth]\n    },\n    bottomLeft: {\n      points: ['tl', 'bc'],\n      offset: [-(horizontalArrowShift + arrowWidth), 4]\n    },\n    leftBottom: {\n      points: ['br', 'cl'],\n      offset: [-4, verticalArrowShift + arrowWidth]\n    }\n  };\n  Object.keys(placementMap).forEach(function (key) {\n    placementMap[key] = config.arrowPointAtCenter ? placements_extends({}, placementMap[key], {\n      overflow: getOverflowOptions(autoAdjustOverflow),\n      targetOffset: placements_targetOffset\n    }) : placements_extends({}, placements_placements[key], {\n      overflow: getOverflowOptions(autoAdjustOverflow)\n    });\n    placementMap[key].ignoreShake = true;\n  });\n  return placementMap;\n}\n// CONCATENATED MODULE: ./node_modules/antd/es/tooltip/index.js\nfunction tooltip_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { tooltip_typeof = function _typeof(obj) { return typeof obj; }; } else { tooltip_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return tooltip_typeof(obj); }\n\nfunction tooltip_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\nfunction tooltip_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction tooltip_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 tooltip_createClass(Constructor, protoProps, staticProps) { if (protoProps) tooltip_defineProperties(Constructor.prototype, protoProps); if (staticProps) tooltip_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction tooltip_possibleConstructorReturn(self, call) { if (call && (tooltip_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return tooltip_assertThisInitialized(self); }\n\nfunction tooltip_getPrototypeOf(o) { tooltip_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return tooltip_getPrototypeOf(o); }\n\nfunction tooltip_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction tooltip_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) tooltip_setPrototypeOf(subClass, superClass); }\n\nfunction tooltip_setPrototypeOf(o, p) { tooltip_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return tooltip_setPrototypeOf(o, p); }\n\nfunction tooltip_extends() { tooltip_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 tooltip_extends.apply(this, arguments); }\n\n\n\n\n\n\n\n\n\nvar splitObject = function splitObject(obj, keys) {\n  var picked = {};\n\n  var omitted = tooltip_extends({}, obj);\n\n  keys.forEach(function (key) {\n    if (obj && key in obj) {\n      picked[key] = obj[key];\n      delete omitted[key];\n    }\n  });\n  return {\n    picked: picked,\n    omitted: omitted\n  };\n};\n\nvar tooltip_Tooltip =\n/*#__PURE__*/\nfunction (_React$Component) {\n  tooltip_inherits(Tooltip, _React$Component);\n\n  function Tooltip(props) {\n    var _this;\n\n    tooltip_classCallCheck(this, Tooltip);\n\n    _this = tooltip_possibleConstructorReturn(this, tooltip_getPrototypeOf(Tooltip).call(this, props));\n\n    _this.onVisibleChange = function (visible) {\n      var onVisibleChange = _this.props.onVisibleChange;\n\n      if (!('visible' in _this.props)) {\n        _this.setState({\n          visible: _this.isNoTitle() ? false : visible\n        });\n      }\n\n      if (onVisibleChange && !_this.isNoTitle()) {\n        onVisibleChange(visible);\n      }\n    }; // 动态设置动画点\n\n\n    _this.onPopupAlign = function (domNode, align) {\n      var placements = _this.getPlacements(); // 当前返回的位置\n\n\n      var placement = Object.keys(placements).filter(function (key) {\n        return placements[key].points[0] === align.points[0] && placements[key].points[1] === align.points[1];\n      })[0];\n\n      if (!placement) {\n        return;\n      } // 根据当前坐标设置动画点\n\n\n      var rect = domNode.getBoundingClientRect();\n      var transformOrigin = {\n        top: '50%',\n        left: '50%'\n      };\n\n      if (placement.indexOf('top') >= 0 || placement.indexOf('Bottom') >= 0) {\n        transformOrigin.top = \"\".concat(rect.height - align.offset[1], \"px\");\n      } else if (placement.indexOf('Top') >= 0 || placement.indexOf('bottom') >= 0) {\n        transformOrigin.top = \"\".concat(-align.offset[1], \"px\");\n      }\n\n      if (placement.indexOf('left') >= 0 || placement.indexOf('Right') >= 0) {\n        transformOrigin.left = \"\".concat(rect.width - align.offset[0], \"px\");\n      } else if (placement.indexOf('right') >= 0 || placement.indexOf('Left') >= 0) {\n        transformOrigin.left = \"\".concat(-align.offset[0], \"px\");\n      }\n\n      domNode.style.transformOrigin = \"\".concat(transformOrigin.left, \" \").concat(transformOrigin.top);\n    };\n\n    _this.saveTooltip = function (node) {\n      _this.tooltip = node;\n    };\n\n    _this.renderTooltip = function (_ref) {\n      var getContextPopupContainer = _ref.getPopupContainer,\n          getPrefixCls = _ref.getPrefixCls;\n\n      var _assertThisInitialize = tooltip_assertThisInitialized(_this),\n          props = _assertThisInitialize.props,\n          state = _assertThisInitialize.state;\n\n      var customizePrefixCls = props.prefixCls,\n          title = props.title,\n          overlay = props.overlay,\n          openClassName = props.openClassName,\n          getPopupContainer = props.getPopupContainer,\n          getTooltipContainer = props.getTooltipContainer;\n      var children = props.children;\n      var prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n      var visible = state.visible; // Hide tooltip when there is no title\n\n      if (!('visible' in props) && _this.isNoTitle()) {\n        visible = false;\n      }\n\n      var child = _this.getDisabledCompatibleChildren(external_react_[\"isValidElement\"](children) ? children : external_react_[\"createElement\"](\"span\", null, children));\n\n      var childProps = child.props;\n      var childCls = classnames_default()(childProps.className, tooltip_defineProperty({}, openClassName || \"\".concat(prefixCls, \"-open\"), true));\n      return external_react_[\"createElement\"](rc_tooltip_es, tooltip_extends({}, _this.props, {\n        prefixCls: prefixCls,\n        getTooltipContainer: getPopupContainer || getTooltipContainer || getContextPopupContainer,\n        ref: _this.saveTooltip,\n        builtinPlacements: _this.getPlacements(),\n        overlay: overlay || title || '',\n        visible: visible,\n        onVisibleChange: _this.onVisibleChange,\n        onPopupAlign: _this.onPopupAlign\n      }), visible ? Object(external_react_[\"cloneElement\"])(child, {\n        className: childCls\n      }) : child);\n    };\n\n    _this.state = {\n      visible: !!props.visible || !!props.defaultVisible\n    };\n    return _this;\n  }\n\n  tooltip_createClass(Tooltip, [{\n    key: \"getPopupDomNode\",\n    value: function getPopupDomNode() {\n      return this.tooltip.getPopupDomNode();\n    }\n  }, {\n    key: \"getPlacements\",\n    value: function getPlacements() {\n      var _this$props = this.props,\n          builtinPlacements = _this$props.builtinPlacements,\n          arrowPointAtCenter = _this$props.arrowPointAtCenter,\n          autoAdjustOverflow = _this$props.autoAdjustOverflow;\n      return builtinPlacements || placements_getPlacements({\n        arrowPointAtCenter: arrowPointAtCenter,\n        verticalArrowShift: 8,\n        autoAdjustOverflow: autoAdjustOverflow\n      });\n    } // Fix Tooltip won't hide at disabled button\n    // mouse events don't trigger at disabled button in Chrome\n    // https://github.com/react-component/tooltip/issues/18\n\n  }, {\n    key: \"getDisabledCompatibleChildren\",\n    value: function getDisabledCompatibleChildren(element) {\n      if ((element.type.__ANT_BUTTON || element.type === 'button') && element.props.disabled) {\n        // Pick some layout related style properties up to span\n        // Prevent layout bugs like https://github.com/ant-design/ant-design/issues/5254\n        var _splitObject = splitObject(element.props.style, ['position', 'left', 'right', 'top', 'bottom', 'float', 'display', 'zIndex']),\n            picked = _splitObject.picked,\n            omitted = _splitObject.omitted;\n\n        var spanStyle = tooltip_extends({\n          display: 'inline-block'\n        }, picked, {\n          cursor: 'not-allowed',\n          width: element.props.block ? '100%' : null\n        });\n\n        var buttonStyle = tooltip_extends({}, omitted, {\n          pointerEvents: 'none'\n        });\n\n        var child = Object(external_react_[\"cloneElement\"])(element, {\n          style: buttonStyle,\n          className: null\n        });\n        return external_react_[\"createElement\"](\"span\", {\n          style: spanStyle,\n          className: element.props.className\n        }, child);\n      }\n\n      return element;\n    }\n  }, {\n    key: \"isNoTitle\",\n    value: function isNoTitle() {\n      var _this$props2 = this.props,\n          title = _this$props2.title,\n          overlay = _this$props2.overlay;\n      return !title && !overlay; // overlay for old version compatibility\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderTooltip);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      if ('visible' in nextProps) {\n        return {\n          visible: nextProps.visible\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Tooltip;\n}(external_react_[\"Component\"]);\n\ntooltip_Tooltip.defaultProps = {\n  placement: 'top',\n  transitionName: 'zoom-big-fast',\n  mouseEnterDelay: 0.1,\n  mouseLeaveDelay: 0.1,\n  arrowPointAtCenter: false,\n  autoAdjustOverflow: true\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(tooltip_Tooltip);\n/* harmony default export */ var es_tooltip = (tooltip_Tooltip);\n// CONCATENATED MODULE: ./node_modules/antd/es/menu/MenuItem.js\nfunction menu_MenuItem_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { menu_MenuItem_typeof = function _typeof(obj) { return typeof obj; }; } else { menu_MenuItem_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return menu_MenuItem_typeof(obj); }\n\nfunction MenuItem_extends() { MenuItem_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 MenuItem_extends.apply(this, arguments); }\n\nfunction menu_MenuItem_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction menu_MenuItem_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 menu_MenuItem_createClass(Constructor, protoProps, staticProps) { if (protoProps) menu_MenuItem_defineProperties(Constructor.prototype, protoProps); if (staticProps) menu_MenuItem_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction menu_MenuItem_possibleConstructorReturn(self, call) { if (call && (menu_MenuItem_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return menu_MenuItem_assertThisInitialized(self); }\n\nfunction menu_MenuItem_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction menu_MenuItem_getPrototypeOf(o) { menu_MenuItem_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return menu_MenuItem_getPrototypeOf(o); }\n\nfunction menu_MenuItem_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) menu_MenuItem_setPrototypeOf(subClass, superClass); }\n\nfunction menu_MenuItem_setPrototypeOf(o, p) { menu_MenuItem_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return menu_MenuItem_setPrototypeOf(o, p); }\n\nvar MenuItem_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nvar menu_MenuItem_MenuItem =\n/*#__PURE__*/\nfunction (_React$Component) {\n  menu_MenuItem_inherits(MenuItem, _React$Component);\n\n  function MenuItem() {\n    var _this;\n\n    menu_MenuItem_classCallCheck(this, MenuItem);\n\n    _this = menu_MenuItem_possibleConstructorReturn(this, menu_MenuItem_getPrototypeOf(MenuItem).apply(this, arguments));\n\n    _this.onKeyDown = function (e) {\n      _this.menuItem.onKeyDown(e);\n    };\n\n    _this.saveMenuItem = function (menuItem) {\n      _this.menuItem = menuItem;\n    };\n\n    return _this;\n  }\n\n  menu_MenuItem_createClass(MenuItem, [{\n    key: \"render\",\n    value: function render() {\n      var inlineCollapsed = this.context.inlineCollapsed;\n      var _this$props = this.props,\n          level = _this$props.level,\n          children = _this$props.children,\n          rootPrefixCls = _this$props.rootPrefixCls;\n\n      var _a = this.props,\n          title = _a.title,\n          rest = MenuItem_rest(_a, [\"title\"]);\n\n      var titleNode;\n\n      if (inlineCollapsed) {\n        titleNode = title || (level === 1 ? children : '');\n      }\n\n      return external_react_[\"createElement\"](es_tooltip, {\n        title: titleNode,\n        placement: \"right\",\n        overlayClassName: \"\".concat(rootPrefixCls, \"-inline-collapsed-tooltip\")\n      }, external_react_[\"createElement\"](es_MenuItem, MenuItem_extends({}, rest, {\n        title: inlineCollapsed ? null : title,\n        ref: this.saveMenuItem\n      })));\n    }\n  }]);\n\n  return MenuItem;\n}(external_react_[\"Component\"]);\n\nmenu_MenuItem_MenuItem.contextTypes = {\n  inlineCollapsed: prop_types[\"bool\"]\n};\nmenu_MenuItem_MenuItem.isMenuItem = 1;\n/* harmony default export */ var menu_MenuItem = (menu_MenuItem_MenuItem);\n// EXTERNAL MODULE: ./node_modules/css-animation/es/index.js\nvar css_animation_es = __webpack_require__(192);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/_util/openAnimation.js\n\n\n\nfunction animate(node, show, done) {\n  var height;\n  var requestAnimationFrameId;\n  return Object(css_animation_es[\"a\" /* default */])(node, 'ant-motion-collapse', {\n    start: function start() {\n      if (!show) {\n        node.style.height = \"\".concat(node.offsetHeight, \"px\");\n        node.style.opacity = '1';\n      } else {\n        height = node.offsetHeight;\n        node.style.height = '0px';\n        node.style.opacity = '0';\n      }\n    },\n    active: function active() {\n      if (requestAnimationFrameId) {\n        raf_default.a.cancel(requestAnimationFrameId);\n      }\n\n      requestAnimationFrameId = raf_default()(function () {\n        node.style.height = \"\".concat(show ? height : 0, \"px\");\n        node.style.opacity = show ? '1' : '0';\n      });\n    },\n    end: function end() {\n      if (requestAnimationFrameId) {\n        raf_default.a.cancel(requestAnimationFrameId);\n      }\n\n      node.style.height = '';\n      node.style.opacity = '';\n      done();\n    }\n  });\n}\n\nvar openAnimation_animation = {\n  enter: function enter(node, done) {\n    return animate(node, true, done);\n  },\n  leave: function leave(node, done) {\n    return animate(node, false, done);\n  },\n  appear: function appear(node, done) {\n    return animate(node, true, done);\n  }\n};\n/* harmony default export */ var _util_openAnimation = (openAnimation_animation);\n// CONCATENATED MODULE: ./node_modules/antd/es/menu/index.js\nfunction menu_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { menu_typeof = function _typeof(obj) { return typeof obj; }; } else { menu_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return menu_typeof(obj); }\n\nfunction menu_extends() { menu_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 menu_extends.apply(this, arguments); }\n\nfunction menu_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\nfunction menu_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction menu_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 menu_createClass(Constructor, protoProps, staticProps) { if (protoProps) menu_defineProperties(Constructor.prototype, protoProps); if (staticProps) menu_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction menu_possibleConstructorReturn(self, call) { if (call && (menu_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return menu_assertThisInitialized(self); }\n\nfunction menu_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction menu_getPrototypeOf(o) { menu_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return menu_getPrototypeOf(o); }\n\nfunction menu_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) menu_setPrototypeOf(subClass, superClass); }\n\nfunction menu_setPrototypeOf(o, p) { menu_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return menu_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\nvar menu_Menu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  menu_inherits(Menu, _React$Component);\n\n  function Menu(props) {\n    var _this;\n\n    menu_classCallCheck(this, Menu);\n\n    _this = menu_possibleConstructorReturn(this, menu_getPrototypeOf(Menu).call(this, props));\n    _this.inlineOpenKeys = []; // Restore vertical mode when menu is collapsed responsively when mounted\n    // https://github.com/ant-design/ant-design/issues/13104\n    // TODO: not a perfect solution, looking a new way to avoid setting switchingModeFromInline in this situation\n\n    _this.handleMouseEnter = function (e) {\n      _this.restoreModeVerticalFromInline();\n\n      var onMouseEnter = _this.props.onMouseEnter;\n\n      if (onMouseEnter) {\n        onMouseEnter(e);\n      }\n    };\n\n    _this.handleTransitionEnd = function (e) {\n      // when inlineCollapsed menu width animation finished\n      // https://github.com/ant-design/ant-design/issues/12864\n      var widthCollapsed = e.propertyName === 'width' && e.target === e.currentTarget; // Fix for <Menu style={{ width: '100%' }} />, the width transition won't trigger when menu is collapsed\n      // https://github.com/ant-design/ant-design-pro/issues/2783\n\n      var iconScaled = e.propertyName === 'font-size' && e.target.className.indexOf('anticon') >= 0;\n\n      if (widthCollapsed || iconScaled) {\n        _this.restoreModeVerticalFromInline();\n      }\n    };\n\n    _this.handleClick = function (e) {\n      _this.handleOpenChange([]);\n\n      var onClick = _this.props.onClick;\n\n      if (onClick) {\n        onClick(e);\n      }\n    };\n\n    _this.handleOpenChange = function (openKeys) {\n      _this.setOpenKeys(openKeys);\n\n      var onOpenChange = _this.props.onOpenChange;\n\n      if (onOpenChange) {\n        onOpenChange(openKeys);\n      }\n    };\n\n    _this.renderMenu = function (_ref) {\n      var getPopupContainer = _ref.getPopupContainer,\n          getPrefixCls = _ref.getPrefixCls;\n      var _this$props = _this.props,\n          customizePrefixCls = _this$props.prefixCls,\n          className = _this$props.className,\n          theme = _this$props.theme;\n\n      var menuMode = _this.getRealMenuMode();\n\n      var menuOpenAnimation = _this.getMenuOpenAnimation(menuMode);\n\n      var prefixCls = getPrefixCls('menu', customizePrefixCls);\n      var menuClassName = classnames_default()(className, \"\".concat(prefixCls, \"-\").concat(theme), menu_defineProperty({}, \"\".concat(prefixCls, \"-inline-collapsed\"), _this.getInlineCollapsed()));\n      var menuProps = {\n        openKeys: _this.state.openKeys,\n        onOpenChange: _this.handleOpenChange,\n        className: menuClassName,\n        mode: menuMode\n      };\n\n      if (menuMode !== 'inline') {\n        // closing vertical popup submenu after click it\n        menuProps.onClick = _this.handleClick;\n        menuProps.openTransitionName = menuOpenAnimation;\n      } else {\n        menuProps.openAnimation = menuOpenAnimation;\n      } // https://github.com/ant-design/ant-design/issues/8587\n\n\n      var collapsedWidth = _this.context.collapsedWidth;\n\n      if (_this.getInlineCollapsed() && (collapsedWidth === 0 || collapsedWidth === '0' || collapsedWidth === '0px')) {\n        return null;\n      }\n\n      return external_react_[\"createElement\"](rc_menu_es, menu_extends({\n        getPopupContainer: getPopupContainer\n      }, _this.props, menuProps, {\n        prefixCls: prefixCls,\n        onTransitionEnd: _this.handleTransitionEnd,\n        onMouseEnter: _this.handleMouseEnter\n      }));\n    };\n\n    _util_warning(!('onOpen' in props || 'onClose' in props), 'Menu', '`onOpen` and `onClose` are removed, please use `onOpenChange` instead, ' + 'see: https://u.ant.design/menu-on-open-change.');\n    _util_warning(!('inlineCollapsed' in props && props.mode !== 'inline'), 'Menu', '`inlineCollapsed` should only be used when `mode` is inline.');\n    var openKeys;\n\n    if ('openKeys' in props) {\n      openKeys = props.openKeys;\n    } else if ('defaultOpenKeys' in props) {\n      openKeys = props.defaultOpenKeys;\n    }\n\n    _this.state = {\n      openKeys: openKeys || []\n    };\n    return _this;\n  }\n\n  menu_createClass(Menu, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      return {\n        inlineCollapsed: this.getInlineCollapsed(),\n        antdMenuTheme: this.props.theme\n      };\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      if (prevProps.mode === 'inline' && this.props.mode !== 'inline') {\n        this.switchingModeFromInline = true;\n      }\n\n      if (this.props.inlineCollapsed && !prevProps.inlineCollapsed) {\n        this.switchingModeFromInline = true;\n        this.inlineOpenKeys = this.state.openKeys;\n        this.setState({\n          openKeys: []\n        });\n      }\n\n      if (!this.props.inlineCollapsed && prevProps.inlineCollapsed) {\n        this.setState({\n          openKeys: this.inlineOpenKeys\n        });\n        this.inlineOpenKeys = [];\n      }\n    }\n  }, {\n    key: \"restoreModeVerticalFromInline\",\n    value: function restoreModeVerticalFromInline() {\n      if (this.switchingModeFromInline) {\n        this.switchingModeFromInline = false;\n        this.setState({});\n      }\n    }\n  }, {\n    key: \"setOpenKeys\",\n    value: function setOpenKeys(openKeys) {\n      if (!('openKeys' in this.props)) {\n        this.setState({\n          openKeys: openKeys\n        });\n      }\n    }\n  }, {\n    key: \"getRealMenuMode\",\n    value: function getRealMenuMode() {\n      var inlineCollapsed = this.getInlineCollapsed();\n\n      if (this.switchingModeFromInline && inlineCollapsed) {\n        return 'inline';\n      }\n\n      var mode = this.props.mode;\n      return inlineCollapsed ? 'vertical' : mode;\n    }\n  }, {\n    key: \"getInlineCollapsed\",\n    value: function getInlineCollapsed() {\n      var inlineCollapsed = this.props.inlineCollapsed;\n\n      if (this.context.siderCollapsed !== undefined) {\n        return this.context.siderCollapsed;\n      }\n\n      return inlineCollapsed;\n    }\n  }, {\n    key: \"getMenuOpenAnimation\",\n    value: function getMenuOpenAnimation(menuMode) {\n      var _this$props2 = this.props,\n          openAnimation = _this$props2.openAnimation,\n          openTransitionName = _this$props2.openTransitionName;\n      var menuOpenAnimation = openAnimation || openTransitionName;\n\n      if (openAnimation === undefined && openTransitionName === undefined) {\n        if (menuMode === 'horizontal') {\n          menuOpenAnimation = 'slide-up';\n        } else if (menuMode === 'inline') {\n          menuOpenAnimation = _util_openAnimation;\n        } else {\n          // When mode switch from inline\n          // submenu should hide without animation\n          if (this.switchingModeFromInline) {\n            menuOpenAnimation = '';\n            this.switchingModeFromInline = false;\n          } else {\n            menuOpenAnimation = 'zoom-big';\n          }\n        }\n      }\n\n      return menuOpenAnimation;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderMenu);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      if ('openKeys' in nextProps) {\n        return {\n          openKeys: nextProps.openKeys\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Menu;\n}(external_react_[\"Component\"]);\n\nmenu_Menu.Divider = es_Divider;\nmenu_Menu.Item = menu_MenuItem;\nmenu_Menu.SubMenu = menu_SubMenu;\nmenu_Menu.ItemGroup = es_MenuItemGroup;\nmenu_Menu.defaultProps = {\n  className: '',\n  theme: 'light',\n  focusable: false\n};\nmenu_Menu.childContextTypes = {\n  inlineCollapsed: prop_types[\"bool\"],\n  antdMenuTheme: prop_types[\"string\"]\n};\nmenu_Menu.contextTypes = {\n  siderCollapsed: prop_types[\"bool\"],\n  collapsedWidth: prop_types[\"oneOfType\"]([prop_types[\"number\"], prop_types[\"string\"]])\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(menu_Menu);\n/* harmony default export */ var es_menu = (menu_Menu);\n// CONCATENATED MODULE: ./node_modules/antd/es/popconfirm/index.js\nfunction popconfirm_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { popconfirm_typeof = function _typeof(obj) { return typeof obj; }; } else { popconfirm_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return popconfirm_typeof(obj); }\n\nfunction popconfirm_extends() { popconfirm_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 popconfirm_extends.apply(this, arguments); }\n\nfunction popconfirm_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction popconfirm_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 popconfirm_createClass(Constructor, protoProps, staticProps) { if (protoProps) popconfirm_defineProperties(Constructor.prototype, protoProps); if (staticProps) popconfirm_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction popconfirm_possibleConstructorReturn(self, call) { if (call && (popconfirm_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return popconfirm_assertThisInitialized(self); }\n\nfunction popconfirm_getPrototypeOf(o) { popconfirm_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return popconfirm_getPrototypeOf(o); }\n\nfunction popconfirm_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction popconfirm_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) popconfirm_setPrototypeOf(subClass, superClass); }\n\nfunction popconfirm_setPrototypeOf(o, p) { popconfirm_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return popconfirm_setPrototypeOf(o, p); }\n\nvar popconfirm_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\nvar popconfirm_Popconfirm =\n/*#__PURE__*/\nfunction (_React$Component) {\n  popconfirm_inherits(Popconfirm, _React$Component);\n\n  function Popconfirm(props) {\n    var _this;\n\n    popconfirm_classCallCheck(this, Popconfirm);\n\n    _this = popconfirm_possibleConstructorReturn(this, popconfirm_getPrototypeOf(Popconfirm).call(this, props));\n\n    _this.onConfirm = function (e) {\n      _this.setVisible(false, e);\n\n      var onConfirm = _this.props.onConfirm;\n\n      if (onConfirm) {\n        onConfirm.call(popconfirm_assertThisInitialized(_this), e);\n      }\n    };\n\n    _this.onCancel = function (e) {\n      _this.setVisible(false, e);\n\n      var onCancel = _this.props.onCancel;\n\n      if (onCancel) {\n        onCancel.call(popconfirm_assertThisInitialized(_this), e);\n      }\n    };\n\n    _this.onVisibleChange = function (visible) {\n      _this.setVisible(visible);\n    };\n\n    _this.saveTooltip = function (node) {\n      _this.tooltip = node;\n    };\n\n    _this.renderOverlay = function (prefixCls, popconfirmLocale) {\n      var _this$props = _this.props,\n          okButtonProps = _this$props.okButtonProps,\n          cancelButtonProps = _this$props.cancelButtonProps,\n          title = _this$props.title,\n          cancelText = _this$props.cancelText,\n          okText = _this$props.okText,\n          okType = _this$props.okType,\n          icon = _this$props.icon;\n      return external_react_[\"createElement\"](\"div\", null, external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-inner-content\")\n      }, external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-message\")\n      }, icon, external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-message-title\")\n      }, title)), external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-buttons\")\n      }, external_react_[\"createElement\"](es_button, popconfirm_extends({\n        onClick: _this.onCancel,\n        size: \"small\"\n      }, cancelButtonProps), cancelText || popconfirmLocale.cancelText), external_react_[\"createElement\"](es_button, popconfirm_extends({\n        onClick: _this.onConfirm,\n        type: okType,\n        size: \"small\"\n      }, okButtonProps), okText || popconfirmLocale.okText))));\n    };\n\n    _this.renderConfirm = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          placement = _a.placement,\n          restProps = popconfirm_rest(_a, [\"prefixCls\", \"placement\"]);\n\n      var prefixCls = getPrefixCls('popover', customizePrefixCls);\n      var overlay = external_react_[\"createElement\"](LocaleReceiver_LocaleReceiver, {\n        componentName: \"Popconfirm\",\n        defaultLocale: locale_provider_default.Popconfirm\n      }, function (popconfirmLocale) {\n        return _this.renderOverlay(prefixCls, popconfirmLocale);\n      });\n      return external_react_[\"createElement\"](es_tooltip, popconfirm_extends({}, restProps, {\n        prefixCls: prefixCls,\n        placement: placement,\n        onVisibleChange: _this.onVisibleChange,\n        visible: _this.state.visible,\n        overlay: overlay,\n        ref: _this.saveTooltip\n      }));\n    };\n\n    _this.state = {\n      visible: props.visible\n    };\n    return _this;\n  }\n\n  popconfirm_createClass(Popconfirm, [{\n    key: \"getPopupDomNode\",\n    value: function getPopupDomNode() {\n      return this.tooltip.getPopupDomNode();\n    }\n  }, {\n    key: \"setVisible\",\n    value: function setVisible(visible, e) {\n      var props = this.props;\n\n      if (!('visible' in props)) {\n        this.setState({\n          visible: visible\n        });\n      }\n\n      var onVisibleChange = props.onVisibleChange;\n\n      if (onVisibleChange) {\n        onVisibleChange(visible, e);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderConfirm);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      if ('visible' in nextProps) {\n        return {\n          visible: nextProps.visible\n        };\n      } else if ('defaultVisible' in nextProps) {\n        return {\n          visible: nextProps.defaultVisible\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Popconfirm;\n}(external_react_[\"Component\"]);\n\npopconfirm_Popconfirm.defaultProps = {\n  transitionName: 'zoom-big',\n  placement: 'top',\n  trigger: 'click',\n  okType: 'primary',\n  icon: external_react_[\"createElement\"](es_icon, {\n    type: \"exclamation-circle\",\n    theme: \"filled\"\n  })\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(popconfirm_Popconfirm);\n/* harmony default export */ var popconfirm = (popconfirm_Popconfirm);\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js\nfunction typeof_typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return typeof_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_typeof(obj);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js\nfunction defineProperty_defineProperty(obj, key, value) {\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\n  return obj;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread.js\n\nfunction objectSpread_objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? Object(arguments[i]) : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      defineProperty_defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js\nfunction classCallCheck_classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js\nfunction createClass_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, descriptor.key, descriptor);\n  }\n}\n\nfunction createClass_createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) createClass_defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) createClass_defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\nfunction assertThisInitialized_assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\n\n\nfunction possibleConstructorReturn_possibleConstructorReturn(self, call) {\n  if (call && (typeof_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\n  return assertThisInitialized_assertThisInitialized(self);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\nfunction getPrototypeOf_getPrototypeOf(o) {\n  getPrototypeOf_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return getPrototypeOf_getPrototypeOf(o);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js\nfunction setPrototypeOf_setPrototypeOf(o, p) {\n  setPrototypeOf_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return setPrototypeOf_setPrototypeOf(o, p);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js\n\nfunction inherits_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\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_setPrototypeOf(subClass, superClass);\n}\n// CONCATENATED MODULE: ./node_modules/i18next/dist/esm/i18next.js\n\n\n\n\n\n\n\n\n\nvar consoleLogger = {\n  type: 'logger',\n  log: function log(args) {\n    this.output('log', args);\n  },\n  warn: function warn(args) {\n    this.output('warn', args);\n  },\n  error: function error(args) {\n    this.output('error', args);\n  },\n  output: function output(type, args) {\n    if (console && console[type]) console[type].apply(console, args);\n  }\n};\n\nvar i18next_Logger = function () {\n  function Logger(concreteLogger) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    classCallCheck_classCallCheck(this, Logger);\n\n    this.init(concreteLogger, options);\n  }\n\n  createClass_createClass(Logger, [{\n    key: \"init\",\n    value: function init(concreteLogger) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      this.prefix = options.prefix || 'i18next:';\n      this.logger = concreteLogger || consoleLogger;\n      this.options = options;\n      this.debug = options.debug;\n    }\n  }, {\n    key: \"setDebug\",\n    value: function setDebug(bool) {\n      this.debug = bool;\n    }\n  }, {\n    key: \"log\",\n    value: function log() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return this.forward(args, 'log', '', true);\n    }\n  }, {\n    key: \"warn\",\n    value: function warn() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return this.forward(args, 'warn', '', true);\n    }\n  }, {\n    key: \"error\",\n    value: function error() {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return this.forward(args, 'error', '');\n    }\n  }, {\n    key: \"deprecate\",\n    value: function deprecate() {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n\n      return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n    }\n  }, {\n    key: \"forward\",\n    value: function forward(args, lvl, prefix, debugOnly) {\n      if (debugOnly && !this.debug) return null;\n      if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n      return this.logger[lvl](args);\n    }\n  }, {\n    key: \"create\",\n    value: function create(moduleName) {\n      return new Logger(this.logger, objectSpread_objectSpread({}, {\n        prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n      }, this.options));\n    }\n  }]);\n\n  return Logger;\n}();\n\nvar baseLogger = new i18next_Logger();\n\nvar i18next_EventEmitter = function () {\n  function EventEmitter() {\n    classCallCheck_classCallCheck(this, EventEmitter);\n\n    this.observers = {};\n  }\n\n  createClass_createClass(EventEmitter, [{\n    key: \"on\",\n    value: function on(events, listener) {\n      var _this = this;\n\n      events.split(' ').forEach(function (event) {\n        _this.observers[event] = _this.observers[event] || [];\n\n        _this.observers[event].push(listener);\n      });\n      return this;\n    }\n  }, {\n    key: \"off\",\n    value: function off(event, listener) {\n      if (!this.observers[event]) return;\n\n      if (!listener) {\n        delete this.observers[event];\n        return;\n      }\n\n      this.observers[event] = this.observers[event].filter(function (l) {\n        return l !== listener;\n      });\n    }\n  }, {\n    key: \"emit\",\n    value: function emit(event) {\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 (this.observers[event]) {\n        var cloned = [].concat(this.observers[event]);\n        cloned.forEach(function (observer) {\n          observer.apply(void 0, args);\n        });\n      }\n\n      if (this.observers['*']) {\n        var _cloned = [].concat(this.observers['*']);\n\n        _cloned.forEach(function (observer) {\n          observer.apply(observer, [event].concat(args));\n        });\n      }\n    }\n  }]);\n\n  return EventEmitter;\n}();\n\nfunction defer() {\n  var res;\n  var rej;\n  var promise = new Promise(function (resolve, reject) {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n}\nfunction makeString(object) {\n  if (object == null) return '';\n  return '' + object;\n}\nfunction i18next_copy(a, s, t) {\n  a.forEach(function (m) {\n    if (s[m]) t[m] = s[m];\n  });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n  function cleanKey(key) {\n    return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n  }\n\n  function canNotTraverseDeeper() {\n    return !object || typeof object === 'string';\n  }\n\n  var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n  while (stack.length > 1) {\n    if (canNotTraverseDeeper()) return {};\n    var key = cleanKey(stack.shift());\n    if (!object[key] && Empty) object[key] = new Empty();\n\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n  }\n\n  if (canNotTraverseDeeper()) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack.shift())\n  };\n}\n\nfunction setPath(object, path, newValue) {\n  var _getLastOfPath = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath.obj,\n      k = _getLastOfPath.k;\n\n  obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n  var _getLastOfPath2 = getLastOfPath(object, path, Object),\n      obj = _getLastOfPath2.obj,\n      k = _getLastOfPath2.k;\n\n  obj[k] = obj[k] || [];\n  if (concat) obj[k] = obj[k].concat(newValue);\n  if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n  var _getLastOfPath3 = getLastOfPath(object, path),\n      obj = _getLastOfPath3.obj,\n      k = _getLastOfPath3.k;\n\n  if (!obj) return undefined;\n  return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n  var value = getPath(data, key);\n\n  if (value !== undefined) {\n    return value;\n  }\n\n  return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n  for (var prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n\n  return target;\n}\nfunction regexEscape(str) {\n  return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nfunction i18next_escape(data) {\n  if (typeof data === 'string') {\n    return data.replace(/[&<>\"'\\/]/g, function (s) {\n      return _entityMap[s];\n    });\n  }\n\n  return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nvar i18next_ResourceStore = function (_EventEmitter) {\n  inherits_inherits(ResourceStore, _EventEmitter);\n\n  function ResourceStore(data) {\n    var _this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      ns: ['translation'],\n      defaultNS: 'translation'\n    };\n\n    classCallCheck_classCallCheck(this, ResourceStore);\n\n    _this = possibleConstructorReturn_possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(ResourceStore).call(this));\n\n    if (isIE10) {\n      i18next_EventEmitter.call(assertThisInitialized_assertThisInitialized(_this));\n    }\n\n    _this.data = data || {};\n    _this.options = options;\n\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n\n    return _this;\n  }\n\n  createClass_createClass(ResourceStore, [{\n    key: \"addNamespaces\",\n    value: function addNamespaces(ns) {\n      if (this.options.ns.indexOf(ns) < 0) {\n        this.options.ns.push(ns);\n      }\n    }\n  }, {\n    key: \"removeNamespaces\",\n    value: function removeNamespaces(ns) {\n      var index = this.options.ns.indexOf(ns);\n\n      if (index > -1) {\n        this.options.ns.splice(index, 1);\n      }\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(lng, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var path = [lng, ns];\n      if (key && typeof key !== 'string') path = path.concat(key);\n      if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n      }\n\n      return getPath(this.data, path);\n    }\n  }, {\n    key: \"addResource\",\n    value: function addResource(lng, ns, key, value) {\n      var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n        silent: false\n      };\n      var keySeparator = this.options.keySeparator;\n      if (keySeparator === undefined) keySeparator = '.';\n      var path = [lng, ns];\n      if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        value = ns;\n        ns = path[1];\n      }\n\n      this.addNamespaces(ns);\n      setPath(this.data, path, value);\n      if (!options.silent) this.emit('added', lng, ns, key, value);\n    }\n  }, {\n    key: \"addResources\",\n    value: function addResources(lng, ns, resources) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n        silent: false\n      };\n\n      for (var m in resources) {\n        if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n          silent: true\n        });\n      }\n\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"addResourceBundle\",\n    value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n        silent: false\n      };\n      var path = [lng, ns];\n\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        deep = resources;\n        resources = ns;\n        ns = path[1];\n      }\n\n      this.addNamespaces(ns);\n      var pack = getPath(this.data, path) || {};\n\n      if (deep) {\n        deepExtend(pack, resources, overwrite);\n      } else {\n        pack = objectSpread_objectSpread({}, pack, resources);\n      }\n\n      setPath(this.data, path, pack);\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"removeResourceBundle\",\n    value: function removeResourceBundle(lng, ns) {\n      if (this.hasResourceBundle(lng, ns)) {\n        delete this.data[lng][ns];\n      }\n\n      this.removeNamespaces(ns);\n      this.emit('removed', lng, ns);\n    }\n  }, {\n    key: \"hasResourceBundle\",\n    value: function hasResourceBundle(lng, ns) {\n      return this.getResource(lng, ns) !== undefined;\n    }\n  }, {\n    key: \"getResourceBundle\",\n    value: function getResourceBundle(lng, ns) {\n      if (!ns) ns = this.options.defaultNS;\n      if (this.options.compatibilityAPI === 'v1') return objectSpread_objectSpread({}, {}, this.getResource(lng, ns));\n      return this.getResource(lng, ns);\n    }\n  }, {\n    key: \"getDataByLanguage\",\n    value: function getDataByLanguage(lng) {\n      return this.data[lng];\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.data;\n    }\n  }]);\n\n  return ResourceStore;\n}(i18next_EventEmitter);\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor: function addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle: function handle(processors, value, key, options, translator) {\n    var _this = this;\n\n    processors.forEach(function (processor) {\n      if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n    });\n    return value;\n  }\n};\n\nvar checkedLoadedFor = {};\n\nvar i18next_Translator = function (_EventEmitter) {\n  inherits_inherits(Translator, _EventEmitter);\n\n  function Translator(services) {\n    var _this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    classCallCheck_classCallCheck(this, Translator);\n\n    _this = possibleConstructorReturn_possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(Translator).call(this));\n\n    if (isIE10) {\n      i18next_EventEmitter.call(assertThisInitialized_assertThisInitialized(_this));\n    }\n\n    i18next_copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, assertThisInitialized_assertThisInitialized(_this));\n    _this.options = options;\n\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n\n    _this.logger = baseLogger.create('translator');\n    return _this;\n  }\n\n  createClass_createClass(Translator, [{\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng) {\n      if (lng) this.language = lng;\n    }\n  }, {\n    key: \"exists\",\n    value: function exists(key) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        interpolation: {}\n      };\n      var resolved = this.resolve(key, options);\n      return resolved && resolved.res !== undefined;\n    }\n  }, {\n    key: \"extractFromKey\",\n    value: function extractFromKey(key, options) {\n      var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n      if (nsSeparator === undefined) nsSeparator = ':';\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var namespaces = options.ns || this.options.defaultNS;\n\n      if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n        var m = key.match(this.interpolator.nestingRegexp);\n\n        if (m && m.length > 0) {\n          return {\n            key: key,\n            namespaces: namespaces\n          };\n        }\n\n        var parts = key.split(nsSeparator);\n        if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n        key = parts.join(keySeparator);\n      }\n\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      return {\n        key: key,\n        namespaces: namespaces\n      };\n    }\n  }, {\n    key: \"translate\",\n    value: function translate(keys, options, lastKey) {\n      var _this2 = this;\n\n      if (typeof_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n        options = this.options.overloadTranslationOptionHandler(arguments);\n      }\n\n      if (!options) options = {};\n      if (keys === undefined || keys === null) return '';\n      if (!Array.isArray(keys)) keys = [String(keys)];\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n      var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n          key = _this$extractFromKey.key,\n          namespaces = _this$extractFromKey.namespaces;\n\n      var namespace = namespaces[namespaces.length - 1];\n      var lng = options.lng || this.language;\n      var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n      if (lng && lng.toLowerCase() === 'cimode') {\n        if (appendNamespaceToCIMode) {\n          var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n          return namespace + nsSeparator + key;\n        }\n\n        return key;\n      }\n\n      var resolved = this.resolve(keys, options);\n      var res = resolved && resolved.res;\n      var resUsedKey = resolved && resolved.usedKey || key;\n      var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n      var resType = Object.prototype.toString.apply(res);\n      var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n      var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n      var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n      var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n      if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n        if (!options.returnObjects && !this.options.returnObjects) {\n          this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n          return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, options) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n        }\n\n        if (keySeparator) {\n          var resTypeIsArray = resType === '[object Array]';\n          var copy = resTypeIsArray ? [] : {};\n          var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n          for (var m in res) {\n            if (Object.prototype.hasOwnProperty.call(res, m)) {\n              var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n              copy[m] = this.translate(deepKey, objectSpread_objectSpread({}, options, {\n                joinArrays: false,\n                ns: namespaces\n              }));\n              if (copy[m] === deepKey) copy[m] = res[m];\n            }\n          }\n\n          res = copy;\n        }\n      } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n        res = res.join(joinArrays);\n        if (res) res = this.extendTranslation(res, keys, options, lastKey);\n      } else {\n        var usedDefault = false;\n        var usedKey = false;\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var hasDefaultValue = Translator.hasDefaultValue(options);\n        var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count) : '';\n        var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n        if (!this.isValidLookup(res) && hasDefaultValue) {\n          usedDefault = true;\n          res = defaultValue;\n        }\n\n        if (!this.isValidLookup(res)) {\n          usedKey = true;\n          res = key;\n        }\n\n        var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n        if (usedKey || usedDefault || updateMissing) {\n          this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n          if (keySeparator) {\n            var fk = this.resolve(key, objectSpread_objectSpread({}, options, {\n              keySeparator: false\n            }));\n            if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n          }\n\n          var lngs = [];\n          var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n          if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n            for (var i = 0; i < fallbackLngs.length; i++) {\n              lngs.push(fallbackLngs[i]);\n            }\n          } else if (this.options.saveMissingTo === 'all') {\n            lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n          } else {\n            lngs.push(options.lng || this.language);\n          }\n\n          var send = function send(l, k, fallbackValue) {\n            if (_this2.options.missingKeyHandler) {\n              _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n            } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n              _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n            }\n\n            _this2.emit('missingKey', l, namespace, k, res);\n          };\n\n          if (this.options.saveMissing) {\n            if (this.options.saveMissingPlurals && needsPluralHandling) {\n              lngs.forEach(function (language) {\n                _this2.pluralResolver.getSuffixes(language).forEach(function (suffix) {\n                  send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n                });\n              });\n            } else {\n              send(lngs, key, defaultValue);\n            }\n          }\n        }\n\n        res = this.extendTranslation(res, keys, options, resolved, lastKey);\n        if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n        if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n      }\n\n      return res;\n    }\n  }, {\n    key: \"extendTranslation\",\n    value: function extendTranslation(res, key, options, resolved, lastKey) {\n      var _this3 = this;\n\n      if (this.i18nFormat && this.i18nFormat.parse) {\n        res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n          resolved: resolved\n        });\n      } else if (!options.skipInterpolation) {\n        if (options.interpolation) this.interpolator.init(objectSpread_objectSpread({}, options, {\n          interpolation: objectSpread_objectSpread({}, this.options.interpolation, options.interpolation)\n        }));\n        var skipOnVariables = options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n        var nestBef;\n\n        if (skipOnVariables) {\n          var nb = res.match(this.interpolator.nestingRegexp);\n          nestBef = nb && nb.length;\n        }\n\n        var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n        if (this.options.interpolation.defaultVariables) data = objectSpread_objectSpread({}, this.options.interpolation.defaultVariables, data);\n        res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n        if (skipOnVariables) {\n          var na = res.match(this.interpolator.nestingRegexp);\n          var nestAft = na && na.length;\n          if (nestBef < nestAft) options.nest = false;\n        }\n\n        if (options.nest !== false) res = this.interpolator.nest(res, 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 (lastKey && lastKey[0] === args[0] && !options.context) {\n            _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n            return null;\n          }\n\n          return _this3.translate.apply(_this3, args.concat([key]));\n        }, options);\n        if (options.interpolation) this.interpolator.reset();\n      }\n\n      var postProcess = options.postProcess || this.options.postProcess;\n      var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n      if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n        res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? objectSpread_objectSpread({\n          i18nResolved: resolved\n        }, options) : options, this);\n      }\n\n      return res;\n    }\n  }, {\n    key: \"resolve\",\n    value: function resolve(keys) {\n      var _this4 = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var found;\n      var usedKey;\n      var exactUsedKey;\n      var usedLng;\n      var usedNS;\n      if (typeof keys === 'string') keys = [keys];\n      keys.forEach(function (k) {\n        if (_this4.isValidLookup(found)) return;\n\n        var extracted = _this4.extractFromKey(k, options);\n\n        var key = extracted.key;\n        usedKey = key;\n        var namespaces = extracted.namespaces;\n        if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n        var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n        namespaces.forEach(function (ns) {\n          if (_this4.isValidLookup(found)) return;\n          usedNS = ns;\n\n          if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n            checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n            _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n          }\n\n          codes.forEach(function (code) {\n            if (_this4.isValidLookup(found)) return;\n            usedLng = code;\n            var finalKey = key;\n            var finalKeys = [finalKey];\n\n            if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n              _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n            } else {\n              var pluralSuffix;\n              if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n              if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n              if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n              if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n            }\n\n            var possibleKey;\n\n            while (possibleKey = finalKeys.pop()) {\n              if (!_this4.isValidLookup(found)) {\n                exactUsedKey = possibleKey;\n                found = _this4.getResource(code, ns, possibleKey, options);\n              }\n            }\n          });\n        });\n      });\n      return {\n        res: found,\n        usedKey: usedKey,\n        exactUsedKey: exactUsedKey,\n        usedLng: usedLng,\n        usedNS: usedNS\n      };\n    }\n  }, {\n    key: \"isValidLookup\",\n    value: function isValidLookup(res) {\n      return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(code, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n      return this.resourceStore.getResource(code, ns, key, options);\n    }\n  }], [{\n    key: \"hasDefaultValue\",\n    value: function hasDefaultValue(options) {\n      var prefix = 'defaultValue';\n\n      for (var option in options) {\n        if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n          return true;\n        }\n      }\n\n      return false;\n    }\n  }]);\n\n  return Translator;\n}(i18next_EventEmitter);\n\nfunction capitalize(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar i18next_LanguageUtil = function () {\n  function LanguageUtil(options) {\n    classCallCheck_classCallCheck(this, LanguageUtil);\n\n    this.options = options;\n    this.whitelist = this.options.supportedLngs || false;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n\n  createClass_createClass(LanguageUtil, [{\n    key: \"getScriptPartFromCode\",\n    value: function getScriptPartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return null;\n      var p = code.split('-');\n      if (p.length === 2) return null;\n      p.pop();\n      if (p[p.length - 1].toLowerCase() === 'x') return null;\n      return this.formatLanguageCode(p.join('-'));\n    }\n  }, {\n    key: \"getLanguagePartFromCode\",\n    value: function getLanguagePartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return code;\n      var p = code.split('-');\n      return this.formatLanguageCode(p[0]);\n    }\n  }, {\n    key: \"formatLanguageCode\",\n    value: function formatLanguageCode(code) {\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n        var p = code.split('-');\n\n        if (this.options.lowerCaseLng) {\n          p = p.map(function (part) {\n            return part.toLowerCase();\n          });\n        } else if (p.length === 2) {\n          p[0] = p[0].toLowerCase();\n          p[1] = p[1].toUpperCase();\n          if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n        } else if (p.length === 3) {\n          p[0] = p[0].toLowerCase();\n          if (p[1].length === 2) p[1] = p[1].toUpperCase();\n          if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n          if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n          if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n        }\n\n        return p.join('-');\n      }\n\n      return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n    }\n  }, {\n    key: \"isWhitelisted\",\n    value: function isWhitelisted(code) {\n      this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n      return this.isSupportedCode(code);\n    }\n  }, {\n    key: \"isSupportedCode\",\n    value: function isSupportedCode(code) {\n      if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n        code = this.getLanguagePartFromCode(code);\n      }\n\n      return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n    }\n  }, {\n    key: \"getBestMatchFromCodes\",\n    value: function getBestMatchFromCodes(codes) {\n      var _this = this;\n\n      if (!codes) return null;\n      var found;\n      codes.forEach(function (code) {\n        if (found) return;\n\n        var cleanedLng = _this.formatLanguageCode(code);\n\n        if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n      });\n\n      if (!found && this.options.supportedLngs) {\n        codes.forEach(function (code) {\n          if (found) return;\n\n          var lngOnly = _this.getLanguagePartFromCode(code);\n\n          if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n          found = _this.options.supportedLngs.find(function (supportedLng) {\n            if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n          });\n        });\n      }\n\n      if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n      return found;\n    }\n  }, {\n    key: \"getFallbackCodes\",\n    value: function getFallbackCodes(fallbacks, code) {\n      if (!fallbacks) return [];\n      if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n      if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n      if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n      if (!code) return fallbacks[\"default\"] || [];\n      var found = fallbacks[code];\n      if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n      if (!found) found = fallbacks[this.formatLanguageCode(code)];\n      if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n      if (!found) found = fallbacks[\"default\"];\n      return found || [];\n    }\n  }, {\n    key: \"toResolveHierarchy\",\n    value: function toResolveHierarchy(code, fallbackCode) {\n      var _this2 = this;\n\n      var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n      var codes = [];\n\n      var addCode = function addCode(c) {\n        if (!c) return;\n\n        if (_this2.isSupportedCode(c)) {\n          codes.push(c);\n        } else {\n          _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n        }\n      };\n\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n        if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n        if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n      } else if (typeof code === 'string') {\n        addCode(this.formatLanguageCode(code));\n      }\n\n      fallbackCodes.forEach(function (fc) {\n        if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n      });\n      return codes;\n    }\n  }]);\n\n  return LanguageUtil;\n}();\n\nvar sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n  nr: [1, 2],\n  fc: 1\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n  nr: [1, 2],\n  fc: 2\n}, {\n  lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n  nr: [1],\n  fc: 3\n}, {\n  lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n  nr: [1, 2, 5],\n  fc: 4\n}, {\n  lngs: ['ar'],\n  nr: [0, 1, 2, 3, 11, 100],\n  fc: 5\n}, {\n  lngs: ['cs', 'sk'],\n  nr: [1, 2, 5],\n  fc: 6\n}, {\n  lngs: ['csb', 'pl'],\n  nr: [1, 2, 5],\n  fc: 7\n}, {\n  lngs: ['cy'],\n  nr: [1, 2, 3, 8],\n  fc: 8\n}, {\n  lngs: ['fr'],\n  nr: [1, 2],\n  fc: 9\n}, {\n  lngs: ['ga'],\n  nr: [1, 2, 3, 7, 11],\n  fc: 10\n}, {\n  lngs: ['gd'],\n  nr: [1, 2, 3, 20],\n  fc: 11\n}, {\n  lngs: ['is'],\n  nr: [1, 2],\n  fc: 12\n}, {\n  lngs: ['jv'],\n  nr: [0, 1],\n  fc: 13\n}, {\n  lngs: ['kw'],\n  nr: [1, 2, 3, 4],\n  fc: 14\n}, {\n  lngs: ['lt'],\n  nr: [1, 2, 10],\n  fc: 15\n}, {\n  lngs: ['lv'],\n  nr: [1, 2, 0],\n  fc: 16\n}, {\n  lngs: ['mk'],\n  nr: [1, 2],\n  fc: 17\n}, {\n  lngs: ['mnk'],\n  nr: [0, 1, 2],\n  fc: 18\n}, {\n  lngs: ['mt'],\n  nr: [1, 2, 11, 20],\n  fc: 19\n}, {\n  lngs: ['or'],\n  nr: [2, 1],\n  fc: 2\n}, {\n  lngs: ['ro'],\n  nr: [1, 2, 20],\n  fc: 20\n}, {\n  lngs: ['sl'],\n  nr: [5, 1, 2, 3],\n  fc: 21\n}, {\n  lngs: ['he', 'iw'],\n  nr: [1, 2, 20, 21],\n  fc: 22\n}];\nvar _rulesPluralsTypes = {\n  1: function _(n) {\n    return Number(n > 1);\n  },\n  2: function _(n) {\n    return Number(n != 1);\n  },\n  3: function _(n) {\n    return 0;\n  },\n  4: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  5: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n  },\n  6: function _(n) {\n    return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n  },\n  7: function _(n) {\n    return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  8: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n  },\n  9: function _(n) {\n    return Number(n >= 2);\n  },\n  10: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n  },\n  11: function _(n) {\n    return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n  },\n  12: function _(n) {\n    return Number(n % 10 != 1 || n % 100 == 11);\n  },\n  13: function _(n) {\n    return Number(n !== 0);\n  },\n  14: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n  },\n  15: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  16: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n  },\n  17: function _(n) {\n    return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n  },\n  18: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n  },\n  19: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n  },\n  20: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n  },\n  21: function _(n) {\n    return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n  },\n  22: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n  }\n};\n\nfunction createRules() {\n  var rules = {};\n  sets.forEach(function (set) {\n    set.lngs.forEach(function (l) {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n}\n\nvar i18next_PluralResolver = function () {\n  function PluralResolver(languageUtils) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    classCallCheck_classCallCheck(this, PluralResolver);\n\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    this.rules = createRules();\n  }\n\n  createClass_createClass(PluralResolver, [{\n    key: \"addRule\",\n    value: function addRule(lng, obj) {\n      this.rules[lng] = obj;\n    }\n  }, {\n    key: \"getRule\",\n    value: function getRule(code) {\n      return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n    }\n  }, {\n    key: \"needsPlural\",\n    value: function needsPlural(code) {\n      var rule = this.getRule(code);\n      return rule && rule.numbers.length > 1;\n    }\n  }, {\n    key: \"getPluralFormsOfKey\",\n    value: function getPluralFormsOfKey(code, key) {\n      return this.getSuffixes(code).map(function (suffix) {\n        return key + suffix;\n      });\n    }\n  }, {\n    key: \"getSuffixes\",\n    value: function getSuffixes(code) {\n      var _this = this;\n\n      var rule = this.getRule(code);\n\n      if (!rule) {\n        return [];\n      }\n\n      return rule.numbers.map(function (number) {\n        return _this.getSuffix(code, number);\n      });\n    }\n  }, {\n    key: \"getSuffix\",\n    value: function getSuffix(code, count) {\n      var _this2 = this;\n\n      var rule = this.getRule(code);\n\n      if (rule) {\n        var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n        var suffix = rule.numbers[idx];\n\n        if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n          if (suffix === 2) {\n            suffix = 'plural';\n          } else if (suffix === 1) {\n            suffix = '';\n          }\n        }\n\n        var returnSuffix = function returnSuffix() {\n          return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n        };\n\n        if (this.options.compatibilityJSON === 'v1') {\n          if (suffix === 1) return '';\n          if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n          return returnSuffix();\n        } else if (this.options.compatibilityJSON === 'v2') {\n          return returnSuffix();\n        } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n          return returnSuffix();\n        }\n\n        return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n      }\n\n      this.logger.warn(\"no plural rule found for: \".concat(code));\n      return '';\n    }\n  }]);\n\n  return PluralResolver;\n}();\n\nvar i18next_Interpolator = function () {\n  function Interpolator() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    classCallCheck_classCallCheck(this, Interpolator);\n\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n\n    this.format = options.interpolation && options.interpolation.format || function (value) {\n      return value;\n    };\n\n    this.init(options);\n  }\n\n  createClass_createClass(Interpolator, [{\n    key: \"init\",\n    value: function init() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (!options.interpolation) options.interpolation = {\n        escapeValue: true\n      };\n      var iOpts = options.interpolation;\n      this.escape = iOpts.escape !== undefined ? iOpts.escape : i18next_escape;\n      this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n      this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n      this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n      this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n      this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n      this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n      this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n      this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n      this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n      this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n      this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n      this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n      this.resetRegExp();\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      if (this.options) this.init(this.options);\n    }\n  }, {\n    key: \"resetRegExp\",\n    value: function resetRegExp() {\n      var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n      this.regexp = new RegExp(regexpStr, 'g');\n      var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n      this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n      var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n      this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n    }\n  }, {\n    key: \"interpolate\",\n    value: function interpolate(str, data, lng, options) {\n      var _this = this;\n\n      var match;\n      var value;\n      var replaces;\n      var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n      function regexSafe(val) {\n        return val.replace(/\\$/g, '$$$$');\n      }\n\n      var handleFormat = function handleFormat(key) {\n        if (key.indexOf(_this.formatSeparator) < 0) {\n          var path = getPathWithDefaults(data, defaultData, key);\n          return _this.alwaysFormat ? _this.format(path, undefined, lng) : path;\n        }\n\n        var p = key.split(_this.formatSeparator);\n        var k = p.shift().trim();\n        var f = p.join(_this.formatSeparator).trim();\n        return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, options);\n      };\n\n      this.resetRegExp();\n      var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n      var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n      var todos = [{\n        regex: this.regexpUnescape,\n        safeValue: function safeValue(val) {\n          return regexSafe(val);\n        }\n      }, {\n        regex: this.regexp,\n        safeValue: function safeValue(val) {\n          return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n        }\n      }];\n      todos.forEach(function (todo) {\n        replaces = 0;\n\n        while (match = todo.regex.exec(str)) {\n          value = handleFormat(match[1].trim());\n\n          if (value === undefined) {\n            if (typeof missingInterpolationHandler === 'function') {\n              var temp = missingInterpolationHandler(str, match, options);\n              value = typeof temp === 'string' ? temp : '';\n            } else if (skipOnVariables) {\n              value = match[0];\n              continue;\n            } else {\n              _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n              value = '';\n            }\n          } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n            value = makeString(value);\n          }\n\n          str = str.replace(match[0], todo.safeValue(value));\n          todo.regex.lastIndex = 0;\n          replaces++;\n\n          if (replaces >= _this.maxReplaces) {\n            break;\n          }\n        }\n      });\n      return str;\n    }\n  }, {\n    key: \"nest\",\n    value: function nest(str, fc) {\n      var _this2 = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var match;\n      var value;\n\n      var clonedOptions = objectSpread_objectSpread({}, options);\n\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n\n      function handleHasOptions(key, inheritedOptions) {\n        var sep = this.nestingOptionsSeparator;\n        if (key.indexOf(sep) < 0) return key;\n        var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n        var optionsString = \"{\".concat(c[1]);\n        key = c[0];\n        optionsString = this.interpolate(optionsString, clonedOptions);\n        optionsString = optionsString.replace(/'/g, '\"');\n\n        try {\n          clonedOptions = JSON.parse(optionsString);\n          if (inheritedOptions) clonedOptions = objectSpread_objectSpread({}, inheritedOptions, clonedOptions);\n        } catch (e) {\n          this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n          return \"\".concat(key).concat(sep).concat(optionsString);\n        }\n\n        delete clonedOptions.defaultValue;\n        return key;\n      }\n\n      while (match = this.nestingRegexp.exec(str)) {\n        var formatters = [];\n        var doReduce = false;\n\n        if (match[0].includes(this.formatSeparator) && !/{.*}/.test(match[1])) {\n          var r = match[1].split(this.formatSeparator).map(function (elem) {\n            return elem.trim();\n          });\n          match[1] = r.shift();\n          formatters = r;\n          doReduce = true;\n        }\n\n        value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n        if (value && match[0] === str && typeof value !== 'string') return value;\n        if (typeof value !== 'string') value = makeString(value);\n\n        if (!value) {\n          this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n          value = '';\n        }\n\n        if (doReduce) {\n          value = formatters.reduce(function (v, f) {\n            return _this2.format(v, f, options.lng, options);\n          }, value.trim());\n        }\n\n        str = str.replace(match[0], value);\n        this.regexp.lastIndex = 0;\n      }\n\n      return str;\n    }\n  }]);\n\n  return Interpolator;\n}();\n\nfunction remove(arr, what) {\n  var found = arr.indexOf(what);\n\n  while (found !== -1) {\n    arr.splice(found, 1);\n    found = arr.indexOf(what);\n  }\n}\n\nvar i18next_Connector = function (_EventEmitter) {\n  inherits_inherits(Connector, _EventEmitter);\n\n  function Connector(backend, store, services) {\n    var _this;\n\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n    classCallCheck_classCallCheck(this, Connector);\n\n    _this = possibleConstructorReturn_possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(Connector).call(this));\n\n    if (isIE10) {\n      i18next_EventEmitter.call(assertThisInitialized_assertThisInitialized(_this));\n    }\n\n    _this.backend = backend;\n    _this.store = store;\n    _this.services = services;\n    _this.languageUtils = services.languageUtils;\n    _this.options = options;\n    _this.logger = baseLogger.create('backendConnector');\n    _this.state = {};\n    _this.queue = [];\n\n    if (_this.backend && _this.backend.init) {\n      _this.backend.init(services, options.backend, options);\n    }\n\n    return _this;\n  }\n\n  createClass_createClass(Connector, [{\n    key: \"queueLoad\",\n    value: function queueLoad(languages, namespaces, options, callback) {\n      var _this2 = this;\n\n      var toLoad = [];\n      var pending = [];\n      var toLoadLanguages = [];\n      var toLoadNamespaces = [];\n      languages.forEach(function (lng) {\n        var hasAllNamespaces = true;\n        namespaces.forEach(function (ns) {\n          var name = \"\".concat(lng, \"|\").concat(ns);\n\n          if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n            _this2.state[name] = 2;\n          } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n            if (pending.indexOf(name) < 0) pending.push(name);\n          } else {\n            _this2.state[name] = 1;\n            hasAllNamespaces = false;\n            if (pending.indexOf(name) < 0) pending.push(name);\n            if (toLoad.indexOf(name) < 0) toLoad.push(name);\n            if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n          }\n        });\n        if (!hasAllNamespaces) toLoadLanguages.push(lng);\n      });\n\n      if (toLoad.length || pending.length) {\n        this.queue.push({\n          pending: pending,\n          loaded: {},\n          errors: [],\n          callback: callback\n        });\n      }\n\n      return {\n        toLoad: toLoad,\n        pending: pending,\n        toLoadLanguages: toLoadLanguages,\n        toLoadNamespaces: toLoadNamespaces\n      };\n    }\n  }, {\n    key: \"loaded\",\n    value: function loaded(name, err, data) {\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      if (err) this.emit('failedLoading', lng, ns, err);\n\n      if (data) {\n        this.store.addResourceBundle(lng, ns, data);\n      }\n\n      this.state[name] = err ? -1 : 2;\n      var loaded = {};\n      this.queue.forEach(function (q) {\n        pushPath(q.loaded, [lng], ns);\n        remove(q.pending, name);\n        if (err) q.errors.push(err);\n\n        if (q.pending.length === 0 && !q.done) {\n          Object.keys(q.loaded).forEach(function (l) {\n            if (!loaded[l]) loaded[l] = [];\n\n            if (q.loaded[l].length) {\n              q.loaded[l].forEach(function (ns) {\n                if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n              });\n            }\n          });\n          q.done = true;\n\n          if (q.errors.length) {\n            q.callback(q.errors);\n          } else {\n            q.callback();\n          }\n        }\n      });\n      this.emit('loaded', loaded);\n      this.queue = this.queue.filter(function (q) {\n        return !q.done;\n      });\n    }\n  }, {\n    key: \"read\",\n    value: function read(lng, ns, fcName) {\n      var _this3 = this;\n\n      var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n      var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n      var callback = arguments.length > 5 ? arguments[5] : undefined;\n      if (!lng.length) return callback(null, {});\n      return this.backend[fcName](lng, ns, function (err, data) {\n        if (err && data && tried < 5) {\n          setTimeout(function () {\n            _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n          }, wait);\n          return;\n        }\n\n        callback(err, data);\n      });\n    }\n  }, {\n    key: \"prepareLoading\",\n    value: function prepareLoading(languages, namespaces) {\n      var _this4 = this;\n\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n      if (!this.backend) {\n        this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n        return callback && callback();\n      }\n\n      if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n      if (!toLoad.toLoad.length) {\n        if (!toLoad.pending.length) callback();\n        return null;\n      }\n\n      toLoad.toLoad.forEach(function (name) {\n        _this4.loadOne(name);\n      });\n    }\n  }, {\n    key: \"load\",\n    value: function load(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {}, callback);\n    }\n  }, {\n    key: \"reload\",\n    value: function reload(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {\n        reload: true\n      }, callback);\n    }\n  }, {\n    key: \"loadOne\",\n    value: function loadOne(name) {\n      var _this5 = this;\n\n      var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n        if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n        if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n        _this5.loaded(name, err, data);\n      });\n    }\n  }, {\n    key: \"saveMissing\",\n    value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n      if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n        this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        return;\n      }\n\n      if (key === undefined || key === null || key === '') return;\n\n      if (this.backend && this.backend.create) {\n        this.backend.create(languages, namespace, key, fallbackValue, null, objectSpread_objectSpread({}, options, {\n          isUpdate: isUpdate\n        }));\n      }\n\n      if (!languages || !languages[0]) return;\n      this.store.addResource(languages[0], namespace, key, fallbackValue);\n    }\n  }]);\n\n  return Connector;\n}(i18next_EventEmitter);\n\nfunction i18next_get() {\n  return {\n    debug: false,\n    initImmediate: true,\n    ns: ['translation'],\n    defaultNS: ['translation'],\n    fallbackLng: ['dev'],\n    fallbackNS: false,\n    whitelist: false,\n    nonExplicitWhitelist: false,\n    supportedLngs: false,\n    nonExplicitSupportedLngs: false,\n    load: 'all',\n    preload: false,\n    simplifyPluralSuffix: true,\n    keySeparator: '.',\n    nsSeparator: ':',\n    pluralSeparator: '_',\n    contextSeparator: '_',\n    partialBundledLanguages: false,\n    saveMissing: false,\n    updateMissing: false,\n    saveMissingTo: 'fallback',\n    saveMissingPlurals: true,\n    missingKeyHandler: false,\n    missingInterpolationHandler: false,\n    postProcess: false,\n    postProcessPassResolved: false,\n    returnNull: true,\n    returnEmptyString: true,\n    returnObjects: false,\n    joinArrays: false,\n    returnedObjectHandler: false,\n    parseMissingKeyHandler: false,\n    appendNamespaceToMissingKey: false,\n    appendNamespaceToCIMode: false,\n    overloadTranslationOptionHandler: function handle(args) {\n      var ret = {};\n      if (typeof_typeof(args[1]) === 'object') ret = args[1];\n      if (typeof args[1] === 'string') ret.defaultValue = args[1];\n      if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n      if (typeof_typeof(args[2]) === 'object' || typeof_typeof(args[3]) === 'object') {\n        var options = args[3] || args[2];\n        Object.keys(options).forEach(function (key) {\n          ret[key] = options[key];\n        });\n      }\n\n      return ret;\n    },\n    interpolation: {\n      escapeValue: true,\n      format: function format(value, _format, lng, options) {\n        return value;\n      },\n      prefix: '{{',\n      suffix: '}}',\n      formatSeparator: ',',\n      unescapePrefix: '-',\n      nestingPrefix: '$t(',\n      nestingSuffix: ')',\n      nestingOptionsSeparator: ',',\n      maxReplaces: 1000,\n      skipOnVariables: false\n    }\n  };\n}\nfunction transformOptions(options) {\n  if (typeof options.ns === 'string') options.ns = [options.ns];\n  if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n  if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n  if (options.whitelist) {\n    if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n      options.whitelist = options.whitelist.concat(['cimode']);\n    }\n\n    options.supportedLngs = options.whitelist;\n  }\n\n  if (options.nonExplicitWhitelist) {\n    options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n  }\n\n  if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n\n  return options;\n}\n\nfunction i18next_noop() {}\n\nvar i18next_I18n = function (_EventEmitter) {\n  inherits_inherits(I18n, _EventEmitter);\n\n  function I18n() {\n    var _this;\n\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n    classCallCheck_classCallCheck(this, I18n);\n\n    _this = possibleConstructorReturn_possibleConstructorReturn(this, getPrototypeOf_getPrototypeOf(I18n).call(this));\n\n    if (isIE10) {\n      i18next_EventEmitter.call(assertThisInitialized_assertThisInitialized(_this));\n    }\n\n    _this.options = transformOptions(options);\n    _this.services = {};\n    _this.logger = baseLogger;\n    _this.modules = {\n      external: []\n    };\n\n    if (callback && !_this.isInitialized && !options.isClone) {\n      if (!_this.options.initImmediate) {\n        _this.init(options, callback);\n\n        return possibleConstructorReturn_possibleConstructorReturn(_this, assertThisInitialized_assertThisInitialized(_this));\n      }\n\n      setTimeout(function () {\n        _this.init(options, callback);\n      }, 0);\n    }\n\n    return _this;\n  }\n\n  createClass_createClass(I18n, [{\n    key: \"init\",\n    value: function init() {\n      var _this2 = this;\n\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n\n      if (options.whitelist && !options.supportedLngs) {\n        this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n      }\n\n      if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n        this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n      }\n\n      this.options = objectSpread_objectSpread({}, i18next_get(), this.options, transformOptions(options));\n      this.format = this.options.interpolation.format;\n      if (!callback) callback = i18next_noop;\n\n      function createClassOnDemand(ClassOrObject) {\n        if (!ClassOrObject) return null;\n        if (typeof ClassOrObject === 'function') return new ClassOrObject();\n        return ClassOrObject;\n      }\n\n      if (!this.options.isClone) {\n        if (this.modules.logger) {\n          baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n        } else {\n          baseLogger.init(null, this.options);\n        }\n\n        var lu = new i18next_LanguageUtil(this.options);\n        this.store = new i18next_ResourceStore(this.options.resources, this.options);\n        var s = this.services;\n        s.logger = baseLogger;\n        s.resourceStore = this.store;\n        s.languageUtils = lu;\n        s.pluralResolver = new i18next_PluralResolver(lu, {\n          prepend: this.options.pluralSeparator,\n          compatibilityJSON: this.options.compatibilityJSON,\n          simplifyPluralSuffix: this.options.simplifyPluralSuffix\n        });\n        s.interpolator = new i18next_Interpolator(this.options);\n        s.utils = {\n          hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n        };\n        s.backendConnector = new i18next_Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n        s.backendConnector.on('*', function (event) {\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          _this2.emit.apply(_this2, [event].concat(args));\n        });\n\n        if (this.modules.languageDetector) {\n          s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n          s.languageDetector.init(s, this.options.detection, this.options);\n        }\n\n        if (this.modules.i18nFormat) {\n          s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n          if (s.i18nFormat.init) s.i18nFormat.init(this);\n        }\n\n        this.translator = new i18next_Translator(this.services, this.options);\n        this.translator.on('*', function (event) {\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          _this2.emit.apply(_this2, [event].concat(args));\n        });\n        this.modules.external.forEach(function (m) {\n          if (m.init) m.init(_this2);\n        });\n      }\n\n      if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n        var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n      }\n\n      if (!this.services.languageDetector && !this.options.lng) {\n        this.logger.warn('init: no languageDetector is used and no lng is defined');\n      }\n\n      var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n      storeApi.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store;\n\n          return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n        };\n      });\n      var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n      storeApiChained.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store2;\n\n          (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n          return _this2;\n        };\n      });\n      var deferred = defer();\n\n      var load = function load() {\n        var finish = function finish(err, t) {\n          if (_this2.isInitialized) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n          _this2.isInitialized = true;\n          if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n          _this2.emit('initialized', _this2.options);\n\n          deferred.resolve(t);\n          callback(err, t);\n        };\n\n        if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n        _this2.changeLanguage(_this2.options.lng, finish);\n      };\n\n      if (this.options.resources || !this.options.initImmediate) {\n        load();\n      } else {\n        setTimeout(load, 0);\n      }\n\n      return deferred;\n    }\n  }, {\n    key: \"loadResources\",\n    value: function loadResources(language) {\n      var _this3 = this;\n\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : i18next_noop;\n      var usedCallback = callback;\n      var usedLng = typeof language === 'string' ? language : this.language;\n      if (typeof language === 'function') usedCallback = language;\n\n      if (!this.options.resources || this.options.partialBundledLanguages) {\n        if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n        var toLoad = [];\n\n        var append = function append(lng) {\n          if (!lng) return;\n\n          var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n          lngs.forEach(function (l) {\n            if (toLoad.indexOf(l) < 0) toLoad.push(l);\n          });\n        };\n\n        if (!usedLng) {\n          var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n          fallbacks.forEach(function (l) {\n            return append(l);\n          });\n        } else {\n          append(usedLng);\n        }\n\n        if (this.options.preload) {\n          this.options.preload.forEach(function (l) {\n            return append(l);\n          });\n        }\n\n        this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n      } else {\n        usedCallback(null);\n      }\n    }\n  }, {\n    key: \"reloadResources\",\n    value: function reloadResources(lngs, ns, callback) {\n      var deferred = defer();\n      if (!lngs) lngs = this.languages;\n      if (!ns) ns = this.options.ns;\n      if (!callback) callback = i18next_noop;\n      this.services.backendConnector.reload(lngs, ns, function (err) {\n        deferred.resolve();\n        callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"use\",\n    value: function use(module) {\n      if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n      if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n      if (module.type === 'backend') {\n        this.modules.backend = module;\n      }\n\n      if (module.type === 'logger' || module.log && module.warn && module.error) {\n        this.modules.logger = module;\n      }\n\n      if (module.type === 'languageDetector') {\n        this.modules.languageDetector = module;\n      }\n\n      if (module.type === 'i18nFormat') {\n        this.modules.i18nFormat = module;\n      }\n\n      if (module.type === 'postProcessor') {\n        postProcessor.addPostProcessor(module);\n      }\n\n      if (module.type === '3rdParty') {\n        this.modules.external.push(module);\n      }\n\n      return this;\n    }\n  }, {\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng, callback) {\n      var _this4 = this;\n\n      this.isLanguageChangingTo = lng;\n      var deferred = defer();\n      this.emit('languageChanging', lng);\n\n      var done = function done(err, l) {\n        if (l) {\n          _this4.language = l;\n          _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n          _this4.translator.changeLanguage(l);\n\n          _this4.isLanguageChangingTo = undefined;\n\n          _this4.emit('languageChanged', l);\n\n          _this4.logger.log('languageChanged', l);\n        } else {\n          _this4.isLanguageChangingTo = undefined;\n        }\n\n        deferred.resolve(function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n        if (callback) callback(err, function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n      };\n\n      var setLng = function setLng(lngs) {\n        var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n        if (l) {\n          if (!_this4.language) {\n            _this4.language = l;\n            _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n          }\n\n          if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n          if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n        }\n\n        _this4.loadResources(l, function (err) {\n          done(err, l);\n        });\n      };\n\n      if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n        setLng(this.services.languageDetector.detect());\n      } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n        this.services.languageDetector.detect(setLng);\n      } else {\n        setLng(lng);\n      }\n\n      return deferred;\n    }\n  }, {\n    key: \"getFixedT\",\n    value: function getFixedT(lng, ns) {\n      var _this5 = this;\n\n      var fixedT = function fixedT(key, opts) {\n        var options;\n\n        if (typeof_typeof(opts) !== 'object') {\n          for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n            rest[_key3 - 2] = arguments[_key3];\n          }\n\n          options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n        } else {\n          options = objectSpread_objectSpread({}, opts);\n        }\n\n        options.lng = options.lng || fixedT.lng;\n        options.lngs = options.lngs || fixedT.lngs;\n        options.ns = options.ns || fixedT.ns;\n        return _this5.t(key, options);\n      };\n\n      if (typeof lng === 'string') {\n        fixedT.lng = lng;\n      } else {\n        fixedT.lngs = lng;\n      }\n\n      fixedT.ns = ns;\n      return fixedT;\n    }\n  }, {\n    key: \"t\",\n    value: function t() {\n      var _this$translator;\n\n      return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n    }\n  }, {\n    key: \"exists\",\n    value: function exists() {\n      var _this$translator2;\n\n      return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n    }\n  }, {\n    key: \"setDefaultNamespace\",\n    value: function setDefaultNamespace(ns) {\n      this.options.defaultNS = ns;\n    }\n  }, {\n    key: \"hasLoadedNamespace\",\n    value: function hasLoadedNamespace(ns) {\n      var _this6 = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (!this.isInitialized) {\n        this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n        return false;\n      }\n\n      if (!this.languages || !this.languages.length) {\n        this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n        return false;\n      }\n\n      var lng = this.languages[0];\n      var fallbackLng = this.options ? this.options.fallbackLng : false;\n      var lastLng = this.languages[this.languages.length - 1];\n      if (lng.toLowerCase() === 'cimode') return true;\n\n      var loadNotPending = function loadNotPending(l, n) {\n        var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n        return loadState === -1 || loadState === 2;\n      };\n\n      if (options.precheck) {\n        var preResult = options.precheck(this, loadNotPending);\n        if (preResult !== undefined) return preResult;\n      }\n\n      if (this.hasResourceBundle(lng, ns)) return true;\n      if (!this.services.backendConnector.backend) return true;\n      if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n      return false;\n    }\n  }, {\n    key: \"loadNamespaces\",\n    value: function loadNamespaces(ns, callback) {\n      var _this7 = this;\n\n      var deferred = defer();\n\n      if (!this.options.ns) {\n        callback && callback();\n        return Promise.resolve();\n      }\n\n      if (typeof ns === 'string') ns = [ns];\n      ns.forEach(function (n) {\n        if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n      });\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"loadLanguages\",\n    value: function loadLanguages(lngs, callback) {\n      var deferred = defer();\n      if (typeof lngs === 'string') lngs = [lngs];\n      var preloaded = this.options.preload || [];\n      var newLngs = lngs.filter(function (lng) {\n        return preloaded.indexOf(lng) < 0;\n      });\n\n      if (!newLngs.length) {\n        if (callback) callback();\n        return Promise.resolve();\n      }\n\n      this.options.preload = preloaded.concat(newLngs);\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"dir\",\n    value: function dir(lng) {\n      if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n      if (!lng) return 'rtl';\n      var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n      return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n    }\n  }, {\n    key: \"createInstance\",\n    value: function createInstance() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 ? arguments[1] : undefined;\n      return new I18n(options, callback);\n    }\n  }, {\n    key: \"cloneInstance\",\n    value: function cloneInstance() {\n      var _this8 = this;\n\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : i18next_noop;\n\n      var mergedOptions = objectSpread_objectSpread({}, this.options, options, {\n        isClone: true\n      });\n\n      var clone = new I18n(mergedOptions);\n      var membersToCopy = ['store', 'services', 'language'];\n      membersToCopy.forEach(function (m) {\n        clone[m] = _this8[m];\n      });\n      clone.services = objectSpread_objectSpread({}, this.services);\n      clone.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      clone.translator = new i18next_Translator(clone.services, clone.options);\n      clone.translator.on('*', function (event) {\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        clone.emit.apply(clone, [event].concat(args));\n      });\n      clone.init(mergedOptions, callback);\n      clone.translator.options = clone.options;\n      clone.translator.backendConnector.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      return clone;\n    }\n  }]);\n\n  return I18n;\n}(i18next_EventEmitter);\n\nvar i18next = new i18next_I18n();\n\n/* harmony default export */ var esm_i18next = (i18next);\n\n// EXTERNAL MODULE: ./node_modules/lodash/debounce.js\nvar debounce = __webpack_require__(58);\nvar debounce_default = /*#__PURE__*/__webpack_require__.n(debounce);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.js\nvar es_symbol = __webpack_require__(71);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.get-own-property-descriptor.js\nvar es_object_get_own_property_descriptor = __webpack_require__(81);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.get-own-property-descriptors.js\nvar es_object_get_own_property_descriptors = __webpack_require__(82);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.define-properties.js\nvar es_object_define_properties = __webpack_require__(79);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.define-property.js\nvar es_object_define_property = __webpack_require__(80);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/extends.js\nvar runtime_helpers_extends = __webpack_require__(162);\nvar helpers_extends_default = /*#__PURE__*/__webpack_require__.n(runtime_helpers_extends);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/defineProperty.js\nvar helpers_defineProperty = __webpack_require__(28);\nvar helpers_defineProperty_default = /*#__PURE__*/__webpack_require__.n(helpers_defineProperty);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\nvar helpers_objectWithoutProperties = __webpack_require__(61);\nvar helpers_objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(helpers_objectWithoutProperties);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.bind.js\nvar es_function_bind = __webpack_require__(242);\n\n// EXTERNAL MODULE: ./node_modules/fabric/dist/fabric.js\nvar fabric = __webpack_require__(5);\n\n// CONCATENATED MODULE: ./node_modules/ulid/dist/index.esm.js\nfunction createError(message) {\n    var err = new Error(message);\n    err.source = \"ulid\";\n    return err;\n}\n// These values should NEVER change. If\n// they do, we're no longer making ulids!\nvar ENCODING = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\"; // Crockford's Base32\nvar ENCODING_LEN = ENCODING.length;\nvar TIME_MAX = Math.pow(2, 48) - 1;\nvar TIME_LEN = 10;\nvar RANDOM_LEN = 16;\nfunction replaceCharAt(str, index, char) {\n    if (index > str.length - 1) {\n        return str;\n    }\n    return str.substr(0, index) + char + str.substr(index + 1);\n}\nfunction incrementBase32(str) {\n    var done = undefined;\n    var index = str.length;\n    var char = void 0;\n    var charIndex = void 0;\n    var maxCharIndex = ENCODING_LEN - 1;\n    while (!done && index-- >= 0) {\n        char = str[index];\n        charIndex = ENCODING.indexOf(char);\n        if (charIndex === -1) {\n            throw createError(\"incorrectly encoded string\");\n        }\n        if (charIndex === maxCharIndex) {\n            str = replaceCharAt(str, index, ENCODING[0]);\n            continue;\n        }\n        done = replaceCharAt(str, index, ENCODING[charIndex + 1]);\n    }\n    if (typeof done === \"string\") {\n        return done;\n    }\n    throw createError(\"cannot increment this string\");\n}\nfunction randomChar(prng) {\n    var rand = Math.floor(prng() * ENCODING_LEN);\n    if (rand === ENCODING_LEN) {\n        rand = ENCODING_LEN - 1;\n    }\n    return ENCODING.charAt(rand);\n}\nfunction encodeTime(now, len) {\n    if (isNaN(now)) {\n        throw new Error(now + \" must be a number\");\n    }\n    if (now > TIME_MAX) {\n        throw createError(\"cannot encode time greater than \" + TIME_MAX);\n    }\n    if (now < 0) {\n        throw createError(\"time must be positive\");\n    }\n    if (Number.isInteger(now) === false) {\n        throw createError(\"time must be an integer\");\n    }\n    var mod = void 0;\n    var str = \"\";\n    for (; len > 0; len--) {\n        mod = now % ENCODING_LEN;\n        str = ENCODING.charAt(mod) + str;\n        now = (now - mod) / ENCODING_LEN;\n    }\n    return str;\n}\nfunction encodeRandom(len, prng) {\n    var str = \"\";\n    for (; len > 0; len--) {\n        str = randomChar(prng) + str;\n    }\n    return str;\n}\nfunction decodeTime(id) {\n    if (id.length !== TIME_LEN + RANDOM_LEN) {\n        throw createError(\"malformed ulid\");\n    }\n    var time = id.substr(0, TIME_LEN).split(\"\").reverse().reduce(function (carry, char, index) {\n        var encodingIndex = ENCODING.indexOf(char);\n        if (encodingIndex === -1) {\n            throw createError(\"invalid character found: \" + char);\n        }\n        return carry += encodingIndex * Math.pow(ENCODING_LEN, index);\n    }, 0);\n    if (time > TIME_MAX) {\n        throw createError(\"malformed ulid, timestamp too large\");\n    }\n    return time;\n}\nfunction detectPrng() {\n    var allowInsecure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var root = arguments[1];\n\n    if (!root) {\n        root = typeof window !== \"undefined\" ? window : null;\n    }\n    var browserCrypto = root && (root.crypto || root.msCrypto);\n    if (browserCrypto) {\n        return function () {\n            var buffer = new Uint8Array(1);\n            browserCrypto.getRandomValues(buffer);\n            return buffer[0] / 0xff;\n        };\n    } else {\n        try {\n            var nodeCrypto = __webpack_require__(956);\n            return function () {\n                return nodeCrypto.randomBytes(1).readUInt8() / 0xff;\n            };\n        } catch (e) {}\n    }\n    if (allowInsecure) {\n        try {\n            console.error(\"secure crypto unusable, falling back to insecure Math.random()!\");\n        } catch (e) {}\n        return function () {\n            return Math.random();\n        };\n    }\n    throw createError(\"secure crypto unusable, insecure Math.random not allowed\");\n}\nfunction factory(currPrng) {\n    if (!currPrng) {\n        currPrng = detectPrng();\n    }\n    return function ulid(seedTime) {\n        if (isNaN(seedTime)) {\n            seedTime = Date.now();\n        }\n        return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, currPrng);\n    };\n}\nfunction monotonicFactory(currPrng) {\n    if (!currPrng) {\n        currPrng = detectPrng();\n    }\n    var lastTime = 0;\n    var lastRandom = void 0;\n    return function ulid(seedTime) {\n        if (isNaN(seedTime)) {\n            seedTime = Date.now();\n        }\n        if (seedTime <= lastTime) {\n            var incrementedRandom = lastRandom = incrementBase32(lastRandom);\n            return encodeTime(lastTime, TIME_LEN) + incrementedRandom;\n        }\n        lastTime = seedTime;\n        var newRandom = lastRandom = encodeRandom(RANDOM_LEN, currPrng);\n        return encodeTime(seedTime, TIME_LEN) + newRandom;\n    };\n}\nvar ulid = factory();\n\n\n\n// CONCATENATED MODULE: ./src/canvas/constants/defaults.ts\nvar defaults_canvasOption = {\n  preserveObjectStacking: true,\n  width: 300,\n  height: 150,\n  selection: true,\n  defaultCursor: 'default',\n  backgroundColor: '#f3f3f3'\n};\nvar keyEvent = {\n  move: true,\n  all: true,\n  copy: true,\n  paste: true,\n  esc: true,\n  del: true,\n  clipboard: false,\n  transaction: true,\n  zoom: true,\n  cut: true,\n  grab: true\n};\nvar gridOption = {\n  enabled: false,\n  grid: 10,\n  snapToGrid: false,\n  lineColor: '#ebebeb',\n  borderColor: '#cccccc'\n};\nvar defaults_workareaOption = {\n  width: 600,\n  height: 400,\n  workareaWidth: 600,\n  workareaHeight: 400,\n  lockScalingX: true,\n  lockScalingY: true,\n  scaleX: 1,\n  scaleY: 1,\n  backgroundColor: '#fff',\n  hasBorders: false,\n  hasControls: false,\n  selectable: false,\n  lockMovementX: true,\n  lockMovementY: true,\n  hoverCursor: 'default',\n  name: '',\n  id: 'workarea',\n  type: 'image',\n  layout: 'fixed',\n  // fixed, responsive, fullscreen\n  link: {},\n  tooltip: {\n    enabled: false\n  },\n  isElement: false\n};\nvar defaults_objectOption = {\n  rotation: 0,\n  centeredRotation: true,\n  strokeUniform: true\n};\nvar guidelineOption = {\n  enabled: true\n};\nvar activeSelectionOption = {\n  hasControls: true\n};\nvar defaults_propertiesToInclude = ['id', 'name', 'locked', 'editable'];\n// CONCATENATED MODULE: ./src/canvas/constants/code.ts\nvar ESCAPE = 'Escape';\nvar DELETE = 'Delete';\nvar BACKSPACE = 'Backspace';\nvar EQUAL = 'Equal';\nvar MINUS = 'Minus';\nvar KEY_A = 'KeyA';\nvar KEY_Q = 'KeyQ';\nvar KEY_W = 'KeyW';\nvar KEY_C = 'KeyC';\nvar KEY_V = 'KeyV';\nvar KEY_Z = 'KeyZ';\nvar KEY_Y = 'KeyY';\nvar KEY_O = 'KeyO';\nvar KEY_P = 'KeyP';\nvar KEY_X = 'KeyX';\nvar ARROW_UP = 'ArrowUp';\nvar ARROW_DOWN = 'ArrowDown';\nvar ARROW_LEFT = 'ArrowLeft';\nvar ARROW_RIGHT = 'ArrowRight';\n// CONCATENATED MODULE: ./src/canvas/constants/index.ts\n\n\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/asyncToGenerator.js\nvar asyncToGenerator = __webpack_require__(110);\nvar asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/regenerator/index.js\nvar regenerator = __webpack_require__(68);\nvar regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.fill.js\nvar es_array_fill = __webpack_require__(103);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.promise.js\nvar es_promise = __webpack_require__(302);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.some.js\nvar es_array_some = __webpack_require__(126);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js\nvar es_array_splice = __webpack_require__(171);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.find-index.js\nvar es_array_find_index = __webpack_require__(286);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.symbol.description.js\nvar es_symbol_description = __webpack_require__(365);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.find.js\nvar es_array_find = __webpack_require__(485);\n\n// EXTERNAL MODULE: ./node_modules/lodash/lodash.js\nvar lodash = __webpack_require__(674);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __webpack_require__(292);\n\n// EXTERNAL MODULE: ./node_modules/lodash/isEqual.js\nvar isEqual = __webpack_require__(460);\nvar isEqual_default = /*#__PURE__*/__webpack_require__.n(isEqual);\n\n// CONCATENATED MODULE: ./src/canvas/handlers/ImageHandler.ts\n\n\n\n\nvar _excluded = [\"type\"];\n\nfunction ImageHandler_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction ImageHandler_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ImageHandler_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ImageHandler_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar FILTER_TYPES = ['grayscale', 'invert', 'remove-color', 'sepia', 'brownie', 'brightness', 'contrast', 'saturation', 'noise', 'vintage', 'pixelate', 'blur', 'sharpen', 'emboss', 'technicolor', 'polaroid', 'blend-color', 'gamma', 'kodachrome', 'blackwhite', 'blend-image', 'hue', 'resize', 'tint', 'mask', 'multiply', 'sepia2'];\nvar ImageHandler_capitalize = function capitalize(str) {\n  return str ? str.charAt(0).toUpperCase() + str.slice(1) : false;\n};\nvar SHARPEN_MATRIX = [0, -1, 0, -1, 5, -1, 0, -1, 0];\nvar EMBOSS_MATRIX = [1, 1, 1, 1, 0.7, -1, -1, -1, -1];\n/**\n * Image Handler\n * @author salgum1114\n * @date 2019-09-01\n * @class ImageHandler\n * @implements {IBaseHandler}\n */\n\nvar ImageHandler_ImageHandler = /*#__PURE__*/createClass_default()(function ImageHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, ImageHandler);\n\n  this.handler = void 0;\n\n  this.createFilter = function (filter) {\n    var filterType = filter.type,\n        other = helpers_objectWithoutProperties_default()(filter, _excluded);\n\n    var type = filterType.toLowerCase();\n\n    if (type === 'grayscale') {\n      return new fabric[\"fabric\"].Image.filters.Grayscale(other);\n    } else if (type === 'invert') {\n      return new fabric[\"fabric\"].Image.filters.Invert(); // } else if (type === 'remove-color') {\n      //     return new fabric.Image.filters.RemoveColor(other);\n    } else if (type === 'sepia') {\n      return new fabric[\"fabric\"].Image.filters.Sepia(); // } else if (type === 'brownie') {\n      //     return new fabric.Image.filters.Brownie();\n    } else if (type === 'brightness') {\n      return new fabric[\"fabric\"].Image.filters.Brightness({\n        brightness: other.brightness\n      });\n    } else if (type === 'contrast') {\n      return new fabric[\"fabric\"].Image.filters.Contrast(other);\n    } else if (type === 'saturation') {\n      return new fabric[\"fabric\"].Image.filters.Saturation(other);\n    } else if (type === 'noise') {\n      return new fabric[\"fabric\"].Image.filters.Noise({\n        noise: other.noise\n      }); // } else if (type === 'vintage') {\n      //     return new fabric.Image.filters.Vintage();\n    } else if (type === 'pixelate') {\n      return new fabric[\"fabric\"].Image.filters.Pixelate(other); // } else if (type === 'blur') {\n      //     return new fabric.Image.filters.Blur(other);\n    } else if (type === 'sharpen') {\n      return new fabric[\"fabric\"].Image.filters.Convolute({\n        matrix: SHARPEN_MATRIX\n      });\n    } else if (type === 'emboss') {\n      return new fabric[\"fabric\"].Image.filters.Convolute({\n        matrix: EMBOSS_MATRIX\n      }); // } else if (type === 'technicolor') {\n      //     return new fabric.Image.filters.Technicolor();\n      // } else if (type === 'polaroid') {\n      //     return new fabric.Image.filters.Polaroid();\n    } else if (type === 'blend-color') {\n      return new fabric[\"fabric\"].Image.filters.BlendColor(other); // } else if (type === 'gamma') {\n      //     return new fabric.Image.filters.Gamma(other);\n      // } else if (type === 'kodachrome') {\n      //     return new fabric.Image.filters.Kodachrome();\n      // } else if (type === 'blackwhite') {\n      //     return new fabric.Image.filters.BlackWhite();\n    } else if (type === 'blend-image') {\n      return new fabric[\"fabric\"].Image.filters.BlendImage(other); // } else if (type === 'hue') {\n      //     return new fabric.Image.filters.HueRotation(other);\n    } else if (type === 'resize') {\n      return new fabric[\"fabric\"].Image.filters.Resize(other);\n    } else if (type === 'tint') {\n      return new fabric[\"fabric\"].Image.filters.Tint(other);\n    } else if (type === 'mask') {\n      return new fabric[\"fabric\"].Image.filters.Mask({\n        channel: other.channel,\n        mask: other.mask\n      });\n    } else if (type === 'multiply') {\n      return new fabric[\"fabric\"].Image.filters.Multiply({\n        color: other.color\n      });\n    } else if (type === 'sepia2') {\n      return new fabric[\"fabric\"].Image.filters.Sepia2(other);\n    }\n\n    return false;\n  };\n\n  this.createFilters = function (filters) {\n    return filters.reduce(function (prev, filter) {\n      var type = filter.type;\n\n      if (type.toLowerCase() === 'convolute' && isEqual_default()(filter.matrix, SHARPEN_MATRIX)) {\n        type = 'sharpen';\n      } else if (type.toLowerCase() === 'convolute' && isEqual_default()(filter.matrix, EMBOSS_MATRIX)) {\n        type = 'emboss';\n      }\n\n      var findIndex = FILTER_TYPES.findIndex(function (filterType) {\n        return type.toLowerCase() === filterType;\n      });\n\n      if (findIndex > -1) {\n        prev[findIndex] = _this.createFilter(ImageHandler_objectSpread(ImageHandler_objectSpread({}, filter), {}, {\n          type: type\n        }));\n      }\n\n      return prev;\n    }, []);\n  };\n\n  this.applyFilterByType = function (type) {\n    var apply = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n    var value = arguments.length > 2 ? arguments[2] : undefined;\n    var imageObj = arguments.length > 3 ? arguments[3] : undefined;\n\n    var obj = imageObj || _this.handler.canvas.getActiveObject();\n\n    var findIndex = FILTER_TYPES.findIndex(function (ft) {\n      return ft === type;\n    });\n\n    if (obj.filters && findIndex > -1) {\n      if (apply) {\n        obj.filters[findIndex] = _this.createFilter(ImageHandler_objectSpread({\n          type: type\n        }, value));\n        obj.applyFilters();\n      } else {\n        obj.filters[findIndex] = false;\n        obj.applyFilters();\n      }\n\n      _this.handler.canvas.requestRenderAll();\n    }\n  };\n\n  this.applyFilter = function (index, filter, imageObj) {\n    var obj = imageObj || _this.handler.canvas.getActiveObject();\n\n    if (obj.filters) {\n      obj.filters[index] = filter;\n      obj.applyFilters();\n\n      _this.handler.canvas.requestRenderAll();\n    }\n  };\n\n  this.applyFilterValue = function (index, prop, value, imageObj) {\n    var obj = imageObj || _this.handler.canvas.getActiveObject();\n\n    if (obj.filters) {\n      var filter = obj.filters[index];\n\n      if (filter) {\n        filter.setOptions(helpers_defineProperty_default()({}, prop, value));\n        obj.applyFilters();\n\n        _this.handler.canvas.requestRenderAll();\n      }\n    }\n  };\n\n  this.applyGrayscale = function () {\n    var grayscale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(0, grayscale && new fabric[\"fabric\"].Image.filters.Grayscale(value ? {\n      mode: value\n    } : undefined), imageObj);\n  };\n\n  this.applyInvert = function () {\n    var invert = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var imageObj = arguments.length > 1 ? arguments[1] : undefined;\n\n    _this.applyFilter(1, invert && new fabric[\"fabric\"].Image.filters.Invert(), imageObj);\n  };\n\n  this.applySepia = function () {\n    var sepia = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var imageObj = arguments.length > 1 ? arguments[1] : undefined;\n\n    _this.applyFilter(3, sepia && new fabric[\"fabric\"].Image.filters.Sepia(), imageObj);\n  };\n\n  this.applyBrightness = function () {\n    var brightness = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(5, brightness && new fabric[\"fabric\"].Image.filters.Brightness(value ? {\n      brightness: value\n    } : undefined), imageObj);\n  };\n\n  this.applyContrast = function () {\n    var contrast = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(6, contrast && new fabric[\"fabric\"].Image.filters.Contrast(value ? {\n      contrast: value\n    } : undefined), imageObj);\n  };\n\n  this.applySaturation = function () {\n    var saturation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(7, saturation && new fabric[\"fabric\"].Image.filters.Saturation(value ? {\n      saturation: value\n    } : undefined), imageObj);\n  };\n\n  this.applyNoise = function () {\n    var noise = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(8, noise && new fabric[\"fabric\"].Image.filters.Noise(value ? {\n      noise: value\n    } : undefined), imageObj);\n  };\n\n  this.applyPixelate = function () {\n    var pixelate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(10, pixelate && new fabric[\"fabric\"].Image.filters.Pixelate(value ? {\n      blocksize: value\n    } : undefined), imageObj);\n  };\n\n  this.applySharpen = function () {\n    var sharpen = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SHARPEN_MATRIX;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(12, sharpen && new fabric[\"fabric\"].Image.filters.Convolute(value ? {\n      matrix: value\n    } : undefined), imageObj);\n  };\n\n  this.applyEmboss = function () {\n    var emboss = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : EMBOSS_MATRIX;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(13, emboss && new fabric[\"fabric\"].Image.filters.Convolute(value ? {\n      matrix: value\n    } : undefined), imageObj);\n  };\n\n  this.applyBlendColor = function () {\n    var blend = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(16, blend && new fabric[\"fabric\"].Image.filters.BlendColor(value), imageObj);\n  };\n\n  this.applyBlendImage = function () {\n    var blendImage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(20, blendImage && new fabric[\"fabric\"].Image.filters.BlendImage(value), imageObj);\n  };\n\n  this.applyResize = function () {\n    var resize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(22, resize && new fabric[\"fabric\"].Image.filters.Resize(value), imageObj);\n  };\n\n  this.applyTint = function () {\n    var tint = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(23, tint && new fabric[\"fabric\"].Image.filters.Tint(value), imageObj);\n  };\n\n  this.applyMask = function () {\n    var mask = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(24, mask && new fabric[\"fabric\"].Image.filters.Mask(value), imageObj);\n  };\n\n  this.applyMultiply = function () {\n    var multiply = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(25, multiply && new fabric[\"fabric\"].Image.filters.Multiply(value), imageObj);\n  };\n\n  this.applySepia2 = function () {\n    var sepia2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var imageObj = arguments.length > 1 ? arguments[1] : undefined;\n\n    _this.applyFilter(26, sepia2 && new fabric[\"fabric\"].Image.filters.Sepia2(), imageObj);\n  };\n\n  this.applyGradientTransparency = function () {\n    var gradientTransparency = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(27, gradientTransparency && new fabric[\"fabric\"].Image.filters.GradientTransparency(value), imageObj);\n  };\n\n  this.applyColorMatrix = function () {\n    var colorMatrix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(28, colorMatrix && new fabric[\"fabric\"].Image.filters.ColorMatrix(value), imageObj);\n  };\n\n  this.applyRemoveWhite = function () {\n    var removeWhite = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var value = arguments.length > 1 ? arguments[1] : undefined;\n    var imageObj = arguments.length > 2 ? arguments[2] : undefined;\n\n    _this.applyFilter(29, removeWhite && new fabric[\"fabric\"].Image.filters.RemoveWhite(value), imageObj);\n  };\n\n  this.handler = handler;\n}\n/**\n * Create filter by type\n * @param {IFilter} filter\n */\n);\n\n/* harmony default export */ var handlers_ImageHandler = (ImageHandler_ImageHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/ChartHandler.ts\n\n\n\nvar ChartHandler_ChartHandler = /*#__PURE__*/createClass_default()(function ChartHandler(handler) {\n  classCallCheck_default()(this, ChartHandler);\n\n  this.handler = void 0;\n  this.instance = void 0;\n  this.handler = handler;\n});\n\n/* harmony default export */ var handlers_ChartHandler = (ChartHandler_ChartHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/ElementHandler.ts\n\n\n\n\n\n\n\nvar ElementHandler_ElementHandler = /*#__PURE__*/createClass_default()(function ElementHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, ElementHandler);\n\n  this.handler = void 0;\n\n  this.setById = function (id, source) {\n    var obj = _this.handler.findById(id);\n\n    if (!obj) {\n      return;\n    }\n\n    _this.set(obj, source);\n  };\n\n  this.set = function (obj, source) {\n    obj.setSource(source);\n  };\n\n  this.findById = function (id) {\n    var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'container';\n    return document.getElementById(\"\".concat(id, \"_\").concat(type));\n  };\n\n  this.remove = function (el) {\n    if (!el) {\n      return;\n    }\n\n    _this.handler.container.removeChild(el);\n  };\n\n  this.removeById = function (id) {\n    var el = _this.findById(id);\n\n    var scriptEl = _this.findById(id, 'script');\n\n    var styleEl = _this.findById(id, 'style');\n\n    if (el) {\n      if (el.remove) {\n        el.remove();\n      } else {\n        _this.remove(el);\n      }\n    }\n\n    if (scriptEl) {\n      if (scriptEl.remove) {\n        scriptEl.remove();\n      } else {\n        document.head.removeChild(scriptEl);\n      }\n    }\n\n    if (styleEl) {\n      if (styleEl.remove) {\n        styleEl.remove();\n      } else {\n        document.head.removeChild(styleEl);\n      }\n    }\n  };\n\n  this.removeByIds = function (ids) {\n    ids.forEach(function (id) {\n      _this.removeById(id);\n    });\n  };\n\n  this.setPosition = function (el, obj) {\n    if (!el) {\n      return;\n    }\n\n    obj.setCoords();\n\n    var zoom = _this.handler.canvas.getZoom();\n\n    var scaleX = obj.scaleX,\n        scaleY = obj.scaleY,\n        width = obj.width,\n        height = obj.height;\n\n    var _obj$getBoundingRect = obj.getBoundingRect(false),\n        left = _obj$getBoundingRect.left,\n        top = _obj$getBoundingRect.top;\n\n    var padLeft = (width * scaleX * zoom - width) / 2;\n    var padTop = (height * scaleY * zoom - height) / 2;\n    el.style.left = \"\".concat(left + padLeft, \"px\");\n    el.style.top = \"\".concat(top + padTop, \"px\");\n  };\n\n  this.setPositionByOrigin = function (el, obj, left, top) {\n    if (!el) {\n      return;\n    }\n\n    obj.setCoords();\n\n    var zoom = _this.handler.canvas.getZoom();\n\n    var scaleX = obj.scaleX,\n        scaleY = obj.scaleY,\n        width = obj.width,\n        height = obj.height;\n    var padLeft = (width * scaleX * zoom - width) / 2;\n    var padTop = (height * scaleY * zoom - height) / 2;\n    el.style.left = \"\".concat(left + padLeft, \"px\");\n    el.style.top = \"\".concat(top + padTop, \"px\");\n  };\n\n  this.setSize = function (el, obj) {\n    if (!el) {\n      return;\n    }\n\n    var width = obj.width,\n        height = obj.height;\n    el.style.width = \"\".concat(width, \"px\");\n    el.style.height = \"\".concat(height, \"px\");\n  };\n\n  this.setScaleOrAngle = function (el, obj) {\n    if (!el) {\n      return;\n    }\n\n    var zoom = _this.handler.canvas.getZoom();\n\n    var scaleX = obj.scaleX,\n        scaleY = obj.scaleY,\n        angle = obj.angle;\n    el.style.transform = \"rotate(\".concat(angle, \"deg) scale(\").concat(scaleX * zoom, \", \").concat(scaleY * zoom, \")\");\n  };\n\n  this.handler = handler;\n}\n/**\n * Set element by id\n * @param {string} id\n * @param {*} source\n * @returns {void}\n */\n);\n\n/* harmony default export */ var handlers_ElementHandler = (ElementHandler_ElementHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/CropHandler.ts\n\n\n\n\nvar CropHandler_CropHandler = /*#__PURE__*/createClass_default()(function CropHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, CropHandler);\n\n  this.handler = void 0;\n  this.cropRect = void 0;\n  this.cropObject = void 0;\n\n  this.validType = function () {\n    var activeObject = _this.handler.canvas.getActiveObject();\n\n    if (!activeObject) {\n      return false;\n    }\n\n    if (activeObject.type === 'image') {\n      return true;\n    }\n\n    return false;\n  };\n\n  this.start = function () {\n    if (_this.validType()) {\n      _this.handler.interactionMode = 'crop';\n      _this.cropObject = _this.handler.canvas.getActiveObject();\n      var _this$cropObject = _this.cropObject,\n          left = _this$cropObject.left,\n          top = _this$cropObject.top;\n      _this.cropRect = new fabric[\"fabric\"].Rect({\n        width: _this.cropObject.width,\n        height: _this.cropObject.height,\n        scaleX: _this.cropObject.scaleX,\n        scaleY: _this.cropObject.scaleY,\n        originX: 'left',\n        originY: 'top',\n        left: left,\n        top: top,\n        hasRotatingPoint: false,\n        fill: 'rgba(0, 0, 0, 0.2)'\n      });\n\n      _this.handler.canvas.add(_this.cropRect);\n\n      _this.handler.canvas.setActiveObject(_this.cropRect);\n\n      _this.cropObject.selectable = false;\n      _this.cropObject.evented = false;\n\n      _this.handler.canvas.renderAll();\n    }\n  };\n\n  this.finish = function () {\n    var _this$cropRect = _this.cropRect,\n        left = _this$cropRect.left,\n        top = _this$cropRect.top,\n        width = _this$cropRect.width,\n        height = _this$cropRect.height,\n        scaleX = _this$cropRect.scaleX,\n        scaleY = _this$cropRect.scaleY;\n\n    var croppedImg = _this.cropObject.toDataURL({\n      left: left - _this.cropObject.left,\n      top: top - _this.cropObject.top,\n      width: width * scaleX,\n      height: height * scaleY\n    });\n\n    _this.handler.setImage(_this.cropObject, croppedImg);\n\n    _this.cancel();\n  };\n\n  this.cancel = function () {\n    _this.handler.interactionMode = 'selection';\n    _this.cropObject.selectable = true;\n    _this.cropObject.evented = true;\n\n    _this.handler.canvas.setActiveObject(_this.cropObject);\n\n    _this.handler.canvas.remove(_this.cropRect);\n\n    _this.cropRect = null;\n    _this.cropObject = null;\n\n    _this.handler.canvas.renderAll();\n  };\n\n  this.resize = function (opt) {\n    var target = opt.target,\n        _opt$transform = opt.transform,\n        original = _opt$transform.original,\n        corner = _opt$transform.corner;\n    var left = target.left,\n        top = target.top,\n        width = target.width,\n        height = target.height,\n        scaleX = target.scaleX,\n        scaleY = target.scaleY;\n    var _this$cropObject2 = _this.cropObject,\n        cropLeft = _this$cropObject2.left,\n        cropTop = _this$cropObject2.top,\n        cropWidth = _this$cropObject2.width,\n        cropHeight = _this$cropObject2.height,\n        cropScaleX = _this$cropObject2.scaleX,\n        cropScaleY = _this$cropObject2.scaleY;\n\n    if (corner === 'tl') {\n      if (Math.round(cropLeft) > Math.round(left)) {\n        // left\n        var originRight = Math.round(cropLeft + cropWidth);\n        var targetRight = Math.round(target.getBoundingRect().left + target.getBoundingRect().width);\n        var diffRightRatio = 1 - (originRight - targetRight) / cropWidth;\n        target.set({\n          left: cropLeft,\n          scaleX: diffRightRatio > 1 ? 1 : diffRightRatio\n        });\n      }\n\n      if (Math.round(cropTop) > Math.round(top)) {\n        // top\n        var originBottom = Math.round(cropTop + cropHeight);\n        var targetBottom = Math.round(target.getBoundingRect().top + target.getBoundingRect().height);\n        var diffBottomRatio = 1 - (originBottom - targetBottom) / cropHeight;\n        target.set({\n          top: cropTop,\n          scaleY: diffBottomRatio > 1 ? 1 : diffBottomRatio\n        });\n      }\n    } else if (corner === 'bl') {\n      if (Math.round(cropLeft) > Math.round(left)) {\n        // left\n        var _originRight = Math.round(cropLeft + cropWidth);\n\n        var _targetRight = Math.round(target.getBoundingRect().left + target.getBoundingRect().width);\n\n        var _diffRightRatio = 1 - (_originRight - _targetRight) / cropWidth;\n\n        target.set({\n          left: cropLeft,\n          scaleX: _diffRightRatio > 1 ? 1 : _diffRightRatio\n        });\n      }\n\n      if (Math.round(cropTop + cropHeight * cropScaleY) < Math.round(top + height * scaleY)) {\n        // bottom\n        var diffTopRatio = 1 - (original.top - cropTop) / cropHeight;\n        target.set({\n          top: original.top,\n          scaleY: diffTopRatio > 1 ? 1 : diffTopRatio\n        });\n      }\n    } else if (corner === 'tr') {\n      if (Math.round(cropLeft + cropWidth * cropScaleX) < Math.round(left + width * scaleX)) {\n        // right\n        var diffLeftRatio = 1 - (original.left - cropLeft) / cropWidth;\n        target.set({\n          left: original.left,\n          scaleX: diffLeftRatio > 1 ? 1 : diffLeftRatio\n        });\n      }\n\n      if (Math.round(cropTop) > Math.round(top)) {\n        // top\n        var _originBottom = Math.round(cropTop + cropHeight);\n\n        var _targetBottom = Math.round(target.getBoundingRect().top + target.getBoundingRect().height);\n\n        var _diffBottomRatio = 1 - (_originBottom - _targetBottom) / cropHeight;\n\n        target.set({\n          top: cropTop,\n          scaleY: _diffBottomRatio > 1 ? 1 : _diffBottomRatio\n        });\n      }\n    } else if (corner === 'br') {\n      if (Math.round(cropLeft + cropWidth * cropScaleX) < Math.round(left + width * scaleX)) {\n        // right\n        var _diffLeftRatio = 1 - (original.left - cropLeft) / cropWidth;\n\n        target.set({\n          left: original.left,\n          scaleX: _diffLeftRatio > 1 ? 1 : _diffLeftRatio\n        });\n      }\n\n      if (Math.round(cropTop + cropHeight * cropScaleY) < Math.round(top + height * scaleY)) {\n        // bottom\n        var _diffTopRatio = 1 - (original.top - cropTop) / cropHeight;\n\n        target.set({\n          top: original.top,\n          scaleY: _diffTopRatio > 1 ? 1 : _diffTopRatio\n        });\n      }\n    } else if (corner === 'ml') {\n      if (Math.round(cropLeft) > Math.round(left)) {\n        // left\n        var _originRight2 = Math.round(cropLeft + cropWidth);\n\n        var _targetRight2 = Math.round(target.getBoundingRect().left + target.getBoundingRect().width);\n\n        var _diffRightRatio2 = 1 - (_originRight2 - _targetRight2) / cropWidth;\n\n        target.set({\n          left: cropLeft,\n          scaleX: _diffRightRatio2 > 1 ? 1 : _diffRightRatio2\n        });\n      }\n    } else if (corner === 'mt') {\n      if (Math.round(cropTop) > Math.round(top)) {\n        // top\n        var _originBottom2 = Math.round(cropTop + cropHeight);\n\n        var _targetBottom2 = Math.round(target.getBoundingRect().top + target.getBoundingRect().height);\n\n        var _diffBottomRatio2 = 1 - (_originBottom2 - _targetBottom2) / cropHeight;\n\n        target.set({\n          top: cropTop,\n          scaleY: _diffBottomRatio2 > 1 ? 1 : _diffBottomRatio2\n        });\n      }\n    } else if (corner === 'mb') {\n      if (Math.round(cropTop + cropHeight * cropScaleY) < Math.round(top + height * scaleY)) {\n        // bottom\n        var _diffTopRatio2 = 1 - (original.top - cropTop) / cropHeight;\n\n        target.set({\n          top: original.top,\n          scaleY: _diffTopRatio2 > 1 ? 1 : _diffTopRatio2\n        });\n      }\n    } else if (corner === 'mr') {\n      if (Math.round(cropLeft + cropWidth * cropScaleX) < Math.round(left + width * scaleX)) {\n        // right\n        var _diffLeftRatio2 = 1 - (original.left - cropLeft) / cropWidth;\n\n        target.set({\n          left: original.left,\n          scaleX: _diffLeftRatio2 > 1 ? 1 : _diffLeftRatio2\n        });\n      }\n    }\n  };\n\n  this.moving = function (opt) {\n    var target = opt.target;\n    var left = target.left,\n        top = target.top,\n        width = target.width,\n        height = target.height,\n        scaleX = target.scaleX,\n        scaleY = target.scaleY;\n\n    var _this$cropObject$getB = _this.cropObject.getBoundingRect(),\n        cropLeft = _this$cropObject$getB.left,\n        cropTop = _this$cropObject$getB.top,\n        cropWidth = _this$cropObject$getB.width,\n        cropHeight = _this$cropObject$getB.height;\n\n    var movedTop = function movedTop() {\n      if (Math.round(cropTop) >= Math.round(top)) {\n        target.set({\n          top: cropTop\n        });\n      } else if (Math.round(cropTop + cropHeight) <= Math.round(top + height * scaleY)) {\n        target.set({\n          top: cropTop + cropHeight - height * scaleY\n        });\n      }\n    };\n\n    if (Math.round(cropLeft) >= Math.round(left)) {\n      target.set({\n        left: Math.max(left, cropLeft)\n      });\n      movedTop();\n    } else if (Math.round(cropLeft + cropWidth) <= Math.round(left + width * scaleX)) {\n      target.set({\n        left: cropLeft + cropWidth - width * scaleX\n      });\n      movedTop();\n    } else if (Math.round(cropTop) >= Math.round(top)) {\n      target.set({\n        top: cropTop\n      });\n    } else if (Math.round(cropTop + cropHeight) <= Math.round(top + height * scaleY)) {\n      target.set({\n        top: cropTop + cropHeight - height * scaleY\n      });\n    }\n  };\n\n  this.handler = handler;\n  this.cropRect = null;\n  this.cropObject = null;\n}\n/**\n * Validate crop type\n *\n * @returns\n */\n);\n\n/* harmony default export */ var handlers_CropHandler = (CropHandler_CropHandler);\n// CONCATENATED MODULE: ./node_modules/animejs/lib/anime.es.js\n/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n  update: null,\n  begin: null,\n  loopBegin: null,\n  changeBegin: null,\n  change: null,\n  changeComplete: null,\n  loopComplete: null,\n  complete: null,\n  loop: 1,\n  direction: 'normal',\n  autoplay: true,\n  timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n  duration: 1000,\n  delay: 0,\n  endDelay: 0,\n  easing: 'easeOutElastic(1, .5)',\n  round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar anime_es_cache = {\n  CSS: {},\n  springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n  return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n  return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n  return func.apply(null, args);\n}\n\nvar is = {\n  arr: function (a) { return Array.isArray(a); },\n  obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n  pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n  svg: function (a) { return a instanceof SVGElement; },\n  inp: function (a) { return a instanceof HTMLInputElement; },\n  dom: function (a) { return a.nodeType || is.svg(a); },\n  str: function (a) { return typeof a === 'string'; },\n  fnc: function (a) { return typeof a === 'function'; },\n  und: function (a) { return typeof a === 'undefined'; },\n  nil: function (a) { return is.und(a) || a === null; },\n  hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n  rgb: function (a) { return /^rgb/.test(a); },\n  hsl: function (a) { return /^hsl/.test(a); },\n  col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n  key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n  var match = /\\(([^)]+)\\)/.exec(string);\n  return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n  var params = parseEasingParameters(string);\n  var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n  var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n  var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n  var velocity =  minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n  var w0 = Math.sqrt(stiffness / mass);\n  var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n  var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n  var a = 1;\n  var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n  function solver(t) {\n    var progress = duration ? (duration * t) / 1000 : t;\n    if (zeta < 1) {\n      progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n    } else {\n      progress = (a + b * progress) * Math.exp(-progress * w0);\n    }\n    if (t === 0 || t === 1) { return t; }\n    return 1 - progress;\n  }\n\n  function getDuration() {\n    var cached = anime_es_cache.springs[string];\n    if (cached) { return cached; }\n    var frame = 1/6;\n    var elapsed = 0;\n    var rest = 0;\n    while(true) {\n      elapsed += frame;\n      if (solver(elapsed) === 1) {\n        rest++;\n        if (rest >= 16) { break; }\n      } else {\n        rest = 0;\n      }\n    }\n    var duration = elapsed * frame * 1000;\n    anime_es_cache.springs[string] = duration;\n    return duration;\n  }\n\n  return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction anime_es_steps(steps) {\n  if ( steps === void 0 ) steps = 10;\n\n  return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n  var kSplineTableSize = 11;\n  var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n  function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n  function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n  function C(aA1)      { return 3.0 * aA1 }\n\n  function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n  function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n  function binarySubdivide(aX, aA, aB, mX1, mX2) {\n    var currentX, currentT, i = 0;\n    do {\n      currentT = aA + (aB - aA) / 2.0;\n      currentX = calcBezier(currentT, mX1, mX2) - aX;\n      if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n    } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n    return currentT;\n  }\n\n  function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n    for (var i = 0; i < 4; ++i) {\n      var currentSlope = getSlope(aGuessT, mX1, mX2);\n      if (currentSlope === 0.0) { return aGuessT; }\n      var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n      aGuessT -= currentX / currentSlope;\n    }\n    return aGuessT;\n  }\n\n  function bezier(mX1, mY1, mX2, mY2) {\n\n    if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n    var sampleValues = new Float32Array(kSplineTableSize);\n\n    if (mX1 !== mY1 || mX2 !== mY2) {\n      for (var i = 0; i < kSplineTableSize; ++i) {\n        sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n      }\n    }\n\n    function getTForX(aX) {\n\n      var intervalStart = 0;\n      var currentSample = 1;\n      var lastSample = kSplineTableSize - 1;\n\n      for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n        intervalStart += kSampleStepSize;\n      }\n\n      --currentSample;\n\n      var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n      var guessForT = intervalStart + dist * kSampleStepSize;\n      var initialSlope = getSlope(guessForT, mX1, mX2);\n\n      if (initialSlope >= 0.001) {\n        return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n      } else if (initialSlope === 0.0) {\n        return guessForT;\n      } else {\n        return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n      }\n\n    }\n\n    return function (x) {\n      if (mX1 === mY1 && mX2 === mY2) { return x; }\n      if (x === 0 || x === 1) { return x; }\n      return calcBezier(getTForX(x), mY1, mY2);\n    }\n\n  }\n\n  return bezier;\n\n})();\n\nvar penner = (function () {\n\n  // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n  var eases = { linear: function () { return function (t) { return t; }; } };\n\n  var functionEasings = {\n    Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n    Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n    Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n    Bounce: function () { return function (t) {\n      var pow2, b = 4;\n      while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n      return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n    }; },\n    Elastic: function (amplitude, period) {\n      if ( amplitude === void 0 ) amplitude = 1;\n      if ( period === void 0 ) period = .5;\n\n      var a = minMax(amplitude, 1, 10);\n      var p = minMax(period, .1, 2);\n      return function (t) {\n        return (t === 0 || t === 1) ? t : \n          -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n      }\n    }\n  };\n\n  var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n  baseEasings.forEach(function (name, i) {\n    functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n  });\n\n  Object.keys(functionEasings).forEach(function (name) {\n    var easeIn = functionEasings[name];\n    eases['easeIn' + name] = easeIn;\n    eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n    eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n      1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n    eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n      (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n  });\n\n  return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n  if (is.fnc(easing)) { return easing; }\n  var name = easing.split('(')[0];\n  var ease = penner[name];\n  var args = parseEasingParameters(easing);\n  switch (name) {\n    case 'spring' : return spring(easing, duration);\n    case 'cubicBezier' : return applyArguments(bezier, args);\n    case 'steps' : return applyArguments(anime_es_steps, args);\n    default : return applyArguments(ease, args);\n  }\n}\n\n// Strings\n\nfunction selectString(str) {\n  try {\n    var nodes = document.querySelectorAll(str);\n    return nodes;\n  } catch(e) {\n    return;\n  }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n  var len = arr.length;\n  var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n  var result = [];\n  for (var i = 0; i < len; i++) {\n    if (i in arr) {\n      var val = arr[i];\n      if (callback.call(thisArg, val, i, arr)) {\n        result.push(val);\n      }\n    }\n  }\n  return result;\n}\n\nfunction flattenArray(arr) {\n  return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n  if (is.arr(o)) { return o; }\n  if (is.str(o)) { o = selectString(o) || o; }\n  if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n  return [o];\n}\n\nfunction arrayContains(arr, val) {\n  return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n  var clone = {};\n  for (var p in o) { clone[p] = o[p]; }\n  return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n  var o = cloneObject(o1);\n  for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n  return o;\n}\n\nfunction mergeObjects(o1, o2) {\n  var o = cloneObject(o1);\n  for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n  return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n  var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n  return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n  var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n  var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n  var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n  var r = parseInt(rgb[1], 16);\n  var g = parseInt(rgb[2], 16);\n  var b = parseInt(rgb[3], 16);\n  return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n  var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n  var h = parseInt(hsl[1], 10) / 360;\n  var s = parseInt(hsl[2], 10) / 100;\n  var l = parseInt(hsl[3], 10) / 100;\n  var a = hsl[4] || 1;\n  function hue2rgb(p, q, t) {\n    if (t < 0) { t += 1; }\n    if (t > 1) { t -= 1; }\n    if (t < 1/6) { return p + (q - p) * 6 * t; }\n    if (t < 1/2) { return q; }\n    if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n    return p;\n  }\n  var r, g, b;\n  if (s == 0) {\n    r = g = b = l;\n  } else {\n    var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    var p = 2 * l - q;\n    r = hue2rgb(p, q, h + 1/3);\n    g = hue2rgb(p, q, h);\n    b = hue2rgb(p, q, h - 1/3);\n  }\n  return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n  if (is.rgb(val)) { return rgbToRgba(val); }\n  if (is.hex(val)) { return hexToRgba(val); }\n  if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n  var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n  if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n  if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n  if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n  if (!is.fnc(val)) { return val; }\n  return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n  return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n  var valueUnit = getUnit(value);\n  if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n  var cached = anime_es_cache.CSS[value + unit];\n  if (!is.und(cached)) { return cached; }\n  var baseline = 100;\n  var tempEl = document.createElement(el.tagName);\n  var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n  parentEl.appendChild(tempEl);\n  tempEl.style.position = 'absolute';\n  tempEl.style.width = baseline + unit;\n  var factor = baseline / tempEl.offsetWidth;\n  parentEl.removeChild(tempEl);\n  var convertedUnit = factor * parseFloat(value);\n  anime_es_cache.CSS[value + unit] = convertedUnit;\n  return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n  if (prop in el.style) {\n    var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n    var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n    return unit ? convertPxToUnit(el, value, unit) : value;\n  }\n}\n\nfunction getAnimationType(el, prop) {\n  if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n  if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n  if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n  if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n  if (!is.dom(el)) { return; }\n  var str = el.style.transform || '';\n  var reg  = /(\\w+)\\(([^)]*)\\)/g;\n  var transforms = new Map();\n  var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n  return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n  var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n  var value = getElementTransforms(el).get(propName) || defaultVal;\n  if (animatable) {\n    animatable.transforms.list.set(propName, value);\n    animatable.transforms['last'] = propName;\n  }\n  return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n  switch (getAnimationType(target, propName)) {\n    case 'transform': return getTransformValue(target, propName, animatable, unit);\n    case 'css': return getCSSValue(target, propName, unit);\n    case 'attribute': return getAttribute(target, propName);\n    default: return target[propName] || 0;\n  }\n}\n\nfunction getRelativeValue(to, from) {\n  var operator = /^(\\*=|\\+=|-=)/.exec(to);\n  if (!operator) { return to; }\n  var u = getUnit(to) || 0;\n  var x = parseFloat(from);\n  var y = parseFloat(to.replace(operator[0], ''));\n  switch (operator[0][0]) {\n    case '+': return x + y + u;\n    case '-': return x - y + u;\n    case '*': return x * y + u;\n  }\n}\n\nfunction validateValue(val, unit) {\n  if (is.col(val)) { return colorToRgb(val); }\n  if (/\\s/g.test(val)) { return val; }\n  var originalUnit = getUnit(val);\n  var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n  if (unit) { return unitLess + unit; }\n  return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n  return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n  return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n  return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n  return getDistance(\n    {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n    {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n  );\n}\n\nfunction getPolylineLength(el) {\n  var points = el.points;\n  var totalLength = 0;\n  var previousPos;\n  for (var i = 0 ; i < points.numberOfItems; i++) {\n    var currentPos = points.getItem(i);\n    if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n    previousPos = currentPos;\n  }\n  return totalLength;\n}\n\nfunction getPolygonLength(el) {\n  var points = el.points;\n  return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n  if (el.getTotalLength) { return el.getTotalLength(); }\n  switch(el.tagName.toLowerCase()) {\n    case 'circle': return getCircleLength(el);\n    case 'rect': return getRectLength(el);\n    case 'line': return getLineLength(el);\n    case 'polyline': return getPolylineLength(el);\n    case 'polygon': return getPolygonLength(el);\n  }\n}\n\nfunction setDashoffset(el) {\n  var pathLength = getTotalLength(el);\n  el.setAttribute('stroke-dasharray', pathLength);\n  return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n  var parentEl = el.parentNode;\n  while (is.svg(parentEl)) {\n    if (!is.svg(parentEl.parentNode)) { break; }\n    parentEl = parentEl.parentNode;\n  }\n  return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n  var svg = svgData || {};\n  var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n  var rect = parentSvgEl.getBoundingClientRect();\n  var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n  var width = rect.width;\n  var height = rect.height;\n  var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n  return {\n    el: parentSvgEl,\n    viewBox: viewBox,\n    x: viewBox[0] / 1,\n    y: viewBox[1] / 1,\n    w: width,\n    h: height,\n    vW: viewBox[2],\n    vH: viewBox[3]\n  }\n}\n\nfunction anime_es_getPath(path, percent) {\n  var pathEl = is.str(path) ? selectString(path)[0] : path;\n  var p = percent || 100;\n  return function(property) {\n    return {\n      property: property,\n      el: pathEl,\n      svg: getParentSvg(pathEl),\n      totalLength: getTotalLength(pathEl) * (p / 100)\n    }\n  }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n  function point(offset) {\n    if ( offset === void 0 ) offset = 0;\n\n    var l = progress + offset >= 1 ? progress + offset : 0;\n    return path.el.getPointAtLength(l);\n  }\n  var svg = getParentSvg(path.el, path.svg);\n  var p = point();\n  var p0 = point(-1);\n  var p1 = point(+1);\n  var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n  var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n  switch (path.property) {\n    case 'x': return (p.x - svg.x) * scaleX;\n    case 'y': return (p.y - svg.y) * scaleY;\n    case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n  }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n  // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n  // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n  var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n  var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n  return {\n    original: value,\n    numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n    strings: (is.str(val) || unit) ? value.split(rgx) : []\n  }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n  var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n  return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n  var parsed = parseTargets(targets);\n  return parsed.map(function (t, i) {\n    return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n  });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n  var settings = cloneObject(tweenSettings);\n  // Override duration if easing is a spring\n  if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n  if (is.arr(prop)) {\n    var l = prop.length;\n    var isFromTo = (l === 2 && !is.obj(prop[0]));\n    if (!isFromTo) {\n      // Duration divided by the number of tweens\n      if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n    } else {\n      // Transform [from, to] values shorthand to a valid tween value\n      prop = {value: prop};\n    }\n  }\n  var propArray = is.arr(prop) ? prop : [prop];\n  return propArray.map(function (v, i) {\n    var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n    // Default delay value should only be applied to the first tween\n    if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n    // Default endDelay value should only be applied to the last tween\n    if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n    return obj;\n  }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n  var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n  .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n  var properties = {};\n  var loop = function ( i ) {\n    var propName = propertyNames[i];\n    properties[propName] = keyframes.map(function (key) {\n      var newKey = {};\n      for (var p in key) {\n        if (is.key(p)) {\n          if (p == propName) { newKey.value = key[p]; }\n        } else {\n          newKey[p] = key[p];\n        }\n      }\n      return newKey;\n    });\n  };\n\n  for (var i = 0; i < propertyNames.length; i++) loop( i );\n  return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n  var properties = [];\n  var keyframes = params.keyframes;\n  if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n  for (var p in params) {\n    if (is.key(p)) {\n      properties.push({\n        name: p,\n        tweens: normalizePropertyTweens(params[p], tweenSettings)\n      });\n    }\n  }\n  return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n  var t = {};\n  for (var p in tween) {\n    var value = getFunctionValue(tween[p], animatable);\n    if (is.arr(value)) {\n      value = value.map(function (v) { return getFunctionValue(v, animatable); });\n      if (value.length === 1) { value = value[0]; }\n    }\n    t[p] = value;\n  }\n  t.duration = parseFloat(t.duration);\n  t.delay = parseFloat(t.delay);\n  return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n  var previousTween;\n  return prop.tweens.map(function (t) {\n    var tween = normalizeTweenValues(t, animatable);\n    var tweenValue = tween.value;\n    var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n    var toUnit = getUnit(to);\n    var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n    var previousValue = previousTween ? previousTween.to.original : originalValue;\n    var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n    var fromUnit = getUnit(from) || getUnit(originalValue);\n    var unit = toUnit || fromUnit;\n    if (is.und(to)) { to = previousValue; }\n    tween.from = decomposeValue(from, unit);\n    tween.to = decomposeValue(getRelativeValue(to, from), unit);\n    tween.start = previousTween ? previousTween.end : 0;\n    tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n    tween.easing = parseEasings(tween.easing, tween.duration);\n    tween.isPath = is.pth(tweenValue);\n    tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n    tween.isColor = is.col(tween.from.original);\n    if (tween.isColor) { tween.round = 1; }\n    previousTween = tween;\n    return tween;\n  });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n  css: function (t, p, v) { return t.style[p] = v; },\n  attribute: function (t, p, v) { return t.setAttribute(p, v); },\n  object: function (t, p, v) { return t[p] = v; },\n  transform: function (t, p, v, transforms, manual) {\n    transforms.list.set(p, v);\n    if (p === transforms.last || manual) {\n      var str = '';\n      transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n      t.style.transform = str;\n    }\n  }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n  var animatables = getAnimatables(targets);\n  animatables.forEach(function (animatable) {\n    for (var property in properties) {\n      var value = getFunctionValue(properties[property], animatable);\n      var target = animatable.target;\n      var valueUnit = getUnit(value);\n      var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n      var unit = valueUnit || getUnit(originalValue);\n      var to = getRelativeValue(validateValue(value, unit), originalValue);\n      var animType = getAnimationType(target, property);\n      setProgressValue[animType](target, property, to, animatable.transforms, true);\n    }\n  });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n  var animType = getAnimationType(animatable.target, prop.name);\n  if (animType) {\n    var tweens = normalizeTweens(prop, animatable);\n    var lastTween = tweens[tweens.length - 1];\n    return {\n      type: animType,\n      property: prop.name,\n      animatable: animatable,\n      tweens: tweens,\n      duration: lastTween.end,\n      delay: tweens[0].delay,\n      endDelay: lastTween.endDelay\n    }\n  }\n}\n\nfunction getAnimations(animatables, properties) {\n  return filterArray(flattenArray(animatables.map(function (animatable) {\n    return properties.map(function (prop) {\n      return createAnimation(animatable, prop);\n    });\n  })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n  var animLength = animations.length;\n  var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n  var timings = {};\n  timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n  timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n  timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n  return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n  var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n  var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n  var properties = getProperties(tweenSettings, params);\n  var animatables = getAnimatables(params.targets);\n  var animations = getAnimations(animatables, properties);\n  var timings = getInstanceTimings(animations, tweenSettings);\n  var id = instanceID;\n  instanceID++;\n  return mergeObjects(instanceSettings, {\n    id: id,\n    children: [],\n    animatables: animatables,\n    animations: animations,\n    duration: timings.duration,\n    delay: timings.delay,\n    endDelay: timings.endDelay\n  });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n  var raf;\n\n  function play() {\n    if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n      raf = requestAnimationFrame(step);\n    }\n  }\n  function step(t) {\n    // memo on algorithm issue:\n    // dangerous iteration over mutable `activeInstances`\n    // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n    var activeInstancesLength = activeInstances.length;\n    var i = 0;\n    while (i < activeInstancesLength) {\n      var activeInstance = activeInstances[i];\n      if (!activeInstance.paused) {\n        activeInstance.tick(t);\n        i++;\n      } else {\n        activeInstances.splice(i, 1);\n        activeInstancesLength--;\n      }\n    }\n    raf = i > 0 ? requestAnimationFrame(step) : undefined;\n  }\n\n  function handleVisibilityChange() {\n    if (!anime.suspendWhenDocumentHidden) { return; }\n\n    if (isDocumentHidden()) {\n      // suspend ticks\n      raf = cancelAnimationFrame(raf);\n    } else { // is back to active tab\n      // first adjust animations to consider the time that ticks were suspended\n      activeInstances.forEach(\n        function (instance) { return instance ._onDocumentVisibility(); }\n      );\n      engine();\n    }\n  }\n  if (typeof document !== 'undefined') {\n    document.addEventListener('visibilitychange', handleVisibilityChange);\n  }\n\n  return play;\n})();\n\nfunction isDocumentHidden() {\n  return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n  if ( params === void 0 ) params = {};\n\n\n  var startTime = 0, lastTime = 0, now = 0;\n  var children, childrenLength = 0;\n  var resolve = null;\n\n  function makePromise(instance) {\n    var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n    instance.finished = promise;\n    return promise;\n  }\n\n  var instance = createNewInstance(params);\n  var promise = makePromise(instance);\n\n  function toggleInstanceDirection() {\n    var direction = instance.direction;\n    if (direction !== 'alternate') {\n      instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n    }\n    instance.reversed = !instance.reversed;\n    children.forEach(function (child) { return child.reversed = instance.reversed; });\n  }\n\n  function adjustTime(time) {\n    return instance.reversed ? instance.duration - time : time;\n  }\n\n  function resetTime() {\n    startTime = 0;\n    lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n  }\n\n  function seekChild(time, child) {\n    if (child) { child.seek(time - child.timelineOffset); }\n  }\n\n  function syncInstanceChildren(time) {\n    if (!instance.reversePlayback) {\n      for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n    } else {\n      for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n    }\n  }\n\n  function setAnimationsProgress(insTime) {\n    var i = 0;\n    var animations = instance.animations;\n    var animationsLength = animations.length;\n    while (i < animationsLength) {\n      var anim = animations[i];\n      var animatable = anim.animatable;\n      var tweens = anim.tweens;\n      var tweenLength = tweens.length - 1;\n      var tween = tweens[tweenLength];\n      // Only check for keyframes if there is more than one tween\n      if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n      var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n      var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n      var strings = tween.to.strings;\n      var round = tween.round;\n      var numbers = [];\n      var toNumbersLength = tween.to.numbers.length;\n      var progress = (void 0);\n      for (var n = 0; n < toNumbersLength; n++) {\n        var value = (void 0);\n        var toNumber = tween.to.numbers[n];\n        var fromNumber = tween.from.numbers[n] || 0;\n        if (!tween.isPath) {\n          value = fromNumber + (eased * (toNumber - fromNumber));\n        } else {\n          value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n        }\n        if (round) {\n          if (!(tween.isColor && n > 2)) {\n            value = Math.round(value * round) / round;\n          }\n        }\n        numbers.push(value);\n      }\n      // Manual Array.reduce for better performances\n      var stringsLength = strings.length;\n      if (!stringsLength) {\n        progress = numbers[0];\n      } else {\n        progress = strings[0];\n        for (var s = 0; s < stringsLength; s++) {\n          var a = strings[s];\n          var b = strings[s + 1];\n          var n$1 = numbers[s];\n          if (!isNaN(n$1)) {\n            if (!b) {\n              progress += n$1 + ' ';\n            } else {\n              progress += n$1 + b;\n            }\n          }\n        }\n      }\n      setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n      anim.currentValue = progress;\n      i++;\n    }\n  }\n\n  function setCallback(cb) {\n    if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n  }\n\n  function countIteration() {\n    if (instance.remaining && instance.remaining !== true) {\n      instance.remaining--;\n    }\n  }\n\n  function setInstanceProgress(engineTime) {\n    var insDuration = instance.duration;\n    var insDelay = instance.delay;\n    var insEndDelay = insDuration - instance.endDelay;\n    var insTime = adjustTime(engineTime);\n    instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n    instance.reversePlayback = insTime < instance.currentTime;\n    if (children) { syncInstanceChildren(insTime); }\n    if (!instance.began && instance.currentTime > 0) {\n      instance.began = true;\n      setCallback('begin');\n    }\n    if (!instance.loopBegan && instance.currentTime > 0) {\n      instance.loopBegan = true;\n      setCallback('loopBegin');\n    }\n    if (insTime <= insDelay && instance.currentTime !== 0) {\n      setAnimationsProgress(0);\n    }\n    if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n      setAnimationsProgress(insDuration);\n    }\n    if (insTime > insDelay && insTime < insEndDelay) {\n      if (!instance.changeBegan) {\n        instance.changeBegan = true;\n        instance.changeCompleted = false;\n        setCallback('changeBegin');\n      }\n      setCallback('change');\n      setAnimationsProgress(insTime);\n    } else {\n      if (instance.changeBegan) {\n        instance.changeCompleted = true;\n        instance.changeBegan = false;\n        setCallback('changeComplete');\n      }\n    }\n    instance.currentTime = minMax(insTime, 0, insDuration);\n    if (instance.began) { setCallback('update'); }\n    if (engineTime >= insDuration) {\n      lastTime = 0;\n      countIteration();\n      if (!instance.remaining) {\n        instance.paused = true;\n        if (!instance.completed) {\n          instance.completed = true;\n          setCallback('loopComplete');\n          setCallback('complete');\n          if (!instance.passThrough && 'Promise' in window) {\n            resolve();\n            promise = makePromise(instance);\n          }\n        }\n      } else {\n        startTime = now;\n        setCallback('loopComplete');\n        instance.loopBegan = false;\n        if (instance.direction === 'alternate') {\n          toggleInstanceDirection();\n        }\n      }\n    }\n  }\n\n  instance.reset = function() {\n    var direction = instance.direction;\n    instance.passThrough = false;\n    instance.currentTime = 0;\n    instance.progress = 0;\n    instance.paused = true;\n    instance.began = false;\n    instance.loopBegan = false;\n    instance.changeBegan = false;\n    instance.completed = false;\n    instance.changeCompleted = false;\n    instance.reversePlayback = false;\n    instance.reversed = direction === 'reverse';\n    instance.remaining = instance.loop;\n    children = instance.children;\n    childrenLength = children.length;\n    for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n    if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n    setAnimationsProgress(instance.reversed ? instance.duration : 0);\n  };\n\n  // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n  instance._onDocumentVisibility = resetTime;\n\n  // Set Value helper\n\n  instance.set = function(targets, properties) {\n    setTargetsValue(targets, properties);\n    return instance;\n  };\n\n  instance.tick = function(t) {\n    now = t;\n    if (!startTime) { startTime = now; }\n    setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n  };\n\n  instance.seek = function(time) {\n    setInstanceProgress(adjustTime(time));\n  };\n\n  instance.pause = function() {\n    instance.paused = true;\n    resetTime();\n  };\n\n  instance.play = function() {\n    if (!instance.paused) { return; }\n    if (instance.completed) { instance.reset(); }\n    instance.paused = false;\n    activeInstances.push(instance);\n    resetTime();\n    engine();\n  };\n\n  instance.reverse = function() {\n    toggleInstanceDirection();\n    instance.completed = instance.reversed ? false : true;\n    resetTime();\n  };\n\n  instance.restart = function() {\n    instance.reset();\n    instance.play();\n  };\n\n  instance.remove = function(targets) {\n    var targetsArray = parseTargets(targets);\n    removeTargetsFromInstance(targetsArray, instance);\n  };\n\n  instance.reset();\n\n  if (instance.autoplay) { instance.play(); }\n\n  return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n  for (var a = animations.length; a--;) {\n    if (arrayContains(targetsArray, animations[a].animatable.target)) {\n      animations.splice(a, 1);\n    }\n  }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n  var animations = instance.animations;\n  var children = instance.children;\n  removeTargetsFromAnimations(targetsArray, animations);\n  for (var c = children.length; c--;) {\n    var child = children[c];\n    var childAnimations = child.animations;\n    removeTargetsFromAnimations(targetsArray, childAnimations);\n    if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n  }\n  if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n  var targetsArray = parseTargets(targets);\n  for (var i = activeInstances.length; i--;) {\n    var instance = activeInstances[i];\n    removeTargetsFromInstance(targetsArray, instance);\n  }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n  if ( params === void 0 ) params = {};\n\n  var direction = params.direction || 'normal';\n  var easing = params.easing ? parseEasings(params.easing) : null;\n  var grid = params.grid;\n  var axis = params.axis;\n  var fromIndex = params.from || 0;\n  var fromFirst = fromIndex === 'first';\n  var fromCenter = fromIndex === 'center';\n  var fromLast = fromIndex === 'last';\n  var isRange = is.arr(val);\n  var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n  var val2 = isRange ? parseFloat(val[1]) : 0;\n  var unit = getUnit(isRange ? val[1] : val) || 0;\n  var start = params.start || 0 + (isRange ? val1 : 0);\n  var values = [];\n  var maxValue = 0;\n  return function (el, i, t) {\n    if (fromFirst) { fromIndex = 0; }\n    if (fromCenter) { fromIndex = (t - 1) / 2; }\n    if (fromLast) { fromIndex = t - 1; }\n    if (!values.length) {\n      for (var index = 0; index < t; index++) {\n        if (!grid) {\n          values.push(Math.abs(fromIndex - index));\n        } else {\n          var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n          var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n          var toX = index%grid[0];\n          var toY = Math.floor(index/grid[0]);\n          var distanceX = fromX - toX;\n          var distanceY = fromY - toY;\n          var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n          if (axis === 'x') { value = -distanceX; }\n          if (axis === 'y') { value = -distanceY; }\n          values.push(value);\n        }\n        maxValue = Math.max.apply(Math, values);\n      }\n      if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n      if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n    }\n    var spacing = isRange ? (val2 - val1) / maxValue : val1;\n    return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n  }\n}\n\n// Timeline\n\nfunction timeline(params) {\n  if ( params === void 0 ) params = {};\n\n  var tl = anime(params);\n  tl.duration = 0;\n  tl.add = function(instanceParams, timelineOffset) {\n    var tlIndex = activeInstances.indexOf(tl);\n    var children = tl.children;\n    if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n    function passThrough(ins) { ins.passThrough = true; }\n    for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n    var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n    insParams.targets = insParams.targets || params.targets;\n    var tlDuration = tl.duration;\n    insParams.autoplay = false;\n    insParams.direction = tl.direction;\n    insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n    passThrough(tl);\n    tl.seek(insParams.timelineOffset);\n    var ins = anime(insParams);\n    passThrough(ins);\n    children.push(ins);\n    var timings = getInstanceTimings(children, params);\n    tl.delay = timings.delay;\n    tl.endDelay = timings.endDelay;\n    tl.duration = timings.duration;\n    tl.seek(0);\n    tl.reset();\n    if (tl.autoplay) { tl.play(); }\n    return tl;\n  };\n  return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = anime_es_getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\n/* harmony default export */ var anime_es = (anime);\n\n// CONCATENATED MODULE: ./src/canvas/handlers/AnimationHandler.ts\n\n\n\nvar AnimationHandler_excluded = [\"delay\", \"duration\", \"autoplay\", \"loop\", \"type\"];\n\n\n\n\n\n\n\n\n\nvar AnimationHandler_AnimationHandler = /*#__PURE__*/createClass_default()(function AnimationHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, AnimationHandler);\n\n  this.handler = void 0;\n\n  this.play = function (id, hasControls) {\n    var findObject = _this.handler.findById(id);\n\n    if (!findObject) {\n      return;\n    }\n\n    if (findObject.anime) {\n      findObject.anime.restart();\n      return;\n    }\n\n    if (findObject.animation.type === 'none') {\n      return;\n    }\n\n    var instance = _this.getAnime(findObject, hasControls);\n\n    if (instance) {\n      findObject.set('anime', instance);\n      findObject.set({\n        hasControls: false,\n        lockMovementX: true,\n        lockMovementY: true,\n        hoverCursor: 'pointer'\n      });\n\n      _this.handler.canvas.requestRenderAll();\n\n      instance.play();\n    }\n  };\n\n  this.pause = function (id) {\n    var findObject = _this.handler.findById(id);\n\n    if (!findObject) {\n      return;\n    }\n\n    findObject.anime.pause();\n  };\n\n  this.stop = function (id) {\n    var hasControls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    var findObject = _this.handler.findById(id);\n\n    if (!findObject) {\n      return;\n    }\n\n    _this.resetAnimation(findObject, hasControls);\n  };\n\n  this.restart = function (id) {\n    var findObject = _this.handler.findById(id);\n\n    if (!findObject) {\n      return;\n    }\n\n    if (!findObject.anime) {\n      return;\n    }\n\n    _this.stop(id);\n\n    _this.play(id);\n  };\n\n  this.resetAnimation = function (obj) {\n    var hasControls = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n    if (!obj.anime) {\n      return;\n    }\n\n    var option;\n\n    if (_this.handler.editable) {\n      option = {\n        anime: null,\n        hasControls: hasControls,\n        lockMovementX: !hasControls,\n        lockMovementY: !hasControls,\n        hoverCursor: hasControls ? 'move' : 'pointer'\n      };\n    } else {\n      option = {\n        anime: null,\n        hasControls: false,\n        lockMovementX: true,\n        lockMovementY: true,\n        hoverCursor: 'pointer'\n      };\n    }\n\n    anime_es.remove(obj);\n    var type = obj.animation.type;\n\n    if (type === 'fade') {\n      Object.assign(option, {\n        opacity: obj.originOpacity,\n        originOpacity: null\n      });\n    } else if (type === 'bounce') {\n      if (obj.animation.bounce === 'vertical') {\n        Object.assign(option, {\n          top: obj.originTop,\n          originTop: null\n        });\n      } else {\n        Object.assign(option, {\n          left: obj.originLeft,\n          originLeft: null\n        });\n      }\n    } else if (type === 'shake') {\n      if (obj.animation.shake === 'vertical') {\n        Object.assign(option, {\n          top: obj.originTop,\n          originTop: null\n        });\n      } else {\n        Object.assign(option, {\n          left: obj.originLeft,\n          originLeft: null\n        });\n      }\n    } else if (type === 'scaling') {\n      Object.assign(option, {\n        scaleX: obj.originScaleX,\n        scaleY: obj.originScaleY,\n        originScaleX: null,\n        originScaleY: null\n      });\n    } else if (type === 'rotation') {\n      Object.assign(option, {\n        angle: obj.originAngle,\n        rotation: obj.originAngle,\n        left: obj.originLeft,\n        top: obj.originTop,\n        originLeft: null,\n        originTop: null,\n        originAngle: null\n      });\n    } else if (type === 'flash') {\n      if (obj.type === 'svg') {\n        obj._objects.forEach(function (child) {\n          return _this.handler.setByPartial(child, {\n            fill: child.originFill,\n            stroke: child.originStroke,\n            originFill: null,\n            originStroke: null\n          });\n        });\n      }\n\n      Object.assign(option, {\n        fill: obj.originFill,\n        stroke: obj.originStroke,\n        originFill: null,\n        originStroke: null\n      });\n    } else {\n      console.warn('Not supported type.');\n    }\n\n    obj.set(option);\n\n    _this.handler.canvas.renderAll();\n  };\n\n  this.getAnime = function (obj, hasControls) {\n    var _obj$animation = obj.animation,\n        _obj$animation$delay = _obj$animation.delay,\n        delay = _obj$animation$delay === void 0 ? 0 : _obj$animation$delay,\n        _obj$animation$durati = _obj$animation.duration,\n        duration = _obj$animation$durati === void 0 ? 100 : _obj$animation$durati,\n        _obj$animation$autopl = _obj$animation.autoplay,\n        autoplay = _obj$animation$autopl === void 0 ? true : _obj$animation$autopl,\n        _obj$animation$loop = _obj$animation.loop,\n        loop = _obj$animation$loop === void 0 ? true : _obj$animation$loop,\n        type = _obj$animation.type,\n        other = helpers_objectWithoutProperties_default()(_obj$animation, AnimationHandler_excluded);\n\n    var option = {\n      targets: obj,\n      delay: delay,\n      loop: loop,\n      autoplay: autoplay,\n      duration: duration,\n      direction: 'alternate',\n      begin: function begin() {\n        obj.set({\n          hasControls: false,\n          lockMovementX: true,\n          lockMovementY: true,\n          hoverCursor: 'pointer'\n        });\n\n        _this.handler.canvas.requestRenderAll();\n      },\n      update: function update(instance) {\n        if (type === 'flash') {\n          var _instance$animations$, _instance$animations$2;\n\n          // I don't know why it works. Magic code...\n          warning_default()(instance.animations[0], 'instance.animations[0] undefined.');\n          warning_default()(instance.animations[1], 'instance.animations[1] undefined.');\n          var fill = (_instance$animations$ = instance.animations[0]) === null || _instance$animations$ === void 0 ? void 0 : _instance$animations$.currentValue;\n          var stroke = (_instance$animations$2 = instance.animations[1]) === null || _instance$animations$2 === void 0 ? void 0 : _instance$animations$2.currentValue;\n\n          if (obj.type === 'svg') {\n            obj.setFill(fill);\n            obj.setStroke(stroke);\n          } else {\n            obj.set('fill', '');\n            obj.set('fill', fill);\n            obj.set('stroke', stroke);\n          }\n        } else if (type === 'rotation') {\n          var angle = instance.animations[0].currentValue;\n\n          if (typeof angle === 'string') {\n            angle = parseInt(angle, 10);\n          }\n\n          obj.rotate(angle);\n\n          _this.handler.canvas.requestRenderAll();\n\n          return;\n        }\n\n        obj.setCoords();\n\n        _this.handler.canvas.requestRenderAll();\n      },\n      complete: function complete() {\n        _this.resetAnimation(obj, hasControls);\n      }\n    };\n\n    if (type === 'fade') {\n      var _other$opacity = other.opacity,\n          opacity = _other$opacity === void 0 ? 0 : _other$opacity;\n      obj.set('originOpacity', obj.opacity);\n      Object.assign(option, {\n        opacity: opacity,\n        easing: 'easeInQuad'\n      });\n    } else if (type === 'bounce') {\n      var _other$offset = other.offset,\n          offset = _other$offset === void 0 ? 1 : _other$offset;\n\n      if (other.bounce === 'vertical') {\n        obj.set('originTop', obj.top);\n        Object.assign(option, {\n          top: obj.top + offset,\n          easing: 'easeInQuad'\n        });\n      } else {\n        obj.set('originLeft', obj.left);\n        Object.assign(option, {\n          left: obj.left + offset,\n          easing: 'easeInQuad'\n        });\n      }\n    } else if (type === 'shake') {\n      var _other$offset2 = other.offset,\n          _offset = _other$offset2 === void 0 ? 1 : _other$offset2;\n\n      if (other.shake === 'vertical') {\n        obj.set('originTop', obj.top);\n        Object.assign(option, {\n          top: obj.top + _offset,\n          delay: 0,\n          elasticity: 1000,\n          duration: 500\n        });\n      } else {\n        obj.set('originLeft', obj.left);\n        Object.assign(option, {\n          left: obj.left + _offset,\n          delay: 0,\n          elasticity: 1000,\n          duration: 500\n        });\n      }\n    } else if (type === 'scaling') {\n      var _other$scale = other.scale,\n          scale = _other$scale === void 0 ? 2 : _other$scale;\n      obj.set('originScaleX', obj.scaleX);\n      obj.set('originScaleY', obj.scaleY);\n      obj.set({\n        originScaleX: obj.scaleX,\n        originScaleY: obj.scaleY\n      });\n      var scaleX = obj.scaleX * scale;\n      var scaleY = obj.scaleY * scale;\n      Object.assign(option, {\n        scaleX: scaleX,\n        scaleY: scaleY,\n        easing: 'easeInQuad'\n      });\n    } else if (type === 'rotation') {\n      var _other$angle = other.angle,\n          angle = _other$angle === void 0 ? 360 : _other$angle;\n      obj.set('rotation', obj.angle);\n      obj.set('originAngle', obj.angle);\n      obj.set('originLeft', obj.left);\n      obj.set('originTop', obj.top);\n      Object.assign(option, {\n        rotation: angle,\n        easing: 'linear',\n        direction: 'normal'\n      });\n    } else if (type === 'flash') {\n      var _other$fill = other.fill,\n          fill = _other$fill === void 0 ? obj.fill : _other$fill,\n          _other$stroke = other.stroke,\n          stroke = _other$stroke === void 0 ? obj.stroke : _other$stroke;\n\n      if (obj.type === 'svg') {\n        obj._objects.forEach(function (child) {\n          return _this.handler.setByPartial(child, {\n            originFill: child.fill,\n            originStroke: child.stroke\n          });\n        });\n      }\n\n      obj.set('originFill', obj.fill);\n      obj.set('originStroke', obj.stroke);\n      Object.assign(option, {\n        fill: fill,\n        stroke: stroke,\n        easing: 'easeInQuad'\n      });\n    } else {\n      console.warn('Not supported type.');\n      return null;\n    }\n\n    return anime_es(option);\n  };\n\n  this.handler = handler;\n}\n/**\n * Play the animation\n * @param {string} id\n * @param {boolean} [hasControls]\n * @returns\n */\n);\n\n/* harmony default export */ var handlers_AnimationHandler = (AnimationHandler_AnimationHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/ContextmenuHandler.ts\n\n\n\n\n\n\n\nvar ContextmenuHandler_ContextmenuHandler = /*#__PURE__*/function () {\n  function ContextmenuHandler(handler) {\n    var _this = this;\n\n    classCallCheck_default()(this, ContextmenuHandler);\n\n    this.handler = void 0;\n    this.contextmenuEl = void 0;\n    this.show = debounce_default()( /*#__PURE__*/function () {\n      var _ref = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee(e, target) {\n        var onContext, contextmenu, element, left, top;\n        return regenerator_default.a.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                onContext = _this.handler.onContext;\n\n                while (_this.contextmenuEl.hasChildNodes()) {\n                  _this.contextmenuEl.removeChild(_this.contextmenuEl.firstChild);\n                }\n\n                contextmenu = document.createElement('div');\n                contextmenu.className = 'rde-contextmenu-right';\n                _context.next = 6;\n                return onContext(_this.contextmenuEl, e, target);\n\n              case 6:\n                element = _context.sent;\n\n                if (element) {\n                  _context.next = 9;\n                  break;\n                }\n\n                return _context.abrupt(\"return\");\n\n              case 9:\n                contextmenu.innerHTML = element;\n\n                _this.contextmenuEl.appendChild(contextmenu);\n\n                external_react_dom_default.a.render(element, contextmenu);\n\n                _this.contextmenuEl.classList.remove('contextmenu-hidden');\n\n                left = e.clientX, top = e.clientY;\n                _this.contextmenuEl.style.left = \"\".concat(left, \"px\");\n                _this.contextmenuEl.style.top = \"\".concat(top, \"px\");\n\n              case 16:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }));\n\n      return function (_x, _x2) {\n        return _ref.apply(this, arguments);\n      };\n    }(), 100);\n    this.hide = debounce_default()(function () {\n      if (_this.contextmenuEl) {\n        _this.contextmenuEl.classList.add('contextmenu-hidden');\n      }\n    }, 100);\n    this.handler = handler;\n    this.initialize();\n  }\n  /**\n   * Initialize contextmenu\n   *\n   */\n\n\n  createClass_default()(ContextmenuHandler, [{\n    key: \"initialize\",\n    value: function initialize() {\n      this.contextmenuEl = document.createElement('div');\n      this.contextmenuEl.id = \"\".concat(this.handler.id, \"_contextmenu\");\n      this.contextmenuEl.className = 'rde-contextmenu contextmenu-hidden';\n      document.body.appendChild(this.contextmenuEl);\n    }\n    /**\n     * Destroy contextmenu\n     *\n     */\n\n  }, {\n    key: \"destory\",\n    value: function destory() {\n      if (this.contextmenuEl) {\n        document.body.removeChild(this.contextmenuEl);\n      }\n    }\n    /**\n     * Show context menu\n     *\n     */\n\n  }]);\n\n  return ContextmenuHandler;\n}();\n\n/* harmony default export */ var handlers_ContextmenuHandler = (ContextmenuHandler_ContextmenuHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/TooltipHandler.ts\n\n\n\n\n\n\n\n\nvar TooltipHandler_TooltipHandler = /*#__PURE__*/function () {\n  function TooltipHandler(handler) {\n    var _this = this;\n\n    classCallCheck_default()(this, TooltipHandler);\n\n    this.handler = void 0;\n    this.tooltipEl = void 0;\n    this.target = void 0;\n    this.show = debounce_default()( /*#__PURE__*/function () {\n      var _ref = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee(target) {\n        var tooltip, element, onTooltip, zoom, clientHeight, width, height, scaleX, scaleY, _target$getBoundingRe, left, top, _ref2, offset, objWidthDiff, objHeightDiff, calcLeft, calcTop;\n\n        return regenerator_default.a.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!(target.tooltip && target.tooltip.enabled)) {\n                  _context.next = 28;\n                  break;\n                }\n\n                while (_this.tooltipEl.hasChildNodes()) {\n                  _this.tooltipEl.removeChild(_this.tooltipEl.firstChild);\n                }\n\n                tooltip = document.createElement('div');\n                tooltip.className = 'rde-tooltip-right';\n                element = target.name;\n                onTooltip = _this.handler.onTooltip;\n\n                if (!onTooltip) {\n                  _context.next = 12;\n                  break;\n                }\n\n                _context.next = 9;\n                return onTooltip(tooltip, target);\n\n              case 9:\n                element = _context.sent;\n\n                if (element) {\n                  _context.next = 12;\n                  break;\n                }\n\n                return _context.abrupt(\"return\");\n\n              case 12:\n                tooltip.innerHTML = element;\n\n                _this.tooltipEl.appendChild(tooltip);\n\n                external_react_dom_default.a.render(element, tooltip);\n\n                _this.tooltipEl.classList.remove('tooltip-hidden');\n\n                zoom = _this.handler.canvas.getZoom();\n                clientHeight = _this.tooltipEl.clientHeight;\n                width = target.width, height = target.height, scaleX = target.scaleX, scaleY = target.scaleY;\n                _target$getBoundingRe = target.getBoundingRect(), left = _target$getBoundingRe.left, top = _target$getBoundingRe.top;\n                _ref2 = _this.handler.canvas.calcOffset(), offset = _ref2._offset;\n                objWidthDiff = width * scaleX * zoom;\n                objHeightDiff = height * scaleY * zoom / 2 - clientHeight / 2;\n                calcLeft = offset.left + left + objWidthDiff;\n                calcTop = offset.top + top + objHeightDiff;\n\n                if (document.body.clientWidth <= calcLeft + _this.tooltipEl.offsetWidth) {\n                  _this.tooltipEl.style.left = \"\".concat(left + offset.left - _this.tooltipEl.offsetWidth, \"px\");\n                  tooltip.className = 'rde-tooltip-left';\n                } else {\n                  _this.tooltipEl.style.left = \"\".concat(calcLeft, \"px\");\n                }\n\n                _this.tooltipEl.style.top = \"\".concat(calcTop, \"px\");\n                _this.handler.target = target;\n\n              case 28:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }));\n\n      return function (_x) {\n        return _ref.apply(this, arguments);\n      };\n    }(), 100);\n    this.hide = debounce_default()(function (_target) {\n      _this.handler.target = null;\n\n      if (_this.tooltipEl) {\n        _this.tooltipEl.classList.add('tooltip-hidden');\n      }\n    }, 100);\n    this.handler = handler;\n\n    if (!handler.editable) {\n      this.initialize();\n    }\n  }\n  /**\n   * Initialize tooltip\n   *\n   * @author salgum1114\n   */\n\n\n  createClass_default()(TooltipHandler, [{\n    key: \"initialize\",\n    value: function initialize() {\n      this.tooltipEl = document.createElement('div');\n      this.tooltipEl.id = \"\".concat(this.handler.id, \"_tooltip\");\n      this.tooltipEl.className = 'rde-tooltip tooltip-hidden';\n      document.body.appendChild(this.tooltipEl);\n    }\n    /**\n     * Destroy tooltip\n     *\n     * @author salgum1114\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      if (this.tooltipEl) {\n        document.body.removeChild(this.tooltipEl);\n      }\n    }\n    /**\n     * Show tooltip\n     *\n     * @param {FabricObject} [target]\n     */\n\n  }]);\n\n  return TooltipHandler;\n}();\n\n/* harmony default export */ var handlers_TooltipHandler = (TooltipHandler_TooltipHandler);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.date.to-json.js\nvar es_date_to_json = __webpack_require__(496);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url.to-json.js\nvar web_url_to_json = __webpack_require__(532);\n\n// EXTERNAL MODULE: ./node_modules/lodash/throttle.js\nvar throttle = __webpack_require__(461);\nvar throttle_default = /*#__PURE__*/__webpack_require__.n(throttle);\n\n// CONCATENATED MODULE: ./src/canvas/handlers/TransactionHandler.ts\n\n\n\n\n\n\n\n\n\n\n\nvar TransactionHandler_TransactionHandler = /*#__PURE__*/createClass_default()(function TransactionHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, TransactionHandler);\n\n  this.handler = void 0;\n  this.redos = void 0;\n  this.undos = void 0;\n  this.active = false;\n  this.state = [];\n\n  this.initialize = function () {\n    _this.redos = [];\n    _this.undos = [];\n    _this.state = [];\n    _this.active = false;\n  };\n\n  this.save = function (type, canvasJSON) {\n    var _isWorkarea = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n    if (!_this.handler.keyEvent.transaction) {\n      return;\n    }\n\n    try {\n      if (_this.state) {\n        var json = JSON.stringify(_this.state);\n        _this.redos = [];\n\n        _this.undos.push({\n          type: type,\n          json: json\n        });\n      }\n\n      var _ref = canvasJSON || _this.handler.canvas.toJSON(_this.handler.propertiesToInclude),\n          objects = _ref.objects;\n\n      _this.state = objects.filter(function (obj) {\n        if (obj.id === 'workarea') {\n          return false;\n        } else if (obj.id === 'grid') {\n          return false;\n        } else if (obj.superType === 'port') {\n          return false;\n        }\n\n        return true;\n      });\n    } catch (error) {\n      console.error(error);\n    }\n  };\n\n  this.undo = throttle_default()(function () {\n    var undo = _this.undos.pop();\n\n    if (!undo) {\n      return;\n    }\n\n    _this.redos.push({\n      type: 'redo',\n      json: JSON.stringify(_this.state)\n    });\n\n    _this.replay(undo);\n  }, 100);\n  this.redo = throttle_default()(function () {\n    var redo = _this.redos.pop();\n\n    if (!redo) {\n      return;\n    }\n\n    _this.undos.push({\n      type: 'undo',\n      json: JSON.stringify(_this.state)\n    });\n\n    _this.replay(redo);\n  }, 100);\n\n  this.replay = function (transaction) {\n    var objects = JSON.parse(transaction.json);\n    _this.state = objects;\n    _this.active = true;\n    _this.handler.canvas.renderOnAddRemove = false;\n\n    _this.handler.clear();\n\n    _this.handler.canvas.discardActiveObject();\n\n    fabric[\"fabric\"].util.enlivenObjects(objects, function (enlivenObjects) {\n      enlivenObjects.forEach(function (obj) {\n        var targetIndex = _this.handler.canvas._objects.length;\n\n        if (obj.superType === 'node') {\n          _this.handler.canvas.insertAt(obj, targetIndex, false);\n\n          _this.handler.portHandler.create(obj);\n        } else if (obj.superType === 'link') {\n          var _link$fromNode, _link$fromPort, _link$toNode, _link$toPort;\n\n          var link = obj;\n          _this.handler.objects = _this.handler.getObjects();\n\n          _this.handler.linkHandler.create({\n            type: 'curvedLink',\n            fromNodeId: (_link$fromNode = link.fromNode) === null || _link$fromNode === void 0 ? void 0 : _link$fromNode.id,\n            fromPortId: (_link$fromPort = link.fromPort) === null || _link$fromPort === void 0 ? void 0 : _link$fromPort.id,\n            toNodeId: (_link$toNode = link.toNode) === null || _link$toNode === void 0 ? void 0 : _link$toNode.id,\n            toPortId: (_link$toPort = link.toPort) === null || _link$toPort === void 0 ? void 0 : _link$toPort.id\n          });\n        } else {\n          _this.handler.canvas.insertAt(obj, targetIndex, false);\n        }\n      });\n      _this.handler.canvas.renderOnAddRemove = true;\n      _this.active = false;\n\n      _this.handler.canvas.renderAll();\n\n      _this.handler.objects = _this.handler.getObjects();\n\n      if (_this.handler.onTransaction) {\n        _this.handler.onTransaction(transaction);\n      }\n    }, null);\n  };\n\n  this.handler = handler;\n  this.initialize();\n}\n/**\n * Initialize transaction handler\n *\n */\n);\n\n/* harmony default export */ var handlers_TransactionHandler = (TransactionHandler_TransactionHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/ZoomHandler.ts\n\n\n\n\n\n\n\nvar ZoomHandler_ZoomHandler = /*#__PURE__*/createClass_default()(function ZoomHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, ZoomHandler);\n\n  this.handler = void 0;\n\n  this.zoomToPoint = function (point, zoom) {\n    var _this$handler = _this.handler,\n        minZoom = _this$handler.minZoom,\n        maxZoom = _this$handler.maxZoom;\n    var zoomRatio = zoom;\n\n    if (zoom <= minZoom / 100) {\n      zoomRatio = minZoom / 100;\n    } else if (zoom >= maxZoom / 100) {\n      zoomRatio = maxZoom / 100;\n    }\n\n    _this.handler.canvas.zoomToPoint(point, zoomRatio);\n\n    _this.handler.getObjects().forEach(function (obj) {\n      if (obj.superType === 'element') {\n        var _ref = obj,\n            id = _ref.id,\n            width = _ref.width,\n            height = _ref.height,\n            player = _ref.player;\n\n        var el = _this.handler.elementHandler.findById(id); // update the element\n\n\n        _this.handler.elementHandler.setScaleOrAngle(el, obj);\n\n        _this.handler.elementHandler.setSize(el, obj);\n\n        _this.handler.elementHandler.setPosition(el, obj);\n\n        if (player) {\n          player.setPlayerSize(width, height);\n        }\n      }\n    });\n\n    if (_this.handler.onZoom) {\n      _this.handler.onZoom(zoomRatio);\n    }\n\n    _this.handler.canvas.requestRenderAll();\n  };\n\n  this.zoomOneToOne = function () {\n    var center = _this.handler.canvas.getCenter();\n\n    _this.handler.canvas.setViewportTransform([1, 0, 0, 1, 0, 0]);\n\n    _this.zoomToPoint(new fabric[\"fabric\"].Point(center.left, center.top), 1);\n  };\n\n  this.zoomToFit = function () {\n    var scaleX = _this.handler.canvas.getWidth() / _this.handler.workarea.width;\n\n    var scaleY = _this.handler.canvas.getHeight() / _this.handler.workarea.height;\n\n    if (_this.handler.workarea.height >= _this.handler.workarea.width) {\n      scaleX = scaleY;\n\n      if (_this.handler.canvas.getWidth() < _this.handler.workarea.width * scaleX) {\n        scaleX = scaleX * (_this.handler.canvas.getWidth() / (_this.handler.workarea.width * scaleX));\n      }\n    } else {\n      if (_this.handler.canvas.getHeight() < _this.handler.workarea.height * scaleX) {\n        scaleX = scaleX * (_this.handler.canvas.getHeight() / (_this.handler.workarea.height * scaleX));\n      }\n    }\n\n    var center = _this.handler.canvas.getCenter();\n\n    _this.handler.canvas.setViewportTransform([1, 0, 0, 1, 0, 0]);\n\n    _this.zoomToPoint(new fabric[\"fabric\"].Point(center.left, center.top), scaleX);\n  };\n\n  this.zoomIn = function () {\n    var zoomRatio = _this.handler.canvas.getZoom();\n\n    zoomRatio += 0.05;\n\n    var center = _this.handler.canvas.getCenter();\n\n    _this.zoomToPoint(new fabric[\"fabric\"].Point(center.left, center.top), zoomRatio);\n  };\n\n  this.zoomOut = function () {\n    var zoomRatio = _this.handler.canvas.getZoom();\n\n    zoomRatio -= 0.05;\n\n    var center = _this.handler.canvas.getCenter();\n\n    _this.zoomToPoint(new fabric[\"fabric\"].Point(center.left, center.top), zoomRatio);\n  };\n\n  this.zoomToCenterWithObject = function (target, zoomFit) {\n    var _this$handler$canvas$ = _this.handler.canvas.getCenter(),\n        canvasLeft = _this$handler$canvas$.left,\n        canvasTop = _this$handler$canvas$.top;\n\n    var left = target.left,\n        top = target.top,\n        width = target.width,\n        height = target.height;\n    var diffTop = canvasTop - (top + height / 2);\n    var diffLeft = canvasLeft - (left + width / 2);\n\n    if (zoomFit) {\n      var scaleX;\n      var scaleY;\n      scaleX = _this.handler.canvas.getWidth() / width;\n      scaleY = _this.handler.canvas.getHeight() / height;\n\n      if (height > width) {\n        scaleX = scaleY;\n\n        if (_this.handler.canvas.getWidth() < width * scaleX) {\n          scaleX = scaleX * (_this.handler.canvas.getWidth() / (width * scaleX));\n        }\n      } else {\n        scaleY = scaleX;\n\n        if (_this.handler.canvas.getHeight() < height * scaleX) {\n          scaleX = scaleX * (_this.handler.canvas.getHeight() / (height * scaleX));\n        }\n      }\n\n      _this.handler.canvas.setViewportTransform([1, 0, 0, 1, diffLeft, diffTop]);\n\n      _this.zoomToPoint(new fabric[\"fabric\"].Point(canvasLeft, canvasTop), scaleX);\n    } else {\n      var zoom = _this.handler.canvas.getZoom();\n\n      _this.handler.canvas.setViewportTransform([1, 0, 0, 1, diffLeft, diffTop]);\n\n      _this.zoomToPoint(new fabric[\"fabric\"].Point(canvasLeft, canvasTop), zoom);\n    }\n  };\n\n  this.zoomToCenter = function (zoomFit) {\n    var activeObject = _this.handler.canvas.getActiveObject();\n\n    if (!activeObject) {\n      return;\n    }\n\n    _this.zoomToCenterWithObject(activeObject, zoomFit);\n  };\n\n  this.handler = handler;\n}\n/**\n * Zoom to point\n *\n * @param {fabric.Point} point\n * @param {number} zoom ex) 0 ~ 1. Not percentage value.\n */\n);\n\n/* harmony default export */ var handlers_ZoomHandler = (ZoomHandler_ZoomHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/WorkareaHandler.ts\n\n\n\n\n\n\nfunction WorkareaHandler_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction WorkareaHandler_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? WorkareaHandler_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : WorkareaHandler_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar WorkareaHandler_WorkareaHandler = /*#__PURE__*/function () {\n  function WorkareaHandler(handler) {\n    var _this = this;\n\n    classCallCheck_default()(this, WorkareaHandler);\n\n    this.handler = void 0;\n\n    this.setLayout = function (layout) {\n      _this.handler.workarea.set('layout', layout);\n\n      var _this$handler$workare = _this.handler.workarea,\n          _element = _this$handler$workare._element,\n          isElement = _this$handler$workare.isElement,\n          workareaWidth = _this$handler$workare.workareaWidth,\n          workareaHeight = _this$handler$workare.workareaHeight;\n      var canvas = _this.handler.canvas;\n      var scaleX = 1;\n      var scaleY = 1;\n      var isFixed = layout === 'fixed';\n      var isResponsive = layout === 'responsive';\n      var isFullscreen = layout === 'fullscreen';\n\n      if (isElement) {\n        if (isFixed) {\n          scaleX = workareaWidth / _element.width;\n          scaleY = workareaHeight / _element.height;\n        } else if (isResponsive) {\n          var scales = _this.calculateScale();\n\n          scaleX = scales.scaleX;\n          scaleY = scales.scaleY;\n        } else {\n          scaleX = canvas.getWidth() / _element.width;\n          scaleY = canvas.getHeight() / _element.height;\n        }\n      }\n\n      _this.handler.getObjects().forEach(function (obj) {\n        var _ref = obj,\n            id = _ref.id,\n            player = _ref.player;\n\n        if (id !== 'workarea') {\n          var objScaleX = !isFullscreen ? 1 : scaleX;\n          var objScaleY = !isFullscreen ? 1 : scaleY;\n          var objWidth = obj.width * objScaleX * canvas.getZoom();\n          var objHeight = obj.height * objScaleY * canvas.getZoom();\n\n          var el = _this.handler.elementHandler.findById(obj.id);\n\n          _this.handler.elementHandler.setSize(el, obj);\n\n          if (player) {\n            player.setPlayerSize(objWidth, objHeight);\n          }\n\n          obj.set({\n            scaleX: !isFullscreen ? 1 : objScaleX,\n            scaleY: !isFullscreen ? 1 : objScaleY\n          });\n        }\n      });\n\n      if (isResponsive) {\n        var _center = canvas.getCenter();\n\n        if (isElement) {\n          _this.handler.workarea.set({\n            scaleX: 1,\n            scaleY: 1\n          });\n\n          _this.handler.zoomHandler.zoomToPoint(new fabric[\"fabric\"].Point(_center.left, _center.top), scaleX);\n        } else {\n          _this.handler.workarea.set({\n            width: workareaWidth,\n            height: workareaHeight\n          });\n\n          scaleX = canvas.getWidth() / workareaWidth;\n          scaleY = canvas.getHeight() / workareaHeight;\n\n          if (workareaHeight >= workareaWidth) {\n            scaleX = scaleY;\n          } else {\n            scaleY = scaleX;\n          }\n\n          _this.handler.zoomHandler.zoomToPoint(new fabric[\"fabric\"].Point(_center.left, _center.top), scaleX);\n        }\n\n        canvas.centerObject(_this.handler.workarea);\n        canvas.renderAll();\n        return;\n      }\n\n      if (isElement) {\n        _this.handler.workarea.set({\n          width: _element.width,\n          height: _element.height,\n          scaleX: scaleX,\n          scaleY: scaleY\n        });\n      } else {\n        var width = isFixed ? workareaWidth : _this.handler.canvas.getWidth();\n        var height = isFixed ? workareaHeight : _this.handler.canvas.getHeight();\n\n        _this.handler.workarea.set({\n          width: width,\n          height: height,\n          backgroundColor: 'rgba(255, 255, 255, 1)'\n        });\n\n        _this.handler.canvas.renderAll();\n\n        if (isFixed) {\n          canvas.centerObject(_this.handler.workarea);\n        } else {\n          _this.handler.workarea.set({\n            left: 0,\n            top: 0\n          });\n        }\n      }\n\n      canvas.centerObject(_this.handler.workarea);\n      var center = canvas.getCenter();\n      canvas.setViewportTransform([1, 0, 0, 1, 0, 0]);\n\n      _this.handler.zoomHandler.zoomToPoint(new fabric[\"fabric\"].Point(center.left, center.top), 1);\n\n      canvas.renderAll();\n    };\n\n    this.setResponsiveImage = /*#__PURE__*/function () {\n      var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee2(source, loaded) {\n        var imageFromUrl, workarea;\n        return regenerator_default.a.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                imageFromUrl = /*#__PURE__*/function () {\n                  var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee() {\n                    var src,\n                        _args = arguments;\n                    return regenerator_default.a.wrap(function _callee$(_context) {\n                      while (1) {\n                        switch (_context.prev = _context.next) {\n                          case 0:\n                            src = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';\n                            return _context.abrupt(\"return\", new Promise(function (resolve) {\n                              fabric[\"fabric\"].Image.fromURL(src, function (img) {\n                                var _this$handler = _this.handler,\n                                    canvas = _this$handler.canvas,\n                                    workarea = _this$handler.workarea,\n                                    editable = _this$handler.editable;\n                                var workareaWidth = workarea.workareaWidth,\n                                    workareaHeight = workarea.workareaHeight;\n\n                                var _this$calculateScale = _this.calculateScale(img),\n                                    scaleX = _this$calculateScale.scaleX,\n                                    scaleY = _this$calculateScale.scaleY;\n\n                                if (img._element) {\n                                  workarea.set(WorkareaHandler_objectSpread(WorkareaHandler_objectSpread({}, img), {}, {\n                                    isElement: true,\n                                    selectable: false\n                                  }));\n                                } else {\n                                  var image = new Image(workareaWidth, workareaHeight);\n                                  workarea.setElement(image);\n                                  workarea.set({\n                                    isElement: false,\n                                    selectable: false,\n                                    width: workareaWidth,\n                                    height: workareaHeight\n                                  });\n                                }\n\n                                if (editable && !loaded) {\n                                  canvas.getObjects().forEach(function (obj) {\n                                    var _ref4 = obj,\n                                        id = _ref4.id,\n                                        player = _ref4.player;\n\n                                    if (id !== 'workarea') {\n                                      var objWidth = obj.width * scaleX;\n                                      var objHeight = obj.height * scaleY;\n\n                                      var el = _this.handler.elementHandler.findById(id);\n\n                                      _this.handler.elementHandler.setScaleOrAngle(el, obj);\n\n                                      _this.handler.elementHandler.setSize(el, obj);\n\n                                      if (player) {\n                                        player.setPlayerSize(objWidth, objHeight);\n                                      }\n\n                                      obj.set({\n                                        scaleX: 1,\n                                        scaleY: 1\n                                      });\n                                      obj.setCoords();\n                                    }\n                                  });\n                                } // 파일이 없을 경우 Canvas의 nextWidth, nextHeight 값이 변경되기 전 상태에서 zoomToFit이 동작함\n                                // 정상 동작 resize event logic => zoomToFit\n                                // 현재 동작 zoomToFit -> resize event logic\n\n\n                                _this.handler.zoomHandler.zoomToFit();\n\n                                canvas.centerObject(workarea);\n                                resolve(workarea);\n                              });\n                            }));\n\n                          case 2:\n                          case \"end\":\n                            return _context.stop();\n                        }\n                      }\n                    }, _callee);\n                  }));\n\n                  return function imageFromUrl() {\n                    return _ref3.apply(this, arguments);\n                  };\n                }();\n\n                workarea = _this.handler.workarea;\n\n                if (source) {\n                  _context2.next = 5;\n                  break;\n                }\n\n                workarea.set({\n                  src: null,\n                  file: null\n                });\n                return _context2.abrupt(\"return\", imageFromUrl(source));\n\n              case 5:\n                if (!(source instanceof File)) {\n                  _context2.next = 9;\n                  break;\n                }\n\n                return _context2.abrupt(\"return\", new Promise(function (resolve) {\n                  var reader = new FileReader();\n\n                  reader.onload = function () {\n                    workarea.set({\n                      file: source\n                    });\n                    imageFromUrl(reader.result).then(resolve);\n                  };\n\n                  reader.readAsDataURL(source);\n                }));\n\n              case 9:\n                workarea.set({\n                  src: source\n                });\n                return _context2.abrupt(\"return\", imageFromUrl(source));\n\n              case 11:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2);\n      }));\n\n      return function (_x, _x2) {\n        return _ref2.apply(this, arguments);\n      };\n    }();\n\n    this.setImage = /*#__PURE__*/function () {\n      var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee4(source) {\n        var loaded,\n            _this$handler2,\n            canvas,\n            workarea,\n            editable,\n            imageFromUrl,\n            _args4 = arguments;\n\n        return regenerator_default.a.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                loaded = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : false;\n                _this$handler2 = _this.handler, canvas = _this$handler2.canvas, workarea = _this$handler2.workarea, editable = _this$handler2.editable;\n\n                if (!(workarea.layout === 'responsive')) {\n                  _context4.next = 4;\n                  break;\n                }\n\n                return _context4.abrupt(\"return\", _this.setResponsiveImage(source, loaded));\n\n              case 4:\n                imageFromUrl = /*#__PURE__*/function () {\n                  var _ref6 = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee3(src) {\n                    return regenerator_default.a.wrap(function _callee3$(_context3) {\n                      while (1) {\n                        switch (_context3.prev = _context3.next) {\n                          case 0:\n                            return _context3.abrupt(\"return\", new Promise(function (resolve) {\n                              fabric[\"fabric\"].Image.fromURL(src, function (img) {\n                                var width = canvas.getWidth();\n                                var height = canvas.getHeight();\n\n                                if (workarea.layout === 'fixed') {\n                                  width = workarea.width * workarea.scaleX;\n                                  height = workarea.height * workarea.scaleY;\n                                }\n\n                                var scaleX = 1;\n                                var scaleY = 1;\n\n                                if (img._element) {\n                                  scaleX = width / img.width;\n                                  scaleY = height / img.height;\n                                  img.set({\n                                    originX: 'left',\n                                    originY: 'top',\n                                    scaleX: scaleX,\n                                    scaleY: scaleY\n                                  });\n                                  workarea.set(WorkareaHandler_objectSpread(WorkareaHandler_objectSpread({}, img), {}, {\n                                    isElement: true,\n                                    selectable: false\n                                  }));\n                                } else {\n                                  workarea.setElement(new Image());\n                                  workarea.set({\n                                    width: width,\n                                    height: height,\n                                    scaleX: scaleX,\n                                    scaleY: scaleY,\n                                    isElement: false,\n                                    selectable: false\n                                  });\n                                }\n\n                                canvas.centerObject(workarea);\n\n                                if (editable && !loaded) {\n                                  var layout = workarea.layout;\n                                  canvas.getObjects().forEach(function (obj) {\n                                    var _ref7 = obj,\n                                        id = _ref7.id,\n                                        player = _ref7.player;\n\n                                    if (id !== 'workarea') {\n                                      scaleX = layout === 'fullscreen' ? scaleX : obj.scaleX;\n                                      scaleY = layout === 'fullscreen' ? scaleY : obj.scaleY;\n\n                                      var el = _this.handler.elementHandler.findById(id);\n\n                                      _this.handler.elementHandler.setSize(el, obj);\n\n                                      if (player) {\n                                        var objWidth = obj.width * scaleX;\n                                        var objHeight = obj.height * scaleY;\n                                        player.setPlayerSize(objWidth, objHeight);\n                                      }\n\n                                      obj.set({\n                                        scaleX: scaleX,\n                                        scaleY: scaleY\n                                      });\n                                      obj.setCoords();\n                                    }\n                                  });\n                                }\n\n                                var center = canvas.getCenter();\n                                var zoom = loaded || workarea.layout === 'fullscreen' ? 1 : _this.handler.canvas.getZoom();\n                                canvas.setViewportTransform([1, 0, 0, 1, 0, 0]);\n\n                                _this.handler.zoomHandler.zoomToPoint(new fabric[\"fabric\"].Point(center.left, center.top), zoom);\n\n                                canvas.renderAll();\n                                resolve(workarea);\n                              });\n                            }));\n\n                          case 1:\n                          case \"end\":\n                            return _context3.stop();\n                        }\n                      }\n                    }, _callee3);\n                  }));\n\n                  return function imageFromUrl(_x4) {\n                    return _ref6.apply(this, arguments);\n                  };\n                }();\n\n                if (source) {\n                  _context4.next = 8;\n                  break;\n                }\n\n                workarea.set({\n                  src: null,\n                  file: null\n                });\n                return _context4.abrupt(\"return\", imageFromUrl(source));\n\n              case 8:\n                if (!(source instanceof File)) {\n                  _context4.next = 12;\n                  break;\n                }\n\n                return _context4.abrupt(\"return\", new Promise(function (resolve) {\n                  var reader = new FileReader();\n\n                  reader.onload = function () {\n                    workarea.set({\n                      file: source\n                    });\n                    imageFromUrl(reader.result).then(resolve);\n                  };\n\n                  reader.readAsDataURL(source);\n                }));\n\n              case 12:\n                workarea.set({\n                  src: source\n                });\n                return _context4.abrupt(\"return\", imageFromUrl(source));\n\n              case 14:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4);\n      }));\n\n      return function (_x3) {\n        return _ref5.apply(this, arguments);\n      };\n    }();\n\n    this.calculateScale = function (image) {\n      var _this$handler3 = _this.handler,\n          canvas = _this$handler3.canvas,\n          workarea = _this$handler3.workarea;\n      var workareaWidth = workarea.workareaWidth,\n          workareaHeight = workarea.workareaHeight;\n\n      var _ref8 = image || workarea,\n          _element = _ref8._element;\n\n      var width = (_element === null || _element === void 0 ? void 0 : _element.width) || workareaWidth;\n      var height = (_element === null || _element === void 0 ? void 0 : _element.height) || workareaHeight;\n      var scaleX = canvas.getWidth() / width;\n      var scaleY = canvas.getHeight() / height;\n\n      if (height >= width) {\n        scaleX = scaleY;\n\n        if (canvas.getWidth() < width * scaleX) {\n          scaleX = scaleX * (canvas.getWidth() / (width * scaleX));\n        }\n      } else {\n        scaleY = scaleX;\n\n        if (canvas.getHeight() < height * scaleX) {\n          scaleX = scaleX * (canvas.getHeight() / (height * scaleX));\n        }\n      }\n\n      return {\n        scaleX: scaleX,\n        scaleY: scaleY\n      };\n    };\n\n    this.handler = handler;\n    this.initialize();\n  }\n  /**\n   * Initialize workarea\n   *\n   * @author salgum1114\n   */\n\n\n  createClass_default()(WorkareaHandler, [{\n    key: \"initialize\",\n    value: function initialize() {\n      var workareaOption = this.handler.workareaOption;\n      var image = new Image(workareaOption.width, workareaOption.height);\n      image.width = workareaOption.width;\n      image.height = workareaOption.height;\n      this.handler.workarea = new fabric[\"fabric\"].Image(image, workareaOption);\n      this.handler.canvas.add(this.handler.workarea);\n      this.handler.objects = this.handler.getObjects();\n      this.handler.canvas.centerObject(this.handler.workarea);\n      this.handler.canvas.renderAll();\n    }\n    /**\n     * Set the layout on workarea\n     * @param {WorkareaLayout} layout\n     * @returns\n     */\n\n  }]);\n\n  return WorkareaHandler;\n}();\n\n/* harmony default export */ var handlers_WorkareaHandler = (WorkareaHandler_WorkareaHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/InteractionHandler.ts\n\n\n\n\n\n\n\nvar InteractionHandler_InteractionHandler = /*#__PURE__*/createClass_default()(function InteractionHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, InteractionHandler);\n\n  this.handler = void 0;\n\n  this.selection = function (callback) {\n    if (_this.handler.interactionMode === 'selection') {\n      return;\n    }\n\n    _this.handler.interactionMode = 'selection';\n\n    if (typeof _this.handler.canvasOption.selection === 'undefined') {\n      _this.handler.canvas.selection = true;\n    } else {\n      _this.handler.canvas.selection = _this.handler.canvasOption.selection;\n    }\n\n    _this.handler.canvas.defaultCursor = 'default';\n    _this.handler.workarea.hoverCursor = 'default';\n\n    _this.handler.getObjects().forEach(function (obj) {\n      if (callback) {\n        _this.interactionCallback(obj, callback);\n      } else {\n        // When typeof selection is ActiveSelection, ignoring selectable, because link position left: 0, top: 0\n        if (obj.superType === 'link' || obj.superType === 'port') {\n          obj.selectable = false;\n          obj.evented = true;\n          obj.hoverCursor = 'pointer';\n          return;\n        }\n\n        if (_this.handler.editable) {\n          obj.hoverCursor = 'move';\n        } else {\n          obj.hoverCursor = 'pointer';\n        }\n\n        obj.selectable = true;\n        obj.evented = true;\n      }\n    });\n\n    _this.handler.canvas.renderAll();\n  };\n\n  this.grab = function (callback) {\n    if (_this.handler.interactionMode === 'grab') {\n      return;\n    }\n\n    _this.handler.interactionMode = 'grab';\n    _this.handler.canvas.selection = false;\n    _this.handler.canvas.defaultCursor = 'grab';\n    _this.handler.workarea.hoverCursor = 'grab';\n\n    _this.handler.getObjects().forEach(function (obj) {\n      if (callback) {\n        _this.interactionCallback(obj, callback);\n      } else {\n        obj.selectable = false;\n        obj.evented = _this.handler.editable ? false : true;\n      }\n    });\n\n    _this.handler.canvas.renderAll();\n  };\n\n  this.drawing = function (type, callback) {\n    if (_this.isDrawingMode()) {\n      return;\n    }\n\n    _this.handler.interactionMode = type;\n    _this.handler.canvas.selection = false;\n    _this.handler.canvas.defaultCursor = 'pointer';\n    _this.handler.workarea.hoverCursor = 'pointer';\n\n    _this.handler.getObjects().forEach(function (obj) {\n      if (callback) {\n        _this.interactionCallback(obj, callback);\n      } else {\n        obj.selectable = false;\n        obj.evented = _this.handler.editable ? false : true;\n      }\n    });\n\n    _this.handler.canvas.renderAll();\n  };\n\n  this.linking = function (callback) {\n    if (_this.isDrawingMode()) {\n      return;\n    }\n\n    _this.handler.interactionMode = 'link';\n    _this.handler.canvas.selection = false;\n    _this.handler.canvas.defaultCursor = 'default';\n    _this.handler.workarea.hoverCursor = 'default';\n\n    _this.handler.getObjects().forEach(function (obj) {\n      if (callback) {\n        _this.interactionCallback(obj, callback);\n      } else {\n        if (obj.superType === 'node' || obj.superType === 'port') {\n          obj.hoverCursor = 'pointer';\n          obj.selectable = false;\n          obj.evented = true;\n          return;\n        }\n\n        obj.selectable = false;\n        obj.evented = _this.handler.editable ? false : true;\n      }\n    });\n\n    _this.handler.canvas.renderAll();\n  };\n\n  this.moving = function (e) {\n    if (_this.isDrawingMode()) {\n      return;\n    }\n\n    var delta = new fabric[\"fabric\"].Point(e.movementX, e.movementY);\n\n    _this.handler.canvas.relativePan(delta);\n\n    _this.handler.canvas.requestRenderAll();\n\n    _this.handler.objects.forEach(function (obj) {\n      if (obj.superType === 'element') {\n        var id = obj.id;\n\n        var el = _this.handler.elementHandler.findById(id); // update the element\n\n\n        _this.handler.elementHandler.setPosition(el, obj);\n      }\n    });\n  };\n\n  this.isDrawingMode = function () {\n    return _this.handler.interactionMode === 'link' || _this.handler.interactionMode === 'arrow' || _this.handler.interactionMode === 'line' || _this.handler.interactionMode === 'polygon';\n  };\n\n  this.interactionCallback = function (obj, callback) {\n    callback(obj);\n  };\n\n  this.handler = handler;\n\n  if (this.handler.editable) {\n    this.selection();\n  }\n}\n/**\n * Change selection mode\n * @param {(obj: FabricObject) => IReturnType} [callback]\n */\n);\n\n/* harmony default export */ var handlers_InteractionHandler = (InteractionHandler_InteractionHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/GridHandler.ts\n\n\n\n\nfunction GridHandler_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction GridHandler_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? GridHandler_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : GridHandler_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar GridHandler_GridHandler = /*#__PURE__*/createClass_default()(function GridHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, GridHandler);\n\n  this.handler = void 0;\n\n  this.initialize = function () {\n    var _this$handler$gridOpt = _this.handler.gridOption,\n        grid = _this$handler$gridOpt.grid,\n        lineColor = _this$handler$gridOpt.lineColor,\n        borderColor = _this$handler$gridOpt.borderColor,\n        enabled = _this$handler$gridOpt.enabled;\n\n    if (enabled && grid) {\n      var width = 5000;\n      var gridLength = width / grid;\n      var lineOptions = {\n        stroke: lineColor,\n        selectable: false,\n        evented: false,\n        id: 'grid'\n      };\n\n      for (var i = 0; i < gridLength; i++) {\n        var distance = i * grid;\n        var fhorizontal = new fabric[\"fabric\"].Line([distance, -width, distance, width], lineOptions);\n        var shorizontal = new fabric[\"fabric\"].Line([distance - width, -width, distance - width, width], lineOptions);\n\n        _this.handler.canvas.add(fhorizontal);\n\n        _this.handler.canvas.add(shorizontal);\n\n        var fvertical = new fabric[\"fabric\"].Line([-width, distance - width, width, distance - width], lineOptions);\n        var svertical = new fabric[\"fabric\"].Line([-width, distance, width, distance], lineOptions);\n\n        _this.handler.canvas.add(fvertical);\n\n        _this.handler.canvas.add(svertical);\n\n        if (i % 5 === 0) {\n          fhorizontal.set({\n            stroke: borderColor\n          });\n          shorizontal.set({\n            stroke: borderColor\n          });\n          fvertical.set({\n            stroke: borderColor\n          });\n          svertical.set({\n            stroke: borderColor\n          });\n        }\n      }\n    }\n  };\n\n  this.setCoords = function (target) {\n    var _this$handler$gridOpt2 = _this.handler.gridOption,\n        enabled = _this$handler$gridOpt2.enabled,\n        grid = _this$handler$gridOpt2.grid,\n        snapToGrid = _this$handler$gridOpt2.snapToGrid;\n\n    if (enabled && grid && snapToGrid) {\n      if (target.type === 'activeSelection') {\n        var activeSelection = target;\n        activeSelection.set({\n          left: Math.round(target.left / grid) * grid,\n          top: Math.round(target.top / grid) * grid\n        });\n        activeSelection.setCoords();\n        activeSelection.getObjects().forEach(function (obj) {\n          if (obj.superType === 'node') {\n            var left = target.left + obj.left + target.width / 2;\n            var top = target.top + obj.top + target.height / 2;\n\n            _this.handler.portHandler.setCoords(GridHandler_objectSpread(GridHandler_objectSpread({}, obj), {}, {\n              left: left,\n              top: top\n            }));\n          }\n        });\n        return;\n      }\n\n      var obj = target;\n      obj.set({\n        left: Math.round(target.left / grid) * grid,\n        top: Math.round(target.top / grid) * grid\n      });\n      target.setCoords();\n\n      _this.handler.portHandler.setCoords(target);\n    }\n  };\n\n  this.handler = handler;\n  this.initialize();\n}\n/**\n * Init grid\n *\n */\n);\n\n/* harmony default export */ var handlers_GridHandler = (GridHandler_GridHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/PortHandler.ts\n\n\n\n\n\n\n\n\n\n\nfunction PortHandler_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction PortHandler_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? PortHandler_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : PortHandler_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\nvar PortHandler_PortHandler = /*#__PURE__*/createClass_default()(function PortHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, PortHandler);\n\n  this.handler = void 0;\n\n  this.create = function (target) {\n    if (!target.createToPort) {\n      return;\n    }\n\n    var toPort = target.createToPort(target.left + target.width / 2, target.top);\n\n    if (toPort) {\n      toPort.on('mouseover', function () {\n        if (_this.handler.interactionMode === 'link' && _this.handler.activeLine && _this.handler.activeLine[\"class\"] === 'line') {\n          if (toPort.links.some(function (link) {\n            return link.fromNode === _this.handler.activeLine.fromNode;\n          })) {\n            toPort.set({\n              fill: 'red'\n            });\n\n            _this.handler.canvas.renderAll();\n\n            return;\n          }\n\n          toPort.set({\n            fill: 'green'\n          });\n\n          _this.handler.canvas.renderAll();\n        }\n      });\n      toPort.on('mouseout', function () {\n        toPort.set({\n          fill: toPort.originFill\n        });\n\n        _this.handler.canvas.renderAll();\n      });\n\n      _this.handler.canvas.add(toPort);\n\n      toPort.setCoords();\n\n      _this.handler.canvas.bringToFront(toPort);\n    }\n\n    var fromPort = target.createFromPort(target.left + target.width / 2, target.top + target.height);\n\n    if (fromPort && fromPort.length) {\n      fromPort.forEach(function (port) {\n        if (port) {\n          port.on('mouseover', function () {\n            if (_this.handler.interactionMode !== 'link') {\n              if (port.enabled) {\n                if (_this.handler.activeLine) {\n                  port.set({\n                    fill: 'red'\n                  });\n\n                  _this.handler.canvas.renderAll();\n\n                  return;\n                }\n\n                port.set({\n                  fill: 'green'\n                });\n\n                _this.handler.canvas.renderAll();\n\n                return;\n              }\n\n              port.set({\n                fill: 'red'\n              });\n\n              _this.handler.canvas.renderAll();\n            }\n          });\n          port.on('mouseout', function () {\n            if (_this.handler.interactionMode !== 'link') {\n              port.set({\n                fill: port.enabled ? port.originFill : port.hoverFill\n              });\n            }\n\n            _this.handler.canvas.renderAll();\n          });\n\n          _this.handler.canvas.add(port);\n\n          port.setCoords();\n\n          _this.handler.canvas.bringToFront(port);\n        }\n      });\n    }\n  };\n\n  this.setCoords = function (target) {\n    if (target.toPort) {\n      var toCoords = {\n        left: target.left + target.width / 2,\n        top: target.top\n      };\n      target.toPort.set(PortHandler_objectSpread({}, toCoords));\n      target.toPort.setCoords();\n\n      if (target.toPort.links.length) {\n        target.toPort.links.forEach(function (link) {\n          var fromPort = link.fromNode.fromPort.filter(function (port) {\n            return port.id === link.fromPort.id;\n          })[0];\n\n          _this.handler.linkHandler.setCoords(fromPort.left, fromPort.top, toCoords.left, toCoords.top, link);\n        });\n      }\n    }\n\n    if (target.fromPort) {\n      var fromCoords = {\n        left: target.left + target.width / 2,\n        top: target.top + target.height\n      };\n      target.fromPort.forEach(function (port) {\n        var left = port.leftDiff ? fromCoords.left + port.leftDiff : fromCoords.left;\n        var top = port.topDiff ? fromCoords.top + port.topDiff : fromCoords.top;\n        port.set({\n          left: left,\n          top: top\n        });\n        port.setCoords();\n\n        if (port.links.length) {\n          port.links.forEach(function (link) {\n            _this.handler.linkHandler.setCoords(left, top, link.toNode.toPort.left, link.toNode.toPort.top, link);\n          });\n        }\n      });\n    }\n  };\n\n  this.recreate = function (target) {\n    var fromPort = target.fromPort,\n        toPort = target.toPort;\n    var ports = target.ports;\n\n    if (ports) {\n      ports.forEach(function (port) {\n        target.removeWithUpdate(port);\n\n        _this.handler.canvas.remove(port.fromPort);\n      });\n    }\n\n    _this.handler.canvas.remove(target.toPort);\n\n    if (target.toPort) {\n      target.toPort.links.forEach(function (link) {\n        _this.handler.linkHandler.remove(link, 'from');\n      });\n    }\n\n    if (target.fromPort) {\n      target.fromPort.forEach(function (port) {\n        if (port.links.length) {\n          port.links.forEach(function (link) {\n            _this.handler.linkHandler.remove(link, 'to');\n          });\n        }\n      });\n    }\n\n    _this.create(target);\n\n    toPort.links.forEach(function (link) {\n      link.fromNode = link.fromNode.id;\n      link.fromPort = link.fromPort.id;\n      link.toNode = target.toPort.nodeId;\n      link.toPort = target.toPort.id;\n\n      _this.handler.linkHandler.create(link);\n    });\n    fromPort.filter(function (op) {\n      return target.fromPort.some(function (np) {\n        return np.id === op.id;\n      });\n    }).forEach(function (port) {\n      port.links.forEach(function (link) {\n        if (link.fromPort.id === port.id) {\n          link.fromNode = port.nodeId;\n          link.fromPort = port.id;\n          link.toNode = link.toNode.id;\n          link.toPort = link.toPort.id;\n\n          _this.handler.linkHandler.create(link);\n\n          _this.setCoords(target);\n        }\n      });\n    });\n  };\n\n  this.handler = handler;\n}\n/**\n * Create port\n * @param {NodeObject} target\n */\n);\n\n/* harmony default export */ var handlers_PortHandler = (PortHandler_PortHandler);\n// CONCATENATED MODULE: ./src/canvas/objects/Arrow.ts\n\n\nvar Arrow = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Line, {\n  type: 'arrow',\n  superType: 'drawing',\n  initialize: function initialize(points, options) {\n    if (!points) {\n      var _options = options,\n          x1 = _options.x1,\n          x2 = _options.x2,\n          y1 = _options.y1,\n          y2 = _options.y2;\n      points = [x1, y1, x2, y2];\n    }\n\n    options = options || {};\n    this.callSuper('initialize', points, options);\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n    ctx.save();\n    var xDiff = this.x2 - this.x1;\n    var yDiff = this.y2 - this.y1;\n    var angle = Math.atan2(yDiff, xDiff);\n    ctx.translate((this.x2 - this.x1) / 2, (this.y2 - this.y1) / 2);\n    ctx.rotate(angle);\n    ctx.beginPath(); // Move 5px in front of line to start the arrow so it does not have the square line end showing in front (0,0)\n\n    ctx.moveTo(5, 0);\n    ctx.lineTo(-5, 5);\n    ctx.lineTo(-5, -5);\n    ctx.closePath();\n    ctx.fillStyle = this.stroke;\n    ctx.fill();\n    ctx.restore();\n  }\n});\n\nArrow.fromObject = function (options, callback) {\n  var x1 = options.x1,\n      x2 = options.x2,\n      y1 = options.y1,\n      y2 = options.y2;\n  return callback(new Arrow([x1, y1, x2, y2], options));\n}; // @ts-ignore\n\n\nwindow.fabric.Arrow = Arrow;\n/* harmony default export */ var objects_Arrow = (Arrow);\n// EXTERNAL MODULE: ./node_modules/echarts/index.js\nvar echarts = __webpack_require__(675);\n\n// CONCATENATED MODULE: ./src/canvas/utils/ObjectUtil.ts\n\n\n\n\n\n\n/**\n * toObject util\n * @param {*} obj\n * @param {string[]} propertiesToInclude\n * @param {{ [key: string]: any }} [properties]\n */\nvar ObjectUtil_toObject = function toObject(obj, propertiesToInclude, properties) {\n  return fabric[\"fabric\"].util.object.extend(obj.callSuper('toObject'), propertiesToInclude.reduce(function (prev, property) {\n    return Object.assign(prev, helpers_defineProperty_default()({}, property, obj.get(property)));\n  }, Object.assign({}, properties)));\n};\n// CONCATENATED MODULE: ./src/canvas/utils/index.ts\n\n// CONCATENATED MODULE: ./src/canvas/objects/Chart.ts\n\n\n\n\nvar Chart = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Rect, {\n  type: 'chart',\n  superType: 'element',\n  hasRotatingPoint: false,\n  initialize: function initialize(chartOption, options) {\n    options = options || {};\n    this.callSuper('initialize', options);\n    this.set({\n      chartOption: chartOption,\n      fill: 'rgba(255, 255, 255, 0)',\n      stroke: 'rgba(255, 255, 255, 0)'\n    });\n  },\n  setSource: function setSource(source) {\n    if (typeof source === 'string') {\n      this.setChartOptionStr(source);\n    } else {\n      this.setChartOption(source);\n    }\n  },\n  setChartOptionStr: function setChartOptionStr(chartOptionStr) {\n    this.set({\n      chartOptionStr: chartOptionStr\n    });\n  },\n  setChartOption: function setChartOption(chartOption) {\n    this.set({\n      chartOption: chartOption\n    });\n    this.distroyChart();\n    this.createChart(chartOption);\n  },\n  createChart: function createChart(chartOption) {\n    this.instance = echarts[\"init\"](this.element);\n\n    if (!chartOption) {\n      this.instance.setOption({\n        xAxis: {},\n        yAxis: {},\n        series: [{\n          type: 'line',\n          data: [[0, 1], [1, 2], [2, 3], [3, 4]]\n        }]\n      });\n    } else {\n      this.instance.setOption(chartOption);\n    }\n  },\n  distroyChart: function distroyChart() {\n    if (this.instance) {\n      this.instance.dispose();\n    }\n  },\n  toObject: function toObject(propertiesToInclude) {\n    return ObjectUtil_toObject(this, propertiesToInclude, {\n      chartOption: this.get('chartOption'),\n      container: this.get('container'),\n      editable: this.get('editable')\n    });\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n\n    if (!this.instance) {\n      var id = this.id,\n          scaleX = this.scaleX,\n          scaleY = this.scaleY,\n          width = this.width,\n          height = this.height,\n          angle = this.angle,\n          editable = this.editable,\n          _chartOption = this.chartOption;\n      var zoom = this.canvas.getZoom();\n      var left = this.calcCoords().tl.x;\n      var top = this.calcCoords().tl.y;\n      var padLeft = (width * scaleX * zoom - width) / 2;\n      var padTop = (height * scaleY * zoom - height) / 2;\n      this.element = fabric[\"fabric\"].util.makeElement('div', {\n        id: \"\".concat(id, \"_container\"),\n        style: \"transform: rotate(\".concat(angle, \"deg) scale(\").concat(scaleX * zoom, \", \").concat(scaleY * zoom, \");\\n                        width: \").concat(width, \"px;\\n                        height: \").concat(height, \"px;\\n                        left: \").concat(left + padLeft, \"px;\\n                        top: \").concat(top + padTop, \"px;\\n                        position: absolute;\\n                        user-select: \").concat(editable ? 'none' : 'auto', \";\\n                        pointer-events: \").concat(editable ? 'none' : 'auto', \";\")\n      });\n      this.createChart(_chartOption);\n      var container = document.getElementById(this.container);\n      container.appendChild(this.element);\n    }\n  }\n});\n\nChart.fromObject = function (options, callback) {\n  return callback(new Chart(options.chartOption, options));\n}; // @ts-ignore\n\n\nwindow.fabric.Chart = Chart;\n/* harmony default export */ var objects_Chart = (Chart);\n// CONCATENATED MODULE: ./src/canvas/objects/CirclePort.ts\n\nvar CirclePort = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Circle, {\n  type: 'port',\n  superType: 'port',\n  initialize: function initialize(options) {\n    options = options || {};\n    this.callSuper('initialize', options);\n  },\n  toObject: function toObject() {\n    return fabric[\"fabric\"].util.object.extend(this.callSuper('toObject'), {\n      id: this.get('id'),\n      superType: this.get('superType'),\n      enabled: this.get('enabled'),\n      nodeId: this.get('nodeId')\n    });\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n  }\n});\n\nCirclePort.fromObject = function (options, callback) {\n  return callback(new CirclePort(options));\n}; // @ts-ignore\n\n\nwindow.fabric.CirclePort = CirclePort;\n/* harmony default export */ var objects_CirclePort = (CirclePort);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.date.to-string.js\nvar es_date_to_string = __webpack_require__(295);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js\nvar es_regexp_to_string = __webpack_require__(306);\n\n// CONCATENATED MODULE: ./src/canvas/objects/Cube.ts\n\n\n\n\n\n\n\nvar Cube = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Object, {\n  type: 'cube',\n  superType: 'shape',\n  initialize: function initialize(options) {\n    options = options || {};\n    this.callSuper('initialize', options);\n  },\n  shadeColor: function shadeColor(color, percent) {\n    color = color.substr(1);\n    var num = parseInt(color, 16);\n    var amt = Math.round(2.55 * percent);\n    var R = (num >> 16) + amt;\n    var G = (num >> 8 & 0x00ff) + amt;\n    var B = (num & 0x0000ff) + amt;\n    return '#' + (0x1000000 + (R < 255 ? R < 1 ? 0 : R : 255) * 0x10000 + (G < 255 ? G < 1 ? 0 : G : 255) * 0x100 + (B < 255 ? B < 1 ? 0 : B : 255)).toString(16).slice(1);\n  },\n  _render: function _render(ctx) {\n    var width = this.width,\n        height = this.height,\n        fill = this.fill;\n    var wx = width / 2;\n    var wy = width / 2;\n    var h = height / 2;\n    var x = 0;\n    var y = wy;\n    ctx.beginPath();\n    ctx.moveTo(x, y);\n    ctx.lineTo(x - wx, y - wx * 0.5);\n    ctx.lineTo(x - wx, y - h - wx * 0.5);\n    ctx.lineTo(x, y - h * 1);\n    ctx.closePath();\n    ctx.fillStyle = this.shadeColor(fill, -10);\n    ctx.strokeStyle = fill;\n    ctx.stroke();\n    ctx.fill();\n    ctx.beginPath();\n    ctx.moveTo(x, y);\n    ctx.lineTo(x + wy, y - wy * 0.5);\n    ctx.lineTo(x + wy, y - h - wy * 0.5);\n    ctx.lineTo(x, y - h * 1);\n    ctx.closePath();\n    ctx.fillStyle = this.shadeColor(fill, 10);\n    ctx.strokeStyle = this.shadeColor(fill, 50);\n    ctx.stroke();\n    ctx.fill();\n    ctx.beginPath();\n    ctx.moveTo(x, y - h);\n    ctx.lineTo(x - wx, y - h - wx * 0.5);\n    ctx.lineTo(x - wx + wy, y - h - (wx * 0.5 + wy * 0.5));\n    ctx.lineTo(x + wy, y - h - wy * 0.5);\n    ctx.closePath();\n    ctx.fillStyle = this.shadeColor(fill, 20);\n    ctx.strokeStyle = this.shadeColor(fill, 60);\n    ctx.stroke();\n    ctx.fill();\n    ctx.restore();\n  }\n});\n\nCube.fromObject = function (options, callback) {\n  return callback(new Cube(options));\n}; // @ts-ignore\n\n\nwindow.fabric.Cube = Cube;\n/* harmony default export */ var objects_Cube = (Cube);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(207);\n\n// CONCATENATED MODULE: ./src/canvas/objects/Port.ts\n\nvar Port = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Rect, {\n  type: 'port',\n  superType: 'port',\n  initialize: function initialize(options) {\n    options = options || {};\n    this.callSuper('initialize', options);\n  },\n  toObject: function toObject() {\n    return fabric[\"fabric\"].util.object.extend(this.callSuper('toObject'), {\n      id: this.get('id'),\n      superType: this.get('superType'),\n      enabled: this.get('enabled'),\n      nodeId: this.get('nodeId')\n    });\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n  }\n});\n\nPort.fromObject = function (options, callback) {\n  return callback(new Port(options));\n}; // @ts-ignore\n\n\nwindow.fabric.Port = Port;\n/* harmony default export */ var objects_Port = (Port);\n// CONCATENATED MODULE: ./src/canvas/objects/Node.ts\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Node_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction Node_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? Node_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : Node_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\n\n\n\nvar NODE_COLORS = {\n  TRIGGER: {\n    fill: '#48C9B0',\n    border: '#1ABC9C'\n  },\n  LOGIC: {\n    fill: '#AF7AC5',\n    border: '#9B59B6'\n  },\n  DATA: {\n    fill: '#5DADE2',\n    border: '#3498DB'\n  },\n  ACTION: {\n    fill: '#F5B041',\n    border: 'rgb(243, 156, 18)'\n  }\n};\nvar OUT_PORT_TYPE = {\n  SINGLE: 'SINGLE',\n  STATIC: 'STATIC',\n  DYNAMIC: 'DYNAMIC',\n  BROADCAST: 'BROADCAST',\n  NONE: 'NONE'\n};\nvar DESCRIPTIONS = {\n  script: esm_i18next.t('common.name'),\n  template: esm_i18next.t('common.name'),\n  json: esm_i18next.t('common.name'),\n  cron: esm_i18next.t('common.name')\n};\nvar getEllipsis = function getEllipsis(text, length) {\n  if (!length) {\n    return /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/.test(text) ? text.length > 8 ? text.substring(0, 8).concat('...') : text : text.length > 15 ? text.substring(0, 15).concat('...') : text;\n  }\n\n  return /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/.test(text) ? text.length > length / 2 ? text.substring(0, length / 2).concat('...') : text : text.length > length ? text.substring(0, length).concat('...') : text;\n};\nvar Node = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Group, {\n  type: 'node',\n  superType: 'node',\n  initialize: function initialize(options) {\n    options = options || {};\n    var icon = new fabric[\"fabric\"].IText(options.icon || \"\\uE174\", {\n      fontFamily: 'Font Awesome 5 Free',\n      fontWeight: 900,\n      fontSize: 20,\n      fill: 'rgba(255, 255, 255, 0.8)'\n    });\n    var name = 'Default Node';\n\n    if (options.name) {\n      name = getEllipsis(options.name, 18);\n    }\n\n    this.label = new fabric[\"fabric\"].Text(name || 'Default Node', {\n      fontSize: 16,\n      fontFamily: 'polestar',\n      fontWeight: 500,\n      fill: 'rgba(255, 255, 255, 0.8)'\n    });\n    var rect = new fabric[\"fabric\"].Rect({\n      rx: 10,\n      ry: 10,\n      width: 200,\n      height: 40,\n      fill: options.fill || 'rgba(0, 0, 0, 0.3)',\n      stroke: options.stroke || 'rgba(0, 0, 0, 0)',\n      strokeWidth: 2\n    });\n    this.errorFlag = new fabric[\"fabric\"].IText(\"\\uF071\", {\n      fontFamily: 'Font Awesome 5 Free',\n      fontWeight: 900,\n      fontSize: 14,\n      fill: 'rgba(255, 0, 0, 0.8)',\n      visible: options.errors\n    });\n    var node = [rect, icon, this.label, this.errorFlag];\n    var option = Object.assign({}, options, {\n      id: options.id || ulid(),\n      width: 200,\n      height: 40,\n      originX: 'left',\n      originY: 'top',\n      hasRotatingPoint: false,\n      hasControls: false\n    });\n    this.callSuper('initialize', node, option);\n    icon.set({\n      top: icon.top + 10,\n      left: icon.left + 10\n    });\n    this.label.set({\n      top: this.label.top + this.label.height / 2 + 4,\n      left: this.label.left + 35\n    });\n    this.errorFlag.set({\n      left: rect.left,\n      top: rect.top,\n      visible: options.errors\n    });\n  },\n  toObject: function toObject() {\n    return fabric[\"fabric\"].util.object.extend(this.callSuper('toObject'), {\n      id: this.get('id'),\n      name: this.get('name'),\n      icon: this.get('icon'),\n      description: this.get('description'),\n      superType: this.get('superType'),\n      configuration: this.get('configuration'),\n      nodeClazz: this.get('nodeClazz'),\n      descriptor: this.get('descriptor'),\n      borderColor: this.get('borderColor'),\n      borderScaleFactor: this.get('borderScaleFactor'),\n      dblclick: this.get('dblclick'),\n      deletable: this.get('deletable'),\n      cloneable: this.get('cloneable'),\n      fromPort: this.get('fromPort'),\n      toPort: this.get('toPort')\n    });\n  },\n  defaultPortOption: function defaultPortOption() {\n    var _ref = this.descriptor,\n        type = _ref.type;\n    return {\n      nodeId: this.id,\n      hasBorders: false,\n      hasControls: false,\n      hasRotatingPoint: false,\n      selectable: false,\n      originX: 'center',\n      originY: 'center',\n      lockScalingX: true,\n      lockScalingY: true,\n      superType: 'port',\n      originFill: 'rgba(0, 0, 0, 0.1)',\n      hoverFill: 'rgba(0, 0, 0, 0.1)',\n      selectFill: 'rgba(0, 0, 0, 0.1)',\n      fill: 'rgba(0, 0, 0, 0.1)',\n      hoverCursor: 'pointer',\n      strokeWidth: 2,\n      stroke: this.descriptor ? NODE_COLORS[type].border : 'rgba(0, 0, 0, 1)',\n      width: 10,\n      height: 10,\n      links: [],\n      enabled: true\n    };\n  },\n  toPortOption: function toPortOption() {\n    return Node_objectSpread({}, this.defaultPortOption());\n  },\n  fromPortOption: function fromPortOption() {\n    return Node_objectSpread(Node_objectSpread({}, this.defaultPortOption()), {}, {\n      angle: 45\n    });\n  },\n  createToPort: function createToPort(left, top) {\n    if (this.descriptor.inEnabled) {\n      this.toPort = new objects_Port(Node_objectSpread(Node_objectSpread({\n        id: 'defaultInPort',\n        type: 'toPort'\n      }, this.toPortOption()), {}, {\n        left: left,\n        top: top\n      }));\n    }\n\n    return this.toPort;\n  },\n  createFromPort: function createFromPort(left, top) {\n    if (this.descriptor.outPortType === OUT_PORT_TYPE.BROADCAST) {\n      this.fromPort = this.broadcastPort(Node_objectSpread(Node_objectSpread({}, this.fromPortOption()), {}, {\n        left: left,\n        top: top\n      }));\n    } else if (this.descriptor.outPortType === OUT_PORT_TYPE.STATIC) {\n      this.fromPort = this.staticPort(Node_objectSpread(Node_objectSpread({}, this.fromPortOption()), {}, {\n        left: left,\n        top: top\n      }));\n    } else if (this.descriptor.outPortType === OUT_PORT_TYPE.DYNAMIC) {\n      this.fromPort = this.dynamicPort(Node_objectSpread(Node_objectSpread({}, this.fromPortOption()), {}, {\n        left: left,\n        top: top\n      }));\n    } else if (this.descriptor.outPortType === OUT_PORT_TYPE.NONE) {\n      this.fromPort = [];\n    } else {\n      this.fromPort = this.singlePort(Node_objectSpread(Node_objectSpread({}, this.fromPortOption()), {}, {\n        left: left,\n        top: top\n      }));\n    }\n\n    return this.fromPort;\n  },\n  singlePort: function singlePort(portOption) {\n    var fromPort = new objects_Port(Node_objectSpread({\n      id: 'defaultFromPort',\n      type: 'fromPort'\n    }, portOption));\n    return [fromPort];\n  },\n  staticPort: function staticPort(portOption) {\n    return this.descriptor.outPorts.map(function (outPort, i) {\n      return new objects_Port(Node_objectSpread(Node_objectSpread({\n        id: outPort,\n        type: 'fromPort'\n      }, portOption), {}, {\n        left: i === 0 ? portOption.left - 20 : portOption.left + 20,\n        top: portOption.top,\n        leftDiff: i === 0 ? -20 : 20,\n        fill: i === 0 ? 'rgba(0, 255, 0, 0.3)' : 'rgba(255, 0, 0, 0.3)',\n        originFill: i === 0 ? 'rgba(0, 255, 0, 0.3)' : 'rgba(255, 0, 0, 0.3)',\n        hoverFill: i === 0 ? 'rgba(0, 255, 0, 1)' : 'rgba(255, 0, 0, 1)'\n      }));\n    });\n  },\n  dynamicPort: function dynamicPort(_portOption) {\n    return [];\n  },\n  broadcastPort: function broadcastPort(portOption) {\n    return this.singlePort(portOption);\n  },\n  setErrors: function setErrors(errors) {\n    this.set({\n      errors: errors\n    });\n\n    if (errors) {\n      this.errorFlag.set({\n        visible: true\n      });\n    } else {\n      this.errorFlag.set({\n        visible: false\n      });\n    }\n  },\n  duplicate: function duplicate() {\n    var options = this.toObject();\n    options.id = ulid();\n    options.name = \"\".concat(options.name, \"_clone\");\n    return new Node(options);\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n  }\n});\n\nNode.fromObject = function (options, callback) {\n  return callback(new Node(options));\n}; // @ts-ignore\n\n\nwindow.fabric.FromPort = objects_Port; // @ts-ignore\n\nwindow.fabric.ToPort = objects_Port; // @ts-ignore\n\nwindow.fabric.Node = Node;\n/* harmony default export */ var objects_Node = (Node);\n// CONCATENATED MODULE: ./src/canvas/objects/Link.ts\n\n\n\n\n\n\n\n\nvar Link = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Line, {\n  type: 'link',\n  superType: 'link',\n  initialize: function initialize(fromNode, fromPort, toNode, toPort, options) {\n    options = options || {};\n    var coords = [fromPort.left, fromPort.top, toPort.left, toPort.top];\n    Object.assign(options, {\n      strokeWidth: 4,\n      id: options.id || ulid(),\n      originX: 'center',\n      originY: 'center',\n      lockScalingX: true,\n      lockScalingY: true,\n      lockRotation: true,\n      hasRotatingPoint: false,\n      hasControls: false,\n      hasBorders: false,\n      perPixelTargetFind: true,\n      lockMovementX: true,\n      lockMovementY: true,\n      selectable: false,\n      fromNode: fromNode,\n      fromPort: fromPort,\n      toNode: toNode,\n      toPort: toPort,\n      hoverCursor: 'pointer'\n    });\n    this.callSuper('initialize', coords, options);\n  },\n  setPort: function setPort(fromNode, fromPort, _toNode, toPort) {\n    if (fromNode.type === 'BroadcastNode') {\n      fromPort = fromNode.fromPort[0];\n    }\n\n    fromPort.links.push(this);\n    toPort.links.push(this);\n    this.setPortEnabled(fromNode, fromPort, false);\n  },\n  setPortEnabled: function setPortEnabled(node, port, enabled) {\n    if (node.descriptor.outPortType !== OUT_PORT_TYPE.BROADCAST) {\n      port.set({\n        enabled: enabled,\n        fill: enabled ? port.originFill : port.selectFill\n      });\n    } else {\n      if (node.toPort.id === port.id) {\n        return;\n      }\n\n      port.links.forEach(function (link, index) {\n        link.set({\n          fromPort: port,\n          fromPortIndex: index\n        });\n      });\n      node.set({\n        configuration: {\n          outputCount: port.links.length\n        }\n      });\n    }\n  },\n  toObject: function toObject() {\n    return fabric[\"fabric\"].util.object.extend(this.callSuper('toObject'), {\n      id: this.get('id'),\n      name: this.get('name'),\n      superType: this.get('superType'),\n      configuration: this.get('configuration'),\n      fromNode: this.get('fromNode'),\n      fromPort: this.get('fromPort'),\n      toNode: this.get('toNode'),\n      toPort: this.get('toPort')\n    });\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n    ctx.save();\n    var xDiff = this.x2 - this.x1;\n    var yDiff = this.y2 - this.y1;\n    var angle = Math.atan2(yDiff, xDiff);\n    ctx.translate((this.x2 - this.x1) / 2, (this.y2 - this.y1) / 2);\n    ctx.rotate(angle);\n    ctx.beginPath();\n\n    if (this.arrow) {\n      // Move 5px in front of line to start the arrow so it does not have the square line end showing in front (0,0)\n      ctx.moveTo(5, 0);\n      ctx.lineTo(-5, 5);\n      ctx.lineTo(-5, -5);\n    }\n\n    ctx.closePath();\n    ctx.lineWidth = this.strokeWidth;\n    ctx.fillStyle = this.stroke;\n    ctx.fill();\n    ctx.restore();\n  }\n});\n\nLink.fromObject = function (options, callback) {\n  var fromNode = options.fromNode,\n      fromPort = options.fromPort,\n      toNode = options.toNode,\n      toPort = options.toPort;\n  return callback(new Link(fromNode, fromPort, toNode, toPort, options));\n}; // @ts-ignore\n\n\nwindow.fabric.Link = Link;\n/* harmony default export */ var objects_Link = (Link);\n// CONCATENATED MODULE: ./src/canvas/objects/CurvedLink.ts\n\n\n\nvar CurvedLink = fabric[\"fabric\"].util.createClass(objects_Link, {\n  type: 'curvedLink',\n  superType: 'link',\n  initialize: function initialize(fromNode, fromPort, toNode, toPort, options) {\n    options = options || {};\n    this.callSuper('initialize', fromNode, fromPort, toNode, toPort, options);\n  },\n  _render: function _render(ctx) {\n    // Drawing curved link\n    var x1 = this.x1,\n        y1 = this.y1,\n        x2 = this.x2,\n        y2 = this.y2;\n    ctx.lineWidth = this.strokeWidth;\n    ctx.strokeStyle = this.stroke;\n    var fp = {\n      x: (x1 - x2) / 2,\n      y: (y1 - y2) / 2\n    };\n    var sp = {\n      x: (x2 - x1) / 2,\n      y: (y2 - y1) / 2\n    };\n    ctx.beginPath();\n    ctx.moveTo(fp.x, fp.y);\n    ctx.bezierCurveTo(fp.x, sp.y, sp.x, fp.y, sp.x, sp.y);\n    ctx.stroke();\n    ctx.save();\n    var xDiff = x2 - x1;\n    var yDiff = y2 - y1;\n    var angle = Math.atan2(yDiff, xDiff);\n    ctx.translate((x2 - x1) / 2, (y2 - y1) / 2);\n    ctx.rotate(angle >= 0 ? 1.57 : -1.57);\n    ctx.beginPath();\n\n    if (this.arrow) {\n      // Move 5px in front of line to start the arrow so it does not have the square line end showing in front (0,0)\n      ctx.moveTo(5, 0);\n      ctx.lineTo(-5, 5);\n      ctx.lineTo(-5, -5);\n    }\n\n    ctx.closePath();\n    ctx.fillStyle = this.stroke;\n    ctx.fill();\n    ctx.restore();\n  }\n});\n\nCurvedLink.fromObject = function (options, callback) {\n  var fromNode = options.fromNode,\n      fromPort = options.fromPort,\n      toNode = options.toNode,\n      toPort = options.toPort;\n  return callback(new CurvedLink(fromNode, fromPort, toNode, toPort, options));\n}; // @ts-ignore\n\n\nwindow.fabric.CurvedLink = CurvedLink;\n/* harmony default export */ var objects_CurvedLink = (CurvedLink);\n// CONCATENATED MODULE: ./src/canvas/objects/Element.ts\n\n\n\nvar initialCode = {\n  html: '',\n  css: '',\n  js: ''\n};\nvar Element_Element = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Rect, {\n  type: 'element',\n  superType: 'element',\n  hasRotatingPoint: false,\n  initialize: function initialize() {\n    var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialCode;\n    var options = arguments.length > 1 ? arguments[1] : undefined;\n    options = options || {};\n    this.callSuper('initialize', options);\n    this.set({\n      code: code,\n      fill: 'rgba(255, 255, 255, 0)',\n      stroke: 'rgba(255, 255, 255, 0)'\n    });\n  },\n  setSource: function setSource(source) {\n    this.setCode(source);\n  },\n  setCode: function setCode() {\n    var code = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialCode;\n    this.set({\n      code: code\n    });\n    var css = code.css,\n        js = code.js,\n        html = code.html;\n    this.styleEl.innerHTML = css;\n    this.scriptEl.innerHTML = js;\n    this.element.innerHTML = html;\n  },\n  toObject: function toObject(propertiesToInclude) {\n    return ObjectUtil_toObject(this, propertiesToInclude, {\n      code: this.get('code'),\n      container: this.get('container'),\n      editable: this.get('editable')\n    });\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n\n    if (!this.element) {\n      var id = this.id,\n          scaleX = this.scaleX,\n          scaleY = this.scaleY,\n          width = this.width,\n          height = this.height,\n          angle = this.angle,\n          editable = this.editable,\n          _code = this.code;\n      var zoom = this.canvas.getZoom();\n      var left = this.calcCoords().tl.x;\n      var top = this.calcCoords().tl.y;\n      var padLeft = (width * scaleX * zoom - width) / 2;\n      var padTop = (height * scaleY * zoom - height) / 2;\n      this.element = fabric[\"fabric\"].util.makeElement('div', {\n        id: \"\".concat(id, \"_container\"),\n        style: \"transform: rotate(\".concat(angle, \"deg) scale(\").concat(scaleX * zoom, \", \").concat(scaleY * zoom, \");\\n                        width: \").concat(width, \"px;\\n                        height: \").concat(height, \"px;\\n                        left: \").concat(left + padLeft, \"px;\\n                        top: \").concat(top + padTop, \"px;\\n                        position: absolute;\\n                        user-select: \").concat(editable ? 'none' : 'auto', \";\\n                        pointer-events: \").concat(editable ? 'none' : 'auto', \";\")\n      });\n      var html = _code.html,\n          css = _code.css,\n          js = _code.js;\n      this.styleEl = document.createElement('style');\n      this.styleEl.id = \"\".concat(id, \"_style\");\n      this.styleEl.type = 'text/css';\n      this.styleEl.innerHTML = css;\n      document.head.appendChild(this.styleEl);\n      this.scriptEl = document.createElement('script');\n      this.scriptEl.id = \"\".concat(id, \"_script\");\n      this.scriptEl.type = 'text/javascript';\n      this.scriptEl.innerHTML = js;\n      document.head.appendChild(this.scriptEl);\n      var container = document.getElementById(this.container);\n      container.appendChild(this.element);\n      this.element.innerHTML = html;\n    }\n  }\n});\n\nElement_Element.fromObject = function (options, callback) {\n  return callback(new Element_Element(options.code, options));\n}; // @ts-ignore\n\n\nwindow.fabric.Element = Element_Element;\n/* harmony default export */ var objects_Element = (Element_Element);\n// EXTERNAL MODULE: ./node_modules/gifler/gifler.js\nvar gifler = __webpack_require__(1295);\n\n// CONCATENATED MODULE: ./src/canvas/objects/Gif.ts\n\n\nvar Gif = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Object, {\n  type: 'gif',\n  superType: 'image',\n  gifCanvas: null,\n  isStarted: false,\n  initialize: function initialize(options) {\n    options = options || {};\n    this.callSuper('initialize', options);\n    this.gifCanvas = document.createElement('canvas');\n  },\n  drawFrame: function drawFrame(ctx, frame) {\n    // update canvas size\n    this.gifCanvas.width = frame.width;\n    this.gifCanvas.height = frame.height; // update canvas that we are using for fabric.js\n\n    ctx.drawImage(frame.buffer, -frame.width / 2, -frame.height / 2, frame.width, frame.height);\n  },\n  _render: function _render(ctx) {\n    var _this = this;\n\n    this.callSuper('_render', ctx);\n\n    if (!this.isStarted) {\n      this.isStarted = true;\n      window // @ts-ignore\n      .gifler('./images/sample/earth.gif').frames(this.gifCanvas, function (_c, frame) {\n        _this.isStarted = true;\n\n        _this.drawFrame(ctx, frame);\n      });\n    }\n  }\n});\n\nGif.fromObject = function (options, callback) {\n  return callback(new Gif(options));\n}; // @ts-ignore\n\n\nwindow.fabric.Gif = Gif;\n/* harmony default export */ var objects_Gif = (Gif);\n// CONCATENATED MODULE: ./src/canvas/objects/Iframe.ts\n\n\n\nvar Iframe = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Rect, {\n  type: 'iframe',\n  superType: 'element',\n  hasRotatingPoint: false,\n  initialize: function initialize() {\n    var src = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    var options = arguments.length > 1 ? arguments[1] : undefined;\n    options = options || {};\n    this.callSuper('initialize', options);\n    this.set({\n      src: src,\n      fill: 'rgba(255, 255, 255, 0)',\n      stroke: 'rgba(255, 255, 255, 0)'\n    });\n  },\n  setSource: function setSource(source) {\n    this.setSrc(source);\n  },\n  setSrc: function setSrc(src) {\n    this.set({\n      src: src\n    });\n    this.iframeElement.src = src;\n  },\n  toObject: function toObject(propertiesToInclude) {\n    return ObjectUtil_toObject(this, propertiesToInclude, {\n      src: this.get('src'),\n      container: this.get('container'),\n      editable: this.get('editable')\n    });\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n\n    if (!this.element) {\n      var id = this.id,\n          scaleX = this.scaleX,\n          scaleY = this.scaleY,\n          width = this.width,\n          height = this.height,\n          angle = this.angle,\n          editable = this.editable,\n          _src = this.src;\n      var zoom = this.canvas.getZoom();\n      var left = this.calcCoords().tl.x;\n      var top = this.calcCoords().tl.y;\n      var padLeft = (width * scaleX * zoom - width) / 2;\n      var padTop = (height * scaleY * zoom - height) / 2;\n      this.iframeElement = fabric[\"fabric\"].util.makeElement('iframe', {\n        id: id,\n        src: _src,\n        width: '100%',\n        height: '100%'\n      });\n      this.element = fabric[\"fabric\"].util.wrapElement(this.iframeElement, 'div', {\n        id: \"\".concat(id, \"_container\"),\n        style: \"transform: rotate(\".concat(angle, \"deg) scale(\").concat(scaleX * zoom, \", \").concat(scaleY * zoom, \");\\n                        width: \").concat(width, \"px;\\n                        height: \").concat(height, \"px;\\n                        left: \").concat(left + padLeft, \"px;\\n                        top: \").concat(top + padTop, \"px;\\n                        position: absolute;\\n                        user-select: \").concat(editable ? 'none' : 'auto', \";\\n                        pointer-events: \").concat(editable ? 'none' : 'auto', \";\")\n      });\n      var container = document.getElementById(this.container);\n      container.appendChild(this.element);\n    }\n  }\n});\n\nIframe.fromObject = function (options, callback) {\n  return callback(new Iframe(options.src, options));\n}; // @ts-ignore\n\n\nwindow.fabric.Iframe = Iframe;\n/* harmony default export */ var objects_Iframe = (Iframe);\n// CONCATENATED MODULE: ./src/canvas/objects/Line.ts\n\nvar Line_Line = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Line, {\n  type: 'line',\n  superType: 'drawing',\n  initialize: function initialize(points, options) {\n    if (!points) {\n      var _options = options,\n          x1 = _options.x1,\n          x2 = _options.x2,\n          y1 = _options.y1,\n          y2 = _options.y2;\n      points = [x1, y1, x2, y2];\n    }\n\n    options = options || {};\n    this.callSuper('initialize', points, options);\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n  }\n});\n\nLine_Line.fromObject = function (options, callback) {\n  var x1 = options.x1,\n      x2 = options.x2,\n      y1 = options.y1,\n      y2 = options.y2;\n  return callback(new Line_Line([x1, y1, x2, y2], options));\n};\n\nwindow.fabric.Line = Line_Line;\n/* harmony default export */ var objects_Line = (Line_Line);\n// CONCATENATED MODULE: ./src/canvas/objects/OrthogonalLink.ts\n\n\n\nvar OrthogonalLink = fabric[\"fabric\"].util.createClass(objects_Link, {\n  type: 'OrthogonalLink',\n  superType: 'link',\n  initialize: function initialize(fromNode, fromPort, toNode, toPort, options) {\n    options = options || {};\n    this.callSuper('initialize', fromNode, fromPort, toNode, toPort, options);\n  },\n  _render: function _render(ctx) {\n    // Drawing orthogonal link\n    var x1 = this.x1,\n        y1 = this.y1,\n        x2 = this.x2,\n        y2 = this.y2;\n    ctx.lineWidth = this.strokeWidth;\n    ctx.strokeStyle = this.stroke;\n    var fp = {\n      x: (x1 - x2) / 2,\n      y: (y1 - y2) / 2\n    };\n    var sp = {\n      x: (x2 - x1) / 2,\n      y: (y2 - y1) / 2\n    };\n    ctx.lineJoin = 'round';\n    ctx.beginPath();\n    ctx.moveTo(fp.x, fp.y);\n    ctx.lineTo(fp.x, sp.y / 2);\n    ctx.lineTo(sp.x, sp.y / 2);\n    ctx.lineTo(sp.x, sp.y);\n    ctx.stroke();\n    ctx.save();\n    var xDiff = this.x2 - this.x1;\n    var yDiff = this.y2 - this.y1;\n    var angle = Math.atan2(yDiff, xDiff);\n    ctx.translate((this.x2 - this.x1) / 2, (this.y2 - this.y1) / 2);\n    ctx.rotate(angle >= 0 ? 1.57 : -1.57);\n    ctx.beginPath();\n\n    if (this.arrow) {\n      // Move 5px in front of line to start the arrow so it does not have the square line end showing in front (0,0)\n      ctx.moveTo(5, 0);\n      ctx.lineTo(-5, 5);\n      ctx.lineTo(-5, -5);\n    }\n\n    ctx.closePath();\n    ctx.fillStyle = this.stroke;\n    ctx.fill();\n    ctx.restore();\n  }\n});\n\nOrthogonalLink.fromObject = function (options, callback) {\n  var fromNode = options.fromNode,\n      fromPort = options.fromPort,\n      toNode = options.toNode,\n      toPort = options.toPort;\n  return callback(new OrthogonalLink(fromNode, fromPort, toNode, toPort, options));\n}; // @ts-ignore\n\n\nwindow.fabric.OrthogonalLink = OrthogonalLink;\n/* harmony default export */ var objects_OrthogonalLink = (OrthogonalLink);\n// CONCATENATED MODULE: ./src/canvas/objects/Svg.ts\n\n\nfunction Svg_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction Svg_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? Svg_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : Svg_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Svg = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Group, {\n  type: 'svg',\n  initialize: function initialize() {\n    var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    this.callSuper('initialize', [], option);\n    this.loadSvg(option);\n  },\n  addSvgElements: function addSvgElements(objects, options, path) {\n    var _this = this;\n\n    var createdObj = fabric[\"fabric\"].util.groupSVGElements(objects, options, path);\n    this.set(options);\n\n    if (createdObj.getObjects) {\n      createdObj.getObjects().forEach(function (obj) {\n        _this.add(obj);\n\n        if (options.fill) {\n          obj.set('fill', options.fill);\n        }\n\n        if (options.stroke) {\n          obj.set('stroke', options.stroke);\n        }\n      });\n    } else {\n      var _this$_objects;\n\n      createdObj.set({\n        originX: 'center',\n        originY: 'center'\n      });\n\n      if (options.fill) {\n        createdObj.set({\n          fill: options.fill\n        });\n      }\n\n      if (options.stroke) {\n        createdObj.set({\n          stroke: options.stroke\n        });\n      }\n\n      if ((_this$_objects = this._objects) !== null && _this$_objects !== void 0 && _this$_objects.length) {\n        this._objects.forEach(function (obj) {\n          return _this.remove(obj);\n        });\n      }\n\n      this.add(createdObj);\n    }\n\n    this.set({\n      fill: options.fill || 'rgba(0, 0, 0, 1)',\n      stroke: options.stroke || 'rgba(255, 255, 255, 0)'\n    });\n    this.setCoords();\n\n    if (this.canvas) {\n      this.canvas.requestRenderAll();\n    }\n\n    return this;\n  },\n  loadSvg: function loadSvg(option) {\n    var _this2 = this;\n\n    var svg = option.svg,\n        loadType = option.loadType,\n        fill = option.fill,\n        stroke = option.stroke;\n    return new Promise(function (resolve) {\n      if (loadType === 'svg') {\n        fabric[\"fabric\"].loadSVGFromString(svg, function (objects, options) {\n          resolve(_this2.addSvgElements(objects, Svg_objectSpread(Svg_objectSpread({}, options), {}, {\n            fill: fill,\n            stroke: stroke\n          }), svg));\n        });\n      } else {\n        fabric[\"fabric\"].loadSVGFromURL(svg, function (objects, options) {\n          resolve(_this2.addSvgElements(objects, Svg_objectSpread(Svg_objectSpread({}, options), {}, {\n            fill: fill,\n            stroke: stroke\n          }), svg));\n        });\n      }\n    });\n  },\n  setFill: function setFill(value) {\n    this.getObjects().forEach(function (obj) {\n      return obj.set('fill', value);\n    });\n    return this;\n  },\n  setStroke: function setStroke(value) {\n    this.getObjects().forEach(function (obj) {\n      return obj.set('stroke', value);\n    });\n    return this;\n  },\n  toObject: function toObject(propertiesToInclude) {\n    return ObjectUtil_toObject(this, propertiesToInclude, {\n      svg: this.get('svg'),\n      loadType: this.get('loadType')\n    });\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n  }\n});\n\nSvg.fromObject = function (option, callback) {\n  return callback(new Svg(option));\n}; // @ts-ignore\n\n\nwindow.fabric.Svg = Svg;\n/* harmony default export */ var objects_Svg = (Svg);\n// EXTERNAL MODULE: ./node_modules/mediaelement/full.js\nvar full = __webpack_require__(1296);\n\n// EXTERNAL MODULE: ./node_modules/mediaelement/build/mediaelementplayer.min.css\nvar mediaelementplayer_min = __webpack_require__(1300);\n\n// CONCATENATED MODULE: ./src/canvas/objects/Video.ts\n\n\n\n\n\nvar Video = fabric[\"fabric\"].util.createClass(fabric[\"fabric\"].Rect, {\n  type: 'video',\n  superType: 'element',\n  hasRotatingPoint: false,\n  initialize: function initialize(source, options) {\n    options = options || {};\n    this.callSuper('initialize', options);\n\n    if (source instanceof File) {\n      this.set({\n        file: source,\n        src: null\n      });\n    } else {\n      this.set({\n        file: null,\n        src: source\n      });\n    }\n\n    this.set({\n      fill: 'rgba(255, 255, 255, 0)',\n      stroke: 'rgba(255, 255, 255, 0)'\n    });\n  },\n  setSource: function setSource(source) {\n    if (source instanceof File) {\n      this.setFile(source);\n    } else {\n      this.setSrc(source);\n    }\n  },\n  setFile: function setFile(file) {\n    var _this = this;\n\n    this.set({\n      file: file,\n      src: null\n    });\n    var reader = new FileReader();\n\n    reader.onload = function () {\n      _this.player.setSrc(reader.result);\n    };\n\n    reader.readAsDataURL(file);\n  },\n  setSrc: function setSrc(src) {\n    this.set({\n      file: null,\n      src: src\n    });\n    this.player.setSrc(src);\n  },\n  toObject: function toObject(propertiesToInclude) {\n    return ObjectUtil_toObject(this, propertiesToInclude, {\n      src: this.get('src'),\n      file: this.get('file'),\n      container: this.get('container'),\n      editable: this.get('editable')\n    });\n  },\n  _render: function _render(ctx) {\n    this.callSuper('_render', ctx);\n\n    if (!this.element) {\n      var id = this.id,\n          scaleX = this.scaleX,\n          scaleY = this.scaleY,\n          width = this.width,\n          height = this.height,\n          angle = this.angle,\n          editable = this.editable,\n          _src = this.src,\n          _file = this.file,\n          autoplay = this.autoplay,\n          muted = this.muted,\n          loop = this.loop;\n      var zoom = this.canvas.getZoom();\n      var left = this.calcCoords().tl.x;\n      var top = this.calcCoords().tl.y;\n      var padLeft = (width * scaleX * zoom - width) / 2;\n      var padTop = (height * scaleY * zoom - height) / 2;\n      this.videoElement = fabric[\"fabric\"].util.makeElement('video', {\n        id: id,\n        autoplay: editable ? false : autoplay,\n        muted: editable ? false : muted,\n        loop: editable ? false : loop,\n        preload: 'none',\n        controls: false\n      });\n      this.element = fabric[\"fabric\"].util.wrapElement(this.videoElement, 'div', {\n        id: \"\".concat(id, \"_container\"),\n        style: \"transform: rotate(\".concat(angle, \"deg) scale(\").concat(scaleX * zoom, \", \").concat(scaleY * zoom, \");\\n                        width: \").concat(width, \"px;\\n                        height: \").concat(height, \"px;\\n                        left: \").concat(left + padLeft, \"px;\\n                        top: \").concat(top + padTop, \"px;\\n                        position: absolute;\\n                        user-select: \").concat(editable ? 'none' : 'auto', \";\\n                        pointer-events: \").concat(editable ? 'none' : 'auto', \";\")\n      });\n      var container = document.getElementById(this.container);\n      container.appendChild(this.element);\n      this.player = new MediaElementPlayer(id, {\n        pauseOtherPlayers: false,\n        videoWidth: '100%',\n        videoHeight: '100%',\n        success: function success(_mediaeElement, _originalNode, instance) {\n          if (editable) {\n            instance.pause();\n          }\n        }\n      });\n      this.player.setPlayerSize(width, height);\n\n      if (_src) {\n        this.setSrc(_src);\n      } else if (_file) {\n        this.setFile(_file);\n      }\n    }\n  }\n});\n\nVideo.fromObject = function (options, callback) {\n  return callback(new Video(options.src || options.file, options));\n}; // @ts-ignore\n\n\nwindow.fabric.Video = Video;\n/* harmony default export */ var objects_Video = (Video);\n// CONCATENATED MODULE: ./src/canvas/objects/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// CONCATENATED MODULE: ./src/canvas/handlers/LinkHandler.ts\n\n\n\n\n\n\n\n\n\n\n\n\nfunction LinkHandler_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction LinkHandler_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? LinkHandler_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : LinkHandler_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\n/**\n * Link Handler Class\n * @author salgum1114\n * @class LinkHandler\n */\nvar LinkHandler_LinkHandler = /*#__PURE__*/createClass_default()(function LinkHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, LinkHandler);\n\n  this.port = null;\n  this.handler = void 0;\n\n  this.init = function (port) {\n    if (_this.isDrawing()) {\n      return;\n    }\n\n    if (_this.isConnected(port)) {\n      return;\n    }\n\n    _this.port = port;\n\n    _this.port.set({\n      fill: port.selectFill\n    });\n\n    _this.handler.interactionHandler.linking();\n\n    var left = port.left,\n        top = port.top,\n        nodeId = port.nodeId,\n        id = port.id;\n    var fromPort = {\n      left: left,\n      top: top,\n      id: id\n    };\n    var toPort = {\n      left: left,\n      top: top\n    };\n    var fromNode = _this.handler.objectMap[nodeId];\n    _this.handler.activeLine = new objects_CurvedLink(fromNode, fromPort, null, toPort, {\n      strokeWidth: 4,\n      fill: '#999999',\n      stroke: '#999999',\n      \"class\": 'line',\n      originX: 'center',\n      originY: 'center',\n      selectable: false,\n      hasBorders: false,\n      hasControls: false,\n      evented: false\n    });\n\n    _this.handler.canvas.add(_this.handler.activeLine);\n  };\n\n  this.finish = function (link) {\n    if (!link) {\n      _this.port.set({\n        fill: _this.port.originFill\n      });\n    }\n\n    _this.handler.interactionHandler.selection();\n\n    _this.handler.canvas.remove(_this.handler.activeLine);\n\n    _this.handler.activeLine = null;\n\n    _this.handler.canvas.renderAll();\n  };\n\n  this.generate = function (port) {\n    if (!port) {\n      warning_default()(!port, 'Does not exist target port.');\n      return;\n    }\n\n    if (_this.isDuplicate(port)) {\n      return;\n    }\n\n    if (_this.isSameNode(port)) {\n      return;\n    }\n\n    var link = {\n      type: 'curvedLink',\n      fromNodeId: _this.handler.activeLine.fromNode.id,\n      fromPortId: _this.handler.activeLine.fromPort.id,\n      toNodeId: port.nodeId,\n      toPortId: port.id\n    };\n\n    var createdLink = _this.create(link);\n\n    _this.finish(createdLink); // TODO...\n    // Save transactions unconditionally\n\n\n    if (!_this.handler.transactionHandler.active) {\n      _this.handler.transactionHandler.save('add');\n    }\n  };\n\n  this.create = function (link) {\n    var loaded = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    var fromNode = _this.handler.objectMap[link.fromNodeId];\n    var fromPort = fromNode.fromPort.filter(function (port) {\n      return port.id === link.fromPortId || !port.id;\n    })[0];\n    var toNode = _this.handler.objectMap[link.toNodeId];\n    var toPort = toNode.toPort;\n\n    var createdObj = _this.handler.fabricObjects[link.type].create(fromNode, fromPort, toNode, toPort, LinkHandler_objectSpread({}, link));\n\n    _this.handler.canvas.add(createdObj);\n\n    _this.handler.objects = _this.handler.getObjects();\n    var editable = _this.handler.editable;\n\n    if (_this.handler.onAdd && editable && !loaded) {\n      _this.handler.onAdd(createdObj);\n    }\n\n    _this.handler.canvas.renderAll();\n\n    createdObj.setPort(fromNode, fromPort, toNode, toPort);\n\n    _this.handler.portHandler.setCoords(fromNode);\n\n    _this.handler.portHandler.setCoords(toNode);\n\n    _this.handler.canvas.requestRenderAll();\n\n    return createdObj;\n  };\n\n  this.setCoords = function (x1, y1, x2, y2, link) {\n    link.set({\n      x1: x1,\n      y1: y1,\n      x2: x2,\n      y2: y2\n    });\n    link.setCoords();\n  };\n\n  this.removeFrom = function (link) {\n    if (link.fromPort) {\n      var index = -1;\n\n      if (link.fromPort.links.length) {\n        link.fromPort.links.some(function (portLink, i) {\n          if (link.id === portLink.id) {\n            index = i;\n            return true;\n          }\n\n          return false;\n        });\n\n        if (index > -1) {\n          link.fromPort.links.splice(index, 1);\n        }\n      }\n\n      link.setPortEnabled(link.fromNode, link.fromPort, true);\n    }\n  };\n\n  this.removeTo = function (link) {\n    if (link.toNode.toPort.links.length) {\n      var index = -1;\n      link.toNode.toPort.links.some(function (portLink, i) {\n        if (link.id === portLink.id) {\n          index = i;\n          return true;\n        }\n\n        return false;\n      });\n\n      if (index > -1) {\n        link.toNode.toPort.links.splice(index, 1);\n      }\n\n      link.setPortEnabled(link.toNode, link.toNode.toPort, true);\n    }\n  };\n\n  this.removeAll = function (link) {\n    _this.removeFrom(link);\n\n    _this.removeTo(link);\n  };\n\n  this.remove = function (link, type) {\n    if (type === 'from') {\n      _this.removeFrom(link);\n    } else if (type === 'to') {\n      _this.removeTo(link);\n    } else {\n      _this.removeAll(link);\n    }\n\n    _this.handler.canvas.remove(link);\n\n    _this.handler.objects = _this.handler.getObjects();\n  };\n\n  this.isConnected = function (port) {\n    warning_default()(port.enabled, 'A connected node already exists.');\n    return !port.enabled;\n  };\n\n  this.isSameNode = function (port) {\n    var validate = port.nodeId === _this.handler.activeLine.fromNode.id;\n    warning_default()(!validate, 'Cannot select the same node.');\n    return validate;\n  };\n\n  this.isDuplicate = function (port) {\n    var validate = port.links.some(function (link) {\n      return link.fromNode.id === _this.handler.activeLine.fromNode.id;\n    });\n    warning_default()(!validate, 'Duplicate connections cannot be made.');\n    return validate;\n  };\n\n  this.isDrawing = function () {\n    var validate = _this.handler.interactionMode === 'link' && _this.handler.activeLine;\n    warning_default()(!validate, 'Already drawing links.');\n    return validate;\n  };\n\n  this.handler = handler;\n}\n/**\n * On source port click, start link\n * @param {PortObject} port\n */\n);\n\n/* harmony default export */ var handlers_LinkHandler = (LinkHandler_LinkHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/NodeHandler.ts\n\n\n\n\n\n\n\n\n\n\nvar NodeHandler_NodeHandler = /*#__PURE__*/createClass_default()(function NodeHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, NodeHandler);\n\n  this.handler = void 0;\n\n  this.getNodePath = function (target) {\n    var nodes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n    var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'init';\n\n    if (target) {\n      if (direction === 'to' || direction === 'init') {\n        if (target.toPort) {\n          target.toPort.links.forEach(function (link) {\n            if (link.fromNode) {\n              nodes.push(link.fromNode);\n\n              _this.getNodePath(link.fromNode, nodes, 'to');\n            }\n          });\n        }\n\n        if (direction === 'init') {\n          nodes.push(target);\n        }\n      }\n\n      if (direction === 'from' || direction === 'init') {\n        target.fromPort.forEach(function (port) {\n          port.links.forEach(function (link) {\n            if (link.toNode) {\n              nodes.push(link.toNode);\n\n              _this.getNodePath(link.toNode, nodes, 'from');\n            }\n          });\n        });\n      }\n    }\n  };\n\n  this.selectByPath = function (path) {\n    if (!path || !path.length) {\n      return;\n    }\n\n    var targetObjects = _this.handler.objects.filter(function (object) {\n      return path.some(function (id) {\n        return id === object.id;\n      });\n    });\n\n    var nonTargetObjects = _this.handler.objects.filter(function (object) {\n      return path.some(function (id) {\n        return id !== object.id;\n      });\n    });\n\n    nonTargetObjects.forEach(function (object) {\n      if (object.superType === 'link') {\n        var _ref = object,\n            fromNode = _ref.fromNode,\n            toNode = _ref.toNode;\n\n        if (fromNode && toNode) {\n          var fromIndex = targetObjects.findIndex(function (obj) {\n            return obj.id === fromNode.id;\n          });\n          var toIndex = targetObjects.findIndex(function (obj) {\n            return obj.id === toNode.id;\n          });\n\n          if (fromIndex >= 0 && targetObjects[fromIndex] && toIndex >= 0 && targetObjects[toIndex]) {\n            object.set({\n              opacity: 1,\n              shadow: {\n                color: object.stroke\n              }\n            });\n\n            _this.highlightingNode(object, 300);\n\n            _this.handler.canvas.requestRenderAll();\n\n            return;\n          }\n        }\n      }\n\n      object.set({\n        opacity: 0.2\n      });\n\n      if (object.superType === 'node') {\n        if (object.toPort) {\n          object.toPort.set({\n            opacity: 0.2\n          });\n        }\n\n        object.fromPort.forEach(function (port) {\n          port.set({\n            opacity: 0.2\n          });\n        });\n      }\n\n      if (!object.animating) {\n        object.set('shadow', {\n          blur: 0\n        });\n      }\n    });\n    targetObjects.forEach(function (object) {\n      object.set({\n        opacity: 1,\n        shadow: {\n          color: object.stroke\n        }\n      });\n\n      _this.highlightingNode(object, 300);\n\n      if (object.toPort) {\n        object.toPort.set({\n          opacity: 1\n        });\n      }\n\n      if (object.fromPort) {\n        object.fromPort.forEach(function (port) {\n          port.set({\n            opacity: 1\n          });\n        });\n      }\n    });\n\n    _this.handler.canvas.requestRenderAll();\n  };\n\n  this.selectById = function (id) {\n    _this.handler.objects.forEach(function (object) {\n      if (id === object.id) {\n        object.set('shadow', {\n          color: object.stroke,\n          blur: 50\n        });\n        return;\n      } else if (id === object.nodeId) {\n        return;\n      }\n\n      object.set('shadow', {\n        blur: 0\n      });\n    });\n\n    _this.handler.canvas.requestRenderAll();\n  };\n\n  this.deselect = function () {\n    _this.handler.objects.forEach(function (object) {\n      object.set({\n        opacity: 1\n      });\n\n      if (object.superType === 'node') {\n        var node = object;\n\n        if (node.toPort) {\n          node.toPort.set({\n            opacity: 1\n          });\n        }\n\n        node.fromPort.forEach(function (port) {\n          port.set({\n            opacity: 1\n          });\n        });\n      }\n\n      if (!object.animating) {\n        var _node = object;\n\n        _node.set('shadow', {\n          blur: 0\n        });\n      }\n    });\n\n    _this.handler.canvas.renderAll();\n  };\n\n  this.highlightingByPath = function (path) {\n    if (!path || !path.length) {\n      return;\n    }\n\n    var targetObjects = _this.handler.objects.filter(function (obj) {\n      return path.some(function (id) {\n        return id === obj.id;\n      });\n    });\n\n    var nonTargetObjects = _this.handler.objects.filter(function (obj) {\n      return path.some(function (id) {\n        return id !== obj.id;\n      });\n    });\n\n    var lastObject = targetObjects.filter(function (obj) {\n      return obj.id === path[path.length - 1];\n    })[0];\n    targetObjects.forEach(function (object) {\n      if (lastObject) {\n        object.set('shadow', {\n          color: lastObject.stroke\n        });\n      } else {\n        object.set('shadow', {\n          color: object.stroke\n        });\n      }\n\n      _this.highlightingNode(object);\n\n      _this.handler.canvas.requestRenderAll();\n    });\n    nonTargetObjects.forEach(function (object) {\n      if (object.superType === 'link') {\n        var fromNode = object.fromNode,\n            toNode = object.toNode;\n\n        if (fromNode && toNode) {\n          var fromIndex = targetObjects.findIndex(function (obj) {\n            return obj.id === fromNode.id;\n          });\n          var toIndex = targetObjects.findIndex(function (obj) {\n            return obj.id === toNode.id;\n          });\n\n          if (fromIndex >= 0 && targetObjects[fromIndex] && toIndex >= 0 && targetObjects[toIndex]) {\n            if (lastObject) {\n              object.set('shadow', {\n                color: lastObject.stroke\n              });\n            } else {\n              object.set('shadow', {\n                color: object.stroke\n              });\n            }\n\n            _this.highlightingNode(object);\n\n            _this.highlightingLink(object, lastObject);\n\n            return;\n          }\n        }\n      }\n    });\n\n    _this.handler.canvas.requestRenderAll();\n  };\n\n  this.highlightingLink = function (object, targetObject) {\n    var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 500;\n    object.animation = {\n      duration: duration,\n      type: 'flash',\n      stroke: targetObject ? targetObject.stroke : object.stroke,\n      loop: 1,\n      delay: 0\n    };\n\n    _this.handler.animationHandler.play(object.id, false);\n  };\n\n  this.highlightingNode = function (object) {\n    var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n    var minBlur = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n    var maxBlur = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 50;\n\n    var onComplete = function onComplete() {\n      if (object.shadow.blur === maxBlur) {\n        object.animating = true;\n        object.animate('shadow.blur', minBlur, {\n          easing: fabric[\"fabric\"].util.ease.easeInOutQuad,\n          onChange: function onChange(value) {\n            object.shadow.blur = value;\n\n            _this.handler.canvas.requestRenderAll();\n          },\n          onComplete: function onComplete() {\n            object.animating = false;\n\n            if (object.superType === 'link') {\n              object.set({\n                stroke: object.originStroke || object.stroke\n              });\n            }\n          }\n        });\n      }\n    };\n\n    object.animating = true;\n    object.animate('shadow.blur', maxBlur, {\n      easing: fabric[\"fabric\"].util.ease.easeInOutQuad,\n      duration: duration,\n      onChange: function onChange(value) {\n        object.shadow.blur = value;\n\n        _this.handler.canvas.requestRenderAll();\n      },\n      onComplete: onComplete\n    });\n  };\n\n  this.handler = handler;\n}\n/**\n * Get the node path by target object\n * @param {NodeObject} target\n * @param {NodeObject[]} [nodes=[]]\n * @param {string} [direction='init']\n */\n);\n\n/* harmony default export */ var handlers_NodeHandler = (NodeHandler_NodeHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/AlignmentHandler.ts\n\n\n\nvar AlignmentHandler_AlignmentHandler = /*#__PURE__*/createClass_default()(function AlignmentHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, AlignmentHandler);\n\n  this.handler = void 0;\n\n  this.left = function () {\n    var activeObject = _this.handler.canvas.getActiveObject();\n\n    if (activeObject && activeObject.type === 'activeSelection') {\n      var activeSelection = activeObject;\n      var activeObjectLeft = -(activeObject.width / 2);\n      activeSelection.forEachObject(function (obj) {\n        obj.set({\n          left: activeObjectLeft\n        });\n        obj.setCoords();\n\n        _this.handler.canvas.renderAll();\n      });\n    }\n  };\n\n  this.center = function () {\n    var activeObject = _this.handler.canvas.getActiveObject();\n\n    if (activeObject && activeObject.type === 'activeSelection') {\n      var activeSelection = activeObject;\n      activeSelection.forEachObject(function (obj) {\n        obj.set({\n          left: 0 - obj.width * obj.scaleX / 2\n        });\n        obj.setCoords();\n\n        _this.handler.canvas.renderAll();\n      });\n    }\n  };\n\n  this.right = function () {\n    var activeObject = _this.handler.canvas.getActiveObject();\n\n    if (activeObject && activeObject.type === 'activeSelection') {\n      var activeSelection = activeObject;\n      var activeObjectLeft = activeObject.width / 2;\n      activeSelection.forEachObject(function (obj) {\n        obj.set({\n          left: activeObjectLeft - obj.width * obj.scaleX\n        });\n        obj.setCoords();\n\n        _this.handler.canvas.renderAll();\n      });\n    }\n  };\n\n  this.handler = handler;\n}\n/**\n * Align left at selection\n */\n);\n\n/* harmony default export */ var handlers_AlignmentHandler = (AlignmentHandler_AlignmentHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/GuidelineHandler.ts\n\n\n\n\nvar GuidelineHandler_GuidelineHandler = /*#__PURE__*/function () {\n  function GuidelineHandler(handler) {\n    var _this = this;\n\n    classCallCheck_default()(this, GuidelineHandler);\n\n    this.handler = void 0;\n    this.verticalLines = void 0;\n    this.horizontalLines = void 0;\n    this.ctx = void 0;\n    this.viewportTransform = void 0;\n    this.aligningLineOffset = 5;\n    this.aligningLineMargin = 4;\n    this.aligningLineWidth = 1;\n    this.aligningLineColor = 'rgb(255, 0, 0)';\n    this.zoom = 1;\n\n    this.beforeRender = function (_opt) {\n      _this.handler.canvas.clearContext(_this.handler.guidelineHandler.ctx);\n    };\n\n    this.afterRender = function (_opt) {\n      for (var i = _this.handler.guidelineHandler.verticalLines.length; i--;) {\n        _this.handler.guidelineHandler.drawVerticalLine(_this.handler.guidelineHandler.verticalLines[i]);\n      }\n\n      for (var _i = _this.handler.guidelineHandler.horizontalLines.length; _i--;) {\n        _this.handler.guidelineHandler.drawHorizontalLine(_this.handler.guidelineHandler.horizontalLines[_i]);\n      }\n\n      _this.handler.guidelineHandler.verticalLines.length = 0;\n      _this.handler.guidelineHandler.horizontalLines.length = 0;\n    };\n\n    this.drawVerticalLine = function (coords) {\n      _this.drawLine(coords.x + 0.5, coords.y1 > coords.y2 ? coords.y2 : coords.y1, coords.x + 0.5, coords.y2 > coords.y1 ? coords.y2 : coords.y1);\n    };\n\n    this.drawHorizontalLine = function (coords) {\n      _this.drawLine(coords.x1 > coords.x2 ? coords.x2 : coords.x1, coords.y + 0.5, coords.x2 > coords.x1 ? coords.x2 : coords.x1, coords.y + 0.5);\n    };\n\n    this.drawLine = function (x1, y1, x2, y2) {\n      var ctx = _this.ctx,\n          aligningLineWidth = _this.aligningLineWidth,\n          aligningLineColor = _this.aligningLineColor,\n          viewportTransform = _this.viewportTransform,\n          zoom = _this.zoom;\n      ctx.save();\n      ctx.lineWidth = aligningLineWidth;\n      ctx.strokeStyle = aligningLineColor;\n      ctx.beginPath();\n      ctx.moveTo(x1 * zoom + viewportTransform[4], y1 * zoom + viewportTransform[5]);\n      ctx.lineTo(x2 * zoom + viewportTransform[4], y2 * zoom + viewportTransform[5]);\n      ctx.stroke();\n      ctx.restore();\n    };\n\n    this.isInRange = function (v1, v2) {\n      var aligningLineMargin = _this.aligningLineMargin;\n      v1 = Math.round(v1);\n      v2 = Math.round(v2);\n\n      for (var i = v1 - aligningLineMargin, len = v1 + aligningLineMargin; i <= len; i++) {\n        if (i === v2) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    this.movingGuidelines = function (target) {\n      var canvasObjects = _this.handler.canvas.getObjects();\n\n      var activeObjectCenter = target.getCenterPoint();\n      var activeObjectLeft = activeObjectCenter.x;\n      var activeObjectTop = activeObjectCenter.y;\n      var activeObjectBoundingRect = target.getBoundingRect();\n      var activeObjectHeight = activeObjectBoundingRect.height / _this.viewportTransform[3];\n      var activeObjectWidth = activeObjectBoundingRect.width / _this.viewportTransform[0];\n      var horizontalInTheRange = false;\n      var verticalInTheRange = false;\n      var _ref = _this.handler.canvas,\n          transform = _ref._currentTransform;\n\n      if (!transform) {\n        return;\n      } // It should be trivial to DRY this up by encapsulating (repeating) creation of x1, x2, y1, and y2 into functions,\n      // but we're not doing it here for perf. reasons -- as this a function that's invoked on every mouse move\n\n\n      for (var i = canvasObjects.length; i--;) {\n        if (canvasObjects[i] === target || canvasObjects[i].superType === 'port' || canvasObjects[i].superType === 'link' || !canvasObjects[i].evented) {\n          continue;\n        }\n\n        var objectCenter = canvasObjects[i].getCenterPoint();\n        var objectLeft = objectCenter.x;\n        var objectTop = objectCenter.y;\n        var objectBoundingRect = canvasObjects[i].getBoundingRect();\n        var objectHeight = objectBoundingRect.height / _this.viewportTransform[3];\n        var objectWidth = objectBoundingRect.width / _this.viewportTransform[0]; // snap by the horizontal center line\n\n        if (_this.isInRange(objectLeft, activeObjectLeft)) {\n          verticalInTheRange = true;\n\n          if (canvasObjects[i].id === 'workarea') {\n            var y1 = -5000;\n            var y2 = 5000;\n\n            _this.verticalLines.push({\n              x: objectLeft,\n              y1: y1,\n              y2: y2\n            });\n          } else {\n            _this.verticalLines.push({\n              x: objectLeft,\n              y1: objectTop < activeObjectTop ? objectTop - objectHeight / 2 - _this.aligningLineOffset : objectTop + objectHeight / 2 + _this.aligningLineOffset,\n              y2: activeObjectTop > objectTop ? activeObjectTop + activeObjectHeight / 2 + _this.aligningLineOffset : activeObjectTop - activeObjectHeight / 2 - _this.aligningLineOffset\n            });\n          }\n\n          target.setPositionByOrigin(new fabric[\"fabric\"].Point(objectLeft, activeObjectTop), 'center', 'center');\n        } // snap by the left edge\n\n\n        if (_this.isInRange(objectLeft - objectWidth / 2, activeObjectLeft - activeObjectWidth / 2)) {\n          verticalInTheRange = true;\n\n          if (canvasObjects[i].id === 'workarea') {\n            var workarea = canvasObjects[i];\n\n            var _y = -5000;\n\n            var _y2 = 5000;\n            var x = objectLeft - objectWidth / 2;\n\n            if (workarea.layout === 'fullscreen') {\n              x = 0;\n            }\n\n            _this.verticalLines.push({\n              x: x,\n              y1: _y,\n              y2: _y2\n            });\n          } else {\n            _this.verticalLines.push({\n              x: objectLeft - objectWidth / 2,\n              y1: objectTop < activeObjectTop ? objectTop - objectHeight / 2 - _this.aligningLineOffset : objectTop + objectHeight / 2 + _this.aligningLineOffset,\n              y2: activeObjectTop > objectTop ? activeObjectTop + activeObjectHeight / 2 + _this.aligningLineOffset : activeObjectTop - activeObjectHeight / 2 - _this.aligningLineOffset\n            });\n          }\n\n          target.setPositionByOrigin(new fabric[\"fabric\"].Point(objectLeft - objectWidth / 2 + activeObjectWidth / 2, activeObjectTop), 'center', 'center');\n        } // snap by the right edge\n\n\n        if (_this.isInRange(objectLeft + objectWidth / 2, activeObjectLeft + activeObjectWidth / 2)) {\n          verticalInTheRange = true;\n\n          if (canvasObjects[i].id === 'workarea') {\n            var _workarea = canvasObjects[i];\n\n            var _y3 = -5000;\n\n            var _y4 = 5000;\n\n            var _x = objectLeft + objectWidth / 2;\n\n            if (_workarea.layout === 'fullscreen') {\n              _x = _this.handler.canvas.getWidth();\n            }\n\n            _this.verticalLines.push({\n              x: _x,\n              y1: _y3,\n              y2: _y4\n            });\n          } else {\n            _this.verticalLines.push({\n              x: objectLeft + objectWidth / 2,\n              y1: objectTop < activeObjectTop ? objectTop - objectHeight / 2 - _this.aligningLineOffset : objectTop + objectHeight / 2 + _this.aligningLineOffset,\n              y2: activeObjectTop > objectTop ? activeObjectTop + activeObjectHeight / 2 + _this.aligningLineOffset : activeObjectTop - activeObjectHeight / 2 - _this.aligningLineOffset\n            });\n          }\n\n          target.setPositionByOrigin(new fabric[\"fabric\"].Point(objectLeft + objectWidth / 2 - activeObjectWidth / 2, activeObjectTop), 'center', 'center');\n        } // snap by the vertical center line\n\n\n        if (_this.isInRange(objectTop, activeObjectTop)) {\n          horizontalInTheRange = true;\n\n          if (canvasObjects[i].id === 'workarea') {\n            var x1 = -5000;\n            var x2 = 5000;\n\n            _this.horizontalLines.push({\n              y: objectTop,\n              x1: x1,\n              x2: x2\n            });\n          } else {\n            _this.horizontalLines.push({\n              y: objectTop,\n              x1: objectLeft < activeObjectLeft ? objectLeft - objectWidth / 2 - _this.aligningLineOffset : objectLeft + objectWidth / 2 + _this.aligningLineOffset,\n              x2: activeObjectLeft > objectLeft ? activeObjectLeft + activeObjectWidth / 2 + _this.aligningLineOffset : activeObjectLeft - activeObjectWidth / 2 - _this.aligningLineOffset\n            });\n          }\n\n          target.setPositionByOrigin(new fabric[\"fabric\"].Point(activeObjectLeft, objectTop), 'center', 'center');\n        } // snap by the top edge\n\n\n        if (_this.isInRange(objectTop - objectHeight / 2, activeObjectTop - activeObjectHeight / 2)) {\n          horizontalInTheRange = true;\n\n          if (canvasObjects[i].id === 'workarea') {\n            var _workarea2 = canvasObjects[i];\n\n            var _x2 = -5000;\n\n            var _x3 = 5000;\n            var y = objectTop - objectHeight / 2;\n\n            if (_workarea2.layout === 'fullscreen') {\n              y = 0;\n            }\n\n            _this.horizontalLines.push({\n              y: y,\n              x1: _x2,\n              x2: _x3\n            });\n          } else {\n            _this.horizontalLines.push({\n              y: objectTop - objectHeight / 2,\n              x1: objectLeft < activeObjectLeft ? objectLeft - objectWidth / 2 - _this.aligningLineOffset : objectLeft + objectWidth / 2 + _this.aligningLineOffset,\n              x2: activeObjectLeft > objectLeft ? activeObjectLeft + activeObjectWidth / 2 + _this.aligningLineOffset : activeObjectLeft - activeObjectWidth / 2 - _this.aligningLineOffset\n            });\n          }\n\n          target.setPositionByOrigin(new fabric[\"fabric\"].Point(activeObjectLeft, objectTop - objectHeight / 2 + activeObjectHeight / 2), 'center', 'center');\n        } // snap by the bottom edge\n\n\n        if (_this.isInRange(objectTop + objectHeight / 2, activeObjectTop + activeObjectHeight / 2)) {\n          horizontalInTheRange = true;\n\n          if (canvasObjects[i].id === 'workarea') {\n            var _workarea3 = canvasObjects[i];\n\n            var _x4 = -5000;\n\n            var _x5 = 5000;\n\n            var _y5 = objectTop + objectHeight / 2;\n\n            if (_workarea3.layout === 'fullscreen') {\n              _y5 = _this.handler.canvas.getHeight();\n            }\n\n            _this.horizontalLines.push({\n              y: _y5,\n              x1: _x4,\n              x2: _x5\n            });\n          } else {\n            _this.horizontalLines.push({\n              y: objectTop + objectHeight / 2,\n              x1: objectLeft < activeObjectLeft ? objectLeft - objectWidth / 2 - _this.aligningLineOffset : objectLeft + objectWidth / 2 + _this.aligningLineOffset,\n              x2: activeObjectLeft > objectLeft ? activeObjectLeft + activeObjectWidth / 2 + _this.aligningLineOffset : activeObjectLeft - activeObjectWidth / 2 - _this.aligningLineOffset\n            });\n          }\n\n          target.setPositionByOrigin(new fabric[\"fabric\"].Point(activeObjectLeft, objectTop + objectHeight / 2 - activeObjectHeight / 2), 'center', 'center');\n        }\n      }\n\n      if (!horizontalInTheRange) {\n        _this.horizontalLines.length = 0;\n      }\n\n      if (!verticalInTheRange) {\n        _this.verticalLines.length = 0;\n      }\n    };\n\n    this.scalingGuidelines = function (_target) {// TODO... object scaling guideline\n    };\n\n    this.handler = handler;\n    this.initialize();\n  }\n  /**\n   * Initialize guideline handler\n   *\n   */\n\n\n  createClass_default()(GuidelineHandler, [{\n    key: \"initialize\",\n    value: function initialize() {\n      if (this.handler.guidelineOption.enabled) {\n        // @ts-ignore\n        this.handler.canvas.on({\n          'before:render': this.beforeRender,\n          'after:render': this.afterRender\n        });\n      } else {\n        this.handler.canvas.off({\n          'before:render': this.beforeRender,\n          'after:render': this.afterRender\n        });\n      }\n\n      this.ctx = this.handler.canvas.getSelectionContext();\n      this.aligningLineOffset = 5;\n      this.aligningLineMargin = 4;\n      this.aligningLineWidth = 1;\n      this.aligningLineColor = 'rgb(255, 0, 0)';\n      this.viewportTransform = this.handler.canvas.viewportTransform;\n      this.zoom = 1;\n      this.verticalLines = [];\n      this.horizontalLines = [];\n    }\n    /**\n     * Destroy guideline handler\n     *\n     * @author salgum1114\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.handler.canvas.off({\n        'before:render': this.beforeRender,\n        'after:render': this.afterRender\n      });\n    }\n    /**\n     * Before the render\n     *\n     * @param {FabricEvent} _opt\n     */\n\n  }]);\n\n  return GuidelineHandler;\n}();\n\n/* harmony default export */ var handlers_GuidelineHandler = (GuidelineHandler_GuidelineHandler);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.is-array.js\nvar es_array_is_array = __webpack_require__(490);\n\n// CONCATENATED MODULE: ./src/canvas/handlers/EventHandler.ts\n\n\n\n\n\n\n\n\n\n\n\nfunction EventHandler_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction EventHandler_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? EventHandler_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : EventHandler_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Event Handler Class\n * @author salgum1114\n * @class EventHandler\n */\nvar EventHandler_EventHandler = /*#__PURE__*/function () {\n  function EventHandler(handler) {\n    var _this = this;\n\n    classCallCheck_default()(this, EventHandler);\n\n    this.handler = void 0;\n    this.code = void 0;\n    this.panning = void 0;\n\n    this.destroy = function () {\n      if (_this.handler.editable) {\n        _this.handler.canvas.off({\n          'object:modified': _this.modified,\n          'object:scaling': _this.scaling,\n          'object:moving': _this.moving,\n          'object:moved': _this.moved,\n          'object:rotating': _this.rotating,\n          'mouse:wheel': _this.mousewheel,\n          'mouse:down': _this.mousedown,\n          'mouse:move': _this.mousemove,\n          'mouse:up': _this.mouseup,\n          'selection:cleared': _this.selection,\n          'selection:created': _this.selection,\n          'selection:updated': _this.selection\n        });\n      } else {\n        _this.handler.canvas.off({\n          'mouse:down': _this.mousedown,\n          'mouse:move': _this.mousemove,\n          'mouse:out': _this.mouseout,\n          'mouse:up': _this.mouseup,\n          'mouse:wheel': _this.mousewheel\n        });\n\n        _this.handler.getObjects().forEach(function (object) {\n          object.off('mousedown', _this.handler.eventHandler.object.mousedown);\n\n          if (object.anime) {\n            anime_es.remove(object);\n          }\n        });\n      }\n\n      _this.handler.canvas.wrapperEl.removeEventListener('keydown', _this.keydown);\n\n      _this.handler.canvas.wrapperEl.removeEventListener('keyup', _this.keyup);\n\n      _this.handler.canvas.wrapperEl.removeEventListener('mousedown', _this.onmousedown);\n\n      _this.handler.canvas.wrapperEl.removeEventListener('contextmenu', _this.contextmenu);\n\n      if (_this.handler.keyEvent.clipboard) {\n        _this.handler.canvas.wrapperEl.removeEventListener('paste', _this.paste);\n      }\n    };\n\n    this.object = {\n      /**\n       * Mouse down event on object\n       * @param {FabricEvent} opt\n       */\n      mousedown: function mousedown(opt) {\n        var target = opt.target;\n\n        if (target && target.link && target.link.enabled) {\n          var onClick = _this.handler.onClick;\n\n          if (onClick) {\n            onClick(_this.handler.canvas, target);\n          }\n        }\n      },\n\n      /**\n       * Mouse double click event on object\n       * @param {FabricEvent} opt\n       */\n      mousedblclick: function mousedblclick(opt) {\n        var target = opt.target;\n\n        if (target) {\n          var onDblClick = _this.handler.onDblClick;\n\n          if (onDblClick) {\n            onDblClick(_this.handler.canvas, target);\n          }\n        }\n      }\n    };\n\n    this.modified = function (opt) {\n      var target = opt.target;\n\n      if (!target) {\n        return;\n      }\n\n      if (target.type === 'circle' && target.parentId) {\n        return;\n      }\n\n      var onModified = _this.handler.onModified;\n\n      if (onModified) {\n        onModified(target);\n      }\n    };\n\n    this.moving = function (opt) {\n      var _ref = opt,\n          target = _ref.target;\n\n      if (_this.handler.interactionMode === 'crop') {\n        _this.handler.cropHandler.moving(opt);\n      } else {\n        if (_this.handler.editable && _this.handler.guidelineOption.enabled) {\n          _this.handler.guidelineHandler.movingGuidelines(target);\n        }\n\n        if (target.type === 'activeSelection') {\n          var activeSelection = target;\n          activeSelection.getObjects().forEach(function (obj) {\n            var left = target.left + obj.left + target.width / 2;\n            var top = target.top + obj.top + target.height / 2;\n\n            if (obj.superType === 'node') {\n              _this.handler.portHandler.setCoords(EventHandler_objectSpread(EventHandler_objectSpread({}, obj), {}, {\n                left: left,\n                top: top\n              }));\n            } else if (obj.superType === 'element') {\n              var id = obj.id;\n\n              var el = _this.handler.elementHandler.findById(id); // TODO... Element object incorrect position\n\n\n              _this.handler.elementHandler.setPositionByOrigin(el, obj, left, top);\n            }\n          });\n          return;\n        }\n\n        if (target.superType === 'node') {\n          _this.handler.portHandler.setCoords(target);\n        } else if (target.superType === 'element') {\n          var id = target.id;\n\n          var el = _this.handler.elementHandler.findById(id);\n\n          _this.handler.elementHandler.setPosition(el, target);\n        }\n      }\n    };\n\n    this.moved = function (opt) {\n      var target = opt.target;\n\n      _this.handler.gridHandler.setCoords(target);\n\n      if (!_this.handler.transactionHandler.active) {\n        _this.handler.transactionHandler.save('moved');\n      }\n\n      if (target.superType === 'element') {\n        var id = target.id;\n\n        var el = _this.handler.elementHandler.findById(id);\n\n        _this.handler.elementHandler.setPosition(el, target);\n      }\n    };\n\n    this.scaling = function (opt) {\n      var _ref2 = opt,\n          target = _ref2.target;\n\n      if (_this.handler.interactionMode === 'crop') {\n        _this.handler.cropHandler.resize(opt);\n      } // TODO...this.handler.guidelineHandler.scalingGuidelines(target);\n\n\n      if (target.superType === 'element') {\n        var id = target.id,\n            width = target.width,\n            height = target.height;\n\n        var el = _this.handler.elementHandler.findById(id); // update the element\n\n\n        _this.handler.elementHandler.setScaleOrAngle(el, target);\n\n        _this.handler.elementHandler.setSize(el, target);\n\n        _this.handler.elementHandler.setPosition(el, target);\n\n        var video = target;\n\n        if (video.type === 'video' && video.player) {\n          video.player.setPlayerSize(width, height);\n        }\n      }\n    };\n\n    this.scaled = function (_opt) {\n      if (!_this.handler.transactionHandler.active) {\n        _this.handler.transactionHandler.save('scaled');\n      }\n    };\n\n    this.rotating = function (opt) {\n      var _ref3 = opt,\n          target = _ref3.target;\n\n      if (target.superType === 'element') {\n        var id = target.id;\n\n        var el = _this.handler.elementHandler.findById(id); // update the element\n\n\n        _this.handler.elementHandler.setScaleOrAngle(el, target);\n      }\n    };\n\n    this.rotated = function (_opt) {\n      if (!_this.handler.transactionHandler.active) {\n        _this.handler.transactionHandler.save('rotated');\n      }\n    };\n\n    this.arrowmoving = function (e) {\n      var activeObject = _this.handler.canvas.getActiveObject();\n\n      if (!activeObject) {\n        return false;\n      }\n\n      if (activeObject.id === 'workarea') {\n        return false;\n      }\n\n      if (e.code === code_namespaceObject.ARROW_UP) {\n        activeObject.set('top', activeObject.top - 2);\n        activeObject.setCoords();\n\n        _this.handler.canvas.renderAll();\n\n        return true;\n      } else if (e.code === code_namespaceObject.ARROW_DOWN) {\n        activeObject.set('top', activeObject.top + 2);\n        activeObject.setCoords();\n\n        _this.handler.canvas.renderAll();\n\n        return true;\n      } else if (e.code === code_namespaceObject.ARROW_LEFT) {\n        activeObject.set('left', activeObject.left - 2);\n        activeObject.setCoords();\n\n        _this.handler.canvas.renderAll();\n\n        return true;\n      } else if (e.code === code_namespaceObject.ARROW_RIGHT) {\n        activeObject.set('left', activeObject.left + 2);\n        activeObject.setCoords();\n\n        _this.handler.canvas.renderAll();\n\n        return true;\n      }\n\n      if (_this.handler.onModified) {\n        _this.handler.onModified(activeObject);\n      }\n\n      return true;\n    };\n\n    this.mousewheel = function (opt) {\n      var event = opt;\n      var zoomEnabled = _this.handler.zoomEnabled;\n\n      if (!zoomEnabled) {\n        return;\n      }\n\n      var delta = event.e.deltaY;\n\n      var zoomRatio = _this.handler.canvas.getZoom();\n\n      if (delta > 0) {\n        zoomRatio -= 0.05;\n      } else {\n        zoomRatio += 0.05;\n      }\n\n      _this.handler.zoomHandler.zoomToPoint(new fabric[\"fabric\"].Point(_this.handler.canvas.getWidth() / 2, _this.handler.canvas.getHeight() / 2), zoomRatio);\n\n      event.e.preventDefault();\n      event.e.stopPropagation();\n    };\n\n    this.mousedown = function (opt) {\n      var event = opt;\n      var editable = _this.handler.editable;\n\n      if (event.e.altKey && editable && !_this.handler.interactionHandler.isDrawingMode()) {\n        _this.handler.interactionHandler.grab();\n\n        _this.panning = true;\n        return;\n      }\n\n      if (_this.handler.interactionMode === 'grab') {\n        _this.panning = true;\n        return;\n      }\n\n      var target = event.target;\n\n      if (editable) {\n        if (_this.handler.prevTarget && _this.handler.prevTarget.superType === 'link') {\n          _this.handler.prevTarget.set({\n            stroke: _this.handler.prevTarget.originStroke || _this.handler.prevTarget.stroke\n          });\n        }\n\n        if (target && target.type === 'fromPort') {\n          _this.handler.linkHandler.init(target);\n\n          return;\n        }\n\n        if (target && _this.handler.interactionMode === 'link' && (target.type === 'toPort' || target.superType === 'node')) {\n          var toPort;\n\n          if (target.superType === 'node') {\n            toPort = target.toPort;\n          } else {\n            toPort = target;\n          }\n\n          _this.handler.linkHandler.generate(toPort);\n\n          return;\n        }\n\n        _this.handler.guidelineHandler.viewportTransform = _this.handler.canvas.viewportTransform;\n        _this.handler.guidelineHandler.zoom = _this.handler.canvas.getZoom();\n\n        if (_this.handler.interactionMode === 'selection') {\n          if (target && target.superType === 'link') {\n            target.set({\n              stroke: target.selectedStroke || 'green'\n            });\n          }\n\n          _this.handler.prevTarget = target;\n          return;\n        }\n\n        if (_this.handler.interactionMode === 'polygon') {\n          if (target && _this.handler.pointArray.length && target.id === _this.handler.pointArray[0].id) {\n            _this.handler.drawingHandler.polygon.generate(_this.handler.pointArray);\n          } else {\n            _this.handler.drawingHandler.polygon.addPoint(event);\n          }\n        } else if (_this.handler.interactionMode === 'line') {\n          if (_this.handler.pointArray.length && _this.handler.activeLine) {\n            _this.handler.drawingHandler.line.generate(event);\n          } else {\n            _this.handler.drawingHandler.line.addPoint(event);\n          }\n        } else if (_this.handler.interactionMode === 'arrow') {\n          if (_this.handler.pointArray.length && _this.handler.activeLine) {\n            _this.handler.drawingHandler.arrow.generate(event);\n          } else {\n            _this.handler.drawingHandler.arrow.addPoint(event);\n          }\n        }\n      }\n    };\n\n    this.mousemove = function (opt) {\n      var event = opt;\n\n      if (_this.handler.interactionMode === 'grab' && _this.panning) {\n        _this.handler.interactionHandler.moving(event.e);\n\n        _this.handler.canvas.requestRenderAll();\n      }\n\n      if (!_this.handler.editable && event.target) {\n        if (event.target.superType === 'element') {\n          return;\n        }\n\n        if (event.target.id !== 'workarea') {\n          if (event.target !== _this.handler.target) {\n            _this.handler.tooltipHandler.show(event.target);\n          }\n        } else {\n          _this.handler.tooltipHandler.hide(event.target);\n        }\n      }\n\n      if (_this.handler.interactionMode === 'polygon') {\n        if (_this.handler.activeLine && _this.handler.activeLine[\"class\"] === 'line') {\n          var pointer = _this.handler.canvas.getPointer(event.e);\n\n          _this.handler.activeLine.set({\n            x2: pointer.x,\n            y2: pointer.y\n          });\n\n          var points = _this.handler.activeShape.get('points');\n\n          points[_this.handler.pointArray.length] = {\n            x: pointer.x,\n            y: pointer.y\n          };\n\n          _this.handler.activeShape.set({\n            points: points\n          });\n\n          _this.handler.canvas.requestRenderAll();\n        }\n      } else if (_this.handler.interactionMode === 'line') {\n        if (_this.handler.activeLine && _this.handler.activeLine[\"class\"] === 'line') {\n          var _pointer = _this.handler.canvas.getPointer(event.e);\n\n          _this.handler.activeLine.set({\n            x2: _pointer.x,\n            y2: _pointer.y\n          });\n        }\n\n        _this.handler.canvas.requestRenderAll();\n      } else if (_this.handler.interactionMode === 'arrow') {\n        if (_this.handler.activeLine && _this.handler.activeLine[\"class\"] === 'line') {\n          var _pointer2 = _this.handler.canvas.getPointer(event.e);\n\n          _this.handler.activeLine.set({\n            x2: _pointer2.x,\n            y2: _pointer2.y\n          });\n        }\n\n        _this.handler.canvas.requestRenderAll();\n      } else if (_this.handler.interactionMode === 'link') {\n        if (_this.handler.activeLine && _this.handler.activeLine[\"class\"] === 'line') {\n          var _pointer3 = _this.handler.canvas.getPointer(event.e);\n\n          _this.handler.activeLine.set({\n            x2: _pointer3.x,\n            y2: _pointer3.y\n          });\n        }\n\n        _this.handler.canvas.requestRenderAll();\n      }\n\n      return;\n    };\n\n    this.mouseup = function (opt) {\n      var event = opt;\n\n      if (_this.handler.interactionMode === 'grab') {\n        _this.panning = false;\n        return;\n      }\n\n      var target = event.target,\n          e = event.e;\n\n      if (_this.handler.interactionMode === 'selection') {\n        if (target && e.shiftKey && target.superType === 'node') {\n          var node = target;\n\n          _this.handler.canvas.discardActiveObject();\n\n          var nodes = [];\n\n          _this.handler.nodeHandler.getNodePath(node, nodes);\n\n          var activeSelection = new fabric[\"fabric\"].ActiveSelection(nodes, EventHandler_objectSpread({\n            canvas: _this.handler.canvas\n          }, _this.handler.activeSelectionOption));\n\n          _this.handler.canvas.setActiveObject(activeSelection);\n\n          _this.handler.canvas.requestRenderAll();\n        }\n      }\n\n      if (_this.handler.editable && _this.handler.guidelineOption.enabled) {\n        _this.handler.guidelineHandler.verticalLines.length = 0;\n        _this.handler.guidelineHandler.horizontalLines.length = 0;\n      }\n\n      _this.handler.canvas.renderAll();\n    };\n\n    this.mouseout = function (opt) {\n      var event = opt;\n\n      if (!event.target) {\n        _this.handler.tooltipHandler.hide();\n      }\n    };\n\n    this.selection = function (opt) {\n      var _this$handler = _this.handler,\n          onSelect = _this$handler.onSelect,\n          activeSelectionOption = _this$handler.activeSelectionOption;\n      var target = opt.target;\n\n      if (target && target.type === 'activeSelection') {\n        target.set(EventHandler_objectSpread({}, activeSelectionOption));\n      }\n\n      if (onSelect) {\n        onSelect(target);\n      }\n    };\n\n    this.resize = function (nextWidth, nextHeight) {\n      _this.handler.canvas.setWidth(nextWidth).setHeight(nextHeight);\n\n      _this.handler.canvas.setBackgroundColor(_this.handler.canvasOption.backgroundColor, _this.handler.canvas.renderAll.bind(_this.handler.canvas));\n\n      if (!_this.handler.workarea) {\n        return;\n      }\n\n      var diffWidth = nextWidth / 2 - _this.handler.width / 2;\n      var diffHeight = nextHeight / 2 - _this.handler.height / 2;\n      _this.handler.width = nextWidth;\n      _this.handler.height = nextHeight;\n\n      if (_this.handler.workarea.layout === 'fixed') {\n        _this.handler.canvas.centerObject(_this.handler.workarea);\n\n        _this.handler.workarea.setCoords();\n\n        if (_this.handler.gridOption.enabled) {\n          return;\n        }\n\n        _this.handler.canvas.getObjects().forEach(function (obj) {\n          if (obj.id !== 'workarea') {\n            var left = obj.left + diffWidth;\n            var top = obj.top + diffHeight;\n            obj.set({\n              left: left,\n              top: top\n            });\n            obj.setCoords();\n\n            if (obj.superType === 'element') {\n              var id = obj.id;\n\n              var el = _this.handler.elementHandler.findById(id); // update the element\n\n\n              _this.handler.elementHandler.setPosition(el, obj);\n            }\n          }\n        });\n\n        _this.handler.canvas.requestRenderAll();\n\n        return;\n      }\n\n      if (_this.handler.workarea.layout === 'responsive') {\n        var _this$handler$workare = _this.handler.workareaHandler.calculateScale(),\n            _scaleX = _this$handler$workare.scaleX;\n\n        var center = _this.handler.canvas.getCenter();\n\n        var deltaPoint = new fabric[\"fabric\"].Point(diffWidth, diffHeight);\n\n        _this.handler.canvas.relativePan(deltaPoint);\n\n        _this.handler.zoomHandler.zoomToPoint(new fabric[\"fabric\"].Point(center.left, center.top), _scaleX);\n\n        return;\n      }\n\n      var scaleX = nextWidth / _this.handler.workarea.width;\n      var scaleY = nextHeight / _this.handler.workarea.height;\n      var diffScaleX = nextWidth / (_this.handler.workarea.width * _this.handler.workarea.scaleX);\n      var diffScaleY = nextHeight / (_this.handler.workarea.height * _this.handler.workarea.scaleY);\n\n      _this.handler.workarea.set({\n        scaleX: scaleX,\n        scaleY: scaleY\n      });\n\n      _this.handler.canvas.getObjects().forEach(function (obj) {\n        var id = obj.id;\n\n        if (obj.id !== 'workarea') {\n          var left = obj.left * diffScaleX;\n          var top = obj.top * diffScaleY;\n          var newScaleX = obj.scaleX * diffScaleX;\n          var newScaleY = obj.scaleY * diffScaleY;\n          obj.set({\n            scaleX: newScaleX,\n            scaleY: newScaleY,\n            left: left,\n            top: top\n          });\n          obj.setCoords();\n\n          if (obj.superType === 'element') {\n            var video = obj;\n            var width = obj.width,\n                height = obj.height;\n\n            var el = _this.handler.elementHandler.findById(id);\n\n            _this.handler.elementHandler.setSize(el, obj);\n\n            if (video.player) {\n              video.player.setPlayerSize(width, height);\n            }\n\n            _this.handler.elementHandler.setPosition(el, obj);\n          }\n        }\n      });\n\n      _this.handler.canvas.renderAll();\n    };\n\n    this.paste = /*#__PURE__*/function () {\n      var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee(e) {\n        var clipboardData;\n        return regenerator_default.a.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (!(_this.handler.canvas.wrapperEl !== document.activeElement)) {\n                  _context.next = 2;\n                  break;\n                }\n\n                return _context.abrupt(\"return\", false);\n\n              case 2:\n                if (e.preventDefault) {\n                  e.preventDefault();\n                }\n\n                if (e.stopPropagation) {\n                  e.stopPropagation();\n                }\n\n                clipboardData = e.clipboardData;\n\n                if (clipboardData.types.length) {\n                  clipboardData.types.forEach(function (clipboardType) {\n                    if (clipboardType === 'text/plain') {\n                      var textPlain = clipboardData.getData('text/plain');\n\n                      try {\n                        var objects = JSON.parse(textPlain);\n                        var _this$handler2 = _this.handler,\n                            _this$handler2$gridOp = _this$handler2.gridOption.grid,\n                            grid = _this$handler2$gridOp === void 0 ? 10 : _this$handler2$gridOp,\n                            isCut = _this$handler2.isCut;\n                        var padding = isCut ? 0 : grid;\n\n                        if (objects && Array.isArray(objects)) {\n                          var filteredObjects = objects.filter(function (obj) {\n                            return obj !== null;\n                          });\n\n                          if (filteredObjects.length === 1) {\n                            var obj = filteredObjects[0];\n\n                            if (typeof obj.cloneable !== 'undefined' && !obj.cloneable) {\n                              return;\n                            }\n\n                            obj.left = obj.properties.left + padding;\n                            obj.top = obj.properties.top + padding;\n\n                            var createdObj = _this.handler.add(obj, false, true);\n\n                            _this.handler.canvas.setActiveObject(createdObj);\n\n                            _this.handler.canvas.requestRenderAll();\n                          } else {\n                            var nodes = [];\n                            var targets = [];\n                            objects.forEach(function (obj) {\n                              if (!obj) {\n                                return;\n                              }\n\n                              if (obj.superType === 'link') {\n                                obj.fromNodeId = nodes[obj.fromNodeIndex].id;\n                                obj.toNodeId = nodes[obj.toNodeIndex].id;\n                              } else {\n                                obj.left = obj.properties.left + padding;\n                                obj.top = obj.properties.top + padding;\n                              }\n\n                              var createdObj = _this.handler.add(obj, false, true);\n\n                              if (obj.superType === 'node') {\n                                nodes.push(createdObj);\n                              } else {\n                                targets.push(createdObj);\n                              }\n                            });\n                            var activeSelection = new fabric[\"fabric\"].ActiveSelection(nodes.length ? nodes : targets, EventHandler_objectSpread({\n                              canvas: _this.handler.canvas\n                            }, _this.handler.activeSelectionOption));\n\n                            _this.handler.canvas.setActiveObject(activeSelection);\n\n                            _this.handler.canvas.requestRenderAll();\n                          }\n\n                          if (!_this.handler.transactionHandler.active) {\n                            _this.handler.transactionHandler.save('paste');\n                          }\n\n                          _this.handler.isCut = false;\n\n                          _this.handler.copy();\n                        }\n                      } catch (error) {\n                        console.error(error); // const item = {\n                        //     id: uuv4id(),\n                        //     type: 'textbox',\n                        //     text: textPlain,\n                        // };\n                        // this.handler.add(item, true);\n                      }\n                    } else if (clipboardType === 'text/html') {// Todo ...\n                      // const textHtml = clipboardData.getData('text/html');\n                      // console.log(textHtml);\n                    } else if (clipboardType === 'Files') {// Array.from(clipboardData.files).forEach((file) => {\n                      //     const { type } = file;\n                      //     if (type === 'image/png' || type === 'image/jpeg' || type === 'image/jpg') {\n                      //         const item = {\n                      //             id: uuid(),\n                      //             type: 'image',\n                      //             file,\n                      //             superType: 'image',\n                      //         };\n                      //         this.handler.add(item, true);\n                      //     } else {\n                      //         console.error('Not supported file type');\n                      //     }\n                      // });\n                    }\n                  });\n                }\n\n                return _context.abrupt(\"return\", true);\n\n              case 7:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }));\n\n      return function (_x) {\n        return _ref4.apply(this, arguments);\n      };\n    }();\n\n    this.keydown = function (e) {\n      var _this$handler3 = _this.handler,\n          keyEvent = _this$handler3.keyEvent,\n          editable = _this$handler3.editable;\n\n      if (!Object.keys(keyEvent).length) {\n        return;\n      }\n\n      var clipboard = keyEvent.clipboard,\n          grab = keyEvent.grab;\n\n      if (_this.handler.interactionHandler.isDrawingMode()) {\n        if (_this.handler.shortcutHandler.isEscape(e)) {\n          if (_this.handler.interactionMode === 'polygon') {\n            _this.handler.drawingHandler.polygon.finish();\n          } else if (_this.handler.interactionMode === 'line') {\n            _this.handler.drawingHandler.line.finish();\n          } else if (_this.handler.interactionMode === 'arrow') {\n            _this.handler.drawingHandler.arrow.finish();\n          } else if (_this.handler.interactionMode === 'link') {\n            _this.handler.linkHandler.finish();\n          }\n        }\n\n        return;\n      }\n\n      if (_this.handler.shortcutHandler.isW(e) && grab) {\n        _this.code = e.code;\n\n        _this.handler.interactionHandler.grab();\n\n        return;\n      }\n\n      if (e.altKey && editable && grab) {\n        _this.handler.interactionHandler.grab();\n\n        return;\n      }\n\n      if (_this.handler.shortcutHandler.isEscape(e)) {\n        if (_this.handler.interactionMode === 'selection') {\n          _this.handler.canvas.discardActiveObject();\n\n          _this.handler.canvas.renderAll();\n        }\n\n        _this.handler.tooltipHandler.hide();\n      }\n\n      if (_this.handler.canvas.wrapperEl !== document.activeElement) {\n        return;\n      }\n\n      if (editable) {\n        if (_this.handler.shortcutHandler.isQ(e)) {\n          _this.code = e.code;\n        } else if (_this.handler.shortcutHandler.isDelete(e)) {\n          _this.handler.remove();\n        } else if (_this.handler.shortcutHandler.isArrow(e)) {\n          _this.arrowmoving(e);\n        } else if (_this.handler.shortcutHandler.isCtrlA(e)) {\n          e.preventDefault();\n\n          _this.handler.selectAll();\n        } else if (_this.handler.shortcutHandler.isCtrlC(e)) {\n          e.preventDefault();\n\n          _this.handler.copy();\n        } else if (_this.handler.shortcutHandler.isCtrlV(e) && !clipboard) {\n          e.preventDefault();\n\n          _this.handler.paste();\n        } else if (_this.handler.shortcutHandler.isCtrlX(e)) {\n          e.preventDefault();\n\n          _this.handler.cut();\n        } else if (_this.handler.shortcutHandler.isCtrlZ(e)) {\n          e.preventDefault();\n\n          _this.handler.transactionHandler.undo();\n        } else if (_this.handler.shortcutHandler.isCtrlY(e)) {\n          e.preventDefault();\n\n          _this.handler.transactionHandler.redo();\n        } else if (_this.handler.shortcutHandler.isPlus(e)) {\n          e.preventDefault();\n\n          _this.handler.zoomHandler.zoomIn();\n        } else if (_this.handler.shortcutHandler.isMinus(e)) {\n          e.preventDefault();\n\n          _this.handler.zoomHandler.zoomOut();\n        } else if (_this.handler.shortcutHandler.isO(e)) {\n          e.preventDefault();\n\n          _this.handler.zoomHandler.zoomOneToOne();\n        } else if (_this.handler.shortcutHandler.isP(e)) {\n          e.preventDefault();\n\n          _this.handler.zoomHandler.zoomToFit();\n        }\n\n        return;\n      }\n\n      return;\n    };\n\n    this.keyup = function (e) {\n      if (_this.handler.interactionHandler.isDrawingMode()) {\n        return;\n      }\n\n      if (!_this.handler.shortcutHandler.isW(e)) {\n        _this.handler.interactionHandler.selection();\n      }\n    };\n\n    this.contextmenu = function (e) {\n      e.preventDefault();\n      var _this$handler4 = _this.handler,\n          editable = _this$handler4.editable,\n          onContext = _this$handler4.onContext;\n\n      if (editable && onContext) {\n        var target = _this.handler.canvas.findTarget(e, false);\n\n        if (target && target.type !== 'activeSelection') {\n          _this.handler.select(target);\n        }\n\n        _this.handler.contextmenuHandler.show(e, target);\n      }\n    };\n\n    this.onmousedown = function (_e) {\n      _this.handler.contextmenuHandler.hide();\n    };\n\n    this.handler = handler;\n    this.initialize();\n  }\n  /**\n   * Attch event on document\n   *\n   */\n\n\n  createClass_default()(EventHandler, [{\n    key: \"initialize\",\n    value: function initialize() {\n      if (this.handler.editable) {\n        // @ts-ignore\n        this.handler.canvas.on({\n          'object:modified': this.modified,\n          'object:scaling': this.scaling,\n          'object:scaled': this.scaled,\n          'object:moving': this.moving,\n          'object:moved': this.moved,\n          'object:rotating': this.rotating,\n          'object:rotated': this.rotated,\n          'mouse:wheel': this.mousewheel,\n          'mouse:down': this.mousedown,\n          'mouse:move': this.mousemove,\n          'mouse:up': this.mouseup,\n          'selection:cleared': this.selection,\n          'selection:created': this.selection,\n          'selection:updated': this.selection\n        });\n      } else {\n        // @ts-ignore\n        this.handler.canvas.on({\n          'mouse:down': this.mousedown,\n          'mouse:move': this.mousemove,\n          'mouse:out': this.mouseout,\n          'mouse:up': this.mouseup,\n          'mouse:wheel': this.mousewheel\n        });\n      }\n\n      this.handler.canvas.wrapperEl.tabIndex = 1000;\n      this.handler.canvas.wrapperEl.addEventListener('keydown', this.keydown, false);\n      this.handler.canvas.wrapperEl.addEventListener('keyup', this.keyup, false);\n      this.handler.canvas.wrapperEl.addEventListener('mousedown', this.onmousedown, false);\n      this.handler.canvas.wrapperEl.addEventListener('contextmenu', this.contextmenu, false);\n\n      if (this.handler.keyEvent.clipboard) {\n        document.addEventListener('paste', this.paste, false);\n      }\n    }\n    /**\n     * Detach event on document\n     *\n     */\n\n  }]);\n\n  return EventHandler;\n}();\n\n/* harmony default export */ var handlers_EventHandler = (EventHandler_EventHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/DrawingHandler.ts\n\n\n\n\n\n\n\n\n\n\nvar DrawingHandler_DrawingHandler = /*#__PURE__*/createClass_default()(function DrawingHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, DrawingHandler);\n\n  this.handler = void 0;\n  this.polygon = {\n    init: function init() {\n      _this.handler.interactionHandler.drawing('polygon');\n\n      _this.handler.pointArray = [];\n      _this.handler.lineArray = [];\n      _this.handler.activeLine = null;\n      _this.handler.activeShape = null;\n    },\n    finish: function finish() {\n      _this.handler.pointArray.forEach(function (point) {\n        _this.handler.canvas.remove(point);\n      });\n\n      _this.handler.lineArray.forEach(function (line) {\n        _this.handler.canvas.remove(line);\n      });\n\n      _this.handler.canvas.remove(_this.handler.activeLine);\n\n      _this.handler.canvas.remove(_this.handler.activeShape);\n\n      _this.handler.pointArray = [];\n      _this.handler.lineArray = [];\n      _this.handler.activeLine = null;\n      _this.handler.activeShape = null;\n\n      _this.handler.canvas.renderAll();\n\n      _this.handler.interactionHandler.selection();\n    },\n    addPoint: function addPoint(opt) {\n      var e = opt.e,\n          absolutePointer = opt.absolutePointer;\n      var x = absolutePointer.x,\n          y = absolutePointer.y;\n      var circle = new fabric[\"fabric\"].Circle({\n        radius: 1,\n        fill: '#ffffff',\n        stroke: '#333333',\n        strokeWidth: 0.5,\n        left: x,\n        top: y,\n        selectable: false,\n        hasBorders: false,\n        hasControls: false,\n        originX: 'center',\n        originY: 'center',\n        hoverCursor: 'pointer'\n      });\n      circle.set({\n        id: ulid()\n      });\n\n      if (!_this.handler.pointArray.length) {\n        circle.set({\n          fill: 'red'\n        });\n      }\n\n      var points = [x, y, x, y];\n      var line = new fabric[\"fabric\"].Line(points, {\n        strokeWidth: 1,\n        fill: '#999999',\n        stroke: '#999999',\n        originX: 'center',\n        originY: 'center',\n        selectable: false,\n        hasBorders: false,\n        hasControls: false,\n        evented: false\n      });\n      line.set({\n        \"class\": 'line'\n      });\n\n      if (_this.handler.activeShape) {\n        var position = _this.handler.canvas.getPointer(e);\n\n        var activeShapePoints = _this.handler.activeShape.get('points');\n\n        activeShapePoints.push({\n          x: position.x,\n          y: position.y\n        });\n        var polygon = new fabric[\"fabric\"].Polygon(activeShapePoints, {\n          stroke: '#333333',\n          strokeWidth: 1,\n          fill: '#cccccc',\n          opacity: 0.1,\n          selectable: false,\n          hasBorders: false,\n          hasControls: false,\n          evented: false\n        });\n\n        _this.handler.canvas.remove(_this.handler.activeShape);\n\n        _this.handler.canvas.add(polygon);\n\n        _this.handler.activeShape = polygon;\n\n        _this.handler.canvas.renderAll();\n      } else {\n        var polyPoint = [{\n          x: x,\n          y: y\n        }];\n\n        var _polygon = new fabric[\"fabric\"].Polygon(polyPoint, {\n          stroke: '#333333',\n          strokeWidth: 1,\n          fill: '#cccccc',\n          opacity: 0.1,\n          selectable: false,\n          hasBorders: false,\n          hasControls: false,\n          evented: false\n        });\n\n        _this.handler.activeShape = _polygon;\n\n        _this.handler.canvas.add(_polygon);\n      }\n\n      _this.handler.activeLine = line;\n\n      _this.handler.pointArray.push(circle);\n\n      _this.handler.lineArray.push(line);\n\n      _this.handler.canvas.add(line);\n\n      _this.handler.canvas.add(circle);\n    },\n    generate: function generate(pointArray) {\n      var points = [];\n      var id = ulid();\n      pointArray.forEach(function (point) {\n        points.push({\n          x: point.left,\n          y: point.top\n        });\n\n        _this.handler.canvas.remove(point);\n      });\n\n      _this.handler.lineArray.forEach(function (line) {\n        _this.handler.canvas.remove(line);\n      });\n\n      _this.handler.canvas.remove(_this.handler.activeShape).remove(_this.handler.activeLine);\n\n      var option = {\n        id: id,\n        points: points,\n        type: 'polygon',\n        stroke: 'rgba(0, 0, 0, 1)',\n        strokeWidth: 1,\n        fill: 'rgba(0, 0, 0, 0.25)',\n        opacity: 1,\n        objectCaching: !_this.handler.editable,\n        name: 'New polygon',\n        superType: 'drawing'\n      };\n\n      _this.handler.add(option, false);\n\n      _this.handler.pointArray = [];\n      _this.handler.activeLine = null;\n      _this.handler.activeShape = null;\n\n      _this.handler.interactionHandler.selection();\n    } // TODO... polygon resize\n    // createResize: (target, points) => {\n    //     points.forEach((point, index) => {\n    //         const { x, y } = point;\n    //         const circle = new fabric.Circle({\n    //             name: index,\n    //             radius: 3,\n    //             fill: '#ffffff',\n    //             stroke: '#333333',\n    //             strokeWidth: 0.5,\n    //             left: x,\n    //             top: y,\n    //             hasBorders: false,\n    //             hasControls: false,\n    //             originX: 'center',\n    //             originY: 'center',\n    //             hoverCursor: 'pointer',\n    //             parentId: target.id,\n    //         });\n    //         this.handler.pointArray.push(circle);\n    //     });\n    //     const group = [target].concat(this.pointArray);\n    //     this.handler.canvas.add(new fabric.Group(group, { type: 'polygon', id: ulid() }));\n    // },\n    // removeResize: () => {\n    //     if (this.handler.pointArray) {\n    //         this.handler.pointArray.forEach((point) => {\n    //             this.handler.canvas.remove(point);\n    //         });\n    //         this.handler.pointArray = [];\n    //     }\n    // },\n    // movingResize: (target, e) => {\n    //     const points = target.diffPoints || target.points;\n    //     const diffPoints = [];\n    //     points.forEach((point) => {\n    //         diffPoints.push({\n    //             x: point.x + e.movementX,\n    //             y: point.y + e.movementY,\n    //         });\n    //     });\n    //     target.set({\n    //         diffPoints,\n    //     });\n    //     this.handler.canvas.renderAll();\n    // },\n\n  };\n  this.line = {\n    init: function init() {\n      _this.handler.interactionHandler.drawing('line');\n\n      _this.handler.pointArray = [];\n      _this.handler.activeLine = null;\n    },\n    finish: function finish() {\n      _this.handler.pointArray.forEach(function (point) {\n        _this.handler.canvas.remove(point);\n      });\n\n      _this.handler.canvas.remove(_this.handler.activeLine);\n\n      _this.handler.pointArray = [];\n      _this.handler.activeLine = null;\n\n      _this.handler.canvas.renderAll();\n\n      _this.handler.interactionHandler.selection();\n    },\n    addPoint: function addPoint(opt) {\n      var absolutePointer = opt.absolutePointer;\n      var x = absolutePointer.x,\n          y = absolutePointer.y;\n      var circle = new fabric[\"fabric\"].Circle({\n        radius: 3,\n        fill: '#ffffff',\n        stroke: '#333333',\n        strokeWidth: 0.5,\n        left: x,\n        top: y,\n        selectable: false,\n        hasBorders: false,\n        hasControls: false,\n        originX: 'center',\n        originY: 'center',\n        hoverCursor: 'pointer'\n      });\n\n      if (!_this.handler.pointArray.length) {\n        circle.set({\n          fill: 'red'\n        });\n      }\n\n      var points = [x, y, x, y];\n      _this.handler.activeLine = new objects_Line(points, {\n        strokeWidth: 2,\n        fill: '#999999',\n        stroke: '#999999',\n        originX: 'center',\n        originY: 'center',\n        selectable: false,\n        hasBorders: false,\n        hasControls: false,\n        evented: false\n      });\n\n      _this.handler.activeLine.set({\n        \"class\": 'line'\n      });\n\n      _this.handler.pointArray.push(circle);\n\n      _this.handler.canvas.add(_this.handler.activeLine);\n\n      _this.handler.canvas.add(circle);\n    },\n    generate: function generate(opt) {\n      var absolutePointer = opt.absolutePointer;\n      var x = absolutePointer.x,\n          y = absolutePointer.y;\n      var points = [];\n      var id = ulid();\n\n      _this.handler.pointArray.forEach(function (point) {\n        points = points.concat(point.left, point.top, x, y);\n\n        _this.handler.canvas.remove(point);\n      });\n\n      _this.handler.canvas.remove(_this.handler.activeLine);\n\n      var option = {\n        id: id,\n        points: points,\n        type: 'line',\n        stroke: 'rgba(0, 0, 0, 1)',\n        strokeWidth: 3,\n        opacity: 1,\n        objectCaching: !_this.handler.editable,\n        name: 'New line',\n        superType: 'drawing'\n      };\n\n      _this.handler.add(option, false);\n\n      _this.handler.pointArray = [];\n      _this.handler.activeLine = null;\n\n      _this.handler.interactionHandler.selection();\n    }\n  };\n  this.arrow = {\n    init: function init() {\n      _this.handler.interactionHandler.drawing('arrow');\n\n      _this.handler.pointArray = [];\n      _this.handler.activeLine = null;\n    },\n    finish: function finish() {\n      _this.handler.pointArray.forEach(function (point) {\n        _this.handler.canvas.remove(point);\n      });\n\n      _this.handler.canvas.remove(_this.handler.activeLine);\n\n      _this.handler.pointArray = [];\n      _this.handler.activeLine = null;\n\n      _this.handler.canvas.renderAll();\n\n      _this.handler.interactionHandler.selection();\n    },\n    addPoint: function addPoint(opt) {\n      var absolutePointer = opt.absolutePointer;\n      var x = absolutePointer.x,\n          y = absolutePointer.y;\n      var circle = new fabric[\"fabric\"].Circle({\n        radius: 3,\n        fill: '#ffffff',\n        stroke: '#333333',\n        strokeWidth: 0.5,\n        left: x,\n        top: y,\n        selectable: false,\n        hasBorders: false,\n        hasControls: false,\n        originX: 'center',\n        originY: 'center',\n        hoverCursor: 'pointer'\n      });\n\n      if (!_this.handler.pointArray.length) {\n        circle.set({\n          fill: 'red'\n        });\n      }\n\n      var points = [x, y, x, y];\n      _this.handler.activeLine = new objects_Arrow(points, {\n        strokeWidth: 2,\n        fill: '#999999',\n        stroke: '#999999',\n        \"class\": 'line',\n        originX: 'center',\n        originY: 'center',\n        selectable: false,\n        hasBorders: false,\n        hasControls: false,\n        evented: false\n      });\n\n      _this.handler.pointArray.push(circle);\n\n      _this.handler.canvas.add(_this.handler.activeLine);\n\n      _this.handler.canvas.add(circle);\n    },\n    generate: function generate(opt) {\n      var absolutePointer = opt.absolutePointer;\n      var x = absolutePointer.x,\n          y = absolutePointer.y;\n      var points = [];\n\n      _this.handler.pointArray.forEach(function (point) {\n        points = points.concat(point.left, point.top, x, y);\n\n        _this.handler.canvas.remove(point);\n      });\n\n      _this.handler.canvas.remove(_this.handler.activeLine);\n\n      var option = {\n        id: ulid(),\n        points: points,\n        type: 'arrow',\n        stroke: 'rgba(0, 0, 0, 1)',\n        strokeWidth: 3,\n        opacity: 1,\n        objectCaching: !_this.handler.editable,\n        name: 'New line',\n        superType: 'drawing'\n      };\n\n      _this.handler.add(option, false);\n\n      _this.handler.pointArray = [];\n      _this.handler.activeLine = null;\n\n      _this.handler.interactionHandler.selection();\n    }\n  };\n  this.orthogonal = {};\n  this.curve = {};\n  this.handler = handler;\n});\n\n/* harmony default export */ var handlers_DrawingHandler = (DrawingHandler_DrawingHandler);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.includes.js\nvar es_array_includes = __webpack_require__(240);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.includes.js\nvar es_string_includes = __webpack_require__(248);\n\n// CONCATENATED MODULE: ./src/canvas/handlers/ShortcutHandler.ts\n\n\n\n\n\n/**\n * Shortcut Handler Class\n *\n * @author salgum1114\n * @class ShortcutHandler\n */\n\nvar ShortcutHandler_ShortcutHandler = /*#__PURE__*/createClass_default()(function ShortcutHandler(handler) {\n  var _this = this;\n\n  classCallCheck_default()(this, ShortcutHandler);\n\n  this.handler = void 0;\n  this.keyEvent = void 0;\n\n  this.isEscape = function (e) {\n    return e.code === code_namespaceObject.ESCAPE && _this.keyEvent.esc;\n  };\n\n  this.isQ = function (e) {\n    return e.code === code_namespaceObject.KEY_Q;\n  };\n\n  this.isW = function (e) {\n    return e.code === code_namespaceObject.KEY_W;\n  };\n\n  this.isDelete = function (e) {\n    return (e.code === code_namespaceObject.BACKSPACE || e.code === code_namespaceObject.DELETE) && _this.keyEvent.del;\n  };\n\n  this.isArrow = function (e) {\n    return e.code.includes('Arrow') && _this.keyEvent.move;\n  };\n\n  this.isCtrlA = function (e) {\n    return (e.ctrlKey || e.metaKey) && e.code === code_namespaceObject.KEY_A && _this.keyEvent.all;\n  };\n\n  this.isCtrlC = function (e) {\n    return (e.ctrlKey || e.metaKey) && e.code === code_namespaceObject.KEY_C && _this.keyEvent.copy;\n  };\n\n  this.isCtrlV = function (e) {\n    return (e.ctrlKey || e.metaKey) && e.code === code_namespaceObject.KEY_V && _this.keyEvent.paste;\n  };\n\n  this.isCtrlZ = function (e) {\n    return (e.ctrlKey || e.metaKey) && e.code === code_namespaceObject.KEY_Z && _this.keyEvent.transaction;\n  };\n\n  this.isCtrlY = function (e) {\n    return (e.ctrlKey || e.metaKey) && e.code === code_namespaceObject.KEY_Y && _this.keyEvent.transaction;\n  };\n\n  this.isPlus = function (e) {\n    return e.code === code_namespaceObject.EQUAL && _this.keyEvent.zoom;\n  };\n\n  this.isMinus = function (e) {\n    return e.code === code_namespaceObject.MINUS && _this.keyEvent.zoom;\n  };\n\n  this.isO = function (e) {\n    return e.code === code_namespaceObject.KEY_O && _this.keyEvent.zoom;\n  };\n\n  this.isP = function (e) {\n    return e.code === code_namespaceObject.KEY_P && _this.keyEvent.zoom;\n  };\n\n  this.isCtrlX = function (e) {\n    return (e.ctrlKey || e.metaKey) && e.code === code_namespaceObject.KEY_X && _this.keyEvent.cut;\n  };\n\n  this.handler = handler;\n  this.keyEvent = handler.keyEvent;\n}\n/**\n * Whether keydown Escape\n *\n * @param {KeyboardEvent} e\n * @returns\n */\n);\n\n/* harmony default export */ var handlers_ShortcutHandler = (ShortcutHandler_ShortcutHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/CustomHandler.ts\n\n\n\nvar CustomHandler_CustomHandler = /*#__PURE__*/function () {\n  function CustomHandler(handler) {\n    classCallCheck_default()(this, CustomHandler);\n\n    this.handler = void 0;\n    this.handler = handler;\n    this.initialze();\n  }\n\n  createClass_default()(CustomHandler, [{\n    key: \"initialze\",\n    value: function initialze() {}\n  }]);\n\n  return CustomHandler;\n}();\n\n/* harmony default export */ var handlers_CustomHandler = (CustomHandler_CustomHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/FiberHandler.ts\n\n\n\n\n\n\n\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\nvar FiberHandler_FiberHandler = /*#__PURE__*/function (_CustomHandler) {\n  inherits_default()(FiberHandler, _CustomHandler);\n\n  var _super = _createSuper(FiberHandler);\n\n  function FiberHandler() {\n    classCallCheck_default()(this, FiberHandler);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(FiberHandler, [{\n    key: \"initialze\",\n    value: function initialze() {\n      this.handler.canvas.on('mouse:down', this.mousedown);\n    }\n  }, {\n    key: \"mousedown\",\n    value: function mousedown(opt) {\n      var subTargets = opt.subTargets;\n\n      if (subTargets.length) {\n        var target = subTargets[0];\n        console.log(target);\n\n        if (target.type === 'container') {} else if (target.type === 'coreContainer') {}\n      }\n    }\n  }]);\n\n  return FiberHandler;\n}(handlers_CustomHandler);\n\n/* harmony default export */ var handlers_FiberHandler = (FiberHandler_FiberHandler);\n// CONCATENATED MODULE: ./src/canvas/handlers/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// CONCATENATED MODULE: ./src/canvas/CanvasObject.ts\n\n\n\n\n\n\n\n\n\n\n\n\nvar CanvasObject_excluded = [\"objects\"],\n    _excluded2 = [\"text\"],\n    _excluded3 = [\"text\"],\n    _excluded4 = [\"element\"],\n    _excluded5 = [\"points\"],\n    _excluded6 = [\"points\"],\n    _excluded7 = [\"points\"],\n    _excluded8 = [\"code\"],\n    _excluded9 = [\"src\"],\n    _excluded10 = [\"src\", \"file\"];\n\nfunction CanvasObject_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction CanvasObject_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? CanvasObject_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : CanvasObject_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\nvar createCanvasObject = function createCanvasObject(objectSchema) {\n  return objectSchema;\n};\nvar CanvasObject = {\n  group: {\n    create: function create(_ref) {\n      var objects = _ref.objects,\n          option = helpers_objectWithoutProperties_default()(_ref, CanvasObject_excluded);\n\n      return new fabric[\"fabric\"].Group(objects, option);\n    }\n  },\n  'i-text': {\n    create: function create(_ref2) {\n      var text = _ref2.text,\n          option = helpers_objectWithoutProperties_default()(_ref2, _excluded2);\n\n      return new fabric[\"fabric\"].IText(text, option);\n    }\n  },\n  textbox: {\n    create: function create(_ref3) {\n      var text = _ref3.text,\n          option = helpers_objectWithoutProperties_default()(_ref3, _excluded3);\n\n      return new fabric[\"fabric\"].Textbox(text, option);\n    }\n  },\n  triangle: {\n    create: function create(option) {\n      return new fabric[\"fabric\"].Triangle(option);\n    }\n  },\n  circle: {\n    create: function create(option) {\n      return new fabric[\"fabric\"].Circle(option);\n    }\n  },\n  rect: {\n    create: function create(option) {\n      return new fabric[\"fabric\"].Rect(option);\n    }\n  },\n  cube: {\n    create: function create(option) {\n      return new objects_Cube(option);\n    }\n  },\n  image: {\n    create: function create(_ref4) {\n      var _ref4$element = _ref4.element,\n          element = _ref4$element === void 0 ? new Image() : _ref4$element,\n          option = helpers_objectWithoutProperties_default()(_ref4, _excluded4);\n\n      return new fabric[\"fabric\"].Image(element, CanvasObject_objectSpread(CanvasObject_objectSpread({}, option), {}, {\n        crossOrigin: 'anonymous'\n      }));\n    }\n  },\n  polygon: {\n    create: function create(_ref5) {\n      var points = _ref5.points,\n          option = helpers_objectWithoutProperties_default()(_ref5, _excluded5);\n\n      return new fabric[\"fabric\"].Polygon(points, CanvasObject_objectSpread(CanvasObject_objectSpread({}, option), {}, {\n        perPixelTargetFind: true\n      }));\n    }\n  },\n  line: {\n    create: function create(_ref6) {\n      var points = _ref6.points,\n          option = helpers_objectWithoutProperties_default()(_ref6, _excluded6);\n\n      return new objects_Line(points, option);\n    }\n  },\n  arrow: {\n    create: function create(_ref7) {\n      var points = _ref7.points,\n          option = helpers_objectWithoutProperties_default()(_ref7, _excluded7);\n\n      return new objects_Arrow(points, option);\n    }\n  },\n  chart: {\n    create: function create(option) {\n      return new objects_Chart(option.chartOption || {\n        xAxis: {},\n        yAxis: {},\n        series: [{\n          type: 'line',\n          data: [[0, 1], [1, 2], [2, 3], [3, 4]]\n        }]\n      }, option);\n    }\n  },\n  element: {\n    create: function create(_ref8) {\n      var code = _ref8.code,\n          option = helpers_objectWithoutProperties_default()(_ref8, _excluded8);\n\n      return new objects_Element(code, option);\n    }\n  },\n  iframe: {\n    create: function create(_ref9) {\n      var src = _ref9.src,\n          option = helpers_objectWithoutProperties_default()(_ref9, _excluded9);\n\n      return new objects_Iframe(src, option);\n    }\n  },\n  video: {\n    create: function create(_ref10) {\n      var src = _ref10.src,\n          file = _ref10.file,\n          option = helpers_objectWithoutProperties_default()(_ref10, _excluded10);\n\n      return new objects_Video(src || file, option);\n    }\n  },\n  gif: {\n    create: function create(option) {\n      return new objects_Gif(option);\n    }\n  },\n  node: {\n    create: function create(option) {\n      return new objects_Node(option);\n    }\n  },\n  link: {\n    create: function create(fromNode, fromPort, toNode, toPort, option) {\n      return new objects_Link(fromNode, fromPort, toNode, toPort, option);\n    }\n  },\n  curvedLink: {\n    create: function create(fromNode, fromPort, toNode, toPort, option) {\n      return new objects_CurvedLink(fromNode, fromPort, toNode, toPort, option);\n    }\n  },\n  orthogonalLink: {\n    create: function create(fromNode, fromPort, toNode, toPort, option) {\n      return new objects_OrthogonalLink(fromNode, fromPort, toNode, toPort, option);\n    }\n  },\n  svg: {\n    create: function create(option) {\n      return new objects_Svg(option);\n    }\n  }\n};\n/* harmony default export */ var canvas_CanvasObject = (CanvasObject);\n// CONCATENATED MODULE: ./src/canvas/handlers/Handler.ts\n\n\n\n\n\n\n\n\n\nvar Handler_excluded = [\"objects\"],\n    Handler_excluded2 = [\"filters\", \"src\", \"file\"];\n\n\nfunction Handler_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction Handler_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? Handler_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : Handler_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Main handler for Canvas\n * @class Handler\n * @implements {HandlerOptions}\n */\nvar Handler_Handler = /*#__PURE__*/function () {\n  /**\n   * Copied object\n   *\n   * @private\n   * @type {*}\n   */\n  function Handler(_options) {\n    var _this = this;\n\n    classCallCheck_default()(this, Handler);\n\n    this.id = void 0;\n    this.canvas = void 0;\n    this.workarea = void 0;\n    this.container = void 0;\n    this.editable = void 0;\n    this.interactionMode = void 0;\n    this.minZoom = void 0;\n    this.maxZoom = void 0;\n    this.propertiesToInclude = defaults_namespaceObject.propertiesToInclude;\n    this.workareaOption = defaults_namespaceObject.workareaOption;\n    this.canvasOption = defaults_namespaceObject.canvasOption;\n    this.gridOption = defaults_namespaceObject.gridOption;\n    this.objectOption = defaults_namespaceObject.objectOption;\n    this.guidelineOption = defaults_namespaceObject.guidelineOption;\n    this.keyEvent = defaults_namespaceObject.keyEvent;\n    this.activeSelectionOption = defaults_namespaceObject.activeSelectionOption;\n    this.fabricObjects = canvas_CanvasObject;\n    this.zoomEnabled = void 0;\n    this.width = void 0;\n    this.height = void 0;\n    this.onAdd = void 0;\n    this.onContext = void 0;\n    this.onTooltip = void 0;\n    this.onZoom = void 0;\n    this.onClick = void 0;\n    this.onDblClick = void 0;\n    this.onModified = void 0;\n    this.onSelect = void 0;\n    this.onRemove = void 0;\n    this.onTransaction = void 0;\n    this.onInteraction = void 0;\n    this.onLoad = void 0;\n    this.imageHandler = void 0;\n    this.chartHandler = void 0;\n    this.elementHandler = void 0;\n    this.cropHandler = void 0;\n    this.animationHandler = void 0;\n    this.contextmenuHandler = void 0;\n    this.tooltipHandler = void 0;\n    this.zoomHandler = void 0;\n    this.workareaHandler = void 0;\n    this.interactionHandler = void 0;\n    this.transactionHandler = void 0;\n    this.gridHandler = void 0;\n    this.portHandler = void 0;\n    this.linkHandler = void 0;\n    this.nodeHandler = void 0;\n    this.alignmentHandler = void 0;\n    this.guidelineHandler = void 0;\n    this.eventHandler = void 0;\n    this.drawingHandler = void 0;\n    this.shortcutHandler = void 0;\n    this.handlers = {};\n    this.objectMap = {};\n    this.objects = void 0;\n    this.activeLine = void 0;\n    this.activeShape = void 0;\n    this.zoom = 1;\n    this.prevTarget = void 0;\n    this.target = void 0;\n    this.pointArray = void 0;\n    this.lineArray = void 0;\n    this.isCut = false;\n    this.isRequsetAnimFrame = false;\n    this.requestFrame = void 0;\n    this.clipboard = void 0;\n\n    this.initOption = function (options) {\n      _this.id = options.id;\n      _this.canvas = options.canvas;\n      _this.container = options.container;\n      _this.editable = options.editable;\n      _this.interactionMode = options.interactionMode;\n      _this.minZoom = options.minZoom;\n      _this.maxZoom = options.maxZoom;\n      _this.zoomEnabled = options.zoomEnabled;\n      _this.width = options.width;\n      _this.height = options.height;\n      _this.objects = [];\n\n      _this.setPropertiesToInclude(options.propertiesToInclude);\n\n      _this.setWorkareaOption(options.workareaOption);\n\n      _this.setCanvasOption(options.canvasOption);\n\n      _this.setGridOption(options.gridOption);\n\n      _this.setObjectOption(options.objectOption);\n\n      _this.setFabricObjects(options.fabricObjects);\n\n      _this.setGuidelineOption(options.guidelineOption);\n\n      _this.setActiveSelectionOption(options.activeSelectionOption);\n\n      _this.setKeyEvent(options.keyEvent);\n    };\n\n    this.initCallback = function (options) {\n      _this.onAdd = options.onAdd;\n      _this.onTooltip = options.onTooltip;\n      _this.onZoom = options.onZoom;\n      _this.onContext = options.onContext;\n      _this.onClick = options.onClick;\n      _this.onModified = options.onModified;\n      _this.onDblClick = options.onDblClick;\n      _this.onSelect = options.onSelect;\n      _this.onRemove = options.onRemove;\n      _this.onTransaction = options.onTransaction;\n      _this.onInteraction = options.onInteraction;\n      _this.onLoad = options.onLoad;\n    };\n\n    this.initHandler = function () {\n      _this.workareaHandler = new handlers_WorkareaHandler(_this);\n      _this.imageHandler = new handlers_ImageHandler(_this);\n      _this.chartHandler = new handlers_ChartHandler(_this);\n      _this.elementHandler = new handlers_ElementHandler(_this);\n      _this.cropHandler = new handlers_CropHandler(_this);\n      _this.animationHandler = new handlers_AnimationHandler(_this);\n      _this.contextmenuHandler = new handlers_ContextmenuHandler(_this);\n      _this.tooltipHandler = new handlers_TooltipHandler(_this);\n      _this.zoomHandler = new handlers_ZoomHandler(_this);\n      _this.interactionHandler = new handlers_InteractionHandler(_this);\n      _this.transactionHandler = new handlers_TransactionHandler(_this);\n      _this.gridHandler = new handlers_GridHandler(_this);\n      _this.portHandler = new handlers_PortHandler(_this);\n      _this.linkHandler = new handlers_LinkHandler(_this);\n      _this.nodeHandler = new handlers_NodeHandler(_this);\n      _this.alignmentHandler = new handlers_AlignmentHandler(_this);\n      _this.guidelineHandler = new handlers_GuidelineHandler(_this);\n      _this.eventHandler = new handlers_EventHandler(_this);\n      _this.drawingHandler = new handlers_DrawingHandler(_this);\n      _this.shortcutHandler = new handlers_ShortcutHandler(_this);\n    };\n\n    this.getObjects = function () {\n      var objects = _this.canvas.getObjects().filter(function (obj) {\n        if (obj.id === 'workarea') {\n          return false;\n        } else if (obj.id === 'grid') {\n          return false;\n        } else if (obj.superType === 'port') {\n          return false;\n        } else if (!obj.id) {\n          return false;\n        }\n\n        return true;\n      });\n\n      if (objects.length) {\n        objects.forEach(function (obj) {\n          return _this.objectMap[obj.id] = obj;\n        });\n      } else {\n        _this.objectMap = {};\n      }\n\n      return objects;\n    };\n\n    this.set = function (key, value) {\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (!activeObject) {\n        return;\n      }\n\n      if (activeObject.type === 'svg' && (key === 'fill' || key === 'stroke')) {\n        activeObject._objects.forEach(function (obj) {\n          return obj.set(key, value);\n        });\n      }\n\n      activeObject.set(key, value);\n      activeObject.setCoords();\n\n      _this.canvas.requestRenderAll();\n\n      var _ref = activeObject,\n          id = _ref.id,\n          superType = _ref.superType,\n          type = _ref.type,\n          player = _ref.player,\n          width = _ref.width,\n          height = _ref.height;\n\n      if (superType === 'element') {\n        if (key === 'visible') {\n          if (value) {\n            activeObject.element.style.display = 'block';\n          } else {\n            activeObject.element.style.display = 'none';\n          }\n        }\n\n        var _el = _this.elementHandler.findById(id); // update the element\n\n\n        _this.elementHandler.setScaleOrAngle(_el, activeObject);\n\n        _this.elementHandler.setSize(_el, activeObject);\n\n        _this.elementHandler.setPosition(_el, activeObject);\n\n        if (type === 'video' && player) {\n          player.setPlayerSize(width, height);\n        }\n      }\n\n      var onModified = _this.onModified;\n\n      if (onModified) {\n        onModified(activeObject);\n      }\n    };\n\n    this.setObject = function (option) {\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (!activeObject) {\n        return;\n      }\n\n      Object.keys(option).forEach(function (key) {\n        if (option[key] !== activeObject[key]) {\n          activeObject.set(key, option[key]);\n          activeObject.setCoords();\n        }\n      });\n\n      _this.canvas.requestRenderAll();\n\n      var id = activeObject.id,\n          superType = activeObject.superType,\n          type = activeObject.type,\n          player = activeObject.player,\n          width = activeObject.width,\n          height = activeObject.height;\n\n      if (superType === 'element') {\n        if ('visible' in option) {\n          if (option.visible) {\n            activeObject.element.style.display = 'block';\n          } else {\n            activeObject.element.style.display = 'none';\n          }\n        }\n\n        var _el2 = _this.elementHandler.findById(id); // update the element\n\n\n        _this.elementHandler.setScaleOrAngle(_el2, activeObject);\n\n        _this.elementHandler.setSize(_el2, activeObject);\n\n        _this.elementHandler.setPosition(_el2, activeObject);\n\n        if (type === 'video' && player) {\n          player.setPlayerSize(width, height);\n        }\n      }\n\n      var onModified = _this.onModified;\n\n      if (onModified) {\n        onModified(activeObject);\n      }\n    };\n\n    this.setByObject = function (obj, key, value) {\n      if (!obj) {\n        return;\n      }\n\n      if (obj.type === 'svg') {\n        if (key === 'fill') {\n          obj.setFill(value);\n        } else if (key === 'stroke') {\n          obj.setStroke(value);\n        }\n      }\n\n      obj.set(key, value);\n      obj.setCoords();\n\n      _this.canvas.renderAll();\n\n      var _ref2 = obj,\n          id = _ref2.id,\n          superType = _ref2.superType,\n          type = _ref2.type,\n          player = _ref2.player,\n          width = _ref2.width,\n          height = _ref2.height;\n\n      if (superType === 'element') {\n        if (key === 'visible') {\n          if (value) {\n            obj.element.style.display = 'block';\n          } else {\n            obj.element.style.display = 'none';\n          }\n        }\n\n        var _el3 = _this.elementHandler.findById(id); // update the element\n\n\n        _this.elementHandler.setScaleOrAngle(_el3, obj);\n\n        _this.elementHandler.setSize(_el3, obj);\n\n        _this.elementHandler.setPosition(_el3, obj);\n\n        if (type === 'video' && player) {\n          player.setPlayerSize(width, height);\n        }\n      }\n\n      var onModified = _this.onModified;\n\n      if (onModified) {\n        onModified(obj);\n      }\n    };\n\n    this.setById = function (id, key, value) {\n      var findObject = _this.findById(id);\n\n      _this.setByObject(findObject, key, value);\n    };\n\n    this.setByPartial = function (obj, option) {\n      if (!obj) {\n        return;\n      }\n\n      if (obj.type === 'svg') {\n        if (option.fill) {\n          obj.setFill(option.fill);\n        } else if (option.stroke) {\n          obj.setStroke(option.stroke);\n        }\n      }\n\n      obj.set(option);\n      obj.setCoords();\n\n      _this.canvas.renderAll();\n\n      var _ref3 = obj,\n          id = _ref3.id,\n          superType = _ref3.superType,\n          type = _ref3.type,\n          player = _ref3.player,\n          width = _ref3.width,\n          height = _ref3.height;\n\n      if (superType === 'element') {\n        if ('visible' in option) {\n          if (option.visible) {\n            obj.element.style.display = 'block';\n          } else {\n            obj.element.style.display = 'none';\n          }\n        }\n\n        var _el4 = _this.elementHandler.findById(id); // update the element\n\n\n        _this.elementHandler.setScaleOrAngle(_el4, obj);\n\n        _this.elementHandler.setSize(_el4, obj);\n\n        _this.elementHandler.setPosition(_el4, obj);\n\n        if (type === 'video' && player) {\n          player.setPlayerSize(width, height);\n        }\n      }\n    };\n\n    this.setShadow = function (option) {\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (!activeObject) {\n        return;\n      }\n\n      activeObject.set('shadow', new fabric[\"fabric\"].Shadow(option));\n\n      _this.canvas.requestRenderAll();\n\n      var onModified = _this.onModified;\n\n      if (onModified) {\n        onModified(activeObject);\n      }\n    };\n\n    this.setImage = function (obj, source) {\n      return new Promise(function (resolve) {\n        if (!source) {\n          obj.set('file', null);\n          obj.set('src', null);\n          resolve(obj.setSrc('./images/sample/transparentBg.png', function () {\n            return _this.canvas.renderAll();\n          }, {\n            dirty: true\n          }));\n        }\n\n        if (source instanceof File) {\n          var reader = new FileReader();\n\n          reader.onload = function () {\n            obj.set('file', source);\n            obj.set('src', null);\n            resolve(obj.setSrc(reader.result, function () {\n              return _this.canvas.renderAll();\n            }, {\n              dirty: true\n            }));\n          };\n\n          reader.readAsDataURL(source);\n        } else {\n          obj.set('file', null);\n          obj.set('src', source);\n          resolve(obj.setSrc(source, function () {\n            return _this.canvas.renderAll();\n          }, {\n            dirty: true\n          }));\n        }\n      });\n    };\n\n    this.setImageById = function (id, source) {\n      var findObject = _this.findById(id);\n\n      return Promise.resolve(_this.setImage(findObject, source));\n    };\n\n    this.setVisible = function (visible) {\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (!activeObject) {\n        return;\n      }\n\n      if (activeObject.superType === 'element') {\n        if (visible) {\n          activeObject.element.style.display = 'block';\n        } else {\n          activeObject.element.style.display = 'none';\n        }\n      }\n\n      activeObject.set({\n        visible: visible\n      });\n\n      _this.canvas.renderAll();\n    };\n\n    this.centerObject = function (obj, centered) {\n      if (centered) {\n        _this.canvas.centerObject(obj);\n\n        obj.setCoords();\n      } else {\n        _this.setByPartial(obj, {\n          left: obj.left / _this.canvas.getZoom() - obj.width / 2 - _this.canvas.viewportTransform[4] / _this.canvas.getZoom(),\n          top: obj.top / _this.canvas.getZoom() - obj.height / 2 - _this.canvas.viewportTransform[5] / _this.canvas.getZoom()\n        });\n      }\n    };\n\n    this.add = function (obj) {\n      var centered = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var loaded = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var group = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n      var editable = _this.editable,\n          onAdd = _this.onAdd,\n          gridOption = _this.gridOption,\n          objectOption = _this.objectOption;\n      var option = {\n        hasControls: editable,\n        hasBorders: editable,\n        selectable: editable,\n        lockMovementX: !editable,\n        lockMovementY: !editable,\n        hoverCursor: !editable ? 'pointer' : 'move'\n      };\n\n      if (obj.type === 'i-text') {\n        option.editable = false;\n      } else {\n        option.editable = editable;\n      }\n\n      if (editable && _this.workarea.layout === 'fullscreen') {\n        option.scaleX = _this.workarea.scaleX;\n        option.scaleY = _this.workarea.scaleY;\n      }\n\n      var newOption = Object.assign({}, objectOption, obj, {\n        container: _this.container.id,\n        editable: editable\n      }, option); // Individually create canvas object\n\n      if (obj.superType === 'link') {\n        return _this.linkHandler.create(newOption, loaded);\n      }\n\n      var createdObj; // Create canvas object\n\n      if (obj.type === 'image') {\n        createdObj = _this.addImage(newOption);\n      } else if (obj.type === 'group') {\n        createdObj = _this.addGroup(newOption);\n      } else {\n        createdObj = _this.fabricObjects[obj.type].create(newOption);\n      }\n\n      if (group) {\n        return createdObj;\n      }\n\n      _this.canvas.add(createdObj);\n\n      _this.objects = _this.getObjects();\n\n      if (!editable && !(obj.superType === 'element')) {\n        createdObj.on('mousedown', _this.eventHandler.object.mousedown);\n      }\n\n      if (createdObj.dblclick) {\n        createdObj.on('mousedblclick', _this.eventHandler.object.mousedblclick);\n      }\n\n      if (_this.objects.some(function (object) {\n        return object.type === 'gif';\n      })) {\n        _this.startRequestAnimFrame();\n      } else {\n        _this.stopRequestAnimFrame();\n      }\n\n      if (obj.superType !== 'drawing' && obj.superType !== 'link' && editable && !loaded) {\n        _this.centerObject(createdObj, centered);\n      }\n\n      if (createdObj.superType === 'node') {\n        _this.portHandler.create(createdObj);\n\n        if (createdObj.iconButton) {\n          _this.canvas.add(createdObj.iconButton);\n        }\n      }\n\n      if (!editable && createdObj.animation && createdObj.animation.autoplay) {\n        _this.animationHandler.play(createdObj.id);\n      }\n\n      if (createdObj.superType === 'node') {\n        createdObj.set('shadow', {\n          color: createdObj.stroke\n        });\n      }\n\n      if (gridOption.enabled) {\n        _this.gridHandler.setCoords(createdObj);\n      }\n\n      if (!_this.transactionHandler.active && !loaded) {\n        _this.transactionHandler.save('add');\n      }\n\n      if (onAdd && editable && !loaded) {\n        onAdd(createdObj);\n      }\n\n      return createdObj;\n    };\n\n    this.addGroup = function (obj) {\n      var _obj$objects = obj.objects,\n          objects = _obj$objects === void 0 ? [] : _obj$objects,\n          other = helpers_objectWithoutProperties_default()(obj, Handler_excluded);\n\n      var _objects = objects.map(function (child) {\n        return _this.add(child, false, true, true);\n      });\n\n      return new fabric[\"fabric\"].Group(_objects, other);\n    };\n\n    this.addImage = function (obj) {\n      var objectOption = _this.objectOption;\n\n      var _obj$filters = obj.filters,\n          filters = _obj$filters === void 0 ? [] : _obj$filters,\n          src = obj.src,\n          file = obj.file,\n          otherOption = helpers_objectWithoutProperties_default()(obj, Handler_excluded2);\n\n      var image = new Image(); // if (typeof src === 'string') {\n      // \timage.src = src;\n      // }\n\n      var createdObj = new fabric[\"fabric\"].Image(image, Handler_objectSpread(Handler_objectSpread({}, objectOption), otherOption));\n      createdObj.set({\n        filters: _this.imageHandler.createFilters(filters)\n      });\n\n      _this.setImage(createdObj, src || file);\n\n      return createdObj;\n    };\n\n    this.remove = function (target) {\n      var activeObject = target || _this.canvas.getActiveObject();\n\n      if (_this.prevTarget && _this.prevTarget.superType === 'link') {\n        _this.linkHandler.remove(_this.prevTarget);\n\n        if (!_this.transactionHandler.active) {\n          _this.transactionHandler.save('remove');\n        }\n\n        return;\n      }\n\n      if (!activeObject) {\n        return;\n      }\n\n      if (typeof activeObject.deletable !== 'undefined' && !activeObject.deletable) {\n        return;\n      }\n\n      if (activeObject.type !== 'activeSelection') {\n        _this.canvas.discardActiveObject();\n\n        if (activeObject.superType === 'element') {\n          _this.elementHandler.removeById(activeObject.id);\n        }\n\n        if (activeObject.superType === 'link') {\n          _this.linkHandler.remove(activeObject);\n        } else if (activeObject.superType === 'node') {\n          if (activeObject.toPort) {\n            if (activeObject.toPort.links.length) {\n              activeObject.toPort.links.forEach(function (link) {\n                _this.linkHandler.remove(link, 'from');\n              });\n            }\n\n            _this.canvas.remove(activeObject.toPort);\n          }\n\n          if (activeObject.fromPort && activeObject.fromPort.length) {\n            activeObject.fromPort.forEach(function (port) {\n              if (port.links.length) {\n                port.links.forEach(function (link) {\n                  _this.linkHandler.remove(link, 'to');\n                });\n              }\n\n              _this.canvas.remove(port);\n            });\n          }\n        }\n\n        _this.canvas.remove(activeObject);\n      } else {\n        var activeObjects = activeObject._objects;\n        var existDeleted = activeObjects.some(function (obj) {\n          return typeof obj.deletable !== 'undefined' && !obj.deletable;\n        });\n\n        if (existDeleted) {\n          return;\n        }\n\n        _this.canvas.discardActiveObject();\n\n        activeObjects.forEach(function (obj) {\n          if (obj.superType === 'element') {\n            _this.elementHandler.removeById(obj.id);\n          } else if (obj.superType === 'node') {\n            if (obj.toPort) {\n              if (obj.toPort.links.length) {\n                obj.toPort.links.forEach(function (link) {\n                  _this.linkHandler.remove(link, 'from');\n                });\n              }\n\n              _this.canvas.remove(obj.toPort);\n            }\n\n            if (obj.fromPort && obj.fromPort.length) {\n              obj.fromPort.forEach(function (port) {\n                if (port.links.length) {\n                  port.links.forEach(function (link) {\n                    _this.linkHandler.remove(link, 'to');\n                  });\n                }\n\n                _this.canvas.remove(port);\n              });\n            }\n          }\n\n          _this.canvas.remove(obj);\n        });\n      }\n\n      if (!_this.transactionHandler.active) {\n        _this.transactionHandler.save('remove');\n      }\n\n      _this.objects = _this.getObjects();\n      var onRemove = _this.onRemove;\n\n      if (onRemove) {\n        onRemove(activeObject);\n      }\n    };\n\n    this.removeById = function (id) {\n      var findObject = _this.findById(id);\n\n      if (findObject) {\n        _this.remove(findObject);\n      }\n    };\n\n    this.removeOriginById = function (id) {\n      var object = _this.findOriginByIdWithIndex(id);\n\n      if (object.index > 0) {\n        _this.objects.splice(object.index, 1);\n      }\n    };\n\n    this.duplicate = function () {\n      var onAdd = _this.onAdd,\n          propertiesToInclude = _this.propertiesToInclude,\n          _this$gridOption$grid = _this.gridOption.grid,\n          grid = _this$gridOption$grid === void 0 ? 10 : _this$gridOption$grid;\n\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (!activeObject) {\n        return;\n      }\n\n      if (typeof activeObject.cloneable !== 'undefined' && !activeObject.cloneable) {\n        return;\n      }\n\n      activeObject.clone(function (clonedObj) {\n        _this.canvas.discardActiveObject();\n\n        clonedObj.set({\n          left: clonedObj.left + grid,\n          top: clonedObj.top + grid,\n          evented: true\n        });\n\n        if (clonedObj.type === 'activeSelection') {\n          var activeSelection = clonedObj;\n          activeSelection.canvas = _this.canvas;\n          activeSelection.forEachObject(function (obj) {\n            obj.set('id', ulid());\n\n            if (obj.superType === 'node') {\n              obj.set('shadow', {\n                color: obj.stroke\n              });\n            }\n\n            _this.canvas.add(obj);\n\n            _this.objects = _this.getObjects();\n\n            if (obj.dblclick) {\n              obj.on('mousedblclick', _this.eventHandler.object.mousedblclick);\n            }\n          });\n\n          if (onAdd) {\n            onAdd(activeSelection);\n          }\n\n          activeSelection.setCoords();\n        } else {\n          if (activeObject.id === clonedObj.id) {\n            clonedObj.set('id', ulid());\n          }\n\n          if (clonedObj.superType === 'node') {\n            clonedObj.set('shadow', {\n              color: clonedObj.stroke\n            });\n          }\n\n          _this.canvas.add(clonedObj);\n\n          _this.objects = _this.getObjects();\n\n          if (clonedObj.dblclick) {\n            clonedObj.on('mousedblclick', _this.eventHandler.object.mousedblclick);\n          }\n\n          if (onAdd) {\n            onAdd(clonedObj);\n          }\n        }\n\n        _this.canvas.setActiveObject(clonedObj);\n\n        _this.portHandler.create(clonedObj);\n\n        _this.canvas.requestRenderAll();\n      }, propertiesToInclude);\n    };\n\n    this.duplicateById = function (id) {\n      var onAdd = _this.onAdd,\n          propertiesToInclude = _this.propertiesToInclude,\n          _this$gridOption$grid2 = _this.gridOption.grid,\n          grid = _this$gridOption$grid2 === void 0 ? 10 : _this$gridOption$grid2;\n\n      var findObject = _this.findById(id);\n\n      if (findObject) {\n        if (typeof findObject.cloneable !== 'undefined' && !findObject.cloneable) {\n          return false;\n        }\n\n        findObject.clone(function (cloned) {\n          cloned.set({\n            left: cloned.left + grid,\n            top: cloned.top + grid,\n            id: ulid(),\n            evented: true\n          });\n\n          _this.canvas.add(cloned);\n\n          _this.objects = _this.getObjects();\n\n          if (onAdd) {\n            onAdd(cloned);\n          }\n\n          if (cloned.dblclick) {\n            cloned.on('mousedblclick', _this.eventHandler.object.mousedblclick);\n          }\n\n          _this.canvas.setActiveObject(cloned);\n\n          _this.portHandler.create(cloned);\n\n          _this.canvas.requestRenderAll();\n        }, propertiesToInclude);\n      }\n\n      return true;\n    };\n\n    this.cut = function () {\n      _this.copy();\n\n      _this.remove();\n\n      _this.isCut = true;\n    };\n\n    this.copyToClipboard = function (value) {\n      var textarea = document.createElement('textarea');\n      document.body.appendChild(textarea);\n      textarea.value = value;\n      textarea.select();\n      document.execCommand('copy');\n      document.body.removeChild(textarea);\n\n      _this.canvas.wrapperEl.focus();\n    };\n\n    this.copy = function () {\n      var propertiesToInclude = _this.propertiesToInclude;\n\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (activeObject && activeObject.superType === 'link') {\n        return false;\n      }\n\n      if (activeObject) {\n        if (typeof activeObject.cloneable !== 'undefined' && !activeObject.cloneable) {\n          return false;\n        }\n\n        if (activeObject.type === 'activeSelection') {\n          var activeSelection = activeObject;\n\n          if (activeSelection.getObjects().some(function (obj) {\n            return obj.superType === 'node';\n          })) {\n            if (_this.keyEvent.clipboard) {\n              var links = [];\n              var objects = activeSelection.getObjects().map(function (obj, index) {\n                if (typeof obj.cloneable !== 'undefined' && !obj.cloneable) {\n                  return null;\n                }\n\n                if (obj.fromPort.length) {\n                  obj.fromPort.forEach(function (port) {\n                    if (port.links.length) {\n                      port.links.forEach(function (link) {\n                        var linkTarget = {\n                          fromNodeIndex: index,\n                          fromPortId: port.id,\n                          type: 'curvedLink',\n                          superType: 'link'\n                        };\n                        var findIndex = activeSelection.getObjects().findIndex(function (compObj) {\n                          return compObj.id === link.toNode.id;\n                        });\n\n                        if (findIndex >= 0) {\n                          linkTarget.toNodeIndex = findIndex;\n                          links.push(linkTarget);\n                        }\n                      });\n                    }\n                  });\n                }\n\n                return {\n                  name: obj.name,\n                  description: obj.description,\n                  superType: obj.superType,\n                  type: obj.type,\n                  nodeClazz: obj.nodeClazz,\n                  configuration: obj.configuration,\n                  properties: {\n                    left: activeObject.left + activeObject.width / 2 + obj.left || 0,\n                    top: activeObject.top + activeObject.height / 2 + obj.top || 0,\n                    iconName: obj.descriptor.icon\n                  }\n                };\n              });\n\n              _this.copyToClipboard(JSON.stringify(objects.concat(links), null, '\\t'));\n\n              return true;\n            }\n\n            _this.clipboard = activeObject;\n            return true;\n          }\n        }\n\n        activeObject.clone(function (cloned) {\n          if (_this.keyEvent.clipboard) {\n            if (cloned.superType === 'node') {\n              var node = {\n                name: cloned.name,\n                description: cloned.description,\n                superType: cloned.superType,\n                type: cloned.type,\n                nodeClazz: cloned.nodeClazz,\n                configuration: cloned.configuration,\n                properties: {\n                  left: cloned.left || 0,\n                  top: cloned.top || 0,\n                  iconName: cloned.descriptor.icon\n                }\n              };\n              var _objects2 = [node];\n\n              _this.copyToClipboard(JSON.stringify(_objects2, null, '\\t'));\n            } else {\n              _this.copyToClipboard(JSON.stringify(cloned.toObject(propertiesToInclude), null, '\\t'));\n            }\n          } else {\n            _this.clipboard = cloned;\n          }\n        }, propertiesToInclude);\n      }\n\n      return true;\n    };\n\n    this.paste = function () {\n      var onAdd = _this.onAdd,\n          propertiesToInclude = _this.propertiesToInclude,\n          _this$gridOption$grid3 = _this.gridOption.grid,\n          grid = _this$gridOption$grid3 === void 0 ? 10 : _this$gridOption$grid3,\n          clipboard = _this.clipboard,\n          isCut = _this.isCut;\n      var padding = isCut ? 0 : grid;\n\n      if (!clipboard) {\n        return false;\n      }\n\n      if (typeof clipboard.cloneable !== 'undefined' && !clipboard.cloneable) {\n        return false;\n      }\n\n      _this.isCut = false;\n\n      if (clipboard.type === 'activeSelection') {\n        if (clipboard.getObjects().some(function (obj) {\n          return obj.superType === 'node';\n        })) {\n          _this.canvas.discardActiveObject();\n\n          var objects = [];\n          var linkObjects = [];\n          clipboard.getObjects().forEach(function (obj) {\n            if (typeof obj.cloneable !== 'undefined' && !obj.cloneable) {\n              return;\n            }\n\n            var clonedObj = obj.duplicate();\n\n            if (clonedObj.type === 'SwitchNode') {\n              clonedObj.set({\n                left: obj.left + padding + padding,\n                top: obj.top + padding\n              });\n            } else {\n              clonedObj.set({\n                left: obj.left + padding,\n                top: obj.top + padding\n              });\n            }\n\n            if (obj.fromPort.length) {\n              obj.fromPort.forEach(function (port) {\n                if (port.links.length) {\n                  port.links.forEach(function (link) {\n                    var linkTarget = {\n                      fromNode: clonedObj.id,\n                      fromPort: port.id\n                    };\n                    var findIndex = clipboard.getObjects().findIndex(function (compObj) {\n                      return compObj.id === link.toNode.id;\n                    });\n\n                    if (findIndex >= 0) {\n                      linkTarget.toNodeIndex = findIndex;\n                      linkObjects.push(linkTarget);\n                    }\n                  });\n                }\n              });\n            }\n\n            if (clonedObj.dblclick) {\n              clonedObj.on('mousedblclick', _this.eventHandler.object.mousedblclick);\n            }\n\n            _this.canvas.add(clonedObj);\n\n            _this.objects = _this.getObjects();\n\n            _this.portHandler.create(clonedObj);\n\n            objects.push(clonedObj);\n          });\n\n          if (linkObjects.length) {\n            linkObjects.forEach(function (linkObject) {\n              var fromNode = linkObject.fromNode,\n                  fromPort = linkObject.fromPort,\n                  toNodeIndex = linkObject.toNodeIndex;\n              var toNode = objects[toNodeIndex];\n              var link = {\n                type: 'curvedLink',\n                fromNodeId: fromNode,\n                fromPortId: fromPort,\n                toNodeId: toNode.id,\n                toPortId: toNode.toPort.id\n              };\n\n              _this.linkHandler.create(link);\n            });\n          }\n\n          var activeSelection = new fabric[\"fabric\"].ActiveSelection(objects, Handler_objectSpread({\n            canvas: _this.canvas\n          }, _this.activeSelectionOption));\n\n          if (isCut) {\n            _this.clipboard = null;\n          } else {\n            _this.clipboard = activeSelection;\n          }\n\n          if (!_this.transactionHandler.active) {\n            _this.transactionHandler.save('paste');\n          }\n\n          _this.canvas.setActiveObject(activeSelection);\n\n          _this.canvas.renderAll();\n\n          return true;\n        }\n      }\n\n      clipboard.clone(function (clonedObj) {\n        _this.canvas.discardActiveObject();\n\n        clonedObj.set({\n          left: clonedObj.left + padding,\n          top: clonedObj.top + padding,\n          id: isCut ? clipboard.id : ulid(),\n          evented: true\n        });\n\n        if (clonedObj.type === 'activeSelection') {\n          clonedObj.canvas = _this.canvas;\n          clonedObj.forEachObject(function (obj) {\n            obj.set('id', isCut ? obj.id : ulid());\n\n            _this.canvas.add(obj);\n\n            if (obj.dblclick) {\n              obj.on('mousedblclick', _this.eventHandler.object.mousedblclick);\n            }\n          });\n        } else {\n          if (clonedObj.superType === 'node') {\n            clonedObj = clonedObj.duplicate();\n          }\n\n          _this.canvas.add(clonedObj);\n\n          if (clonedObj.dblclick) {\n            clonedObj.on('mousedblclick', _this.eventHandler.object.mousedblclick);\n          }\n        }\n\n        var newClipboard = clipboard.set({\n          top: clonedObj.top,\n          left: clonedObj.left\n        });\n\n        if (isCut) {\n          _this.clipboard = null;\n        } else {\n          _this.clipboard = newClipboard;\n        }\n\n        if (clonedObj.superType === 'node') {\n          _this.portHandler.create(clonedObj);\n        }\n\n        if (!_this.transactionHandler.active) {\n          _this.transactionHandler.save('paste');\n        } // TODO...\n        // After toGroup svg elements not rendered.\n\n\n        _this.objects = _this.getObjects();\n\n        if (onAdd) {\n          onAdd(clonedObj);\n        }\n\n        clonedObj.setCoords();\n\n        _this.canvas.setActiveObject(clonedObj);\n\n        _this.canvas.requestRenderAll();\n      }, propertiesToInclude);\n      return true;\n    };\n\n    this.find = function (obj) {\n      return _this.findById(obj.id);\n    };\n\n    this.findById = function (id) {\n      var findObject;\n\n      var exist = _this.objects.some(function (obj) {\n        if (obj.id === id) {\n          findObject = obj;\n          return true;\n        }\n\n        return false;\n      });\n\n      if (!exist) {\n        warning_default()(true, 'Not found object by id.');\n        return null;\n      }\n\n      return findObject;\n    };\n\n    this.findOriginById = function (id) {\n      var findObject;\n\n      var exist = _this.objects.some(function (obj) {\n        if (obj.id === id) {\n          findObject = obj;\n          return true;\n        }\n\n        return false;\n      });\n\n      if (!exist) {\n        console.warn('Not found object by id.');\n        return null;\n      }\n\n      return findObject;\n    };\n\n    this.findOriginByIdWithIndex = function (id) {\n      var findObject;\n      var index = -1;\n\n      var exist = _this.objects.some(function (obj, i) {\n        if (obj.id === id) {\n          findObject = obj;\n          index = i;\n          return true;\n        }\n\n        return false;\n      });\n\n      if (!exist) {\n        console.warn('Not found object by id.');\n        return {};\n      }\n\n      return {\n        object: findObject,\n        index: index\n      };\n    };\n\n    this.select = function (obj, find) {\n      var findObject = obj;\n\n      if (find) {\n        findObject = _this.find(obj);\n      }\n\n      if (findObject) {\n        _this.canvas.discardActiveObject();\n\n        _this.canvas.setActiveObject(findObject);\n\n        _this.canvas.requestRenderAll();\n      }\n    };\n\n    this.selectById = function (id) {\n      var findObject = _this.findById(id);\n\n      if (findObject) {\n        _this.canvas.discardActiveObject();\n\n        _this.canvas.setActiveObject(findObject);\n\n        _this.canvas.requestRenderAll();\n      }\n    };\n\n    this.selectAll = function () {\n      _this.canvas.discardActiveObject();\n\n      var filteredObjects = _this.canvas.getObjects().filter(function (obj) {\n        if (obj.id === 'workarea') {\n          return false;\n        } else if (!obj.evented) {\n          return false;\n        } else if (obj.superType === 'link') {\n          return false;\n        } else if (obj.superType === 'port') {\n          return false;\n        } else if (obj.superType === 'element') {\n          return false;\n        } else if (obj.locked) {\n          return false;\n        }\n\n        return true;\n      });\n\n      if (!filteredObjects.length) {\n        return;\n      }\n\n      if (filteredObjects.length === 1) {\n        _this.canvas.setActiveObject(filteredObjects[0]);\n\n        _this.canvas.renderAll();\n\n        return;\n      }\n\n      var activeSelection = new fabric[\"fabric\"].ActiveSelection(filteredObjects, Handler_objectSpread({\n        canvas: _this.canvas\n      }, _this.activeSelectionOption));\n\n      _this.canvas.setActiveObject(activeSelection);\n\n      _this.canvas.renderAll();\n    };\n\n    this.originScaleToResize = function (obj, width, height) {\n      if (obj.id === 'workarea') {\n        _this.setByPartial(obj, {\n          workareaWidth: obj.width,\n          workareaHeight: obj.height\n        });\n      }\n\n      _this.setByPartial(obj, {\n        scaleX: width / obj.width,\n        scaleY: height / obj.height\n      });\n    };\n\n    this.scaleToResize = function (width, height) {\n      var activeObject = _this.canvas.getActiveObject();\n\n      var id = activeObject.id;\n      var obj = {\n        id: id,\n        scaleX: width / activeObject.width,\n        scaleY: height / activeObject.height\n      };\n\n      _this.setObject(obj);\n\n      activeObject.setCoords();\n\n      _this.canvas.requestRenderAll();\n    };\n\n    this.importJSON = /*#__PURE__*/function () {\n      var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regenerator_default.a.mark(function _callee(json, callback) {\n        var prevLeft, prevTop, workarea;\n        return regenerator_default.a.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                if (typeof json === 'string') {\n                  json = JSON.parse(json);\n                }\n\n                prevLeft = 0;\n                prevTop = 0;\n\n                _this.canvas.setBackgroundColor(_this.canvasOption.backgroundColor, _this.canvas.renderAll.bind(_this.canvas));\n\n                workarea = json.find(function (obj) {\n                  return obj.id === 'workarea';\n                });\n\n                if (!_this.workarea) {\n                  _this.workareaHandler.initialize();\n                }\n\n                if (!workarea) {\n                  _context.next = 15;\n                  break;\n                }\n\n                prevLeft = workarea.left;\n                prevTop = workarea.top;\n\n                _this.workarea.set(workarea);\n\n                _context.next = 12;\n                return _this.workareaHandler.setImage(workarea.src, true);\n\n              case 12:\n                _this.workarea.setCoords();\n\n                _context.next = 19;\n                break;\n\n              case 15:\n                _this.canvas.centerObject(_this.workarea);\n\n                _this.workarea.setCoords();\n\n                prevLeft = _this.workarea.left;\n                prevTop = _this.workarea.top;\n\n              case 19:\n                json.forEach(function (obj) {\n                  if (obj.id === 'workarea') {\n                    return;\n                  }\n\n                  var canvasWidth = _this.canvas.getWidth();\n\n                  var canvasHeight = _this.canvas.getHeight();\n\n                  var _this$workarea = _this.workarea,\n                      width = _this$workarea.width,\n                      height = _this$workarea.height,\n                      scaleX = _this$workarea.scaleX,\n                      scaleY = _this$workarea.scaleY,\n                      layout = _this$workarea.layout,\n                      left = _this$workarea.left,\n                      top = _this$workarea.top;\n\n                  if (layout === 'fullscreen') {\n                    var leftRatio = canvasWidth / (width * scaleX);\n                    var topRatio = canvasHeight / (height * scaleY);\n                    obj.left *= leftRatio;\n                    obj.top *= topRatio;\n                    obj.scaleX *= leftRatio;\n                    obj.scaleY *= topRatio;\n                  } else {\n                    var diffLeft = left - prevLeft;\n                    var diffTop = top - prevTop;\n                    obj.left += diffLeft;\n                    obj.top += diffTop;\n                  }\n\n                  if (obj.superType === 'element') {\n                    obj.id = ulid();\n                  }\n\n                  _this.add(obj, false, true);\n\n                  _this.canvas.renderAll();\n                });\n                _this.objects = _this.getObjects();\n\n                if (callback) {\n                  callback(_this.canvas);\n                }\n\n                return _context.abrupt(\"return\", Promise.resolve(_this.canvas));\n\n              case 23:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      }));\n\n      return function (_x, _x2) {\n        return _ref4.apply(this, arguments);\n      };\n    }();\n\n    this.exportJSON = function () {\n      return _this.canvas.toObject(_this.propertiesToInclude).objects;\n    };\n\n    this.toGroup = function (target) {\n      var activeObject = target || _this.canvas.getActiveObject();\n\n      if (!activeObject) {\n        return null;\n      }\n\n      if (activeObject.type !== 'activeSelection') {\n        return null;\n      }\n\n      var group = activeObject.toGroup();\n      group.set(Handler_objectSpread({\n        id: ulid(),\n        name: 'New group',\n        type: 'group'\n      }, _this.objectOption));\n      _this.objects = _this.getObjects();\n\n      if (!_this.transactionHandler.active) {\n        _this.transactionHandler.save('group');\n      }\n\n      if (_this.onSelect) {\n        _this.onSelect(group);\n      }\n\n      _this.canvas.renderAll();\n\n      return group;\n    };\n\n    this.toActiveSelection = function (target) {\n      var activeObject = target || _this.canvas.getActiveObject();\n\n      if (!activeObject) {\n        return;\n      }\n\n      if (activeObject.type !== 'group') {\n        return;\n      }\n\n      var activeSelection = activeObject.toActiveSelection();\n      _this.objects = _this.getObjects();\n\n      if (!_this.transactionHandler.active) {\n        _this.transactionHandler.save('ungroup');\n      }\n\n      if (_this.onSelect) {\n        _this.onSelect(activeSelection);\n      }\n\n      _this.canvas.renderAll();\n\n      return activeSelection;\n    };\n\n    this.bringForward = function () {\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (activeObject) {\n        _this.canvas.bringForward(activeObject);\n\n        if (!_this.transactionHandler.active) {\n          _this.transactionHandler.save('bringForward');\n        }\n\n        var onModified = _this.onModified;\n\n        if (onModified) {\n          onModified(activeObject);\n        }\n      }\n    };\n\n    this.bringToFront = function () {\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (activeObject) {\n        _this.canvas.bringToFront(activeObject);\n\n        if (!_this.transactionHandler.active) {\n          _this.transactionHandler.save('bringToFront');\n        }\n\n        var onModified = _this.onModified;\n\n        if (onModified) {\n          onModified(activeObject);\n        }\n      }\n    };\n\n    this.sendBackwards = function () {\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (activeObject) {\n        var firstObject = _this.canvas.getObjects()[1];\n\n        if (firstObject.id === activeObject.id) {\n          return;\n        }\n\n        if (!_this.transactionHandler.active) {\n          _this.transactionHandler.save('sendBackwards');\n        }\n\n        _this.canvas.sendBackwards(activeObject);\n\n        var onModified = _this.onModified;\n\n        if (onModified) {\n          onModified(activeObject);\n        }\n      }\n    };\n\n    this.sendToBack = function () {\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (activeObject) {\n        _this.canvas.sendToBack(activeObject);\n\n        _this.canvas.sendToBack(_this.canvas.getObjects()[1]);\n\n        if (!_this.transactionHandler.active) {\n          _this.transactionHandler.save('sendToBack');\n        }\n\n        var onModified = _this.onModified;\n\n        if (onModified) {\n          onModified(activeObject);\n        }\n      }\n    };\n\n    this.clear = function () {\n      var includeWorkarea = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      var ids = _this.canvas.getObjects().reduce(function (prev, curr) {\n        if (curr.superType === 'element') {\n          prev.push(curr.id);\n          return prev;\n        }\n\n        return prev;\n      }, []);\n\n      _this.elementHandler.removeByIds(ids);\n\n      if (includeWorkarea) {\n        _this.canvas.clear();\n\n        _this.workarea = null;\n      } else {\n        _this.canvas.discardActiveObject();\n\n        _this.canvas.getObjects().forEach(function (obj) {\n          if (obj.id === 'grid' || obj.id === 'workarea') {\n            return;\n          }\n\n          _this.canvas.remove(obj);\n        });\n      }\n\n      _this.objects = _this.getObjects();\n\n      _this.canvas.renderAll();\n    };\n\n    this.startRequestAnimFrame = function () {\n      if (!_this.isRequsetAnimFrame) {\n        _this.isRequsetAnimFrame = true;\n\n        var render = function render() {\n          _this.canvas.renderAll();\n\n          _this.requestFrame = fabric[\"fabric\"].util.requestAnimFrame(render);\n        };\n\n        fabric[\"fabric\"].util.requestAnimFrame(render);\n      }\n    };\n\n    this.stopRequestAnimFrame = function () {\n      _this.isRequsetAnimFrame = false;\n\n      var cancelRequestAnimFrame = function () {\n        return window.cancelAnimationFrame || // || window.webkitCancelRequestAnimationFrame\n        // || window.mozCancelRequestAnimationFrame\n        // || window.oCancelRequestAnimationFrame\n        // || window.msCancelRequestAnimationFrame\n        clearTimeout;\n      }();\n\n      cancelRequestAnimFrame(_this.requestFrame);\n    };\n\n    this.saveImage = function (targetObject) {\n      var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        name: 'New Image',\n        format: 'png',\n        quality: 1\n      };\n      var dataUrl;\n      var target = targetObject;\n\n      if (target) {\n        dataUrl = target.toDataURL(option);\n      } else {\n        target = _this.canvas.getActiveObject();\n\n        if (target) {\n          dataUrl = target.toDataURL(option);\n        }\n      }\n\n      if (dataUrl) {\n        var anchorEl = document.createElement('a');\n        anchorEl.href = dataUrl;\n        anchorEl.download = \"\".concat(option.name, \".png\");\n        document.body.appendChild(anchorEl);\n        anchorEl.click();\n        anchorEl.remove();\n      }\n    };\n\n    this.saveCanvasImage = function () {\n      var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n        name: 'New Image',\n        format: 'png',\n        quality: 1\n      };\n\n      // If it's zoomed out/in, the container will also include in the image\n      // hence need to reset the zoom level.\n      _this.zoomHandler.zoomOneToOne();\n\n      var _this$workarea2 = _this.workarea,\n          left = _this$workarea2.left,\n          top = _this$workarea2.top,\n          width = _this$workarea2.width,\n          height = _this$workarea2.height;\n\n      var dataUrl = _this.canvas.toDataURL(Handler_objectSpread(Handler_objectSpread({}, option), {}, {\n        left: left,\n        top: top,\n        width: width,\n        height: height,\n        enableRetinaScaling: true\n      }));\n\n      if (dataUrl) {\n        var anchorEl = document.createElement('a');\n        anchorEl.href = dataUrl;\n        anchorEl.download = \"\".concat(option.name, \".png\");\n        document.body.appendChild(anchorEl);\n        anchorEl.click();\n        anchorEl.remove();\n      }\n    };\n\n    this.rotate = function (angle) {\n      var activeObject = _this.canvas.getActiveObject();\n\n      if (activeObject) {\n        _this.set('rotation', angle);\n\n        activeObject.rotate(angle);\n\n        _this.canvas.requestRenderAll();\n      }\n    };\n\n    this.destroy = function () {\n      _this.eventHandler.destroy();\n\n      _this.guidelineHandler.destroy();\n\n      _this.contextmenuHandler.destory();\n\n      _this.tooltipHandler.destroy();\n\n      _this.clear(true);\n    };\n\n    this.setCanvasOption = function (canvasOption) {\n      _this.canvasOption = Object.assign({}, _this.canvasOption, canvasOption);\n\n      _this.canvas.setBackgroundColor(canvasOption.backgroundColor, _this.canvas.renderAll.bind(_this.canvas));\n\n      if (typeof canvasOption.width !== 'undefined' && typeof canvasOption.height !== 'undefined') {\n        if (_this.eventHandler) {\n          _this.eventHandler.resize(canvasOption.width, canvasOption.height);\n        } else {\n          _this.canvas.setWidth(canvasOption.width).setHeight(canvasOption.height);\n        }\n      }\n\n      if (typeof canvasOption.selection !== 'undefined') {\n        _this.canvas.selection = canvasOption.selection;\n      }\n\n      if (typeof canvasOption.hoverCursor !== 'undefined') {\n        _this.canvas.hoverCursor = canvasOption.hoverCursor;\n      }\n\n      if (typeof canvasOption.defaultCursor !== 'undefined') {\n        _this.canvas.defaultCursor = canvasOption.defaultCursor;\n      }\n\n      if (typeof canvasOption.preserveObjectStacking !== 'undefined') {\n        _this.canvas.preserveObjectStacking = canvasOption.preserveObjectStacking;\n      }\n    };\n\n    this.setKeyEvent = function (keyEvent) {\n      _this.keyEvent = Object.assign({}, _this.keyEvent, keyEvent);\n    };\n\n    this.setFabricObjects = function (fabricObjects) {\n      _this.fabricObjects = Object.assign({}, _this.fabricObjects, fabricObjects);\n    };\n\n    this.setWorkareaOption = function (workareaOption) {\n      _this.workareaOption = Object.assign({}, _this.workareaOption, workareaOption);\n\n      if (_this.workarea) {\n        _this.workarea.set(Handler_objectSpread({}, workareaOption));\n      }\n    };\n\n    this.setGuidelineOption = function (guidelineOption) {\n      _this.guidelineOption = Object.assign({}, _this.guidelineOption, guidelineOption);\n\n      if (_this.guidelineHandler) {\n        _this.guidelineHandler.initialize();\n      }\n    };\n\n    this.setGridOption = function (gridOption) {\n      _this.gridOption = Object.assign({}, _this.gridOption, gridOption);\n    };\n\n    this.setObjectOption = function (objectOption) {\n      _this.objectOption = Object.assign({}, _this.objectOption, objectOption);\n    };\n\n    this.setActiveSelectionOption = function (activeSelectionOption) {\n      _this.activeSelectionOption = Object.assign({}, _this.activeSelectionOption, activeSelectionOption);\n    };\n\n    this.setPropertiesToInclude = function (propertiesToInclude) {\n      _this.propertiesToInclude = Object(lodash[\"union\"])(propertiesToInclude, _this.propertiesToInclude);\n    };\n\n    this.registerHandler = function (name, handler) {\n      _this.handlers[name] = new handler(_this);\n      return _this.handlers[name];\n    };\n\n    this.initialize(_options);\n  }\n  /**\n   * Initialize handler\n   *\n   * @author salgum1114\n   * @param {HandlerOptions} options\n   */\n\n\n  createClass_default()(Handler, [{\n    key: \"initialize\",\n    value: function initialize(options) {\n      this.initOption(options);\n      this.initCallback(options);\n      this.initHandler();\n    }\n    /**\n     * Init class fields\n     * @param {HandlerOptions} options\n     */\n\n  }]);\n\n  return Handler;\n}();\n\n/* harmony default export */ var handlers_Handler = (Handler_Handler);\n// EXTERNAL MODULE: ./src/canvas/styles/canvas.less\nvar styles_canvas = __webpack_require__(1303);\n\n// EXTERNAL MODULE: ./src/canvas/styles/contextmenu.less\nvar styles_contextmenu = __webpack_require__(1305);\n\n// EXTERNAL MODULE: ./src/canvas/styles/fabricjs.less\nvar fabricjs = __webpack_require__(1307);\n\n// EXTERNAL MODULE: ./src/canvas/styles/tooltip.less\nvar styles_tooltip = __webpack_require__(1309);\n\n// CONCATENATED MODULE: ./src/canvas/Canvas.tsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Canvas_excluded = [\"editable\", \"canvasOption\", \"width\", \"height\", \"responsive\"];\n\nfunction Canvas_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction Canvas_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? Canvas_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : Canvas_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\nfunction Canvas_createSuper(Derived) { var hasNativeReflectConstruct = Canvas_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction Canvas_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\n\n\n\nvar Canvas_InternalCanvas = /*#__PURE__*/function (_Component) {\n  inherits_default()(InternalCanvas, _Component);\n\n  var _super = Canvas_createSuper(InternalCanvas);\n\n  function InternalCanvas() {\n    var _this;\n\n    classCallCheck_default()(this, InternalCanvas);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.handler = void 0;\n    _this.canvas = void 0;\n    _this.container = void 0;\n    _this.containerRef = /*#__PURE__*/external_react_default.a.createRef();\n    _this.resizeObserver = void 0;\n    _this.state = {\n      id: ulid(),\n      loaded: false\n    };\n\n    _this.createObserver = function () {\n      _this.resizeObserver = new ResizeObserver_es[\"a\" /* default */](function (entries) {\n        var _ref = entries[0] && entries[0].contentRect || {},\n            _ref$width = _ref.width,\n            width = _ref$width === void 0 ? 0 : _ref$width,\n            _ref$height = _ref.height,\n            height = _ref$height === void 0 ? 0 : _ref$height;\n\n        _this.handler.eventHandler.resize(width, height);\n\n        if (!_this.state.loaded) {\n          _this.handleLoad();\n        }\n      });\n\n      _this.resizeObserver.observe(_this.containerRef.current);\n    };\n\n    _this.destroyObserver = function () {\n      if (_this.resizeObserver) {\n        _this.resizeObserver.disconnect();\n\n        _this.resizeObserver = null;\n      }\n    };\n\n    _this.handleLoad = function () {\n      _this.setState({\n        loaded: true\n      }, function () {\n        if (_this.props.onLoad) {\n          _this.props.onLoad(_this.handler, _this.canvas);\n        }\n      });\n    };\n\n    return _this;\n  }\n\n  createClass_default()(InternalCanvas, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props = this.props,\n          editable = _this$props.editable,\n          canvasOption = _this$props.canvasOption,\n          width = _this$props.width,\n          height = _this$props.height,\n          responsive = _this$props.responsive,\n          other = helpers_objectWithoutProperties_default()(_this$props, Canvas_excluded);\n\n      var id = this.state.id;\n      var mergedCanvasOption = Object.assign({}, defaults_namespaceObject.canvasOption, canvasOption, {\n        width: width,\n        height: height,\n        selection: editable\n      });\n      this.canvas = new fabric[\"fabric\"].Canvas(\"canvas_\".concat(id), mergedCanvasOption);\n      this.canvas.setBackgroundColor(mergedCanvasOption.backgroundColor, this.canvas.renderAll.bind(this.canvas));\n      this.canvas.renderAll();\n      this.container = this.containerRef.current;\n      this.handler = new handlers_Handler(Canvas_objectSpread({\n        id: id,\n        width: width,\n        height: height,\n        editable: editable,\n        canvas: this.canvas,\n        container: this.containerRef.current,\n        canvasOption: mergedCanvasOption\n      }, other));\n\n      if (this.props.responsive) {\n        this.createObserver();\n      } else {\n        this.handleLoad();\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      if (this.props.width !== prevProps.width || this.props.height !== prevProps.height) {\n        this.handler.eventHandler.resize(this.props.width, this.props.height);\n      }\n\n      if (this.props.editable !== prevProps.editable) {\n        this.handler.editable = this.props.editable;\n      }\n\n      if (this.props.responsive !== prevProps.responsive) {\n        if (!this.props.responsive) {\n          this.destroyObserver();\n        } else {\n          this.destroyObserver();\n          this.createObserver();\n        }\n      }\n\n      if (JSON.stringify(this.props.canvasOption) !== JSON.stringify(prevProps.canvasOption)) {\n        this.handler.setCanvasOption(this.props.canvasOption);\n      }\n\n      if (JSON.stringify(this.props.keyEvent) !== JSON.stringify(prevProps.keyEvent)) {\n        this.handler.setKeyEvent(this.props.keyEvent);\n      }\n\n      if (JSON.stringify(this.props.fabricObjects) !== JSON.stringify(prevProps.fabricObjects)) {\n        this.handler.setFabricObjects(this.props.fabricObjects);\n      }\n\n      if (JSON.stringify(this.props.workareaOption) !== JSON.stringify(prevProps.workareaOption)) {\n        this.handler.setWorkareaOption(this.props.workareaOption);\n      }\n\n      if (JSON.stringify(this.props.guidelineOption) !== JSON.stringify(prevProps.guidelineOption)) {\n        this.handler.setGuidelineOption(this.props.guidelineOption);\n      }\n\n      if (JSON.stringify(this.props.objectOption) !== JSON.stringify(prevProps.objectOption)) {\n        this.handler.setObjectOption(this.props.objectOption);\n      }\n\n      if (JSON.stringify(this.props.gridOption) !== JSON.stringify(prevProps.gridOption)) {\n        this.handler.setGridOption(this.props.gridOption);\n      }\n\n      if (JSON.stringify(this.props.propertiesToInclude) !== JSON.stringify(prevProps.propertiesToInclude)) {\n        this.handler.setPropertiesToInclude(this.props.propertiesToInclude);\n      }\n\n      if (JSON.stringify(this.props.activeSelectionOption) !== JSON.stringify(prevProps.activeSelectionOption)) {\n        this.handler.setActiveSelectionOption(this.props.activeSelectionOption);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.destroyObserver();\n      this.handler.destroy();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var style = this.props.style;\n      var id = this.state.id;\n      return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        ref: this.containerRef,\n        id: id,\n        className: \"rde-canvas\",\n        style: Canvas_objectSpread({\n          width: '100%',\n          height: '100%'\n        }, style)\n      }, /*#__PURE__*/external_react_default.a.createElement(\"canvas\", {\n        id: \"canvas_\".concat(id)\n      }));\n    }\n  }]);\n\n  return InternalCanvas;\n}(external_react_[\"Component\"]);\n\nCanvas_InternalCanvas.defaultProps = {\n  id: ulid(),\n  editable: true,\n  zoomEnabled: true,\n  minZoom: 30,\n  maxZoom: 300,\n  responsive: true,\n  width: 0,\n  height: 0\n};\nvar Canvas = /*#__PURE__*/external_react_default.a.forwardRef(function (props, ref) {\n  var canvasRef = Object(external_react_[\"useRef\"])();\n  external_react_default.a.useImperativeHandle(ref, function () {\n    return {\n      handler: canvasRef.current.handler,\n      canvas: canvasRef.current.canvas,\n      container: canvasRef.current.container\n    };\n  });\n  return /*#__PURE__*/external_react_default.a.createElement(Canvas_InternalCanvas, helpers_extends_default()({\n    ref: canvasRef\n  }, props));\n});\n/* harmony default export */ var canvas_Canvas = (Canvas);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.starts-with.js\nvar es_string_starts_with = __webpack_require__(519);\n\n// CONCATENATED MODULE: ./src/components/icon/Icon.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Icon_createSuper(Derived) { var hasNativeReflectConstruct = Icon_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction Icon_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar icon_Icon_Icon = /*#__PURE__*/function (_Component) {\n  inherits_default()(Icon, _Component);\n\n  var _super = Icon_createSuper(Icon);\n\n  function Icon() {\n    var _this;\n\n    classCallCheck_default()(this, Icon);\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 = _super.call.apply(_super, [this].concat(args));\n\n    _this.getIconHtml = function (prefix, name, className, size, color) {\n      var iconClassName = \"\".concat(prefix, \" fa-\").concat(name, \" \").concat(className);\n      var iconStyle = Object.assign({}, _this.props.style, {\n        fontSize: \"\".concat(size, \"em\"),\n        color: color\n      });\n      return /*#__PURE__*/external_react_default.a.createElement(\"i\", {\n        className: iconClassName,\n        style: iconStyle,\n        onClick: _this.props.onClick\n      });\n    };\n\n    return _this;\n  }\n\n  createClass_default()(Icon, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          color = _this$props.color,\n          size = _this$props.size,\n          className = _this$props.className,\n          innerIcon = _this$props.innerIcon,\n          innerColor = _this$props.innerColor,\n          innerSize = _this$props.innerSize,\n          innerClassName = _this$props.innerClassName,\n          prefix = _this$props.prefix;\n      var name = this.props.name;\n\n      if (name.startsWith('icon-')) {\n        name = name.substr('icon-'.length);\n      }\n\n      var iconHtml = this.getIconHtml(prefix, name, className, size, color);\n      var innerIconHtml = null;\n\n      if (innerIcon) {\n        innerIconHtml = this.getIconHtml(innerIcon, innerClassName, innerSize, innerColor);\n      } else {\n        return iconHtml;\n      }\n\n      return /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        className: \"fa-stack\"\n      }, iconHtml, innerIconHtml);\n    }\n  }]);\n\n  return Icon;\n}(external_react_[\"Component\"]);\n\nicon_Icon_Icon.propTypes = {\n  name: prop_types_default.a.string,\n  color: prop_types_default.a.string,\n  style: prop_types_default.a.object,\n  className: prop_types_default.a.string,\n  size: prop_types_default.a.number,\n  innerIcon: prop_types_default.a.string,\n  innerColor: prop_types_default.a.string,\n  innerClassName: prop_types_default.a.string,\n  innerSize: prop_types_default.a.number,\n  prefix: prop_types_default.a.string,\n  onClick: prop_types_default.a.func\n};\nicon_Icon_Icon.defaultProps = {\n  name: null,\n  color: '',\n  className: '',\n  size: 1,\n  innerIcon: null,\n  innerColor: '',\n  innerClassName: '',\n  innerSize: 1,\n  prefix: 'fas'\n};\n/* harmony default export */ var components_icon_Icon = (icon_Icon_Icon);\n// CONCATENATED MODULE: ./src/components/common/CommonButton.js\n\n\n\n\n\n\n\n\n\nfunction CommonButton_createSuper(Derived) { var hasNativeReflectConstruct = CommonButton_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction CommonButton_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\nvar CommonButton_CommonButton = /*#__PURE__*/function (_Component) {\n  inherits_default()(CommonButton, _Component);\n\n  var _super = CommonButton_createSuper(CommonButton);\n\n  function CommonButton() {\n    classCallCheck_default()(this, CommonButton);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(CommonButton, [{\n    key: \"render\",\n    value: function render() {\n      return this.props.visible ? /*#__PURE__*/external_react_default.a.createElement(es_tooltip, {\n        title: this.props.tooltipTitle,\n        placement: this.props.tooltipPlacement\n      }, this.props.wrapperClassName || this.props.wrapperStyle ? /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        style: this.props.wrapperStyle,\n        className: this.props.wrapperClassName\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        id: this.props.id,\n        className: this.props.className,\n        name: this.props.name,\n        style: this.props.style,\n        shape: this.props.shape,\n        size: this.props.size,\n        onClick: this.props.onClick,\n        type: this.props.type,\n        disabled: this.props.disabled,\n        loading: this.props.loading\n      }, this.props.icon ? this.props.iconAnimation ? /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: this.props.icon,\n        style: this.props.iconStyle,\n        className: this.props.iconClassName,\n        animation: this.props.iconAnimation\n      }) : /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: this.props.icon,\n        style: this.props.iconStyle,\n        className: this.props.iconClassName\n      }) : null, this.props.children)) : /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        id: this.props.id,\n        className: this.props.className,\n        name: this.props.name,\n        style: this.props.style,\n        shape: this.props.shape,\n        size: this.props.size,\n        onClick: this.props.onClick,\n        type: this.props.type,\n        disabled: this.props.disabled,\n        loading: this.props.loading\n      }, this.props.icon ? this.props.iconAnimation ? /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: this.props.icon,\n        style: this.props.iconStyle,\n        className: this.props.iconClassName,\n        animation: this.props.iconAnimation\n      }) : /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: this.props.icon,\n        style: this.props.iconStyle,\n        className: this.props.iconClassName\n      }) : null, this.props.children)) : null;\n    }\n  }]);\n\n  return CommonButton;\n}(external_react_[\"Component\"]);\n\nCommonButton_CommonButton.propTypes = {\n  name: prop_types_default.a.string,\n  id: prop_types_default.a.string,\n  style: prop_types_default.a.object,\n  wrapperStyle: prop_types_default.a.object,\n  wrapperClassName: prop_types_default.a.string,\n  tooltipTitle: prop_types_default.a.string,\n  tooltipPlacement: prop_types_default.a.string,\n  className: prop_types_default.a.string,\n  icon: prop_types_default.a.string,\n  iconStyle: prop_types_default.a.object,\n  iconClassName: prop_types_default.a.string,\n  iconAnimation: prop_types_default.a.string,\n  visible: prop_types_default.a.bool,\n  shape: prop_types_default.a.string,\n  disabled: prop_types_default.a.bool,\n  loading: prop_types_default.a.bool,\n  type: prop_types_default.a.string\n};\nCommonButton_CommonButton.defaultProps = {\n  type: 'default',\n  visible: true,\n  disabled: false,\n  loading: false\n};\n/* harmony default export */ var common_CommonButton = (CommonButton_CommonButton);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.global-this.js\nvar esnext_global_this = __webpack_require__(1356);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/Dom/contains.js\nvar contains = __webpack_require__(191);\n\n// CONCATENATED MODULE: ./node_modules/rc-dialog/es/LazyRenderBox.js\n\n\n\n\n\n\nvar LazyRenderBox_LazyRenderBox = function (_React$Component) {\n    helpers_inherits_default()(LazyRenderBox, _React$Component);\n\n    function LazyRenderBox() {\n        helpers_classCallCheck_default()(this, LazyRenderBox);\n\n        return helpers_possibleConstructorReturn_default()(this, _React$Component.apply(this, arguments));\n    }\n\n    LazyRenderBox.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n        return !!nextProps.hiddenClassName || !!nextProps.visible;\n    };\n\n    LazyRenderBox.prototype.render = function render() {\n        var className = this.props.className;\n        if (!!this.props.hiddenClassName && !this.props.visible) {\n            className += \" \" + this.props.hiddenClassName;\n        }\n        var props = extends_default()({}, this.props);\n        delete props.hiddenClassName;\n        delete props.visible;\n        props.className = className;\n        return external_react_[\"createElement\"](\"div\", extends_default()({}, props));\n    };\n\n    return LazyRenderBox;\n}(external_react_[\"Component\"]);\n\n/* harmony default export */ var es_LazyRenderBox = (LazyRenderBox_LazyRenderBox);\n// EXTERNAL MODULE: ./node_modules/rc-util/es/getScrollBarSize.js\nvar getScrollBarSize = __webpack_require__(679);\n\n// CONCATENATED MODULE: ./node_modules/rc-dialog/es/Dialog.js\n\n\n\n\n\n\n\n\n\n\n\nvar uuid = 0;\nvar openCount = 0;\n/* eslint react/no-is-mounted:0 */\nfunction getScroll(w, top) {\n    var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];\n    var method = 'scroll' + (top ? 'Top' : 'Left');\n    if (typeof ret !== 'number') {\n        var d = w.document;\n        ret = d.documentElement[method];\n        if (typeof ret !== 'number') {\n            ret = d.body[method];\n        }\n    }\n    return ret;\n}\nfunction setTransformOrigin(node, value) {\n    var style = node.style;\n    ['Webkit', 'Moz', 'Ms', 'ms'].forEach(function (prefix) {\n        style[prefix + 'TransformOrigin'] = value;\n    });\n    style['transformOrigin'] = value;\n}\nfunction Dialog_offset(el) {\n    var rect = el.getBoundingClientRect();\n    var pos = {\n        left: rect.left,\n        top: rect.top\n    };\n    var doc = el.ownerDocument;\n    var w = doc.defaultView || doc.parentWindow;\n    pos.left += getScroll(w);\n    pos.top += getScroll(w, true);\n    return pos;\n}\n\nvar Dialog_Dialog = function (_React$Component) {\n    helpers_inherits_default()(Dialog, _React$Component);\n\n    function Dialog() {\n        helpers_classCallCheck_default()(this, Dialog);\n\n        var _this = helpers_possibleConstructorReturn_default()(this, _React$Component.apply(this, arguments));\n\n        _this.onAnimateLeave = function () {\n            var afterClose = _this.props.afterClose;\n            // need demo?\n            // https://github.com/react-component/dialog/pull/28\n\n            if (_this.wrap) {\n                _this.wrap.style.display = 'none';\n            }\n            _this.inTransition = false;\n            _this.removeScrollingEffect();\n            if (afterClose) {\n                afterClose();\n            }\n        };\n        _this.onDialogMouseDown = function () {\n            _this.dialogMouseDown = true;\n        };\n        _this.onMaskMouseUp = function () {\n            if (_this.dialogMouseDown) {\n                _this.timeoutId = setTimeout(function () {\n                    _this.dialogMouseDown = false;\n                }, 0);\n            }\n        };\n        _this.onMaskClick = function (e) {\n            // android trigger click on open (fastclick??)\n            if (Date.now() - _this.openTime < 300) {\n                return;\n            }\n            if (e.target === e.currentTarget && !_this.dialogMouseDown) {\n                _this.close(e);\n            }\n        };\n        _this.onKeyDown = function (e) {\n            var props = _this.props;\n            if (props.keyboard && e.keyCode === KeyCode[\"a\" /* default */].ESC) {\n                e.stopPropagation();\n                _this.close(e);\n                return;\n            }\n            // keep focus inside dialog\n            if (props.visible) {\n                if (e.keyCode === KeyCode[\"a\" /* default */].TAB) {\n                    var activeElement = document.activeElement;\n                    var sentinelStart = _this.sentinelStart;\n                    if (e.shiftKey) {\n                        if (activeElement === sentinelStart) {\n                            _this.sentinelEnd.focus();\n                        }\n                    } else if (activeElement === _this.sentinelEnd) {\n                        sentinelStart.focus();\n                    }\n                }\n            }\n        };\n        _this.getDialogElement = function () {\n            var props = _this.props;\n            var closable = props.closable;\n            var prefixCls = props.prefixCls;\n            var dest = {};\n            if (props.width !== undefined) {\n                dest.width = props.width;\n            }\n            if (props.height !== undefined) {\n                dest.height = props.height;\n            }\n            var footer = void 0;\n            if (props.footer) {\n                footer = external_react_[\"createElement\"](\"div\", { className: prefixCls + '-footer', ref: _this.saveRef('footer') }, props.footer);\n            }\n            var header = void 0;\n            if (props.title) {\n                header = external_react_[\"createElement\"](\"div\", { className: prefixCls + '-header', ref: _this.saveRef('header') }, external_react_[\"createElement\"](\"div\", { className: prefixCls + '-title', id: _this.titleId }, props.title));\n            }\n            var closer = void 0;\n            if (closable) {\n                closer = external_react_[\"createElement\"](\"button\", { onClick: _this.close, \"aria-label\": \"Close\", className: prefixCls + '-close' }, props.closeIcon || external_react_[\"createElement\"](\"span\", { className: prefixCls + '-close-x' }));\n            }\n            var style = extends_default()({}, props.style, dest);\n            var sentinelStyle = { width: 0, height: 0, overflow: 'hidden' };\n            var transitionName = _this.getTransitionName();\n            var dialogElement = external_react_[\"createElement\"](es_LazyRenderBox, { key: \"dialog-element\", role: \"document\", ref: _this.saveRef('dialog'), style: style, className: prefixCls + ' ' + (props.className || ''), visible: props.visible, onMouseDown: _this.onDialogMouseDown }, external_react_[\"createElement\"](\"div\", { tabIndex: 0, ref: _this.saveRef('sentinelStart'), style: sentinelStyle }, \"sentinelStart\"), external_react_[\"createElement\"](\"div\", { className: prefixCls + '-content' }, closer, header, external_react_[\"createElement\"](\"div\", extends_default()({ className: prefixCls + '-body', style: props.bodyStyle, ref: _this.saveRef('body') }, props.bodyProps), props.children), footer), external_react_[\"createElement\"](\"div\", { tabIndex: 0, ref: _this.saveRef('sentinelEnd'), style: sentinelStyle }, \"sentinelEnd\"));\n            return external_react_[\"createElement\"](Animate[\"a\" /* default */], { key: \"dialog\", showProp: \"visible\", onLeave: _this.onAnimateLeave, transitionName: transitionName, component: \"\", transitionAppear: true }, props.visible || !props.destroyOnClose ? dialogElement : null);\n        };\n        _this.getZIndexStyle = function () {\n            var style = {};\n            var props = _this.props;\n            if (props.zIndex !== undefined) {\n                style.zIndex = props.zIndex;\n            }\n            return style;\n        };\n        _this.getWrapStyle = function () {\n            return extends_default()({}, _this.getZIndexStyle(), _this.props.wrapStyle);\n        };\n        _this.getMaskStyle = function () {\n            return extends_default()({}, _this.getZIndexStyle(), _this.props.maskStyle);\n        };\n        _this.getMaskElement = function () {\n            var props = _this.props;\n            var maskElement = void 0;\n            if (props.mask) {\n                var maskTransition = _this.getMaskTransitionName();\n                maskElement = external_react_[\"createElement\"](es_LazyRenderBox, extends_default()({ style: _this.getMaskStyle(), key: \"mask\", className: props.prefixCls + '-mask', hiddenClassName: props.prefixCls + '-mask-hidden', visible: props.visible }, props.maskProps));\n                if (maskTransition) {\n                    maskElement = external_react_[\"createElement\"](Animate[\"a\" /* default */], { key: \"mask\", showProp: \"visible\", transitionAppear: true, component: \"\", transitionName: maskTransition }, maskElement);\n                }\n            }\n            return maskElement;\n        };\n        _this.getMaskTransitionName = function () {\n            var props = _this.props;\n            var transitionName = props.maskTransitionName;\n            var animation = props.maskAnimation;\n            if (!transitionName && animation) {\n                transitionName = props.prefixCls + '-' + animation;\n            }\n            return transitionName;\n        };\n        _this.getTransitionName = function () {\n            var props = _this.props;\n            var transitionName = props.transitionName;\n            var animation = props.animation;\n            if (!transitionName && animation) {\n                transitionName = props.prefixCls + '-' + animation;\n            }\n            return transitionName;\n        };\n        _this.setScrollbar = function () {\n            if (_this.bodyIsOverflowing && _this.scrollbarWidth !== undefined) {\n                document.body.style.paddingRight = _this.scrollbarWidth + 'px';\n            }\n        };\n        _this.addScrollingEffect = function () {\n            openCount++;\n            if (openCount !== 1) {\n                return;\n            }\n            _this.checkScrollbar();\n            _this.setScrollbar();\n            document.body.style.overflow = 'hidden';\n            // this.adjustDialog();\n        };\n        _this.removeScrollingEffect = function () {\n            openCount--;\n            if (openCount !== 0) {\n                return;\n            }\n            document.body.style.overflow = '';\n            _this.resetScrollbar();\n            // this.resetAdjustments();\n        };\n        _this.close = function (e) {\n            var onClose = _this.props.onClose;\n\n            if (onClose) {\n                onClose(e);\n            }\n        };\n        _this.checkScrollbar = function () {\n            var fullWindowWidth = window.innerWidth;\n            if (!fullWindowWidth) {\n                // workaround for missing window.innerWidth in IE8\n                var documentElementRect = document.documentElement.getBoundingClientRect();\n                fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n            }\n            _this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth;\n            if (_this.bodyIsOverflowing) {\n                _this.scrollbarWidth = Object(getScrollBarSize[\"a\" /* default */])();\n            }\n        };\n        _this.resetScrollbar = function () {\n            document.body.style.paddingRight = '';\n        };\n        _this.adjustDialog = function () {\n            if (_this.wrap && _this.scrollbarWidth !== undefined) {\n                var modalIsOverflowing = _this.wrap.scrollHeight > document.documentElement.clientHeight;\n                _this.wrap.style.paddingLeft = (!_this.bodyIsOverflowing && modalIsOverflowing ? _this.scrollbarWidth : '') + 'px';\n                _this.wrap.style.paddingRight = (_this.bodyIsOverflowing && !modalIsOverflowing ? _this.scrollbarWidth : '') + 'px';\n            }\n        };\n        _this.resetAdjustments = function () {\n            if (_this.wrap) {\n                _this.wrap.style.paddingLeft = _this.wrap.style.paddingLeft = '';\n            }\n        };\n        _this.saveRef = function (name) {\n            return function (node) {\n                _this[name] = node;\n            };\n        };\n        return _this;\n    }\n\n    Dialog.prototype.componentWillMount = function componentWillMount() {\n        this.inTransition = false;\n        this.titleId = 'rcDialogTitle' + uuid++;\n    };\n\n    Dialog.prototype.componentDidMount = function componentDidMount() {\n        this.componentDidUpdate({});\n        // if forceRender is true, set element style display to be none;\n        if (this.props.forceRender && this.wrap) {\n            this.wrap.style.display = 'none';\n        }\n    };\n\n    Dialog.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n        var props = this.props;\n        var mousePosition = this.props.mousePosition;\n        if (props.visible) {\n            // first show\n            if (!prevProps.visible) {\n                this.openTime = Date.now();\n                this.addScrollingEffect();\n                this.tryFocus();\n                var dialogNode = external_react_dom_[\"findDOMNode\"](this.dialog);\n                if (mousePosition) {\n                    var elOffset = Dialog_offset(dialogNode);\n                    setTransformOrigin(dialogNode, mousePosition.x - elOffset.left + 'px ' + (mousePosition.y - elOffset.top) + 'px');\n                } else {\n                    setTransformOrigin(dialogNode, '');\n                }\n            }\n        } else if (prevProps.visible) {\n            this.inTransition = true;\n            if (props.mask && this.lastOutSideFocusNode) {\n                try {\n                    this.lastOutSideFocusNode.focus();\n                } catch (e) {\n                    this.lastOutSideFocusNode = null;\n                }\n                this.lastOutSideFocusNode = null;\n            }\n        }\n    };\n\n    Dialog.prototype.componentWillUnmount = function componentWillUnmount() {\n        if (this.props.visible || this.inTransition) {\n            this.removeScrollingEffect();\n        }\n        clearTimeout(this.timeoutId);\n    };\n\n    Dialog.prototype.tryFocus = function tryFocus() {\n        if (!Object(contains[\"a\" /* default */])(this.wrap, document.activeElement)) {\n            this.lastOutSideFocusNode = document.activeElement;\n            this.sentinelStart.focus();\n        }\n    };\n\n    Dialog.prototype.render = function render() {\n        var props = this.props;\n        var prefixCls = props.prefixCls,\n            maskClosable = props.maskClosable;\n\n        var style = this.getWrapStyle();\n        // clear hide display\n        // and only set display after async anim, not here for hide\n        if (props.visible) {\n            style.display = null;\n        }\n        return external_react_[\"createElement\"](\"div\", null, this.getMaskElement(), external_react_[\"createElement\"](\"div\", extends_default()({ tabIndex: -1, onKeyDown: this.onKeyDown, className: prefixCls + '-wrap ' + (props.wrapClassName || ''), ref: this.saveRef('wrap'), onClick: maskClosable ? this.onMaskClick : null, onMouseUp: maskClosable ? this.onMaskMouseUp : null, role: \"dialog\", \"aria-labelledby\": props.title ? this.titleId : null, style: style }, props.wrapProps), this.getDialogElement()));\n    };\n\n    return Dialog;\n}(external_react_[\"Component\"]);\n\n/* harmony default export */ var es_Dialog = (Dialog_Dialog);\n\nDialog_Dialog.defaultProps = {\n    className: '',\n    mask: true,\n    visible: false,\n    keyboard: true,\n    closable: true,\n    maskClosable: true,\n    destroyOnClose: false,\n    prefixCls: 'rc-dialog'\n};\n// EXTERNAL MODULE: ./node_modules/rc-util/es/ContainerRender.js\nvar ContainerRender = __webpack_require__(349);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/Portal.js\nvar Portal = __webpack_require__(350);\n\n// CONCATENATED MODULE: ./node_modules/rc-dialog/es/DialogWrap.js\n\n\n\n\n\n\n\n\n\nvar IS_REACT_16 = 'createPortal' in external_react_dom_;\n\nvar DialogWrap_DialogWrap = function (_React$Component) {\n    helpers_inherits_default()(DialogWrap, _React$Component);\n\n    function DialogWrap() {\n        helpers_classCallCheck_default()(this, DialogWrap);\n\n        var _this = helpers_possibleConstructorReturn_default()(this, _React$Component.apply(this, arguments));\n\n        _this.saveDialog = function (node) {\n            _this._component = node;\n        };\n        _this.getComponent = function () {\n            var extra = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n            return external_react_[\"createElement\"](es_Dialog, extends_default()({ ref: _this.saveDialog }, _this.props, extra, { key: \"dialog\" }));\n        };\n        // fix issue #10656\n        /*\n        * Custom container should not be return, because in the Portal component, it will remove the\n        * return container element here, if the custom container is the only child of it's component,\n        * like issue #10656, It will has a conflict with removeChild method in react-dom.\n        * So here should add a child (div element) to custom container.\n        * */\n        _this.getContainer = function () {\n            var container = document.createElement('div');\n            if (_this.props.getContainer) {\n                _this.props.getContainer().appendChild(container);\n            } else {\n                document.body.appendChild(container);\n            }\n            return container;\n        };\n        return _this;\n    }\n\n    DialogWrap.prototype.shouldComponentUpdate = function shouldComponentUpdate(_ref) {\n        var visible = _ref.visible,\n            forceRender = _ref.forceRender;\n\n        return !!(this.props.visible || visible) || this.props.forceRender || forceRender;\n    };\n\n    DialogWrap.prototype.componentWillUnmount = function componentWillUnmount() {\n        if (IS_REACT_16) {\n            return;\n        }\n        if (this.props.visible) {\n            this.renderComponent({\n                afterClose: this.removeContainer,\n                onClose: function onClose() {},\n\n                visible: false\n            });\n        } else {\n            this.removeContainer();\n        }\n    };\n\n    DialogWrap.prototype.render = function render() {\n        var _this2 = this;\n\n        var _props = this.props,\n            visible = _props.visible,\n            forceRender = _props.forceRender;\n\n        var portal = null;\n        if (!IS_REACT_16) {\n            return external_react_[\"createElement\"](ContainerRender[\"a\" /* default */], { parent: this, visible: visible, autoDestroy: false, getComponent: this.getComponent, getContainer: this.getContainer, forceRender: forceRender }, function (_ref2) {\n                var renderComponent = _ref2.renderComponent,\n                    removeContainer = _ref2.removeContainer;\n\n                _this2.renderComponent = renderComponent;\n                _this2.removeContainer = removeContainer;\n                return null;\n            });\n        }\n        if (visible || forceRender || this._component) {\n            portal = external_react_[\"createElement\"](Portal[\"a\" /* default */], { getContainer: this.getContainer }, this.getComponent());\n        }\n        return portal;\n    };\n\n    return DialogWrap;\n}(external_react_[\"Component\"]);\n\nDialogWrap_DialogWrap.defaultProps = {\n    visible: false,\n    forceRender: false\n};\n/* harmony default export */ var es_DialogWrap = (DialogWrap_DialogWrap);\n// EXTERNAL MODULE: ./node_modules/rc-util/es/Dom/addEventListener.js\nvar addEventListener = __webpack_require__(76);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/modal/locale.js\nfunction locale_extends() { locale_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 locale_extends.apply(this, arguments); }\n\n\n\nvar locale_runtimeLocale = locale_extends({}, locale_provider_default.Modal);\n\nfunction changeConfirmLocale(newLocale) {\n  if (newLocale) {\n    locale_runtimeLocale = locale_extends({}, locale_runtimeLocale, newLocale);\n  } else {\n    locale_runtimeLocale = locale_extends({}, locale_provider_default.Modal);\n  }\n}\nfunction getConfirmLocale() {\n  return locale_runtimeLocale;\n}\n// CONCATENATED MODULE: ./node_modules/antd/es/modal/Modal.js\nfunction Modal_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Modal_typeof = function _typeof(obj) { return typeof obj; }; } else { Modal_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Modal_typeof(obj); }\n\nfunction Modal_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\nfunction Modal_extends() { Modal_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 Modal_extends.apply(this, arguments); }\n\nfunction Modal_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Modal_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 Modal_createClass(Constructor, protoProps, staticProps) { if (protoProps) Modal_defineProperties(Constructor.prototype, protoProps); if (staticProps) Modal_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Modal_possibleConstructorReturn(self, call) { if (call && (Modal_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Modal_assertThisInitialized(self); }\n\nfunction Modal_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Modal_getPrototypeOf(o) { Modal_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Modal_getPrototypeOf(o); }\n\nfunction Modal_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) Modal_setPrototypeOf(subClass, superClass); }\n\nfunction Modal_setPrototypeOf(o, p) { Modal_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Modal_setPrototypeOf(o, p); }\n\nvar Modal_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar Modal_mousePosition;\nvar mousePositionEventBinded;\nvar destroyFns = [];\n\nvar Modal_Modal =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Modal_inherits(Modal, _React$Component);\n\n  function Modal() {\n    var _this;\n\n    Modal_classCallCheck(this, Modal);\n\n    _this = Modal_possibleConstructorReturn(this, Modal_getPrototypeOf(Modal).apply(this, arguments));\n\n    _this.handleCancel = function (e) {\n      var onCancel = _this.props.onCancel;\n\n      if (onCancel) {\n        onCancel(e);\n      }\n    };\n\n    _this.handleOk = function (e) {\n      var onOk = _this.props.onOk;\n\n      if (onOk) {\n        onOk(e);\n      }\n    };\n\n    _this.renderFooter = function (locale) {\n      var _this$props = _this.props,\n          okText = _this$props.okText,\n          okType = _this$props.okType,\n          cancelText = _this$props.cancelText,\n          confirmLoading = _this$props.confirmLoading;\n      return external_react_[\"createElement\"](\"div\", null, external_react_[\"createElement\"](es_button, Modal_extends({\n        onClick: _this.handleCancel\n      }, _this.props.cancelButtonProps), cancelText || locale.cancelText), external_react_[\"createElement\"](es_button, Modal_extends({\n        type: okType,\n        loading: confirmLoading,\n        onClick: _this.handleOk\n      }, _this.props.okButtonProps), okText || locale.okText));\n    };\n\n    _this.renderModal = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          footer = _a.footer,\n          visible = _a.visible,\n          wrapClassName = _a.wrapClassName,\n          centered = _a.centered,\n          restProps = Modal_rest(_a, [\"prefixCls\", \"footer\", \"visible\", \"wrapClassName\", \"centered\"]);\n\n      var prefixCls = getPrefixCls('modal', customizePrefixCls);\n      var defaultFooter = external_react_[\"createElement\"](LocaleReceiver_LocaleReceiver, {\n        componentName: \"Modal\",\n        defaultLocale: getConfirmLocale()\n      }, _this.renderFooter);\n      var closeIcon = external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-close-x\")\n      }, external_react_[\"createElement\"](es_icon, {\n        className: \"\".concat(prefixCls, \"-close-icon\"),\n        type: 'close'\n      }));\n      return external_react_[\"createElement\"](es_DialogWrap, Modal_extends({}, restProps, {\n        prefixCls: prefixCls,\n        wrapClassName: classnames_default()(Modal_defineProperty({}, \"\".concat(prefixCls, \"-centered\"), !!centered), wrapClassName),\n        footer: footer === undefined ? defaultFooter : footer,\n        visible: visible,\n        mousePosition: Modal_mousePosition,\n        onClose: _this.handleCancel,\n        closeIcon: closeIcon\n      }));\n    };\n\n    return _this;\n  }\n\n  Modal_createClass(Modal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (mousePositionEventBinded) {\n        return;\n      } // 只有点击事件支持从鼠标位置动画展开\n\n\n      Object(addEventListener[\"a\" /* default */])(document.documentElement, 'click', function (e) {\n        Modal_mousePosition = {\n          x: e.pageX,\n          y: e.pageY\n        }; // 100ms 内发生过点击事件，则从点击位置动画展示\n        // 否则直接 zoom 展示\n        // 这样可以兼容非点击方式展开\n\n        setTimeout(function () {\n          return Modal_mousePosition = null;\n        }, 100);\n      });\n      mousePositionEventBinded = true;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderModal);\n    }\n  }]);\n\n  return Modal;\n}(external_react_[\"Component\"]);\n\n\nModal_Modal.defaultProps = {\n  width: 520,\n  transitionName: 'zoom',\n  maskTransitionName: 'fade',\n  confirmLoading: false,\n  visible: false,\n  okType: 'primary',\n  okButtonDisabled: false,\n  cancelButtonDisabled: false\n};\nModal_Modal.propTypes = {\n  prefixCls: prop_types[\"string\"],\n  onOk: prop_types[\"func\"],\n  onCancel: prop_types[\"func\"],\n  okText: prop_types[\"node\"],\n  cancelText: prop_types[\"node\"],\n  centered: prop_types[\"bool\"],\n  width: prop_types[\"oneOfType\"]([prop_types[\"number\"], prop_types[\"string\"]]),\n  confirmLoading: prop_types[\"bool\"],\n  visible: prop_types[\"bool\"],\n  align: prop_types[\"object\"],\n  footer: prop_types[\"node\"],\n  title: prop_types[\"node\"],\n  closable: prop_types[\"bool\"]\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/modal/ActionButton.js\nfunction ActionButton_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { ActionButton_typeof = function _typeof(obj) { return typeof obj; }; } else { ActionButton_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return ActionButton_typeof(obj); }\n\nfunction ActionButton_extends() { ActionButton_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 ActionButton_extends.apply(this, arguments); }\n\nfunction ActionButton_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ActionButton_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 ActionButton_createClass(Constructor, protoProps, staticProps) { if (protoProps) ActionButton_defineProperties(Constructor.prototype, protoProps); if (staticProps) ActionButton_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction ActionButton_possibleConstructorReturn(self, call) { if (call && (ActionButton_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return ActionButton_assertThisInitialized(self); }\n\nfunction ActionButton_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction ActionButton_getPrototypeOf(o) { ActionButton_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ActionButton_getPrototypeOf(o); }\n\nfunction ActionButton_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) ActionButton_setPrototypeOf(subClass, superClass); }\n\nfunction ActionButton_setPrototypeOf(o, p) { ActionButton_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ActionButton_setPrototypeOf(o, p); }\n\n\n\n\n\nvar ActionButton_ActionButton =\n/*#__PURE__*/\nfunction (_React$Component) {\n  ActionButton_inherits(ActionButton, _React$Component);\n\n  function ActionButton(props) {\n    var _this;\n\n    ActionButton_classCallCheck(this, ActionButton);\n\n    _this = ActionButton_possibleConstructorReturn(this, ActionButton_getPrototypeOf(ActionButton).call(this, props));\n\n    _this.onClick = function () {\n      var _this$props = _this.props,\n          actionFn = _this$props.actionFn,\n          closeModal = _this$props.closeModal;\n\n      if (actionFn) {\n        var ret;\n\n        if (actionFn.length) {\n          ret = actionFn(closeModal);\n        } else {\n          ret = actionFn();\n\n          if (!ret) {\n            closeModal();\n          }\n        }\n\n        if (ret && ret.then) {\n          _this.setState({\n            loading: true\n          });\n\n          ret.then(function () {\n            // It's unnecessary to set loading=false, for the Modal will be unmounted after close.\n            // this.setState({ loading: false });\n            closeModal.apply(void 0, arguments);\n          }, function () {\n            // See: https://github.com/ant-design/ant-design/issues/6183\n            _this.setState({\n              loading: false\n            });\n          });\n        }\n      } else {\n        closeModal();\n      }\n    };\n\n    _this.state = {\n      loading: false\n    };\n    return _this;\n  }\n\n  ActionButton_createClass(ActionButton, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this.props.autoFocus) {\n        var $this = external_react_dom_[\"findDOMNode\"](this);\n        this.timeoutId = setTimeout(function () {\n          return $this.focus();\n        });\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      clearTimeout(this.timeoutId);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          type = _this$props2.type,\n          children = _this$props2.children,\n          buttonProps = _this$props2.buttonProps;\n      var loading = this.state.loading;\n      return external_react_[\"createElement\"](es_button, ActionButton_extends({\n        type: type,\n        onClick: this.onClick,\n        loading: loading\n      }, buttonProps), children);\n    }\n  }]);\n\n  return ActionButton;\n}(external_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/antd/es/modal/confirm.js\nvar confirm_this = undefined;\n\nfunction confirm_extends() { confirm_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 confirm_extends.apply(this, arguments); }\n\nfunction confirm_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\n\n\n\n\n\n\nvar confirm_IS_REACT_16 = !!external_react_dom_[\"createPortal\"];\n\nvar confirm_ConfirmDialog = function ConfirmDialog(props) {\n  var onCancel = props.onCancel,\n      onOk = props.onOk,\n      close = props.close,\n      zIndex = props.zIndex,\n      afterClose = props.afterClose,\n      visible = props.visible,\n      keyboard = props.keyboard,\n      centered = props.centered,\n      getContainer = props.getContainer,\n      maskStyle = props.maskStyle,\n      okButtonProps = props.okButtonProps,\n      cancelButtonProps = props.cancelButtonProps,\n      _props$iconType = props.iconType,\n      iconType = _props$iconType === void 0 ? 'question-circle' : _props$iconType;\n  _util_warning(!('iconType' in props), 'Modal', \"The property 'iconType' is deprecated. Use the property 'icon' instead.\");\n  var icon = props.icon ? props.icon : iconType;\n  var okType = props.okType || 'primary';\n  var prefixCls = props.prefixCls || 'ant-modal';\n  var contentPrefixCls = \"\".concat(prefixCls, \"-confirm\"); // 默认为 true，保持向下兼容\n\n  var okCancel = 'okCancel' in props ? props.okCancel : true;\n  var width = props.width || 416;\n  var style = props.style || {};\n  var mask = props.mask === undefined ? true : props.mask; // 默认为 false，保持旧版默认行为\n\n  var maskClosable = props.maskClosable === undefined ? false : props.maskClosable;\n  var runtimeLocale = getConfirmLocale();\n  var okText = props.okText || (okCancel ? runtimeLocale.okText : runtimeLocale.justOkText);\n  var cancelText = props.cancelText || runtimeLocale.cancelText;\n  var autoFocusButton = props.autoFocusButton === null ? false : props.autoFocusButton || 'ok';\n  var transitionName = props.transitionName || 'zoom';\n  var maskTransitionName = props.maskTransitionName || 'fade';\n  var classString = classnames_default()(contentPrefixCls, \"\".concat(contentPrefixCls, \"-\").concat(props.type), props.className);\n  var cancelButton = okCancel && external_react_[\"createElement\"](ActionButton_ActionButton, {\n    actionFn: onCancel,\n    closeModal: close,\n    autoFocus: autoFocusButton === 'cancel',\n    buttonProps: cancelButtonProps\n  }, cancelText);\n  var iconNode = typeof icon === 'string' ? external_react_[\"createElement\"](es_icon, {\n    type: icon\n  }) : icon;\n  return external_react_[\"createElement\"](Modal_Modal, {\n    prefixCls: prefixCls,\n    className: classString,\n    wrapClassName: classnames_default()(confirm_defineProperty({}, \"\".concat(contentPrefixCls, \"-centered\"), !!props.centered)),\n    onCancel: close.bind(confirm_this, {\n      triggerCancel: true\n    }),\n    visible: visible,\n    title: \"\",\n    transitionName: transitionName,\n    footer: \"\",\n    maskTransitionName: maskTransitionName,\n    mask: mask,\n    maskClosable: maskClosable,\n    maskStyle: maskStyle,\n    style: style,\n    width: width,\n    zIndex: zIndex,\n    afterClose: afterClose,\n    keyboard: keyboard,\n    centered: centered,\n    getContainer: getContainer\n  }, external_react_[\"createElement\"](\"div\", {\n    className: \"\".concat(contentPrefixCls, \"-body-wrapper\")\n  }, external_react_[\"createElement\"](\"div\", {\n    className: \"\".concat(contentPrefixCls, \"-body\")\n  }, iconNode, external_react_[\"createElement\"](\"span\", {\n    className: \"\".concat(contentPrefixCls, \"-title\")\n  }, props.title), external_react_[\"createElement\"](\"div\", {\n    className: \"\".concat(contentPrefixCls, \"-content\")\n  }, props.content)), external_react_[\"createElement\"](\"div\", {\n    className: \"\".concat(contentPrefixCls, \"-btns\")\n  }, cancelButton, external_react_[\"createElement\"](ActionButton_ActionButton, {\n    type: okType,\n    actionFn: onOk,\n    closeModal: close,\n    autoFocus: autoFocusButton === 'ok',\n    buttonProps: okButtonProps\n  }, okText))));\n};\n\nfunction confirm_confirm(config) {\n  var div = document.createElement('div');\n  document.body.appendChild(div);\n\n  var currentConfig = confirm_extends({}, config, {\n    close: close,\n    visible: true\n  });\n\n  function close() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    currentConfig = confirm_extends({}, currentConfig, {\n      visible: false,\n      afterClose: destroy.bind.apply(destroy, [this].concat(args))\n    });\n\n    if (confirm_IS_REACT_16) {\n      render(currentConfig);\n    } else {\n      destroy.apply(void 0, args);\n    }\n  }\n\n  function update(newConfig) {\n    currentConfig = confirm_extends({}, currentConfig, newConfig);\n    render(currentConfig);\n  }\n\n  function destroy() {\n    var unmountResult = external_react_dom_[\"unmountComponentAtNode\"](div);\n\n    if (unmountResult && div.parentNode) {\n      div.parentNode.removeChild(div);\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    var triggerCancel = args.some(function (param) {\n      return param && param.triggerCancel;\n    });\n\n    if (config.onCancel && triggerCancel) {\n      config.onCancel.apply(config, args);\n    }\n\n    for (var i = 0; i < destroyFns.length; i++) {\n      var fn = destroyFns[i];\n\n      if (fn === close) {\n        destroyFns.splice(i, 1);\n        break;\n      }\n    }\n  }\n\n  function render(props) {\n    external_react_dom_[\"render\"](external_react_[\"createElement\"](confirm_ConfirmDialog, props), div);\n  }\n\n  render(currentConfig);\n  destroyFns.push(close);\n  return {\n    destroy: close,\n    update: update\n  };\n}\n// CONCATENATED MODULE: ./node_modules/antd/es/modal/index.js\nfunction modal_extends() { modal_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 modal_extends.apply(this, arguments); }\n\n\n\n\n\n\nModal_Modal.info = function (props) {\n  var config = modal_extends({\n    type: 'info',\n    icon: external_react_[\"createElement\"](es_icon, {\n      type: \"info-circle\"\n    }),\n    okCancel: false\n  }, props);\n\n  return confirm_confirm(config);\n};\n\nModal_Modal.success = function (props) {\n  var config = modal_extends({\n    type: 'success',\n    icon: external_react_[\"createElement\"](es_icon, {\n      type: \"check-circle\"\n    }),\n    okCancel: false\n  }, props);\n\n  return confirm_confirm(config);\n};\n\nModal_Modal.error = function (props) {\n  var config = modal_extends({\n    type: 'error',\n    icon: external_react_[\"createElement\"](es_icon, {\n      type: \"close-circle\"\n    }),\n    okCancel: false\n  }, props);\n\n  return confirm_confirm(config);\n};\n\nModal_Modal.warning = Modal_Modal.warn = function (props) {\n  var config = modal_extends({\n    type: 'warning',\n    icon: external_react_[\"createElement\"](es_icon, {\n      type: \"exclamation-circle\"\n    }),\n    okCancel: false\n  }, props);\n\n  return confirm_confirm(config);\n};\n\nModal_Modal.confirm = function (props) {\n  var config = modal_extends({\n    type: 'confirm',\n    okCancel: true\n  }, props);\n\n  return confirm_confirm(config);\n};\n\nModal_Modal.destroyAll = function () {\n  while (destroyFns.length) {\n    var close = destroyFns.pop();\n\n    if (close) {\n      close();\n    }\n  }\n};\n\n/* harmony default export */ var modal = (Modal_Modal);\n// CONCATENATED MODULE: ./src/components/flex/Item.tsx\n\n\n\nvar Item_excluded = [\"alignSelf\", \"order\", \"flexGrow\", \"flexShrink\", \"flexBasis\", \"flex\", \"style\", \"children\"];\n\n\n\n\n\n\nvar Item_Item = function Item(props) {\n  var alignSelf = props.alignSelf,\n      order = props.order,\n      flexGrow = props.flexGrow,\n      flexShrink = props.flexShrink,\n      flexBasis = props.flexBasis,\n      flex = props.flex,\n      style = props.style,\n      children = props.children,\n      other = helpers_objectWithoutProperties_default()(props, Item_excluded);\n\n  var newStyle = Object.assign({}, {\n    alignSelf: alignSelf,\n    order: order,\n    flexGrow: flexGrow,\n    flexShrink: flexShrink,\n    flexBasis: flexBasis,\n    flex: flex\n  }, style);\n  return /*#__PURE__*/external_react_default.a.createElement(\"div\", helpers_extends_default()({\n    style: Object.keys(newStyle).reduce(function (prev, key) {\n      if (newStyle[key]) {\n        return Object.assign(prev, helpers_defineProperty_default()({}, key, newStyle[key]));\n      }\n\n      return prev;\n    }, {})\n  }, other), children);\n};\n\n/* harmony default export */ var flex_Item = (Item_Item);\n// CONCATENATED MODULE: ./src/components/flex/Flex.tsx\n\n\n\n\n\n\n\n\n\nvar Flex_excluded = [\"flexDirection\", \"flexWrap\", \"flexFlow\", \"justifyContent\", \"alignItems\", \"alignContent\", \"alignSelf\", \"order\", \"flexGrow\", \"flexShrink\", \"flexBasis\", \"flex\", \"style\", \"children\"];\n\n\n\n\n\nfunction Flex_createSuper(Derived) { var hasNativeReflectConstruct = Flex_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction Flex_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar Flex_Flex = /*#__PURE__*/function (_Component) {\n  inherits_default()(Flex, _Component);\n\n  var _super = Flex_createSuper(Flex);\n\n  function Flex() {\n    classCallCheck_default()(this, Flex);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(Flex, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          flexDirection = _this$props.flexDirection,\n          flexWrap = _this$props.flexWrap,\n          flexFlow = _this$props.flexFlow,\n          justifyContent = _this$props.justifyContent,\n          alignItems = _this$props.alignItems,\n          alignContent = _this$props.alignContent,\n          alignSelf = _this$props.alignSelf,\n          order = _this$props.order,\n          flexGrow = _this$props.flexGrow,\n          flexShrink = _this$props.flexShrink,\n          flexBasis = _this$props.flexBasis,\n          flex = _this$props.flex,\n          style = _this$props.style,\n          children = _this$props.children,\n          other = helpers_objectWithoutProperties_default()(_this$props, Flex_excluded);\n\n      var newStyle = Object.assign({}, {\n        display: 'flex',\n        flexDirection: flexDirection,\n        flexWrap: flexWrap,\n        flexFlow: flexFlow,\n        justifyContent: justifyContent,\n        alignItems: alignItems,\n        alignContent: alignContent,\n        alignSelf: alignSelf,\n        order: order,\n        flexGrow: flexGrow,\n        flexShrink: flexShrink,\n        flexBasis: flexBasis,\n        flex: flex\n      }, style);\n      return /*#__PURE__*/external_react_default.a.createElement(\"div\", helpers_extends_default()({\n        style: Object.keys(newStyle).reduce(function (prev, key) {\n          if (newStyle[key]) {\n            return Object.assign(prev, helpers_defineProperty_default()({}, key, newStyle[key]));\n          }\n\n          return prev;\n        }, {})\n      }, other), children);\n    }\n  }]);\n\n  return Flex;\n}(external_react_[\"Component\"]);\n\nFlex_Flex.Item = void 0;\nFlex_Flex.Item = flex_Item;\n/* harmony default export */ var flex_Flex = (Flex_Flex);\n// CONCATENATED MODULE: ./src/components/flex/index.tsx\n\n// CONCATENATED MODULE: ./src/components/help/ShortcutHelp.tsx\n\n\n\n\n\n\n\n\nvar shortcuts = [[{\n  key: ['esc'],\n  description: esm_i18next.t('shortcut.escape')\n}, {\n  key: ['h'],\n  description: esm_i18next.t('shortcut.h')\n}, {\n  key: ['q'],\n  description: esm_i18next.t('shortcut.q')\n}, {\n  key: ['w'],\n  description: esm_i18next.t('shortcut.w')\n}, {\n  key: ['o'],\n  description: esm_i18next.t('shortcut.o')\n}, {\n  key: ['p'],\n  description: esm_i18next.t('shortcut.p')\n}, {\n  key: ['+'],\n  description: esm_i18next.t('shortcut.plus')\n}, {\n  key: ['-'],\n  description: esm_i18next.t('shortcut.minus')\n}, {\n  key: ['↑'],\n  description: esm_i18next.t('shortcut.arrow-up')\n}, {\n  key: ['↓'],\n  description: esm_i18next.t('shortcut.arrow-down')\n}, {\n  key: ['←'],\n  description: esm_i18next.t('shortcut.arrow-left')\n}, {\n  key: ['→'],\n  description: esm_i18next.t('shortcut.arrow-right')\n}], [{\n  key: ['delete | backspace'],\n  description: esm_i18next.t('shortcut.delete')\n}, {\n  key: ['ctrl | cmd', 'a'],\n  description: esm_i18next.t('shortcut.ctrl-a')\n}, {\n  key: ['ctrl | cmd', 'c'],\n  description: esm_i18next.t('shortcut.ctrl-c')\n}, {\n  key: ['ctrl | cmd', 'v'],\n  description: esm_i18next.t('shortcut.ctrl-v')\n}, {\n  key: ['ctrl | cmd', 'x'],\n  description: esm_i18next.t('shortcut.ctrl-x')\n}, {\n  key: ['ctrl | cmd', 'z'],\n  description: esm_i18next.t('shortcut.ctrl-z')\n}, {\n  key: ['ctrl | cmd', 'y'],\n  description: esm_i18next.t('shortcut.ctrl-y')\n}, {\n  key: ['alt', 'mouse left'],\n  description: esm_i18next.t('shortcut.alt-mouse-left')\n}, {\n  key: ['shift', 'mouse left'],\n  description: esm_i18next.t('shortcut.shfit-mouse-left')\n}, {\n  key: ['mouse left'],\n  description: esm_i18next.t('shortcut.mouse-left')\n}, {\n  key: ['mouse right'],\n  description: esm_i18next.t('shortcut.mouse-right')\n}]];\n\nvar ShortcutHelp_ShortcutHelp = function ShortcutHelp() {\n  return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n    className: \"rde-shortcut-help\"\n  }, shortcuts.map(function (column, idx) {\n    return /*#__PURE__*/external_react_default.a.createElement(\"ul\", {\n      className: \"rde-shortcut-help-list\",\n      key: idx\n    }, column.map(function (shortcut) {\n      return /*#__PURE__*/external_react_default.a.createElement(\"li\", {\n        key: shortcut.key.toString(),\n        className: \"rde-shortcut-help-key\"\n      }, shortcut.key.map(function (key) {\n        return /*#__PURE__*/external_react_default.a.createElement(\"kbd\", {\n          key: key,\n          className: \"rde-shortcut-help-key-unit\"\n        }, /*#__PURE__*/external_react_default.a.createElement(\"span\", null, key));\n      }), /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        className: \"rde-shortcut-help-key-def\"\n      }, shortcut.description));\n    }));\n  }));\n};\n\n/* harmony default export */ var help_ShortcutHelp = (ShortcutHelp_ShortcutHelp);\n// CONCATENATED MODULE: ./src/components/help/index.tsx\n\n// CONCATENATED MODULE: ./src/components/layout/Title.tsx\n\n\n\n\n\n\n\n\n\n\nfunction Title_createSuper(Derived) { var hasNativeReflectConstruct = Title_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction Title_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar Title_Title = /*#__PURE__*/function (_Component) {\n  inherits_default()(Title, _Component);\n\n  var _super = Title_createSuper(Title);\n\n  function Title() {\n    var _this;\n\n    classCallCheck_default()(this, Title);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      visible: false\n    };\n    _this.handlers = {\n      goGithub: function goGithub() {\n        window.open('https://github.com/salgum1114/react-design-editor');\n      },\n      goDocs: function goDocs() {\n        window.open('https://salgum1114.github.io/react-design-editor/docs');\n      },\n      showHelp: function showHelp() {\n        _this.setState({\n          visible: true\n        });\n      }\n    };\n    return _this;\n  }\n\n  createClass_default()(Title, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (globalThis) {\n        (globalThis.adsbygoogle = globalThis.adsbygoogle || []).push({});\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var visible = this.state.visible;\n      return /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        style: {\n          background: 'linear-gradient(141deg,#23303e,#404040 51%,#23303e 75%)'\n        },\n        flexWrap: \"wrap\",\n        flex: \"1\",\n        alignItems: \"center\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        style: {\n          marginLeft: 8\n        },\n        flex: \"0 1 auto\"\n      }, /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        style: {\n          color: '#fff',\n          fontSize: 24,\n          fontWeight: 500\n        }\n      }, \"React Design Editor\"), /*#__PURE__*/external_react_default.a.createElement(es_tooltip, {\n        title: esm_i18next.t('action.go-github'),\n        overlayStyle: {\n          fontSize: 16\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        style: {\n          color: 'white'\n        },\n        shape: \"circle\",\n        size: \"large\",\n        onClick: this.handlers.goGithub\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"github\",\n        prefix: \"fab\",\n        size: 1.5\n      }))), /*#__PURE__*/external_react_default.a.createElement(es_tooltip, {\n        title: esm_i18next.t('action.go-docs'),\n        overlayStyle: {\n          fontSize: 16\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        style: {\n          color: 'white'\n        },\n        shape: \"circle\",\n        size: \"large\",\n        onClick: this.handlers.goDocs\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"book\",\n        prefix: \"fas\",\n        size: 1.5\n      }))), /*#__PURE__*/external_react_default.a.createElement(es_tooltip, {\n        title: esm_i18next.t('action.shortcut-help'),\n        overlayStyle: {\n          fontSize: 16\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        style: {\n          color: 'white'\n        },\n        shape: \"circle\",\n        size: \"large\",\n        onClick: this.handlers.showHelp\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"question\",\n        prefix: \"fas\",\n        size: 1.5\n      })))), /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        style: {\n          marginLeft: 88\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(es_menu, {\n        mode: \"horizontal\",\n        theme: \"dark\",\n        style: {\n          background: 'transparent',\n          fontSize: '16px'\n        },\n        onClick: this.props.onChangeEditor,\n        selectedKeys: [this.props.currentEditor]\n      }, /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n        key: \"imagemap\",\n        style: {\n          color: '#fff'\n        }\n      }, esm_i18next.t('imagemap.imagemap')), /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n        key: \"workflow\",\n        style: {\n          color: '#fff'\n        }\n      }, esm_i18next.t('workflow.workflow')))), /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        flex: \"1\",\n        justifyContent: \"flex-end\"\n      }, /*#__PURE__*/external_react_default.a.createElement(\"ins\", {\n        className: \"adsbygoogle\",\n        style: {\n          display: 'inline-block',\n          width: 600,\n          height: 60\n        },\n        \"data-ad-client\": \"ca-pub-8569372752842198\",\n        \"data-ad-slot\": \"5790685139\"\n      })), /*#__PURE__*/external_react_default.a.createElement(modal, {\n        visible: visible,\n        onCancel: function onCancel() {\n          return _this2.setState({\n            visible: false\n          });\n        },\n        closable: true,\n        footer: null,\n        width: \"50%\"\n      }, /*#__PURE__*/external_react_default.a.createElement(help_ShortcutHelp, null)));\n    }\n  }]);\n\n  return Title;\n}(external_react_[\"Component\"]);\n\n/* harmony default export */ var layout_Title = (Title_Title);\n// CONCATENATED MODULE: ./node_modules/antd/es/spin/index.js\nfunction spin_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { spin_typeof = function _typeof(obj) { return typeof obj; }; } else { spin_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return spin_typeof(obj); }\n\nfunction spin_extends() { spin_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 spin_extends.apply(this, arguments); }\n\nfunction spin_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\nfunction spin_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction spin_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 spin_createClass(Constructor, protoProps, staticProps) { if (protoProps) spin_defineProperties(Constructor.prototype, protoProps); if (staticProps) spin_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction spin_possibleConstructorReturn(self, call) { if (call && (spin_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return spin_assertThisInitialized(self); }\n\nfunction spin_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction spin_getPrototypeOf(o) { spin_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return spin_getPrototypeOf(o); }\n\nfunction spin_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) spin_setPrototypeOf(subClass, superClass); }\n\nfunction spin_setPrototypeOf(o, p) { spin_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return spin_setPrototypeOf(o, p); }\n\nvar spin_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\nvar SpinSizes = tuple('small', 'default', 'large'); // Render indicator\n\nvar defaultIndicator = null;\n\nfunction renderIndicator(prefixCls, props) {\n  var indicator = props.indicator;\n  var dotClassName = \"\".concat(prefixCls, \"-dot\");\n\n  if (external_react_[\"isValidElement\"](indicator)) {\n    return external_react_[\"cloneElement\"](indicator, {\n      className: classnames_default()(indicator.props.className, dotClassName)\n    });\n  }\n\n  if (external_react_[\"isValidElement\"](defaultIndicator)) {\n    return external_react_[\"cloneElement\"](defaultIndicator, {\n      className: classnames_default()(defaultIndicator.props.className, dotClassName)\n    });\n  }\n\n  return external_react_[\"createElement\"](\"span\", {\n    className: classnames_default()(dotClassName, \"\".concat(prefixCls, \"-dot-spin\"))\n  }, external_react_[\"createElement\"](\"i\", null), external_react_[\"createElement\"](\"i\", null), external_react_[\"createElement\"](\"i\", null), external_react_[\"createElement\"](\"i\", null));\n}\n\nfunction shouldDelay(spinning, delay) {\n  return !!spinning && !!delay && !isNaN(Number(delay));\n}\n\nvar spin_Spin =\n/*#__PURE__*/\nfunction (_React$Component) {\n  spin_inherits(Spin, _React$Component);\n\n  function Spin(props) {\n    var _this;\n\n    spin_classCallCheck(this, Spin);\n\n    _this = spin_possibleConstructorReturn(this, spin_getPrototypeOf(Spin).call(this, props));\n\n    _this.debouncifyUpdateSpinning = function (props) {\n      var _ref = props || _this.props,\n          delay = _ref.delay;\n\n      if (delay) {\n        _this.updateSpinning = debounce_default()(_this.originalUpdateSpinning, delay);\n      }\n    };\n\n    _this.updateSpinning = function () {\n      var spinning = _this.props.spinning;\n      var currentSpinning = _this.state.spinning;\n\n      if (currentSpinning !== spinning) {\n        _this.setState({\n          spinning: spinning\n        });\n      }\n    };\n\n    _this.renderSpin = function (_ref2) {\n      var _classNames;\n\n      var getPrefixCls = _ref2.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          className = _a.className,\n          size = _a.size,\n          tip = _a.tip,\n          wrapperClassName = _a.wrapperClassName,\n          style = _a.style,\n          restProps = spin_rest(_a, [\"prefixCls\", \"className\", \"size\", \"tip\", \"wrapperClassName\", \"style\"]);\n\n      var spinning = _this.state.spinning;\n      var prefixCls = getPrefixCls('spin', customizePrefixCls);\n      var spinClassName = classnames_default()(prefixCls, (_classNames = {}, spin_defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), spin_defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), spin_defineProperty(_classNames, \"\".concat(prefixCls, \"-spinning\"), spinning), spin_defineProperty(_classNames, \"\".concat(prefixCls, \"-show-text\"), !!tip), _classNames), className); // fix https://fb.me/react-unknown-prop\n\n      var divProps = es(restProps, ['spinning', 'delay', 'indicator']);\n      var spinElement = external_react_[\"createElement\"](\"div\", spin_extends({}, divProps, {\n        style: style,\n        className: spinClassName\n      }), renderIndicator(prefixCls, _this.props), tip ? external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-text\")\n      }, tip) : null);\n\n      if (_this.isNestedPattern()) {\n        var containerClassName = classnames_default()(\"\".concat(prefixCls, \"-container\"), spin_defineProperty({}, \"\".concat(prefixCls, \"-blur\"), spinning));\n        return external_react_[\"createElement\"](\"div\", spin_extends({}, divProps, {\n          className: classnames_default()(\"\".concat(prefixCls, \"-nested-loading\"), wrapperClassName)\n        }), spinning && external_react_[\"createElement\"](\"div\", {\n          key: \"loading\"\n        }, spinElement), external_react_[\"createElement\"](\"div\", {\n          className: containerClassName,\n          key: \"container\"\n        }, _this.props.children));\n      }\n\n      return spinElement;\n    };\n\n    var spinning = props.spinning,\n        delay = props.delay;\n    var shouldBeDelayed = shouldDelay(spinning, delay);\n    _this.state = {\n      spinning: spinning && !shouldBeDelayed\n    };\n    _this.originalUpdateSpinning = _this.updateSpinning;\n\n    _this.debouncifyUpdateSpinning(props);\n\n    return _this;\n  }\n\n  spin_createClass(Spin, [{\n    key: \"isNestedPattern\",\n    value: function isNestedPattern() {\n      return !!(this.props && this.props.children);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var updateSpinning = this.updateSpinning;\n\n      if (updateSpinning && updateSpinning.cancel) {\n        updateSpinning.cancel();\n      }\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.updateSpinning();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.debouncifyUpdateSpinning();\n      this.updateSpinning();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderSpin);\n    }\n  }], [{\n    key: \"setDefaultIndicator\",\n    value: function setDefaultIndicator(indicator) {\n      defaultIndicator = indicator;\n    }\n  }]);\n\n  return Spin;\n}(external_react_[\"Component\"]);\n\nspin_Spin.defaultProps = {\n  spinning: true,\n  size: 'default',\n  wrapperClassName: ''\n};\nspin_Spin.propTypes = {\n  prefixCls: prop_types[\"string\"],\n  className: prop_types[\"string\"],\n  spinning: prop_types[\"bool\"],\n  size: prop_types[\"oneOf\"](SpinSizes),\n  wrapperClassName: prop_types[\"string\"],\n  indicator: prop_types[\"element\"]\n};\n/* harmony default export */ var es_spin = (spin_Spin);\n// CONCATENATED MODULE: ./node_modules/antd/es/layout/layout.js\nfunction layout_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { layout_typeof = function _typeof(obj) { return typeof obj; }; } else { layout_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return layout_typeof(obj); }\n\nfunction layout_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\nfunction layout_toConsumableArray(arr) { return layout_arrayWithoutHoles(arr) || layout_iterableToArray(arr) || layout_nonIterableSpread(); }\n\nfunction layout_nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction layout_iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction layout_arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction layout_extends() { layout_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 layout_extends.apply(this, arguments); }\n\nfunction layout_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction layout_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 layout_createClass(Constructor, protoProps, staticProps) { if (protoProps) layout_defineProperties(Constructor.prototype, protoProps); if (staticProps) layout_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction layout_possibleConstructorReturn(self, call) { if (call && (layout_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return layout_assertThisInitialized(self); }\n\nfunction layout_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction layout_getPrototypeOf(o) { layout_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return layout_getPrototypeOf(o); }\n\nfunction layout_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) layout_setPrototypeOf(subClass, superClass); }\n\nfunction layout_setPrototypeOf(o, p) { layout_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return layout_setPrototypeOf(o, p); }\n\nvar layout_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nfunction generator(_ref) {\n  var suffixCls = _ref.suffixCls,\n      tagName = _ref.tagName;\n  return function (BasicComponent) {\n    return (\n      /*#__PURE__*/\n      function (_React$Component) {\n        layout_inherits(Adapter, _React$Component);\n\n        function Adapter() {\n          var _this;\n\n          layout_classCallCheck(this, Adapter);\n\n          _this = layout_possibleConstructorReturn(this, layout_getPrototypeOf(Adapter).apply(this, arguments));\n\n          _this.renderComponent = function (_ref2) {\n            var getPrefixCls = _ref2.getPrefixCls;\n            var customizePrefixCls = _this.props.prefixCls;\n            var prefixCls = getPrefixCls(suffixCls, customizePrefixCls);\n            return external_react_[\"createElement\"](BasicComponent, layout_extends({\n              prefixCls: prefixCls,\n              tagName: tagName\n            }, _this.props));\n          };\n\n          return _this;\n        }\n\n        layout_createClass(Adapter, [{\n          key: \"render\",\n          value: function render() {\n            return external_react_[\"createElement\"](ConfigConsumer, null, this.renderComponent);\n          }\n        }]);\n\n        return Adapter;\n      }(external_react_[\"Component\"])\n    );\n  };\n}\n\nvar layout_Basic =\n/*#__PURE__*/\nfunction (_React$Component2) {\n  layout_inherits(Basic, _React$Component2);\n\n  function Basic() {\n    layout_classCallCheck(this, Basic);\n\n    return layout_possibleConstructorReturn(this, layout_getPrototypeOf(Basic).apply(this, arguments));\n  }\n\n  layout_createClass(Basic, [{\n    key: \"render\",\n    value: function render() {\n      var _a = this.props,\n          prefixCls = _a.prefixCls,\n          className = _a.className,\n          children = _a.children,\n          tagName = _a.tagName,\n          others = layout_rest(_a, [\"prefixCls\", \"className\", \"children\", \"tagName\"]);\n\n      var classString = classnames_default()(className, prefixCls);\n      return external_react_[\"createElement\"](tagName, layout_extends({\n        className: classString\n      }, others), children);\n    }\n  }]);\n\n  return Basic;\n}(external_react_[\"Component\"]);\n\nvar layout_BasicLayout =\n/*#__PURE__*/\nfunction (_React$Component3) {\n  layout_inherits(BasicLayout, _React$Component3);\n\n  function BasicLayout() {\n    var _this2;\n\n    layout_classCallCheck(this, BasicLayout);\n\n    _this2 = layout_possibleConstructorReturn(this, layout_getPrototypeOf(BasicLayout).apply(this, arguments));\n    _this2.state = {\n      siders: []\n    };\n    return _this2;\n  }\n\n  layout_createClass(BasicLayout, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      var _this3 = this;\n\n      return {\n        siderHook: {\n          addSider: function addSider(id) {\n            _this3.setState(function (state) {\n              return {\n                siders: [].concat(layout_toConsumableArray(state.siders), [id])\n              };\n            });\n          },\n          removeSider: function removeSider(id) {\n            _this3.setState(function (state) {\n              return {\n                siders: state.siders.filter(function (currentId) {\n                  return currentId !== id;\n                })\n              };\n            });\n          }\n        }\n      };\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _a = this.props,\n          prefixCls = _a.prefixCls,\n          className = _a.className,\n          children = _a.children,\n          hasSider = _a.hasSider,\n          tagName = _a.tagName,\n          others = layout_rest(_a, [\"prefixCls\", \"className\", \"children\", \"hasSider\", \"tagName\"]);\n\n      var classString = classnames_default()(className, prefixCls, layout_defineProperty({}, \"\".concat(prefixCls, \"-has-sider\"), hasSider || this.state.siders.length > 0));\n      return external_react_[\"createElement\"](tagName, layout_extends({\n        className: classString\n      }, others), children);\n    }\n  }]);\n\n  return BasicLayout;\n}(external_react_[\"Component\"]);\n\nlayout_BasicLayout.childContextTypes = {\n  siderHook: prop_types[\"object\"]\n};\nvar Layout = generator({\n  suffixCls: 'layout',\n  tagName: 'section'\n})(layout_BasicLayout);\nvar Header = generator({\n  suffixCls: 'layout-header',\n  tagName: 'header'\n})(layout_Basic);\nvar Footer = generator({\n  suffixCls: 'layout-footer',\n  tagName: 'footer'\n})(layout_Basic);\nvar layout_Content = generator({\n  suffixCls: 'layout-content',\n  tagName: 'main'\n})(layout_Basic);\nLayout.Header = Header;\nLayout.Footer = Footer;\nLayout.Content = layout_Content;\n/* harmony default export */ var layout_layout = (Layout);\n// CONCATENATED MODULE: ./node_modules/antd/es/_util/isNumeric.js\nvar isNumeric = function isNumeric(value) {\n  return !isNaN(parseFloat(value)) && isFinite(value);\n};\n\n/* harmony default export */ var _util_isNumeric = (isNumeric);\n// CONCATENATED MODULE: ./node_modules/antd/es/layout/Sider.js\nfunction Sider_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Sider_typeof = function _typeof(obj) { return typeof obj; }; } else { Sider_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Sider_typeof(obj); }\n\nfunction Sider_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\nfunction Sider_extends() { Sider_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 Sider_extends.apply(this, arguments); }\n\nfunction Sider_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Sider_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 Sider_createClass(Constructor, protoProps, staticProps) { if (protoProps) Sider_defineProperties(Constructor.prototype, protoProps); if (staticProps) Sider_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Sider_possibleConstructorReturn(self, call) { if (call && (Sider_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Sider_assertThisInitialized(self); }\n\nfunction Sider_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Sider_getPrototypeOf(o) { Sider_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Sider_getPrototypeOf(o); }\n\nfunction Sider_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) Sider_setPrototypeOf(subClass, superClass); }\n\nfunction Sider_setPrototypeOf(o, p) { Sider_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Sider_setPrototypeOf(o, p); }\n\nvar Sider_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n // matchMedia polyfill for\n// https://github.com/WickyNilliams/enquire.js/issues/82\n\nif (typeof window !== 'undefined') {\n  var matchMediaPolyfill = function matchMediaPolyfill(mediaQuery) {\n    return {\n      media: mediaQuery,\n      matches: false,\n      addListener: function addListener() {},\n      removeListener: function removeListener() {}\n    };\n  };\n\n  window.matchMedia = window.matchMedia || matchMediaPolyfill;\n}\n\n\n\n\n\n\n\n\nvar dimensionMap = {\n  xs: '480px',\n  sm: '576px',\n  md: '768px',\n  lg: '992px',\n  xl: '1200px',\n  xxl: '1600px'\n};\n\nvar generateId = function () {\n  var i = 0;\n  return function () {\n    var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    i += 1;\n    return \"\".concat(prefix).concat(i);\n  };\n}();\n\nvar Sider_Sider =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Sider_inherits(Sider, _React$Component);\n\n  function Sider(props) {\n    var _this;\n\n    Sider_classCallCheck(this, Sider);\n\n    _this = Sider_possibleConstructorReturn(this, Sider_getPrototypeOf(Sider).call(this, props));\n\n    _this.responsiveHandler = function (mql) {\n      _this.setState({\n        below: mql.matches\n      });\n\n      var onBreakpoint = _this.props.onBreakpoint;\n\n      if (onBreakpoint) {\n        onBreakpoint(mql.matches);\n      }\n\n      if (_this.state.collapsed !== mql.matches) {\n        _this.setCollapsed(mql.matches, 'responsive');\n      }\n    };\n\n    _this.setCollapsed = function (collapsed, type) {\n      if (!('collapsed' in _this.props)) {\n        _this.setState({\n          collapsed: collapsed\n        });\n      }\n\n      var onCollapse = _this.props.onCollapse;\n\n      if (onCollapse) {\n        onCollapse(collapsed, type);\n      }\n    };\n\n    _this.toggle = function () {\n      var collapsed = !_this.state.collapsed;\n\n      _this.setCollapsed(collapsed, 'clickTrigger');\n    };\n\n    _this.belowShowChange = function () {\n      _this.setState({\n        belowShow: !_this.state.belowShow\n      });\n    };\n\n    _this.renderSider = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          className = _a.className,\n          theme = _a.theme,\n          collapsible = _a.collapsible,\n          reverseArrow = _a.reverseArrow,\n          trigger = _a.trigger,\n          style = _a.style,\n          width = _a.width,\n          collapsedWidth = _a.collapsedWidth,\n          others = Sider_rest(_a, [\"prefixCls\", \"className\", \"theme\", \"collapsible\", \"reverseArrow\", \"trigger\", \"style\", \"width\", \"collapsedWidth\"]);\n\n      var prefixCls = getPrefixCls('layout-sider', customizePrefixCls);\n      var divProps = es(others, ['collapsed', 'defaultCollapsed', 'onCollapse', 'breakpoint', 'onBreakpoint']);\n      var rawWidth = _this.state.collapsed ? collapsedWidth : width; // use \"px\" as fallback unit for width\n\n      var siderWidth = _util_isNumeric(rawWidth) ? \"\".concat(rawWidth, \"px\") : String(rawWidth); // special trigger when collapsedWidth == 0\n\n      var zeroWidthTrigger = parseFloat(String(collapsedWidth || 0)) === 0 ? external_react_[\"createElement\"](\"span\", {\n        onClick: _this.toggle,\n        className: \"\".concat(prefixCls, \"-zero-width-trigger \").concat(prefixCls, \"-zero-width-trigger-\").concat(reverseArrow ? 'right' : 'left')\n      }, external_react_[\"createElement\"](es_icon, {\n        type: \"bars\"\n      })) : null;\n      var iconObj = {\n        expanded: reverseArrow ? external_react_[\"createElement\"](es_icon, {\n          type: \"right\"\n        }) : external_react_[\"createElement\"](es_icon, {\n          type: \"left\"\n        }),\n        collapsed: reverseArrow ? external_react_[\"createElement\"](es_icon, {\n          type: \"left\"\n        }) : external_react_[\"createElement\"](es_icon, {\n          type: \"right\"\n        })\n      };\n      var status = _this.state.collapsed ? 'collapsed' : 'expanded';\n      var defaultTrigger = iconObj[status];\n      var triggerDom = trigger !== null ? zeroWidthTrigger || external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-trigger\"),\n        onClick: _this.toggle,\n        style: {\n          width: siderWidth\n        }\n      }, trigger || defaultTrigger) : null;\n\n      var divStyle = Sider_extends({}, style, {\n        flex: \"0 0 \".concat(siderWidth),\n        maxWidth: siderWidth,\n        minWidth: siderWidth,\n        width: siderWidth\n      });\n\n      var siderCls = classnames_default()(className, prefixCls, \"\".concat(prefixCls, \"-\").concat(theme), (_classNames = {}, Sider_defineProperty(_classNames, \"\".concat(prefixCls, \"-collapsed\"), !!_this.state.collapsed), Sider_defineProperty(_classNames, \"\".concat(prefixCls, \"-has-trigger\"), collapsible && trigger !== null && !zeroWidthTrigger), Sider_defineProperty(_classNames, \"\".concat(prefixCls, \"-below\"), !!_this.state.below), Sider_defineProperty(_classNames, \"\".concat(prefixCls, \"-zero-width\"), parseFloat(siderWidth) === 0), _classNames));\n      return external_react_[\"createElement\"](\"aside\", Sider_extends({\n        className: siderCls\n      }, divProps, {\n        style: divStyle\n      }), external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-children\")\n      }, _this.props.children), collapsible || _this.state.below && zeroWidthTrigger ? triggerDom : null);\n    };\n\n    _this.uniqueId = generateId('ant-sider-');\n    var matchMedia;\n\n    if (typeof window !== 'undefined') {\n      matchMedia = window.matchMedia;\n    }\n\n    if (matchMedia && props.breakpoint && props.breakpoint in dimensionMap) {\n      _this.mql = matchMedia(\"(max-width: \".concat(dimensionMap[props.breakpoint], \")\"));\n    }\n\n    var collapsed;\n\n    if ('collapsed' in props) {\n      collapsed = props.collapsed;\n    } else {\n      collapsed = props.defaultCollapsed;\n    }\n\n    _this.state = {\n      collapsed: collapsed,\n      below: false\n    };\n    return _this;\n  }\n\n  Sider_createClass(Sider, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      return {\n        siderCollapsed: this.state.collapsed,\n        collapsedWidth: this.props.collapsedWidth\n      };\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (this.mql) {\n        this.mql.addListener(this.responsiveHandler);\n        this.responsiveHandler(this.mql);\n      }\n\n      if (this.context.siderHook) {\n        this.context.siderHook.addSider(this.uniqueId);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.mql) {\n        this.mql.removeListener(this.responsiveHandler);\n      }\n\n      if (this.context.siderHook) {\n        this.context.siderHook.removeSider(this.uniqueId);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderSider);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      if ('collapsed' in nextProps) {\n        return {\n          collapsed: nextProps.collapsed\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Sider;\n}(external_react_[\"Component\"]);\n\nSider_Sider.__ANT_LAYOUT_SIDER = true;\nSider_Sider.defaultProps = {\n  collapsible: false,\n  defaultCollapsed: false,\n  reverseArrow: false,\n  width: 200,\n  collapsedWidth: 80,\n  style: {},\n  theme: 'dark'\n};\nSider_Sider.childContextTypes = {\n  siderCollapsed: prop_types[\"bool\"],\n  collapsedWidth: prop_types[\"oneOfType\"]([prop_types[\"number\"], prop_types[\"string\"]])\n};\nSider_Sider.contextTypes = {\n  siderHook: prop_types[\"object\"]\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(Sider_Sider);\n/* harmony default export */ var layout_Sider = (Sider_Sider);\n// CONCATENATED MODULE: ./node_modules/antd/es/layout/index.js\n\n\nlayout_layout.Sider = layout_Sider;\n/* harmony default export */ var es_layout = (layout_layout);\n// CONCATENATED MODULE: ./src/components/layout/Content.tsx\n\n\n\n\n\n\n\n\nfunction Content_createSuper(Derived) { var hasNativeReflectConstruct = Content_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction Content_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\nvar layout_Content_Content = /*#__PURE__*/function (_Component) {\n  inherits_default()(Content, _Component);\n\n  var _super = Content_createSuper(Content);\n\n  function Content() {\n    classCallCheck_default()(this, Content);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(Content, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          title = _this$props.title,\n          leftSider = _this$props.leftSider,\n          content = _this$props.content,\n          rightSider = _this$props.rightSider,\n          className = _this$props.className,\n          loading = _this$props.loading,\n          children = _this$props.children;\n      return /*#__PURE__*/external_react_default.a.createElement(es_spin, {\n        spinning: loading\n      }, /*#__PURE__*/external_react_default.a.createElement(es_layout, {\n        className: \"rde-content-layout\"\n      }, title, /*#__PURE__*/external_react_default.a.createElement(es_layout, {\n        style: {\n          overflowY: 'auto',\n          overflowX: 'hidden',\n          minHeight: \"calc(100vh - \".concat(title ? 98 : 60, \"px)\"),\n          height: \"calc(100vh - \".concat(title ? 98 : 60, \"px)\")\n        },\n        className: className\n      }, leftSider, content || children, rightSider)));\n    }\n  }]);\n\n  return Content;\n}(external_react_[\"Component\"]);\n\nlayout_Content_Content.propTypes = {\n  title: prop_types_default.a.any,\n  leftSider: prop_types_default.a.any,\n  content: prop_types_default.a.any,\n  rightSider: prop_types_default.a.any,\n  className: prop_types_default.a.string,\n  loading: prop_types_default.a.bool\n};\nlayout_Content_Content.defaultProps = {\n  className: 'rde-content-layout-main',\n  loading: false\n};\n/* harmony default export */ var components_layout_Content = (layout_Content_Content);\n// CONCATENATED MODULE: ./src/components/layout/index.tsx\n\n\n// CONCATENATED MODULE: ./src/components/exception/UnsafetyWordException.js\n\n\n\n\n\nvar UnsafetyWordException_UnsafetyWordException = /*#__PURE__*/function () {\n  function UnsafetyWordException() {\n    classCallCheck_default()(this, UnsafetyWordException);\n\n    this.message = 'Includes unsafety word.';\n    this.name = 'UnsafetyWordException';\n  }\n\n  createClass_default()(UnsafetyWordException, [{\n    key: \"toString\",\n    value: function toString() {\n      return \"\".concat(this.name, \": \").concat(this.message);\n    }\n  }]);\n\n  return UnsafetyWordException;\n}();\n\n\n// CONCATENATED MODULE: ./src/components/exception/NoExistWordException.js\n\n\n\n\n\nvar NoExistWordException_NoExistWordException = /*#__PURE__*/function () {\n  function NoExistWordException() {\n    classCallCheck_default()(this, NoExistWordException);\n\n    this.message = 'Does not exist word.';\n    this.name = 'NoExistWordException';\n  }\n\n  createClass_default()(NoExistWordException, [{\n    key: \"toString\",\n    value: function toString() {\n      return \"\".concat(this.name, \": \").concat(this.message);\n    }\n  }]);\n\n  return NoExistWordException;\n}();\n\n\n// CONCATENATED MODULE: ./src/components/sandbox/SandBox.js\n\n\n\n\n\n\n\n\n\n\nvar excludeWords = ['window', 'Window', 'alert', 'console', 'this', 'eval', 'new', 'function', 'Function', 'document'];\nvar includeWords = ['return'];\nvar parameters = ['value', 'animations', 'styles', 'userProperty'];\n\nvar SandBox_SandBox = /*#__PURE__*/function () {\n  /**\n   *Creates an instance of SandBox.\n   * @param {{ excludeWords: string[], includeWords: string[] }} params\n   * @memberof SandBox\n   */\n  function SandBox() {\n    var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    classCallCheck_default()(this, SandBox);\n\n    this.excludeWords = params.excludeWords || excludeWords;\n    this.includeWords = params.includeWords || includeWords;\n  } // eslint-disable-next-line class-methods-use-this\n\n\n  createClass_default()(SandBox, [{\n    key: \"verify\",\n    value: function verify(code) {\n      var newCode = code.toString();\n\n      if (this.excludeWords.some(function (word) {\n        return code.includes(word);\n      })) {\n        throw new UnsafetyWordException_UnsafetyWordException();\n      }\n\n      if (!this.includeWords.some(function (word) {\n        return code.includes(word);\n      })) {\n        throw new NoExistWordException_NoExistWordException();\n      } // eslint-disable-next-line no-new-func\n\n\n      return new Function(parameters, \"\\\"use strict\\\"; \".concat(newCode));\n    } // eslint-disable-next-line consistent-return\n\n  }, {\n    key: \"compile\",\n    value: function compile(code) {\n      try {\n        return this.verify(code);\n      } catch (error) {\n        if (error.toString) {\n          console.error(error.toString());\n        } else {\n          console.error(error.message);\n        }\n      }\n    }\n  }]);\n\n  return SandBox;\n}();\n\n/* harmony default export */ var sandbox_SandBox = (SandBox_SandBox);\n// EXTERNAL MODULE: ./src/libs/fontawesome-5.2.0/css/all.css\nvar css_all = __webpack_require__(1364);\n\n// EXTERNAL MODULE: ./src/styles/index.less\nvar src_styles = __webpack_require__(1381);\n\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/KeyCode.js\n/* harmony default export */ var es_KeyCode = ({\n  /**\n   * LEFT\n   */\n  LEFT: 37, // also NUM_WEST\n  /**\n   * UP\n   */\n  UP: 38, // also NUM_NORTH\n  /**\n   * RIGHT\n   */\n  RIGHT: 39, // also NUM_EAST\n  /**\n   * DOWN\n   */\n  DOWN: 40 // also NUM_SOUTH\n});\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/utils.js\n\n\n\nfunction utils_toArray(children) {\n  // allow [c,[a,b]]\n  var c = [];\n  external_react_default.a.Children.forEach(children, function (child) {\n    if (child) {\n      c.push(child);\n    }\n  });\n  return c;\n}\n\nfunction getActiveIndex(children, activeKey) {\n  var c = utils_toArray(children);\n  for (var i = 0; i < c.length; i++) {\n    if (c[i].key === activeKey) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction utils_getActiveKey(children, index) {\n  var c = utils_toArray(children);\n  return c[index].key;\n}\n\nfunction setTransform(style, v) {\n  style.transform = v;\n  style.webkitTransform = v;\n  style.mozTransform = v;\n}\n\nfunction isTransform3dSupported(style) {\n  return ('transform' in style || 'webkitTransform' in style || 'MozTransform' in style) && window.atob;\n}\n\nfunction setTransition(style, v) {\n  style.transition = v;\n  style.webkitTransition = v;\n  style.MozTransition = v;\n}\n\nfunction getTransformPropValue(v) {\n  return {\n    transform: v,\n    WebkitTransform: v,\n    MozTransform: v\n  };\n}\n\nfunction utils_isVertical(tabBarPosition) {\n  return tabBarPosition === 'left' || tabBarPosition === 'right';\n}\n\nfunction getTransformByIndex(index, tabBarPosition) {\n  var translate = utils_isVertical(tabBarPosition) ? 'translateY' : 'translateX';\n  return translate + '(' + -index * 100 + '%) translateZ(0)';\n}\n\nfunction getMarginStyle(index, tabBarPosition) {\n  var marginDirection = utils_isVertical(tabBarPosition) ? 'marginTop' : 'marginLeft';\n  return defineProperty_default()({}, marginDirection, -index * 100 + '%');\n}\n\nfunction utils_getStyle(el, property) {\n  return +window.getComputedStyle(el).getPropertyValue(property).replace('px', '');\n}\n\nfunction setPxStyle(el, value, vertical) {\n  value = vertical ? '0px, ' + value + 'px, 0px' : value + 'px, 0px, 0px';\n  setTransform(el.style, 'translate3d(' + value + ')');\n}\n\nfunction getDataAttr(props) {\n  return Object.keys(props).reduce(function (prev, key) {\n    if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') {\n      prev[key] = props[key];\n    }\n    return prev;\n  }, {});\n}\n\nfunction toNum(style, property) {\n  return +style.getPropertyValue(property).replace('px', '');\n}\n\nfunction getTypeValue(start, current, end, tabNode, wrapperNode) {\n  var total = utils_getStyle(wrapperNode, 'padding-' + start);\n  if (!tabNode || !tabNode.parentNode) {\n    return total;\n  }\n\n  var childNodes = tabNode.parentNode.childNodes;\n\n  Array.prototype.some.call(childNodes, function (node) {\n    var style = window.getComputedStyle(node);\n\n    if (node !== tabNode) {\n      total += toNum(style, 'margin-' + start);\n      total += node[current];\n      total += toNum(style, 'margin-' + end);\n\n      if (style.boxSizing === 'content-box') {\n        total += toNum(style, 'border-' + start + '-width') + toNum(style, 'border-' + end + '-width');\n      }\n      return false;\n    }\n\n    // We need count current node margin\n    // ref: https://github.com/react-component/tabs/pull/139#issuecomment-431005262\n    total += toNum(style, 'margin-' + start);\n\n    return true;\n  });\n\n  return total;\n}\n\nfunction getLeft(tabNode, wrapperNode) {\n  return getTypeValue('left', 'offsetWidth', 'right', tabNode, wrapperNode);\n}\n\nfunction getTop(tabNode, wrapperNode) {\n  return getTypeValue('top', 'offsetHeight', 'bottom', tabNode, wrapperNode);\n}\n// EXTERNAL MODULE: ./node_modules/@ant-design/create-react-context/lib/index.js\nvar create_react_context_lib = __webpack_require__(696);\nvar create_react_context_lib_default = /*#__PURE__*/__webpack_require__.n(create_react_context_lib);\n\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/Sentinel.js\n\n\n\n\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n\n\n\n\n\nvar SentinelContext = create_react_context_lib_default()({});\nvar SentinelProvider = SentinelContext.Provider;\nvar SentinelConsumer = SentinelContext.Consumer;\n\nvar Sentinel_sentinelStyle = { width: 0, height: 0, overflow: 'hidden', position: 'absolute' };\n\nvar Sentinel_Sentinel = function (_React$Component) {\n  helpers_inherits_default()(Sentinel, _React$Component);\n\n  function Sentinel() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, Sentinel);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = Sentinel.__proto__ || Object.getPrototypeOf(Sentinel)).call.apply(_ref, [this].concat(args))), _this), _this.onKeyDown = function (_ref2) {\n      var target = _ref2.target,\n          which = _ref2.which,\n          shiftKey = _ref2.shiftKey;\n      var _this$props = _this.props,\n          nextElement = _this$props.nextElement,\n          prevElement = _this$props.prevElement;\n\n      if (which !== KeyCode[\"a\" /* default */].TAB || document.activeElement !== target) return;\n\n      // Tab next\n      if (!shiftKey && nextElement) {\n        nextElement.focus();\n      }\n\n      // Tab prev\n      if (shiftKey && prevElement) {\n        prevElement.focus();\n      }\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(Sentinel, [{\n    key: 'render',\n    value: function render() {\n      var setRef = this.props.setRef;\n\n\n      return external_react_default.a.createElement('div', {\n        tabIndex: 0,\n        ref: setRef,\n        style: Sentinel_sentinelStyle,\n        onKeyDown: this.onKeyDown,\n        role: 'presentation'\n      });\n    }\n  }]);\n\n  return Sentinel;\n}(external_react_default.a.Component);\n\nSentinel_Sentinel.propTypes = {\n  setRef: prop_types_default.a.func,\n  prevElement: prop_types_default.a.object,\n  nextElement: prop_types_default.a.object\n};\n/* harmony default export */ var es_Sentinel = (Sentinel_Sentinel);\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/TabPane.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TabPane_TabPane = function (_React$Component) {\n  helpers_inherits_default()(TabPane, _React$Component);\n\n  function TabPane() {\n    helpers_classCallCheck_default()(this, TabPane);\n\n    return helpers_possibleConstructorReturn_default()(this, (TabPane.__proto__ || Object.getPrototypeOf(TabPane)).apply(this, arguments));\n  }\n\n  helpers_createClass_default()(TabPane, [{\n    key: 'render',\n    value: function render() {\n      var _classnames;\n\n      var _props = this.props,\n          id = _props.id,\n          className = _props.className,\n          destroyInactiveTabPane = _props.destroyInactiveTabPane,\n          active = _props.active,\n          forceRender = _props.forceRender,\n          rootPrefixCls = _props.rootPrefixCls,\n          style = _props.style,\n          children = _props.children,\n          placeholder = _props.placeholder,\n          restProps = objectWithoutProperties_default()(_props, ['id', 'className', 'destroyInactiveTabPane', 'active', 'forceRender', 'rootPrefixCls', 'style', 'children', 'placeholder']);\n\n      this._isActived = this._isActived || active;\n      var prefixCls = rootPrefixCls + '-tabpane';\n      var cls = node_modules_classnames_default()((_classnames = {}, defineProperty_default()(_classnames, prefixCls, 1), defineProperty_default()(_classnames, prefixCls + '-inactive', !active), defineProperty_default()(_classnames, prefixCls + '-active', active), defineProperty_default()(_classnames, className, className), _classnames));\n      var isRender = destroyInactiveTabPane ? active : this._isActived;\n      var shouldRender = isRender || forceRender;\n\n      return external_react_default.a.createElement(\n        SentinelConsumer,\n        null,\n        function (_ref) {\n          var sentinelStart = _ref.sentinelStart,\n              sentinelEnd = _ref.sentinelEnd,\n              setPanelSentinelStart = _ref.setPanelSentinelStart,\n              setPanelSentinelEnd = _ref.setPanelSentinelEnd;\n\n          // Create sentinel\n          var panelSentinelStart = void 0;\n          var panelSentinelEnd = void 0;\n          if (active && shouldRender) {\n            panelSentinelStart = external_react_default.a.createElement(es_Sentinel, {\n              setRef: setPanelSentinelStart,\n              prevElement: sentinelStart\n            });\n            panelSentinelEnd = external_react_default.a.createElement(es_Sentinel, {\n              setRef: setPanelSentinelEnd,\n              nextElement: sentinelEnd\n            });\n          }\n\n          return external_react_default.a.createElement(\n            'div',\n            extends_default()({\n              style: style,\n              role: 'tabpanel',\n              'aria-hidden': active ? 'false' : 'true',\n              className: cls,\n              id: id\n            }, getDataAttr(restProps)),\n            panelSentinelStart,\n            shouldRender ? children : placeholder,\n            panelSentinelEnd\n          );\n        }\n      );\n    }\n  }]);\n\n  return TabPane;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_TabPane = (TabPane_TabPane);\n\n\nTabPane_TabPane.propTypes = {\n  className: prop_types_default.a.string,\n  active: prop_types_default.a.bool,\n  style: prop_types_default.a.any,\n  destroyInactiveTabPane: prop_types_default.a.bool,\n  forceRender: prop_types_default.a.bool,\n  placeholder: prop_types_default.a.node,\n  rootPrefixCls: prop_types_default.a.string,\n  children: prop_types_default.a.node,\n  id: prop_types_default.a.string\n};\n\nTabPane_TabPane.defaultProps = {\n  placeholder: null\n};\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/Tabs.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Tabs_noop() {}\n\nfunction getDefaultActiveKey(props) {\n  var activeKey = void 0;\n  external_react_default.a.Children.forEach(props.children, function (child) {\n    if (child && !activeKey && !child.props.disabled) {\n      activeKey = child.key;\n    }\n  });\n  return activeKey;\n}\n\nfunction activeKeyIsValid(props, key) {\n  var keys = external_react_default.a.Children.map(props.children, function (child) {\n    return child && child.key;\n  });\n  return keys.indexOf(key) >= 0;\n}\n\nvar Tabs_Tabs = function (_React$Component) {\n  helpers_inherits_default()(Tabs, _React$Component);\n\n  function Tabs(props) {\n    helpers_classCallCheck_default()(this, Tabs);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, (Tabs.__proto__ || Object.getPrototypeOf(Tabs)).call(this, props));\n\n    Tabs_initialiseProps.call(_this);\n\n    var activeKey = void 0;\n    if ('activeKey' in props) {\n      activeKey = props.activeKey;\n    } else if ('defaultActiveKey' in props) {\n      activeKey = props.defaultActiveKey;\n    } else {\n      activeKey = getDefaultActiveKey(props);\n    }\n\n    _this.state = {\n      activeKey: activeKey\n    };\n    return _this;\n  }\n\n  helpers_createClass_default()(Tabs, [{\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.destroy = true;\n      raf_default.a.cancel(this.sentinelId);\n    }\n\n    // Sentinel for tab index\n\n  }, {\n    key: 'updateSentinelContext',\n    value: function updateSentinelContext() {\n      var _this2 = this;\n\n      if (this.destroy) return;\n\n      raf_default.a.cancel(this.sentinelId);\n      this.sentinelId = raf_default()(function () {\n        if (_this2.destroy) return;\n        _this2.forceUpdate();\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _classnames;\n\n      var props = this.props;\n\n      var prefixCls = props.prefixCls,\n          navWrapper = props.navWrapper,\n          tabBarPosition = props.tabBarPosition,\n          className = props.className,\n          renderTabContent = props.renderTabContent,\n          renderTabBar = props.renderTabBar,\n          destroyInactiveTabPane = props.destroyInactiveTabPane,\n          restProps = objectWithoutProperties_default()(props, ['prefixCls', 'navWrapper', 'tabBarPosition', 'className', 'renderTabContent', 'renderTabBar', 'destroyInactiveTabPane']);\n\n      var cls = node_modules_classnames_default()((_classnames = {}, defineProperty_default()(_classnames, prefixCls, 1), defineProperty_default()(_classnames, prefixCls + '-' + tabBarPosition, 1), defineProperty_default()(_classnames, className, !!className), _classnames));\n\n      this.tabBar = renderTabBar();\n\n      var tabBar = external_react_default.a.cloneElement(this.tabBar, {\n        prefixCls: prefixCls,\n        navWrapper: navWrapper,\n        key: 'tabBar',\n        onKeyDown: this.onNavKeyDown,\n        tabBarPosition: tabBarPosition,\n        onTabClick: this.onTabClick,\n        panels: props.children,\n        activeKey: this.state.activeKey\n      });\n\n      var tabContent = external_react_default.a.cloneElement(renderTabContent(), {\n        prefixCls: prefixCls,\n        tabBarPosition: tabBarPosition,\n        activeKey: this.state.activeKey,\n        destroyInactiveTabPane: destroyInactiveTabPane,\n        children: props.children,\n        onChange: this.setActiveKey,\n        key: 'tabContent'\n      });\n\n      var sentinelStart = external_react_default.a.createElement(es_Sentinel, {\n        key: 'sentinelStart',\n        setRef: this.setSentinelStart,\n        nextElement: this.panelSentinelStart\n      });\n      var sentinelEnd = external_react_default.a.createElement(es_Sentinel, {\n        key: 'sentinelEnd',\n        setRef: this.setSentinelEnd,\n        prevElement: this.panelSentinelEnd\n      });\n\n      var contents = [];\n      if (tabBarPosition === 'bottom') {\n        contents.push(sentinelStart, tabContent, sentinelEnd, tabBar);\n      } else {\n        contents.push(tabBar, sentinelStart, tabContent, sentinelEnd);\n      }\n\n      return external_react_default.a.createElement(\n        SentinelProvider,\n        {\n          value: {\n            sentinelStart: this.sentinelStart,\n            sentinelEnd: this.sentinelEnd,\n            setPanelSentinelStart: this.setPanelSentinelStart,\n            setPanelSentinelEnd: this.setPanelSentinelEnd\n          }\n        },\n        external_react_default.a.createElement(\n          'div',\n          extends_default()({\n            className: cls,\n            style: props.style\n          }, getDataAttr(restProps), {\n            onScroll: this.onScroll\n          }),\n          contents\n        )\n      );\n    }\n  }], [{\n    key: 'getDerivedStateFromProps',\n    value: function getDerivedStateFromProps(props, state) {\n      var newState = {};\n      if ('activeKey' in props) {\n        newState.activeKey = props.activeKey;\n      } else if (!activeKeyIsValid(props, state.activeKey)) {\n        newState.activeKey = getDefaultActiveKey(props);\n      }\n      if (Object.keys(newState).length > 0) {\n        return newState;\n      }\n      return null;\n    }\n  }]);\n\n  return Tabs;\n}(external_react_default.a.Component);\n\nvar Tabs_initialiseProps = function _initialiseProps() {\n  var _this3 = this;\n\n  this.onTabClick = function (activeKey, e) {\n    if (_this3.tabBar.props.onTabClick) {\n      _this3.tabBar.props.onTabClick(activeKey, e);\n    }\n    _this3.setActiveKey(activeKey);\n  };\n\n  this.onNavKeyDown = function (e) {\n    var eventKeyCode = e.keyCode;\n    if (eventKeyCode === es_KeyCode.RIGHT || eventKeyCode === es_KeyCode.DOWN) {\n      e.preventDefault();\n      var nextKey = _this3.getNextActiveKey(true);\n      _this3.onTabClick(nextKey);\n    } else if (eventKeyCode === es_KeyCode.LEFT || eventKeyCode === es_KeyCode.UP) {\n      e.preventDefault();\n      var previousKey = _this3.getNextActiveKey(false);\n      _this3.onTabClick(previousKey);\n    }\n  };\n\n  this.onScroll = function (_ref) {\n    var target = _ref.target,\n        currentTarget = _ref.currentTarget;\n\n    if (target === currentTarget && target.scrollLeft > 0) {\n      target.scrollLeft = 0;\n    }\n  };\n\n  this.setSentinelStart = function (node) {\n    _this3.sentinelStart = node;\n  };\n\n  this.setSentinelEnd = function (node) {\n    _this3.sentinelEnd = node;\n  };\n\n  this.setPanelSentinelStart = function (node) {\n    if (node !== _this3.panelSentinelStart) {\n      _this3.updateSentinelContext();\n    }\n    _this3.panelSentinelStart = node;\n  };\n\n  this.setPanelSentinelEnd = function (node) {\n    if (node !== _this3.panelSentinelEnd) {\n      _this3.updateSentinelContext();\n    }\n    _this3.panelSentinelEnd = node;\n  };\n\n  this.setActiveKey = function (activeKey) {\n    if (_this3.state.activeKey !== activeKey) {\n      if (!('activeKey' in _this3.props)) {\n        _this3.setState({\n          activeKey: activeKey\n        });\n      }\n      _this3.props.onChange(activeKey);\n    }\n  };\n\n  this.getNextActiveKey = function (next) {\n    var activeKey = _this3.state.activeKey;\n    var children = [];\n    external_react_default.a.Children.forEach(_this3.props.children, function (c) {\n      if (c && !c.props.disabled) {\n        if (next) {\n          children.push(c);\n        } else {\n          children.unshift(c);\n        }\n      }\n    });\n    var length = children.length;\n    var ret = length && children[0].key;\n    children.forEach(function (child, i) {\n      if (child.key === activeKey) {\n        if (i === length - 1) {\n          ret = children[0].key;\n        } else {\n          ret = children[i + 1].key;\n        }\n      }\n    });\n    return ret;\n  };\n};\n\nTabs_Tabs.propTypes = {\n  destroyInactiveTabPane: prop_types_default.a.bool,\n  renderTabBar: prop_types_default.a.func.isRequired,\n  renderTabContent: prop_types_default.a.func.isRequired,\n  navWrapper: prop_types_default.a.func,\n  onChange: prop_types_default.a.func,\n  children: prop_types_default.a.node,\n  prefixCls: prop_types_default.a.string,\n  className: prop_types_default.a.string,\n  tabBarPosition: prop_types_default.a.string,\n  style: prop_types_default.a.object,\n  activeKey: prop_types_default.a.string,\n  defaultActiveKey: prop_types_default.a.string\n};\n\nTabs_Tabs.defaultProps = {\n  prefixCls: 'rc-tabs',\n  destroyInactiveTabPane: false,\n  onChange: Tabs_noop,\n  navWrapper: function navWrapper(arg) {\n    return arg;\n  },\n  tabBarPosition: 'top',\n  children: null,\n  style: {}\n};\n\nTabs_Tabs.TabPane = es_TabPane;\n\nObject(react_lifecycles_compat_es[\"polyfill\"])(Tabs_Tabs);\n\n/* harmony default export */ var es_Tabs = (Tabs_Tabs);\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/TabContent.js\n\n\n\n\n\n\n\n\n\n\n\nvar TabContent_TabContent = function (_React$Component) {\n  helpers_inherits_default()(TabContent, _React$Component);\n\n  function TabContent() {\n    helpers_classCallCheck_default()(this, TabContent);\n\n    return helpers_possibleConstructorReturn_default()(this, (TabContent.__proto__ || Object.getPrototypeOf(TabContent)).apply(this, arguments));\n  }\n\n  helpers_createClass_default()(TabContent, [{\n    key: 'getTabPanes',\n    value: function getTabPanes() {\n      var props = this.props;\n      var activeKey = props.activeKey;\n      var children = props.children;\n      var newChildren = [];\n\n      external_react_default.a.Children.forEach(children, function (child) {\n        if (!child) {\n          return;\n        }\n        var key = child.key;\n        var active = activeKey === key;\n        newChildren.push(external_react_default.a.cloneElement(child, {\n          active: active,\n          destroyInactiveTabPane: props.destroyInactiveTabPane,\n          rootPrefixCls: props.prefixCls\n        }));\n      });\n\n      return newChildren;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _classnames;\n\n      var props = this.props;\n      var prefixCls = props.prefixCls,\n          children = props.children,\n          activeKey = props.activeKey,\n          className = props.className,\n          tabBarPosition = props.tabBarPosition,\n          animated = props.animated,\n          animatedWithMargin = props.animatedWithMargin;\n      var style = props.style;\n\n      var classes = node_modules_classnames_default()((_classnames = {}, defineProperty_default()(_classnames, prefixCls + '-content', true), defineProperty_default()(_classnames, animated ? prefixCls + '-content-animated' : prefixCls + '-content-no-animated', true), _classnames), className);\n      if (animated) {\n        var activeIndex = getActiveIndex(children, activeKey);\n        if (activeIndex !== -1) {\n          var animatedStyle = animatedWithMargin ? getMarginStyle(activeIndex, tabBarPosition) : getTransformPropValue(getTransformByIndex(activeIndex, tabBarPosition));\n          style = extends_default()({}, style, animatedStyle);\n        } else {\n          style = extends_default()({}, style, {\n            display: 'none'\n          });\n        }\n      }\n      return external_react_default.a.createElement(\n        'div',\n        {\n          className: classes,\n          style: style\n        },\n        this.getTabPanes()\n      );\n    }\n  }]);\n\n  return TabContent;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_TabContent = (TabContent_TabContent);\n\n\nTabContent_TabContent.propTypes = {\n  animated: prop_types_default.a.bool,\n  animatedWithMargin: prop_types_default.a.bool,\n  prefixCls: prop_types_default.a.string,\n  children: prop_types_default.a.node,\n  activeKey: prop_types_default.a.string,\n  style: prop_types_default.a.any,\n  tabBarPosition: prop_types_default.a.string,\n  className: prop_types_default.a.string,\n  destroyInactiveTabPane: prop_types_default.a.bool\n};\n\nTabContent_TabContent.defaultProps = {\n  animated: true\n};\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/index.js\n\n\n\n\n/* harmony default export */ var rc_tabs_es = (es_Tabs);\n\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/InkTabBarNode.js\n\n\n\n\n\n\n\n\n\n\nfunction _componentDidUpdate(component, init) {\n  var _component$props = component.props,\n      styles = _component$props.styles,\n      panels = _component$props.panels,\n      activeKey = _component$props.activeKey;\n\n  var rootNode = component.props.getRef('root');\n  var wrapNode = component.props.getRef('nav') || rootNode;\n  var inkBarNode = component.props.getRef('inkBar');\n  var activeTab = component.props.getRef('activeTab');\n  var inkBarNodeStyle = inkBarNode.style;\n  var tabBarPosition = component.props.tabBarPosition;\n  var activeIndex = getActiveIndex(panels, activeKey);\n  if (init) {\n    // prevent mount animation\n    inkBarNodeStyle.display = 'none';\n  }\n  if (activeTab) {\n    var tabNode = activeTab;\n    var transformSupported = isTransform3dSupported(inkBarNodeStyle);\n\n    // Reset current style\n    setTransform(inkBarNodeStyle, '');\n    inkBarNodeStyle.width = '';\n    inkBarNodeStyle.height = '';\n    inkBarNodeStyle.left = '';\n    inkBarNodeStyle.top = '';\n    inkBarNodeStyle.bottom = '';\n    inkBarNodeStyle.right = '';\n\n    if (tabBarPosition === 'top' || tabBarPosition === 'bottom') {\n      var left = getLeft(tabNode, wrapNode);\n      var width = tabNode.offsetWidth;\n\n      // If tabNode'width width equal to wrapNode'width when tabBarPosition is top or bottom\n      // It means no css working, then ink bar should not have width until css is loaded\n      // Fix https://github.com/ant-design/ant-design/issues/7564\n      if (width === rootNode.offsetWidth) {\n        width = 0;\n      } else if (styles.inkBar && styles.inkBar.width !== undefined) {\n        width = parseFloat(styles.inkBar.width, 10);\n        if (width) {\n          left += (tabNode.offsetWidth - width) / 2;\n        }\n      }\n\n      // use 3d gpu to optimize render\n      if (transformSupported) {\n        setTransform(inkBarNodeStyle, 'translate3d(' + left + 'px,0,0)');\n      } else {\n        inkBarNodeStyle.left = left + 'px';\n      }\n      inkBarNodeStyle.width = width + 'px';\n    } else {\n      var top = getTop(tabNode, wrapNode, true);\n      var height = tabNode.offsetHeight;\n      if (styles.inkBar && styles.inkBar.height !== undefined) {\n        height = parseFloat(styles.inkBar.height, 10);\n        if (height) {\n          top += (tabNode.offsetHeight - height) / 2;\n        }\n      }\n      if (transformSupported) {\n        setTransform(inkBarNodeStyle, 'translate3d(0,' + top + 'px,0)');\n        inkBarNodeStyle.top = '0';\n      } else {\n        inkBarNodeStyle.top = top + 'px';\n      }\n      inkBarNodeStyle.height = height + 'px';\n    }\n  }\n  inkBarNodeStyle.display = activeIndex !== -1 ? 'block' : 'none';\n}\n\nvar InkTabBarNode_InkTabBarNode = function (_React$Component) {\n  helpers_inherits_default()(InkTabBarNode, _React$Component);\n\n  function InkTabBarNode() {\n    helpers_classCallCheck_default()(this, InkTabBarNode);\n\n    return helpers_possibleConstructorReturn_default()(this, (InkTabBarNode.__proto__ || Object.getPrototypeOf(InkTabBarNode)).apply(this, arguments));\n  }\n\n  helpers_createClass_default()(InkTabBarNode, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      // ref https://github.com/ant-design/ant-design/issues/8678\n      // ref https://github.com/react-component/tabs/issues/135\n      // InkTabBarNode need parent/root ref for calculating position\n      // since parent componentDidMount triggered after child componentDidMount\n      // we're doing a quick fix here to use setTimeout to calculate position\n      // after parent/root component mounted\n      this.timeout = setTimeout(function () {\n        _componentDidUpdate(_this2, true);\n      }, 0);\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate() {\n      _componentDidUpdate(this);\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      clearTimeout(this.timeout);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _classnames;\n\n      var _props = this.props,\n          prefixCls = _props.prefixCls,\n          styles = _props.styles,\n          inkBarAnimated = _props.inkBarAnimated;\n\n      var className = prefixCls + '-ink-bar';\n      var classes = node_modules_classnames_default()((_classnames = {}, defineProperty_default()(_classnames, className, true), defineProperty_default()(_classnames, inkBarAnimated ? className + '-animated' : className + '-no-animated', true), _classnames));\n      return external_react_default.a.createElement('div', {\n        style: styles.inkBar,\n        className: classes,\n        key: 'inkBar',\n        ref: this.props.saveRef('inkBar')\n      });\n    }\n  }]);\n\n  return InkTabBarNode;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_InkTabBarNode = (InkTabBarNode_InkTabBarNode);\n\n\nInkTabBarNode_InkTabBarNode.propTypes = {\n  prefixCls: prop_types_default.a.string,\n  styles: prop_types_default.a.object,\n  inkBarAnimated: prop_types_default.a.bool,\n  saveRef: prop_types_default.a.func\n};\n\nInkTabBarNode_InkTabBarNode.defaultProps = {\n  prefixCls: '',\n  inkBarAnimated: true,\n  styles: {},\n  saveRef: function saveRef() {}\n};\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/TabBarTabsNode.js\n\n\n\n\n\n\n\n\n\n\n\nvar TabBarTabsNode_TabBarTabsNode = function (_React$Component) {\n  helpers_inherits_default()(TabBarTabsNode, _React$Component);\n\n  function TabBarTabsNode() {\n    helpers_classCallCheck_default()(this, TabBarTabsNode);\n\n    return helpers_possibleConstructorReturn_default()(this, (TabBarTabsNode.__proto__ || Object.getPrototypeOf(TabBarTabsNode)).apply(this, arguments));\n  }\n\n  helpers_createClass_default()(TabBarTabsNode, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          children = _props.panels,\n          activeKey = _props.activeKey,\n          prefixCls = _props.prefixCls,\n          tabBarGutter = _props.tabBarGutter,\n          saveRef = _props.saveRef,\n          tabBarPosition = _props.tabBarPosition,\n          renderTabBarNode = _props.renderTabBarNode;\n\n      var rst = [];\n\n      external_react_default.a.Children.forEach(children, function (child, index) {\n        if (!child) {\n          return;\n        }\n        var key = child.key;\n        var cls = activeKey === key ? prefixCls + '-tab-active' : '';\n        cls += ' ' + prefixCls + '-tab';\n        var events = {};\n        if (child.props.disabled) {\n          cls += ' ' + prefixCls + '-tab-disabled';\n        } else {\n          events = {\n            onClick: _this2.props.onTabClick.bind(_this2, key)\n          };\n        }\n        var ref = {};\n        if (activeKey === key) {\n          ref.ref = saveRef('activeTab');\n        }\n\n        var gutter = tabBarGutter && index === children.length - 1 ? 0 : tabBarGutter;\n        var style = defineProperty_default()({}, utils_isVertical(tabBarPosition) ? 'marginBottom' : 'marginRight', gutter);\n        warning_default()('tab' in child.props, 'There must be `tab` property on children of Tabs.');\n\n        var node = external_react_default.a.createElement(\n          'div',\n          extends_default()({\n            role: 'tab',\n            'aria-disabled': child.props.disabled ? 'true' : 'false',\n            'aria-selected': activeKey === key ? 'true' : 'false'\n          }, events, {\n            className: cls,\n            key: key,\n            style: style\n          }, ref),\n          child.props.tab\n        );\n\n        if (renderTabBarNode) {\n          node = renderTabBarNode(node);\n        }\n\n        rst.push(node);\n      });\n\n      return external_react_default.a.createElement(\n        'div',\n        { ref: saveRef('navTabsContainer') },\n        rst\n      );\n    }\n  }]);\n\n  return TabBarTabsNode;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_TabBarTabsNode = (TabBarTabsNode_TabBarTabsNode);\n\n\nTabBarTabsNode_TabBarTabsNode.propTypes = {\n  activeKey: prop_types_default.a.string,\n  panels: prop_types_default.a.node,\n  prefixCls: prop_types_default.a.string,\n  tabBarGutter: prop_types_default.a.number,\n  onTabClick: prop_types_default.a.func,\n  saveRef: prop_types_default.a.func,\n  renderTabBarNode: prop_types_default.a.func,\n  tabBarPosition: prop_types_default.a.string\n};\n\nTabBarTabsNode_TabBarTabsNode.defaultProps = {\n  panels: [],\n  prefixCls: [],\n  tabBarGutter: null,\n  onTabClick: function onTabClick() {},\n  saveRef: function saveRef() {}\n};\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/TabBarRootNode.js\n\n\n\n\n\n\n\n\n\n\n\n\nvar TabBarRootNode_TabBarRootNode = function (_React$Component) {\n  helpers_inherits_default()(TabBarRootNode, _React$Component);\n\n  function TabBarRootNode() {\n    helpers_classCallCheck_default()(this, TabBarRootNode);\n\n    return helpers_possibleConstructorReturn_default()(this, (TabBarRootNode.__proto__ || Object.getPrototypeOf(TabBarRootNode)).apply(this, arguments));\n  }\n\n  helpers_createClass_default()(TabBarRootNode, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          prefixCls = _props.prefixCls,\n          onKeyDown = _props.onKeyDown,\n          className = _props.className,\n          extraContent = _props.extraContent,\n          style = _props.style,\n          tabBarPosition = _props.tabBarPosition,\n          children = _props.children,\n          restProps = objectWithoutProperties_default()(_props, ['prefixCls', 'onKeyDown', 'className', 'extraContent', 'style', 'tabBarPosition', 'children']);\n\n      var cls = node_modules_classnames_default()(prefixCls + '-bar', defineProperty_default()({}, className, !!className));\n      var topOrBottom = tabBarPosition === 'top' || tabBarPosition === 'bottom';\n      var tabBarExtraContentStyle = topOrBottom ? { float: 'right' } : {};\n      var extraContentStyle = extraContent && extraContent.props ? extraContent.props.style : {};\n      var newChildren = children;\n      if (extraContent) {\n        newChildren = [Object(external_react_[\"cloneElement\"])(extraContent, {\n          key: 'extra',\n          style: extends_default()({}, tabBarExtraContentStyle, extraContentStyle)\n        }), Object(external_react_[\"cloneElement\"])(children, { key: 'content' })];\n        newChildren = topOrBottom ? newChildren : newChildren.reverse();\n      }\n      return external_react_default.a.createElement(\n        'div',\n        extends_default()({\n          role: 'tablist',\n          className: cls,\n          tabIndex: '0',\n          ref: this.props.saveRef('root'),\n          onKeyDown: onKeyDown,\n          style: style\n        }, getDataAttr(restProps)),\n        newChildren\n      );\n    }\n  }]);\n\n  return TabBarRootNode;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_TabBarRootNode = (TabBarRootNode_TabBarRootNode);\n\n\nTabBarRootNode_TabBarRootNode.propTypes = {\n  prefixCls: prop_types_default.a.string,\n  className: prop_types_default.a.string,\n  style: prop_types_default.a.object,\n  tabBarPosition: prop_types_default.a.oneOf(['left', 'right', 'top', 'bottom']),\n  children: prop_types_default.a.node,\n  extraContent: prop_types_default.a.node,\n  onKeyDown: prop_types_default.a.func,\n  saveRef: prop_types_default.a.func\n};\n\nTabBarRootNode_TabBarRootNode.defaultProps = {\n  prefixCls: '',\n  className: '',\n  style: {},\n  tabBarPosition: 'top',\n  extraContent: null,\n  children: null,\n  onKeyDown: function onKeyDown() {},\n  saveRef: function saveRef() {}\n};\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/ScrollableTabBarNode.js\n\n\n\n\n\n\n\n\n\n\n\n\nvar ScrollableTabBarNode_ScrollableTabBarNode = function (_React$Component) {\n  helpers_inherits_default()(ScrollableTabBarNode, _React$Component);\n\n  function ScrollableTabBarNode(props) {\n    helpers_classCallCheck_default()(this, ScrollableTabBarNode);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, (ScrollableTabBarNode.__proto__ || Object.getPrototypeOf(ScrollableTabBarNode)).call(this, props));\n\n    _this.prevTransitionEnd = function (e) {\n      if (e.propertyName !== 'opacity') {\n        return;\n      }\n      var container = _this.props.getRef('container');\n      _this.scrollToActiveTab({\n        target: container,\n        currentTarget: container\n      });\n    };\n\n    _this.scrollToActiveTab = function (e) {\n      var activeTab = _this.props.getRef('activeTab');\n      var navWrap = _this.props.getRef('navWrap');\n      if (e && e.target !== e.currentTarget || !activeTab) {\n        return;\n      }\n\n      // when not scrollable or enter scrollable first time, don't emit scrolling\n      var needToSroll = _this.isNextPrevShown() && _this.lastNextPrevShown;\n      _this.lastNextPrevShown = _this.isNextPrevShown();\n      if (!needToSroll) {\n        return;\n      }\n\n      var activeTabWH = _this.getScrollWH(activeTab);\n      var navWrapNodeWH = _this.getOffsetWH(navWrap);\n      var offset = _this.offset;\n\n      var wrapOffset = _this.getOffsetLT(navWrap);\n      var activeTabOffset = _this.getOffsetLT(activeTab);\n      if (wrapOffset > activeTabOffset) {\n        offset += wrapOffset - activeTabOffset;\n        _this.setOffset(offset);\n      } else if (wrapOffset + navWrapNodeWH < activeTabOffset + activeTabWH) {\n        offset -= activeTabOffset + activeTabWH - (wrapOffset + navWrapNodeWH);\n        _this.setOffset(offset);\n      }\n    };\n\n    _this.prev = function (e) {\n      _this.props.onPrevClick(e);\n      var navWrapNode = _this.props.getRef('navWrap');\n      var navWrapNodeWH = _this.getOffsetWH(navWrapNode);\n      var offset = _this.offset;\n\n      _this.setOffset(offset + navWrapNodeWH);\n    };\n\n    _this.next = function (e) {\n      _this.props.onNextClick(e);\n      var navWrapNode = _this.props.getRef('navWrap');\n      var navWrapNodeWH = _this.getOffsetWH(navWrapNode);\n      var offset = _this.offset;\n\n      _this.setOffset(offset - navWrapNodeWH);\n    };\n\n    _this.offset = 0;\n\n    _this.state = {\n      next: false,\n      prev: false\n    };\n    return _this;\n  }\n\n  helpers_createClass_default()(ScrollableTabBarNode, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      this.componentDidUpdate();\n      this.debouncedResize = debounce_default()(function () {\n        _this2.setNextPrev();\n        _this2.scrollToActiveTab();\n      }, 200);\n      this.resizeObserver = new ResizeObserver_es[\"a\" /* default */](this.debouncedResize);\n      this.resizeObserver.observe(this.props.getRef('container'));\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps) {\n      var props = this.props;\n      if (prevProps && prevProps.tabBarPosition !== props.tabBarPosition) {\n        this.setOffset(0);\n        return;\n      }\n      var nextPrev = this.setNextPrev();\n      // wait next, prev show hide\n      /* eslint react/no-did-update-set-state:0 */\n      if (this.isNextPrevShown(this.state) !== this.isNextPrevShown(nextPrev)) {\n        this.setState({}, this.scrollToActiveTab);\n      } else if (!prevProps || props.activeKey !== prevProps.activeKey) {\n        // can not use props.activeKey\n        this.scrollToActiveTab();\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      if (this.resizeObserver) {\n        this.resizeObserver.disconnect();\n      }\n      if (this.debouncedResize && this.debouncedResize.cancel) {\n        this.debouncedResize.cancel();\n      }\n    }\n  }, {\n    key: 'setNextPrev',\n    value: function setNextPrev() {\n      var navNode = this.props.getRef('nav');\n      var navTabsContainer = this.props.getRef('navTabsContainer');\n      var navNodeWH = this.getScrollWH(navTabsContainer || navNode);\n      // Add 1px to fix `offsetWidth` with decimal in Chrome not correct handle\n      // https://github.com/ant-design/ant-design/issues/13423\n      var containerWH = this.getOffsetWH(this.props.getRef('container')) + 1;\n      var navWrapNodeWH = this.getOffsetWH(this.props.getRef('navWrap'));\n      var offset = this.offset;\n\n      var minOffset = containerWH - navNodeWH;\n      var _state = this.state,\n          next = _state.next,\n          prev = _state.prev;\n\n      if (minOffset >= 0) {\n        next = false;\n        this.setOffset(0, false);\n        offset = 0;\n      } else if (minOffset < offset) {\n        next = true;\n      } else {\n        next = false;\n        // Fix https://github.com/ant-design/ant-design/issues/8861\n        // Test with container offset which is stable\n        // and set the offset of the nav wrap node\n        var realOffset = navWrapNodeWH - navNodeWH;\n        this.setOffset(realOffset, false);\n        offset = realOffset;\n      }\n\n      if (offset < 0) {\n        prev = true;\n      } else {\n        prev = false;\n      }\n\n      this.setNext(next);\n      this.setPrev(prev);\n      return {\n        next: next,\n        prev: prev\n      };\n    }\n  }, {\n    key: 'getOffsetWH',\n    value: function getOffsetWH(node) {\n      var tabBarPosition = this.props.tabBarPosition;\n      var prop = 'offsetWidth';\n      if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n        prop = 'offsetHeight';\n      }\n      return node[prop];\n    }\n  }, {\n    key: 'getScrollWH',\n    value: function getScrollWH(node) {\n      var tabBarPosition = this.props.tabBarPosition;\n      var prop = 'scrollWidth';\n      if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n        prop = 'scrollHeight';\n      }\n      return node[prop];\n    }\n  }, {\n    key: 'getOffsetLT',\n    value: function getOffsetLT(node) {\n      var tabBarPosition = this.props.tabBarPosition;\n      var prop = 'left';\n      if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n        prop = 'top';\n      }\n      return node.getBoundingClientRect()[prop];\n    }\n  }, {\n    key: 'setOffset',\n    value: function setOffset(offset) {\n      var checkNextPrev = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      var target = Math.min(0, offset);\n      if (this.offset !== target) {\n        this.offset = target;\n        var navOffset = {};\n        var tabBarPosition = this.props.tabBarPosition;\n        var navStyle = this.props.getRef('nav').style;\n        var transformSupported = isTransform3dSupported(navStyle);\n        if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n          if (transformSupported) {\n            navOffset = {\n              value: 'translate3d(0,' + target + 'px,0)'\n            };\n          } else {\n            navOffset = {\n              name: 'top',\n              value: target + 'px'\n            };\n          }\n        } else if (transformSupported) {\n          navOffset = {\n            value: 'translate3d(' + target + 'px,0,0)'\n          };\n        } else {\n          navOffset = {\n            name: 'left',\n            value: target + 'px'\n          };\n        }\n        if (transformSupported) {\n          setTransform(navStyle, navOffset.value);\n        } else {\n          navStyle[navOffset.name] = navOffset.value;\n        }\n        if (checkNextPrev) {\n          this.setNextPrev();\n        }\n      }\n    }\n  }, {\n    key: 'setPrev',\n    value: function setPrev(v) {\n      if (this.state.prev !== v) {\n        this.setState({\n          prev: v\n        });\n      }\n    }\n  }, {\n    key: 'setNext',\n    value: function setNext(v) {\n      if (this.state.next !== v) {\n        this.setState({\n          next: v\n        });\n      }\n    }\n  }, {\n    key: 'isNextPrevShown',\n    value: function isNextPrevShown(state) {\n      if (state) {\n        return state.next || state.prev;\n      }\n      return this.state.next || this.state.prev;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _classnames, _classnames2, _classnames3, _classnames4;\n\n      var _state2 = this.state,\n          next = _state2.next,\n          prev = _state2.prev;\n      var _props = this.props,\n          prefixCls = _props.prefixCls,\n          scrollAnimated = _props.scrollAnimated,\n          navWrapper = _props.navWrapper,\n          prevIcon = _props.prevIcon,\n          nextIcon = _props.nextIcon;\n\n      var showNextPrev = prev || next;\n\n      var prevButton = external_react_default.a.createElement(\n        'span',\n        {\n          onClick: prev ? this.prev : null,\n          unselectable: 'unselectable',\n          className: node_modules_classnames_default()((_classnames = {}, defineProperty_default()(_classnames, prefixCls + '-tab-prev', 1), defineProperty_default()(_classnames, prefixCls + '-tab-btn-disabled', !prev), defineProperty_default()(_classnames, prefixCls + '-tab-arrow-show', showNextPrev), _classnames)),\n          onTransitionEnd: this.prevTransitionEnd\n        },\n        prevIcon || external_react_default.a.createElement('span', { className: prefixCls + '-tab-prev-icon' })\n      );\n\n      var nextButton = external_react_default.a.createElement(\n        'span',\n        {\n          onClick: next ? this.next : null,\n          unselectable: 'unselectable',\n          className: node_modules_classnames_default()((_classnames2 = {}, defineProperty_default()(_classnames2, prefixCls + '-tab-next', 1), defineProperty_default()(_classnames2, prefixCls + '-tab-btn-disabled', !next), defineProperty_default()(_classnames2, prefixCls + '-tab-arrow-show', showNextPrev), _classnames2))\n        },\n        nextIcon || external_react_default.a.createElement('span', { className: prefixCls + '-tab-next-icon' })\n      );\n\n      var navClassName = prefixCls + '-nav';\n      var navClasses = node_modules_classnames_default()((_classnames3 = {}, defineProperty_default()(_classnames3, navClassName, true), defineProperty_default()(_classnames3, scrollAnimated ? navClassName + '-animated' : navClassName + '-no-animated', true), _classnames3));\n\n      return external_react_default.a.createElement(\n        'div',\n        {\n          className: node_modules_classnames_default()((_classnames4 = {}, defineProperty_default()(_classnames4, prefixCls + '-nav-container', 1), defineProperty_default()(_classnames4, prefixCls + '-nav-container-scrolling', showNextPrev), _classnames4)),\n          key: 'container',\n          ref: this.props.saveRef('container')\n        },\n        prevButton,\n        nextButton,\n        external_react_default.a.createElement(\n          'div',\n          { className: prefixCls + '-nav-wrap', ref: this.props.saveRef('navWrap') },\n          external_react_default.a.createElement(\n            'div',\n            { className: prefixCls + '-nav-scroll' },\n            external_react_default.a.createElement(\n              'div',\n              { className: navClasses, ref: this.props.saveRef('nav') },\n              navWrapper(this.props.children)\n            )\n          )\n        )\n      );\n    }\n  }]);\n\n  return ScrollableTabBarNode;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_ScrollableTabBarNode = (ScrollableTabBarNode_ScrollableTabBarNode);\n\n\nScrollableTabBarNode_ScrollableTabBarNode.propTypes = {\n  activeKey: prop_types_default.a.string,\n  getRef: prop_types_default.a.func.isRequired,\n  saveRef: prop_types_default.a.func.isRequired,\n  tabBarPosition: prop_types_default.a.oneOf(['left', 'right', 'top', 'bottom']),\n  prefixCls: prop_types_default.a.string,\n  scrollAnimated: prop_types_default.a.bool,\n  onPrevClick: prop_types_default.a.func,\n  onNextClick: prop_types_default.a.func,\n  navWrapper: prop_types_default.a.func,\n  children: prop_types_default.a.node,\n  prevIcon: prop_types_default.a.node,\n  nextIcon: prop_types_default.a.node\n};\n\nScrollableTabBarNode_ScrollableTabBarNode.defaultProps = {\n  tabBarPosition: 'left',\n  prefixCls: '',\n  scrollAnimated: true,\n  onPrevClick: function onPrevClick() {},\n  onNextClick: function onNextClick() {},\n  navWrapper: function navWrapper(ele) {\n    return ele;\n  }\n};\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/SaveRef.js\n\n\n\n\n\n\n\nvar SaveRef_SaveRef = function (_React$Component) {\n  helpers_inherits_default()(SaveRef, _React$Component);\n\n  function SaveRef() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, SaveRef);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = SaveRef.__proto__ || Object.getPrototypeOf(SaveRef)).call.apply(_ref, [this].concat(args))), _this), _this.getRef = function (name) {\n      return _this[name];\n    }, _this.saveRef = function (name) {\n      return function (node) {\n        if (node) {\n          _this[name] = node;\n        }\n      };\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(SaveRef, [{\n    key: 'render',\n    value: function render() {\n      return this.props.children(this.saveRef, this.getRef);\n    }\n  }]);\n\n  return SaveRef;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_SaveRef = (SaveRef_SaveRef);\n\n\nSaveRef_SaveRef.propTypes = {\n  children: prop_types_default.a.func\n};\n\nSaveRef_SaveRef.defaultProps = {\n  children: function children() {\n    return null;\n  }\n};\n// CONCATENATED MODULE: ./node_modules/rc-tabs/es/ScrollableInkTabBar.js\n\n\n\n\n\n\n/* eslint-disable react/prefer-stateless-function */\n\n\n\n\n\n\n\n\nvar ScrollableInkTabBar_ScrollableInkTabBar = function (_React$Component) {\n  helpers_inherits_default()(ScrollableInkTabBar, _React$Component);\n\n  function ScrollableInkTabBar() {\n    helpers_classCallCheck_default()(this, ScrollableInkTabBar);\n\n    return helpers_possibleConstructorReturn_default()(this, (ScrollableInkTabBar.__proto__ || Object.getPrototypeOf(ScrollableInkTabBar)).apply(this, arguments));\n  }\n\n  helpers_createClass_default()(ScrollableInkTabBar, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          renderTabBarNode = _props.children,\n          restProps = objectWithoutProperties_default()(_props, ['children']);\n\n      return external_react_default.a.createElement(\n        es_SaveRef,\n        null,\n        function (saveRef, getRef) {\n          return external_react_default.a.createElement(\n            es_TabBarRootNode,\n            extends_default()({ saveRef: saveRef }, restProps),\n            external_react_default.a.createElement(\n              es_ScrollableTabBarNode,\n              extends_default()({ saveRef: saveRef, getRef: getRef }, restProps),\n              external_react_default.a.createElement(es_TabBarTabsNode, extends_default()({ saveRef: saveRef, renderTabBarNode: renderTabBarNode }, restProps)),\n              external_react_default.a.createElement(es_InkTabBarNode, extends_default()({ saveRef: saveRef, getRef: getRef }, restProps))\n            )\n          );\n        }\n      );\n    }\n  }]);\n\n  return ScrollableInkTabBar;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_ScrollableInkTabBar = (ScrollableInkTabBar_ScrollableInkTabBar);\n\n\nScrollableInkTabBar_ScrollableInkTabBar.propTypes = {\n  children: prop_types_default.a.func\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/tabs/TabBar.js\nfunction TabBar_extends() { TabBar_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 TabBar_extends.apply(this, arguments); }\n\nfunction TabBar_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\nfunction TabBar_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { TabBar_typeof = function _typeof(obj) { return typeof obj; }; } else { TabBar_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return TabBar_typeof(obj); }\n\nfunction TabBar_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction TabBar_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 TabBar_createClass(Constructor, protoProps, staticProps) { if (protoProps) TabBar_defineProperties(Constructor.prototype, protoProps); if (staticProps) TabBar_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction TabBar_possibleConstructorReturn(self, call) { if (call && (TabBar_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return TabBar_assertThisInitialized(self); }\n\nfunction TabBar_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction TabBar_getPrototypeOf(o) { TabBar_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return TabBar_getPrototypeOf(o); }\n\nfunction TabBar_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) TabBar_setPrototypeOf(subClass, superClass); }\n\nfunction TabBar_setPrototypeOf(o, p) { TabBar_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return TabBar_setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar TabBar_TabBar =\n/*#__PURE__*/\nfunction (_React$Component) {\n  TabBar_inherits(TabBar, _React$Component);\n\n  function TabBar() {\n    TabBar_classCallCheck(this, TabBar);\n\n    return TabBar_possibleConstructorReturn(this, TabBar_getPrototypeOf(TabBar).apply(this, arguments));\n  }\n\n  TabBar_createClass(TabBar, [{\n    key: \"render\",\n    value: function render() {\n      var _classNames;\n\n      var _this$props = this.props,\n          tabBarStyle = _this$props.tabBarStyle,\n          animated = _this$props.animated,\n          renderTabBar = _this$props.renderTabBar,\n          tabBarExtraContent = _this$props.tabBarExtraContent,\n          tabPosition = _this$props.tabPosition,\n          prefixCls = _this$props.prefixCls,\n          className = _this$props.className,\n          size = _this$props.size,\n          type = _this$props.type;\n      var inkBarAnimated = TabBar_typeof(animated) === 'object' ? animated.inkBar : animated;\n      var isVertical = tabPosition === 'left' || tabPosition === 'right';\n      var prevIconType = isVertical ? 'up' : 'left';\n      var nextIconType = isVertical ? 'down' : 'right';\n      var prevIcon = external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-tab-prev-icon\")\n      }, external_react_[\"createElement\"](es_icon, {\n        type: prevIconType,\n        className: \"\".concat(prefixCls, \"-tab-prev-icon-target\")\n      }));\n      var nextIcon = external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-tab-next-icon\")\n      }, external_react_[\"createElement\"](es_icon, {\n        type: nextIconType,\n        className: \"\".concat(prefixCls, \"-tab-next-icon-target\")\n      })); // Additional className for style usage\n\n      var cls = classnames_default()(\"\".concat(prefixCls, \"-\").concat(tabPosition, \"-bar\"), (_classNames = {}, TabBar_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size, \"-bar\"), !!size), TabBar_defineProperty(_classNames, \"\".concat(prefixCls, \"-card-bar\"), type && type.indexOf('card') >= 0), _classNames), className);\n\n      var renderProps = TabBar_extends({}, this.props, {\n        children: null,\n        inkBarAnimated: inkBarAnimated,\n        extraContent: tabBarExtraContent,\n        style: tabBarStyle,\n        prevIcon: prevIcon,\n        nextIcon: nextIcon,\n        className: cls\n      });\n\n      var RenderTabBar;\n\n      if (renderTabBar) {\n        RenderTabBar = renderTabBar(renderProps, es_ScrollableInkTabBar);\n      } else {\n        RenderTabBar = external_react_[\"createElement\"](es_ScrollableInkTabBar, renderProps);\n      }\n\n      return external_react_[\"cloneElement\"](RenderTabBar);\n    }\n  }]);\n\n  return TabBar;\n}(external_react_[\"Component\"]);\n\n\nTabBar_TabBar.defaultProps = {\n  animated: true,\n  type: 'line'\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/_util/styleChecker.js\nfunction isStyleSupport(styleName) {\n  if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n    var styleNameList = Array.isArray(styleName) ? styleName : [styleName];\n    var documentElement = window.document.documentElement;\n    return styleNameList.some(function (name) {\n      return name in documentElement.style;\n    });\n  }\n\n  return false;\n}\n\nvar isFlexSupported = isStyleSupport(['flex', 'webkitFlex', 'Flex', 'msFlex']);\n/* harmony default export */ var styleChecker = (isStyleSupport);\n// CONCATENATED MODULE: ./node_modules/antd/es/tabs/index.js\nfunction tabs_extends() { tabs_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 tabs_extends.apply(this, arguments); }\n\nfunction tabs_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\nfunction tabs_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { tabs_typeof = function _typeof(obj) { return typeof obj; }; } else { tabs_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return tabs_typeof(obj); }\n\nfunction tabs_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction tabs_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 tabs_createClass(Constructor, protoProps, staticProps) { if (protoProps) tabs_defineProperties(Constructor.prototype, protoProps); if (staticProps) tabs_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction tabs_possibleConstructorReturn(self, call) { if (call && (tabs_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return tabs_assertThisInitialized(self); }\n\nfunction tabs_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction tabs_getPrototypeOf(o) { tabs_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return tabs_getPrototypeOf(o); }\n\nfunction tabs_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) tabs_setPrototypeOf(subClass, superClass); }\n\nfunction tabs_setPrototypeOf(o, p) { tabs_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return tabs_setPrototypeOf(o, p); }\n\nvar tabs_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\nvar tabs_Tabs =\n/*#__PURE__*/\nfunction (_React$Component) {\n  tabs_inherits(Tabs, _React$Component);\n\n  function Tabs() {\n    var _this;\n\n    tabs_classCallCheck(this, Tabs);\n\n    _this = tabs_possibleConstructorReturn(this, tabs_getPrototypeOf(Tabs).apply(this, arguments));\n\n    _this.removeTab = function (targetKey, e) {\n      e.stopPropagation();\n\n      if (!targetKey) {\n        return;\n      }\n\n      var onEdit = _this.props.onEdit;\n\n      if (onEdit) {\n        onEdit(targetKey, 'remove');\n      }\n    };\n\n    _this.handleChange = function (activeKey) {\n      var onChange = _this.props.onChange;\n\n      if (onChange) {\n        onChange(activeKey);\n      }\n    };\n\n    _this.createNewTab = function (targetKey) {\n      var onEdit = _this.props.onEdit;\n\n      if (onEdit) {\n        onEdit(targetKey, 'add');\n      }\n    };\n\n    _this.renderTabs = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n      var _this$props = _this.props,\n          customizePrefixCls = _this$props.prefixCls,\n          _this$props$className = _this$props.className,\n          className = _this$props$className === void 0 ? '' : _this$props$className,\n          size = _this$props.size,\n          _this$props$type = _this$props.type,\n          type = _this$props$type === void 0 ? 'line' : _this$props$type,\n          tabPosition = _this$props.tabPosition,\n          children = _this$props.children,\n          _this$props$animated = _this$props.animated,\n          animated = _this$props$animated === void 0 ? true : _this$props$animated,\n          hideAdd = _this$props.hideAdd;\n      var tabBarExtraContent = _this.props.tabBarExtraContent;\n      var tabPaneAnimated = tabs_typeof(animated) === 'object' ? animated.tabPane : animated; // card tabs should not have animation\n\n      if (type !== 'line') {\n        tabPaneAnimated = 'animated' in _this.props ? tabPaneAnimated : false;\n      }\n\n      _util_warning(!(type.indexOf('card') >= 0 && (size === 'small' || size === 'large')), 'Tabs', \"`type=card|editable-card` doesn't have small or large size, it's by design.\");\n      var prefixCls = getPrefixCls('tabs', customizePrefixCls);\n      var cls = classnames_default()(className, (_classNames = {}, tabs_defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), tabPosition === 'left' || tabPosition === 'right'), tabs_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), !!size), tabs_defineProperty(_classNames, \"\".concat(prefixCls, \"-card\"), type.indexOf('card') >= 0), tabs_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type), true), tabs_defineProperty(_classNames, \"\".concat(prefixCls, \"-no-animation\"), !tabPaneAnimated), _classNames)); // only card type tabs can be added and closed\n\n      var childrenWithClose = [];\n\n      if (type === 'editable-card') {\n        childrenWithClose = [];\n        external_react_[\"Children\"].forEach(children, function (child, index) {\n          var closable = child.props.closable;\n          closable = typeof closable === 'undefined' ? true : closable;\n          var closeIcon = closable ? external_react_[\"createElement\"](es_icon, {\n            type: \"close\",\n            className: \"\".concat(prefixCls, \"-close-x\"),\n            onClick: function onClick(e) {\n              return _this.removeTab(child.key, e);\n            }\n          }) : null;\n          childrenWithClose.push(external_react_[\"cloneElement\"](child, {\n            tab: external_react_[\"createElement\"](\"div\", {\n              className: closable ? undefined : \"\".concat(prefixCls, \"-tab-unclosable\")\n            }, child.props.tab, closeIcon),\n            key: child.key || index\n          }));\n        }); // Add new tab handler\n\n        if (!hideAdd) {\n          tabBarExtraContent = external_react_[\"createElement\"](\"span\", null, external_react_[\"createElement\"](es_icon, {\n            type: \"plus\",\n            className: \"\".concat(prefixCls, \"-new-tab\"),\n            onClick: _this.createNewTab\n          }), tabBarExtraContent);\n        }\n      }\n\n      tabBarExtraContent = tabBarExtraContent ? external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-extra-content\")\n      }, tabBarExtraContent) : null;\n\n      var _a = _this.props,\n          dropped = _a.className,\n          tabBarProps = tabs_rest(_a, [\"className\"]);\n\n      var contentCls = classnames_default()(\"\".concat(prefixCls, \"-\").concat(tabPosition, \"-content\"), type.indexOf('card') >= 0 && \"\".concat(prefixCls, \"-card-content\"));\n      return external_react_[\"createElement\"](rc_tabs_es, tabs_extends({}, _this.props, {\n        prefixCls: prefixCls,\n        className: cls,\n        tabBarPosition: tabPosition,\n        renderTabBar: function renderTabBar() {\n          return external_react_[\"createElement\"](TabBar_TabBar, tabs_extends({}, tabBarProps, {\n            tabBarExtraContent: tabBarExtraContent\n          }));\n        },\n        renderTabContent: function renderTabContent() {\n          return external_react_[\"createElement\"](es_TabContent, {\n            className: contentCls,\n            animated: tabPaneAnimated,\n            animatedWithMargin: true\n          });\n        },\n        onChange: _this.handleChange\n      }), childrenWithClose.length > 0 ? childrenWithClose : children);\n    };\n\n    return _this;\n  }\n\n  tabs_createClass(Tabs, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var NO_FLEX = ' no-flex';\n      var tabNode = external_react_dom_[\"findDOMNode\"](this);\n\n      if (tabNode && !isFlexSupported && tabNode.className.indexOf(NO_FLEX) === -1) {\n        tabNode.className += NO_FLEX;\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderTabs);\n    }\n  }]);\n\n  return Tabs;\n}(external_react_[\"Component\"]);\n\n\ntabs_Tabs.TabPane = es_TabPane;\ntabs_Tabs.defaultProps = {\n  hideAdd: false,\n  tabPosition: 'top'\n};\n// EXTERNAL MODULE: ./node_modules/shallowequal/index.js\nvar shallowequal = __webpack_require__(37);\nvar shallowequal_default = /*#__PURE__*/__webpack_require__.n(shallowequal);\n\n// CONCATENATED MODULE: ./node_modules/rc-collapse/es/PanelContent.js\nvar PanelContent_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 PanelContent_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\nfunction PanelContent_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction PanelContent_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 PanelContent_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\n\n\n\nvar PanelContent_PanelContent = function (_Component) {\n  PanelContent_inherits(PanelContent, _Component);\n\n  function PanelContent() {\n    PanelContent_classCallCheck(this, PanelContent);\n\n    return PanelContent_possibleConstructorReturn(this, (PanelContent.__proto__ || Object.getPrototypeOf(PanelContent)).apply(this, arguments));\n  }\n\n  PanelContent_createClass(PanelContent, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      return this.props.forceRender || !shallowequal_default()(this.props, nextProps);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _classnames;\n\n      this._isActived = this.props.forceRender || this._isActived || this.props.isActive;\n      if (!this._isActived) {\n        return null;\n      }\n      var _props = this.props,\n          prefixCls = _props.prefixCls,\n          isActive = _props.isActive,\n          children = _props.children,\n          destroyInactivePanel = _props.destroyInactivePanel,\n          forceRender = _props.forceRender,\n          role = _props.role;\n\n      var contentCls = node_modules_classnames_default()((_classnames = {}, PanelContent_defineProperty(_classnames, prefixCls + '-content', true), PanelContent_defineProperty(_classnames, prefixCls + '-content-active', isActive), PanelContent_defineProperty(_classnames, prefixCls + '-content-inactive', !isActive), _classnames));\n      var child = !forceRender && !isActive && destroyInactivePanel ? null : external_react_default.a.createElement(\n        'div',\n        { className: prefixCls + '-content-box' },\n        children\n      );\n      return external_react_default.a.createElement(\n        'div',\n        {\n          className: contentCls,\n          role: role\n        },\n        child\n      );\n    }\n  }]);\n\n  return PanelContent;\n}(external_react_[\"Component\"]);\n\nPanelContent_PanelContent.propTypes = {\n  prefixCls: prop_types_default.a.string,\n  isActive: prop_types_default.a.bool,\n  children: prop_types_default.a.any,\n  destroyInactivePanel: prop_types_default.a.bool,\n  forceRender: prop_types_default.a.bool,\n  role: prop_types_default.a.string\n};\n\n/* harmony default export */ var es_PanelContent = (PanelContent_PanelContent);\n// CONCATENATED MODULE: ./node_modules/rc-collapse/es/Panel.js\nvar Panel_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 Panel_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\nfunction Panel_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Panel_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 Panel_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\n\n\n\n\n\nvar Panel_CollapsePanel = function (_Component) {\n  Panel_inherits(CollapsePanel, _Component);\n\n  function CollapsePanel() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    Panel_classCallCheck(this, CollapsePanel);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = Panel_possibleConstructorReturn(this, (_ref = CollapsePanel.__proto__ || Object.getPrototypeOf(CollapsePanel)).call.apply(_ref, [this].concat(args))), _this), _this.handleItemClick = function () {\n      var _this$props = _this.props,\n          onItemClick = _this$props.onItemClick,\n          panelKey = _this$props.panelKey;\n\n\n      if (typeof onItemClick === 'function') {\n        onItemClick(panelKey);\n      }\n    }, _this.handleKeyPress = function (e) {\n      if (e.key === 'Enter' || e.keyCode === 13 || e.which === 13) {\n        _this.handleItemClick();\n      }\n    }, _temp), Panel_possibleConstructorReturn(_this, _ret);\n  }\n\n  Panel_createClass(CollapsePanel, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      return !shallowequal_default()(this.props, nextProps);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _classNames2;\n\n      var _props = this.props,\n          className = _props.className,\n          id = _props.id,\n          style = _props.style,\n          prefixCls = _props.prefixCls,\n          header = _props.header,\n          headerClass = _props.headerClass,\n          children = _props.children,\n          isActive = _props.isActive,\n          showArrow = _props.showArrow,\n          destroyInactivePanel = _props.destroyInactivePanel,\n          disabled = _props.disabled,\n          accordion = _props.accordion,\n          forceRender = _props.forceRender,\n          expandIcon = _props.expandIcon,\n          extra = _props.extra;\n\n      var headerCls = node_modules_classnames_default()(prefixCls + '-header', Panel_defineProperty({}, headerClass, headerClass));\n      var itemCls = node_modules_classnames_default()((_classNames2 = {}, Panel_defineProperty(_classNames2, prefixCls + '-item', true), Panel_defineProperty(_classNames2, prefixCls + '-item-active', isActive), Panel_defineProperty(_classNames2, prefixCls + '-item-disabled', disabled), _classNames2), className);\n\n      var icon = external_react_default.a.createElement('i', { className: 'arrow' });\n      if (showArrow && typeof expandIcon === 'function') {\n        icon = expandIcon(this.props);\n      }\n      return external_react_default.a.createElement(\n        'div',\n        { className: itemCls, style: style, id: id },\n        external_react_default.a.createElement(\n          'div',\n          {\n            className: headerCls,\n            onClick: this.handleItemClick,\n            role: accordion ? 'tab' : 'button',\n            tabIndex: disabled ? -1 : 0,\n            'aria-expanded': '' + isActive,\n            onKeyPress: this.handleKeyPress\n          },\n          showArrow && icon,\n          header,\n          extra && external_react_default.a.createElement(\n            'div',\n            { className: prefixCls + '-extra' },\n            extra\n          )\n        ),\n        external_react_default.a.createElement(\n          Animate[\"a\" /* default */],\n          {\n            showProp: 'isActive',\n            exclusive: true,\n            component: '',\n            animation: this.props.openAnimation\n          },\n          external_react_default.a.createElement(\n            es_PanelContent,\n            {\n              prefixCls: prefixCls,\n              isActive: isActive,\n              destroyInactivePanel: destroyInactivePanel,\n              forceRender: forceRender,\n              role: accordion ? 'tabpanel' : null\n            },\n            children\n          )\n        )\n      );\n    }\n  }]);\n\n  return CollapsePanel;\n}(external_react_[\"Component\"]);\n\nPanel_CollapsePanel.propTypes = {\n  className: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.object]),\n  id: prop_types_default.a.string,\n  children: prop_types_default.a.any,\n  openAnimation: prop_types_default.a.object,\n  prefixCls: prop_types_default.a.string,\n  header: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number, prop_types_default.a.node]),\n  headerClass: prop_types_default.a.string,\n  showArrow: prop_types_default.a.bool,\n  isActive: prop_types_default.a.bool,\n  onItemClick: prop_types_default.a.func,\n  style: prop_types_default.a.object,\n  destroyInactivePanel: prop_types_default.a.bool,\n  disabled: prop_types_default.a.bool,\n  accordion: prop_types_default.a.bool,\n  forceRender: prop_types_default.a.bool,\n  expandIcon: prop_types_default.a.func,\n  extra: prop_types_default.a.node,\n  panelKey: prop_types_default.a.any\n};\n\nPanel_CollapsePanel.defaultProps = {\n  showArrow: true,\n  isActive: false,\n  destroyInactivePanel: false,\n  onItemClick: function onItemClick() {},\n\n  headerClass: '',\n  forceRender: false\n};\n\n/* harmony default export */ var Panel = (Panel_CollapsePanel);\n// CONCATENATED MODULE: ./node_modules/rc-collapse/es/openAnimationFactory.js\n\n\nfunction openAnimationFactory_animate(node, show, transitionName, done) {\n  var height = void 0;\n  return Object(css_animation_es[\"a\" /* default */])(node, transitionName, {\n    start: function start() {\n      if (!show) {\n        node.style.height = node.offsetHeight + 'px';\n      } else {\n        height = node.offsetHeight;\n        node.style.height = 0;\n      }\n    },\n    active: function active() {\n      node.style.height = (show ? height : 0) + 'px';\n    },\n    end: function end() {\n      node.style.height = '';\n      done();\n    }\n  });\n}\n\nfunction openAnimationFactory_animation(prefixCls) {\n  return {\n    enter: function enter(node, done) {\n      return openAnimationFactory_animate(node, true, prefixCls + '-anim', done);\n    },\n    leave: function leave(node, done) {\n      return openAnimationFactory_animate(node, false, prefixCls + '-anim', done);\n    }\n  };\n}\n\n/* harmony default export */ var openAnimationFactory = (openAnimationFactory_animation);\n// EXTERNAL MODULE: ./node_modules/react-is/index.js\nvar react_is = __webpack_require__(164);\n\n// CONCATENATED MODULE: ./node_modules/rc-collapse/es/Collapse.js\nvar Collapse_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 Collapse_toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction Collapse_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\nfunction Collapse_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Collapse_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 Collapse_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\n\n\n\n\n\n\n\nfunction Collapse_toArray(activeKey) {\n  var currentActiveKey = activeKey;\n  if (!Array.isArray(currentActiveKey)) {\n    currentActiveKey = currentActiveKey ? [currentActiveKey] : [];\n  }\n  return currentActiveKey.map(function (key) {\n    return String(key);\n  });\n}\n\nvar Collapse_Collapse = function (_Component) {\n  Collapse_inherits(Collapse, _Component);\n\n  function Collapse(props) {\n    Collapse_classCallCheck(this, Collapse);\n\n    var _this = Collapse_possibleConstructorReturn(this, (Collapse.__proto__ || Object.getPrototypeOf(Collapse)).call(this, props));\n\n    Collapse_initialiseProps.call(_this);\n\n    var activeKey = props.activeKey,\n        defaultActiveKey = props.defaultActiveKey;\n\n    var currentActiveKey = defaultActiveKey;\n    if ('activeKey' in props) {\n      currentActiveKey = activeKey;\n    }\n\n    _this.state = {\n      openAnimation: props.openAnimation || openAnimationFactory(props.prefixCls),\n      activeKey: Collapse_toArray(currentActiveKey)\n    };\n    return _this;\n  }\n\n  Collapse_createClass(Collapse, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps, nextState) {\n      return !shallowequal_default()(this.props, nextProps) || !shallowequal_default()(this.state, nextState);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _classNames;\n\n      var _props = this.props,\n          prefixCls = _props.prefixCls,\n          className = _props.className,\n          style = _props.style,\n          accordion = _props.accordion;\n\n      var collapseClassName = node_modules_classnames_default()((_classNames = {}, Collapse_defineProperty(_classNames, prefixCls, true), Collapse_defineProperty(_classNames, className, !!className), _classNames));\n      return external_react_default.a.createElement(\n        'div',\n        { className: collapseClassName, style: style, role: accordion ? 'tablist' : null },\n        this.getItems()\n      );\n    }\n  }], [{\n    key: 'getDerivedStateFromProps',\n    value: function getDerivedStateFromProps(nextProps) {\n      var newState = {};\n      if ('activeKey' in nextProps) {\n        newState.activeKey = Collapse_toArray(nextProps.activeKey);\n      }\n      if ('openAnimation' in nextProps) {\n        newState.openAnimation = nextProps.openAnimation;\n      }\n      return newState.activeKey || newState.openAnimation ? newState : null;\n    }\n  }]);\n\n  return Collapse;\n}(external_react_[\"Component\"]);\n\nvar Collapse_initialiseProps = function _initialiseProps() {\n  var _this2 = this;\n\n  this.onClickItem = function (key) {\n    var activeKey = _this2.state.activeKey;\n    if (_this2.props.accordion) {\n      activeKey = activeKey[0] === key ? [] : [key];\n    } else {\n      activeKey = [].concat(Collapse_toConsumableArray(activeKey));\n      var index = activeKey.indexOf(key);\n      var isActive = index > -1;\n      if (isActive) {\n        // remove active state\n        activeKey.splice(index, 1);\n      } else {\n        activeKey.push(key);\n      }\n    }\n    _this2.setActiveKey(activeKey);\n  };\n\n  this.getNewChild = function (child, index) {\n    if (!child) return null;\n\n    var activeKey = _this2.state.activeKey;\n    var _props2 = _this2.props,\n        prefixCls = _props2.prefixCls,\n        accordion = _props2.accordion,\n        destroyInactivePanel = _props2.destroyInactivePanel,\n        expandIcon = _props2.expandIcon;\n    // If there is no key provide, use the panel order as default key\n\n    var key = child.key || String(index);\n    var _child$props = child.props,\n        header = _child$props.header,\n        headerClass = _child$props.headerClass,\n        disabled = _child$props.disabled;\n\n    var isActive = false;\n    if (accordion) {\n      isActive = activeKey[0] === key;\n    } else {\n      isActive = activeKey.indexOf(key) > -1;\n    }\n\n    var props = {\n      key: key,\n      panelKey: key,\n      header: header,\n      headerClass: headerClass,\n      isActive: isActive,\n      prefixCls: prefixCls,\n      destroyInactivePanel: destroyInactivePanel,\n      openAnimation: _this2.state.openAnimation,\n      accordion: accordion,\n      children: child.props.children,\n      onItemClick: disabled ? null : _this2.onClickItem,\n      expandIcon: expandIcon\n    };\n\n    // https://github.com/ant-design/ant-design/issues/20479\n    if (typeof child.type === 'string') {\n      return child;\n    }\n\n    return external_react_default.a.cloneElement(child, props);\n  };\n\n  this.getItems = function () {\n    var children = _this2.props.children;\n\n    var childList = Object(react_is[\"isFragment\"])(children) ? children.props.children : children;\n    var newChildren = external_react_[\"Children\"].map(childList, _this2.getNewChild);\n\n    //  ref: https://github.com/ant-design/ant-design/issues/13884\n    if (Object(react_is[\"isFragment\"])(children)) {\n      return external_react_default.a.createElement(\n        external_react_default.a.Fragment,\n        null,\n        newChildren\n      );\n    }\n\n    return newChildren;\n  };\n\n  this.setActiveKey = function (activeKey) {\n    if (!('activeKey' in _this2.props)) {\n      _this2.setState({ activeKey: activeKey });\n    }\n    _this2.props.onChange(_this2.props.accordion ? activeKey[0] : activeKey);\n  };\n};\n\nCollapse_Collapse.propTypes = {\n  children: prop_types_default.a.any,\n  prefixCls: prop_types_default.a.string,\n  activeKey: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number, prop_types_default.a.arrayOf(prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]))]),\n  defaultActiveKey: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number, prop_types_default.a.arrayOf(prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]))]),\n  openAnimation: prop_types_default.a.object,\n  onChange: prop_types_default.a.func,\n  accordion: prop_types_default.a.bool,\n  className: prop_types_default.a.string,\n  style: prop_types_default.a.object,\n  destroyInactivePanel: prop_types_default.a.bool,\n  expandIcon: prop_types_default.a.func\n};\n\nCollapse_Collapse.defaultProps = {\n  prefixCls: 'rc-collapse',\n  onChange: function onChange() {},\n\n  accordion: false,\n  destroyInactivePanel: false\n};\n\nCollapse_Collapse.Panel = Panel;\n\nObject(react_lifecycles_compat_es[\"polyfill\"])(Collapse_Collapse);\n\n/* harmony default export */ var es_Collapse = (Collapse_Collapse);\n// CONCATENATED MODULE: ./node_modules/rc-collapse/es/index.js\n\n\n/* harmony default export */ var rc_collapse_es = (es_Collapse);\nvar es_Panel = es_Collapse.Panel;\n// CONCATENATED MODULE: ./node_modules/antd/es/collapse/CollapsePanel.js\nfunction CollapsePanel_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { CollapsePanel_typeof = function _typeof(obj) { return typeof obj; }; } else { CollapsePanel_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return CollapsePanel_typeof(obj); }\n\nfunction CollapsePanel_extends() { CollapsePanel_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 CollapsePanel_extends.apply(this, arguments); }\n\nfunction CollapsePanel_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\nfunction CollapsePanel_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction CollapsePanel_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 CollapsePanel_createClass(Constructor, protoProps, staticProps) { if (protoProps) CollapsePanel_defineProperties(Constructor.prototype, protoProps); if (staticProps) CollapsePanel_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction CollapsePanel_possibleConstructorReturn(self, call) { if (call && (CollapsePanel_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return CollapsePanel_assertThisInitialized(self); }\n\nfunction CollapsePanel_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction CollapsePanel_getPrototypeOf(o) { CollapsePanel_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return CollapsePanel_getPrototypeOf(o); }\n\nfunction CollapsePanel_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) CollapsePanel_setPrototypeOf(subClass, superClass); }\n\nfunction CollapsePanel_setPrototypeOf(o, p) { CollapsePanel_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return CollapsePanel_setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar CollapsePanel_CollapsePanel =\n/*#__PURE__*/\nfunction (_React$Component) {\n  CollapsePanel_inherits(CollapsePanel, _React$Component);\n\n  function CollapsePanel() {\n    var _this;\n\n    CollapsePanel_classCallCheck(this, CollapsePanel);\n\n    _this = CollapsePanel_possibleConstructorReturn(this, CollapsePanel_getPrototypeOf(CollapsePanel).apply(this, arguments));\n\n    _this.renderCollapsePanel = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n      var _this$props = _this.props,\n          customizePrefixCls = _this$props.prefixCls,\n          _this$props$className = _this$props.className,\n          className = _this$props$className === void 0 ? '' : _this$props$className,\n          _this$props$showArrow = _this$props.showArrow,\n          showArrow = _this$props$showArrow === void 0 ? true : _this$props$showArrow;\n      var prefixCls = getPrefixCls('collapse', customizePrefixCls);\n      var collapsePanelClassName = classnames_default()(CollapsePanel_defineProperty({}, \"\".concat(prefixCls, \"-no-arrow\"), !showArrow), className);\n      return external_react_[\"createElement\"](rc_collapse_es.Panel, CollapsePanel_extends({}, _this.props, {\n        prefixCls: prefixCls,\n        className: collapsePanelClassName\n      }));\n    };\n\n    return _this;\n  }\n\n  CollapsePanel_createClass(CollapsePanel, [{\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderCollapsePanel);\n    }\n  }]);\n\n  return CollapsePanel;\n}(external_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/antd/es/collapse/Collapse.js\nfunction Collapse_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Collapse_typeof = function _typeof(obj) { return typeof obj; }; } else { Collapse_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Collapse_typeof(obj); }\n\nfunction Collapse_extends() { Collapse_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 Collapse_extends.apply(this, arguments); }\n\nfunction collapse_Collapse_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\nfunction collapse_Collapse_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Collapse_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 collapse_Collapse_createClass(Constructor, protoProps, staticProps) { if (protoProps) Collapse_defineProperties(Constructor.prototype, protoProps); if (staticProps) Collapse_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction collapse_Collapse_possibleConstructorReturn(self, call) { if (call && (Collapse_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Collapse_assertThisInitialized(self); }\n\nfunction Collapse_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Collapse_getPrototypeOf(o) { Collapse_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Collapse_getPrototypeOf(o); }\n\nfunction collapse_Collapse_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) Collapse_setPrototypeOf(subClass, superClass); }\n\nfunction Collapse_setPrototypeOf(o, p) { Collapse_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Collapse_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\nvar collapse_Collapse_Collapse =\n/*#__PURE__*/\nfunction (_React$Component) {\n  collapse_Collapse_inherits(Collapse, _React$Component);\n\n  function Collapse() {\n    var _this;\n\n    collapse_Collapse_classCallCheck(this, Collapse);\n\n    _this = collapse_Collapse_possibleConstructorReturn(this, Collapse_getPrototypeOf(Collapse).apply(this, arguments));\n\n    _this.renderExpandIcon = function () {\n      var panelProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var prefixCls = arguments.length > 1 ? arguments[1] : undefined;\n      var expandIcon = _this.props.expandIcon;\n      var icon = expandIcon ? expandIcon(panelProps) : external_react_[\"createElement\"](es_icon, {\n        type: \"right\",\n        rotate: panelProps.isActive ? 90 : undefined\n      });\n      return external_react_[\"isValidElement\"](icon) ? external_react_[\"cloneElement\"](icon, {\n        className: \"\".concat(prefixCls, \"-arrow\")\n      }) : icon;\n    };\n\n    _this.renderCollapse = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n      var _this$props = _this.props,\n          customizePrefixCls = _this$props.prefixCls,\n          _this$props$className = _this$props.className,\n          className = _this$props$className === void 0 ? '' : _this$props$className,\n          bordered = _this$props.bordered;\n      var prefixCls = getPrefixCls('collapse', customizePrefixCls);\n      var collapseClassName = classnames_default()(collapse_Collapse_defineProperty({}, \"\".concat(prefixCls, \"-borderless\"), !bordered), className);\n      return external_react_[\"createElement\"](rc_collapse_es, Collapse_extends({}, _this.props, {\n        expandIcon: function expandIcon(panelProps) {\n          return _this.renderExpandIcon(panelProps, prefixCls);\n        },\n        prefixCls: prefixCls,\n        className: collapseClassName\n      }));\n    };\n\n    return _this;\n  }\n\n  collapse_Collapse_createClass(Collapse, [{\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderCollapse);\n    }\n  }]);\n\n  return Collapse;\n}(external_react_[\"Component\"]);\n\n\ncollapse_Collapse_Collapse.Panel = CollapsePanel_CollapsePanel;\ncollapse_Collapse_Collapse.defaultProps = {\n  bordered: true,\n  openAnimation: Collapse_extends({}, _util_openAnimation, {\n    appear: function appear() {}\n  })\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/collapse/index.js\n\n/* harmony default export */ var es_collapse = (collapse_Collapse_Collapse);\n// EXTERNAL MODULE: ./node_modules/lodash/has.js\nvar has = __webpack_require__(680);\nvar has_default = /*#__PURE__*/__webpack_require__.n(has);\n\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/toConsumableArray.js\nvar toConsumableArray = __webpack_require__(83);\nvar toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);\n\n// EXTERNAL MODULE: ./node_modules/create-react-class/index.js\nvar create_react_class = __webpack_require__(681);\nvar create_react_class_default = /*#__PURE__*/__webpack_require__.n(create_react_class);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/unsafeLifecyclesPolyfill.js\nvar unsafeLifecyclesPolyfill = __webpack_require__(351);\n\n// EXTERNAL MODULE: ./node_modules/async-validator/es/index.js\nvar async_validator_es = __webpack_require__(682);\nvar es_default = /*#__PURE__*/__webpack_require__.n(async_validator_es);\n\n// EXTERNAL MODULE: ./node_modules/lodash/get.js\nvar lodash_get = __webpack_require__(166);\nvar get_default = /*#__PURE__*/__webpack_require__.n(lodash_get);\n\n// EXTERNAL MODULE: ./node_modules/lodash/set.js\nvar set = __webpack_require__(111);\nvar set_default = /*#__PURE__*/__webpack_require__.n(set);\n\n// EXTERNAL MODULE: ./node_modules/lodash/eq.js\nvar eq = __webpack_require__(190);\nvar eq_default = /*#__PURE__*/__webpack_require__.n(eq);\n\n// CONCATENATED MODULE: ./node_modules/rc-form/es/createFormField.js\n\n\n\nvar createFormField_Field = function Field(fields) {\n  helpers_classCallCheck_default()(this, Field);\n\n  extends_default()(this, fields);\n};\n\nfunction isFormField(obj) {\n  return obj instanceof createFormField_Field;\n}\n\nfunction createFormField(field) {\n  if (isFormField(field)) {\n    return field;\n  }\n  return new createFormField_Field(field);\n}\n// EXTERNAL MODULE: ./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\nvar hoist_non_react_statics_cjs = __webpack_require__(683);\nvar hoist_non_react_statics_cjs_default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics_cjs);\n\n// CONCATENATED MODULE: ./node_modules/rc-form/es/utils.js\n\n\n\n\n\nfunction getDisplayName(WrappedComponent) {\n  return WrappedComponent.displayName || WrappedComponent.name || 'WrappedComponent';\n}\n\nfunction argumentContainer(Container, WrappedComponent) {\n  /* eslint no-param-reassign:0 */\n  Container.displayName = 'Form(' + getDisplayName(WrappedComponent) + ')';\n  Container.WrappedComponent = WrappedComponent;\n  return hoist_non_react_statics_cjs_default()(Container, WrappedComponent);\n}\n\nfunction identity(obj) {\n  return obj;\n}\n\nfunction utils_flattenArray(arr) {\n  return Array.prototype.concat.apply([], arr);\n}\n\nfunction treeTraverse() {\n  var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var tree = arguments[1];\n  var isLeafNode = arguments[2];\n  var errorMessage = arguments[3];\n  var callback = arguments[4];\n\n  if (isLeafNode(path, tree)) {\n    callback(path, tree);\n  } else if (tree === undefined || tree === null) {\n    // Do nothing\n  } else if (Array.isArray(tree)) {\n    tree.forEach(function (subTree, index) {\n      return treeTraverse(path + '[' + index + ']', subTree, isLeafNode, errorMessage, callback);\n    });\n  } else {\n    // It's object and not a leaf node\n    if (typeof tree !== 'object') {\n      warning_default()(false, errorMessage);\n      return;\n    }\n    Object.keys(tree).forEach(function (subTreeKey) {\n      var subTree = tree[subTreeKey];\n      treeTraverse('' + path + (path ? '.' : '') + subTreeKey, subTree, isLeafNode, errorMessage, callback);\n    });\n  }\n}\n\nfunction flattenFields(maybeNestedFields, isLeafNode, errorMessage) {\n  var fields = {};\n  treeTraverse(undefined, maybeNestedFields, isLeafNode, errorMessage, function (path, node) {\n    fields[path] = node;\n  });\n  return fields;\n}\n\nfunction normalizeValidateRules(validate, rules, validateTrigger) {\n  var validateRules = validate.map(function (item) {\n    var newItem = extends_default()({}, item, {\n      trigger: item.trigger || []\n    });\n    if (typeof newItem.trigger === 'string') {\n      newItem.trigger = [newItem.trigger];\n    }\n    return newItem;\n  });\n  if (rules) {\n    validateRules.push({\n      trigger: validateTrigger ? [].concat(validateTrigger) : [],\n      rules: rules\n    });\n  }\n  return validateRules;\n}\n\nfunction getValidateTriggers(validateRules) {\n  return validateRules.filter(function (item) {\n    return !!item.rules && item.rules.length;\n  }).map(function (item) {\n    return item.trigger;\n  }).reduce(function (pre, curr) {\n    return pre.concat(curr);\n  }, []);\n}\n\nfunction getValueFromEvent(e) {\n  // To support custom element\n  if (!e || !e.target) {\n    return e;\n  }\n  var target = e.target;\n\n  return target.type === 'checkbox' ? target.checked : target.value;\n}\n\nfunction getErrorStrs(errors) {\n  if (errors) {\n    return errors.map(function (e) {\n      if (e && e.message) {\n        return e.message;\n      }\n      return e;\n    });\n  }\n  return errors;\n}\n\nfunction getParams(ns, opt, cb) {\n  var names = ns;\n  var options = opt;\n  var callback = cb;\n  if (cb === undefined) {\n    if (typeof names === 'function') {\n      callback = names;\n      options = {};\n      names = undefined;\n    } else if (Array.isArray(names)) {\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      } else {\n        options = options || {};\n      }\n    } else {\n      callback = options;\n      options = names || {};\n      names = undefined;\n    }\n  }\n  return {\n    names: names,\n    options: options,\n    callback: callback\n  };\n}\n\nfunction isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\nfunction hasRules(validate) {\n  if (validate) {\n    return validate.some(function (item) {\n      return item.rules && item.rules.length;\n    });\n  }\n  return false;\n}\n\nfunction startsWith(str, prefix) {\n  return str.lastIndexOf(prefix, 0) === 0;\n}\n\nfunction supportRef(nodeOrComponent) {\n  var type = Object(react_is[\"isMemo\"])(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;\n\n  // Function component node\n  if (typeof type === 'function' && !(type.prototype && type.prototype.render)) {\n    return false;\n  }\n\n  // Class component\n  if (typeof nodeOrComponent === 'function' && !(nodeOrComponent.prototype && nodeOrComponent.prototype.render)) {\n    return false;\n  }\n\n  return true;\n}\n// CONCATENATED MODULE: ./node_modules/rc-form/es/createFieldsStore.js\n\n\n\n\n\n\n\n\nfunction partOf(a, b) {\n  return b.indexOf(a) === 0 && ['.', '['].indexOf(b[a.length]) !== -1;\n}\n\nfunction internalFlattenFields(fields) {\n  return flattenFields(fields, function (_, node) {\n    return isFormField(node);\n  }, 'You must wrap field data with `createFormField`.');\n}\n\nvar createFieldsStore_FieldsStore = function () {\n  function FieldsStore(fields) {\n    helpers_classCallCheck_default()(this, FieldsStore);\n\n    createFieldsStore_initialiseProps.call(this);\n\n    this.fields = internalFlattenFields(fields);\n    this.fieldsMeta = {};\n  }\n\n  helpers_createClass_default()(FieldsStore, [{\n    key: 'updateFields',\n    value: function updateFields(fields) {\n      this.fields = internalFlattenFields(fields);\n    }\n  }, {\n    key: 'flattenRegisteredFields',\n    value: function flattenRegisteredFields(fields) {\n      var validFieldsName = this.getAllFieldsName();\n      return flattenFields(fields, function (path) {\n        return validFieldsName.indexOf(path) >= 0;\n      }, 'You cannot set a form field before rendering a field associated with the value.');\n    }\n  }, {\n    key: 'setFields',\n    value: function setFields(fields) {\n      var _this = this;\n\n      var fieldsMeta = this.fieldsMeta;\n      var nowFields = extends_default()({}, this.fields, fields);\n      var nowValues = {};\n      Object.keys(fieldsMeta).forEach(function (f) {\n        nowValues[f] = _this.getValueFromFields(f, nowFields);\n      });\n      Object.keys(nowValues).forEach(function (f) {\n        var value = nowValues[f];\n        var fieldMeta = _this.getFieldMeta(f);\n        if (fieldMeta && fieldMeta.normalize) {\n          var nowValue = fieldMeta.normalize(value, _this.getValueFromFields(f, _this.fields), nowValues);\n          if (nowValue !== value) {\n            nowFields[f] = extends_default()({}, nowFields[f], {\n              value: nowValue\n            });\n          }\n        }\n      });\n      this.fields = nowFields;\n    }\n  }, {\n    key: 'resetFields',\n    value: function resetFields(ns) {\n      var fields = this.fields;\n\n      var names = ns ? this.getValidFieldsFullName(ns) : this.getAllFieldsName();\n      return names.reduce(function (acc, name) {\n        var field = fields[name];\n        if (field && 'value' in field) {\n          acc[name] = {};\n        }\n        return acc;\n      }, {});\n    }\n  }, {\n    key: 'setFieldMeta',\n    value: function setFieldMeta(name, meta) {\n      this.fieldsMeta[name] = meta;\n    }\n  }, {\n    key: 'setFieldsAsDirty',\n    value: function setFieldsAsDirty() {\n      var _this2 = this;\n\n      Object.keys(this.fields).forEach(function (name) {\n        var field = _this2.fields[name];\n        var fieldMeta = _this2.fieldsMeta[name];\n        if (field && fieldMeta && hasRules(fieldMeta.validate)) {\n          _this2.fields[name] = extends_default()({}, field, {\n            dirty: true\n          });\n        }\n      });\n    }\n  }, {\n    key: 'getFieldMeta',\n    value: function getFieldMeta(name) {\n      this.fieldsMeta[name] = this.fieldsMeta[name] || {};\n      return this.fieldsMeta[name];\n    }\n  }, {\n    key: 'getValueFromFields',\n    value: function getValueFromFields(name, fields) {\n      var field = fields[name];\n      if (field && 'value' in field) {\n        return field.value;\n      }\n      var fieldMeta = this.getFieldMeta(name);\n      return fieldMeta && fieldMeta.initialValue;\n    }\n  }, {\n    key: 'getValidFieldsName',\n    value: function getValidFieldsName() {\n      var _this3 = this;\n\n      var fieldsMeta = this.fieldsMeta;\n\n      return fieldsMeta ? Object.keys(fieldsMeta).filter(function (name) {\n        return !_this3.getFieldMeta(name).hidden;\n      }) : [];\n    }\n  }, {\n    key: 'getAllFieldsName',\n    value: function getAllFieldsName() {\n      var fieldsMeta = this.fieldsMeta;\n\n      return fieldsMeta ? Object.keys(fieldsMeta) : [];\n    }\n  }, {\n    key: 'getValidFieldsFullName',\n    value: function getValidFieldsFullName(maybePartialName) {\n      var maybePartialNames = Array.isArray(maybePartialName) ? maybePartialName : [maybePartialName];\n      return this.getValidFieldsName().filter(function (fullName) {\n        return maybePartialNames.some(function (partialName) {\n          return fullName === partialName || startsWith(fullName, partialName) && ['.', '['].indexOf(fullName[partialName.length]) >= 0;\n        });\n      });\n    }\n  }, {\n    key: 'getFieldValuePropValue',\n    value: function getFieldValuePropValue(fieldMeta) {\n      var name = fieldMeta.name,\n          getValueProps = fieldMeta.getValueProps,\n          valuePropName = fieldMeta.valuePropName;\n\n      var field = this.getField(name);\n      var fieldValue = 'value' in field ? field.value : fieldMeta.initialValue;\n      if (getValueProps) {\n        return getValueProps(fieldValue);\n      }\n      return defineProperty_default()({}, valuePropName, fieldValue);\n    }\n  }, {\n    key: 'getField',\n    value: function getField(name) {\n      return extends_default()({}, this.fields[name], {\n        name: name\n      });\n    }\n  }, {\n    key: 'getNotCollectedFields',\n    value: function getNotCollectedFields() {\n      var _this4 = this;\n\n      var fieldsName = this.getValidFieldsName();\n      return fieldsName.filter(function (name) {\n        return !_this4.fields[name];\n      }).map(function (name) {\n        return {\n          name: name,\n          dirty: false,\n          value: _this4.getFieldMeta(name).initialValue\n        };\n      }).reduce(function (acc, field) {\n        return set_default()(acc, field.name, createFormField(field));\n      }, {});\n    }\n  }, {\n    key: 'getNestedAllFields',\n    value: function getNestedAllFields() {\n      var _this5 = this;\n\n      return Object.keys(this.fields).reduce(function (acc, name) {\n        return set_default()(acc, name, createFormField(_this5.fields[name]));\n      }, this.getNotCollectedFields());\n    }\n  }, {\n    key: 'getFieldMember',\n    value: function getFieldMember(name, member) {\n      return this.getField(name)[member];\n    }\n  }, {\n    key: 'getNestedFields',\n    value: function getNestedFields(names, getter) {\n      var fields = names || this.getValidFieldsName();\n      return fields.reduce(function (acc, f) {\n        return set_default()(acc, f, getter(f));\n      }, {});\n    }\n  }, {\n    key: 'getNestedField',\n    value: function getNestedField(name, getter) {\n      var fullNames = this.getValidFieldsFullName(name);\n      if (fullNames.length === 0 || // Not registered\n      fullNames.length === 1 && fullNames[0] === name // Name already is full name.\n      ) {\n          return getter(name);\n        }\n      var isArrayValue = fullNames[0][name.length] === '[';\n      var suffixNameStartIndex = isArrayValue ? name.length : name.length + 1;\n      return fullNames.reduce(function (acc, fullName) {\n        return set_default()(acc, fullName.slice(suffixNameStartIndex), getter(fullName));\n      }, isArrayValue ? [] : {});\n    }\n  }, {\n    key: 'isValidNestedFieldName',\n\n\n    // @private\n    // BG: `a` and `a.b` cannot be use in the same form\n    value: function isValidNestedFieldName(name) {\n      var names = this.getAllFieldsName();\n      return names.every(function (n) {\n        return !partOf(n, name) && !partOf(name, n);\n      });\n    }\n  }, {\n    key: 'clearField',\n    value: function clearField(name) {\n      delete this.fields[name];\n      delete this.fieldsMeta[name];\n    }\n  }]);\n\n  return FieldsStore;\n}();\n\nvar createFieldsStore_initialiseProps = function _initialiseProps() {\n  var _this6 = this;\n\n  this.setFieldsInitialValue = function (initialValues) {\n    var flattenedInitialValues = _this6.flattenRegisteredFields(initialValues);\n    var fieldsMeta = _this6.fieldsMeta;\n    Object.keys(flattenedInitialValues).forEach(function (name) {\n      if (fieldsMeta[name]) {\n        _this6.setFieldMeta(name, extends_default()({}, _this6.getFieldMeta(name), {\n          initialValue: flattenedInitialValues[name]\n        }));\n      }\n    });\n  };\n\n  this.getAllValues = function () {\n    var fieldsMeta = _this6.fieldsMeta,\n        fields = _this6.fields;\n\n    return Object.keys(fieldsMeta).reduce(function (acc, name) {\n      return set_default()(acc, name, _this6.getValueFromFields(name, fields));\n    }, {});\n  };\n\n  this.getFieldsValue = function (names) {\n    return _this6.getNestedFields(names, _this6.getFieldValue);\n  };\n\n  this.getFieldValue = function (name) {\n    var fields = _this6.fields;\n\n    return _this6.getNestedField(name, function (fullName) {\n      return _this6.getValueFromFields(fullName, fields);\n    });\n  };\n\n  this.getFieldsError = function (names) {\n    return _this6.getNestedFields(names, _this6.getFieldError);\n  };\n\n  this.getFieldError = function (name) {\n    return _this6.getNestedField(name, function (fullName) {\n      return getErrorStrs(_this6.getFieldMember(fullName, 'errors'));\n    });\n  };\n\n  this.isFieldValidating = function (name) {\n    return _this6.getFieldMember(name, 'validating');\n  };\n\n  this.isFieldsValidating = function (ns) {\n    var names = ns || _this6.getValidFieldsName();\n    return names.some(function (n) {\n      return _this6.isFieldValidating(n);\n    });\n  };\n\n  this.isFieldTouched = function (name) {\n    return _this6.getFieldMember(name, 'touched');\n  };\n\n  this.isFieldsTouched = function (ns) {\n    var names = ns || _this6.getValidFieldsName();\n    return names.some(function (n) {\n      return _this6.isFieldTouched(n);\n    });\n  };\n};\n\nfunction createFieldsStore(fields) {\n  return new createFieldsStore_FieldsStore(fields);\n}\n// CONCATENATED MODULE: ./node_modules/rc-form/es/FieldElemWrapper.js\n\n\n\n\n\n\n\nvar FieldElemWrapper_FieldElemWrapper = function (_React$Component) {\n  helpers_inherits_default()(FieldElemWrapper, _React$Component);\n\n  function FieldElemWrapper() {\n    helpers_classCallCheck_default()(this, FieldElemWrapper);\n\n    return helpers_possibleConstructorReturn_default()(this, (FieldElemWrapper.__proto__ || Object.getPrototypeOf(FieldElemWrapper)).apply(this, arguments));\n  }\n\n  helpers_createClass_default()(FieldElemWrapper, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _props = this.props,\n          name = _props.name,\n          form = _props.form;\n\n      form.domFields[name] = true;\n      form.recoverClearedField(name);\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      var _props2 = this.props,\n          name = _props2.name,\n          form = _props2.form;\n\n      var fieldMeta = form.fieldsStore.getFieldMeta(name);\n      if (!fieldMeta.preserve) {\n        // after destroy, delete data\n        form.clearedFieldMetaCache[name] = {\n          field: form.fieldsStore.getField(name),\n          meta: fieldMeta\n        };\n        form.clearField(name);\n      }\n      delete form.domFields[name];\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n\n  return FieldElemWrapper;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_FieldElemWrapper = (FieldElemWrapper_FieldElemWrapper);\n\n\nFieldElemWrapper_FieldElemWrapper.propTypes = {\n  name: prop_types_default.a.string,\n  form: prop_types_default.a.shape({\n    domFields: prop_types_default.a.objectOf(prop_types_default.a.bool),\n    recoverClearedField: prop_types_default.a.func,\n    fieldsStore: prop_types_default.a.shape({\n      getFieldMeta: prop_types_default.a.func,\n      getField: prop_types_default.a.func\n    }),\n    clearedFieldMetaCache: prop_types_default.a.objectOf(prop_types_default.a.shape({\n      field: prop_types_default.a.object,\n      meta: prop_types_default.a.object\n    })),\n    clearField: prop_types_default.a.func\n  }),\n  children: prop_types_default.a.node\n};\n// CONCATENATED MODULE: ./node_modules/rc-form/es/createBaseForm.js\n\n\n\n\n/* eslint-disable react/prefer-es6-class */\n/* eslint-disable prefer-promise-reject-errors */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DEFAULT_TRIGGER = 'onChange';\n\nfunction createBaseForm() {\n  var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var mixins = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var validateMessages = option.validateMessages,\n      onFieldsChange = option.onFieldsChange,\n      onValuesChange = option.onValuesChange,\n      _option$mapProps = option.mapProps,\n      mapProps = _option$mapProps === undefined ? identity : _option$mapProps,\n      mapPropsToFields = option.mapPropsToFields,\n      fieldNameProp = option.fieldNameProp,\n      fieldMetaProp = option.fieldMetaProp,\n      fieldDataProp = option.fieldDataProp,\n      _option$formPropName = option.formPropName,\n      formPropName = _option$formPropName === undefined ? 'form' : _option$formPropName,\n      formName = option.name,\n      withRef = option.withRef;\n\n\n  return function decorate(WrappedComponent) {\n    var Form = create_react_class_default()({\n      displayName: 'Form',\n\n      mixins: mixins,\n\n      getInitialState: function getInitialState() {\n        var _this = this;\n\n        var fields = mapPropsToFields && mapPropsToFields(this.props);\n        this.fieldsStore = createFieldsStore(fields || {});\n\n        this.instances = {};\n        this.cachedBind = {};\n        this.clearedFieldMetaCache = {};\n\n        this.renderFields = {};\n        this.domFields = {};\n\n        // HACK: https://github.com/ant-design/ant-design/issues/6406\n        ['getFieldsValue', 'getFieldValue', 'setFieldsInitialValue', 'getFieldsError', 'getFieldError', 'isFieldValidating', 'isFieldsValidating', 'isFieldsTouched', 'isFieldTouched'].forEach(function (key) {\n          _this[key] = function () {\n            var _fieldsStore;\n\n            if (false) {}\n            return (_fieldsStore = _this.fieldsStore)[key].apply(_fieldsStore, arguments);\n          };\n        });\n\n        return {\n          submitting: false\n        };\n      },\n      componentDidMount: function componentDidMount() {\n        this.cleanUpUselessFields();\n      },\n      componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n        if (mapPropsToFields) {\n          this.fieldsStore.updateFields(mapPropsToFields(nextProps));\n        }\n      },\n      componentDidUpdate: function componentDidUpdate() {\n        this.cleanUpUselessFields();\n      },\n      onCollectCommon: function onCollectCommon(name, action, args) {\n        var fieldMeta = this.fieldsStore.getFieldMeta(name);\n        if (fieldMeta[action]) {\n          fieldMeta[action].apply(fieldMeta, toConsumableArray_default()(args));\n        } else if (fieldMeta.originalProps && fieldMeta.originalProps[action]) {\n          var _fieldMeta$originalPr;\n\n          (_fieldMeta$originalPr = fieldMeta.originalProps)[action].apply(_fieldMeta$originalPr, toConsumableArray_default()(args));\n        }\n        var value = fieldMeta.getValueFromEvent ? fieldMeta.getValueFromEvent.apply(fieldMeta, toConsumableArray_default()(args)) : getValueFromEvent.apply(undefined, toConsumableArray_default()(args));\n        if (onValuesChange && value !== this.fieldsStore.getFieldValue(name)) {\n          var valuesAll = this.fieldsStore.getAllValues();\n          var valuesAllSet = {};\n          valuesAll[name] = value;\n          Object.keys(valuesAll).forEach(function (key) {\n            return set_default()(valuesAllSet, key, valuesAll[key]);\n          });\n          onValuesChange(extends_default()(defineProperty_default()({}, formPropName, this.getForm()), this.props), set_default()({}, name, value), valuesAllSet);\n        }\n        var field = this.fieldsStore.getField(name);\n        return { name: name, field: extends_default()({}, field, { value: value, touched: true }), fieldMeta: fieldMeta };\n      },\n      onCollect: function onCollect(name_, action) {\n        for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n          args[_key - 2] = arguments[_key];\n        }\n\n        var _onCollectCommon = this.onCollectCommon(name_, action, args),\n            name = _onCollectCommon.name,\n            field = _onCollectCommon.field,\n            fieldMeta = _onCollectCommon.fieldMeta;\n\n        var validate = fieldMeta.validate;\n\n\n        this.fieldsStore.setFieldsAsDirty();\n\n        var newField = extends_default()({}, field, {\n          dirty: hasRules(validate)\n        });\n        this.setFields(defineProperty_default()({}, name, newField));\n      },\n      onCollectValidate: function onCollectValidate(name_, action) {\n        for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n          args[_key2 - 2] = arguments[_key2];\n        }\n\n        var _onCollectCommon2 = this.onCollectCommon(name_, action, args),\n            field = _onCollectCommon2.field,\n            fieldMeta = _onCollectCommon2.fieldMeta;\n\n        var newField = extends_default()({}, field, {\n          dirty: true\n        });\n\n        this.fieldsStore.setFieldsAsDirty();\n\n        this.validateFieldsInternal([newField], {\n          action: action,\n          options: {\n            firstFields: !!fieldMeta.validateFirst\n          }\n        });\n      },\n      getCacheBind: function getCacheBind(name, action, fn) {\n        if (!this.cachedBind[name]) {\n          this.cachedBind[name] = {};\n        }\n        var cache = this.cachedBind[name];\n        if (!cache[action] || cache[action].oriFn !== fn) {\n          cache[action] = {\n            fn: fn.bind(this, name, action),\n            oriFn: fn\n          };\n        }\n        return cache[action].fn;\n      },\n      getFieldDecorator: function getFieldDecorator(name, fieldOption) {\n        var _this2 = this;\n\n        var props = this.getFieldProps(name, fieldOption);\n        return function (fieldElem) {\n          // We should put field in record if it is rendered\n          _this2.renderFields[name] = true;\n\n          var fieldMeta = _this2.fieldsStore.getFieldMeta(name);\n          var originalProps = fieldElem.props;\n          if (false) { var defaultValuePropName, valuePropName; }\n          fieldMeta.originalProps = originalProps;\n          fieldMeta.ref = fieldElem.ref;\n          var decoratedFieldElem = external_react_default.a.cloneElement(fieldElem, extends_default()({}, props, _this2.fieldsStore.getFieldValuePropValue(fieldMeta)));\n          return supportRef(fieldElem) ? decoratedFieldElem : external_react_default.a.createElement(\n            es_FieldElemWrapper,\n            { name: name, form: _this2 },\n            decoratedFieldElem\n          );\n        };\n      },\n      getFieldProps: function getFieldProps(name) {\n        var _this3 = this;\n\n        var usersFieldOption = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n        if (!name) {\n          throw new Error('Must call `getFieldProps` with valid name string!');\n        }\n        if (false) {}\n\n        delete this.clearedFieldMetaCache[name];\n\n        var fieldOption = extends_default()({\n          name: name,\n          trigger: DEFAULT_TRIGGER,\n          valuePropName: 'value',\n          validate: []\n        }, usersFieldOption);\n\n        var rules = fieldOption.rules,\n            trigger = fieldOption.trigger,\n            _fieldOption$validate = fieldOption.validateTrigger,\n            validateTrigger = _fieldOption$validate === undefined ? trigger : _fieldOption$validate,\n            validate = fieldOption.validate;\n\n\n        var fieldMeta = this.fieldsStore.getFieldMeta(name);\n        if ('initialValue' in fieldOption) {\n          fieldMeta.initialValue = fieldOption.initialValue;\n        }\n\n        var inputProps = extends_default()({}, this.fieldsStore.getFieldValuePropValue(fieldOption), {\n          ref: this.getCacheBind(name, name + '__ref', this.saveRef)\n        });\n        if (fieldNameProp) {\n          inputProps[fieldNameProp] = formName ? formName + '_' + name : name;\n        }\n\n        var validateRules = normalizeValidateRules(validate, rules, validateTrigger);\n        var validateTriggers = getValidateTriggers(validateRules);\n        validateTriggers.forEach(function (action) {\n          if (inputProps[action]) return;\n          inputProps[action] = _this3.getCacheBind(name, action, _this3.onCollectValidate);\n        });\n\n        // make sure that the value will be collect\n        if (trigger && validateTriggers.indexOf(trigger) === -1) {\n          inputProps[trigger] = this.getCacheBind(name, trigger, this.onCollect);\n        }\n\n        var meta = extends_default()({}, fieldMeta, fieldOption, {\n          validate: validateRules\n        });\n        this.fieldsStore.setFieldMeta(name, meta);\n        if (fieldMetaProp) {\n          inputProps[fieldMetaProp] = meta;\n        }\n\n        if (fieldDataProp) {\n          inputProps[fieldDataProp] = this.fieldsStore.getField(name);\n        }\n\n        // This field is rendered, record it\n        this.renderFields[name] = true;\n\n        return inputProps;\n      },\n      getFieldInstance: function getFieldInstance(name) {\n        return this.instances[name];\n      },\n      getRules: function getRules(fieldMeta, action) {\n        var actionRules = fieldMeta.validate.filter(function (item) {\n          return !action || item.trigger.indexOf(action) >= 0;\n        }).map(function (item) {\n          return item.rules;\n        });\n        return utils_flattenArray(actionRules);\n      },\n      setFields: function setFields(maybeNestedFields, callback) {\n        var _this4 = this;\n\n        var fields = this.fieldsStore.flattenRegisteredFields(maybeNestedFields);\n        this.fieldsStore.setFields(fields);\n        if (onFieldsChange) {\n          var changedFields = Object.keys(fields).reduce(function (acc, name) {\n            return set_default()(acc, name, _this4.fieldsStore.getField(name));\n          }, {});\n          onFieldsChange(extends_default()(defineProperty_default()({}, formPropName, this.getForm()), this.props), changedFields, this.fieldsStore.getNestedAllFields());\n        }\n        this.forceUpdate(callback);\n      },\n      setFieldsValue: function setFieldsValue(changedValues, callback) {\n        var fieldsMeta = this.fieldsStore.fieldsMeta;\n\n        var values = this.fieldsStore.flattenRegisteredFields(changedValues);\n        var newFields = Object.keys(values).reduce(function (acc, name) {\n          var isRegistered = fieldsMeta[name];\n          if (false) {}\n          if (isRegistered) {\n            var value = values[name];\n            acc[name] = {\n              value: value\n            };\n          }\n          return acc;\n        }, {});\n        this.setFields(newFields, callback);\n        if (onValuesChange) {\n          var allValues = this.fieldsStore.getAllValues();\n          onValuesChange(extends_default()(defineProperty_default()({}, formPropName, this.getForm()), this.props), changedValues, allValues);\n        }\n      },\n      saveRef: function saveRef(name, _, component) {\n        if (!component) {\n          var _fieldMeta = this.fieldsStore.getFieldMeta(name);\n          if (!_fieldMeta.preserve) {\n            // after destroy, delete data\n            this.clearedFieldMetaCache[name] = {\n              field: this.fieldsStore.getField(name),\n              meta: _fieldMeta\n            };\n            this.clearField(name);\n          }\n          delete this.domFields[name];\n          return;\n        }\n        this.domFields[name] = true;\n        this.recoverClearedField(name);\n        var fieldMeta = this.fieldsStore.getFieldMeta(name);\n        if (fieldMeta) {\n          var ref = fieldMeta.ref;\n          if (ref) {\n            if (typeof ref === 'string') {\n              throw new Error('can not set ref string for ' + name);\n            } else if (typeof ref === 'function') {\n              ref(component);\n            } else if (Object.prototype.hasOwnProperty.call(ref, 'current')) {\n              ref.current = component;\n            }\n          }\n        }\n        this.instances[name] = component;\n      },\n      cleanUpUselessFields: function cleanUpUselessFields() {\n        var _this5 = this;\n\n        var fieldList = this.fieldsStore.getAllFieldsName();\n        var removedList = fieldList.filter(function (field) {\n          var fieldMeta = _this5.fieldsStore.getFieldMeta(field);\n          return !_this5.renderFields[field] && !_this5.domFields[field] && !fieldMeta.preserve;\n        });\n        if (removedList.length) {\n          removedList.forEach(this.clearField);\n        }\n        this.renderFields = {};\n      },\n      clearField: function clearField(name) {\n        this.fieldsStore.clearField(name);\n        delete this.instances[name];\n        delete this.cachedBind[name];\n      },\n      resetFields: function resetFields(ns) {\n        var _this6 = this;\n\n        var newFields = this.fieldsStore.resetFields(ns);\n        if (Object.keys(newFields).length > 0) {\n          this.setFields(newFields);\n        }\n        if (ns) {\n          var names = Array.isArray(ns) ? ns : [ns];\n          names.forEach(function (name) {\n            return delete _this6.clearedFieldMetaCache[name];\n          });\n        } else {\n          this.clearedFieldMetaCache = {};\n        }\n      },\n      recoverClearedField: function recoverClearedField(name) {\n        if (this.clearedFieldMetaCache[name]) {\n          this.fieldsStore.setFields(defineProperty_default()({}, name, this.clearedFieldMetaCache[name].field));\n          this.fieldsStore.setFieldMeta(name, this.clearedFieldMetaCache[name].meta);\n          delete this.clearedFieldMetaCache[name];\n        }\n      },\n      validateFieldsInternal: function validateFieldsInternal(fields, _ref, callback) {\n        var _this7 = this;\n\n        var fieldNames = _ref.fieldNames,\n            action = _ref.action,\n            _ref$options = _ref.options,\n            options = _ref$options === undefined ? {} : _ref$options;\n\n        var allRules = {};\n        var allValues = {};\n        var allFields = {};\n        var alreadyErrors = {};\n        fields.forEach(function (field) {\n          var name = field.name;\n          if (options.force !== true && field.dirty === false) {\n            if (field.errors) {\n              set_default()(alreadyErrors, name, { errors: field.errors });\n            }\n            return;\n          }\n          var fieldMeta = _this7.fieldsStore.getFieldMeta(name);\n          var newField = extends_default()({}, field);\n          newField.errors = undefined;\n          newField.validating = true;\n          newField.dirty = true;\n          allRules[name] = _this7.getRules(fieldMeta, action);\n          allValues[name] = newField.value;\n          allFields[name] = newField;\n        });\n        this.setFields(allFields);\n        // in case normalize\n        Object.keys(allValues).forEach(function (f) {\n          allValues[f] = _this7.fieldsStore.getFieldValue(f);\n        });\n        if (callback && isEmptyObject(allFields)) {\n          callback(isEmptyObject(alreadyErrors) ? null : alreadyErrors, this.fieldsStore.getFieldsValue(fieldNames));\n          return;\n        }\n        var validator = new es_default.a(allRules);\n        if (validateMessages) {\n          validator.messages(validateMessages);\n        }\n        validator.validate(allValues, options, function (errors) {\n          var errorsGroup = extends_default()({}, alreadyErrors);\n          if (errors && errors.length) {\n            errors.forEach(function (e) {\n              var errorFieldName = e.field;\n              var fieldName = errorFieldName;\n\n              // Handle using array validation rule.\n              // ref: https://github.com/ant-design/ant-design/issues/14275\n              Object.keys(allRules).some(function (ruleFieldName) {\n                var rules = allRules[ruleFieldName] || [];\n\n                // Exist if match rule\n                if (ruleFieldName === errorFieldName) {\n                  fieldName = ruleFieldName;\n                  return true;\n                }\n\n                // Skip if not match array type\n                if (rules.every(function (_ref2) {\n                  var type = _ref2.type;\n                  return type !== 'array';\n                }) || errorFieldName.indexOf(ruleFieldName + '.') !== 0) {\n                  return false;\n                }\n\n                // Exist if match the field name\n                var restPath = errorFieldName.slice(ruleFieldName.length + 1);\n                if (/^\\d+$/.test(restPath)) {\n                  fieldName = ruleFieldName;\n                  return true;\n                }\n\n                return false;\n              });\n\n              var field = get_default()(errorsGroup, fieldName);\n              if (typeof field !== 'object' || Array.isArray(field)) {\n                set_default()(errorsGroup, fieldName, { errors: [] });\n              }\n              var fieldErrors = get_default()(errorsGroup, fieldName.concat('.errors'));\n              fieldErrors.push(e);\n            });\n          }\n          var expired = [];\n          var nowAllFields = {};\n          Object.keys(allRules).forEach(function (name) {\n            var fieldErrors = get_default()(errorsGroup, name);\n            var nowField = _this7.fieldsStore.getField(name);\n            // avoid concurrency problems\n            if (!eq_default()(nowField.value, allValues[name])) {\n              expired.push({\n                name: name\n              });\n            } else {\n              nowField.errors = fieldErrors && fieldErrors.errors;\n              nowField.value = allValues[name];\n              nowField.validating = false;\n              nowField.dirty = false;\n              nowAllFields[name] = nowField;\n            }\n          });\n          _this7.setFields(nowAllFields);\n          if (callback) {\n            if (expired.length) {\n              expired.forEach(function (_ref3) {\n                var name = _ref3.name;\n\n                var fieldErrors = [{\n                  message: name + ' need to revalidate',\n                  field: name\n                }];\n                set_default()(errorsGroup, name, {\n                  expired: true,\n                  errors: fieldErrors\n                });\n              });\n            }\n\n            callback(isEmptyObject(errorsGroup) ? null : errorsGroup, _this7.fieldsStore.getFieldsValue(fieldNames));\n          }\n        });\n      },\n      validateFields: function validateFields(ns, opt, cb) {\n        var _this8 = this;\n\n        var pending = new Promise(function (resolve, reject) {\n          var _getParams = getParams(ns, opt, cb),\n              names = _getParams.names,\n              options = _getParams.options;\n\n          var _getParams2 = getParams(ns, opt, cb),\n              callback = _getParams2.callback;\n\n          if (!callback || typeof callback === 'function') {\n            var oldCb = callback;\n            callback = function callback(errors, values) {\n              if (oldCb) {\n                oldCb(errors, values);\n              }\n              if (errors) {\n                reject({ errors: errors, values: values });\n              } else {\n                resolve(values);\n              }\n            };\n          }\n          var fieldNames = names ? _this8.fieldsStore.getValidFieldsFullName(names) : _this8.fieldsStore.getValidFieldsName();\n          var fields = fieldNames.filter(function (name) {\n            var fieldMeta = _this8.fieldsStore.getFieldMeta(name);\n            return hasRules(fieldMeta.validate);\n          }).map(function (name) {\n            var field = _this8.fieldsStore.getField(name);\n            field.value = _this8.fieldsStore.getFieldValue(name);\n            return field;\n          });\n          if (!fields.length) {\n            callback(null, _this8.fieldsStore.getFieldsValue(fieldNames));\n            return;\n          }\n          if (!('firstFields' in options)) {\n            options.firstFields = fieldNames.filter(function (name) {\n              var fieldMeta = _this8.fieldsStore.getFieldMeta(name);\n              return !!fieldMeta.validateFirst;\n            });\n          }\n          _this8.validateFieldsInternal(fields, {\n            fieldNames: fieldNames,\n            options: options\n          }, callback);\n        });\n        pending['catch'](function (e) {\n          // eslint-disable-next-line no-console\n          if (console.error && \"production\" !== 'production') {\n            // eslint-disable-next-line no-console\n            console.error(e);\n          }\n          return e;\n        });\n        return pending;\n      },\n      isSubmitting: function isSubmitting() {\n        if (false) {}\n        return this.state.submitting;\n      },\n      submit: function submit(callback) {\n        var _this9 = this;\n\n        if (false) {}\n        var fn = function fn() {\n          _this9.setState({\n            submitting: false\n          });\n        };\n        this.setState({\n          submitting: true\n        });\n        callback(fn);\n      },\n      render: function render() {\n        var _props = this.props,\n            wrappedComponentRef = _props.wrappedComponentRef,\n            restProps = objectWithoutProperties_default()(_props, ['wrappedComponentRef']); // eslint-disable-line\n\n\n        var formProps = defineProperty_default()({}, formPropName, this.getForm());\n        if (withRef) {\n          if (false) {}\n          formProps.ref = 'wrappedComponent';\n        } else if (wrappedComponentRef) {\n          formProps.ref = wrappedComponentRef;\n        }\n        var props = mapProps.call(this, extends_default()({}, formProps, restProps));\n        return external_react_default.a.createElement(WrappedComponent, props);\n      }\n    });\n\n    return argumentContainer(Object(unsafeLifecyclesPolyfill[\"a\" /* default */])(Form), WrappedComponent);\n  };\n}\n\n/* harmony default export */ var es_createBaseForm = (createBaseForm);\n// CONCATENATED MODULE: ./node_modules/rc-form/es/createForm.js\n\n\nvar mixin = {\n  getForm: function getForm() {\n    return {\n      getFieldsValue: this.fieldsStore.getFieldsValue,\n      getFieldValue: this.fieldsStore.getFieldValue,\n      getFieldInstance: this.getFieldInstance,\n      setFieldsValue: this.setFieldsValue,\n      setFields: this.setFields,\n      setFieldsInitialValue: this.fieldsStore.setFieldsInitialValue,\n      getFieldDecorator: this.getFieldDecorator,\n      getFieldProps: this.getFieldProps,\n      getFieldsError: this.fieldsStore.getFieldsError,\n      getFieldError: this.fieldsStore.getFieldError,\n      isFieldValidating: this.fieldsStore.isFieldValidating,\n      isFieldsValidating: this.fieldsStore.isFieldsValidating,\n      isFieldsTouched: this.fieldsStore.isFieldsTouched,\n      isFieldTouched: this.fieldsStore.isFieldTouched,\n      isSubmitting: this.isSubmitting,\n      submit: this.submit,\n      validateFields: this.validateFields,\n      resetFields: this.resetFields\n    };\n  }\n};\n\nfunction createForm(options) {\n  return es_createBaseForm(options, [mixin]);\n}\n\n/* harmony default export */ var es_createForm = (createForm);\n// CONCATENATED MODULE: ./node_modules/rc-form/es/createDOMForm.js\n\n\n\n\n\n\n\n\nfunction computedStyle(el, prop) {\n  var getComputedStyle = window.getComputedStyle;\n  var style =\n  // If we have getComputedStyle\n  getComputedStyle ?\n  // Query it\n  // TODO: From CSS-Query notes, we might need (node, null) for FF\n  getComputedStyle(el) :\n\n  // Otherwise, we are in IE and use currentStyle\n  el.currentStyle;\n  if (style) {\n    return style[\n    // Switch to camelCase for CSSOM\n    // DEV: Grabbed from jQuery\n    // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194\n    // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597\n    prop.replace(/-(\\w)/gi, function (word, letter) {\n      return letter.toUpperCase();\n    })];\n  }\n  return undefined;\n}\n\nfunction getScrollableContainer(n) {\n  var node = n;\n  var nodeName = void 0;\n  /* eslint no-cond-assign:0 */\n  while ((nodeName = node.nodeName.toLowerCase()) !== 'body') {\n    var overflowY = computedStyle(node, 'overflowY');\n    // https://stackoverflow.com/a/36900407/3040605\n    if (node !== n && (overflowY === 'auto' || overflowY === 'scroll') && node.scrollHeight > node.clientHeight) {\n      return node;\n    }\n    node = node.parentNode;\n  }\n  return nodeName === 'body' ? node.ownerDocument : node;\n}\n\nvar createDOMForm_mixin = {\n  getForm: function getForm() {\n    return extends_default()({}, mixin.getForm.call(this), {\n      validateFieldsAndScroll: this.validateFieldsAndScroll\n    });\n  },\n  validateFieldsAndScroll: function validateFieldsAndScroll(ns, opt, cb) {\n    var _this = this;\n\n    var _getParams = getParams(ns, opt, cb),\n        names = _getParams.names,\n        callback = _getParams.callback,\n        options = _getParams.options;\n\n    var newCb = function newCb(error, values) {\n      if (error) {\n        var validNames = _this.fieldsStore.getValidFieldsName();\n        var firstNode = void 0;\n        var firstTop = void 0;\n\n        validNames.forEach(function (name) {\n          if (has_default()(error, name)) {\n            var instance = _this.getFieldInstance(name);\n            if (instance) {\n              var node = external_react_dom_default.a.findDOMNode(instance);\n              var top = node.getBoundingClientRect().top;\n              if (node.type !== 'hidden' && (firstTop === undefined || firstTop > top)) {\n                firstTop = top;\n                firstNode = node;\n              }\n            }\n          }\n        });\n\n        if (firstNode) {\n          var c = options.container || getScrollableContainer(firstNode);\n          dom_scroll_into_view_lib_default()(firstNode, c, extends_default()({\n            onlyScrollIfNeeded: true\n          }, options.scroll));\n        }\n      }\n\n      if (typeof callback === 'function') {\n        callback(error, values);\n      }\n    };\n\n    return this.validateFields(names, options, newCb);\n  }\n};\n\nfunction createDOMForm(option) {\n  return es_createBaseForm(extends_default()({}, option), [createDOMForm_mixin]);\n}\n\n/* harmony default export */ var es_createDOMForm = (createDOMForm);\n// CONCATENATED MODULE: ./node_modules/antd/es/grid/RowContext.js\n\nvar RowContext = lib_default()({});\n/* harmony default export */ var grid_RowContext = (RowContext);\n// CONCATENATED MODULE: ./node_modules/antd/es/grid/row.js\nfunction row_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { row_typeof = function _typeof(obj) { return typeof obj; }; } else { row_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return row_typeof(obj); }\n\nfunction row_extends() { row_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 row_extends.apply(this, arguments); }\n\nfunction row_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\nfunction row_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction row_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 row_createClass(Constructor, protoProps, staticProps) { if (protoProps) row_defineProperties(Constructor.prototype, protoProps); if (staticProps) row_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction row_possibleConstructorReturn(self, call) { if (call && (row_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return row_assertThisInitialized(self); }\n\nfunction row_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction row_getPrototypeOf(o) { row_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return row_getPrototypeOf(o); }\n\nfunction row_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) row_setPrototypeOf(subClass, superClass); }\n\nfunction row_setPrototypeOf(o, p) { row_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return row_setPrototypeOf(o, p); }\n\nvar row_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n // matchMedia polyfill for\n// https://github.com/WickyNilliams/enquire.js/issues/82\n\nvar enquire;\n\nif (typeof window !== 'undefined') {\n  var row_matchMediaPolyfill = function matchMediaPolyfill(mediaQuery) {\n    return {\n      media: mediaQuery,\n      matches: false,\n      addListener: function addListener() {},\n      removeListener: function removeListener() {}\n    };\n  };\n\n  window.matchMedia = window.matchMedia || row_matchMediaPolyfill;\n  enquire = __webpack_require__(1532);\n}\n\n\n\n\n\n\nvar RowAligns = tuple('top', 'middle', 'bottom');\nvar RowJustify = tuple('start', 'end', 'center', 'space-around', 'space-between');\nvar responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nvar responsiveMap = {\n  xs: '(max-width: 575px)',\n  sm: '(min-width: 576px)',\n  md: '(min-width: 768px)',\n  lg: '(min-width: 992px)',\n  xl: '(min-width: 1200px)',\n  xxl: '(min-width: 1600px)'\n};\n\nvar row_Row =\n/*#__PURE__*/\nfunction (_React$Component) {\n  row_inherits(Row, _React$Component);\n\n  function Row() {\n    var _this;\n\n    row_classCallCheck(this, Row);\n\n    _this = row_possibleConstructorReturn(this, row_getPrototypeOf(Row).apply(this, arguments));\n    _this.state = {\n      screens: {}\n    };\n\n    _this.renderRow = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          type = _a.type,\n          justify = _a.justify,\n          align = _a.align,\n          className = _a.className,\n          style = _a.style,\n          children = _a.children,\n          others = row_rest(_a, [\"prefixCls\", \"type\", \"justify\", \"align\", \"className\", \"style\", \"children\"]);\n\n      var prefixCls = getPrefixCls('row', customizePrefixCls);\n\n      var gutter = _this.getGutter();\n\n      var classes = classnames_default()((_classNames = {}, row_defineProperty(_classNames, prefixCls, !type), row_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type), type), row_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type, \"-\").concat(justify), type && justify), row_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type, \"-\").concat(align), type && align), _classNames), className);\n      var rowStyle = gutter > 0 ? row_extends({\n        marginLeft: gutter / -2,\n        marginRight: gutter / -2\n      }, style) : style;\n\n      var otherProps = row_extends({}, others);\n\n      delete otherProps.gutter;\n      return external_react_[\"createElement\"](grid_RowContext.Provider, {\n        value: {\n          gutter: gutter\n        }\n      }, external_react_[\"createElement\"](\"div\", row_extends({}, otherProps, {\n        className: classes,\n        style: rowStyle\n      }), children));\n    };\n\n    return _this;\n  }\n\n  row_createClass(Row, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      Object.keys(responsiveMap).map(function (screen) {\n        return enquire.register(responsiveMap[screen], {\n          match: function match() {\n            if (row_typeof(_this2.props.gutter) !== 'object') {\n              return;\n            }\n\n            _this2.setState(function (prevState) {\n              return {\n                screens: row_extends({}, prevState.screens, row_defineProperty({}, screen, true))\n              };\n            });\n          },\n          unmatch: function unmatch() {\n            if (row_typeof(_this2.props.gutter) !== 'object') {\n              return;\n            }\n\n            _this2.setState(function (prevState) {\n              return {\n                screens: row_extends({}, prevState.screens, row_defineProperty({}, screen, false))\n              };\n            });\n          },\n          // Keep a empty destory to avoid triggering unmatch when unregister\n          destroy: function destroy() {}\n        });\n      });\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      Object.keys(responsiveMap).map(function (screen) {\n        return enquire.unregister(responsiveMap[screen]);\n      });\n    }\n  }, {\n    key: \"getGutter\",\n    value: function getGutter() {\n      var gutter = this.props.gutter;\n\n      if (row_typeof(gutter) === 'object') {\n        for (var i = 0; i < responsiveArray.length; i++) {\n          var breakpoint = responsiveArray[i];\n\n          if (this.state.screens[breakpoint] && gutter[breakpoint] !== undefined) {\n            return gutter[breakpoint];\n          }\n        }\n      }\n\n      return gutter;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderRow);\n    }\n  }]);\n\n  return Row;\n}(external_react_[\"Component\"]);\n\n\nrow_Row.defaultProps = {\n  gutter: 0\n};\nrow_Row.propTypes = {\n  type: prop_types[\"oneOf\"](['flex']),\n  align: prop_types[\"oneOf\"](RowAligns),\n  justify: prop_types[\"oneOf\"](RowJustify),\n  className: prop_types[\"string\"],\n  children: prop_types[\"node\"],\n  gutter: prop_types[\"oneOfType\"]([prop_types[\"object\"], prop_types[\"number\"]]),\n  prefixCls: prop_types[\"string\"]\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/grid/col.js\nfunction col_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\nfunction col_extends() { col_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 col_extends.apply(this, arguments); }\n\nfunction col_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { col_typeof = function _typeof(obj) { return typeof obj; }; } else { col_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return col_typeof(obj); }\n\nfunction col_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction col_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 col_createClass(Constructor, protoProps, staticProps) { if (protoProps) col_defineProperties(Constructor.prototype, protoProps); if (staticProps) col_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction col_possibleConstructorReturn(self, call) { if (call && (col_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return col_assertThisInitialized(self); }\n\nfunction col_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction col_getPrototypeOf(o) { col_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return col_getPrototypeOf(o); }\n\nfunction col_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) col_setPrototypeOf(subClass, superClass); }\n\nfunction col_setPrototypeOf(o, p) { col_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return col_setPrototypeOf(o, p); }\n\nvar col_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nvar objectOrNumber = prop_types[\"oneOfType\"]([prop_types[\"object\"], prop_types[\"number\"]]);\n\nvar col_Col =\n/*#__PURE__*/\nfunction (_React$Component) {\n  col_inherits(Col, _React$Component);\n\n  function Col() {\n    var _this;\n\n    col_classCallCheck(this, Col);\n\n    _this = col_possibleConstructorReturn(this, col_getPrototypeOf(Col).apply(this, arguments));\n\n    _this.renderCol = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n      var props = _this.props;\n\n      var customizePrefixCls = props.prefixCls,\n          span = props.span,\n          order = props.order,\n          offset = props.offset,\n          push = props.push,\n          pull = props.pull,\n          className = props.className,\n          children = props.children,\n          others = col_rest(props, [\"prefixCls\", \"span\", \"order\", \"offset\", \"push\", \"pull\", \"className\", \"children\"]);\n\n      var prefixCls = getPrefixCls('col', customizePrefixCls);\n      var sizeClassObj = {};\n      ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].forEach(function (size) {\n        var _extends2;\n\n        var sizeProps = {};\n\n        if (typeof props[size] === 'number') {\n          sizeProps.span = props[size];\n        } else if (col_typeof(props[size]) === 'object') {\n          sizeProps = props[size] || {};\n        }\n\n        delete others[size];\n        sizeClassObj = col_extends({}, sizeClassObj, (_extends2 = {}, col_defineProperty(_extends2, \"\".concat(prefixCls, \"-\").concat(size, \"-\").concat(sizeProps.span), sizeProps.span !== undefined), col_defineProperty(_extends2, \"\".concat(prefixCls, \"-\").concat(size, \"-order-\").concat(sizeProps.order), sizeProps.order || sizeProps.order === 0), col_defineProperty(_extends2, \"\".concat(prefixCls, \"-\").concat(size, \"-offset-\").concat(sizeProps.offset), sizeProps.offset || sizeProps.offset === 0), col_defineProperty(_extends2, \"\".concat(prefixCls, \"-\").concat(size, \"-push-\").concat(sizeProps.push), sizeProps.push || sizeProps.push === 0), col_defineProperty(_extends2, \"\".concat(prefixCls, \"-\").concat(size, \"-pull-\").concat(sizeProps.pull), sizeProps.pull || sizeProps.pull === 0), _extends2));\n      });\n      var classes = classnames_default()((_classNames = {}, col_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(span), span !== undefined), col_defineProperty(_classNames, \"\".concat(prefixCls, \"-order-\").concat(order), order), col_defineProperty(_classNames, \"\".concat(prefixCls, \"-offset-\").concat(offset), offset), col_defineProperty(_classNames, \"\".concat(prefixCls, \"-push-\").concat(push), push), col_defineProperty(_classNames, \"\".concat(prefixCls, \"-pull-\").concat(pull), pull), _classNames), className, sizeClassObj);\n      return external_react_[\"createElement\"](grid_RowContext.Consumer, null, function (_ref2) {\n        var gutter = _ref2.gutter;\n        var style = others.style;\n\n        if (gutter > 0) {\n          style = col_extends({\n            paddingLeft: gutter / 2,\n            paddingRight: gutter / 2\n          }, style);\n        }\n\n        return external_react_[\"createElement\"](\"div\", col_extends({}, others, {\n          style: style,\n          className: classes\n        }), children);\n      });\n    };\n\n    return _this;\n  }\n\n  col_createClass(Col, [{\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderCol);\n    }\n  }]);\n\n  return Col;\n}(external_react_[\"Component\"]);\n\n\ncol_Col.propTypes = {\n  span: prop_types[\"number\"],\n  order: prop_types[\"number\"],\n  offset: prop_types[\"number\"],\n  push: prop_types[\"number\"],\n  pull: prop_types[\"number\"],\n  className: prop_types[\"string\"],\n  children: prop_types[\"node\"],\n  xs: objectOrNumber,\n  sm: objectOrNumber,\n  md: objectOrNumber,\n  lg: objectOrNumber,\n  xl: objectOrNumber,\n  xxl: objectOrNumber\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/form/constants.js\nvar FIELD_META_PROP = 'data-__meta';\nvar FIELD_DATA_PROP = 'data-__field';\n// CONCATENATED MODULE: ./node_modules/antd/es/form/context.js\n\nvar FormContext = lib_default()({\n  labelAlign: 'right',\n  vertical: false\n});\n// CONCATENATED MODULE: ./node_modules/antd/es/form/FormItem.js\nfunction FormItem_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { FormItem_typeof = function _typeof(obj) { return typeof obj; }; } else { FormItem_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return FormItem_typeof(obj); }\n\nfunction FormItem_extends() { FormItem_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 FormItem_extends.apply(this, arguments); }\n\nfunction FormItem_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\nfunction FormItem_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction FormItem_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 FormItem_createClass(Constructor, protoProps, staticProps) { if (protoProps) FormItem_defineProperties(Constructor.prototype, protoProps); if (staticProps) FormItem_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction FormItem_possibleConstructorReturn(self, call) { if (call && (FormItem_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return FormItem_assertThisInitialized(self); }\n\nfunction FormItem_getPrototypeOf(o) { FormItem_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return FormItem_getPrototypeOf(o); }\n\nfunction FormItem_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction FormItem_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) FormItem_setPrototypeOf(subClass, superClass); }\n\nfunction FormItem_setPrototypeOf(o, p) { FormItem_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return FormItem_setPrototypeOf(o, p); }\n\nfunction FormItem_toConsumableArray(arr) { return FormItem_arrayWithoutHoles(arr) || FormItem_iterableToArray(arr) || FormItem_nonIterableSpread(); }\n\nfunction FormItem_nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction FormItem_iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction FormItem_arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ValidateStatuses = tuple('success', 'warning', 'error', 'validating', '');\n\nfunction intersperseSpace(list) {\n  return list.reduce(function (current, item) {\n    return [].concat(FormItem_toConsumableArray(current), [' ', item]);\n  }, []).slice(1);\n}\n\nvar FormItem_FormItem =\n/*#__PURE__*/\nfunction (_React$Component) {\n  FormItem_inherits(FormItem, _React$Component);\n\n  function FormItem() {\n    var _this;\n\n    FormItem_classCallCheck(this, FormItem);\n\n    _this = FormItem_possibleConstructorReturn(this, FormItem_getPrototypeOf(FormItem).apply(this, arguments));\n    _this.helpShow = false;\n\n    _this.onHelpAnimEnd = function (_key, helpShow) {\n      _this.helpShow = helpShow;\n\n      if (!helpShow) {\n        _this.setState({});\n      }\n    }; // Resolve duplicated ids bug between different forms\n    // https://github.com/ant-design/ant-design/issues/7351\n\n\n    _this.onLabelClick = function (e) {\n      var label = _this.props.label;\n\n      var id = _this.props.id || _this.getId();\n\n      if (!id) {\n        return;\n      }\n\n      var formItemNode = external_react_dom_[\"findDOMNode\"](FormItem_assertThisInitialized(_this));\n      var control = formItemNode.querySelector(\"[id=\\\"\".concat(id, \"\\\"]\"));\n\n      if (control) {\n        // Only prevent in default situation\n        // Avoid preventing event in `label={<a href=\"xx\">link</a>}``\n        if (typeof label === 'string') {\n          e.preventDefault();\n        }\n\n        if (control.focus) {\n          control.focus();\n        }\n      }\n    };\n\n    _this.renderFormItem = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n      return external_react_[\"createElement\"](FormContext.Consumer, {\n        key: \"row\"\n      }, function (_ref2) {\n        var _itemClassName;\n\n        var contextColon = _ref2.colon;\n        var _this$props = _this.props,\n            customizePrefixCls = _this$props.prefixCls,\n            style = _this$props.style,\n            colon = _this$props.colon,\n            className = _this$props.className;\n        var computedColon = colon === true || contextColon !== false && colon !== false;\n        var prefixCls = getPrefixCls('form', customizePrefixCls);\n\n        var children = _this.renderChildren(prefixCls);\n\n        var itemClassName = (_itemClassName = {}, FormItem_defineProperty(_itemClassName, \"\".concat(prefixCls, \"-item\"), true), FormItem_defineProperty(_itemClassName, \"\".concat(prefixCls, \"-item-with-help\"), _this.helpShow), FormItem_defineProperty(_itemClassName, \"\".concat(prefixCls, \"-item-no-colon\"), !computedColon), FormItem_defineProperty(_itemClassName, \"\".concat(className), !!className), _itemClassName);\n        return external_react_[\"createElement\"](row_Row, {\n          className: classnames_default()(itemClassName),\n          style: style\n        }, children);\n      });\n    };\n\n    return _this;\n  }\n\n  FormItem_createClass(FormItem, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props2 = this.props,\n          children = _this$props2.children,\n          help = _this$props2.help,\n          validateStatus = _this$props2.validateStatus;\n      _util_warning(this.getControls(children, true).length <= 1 || help !== undefined || validateStatus !== undefined, 'Form.Item', 'Cannot generate `validateStatus` and `help` automatically, ' + 'while there are more than one `getFieldDecorator` in it.');\n    }\n  }, {\n    key: \"getHelpMessage\",\n    value: function getHelpMessage() {\n      var help = this.props.help;\n\n      if (help === undefined && this.getOnlyControl()) {\n        var _this$getField = this.getField(),\n            errors = _this$getField.errors;\n\n        if (errors) {\n          return intersperseSpace(errors.map(function (e, index) {\n            var node = null;\n\n            if (external_react_[\"isValidElement\"](e)) {\n              node = e;\n            } else if (external_react_[\"isValidElement\"](e.message)) {\n              node = e.message;\n            }\n\n            return node ? external_react_[\"cloneElement\"](node, {\n              key: index\n            }) : e.message;\n          }));\n        }\n\n        return '';\n      }\n\n      return help;\n    }\n  }, {\n    key: \"getControls\",\n    value: function getControls(children, recursively) {\n      var controls = [];\n      var childrenArray = external_react_[\"Children\"].toArray(children);\n\n      for (var i = 0; i < childrenArray.length; i++) {\n        if (!recursively && controls.length > 0) {\n          break;\n        }\n\n        var child = childrenArray[i];\n\n        if (child.type && (child.type === FormItem || child.type.displayName === 'FormItem')) {\n          continue;\n        }\n\n        if (!child.props) {\n          continue;\n        }\n\n        if (FIELD_META_PROP in child.props) {\n          // And means FIELD_DATA_PROP in child.props, too.\n          controls.push(child);\n        } else if (child.props.children) {\n          controls = controls.concat(this.getControls(child.props.children, recursively));\n        }\n      }\n\n      return controls;\n    }\n  }, {\n    key: \"getOnlyControl\",\n    value: function getOnlyControl() {\n      var child = this.getControls(this.props.children, false)[0];\n      return child !== undefined ? child : null;\n    }\n  }, {\n    key: \"getChildProp\",\n    value: function getChildProp(prop) {\n      var child = this.getOnlyControl();\n      return child && child.props && child.props[prop];\n    }\n  }, {\n    key: \"getId\",\n    value: function getId() {\n      return this.getChildProp('id');\n    }\n  }, {\n    key: \"getMeta\",\n    value: function getMeta() {\n      return this.getChildProp(FIELD_META_PROP);\n    }\n  }, {\n    key: \"getField\",\n    value: function getField() {\n      return this.getChildProp(FIELD_DATA_PROP);\n    }\n  }, {\n    key: \"renderHelp\",\n    value: function renderHelp(prefixCls) {\n      var help = this.getHelpMessage();\n      var children = help ? external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-explain\"),\n        key: \"help\"\n      }, help) : null;\n\n      if (children) {\n        this.helpShow = !!children;\n      }\n\n      return external_react_[\"createElement\"](Animate[\"a\" /* default */], {\n        transitionName: \"show-help\",\n        component: \"\",\n        transitionAppear: true,\n        key: \"help\",\n        onEnd: this.onHelpAnimEnd\n      }, children);\n    }\n  }, {\n    key: \"renderExtra\",\n    value: function renderExtra(prefixCls) {\n      var extra = this.props.extra;\n      return extra ? external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-extra\")\n      }, extra) : null;\n    }\n  }, {\n    key: \"getValidateStatus\",\n    value: function getValidateStatus() {\n      var onlyControl = this.getOnlyControl();\n\n      if (!onlyControl) {\n        return '';\n      }\n\n      var field = this.getField();\n\n      if (field.validating) {\n        return 'validating';\n      }\n\n      if (field.errors) {\n        return 'error';\n      }\n\n      var fieldValue = 'value' in field ? field.value : this.getMeta().initialValue;\n\n      if (fieldValue !== undefined && fieldValue !== null && fieldValue !== '') {\n        return 'success';\n      }\n\n      return '';\n    }\n  }, {\n    key: \"renderValidateWrapper\",\n    value: function renderValidateWrapper(prefixCls, c1, c2, c3) {\n      var props = this.props;\n      var onlyControl = this.getOnlyControl;\n      var validateStatus = props.validateStatus === undefined && onlyControl ? this.getValidateStatus() : props.validateStatus;\n      var classes = \"\".concat(prefixCls, \"-item-control\");\n\n      if (validateStatus) {\n        classes = classnames_default()(\"\".concat(prefixCls, \"-item-control\"), {\n          'has-feedback': props.hasFeedback || validateStatus === 'validating',\n          'has-success': validateStatus === 'success',\n          'has-warning': validateStatus === 'warning',\n          'has-error': validateStatus === 'error',\n          'is-validating': validateStatus === 'validating'\n        });\n      }\n\n      var iconType = '';\n\n      switch (validateStatus) {\n        case 'success':\n          iconType = 'check-circle';\n          break;\n\n        case 'warning':\n          iconType = 'exclamation-circle';\n          break;\n\n        case 'error':\n          iconType = 'close-circle';\n          break;\n\n        case 'validating':\n          iconType = 'loading';\n          break;\n\n        default:\n          iconType = '';\n          break;\n      }\n\n      var icon = props.hasFeedback && iconType ? external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-item-children-icon\")\n      }, external_react_[\"createElement\"](es_icon, {\n        type: iconType,\n        theme: iconType === 'loading' ? 'outlined' : 'filled'\n      })) : null;\n      return external_react_[\"createElement\"](\"div\", {\n        className: classes\n      }, external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-item-children\")\n      }, c1, icon), c2, c3);\n    }\n  }, {\n    key: \"renderWrapper\",\n    value: function renderWrapper(prefixCls, children) {\n      var _this2 = this;\n\n      return external_react_[\"createElement\"](FormContext.Consumer, {\n        key: \"wrapper\"\n      }, function (_ref3) {\n        var contextWrapperCol = _ref3.wrapperCol,\n            vertical = _ref3.vertical;\n        var wrapperCol = _this2.props.wrapperCol;\n        var mergedWrapperCol = ('wrapperCol' in _this2.props ? wrapperCol : contextWrapperCol) || {};\n        var className = classnames_default()(\"\".concat(prefixCls, \"-item-control-wrapper\"), mergedWrapperCol.className); // No pass FormContext since it's useless\n\n        return external_react_[\"createElement\"](FormContext.Provider, {\n          value: {\n            vertical: vertical\n          }\n        }, external_react_[\"createElement\"](col_Col, FormItem_extends({}, mergedWrapperCol, {\n          className: className\n        }), children));\n      });\n    }\n  }, {\n    key: \"isRequired\",\n    value: function isRequired() {\n      var required = this.props.required;\n\n      if (required !== undefined) {\n        return required;\n      }\n\n      if (this.getOnlyControl()) {\n        var meta = this.getMeta() || {};\n        var validate = meta.validate || [];\n        return validate.filter(function (item) {\n          return !!item.rules;\n        }).some(function (item) {\n          return item.rules.some(function (rule) {\n            return rule.required;\n          });\n        });\n      }\n\n      return false;\n    }\n  }, {\n    key: \"renderLabel\",\n    value: function renderLabel(prefixCls) {\n      var _this3 = this;\n\n      return external_react_[\"createElement\"](FormContext.Consumer, {\n        key: \"label\"\n      }, function (_ref4) {\n        var vertical = _ref4.vertical,\n            labelAlign = _ref4.labelAlign,\n            contextLabelCol = _ref4.labelCol,\n            contextColon = _ref4.colon;\n        var _this3$props = _this3.props,\n            label = _this3$props.label,\n            labelCol = _this3$props.labelCol,\n            colon = _this3$props.colon,\n            id = _this3$props.id;\n\n        var required = _this3.isRequired();\n\n        var mergedLabelCol = ('labelCol' in _this3.props ? labelCol : contextLabelCol) || {};\n        var labelClsBasic = \"\".concat(prefixCls, \"-item-label\");\n        var labelColClassName = classnames_default()(labelClsBasic, labelAlign === 'left' && \"\".concat(labelClsBasic, \"-left\"), mergedLabelCol.className);\n        var labelClassName = classnames_default()(FormItem_defineProperty({}, \"\".concat(prefixCls, \"-item-required\"), required));\n        var labelChildren = label; // Keep label is original where there should have no colon\n\n        var computedColon = colon === true || contextColon !== false && colon !== false;\n        var haveColon = computedColon && !vertical; // Remove duplicated user input colon\n\n        if (haveColon && typeof label === 'string' && label.trim() !== '') {\n          labelChildren = label.replace(/[：|:]\\s*$/, '');\n        }\n\n        return label ? external_react_[\"createElement\"](col_Col, FormItem_extends({}, mergedLabelCol, {\n          className: labelColClassName\n        }), external_react_[\"createElement\"](\"label\", {\n          htmlFor: id || _this3.getId(),\n          className: labelClassName,\n          title: typeof label === 'string' ? label : '',\n          onClick: _this3.onLabelClick\n        }, labelChildren)) : null;\n      });\n    }\n  }, {\n    key: \"renderChildren\",\n    value: function renderChildren(prefixCls) {\n      var children = this.props.children;\n      return [this.renderLabel(prefixCls), this.renderWrapper(prefixCls, this.renderValidateWrapper(prefixCls, children, this.renderHelp(prefixCls), this.renderExtra(prefixCls)))];\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderFormItem);\n    }\n  }]);\n\n  return FormItem;\n}(external_react_[\"Component\"]);\n\n\nFormItem_FormItem.defaultProps = {\n  hasFeedback: false\n};\nFormItem_FormItem.propTypes = {\n  prefixCls: prop_types[\"string\"],\n  label: prop_types[\"oneOfType\"]([prop_types[\"string\"], prop_types[\"node\"]]),\n  labelAlign: prop_types[\"string\"],\n  labelCol: prop_types[\"object\"],\n  help: prop_types[\"oneOfType\"]([prop_types[\"node\"], prop_types[\"bool\"]]),\n  validateStatus: prop_types[\"oneOf\"](ValidateStatuses),\n  hasFeedback: prop_types[\"bool\"],\n  wrapperCol: prop_types[\"object\"],\n  className: prop_types[\"string\"],\n  id: prop_types[\"string\"],\n  children: prop_types[\"node\"],\n  colon: prop_types[\"bool\"]\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/form/Form.js\nfunction Form_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Form_typeof = function _typeof(obj) { return typeof obj; }; } else { Form_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Form_typeof(obj); }\n\nfunction Form_extends() { Form_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 Form_extends.apply(this, arguments); }\n\nfunction Form_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\nfunction Form_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Form_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 Form_createClass(Constructor, protoProps, staticProps) { if (protoProps) Form_defineProperties(Constructor.prototype, protoProps); if (staticProps) Form_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Form_possibleConstructorReturn(self, call) { if (call && (Form_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Form_assertThisInitialized(self); }\n\nfunction Form_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Form_getPrototypeOf(o) { Form_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Form_getPrototypeOf(o); }\n\nfunction Form_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) Form_setPrototypeOf(subClass, superClass); }\n\nfunction Form_setPrototypeOf(o, p) { Form_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Form_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar FormLayouts = tuple('horizontal', 'inline', 'vertical');\n\nvar Form_Form =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Form_inherits(Form, _React$Component);\n\n  function Form(props) {\n    var _this;\n\n    Form_classCallCheck(this, Form);\n\n    _this = Form_possibleConstructorReturn(this, Form_getPrototypeOf(Form).call(this, props));\n\n    _this.renderForm = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n      var _this$props = _this.props,\n          customizePrefixCls = _this$props.prefixCls,\n          hideRequiredMark = _this$props.hideRequiredMark,\n          _this$props$className = _this$props.className,\n          className = _this$props$className === void 0 ? '' : _this$props$className,\n          layout = _this$props.layout;\n      var prefixCls = getPrefixCls('form', customizePrefixCls);\n      var formClassName = classnames_default()(prefixCls, (_classNames = {}, Form_defineProperty(_classNames, \"\".concat(prefixCls, \"-horizontal\"), layout === 'horizontal'), Form_defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), layout === 'vertical'), Form_defineProperty(_classNames, \"\".concat(prefixCls, \"-inline\"), layout === 'inline'), Form_defineProperty(_classNames, \"\".concat(prefixCls, \"-hide-required-mark\"), hideRequiredMark), _classNames), className);\n      var formProps = es(_this.props, ['prefixCls', 'className', 'layout', 'form', 'hideRequiredMark', 'wrapperCol', 'labelAlign', 'labelCol', 'colon']);\n      return external_react_[\"createElement\"](\"form\", Form_extends({}, formProps, {\n        className: formClassName\n      }));\n    };\n\n    _util_warning(!props.form, 'Form', 'It is unnecessary to pass `form` to `Form` after antd@1.7.0.');\n    return _this;\n  }\n\n  Form_createClass(Form, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          wrapperCol = _this$props2.wrapperCol,\n          labelAlign = _this$props2.labelAlign,\n          labelCol = _this$props2.labelCol,\n          layout = _this$props2.layout,\n          colon = _this$props2.colon;\n      return external_react_[\"createElement\"](FormContext.Provider, {\n        value: {\n          wrapperCol: wrapperCol,\n          labelAlign: labelAlign,\n          labelCol: labelCol,\n          vertical: layout === 'vertical',\n          colon: colon\n        }\n      }, external_react_[\"createElement\"](ConfigConsumer, null, this.renderForm));\n    }\n  }]);\n\n  return Form;\n}(external_react_[\"Component\"]);\n\n\nForm_Form.defaultProps = {\n  colon: true,\n  layout: 'horizontal',\n  hideRequiredMark: false,\n  onSubmit: function onSubmit(e) {\n    e.preventDefault();\n  }\n};\nForm_Form.propTypes = {\n  prefixCls: prop_types[\"string\"],\n  layout: prop_types[\"oneOf\"](FormLayouts),\n  children: prop_types[\"any\"],\n  onSubmit: prop_types[\"func\"],\n  hideRequiredMark: prop_types[\"bool\"],\n  colon: prop_types[\"bool\"]\n};\nForm_Form.Item = FormItem_FormItem;\nForm_Form.createFormField = createFormField;\n\nForm_Form.create = function () {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return es_createDOMForm(Form_extends({\n    fieldNameProp: 'id'\n  }, options, {\n    fieldMetaProp: FIELD_META_PROP,\n    fieldDataProp: FIELD_DATA_PROP\n  }));\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/form/index.js\n\n/* harmony default export */ var es_form = (Form_Form);\n// CONCATENATED MODULE: ./node_modules/rc-pagination/es/Pager.js\n\n\n\nvar Pager_Pager = function Pager(props) {\n  var prefixCls = props.rootPrefixCls + '-item';\n  var cls = prefixCls + ' ' + prefixCls + '-' + props.page;\n\n  if (props.active) {\n    cls = cls + ' ' + prefixCls + '-active';\n  }\n\n  if (props.className) {\n    cls = cls + ' ' + props.className;\n  }\n\n  if (!props.page) {\n    cls = cls + ' ' + prefixCls + '-disabled';\n  }\n\n  var handleClick = function handleClick() {\n    props.onClick(props.page);\n  };\n\n  var handleKeyPress = function handleKeyPress(e) {\n    props.onKeyPress(e, props.onClick, props.page);\n  };\n\n  return external_react_default.a.createElement(\n    'li',\n    {\n      title: props.showTitle ? props.page : null,\n      className: cls,\n      onClick: handleClick,\n      onKeyPress: handleKeyPress,\n      tabIndex: '0'\n    },\n    props.itemRender(props.page, 'page', external_react_default.a.createElement(\n      'a',\n      null,\n      props.page\n    ))\n  );\n};\n\nPager_Pager.propTypes = {\n  page: prop_types_default.a.number,\n  active: prop_types_default.a.bool,\n  last: prop_types_default.a.bool,\n  locale: prop_types_default.a.object,\n  className: prop_types_default.a.string,\n  showTitle: prop_types_default.a.bool,\n  rootPrefixCls: prop_types_default.a.string,\n  onClick: prop_types_default.a.func,\n  onKeyPress: prop_types_default.a.func,\n  itemRender: prop_types_default.a.func\n};\n\n/* harmony default export */ var es_Pager = (Pager_Pager);\n// CONCATENATED MODULE: ./node_modules/rc-pagination/es/KeyCode.js\n/* harmony default export */ var rc_pagination_es_KeyCode = ({\n  ZERO: 48,\n  NINE: 57,\n\n  NUMPAD_ZERO: 96,\n  NUMPAD_NINE: 105,\n\n  BACKSPACE: 8,\n  DELETE: 46,\n  ENTER: 13,\n\n  ARROW_UP: 38,\n  ARROW_DOWN: 40\n});\n// CONCATENATED MODULE: ./node_modules/rc-pagination/es/Options.js\n\n\n\n\n\n\n\n\nvar Options_Options = function (_React$Component) {\n  helpers_inherits_default()(Options, _React$Component);\n\n  function Options(props) {\n    helpers_classCallCheck_default()(this, Options);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, (Options.__proto__ || Object.getPrototypeOf(Options)).call(this, props));\n\n    _this.buildOptionText = function (value) {\n      return value + ' ' + _this.props.locale.items_per_page;\n    };\n\n    _this.changeSize = function (value) {\n      _this.props.changeSize(Number(value));\n    };\n\n    _this.handleChange = function (e) {\n      _this.setState({\n        goInputText: e.target.value\n      });\n    };\n\n    _this.go = function (e) {\n      var val = _this.state.goInputText;\n      if (val === '') {\n        return;\n      }\n      val = isNaN(val) ? _this.props.current : Number(val);\n      if (e.keyCode === rc_pagination_es_KeyCode.ENTER || e.type === 'click') {\n        _this.setState({\n          goInputText: ''\n        });\n        _this.props.quickGo(val);\n      }\n    };\n\n    _this.state = {\n      goInputText: ''\n    };\n    return _this;\n  }\n\n  helpers_createClass_default()(Options, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          pageSize = _props.pageSize,\n          pageSizeOptions = _props.pageSizeOptions,\n          locale = _props.locale,\n          rootPrefixCls = _props.rootPrefixCls,\n          changeSize = _props.changeSize,\n          quickGo = _props.quickGo,\n          goButton = _props.goButton,\n          selectComponentClass = _props.selectComponentClass,\n          buildOptionText = _props.buildOptionText,\n          selectPrefixCls = _props.selectPrefixCls;\n      var goInputText = this.state.goInputText;\n\n      var prefixCls = rootPrefixCls + '-options';\n      var Select = selectComponentClass;\n      var changeSelect = null;\n      var goInput = null;\n      var gotoButton = null;\n\n      if (!changeSize && !quickGo) {\n        return null;\n      }\n\n      if (changeSize && Select) {\n        var options = pageSizeOptions.map(function (opt, i) {\n          return external_react_default.a.createElement(\n            Select.Option,\n            { key: i, value: opt },\n            (buildOptionText || _this2.buildOptionText)(opt)\n          );\n        });\n\n        changeSelect = external_react_default.a.createElement(\n          Select,\n          {\n            prefixCls: selectPrefixCls,\n            showSearch: false,\n            className: prefixCls + '-size-changer',\n            optionLabelProp: 'children',\n            dropdownMatchSelectWidth: false,\n            value: (pageSize || pageSizeOptions[0]).toString(),\n            onChange: this.changeSize,\n            getPopupContainer: function getPopupContainer(triggerNode) {\n              return triggerNode.parentNode;\n            }\n          },\n          options\n        );\n      }\n\n      if (quickGo) {\n        if (goButton) {\n          gotoButton = typeof goButton === 'boolean' ? external_react_default.a.createElement(\n            'button',\n            {\n              type: 'button',\n              onClick: this.go,\n              onKeyUp: this.go\n            },\n            locale.jump_to_confirm\n          ) : external_react_default.a.createElement(\n            'span',\n            {\n              onClick: this.go,\n              onKeyUp: this.go\n            },\n            goButton\n          );\n        }\n        goInput = external_react_default.a.createElement(\n          'div',\n          { className: prefixCls + '-quick-jumper' },\n          locale.jump_to,\n          external_react_default.a.createElement('input', {\n            type: 'text',\n            value: goInputText,\n            onChange: this.handleChange,\n            onKeyUp: this.go\n          }),\n          locale.page,\n          gotoButton\n        );\n      }\n\n      return external_react_default.a.createElement(\n        'li',\n        { className: '' + prefixCls },\n        changeSelect,\n        goInput\n      );\n    }\n  }]);\n\n  return Options;\n}(external_react_default.a.Component);\n\nOptions_Options.propTypes = {\n  changeSize: prop_types_default.a.func,\n  quickGo: prop_types_default.a.func,\n  selectComponentClass: prop_types_default.a.func,\n  current: prop_types_default.a.number,\n  pageSizeOptions: prop_types_default.a.arrayOf(prop_types_default.a.string),\n  pageSize: prop_types_default.a.number,\n  buildOptionText: prop_types_default.a.func,\n  locale: prop_types_default.a.object,\n  rootPrefixCls: prop_types_default.a.string,\n  selectPrefixCls: prop_types_default.a.string,\n  goButton: prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.node])\n};\nOptions_Options.defaultProps = {\n  pageSizeOptions: ['10', '20', '30', '40']\n};\n\n\n/* harmony default export */ var es_Options = (Options_Options);\n// CONCATENATED MODULE: ./node_modules/rc-pagination/es/locale/zh_CN.js\n/* harmony default export */ var zh_CN = ({\n  // Options.jsx\n  items_per_page: '条/页',\n  jump_to: '跳至',\n  jump_to_confirm: '确定',\n  page: '页',\n\n  // Pagination.jsx\n  prev_page: '上一页',\n  next_page: '下一页',\n  prev_5: '向前 5 页',\n  next_5: '向后 5 页',\n  prev_3: '向前 3 页',\n  next_3: '向后 3 页'\n});\n// CONCATENATED MODULE: ./node_modules/rc-pagination/es/Pagination.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Pagination_noop() {}\n\nfunction isInteger(value) {\n  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n\nfunction defaultItemRender(page, type, element) {\n  return element;\n}\n\nfunction calculatePage(p, state, props) {\n  var pageSize = p;\n  if (typeof pageSize === 'undefined') {\n    pageSize = state.pageSize;\n  }\n  return Math.floor((props.total - 1) / pageSize) + 1;\n}\n\nvar Pagination_Pagination = function (_React$Component) {\n  helpers_inherits_default()(Pagination, _React$Component);\n\n  function Pagination(props) {\n    helpers_classCallCheck_default()(this, Pagination);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, (Pagination.__proto__ || Object.getPrototypeOf(Pagination)).call(this, props));\n\n    Pagination_initialiseProps.call(_this);\n\n    var hasOnChange = props.onChange !== Pagination_noop;\n    var hasCurrent = 'current' in props;\n    if (hasCurrent && !hasOnChange) {\n      console.warn('Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.'); // eslint-disable-line\n    }\n\n    var current = props.defaultCurrent;\n    if ('current' in props) {\n      current = props.current;\n    }\n\n    var pageSize = props.defaultPageSize;\n    if ('pageSize' in props) {\n      pageSize = props.pageSize;\n    }\n\n    _this.state = {\n      current: current,\n      currentInputValue: current,\n      pageSize: pageSize\n    };\n    return _this;\n  }\n\n  helpers_createClass_default()(Pagination, [{\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps, prevState) {\n      // When current page change, fix focused style of prev item\n      // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n      var prefixCls = this.props.prefixCls;\n\n      if (prevState.current !== this.state.current && this.paginationNode) {\n        var lastCurrentNode = this.paginationNode.querySelector('.' + prefixCls + '-item-' + prevState.current);\n        if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n          lastCurrentNode.blur();\n        }\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      // When hideOnSinglePage is true and there is only 1 page, hide the pager\n      if (this.props.hideOnSinglePage === true && this.props.total <= this.state.pageSize) {\n        return null;\n      }\n\n      var props = this.props;\n      var locale = props.locale;\n\n      var prefixCls = props.prefixCls;\n      var allPages = calculatePage(undefined, this.state, this.props);\n      var pagerList = [];\n      var jumpPrev = null;\n      var jumpNext = null;\n      var firstPager = null;\n      var lastPager = null;\n      var gotoButton = null;\n\n      var goButton = props.showQuickJumper && props.showQuickJumper.goButton;\n      var pageBufferSize = props.showLessItems ? 1 : 2;\n      var _state = this.state,\n          current = _state.current,\n          pageSize = _state.pageSize;\n\n\n      var prevPage = current - 1 > 0 ? current - 1 : 0;\n      var nextPage = current + 1 < allPages ? current + 1 : allPages;\n\n      var dataOrAriaAttributeProps = Object.keys(props).reduce(function (prev, key) {\n        if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n          prev[key] = props[key];\n        }\n        return prev;\n      }, {});\n\n      if (props.simple) {\n        if (goButton) {\n          if (typeof goButton === 'boolean') {\n            gotoButton = external_react_default.a.createElement(\n              'button',\n              {\n                type: 'button',\n                onClick: this.handleGoTO,\n                onKeyUp: this.handleGoTO\n              },\n              locale.jump_to_confirm\n            );\n          } else {\n            gotoButton = external_react_default.a.createElement(\n              'span',\n              {\n                onClick: this.handleGoTO,\n                onKeyUp: this.handleGoTO\n              },\n              goButton\n            );\n          }\n          gotoButton = external_react_default.a.createElement(\n            'li',\n            {\n              title: props.showTitle ? '' + locale.jump_to + this.state.current + '/' + allPages : null,\n              className: prefixCls + '-simple-pager'\n            },\n            gotoButton\n          );\n        }\n\n        return external_react_default.a.createElement(\n          'ul',\n          extends_default()({\n            className: prefixCls + ' ' + prefixCls + '-simple ' + props.className,\n            style: props.style,\n            ref: this.savePaginationNode\n          }, dataOrAriaAttributeProps),\n          external_react_default.a.createElement(\n            'li',\n            {\n              title: props.showTitle ? locale.prev_page : null,\n              onClick: this.prev,\n              tabIndex: this.hasPrev() ? 0 : null,\n              onKeyPress: this.runIfEnterPrev,\n              className: (this.hasPrev() ? '' : prefixCls + '-disabled') + ' ' + prefixCls + '-prev',\n              'aria-disabled': !this.hasPrev()\n            },\n            props.itemRender(prevPage, 'prev', this.getItemIcon(props.prevIcon))\n          ),\n          external_react_default.a.createElement(\n            'li',\n            {\n              title: props.showTitle ? this.state.current + '/' + allPages : null,\n              className: prefixCls + '-simple-pager'\n            },\n            external_react_default.a.createElement('input', {\n              type: 'text',\n              value: this.state.currentInputValue,\n              onKeyDown: this.handleKeyDown,\n              onKeyUp: this.handleKeyUp,\n              onChange: this.handleKeyUp,\n              size: '3'\n            }),\n            external_react_default.a.createElement(\n              'span',\n              { className: prefixCls + '-slash' },\n              '\\uFF0F'\n            ),\n            allPages\n          ),\n          external_react_default.a.createElement(\n            'li',\n            {\n              title: props.showTitle ? locale.next_page : null,\n              onClick: this.next,\n              tabIndex: this.hasPrev() ? 0 : null,\n              onKeyPress: this.runIfEnterNext,\n              className: (this.hasNext() ? '' : prefixCls + '-disabled') + ' ' + prefixCls + '-next',\n              'aria-disabled': !this.hasNext()\n            },\n            props.itemRender(nextPage, 'next', this.getItemIcon(props.nextIcon))\n          ),\n          gotoButton\n        );\n      }\n\n      if (allPages <= 5 + pageBufferSize * 2) {\n        var pagerProps = {\n          locale: locale,\n          rootPrefixCls: prefixCls,\n          onClick: this.handleChange,\n          onKeyPress: this.runIfEnter,\n          showTitle: props.showTitle,\n          itemRender: props.itemRender\n        };\n        if (!allPages) {\n          pagerList.push(external_react_default.a.createElement(es_Pager, extends_default()({}, pagerProps, {\n            key: 'noPager',\n            page: allPages,\n            className: prefixCls + '-disabled'\n          })));\n        }\n        for (var i = 1; i <= allPages; i++) {\n          var active = this.state.current === i;\n          pagerList.push(external_react_default.a.createElement(es_Pager, extends_default()({}, pagerProps, {\n            key: i,\n            page: i,\n            active: active\n          })));\n        }\n      } else {\n        var prevItemTitle = props.showLessItems ? locale.prev_3 : locale.prev_5;\n        var nextItemTitle = props.showLessItems ? locale.next_3 : locale.next_5;\n        if (props.showPrevNextJumpers) {\n          var jumpPrevClassString = prefixCls + '-jump-prev';\n          if (props.jumpPrevIcon) {\n            jumpPrevClassString += ' ' + prefixCls + '-jump-prev-custom-icon';\n          }\n          jumpPrev = external_react_default.a.createElement(\n            'li',\n            {\n              title: props.showTitle ? prevItemTitle : null,\n              key: 'prev',\n              onClick: this.jumpPrev,\n              tabIndex: '0',\n              onKeyPress: this.runIfEnterJumpPrev,\n              className: jumpPrevClassString\n            },\n            props.itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon(props.jumpPrevIcon))\n          );\n          var jumpNextClassString = prefixCls + '-jump-next';\n          if (props.jumpNextIcon) {\n            jumpNextClassString += ' ' + prefixCls + '-jump-next-custom-icon';\n          }\n          jumpNext = external_react_default.a.createElement(\n            'li',\n            {\n              title: props.showTitle ? nextItemTitle : null,\n              key: 'next',\n              tabIndex: '0',\n              onClick: this.jumpNext,\n              onKeyPress: this.runIfEnterJumpNext,\n              className: jumpNextClassString\n            },\n            props.itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon(props.jumpNextIcon))\n          );\n        }\n        lastPager = external_react_default.a.createElement(es_Pager, {\n          locale: props.locale,\n          last: true,\n          rootPrefixCls: prefixCls,\n          onClick: this.handleChange,\n          onKeyPress: this.runIfEnter,\n          key: allPages,\n          page: allPages,\n          active: false,\n          showTitle: props.showTitle,\n          itemRender: props.itemRender\n        });\n        firstPager = external_react_default.a.createElement(es_Pager, {\n          locale: props.locale,\n          rootPrefixCls: prefixCls,\n          onClick: this.handleChange,\n          onKeyPress: this.runIfEnter,\n          key: 1,\n          page: 1,\n          active: false,\n          showTitle: props.showTitle,\n          itemRender: props.itemRender\n        });\n\n        var left = Math.max(1, current - pageBufferSize);\n        var right = Math.min(current + pageBufferSize, allPages);\n\n        if (current - 1 <= pageBufferSize) {\n          right = 1 + pageBufferSize * 2;\n        }\n\n        if (allPages - current <= pageBufferSize) {\n          left = allPages - pageBufferSize * 2;\n        }\n\n        for (var _i = left; _i <= right; _i++) {\n          var _active = current === _i;\n          pagerList.push(external_react_default.a.createElement(es_Pager, {\n            locale: props.locale,\n            rootPrefixCls: prefixCls,\n            onClick: this.handleChange,\n            onKeyPress: this.runIfEnter,\n            key: _i,\n            page: _i,\n            active: _active,\n            showTitle: props.showTitle,\n            itemRender: props.itemRender\n          }));\n        }\n\n        if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n          pagerList[0] = external_react_default.a.cloneElement(pagerList[0], {\n            className: prefixCls + '-item-after-jump-prev'\n          });\n          pagerList.unshift(jumpPrev);\n        }\n        if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n          pagerList[pagerList.length - 1] = external_react_default.a.cloneElement(pagerList[pagerList.length - 1], {\n            className: prefixCls + '-item-before-jump-next'\n          });\n          pagerList.push(jumpNext);\n        }\n\n        if (left !== 1) {\n          pagerList.unshift(firstPager);\n        }\n        if (right !== allPages) {\n          pagerList.push(lastPager);\n        }\n      }\n\n      var totalText = null;\n\n      if (props.showTotal) {\n        totalText = external_react_default.a.createElement(\n          'li',\n          { className: prefixCls + '-total-text' },\n          props.showTotal(props.total, [props.total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > props.total ? props.total : current * pageSize])\n        );\n      }\n      var prevDisabled = !this.hasPrev() || !allPages;\n      var nextDisabled = !this.hasNext() || !allPages;\n      return external_react_default.a.createElement(\n        'ul',\n        extends_default()({\n          className: prefixCls + ' ' + props.className,\n          style: props.style,\n          unselectable: 'unselectable',\n          ref: this.savePaginationNode\n        }, dataOrAriaAttributeProps),\n        totalText,\n        external_react_default.a.createElement(\n          'li',\n          {\n            title: props.showTitle ? locale.prev_page : null,\n            onClick: this.prev,\n            tabIndex: prevDisabled ? null : 0,\n            onKeyPress: this.runIfEnterPrev,\n            className: (!prevDisabled ? '' : prefixCls + '-disabled') + ' ' + prefixCls + '-prev',\n            'aria-disabled': prevDisabled\n          },\n          props.itemRender(prevPage, 'prev', this.getItemIcon(props.prevIcon))\n        ),\n        pagerList,\n        external_react_default.a.createElement(\n          'li',\n          {\n            title: props.showTitle ? locale.next_page : null,\n            onClick: this.next,\n            tabIndex: nextDisabled ? null : 0,\n            onKeyPress: this.runIfEnterNext,\n            className: (!nextDisabled ? '' : prefixCls + '-disabled') + ' ' + prefixCls + '-next',\n            'aria-disabled': nextDisabled\n          },\n          props.itemRender(nextPage, 'next', this.getItemIcon(props.nextIcon))\n        ),\n        external_react_default.a.createElement(es_Options, {\n          locale: props.locale,\n          rootPrefixCls: prefixCls,\n          selectComponentClass: props.selectComponentClass,\n          selectPrefixCls: props.selectPrefixCls,\n          changeSize: this.props.showSizeChanger ? this.changePageSize : null,\n          current: this.state.current,\n          pageSize: this.state.pageSize,\n          pageSizeOptions: this.props.pageSizeOptions,\n          quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null,\n          goButton: goButton\n        })\n      );\n    }\n  }], [{\n    key: 'getDerivedStateFromProps',\n    value: function getDerivedStateFromProps(props, prevState) {\n      var newState = {};\n\n      if ('current' in props) {\n        newState.current = props.current;\n\n        if (props.current !== prevState.current) {\n          newState.currentInputValue = newState.current;\n        }\n      }\n\n      if ('pageSize' in props && props.pageSize !== prevState.pageSize) {\n        var current = prevState.current;\n        var newCurrent = calculatePage(props.pageSize, prevState, props);\n        current = current > newCurrent ? newCurrent : current;\n\n        if (!('current' in props)) {\n          newState.current = current;\n          newState.currentInputValue = current;\n        }\n        newState.pageSize = props.pageSize;\n      }\n\n      return newState;\n    }\n\n    /**\n     * computed icon node that need to be rendered.\n     * @param {React.ReactNode | React.ComponentType<PaginationProps>} icon received icon.\n     * @returns {React.ReactNode}\n     */\n\n  }]);\n\n  return Pagination;\n}(external_react_default.a.Component);\n\nPagination_Pagination.propTypes = {\n  prefixCls: prop_types_default.a.string,\n  current: prop_types_default.a.number,\n  defaultCurrent: prop_types_default.a.number,\n  total: prop_types_default.a.number,\n  pageSize: prop_types_default.a.number,\n  defaultPageSize: prop_types_default.a.number,\n  onChange: prop_types_default.a.func,\n  hideOnSinglePage: prop_types_default.a.bool,\n  showSizeChanger: prop_types_default.a.bool,\n  showLessItems: prop_types_default.a.bool,\n  onShowSizeChange: prop_types_default.a.func,\n  selectComponentClass: prop_types_default.a.func,\n  showPrevNextJumpers: prop_types_default.a.bool,\n  showQuickJumper: prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.object]),\n  showTitle: prop_types_default.a.bool,\n  pageSizeOptions: prop_types_default.a.arrayOf(prop_types_default.a.string),\n  showTotal: prop_types_default.a.func,\n  locale: prop_types_default.a.object,\n  style: prop_types_default.a.object,\n  itemRender: prop_types_default.a.func,\n  prevIcon: prop_types_default.a.oneOfType([prop_types_default.a.func, prop_types_default.a.node]),\n  nextIcon: prop_types_default.a.oneOfType([prop_types_default.a.func, prop_types_default.a.node]),\n  jumpPrevIcon: prop_types_default.a.oneOfType([prop_types_default.a.func, prop_types_default.a.node]),\n  jumpNextIcon: prop_types_default.a.oneOfType([prop_types_default.a.func, prop_types_default.a.node])\n};\nPagination_Pagination.defaultProps = {\n  defaultCurrent: 1,\n  total: 0,\n  defaultPageSize: 10,\n  onChange: Pagination_noop,\n  className: '',\n  selectPrefixCls: 'rc-select',\n  prefixCls: 'rc-pagination',\n  selectComponentClass: null,\n  hideOnSinglePage: false,\n  showPrevNextJumpers: true,\n  showQuickJumper: false,\n  showSizeChanger: false,\n  showLessItems: false,\n  showTitle: true,\n  onShowSizeChange: Pagination_noop,\n  locale: zh_CN,\n  style: {},\n  itemRender: defaultItemRender\n};\n\nvar Pagination_initialiseProps = function _initialiseProps() {\n  var _this2 = this;\n\n  this.getJumpPrevPage = function () {\n    return Math.max(1, _this2.state.current - (_this2.props.showLessItems ? 3 : 5));\n  };\n\n  this.getJumpNextPage = function () {\n    return Math.min(calculatePage(undefined, _this2.state, _this2.props), _this2.state.current + (_this2.props.showLessItems ? 3 : 5));\n  };\n\n  this.getItemIcon = function (icon) {\n    var prefixCls = _this2.props.prefixCls;\n\n    var iconNode = icon || external_react_default.a.createElement('a', { className: prefixCls + '-item-link' });\n    if (typeof icon === 'function') {\n      iconNode = external_react_default.a.createElement(icon, extends_default()({}, _this2.props));\n    }\n    return iconNode;\n  };\n\n  this.savePaginationNode = function (node) {\n    _this2.paginationNode = node;\n  };\n\n  this.isValid = function (page) {\n    return isInteger(page) && page >= 1 && page !== _this2.state.current;\n  };\n\n  this.shouldDisplayQuickJumper = function () {\n    var _props = _this2.props,\n        showQuickJumper = _props.showQuickJumper,\n        pageSize = _props.pageSize,\n        total = _props.total;\n\n    if (total <= pageSize) {\n      return false;\n    }\n    return showQuickJumper;\n  };\n\n  this.handleKeyDown = function (e) {\n    if (e.keyCode === rc_pagination_es_KeyCode.ARROW_UP || e.keyCode === rc_pagination_es_KeyCode.ARROW_DOWN) {\n      e.preventDefault();\n    }\n  };\n\n  this.handleKeyUp = function (e) {\n    var inputValue = e.target.value;\n    var currentInputValue = _this2.state.currentInputValue;\n    var value = void 0;\n\n    if (inputValue === '') {\n      value = inputValue;\n    } else if (isNaN(Number(inputValue))) {\n      value = currentInputValue;\n    } else {\n      value = Number(inputValue);\n    }\n\n    if (value !== currentInputValue) {\n      _this2.setState({\n        currentInputValue: value\n      });\n    }\n\n    if (e.keyCode === rc_pagination_es_KeyCode.ENTER) {\n      _this2.handleChange(value);\n    } else if (e.keyCode === rc_pagination_es_KeyCode.ARROW_UP) {\n      _this2.handleChange(value - 1);\n    } else if (e.keyCode === rc_pagination_es_KeyCode.ARROW_DOWN) {\n      _this2.handleChange(value + 1);\n    }\n  };\n\n  this.changePageSize = function (size) {\n    var current = _this2.state.current;\n    var newCurrent = calculatePage(size, _this2.state, _this2.props);\n    current = current > newCurrent ? newCurrent : current;\n    // fix the issue:\n    // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n    if (newCurrent === 0) {\n      current = _this2.state.current;\n    }\n\n    if (typeof size === 'number') {\n      if (!('pageSize' in _this2.props)) {\n        _this2.setState({\n          pageSize: size\n        });\n      }\n      if (!('current' in _this2.props)) {\n        _this2.setState({\n          current: current,\n          currentInputValue: current\n        });\n      }\n    }\n    _this2.props.onShowSizeChange(current, size);\n  };\n\n  this.handleChange = function (p) {\n    var page = p;\n    if (_this2.isValid(page)) {\n      var currentPage = calculatePage(undefined, _this2.state, _this2.props);\n      if (page > currentPage) {\n        page = currentPage;\n      }\n\n      if (!('current' in _this2.props)) {\n        _this2.setState({\n          current: page,\n          currentInputValue: page\n        });\n      }\n\n      var pageSize = _this2.state.pageSize;\n      _this2.props.onChange(page, pageSize);\n\n      return page;\n    }\n\n    return _this2.state.current;\n  };\n\n  this.prev = function () {\n    if (_this2.hasPrev()) {\n      _this2.handleChange(_this2.state.current - 1);\n    }\n  };\n\n  this.next = function () {\n    if (_this2.hasNext()) {\n      _this2.handleChange(_this2.state.current + 1);\n    }\n  };\n\n  this.jumpPrev = function () {\n    _this2.handleChange(_this2.getJumpPrevPage());\n  };\n\n  this.jumpNext = function () {\n    _this2.handleChange(_this2.getJumpNextPage());\n  };\n\n  this.hasPrev = function () {\n    return _this2.state.current > 1;\n  };\n\n  this.hasNext = function () {\n    return _this2.state.current < calculatePage(undefined, _this2.state, _this2.props);\n  };\n\n  this.runIfEnter = function (event, callback) {\n    for (var _len = arguments.length, restParams = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      restParams[_key - 2] = arguments[_key];\n    }\n\n    if (event.key === 'Enter' || event.charCode === 13) {\n      callback.apply(undefined, restParams);\n    }\n  };\n\n  this.runIfEnterPrev = function (e) {\n    _this2.runIfEnter(e, _this2.prev);\n  };\n\n  this.runIfEnterNext = function (e) {\n    _this2.runIfEnter(e, _this2.next);\n  };\n\n  this.runIfEnterJumpPrev = function (e) {\n    _this2.runIfEnter(e, _this2.jumpPrev);\n  };\n\n  this.runIfEnterJumpNext = function (e) {\n    _this2.runIfEnter(e, _this2.jumpNext);\n  };\n\n  this.handleGoTO = function (e) {\n    if (e.keyCode === rc_pagination_es_KeyCode.ENTER || e.type === 'click') {\n      _this2.handleChange(_this2.state.currentInputValue);\n    }\n  };\n};\n\nObject(react_lifecycles_compat_es[\"polyfill\"])(Pagination_Pagination);\n\n/* harmony default export */ var es_Pagination = (Pagination_Pagination);\n// CONCATENATED MODULE: ./node_modules/rc-pagination/es/index.js\n\n// CONCATENATED MODULE: ./node_modules/rc-select/es/OptGroup.js\nfunction OptGroup_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction OptGroup_possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return OptGroup_assertThisInitialized(self); }\n\nfunction OptGroup_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction OptGroup_getPrototypeOf(o) { OptGroup_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return OptGroup_getPrototypeOf(o); }\n\nfunction OptGroup_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) OptGroup_setPrototypeOf(subClass, superClass); }\n\nfunction OptGroup_setPrototypeOf(o, p) { OptGroup_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return OptGroup_setPrototypeOf(o, p); }\n\n\n\nvar OptGroup =\n/*#__PURE__*/\nfunction (_Component) {\n  OptGroup_inherits(OptGroup, _Component);\n\n  function OptGroup() {\n    OptGroup_classCallCheck(this, OptGroup);\n\n    return OptGroup_possibleConstructorReturn(this, OptGroup_getPrototypeOf(OptGroup).apply(this, arguments));\n  }\n\n  return OptGroup;\n}(external_react_[\"Component\"]);\n\n\nOptGroup.isSelectOptGroup = true;\n// CONCATENATED MODULE: ./node_modules/rc-select/es/Option.js\nfunction Option_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Option_possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return Option_assertThisInitialized(self); }\n\nfunction Option_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Option_getPrototypeOf(o) { Option_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Option_getPrototypeOf(o); }\n\nfunction Option_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) Option_setPrototypeOf(subClass, superClass); }\n\nfunction Option_setPrototypeOf(o, p) { Option_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Option_setPrototypeOf(o, p); }\n\n\n\n\nvar Option =\n/*#__PURE__*/\nfunction (_Component) {\n  Option_inherits(Option, _Component);\n\n  function Option() {\n    Option_classCallCheck(this, Option);\n\n    return Option_possibleConstructorReturn(this, Option_getPrototypeOf(Option).apply(this, arguments));\n  }\n\n  return Option;\n}(external_react_[\"Component\"]);\n\n\nOption.propTypes = {\n  value: prop_types[\"oneOfType\"]([prop_types[\"string\"], prop_types[\"number\"]])\n};\nOption.isSelectOption = true;\n// CONCATENATED MODULE: ./node_modules/rc-select/es/PropTypes.js\nfunction PropTypes_toConsumableArray(arr) { return PropTypes_arrayWithoutHoles(arr) || PropTypes_iterableToArray(arr) || PropTypes_nonIterableSpread(); }\n\nfunction PropTypes_nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction PropTypes_iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction PropTypes_arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n\n\nfunction propsValueType() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  var props = args[0],\n      propName = args[1],\n      componentName = args[2],\n      rest = args.slice(3);\n  var basicType = prop_types[\"oneOfType\"]([prop_types[\"string\"], prop_types[\"number\"]]);\n  var labelInValueShape = prop_types[\"shape\"]({\n    key: basicType.isRequired,\n    label: prop_types[\"node\"]\n  });\n\n  if (props.labelInValue) {\n    var validate = prop_types[\"oneOfType\"]([prop_types[\"arrayOf\"](labelInValueShape), labelInValueShape]);\n    var error = validate.apply(void 0, [props, propName, componentName].concat(PropTypes_toConsumableArray(rest)));\n\n    if (error) {\n      return new Error(\"Invalid prop `\".concat(propName, \"` supplied to `\").concat(componentName, \"`, \") + \"when you set `labelInValue` to `true`, `\".concat(propName, \"` should in \") + \"shape of `{ key: string | number, label?: ReactNode }`.\");\n    }\n  } else if ((props.mode === 'multiple' || props.mode === 'tags' || props.multiple || props.tags) && props[propName] === '') {\n    return new Error(\"Invalid prop `\".concat(propName, \"` of type `string` supplied to `\").concat(componentName, \"`, \") + \"expected `array` when `multiple` or `tags` is `true`.\");\n  } else {\n    var _validate = prop_types[\"oneOfType\"]([prop_types[\"arrayOf\"](basicType), basicType]);\n\n    return _validate.apply(void 0, [props, propName, componentName].concat(PropTypes_toConsumableArray(rest)));\n  }\n\n  return null;\n}\n\nvar SelectPropTypes = {\n  id: prop_types[\"string\"],\n  defaultActiveFirstOption: prop_types[\"bool\"],\n  multiple: prop_types[\"bool\"],\n  filterOption: prop_types[\"any\"],\n  children: prop_types[\"any\"],\n  showSearch: prop_types[\"bool\"],\n  disabled: prop_types[\"bool\"],\n  allowClear: prop_types[\"bool\"],\n  showArrow: prop_types[\"bool\"],\n  tags: prop_types[\"bool\"],\n  prefixCls: prop_types[\"string\"],\n  className: prop_types[\"string\"],\n  transitionName: prop_types[\"string\"],\n  optionLabelProp: prop_types[\"string\"],\n  optionFilterProp: prop_types[\"string\"],\n  animation: prop_types[\"string\"],\n  choiceTransitionName: prop_types[\"string\"],\n  open: prop_types[\"bool\"],\n  defaultOpen: prop_types[\"bool\"],\n  onChange: prop_types[\"func\"],\n  onBlur: prop_types[\"func\"],\n  onFocus: prop_types[\"func\"],\n  onSelect: prop_types[\"func\"],\n  onSearch: prop_types[\"func\"],\n  onPopupScroll: prop_types[\"func\"],\n  onMouseEnter: prop_types[\"func\"],\n  onMouseLeave: prop_types[\"func\"],\n  onInputKeyDown: prop_types[\"func\"],\n  placeholder: prop_types[\"any\"],\n  onDeselect: prop_types[\"func\"],\n  labelInValue: prop_types[\"bool\"],\n  loading: prop_types[\"bool\"],\n  value: propsValueType,\n  defaultValue: propsValueType,\n  dropdownStyle: prop_types[\"object\"],\n  maxTagTextLength: prop_types[\"number\"],\n  maxTagCount: prop_types[\"number\"],\n  maxTagPlaceholder: prop_types[\"oneOfType\"]([prop_types[\"node\"], prop_types[\"func\"]]),\n  tokenSeparators: prop_types[\"arrayOf\"](prop_types[\"string\"]),\n  getInputElement: prop_types[\"func\"],\n  showAction: prop_types[\"arrayOf\"](prop_types[\"string\"]),\n  clearIcon: prop_types[\"node\"],\n  inputIcon: prop_types[\"node\"],\n  removeIcon: prop_types[\"node\"],\n  menuItemSelectedIcon: prop_types[\"oneOfType\"]([prop_types[\"func\"], prop_types[\"node\"]]),\n  dropdownRender: prop_types[\"func\"]\n};\n/* harmony default export */ var PropTypes = (SelectPropTypes);\n// EXTERNAL MODULE: ./node_modules/component-classes/index.js\nvar component_classes = __webpack_require__(165);\nvar component_classes_default = /*#__PURE__*/__webpack_require__.n(component_classes);\n\n// EXTERNAL MODULE: ./node_modules/rc-util/es/Children/toArray.js\nvar Children_toArray = __webpack_require__(275);\n\n// CONCATENATED MODULE: ./node_modules/rc-select/es/util.js\n\nfunction toTitle(title) {\n  if (typeof title === 'string') {\n    return title;\n  }\n\n  return '';\n}\nfunction getValuePropValue(child) {\n  if (!child) {\n    return null;\n  }\n\n  var props = child.props;\n\n  if ('value' in props) {\n    return props.value;\n  }\n\n  if (child.key) {\n    return child.key;\n  }\n\n  if (child.type && child.type.isSelectOptGroup && props.label) {\n    return props.label;\n  }\n\n  throw new Error(\"Need at least a key or a value or a label (only for OptGroup) for \".concat(child));\n}\nfunction getPropValue(child, prop) {\n  if (prop === 'value') {\n    return getValuePropValue(child);\n  }\n\n  return child.props[prop];\n}\nfunction isMultiple(props) {\n  return props.multiple;\n}\nfunction isCombobox(props) {\n  return props.combobox;\n}\nfunction isMultipleOrTags(props) {\n  return props.multiple || props.tags;\n}\nfunction isMultipleOrTagsOrCombobox(props) {\n  return isMultipleOrTags(props) || isCombobox(props);\n}\nfunction isSingleMode(props) {\n  return !isMultipleOrTagsOrCombobox(props);\n}\nfunction util_toArray(value) {\n  var ret = value;\n\n  if (value === undefined) {\n    ret = [];\n  } else if (!Array.isArray(value)) {\n    ret = [value];\n  }\n\n  return ret;\n}\nfunction getMapKey(value) {\n  return \"\".concat(typeof value, \"-\").concat(value);\n}\nfunction preventDefaultEvent(e) {\n  e.preventDefault();\n}\nfunction findIndexInValueBySingleValue(value, singleValue) {\n  var index = -1;\n\n  if (value) {\n    for (var i = 0; i < value.length; i++) {\n      if (value[i] === singleValue) {\n        index = i;\n        break;\n      }\n    }\n  }\n\n  return index;\n}\nfunction getLabelFromPropsValue(value, key) {\n  var label;\n  value = util_toArray(value);\n\n  if (value) {\n    // tslint:disable-next-line:prefer-for-of\n    for (var i = 0; i < value.length; i++) {\n      if (value[i].key === key) {\n        label = value[i].label;\n        break;\n      }\n    }\n  }\n\n  return label;\n}\nfunction getSelectKeys(menuItems, value) {\n  if (value === null || value === undefined) {\n    return [];\n  }\n\n  var selectedKeys = [];\n  external_react_default.a.Children.forEach(menuItems, function (item) {\n    var type = item.type;\n\n    if (type.isMenuItemGroup) {\n      selectedKeys = selectedKeys.concat(getSelectKeys(item.props.children, value));\n    } else {\n      var itemValue = getValuePropValue(item);\n      var itemKey = item.key;\n\n      if (findIndexInValueBySingleValue(value, itemValue) !== -1 && itemKey) {\n        selectedKeys.push(itemKey);\n      }\n    }\n  });\n  return selectedKeys;\n}\nvar UNSELECTABLE_STYLE = {\n  userSelect: 'none',\n  WebkitUserSelect: 'none'\n};\nvar UNSELECTABLE_ATTRIBUTE = {\n  unselectable: 'on'\n};\nfunction findFirstMenuItem(children) {\n  // tslint:disable-next-line:prefer-for-of\n  for (var i = 0; i < children.length; i++) {\n    var child = children[i];\n\n    if (child.type.isMenuItemGroup) {\n      var found = findFirstMenuItem(child.props.children);\n\n      if (found) {\n        return found;\n      }\n    } else if (!child.props.disabled) {\n      return child;\n    }\n  }\n\n  return null;\n}\nfunction includesSeparators(str, separators) {\n  // tslint:disable-next-line:prefer-for-of\n  for (var i = 0; i < separators.length; ++i) {\n    if (str.lastIndexOf(separators[i]) > 0) {\n      return true;\n    }\n  }\n\n  return false;\n}\nfunction splitBySeparators(str, separators) {\n  var reg = new RegExp(\"[\".concat(separators.join(), \"]\"));\n  return str.split(reg).filter(function (token) {\n    return token;\n  });\n}\nfunction defaultFilterFn(input, child) {\n  if (child.props.disabled) {\n    return false;\n  }\n\n  var value = util_toArray(getPropValue(child, this.props.optionFilterProp)).join('');\n  return value.toLowerCase().indexOf(input.toLowerCase()) > -1;\n}\nfunction validateOptionValue(value, props) {\n  if (isSingleMode(props) || isMultiple(props)) {\n    return;\n  }\n\n  if (typeof value !== 'string') {\n    throw new Error(\"Invalid `value` of type `\".concat(typeof value, \"` supplied to Option, \") + \"expected `string` when `tags/combobox` is `true`.\");\n  }\n}\nfunction util_saveRef(instance, name) {\n  return function (node) {\n    instance[name] = node;\n  };\n}\nfunction generateUUID() {\n  if (false) {}\n\n  var d = new Date().getTime();\n  var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n    // tslint:disable-next-line:no-bitwise\n    var r = (d + Math.random() * 16) % 16 | 0;\n    d = Math.floor(d / 16); // tslint:disable-next-line:no-bitwise\n\n    return (c === 'x' ? r : r & 0x7 | 0x8).toString(16);\n  });\n  return uuid;\n}\n// CONCATENATED MODULE: ./node_modules/rc-select/es/DropdownMenu.js\nfunction DropdownMenu_extends() { DropdownMenu_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 DropdownMenu_extends.apply(this, arguments); }\n\nfunction DropdownMenu_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction DropdownMenu_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 DropdownMenu_createClass(Constructor, protoProps, staticProps) { if (protoProps) DropdownMenu_defineProperties(Constructor.prototype, protoProps); if (staticProps) DropdownMenu_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction DropdownMenu_possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return DropdownMenu_assertThisInitialized(self); }\n\nfunction DropdownMenu_getPrototypeOf(o) { DropdownMenu_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return DropdownMenu_getPrototypeOf(o); }\n\nfunction DropdownMenu_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction DropdownMenu_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) DropdownMenu_setPrototypeOf(subClass, superClass); }\n\nfunction DropdownMenu_setPrototypeOf(o, p) { DropdownMenu_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return DropdownMenu_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\nvar DropdownMenu_DropdownMenu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  DropdownMenu_inherits(DropdownMenu, _React$Component);\n\n  function DropdownMenu(props) {\n    var _this;\n\n    DropdownMenu_classCallCheck(this, DropdownMenu);\n\n    _this = DropdownMenu_possibleConstructorReturn(this, DropdownMenu_getPrototypeOf(DropdownMenu).call(this, props));\n    _this.rafInstance = {\n      cancel: function cancel() {\n        return null;\n      }\n    };\n    _this.lastVisible = false;\n\n    _this.scrollActiveItemToView = function () {\n      // scroll into view\n      var itemComponent = Object(external_react_dom_[\"findDOMNode\"])(_this.firstActiveItem);\n      var _this$props = _this.props,\n          visible = _this$props.visible,\n          firstActiveValue = _this$props.firstActiveValue;\n      var value = _this.props.value;\n\n      if (!itemComponent || !visible) {\n        return;\n      }\n\n      var scrollIntoViewOpts = {\n        onlyScrollIfNeeded: true\n      };\n\n      if ((!value || value.length === 0) && firstActiveValue) {\n        scrollIntoViewOpts.alignWithTop = true;\n      } // Delay to scroll since current frame item position is not ready when pre view is by filter\n      // https://github.com/ant-design/ant-design/issues/11268#issuecomment-406634462\n\n\n      _this.rafInstance = raf_default()(function () {\n        dom_scroll_into_view_lib_default()(itemComponent, Object(external_react_dom_[\"findDOMNode\"])(_this.menuRef), scrollIntoViewOpts);\n      });\n    };\n\n    _this.renderMenu = function () {\n      var _this$props2 = _this.props,\n          menuItems = _this$props2.menuItems,\n          menuItemSelectedIcon = _this$props2.menuItemSelectedIcon,\n          defaultActiveFirstOption = _this$props2.defaultActiveFirstOption,\n          prefixCls = _this$props2.prefixCls,\n          multiple = _this$props2.multiple,\n          onMenuSelect = _this$props2.onMenuSelect,\n          inputValue = _this$props2.inputValue,\n          backfillValue = _this$props2.backfillValue,\n          onMenuDeselect = _this$props2.onMenuDeselect,\n          visible = _this$props2.visible;\n      var firstActiveValue = _this.props.firstActiveValue;\n\n      if (menuItems && menuItems.length) {\n        var menuProps = {};\n\n        if (multiple) {\n          menuProps.onDeselect = onMenuDeselect;\n          menuProps.onSelect = onMenuSelect;\n        } else {\n          menuProps.onClick = onMenuSelect;\n        }\n\n        var value = _this.props.value;\n        var selectedKeys = getSelectKeys(menuItems, value);\n        var activeKeyProps = {};\n        var defaultActiveFirst = defaultActiveFirstOption;\n        var clonedMenuItems = menuItems;\n\n        if (selectedKeys.length || firstActiveValue) {\n          if (visible && !_this.lastVisible) {\n            activeKeyProps.activeKey = selectedKeys[0] || firstActiveValue;\n          } else if (!visible) {\n            // Do not trigger auto active since we already have selectedKeys\n            if (selectedKeys[0]) {\n              defaultActiveFirst = false;\n            }\n\n            activeKeyProps.activeKey = undefined;\n          }\n\n          var foundFirst = false; // set firstActiveItem via cloning menus\n          // for scroll into view\n\n          var clone = function clone(item) {\n            var key = item.key;\n\n            if (!foundFirst && selectedKeys.indexOf(key) !== -1 || !foundFirst && !selectedKeys.length && firstActiveValue.indexOf(item.key) !== -1) {\n              foundFirst = true;\n              return external_react_[\"cloneElement\"](item, {\n                ref: function ref(_ref) {\n                  _this.firstActiveItem = _ref;\n                }\n              });\n            }\n\n            return item;\n          };\n\n          clonedMenuItems = menuItems.map(function (item) {\n            if (item.type.isMenuItemGroup) {\n              var children = Object(Children_toArray[\"a\" /* default */])(item.props.children).map(clone);\n              return external_react_[\"cloneElement\"](item, {}, children);\n            }\n\n            return clone(item);\n          });\n        } else {\n          // Clear firstActiveItem when dropdown menu items was empty\n          // Avoid `Unable to find node on an unmounted component`\n          // https://github.com/ant-design/ant-design/issues/10774\n          _this.firstActiveItem = null;\n        } // clear activeKey when inputValue change\n\n\n        var lastValue = value && value[value.length - 1];\n\n        if (inputValue !== _this.lastInputValue && (!lastValue || lastValue !== backfillValue)) {\n          activeKeyProps.activeKey = '';\n        }\n\n        return external_react_[\"createElement\"](rc_menu_es, DropdownMenu_extends({\n          ref: _this.saveMenuRef,\n          style: _this.props.dropdownMenuStyle,\n          defaultActiveFirst: defaultActiveFirst,\n          role: \"listbox\",\n          itemIcon: multiple ? menuItemSelectedIcon : null\n        }, activeKeyProps, {\n          multiple: multiple\n        }, menuProps, {\n          selectedKeys: selectedKeys,\n          prefixCls: \"\".concat(prefixCls, \"-menu\")\n        }), clonedMenuItems);\n      }\n\n      return null;\n    };\n\n    _this.lastInputValue = props.inputValue;\n    _this.saveMenuRef = util_saveRef(DropdownMenu_assertThisInitialized(_this), 'menuRef');\n    return _this;\n  }\n\n  DropdownMenu_createClass(DropdownMenu, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.scrollActiveItemToView();\n      this.lastVisible = this.props.visible;\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      if (!nextProps.visible) {\n        this.lastVisible = false;\n      } // freeze when hide\n\n\n      return this.props.visible && !nextProps.visible || nextProps.visible || nextProps.inputValue !== this.props.inputValue;\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var props = this.props;\n\n      if (!prevProps.visible && props.visible) {\n        this.scrollActiveItemToView();\n      }\n\n      this.lastVisible = props.visible;\n      this.lastInputValue = props.inputValue;\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.rafInstance && this.rafInstance.cancel) {\n        this.rafInstance.cancel();\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var renderMenu = this.renderMenu();\n      return renderMenu ? external_react_[\"createElement\"](\"div\", {\n        style: {\n          overflow: 'auto',\n          transform: 'translateZ(0)'\n        },\n        id: this.props.ariaId,\n        onFocus: this.props.onPopupFocus,\n        onMouseDown: preventDefaultEvent,\n        onScroll: this.props.onPopupScroll\n      }, renderMenu) : null;\n    }\n  }]);\n\n  return DropdownMenu;\n}(external_react_[\"Component\"]);\n\n\nDropdownMenu_DropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu_DropdownMenu.propTypes = {\n  ariaId: prop_types[\"string\"],\n  defaultActiveFirstOption: prop_types[\"bool\"],\n  value: prop_types[\"any\"],\n  dropdownMenuStyle: prop_types[\"object\"],\n  multiple: prop_types[\"bool\"],\n  onPopupFocus: prop_types[\"func\"],\n  onPopupScroll: prop_types[\"func\"],\n  onMenuDeSelect: prop_types[\"func\"],\n  onMenuSelect: prop_types[\"func\"],\n  prefixCls: prop_types[\"string\"],\n  menuItems: prop_types[\"any\"],\n  inputValue: prop_types[\"string\"],\n  visible: prop_types[\"bool\"],\n  firstActiveValue: prop_types[\"string\"],\n  menuItemSelectedIcon: prop_types[\"oneOfType\"]([prop_types[\"func\"], prop_types[\"node\"]])\n};\n// CONCATENATED MODULE: ./node_modules/rc-select/es/SelectTrigger.js\nfunction SelectTrigger_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\nfunction SelectTrigger_extends() { SelectTrigger_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 SelectTrigger_extends.apply(this, arguments); }\n\nfunction SelectTrigger_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction SelectTrigger_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 SelectTrigger_createClass(Constructor, protoProps, staticProps) { if (protoProps) SelectTrigger_defineProperties(Constructor.prototype, protoProps); if (staticProps) SelectTrigger_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction SelectTrigger_possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return SelectTrigger_assertThisInitialized(self); }\n\nfunction SelectTrigger_getPrototypeOf(o) { SelectTrigger_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SelectTrigger_getPrototypeOf(o); }\n\nfunction SelectTrigger_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction SelectTrigger_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) SelectTrigger_setPrototypeOf(subClass, superClass); }\n\nfunction SelectTrigger_setPrototypeOf(o, p) { SelectTrigger_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SelectTrigger_setPrototypeOf(o, p); }\n\nvar SelectTrigger_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\nrc_trigger_es[\"a\" /* default */].displayName = 'Trigger';\nvar BUILT_IN_PLACEMENTS = {\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    offset: [0, 4],\n    overflow: {\n      adjustX: 0,\n      adjustY: 1\n    }\n  },\n  topLeft: {\n    points: ['bl', 'tl'],\n    offset: [0, -4],\n    overflow: {\n      adjustX: 0,\n      adjustY: 1\n    }\n  }\n};\n\nvar SelectTrigger_SelectTrigger =\n/*#__PURE__*/\nfunction (_React$Component) {\n  SelectTrigger_inherits(SelectTrigger, _React$Component);\n\n  function SelectTrigger(props) {\n    var _this;\n\n    SelectTrigger_classCallCheck(this, SelectTrigger);\n\n    _this = SelectTrigger_possibleConstructorReturn(this, SelectTrigger_getPrototypeOf(SelectTrigger).call(this, props));\n    _this.dropdownMenuRef = null;\n\n    _this.setDropdownWidth = function () {\n      var dom = external_react_dom_[\"findDOMNode\"](SelectTrigger_assertThisInitialized(_this));\n      var width = dom.offsetWidth;\n\n      if (width !== _this.state.dropdownWidth) {\n        _this.setState({\n          dropdownWidth: width\n        });\n      }\n    };\n\n    _this.getInnerMenu = function () {\n      return _this.dropdownMenuRef && _this.dropdownMenuRef.menuRef;\n    };\n\n    _this.getPopupDOMNode = function () {\n      return _this.triggerRef.getPopupDomNode();\n    };\n\n    _this.getDropdownElement = function (newProps) {\n      var props = _this.props;\n      var dropdownRender = props.dropdownRender,\n          ariaId = props.ariaId;\n      var menuNode = external_react_[\"createElement\"](DropdownMenu_DropdownMenu, SelectTrigger_extends({\n        ref: _this.saveDropdownMenuRef\n      }, newProps, {\n        ariaId: ariaId,\n        prefixCls: _this.getDropdownPrefixCls(),\n        onMenuSelect: props.onMenuSelect,\n        onMenuDeselect: props.onMenuDeselect,\n        onPopupScroll: props.onPopupScroll,\n        value: props.value,\n        backfillValue: props.backfillValue,\n        firstActiveValue: props.firstActiveValue,\n        defaultActiveFirstOption: props.defaultActiveFirstOption,\n        dropdownMenuStyle: props.dropdownMenuStyle,\n        menuItemSelectedIcon: props.menuItemSelectedIcon\n      }));\n\n      if (dropdownRender) {\n        return dropdownRender(menuNode, props);\n      }\n\n      return null;\n    };\n\n    _this.getDropdownTransitionName = function () {\n      var props = _this.props;\n      var transitionName = props.transitionName;\n\n      if (!transitionName && props.animation) {\n        transitionName = \"\".concat(_this.getDropdownPrefixCls(), \"-\").concat(props.animation);\n      }\n\n      return transitionName;\n    };\n\n    _this.getDropdownPrefixCls = function () {\n      return \"\".concat(_this.props.prefixCls, \"-dropdown\");\n    };\n\n    _this.saveDropdownMenuRef = util_saveRef(SelectTrigger_assertThisInitialized(_this), 'dropdownMenuRef');\n    _this.saveTriggerRef = util_saveRef(SelectTrigger_assertThisInitialized(_this), 'triggerRef');\n    _this.state = {\n      dropdownWidth: 0\n    };\n    return _this;\n  }\n\n  SelectTrigger_createClass(SelectTrigger, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.setDropdownWidth();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.setDropdownWidth();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _popupClassName;\n\n      var _a = this.props,\n          onPopupFocus = _a.onPopupFocus,\n          empty = _a.empty,\n          props = SelectTrigger_rest(_a, [\"onPopupFocus\", \"empty\"]);\n\n      var multiple = props.multiple,\n          visible = props.visible,\n          inputValue = props.inputValue,\n          dropdownAlign = props.dropdownAlign,\n          disabled = props.disabled,\n          showSearch = props.showSearch,\n          dropdownClassName = props.dropdownClassName,\n          dropdownStyle = props.dropdownStyle,\n          dropdownMatchSelectWidth = props.dropdownMatchSelectWidth;\n      var dropdownPrefixCls = this.getDropdownPrefixCls();\n      var popupClassName = (_popupClassName = {}, SelectTrigger_defineProperty(_popupClassName, dropdownClassName, !!dropdownClassName), SelectTrigger_defineProperty(_popupClassName, \"\".concat(dropdownPrefixCls, \"--\").concat(multiple ? 'multiple' : 'single'), 1), SelectTrigger_defineProperty(_popupClassName, \"\".concat(dropdownPrefixCls, \"--empty\"), empty), _popupClassName);\n      var popupElement = this.getDropdownElement({\n        menuItems: props.options,\n        onPopupFocus: onPopupFocus,\n        multiple: multiple,\n        inputValue: inputValue,\n        visible: visible\n      });\n      var hideAction;\n\n      if (disabled) {\n        hideAction = [];\n      } else if (isSingleMode(props) && !showSearch) {\n        hideAction = ['click'];\n      } else {\n        hideAction = ['blur'];\n      }\n\n      var popupStyle = SelectTrigger_extends({}, dropdownStyle);\n\n      var widthProp = dropdownMatchSelectWidth ? 'width' : 'minWidth';\n\n      if (this.state.dropdownWidth) {\n        popupStyle[widthProp] = \"\".concat(this.state.dropdownWidth, \"px\");\n      }\n\n      return external_react_[\"createElement\"](rc_trigger_es[\"a\" /* default */], SelectTrigger_extends({}, props, {\n        showAction: disabled ? [] : this.props.showAction,\n        hideAction: hideAction,\n        ref: this.saveTriggerRef,\n        popupPlacement: \"bottomLeft\",\n        builtinPlacements: BUILT_IN_PLACEMENTS,\n        prefixCls: dropdownPrefixCls,\n        popupTransitionName: this.getDropdownTransitionName(),\n        onPopupVisibleChange: props.onDropdownVisibleChange,\n        popup: popupElement,\n        popupAlign: dropdownAlign,\n        popupVisible: visible,\n        getPopupContainer: props.getPopupContainer,\n        popupClassName: node_modules_classnames_default()(popupClassName),\n        popupStyle: popupStyle\n      }), props.children);\n    }\n  }]);\n\n  return SelectTrigger;\n}(external_react_[\"Component\"]);\n\n\nSelectTrigger_SelectTrigger.defaultProps = {\n  dropdownRender: function dropdownRender(menu) {\n    return menu;\n  }\n};\nSelectTrigger_SelectTrigger.propTypes = {\n  onPopupFocus: prop_types[\"func\"],\n  onPopupScroll: prop_types[\"func\"],\n  dropdownMatchSelectWidth: prop_types[\"bool\"],\n  dropdownAlign: prop_types[\"object\"],\n  visible: prop_types[\"bool\"],\n  disabled: prop_types[\"bool\"],\n  showSearch: prop_types[\"bool\"],\n  dropdownClassName: prop_types[\"string\"],\n  multiple: prop_types[\"bool\"],\n  inputValue: prop_types[\"string\"],\n  filterOption: prop_types[\"any\"],\n  options: prop_types[\"any\"],\n  prefixCls: prop_types[\"string\"],\n  popupClassName: prop_types[\"string\"],\n  children: prop_types[\"any\"],\n  showAction: prop_types[\"arrayOf\"](prop_types[\"string\"]),\n  menuItemSelectedIcon: prop_types[\"oneOfType\"]([prop_types[\"func\"], prop_types[\"node\"]]),\n  dropdownRender: prop_types[\"func\"],\n  ariaId: prop_types[\"string\"]\n};\nSelectTrigger_SelectTrigger.displayName = 'SelectTrigger';\n// CONCATENATED MODULE: ./node_modules/rc-select/es/Select.js\nfunction Select_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\nfunction Select_extends() { Select_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 Select_extends.apply(this, arguments); }\n\nfunction Select_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Select_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 Select_createClass(Constructor, protoProps, staticProps) { if (protoProps) Select_defineProperties(Constructor.prototype, protoProps); if (staticProps) Select_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Select_possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return Select_assertThisInitialized(self); }\n\nfunction Select_getPrototypeOf(o) { Select_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Select_getPrototypeOf(o); }\n\nfunction Select_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Select_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) Select_setPrototypeOf(subClass, superClass); }\n\nfunction Select_setPrototypeOf(o, p) { Select_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Select_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SELECT_EMPTY_VALUE_KEY = 'RC_SELECT_EMPTY_VALUE_KEY';\n\nvar Select_noop = function noop() {\n  return null;\n};\n\nfunction chaining() {\n  for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n    fns[_key] = arguments[_key];\n  }\n\n  return function () {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    // tslint:disable-next-line:prefer-for-of\n    for (var i = 0; i < fns.length; i++) {\n      if (fns[i] && typeof fns[i] === 'function') {\n        fns[i].apply(chaining, args);\n      }\n    }\n  };\n}\n\nvar Select_Select =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Select_inherits(Select, _React$Component);\n\n  function Select(props) {\n    var _this;\n\n    Select_classCallCheck(this, Select);\n\n    _this = Select_possibleConstructorReturn(this, Select_getPrototypeOf(Select).call(this, props));\n    _this.inputRef = null;\n    _this.inputMirrorRef = null;\n    _this.topCtrlRef = null;\n    _this.selectTriggerRef = null;\n    _this.rootRef = null;\n    _this.selectionRef = null;\n    _this.dropdownContainer = null;\n    _this.blurTimer = null;\n    _this.focusTimer = null; // tslint:disable-next-line:variable-name\n\n    _this._focused = false; // tslint:disable-next-line:variable-name\n\n    _this._mouseDown = false; // tslint:disable-next-line:variable-name\n\n    _this._options = []; // tslint:disable-next-line:variable-name\n\n    _this._empty = false;\n\n    _this.onInputChange = function (event) {\n      var tokenSeparators = _this.props.tokenSeparators;\n      var val = event.target.value;\n\n      if (isMultipleOrTags(_this.props) && tokenSeparators.length && includesSeparators(val, tokenSeparators)) {\n        var nextValue = _this.getValueByInput(val);\n\n        if (nextValue !== undefined) {\n          _this.fireChange(nextValue);\n        }\n\n        _this.setOpenState(false, true);\n\n        _this.setInputValue('', false);\n\n        return;\n      }\n\n      _this.setInputValue(val);\n\n      _this.setState({\n        open: true\n      });\n\n      if (isCombobox(_this.props)) {\n        _this.fireChange([val]);\n      }\n    };\n\n    _this.onDropdownVisibleChange = function (open) {\n      if (open && !_this._focused) {\n        _this.clearBlurTime();\n\n        _this.timeoutFocus();\n\n        _this._focused = true;\n\n        _this.updateFocusClassName();\n      }\n\n      _this.setOpenState(open);\n    }; // combobox ignore\n\n\n    _this.onKeyDown = function (event) {\n      var open = _this.state.open;\n      var disabled = _this.props.disabled;\n\n      if (disabled) {\n        return;\n      }\n\n      var keyCode = event.keyCode;\n\n      if (open && !_this.getInputDOMNode()) {\n        _this.onInputKeyDown(event);\n      } else if (keyCode === KeyCode[\"a\" /* default */].ENTER || keyCode === KeyCode[\"a\" /* default */].DOWN) {\n        if (!open) {\n          _this.setOpenState(true);\n        }\n\n        event.preventDefault();\n      } else if (keyCode === KeyCode[\"a\" /* default */].SPACE) {\n        // Not block space if popup is shown\n        if (!open) {\n          _this.setOpenState(true);\n\n          event.preventDefault();\n        }\n      }\n    };\n\n    _this.onInputKeyDown = function (event) {\n      var _this$props = _this.props,\n          disabled = _this$props.disabled,\n          combobox = _this$props.combobox;\n\n      if (disabled) {\n        return;\n      }\n\n      var state = _this.state;\n\n      var isRealOpen = _this.getRealOpenState(state); // magic code\n\n\n      var keyCode = event.keyCode;\n\n      if (isMultipleOrTags(_this.props) && !event.target.value && keyCode === KeyCode[\"a\" /* default */].BACKSPACE) {\n        event.preventDefault();\n        var value = state.value;\n\n        if (value.length) {\n          _this.removeSelected(value[value.length - 1]);\n        }\n\n        return;\n      }\n\n      if (keyCode === KeyCode[\"a\" /* default */].DOWN) {\n        if (!state.open) {\n          _this.openIfHasChildren();\n\n          event.preventDefault();\n          event.stopPropagation();\n          return;\n        }\n      } else if (keyCode === KeyCode[\"a\" /* default */].ENTER && state.open) {\n        // Aviod trigger form submit when select item\n        // https://github.com/ant-design/ant-design/issues/10861\n        // https://github.com/ant-design/ant-design/issues/14544\n        if (isRealOpen || !combobox) {\n          event.preventDefault();\n        }\n      } else if (keyCode === KeyCode[\"a\" /* default */].ESC) {\n        if (state.open) {\n          _this.setOpenState(false);\n\n          event.preventDefault();\n          event.stopPropagation();\n        }\n\n        return;\n      }\n\n      if (isRealOpen && _this.selectTriggerRef) {\n        var menu = _this.selectTriggerRef.getInnerMenu();\n\n        if (menu && menu.onKeyDown(event, _this.handleBackfill)) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n      }\n    };\n\n    _this.onMenuSelect = function (_ref) {\n      var item = _ref.item;\n\n      if (!item) {\n        return;\n      }\n\n      var value = _this.state.value;\n      var props = _this.props;\n      var selectedValue = getValuePropValue(item);\n      var lastValue = value[value.length - 1];\n\n      _this.fireSelect(selectedValue);\n\n      if (isMultipleOrTags(props)) {\n        if (findIndexInValueBySingleValue(value, selectedValue) !== -1) {\n          return;\n        }\n\n        value = value.concat([selectedValue]);\n      } else {\n        if (!isCombobox(props) && lastValue !== undefined && lastValue === selectedValue && selectedValue !== _this.state.backfillValue) {\n          _this.setOpenState(false, true);\n\n          return;\n        }\n\n        value = [selectedValue];\n\n        _this.setOpenState(false, true);\n      }\n\n      _this.fireChange(value);\n\n      var inputValue = isCombobox(props) ? getPropValue(item, props.optionLabelProp) : '';\n\n      if (props.autoClearSearchValue) {\n        _this.setInputValue(inputValue, false);\n      }\n    };\n\n    _this.onMenuDeselect = function (_ref2) {\n      var item = _ref2.item,\n          domEvent = _ref2.domEvent;\n\n      if (domEvent.type === 'keydown' && domEvent.keyCode === KeyCode[\"a\" /* default */].ENTER) {\n        _this.removeSelected(getValuePropValue(item));\n\n        return;\n      }\n\n      if (domEvent.type === 'click') {\n        _this.removeSelected(getValuePropValue(item));\n      }\n\n      var props = _this.props;\n\n      if (props.autoClearSearchValue) {\n        _this.setInputValue('', false);\n      }\n    };\n\n    _this.onArrowClick = function (e) {\n      e.stopPropagation();\n      e.preventDefault();\n\n      if (!_this.props.disabled) {\n        _this.setOpenState(!_this.state.open, !_this.state.open);\n      }\n    };\n\n    _this.onPlaceholderClick = function () {\n      if (_this.getInputDOMNode && _this.getInputDOMNode()) {\n        _this.getInputDOMNode().focus();\n      }\n    };\n\n    _this.onOuterFocus = function (e) {\n      if (_this.props.disabled) {\n        e.preventDefault();\n        return;\n      }\n\n      _this.clearBlurTime();\n\n      if (!isMultipleOrTagsOrCombobox(_this.props) && e.target === _this.getInputDOMNode()) {\n        return;\n      }\n\n      if (_this._focused) {\n        return;\n      }\n\n      _this._focused = true;\n\n      _this.updateFocusClassName(); // only effect multiple or tag mode\n\n\n      if (!isMultipleOrTags(_this.props) || !_this._mouseDown) {\n        _this.timeoutFocus();\n      }\n    };\n\n    _this.onPopupFocus = function () {\n      // fix ie scrollbar, focus element again\n      _this.maybeFocus(true, true);\n    };\n\n    _this.onOuterBlur = function (e) {\n      if (_this.props.disabled) {\n        e.preventDefault();\n        return;\n      }\n\n      _this.blurTimer = window.setTimeout(function () {\n        _this._focused = false;\n\n        _this.updateFocusClassName();\n\n        var props = _this.props;\n        var value = _this.state.value;\n        var inputValue = _this.state.inputValue;\n\n        if (isSingleMode(props) && props.showSearch && inputValue && props.defaultActiveFirstOption) {\n          var options = _this._options || [];\n\n          if (options.length) {\n            var firstOption = findFirstMenuItem(options);\n\n            if (firstOption) {\n              value = [getValuePropValue(firstOption)];\n\n              _this.fireChange(value);\n            }\n          }\n        } else if (isMultipleOrTags(props) && inputValue) {\n          if (_this._mouseDown) {\n            // need update dropmenu when not blur\n            _this.setInputValue('');\n          } else {\n            // why not use setState?\n            // https://github.com/ant-design/ant-design/issues/14262\n            _this.state.inputValue = '';\n\n            if (_this.getInputDOMNode && _this.getInputDOMNode()) {\n              _this.getInputDOMNode().value = '';\n            }\n          }\n\n          var tmpValue = _this.getValueByInput(inputValue);\n\n          if (tmpValue !== undefined) {\n            value = tmpValue;\n\n            _this.fireChange(value);\n          }\n        } // if click the rest space of Select in multiple mode\n\n\n        if (isMultipleOrTags(props) && _this._mouseDown) {\n          _this.maybeFocus(true, true);\n\n          _this._mouseDown = false;\n          return;\n        }\n\n        _this.setOpenState(false);\n\n        if (props.onBlur) {\n          props.onBlur(_this.getVLForOnChange(value));\n        }\n      }, 10);\n    };\n\n    _this.onClearSelection = function (event) {\n      var props = _this.props;\n      var state = _this.state;\n\n      if (props.disabled) {\n        return;\n      }\n\n      var inputValue = state.inputValue;\n      var value = state.value;\n      event.stopPropagation();\n\n      if (inputValue || value.length) {\n        if (value.length) {\n          _this.fireChange([]);\n        }\n\n        _this.setOpenState(false, true);\n\n        if (inputValue) {\n          _this.setInputValue('');\n        }\n      }\n    };\n\n    _this.onChoiceAnimationLeave = function () {\n      _this.forcePopupAlign();\n    };\n\n    _this.getOptionInfoBySingleValue = function (value, optionsInfo) {\n      var info;\n      optionsInfo = optionsInfo || _this.state.optionsInfo;\n\n      if (optionsInfo[getMapKey(value)]) {\n        info = optionsInfo[getMapKey(value)];\n      }\n\n      if (info) {\n        return info;\n      }\n\n      var defaultLabel = value;\n\n      if (_this.props.labelInValue) {\n        var label = getLabelFromPropsValue(_this.props.value, value);\n\n        if (label !== undefined) {\n          defaultLabel = label;\n        }\n      }\n\n      var defaultInfo = {\n        option: external_react_[\"createElement\"](Option, {\n          value: value,\n          key: value\n        }, value),\n        value: value,\n        label: defaultLabel\n      };\n      return defaultInfo;\n    };\n\n    _this.getOptionBySingleValue = function (value) {\n      var _this$getOptionInfoBy = _this.getOptionInfoBySingleValue(value),\n          option = _this$getOptionInfoBy.option;\n\n      return option;\n    };\n\n    _this.getOptionsBySingleValue = function (values) {\n      return values.map(function (value) {\n        return _this.getOptionBySingleValue(value);\n      });\n    };\n\n    _this.getValueByLabel = function (label) {\n      if (label === undefined) {\n        return null;\n      }\n\n      var value = null;\n      Object.keys(_this.state.optionsInfo).forEach(function (key) {\n        var info = _this.state.optionsInfo[key];\n        var disabled = info.disabled;\n\n        if (disabled) {\n          return;\n        }\n\n        var oldLable = util_toArray(info.label);\n\n        if (oldLable && oldLable.join('') === label) {\n          value = info.value;\n        }\n      });\n      return value;\n    };\n\n    _this.getVLBySingleValue = function (value) {\n      if (_this.props.labelInValue) {\n        return {\n          key: value,\n          label: _this.getLabelBySingleValue(value)\n        };\n      }\n\n      return value;\n    };\n\n    _this.getVLForOnChange = function (vlsS) {\n      var vls = vlsS;\n\n      if (vls !== undefined) {\n        if (!_this.props.labelInValue) {\n          vls = vls.map(function (v) {\n            return v;\n          });\n        } else {\n          vls = vls.map(function (vl) {\n            return {\n              key: vl,\n              label: _this.getLabelBySingleValue(vl)\n            };\n          });\n        }\n\n        return isMultipleOrTags(_this.props) ? vls : vls[0];\n      }\n\n      return vls;\n    };\n\n    _this.getLabelBySingleValue = function (value, optionsInfo) {\n      var _this$getOptionInfoBy2 = _this.getOptionInfoBySingleValue(value, optionsInfo),\n          label = _this$getOptionInfoBy2.label;\n\n      return label;\n    };\n\n    _this.getDropdownContainer = function () {\n      if (!_this.dropdownContainer) {\n        _this.dropdownContainer = document.createElement('div');\n        document.body.appendChild(_this.dropdownContainer);\n      }\n\n      return _this.dropdownContainer;\n    };\n\n    _this.getPlaceholderElement = function () {\n      var props = _this.props;\n      var state = _this.state;\n      var hidden = false;\n\n      if (state.inputValue) {\n        hidden = true;\n      }\n\n      var value = state.value;\n\n      if (value.length) {\n        hidden = true;\n      }\n\n      if (isCombobox(props) && value.length === 1 && state.value && !state.value[0]) {\n        hidden = false;\n      }\n\n      var placeholder = props.placeholder;\n\n      if (placeholder) {\n        return external_react_[\"createElement\"](\"div\", Select_extends({\n          onMouseDown: preventDefaultEvent,\n          style: Select_extends({\n            display: hidden ? 'none' : 'block'\n          }, UNSELECTABLE_STYLE)\n        }, UNSELECTABLE_ATTRIBUTE, {\n          onClick: _this.onPlaceholderClick,\n          className: \"\".concat(props.prefixCls, \"-selection__placeholder\")\n        }), placeholder);\n      }\n\n      return null;\n    };\n\n    _this.getInputElement = function () {\n      var props = _this.props;\n      var defaultInput = external_react_[\"createElement\"](\"input\", {\n        id: props.id,\n        autoComplete: \"off\"\n      }); // tslint:disable-next-line:typedef-whitespace\n\n      var inputElement = props.getInputElement ? props.getInputElement() : defaultInput;\n      var inputCls = node_modules_classnames_default()(inputElement.props.className, Select_defineProperty({}, \"\".concat(props.prefixCls, \"-search__field\"), true)); // https://github.com/ant-design/ant-design/issues/4992#issuecomment-281542159\n      // Add space to the end of the inputValue as the width measurement tolerance\n\n      return external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(props.prefixCls, \"-search__field__wrap\")\n      }, external_react_[\"cloneElement\"](inputElement, {\n        ref: _this.saveInputRef,\n        onChange: _this.onInputChange,\n        onKeyDown: chaining(_this.onInputKeyDown, inputElement.props.onKeyDown, _this.props.onInputKeyDown),\n        value: _this.state.inputValue,\n        disabled: props.disabled,\n        className: inputCls\n      }), external_react_[\"createElement\"](\"span\", {\n        ref: _this.saveInputMirrorRef,\n        className: \"\".concat(props.prefixCls, \"-search__field__mirror\")\n      }, _this.state.inputValue, \"\\xA0\"));\n    };\n\n    _this.getInputDOMNode = function () {\n      return _this.topCtrlRef ? _this.topCtrlRef.querySelector('input,textarea,div[contentEditable]') : _this.inputRef;\n    };\n\n    _this.getInputMirrorDOMNode = function () {\n      return _this.inputMirrorRef;\n    };\n\n    _this.getPopupDOMNode = function () {\n      if (_this.selectTriggerRef) {\n        return _this.selectTriggerRef.getPopupDOMNode();\n      }\n    };\n\n    _this.getPopupMenuComponent = function () {\n      if (_this.selectTriggerRef) {\n        return _this.selectTriggerRef.getInnerMenu();\n      }\n    };\n\n    _this.setOpenState = function (open, needFocus) {\n      var props = _this.props;\n      var state = _this.state;\n\n      if (state.open === open) {\n        _this.maybeFocus(open, !!needFocus);\n\n        return;\n      }\n\n      if (_this.props.onDropdownVisibleChange) {\n        _this.props.onDropdownVisibleChange(open);\n      }\n\n      var nextState = {\n        open: open,\n        backfillValue: ''\n      }; // clear search input value when open is false in singleMode.\n\n      if (!open && isSingleMode(props) && props.showSearch) {\n        _this.setInputValue('', false);\n      }\n\n      if (!open) {\n        _this.maybeFocus(open, !!needFocus);\n      }\n\n      _this.setState(Select_extends({\n        open: open\n      }, nextState), function () {\n        if (open) {\n          _this.maybeFocus(open, !!needFocus);\n        }\n      });\n    };\n\n    _this.setInputValue = function (inputValue) {\n      var fireSearch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      if (inputValue !== _this.state.inputValue) {\n        _this.setState({\n          inputValue: inputValue\n        }, _this.forcePopupAlign);\n\n        if (fireSearch && _this.props.onSearch) {\n          _this.props.onSearch(inputValue);\n        }\n      }\n    };\n\n    _this.getValueByInput = function (str) {\n      var _this$props2 = _this.props,\n          multiple = _this$props2.multiple,\n          tokenSeparators = _this$props2.tokenSeparators;\n      var nextValue = _this.state.value;\n      var hasNewValue = false;\n      splitBySeparators(str, tokenSeparators).forEach(function (label) {\n        var selectedValue = [label];\n\n        if (multiple) {\n          var value = _this.getValueByLabel(label);\n\n          if (value && findIndexInValueBySingleValue(nextValue, value) === -1) {\n            nextValue = nextValue.concat(value);\n            hasNewValue = true;\n\n            _this.fireSelect(value);\n          }\n        } else if (findIndexInValueBySingleValue(nextValue, label) === -1) {\n          nextValue = nextValue.concat(selectedValue);\n          hasNewValue = true;\n\n          _this.fireSelect(label);\n        }\n      });\n      return hasNewValue ? nextValue : undefined;\n    };\n\n    _this.getRealOpenState = function (state) {\n      // tslint:disable-next-line:variable-name\n      var _open = _this.props.open;\n\n      if (typeof _open === 'boolean') {\n        return _open;\n      }\n\n      var open = (state || _this.state).open;\n      var options = _this._options || [];\n\n      if (isMultipleOrTagsOrCombobox(_this.props) || !_this.props.showSearch) {\n        if (open && !options.length) {\n          open = false;\n        }\n      }\n\n      return open;\n    };\n\n    _this.markMouseDown = function () {\n      _this._mouseDown = true;\n    };\n\n    _this.markMouseLeave = function () {\n      _this._mouseDown = false;\n    };\n\n    _this.handleBackfill = function (item) {\n      if (!_this.props.backfill || !(isSingleMode(_this.props) || isCombobox(_this.props))) {\n        return;\n      }\n\n      var key = getValuePropValue(item);\n\n      if (isCombobox(_this.props)) {\n        _this.setInputValue(key, false);\n      }\n\n      _this.setState({\n        value: [key],\n        backfillValue: key\n      });\n    };\n\n    _this.filterOption = function (input, child) {\n      var defaultFilter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultFilterFn;\n      var value = _this.state.value;\n      var lastValue = value[value.length - 1];\n\n      if (!input || lastValue && lastValue === _this.state.backfillValue) {\n        return true;\n      }\n\n      var filterFn = _this.props.filterOption;\n\n      if ('filterOption' in _this.props) {\n        if (filterFn === true) {\n          filterFn = defaultFilter.bind(Select_assertThisInitialized(_this));\n        }\n      } else {\n        filterFn = defaultFilter.bind(Select_assertThisInitialized(_this));\n      }\n\n      if (!filterFn) {\n        return true;\n      } else if (typeof filterFn === 'function') {\n        return filterFn.call(Select_assertThisInitialized(_this), input, child);\n      } else if (child.props.disabled) {\n        return false;\n      }\n\n      return true;\n    };\n\n    _this.timeoutFocus = function () {\n      if (_this.focusTimer) {\n        _this.clearFocusTime();\n      }\n\n      _this.focusTimer = window.setTimeout(function () {\n        if (_this.props.onFocus) {\n          _this.props.onFocus();\n        }\n      }, 10);\n    };\n\n    _this.clearFocusTime = function () {\n      if (_this.focusTimer) {\n        clearTimeout(_this.focusTimer);\n        _this.focusTimer = null;\n      }\n    };\n\n    _this.clearBlurTime = function () {\n      if (_this.blurTimer) {\n        clearTimeout(_this.blurTimer);\n        _this.blurTimer = null;\n      }\n    };\n\n    _this.updateFocusClassName = function () {\n      var rootRef = _this.rootRef;\n      var props = _this.props; // avoid setState and its side effect\n\n      if (_this._focused) {\n        component_classes_default()(rootRef).add(\"\".concat(props.prefixCls, \"-focused\"));\n      } else {\n        component_classes_default()(rootRef).remove(\"\".concat(props.prefixCls, \"-focused\"));\n      }\n    };\n\n    _this.maybeFocus = function (open, needFocus) {\n      if (needFocus || open) {\n        var input = _this.getInputDOMNode();\n\n        var _document = document,\n            activeElement = _document.activeElement;\n\n        if (input && (open || isMultipleOrTagsOrCombobox(_this.props))) {\n          if (activeElement !== input) {\n            input.focus();\n            _this._focused = true;\n          }\n        } else if (activeElement !== _this.selectionRef && _this.selectionRef) {\n          _this.selectionRef.focus();\n\n          _this._focused = true;\n        }\n      }\n    };\n\n    _this.removeSelected = function (selectedKey, e) {\n      var props = _this.props;\n\n      if (props.disabled || _this.isChildDisabled(selectedKey)) {\n        return;\n      } // Do not trigger Trigger popup\n\n\n      if (e && e.stopPropagation) {\n        e.stopPropagation();\n      }\n\n      var oldValue = _this.state.value;\n      var value = oldValue.filter(function (singleValue) {\n        return singleValue !== selectedKey;\n      });\n      var canMultiple = isMultipleOrTags(props);\n\n      if (canMultiple) {\n        var event = selectedKey;\n\n        if (props.labelInValue) {\n          event = {\n            key: selectedKey,\n            label: _this.getLabelBySingleValue(selectedKey)\n          };\n        }\n\n        if (props.onDeselect) {\n          props.onDeselect(event, _this.getOptionBySingleValue(selectedKey));\n        }\n      }\n\n      _this.fireChange(value);\n    };\n\n    _this.openIfHasChildren = function () {\n      var props = _this.props;\n\n      if (external_react_[\"Children\"].count(props.children) || isSingleMode(props)) {\n        _this.setOpenState(true);\n      }\n    };\n\n    _this.fireSelect = function (value) {\n      if (_this.props.onSelect) {\n        _this.props.onSelect(_this.getVLBySingleValue(value), _this.getOptionBySingleValue(value));\n      }\n    };\n\n    _this.fireChange = function (value) {\n      var props = _this.props;\n\n      if (!('value' in props)) {\n        _this.setState({\n          value: value\n        }, _this.forcePopupAlign);\n      }\n\n      var vls = _this.getVLForOnChange(value);\n\n      var options = _this.getOptionsBySingleValue(value);\n\n      if (props.onChange) {\n        props.onChange(vls, isMultipleOrTags(_this.props) ? options : options[0]);\n      }\n    };\n\n    _this.isChildDisabled = function (key) {\n      return Object(Children_toArray[\"a\" /* default */])(_this.props.children).some(function (child) {\n        var childValue = getValuePropValue(child);\n        return childValue === key && child.props && child.props.disabled;\n      });\n    };\n\n    _this.forcePopupAlign = function () {\n      if (!_this.state.open) {\n        return;\n      }\n\n      if (_this.selectTriggerRef && _this.selectTriggerRef.triggerRef) {\n        _this.selectTriggerRef.triggerRef.forcePopupAlign();\n      }\n    };\n\n    _this.renderFilterOptions = function () {\n      var inputValue = _this.state.inputValue;\n      var _this$props3 = _this.props,\n          children = _this$props3.children,\n          tags = _this$props3.tags,\n          notFoundContent = _this$props3.notFoundContent;\n      var menuItems = [];\n      var childrenKeys = [];\n      var empty = false;\n\n      var options = _this.renderFilterOptionsFromChildren(children, childrenKeys, menuItems);\n\n      if (tags) {\n        // tags value must be string\n        var value = _this.state.value;\n        value = value.filter(function (singleValue) {\n          return childrenKeys.indexOf(singleValue) === -1 && (!inputValue || String(singleValue).indexOf(String(inputValue)) > -1);\n        }); // sort by length\n\n        value.sort(function (val1, val2) {\n          return val1.length - val2.length;\n        });\n        value.forEach(function (singleValue) {\n          var key = singleValue;\n          var menuItem = external_react_[\"createElement\"](es_MenuItem, {\n            style: UNSELECTABLE_STYLE,\n            role: \"option\",\n            attribute: UNSELECTABLE_ATTRIBUTE,\n            value: key,\n            key: key\n          }, key);\n          options.push(menuItem);\n          menuItems.push(menuItem);\n        }); // ref: https://github.com/ant-design/ant-design/issues/14090\n\n        if (inputValue && menuItems.every(function (option) {\n          return getValuePropValue(option) !== inputValue;\n        })) {\n          options.unshift(external_react_[\"createElement\"](es_MenuItem, {\n            style: UNSELECTABLE_STYLE,\n            role: \"option\",\n            attribute: UNSELECTABLE_ATTRIBUTE,\n            value: inputValue,\n            key: inputValue\n          }, inputValue));\n        }\n      }\n\n      if (!options.length && notFoundContent) {\n        empty = true;\n        options = [external_react_[\"createElement\"](es_MenuItem, {\n          style: UNSELECTABLE_STYLE,\n          attribute: UNSELECTABLE_ATTRIBUTE,\n          disabled: true,\n          role: \"option\",\n          value: \"NOT_FOUND\",\n          key: \"NOT_FOUND\"\n        }, notFoundContent)];\n      }\n\n      return {\n        empty: empty,\n        options: options\n      };\n    };\n\n    _this.renderFilterOptionsFromChildren = function (children, childrenKeys, menuItems) {\n      var sel = [];\n      var props = _this.props;\n      var inputValue = _this.state.inputValue;\n      var tags = props.tags;\n      external_react_[\"Children\"].forEach(children, function (child) {\n        if (!child) {\n          return;\n        }\n\n        var type = child.type;\n\n        if (type.isSelectOptGroup) {\n          var label = child.props.label;\n          var key = child.key;\n\n          if (!key && typeof label === 'string') {\n            key = label;\n          } else if (!label && key) {\n            label = key;\n          } // Match option group label\n\n\n          if (inputValue && _this.filterOption(inputValue, child)) {\n            var innerItems = Object(Children_toArray[\"a\" /* default */])(child.props.children).map(function (subChild) {\n              var childValueSub = getValuePropValue(subChild) || subChild.key;\n              return external_react_[\"createElement\"](es_MenuItem, Select_extends({\n                key: childValueSub,\n                value: childValueSub\n              }, subChild.props));\n            });\n            sel.push(external_react_[\"createElement\"](es_MenuItemGroup, {\n              key: key,\n              title: label\n            }, innerItems)); // Not match\n          } else {\n            var _innerItems = _this.renderFilterOptionsFromChildren(child.props.children, childrenKeys, menuItems);\n\n            if (_innerItems.length) {\n              sel.push(external_react_[\"createElement\"](es_MenuItemGroup, {\n                key: key,\n                title: label\n              }, _innerItems));\n            }\n          }\n\n          return;\n        }\n\n        warning_default()(type.isSelectOption, 'the children of `Select` should be `Select.Option` or `Select.OptGroup`, ' + \"instead of `\".concat(type.name || type.displayName || child.type, \"`.\"));\n        var childValue = getValuePropValue(child);\n        validateOptionValue(childValue, _this.props);\n\n        if (_this.filterOption(inputValue, child)) {\n          var menuItem = external_react_[\"createElement\"](es_MenuItem, Select_extends({\n            style: UNSELECTABLE_STYLE,\n            attribute: UNSELECTABLE_ATTRIBUTE,\n            value: childValue,\n            key: childValue,\n            role: \"option\"\n          }, child.props));\n          sel.push(menuItem);\n          menuItems.push(menuItem);\n        }\n\n        if (tags) {\n          childrenKeys.push(childValue);\n        }\n      });\n      return sel;\n    };\n\n    _this.renderTopControlNode = function () {\n      var _this$state = _this.state,\n          open = _this$state.open,\n          inputValue = _this$state.inputValue;\n      var value = _this.state.value;\n      var props = _this.props;\n      var choiceTransitionName = props.choiceTransitionName,\n          prefixCls = props.prefixCls,\n          maxTagTextLength = props.maxTagTextLength,\n          maxTagCount = props.maxTagCount,\n          showSearch = props.showSearch,\n          removeIcon = props.removeIcon;\n      var maxTagPlaceholder = props.maxTagPlaceholder;\n      var className = \"\".concat(prefixCls, \"-selection__rendered\"); // search input is inside topControlNode in single, multiple & combobox. 2016/04/13\n\n      var innerNode = null;\n\n      if (isSingleMode(props)) {\n        var selectedValue = null;\n\n        if (value.length) {\n          var showSelectedValue = false;\n          var opacity = 1;\n\n          if (!showSearch) {\n            showSelectedValue = true;\n          } else if (open) {\n            showSelectedValue = !inputValue;\n\n            if (showSelectedValue) {\n              opacity = 0.4;\n            }\n          } else {\n            showSelectedValue = true;\n          }\n\n          var singleValue = value[0];\n\n          var _this$getOptionInfoBy3 = _this.getOptionInfoBySingleValue(singleValue),\n              label = _this$getOptionInfoBy3.label,\n              title = _this$getOptionInfoBy3.title;\n\n          selectedValue = external_react_[\"createElement\"](\"div\", {\n            key: \"value\",\n            className: \"\".concat(prefixCls, \"-selection-selected-value\"),\n            title: toTitle(title || label),\n            style: {\n              display: showSelectedValue ? 'block' : 'none',\n              opacity: opacity\n            }\n          }, label);\n        }\n\n        if (!showSearch) {\n          innerNode = [selectedValue];\n        } else {\n          innerNode = [selectedValue, external_react_[\"createElement\"](\"div\", {\n            className: \"\".concat(prefixCls, \"-search \").concat(prefixCls, \"-search--inline\"),\n            key: \"input\",\n            style: {\n              display: open ? 'block' : 'none'\n            }\n          }, _this.getInputElement())];\n        }\n      } else {\n        var selectedValueNodes = [];\n        var limitedCountValue = value;\n        var maxTagPlaceholderEl;\n\n        if (maxTagCount !== undefined && value.length > maxTagCount) {\n          limitedCountValue = limitedCountValue.slice(0, maxTagCount);\n\n          var omittedValues = _this.getVLForOnChange(value.slice(maxTagCount, value.length));\n\n          var content = \"+ \".concat(value.length - maxTagCount, \" ...\");\n\n          if (maxTagPlaceholder) {\n            content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;\n          }\n\n          maxTagPlaceholderEl = external_react_[\"createElement\"](\"li\", Select_extends({\n            style: UNSELECTABLE_STYLE\n          }, UNSELECTABLE_ATTRIBUTE, {\n            role: \"presentation\",\n            onMouseDown: preventDefaultEvent,\n            className: \"\".concat(prefixCls, \"-selection__choice \").concat(prefixCls, \"-selection__choice__disabled\"),\n            key: \"maxTagPlaceholder\",\n            title: toTitle(content)\n          }), external_react_[\"createElement\"](\"div\", {\n            className: \"\".concat(prefixCls, \"-selection__choice__content\")\n          }, content));\n        }\n\n        if (isMultipleOrTags(props)) {\n          selectedValueNodes = limitedCountValue.map(function (singleValue) {\n            var info = _this.getOptionInfoBySingleValue(singleValue);\n\n            var content = info.label;\n            var title = info.title || content;\n\n            if (maxTagTextLength && typeof content === 'string' && content.length > maxTagTextLength) {\n              content = \"\".concat(content.slice(0, maxTagTextLength), \"...\");\n            }\n\n            var disabled = _this.isChildDisabled(singleValue);\n\n            var choiceClassName = disabled ? \"\".concat(prefixCls, \"-selection__choice \").concat(prefixCls, \"-selection__choice__disabled\") : \"\".concat(prefixCls, \"-selection__choice\");\n            return external_react_[\"createElement\"](\"li\", Select_extends({\n              style: UNSELECTABLE_STYLE\n            }, UNSELECTABLE_ATTRIBUTE, {\n              onMouseDown: preventDefaultEvent,\n              className: choiceClassName,\n              role: \"presentation\",\n              key: singleValue || SELECT_EMPTY_VALUE_KEY,\n              title: toTitle(title)\n            }), external_react_[\"createElement\"](\"div\", {\n              className: \"\".concat(prefixCls, \"-selection__choice__content\")\n            }, content), disabled ? null : external_react_[\"createElement\"](\"span\", {\n              onClick: function onClick(event) {\n                _this.removeSelected(singleValue, event);\n              },\n              className: \"\".concat(prefixCls, \"-selection__choice__remove\")\n            }, removeIcon || external_react_[\"createElement\"](\"i\", {\n              className: \"\".concat(prefixCls, \"-selection__choice__remove-icon\")\n            }, \"\\xD7\")));\n          });\n        }\n\n        if (maxTagPlaceholderEl) {\n          selectedValueNodes.push(maxTagPlaceholderEl);\n        }\n\n        selectedValueNodes.push(external_react_[\"createElement\"](\"li\", {\n          className: \"\".concat(prefixCls, \"-search \").concat(prefixCls, \"-search--inline\"),\n          key: \"__input\"\n        }, _this.getInputElement()));\n\n        if (isMultipleOrTags(props) && choiceTransitionName) {\n          innerNode = external_react_[\"createElement\"](Animate[\"a\" /* default */], {\n            onLeave: _this.onChoiceAnimationLeave,\n            component: \"ul\",\n            transitionName: choiceTransitionName\n          }, selectedValueNodes);\n        } else {\n          innerNode = external_react_[\"createElement\"](\"ul\", null, selectedValueNodes);\n        }\n      }\n\n      return external_react_[\"createElement\"](\"div\", {\n        className: className,\n        ref: _this.saveTopCtrlRef\n      }, _this.getPlaceholderElement(), innerNode);\n    };\n\n    var optionsInfo = Select.getOptionsInfoFromProps(props);\n\n    if (props.tags && typeof props.filterOption !== 'function') {\n      var isDisabledExist = Object.keys(optionsInfo).some(function (key) {\n        return optionsInfo[key].disabled;\n      });\n      warning_default()(!isDisabledExist, 'Please avoid setting option to disabled in tags mode since user can always type text as tag.');\n    }\n\n    _this.state = {\n      value: Select.getValueFromProps(props, true),\n      inputValue: props.combobox ? Select.getInputValueForCombobox(props, optionsInfo, true) : '',\n      open: props.defaultOpen,\n      optionsInfo: optionsInfo,\n      backfillValue: '',\n      // a flag for aviod redundant getOptionsInfoFromProps call\n      skipBuildOptionsInfo: true,\n      ariaId: ''\n    };\n    _this.saveInputRef = util_saveRef(Select_assertThisInitialized(_this), 'inputRef');\n    _this.saveInputMirrorRef = util_saveRef(Select_assertThisInitialized(_this), 'inputMirrorRef');\n    _this.saveTopCtrlRef = util_saveRef(Select_assertThisInitialized(_this), 'topCtrlRef');\n    _this.saveSelectTriggerRef = util_saveRef(Select_assertThisInitialized(_this), 'selectTriggerRef');\n    _this.saveRootRef = util_saveRef(Select_assertThisInitialized(_this), 'rootRef');\n    _this.saveSelectionRef = util_saveRef(Select_assertThisInitialized(_this), 'selectionRef');\n    return _this;\n  }\n\n  Select_createClass(Select, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      // when defaultOpen is true, we should auto focus search input\n      // https://github.com/ant-design/ant-design/issues/14254\n      if (this.props.autoFocus || this.state.open) {\n        this.focus();\n      }\n\n      this.setState({\n        ariaId: generateUUID()\n      });\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      if (isMultipleOrTags(this.props)) {\n        var inputNode = this.getInputDOMNode();\n        var mirrorNode = this.getInputMirrorDOMNode();\n\n        if (inputNode && inputNode.value && mirrorNode) {\n          inputNode.style.width = '';\n          inputNode.style.width = \"\".concat(mirrorNode.clientWidth, \"px\");\n        } else if (inputNode) {\n          inputNode.style.width = '';\n        }\n      }\n\n      this.forcePopupAlign();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.clearFocusTime();\n      this.clearBlurTime();\n\n      if (this.dropdownContainer) {\n        external_react_dom_[\"unmountComponentAtNode\"](this.dropdownContainer);\n        document.body.removeChild(this.dropdownContainer);\n        this.dropdownContainer = null;\n      }\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      if (isSingleMode(this.props) && this.selectionRef) {\n        this.selectionRef.focus();\n      } else if (this.getInputDOMNode()) {\n        this.getInputDOMNode().focus();\n      }\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      if (isSingleMode(this.props) && this.selectionRef) {\n        this.selectionRef.blur();\n      } else if (this.getInputDOMNode()) {\n        this.getInputDOMNode().blur();\n      }\n    }\n  }, {\n    key: \"renderArrow\",\n    value: function renderArrow(multiple) {\n      // showArrow : Set to true if not multiple by default but keep set value.\n      var _this$props4 = this.props,\n          _this$props4$showArro = _this$props4.showArrow,\n          showArrow = _this$props4$showArro === void 0 ? !multiple : _this$props4$showArro,\n          loading = _this$props4.loading,\n          inputIcon = _this$props4.inputIcon,\n          prefixCls = _this$props4.prefixCls;\n\n      if (!showArrow && !loading) {\n        return null;\n      } // if loading  have loading icon\n\n\n      var defaultIcon = loading ? external_react_[\"createElement\"](\"i\", {\n        className: \"\".concat(prefixCls, \"-arrow-loading\")\n      }) : external_react_[\"createElement\"](\"i\", {\n        className: \"\".concat(prefixCls, \"-arrow-icon\")\n      });\n      return external_react_[\"createElement\"](\"span\", Select_extends({\n        key: \"arrow\",\n        className: \"\".concat(prefixCls, \"-arrow\"),\n        style: UNSELECTABLE_STYLE\n      }, UNSELECTABLE_ATTRIBUTE, {\n        onClick: this.onArrowClick\n      }), inputIcon || defaultIcon);\n    }\n  }, {\n    key: \"renderClear\",\n    value: function renderClear() {\n      var _this$props5 = this.props,\n          prefixCls = _this$props5.prefixCls,\n          allowClear = _this$props5.allowClear,\n          clearIcon = _this$props5.clearIcon;\n      var inputValue = this.state.inputValue;\n      var value = this.state.value;\n      var clear = external_react_[\"createElement\"](\"span\", Select_extends({\n        key: \"clear\",\n        className: \"\".concat(prefixCls, \"-selection__clear\"),\n        onMouseDown: preventDefaultEvent,\n        style: UNSELECTABLE_STYLE\n      }, UNSELECTABLE_ATTRIBUTE, {\n        onClick: this.onClearSelection\n      }), clearIcon || external_react_[\"createElement\"](\"i\", {\n        className: \"\".concat(prefixCls, \"-selection__clear-icon\")\n      }, \"\\xD7\"));\n\n      if (!allowClear) {\n        return null;\n      }\n\n      if (isCombobox(this.props)) {\n        if (inputValue) {\n          return clear;\n        }\n\n        return null;\n      }\n\n      if (inputValue || value.length) {\n        return clear;\n      }\n\n      return null;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _rootCls;\n\n      var props = this.props;\n      var multiple = isMultipleOrTags(props); // Default set showArrow to true if not set (not set directly in defaultProps to handle multiple case)\n\n      var _props$showArrow = props.showArrow,\n          showArrow = _props$showArrow === void 0 ? true : _props$showArrow;\n      var state = this.state;\n      var className = props.className,\n          disabled = props.disabled,\n          prefixCls = props.prefixCls,\n          loading = props.loading;\n      var ctrlNode = this.renderTopControlNode();\n      var _this$state2 = this.state,\n          open = _this$state2.open,\n          ariaId = _this$state2.ariaId;\n\n      if (open) {\n        var filterOptions = this.renderFilterOptions();\n        this._empty = filterOptions.empty;\n        this._options = filterOptions.options;\n      }\n\n      var realOpen = this.getRealOpenState();\n      var empty = this._empty;\n      var options = this._options || [];\n      var dataOrAriaAttributeProps = {};\n      Object.keys(props).forEach(function (key) {\n        if (Object.prototype.hasOwnProperty.call(props, key) && (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role')) {\n          dataOrAriaAttributeProps[key] = props[key];\n        }\n      }); // for (const key in props) {\n      //   if (\n      //     Object.prototype.hasOwnProperty.call(props, key) &&\n      //     (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role')\n      //   ) {\n      //     dataOrAriaAttributeProps[key] = props[key];\n      //   }\n      // }\n\n      var extraSelectionProps = Select_extends({}, dataOrAriaAttributeProps);\n\n      if (!isMultipleOrTagsOrCombobox(props)) {\n        extraSelectionProps = Select_extends({}, extraSelectionProps, {\n          onKeyDown: this.onKeyDown,\n          tabIndex: props.disabled ? -1 : props.tabIndex\n        });\n      }\n\n      var rootCls = (_rootCls = {}, Select_defineProperty(_rootCls, className, !!className), Select_defineProperty(_rootCls, prefixCls, 1), Select_defineProperty(_rootCls, \"\".concat(prefixCls, \"-open\"), open), Select_defineProperty(_rootCls, \"\".concat(prefixCls, \"-focused\"), open || !!this._focused), Select_defineProperty(_rootCls, \"\".concat(prefixCls, \"-combobox\"), isCombobox(props)), Select_defineProperty(_rootCls, \"\".concat(prefixCls, \"-disabled\"), disabled), Select_defineProperty(_rootCls, \"\".concat(prefixCls, \"-enabled\"), !disabled), Select_defineProperty(_rootCls, \"\".concat(prefixCls, \"-allow-clear\"), !!props.allowClear), Select_defineProperty(_rootCls, \"\".concat(prefixCls, \"-no-arrow\"), !showArrow), Select_defineProperty(_rootCls, \"\".concat(prefixCls, \"-loading\"), !!loading), _rootCls);\n      return external_react_[\"createElement\"](SelectTrigger_SelectTrigger, {\n        onPopupFocus: this.onPopupFocus,\n        onMouseEnter: this.props.onMouseEnter,\n        onMouseLeave: this.props.onMouseLeave,\n        dropdownAlign: props.dropdownAlign,\n        dropdownClassName: props.dropdownClassName,\n        dropdownMatchSelectWidth: props.dropdownMatchSelectWidth,\n        defaultActiveFirstOption: props.defaultActiveFirstOption,\n        dropdownMenuStyle: props.dropdownMenuStyle,\n        transitionName: props.transitionName,\n        animation: props.animation,\n        prefixCls: props.prefixCls,\n        dropdownStyle: props.dropdownStyle,\n        combobox: props.combobox,\n        showSearch: props.showSearch,\n        options: options,\n        empty: empty,\n        multiple: multiple,\n        disabled: disabled,\n        visible: realOpen,\n        inputValue: state.inputValue,\n        value: state.value,\n        backfillValue: state.backfillValue,\n        firstActiveValue: props.firstActiveValue,\n        onDropdownVisibleChange: this.onDropdownVisibleChange,\n        getPopupContainer: props.getPopupContainer,\n        onMenuSelect: this.onMenuSelect,\n        onMenuDeselect: this.onMenuDeselect,\n        onPopupScroll: props.onPopupScroll,\n        showAction: props.showAction,\n        ref: this.saveSelectTriggerRef,\n        menuItemSelectedIcon: props.menuItemSelectedIcon,\n        dropdownRender: props.dropdownRender,\n        ariaId: ariaId\n      }, external_react_[\"createElement\"](\"div\", {\n        id: props.id,\n        style: props.style,\n        ref: this.saveRootRef,\n        onBlur: this.onOuterBlur,\n        onFocus: this.onOuterFocus,\n        className: node_modules_classnames_default()(rootCls),\n        onMouseDown: this.markMouseDown,\n        onMouseUp: this.markMouseLeave,\n        onMouseOut: this.markMouseLeave\n      }, external_react_[\"createElement\"](\"div\", Select_extends({\n        ref: this.saveSelectionRef,\n        key: \"selection\",\n        className: \"\".concat(prefixCls, \"-selection\\n            \").concat(prefixCls, \"-selection--\").concat(multiple ? 'multiple' : 'single'),\n        role: \"combobox\",\n        \"aria-autocomplete\": \"list\",\n        \"aria-haspopup\": \"true\",\n        \"aria-controls\": ariaId,\n        \"aria-expanded\": realOpen\n      }, extraSelectionProps), ctrlNode, this.renderClear(), this.renderArrow(!!multiple))));\n    }\n  }]);\n\n  return Select;\n}(external_react_[\"Component\"]);\n\nSelect_Select.propTypes = PropTypes;\nSelect_Select.defaultProps = {\n  prefixCls: 'rc-select',\n  defaultOpen: false,\n  labelInValue: false,\n  defaultActiveFirstOption: true,\n  showSearch: true,\n  allowClear: false,\n  placeholder: '',\n  onChange: Select_noop,\n  onFocus: Select_noop,\n  onBlur: Select_noop,\n  onSelect: Select_noop,\n  onSearch: Select_noop,\n  onDeselect: Select_noop,\n  onInputKeyDown: Select_noop,\n  dropdownMatchSelectWidth: true,\n  dropdownStyle: {},\n  dropdownMenuStyle: {},\n  optionFilterProp: 'value',\n  optionLabelProp: 'value',\n  notFoundContent: 'Not Found',\n  backfill: false,\n  showAction: ['click'],\n  tokenSeparators: [],\n  autoClearSearchValue: true,\n  tabIndex: 0,\n  dropdownRender: function dropdownRender(menu) {\n    return menu;\n  }\n};\n\nSelect_Select.getDerivedStateFromProps = function (nextProps, prevState) {\n  var optionsInfo = prevState.skipBuildOptionsInfo ? prevState.optionsInfo : Select_Select.getOptionsInfoFromProps(nextProps, prevState);\n  var newState = {\n    optionsInfo: optionsInfo,\n    skipBuildOptionsInfo: false\n  };\n\n  if ('open' in nextProps) {\n    newState.open = nextProps.open;\n  }\n\n  if ('value' in nextProps) {\n    var value = Select_Select.getValueFromProps(nextProps);\n    newState.value = value;\n\n    if (nextProps.combobox) {\n      newState.inputValue = Select_Select.getInputValueForCombobox(nextProps, optionsInfo);\n    }\n  }\n\n  return newState;\n};\n\nSelect_Select.getOptionsFromChildren = function (children) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  external_react_[\"Children\"].forEach(children, function (child) {\n    if (!child) {\n      return;\n    }\n\n    var type = child.type;\n\n    if (type.isSelectOptGroup) {\n      Select_Select.getOptionsFromChildren(child.props.children, options);\n    } else {\n      options.push(child);\n    }\n  });\n  return options;\n};\n\nSelect_Select.getInputValueForCombobox = function (props, optionsInfo, useDefaultValue) {\n  var value = [];\n\n  if ('value' in props && !useDefaultValue) {\n    value = util_toArray(props.value);\n  }\n\n  if ('defaultValue' in props && useDefaultValue) {\n    value = util_toArray(props.defaultValue);\n  }\n\n  if (value.length) {\n    value = value[0];\n  } else {\n    return '';\n  }\n\n  var label = value;\n\n  if (props.labelInValue) {\n    label = value.label;\n  } else if (optionsInfo[getMapKey(value)]) {\n    label = optionsInfo[getMapKey(value)].label;\n  }\n\n  if (label === undefined) {\n    label = '';\n  }\n\n  return label;\n};\n\nSelect_Select.getLabelFromOption = function (props, option) {\n  return getPropValue(option, props.optionLabelProp);\n};\n\nSelect_Select.getOptionsInfoFromProps = function (props, preState) {\n  var options = Select_Select.getOptionsFromChildren(props.children);\n  var optionsInfo = {};\n  options.forEach(function (option) {\n    var singleValue = getValuePropValue(option);\n    optionsInfo[getMapKey(singleValue)] = {\n      option: option,\n      value: singleValue,\n      label: Select_Select.getLabelFromOption(props, option),\n      title: option.props.title,\n      disabled: option.props.disabled\n    };\n  });\n\n  if (preState) {\n    // keep option info in pre state value.\n    var oldOptionsInfo = preState.optionsInfo;\n    var value = preState.value;\n\n    if (value) {\n      value.forEach(function (v) {\n        var key = getMapKey(v);\n\n        if (!optionsInfo[key] && oldOptionsInfo[key] !== undefined) {\n          optionsInfo[key] = oldOptionsInfo[key];\n        }\n      });\n    }\n  }\n\n  return optionsInfo;\n};\n\nSelect_Select.getValueFromProps = function (props, useDefaultValue) {\n  var value = [];\n\n  if ('value' in props && !useDefaultValue) {\n    value = util_toArray(props.value);\n  }\n\n  if ('defaultValue' in props && useDefaultValue) {\n    value = util_toArray(props.defaultValue);\n  }\n\n  if (props.labelInValue) {\n    value = value.map(function (v) {\n      return v.key;\n    });\n  }\n\n  return value;\n};\n\nSelect_Select.displayName = 'Select';\nObject(react_lifecycles_compat_es[\"polyfill\"])(Select_Select);\n/* harmony default export */ var es_Select = (Select_Select);\n// CONCATENATED MODULE: ./node_modules/rc-select/es/index.js\n\n\n\n\nes_Select.Option = Option;\nes_Select.OptGroup = OptGroup;\n\n/* harmony default export */ var rc_select_es = (es_Select);\n// CONCATENATED MODULE: ./node_modules/antd/es/select/index.js\nfunction select_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { select_typeof = function _typeof(obj) { return typeof obj; }; } else { select_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return select_typeof(obj); }\n\nfunction select_extends() { select_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 select_extends.apply(this, arguments); }\n\nfunction select_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\nfunction select_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction select_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 select_createClass(Constructor, protoProps, staticProps) { if (protoProps) select_defineProperties(Constructor.prototype, protoProps); if (staticProps) select_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction select_possibleConstructorReturn(self, call) { if (call && (select_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return select_assertThisInitialized(self); }\n\nfunction select_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction select_getPrototypeOf(o) { select_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return select_getPrototypeOf(o); }\n\nfunction select_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) select_setPrototypeOf(subClass, superClass); }\n\nfunction select_setPrototypeOf(o, p) { select_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return select_setPrototypeOf(o, p); }\n\nvar select_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\nvar SelectSizes = tuple('default', 'large', 'small');\nvar select_SelectPropTypes = {\n  prefixCls: prop_types[\"string\"],\n  className: prop_types[\"string\"],\n  size: prop_types[\"oneOf\"](SelectSizes),\n  notFoundContent: prop_types[\"any\"],\n  showSearch: prop_types[\"bool\"],\n  optionLabelProp: prop_types[\"string\"],\n  transitionName: prop_types[\"string\"],\n  choiceTransitionName: prop_types[\"string\"],\n  id: prop_types[\"string\"]\n}; // => It is needless to export the declaration of below two inner components.\n// export { Option, OptGroup };\n\nvar select_Select =\n/*#__PURE__*/\nfunction (_React$Component) {\n  select_inherits(Select, _React$Component);\n\n  function Select(props) {\n    var _this;\n\n    select_classCallCheck(this, Select);\n\n    _this = select_possibleConstructorReturn(this, select_getPrototypeOf(Select).call(this, props));\n\n    _this.saveSelect = function (node) {\n      _this.rcSelect = node;\n    };\n\n    _this.renderSelect = function (_ref) {\n      var _classNames;\n\n      var getContextPopupContainer = _ref.getPopupContainer,\n          getPrefixCls = _ref.getPrefixCls,\n          renderEmpty = _ref.renderEmpty;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          _a$className = _a.className,\n          className = _a$className === void 0 ? '' : _a$className,\n          size = _a.size,\n          mode = _a.mode,\n          getPopupContainer = _a.getPopupContainer,\n          removeIcon = _a.removeIcon,\n          clearIcon = _a.clearIcon,\n          menuItemSelectedIcon = _a.menuItemSelectedIcon,\n          showArrow = _a.showArrow,\n          restProps = select_rest(_a, [\"prefixCls\", \"className\", \"size\", \"mode\", \"getPopupContainer\", \"removeIcon\", \"clearIcon\", \"menuItemSelectedIcon\", \"showArrow\"]);\n\n      var rest = es(restProps, ['inputIcon']);\n      var prefixCls = getPrefixCls('select', customizePrefixCls);\n      var cls = classnames_default()((_classNames = {}, select_defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), select_defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), select_defineProperty(_classNames, \"\".concat(prefixCls, \"-show-arrow\"), showArrow), _classNames), className);\n      var optionLabelProp = _this.props.optionLabelProp;\n\n      if (_this.isCombobox()) {\n        // children 带 dom 结构时，无法填入输入框\n        optionLabelProp = optionLabelProp || 'value';\n      }\n\n      var modeConfig = {\n        multiple: mode === 'multiple',\n        tags: mode === 'tags',\n        combobox: _this.isCombobox()\n      };\n      var finalRemoveIcon = removeIcon && (external_react_[\"isValidElement\"](removeIcon) ? external_react_[\"cloneElement\"](removeIcon, {\n        className: classnames_default()(removeIcon.props.className, \"\".concat(prefixCls, \"-remove-icon\"))\n      }) : removeIcon) || external_react_[\"createElement\"](es_icon, {\n        type: \"close\",\n        className: \"\".concat(prefixCls, \"-remove-icon\")\n      });\n      var finalClearIcon = clearIcon && (external_react_[\"isValidElement\"](clearIcon) ? external_react_[\"cloneElement\"](clearIcon, {\n        className: classnames_default()(clearIcon.props.className, \"\".concat(prefixCls, \"-clear-icon\"))\n      }) : clearIcon) || external_react_[\"createElement\"](es_icon, {\n        type: \"close-circle\",\n        theme: \"filled\",\n        className: \"\".concat(prefixCls, \"-clear-icon\")\n      });\n      var finalMenuItemSelectedIcon = menuItemSelectedIcon && (external_react_[\"isValidElement\"](menuItemSelectedIcon) ? external_react_[\"cloneElement\"](menuItemSelectedIcon, {\n        className: classnames_default()(menuItemSelectedIcon.props.className, \"\".concat(prefixCls, \"-selected-icon\"))\n      }) : menuItemSelectedIcon) || external_react_[\"createElement\"](es_icon, {\n        type: \"check\",\n        className: \"\".concat(prefixCls, \"-selected-icon\")\n      });\n      return external_react_[\"createElement\"](rc_select_es, select_extends({\n        inputIcon: _this.renderSuffixIcon(prefixCls),\n        removeIcon: finalRemoveIcon,\n        clearIcon: finalClearIcon,\n        menuItemSelectedIcon: finalMenuItemSelectedIcon,\n        showArrow: showArrow\n      }, rest, modeConfig, {\n        prefixCls: prefixCls,\n        className: cls,\n        optionLabelProp: optionLabelProp || 'children',\n        notFoundContent: _this.getNotFoundContent(renderEmpty),\n        getPopupContainer: getPopupContainer || getContextPopupContainer,\n        ref: _this.saveSelect\n      }));\n    };\n\n    _util_warning(props.mode !== 'combobox', 'Select', 'The combobox mode is deprecated, ' + 'it will be removed in next major version, ' + 'please use AutoComplete instead');\n    return _this;\n  }\n\n  select_createClass(Select, [{\n    key: \"focus\",\n    value: function focus() {\n      this.rcSelect.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.rcSelect.blur();\n    }\n  }, {\n    key: \"getNotFoundContent\",\n    value: function getNotFoundContent(renderEmpty) {\n      var notFoundContent = this.props.notFoundContent;\n\n      if (notFoundContent !== undefined) {\n        return notFoundContent;\n      }\n\n      if (this.isCombobox()) {\n        return null;\n      }\n\n      return renderEmpty('Select'); // if (this.isCombobox()) {\n      //   // AutoComplete don't have notFoundContent defaultly\n      //   return notFoundContent === undefined ? null : notFoundContent;\n      // }\n      // return renderEmpty('Select');\n      // // return notFoundContent === undefined ? locale.notFoundContent : notFoundContent;\n    }\n  }, {\n    key: \"isCombobox\",\n    value: function isCombobox() {\n      var mode = this.props.mode;\n      return mode === 'combobox' || mode === Select.SECRET_COMBOBOX_MODE_DO_NOT_USE;\n    }\n  }, {\n    key: \"renderSuffixIcon\",\n    value: function renderSuffixIcon(prefixCls) {\n      var _this$props = this.props,\n          loading = _this$props.loading,\n          suffixIcon = _this$props.suffixIcon;\n\n      if (suffixIcon) {\n        return external_react_[\"isValidElement\"](suffixIcon) ? external_react_[\"cloneElement\"](suffixIcon, {\n          className: classnames_default()(suffixIcon.props.className, \"\".concat(prefixCls, \"-arrow-icon\"))\n        }) : suffixIcon;\n      }\n\n      if (loading) {\n        return external_react_[\"createElement\"](es_icon, {\n          type: \"loading\"\n        });\n      }\n\n      return external_react_[\"createElement\"](es_icon, {\n        type: \"down\",\n        className: \"\".concat(prefixCls, \"-arrow-icon\")\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderSelect);\n    }\n  }]);\n\n  return Select;\n}(external_react_[\"Component\"]);\n\n\nselect_Select.Option = Option;\nselect_Select.OptGroup = OptGroup;\nselect_Select.SECRET_COMBOBOX_MODE_DO_NOT_USE = 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\nselect_Select.defaultProps = {\n  showSearch: false,\n  transitionName: 'slide-up',\n  choiceTransitionName: 'zoom'\n};\nselect_Select.propTypes = select_SelectPropTypes;\n// CONCATENATED MODULE: ./node_modules/antd/es/pagination/MiniSelect.js\nfunction MiniSelect_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { MiniSelect_typeof = function _typeof(obj) { return typeof obj; }; } else { MiniSelect_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return MiniSelect_typeof(obj); }\n\nfunction MiniSelect_extends() { MiniSelect_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 MiniSelect_extends.apply(this, arguments); }\n\nfunction MiniSelect_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction MiniSelect_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 MiniSelect_createClass(Constructor, protoProps, staticProps) { if (protoProps) MiniSelect_defineProperties(Constructor.prototype, protoProps); if (staticProps) MiniSelect_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction MiniSelect_possibleConstructorReturn(self, call) { if (call && (MiniSelect_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return MiniSelect_assertThisInitialized(self); }\n\nfunction MiniSelect_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction MiniSelect_getPrototypeOf(o) { MiniSelect_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return MiniSelect_getPrototypeOf(o); }\n\nfunction MiniSelect_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) MiniSelect_setPrototypeOf(subClass, superClass); }\n\nfunction MiniSelect_setPrototypeOf(o, p) { MiniSelect_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return MiniSelect_setPrototypeOf(o, p); }\n\n\n\n\nvar MiniSelect_MiniSelect =\n/*#__PURE__*/\nfunction (_React$Component) {\n  MiniSelect_inherits(MiniSelect, _React$Component);\n\n  function MiniSelect() {\n    MiniSelect_classCallCheck(this, MiniSelect);\n\n    return MiniSelect_possibleConstructorReturn(this, MiniSelect_getPrototypeOf(MiniSelect).apply(this, arguments));\n  }\n\n  MiniSelect_createClass(MiniSelect, [{\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](select_Select, MiniSelect_extends({\n        size: \"small\"\n      }, this.props));\n    }\n  }]);\n\n  return MiniSelect;\n}(external_react_[\"Component\"]);\n\n\nMiniSelect_MiniSelect.Option = select_Select.Option;\n// CONCATENATED MODULE: ./node_modules/antd/es/pagination/Pagination.js\nfunction Pagination_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Pagination_typeof = function _typeof(obj) { return typeof obj; }; } else { Pagination_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Pagination_typeof(obj); }\n\nfunction Pagination_extends() { Pagination_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 Pagination_extends.apply(this, arguments); }\n\nfunction Pagination_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Pagination_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 Pagination_createClass(Constructor, protoProps, staticProps) { if (protoProps) Pagination_defineProperties(Constructor.prototype, protoProps); if (staticProps) Pagination_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Pagination_possibleConstructorReturn(self, call) { if (call && (Pagination_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Pagination_assertThisInitialized(self); }\n\nfunction Pagination_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Pagination_getPrototypeOf(o) { Pagination_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Pagination_getPrototypeOf(o); }\n\nfunction Pagination_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) Pagination_setPrototypeOf(subClass, superClass); }\n\nfunction Pagination_setPrototypeOf(o, p) { Pagination_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Pagination_setPrototypeOf(o, p); }\n\nvar Pagination_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar pagination_Pagination_Pagination =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Pagination_inherits(Pagination, _React$Component);\n\n  function Pagination() {\n    var _this;\n\n    Pagination_classCallCheck(this, Pagination);\n\n    _this = Pagination_possibleConstructorReturn(this, Pagination_getPrototypeOf(Pagination).apply(this, arguments));\n\n    _this.getIconsProps = function (prefixCls) {\n      var prevIcon = external_react_[\"createElement\"](\"a\", {\n        className: \"\".concat(prefixCls, \"-item-link\")\n      }, external_react_[\"createElement\"](es_icon, {\n        type: \"left\"\n      }));\n      var nextIcon = external_react_[\"createElement\"](\"a\", {\n        className: \"\".concat(prefixCls, \"-item-link\")\n      }, external_react_[\"createElement\"](es_icon, {\n        type: \"right\"\n      }));\n      var jumpPrevIcon = external_react_[\"createElement\"](\"a\", {\n        className: \"\".concat(prefixCls, \"-item-link\")\n      }, external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-item-container\")\n      }, external_react_[\"createElement\"](es_icon, {\n        className: \"\".concat(prefixCls, \"-item-link-icon\"),\n        type: \"double-left\"\n      }), external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-item-ellipsis\")\n      }, \"\\u2022\\u2022\\u2022\")));\n      var jumpNextIcon = external_react_[\"createElement\"](\"a\", {\n        className: \"\".concat(prefixCls, \"-item-link\")\n      }, external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-item-container\")\n      }, external_react_[\"createElement\"](es_icon, {\n        className: \"\".concat(prefixCls, \"-item-link-icon\"),\n        type: \"double-right\"\n      }), external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-item-ellipsis\")\n      }, \"\\u2022\\u2022\\u2022\")));\n      return {\n        prevIcon: prevIcon,\n        nextIcon: nextIcon,\n        jumpPrevIcon: jumpPrevIcon,\n        jumpNextIcon: jumpNextIcon\n      };\n    };\n\n    _this.renderPagination = function (contextLocale) {\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          customizeSelectPrefixCls = _a.selectPrefixCls,\n          className = _a.className,\n          size = _a.size,\n          customLocale = _a.locale,\n          restProps = Pagination_rest(_a, [\"prefixCls\", \"selectPrefixCls\", \"className\", \"size\", \"locale\"]);\n\n      var locale = Pagination_extends({}, contextLocale, customLocale);\n\n      var isSmall = size === 'small';\n      return external_react_[\"createElement\"](ConfigConsumer, null, function (_ref) {\n        var getPrefixCls = _ref.getPrefixCls;\n        var prefixCls = getPrefixCls('pagination', customizePrefixCls);\n        var selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n        return external_react_[\"createElement\"](es_Pagination, Pagination_extends({}, restProps, {\n          prefixCls: prefixCls,\n          selectPrefixCls: selectPrefixCls\n        }, _this.getIconsProps(prefixCls), {\n          className: classnames_default()(className, {\n            mini: isSmall\n          }),\n          selectComponentClass: isSmall ? MiniSelect_MiniSelect : select_Select,\n          locale: locale\n        }));\n      });\n    };\n\n    return _this;\n  }\n\n  Pagination_createClass(Pagination, [{\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](LocaleReceiver_LocaleReceiver, {\n        componentName: \"Pagination\",\n        defaultLocale: en_US\n      }, this.renderPagination);\n    }\n  }]);\n\n  return Pagination;\n}(external_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/antd/es/pagination/index.js\n\n/* harmony default export */ var es_pagination = (pagination_Pagination_Pagination);\n// CONCATENATED MODULE: ./node_modules/antd/es/list/Item.js\nfunction Item_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Item_typeof = function _typeof(obj) { return typeof obj; }; } else { Item_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Item_typeof(obj); }\n\nfunction Item_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\nfunction Item_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Item_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 Item_createClass(Constructor, protoProps, staticProps) { if (protoProps) Item_defineProperties(Constructor.prototype, protoProps); if (staticProps) Item_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Item_possibleConstructorReturn(self, call) { if (call && (Item_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Item_assertThisInitialized(self); }\n\nfunction Item_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Item_getPrototypeOf(o) { Item_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Item_getPrototypeOf(o); }\n\nfunction Item_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) Item_setPrototypeOf(subClass, superClass); }\n\nfunction Item_setPrototypeOf(o, p) { Item_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Item_setPrototypeOf(o, p); }\n\nfunction Item_extends() { Item_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 Item_extends.apply(this, arguments); }\n\nvar Item_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nvar Item_Meta = function Meta(props) {\n  return external_react_[\"createElement\"](ConfigConsumer, null, function (_ref) {\n    var getPrefixCls = _ref.getPrefixCls;\n\n    var customizePrefixCls = props.prefixCls,\n        className = props.className,\n        avatar = props.avatar,\n        title = props.title,\n        description = props.description,\n        others = Item_rest(props, [\"prefixCls\", \"className\", \"avatar\", \"title\", \"description\"]);\n\n    var prefixCls = getPrefixCls('list', customizePrefixCls);\n    var classString = classnames_default()(\"\".concat(prefixCls, \"-item-meta\"), className);\n    var content = external_react_[\"createElement\"](\"div\", {\n      className: \"\".concat(prefixCls, \"-item-meta-content\")\n    }, title && external_react_[\"createElement\"](\"h4\", {\n      className: \"\".concat(prefixCls, \"-item-meta-title\")\n    }, title), description && external_react_[\"createElement\"](\"div\", {\n      className: \"\".concat(prefixCls, \"-item-meta-description\")\n    }, description));\n    return external_react_[\"createElement\"](\"div\", Item_extends({}, others, {\n      className: classString\n    }), avatar && external_react_[\"createElement\"](\"div\", {\n      className: \"\".concat(prefixCls, \"-item-meta-avatar\")\n    }, avatar), (title || description) && content);\n  });\n};\n\nfunction getGrid(grid, t) {\n  return grid[t] && Math.floor(24 / grid[t]);\n}\n\nvar list_Item_Item =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Item_inherits(Item, _React$Component);\n\n  function Item() {\n    var _this;\n\n    Item_classCallCheck(this, Item);\n\n    _this = Item_possibleConstructorReturn(this, Item_getPrototypeOf(Item).apply(this, arguments));\n\n    _this.renderItem = function (_ref2) {\n      var getPrefixCls = _ref2.getPrefixCls;\n      var grid = _this.context.grid;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          children = _a.children,\n          actions = _a.actions,\n          extra = _a.extra,\n          className = _a.className,\n          others = Item_rest(_a, [\"prefixCls\", \"children\", \"actions\", \"extra\", \"className\"]);\n\n      var prefixCls = getPrefixCls('list', customizePrefixCls);\n      var actionsContent = actions && actions.length > 0 && external_react_[\"createElement\"](\"ul\", {\n        className: \"\".concat(prefixCls, \"-item-action\"),\n        key: \"actions\"\n      }, actions.map(function (action, i) {\n        return external_react_[\"createElement\"](\"li\", {\n          key: \"\".concat(prefixCls, \"-item-action-\").concat(i)\n        }, action, i !== actions.length - 1 && external_react_[\"createElement\"](\"em\", {\n          className: \"\".concat(prefixCls, \"-item-action-split\")\n        }));\n      }));\n      var itemChildren = external_react_[\"createElement\"](\"div\", Item_extends({}, others, {\n        className: classnames_default()(\"\".concat(prefixCls, \"-item\"), className, Item_defineProperty({}, \"\".concat(prefixCls, \"-item-no-flex\"), !extra && _this.isItemContainsTextNode()))\n      }), extra ? [external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-item-main\"),\n        key: \"content\"\n      }, children, actionsContent), external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-item-extra\"),\n        key: \"extra\"\n      }, extra)] : [children, actionsContent]);\n      return grid ? external_react_[\"createElement\"](col_Col, {\n        span: getGrid(grid, 'column'),\n        xs: getGrid(grid, 'xs'),\n        sm: getGrid(grid, 'sm'),\n        md: getGrid(grid, 'md'),\n        lg: getGrid(grid, 'lg'),\n        xl: getGrid(grid, 'xl'),\n        xxl: getGrid(grid, 'xxl')\n      }, itemChildren) : itemChildren;\n    };\n\n    return _this;\n  }\n\n  Item_createClass(Item, [{\n    key: \"isItemContainsTextNode\",\n    value: function isItemContainsTextNode() {\n      var children = this.props.children;\n      var result;\n      external_react_[\"Children\"].forEach(children, function (element) {\n        if (typeof element === 'string') {\n          result = true;\n        }\n      });\n      return result;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderItem);\n    }\n  }]);\n\n  return Item;\n}(external_react_[\"Component\"]);\n\n\nlist_Item_Item.Meta = Item_Meta;\nlist_Item_Item.contextTypes = {\n  grid: prop_types[\"any\"]\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/list/index.js\nfunction list_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { list_typeof = function _typeof(obj) { return typeof obj; }; } else { list_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return list_typeof(obj); }\n\nfunction list_toConsumableArray(arr) { return list_arrayWithoutHoles(arr) || list_iterableToArray(arr) || list_nonIterableSpread(); }\n\nfunction list_nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction list_iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction list_arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction list_extends() { list_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 list_extends.apply(this, arguments); }\n\nfunction list_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\nfunction list_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction list_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 list_createClass(Constructor, protoProps, staticProps) { if (protoProps) list_defineProperties(Constructor.prototype, protoProps); if (staticProps) list_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction list_possibleConstructorReturn(self, call) { if (call && (list_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return list_assertThisInitialized(self); }\n\nfunction list_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction list_getPrototypeOf(o) { list_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return list_getPrototypeOf(o); }\n\nfunction list_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) list_setPrototypeOf(subClass, superClass); }\n\nfunction list_setPrototypeOf(o, p) { list_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return list_setPrototypeOf(o, p); }\n\nvar list_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\nvar list_List =\n/*#__PURE__*/\nfunction (_React$Component) {\n  list_inherits(List, _React$Component);\n\n  function List() {\n    var _this;\n\n    list_classCallCheck(this, List);\n\n    _this = list_possibleConstructorReturn(this, list_getPrototypeOf(List).apply(this, arguments));\n    _this.state = {\n      paginationCurrent: 1\n    };\n    _this.defaultPaginationProps = {\n      current: 1,\n      pageSize: 10,\n      onChange: function onChange(page, pageSize) {\n        var pagination = _this.props.pagination;\n\n        _this.setState({\n          paginationCurrent: page\n        });\n\n        if (pagination && pagination.onChange) {\n          pagination.onChange(page, pageSize);\n        }\n      },\n      total: 0\n    };\n    _this.keys = {};\n\n    _this.renderItem = function (item, index) {\n      var _this$props = _this.props,\n          renderItem = _this$props.renderItem,\n          rowKey = _this$props.rowKey;\n      var key;\n\n      if (typeof rowKey === 'function') {\n        key = rowKey(item);\n      } else if (typeof rowKey === 'string') {\n        key = item[rowKey];\n      } else {\n        key = item.key;\n      }\n\n      if (!key) {\n        key = \"list-item-\".concat(index);\n      }\n\n      _this.keys[index] = key;\n      return renderItem(item, index);\n    };\n\n    _this.renderEmpty = function (prefixCls, renderEmpty) {\n      var locale = _this.props.locale;\n      return external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-empty-text\")\n      }, locale && locale.emptyText || renderEmpty('List'));\n    };\n\n    _this.renderList = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls,\n          renderEmpty = _ref.renderEmpty;\n      var paginationCurrent = _this.state.paginationCurrent;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          bordered = _a.bordered,\n          split = _a.split,\n          className = _a.className,\n          children = _a.children,\n          itemLayout = _a.itemLayout,\n          loadMore = _a.loadMore,\n          pagination = _a.pagination,\n          grid = _a.grid,\n          dataSource = _a.dataSource,\n          size = _a.size,\n          rowKey = _a.rowKey,\n          renderItem = _a.renderItem,\n          header = _a.header,\n          footer = _a.footer,\n          loading = _a.loading,\n          locale = _a.locale,\n          rest = list_rest(_a, [\"prefixCls\", \"bordered\", \"split\", \"className\", \"children\", \"itemLayout\", \"loadMore\", \"pagination\", \"grid\", \"dataSource\", \"size\", \"rowKey\", \"renderItem\", \"header\", \"footer\", \"loading\", \"locale\"]);\n\n      var prefixCls = getPrefixCls('list', customizePrefixCls);\n      var loadingProp = loading;\n\n      if (typeof loadingProp === 'boolean') {\n        loadingProp = {\n          spinning: loadingProp\n        };\n      }\n\n      var isLoading = loadingProp && loadingProp.spinning; // large => lg\n      // small => sm\n\n      var sizeCls = '';\n\n      switch (size) {\n        case 'large':\n          sizeCls = 'lg';\n          break;\n\n        case 'small':\n          sizeCls = 'sm';\n\n        default:\n          break;\n      }\n\n      var classString = classnames_default()(prefixCls, className, (_classNames = {}, list_defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), itemLayout === 'vertical'), list_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), list_defineProperty(_classNames, \"\".concat(prefixCls, \"-split\"), split), list_defineProperty(_classNames, \"\".concat(prefixCls, \"-bordered\"), bordered), list_defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), isLoading), list_defineProperty(_classNames, \"\".concat(prefixCls, \"-grid\"), grid), list_defineProperty(_classNames, \"\".concat(prefixCls, \"-something-after-last-item\"), _this.isSomethingAfterLastItem()), _classNames));\n\n      var paginationProps = list_extends({}, _this.defaultPaginationProps, {\n        total: dataSource.length,\n        current: paginationCurrent\n      }, pagination || {});\n\n      var largestPage = Math.ceil(paginationProps.total / paginationProps.pageSize);\n\n      if (paginationProps.current > largestPage) {\n        paginationProps.current = largestPage;\n      }\n\n      var paginationContent = pagination ? external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-pagination\")\n      }, external_react_[\"createElement\"](es_pagination, list_extends({}, paginationProps, {\n        onChange: _this.defaultPaginationProps.onChange\n      }))) : null;\n\n      var splitDataSource = list_toConsumableArray(dataSource);\n\n      if (pagination) {\n        if (dataSource.length > (paginationProps.current - 1) * paginationProps.pageSize) {\n          splitDataSource = list_toConsumableArray(dataSource).splice((paginationProps.current - 1) * paginationProps.pageSize, paginationProps.pageSize);\n        }\n      }\n\n      var childrenContent;\n      childrenContent = isLoading && external_react_[\"createElement\"](\"div\", {\n        style: {\n          minHeight: 53\n        }\n      });\n\n      if (splitDataSource.length > 0) {\n        var items = splitDataSource.map(function (item, index) {\n          return _this.renderItem(item, index);\n        });\n        var childrenList = [];\n        external_react_[\"Children\"].forEach(items, function (child, index) {\n          childrenList.push(external_react_[\"cloneElement\"](child, {\n            key: _this.keys[index]\n          }));\n        });\n        childrenContent = grid ? external_react_[\"createElement\"](row_Row, {\n          gutter: grid.gutter\n        }, childrenList) : childrenList;\n      } else if (!children && !isLoading) {\n        childrenContent = _this.renderEmpty(prefixCls, renderEmpty);\n      }\n\n      var paginationPosition = paginationProps.position || 'bottom';\n      return external_react_[\"createElement\"](\"div\", list_extends({\n        className: classString\n      }, rest), (paginationPosition === 'top' || paginationPosition === 'both') && paginationContent, header && external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-header\")\n      }, header), external_react_[\"createElement\"](es_spin, loadingProp, childrenContent, children), footer && external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-footer\")\n      }, footer), loadMore || (paginationPosition === 'bottom' || paginationPosition === 'both') && paginationContent);\n    };\n\n    return _this;\n  }\n\n  list_createClass(List, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      return {\n        grid: this.props.grid\n      };\n    }\n  }, {\n    key: \"isSomethingAfterLastItem\",\n    value: function isSomethingAfterLastItem() {\n      var _this$props2 = this.props,\n          loadMore = _this$props2.loadMore,\n          pagination = _this$props2.pagination,\n          footer = _this$props2.footer;\n      return !!(loadMore || pagination || footer);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderList);\n    }\n  }]);\n\n  return List;\n}(external_react_[\"Component\"]);\n\n\nlist_List.Item = list_Item_Item;\nlist_List.childContextTypes = {\n  grid: prop_types[\"any\"]\n};\nlist_List.defaultProps = {\n  dataSource: [],\n  bordered: false,\n  split: true,\n  loading: false,\n  pagination: false\n};\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.search.js\nvar es_string_search = __webpack_require__(518);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/input/Input.js\nfunction Input_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Input_typeof = function _typeof(obj) { return typeof obj; }; } else { Input_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Input_typeof(obj); }\n\nfunction Input_extends() { Input_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 Input_extends.apply(this, arguments); }\n\nfunction Input_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\nfunction Input_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Input_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 Input_createClass(Constructor, protoProps, staticProps) { if (protoProps) Input_defineProperties(Constructor.prototype, protoProps); if (staticProps) Input_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Input_possibleConstructorReturn(self, call) { if (call && (Input_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Input_assertThisInitialized(self); }\n\nfunction Input_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Input_getPrototypeOf(o) { Input_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Input_getPrototypeOf(o); }\n\nfunction Input_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) Input_setPrototypeOf(subClass, superClass); }\n\nfunction Input_setPrototypeOf(o, p) { Input_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Input_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\nfunction fixControlledValue(value) {\n  if (typeof value === 'undefined' || value === null) {\n    return '';\n  }\n\n  return value;\n}\n\nfunction hasPrefixSuffix(props) {\n  return !!('prefix' in props || props.suffix || props.allowClear);\n}\n\nvar InputSizes = tuple('small', 'default', 'large');\n\nvar Input_Input =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Input_inherits(Input, _React$Component);\n\n  function Input(props) {\n    var _this;\n\n    Input_classCallCheck(this, Input);\n\n    _this = Input_possibleConstructorReturn(this, Input_getPrototypeOf(Input).call(this, props));\n\n    _this.handleKeyDown = function (e) {\n      var _this$props = _this.props,\n          onPressEnter = _this$props.onPressEnter,\n          onKeyDown = _this$props.onKeyDown;\n\n      if (e.keyCode === 13 && onPressEnter) {\n        onPressEnter(e);\n      }\n\n      if (onKeyDown) {\n        onKeyDown(e);\n      }\n    };\n\n    _this.saveInput = function (node) {\n      _this.input = node;\n    };\n\n    _this.handleReset = function (e) {\n      _this.setValue('', e, function () {\n        _this.focus();\n      });\n    };\n\n    _this.handleChange = function (e) {\n      _this.setValue(e.target.value, e);\n    };\n\n    _this.renderComponent = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n      var customizePrefixCls = _this.props.prefixCls;\n      var prefixCls = getPrefixCls('input', customizePrefixCls);\n      return _this.renderLabeledInput(prefixCls, _this.renderInput(prefixCls));\n    };\n\n    var value = typeof props.value === 'undefined' ? props.defaultValue : props.value;\n    _this.state = {\n      value: value\n    };\n    return _this;\n  }\n\n  Input_createClass(Input, [{\n    key: \"getSnapshotBeforeUpdate\",\n    value: function getSnapshotBeforeUpdate(prevProps) {\n      if (hasPrefixSuffix(prevProps) !== hasPrefixSuffix(this.props)) {\n        _util_warning(this.input !== document.activeElement, 'Input', \"When Input is focused, dynamic add or remove prefix / suffix will make it lose focus caused by dom structure change. Read more: https://ant.design/components/input/#FAQ\");\n      }\n\n      return null;\n    } // Since polyfill `getSnapshotBeforeUpdate` need work with `componentDidUpdate`.\n    // We keep an empty function here.\n\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {}\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      this.input.focus();\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: \"getInputClassName\",\n    value: function getInputClassName(prefixCls) {\n      var _classNames;\n\n      var _this$props2 = this.props,\n          size = _this$props2.size,\n          disabled = _this$props2.disabled;\n      return classnames_default()(prefixCls, (_classNames = {}, Input_defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), Input_defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), Input_defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames));\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(value, e, callback) {\n      if (!('value' in this.props)) {\n        this.setState({\n          value: value\n        }, callback);\n      }\n\n      var onChange = this.props.onChange;\n\n      if (onChange) {\n        var event = e;\n\n        if (e.type === 'click') {\n          // click clear icon\n          event = Object.create(e);\n          event.target = this.input;\n          event.currentTarget = this.input;\n          var originalInputValue = this.input.value; // change input value cause e.target.value should be '' when clear input\n\n          this.input.value = '';\n          onChange(event); // reset input value\n\n          this.input.value = originalInputValue;\n          return;\n        }\n\n        onChange(event);\n      }\n    }\n  }, {\n    key: \"renderClearIcon\",\n    value: function renderClearIcon(prefixCls) {\n      var allowClear = this.props.allowClear;\n      var value = this.state.value;\n\n      if (!allowClear || value === undefined || value === null || value === '') {\n        return null;\n      }\n\n      return external_react_[\"createElement\"](es_icon, {\n        type: \"close-circle\",\n        theme: \"filled\",\n        onClick: this.handleReset,\n        className: \"\".concat(prefixCls, \"-clear-icon\"),\n        role: \"button\"\n      });\n    }\n  }, {\n    key: \"renderSuffix\",\n    value: function renderSuffix(prefixCls) {\n      var _this$props3 = this.props,\n          suffix = _this$props3.suffix,\n          allowClear = _this$props3.allowClear;\n\n      if (suffix || allowClear) {\n        return external_react_[\"createElement\"](\"span\", {\n          className: \"\".concat(prefixCls, \"-suffix\")\n        }, this.renderClearIcon(prefixCls), suffix);\n      }\n\n      return null;\n    }\n  }, {\n    key: \"renderLabeledInput\",\n    value: function renderLabeledInput(prefixCls, children) {\n      var _classNames3;\n\n      var _this$props4 = this.props,\n          addonBefore = _this$props4.addonBefore,\n          addonAfter = _this$props4.addonAfter,\n          style = _this$props4.style,\n          size = _this$props4.size,\n          className = _this$props4.className; // Not wrap when there is not addons\n\n      if (!addonBefore && !addonAfter) {\n        return children;\n      }\n\n      var wrapperClassName = \"\".concat(prefixCls, \"-group\");\n      var addonClassName = \"\".concat(wrapperClassName, \"-addon\");\n      var addonBeforeNode = addonBefore ? external_react_[\"createElement\"](\"span\", {\n        className: addonClassName\n      }, addonBefore) : null;\n      var addonAfterNode = addonAfter ? external_react_[\"createElement\"](\"span\", {\n        className: addonClassName\n      }, addonAfter) : null;\n      var mergedWrapperClassName = classnames_default()(\"\".concat(prefixCls, \"-wrapper\"), Input_defineProperty({}, wrapperClassName, addonBefore || addonAfter));\n      var mergedGroupClassName = classnames_default()(className, \"\".concat(prefixCls, \"-group-wrapper\"), (_classNames3 = {}, Input_defineProperty(_classNames3, \"\".concat(prefixCls, \"-group-wrapper-sm\"), size === 'small'), Input_defineProperty(_classNames3, \"\".concat(prefixCls, \"-group-wrapper-lg\"), size === 'large'), _classNames3)); // Need another wrapper for changing display:table to display:inline-block\n      // and put style prop in wrapper\n\n      return external_react_[\"createElement\"](\"span\", {\n        className: mergedGroupClassName,\n        style: style\n      }, external_react_[\"createElement\"](\"span\", {\n        className: mergedWrapperClassName\n      }, addonBeforeNode, external_react_[\"cloneElement\"](children, {\n        style: null\n      }), addonAfterNode));\n    }\n  }, {\n    key: \"renderLabeledIcon\",\n    value: function renderLabeledIcon(prefixCls, children) {\n      var _classNames4;\n\n      var props = this.props;\n      var suffix = this.renderSuffix(prefixCls);\n\n      if (!hasPrefixSuffix(props)) {\n        return children;\n      }\n\n      var prefix = props.prefix ? external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-prefix\")\n      }, props.prefix) : null;\n      var affixWrapperCls = classnames_default()(props.className, \"\".concat(prefixCls, \"-affix-wrapper\"), (_classNames4 = {}, Input_defineProperty(_classNames4, \"\".concat(prefixCls, \"-affix-wrapper-sm\"), props.size === 'small'), Input_defineProperty(_classNames4, \"\".concat(prefixCls, \"-affix-wrapper-lg\"), props.size === 'large'), _classNames4));\n      return external_react_[\"createElement\"](\"span\", {\n        className: affixWrapperCls,\n        style: props.style\n      }, prefix, external_react_[\"cloneElement\"](children, {\n        style: null,\n        className: this.getInputClassName(prefixCls)\n      }), suffix);\n    }\n  }, {\n    key: \"renderInput\",\n    value: function renderInput(prefixCls) {\n      var _this$props5 = this.props,\n          className = _this$props5.className,\n          addonBefore = _this$props5.addonBefore,\n          addonAfter = _this$props5.addonAfter;\n      var value = this.state.value; // Fix https://fb.me/react-unknown-prop\n\n      var otherProps = es(this.props, ['prefixCls', 'onPressEnter', 'addonBefore', 'addonAfter', 'prefix', 'suffix', 'allowClear', // Input elements must be either controlled or uncontrolled,\n      // specify either the value prop, or the defaultValue prop, but not both.\n      'defaultValue']);\n      return this.renderLabeledIcon(prefixCls, external_react_[\"createElement\"](\"input\", Input_extends({}, otherProps, {\n        value: fixControlledValue(value),\n        onChange: this.handleChange,\n        className: classnames_default()(this.getInputClassName(prefixCls), Input_defineProperty({}, className, className && !addonBefore && !addonAfter)),\n        onKeyDown: this.handleKeyDown,\n        ref: this.saveInput\n      })));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderComponent);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      if ('value' in nextProps) {\n        return {\n          value: nextProps.value\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Input;\n}(external_react_[\"Component\"]);\n\nInput_Input.defaultProps = {\n  type: 'text',\n  disabled: false\n};\nInput_Input.propTypes = {\n  type: prop_types[\"string\"],\n  id: prop_types[\"string\"],\n  size: prop_types[\"oneOf\"](InputSizes),\n  maxLength: prop_types[\"number\"],\n  disabled: prop_types[\"bool\"],\n  value: prop_types[\"any\"],\n  defaultValue: prop_types[\"any\"],\n  className: prop_types[\"string\"],\n  addonBefore: prop_types[\"node\"],\n  addonAfter: prop_types[\"node\"],\n  prefixCls: prop_types[\"string\"],\n  onPressEnter: prop_types[\"func\"],\n  onKeyDown: prop_types[\"func\"],\n  onKeyUp: prop_types[\"func\"],\n  onFocus: prop_types[\"func\"],\n  onBlur: prop_types[\"func\"],\n  prefix: prop_types[\"node\"],\n  suffix: prop_types[\"node\"],\n  allowClear: prop_types[\"bool\"]\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(Input_Input);\n/* harmony default export */ var input_Input = (Input_Input);\n// CONCATENATED MODULE: ./node_modules/antd/es/input/Group.js\nfunction Group_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\n\n\nvar Group_Group = function Group(props) {\n  return external_react_[\"createElement\"](ConfigConsumer, null, function (_ref) {\n    var _classNames;\n\n    var getPrefixCls = _ref.getPrefixCls;\n    var customizePrefixCls = props.prefixCls,\n        _props$className = props.className,\n        className = _props$className === void 0 ? '' : _props$className;\n    var prefixCls = getPrefixCls('input-group', customizePrefixCls);\n    var cls = classnames_default()(prefixCls, (_classNames = {}, Group_defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), props.size === 'large'), Group_defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), props.size === 'small'), Group_defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\"), props.compact), _classNames), className);\n    return external_react_[\"createElement\"](\"span\", {\n      className: cls,\n      style: props.style,\n      onMouseEnter: props.onMouseEnter,\n      onMouseLeave: props.onMouseLeave,\n      onFocus: props.onFocus,\n      onBlur: props.onBlur\n    }, props.children);\n  });\n};\n\n/* harmony default export */ var input_Group = (Group_Group);\n// CONCATENATED MODULE: ./node_modules/antd/es/input/Search.js\nfunction Search_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Search_typeof = function _typeof(obj) { return typeof obj; }; } else { Search_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Search_typeof(obj); }\n\nfunction Search_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\nfunction Search_extends() { Search_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 Search_extends.apply(this, arguments); }\n\nfunction Search_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Search_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 Search_createClass(Constructor, protoProps, staticProps) { if (protoProps) Search_defineProperties(Constructor.prototype, protoProps); if (staticProps) Search_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Search_possibleConstructorReturn(self, call) { if (call && (Search_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Search_assertThisInitialized(self); }\n\nfunction Search_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Search_getPrototypeOf(o) { Search_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Search_getPrototypeOf(o); }\n\nfunction Search_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) Search_setPrototypeOf(subClass, superClass); }\n\nfunction Search_setPrototypeOf(o, p) { Search_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Search_setPrototypeOf(o, p); }\n\nvar Search_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\nvar Search_Search =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Search_inherits(Search, _React$Component);\n\n  function Search() {\n    var _this;\n\n    Search_classCallCheck(this, Search);\n\n    _this = Search_possibleConstructorReturn(this, Search_getPrototypeOf(Search).apply(this, arguments));\n\n    _this.onSearch = function (e) {\n      var onSearch = _this.props.onSearch;\n\n      if (onSearch) {\n        onSearch(_this.input.input.value, e);\n      }\n\n      _this.input.focus();\n    };\n\n    _this.saveInput = function (node) {\n      _this.input = node;\n    };\n\n    _this.renderSuffix = function (prefixCls) {\n      var _this$props = _this.props,\n          suffix = _this$props.suffix,\n          enterButton = _this$props.enterButton;\n      if (enterButton) return suffix;\n      var node = external_react_[\"createElement\"](es_icon, {\n        className: \"\".concat(prefixCls, \"-icon\"),\n        type: \"search\",\n        key: \"searchIcon\",\n        onClick: _this.onSearch\n      });\n\n      if (suffix) {\n        var cloneSuffix = suffix;\n\n        if (external_react_[\"isValidElement\"](cloneSuffix) && !cloneSuffix.key) {\n          cloneSuffix = external_react_[\"cloneElement\"](cloneSuffix, {\n            key: 'originSuffix'\n          });\n        }\n\n        return [cloneSuffix, node];\n      }\n\n      return node;\n    };\n\n    _this.renderAddonAfter = function (prefixCls) {\n      var _this$props2 = _this.props,\n          enterButton = _this$props2.enterButton,\n          size = _this$props2.size,\n          disabled = _this$props2.disabled,\n          addonAfter = _this$props2.addonAfter;\n      if (!enterButton) return addonAfter;\n      var btnClassName = \"\".concat(prefixCls, \"-button\");\n      var button;\n      var enterButtonAsElement = enterButton;\n\n      if (enterButtonAsElement.type === es_button || enterButtonAsElement.type === 'button') {\n        button = external_react_[\"cloneElement\"](enterButtonAsElement, Search_extends({\n          onClick: _this.onSearch,\n          key: 'enterButton'\n        }, enterButtonAsElement.type === es_button ? {\n          className: btnClassName,\n          size: size\n        } : {}));\n      } else {\n        button = external_react_[\"createElement\"](es_button, {\n          className: btnClassName,\n          type: \"primary\",\n          size: size,\n          disabled: disabled,\n          key: \"enterButton\",\n          onClick: _this.onSearch\n        }, enterButton === true ? external_react_[\"createElement\"](es_icon, {\n          type: \"search\"\n        }) : enterButton);\n      }\n\n      if (addonAfter) {\n        return [button, addonAfter];\n      }\n\n      return button;\n    };\n\n    _this.renderSearch = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          customizeInputPrefixCls = _a.inputPrefixCls,\n          size = _a.size,\n          enterButton = _a.enterButton,\n          className = _a.className,\n          restProps = Search_rest(_a, [\"prefixCls\", \"inputPrefixCls\", \"size\", \"enterButton\", \"className\"]);\n\n      delete restProps.onSearch;\n      var prefixCls = getPrefixCls('input-search', customizePrefixCls);\n      var inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls);\n      var inputClassName;\n\n      if (enterButton) {\n        var _classNames;\n\n        inputClassName = classnames_default()(prefixCls, className, (_classNames = {}, Search_defineProperty(_classNames, \"\".concat(prefixCls, \"-enter-button\"), !!enterButton), Search_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), !!size), _classNames));\n      } else {\n        inputClassName = classnames_default()(prefixCls, className);\n      }\n\n      return external_react_[\"createElement\"](input_Input, Search_extends({\n        onPressEnter: _this.onSearch\n      }, restProps, {\n        size: size,\n        prefixCls: inputPrefixCls,\n        addonAfter: _this.renderAddonAfter(prefixCls),\n        suffix: _this.renderSuffix(prefixCls),\n        ref: _this.saveInput,\n        className: inputClassName\n      }));\n    };\n\n    return _this;\n  }\n\n  Search_createClass(Search, [{\n    key: \"focus\",\n    value: function focus() {\n      this.input.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.input.blur();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderSearch);\n    }\n  }]);\n\n  return Search;\n}(external_react_[\"Component\"]);\n\n\nSearch_Search.defaultProps = {\n  enterButton: false\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/input/calculateNodeHeight.js\n// Thanks to https://github.com/andreypopp/react-textarea-autosize/\n\n/**\n * calculateNodeHeight(uiTextNode, useCache = false)\n */\nvar HIDDEN_TEXTAREA_STYLE = \"\\n  min-height:0 !important;\\n  max-height:none !important;\\n  height:0 !important;\\n  visibility:hidden !important;\\n  overflow:hidden !important;\\n  position:absolute !important;\\n  z-index:-1000 !important;\\n  top:0 !important;\\n  right:0 !important\\n\";\nvar SIZING_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'font-variant', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];\nvar computedStyleCache = {};\nvar hiddenTextarea;\nfunction calculateNodeStyling(node) {\n  var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');\n\n  if (useCache && computedStyleCache[nodeRef]) {\n    return computedStyleCache[nodeRef];\n  }\n\n  var style = window.getComputedStyle(node);\n  var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');\n  var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n  var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n  var sizingStyle = SIZING_STYLE.map(function (name) {\n    return \"\".concat(name, \":\").concat(style.getPropertyValue(name));\n  }).join(';');\n  var nodeInfo = {\n    sizingStyle: sizingStyle,\n    paddingSize: paddingSize,\n    borderSize: borderSize,\n    boxSizing: boxSizing\n  };\n\n  if (useCache && nodeRef) {\n    computedStyleCache[nodeRef] = nodeInfo;\n  }\n\n  return nodeInfo;\n}\nfunction calculateNodeHeight(uiTextNode) {\n  var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  var minRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n  var maxRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  if (!hiddenTextarea) {\n    hiddenTextarea = document.createElement('textarea');\n    document.body.appendChild(hiddenTextarea);\n  } // Fix wrap=\"off\" issue\n  // https://github.com/ant-design/ant-design/issues/6577\n\n\n  if (uiTextNode.getAttribute('wrap')) {\n    hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));\n  } else {\n    hiddenTextarea.removeAttribute('wrap');\n  } // Copy all CSS properties that have an impact on the height of the content in\n  // the textbox\n\n\n  var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),\n      paddingSize = _calculateNodeStyling.paddingSize,\n      borderSize = _calculateNodeStyling.borderSize,\n      boxSizing = _calculateNodeStyling.boxSizing,\n      sizingStyle = _calculateNodeStyling.sizingStyle; // Need to have the overflow attribute to hide the scrollbar otherwise\n  // text-lines will not calculated properly as the shadow will technically be\n  // narrower for content\n\n\n  hiddenTextarea.setAttribute('style', \"\".concat(sizingStyle, \";\").concat(HIDDEN_TEXTAREA_STYLE));\n  hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';\n  var minHeight = Number.MIN_SAFE_INTEGER;\n  var maxHeight = Number.MAX_SAFE_INTEGER;\n  var height = hiddenTextarea.scrollHeight;\n  var overflowY;\n\n  if (boxSizing === 'border-box') {\n    // border-box: add border, since height = content + padding + border\n    height = height + borderSize;\n  } else if (boxSizing === 'content-box') {\n    // remove padding, since height = content\n    height = height - paddingSize;\n  }\n\n  if (minRows !== null || maxRows !== null) {\n    // measure height of a textarea with a single row\n    hiddenTextarea.value = ' ';\n    var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n    if (minRows !== null) {\n      minHeight = singleRowHeight * minRows;\n\n      if (boxSizing === 'border-box') {\n        minHeight = minHeight + paddingSize + borderSize;\n      }\n\n      height = Math.max(minHeight, height);\n    }\n\n    if (maxRows !== null) {\n      maxHeight = singleRowHeight * maxRows;\n\n      if (boxSizing === 'border-box') {\n        maxHeight = maxHeight + paddingSize + borderSize;\n      }\n\n      overflowY = height > maxHeight ? '' : 'hidden';\n      height = Math.min(maxHeight, height);\n    }\n  }\n\n  return {\n    height: height,\n    minHeight: minHeight,\n    maxHeight: maxHeight,\n    overflowY: overflowY\n  };\n}\n// CONCATENATED MODULE: ./node_modules/antd/es/_util/resizeObserver.js\nfunction resizeObserver_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { resizeObserver_typeof = function _typeof(obj) { return typeof obj; }; } else { resizeObserver_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return resizeObserver_typeof(obj); }\n\nfunction resizeObserver_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction resizeObserver_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 resizeObserver_createClass(Constructor, protoProps, staticProps) { if (protoProps) resizeObserver_defineProperties(Constructor.prototype, protoProps); if (staticProps) resizeObserver_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction resizeObserver_possibleConstructorReturn(self, call) { if (call && (resizeObserver_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return resizeObserver_assertThisInitialized(self); }\n\nfunction resizeObserver_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction resizeObserver_getPrototypeOf(o) { resizeObserver_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return resizeObserver_getPrototypeOf(o); }\n\nfunction resizeObserver_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) resizeObserver_setPrototypeOf(subClass, superClass); }\n\nfunction resizeObserver_setPrototypeOf(o, p) { resizeObserver_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return resizeObserver_setPrototypeOf(o, p); }\n\n\n\n\n\nvar resizeObserver_ReactResizeObserver =\n/*#__PURE__*/\nfunction (_React$Component) {\n  resizeObserver_inherits(ReactResizeObserver, _React$Component);\n\n  function ReactResizeObserver() {\n    var _this;\n\n    resizeObserver_classCallCheck(this, ReactResizeObserver);\n\n    _this = resizeObserver_possibleConstructorReturn(this, resizeObserver_getPrototypeOf(ReactResizeObserver).apply(this, arguments));\n    _this.resizeObserver = null;\n\n    _this.onResize = function () {\n      var onResize = _this.props.onResize;\n\n      if (onResize) {\n        onResize();\n      }\n    };\n\n    return _this;\n  }\n\n  resizeObserver_createClass(ReactResizeObserver, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.onComponentUpdated();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.onComponentUpdated();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.destroyObserver();\n    }\n  }, {\n    key: \"onComponentUpdated\",\n    value: function onComponentUpdated() {\n      var disabled = this.props.disabled;\n      var element = Object(external_react_dom_[\"findDOMNode\"])(this);\n\n      if (!this.resizeObserver && !disabled && element) {\n        // Add resize observer\n        this.resizeObserver = new ResizeObserver_es[\"a\" /* default */](this.onResize);\n        this.resizeObserver.observe(element);\n      } else if (disabled) {\n        // Remove resize observer\n        this.destroyObserver();\n      }\n    }\n  }, {\n    key: \"destroyObserver\",\n    value: function destroyObserver() {\n      if (this.resizeObserver) {\n        this.resizeObserver.disconnect();\n        this.resizeObserver = null;\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var children = this.props.children;\n      return children;\n    }\n  }]);\n\n  return ReactResizeObserver;\n}(external_react_[\"Component\"]);\n\n/* harmony default export */ var resizeObserver = (resizeObserver_ReactResizeObserver);\n// CONCATENATED MODULE: ./node_modules/antd/es/input/TextArea.js\nfunction TextArea_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { TextArea_typeof = function _typeof(obj) { return typeof obj; }; } else { TextArea_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return TextArea_typeof(obj); }\n\nfunction TextArea_extends() { TextArea_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 TextArea_extends.apply(this, arguments); }\n\nfunction TextArea_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\nfunction TextArea_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction TextArea_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 TextArea_createClass(Constructor, protoProps, staticProps) { if (protoProps) TextArea_defineProperties(Constructor.prototype, protoProps); if (staticProps) TextArea_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction TextArea_possibleConstructorReturn(self, call) { if (call && (TextArea_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return TextArea_assertThisInitialized(self); }\n\nfunction TextArea_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction TextArea_getPrototypeOf(o) { TextArea_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return TextArea_getPrototypeOf(o); }\n\nfunction TextArea_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) TextArea_setPrototypeOf(subClass, superClass); }\n\nfunction TextArea_setPrototypeOf(o, p) { TextArea_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return TextArea_setPrototypeOf(o, p); }\n\nvar TextArea_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\nfunction onNextFrame(cb) {\n  if (window.requestAnimationFrame) {\n    return window.requestAnimationFrame(cb);\n  }\n\n  return window.setTimeout(cb, 1);\n}\n\nfunction clearNextFrameAction(nextFrameId) {\n  if (window.cancelAnimationFrame) {\n    window.cancelAnimationFrame(nextFrameId);\n  } else {\n    window.clearTimeout(nextFrameId);\n  }\n}\n\nvar TextArea_TextArea =\n/*#__PURE__*/\nfunction (_React$Component) {\n  TextArea_inherits(TextArea, _React$Component);\n\n  function TextArea() {\n    var _this;\n\n    TextArea_classCallCheck(this, TextArea);\n\n    _this = TextArea_possibleConstructorReturn(this, TextArea_getPrototypeOf(TextArea).apply(this, arguments));\n    _this.state = {\n      textareaStyles: {}\n    };\n\n    _this.resizeOnNextFrame = function () {\n      if (_this.nextFrameActionId) {\n        clearNextFrameAction(_this.nextFrameActionId);\n      }\n\n      _this.nextFrameActionId = onNextFrame(_this.resizeTextarea);\n    };\n\n    _this.resizeTextarea = function () {\n      var autosize = _this.props.autosize;\n\n      if (!autosize || !_this.textAreaRef) {\n        return;\n      }\n\n      var minRows = autosize.minRows,\n          maxRows = autosize.maxRows;\n      var textareaStyles = calculateNodeHeight(_this.textAreaRef, false, minRows, maxRows);\n\n      _this.setState({\n        textareaStyles: textareaStyles\n      });\n    };\n\n    _this.handleTextareaChange = function (e) {\n      if (!('value' in _this.props)) {\n        _this.resizeTextarea();\n      }\n\n      var onChange = _this.props.onChange;\n\n      if (onChange) {\n        onChange(e);\n      }\n    };\n\n    _this.handleKeyDown = function (e) {\n      var _this$props = _this.props,\n          onPressEnter = _this$props.onPressEnter,\n          onKeyDown = _this$props.onKeyDown;\n\n      if (e.keyCode === 13 && onPressEnter) {\n        onPressEnter(e);\n      }\n\n      if (onKeyDown) {\n        onKeyDown(e);\n      }\n    };\n\n    _this.saveTextAreaRef = function (textArea) {\n      _this.textAreaRef = textArea;\n    };\n\n    _this.renderTextArea = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n      var _this$props2 = _this.props,\n          customizePrefixCls = _this$props2.prefixCls,\n          className = _this$props2.className,\n          disabled = _this$props2.disabled,\n          autosize = _this$props2.autosize;\n\n      var props = TextArea_rest(_this.props, []);\n\n      var otherProps = es(props, ['prefixCls', 'onPressEnter', 'autosize']);\n      var prefixCls = getPrefixCls('input', customizePrefixCls);\n      var cls = classnames_default()(prefixCls, className, TextArea_defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled));\n\n      var style = TextArea_extends({}, props.style, _this.state.textareaStyles); // Fix https://github.com/ant-design/ant-design/issues/6776\n      // Make sure it could be reset when using form.getFieldDecorator\n\n\n      if ('value' in otherProps) {\n        otherProps.value = otherProps.value || '';\n      }\n\n      return external_react_[\"createElement\"](resizeObserver, {\n        onResize: _this.resizeOnNextFrame,\n        disabled: !autosize\n      }, external_react_[\"createElement\"](\"textarea\", TextArea_extends({}, otherProps, {\n        className: cls,\n        style: style,\n        onKeyDown: _this.handleKeyDown,\n        onChange: _this.handleTextareaChange,\n        ref: _this.saveTextAreaRef\n      })));\n    };\n\n    return _this;\n  }\n\n  TextArea_createClass(TextArea, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.resizeTextarea();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      // Re-render with the new content then recalculate the height as required.\n      if (prevProps.value !== this.props.value) {\n        this.resizeOnNextFrame();\n      }\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      this.textAreaRef.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.textAreaRef.blur();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderTextArea);\n    }\n  }]);\n\n  return TextArea;\n}(external_react_[\"Component\"]);\n\nObject(react_lifecycles_compat_es[\"polyfill\"])(TextArea_TextArea);\n/* harmony default export */ var input_TextArea = (TextArea_TextArea);\n// CONCATENATED MODULE: ./node_modules/antd/es/input/Password.js\nfunction Password_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Password_typeof = function _typeof(obj) { return typeof obj; }; } else { Password_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Password_typeof(obj); }\n\nfunction Password_extends() { Password_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 Password_extends.apply(this, arguments); }\n\nfunction Password_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\nfunction Password_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Password_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 Password_createClass(Constructor, protoProps, staticProps) { if (protoProps) Password_defineProperties(Constructor.prototype, protoProps); if (staticProps) Password_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Password_possibleConstructorReturn(self, call) { if (call && (Password_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Password_assertThisInitialized(self); }\n\nfunction Password_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Password_getPrototypeOf(o) { Password_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Password_getPrototypeOf(o); }\n\nfunction Password_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) Password_setPrototypeOf(subClass, superClass); }\n\nfunction Password_setPrototypeOf(o, p) { Password_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Password_setPrototypeOf(o, p); }\n\nvar Password_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\nvar ActionMap = {\n  click: 'onClick',\n  hover: 'onMouseOver'\n};\n\nvar Password_Password =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Password_inherits(Password, _React$Component);\n\n  function Password() {\n    var _this;\n\n    Password_classCallCheck(this, Password);\n\n    _this = Password_possibleConstructorReturn(this, Password_getPrototypeOf(Password).apply(this, arguments));\n    _this.state = {\n      visible: false\n    };\n\n    _this.onChange = function () {\n      _this.setState({\n        visible: !_this.state.visible\n      });\n    };\n\n    return _this;\n  }\n\n  Password_createClass(Password, [{\n    key: \"getIcon\",\n    value: function getIcon() {\n      var _iconProps;\n\n      var _this$props = this.props,\n          prefixCls = _this$props.prefixCls,\n          action = _this$props.action;\n      var iconTrigger = ActionMap[action] || '';\n      var iconProps = (_iconProps = {}, Password_defineProperty(_iconProps, iconTrigger, this.onChange), Password_defineProperty(_iconProps, \"className\", \"\".concat(prefixCls, \"-icon\")), Password_defineProperty(_iconProps, \"type\", this.state.visible ? 'eye-invisible' : 'eye'), Password_defineProperty(_iconProps, \"key\", 'passwordIcon'), Password_defineProperty(_iconProps, \"onMouseDown\", function onMouseDown(e) {\n        // Prevent focused state lost\n        // https://github.com/ant-design/ant-design/issues/15173\n        e.preventDefault();\n      }), _iconProps);\n      return external_react_[\"createElement\"](es_icon, iconProps);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _a = this.props,\n          className = _a.className,\n          prefixCls = _a.prefixCls,\n          inputPrefixCls = _a.inputPrefixCls,\n          size = _a.size,\n          suffix = _a.suffix,\n          visibilityToggle = _a.visibilityToggle,\n          restProps = Password_rest(_a, [\"className\", \"prefixCls\", \"inputPrefixCls\", \"size\", \"suffix\", \"visibilityToggle\"]);\n\n      var suffixIcon = visibilityToggle && this.getIcon();\n      var inputClassName = classnames_default()(prefixCls, className, Password_defineProperty({}, \"\".concat(prefixCls, \"-\").concat(size), !!size));\n      return external_react_[\"createElement\"](input_Input, Password_extends({}, restProps, {\n        type: this.state.visible ? 'text' : 'password',\n        size: size,\n        className: inputClassName,\n        prefixCls: inputPrefixCls,\n        suffix: suffixIcon\n      }));\n    }\n  }]);\n\n  return Password;\n}(external_react_[\"Component\"]);\n\n\nPassword_Password.defaultProps = {\n  inputPrefixCls: 'ant-input',\n  prefixCls: 'ant-input-password',\n  action: 'click',\n  visibilityToggle: true\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/input/index.js\n\n\n\n\n\ninput_Input.Group = input_Group;\ninput_Input.Search = Search_Search;\ninput_Input.TextArea = input_TextArea;\ninput_Input.Password = Password_Password;\n/* harmony default export */ var es_input = (input_Input);\n// CONCATENATED MODULE: ./node_modules/antd/es/row/index.js\n\n/* harmony default export */ var es_row = (row_Row);\n// CONCATENATED MODULE: ./node_modules/antd/es/col/index.js\n\n/* harmony default export */ var col = (col_Col);\n// EXTERNAL MODULE: ./src/libs/fontawesome-5.2.0/metadata/icons.json\nvar metadata_icons = __webpack_require__(276);\n\n// CONCATENATED MODULE: ./src/components/icon/IconChooser.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction IconChooser_createSuper(Derived) { var hasNativeReflectConstruct = IconChooser_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction IconChooser_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\nvar IconChooser_IconChooser = /*#__PURE__*/function (_Component) {\n  inherits_default()(IconChooser, _Component);\n\n  var _super = IconChooser_createSuper(IconChooser);\n\n  function IconChooser() {\n    var _this;\n\n    classCallCheck_default()(this, IconChooser);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.handlers = {\n      onOk: function onOk() {\n        var icon = _this.state.icon;\n        var onChange = _this.props.onChange;\n\n        if (onChange) {\n          onChange(icon);\n        }\n\n        _this.setState({\n          visible: false\n        });\n      },\n      onCancel: function onCancel() {\n        _this.modalHandlers.onHide();\n      },\n      onClick: function onClick() {\n        _this.modalHandlers.onShow();\n      },\n      onClickIcon: function onClickIcon(icon) {\n        _this.setState({\n          icon: icon\n        }, function () {\n          var onChange = _this.props.onChange;\n\n          if (onChange) {\n            onChange(icon);\n          }\n\n          _this.modalHandlers.onHide();\n        });\n      },\n      onSearch: debounce_default()(function (value) {\n        _this.setState({\n          textSearch: value\n        });\n      }, 500)\n    };\n    _this.modalHandlers = {\n      onShow: function onShow() {\n        _this.setState({\n          visible: true\n        });\n      },\n      onHide: function onHide() {\n        _this.setState({\n          visible: false\n        });\n      }\n    };\n    _this.state = {\n      icon: _this.props.icon,\n      textSearch: '',\n      visible: false\n    };\n\n    _this.getPrefix = function (style) {\n      var prefix = 'fas';\n\n      if (style === 'brands') {\n        prefix = 'fab';\n      } else if (style === 'regular') {\n        prefix = 'far';\n      }\n\n      return prefix;\n    };\n\n    _this.getIcons = function (textSearch) {\n      var lowerCase = textSearch.toLowerCase();\n      return Object.keys(metadata_icons).filter(function (icon) {\n        return icon.includes(lowerCase) || metadata_icons[icon].search.terms.some(function (term) {\n          return term.includes(lowerCase);\n        });\n      }).map(function (icon) {\n        return helpers_defineProperty_default()({}, icon, metadata_icons[icon]);\n      });\n    };\n\n    return _this;\n  }\n\n  createClass_default()(IconChooser, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      this.setState({\n        icon: nextProps.icon || this.state.icon\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$handlers = this.handlers,\n          onOk = _this$handlers.onOk,\n          onCancel = _this$handlers.onCancel,\n          onClick = _this$handlers.onClick,\n          onClickIcon = _this$handlers.onClickIcon,\n          onSearch = _this$handlers.onSearch;\n      var _this$state = this.state,\n          icon = _this$state.icon,\n          visible = _this$state.visible,\n          textSearch = _this$state.textSearch;\n      var label = /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        style: {\n          marginRight: 8\n        }\n      }, esm_i18next.t('common.icon')), /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: Object.keys(icon)[0],\n        prefix: this.getPrefix(icon[Object.keys(icon)[0]].styles[0])\n      }));\n      var filteredIcons = this.getIcons(textSearch);\n      var filteredIconsLength = filteredIcons.length;\n      var title = /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        style: {\n          padding: '0 24px'\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(es_input, {\n        onChange: function onChange(e) {\n          onSearch(e.target.value);\n        },\n        placeholder: esm_i18next.t('imagemap.marker.search-icon', {\n          length: filteredIconsLength\n        })\n      }));\n      return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: label,\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        onClick: onClick\n      }, esm_i18next.t('imagemap.marker.choose-icon'))), /*#__PURE__*/external_react_default.a.createElement(modal, {\n        onOk: onOk,\n        onCancel: onCancel,\n        width: \"80%\",\n        visible: visible,\n        title: title,\n        bodyStyle: {\n          margin: 16,\n          overflowY: 'auto',\n          height: '600px'\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(es_row, null, filteredIcons.map(function (ic) {\n        var name = Object.keys(ic)[0];\n        var metadata = ic[name];\n\n        var prefix = _this2.getPrefix(metadata.styles[0]);\n\n        return /*#__PURE__*/external_react_default.a.createElement(col, {\n          onClick: onClickIcon.bind(_this2, ic),\n          key: name,\n          span: 4,\n          className: \"rde-icon-container\"\n        }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n          className: \"rde-icon-top\"\n        }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n          name: name,\n          size: 3,\n          prefix: prefix\n        })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n          className: \"rde-icon-bottom\"\n        }, name));\n      }))));\n    }\n  }]);\n\n  return IconChooser;\n}(external_react_[\"Component\"]);\n\nIconChooser_IconChooser.propTypes = {\n  onChange: prop_types_default.a.func,\n  icon: prop_types_default.a.any\n};\nIconChooser_IconChooser.defaultProps = {\n  icon: {\n    'map-marker-alt': metadata_icons['map-marker-alt']\n  }\n};\n/* harmony default export */ var icon_IconChooser = (IconChooser_IconChooser);\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/MarkerProperty.js\n\n\n\n/* harmony default export */ var MarkerProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('icon', {\n      initialValue: data.icon\n    })( /*#__PURE__*/external_react_default.a.createElement(icon_IconChooser, {\n      icon: data.icon\n    }))));\n  }\n});\n// EXTERNAL MODULE: ./node_modules/rc-switch/es/index.js\nvar rc_switch_es = __webpack_require__(684);\nvar rc_switch_es_default = /*#__PURE__*/__webpack_require__.n(rc_switch_es);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/switch/index.js\nfunction switch_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { switch_typeof = function _typeof(obj) { return typeof obj; }; } else { switch_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return switch_typeof(obj); }\n\nfunction switch_extends() { switch_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 switch_extends.apply(this, arguments); }\n\nfunction switch_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\nfunction switch_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction switch_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 switch_createClass(Constructor, protoProps, staticProps) { if (protoProps) switch_defineProperties(Constructor.prototype, protoProps); if (staticProps) switch_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction switch_possibleConstructorReturn(self, call) { if (call && (switch_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return switch_assertThisInitialized(self); }\n\nfunction switch_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction switch_getPrototypeOf(o) { switch_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return switch_getPrototypeOf(o); }\n\nfunction switch_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) switch_setPrototypeOf(subClass, superClass); }\n\nfunction switch_setPrototypeOf(o, p) { switch_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return switch_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\nvar switch_Switch =\n/*#__PURE__*/\nfunction (_React$Component) {\n  switch_inherits(Switch, _React$Component);\n\n  function Switch() {\n    var _this;\n\n    switch_classCallCheck(this, Switch);\n\n    _this = switch_possibleConstructorReturn(this, switch_getPrototypeOf(Switch).apply(this, arguments));\n\n    _this.saveSwitch = function (node) {\n      _this.rcSwitch = node;\n    };\n\n    _this.renderSwitch = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n      var _this$props = _this.props,\n          customizePrefixCls = _this$props.prefixCls,\n          size = _this$props.size,\n          loading = _this$props.loading,\n          _this$props$className = _this$props.className,\n          className = _this$props$className === void 0 ? '' : _this$props$className,\n          disabled = _this$props.disabled;\n      var prefixCls = getPrefixCls('switch', customizePrefixCls);\n      var classes = classnames_default()(className, (_classNames = {}, switch_defineProperty(_classNames, \"\".concat(prefixCls, \"-small\"), size === 'small'), switch_defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), loading), _classNames));\n      var loadingIcon = loading ? external_react_[\"createElement\"](es_icon, {\n        type: \"loading\",\n        className: \"\".concat(prefixCls, \"-loading-icon\")\n      }) : null;\n      return external_react_[\"createElement\"](wave_Wave, {\n        insertExtraNode: true\n      }, external_react_[\"createElement\"](rc_switch_es_default.a, switch_extends({}, es(_this.props, ['loading']), {\n        prefixCls: prefixCls,\n        className: classes,\n        disabled: disabled || loading,\n        ref: _this.saveSwitch,\n        loadingIcon: loadingIcon\n      })));\n    };\n\n    return _this;\n  }\n\n  switch_createClass(Switch, [{\n    key: \"focus\",\n    value: function focus() {\n      this.rcSwitch.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.rcSwitch.blur();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderSwitch);\n    }\n  }]);\n\n  return Switch;\n}(external_react_[\"Component\"]);\n\n\nswitch_Switch.propTypes = {\n  prefixCls: prop_types[\"string\"],\n  // HACK: https://github.com/ant-design/ant-design/issues/5368\n  // size=default and size=large are the same\n  size: prop_types[\"oneOf\"](['small', 'default', 'large']),\n  className: prop_types[\"string\"]\n};\n// CONCATENATED MODULE: ./node_modules/rmc-feedback/es/TouchFeedback.js\n\n\n\n\n\n\n\n\nvar TouchFeedback_TouchFeedback = function (_React$Component) {\n    helpers_inherits_default()(TouchFeedback, _React$Component);\n\n    function TouchFeedback() {\n        helpers_classCallCheck_default()(this, TouchFeedback);\n\n        var _this = helpers_possibleConstructorReturn_default()(this, (TouchFeedback.__proto__ || Object.getPrototypeOf(TouchFeedback)).apply(this, arguments));\n\n        _this.state = {\n            active: false\n        };\n        _this.onTouchStart = function (e) {\n            _this.triggerEvent('TouchStart', true, e);\n        };\n        _this.onTouchMove = function (e) {\n            _this.triggerEvent('TouchMove', false, e);\n        };\n        _this.onTouchEnd = function (e) {\n            _this.triggerEvent('TouchEnd', false, e);\n        };\n        _this.onTouchCancel = function (e) {\n            _this.triggerEvent('TouchCancel', false, e);\n        };\n        _this.onMouseDown = function (e) {\n            // pc simulate mobile\n            _this.triggerEvent('MouseDown', true, e);\n        };\n        _this.onMouseUp = function (e) {\n            _this.triggerEvent('MouseUp', false, e);\n        };\n        _this.onMouseLeave = function (e) {\n            _this.triggerEvent('MouseLeave', false, e);\n        };\n        return _this;\n    }\n\n    helpers_createClass_default()(TouchFeedback, [{\n        key: 'componentDidUpdate',\n        value: function componentDidUpdate() {\n            if (this.props.disabled && this.state.active) {\n                this.setState({\n                    active: false\n                });\n            }\n        }\n    }, {\n        key: 'triggerEvent',\n        value: function triggerEvent(type, isActive, ev) {\n            var eventType = 'on' + type;\n            var children = this.props.children;\n\n            if (children.props[eventType]) {\n                children.props[eventType](ev);\n            }\n            if (isActive !== this.state.active) {\n                this.setState({\n                    active: isActive\n                });\n            }\n        }\n    }, {\n        key: 'render',\n        value: function render() {\n            var _props = this.props,\n                children = _props.children,\n                disabled = _props.disabled,\n                activeClassName = _props.activeClassName,\n                activeStyle = _props.activeStyle;\n\n            var events = disabled ? undefined : {\n                onTouchStart: this.onTouchStart,\n                onTouchMove: this.onTouchMove,\n                onTouchEnd: this.onTouchEnd,\n                onTouchCancel: this.onTouchCancel,\n                onMouseDown: this.onMouseDown,\n                onMouseUp: this.onMouseUp,\n                onMouseLeave: this.onMouseLeave\n            };\n            var child = external_react_default.a.Children.only(children);\n            if (!disabled && this.state.active) {\n                var _child$props = child.props,\n                    style = _child$props.style,\n                    className = _child$props.className;\n\n                if (activeStyle !== false) {\n                    if (activeStyle) {\n                        style = extends_default()({}, style, activeStyle);\n                    }\n                    className = node_modules_classnames_default()(className, activeClassName);\n                }\n                return external_react_default.a.cloneElement(child, extends_default()({ className: className,\n                    style: style }, events));\n            }\n            return external_react_default.a.cloneElement(child, events);\n        }\n    }]);\n\n    return TouchFeedback;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_TouchFeedback = (TouchFeedback_TouchFeedback);\n\nTouchFeedback_TouchFeedback.defaultProps = {\n    disabled: false\n};\n// CONCATENATED MODULE: ./node_modules/rmc-feedback/es/index.js\n\n// CONCATENATED MODULE: ./node_modules/rc-input-number/es/InputHandler.js\n\n\n\n\n\n\n\n\nvar InputHandler_InputHandler = function (_Component) {\n  helpers_inherits_default()(InputHandler, _Component);\n\n  function InputHandler() {\n    helpers_classCallCheck_default()(this, InputHandler);\n\n    return helpers_possibleConstructorReturn_default()(this, _Component.apply(this, arguments));\n  }\n\n  InputHandler.prototype.render = function render() {\n    var _props = this.props,\n        prefixCls = _props.prefixCls,\n        disabled = _props.disabled,\n        otherProps = objectWithoutProperties_default()(_props, ['prefixCls', 'disabled']);\n\n    return external_react_default.a.createElement(\n      es_TouchFeedback,\n      {\n        disabled: disabled,\n        activeClassName: prefixCls + '-handler-active'\n      },\n      external_react_default.a.createElement('span', otherProps)\n    );\n  };\n\n  return InputHandler;\n}(external_react_[\"Component\"]);\n\nInputHandler_InputHandler.propTypes = {\n  prefixCls: prop_types_default.a.string,\n  disabled: prop_types_default.a.bool,\n  onTouchStart: prop_types_default.a.func,\n  onTouchEnd: prop_types_default.a.func,\n  onMouseDown: prop_types_default.a.func,\n  onMouseUp: prop_types_default.a.func,\n  onMouseLeave: prop_types_default.a.func\n};\n\n/* harmony default export */ var es_InputHandler = (InputHandler_InputHandler);\n// CONCATENATED MODULE: ./node_modules/rc-input-number/es/index.js\n\n\n\n\n\n\n\n\n\n\n\nfunction es_noop() {}\n\nfunction preventDefault(e) {\n  e.preventDefault();\n}\n\nfunction defaultParser(input) {\n  return input.replace(/[^\\w\\.-]+/g, '');\n}\n\n/**\n * When click and hold on a button - the speed of auto changin the value.\n */\nvar SPEED = 200;\n\n/**\n * When click and hold on a button - the delay before auto changin the value.\n */\nvar DELAY = 600;\n\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 */\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 es_InputNumber = function (_React$Component) {\n  helpers_inherits_default()(InputNumber, _React$Component);\n\n  function InputNumber(props) {\n    helpers_classCallCheck_default()(this, InputNumber);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, _React$Component.call(this, props));\n\n    es_initialiseProps.call(_this);\n\n    var value = void 0;\n    if ('value' in props) {\n      value = props.value;\n    } else {\n      value = props.defaultValue;\n    }\n    _this.state = {};\n\n    value = _this.toNumber(value);\n    value = _this.getValidValue(value);\n\n    _this.state = {\n      inputValue: _this.toPrecisionAsStep(value),\n      value: value,\n      focused: props.autoFocus\n    };\n    return _this;\n  }\n\n  InputNumber.prototype.componentDidMount = function componentDidMount() {\n    this.componentDidUpdate();\n  };\n\n  InputNumber.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n    if ('value' in nextProps && nextProps.value !== this.props.value) {\n      var value = this.state.focused ? nextProps.value : this.getValidValue(nextProps.value, nextProps.min, nextProps.max);\n      var nextInputValue = void 0;\n      if (this.pressingUpOrDown) {\n        nextInputValue = value;\n      } else if (this.inputting) {\n        nextInputValue = this.rawInput;\n      } else {\n        nextInputValue = this.toPrecisionAsStep(value);\n      }\n      this.setState({\n        value: value,\n        inputValue: nextInputValue\n      });\n    }\n\n    // Trigger onChange when max or min change\n    // https://github.com/ant-design/ant-design/issues/11574\n    var nextValue = 'value' in nextProps ? nextProps.value : this.state.value;\n    var _props = this.props,\n        onChange = _props.onChange,\n        max = _props.max,\n        min = _props.min;\n    // ref: null < 20 === true\n    // https://github.com/ant-design/ant-design/issues/14277\n\n    if ('max' in nextProps && nextProps.max !== max && typeof nextValue === 'number' && nextValue > nextProps.max && onChange) {\n      onChange(nextProps.max);\n    }\n    if ('min' in nextProps && nextProps.min !== min && typeof nextValue === 'number' && nextValue < nextProps.min && onChange) {\n      onChange(nextProps.min);\n    }\n  };\n\n  InputNumber.prototype.componentDidUpdate = function componentDidUpdate() {\n    // Restore cursor\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\n        if (\n        // 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.cursorStart + 1;\n\n          // If not have last string, just position to the end\n          if (!this.cursorAfter) {\n            pos = this.input.value.length;\n          } else if (this.lastKeyCode === KeyCode[\"a\" /* default */].BACKSPACE) {\n            pos = this.cursorStart - 1;\n          } else if (this.lastKeyCode === KeyCode[\"a\" /* default */].DELETE) {\n            pos = this.cursorStart;\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[\"a\" /* default */].BACKSPACE:\n              this.fixCaret(this.cursorStart - 1, this.cursorStart - 1);\n              break;\n            case KeyCode[\"a\" /* default */].DELETE:\n              this.fixCaret(this.cursorStart + 1, this.cursorStart + 1);\n              break;\n            default:\n            // Do nothing\n          }\n        }\n      }\n    } catch (e) {}\n    // Do nothing\n\n\n    // Reset last key\n    this.lastKeyCode = null;\n\n    // pressingUpOrDown is true means that someone just click up or down button\n    if (!this.pressingUpOrDown) {\n      return;\n    }\n    if (this.props.focusOnUpDown && this.state.focused) {\n      if (document.activeElement !== this.input) {\n        this.focus();\n      }\n    }\n\n    this.pressingUpOrDown = false;\n  };\n\n  InputNumber.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.stop();\n  };\n\n  InputNumber.prototype.getCurrentValidValue = function getCurrentValidValue(value) {\n    var val = value;\n    if (val === '') {\n      val = '';\n    } else if (!this.isNotCompleteNumber(parseFloat(val, 10))) {\n      val = this.getValidValue(val);\n    } else {\n      val = this.state.value;\n    }\n    return this.toNumber(val);\n  };\n\n  InputNumber.prototype.getRatio = function getRatio(e) {\n    var ratio = 1;\n    if (e.metaKey || e.ctrlKey) {\n      ratio = 0.1;\n    } else if (e.shiftKey) {\n      ratio = 10;\n    }\n    return ratio;\n  };\n\n  InputNumber.prototype.getValueFromEvent = 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  InputNumber.prototype.getValidValue = function getValidValue(value) {\n    var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props.min;\n    var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.props.max;\n\n    var val = parseFloat(value, 10);\n    // https://github.com/ant-design/ant-design/issues/7358\n    if (isNaN(val)) {\n      return value;\n    }\n    if (val < min) {\n      val = min;\n    }\n    if (val > max) {\n      val = max;\n    }\n    return val;\n  };\n\n  InputNumber.prototype.setValue = function setValue(v, callback) {\n    // trigger onChange\n    var precision = this.props.precision;\n\n    var newValue = this.isNotCompleteNumber(parseFloat(v, 10)) ? null : parseFloat(v, 10);\n    var _state = this.state,\n        _state$value = _state.value,\n        value = _state$value === undefined ? null : _state$value,\n        _state$inputValue = _state.inputValue,\n        inputValue = _state$inputValue === undefined ? null : _state$inputValue;\n    // 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) : '' + newValue;\n    var changed = newValue !== value || newValueInString !== '' + inputValue;\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      this.setState({\n        inputValue: this.toPrecisionAsStep(this.state.value)\n      }, callback);\n    }\n    if (changed) {\n      this.props.onChange(newValue);\n    }\n  };\n\n  InputNumber.prototype.getPrecision = function getPrecision(value) {\n    if (isValidProps(this.props.precision)) {\n      return this.props.precision;\n    }\n    var valueString = value.toString();\n    if (valueString.indexOf('e-') >= 0) {\n      return parseInt(valueString.slice(valueString.indexOf('e-') + 2), 10);\n    }\n    var precision = 0;\n    if (valueString.indexOf('.') >= 0) {\n      precision = valueString.length - valueString.indexOf('.') - 1;\n    }\n    return precision;\n  };\n\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  InputNumber.prototype.getMaxPrecision = function getMaxPrecision(currentValue) {\n    var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n    var _props2 = this.props,\n        precision = _props2.precision,\n        step = _props2.step;\n\n    if (isValidProps(precision)) {\n      return precision;\n    }\n    var ratioPrecision = this.getPrecision(ratio);\n    var stepPrecision = this.getPrecision(step);\n    var currentValuePrecision = this.getPrecision(currentValue);\n    if (!currentValue) {\n      return ratioPrecision + stepPrecision;\n    }\n    return Math.max(currentValuePrecision, ratioPrecision + stepPrecision);\n  };\n\n  InputNumber.prototype.getPrecisionFactor = function getPrecisionFactor(currentValue) {\n    var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n    var precision = this.getMaxPrecision(currentValue, ratio);\n    return Math.pow(10, precision);\n  };\n\n  InputNumber.prototype.fixCaret = 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) {\n      // Fix error in Chrome:\n      // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n      // http://stackoverflow.com/q/21177489/3040605\n    }\n  };\n\n  InputNumber.prototype.focus = function focus() {\n    this.input.focus();\n    this.recordCursorPosition();\n  };\n\n  InputNumber.prototype.blur = function blur() {\n    this.input.blur();\n  };\n\n  InputNumber.prototype.formatWrapper = 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    return num;\n  };\n\n  InputNumber.prototype.toPrecisionAsStep = function toPrecisionAsStep(num) {\n    if (this.isNotCompleteNumber(num) || num === '') {\n      return num;\n    }\n    var precision = Math.abs(this.getMaxPrecision(num));\n    if (!isNaN(precision)) {\n      return Number(num).toFixed(precision);\n    }\n    return num.toString();\n  };\n\n  // '1.' '1x' 'xx' '' => are not complete numbers\n\n\n  InputNumber.prototype.isNotCompleteNumber = function isNotCompleteNumber(num) {\n    return isNaN(num) || num === '' || num === null || num && num.toString().indexOf('.') === num.toString().length - 1;\n  };\n\n  InputNumber.prototype.toNumber = function toNumber(num) {\n    // num.length > 16 => This is to prevent input of large numbers\n    var numberIsTooLarge = num && num.length > 16 && this.state.focused;\n    if (this.isNotCompleteNumber(num) || numberIsTooLarge) {\n      return num;\n    }\n    if (isValidProps(this.props.precision)) {\n      return Number(Number(num).toFixed(this.props.precision));\n    }\n    return Number(num);\n  };\n\n  InputNumber.prototype.upStep = function upStep(val, rat) {\n    var step = this.props.step;\n\n    var precisionFactor = this.getPrecisionFactor(val, rat);\n    var precision = Math.abs(this.getMaxPrecision(val, rat));\n    var result = ((precisionFactor * val + precisionFactor * step * rat) / precisionFactor).toFixed(precision);\n    return this.toNumber(result);\n  };\n\n  InputNumber.prototype.downStep = function downStep(val, rat) {\n    var step = this.props.step;\n\n    var precisionFactor = this.getPrecisionFactor(val, rat);\n    var precision = Math.abs(this.getMaxPrecision(val, rat));\n    var result = ((precisionFactor * val - precisionFactor * step * rat) / precisionFactor).toFixed(precision);\n    return this.toNumber(result);\n  };\n\n  InputNumber.prototype.step = 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[3];\n\n    this.stop();\n    if (e) {\n      e.persist();\n      e.preventDefault();\n    }\n    var props = this.props;\n    if (props.disabled) {\n      return;\n    }\n    var value = this.getCurrentValidValue(this.state.inputValue) || 0;\n    if (this.isNotCompleteNumber(value)) {\n      return;\n    }\n    var val = this[type + 'Step'](value, ratio);\n    var outOfRange = val > props.max || val < props.min;\n    if (val > props.max) {\n      val = props.max;\n    } else if (val < props.min) {\n      val = props.min;\n    }\n    this.setValue(val);\n    this.setState({\n      focused: true\n    });\n    if (outOfRange) {\n      return;\n    }\n    this.autoStepTimer = setTimeout(function () {\n      _this2[type](e, ratio, true);\n    }, recursive ? SPEED : DELAY);\n  };\n\n  InputNumber.prototype.render = function render() {\n    var _classNames;\n\n    var props = extends_default()({}, this.props);\n\n    var prefixCls = props.prefixCls,\n        disabled = props.disabled,\n        readOnly = props.readOnly,\n        useTouch = props.useTouch,\n        autoComplete = props.autoComplete,\n        upHandler = props.upHandler,\n        downHandler = props.downHandler,\n        rest = objectWithoutProperties_default()(props, ['prefixCls', 'disabled', 'readOnly', 'useTouch', 'autoComplete', 'upHandler', 'downHandler']);\n\n    var classes = node_modules_classnames_default()((_classNames = {}, _classNames[prefixCls] = true, _classNames[props.className] = !!props.className, _classNames[prefixCls + '-disabled'] = disabled, _classNames[prefixCls + '-focused'] = this.state.focused, _classNames));\n    var upDisabledClass = '';\n    var downDisabledClass = '';\n    var value = this.state.value;\n\n    if (value || value === 0) {\n      if (!isNaN(value)) {\n        var val = Number(value);\n        if (val >= props.max) {\n          upDisabledClass = prefixCls + '-handler-up-disabled';\n        }\n        if (val <= props.min) {\n          downDisabledClass = prefixCls + '-handler-down-disabled';\n        }\n      } else {\n        upDisabledClass = prefixCls + '-handler-up-disabled';\n        downDisabledClass = prefixCls + '-handler-down-disabled';\n      }\n    }\n\n    var dataOrAriaAttributeProps = {};\n    for (var key in props) {\n      if (props.hasOwnProperty(key) && (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role')) {\n        dataOrAriaAttributeProps[key] = props[key];\n      }\n    }\n\n    var editable = !props.readOnly && !props.disabled;\n\n    // focus state, show input value\n    // unfocus state, show valid value\n    var inputDisplayValue = this.getInputDisplayValue();\n\n    var upEvents = void 0;\n    var downEvents = void 0;\n    if (useTouch) {\n      upEvents = {\n        onTouchStart: editable && !upDisabledClass ? this.up : es_noop,\n        onTouchEnd: this.stop\n      };\n      downEvents = {\n        onTouchStart: editable && !downDisabledClass ? this.down : es_noop,\n        onTouchEnd: this.stop\n      };\n    } else {\n      upEvents = {\n        onMouseDown: editable && !upDisabledClass ? this.up : es_noop,\n        onMouseUp: this.stop,\n        onMouseLeave: this.stop\n      };\n      downEvents = {\n        onMouseDown: editable && !downDisabledClass ? this.down : es_noop,\n        onMouseUp: this.stop,\n        onMouseLeave: this.stop\n      };\n    }\n\n    var inputDisplayValueFormat = this.formatWrapper(inputDisplayValue);\n    if (isValidProps(this.props.decimalSeparator)) {\n      inputDisplayValueFormat = inputDisplayValueFormat.toString().replace('.', this.props.decimalSeparator);\n    }\n    var isUpDisabled = !!upDisabledClass || disabled || readOnly;\n    var isDownDisabled = !!downDisabledClass || disabled || readOnly;\n    // ref for test\n    return external_react_default.a.createElement(\n      'div',\n      {\n        className: classes,\n        style: props.style,\n        title: props.title,\n        onMouseEnter: props.onMouseEnter,\n        onMouseLeave: props.onMouseLeave,\n        onMouseOver: props.onMouseOver,\n        onMouseOut: props.onMouseOut\n      },\n      external_react_default.a.createElement(\n        'div',\n        { className: prefixCls + '-handler-wrap' },\n        external_react_default.a.createElement(\n          es_InputHandler,\n          extends_default()({\n            ref: this.saveUp,\n            disabled: isUpDisabled,\n            prefixCls: prefixCls,\n            unselectable: 'unselectable'\n          }, upEvents, {\n            role: 'button',\n            'aria-label': 'Increase Value',\n            'aria-disabled': !!isUpDisabled,\n            className: prefixCls + '-handler ' + prefixCls + '-handler-up ' + upDisabledClass\n          }),\n          upHandler || external_react_default.a.createElement('span', {\n            unselectable: 'unselectable',\n            className: prefixCls + '-handler-up-inner',\n            onClick: preventDefault\n          })\n        ),\n        external_react_default.a.createElement(\n          es_InputHandler,\n          extends_default()({\n            ref: this.saveDown,\n            disabled: isDownDisabled,\n            prefixCls: prefixCls,\n            unselectable: 'unselectable'\n          }, downEvents, {\n            role: 'button',\n            'aria-label': 'Decrease Value',\n            'aria-disabled': !!isDownDisabled,\n            className: prefixCls + '-handler ' + prefixCls + '-handler-down ' + downDisabledClass\n          }),\n          downHandler || external_react_default.a.createElement('span', {\n            unselectable: 'unselectable',\n            className: prefixCls + '-handler-down-inner',\n            onClick: preventDefault\n          })\n        )\n      ),\n      external_react_default.a.createElement(\n        'div',\n        {\n          className: prefixCls + '-input-wrap',\n          role: 'spinbutton',\n          'aria-valuemin': props.min,\n          'aria-valuemax': props.max,\n          'aria-valuenow': value\n        },\n        external_react_default.a.createElement('input', extends_default()({\n          required: props.required,\n          type: props.type,\n          placeholder: props.placeholder,\n          onClick: props.onClick,\n          onMouseUp: this.onMouseUp,\n          className: prefixCls + '-input',\n          tabIndex: props.tabIndex,\n          autoComplete: autoComplete,\n          onFocus: this.onFocus,\n          onBlur: this.onBlur,\n          onKeyDown: editable ? this.onKeyDown : es_noop,\n          onKeyUp: editable ? this.onKeyUp : es_noop,\n          autoFocus: props.autoFocus,\n          maxLength: props.maxLength,\n          readOnly: props.readOnly,\n          disabled: props.disabled,\n          max: props.max,\n          min: props.min,\n          step: props.step,\n          name: props.name,\n          id: props.id,\n          onChange: this.onChange,\n          ref: this.saveInput,\n          value: inputDisplayValueFormat,\n          pattern: props.pattern\n        }, dataOrAriaAttributeProps))\n      )\n    );\n  };\n\n  return InputNumber;\n}(external_react_default.a.Component);\n\nes_InputNumber.propTypes = {\n  value: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]),\n  defaultValue: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]),\n  focusOnUpDown: prop_types_default.a.bool,\n  autoFocus: prop_types_default.a.bool,\n  onChange: prop_types_default.a.func,\n  onKeyDown: prop_types_default.a.func,\n  onKeyUp: prop_types_default.a.func,\n  prefixCls: prop_types_default.a.string,\n  tabIndex: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  disabled: prop_types_default.a.bool,\n  onFocus: prop_types_default.a.func,\n  onBlur: prop_types_default.a.func,\n  readOnly: prop_types_default.a.bool,\n  max: prop_types_default.a.number,\n  min: prop_types_default.a.number,\n  step: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]),\n  upHandler: prop_types_default.a.node,\n  downHandler: prop_types_default.a.node,\n  useTouch: prop_types_default.a.bool,\n  formatter: prop_types_default.a.func,\n  parser: prop_types_default.a.func,\n  onMouseEnter: prop_types_default.a.func,\n  onMouseLeave: prop_types_default.a.func,\n  onMouseOver: prop_types_default.a.func,\n  onMouseOut: prop_types_default.a.func,\n  onMouseUp: prop_types_default.a.func,\n  precision: prop_types_default.a.number,\n  required: prop_types_default.a.bool,\n  pattern: prop_types_default.a.string,\n  decimalSeparator: prop_types_default.a.string\n};\nes_InputNumber.defaultProps = {\n  focusOnUpDown: true,\n  useTouch: false,\n  prefixCls: 'rc-input-number',\n  min: -MAX_SAFE_INTEGER,\n  step: 1,\n  style: {},\n  onChange: es_noop,\n  onKeyDown: es_noop,\n  onFocus: es_noop,\n  onBlur: es_noop,\n  parser: defaultParser,\n  required: false,\n  autoComplete: 'off'\n};\n\nvar es_initialiseProps = function _initialiseProps() {\n  var _this3 = this;\n\n  this.onKeyDown = function (e) {\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    var onKeyDown = _this3.props.onKeyDown;\n\n\n    if (e.keyCode === KeyCode[\"a\" /* default */].UP) {\n      var ratio = _this3.getRatio(e);\n      _this3.up(e, ratio);\n      _this3.stop();\n    } else if (e.keyCode === KeyCode[\"a\" /* default */].DOWN) {\n      var _ratio = _this3.getRatio(e);\n      _this3.down(e, _ratio);\n      _this3.stop();\n    }\n\n    // Trigger user key down\n    _this3.recordCursorPosition();\n    _this3.lastKeyCode = e.keyCode;\n    if (onKeyDown) {\n      onKeyDown.apply(undefined, [e].concat(args));\n    }\n  };\n\n  this.onKeyUp = function (e) {\n    for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    var onKeyUp = _this3.props.onKeyUp;\n\n\n    _this3.stop();\n\n    _this3.recordCursorPosition();\n\n    // Trigger user key up\n    if (onKeyUp) {\n      onKeyUp.apply(undefined, [e].concat(args));\n    }\n  };\n\n  this.onChange = function (e) {\n    var onChange = _this3.props.onChange;\n\n\n    if (_this3.state.focused) {\n      _this3.inputting = true;\n    }\n    _this3.rawInput = _this3.props.parser(_this3.getValueFromEvent(e));\n    _this3.setState({ inputValue: _this3.rawInput });\n    onChange(_this3.toNumber(_this3.rawInput)); // valid number or invalid string\n  };\n\n  this.onMouseUp = function () {\n    var onMouseUp = _this3.props.onMouseUp;\n\n\n    _this3.recordCursorPosition();\n\n    if (onMouseUp) {\n      onMouseUp.apply(undefined, arguments);\n    }\n  };\n\n  this.onFocus = function () {\n    var _props3;\n\n    _this3.setState({\n      focused: true\n    });\n    (_props3 = _this3.props).onFocus.apply(_props3, arguments);\n  };\n\n  this.onBlur = function (e) {\n    for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      args[_key3 - 1] = arguments[_key3];\n    }\n\n    _this3.inputting = false;\n    _this3.setState({\n      focused: false\n    });\n    var value = _this3.getCurrentValidValue(_this3.state.inputValue);\n    e.persist(); // fix https://github.com/react-component/input-number/issues/51\n    _this3.setValue(value, function () {\n      var _props4;\n\n      (_props4 = _this3.props).onBlur.apply(_props4, [e].concat(args));\n    });\n  };\n\n  this.getInputDisplayValue = function () {\n    var _state2 = _this3.state,\n        focused = _state2.focused,\n        inputValue = _state2.inputValue,\n        value = _state2.value;\n\n    var inputDisplayValue = void 0;\n    if (focused) {\n      inputDisplayValue = inputValue;\n    } else {\n      inputDisplayValue = _this3.toPrecisionAsStep(value);\n    }\n\n    if (inputDisplayValue === undefined || inputDisplayValue === null) {\n      inputDisplayValue = '';\n    }\n\n    return inputDisplayValue;\n  };\n\n  this.recordCursorPosition = function () {\n    // Record position\n    try {\n      _this3.cursorStart = _this3.input.selectionStart;\n      _this3.cursorEnd = _this3.input.selectionEnd;\n      _this3.currentValue = _this3.input.value;\n      _this3.cursorBefore = _this3.input.value.substring(0, _this3.cursorStart);\n      _this3.cursorAfter = _this3.input.value.substring(_this3.cursorEnd);\n    } catch (e) {\n      // 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\n    var fullStr = _this3.input.value;\n    var index = fullStr.lastIndexOf(str);\n\n    if (index === -1) return false;\n\n    if (index + str.length === fullStr.length) {\n      _this3.fixCaret(index, index);\n\n      return true;\n    }\n    return false;\n  };\n\n  this.partRestoreByAfter = function (str) {\n    if (str === undefined) return false;\n\n    // For loop from full str to the str with last char to map. e.g. 123\n    // -> 123\n    // -> 23\n    // -> 3\n    return Array.prototype.some.call(str, function (_, start) {\n      var partStr = str.substring(start);\n\n      return _this3.restoreByAfter(partStr);\n    });\n  };\n\n  this.stop = function () {\n    if (_this3.autoStepTimer) {\n      clearTimeout(_this3.autoStepTimer);\n    }\n  };\n\n  this.down = function (e, ratio, recursive) {\n    _this3.pressingUpOrDown = true;\n    _this3.step('down', e, ratio, recursive);\n  };\n\n  this.up = function (e, ratio, recursive) {\n    _this3.pressingUpOrDown = true;\n    _this3.step('up', e, ratio, recursive);\n  };\n\n  this.saveUp = function (node) {\n    _this3.upHandler = node;\n  };\n\n  this.saveDown = function (node) {\n    _this3.downHandler = node;\n  };\n\n  this.saveInput = function (node) {\n    _this3.input = node;\n  };\n};\n\n/* harmony default export */ var rc_input_number_es = (es_InputNumber);\n// CONCATENATED MODULE: ./node_modules/antd/es/input-number/index.js\nfunction input_number_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { input_number_typeof = function _typeof(obj) { return typeof obj; }; } else { input_number_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return input_number_typeof(obj); }\n\nfunction input_number_extends() { input_number_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 input_number_extends.apply(this, arguments); }\n\nfunction input_number_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\nfunction input_number_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction input_number_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 input_number_createClass(Constructor, protoProps, staticProps) { if (protoProps) input_number_defineProperties(Constructor.prototype, protoProps); if (staticProps) input_number_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction input_number_possibleConstructorReturn(self, call) { if (call && (input_number_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return input_number_assertThisInitialized(self); }\n\nfunction input_number_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction input_number_getPrototypeOf(o) { input_number_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return input_number_getPrototypeOf(o); }\n\nfunction input_number_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) input_number_setPrototypeOf(subClass, superClass); }\n\nfunction input_number_setPrototypeOf(o, p) { input_number_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return input_number_setPrototypeOf(o, p); }\n\nvar input_number_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\nvar input_number_InputNumber =\n/*#__PURE__*/\nfunction (_React$Component) {\n  input_number_inherits(InputNumber, _React$Component);\n\n  function InputNumber() {\n    var _this;\n\n    input_number_classCallCheck(this, InputNumber);\n\n    _this = input_number_possibleConstructorReturn(this, input_number_getPrototypeOf(InputNumber).apply(this, arguments));\n\n    _this.saveInputNumber = function (inputNumberRef) {\n      _this.inputNumberRef = inputNumberRef;\n    };\n\n    _this.renderInputNumber = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          className = _a.className,\n          size = _a.size,\n          customizePrefixCls = _a.prefixCls,\n          others = input_number_rest(_a, [\"className\", \"size\", \"prefixCls\"]);\n\n      var prefixCls = getPrefixCls('input-number', customizePrefixCls);\n      var inputNumberClass = classnames_default()((_classNames = {}, input_number_defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), input_number_defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _classNames), className);\n      var upIcon = external_react_[\"createElement\"](es_icon, {\n        type: \"up\",\n        className: \"\".concat(prefixCls, \"-handler-up-inner\")\n      });\n      var downIcon = external_react_[\"createElement\"](es_icon, {\n        type: \"down\",\n        className: \"\".concat(prefixCls, \"-handler-down-inner\")\n      });\n      return external_react_[\"createElement\"](rc_input_number_es, input_number_extends({\n        ref: _this.saveInputNumber,\n        className: inputNumberClass,\n        upHandler: upIcon,\n        downHandler: downIcon,\n        prefixCls: prefixCls\n      }, others));\n    };\n\n    return _this;\n  }\n\n  input_number_createClass(InputNumber, [{\n    key: \"focus\",\n    value: function focus() {\n      this.inputNumberRef.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.inputNumberRef.blur();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderInputNumber);\n    }\n  }]);\n\n  return InputNumber;\n}(external_react_[\"Component\"]);\n\n\ninput_number_InputNumber.defaultProps = {\n  step: 1\n};\n// CONCATENATED MODULE: ./node_modules/rc-slider/es/common/Track.js\n\n/* eslint-disable react/prop-types */\n\n\nvar Track_Track = function Track(props) {\n  var className = props.className,\n      included = props.included,\n      vertical = props.vertical,\n      offset = props.offset,\n      length = props.length,\n      style = props.style;\n\n\n  var positonStyle = vertical ? {\n    bottom: offset + '%',\n    height: length + '%'\n  } : {\n    left: offset + '%',\n    width: length + '%'\n  };\n\n  var elStyle = extends_default()({}, style, positonStyle);\n  return included ? external_react_default.a.createElement('div', { className: className, style: elStyle }) : null;\n};\n\n/* harmony default export */ var common_Track = (Track_Track);\n// EXTERNAL MODULE: ./node_modules/babel-runtime/helpers/get.js\nvar helpers_get = __webpack_require__(354);\nvar helpers_get_default = /*#__PURE__*/__webpack_require__.n(helpers_get);\n\n// CONCATENATED MODULE: ./node_modules/rc-slider/es/common/Steps.js\n\n\n\n\n\n\n\nvar Steps_calcPoints = function calcPoints(vertical, marks, dots, step, min, max) {\n  warning_default()(dots ? step > 0 : true, '`Slider[step]` should be a positive number in order to make Slider[dots] work.');\n  var points = Object.keys(marks).map(parseFloat).sort(function (a, b) {\n    return a - b;\n  });\n  if (dots && step) {\n    for (var i = min; i <= max; i += step) {\n      if (points.indexOf(i) === -1) {\n        points.push(i);\n      }\n    }\n  }\n  return points;\n};\n\nvar Steps_Steps = function Steps(_ref) {\n  var prefixCls = _ref.prefixCls,\n      vertical = _ref.vertical,\n      marks = _ref.marks,\n      dots = _ref.dots,\n      step = _ref.step,\n      included = _ref.included,\n      lowerBound = _ref.lowerBound,\n      upperBound = _ref.upperBound,\n      max = _ref.max,\n      min = _ref.min,\n      dotStyle = _ref.dotStyle,\n      activeDotStyle = _ref.activeDotStyle;\n\n  var range = max - min;\n  var elements = Steps_calcPoints(vertical, marks, dots, step, min, max).map(function (point) {\n    var _classNames;\n\n    var offset = Math.abs(point - min) / range * 100 + '%';\n\n    var isActived = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n    var style = vertical ? extends_default()({ bottom: offset }, dotStyle) : extends_default()({ left: offset }, dotStyle);\n    if (isActived) {\n      style = extends_default()({}, style, activeDotStyle);\n    }\n\n    var pointClassName = node_modules_classnames_default()((_classNames = {}, defineProperty_default()(_classNames, prefixCls + '-dot', true), defineProperty_default()(_classNames, prefixCls + '-dot-active', isActived), _classNames));\n\n    return external_react_default.a.createElement('span', { className: pointClassName, style: style, key: point });\n  });\n\n  return external_react_default.a.createElement(\n    'div',\n    { className: prefixCls + '-step' },\n    elements\n  );\n};\n\nSteps_Steps.propTypes = {\n  prefixCls: prop_types_default.a.string,\n  activeDotStyle: prop_types_default.a.object,\n  dotStyle: prop_types_default.a.object,\n  min: prop_types_default.a.number,\n  max: prop_types_default.a.number,\n  upperBound: prop_types_default.a.number,\n  lowerBound: prop_types_default.a.number,\n  included: prop_types_default.a.bool,\n  dots: prop_types_default.a.bool,\n  step: prop_types_default.a.number,\n  marks: prop_types_default.a.object,\n  vertical: prop_types_default.a.bool\n};\n\n/* harmony default export */ var common_Steps = (Steps_Steps);\n// CONCATENATED MODULE: ./node_modules/rc-slider/es/common/Marks.js\n\n\n\n\n\n\nvar Marks_Marks = function Marks(_ref) {\n  var className = _ref.className,\n      vertical = _ref.vertical,\n      marks = _ref.marks,\n      included = _ref.included,\n      upperBound = _ref.upperBound,\n      lowerBound = _ref.lowerBound,\n      max = _ref.max,\n      min = _ref.min,\n      onClickLabel = _ref.onClickLabel;\n\n  var marksKeys = Object.keys(marks);\n\n  var range = max - min;\n  var elements = marksKeys.map(parseFloat).sort(function (a, b) {\n    return a - b;\n  }).map(function (point) {\n    var _classNames;\n\n    var markPoint = marks[point];\n    var markPointIsObject = typeof markPoint === 'object' && !external_react_default.a.isValidElement(markPoint);\n    var markLabel = markPointIsObject ? markPoint.label : markPoint;\n    if (!markLabel && markLabel !== 0) {\n      return null;\n    }\n\n    var isActive = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n    var markClassName = node_modules_classnames_default()((_classNames = {}, defineProperty_default()(_classNames, className + '-text', true), defineProperty_default()(_classNames, className + '-text-active', isActive), _classNames));\n\n    var bottomStyle = {\n      marginBottom: '-50%',\n      bottom: (point - min) / range * 100 + '%'\n    };\n\n    var leftStyle = {\n      left: (point - min) / range * 100 + '%',\n      transform: 'translateX(-50%)',\n      msTransform: 'translateX(-50%)'\n    };\n\n    var style = vertical ? bottomStyle : leftStyle;\n    var markStyle = markPointIsObject ? extends_default()({}, style, markPoint.style) : style;\n    return external_react_default.a.createElement(\n      'span',\n      {\n        className: markClassName,\n        style: markStyle,\n        key: point,\n        onMouseDown: function onMouseDown(e) {\n          return onClickLabel(e, point);\n        },\n        onTouchStart: function onTouchStart(e) {\n          return onClickLabel(e, point);\n        }\n      },\n      markLabel\n    );\n  });\n\n  return external_react_default.a.createElement(\n    'div',\n    { className: className },\n    elements\n  );\n};\n\nMarks_Marks.propTypes = {\n  className: prop_types_default.a.string,\n  vertical: prop_types_default.a.bool,\n  marks: prop_types_default.a.object,\n  included: prop_types_default.a.bool,\n  upperBound: prop_types_default.a.number,\n  lowerBound: prop_types_default.a.number,\n  max: prop_types_default.a.number,\n  min: prop_types_default.a.number,\n  onClickLabel: prop_types_default.a.func\n};\n\n/* harmony default export */ var common_Marks = (Marks_Marks);\n// CONCATENATED MODULE: ./node_modules/rc-slider/es/Handle.js\n\n\n\n\n\n\n\n\n\n\n\n\nvar Handle_Handle = function (_React$Component) {\n  helpers_inherits_default()(Handle, _React$Component);\n\n  function Handle() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, Handle);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = Handle.__proto__ || Object.getPrototypeOf(Handle)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n      clickFocused: false\n    }, _this.setHandleRef = function (node) {\n      _this.handle = node;\n    }, _this.handleMouseUp = function () {\n      if (document.activeElement === _this.handle) {\n        _this.setClickFocus(true);\n      }\n    }, _this.handleMouseDown = function () {\n      // fix https://github.com/ant-design/ant-design/issues/15324\n      _this.focus();\n    }, _this.handleBlur = function () {\n      _this.setClickFocus(false);\n    }, _this.handleKeyDown = function () {\n      _this.setClickFocus(false);\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(Handle, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      // mouseup won't trigger if mouse moved out of handle,\n      // so we listen on document here.\n      this.onMouseUpListener = Object(addEventListener[\"a\" /* default */])(document, 'mouseup', this.handleMouseUp);\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      if (this.onMouseUpListener) {\n        this.onMouseUpListener.remove();\n      }\n    }\n  }, {\n    key: 'setClickFocus',\n    value: function setClickFocus(focused) {\n      this.setState({ clickFocused: focused });\n    }\n  }, {\n    key: 'clickFocus',\n    value: function clickFocus() {\n      this.setClickFocus(true);\n      this.focus();\n    }\n  }, {\n    key: 'focus',\n    value: function focus() {\n      this.handle.focus();\n    }\n  }, {\n    key: 'blur',\n    value: function blur() {\n      this.handle.blur();\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          prefixCls = _props.prefixCls,\n          vertical = _props.vertical,\n          offset = _props.offset,\n          style = _props.style,\n          disabled = _props.disabled,\n          min = _props.min,\n          max = _props.max,\n          value = _props.value,\n          tabIndex = _props.tabIndex,\n          restProps = objectWithoutProperties_default()(_props, ['prefixCls', 'vertical', 'offset', 'style', 'disabled', 'min', 'max', 'value', 'tabIndex']);\n\n      var className = node_modules_classnames_default()(this.props.className, defineProperty_default()({}, prefixCls + '-handle-click-focused', this.state.clickFocused));\n\n      var postionStyle = vertical ? { bottom: offset + '%' } : { left: offset + '%' };\n      var elStyle = extends_default()({}, style, postionStyle);\n\n      var _tabIndex = tabIndex || 0;\n      if (disabled || tabIndex === null) {\n        _tabIndex = null;\n      }\n\n      return external_react_default.a.createElement('div', extends_default()({\n        ref: this.setHandleRef,\n        tabIndex: _tabIndex\n      }, restProps, {\n        className: className,\n        style: elStyle,\n        onBlur: this.handleBlur,\n        onKeyDown: this.handleKeyDown,\n        onMouseDown: this.handleMouseDown\n\n        // aria attribute\n        , role: 'slider',\n        'aria-valuemin': min,\n        'aria-valuemax': max,\n        'aria-valuenow': value,\n        'aria-disabled': !!disabled\n      }));\n    }\n  }]);\n\n  return Handle;\n}(external_react_default.a.Component);\n\n/* harmony default export */ var es_Handle = (Handle_Handle);\n\n\nHandle_Handle.propTypes = {\n  prefixCls: prop_types_default.a.string,\n  className: prop_types_default.a.string,\n  vertical: prop_types_default.a.bool,\n  offset: prop_types_default.a.number,\n  style: prop_types_default.a.object,\n  disabled: prop_types_default.a.bool,\n  min: prop_types_default.a.number,\n  max: prop_types_default.a.number,\n  value: prop_types_default.a.number,\n  tabIndex: prop_types_default.a.number\n};\n// CONCATENATED MODULE: ./node_modules/rc-slider/es/utils.js\n\n\n\n\nfunction isDev() {\n  return \"production\" !== 'production';\n}\n\nfunction isEventFromHandle(e, handles) {\n  try {\n    return Object.keys(handles).some(function (key) {\n      return e.target === Object(external_react_dom_[\"findDOMNode\"])(handles[key]);\n    });\n  } catch (error) {\n    return false;\n  }\n}\n\nfunction isValueOutOfRange(value, _ref) {\n  var min = _ref.min,\n      max = _ref.max;\n\n  return value < min || value > max;\n}\n\nfunction isNotTouchEvent(e) {\n  return e.touches.length > 1 || e.type.toLowerCase() === 'touchend' && e.touches.length > 0;\n}\n\nfunction getClosestPoint(val, _ref2) {\n  var marks = _ref2.marks,\n      step = _ref2.step,\n      min = _ref2.min,\n      max = _ref2.max;\n\n  var points = Object.keys(marks).map(parseFloat);\n  if (step !== null) {\n    var maxSteps = Math.floor((max - min) / step);\n    var steps = Math.min((val - min) / step, maxSteps);\n    var closestStep = Math.round(steps) * step + min;\n    points.push(closestStep);\n  }\n  var diffs = points.map(function (point) {\n    return Math.abs(val - point);\n  });\n  return points[diffs.indexOf(Math.min.apply(Math, toConsumableArray_default()(diffs)))];\n}\n\nfunction getPrecision(step) {\n  var stepString = step.toString();\n  var precision = 0;\n  if (stepString.indexOf('.') >= 0) {\n    precision = stepString.length - stepString.indexOf('.') - 1;\n  }\n  return precision;\n}\n\nfunction getMousePosition(vertical, e) {\n  return vertical ? e.clientY : e.pageX;\n}\n\nfunction getTouchPosition(vertical, e) {\n  return vertical ? e.touches[0].clientY : e.touches[0].pageX;\n}\n\nfunction getHandleCenterPosition(vertical, handle) {\n  var coords = handle.getBoundingClientRect();\n  return vertical ? coords.top + coords.height * 0.5 : window.pageXOffset + coords.left + coords.width * 0.5;\n}\n\nfunction ensureValueInRange(val, _ref3) {\n  var max = _ref3.max,\n      min = _ref3.min;\n\n  if (val <= min) {\n    return min;\n  }\n  if (val >= max) {\n    return max;\n  }\n  return val;\n}\n\nfunction ensureValuePrecision(val, props) {\n  var step = props.step;\n\n  var closestPoint = isFinite(getClosestPoint(val, props)) ? getClosestPoint(val, props) : 0; // eslint-disable-line\n  return step === null ? closestPoint : parseFloat(closestPoint.toFixed(getPrecision(step)));\n}\n\nfunction pauseEvent(e) {\n  e.stopPropagation();\n  e.preventDefault();\n}\n\nfunction calculateNextValue(func, value, props) {\n  var operations = {\n    increase: function increase(a, b) {\n      return a + b;\n    },\n    decrease: function decrease(a, b) {\n      return a - b;\n    }\n  };\n\n  var indexToGet = operations[func](Object.keys(props.marks).indexOf(JSON.stringify(value)), 1);\n  var keyToGet = Object.keys(props.marks)[indexToGet];\n\n  if (props.step) {\n    return operations[func](value, props.step);\n  } else if (!!Object.keys(props.marks).length && !!props.marks[keyToGet]) {\n    return props.marks[keyToGet];\n  }\n  return value;\n}\n\nfunction getKeyboardValueMutator(e) {\n  switch (e.keyCode) {\n    case KeyCode[\"a\" /* default */].UP:\n    case KeyCode[\"a\" /* default */].RIGHT:\n      return function (value, props) {\n        return calculateNextValue('increase', value, props);\n      };\n\n    case KeyCode[\"a\" /* default */].DOWN:\n    case KeyCode[\"a\" /* default */].LEFT:\n      return function (value, props) {\n        return calculateNextValue('decrease', value, props);\n      };\n\n    case KeyCode[\"a\" /* default */].END:\n      return function (value, props) {\n        return props.max;\n      };\n    case KeyCode[\"a\" /* default */].HOME:\n      return function (value, props) {\n        return props.min;\n      };\n    case KeyCode[\"a\" /* default */].PAGE_UP:\n      return function (value, props) {\n        return value + props.step * 2;\n      };\n    case KeyCode[\"a\" /* default */].PAGE_DOWN:\n      return function (value, props) {\n        return value - props.step * 2;\n      };\n\n    default:\n      return undefined;\n  }\n}\n// CONCATENATED MODULE: ./node_modules/rc-slider/es/common/createSlider.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction createSlider_noop() {}\n\nfunction createSlider(Component) {\n  var _class, _temp;\n\n  return _temp = _class = function (_Component) {\n    helpers_inherits_default()(ComponentEnhancer, _Component);\n\n    function ComponentEnhancer(props) {\n      helpers_classCallCheck_default()(this, ComponentEnhancer);\n\n      var _this = helpers_possibleConstructorReturn_default()(this, (ComponentEnhancer.__proto__ || Object.getPrototypeOf(ComponentEnhancer)).call(this, props));\n\n      _this.onMouseDown = function (e) {\n        if (e.button !== 0) {\n          return;\n        }\n\n        var isVertical = _this.props.vertical;\n        var position = getMousePosition(isVertical, e);\n        if (!isEventFromHandle(e, _this.handlesRefs)) {\n          _this.dragOffset = 0;\n        } else {\n          var handlePosition = getHandleCenterPosition(isVertical, e.target);\n          _this.dragOffset = position - handlePosition;\n          position = handlePosition;\n        }\n        _this.removeDocumentEvents();\n        _this.onStart(position);\n        _this.addDocumentMouseEvents();\n      };\n\n      _this.onTouchStart = function (e) {\n        if (isNotTouchEvent(e)) return;\n\n        var isVertical = _this.props.vertical;\n        var position = getTouchPosition(isVertical, e);\n        if (!isEventFromHandle(e, _this.handlesRefs)) {\n          _this.dragOffset = 0;\n        } else {\n          var handlePosition = getHandleCenterPosition(isVertical, e.target);\n          _this.dragOffset = position - handlePosition;\n          position = handlePosition;\n        }\n        _this.onStart(position);\n        _this.addDocumentTouchEvents();\n        pauseEvent(e);\n      };\n\n      _this.onFocus = function (e) {\n        var _this$props = _this.props,\n            onFocus = _this$props.onFocus,\n            vertical = _this$props.vertical;\n\n        if (isEventFromHandle(e, _this.handlesRefs)) {\n          var handlePosition = getHandleCenterPosition(vertical, e.target);\n          _this.dragOffset = 0;\n          _this.onStart(handlePosition);\n          pauseEvent(e);\n          if (onFocus) {\n            onFocus(e);\n          }\n        }\n      };\n\n      _this.onBlur = function (e) {\n        var onBlur = _this.props.onBlur;\n\n        _this.onEnd();\n        if (onBlur) {\n          onBlur(e);\n        }\n      };\n\n      _this.onMouseUp = function () {\n        if (_this.handlesRefs[_this.prevMovedHandleIndex]) {\n          _this.handlesRefs[_this.prevMovedHandleIndex].clickFocus();\n        }\n      };\n\n      _this.onMouseMove = function (e) {\n        if (!_this.sliderRef) {\n          _this.onEnd();\n          return;\n        }\n        var position = getMousePosition(_this.props.vertical, e);\n        _this.onMove(e, position - _this.dragOffset);\n      };\n\n      _this.onTouchMove = function (e) {\n        if (isNotTouchEvent(e) || !_this.sliderRef) {\n          _this.onEnd();\n          return;\n        }\n\n        var position = getTouchPosition(_this.props.vertical, e);\n        _this.onMove(e, position - _this.dragOffset);\n      };\n\n      _this.onKeyDown = function (e) {\n        if (_this.sliderRef && isEventFromHandle(e, _this.handlesRefs)) {\n          _this.onKeyboard(e);\n        }\n      };\n\n      _this.onClickMarkLabel = function (e, value) {\n        e.stopPropagation();\n        _this.onChange({ value: value });\n        _this.setState({ value: value }, function () {\n          return _this.onEnd(true);\n        });\n      };\n\n      _this.saveSlider = function (slider) {\n        _this.sliderRef = slider;\n      };\n\n      if (isDev()) {\n        var step = props.step,\n            max = props.max,\n            min = props.min;\n\n        var isPointDiffEven = isFinite(max - min) ? (max - min) % step === 0 : true; // eslint-disable-line\n        warning_default()(step && Math.floor(step) === step ? isPointDiffEven : true, 'Slider[max] - Slider[min] (%s) should be a multiple of Slider[step] (%s)', max - min, step);\n      }\n      _this.handlesRefs = {};\n      return _this;\n    }\n\n    helpers_createClass_default()(ComponentEnhancer, [{\n      key: 'componentDidMount',\n      value: function componentDidMount() {\n        // Snapshot testing cannot handle refs, so be sure to null-check this.\n        this.document = this.sliderRef && this.sliderRef.ownerDocument;\n\n        var _props = this.props,\n            autoFocus = _props.autoFocus,\n            disabled = _props.disabled;\n\n        if (autoFocus && !disabled) {\n          this.focus();\n        }\n      }\n    }, {\n      key: 'componentWillUnmount',\n      value: function componentWillUnmount() {\n        if (helpers_get_default()(ComponentEnhancer.prototype.__proto__ || Object.getPrototypeOf(ComponentEnhancer.prototype), 'componentWillUnmount', this)) helpers_get_default()(ComponentEnhancer.prototype.__proto__ || Object.getPrototypeOf(ComponentEnhancer.prototype), 'componentWillUnmount', this).call(this);\n        this.removeDocumentEvents();\n      }\n    }, {\n      key: 'getSliderStart',\n      value: function getSliderStart() {\n        var slider = this.sliderRef;\n        var rect = slider.getBoundingClientRect();\n\n        return this.props.vertical ? rect.top : rect.left + window.pageXOffset;\n      }\n    }, {\n      key: 'getSliderLength',\n      value: function getSliderLength() {\n        var slider = this.sliderRef;\n        if (!slider) {\n          return 0;\n        }\n\n        var coords = slider.getBoundingClientRect();\n        return this.props.vertical ? coords.height : coords.width;\n      }\n    }, {\n      key: 'addDocumentTouchEvents',\n      value: function addDocumentTouchEvents() {\n        // just work for Chrome iOS Safari and Android Browser\n        this.onTouchMoveListener = Object(addEventListener[\"a\" /* default */])(this.document, 'touchmove', this.onTouchMove);\n        this.onTouchUpListener = Object(addEventListener[\"a\" /* default */])(this.document, 'touchend', this.onEnd);\n      }\n    }, {\n      key: 'addDocumentMouseEvents',\n      value: function addDocumentMouseEvents() {\n        this.onMouseMoveListener = Object(addEventListener[\"a\" /* default */])(this.document, 'mousemove', this.onMouseMove);\n        this.onMouseUpListener = Object(addEventListener[\"a\" /* default */])(this.document, 'mouseup', this.onEnd);\n      }\n    }, {\n      key: 'removeDocumentEvents',\n      value: function removeDocumentEvents() {\n        /* eslint-disable no-unused-expressions */\n        this.onTouchMoveListener && this.onTouchMoveListener.remove();\n        this.onTouchUpListener && this.onTouchUpListener.remove();\n\n        this.onMouseMoveListener && this.onMouseMoveListener.remove();\n        this.onMouseUpListener && this.onMouseUpListener.remove();\n        /* eslint-enable no-unused-expressions */\n      }\n    }, {\n      key: 'focus',\n      value: function focus() {\n        if (!this.props.disabled) {\n          this.handlesRefs[0].focus();\n        }\n      }\n    }, {\n      key: 'blur',\n      value: function blur() {\n        var _this2 = this;\n\n        if (!this.props.disabled) {\n          Object.keys(this.handlesRefs).forEach(function (key) {\n            if (_this2.handlesRefs[key] && _this2.handlesRefs[key].blur) {\n              _this2.handlesRefs[key].blur();\n            }\n          });\n        }\n      }\n    }, {\n      key: 'calcValue',\n      value: function calcValue(offset) {\n        var _props2 = this.props,\n            vertical = _props2.vertical,\n            min = _props2.min,\n            max = _props2.max;\n\n        var ratio = Math.abs(Math.max(offset, 0) / this.getSliderLength());\n        var value = vertical ? (1 - ratio) * (max - min) + min : ratio * (max - min) + min;\n        return value;\n      }\n    }, {\n      key: 'calcValueByPos',\n      value: function calcValueByPos(position) {\n        var pixelOffset = position - this.getSliderStart();\n        var nextValue = this.trimAlignValue(this.calcValue(pixelOffset));\n        return nextValue;\n      }\n    }, {\n      key: 'calcOffset',\n      value: function calcOffset(value) {\n        var _props3 = this.props,\n            min = _props3.min,\n            max = _props3.max;\n\n        var ratio = (value - min) / (max - min);\n        return ratio * 100;\n      }\n    }, {\n      key: 'saveHandle',\n      value: function saveHandle(index, handle) {\n        this.handlesRefs[index] = handle;\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        var _classNames;\n\n        var _props4 = this.props,\n            prefixCls = _props4.prefixCls,\n            className = _props4.className,\n            marks = _props4.marks,\n            dots = _props4.dots,\n            step = _props4.step,\n            included = _props4.included,\n            disabled = _props4.disabled,\n            vertical = _props4.vertical,\n            min = _props4.min,\n            max = _props4.max,\n            children = _props4.children,\n            maximumTrackStyle = _props4.maximumTrackStyle,\n            style = _props4.style,\n            railStyle = _props4.railStyle,\n            dotStyle = _props4.dotStyle,\n            activeDotStyle = _props4.activeDotStyle;\n\n        var _get$call = helpers_get_default()(ComponentEnhancer.prototype.__proto__ || Object.getPrototypeOf(ComponentEnhancer.prototype), 'render', this).call(this),\n            tracks = _get$call.tracks,\n            handles = _get$call.handles;\n\n        var sliderClassName = node_modules_classnames_default()(prefixCls, (_classNames = {}, defineProperty_default()(_classNames, prefixCls + '-with-marks', Object.keys(marks).length), defineProperty_default()(_classNames, prefixCls + '-disabled', disabled), defineProperty_default()(_classNames, prefixCls + '-vertical', vertical), defineProperty_default()(_classNames, className, className), _classNames));\n        return external_react_default.a.createElement(\n          'div',\n          {\n            ref: this.saveSlider,\n            className: sliderClassName,\n            onTouchStart: disabled ? createSlider_noop : this.onTouchStart,\n            onMouseDown: disabled ? createSlider_noop : this.onMouseDown,\n            onMouseUp: disabled ? createSlider_noop : this.onMouseUp,\n            onKeyDown: disabled ? createSlider_noop : this.onKeyDown,\n            onFocus: disabled ? createSlider_noop : this.onFocus,\n            onBlur: disabled ? createSlider_noop : this.onBlur,\n            style: style\n          },\n          external_react_default.a.createElement('div', {\n            className: prefixCls + '-rail',\n            style: extends_default()({}, maximumTrackStyle, railStyle)\n          }),\n          tracks,\n          external_react_default.a.createElement(common_Steps, {\n            prefixCls: prefixCls,\n            vertical: vertical,\n            marks: marks,\n            dots: dots,\n            step: step,\n            included: included,\n            lowerBound: this.getLowerBound(),\n            upperBound: this.getUpperBound(),\n            max: max,\n            min: min,\n            dotStyle: dotStyle,\n            activeDotStyle: activeDotStyle\n          }),\n          handles,\n          external_react_default.a.createElement(common_Marks, {\n            className: prefixCls + '-mark',\n            onClickLabel: disabled ? createSlider_noop : this.onClickMarkLabel,\n            vertical: vertical,\n            marks: marks,\n            included: included,\n            lowerBound: this.getLowerBound(),\n            upperBound: this.getUpperBound(),\n            max: max,\n            min: min\n          }),\n          children\n        );\n      }\n    }]);\n\n    return ComponentEnhancer;\n  }(Component), _class.displayName = 'ComponentEnhancer(' + Component.displayName + ')', _class.propTypes = extends_default()({}, Component.propTypes, {\n    min: prop_types_default.a.number,\n    max: prop_types_default.a.number,\n    step: prop_types_default.a.number,\n    marks: prop_types_default.a.object,\n    included: prop_types_default.a.bool,\n    className: prop_types_default.a.string,\n    prefixCls: prop_types_default.a.string,\n    disabled: prop_types_default.a.bool,\n    children: prop_types_default.a.any,\n    onBeforeChange: prop_types_default.a.func,\n    onChange: prop_types_default.a.func,\n    onAfterChange: prop_types_default.a.func,\n    handle: prop_types_default.a.func,\n    dots: prop_types_default.a.bool,\n    vertical: prop_types_default.a.bool,\n    style: prop_types_default.a.object,\n    minimumTrackStyle: prop_types_default.a.object, // just for compatibility, will be deperecate\n    maximumTrackStyle: prop_types_default.a.object, // just for compatibility, will be deperecate\n    handleStyle: prop_types_default.a.oneOfType([prop_types_default.a.object, prop_types_default.a.arrayOf(prop_types_default.a.object)]),\n    trackStyle: prop_types_default.a.oneOfType([prop_types_default.a.object, prop_types_default.a.arrayOf(prop_types_default.a.object)]),\n    railStyle: prop_types_default.a.object,\n    dotStyle: prop_types_default.a.object,\n    activeDotStyle: prop_types_default.a.object,\n    autoFocus: prop_types_default.a.bool,\n    onFocus: prop_types_default.a.func,\n    onBlur: prop_types_default.a.func\n  }), _class.defaultProps = extends_default()({}, Component.defaultProps, {\n    prefixCls: 'rc-slider',\n    className: '',\n    min: 0,\n    max: 100,\n    step: 1,\n    marks: {},\n    handle: function handle(_ref) {\n      var index = _ref.index,\n          restProps = objectWithoutProperties_default()(_ref, ['index']);\n\n      delete restProps.dragging;\n      if (restProps.value === null) {\n        return null;\n      }\n\n      return external_react_default.a.createElement(es_Handle, extends_default()({}, restProps, { key: index }));\n    },\n\n    onBeforeChange: createSlider_noop,\n    onChange: createSlider_noop,\n    onAfterChange: createSlider_noop,\n    included: true,\n    disabled: false,\n    dots: false,\n    vertical: false,\n    trackStyle: [{}],\n    handleStyle: [{}],\n    railStyle: {},\n    dotStyle: {},\n    activeDotStyle: {}\n  }), _temp;\n}\n// CONCATENATED MODULE: ./node_modules/rc-slider/es/Slider.js\n\n\n\n\n\n/* eslint-disable react/prop-types */\n\n\n\n\n\n\n\nvar Slider_Slider = function (_React$Component) {\n  helpers_inherits_default()(Slider, _React$Component);\n\n  function Slider(props) {\n    helpers_classCallCheck_default()(this, Slider);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, (Slider.__proto__ || Object.getPrototypeOf(Slider)).call(this, props));\n\n    _this.onEnd = function (force) {\n      var dragging = _this.state.dragging;\n\n      _this.removeDocumentEvents();\n      if (dragging || force) {\n        _this.props.onAfterChange(_this.getValue());\n      }\n      _this.setState({ dragging: false });\n    };\n\n    var defaultValue = props.defaultValue !== undefined ? props.defaultValue : props.min;\n    var value = props.value !== undefined ? props.value : defaultValue;\n\n    _this.state = {\n      value: _this.trimAlignValue(value),\n      dragging: false\n    };\n    if (isDev()) {\n      warning_default()(!('minimumTrackStyle' in props), 'minimumTrackStyle will be deprecated, please use trackStyle instead.');\n      warning_default()(!('maximumTrackStyle' in props), 'maximumTrackStyle will be deprecated, please use railStyle instead.');\n    }\n    return _this;\n  }\n\n  helpers_createClass_default()(Slider, [{\n    key: 'componentWillReceiveProps',\n    value: function componentWillReceiveProps(nextProps) {\n      if (!('value' in nextProps || 'min' in nextProps || 'max' in nextProps)) return;\n\n      var prevValue = this.state.value;\n      var value = nextProps.value !== undefined ? nextProps.value : prevValue;\n      var nextValue = this.trimAlignValue(value, nextProps);\n      if (nextValue === prevValue) return;\n\n      this.setState({ value: nextValue });\n      if (isValueOutOfRange(value, nextProps)) {\n        this.props.onChange(nextValue);\n      }\n    }\n  }, {\n    key: 'onChange',\n    value: function onChange(state) {\n      var props = this.props;\n      var isNotControlled = !('value' in props);\n      var nextState = state.value > this.props.max ? extends_default()({}, state, { value: this.props.max }) : state;\n      if (isNotControlled) {\n        this.setState(nextState);\n      }\n\n      var changedValue = nextState.value;\n      props.onChange(changedValue);\n    }\n  }, {\n    key: 'onStart',\n    value: function onStart(position) {\n      this.setState({ dragging: true });\n      var props = this.props;\n      var prevValue = this.getValue();\n      props.onBeforeChange(prevValue);\n\n      var value = this.calcValueByPos(position);\n      this.startValue = value;\n      this.startPosition = position;\n\n      if (value === prevValue) return;\n\n      this.prevMovedHandleIndex = 0;\n\n      this.onChange({ value: value });\n    }\n  }, {\n    key: 'onMove',\n    value: function onMove(e, position) {\n      pauseEvent(e);\n      var oldValue = this.state.value;\n\n      var value = this.calcValueByPos(position);\n      if (value === oldValue) return;\n\n      this.onChange({ value: value });\n    }\n  }, {\n    key: 'onKeyboard',\n    value: function onKeyboard(e) {\n      var valueMutator = getKeyboardValueMutator(e);\n\n      if (valueMutator) {\n        pauseEvent(e);\n        var state = this.state;\n        var oldValue = state.value;\n        var mutatedValue = valueMutator(oldValue, this.props);\n        var value = this.trimAlignValue(mutatedValue);\n        if (value === oldValue) return;\n\n        this.onChange({ value: value });\n        this.props.onAfterChange(value);\n        this.onEnd();\n      }\n    }\n  }, {\n    key: 'getValue',\n    value: function getValue() {\n      return this.state.value;\n    }\n  }, {\n    key: 'getLowerBound',\n    value: function getLowerBound() {\n      return this.props.min;\n    }\n  }, {\n    key: 'getUpperBound',\n    value: function getUpperBound() {\n      return this.state.value;\n    }\n  }, {\n    key: 'trimAlignValue',\n    value: function trimAlignValue(v) {\n      var nextProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (v === null) {\n        return null;\n      }\n\n      var mergedProps = extends_default()({}, this.props, nextProps);\n      var val = ensureValueInRange(v, mergedProps);\n      return ensureValuePrecision(val, mergedProps);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          prefixCls = _props.prefixCls,\n          vertical = _props.vertical,\n          included = _props.included,\n          disabled = _props.disabled,\n          minimumTrackStyle = _props.minimumTrackStyle,\n          trackStyle = _props.trackStyle,\n          handleStyle = _props.handleStyle,\n          tabIndex = _props.tabIndex,\n          min = _props.min,\n          max = _props.max,\n          handleGenerator = _props.handle;\n      var _state = this.state,\n          value = _state.value,\n          dragging = _state.dragging;\n\n      var offset = this.calcOffset(value);\n      var handle = handleGenerator({\n        className: prefixCls + '-handle',\n        prefixCls: prefixCls,\n        vertical: vertical,\n        offset: offset,\n        value: value,\n        dragging: dragging,\n        disabled: disabled,\n        min: min,\n        max: max,\n        index: 0,\n        tabIndex: tabIndex,\n        style: handleStyle[0] || handleStyle,\n        ref: function ref(h) {\n          return _this2.saveHandle(0, h);\n        }\n      });\n\n      var _trackStyle = trackStyle[0] || trackStyle;\n      var track = external_react_default.a.createElement(common_Track, {\n        className: prefixCls + '-track',\n        vertical: vertical,\n        included: included,\n        offset: 0,\n        length: offset,\n        style: extends_default()({}, minimumTrackStyle, _trackStyle)\n      });\n\n      return { tracks: track, handles: handle };\n    }\n  }]);\n\n  return Slider;\n}(external_react_default.a.Component);\n\nSlider_Slider.propTypes = {\n  defaultValue: prop_types_default.a.number,\n  value: prop_types_default.a.number,\n  disabled: prop_types_default.a.bool,\n  autoFocus: prop_types_default.a.bool,\n  tabIndex: prop_types_default.a.number,\n  min: prop_types_default.a.number,\n  max: prop_types_default.a.number\n};\n\n\n/* harmony default export */ var es_Slider = (createSlider(Slider_Slider));\n// CONCATENATED MODULE: ./node_modules/rc-slider/es/Range.js\n\n\n\n\n\n\n\n/* eslint-disable react/prop-types */\n\n\n\n\n\n\n\n\nvar Range_Range = function (_React$Component) {\n  helpers_inherits_default()(Range, _React$Component);\n\n  function Range(props) {\n    helpers_classCallCheck_default()(this, Range);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, (Range.__proto__ || Object.getPrototypeOf(Range)).call(this, props));\n\n    _this.onEnd = function (force) {\n      var handle = _this.state.handle;\n\n      _this.removeDocumentEvents();\n\n      if (handle !== null || force) {\n        _this.props.onAfterChange(_this.getValue());\n      }\n\n      _this.setState({\n        handle: null\n      });\n    };\n\n    var count = props.count,\n        min = props.min,\n        max = props.max;\n\n    var initialValue = Array.apply(undefined, toConsumableArray_default()(Array(count + 1))).map(function () {\n      return min;\n    });\n    var defaultValue = 'defaultValue' in props ? props.defaultValue : initialValue;\n    var value = props.value !== undefined ? props.value : defaultValue;\n    var bounds = value.map(function (v, i) {\n      return _this.trimAlignValue(v, i);\n    });\n    var recent = bounds[0] === max ? 0 : bounds.length - 1;\n\n    _this.state = {\n      handle: null,\n      recent: recent,\n      bounds: bounds\n    };\n    return _this;\n  }\n\n  helpers_createClass_default()(Range, [{\n    key: 'componentWillReceiveProps',\n    value: function componentWillReceiveProps(nextProps) {\n      var _this2 = this;\n\n      if (!('value' in nextProps || 'min' in nextProps || 'max' in nextProps)) return;\n      if (this.props.min === nextProps.min && this.props.max === nextProps.max && shallowequal_default()(this.props.value, nextProps.value)) {\n        return;\n      }\n\n      var bounds = this.state.bounds;\n\n      var value = nextProps.value || bounds;\n      var nextBounds = value.map(function (v, i) {\n        return _this2.trimAlignValue(v, i, nextProps);\n      });\n      if (nextBounds.length === bounds.length && nextBounds.every(function (v, i) {\n        return v === bounds[i];\n      })) return;\n\n      this.setState({ bounds: nextBounds });\n\n      if (value.some(function (v) {\n        return isValueOutOfRange(v, nextProps);\n      })) {\n        var newValues = value.map(function (v) {\n          return ensureValueInRange(v, nextProps);\n        });\n        this.props.onChange(newValues);\n      }\n    }\n  }, {\n    key: 'onChange',\n    value: function onChange(state) {\n      var props = this.props;\n      var isNotControlled = !('value' in props);\n      if (isNotControlled) {\n        this.setState(state);\n      } else {\n        var controlledState = {};\n\n        ['handle', 'recent'].forEach(function (item) {\n          if (state[item] !== undefined) {\n            controlledState[item] = state[item];\n          }\n        });\n\n        if (Object.keys(controlledState).length) {\n          this.setState(controlledState);\n        }\n      }\n\n      var data = extends_default()({}, this.state, state);\n      var changedValue = data.bounds;\n      props.onChange(changedValue);\n    }\n  }, {\n    key: 'onStart',\n    value: function onStart(position) {\n      var props = this.props;\n      var state = this.state;\n      var bounds = this.getValue();\n      props.onBeforeChange(bounds);\n\n      var value = this.calcValueByPos(position);\n      this.startValue = value;\n      this.startPosition = position;\n\n      var closestBound = this.getClosestBound(value);\n      this.prevMovedHandleIndex = this.getBoundNeedMoving(value, closestBound);\n\n      this.setState({\n        handle: this.prevMovedHandleIndex,\n        recent: this.prevMovedHandleIndex\n      });\n\n      var prevValue = bounds[this.prevMovedHandleIndex];\n      if (value === prevValue) return;\n\n      var nextBounds = [].concat(toConsumableArray_default()(state.bounds));\n      nextBounds[this.prevMovedHandleIndex] = value;\n      this.onChange({ bounds: nextBounds });\n    }\n  }, {\n    key: 'onMove',\n    value: function onMove(e, position) {\n      pauseEvent(e);\n      var state = this.state;\n\n      var value = this.calcValueByPos(position);\n      var oldValue = state.bounds[state.handle];\n      if (value === oldValue) return;\n\n      this.moveTo(value);\n    }\n  }, {\n    key: 'onKeyboard',\n    value: function onKeyboard(e) {\n      var valueMutator = getKeyboardValueMutator(e);\n\n      if (valueMutator) {\n        pauseEvent(e);\n        var state = this.state,\n            props = this.props;\n        var bounds = state.bounds,\n            handle = state.handle;\n\n        var oldValue = bounds[handle === null ? state.recent : handle];\n        var mutatedValue = valueMutator(oldValue, props);\n        var value = this.trimAlignValue(mutatedValue);\n        if (value === oldValue) return;\n        var isFromKeyboardEvent = true;\n        this.moveTo(value, isFromKeyboardEvent);\n      }\n    }\n  }, {\n    key: 'getValue',\n    value: function getValue() {\n      return this.state.bounds;\n    }\n  }, {\n    key: 'getClosestBound',\n    value: function getClosestBound(value) {\n      var bounds = this.state.bounds;\n\n      var closestBound = 0;\n      for (var i = 1; i < bounds.length - 1; ++i) {\n        if (value >= bounds[i]) {\n          closestBound = i;\n        }\n      }\n      if (Math.abs(bounds[closestBound + 1] - value) < Math.abs(bounds[closestBound] - value)) {\n        closestBound += 1;\n      }\n      return closestBound;\n    }\n  }, {\n    key: 'getBoundNeedMoving',\n    value: function getBoundNeedMoving(value, closestBound) {\n      var _state = this.state,\n          bounds = _state.bounds,\n          recent = _state.recent;\n\n      var boundNeedMoving = closestBound;\n      var isAtTheSamePoint = bounds[closestBound + 1] === bounds[closestBound];\n\n      if (isAtTheSamePoint && bounds[recent] === bounds[closestBound]) {\n        boundNeedMoving = recent;\n      }\n\n      if (isAtTheSamePoint && value !== bounds[closestBound + 1]) {\n        boundNeedMoving = value < bounds[closestBound + 1] ? closestBound : closestBound + 1;\n      }\n      return boundNeedMoving;\n    }\n  }, {\n    key: 'getLowerBound',\n    value: function getLowerBound() {\n      return this.state.bounds[0];\n    }\n  }, {\n    key: 'getUpperBound',\n    value: function getUpperBound() {\n      var bounds = this.state.bounds;\n\n      return bounds[bounds.length - 1];\n    }\n\n    /**\n     * Returns an array of possible slider points, taking into account both\n     * `marks` and `step`. The result is cached.\n     */\n\n  }, {\n    key: 'getPoints',\n    value: function getPoints() {\n      var _props = this.props,\n          marks = _props.marks,\n          step = _props.step,\n          min = _props.min,\n          max = _props.max;\n\n      var cache = this._getPointsCache;\n      if (!cache || cache.marks !== marks || cache.step !== step) {\n        var pointsObject = extends_default()({}, marks);\n        if (step !== null) {\n          for (var point = min; point <= max; point += step) {\n            pointsObject[point] = point;\n          }\n        }\n        var points = Object.keys(pointsObject).map(parseFloat);\n        points.sort(function (a, b) {\n          return a - b;\n        });\n        this._getPointsCache = { marks: marks, step: step, points: points };\n      }\n      return this._getPointsCache.points;\n    }\n  }, {\n    key: 'moveTo',\n    value: function moveTo(value, isFromKeyboardEvent) {\n      var _this3 = this;\n\n      var state = this.state,\n          props = this.props;\n\n      var nextBounds = [].concat(toConsumableArray_default()(state.bounds));\n      var handle = state.handle === null ? state.recent : state.handle;\n      nextBounds[handle] = value;\n      var nextHandle = handle;\n      if (props.pushable !== false) {\n        this.pushSurroundingHandles(nextBounds, nextHandle);\n      } else if (props.allowCross) {\n        nextBounds.sort(function (a, b) {\n          return a - b;\n        });\n        nextHandle = nextBounds.indexOf(value);\n      }\n      this.onChange({\n        recent: nextHandle,\n        handle: nextHandle,\n        bounds: nextBounds\n      });\n      if (isFromKeyboardEvent) {\n        // known problem: because setState is async,\n        // so trigger focus will invoke handler's onEnd and another handler's onStart too early,\n        // cause onBeforeChange and onAfterChange receive wrong value.\n        // here use setState callback to hack，but not elegant\n        this.props.onAfterChange(nextBounds);\n        this.setState({}, function () {\n          _this3.handlesRefs[nextHandle].focus();\n        });\n        this.onEnd();\n      }\n    }\n  }, {\n    key: 'pushSurroundingHandles',\n    value: function pushSurroundingHandles(bounds, handle) {\n      var value = bounds[handle];\n      var threshold = this.props.pushable;\n\n      threshold = Number(threshold);\n\n      var direction = 0;\n      if (bounds[handle + 1] - value < threshold) {\n        direction = +1; // push to right\n      }\n      if (value - bounds[handle - 1] < threshold) {\n        direction = -1; // push to left\n      }\n\n      if (direction === 0) {\n        return;\n      }\n\n      var nextHandle = handle + direction;\n      var diffToNext = direction * (bounds[nextHandle] - value);\n      if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n        // revert to original value if pushing is impossible\n        bounds[handle] = bounds[nextHandle] - direction * threshold;\n      }\n    }\n  }, {\n    key: 'pushHandle',\n    value: function pushHandle(bounds, handle, direction, amount) {\n      var originalValue = bounds[handle];\n      var currentValue = bounds[handle];\n      while (direction * (currentValue - originalValue) < amount) {\n        if (!this.pushHandleOnePoint(bounds, handle, direction)) {\n          // can't push handle enough to create the needed `amount` gap, so we\n          // revert its position to the original value\n          bounds[handle] = originalValue;\n          return false;\n        }\n        currentValue = bounds[handle];\n      }\n      // the handle was pushed enough to create the needed `amount` gap\n      return true;\n    }\n  }, {\n    key: 'pushHandleOnePoint',\n    value: function pushHandleOnePoint(bounds, handle, direction) {\n      var points = this.getPoints();\n      var pointIndex = points.indexOf(bounds[handle]);\n      var nextPointIndex = pointIndex + direction;\n      if (nextPointIndex >= points.length || nextPointIndex < 0) {\n        // reached the minimum or maximum available point, can't push anymore\n        return false;\n      }\n      var nextHandle = handle + direction;\n      var nextValue = points[nextPointIndex];\n      var threshold = this.props.pushable;\n\n      var diffToNext = direction * (bounds[nextHandle] - nextValue);\n      if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n        // couldn't push next handle, so we won't push this one either\n        return false;\n      }\n      // push the handle\n      bounds[handle] = nextValue;\n      return true;\n    }\n  }, {\n    key: 'trimAlignValue',\n    value: function trimAlignValue(v, handle) {\n      var nextProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      var mergedProps = extends_default()({}, this.props, nextProps);\n      var valInRange = ensureValueInRange(v, mergedProps);\n      var valNotConflict = this.ensureValueNotConflict(handle, valInRange, mergedProps);\n      return ensureValuePrecision(valNotConflict, mergedProps);\n    }\n  }, {\n    key: 'ensureValueNotConflict',\n    value: function ensureValueNotConflict(handle, val, _ref) {\n      var allowCross = _ref.allowCross,\n          thershold = _ref.pushable;\n\n      var state = this.state || {};\n      var bounds = state.bounds;\n\n      handle = handle === undefined ? state.handle : handle;\n      thershold = Number(thershold);\n      /* eslint-disable eqeqeq */\n      if (!allowCross && handle != null && bounds !== undefined) {\n        if (handle > 0 && val <= bounds[handle - 1] + thershold) {\n          return bounds[handle - 1] + thershold;\n        }\n        if (handle < bounds.length - 1 && val >= bounds[handle + 1] - thershold) {\n          return bounds[handle + 1] - thershold;\n        }\n      }\n      /* eslint-enable eqeqeq */\n      return val;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this4 = this;\n\n      var _state2 = this.state,\n          handle = _state2.handle,\n          bounds = _state2.bounds;\n      var _props2 = this.props,\n          prefixCls = _props2.prefixCls,\n          vertical = _props2.vertical,\n          included = _props2.included,\n          disabled = _props2.disabled,\n          min = _props2.min,\n          max = _props2.max,\n          handleGenerator = _props2.handle,\n          trackStyle = _props2.trackStyle,\n          handleStyle = _props2.handleStyle,\n          tabIndex = _props2.tabIndex;\n\n\n      var offsets = bounds.map(function (v) {\n        return _this4.calcOffset(v);\n      });\n\n      var handleClassName = prefixCls + '-handle';\n      var handles = bounds.map(function (v, i) {\n        var _classNames;\n\n        var _tabIndex = tabIndex[i] || 0;\n        if (disabled || tabIndex[i] === null) {\n          _tabIndex = null;\n        }\n        return handleGenerator({\n          className: node_modules_classnames_default()((_classNames = {}, defineProperty_default()(_classNames, handleClassName, true), defineProperty_default()(_classNames, handleClassName + '-' + (i + 1), true), _classNames)),\n          prefixCls: prefixCls,\n          vertical: vertical,\n          offset: offsets[i],\n          value: v,\n          dragging: handle === i,\n          index: i,\n          tabIndex: _tabIndex,\n          min: min,\n          max: max,\n          disabled: disabled,\n          style: handleStyle[i],\n          ref: function ref(h) {\n            return _this4.saveHandle(i, h);\n          }\n        });\n      });\n\n      var tracks = bounds.slice(0, -1).map(function (_, index) {\n        var _classNames2;\n\n        var i = index + 1;\n        var trackClassName = node_modules_classnames_default()((_classNames2 = {}, defineProperty_default()(_classNames2, prefixCls + '-track', true), defineProperty_default()(_classNames2, prefixCls + '-track-' + i, true), _classNames2));\n        return external_react_default.a.createElement(common_Track, {\n          className: trackClassName,\n          vertical: vertical,\n          included: included,\n          offset: offsets[i - 1],\n          length: offsets[i] - offsets[i - 1],\n          style: trackStyle[index],\n          key: i\n        });\n      });\n\n      return { tracks: tracks, handles: handles };\n    }\n  }]);\n\n  return Range;\n}(external_react_default.a.Component);\n\nRange_Range.displayName = 'Range';\nRange_Range.propTypes = {\n  autoFocus: prop_types_default.a.bool,\n  defaultValue: prop_types_default.a.arrayOf(prop_types_default.a.number),\n  value: prop_types_default.a.arrayOf(prop_types_default.a.number),\n  count: prop_types_default.a.number,\n  pushable: prop_types_default.a.oneOfType([prop_types_default.a.bool, prop_types_default.a.number]),\n  allowCross: prop_types_default.a.bool,\n  disabled: prop_types_default.a.bool,\n  tabIndex: prop_types_default.a.arrayOf(prop_types_default.a.number),\n  min: prop_types_default.a.number,\n  max: prop_types_default.a.number\n};\nRange_Range.defaultProps = {\n  count: 1,\n  allowCross: true,\n  pushable: false,\n  tabIndex: []\n};\n\n\n/* harmony default export */ var es_Range = (createSlider(Range_Range));\n// CONCATENATED MODULE: ./node_modules/antd/es/slider/index.js\nfunction slider_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { slider_typeof = function _typeof(obj) { return typeof obj; }; } else { slider_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return slider_typeof(obj); }\n\nfunction slider_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\nfunction slider_extends() { slider_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 slider_extends.apply(this, arguments); }\n\nfunction slider_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction slider_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 slider_createClass(Constructor, protoProps, staticProps) { if (protoProps) slider_defineProperties(Constructor.prototype, protoProps); if (staticProps) slider_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction slider_possibleConstructorReturn(self, call) { if (call && (slider_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return slider_assertThisInitialized(self); }\n\nfunction slider_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction slider_getPrototypeOf(o) { slider_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return slider_getPrototypeOf(o); }\n\nfunction slider_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) slider_setPrototypeOf(subClass, superClass); }\n\nfunction slider_setPrototypeOf(o, p) { slider_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return slider_setPrototypeOf(o, p); }\n\nvar slider_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\nvar slider_Slider =\n/*#__PURE__*/\nfunction (_React$Component) {\n  slider_inherits(Slider, _React$Component);\n\n  function Slider(props) {\n    var _this;\n\n    slider_classCallCheck(this, Slider);\n\n    _this = slider_possibleConstructorReturn(this, slider_getPrototypeOf(Slider).call(this, props));\n\n    _this.toggleTooltipVisible = function (index, visible) {\n      _this.setState(function (_ref) {\n        var visibles = _ref.visibles;\n        return {\n          visibles: slider_extends({}, visibles, slider_defineProperty({}, index, visible))\n        };\n      });\n    };\n\n    _this.handleWithTooltip = function (tooltipPrefixCls, _a) {\n      var value = _a.value,\n          dragging = _a.dragging,\n          index = _a.index,\n          restProps = slider_rest(_a, [\"value\", \"dragging\", \"index\"]);\n\n      var _this$props = _this.props,\n          tipFormatter = _this$props.tipFormatter,\n          tooltipVisible = _this$props.tooltipVisible;\n      var visibles = _this.state.visibles;\n      var isTipFormatter = tipFormatter ? visibles[index] || dragging : false;\n      var visible = tooltipVisible || tooltipVisible === undefined && isTipFormatter;\n      return external_react_[\"createElement\"](es_tooltip, {\n        prefixCls: tooltipPrefixCls,\n        title: tipFormatter ? tipFormatter(value) : '',\n        visible: visible,\n        placement: \"top\",\n        transitionName: \"zoom-down\",\n        key: index\n      }, external_react_[\"createElement\"](es_Handle, slider_extends({}, restProps, {\n        value: value,\n        onMouseEnter: function onMouseEnter() {\n          return _this.toggleTooltipVisible(index, true);\n        },\n        onMouseLeave: function onMouseLeave() {\n          return _this.toggleTooltipVisible(index, false);\n        }\n      })));\n    };\n\n    _this.saveSlider = function (node) {\n      _this.rcSlider = node;\n    };\n\n    _this.renderSlider = function (_ref2) {\n      var getPrefixCls = _ref2.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          customizeTooltipPrefixCls = _a.tooltipPrefixCls,\n          range = _a.range,\n          restProps = slider_rest(_a, [\"prefixCls\", \"tooltipPrefixCls\", \"range\"]);\n\n      var prefixCls = getPrefixCls('slider', customizePrefixCls);\n      var tooltipPrefixCls = getPrefixCls('tooltip', customizeTooltipPrefixCls);\n\n      if (range) {\n        return external_react_[\"createElement\"](es_Range, slider_extends({}, restProps, {\n          ref: _this.saveSlider,\n          handle: function handle(info) {\n            return _this.handleWithTooltip(tooltipPrefixCls, info);\n          },\n          prefixCls: prefixCls,\n          tooltipPrefixCls: tooltipPrefixCls\n        }));\n      }\n\n      return external_react_[\"createElement\"](es_Slider, slider_extends({}, restProps, {\n        ref: _this.saveSlider,\n        handle: function handle(info) {\n          return _this.handleWithTooltip(tooltipPrefixCls, info);\n        },\n        prefixCls: prefixCls,\n        tooltipPrefixCls: tooltipPrefixCls\n      }));\n    };\n\n    _this.state = {\n      visibles: {}\n    };\n    return _this;\n  }\n\n  slider_createClass(Slider, [{\n    key: \"focus\",\n    value: function focus() {\n      this.rcSlider.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.rcSlider.blur();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderSlider);\n    }\n  }]);\n\n  return Slider;\n}(external_react_[\"Component\"]);\n\n\nslider_Slider.defaultProps = {\n  tipFormatter: function tipFormatter(value) {\n    return value.toString();\n  }\n};\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/GeneralProperty.js\n\n\n\n\n\n/* harmony default export */ var GeneralProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.locked'),\n      colon: false\n    }, getFieldDecorator('locked', {\n      rules: [{\n        type: 'boolean'\n      }],\n      valuePropName: 'checked',\n      initialValue: data.locked\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, {\n      size: \"small\"\n    })))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.visible'),\n      colon: false\n    }, getFieldDecorator('visible', {\n      rules: [{\n        type: 'boolean'\n      }],\n      valuePropName: 'checked',\n      initialValue: data.visible\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, {\n      size: \"small\"\n    }))))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.name'),\n      colon: false\n    }, getFieldDecorator('name', {\n      initialValue: data.name\n    })( /*#__PURE__*/external_react_default.a.createElement(es_input, null))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.width'),\n      colon: false\n    }, getFieldDecorator('width', {\n      rules: [{\n        type: 'number',\n        required: true,\n        message: 'Please input width',\n        min: 1\n      }],\n      initialValue: parseInt(data.width * data.scaleX, 10)\n    })( /*#__PURE__*/external_react_default.a.createElement(input_number_InputNumber, {\n      min: 1\n    })))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.height'),\n      colon: false\n    }, getFieldDecorator('height', {\n      rules: [{\n        type: 'number',\n        required: true,\n        message: 'Please input height',\n        min: 1\n      }],\n      initialValue: parseInt(data.height * data.scaleY, 10)\n    })( /*#__PURE__*/external_react_default.a.createElement(input_number_InputNumber, {\n      min: 1\n    }))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.left'),\n      colon: false\n    }, getFieldDecorator('left', {\n      rules: [{\n        required: true,\n        message: 'Please input x position'\n      }],\n      initialValue: data.left\n    })( /*#__PURE__*/external_react_default.a.createElement(input_number_InputNumber, null)))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.top'),\n      colon: false\n    }, getFieldDecorator('top', {\n      rules: [{\n        required: true,\n        message: 'Please input y position'\n      }],\n      initialValue: data.top\n    })( /*#__PURE__*/external_react_default.a.createElement(input_number_InputNumber, null))))), data.superType === 'element' ? null : /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.angle'),\n      colon: false\n    }, getFieldDecorator('angle', {\n      rules: [{\n        type: 'number',\n        required: true,\n        message: 'Please input rotation'\n      }],\n      initialValue: data.angle\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      min: 0,\n      max: 360\n    }))));\n  }\n});\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.from.js\nvar es_array_from = __webpack_require__(288);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __webpack_require__(249);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/popover/index.js\nfunction popover_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { popover_typeof = function _typeof(obj) { return typeof obj; }; } else { popover_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return popover_typeof(obj); }\n\nfunction popover_extends() { popover_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 popover_extends.apply(this, arguments); }\n\nfunction popover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction popover_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 popover_createClass(Constructor, protoProps, staticProps) { if (protoProps) popover_defineProperties(Constructor.prototype, protoProps); if (staticProps) popover_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction popover_possibleConstructorReturn(self, call) { if (call && (popover_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return popover_assertThisInitialized(self); }\n\nfunction popover_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction popover_getPrototypeOf(o) { popover_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return popover_getPrototypeOf(o); }\n\nfunction popover_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) popover_setPrototypeOf(subClass, superClass); }\n\nfunction popover_setPrototypeOf(o, p) { popover_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return popover_setPrototypeOf(o, p); }\n\nvar popover_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nvar popover_Popover =\n/*#__PURE__*/\nfunction (_React$Component) {\n  popover_inherits(Popover, _React$Component);\n\n  function Popover() {\n    var _this;\n\n    popover_classCallCheck(this, Popover);\n\n    _this = popover_possibleConstructorReturn(this, popover_getPrototypeOf(Popover).apply(this, arguments));\n\n    _this.saveTooltip = function (node) {\n      _this.tooltip = node;\n    };\n\n    _this.renderPopover = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          props = popover_rest(_a, [\"prefixCls\"]);\n\n      delete props.title;\n      var prefixCls = getPrefixCls('popover', customizePrefixCls);\n      return external_react_[\"createElement\"](es_tooltip, popover_extends({}, props, {\n        prefixCls: prefixCls,\n        ref: _this.saveTooltip,\n        overlay: _this.getOverlay(prefixCls)\n      }));\n    };\n\n    return _this;\n  }\n\n  popover_createClass(Popover, [{\n    key: \"getPopupDomNode\",\n    value: function getPopupDomNode() {\n      return this.tooltip.getPopupDomNode();\n    }\n  }, {\n    key: \"getOverlay\",\n    value: function getOverlay(prefixCls) {\n      var _this$props = this.props,\n          title = _this$props.title,\n          content = _this$props.content;\n      _util_warning(!('overlay' in this.props), 'Popover', '`overlay` is removed, please use `content` instead, ' + 'see: https://u.ant.design/popover-content');\n      return external_react_[\"createElement\"](\"div\", null, title && external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-title\")\n      }, title), external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-inner-content\")\n      }, content));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderPopover);\n    }\n  }]);\n\n  return Popover;\n}(external_react_[\"Component\"]);\n\n\npopover_Popover.defaultProps = {\n  placement: 'top',\n  transitionName: 'zoom-big',\n  trigger: 'hover',\n  mouseEnterDelay: 0.1,\n  mouseLeaveDelay: 0.1,\n  overlayStyle: {}\n};\n// EXTERNAL MODULE: ./node_modules/reactcss/lib/index.js\nvar reactcss_lib = __webpack_require__(14);\nvar reactcss_lib_default = /*#__PURE__*/__webpack_require__.n(reactcss_lib);\n\n// CONCATENATED MODULE: ./node_modules/react-color/es/helpers/alpha.js\nvar calculateChange = function calculateChange(e, hsl, direction, initialA, container) {\n  var containerWidth = container.clientWidth;\n  var containerHeight = container.clientHeight;\n  var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n  var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n  var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n  var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n  if (direction === 'vertical') {\n    var a = void 0;\n    if (top < 0) {\n      a = 0;\n    } else if (top > containerHeight) {\n      a = 1;\n    } else {\n      a = Math.round(top * 100 / containerHeight) / 100;\n    }\n\n    if (hsl.a !== a) {\n      return {\n        h: hsl.h,\n        s: hsl.s,\n        l: hsl.l,\n        a: a,\n        source: 'rgb'\n      };\n    }\n  } else {\n    var _a = void 0;\n    if (left < 0) {\n      _a = 0;\n    } else if (left > containerWidth) {\n      _a = 1;\n    } else {\n      _a = Math.round(left * 100 / containerWidth) / 100;\n    }\n\n    if (initialA !== _a) {\n      return {\n        h: hsl.h,\n        s: hsl.s,\n        l: hsl.l,\n        a: _a,\n        source: 'rgb'\n      };\n    }\n  }\n  return null;\n};\n// CONCATENATED MODULE: ./node_modules/react-color/es/helpers/checkboard.js\nvar checkboardCache = {};\n\nvar checkboard_render = function render(c1, c2, size, serverCanvas) {\n  if (typeof document === 'undefined' && !serverCanvas) {\n    return null;\n  }\n  var canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas');\n  canvas.width = size * 2;\n  canvas.height = size * 2;\n  var ctx = canvas.getContext('2d');\n  if (!ctx) {\n    return null;\n  } // If no context can be found, return early.\n  ctx.fillStyle = c1;\n  ctx.fillRect(0, 0, canvas.width, canvas.height);\n  ctx.fillStyle = c2;\n  ctx.fillRect(0, 0, size, size);\n  ctx.translate(size, size);\n  ctx.fillRect(0, 0, size, size);\n  return canvas.toDataURL();\n};\n\nvar checkboard_get = function get(c1, c2, size, serverCanvas) {\n  var key = c1 + '-' + c2 + '-' + size + (serverCanvas ? '-server' : '');\n\n  if (checkboardCache[key]) {\n    return checkboardCache[key];\n  }\n\n  var checkboard = checkboard_render(c1, c2, size, serverCanvas);\n  checkboardCache[key] = checkboard;\n  return checkboard;\n};\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/common/Checkboard.js\nvar Checkboard_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\n\n\n\n\nvar Checkboard_Checkboard = function Checkboard(_ref) {\n  var white = _ref.white,\n      grey = _ref.grey,\n      size = _ref.size,\n      renderers = _ref.renderers,\n      borderRadius = _ref.borderRadius,\n      boxShadow = _ref.boxShadow,\n      children = _ref.children;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      grid: {\n        borderRadius: borderRadius,\n        boxShadow: boxShadow,\n        absolute: '0px 0px 0px 0px',\n        background: 'url(' + checkboard_get(white, grey, size, renderers.canvas) + ') center left'\n      }\n    }\n  });\n  return Object(external_react_[\"isValidElement\"])(children) ? external_react_default.a.cloneElement(children, Checkboard_extends({}, children.props, { style: Checkboard_extends({}, children.props.style, styles.grid) })) : external_react_default.a.createElement('div', { style: styles.grid });\n};\n\nCheckboard_Checkboard.defaultProps = {\n  size: 8,\n  white: 'transparent',\n  grey: 'rgba(0,0,0,.08)',\n  renderers: {}\n};\n\n/* harmony default export */ var common_Checkboard = (Checkboard_Checkboard);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/common/Alpha.js\nvar Alpha_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 Alpha_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 Alpha_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Alpha_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 Alpha_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\n\n\n\n\nvar Alpha_Alpha = function (_ref) {\n  Alpha_inherits(Alpha, _ref);\n\n  function Alpha() {\n    var _ref2;\n\n    var _temp, _this, _ret;\n\n    Alpha_classCallCheck(this, Alpha);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = Alpha_possibleConstructorReturn(this, (_ref2 = Alpha.__proto__ || Object.getPrototypeOf(Alpha)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n      var change = calculateChange(e, _this.props.hsl, _this.props.direction, _this.props.a, _this.container);\n      change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n    }, _this.handleMouseDown = function (e) {\n      _this.handleChange(e);\n      window.addEventListener('mousemove', _this.handleChange);\n      window.addEventListener('mouseup', _this.handleMouseUp);\n    }, _this.handleMouseUp = function () {\n      _this.unbindEventListeners();\n    }, _this.unbindEventListeners = function () {\n      window.removeEventListener('mousemove', _this.handleChange);\n      window.removeEventListener('mouseup', _this.handleMouseUp);\n    }, _temp), Alpha_possibleConstructorReturn(_this, _ret);\n  }\n\n  Alpha_createClass(Alpha, [{\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.unbindEventListeners();\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var rgb = this.props.rgb;\n      var styles = reactcss_lib_default()({\n        'default': {\n          alpha: {\n            absolute: '0px 0px 0px 0px',\n            borderRadius: this.props.radius\n          },\n          checkboard: {\n            absolute: '0px 0px 0px 0px',\n            overflow: 'hidden',\n            borderRadius: this.props.radius\n          },\n          gradient: {\n            absolute: '0px 0px 0px 0px',\n            background: 'linear-gradient(to right, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n           rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)',\n            boxShadow: this.props.shadow,\n            borderRadius: this.props.radius\n          },\n          container: {\n            position: 'relative',\n            height: '100%',\n            margin: '0 3px'\n          },\n          pointer: {\n            position: 'absolute',\n            left: rgb.a * 100 + '%'\n          },\n          slider: {\n            width: '4px',\n            borderRadius: '1px',\n            height: '8px',\n            boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n            background: '#fff',\n            marginTop: '1px',\n            transform: 'translateX(-2px)'\n          }\n        },\n        'vertical': {\n          gradient: {\n            background: 'linear-gradient(to bottom, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n           rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)'\n          },\n          pointer: {\n            left: 0,\n            top: rgb.a * 100 + '%'\n          }\n        },\n        'overwrite': Alpha_extends({}, this.props.style)\n      }, {\n        vertical: this.props.direction === 'vertical',\n        overwrite: true\n      });\n\n      return external_react_default.a.createElement(\n        'div',\n        { style: styles.alpha },\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.checkboard },\n          external_react_default.a.createElement(common_Checkboard, { renderers: this.props.renderers })\n        ),\n        external_react_default.a.createElement('div', { style: styles.gradient }),\n        external_react_default.a.createElement(\n          'div',\n          {\n            style: styles.container,\n            ref: function ref(container) {\n              return _this2.container = container;\n            },\n            onMouseDown: this.handleMouseDown,\n            onTouchMove: this.handleChange,\n            onTouchStart: this.handleChange\n          },\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.pointer },\n            this.props.pointer ? external_react_default.a.createElement(this.props.pointer, this.props) : external_react_default.a.createElement('div', { style: styles.slider })\n          )\n        )\n      );\n    }\n  }]);\n\n  return Alpha;\n}(external_react_[\"PureComponent\"] || external_react_[\"Component\"]);\n\n/* harmony default export */ var common_Alpha = (Alpha_Alpha);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/common/EditableInput.js\nvar EditableInput_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 EditableInput_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\nfunction EditableInput_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction EditableInput_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 EditableInput_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\n\nvar DEFAULT_ARROW_OFFSET = 1;\n\nvar UP_KEY_CODE = 38;\nvar DOWN_KEY_CODE = 40;\nvar VALID_KEY_CODES = [UP_KEY_CODE, DOWN_KEY_CODE];\nvar isValidKeyCode = function isValidKeyCode(keyCode) {\n  return VALID_KEY_CODES.indexOf(keyCode) > -1;\n};\nvar getNumberValue = function getNumberValue(value) {\n  return Number(String(value).replace(/%/g, ''));\n};\n\nvar idCounter = 1;\n\nvar EditableInput_EditableInput = function (_ref) {\n  EditableInput_inherits(EditableInput, _ref);\n\n  function EditableInput(props) {\n    EditableInput_classCallCheck(this, EditableInput);\n\n    var _this = EditableInput_possibleConstructorReturn(this, (EditableInput.__proto__ || Object.getPrototypeOf(EditableInput)).call(this));\n\n    _this.handleBlur = function () {\n      if (_this.state.blurValue) {\n        _this.setState({ value: _this.state.blurValue, blurValue: null });\n      }\n    };\n\n    _this.handleChange = function (e) {\n      _this.setUpdatedValue(e.target.value, e);\n    };\n\n    _this.handleKeyDown = function (e) {\n      // In case `e.target.value` is a percentage remove the `%` character\n      // and update accordingly with a percentage\n      // https://github.com/casesandberg/react-color/issues/383\n      var value = getNumberValue(e.target.value);\n      if (!isNaN(value) && isValidKeyCode(e.keyCode)) {\n        var offset = _this.getArrowOffset();\n        var updatedValue = e.keyCode === UP_KEY_CODE ? value + offset : value - offset;\n\n        _this.setUpdatedValue(updatedValue, e);\n      }\n    };\n\n    _this.handleDrag = function (e) {\n      if (_this.props.dragLabel) {\n        var newValue = Math.round(_this.props.value + e.movementX);\n        if (newValue >= 0 && newValue <= _this.props.dragMax) {\n          _this.props.onChange && _this.props.onChange(_this.getValueObjectWithLabel(newValue), e);\n        }\n      }\n    };\n\n    _this.handleMouseDown = function (e) {\n      if (_this.props.dragLabel) {\n        e.preventDefault();\n        _this.handleDrag(e);\n        window.addEventListener('mousemove', _this.handleDrag);\n        window.addEventListener('mouseup', _this.handleMouseUp);\n      }\n    };\n\n    _this.handleMouseUp = function () {\n      _this.unbindEventListeners();\n    };\n\n    _this.unbindEventListeners = function () {\n      window.removeEventListener('mousemove', _this.handleDrag);\n      window.removeEventListener('mouseup', _this.handleMouseUp);\n    };\n\n    _this.state = {\n      value: String(props.value).toUpperCase(),\n      blurValue: String(props.value).toUpperCase()\n    };\n\n    _this.inputId = 'rc-editable-input-' + idCounter++;\n    return _this;\n  }\n\n  EditableInput_createClass(EditableInput, [{\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps, prevState) {\n      if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) {\n        if (this.input === document.activeElement) {\n          this.setState({ blurValue: String(this.props.value).toUpperCase() });\n        } else {\n          this.setState({ value: String(this.props.value).toUpperCase(), blurValue: !this.state.blurValue && String(this.props.value).toUpperCase() });\n        }\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.unbindEventListeners();\n    }\n  }, {\n    key: 'getValueObjectWithLabel',\n    value: function getValueObjectWithLabel(value) {\n      return EditableInput_defineProperty({}, this.props.label, value);\n    }\n  }, {\n    key: 'getArrowOffset',\n    value: function getArrowOffset() {\n      return this.props.arrowOffset || DEFAULT_ARROW_OFFSET;\n    }\n  }, {\n    key: 'setUpdatedValue',\n    value: function setUpdatedValue(value, e) {\n      var onChangeValue = this.props.label ? this.getValueObjectWithLabel(value) : value;\n      this.props.onChange && this.props.onChange(onChangeValue, e);\n\n      this.setState({ value: value });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var styles = reactcss_lib_default()({\n        'default': {\n          wrap: {\n            position: 'relative'\n          }\n        },\n        'user-override': {\n          wrap: this.props.style && this.props.style.wrap ? this.props.style.wrap : {},\n          input: this.props.style && this.props.style.input ? this.props.style.input : {},\n          label: this.props.style && this.props.style.label ? this.props.style.label : {}\n        },\n        'dragLabel-true': {\n          label: {\n            cursor: 'ew-resize'\n          }\n        }\n      }, {\n        'user-override': true\n      }, this.props);\n\n      return external_react_default.a.createElement(\n        'div',\n        { style: styles.wrap },\n        external_react_default.a.createElement('input', {\n          id: this.inputId,\n          style: styles.input,\n          ref: function ref(input) {\n            return _this2.input = input;\n          },\n          value: this.state.value,\n          onKeyDown: this.handleKeyDown,\n          onChange: this.handleChange,\n          onBlur: this.handleBlur,\n          placeholder: this.props.placeholder,\n          spellCheck: 'false'\n        }),\n        this.props.label && !this.props.hideLabel ? external_react_default.a.createElement(\n          'label',\n          {\n            htmlFor: this.inputId,\n            style: styles.label,\n            onMouseDown: this.handleMouseDown\n          },\n          this.props.label\n        ) : null\n      );\n    }\n  }]);\n\n  return EditableInput;\n}(external_react_[\"PureComponent\"] || external_react_[\"Component\"]);\n\n/* harmony default export */ var common_EditableInput = (EditableInput_EditableInput);\n// CONCATENATED MODULE: ./node_modules/react-color/es/helpers/hue.js\nvar hue_calculateChange = function calculateChange(e, direction, hsl, container) {\n  var containerWidth = container.clientWidth;\n  var containerHeight = container.clientHeight;\n  var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n  var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n  var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n  var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n  if (direction === 'vertical') {\n    var h = void 0;\n    if (top < 0) {\n      h = 359;\n    } else if (top > containerHeight) {\n      h = 0;\n    } else {\n      var percent = -(top * 100 / containerHeight) + 100;\n      h = 360 * percent / 100;\n    }\n\n    if (hsl.h !== h) {\n      return {\n        h: h,\n        s: hsl.s,\n        l: hsl.l,\n        a: hsl.a,\n        source: 'hsl'\n      };\n    }\n  } else {\n    var _h = void 0;\n    if (left < 0) {\n      _h = 0;\n    } else if (left > containerWidth) {\n      _h = 359;\n    } else {\n      var _percent = left * 100 / containerWidth;\n      _h = 360 * _percent / 100;\n    }\n\n    if (hsl.h !== _h) {\n      return {\n        h: _h,\n        s: hsl.s,\n        l: hsl.l,\n        a: hsl.a,\n        source: 'hsl'\n      };\n    }\n  }\n  return null;\n};\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/common/Hue.js\nvar Hue_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 Hue_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Hue_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 Hue_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\n\n\nvar Hue_Hue = function (_ref) {\n  Hue_inherits(Hue, _ref);\n\n  function Hue() {\n    var _ref2;\n\n    var _temp, _this, _ret;\n\n    Hue_classCallCheck(this, Hue);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = Hue_possibleConstructorReturn(this, (_ref2 = Hue.__proto__ || Object.getPrototypeOf(Hue)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n      var change = hue_calculateChange(e, _this.props.direction, _this.props.hsl, _this.container);\n      change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n    }, _this.handleMouseDown = function (e) {\n      _this.handleChange(e);\n      window.addEventListener('mousemove', _this.handleChange);\n      window.addEventListener('mouseup', _this.handleMouseUp);\n    }, _this.handleMouseUp = function () {\n      _this.unbindEventListeners();\n    }, _temp), Hue_possibleConstructorReturn(_this, _ret);\n  }\n\n  Hue_createClass(Hue, [{\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.unbindEventListeners();\n    }\n  }, {\n    key: 'unbindEventListeners',\n    value: function unbindEventListeners() {\n      window.removeEventListener('mousemove', this.handleChange);\n      window.removeEventListener('mouseup', this.handleMouseUp);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _props$direction = this.props.direction,\n          direction = _props$direction === undefined ? 'horizontal' : _props$direction;\n\n\n      var styles = reactcss_lib_default()({\n        'default': {\n          hue: {\n            absolute: '0px 0px 0px 0px',\n            borderRadius: this.props.radius,\n            boxShadow: this.props.shadow\n          },\n          container: {\n            padding: '0 2px',\n            position: 'relative',\n            height: '100%',\n            borderRadius: this.props.radius\n          },\n          pointer: {\n            position: 'absolute',\n            left: this.props.hsl.h * 100 / 360 + '%'\n          },\n          slider: {\n            marginTop: '1px',\n            width: '4px',\n            borderRadius: '1px',\n            height: '8px',\n            boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n            background: '#fff',\n            transform: 'translateX(-2px)'\n          }\n        },\n        'vertical': {\n          pointer: {\n            left: '0px',\n            top: -(this.props.hsl.h * 100 / 360) + 100 + '%'\n          }\n        }\n      }, { vertical: direction === 'vertical' });\n\n      return external_react_default.a.createElement(\n        'div',\n        { style: styles.hue },\n        external_react_default.a.createElement(\n          'div',\n          {\n            className: 'hue-' + direction,\n            style: styles.container,\n            ref: function ref(container) {\n              return _this2.container = container;\n            },\n            onMouseDown: this.handleMouseDown,\n            onTouchMove: this.handleChange,\n            onTouchStart: this.handleChange\n          },\n          external_react_default.a.createElement(\n            'style',\n            null,\n            '\\n            .hue-horizontal {\\n              background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\\n                33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n              background: -webkit-linear-gradient(to right, #f00 0%, #ff0\\n                17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n            }\\n\\n            .hue-vertical {\\n              background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\\n                #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n              background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\\n                #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n            }\\n          '\n          ),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.pointer },\n            this.props.pointer ? external_react_default.a.createElement(this.props.pointer, this.props) : external_react_default.a.createElement('div', { style: styles.slider })\n          )\n        )\n      );\n    }\n  }]);\n\n  return Hue;\n}(external_react_[\"PureComponent\"] || external_react_[\"Component\"]);\n\n/* harmony default export */ var common_Hue = (Hue_Hue);\n// CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheClear.js\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\n/* harmony default export */ var _listCacheClear = (listCacheClear);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/eq.js\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_eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/* harmony default export */ var lodash_es_eq = (eq_eq);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_assocIndexOf.js\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 (lodash_es_eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/* harmony default export */ var _assocIndexOf = (assocIndexOf);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheDelete.js\n\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\n/* harmony default export */ var _listCacheDelete = (listCacheDelete);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheGet.js\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/* harmony default export */ var _listCacheGet = (listCacheGet);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheHas.js\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/* harmony default export */ var _listCacheHas = (listCacheHas);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheSet.js\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    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n/* harmony default export */ var _listCacheSet = (listCacheSet);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_ListCache.js\n\n\n\n\n\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\n/* harmony default export */ var _ListCache = (ListCache);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_stackClear.js\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  this.size = 0;\n}\n\n/* harmony default export */ var _stackClear = (stackClear);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_stackDelete.js\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\n/* harmony default export */ var _stackDelete = (stackDelete);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_stackGet.js\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/* harmony default export */ var _stackGet = (stackGet);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_stackHas.js\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/* harmony default export */ var _stackHas = (stackHas);\n\n// EXTERNAL MODULE: ./node_modules/lodash-es/_root.js\nvar _root = __webpack_require__(64);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_Symbol.js\n\n\n/** Built-in value references. */\nvar _Symbol_Symbol = _root[\"a\" /* default */].Symbol;\n\n/* harmony default export */ var _Symbol = (_Symbol_Symbol);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getRawTag.js\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar _getRawTag_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 = _getRawTag_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\n/* harmony default export */ var _getRawTag = (getRawTag);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_objectToString.js\n/** Used for built-in method references. */\nvar _objectToString_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 _objectToString_nativeObjectToString = _objectToString_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 _objectToString_nativeObjectToString.call(value);\n}\n\n/* harmony default export */ var _objectToString = (objectToString);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseGetTag.js\n\n\n\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar _baseGetTag_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 (_baseGetTag_symToStringTag && _baseGetTag_symToStringTag in Object(value))\n    ? _getRawTag(value)\n    : _objectToString(value);\n}\n\n/* harmony default export */ var _baseGetTag = (baseGetTag);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isObject.js\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\n/* harmony default export */ var lodash_es_isObject = (isObject);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isFunction.js\n\n\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 (!lodash_es_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\n/* harmony default export */ var lodash_es_isFunction = (isFunction);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_coreJsData.js\n\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = _root[\"a\" /* default */]['__core-js_shared__'];\n\n/* harmony default export */ var _coreJsData = (coreJsData);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_isMasked.js\n\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\n/* harmony default export */ var _isMasked = (isMasked);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_toSource.js\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\n/* harmony default export */ var _toSource = (toSource);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsNative.js\n\n\n\n\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 _baseIsNative_funcProto = Function.prototype,\n    _baseIsNative_objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar _baseIsNative_funcToString = _baseIsNative_funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar _baseIsNative_hasOwnProperty = _baseIsNative_objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  _baseIsNative_funcToString.call(_baseIsNative_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 (!lodash_es_isObject(value) || _isMasked(value)) {\n    return false;\n  }\n  var pattern = lodash_es_isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(_toSource(value));\n}\n\n/* harmony default export */ var _baseIsNative = (baseIsNative);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getValue.js\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/* harmony default export */ var _getValue = (getValue);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getNative.js\n\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/* harmony default export */ var _getNative = (getNative);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_Map.js\n\n\n\n/* Built-in method references that are verified to be native. */\nvar _Map_Map = _getNative(_root[\"a\" /* default */], 'Map');\n\n/* harmony default export */ var _Map = (_Map_Map);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_nativeCreate.js\n\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = _getNative(Object, 'create');\n\n/* harmony default export */ var _nativeCreate = (nativeCreate);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_hashClear.js\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  this.size = 0;\n}\n\n/* harmony default export */ var _hashClear = (hashClear);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_hashDelete.js\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\n/* harmony default export */ var _hashDelete = (hashDelete);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_hashGet.js\n\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 _hashGet_objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar _hashGet_hasOwnProperty = _hashGet_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 _hashGet_hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/* harmony default export */ var _hashGet = (hashGet);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_hashHas.js\n\n\n/** Used for built-in method references. */\nvar _hashHas_objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar _hashHas_hasOwnProperty = _hashHas_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) : _hashHas_hasOwnProperty.call(data, key);\n}\n\n/* harmony default export */ var _hashHas = (hashHas);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_hashSet.js\n\n\n/** Used to stand-in for `undefined` hash values. */\nvar _hashSet_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) ? _hashSet_HASH_UNDEFINED : value;\n  return this;\n}\n\n/* harmony default export */ var _hashSet = (hashSet);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_Hash.js\n\n\n\n\n\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\n/* harmony default export */ var _Hash = (Hash);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_mapCacheClear.js\n\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.size = 0;\n  this.__data__ = {\n    'hash': new _Hash,\n    'map': new (_Map || _ListCache),\n    'string': new _Hash\n  };\n}\n\n/* harmony default export */ var _mapCacheClear = (mapCacheClear);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_isKeyable.js\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/* harmony default export */ var _isKeyable = (isKeyable);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getMapData.js\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/* harmony default export */ var _getMapData = (getMapData);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_mapCacheDelete.js\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  var result = _getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/* harmony default export */ var _mapCacheDelete = (mapCacheDelete);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_mapCacheGet.js\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/* harmony default export */ var _mapCacheGet = (mapCacheGet);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_mapCacheHas.js\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/* harmony default export */ var _mapCacheHas = (mapCacheHas);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_mapCacheSet.js\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  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\n/* harmony default export */ var _mapCacheSet = (mapCacheSet);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_MapCache.js\n\n\n\n\n\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\n/* harmony default export */ var _MapCache = (MapCache);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_stackSet.js\n\n\n\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\n/* harmony default export */ var _stackSet = (stackSet);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_Stack.js\n\n\n\n\n\n\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\n/* harmony default export */ var _Stack = (Stack);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_defineProperty.js\n\n\nvar _defineProperty_defineProperty = (function() {\n  try {\n    var func = _getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\n/* harmony default export */ var lodash_es_defineProperty = (_defineProperty_defineProperty);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseAssignValue.js\n\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__' && lodash_es_defineProperty) {\n    lodash_es_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\n/* harmony default export */ var _baseAssignValue = (baseAssignValue);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_assignMergeValue.js\n\n\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 && !lodash_es_eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    _baseAssignValue(object, key, value);\n  }\n}\n\n/* harmony default export */ var _assignMergeValue = (assignMergeValue);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_createBaseFor.js\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\n/* harmony default export */ var _createBaseFor = (createBaseFor);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseFor.js\n\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\n/* harmony default export */ var _baseFor = (baseFor);\n\n// EXTERNAL MODULE: ./node_modules/lodash-es/_cloneBuffer.js\nvar _cloneBuffer = __webpack_require__(686);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_Uint8Array.js\n\n\n/** Built-in value references. */\nvar _Uint8Array_Uint8Array = _root[\"a\" /* default */].Uint8Array;\n\n/* harmony default export */ var _Uint8Array = (_Uint8Array_Uint8Array);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_cloneArrayBuffer.js\n\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\n/* harmony default export */ var _cloneArrayBuffer = (cloneArrayBuffer);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_cloneTypedArray.js\n\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\n/* harmony default export */ var _cloneTypedArray = (cloneTypedArray);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_copyArray.js\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\n/* harmony default export */ var _copyArray = (copyArray);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseCreate.js\n\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 (!lodash_es_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\n/* harmony default export */ var _baseCreate = (baseCreate);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_overArg.js\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/* harmony default export */ var _overArg = (overArg);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getPrototype.js\n\n\n/** Built-in value references. */\nvar getPrototype = _overArg(Object.getPrototypeOf, Object);\n\n/* harmony default export */ var _getPrototype = (getPrototype);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_isPrototype.js\n/** Used for built-in method references. */\nvar _isPrototype_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) || _isPrototype_objectProto;\n\n  return value === proto;\n}\n\n/* harmony default export */ var _isPrototype = (isPrototype);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_initCloneObject.js\n\n\n\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\n/* harmony default export */ var _initCloneObject = (initCloneObject);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isObjectLike.js\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\n/* harmony default export */ var lodash_es_isObjectLike = (isObjectLike);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsArguments.js\n\n\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 lodash_es_isObjectLike(value) && _baseGetTag(value) == argsTag;\n}\n\n/* harmony default export */ var _baseIsArguments = (baseIsArguments);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isArguments.js\n\n\n\n/** Used for built-in method references. */\nvar isArguments_objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar isArguments_hasOwnProperty = isArguments_objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = isArguments_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 lodash_es_isObjectLike(value) && isArguments_hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\n/* harmony default export */ var lodash_es_isArguments = (isArguments);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isArray.js\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/* harmony default export */ var lodash_es_isArray = (isArray);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isLength.js\n/** Used as references for various `Number` constants. */\nvar isLength_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 <= isLength_MAX_SAFE_INTEGER;\n}\n\n/* harmony default export */ var lodash_es_isLength = (isLength);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isArrayLike.js\n\n\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 && lodash_es_isLength(value.length) && !lodash_es_isFunction(value);\n}\n\n/* harmony default export */ var lodash_es_isArrayLike = (isArrayLike);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isArrayLikeObject.js\n\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 lodash_es_isObjectLike(value) && lodash_es_isArrayLike(value);\n}\n\n/* harmony default export */ var lodash_es_isArrayLikeObject = (isArrayLikeObject);\n\n// EXTERNAL MODULE: ./node_modules/lodash-es/isBuffer.js\nvar isBuffer = __webpack_require__(193);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isPlainObject.js\n\n\n\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar isPlainObject_funcProto = Function.prototype,\n    isPlainObject_objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar isPlainObject_funcToString = isPlainObject_funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar isPlainObject_hasOwnProperty = isPlainObject_objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = isPlainObject_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 (!lodash_es_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 = isPlainObject_hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    isPlainObject_funcToString.call(Ctor) == objectCtorString;\n}\n\n/* harmony default export */ var lodash_es_isPlainObject = (isPlainObject);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsTypedArray.js\n\n\n\n\n/** `Object#toString` result references. */\nvar _baseIsTypedArray_argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    _baseIsTypedArray_funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    _baseIsTypedArray_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[_baseIsTypedArray_argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[_baseIsTypedArray_funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[_baseIsTypedArray_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 lodash_es_isObjectLike(value) &&\n    lodash_es_isLength(value.length) && !!typedArrayTags[_baseGetTag(value)];\n}\n\n/* harmony default export */ var _baseIsTypedArray = (baseIsTypedArray);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseUnary.js\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/* harmony default export */ var _baseUnary = (baseUnary);\n\n// EXTERNAL MODULE: ./node_modules/lodash-es/_nodeUtil.js\nvar _nodeUtil = __webpack_require__(463);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isTypedArray.js\n\n\n\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = _nodeUtil[\"a\" /* default */] && _nodeUtil[\"a\" /* default */].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\n/* harmony default export */ var lodash_es_isTypedArray = (isTypedArray);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_safeGet.js\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\n/* harmony default export */ var _safeGet = (safeGet);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_assignValue.js\n\n\n\n/** Used for built-in method references. */\nvar _assignValue_objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar _assignValue_hasOwnProperty = _assignValue_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 (!(_assignValue_hasOwnProperty.call(object, key) && lodash_es_eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    _baseAssignValue(object, key, value);\n  }\n}\n\n/* harmony default export */ var _assignValue = (assignValue);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_copyObject.js\n\n\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\n/* harmony default export */ var _copyObject = (copyObject);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseTimes.js\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/* harmony default export */ var _baseTimes = (baseTimes);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_isIndex.js\n/** Used as references for various `Number` constants. */\nvar _isIndex_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 ? _isIndex_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\n/* harmony default export */ var _isIndex = (isIndex);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayLikeKeys.js\n\n\n\n\n\n\n\n/** Used for built-in method references. */\nvar _arrayLikeKeys_objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar _arrayLikeKeys_hasOwnProperty = _arrayLikeKeys_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 = lodash_es_isArray(value),\n      isArg = !isArr && lodash_es_isArguments(value),\n      isBuff = !isArr && !isArg && Object(isBuffer[\"a\" /* default */])(value),\n      isType = !isArr && !isArg && !isBuff && lodash_es_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 || _arrayLikeKeys_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\n/* harmony default export */ var _arrayLikeKeys = (arrayLikeKeys);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_nativeKeysIn.js\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\n/* harmony default export */ var _nativeKeysIn = (nativeKeysIn);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseKeysIn.js\n\n\n\n\n/** Used for built-in method references. */\nvar _baseKeysIn_objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar _baseKeysIn_hasOwnProperty = _baseKeysIn_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 (!lodash_es_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 || !_baseKeysIn_hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/* harmony default export */ var _baseKeysIn = (baseKeysIn);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/keysIn.js\n\n\n\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 lodash_es_isArrayLike(object) ? _arrayLikeKeys(object, true) : _baseKeysIn(object);\n}\n\n/* harmony default export */ var lodash_es_keysIn = (keysIn);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/toPlainObject.js\n\n\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, lodash_es_keysIn(value));\n}\n\n/* harmony default export */ var lodash_es_toPlainObject = (toPlainObject);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseMergeDeep.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 = lodash_es_isArray(srcValue),\n        isBuff = !isArr && Object(isBuffer[\"a\" /* default */])(srcValue),\n        isTyped = !isArr && !isBuff && lodash_es_isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (lodash_es_isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (lodash_es_isArrayLikeObject(objValue)) {\n        newValue = _copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = Object(_cloneBuffer[\"a\" /* default */])(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 (lodash_es_isPlainObject(srcValue) || lodash_es_isArguments(srcValue)) {\n      newValue = objValue;\n      if (lodash_es_isArguments(objValue)) {\n        newValue = lodash_es_toPlainObject(objValue);\n      }\n      else if (!lodash_es_isObject(objValue) || lodash_es_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\n/* harmony default export */ var _baseMergeDeep = (baseMergeDeep);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseMerge.js\n\n\n\n\n\n\n\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 (lodash_es_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  }, lodash_es_keysIn);\n}\n\n/* harmony default export */ var _baseMerge = (baseMerge);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/identity.js\n/**\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_identity(value) {\n  return value;\n}\n\n/* harmony default export */ var lodash_es_identity = (identity_identity);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_apply.js\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\n/* harmony default export */ var _apply = (apply);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_overRest.js\n\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\n/* harmony default export */ var _overRest = (overRest);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/constant.js\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\n/* harmony default export */ var lodash_es_constant = (constant);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseSetToString.js\n\n\n\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 = !lodash_es_defineProperty ? lodash_es_identity : function(func, string) {\n  return lodash_es_defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': lodash_es_constant(string),\n    'writable': true\n  });\n};\n\n/* harmony default export */ var _baseSetToString = (baseSetToString);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_shortOut.js\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\n/* harmony default export */ var _shortOut = (shortOut);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_setToString.js\n\n\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\n/* harmony default export */ var _setToString = (setToString);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseRest.js\n\n\n\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, lodash_es_identity), func + '');\n}\n\n/* harmony default export */ var _baseRest = (baseRest);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_isIterateeCall.js\n\n\n\n\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 (!lodash_es_isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (lodash_es_isArrayLike(object) && _isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return lodash_es_eq(object[index], value);\n  }\n  return false;\n}\n\n/* harmony default export */ var _isIterateeCall = (isIterateeCall);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_createAssigner.js\n\n\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\n/* harmony default export */ var _createAssigner = (createAssigner);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/merge.js\n\n\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\n/* harmony default export */ var lodash_es_merge = (merge);\n\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/common/Raised.js\n\n\n\n\n\nvar Raised_Raised = function Raised(_ref) {\n  var zDepth = _ref.zDepth,\n      radius = _ref.radius,\n      background = _ref.background,\n      children = _ref.children,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      wrap: {\n        position: 'relative',\n        display: 'inline-block'\n      },\n      content: {\n        position: 'relative'\n      },\n      bg: {\n        absolute: '0px 0px 0px 0px',\n        boxShadow: '0 ' + zDepth + 'px ' + zDepth * 4 + 'px rgba(0,0,0,.24)',\n        borderRadius: radius,\n        background: background\n      }\n    },\n    'zDepth-0': {\n      bg: {\n        boxShadow: 'none'\n      }\n    },\n\n    'zDepth-1': {\n      bg: {\n        boxShadow: '0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)'\n      }\n    },\n    'zDepth-2': {\n      bg: {\n        boxShadow: '0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)'\n      }\n    },\n    'zDepth-3': {\n      bg: {\n        boxShadow: '0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)'\n      }\n    },\n    'zDepth-4': {\n      bg: {\n        boxShadow: '0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)'\n      }\n    },\n    'zDepth-5': {\n      bg: {\n        boxShadow: '0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)'\n      }\n    },\n    'square': {\n      bg: {\n        borderRadius: '0'\n      }\n    },\n    'circle': {\n      bg: {\n        borderRadius: '50%'\n      }\n    }\n  }, passedStyles), { 'zDepth-1': zDepth === 1 });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.wrap },\n    external_react_default.a.createElement('div', { style: styles.bg }),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.content },\n      children\n    )\n  );\n};\n\nRaised_Raised.propTypes = {\n  background: prop_types_default.a.string,\n  zDepth: prop_types_default.a.oneOf([0, 1, 2, 3, 4, 5]),\n  radius: prop_types_default.a.number,\n  styles: prop_types_default.a.object\n};\n\nRaised_Raised.defaultProps = {\n  background: '#fff',\n  zDepth: 1,\n  radius: 2,\n  styles: {}\n};\n\n/* harmony default export */ var common_Raised = (Raised_Raised);\n// CONCATENATED MODULE: ./node_modules/lodash-es/now.js\n\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return _root[\"a\" /* default */].Date.now();\n};\n\n/* harmony default export */ var lodash_es_now = (now);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_trimmedEndIndex.js\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\n/* harmony default export */ var _trimmedEndIndex = (trimmedEndIndex);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseTrim.js\n\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\n/* harmony default export */ var _baseTrim = (baseTrim);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/isSymbol.js\n\n\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    (lodash_es_isObjectLike(value) && _baseGetTag(value) == symbolTag);\n}\n\n/* harmony default export */ var lodash_es_isSymbol = (isSymbol);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/toNumber.js\n\n\n\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 (lodash_es_isSymbol(value)) {\n    return NAN;\n  }\n  if (lodash_es_isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = lodash_es_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\n/* harmony default export */ var lodash_es_toNumber = (toNumber);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/debounce.js\n\n\n\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar debounce_nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce_debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = lodash_es_toNumber(wait) || 0;\n  if (lodash_es_isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? debounce_nativeMax(lodash_es_toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = lodash_es_now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(lodash_es_now());\n  }\n\n  function debounced() {\n    var time = lodash_es_now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/* harmony default export */ var lodash_es_debounce = (debounce_debounce);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/throttle.js\n\n\n\n/** Error message constants. */\nvar throttle_FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle_throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(throttle_FUNC_ERROR_TEXT);\n  }\n  if (lodash_es_isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return lodash_es_debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/* harmony default export */ var lodash_es_throttle = (throttle_throttle);\n\n// CONCATENATED MODULE: ./node_modules/react-color/es/helpers/saturation.js\nvar saturation_calculateChange = function calculateChange(e, hsl, container) {\n  var _container$getBoundin = container.getBoundingClientRect(),\n      containerWidth = _container$getBoundin.width,\n      containerHeight = _container$getBoundin.height;\n\n  var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n  var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n  var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n  var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n  if (left < 0) {\n    left = 0;\n  } else if (left > containerWidth) {\n    left = containerWidth;\n  }\n\n  if (top < 0) {\n    top = 0;\n  } else if (top > containerHeight) {\n    top = containerHeight;\n  }\n\n  var saturation = left / containerWidth;\n  var bright = 1 - top / containerHeight;\n\n  return {\n    h: hsl.h,\n    s: saturation,\n    v: bright,\n    a: hsl.a,\n    source: 'hsv'\n  };\n};\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/common/Saturation.js\nvar Saturation_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 Saturation_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Saturation_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 Saturation_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\n\n\n\nvar Saturation_Saturation = function (_ref) {\n  Saturation_inherits(Saturation, _ref);\n\n  function Saturation(props) {\n    Saturation_classCallCheck(this, Saturation);\n\n    var _this = Saturation_possibleConstructorReturn(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props));\n\n    _this.handleChange = function (e) {\n      typeof _this.props.onChange === 'function' && _this.throttle(_this.props.onChange, saturation_calculateChange(e, _this.props.hsl, _this.container), e);\n    };\n\n    _this.handleMouseDown = function (e) {\n      _this.handleChange(e);\n      var renderWindow = _this.getContainerRenderWindow();\n      renderWindow.addEventListener('mousemove', _this.handleChange);\n      renderWindow.addEventListener('mouseup', _this.handleMouseUp);\n    };\n\n    _this.handleMouseUp = function () {\n      _this.unbindEventListeners();\n    };\n\n    _this.throttle = lodash_es_throttle(function (fn, data, e) {\n      fn(data, e);\n    }, 50);\n    return _this;\n  }\n\n  Saturation_createClass(Saturation, [{\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.throttle.cancel();\n      this.unbindEventListeners();\n    }\n  }, {\n    key: 'getContainerRenderWindow',\n    value: function getContainerRenderWindow() {\n      var container = this.container;\n\n      var renderWindow = window;\n      while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) {\n        renderWindow = renderWindow.parent;\n      }\n      return renderWindow;\n    }\n  }, {\n    key: 'unbindEventListeners',\n    value: function unbindEventListeners() {\n      var renderWindow = this.getContainerRenderWindow();\n      renderWindow.removeEventListener('mousemove', this.handleChange);\n      renderWindow.removeEventListener('mouseup', this.handleMouseUp);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _ref2 = this.props.style || {},\n          color = _ref2.color,\n          white = _ref2.white,\n          black = _ref2.black,\n          pointer = _ref2.pointer,\n          circle = _ref2.circle;\n\n      var styles = reactcss_lib_default()({\n        'default': {\n          color: {\n            absolute: '0px 0px 0px 0px',\n            background: 'hsl(' + this.props.hsl.h + ',100%, 50%)',\n            borderRadius: this.props.radius\n          },\n          white: {\n            absolute: '0px 0px 0px 0px',\n            borderRadius: this.props.radius\n          },\n          black: {\n            absolute: '0px 0px 0px 0px',\n            boxShadow: this.props.shadow,\n            borderRadius: this.props.radius\n          },\n          pointer: {\n            position: 'absolute',\n            top: -(this.props.hsv.v * 100) + 100 + '%',\n            left: this.props.hsv.s * 100 + '%',\n            cursor: 'default'\n          },\n          circle: {\n            width: '4px',\n            height: '4px',\n            boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\\n            0 0 1px 2px rgba(0,0,0,.4)',\n            borderRadius: '50%',\n            cursor: 'hand',\n            transform: 'translate(-2px, -2px)'\n          }\n        },\n        'custom': {\n          color: color,\n          white: white,\n          black: black,\n          pointer: pointer,\n          circle: circle\n        }\n      }, { 'custom': !!this.props.style });\n\n      return external_react_default.a.createElement(\n        'div',\n        {\n          style: styles.color,\n          ref: function ref(container) {\n            return _this2.container = container;\n          },\n          onMouseDown: this.handleMouseDown,\n          onTouchMove: this.handleChange,\n          onTouchStart: this.handleChange\n        },\n        external_react_default.a.createElement(\n          'style',\n          null,\n          '\\n          .saturation-white {\\n            background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\\n            background: linear-gradient(to right, #fff, rgba(255,255,255,0));\\n          }\\n          .saturation-black {\\n            background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\\n            background: linear-gradient(to top, #000, rgba(0,0,0,0));\\n          }\\n        '\n        ),\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.white, className: 'saturation-white' },\n          external_react_default.a.createElement('div', { style: styles.black, className: 'saturation-black' }),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.pointer },\n            this.props.pointer ? external_react_default.a.createElement(this.props.pointer, this.props) : external_react_default.a.createElement('div', { style: styles.circle })\n          )\n        )\n      );\n    }\n  }]);\n\n  return Saturation;\n}(external_react_[\"PureComponent\"] || external_react_[\"Component\"]);\n\n/* harmony default export */ var common_Saturation = (Saturation_Saturation);\n// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayEach.js\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\n/* harmony default export */ var _arrayEach = (arrayEach);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_nativeKeys.js\n\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = _overArg(Object.keys, Object);\n\n/* harmony default export */ var _nativeKeys = (nativeKeys);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseKeys.js\n\n\n\n/** Used for built-in method references. */\nvar _baseKeys_objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar _baseKeys_hasOwnProperty = _baseKeys_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 (_baseKeys_hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/* harmony default export */ var _baseKeys = (baseKeys);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/keys.js\n\n\n\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_keys(object) {\n  return lodash_es_isArrayLike(object) ? _arrayLikeKeys(object) : _baseKeys(object);\n}\n\n/* harmony default export */ var lodash_es_keys = (keys_keys);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseForOwn.js\n\n\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, lodash_es_keys);\n}\n\n/* harmony default export */ var _baseForOwn = (baseForOwn);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_createBaseEach.js\n\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 (!lodash_es_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\n/* harmony default export */ var _createBaseEach = (createBaseEach);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseEach.js\n\n\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\n/* harmony default export */ var _baseEach = (baseEach);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_castFunction.js\n\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 : lodash_es_identity;\n}\n\n/* harmony default export */ var _castFunction = (castFunction);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/forEach.js\n\n\n\n\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 = lodash_es_isArray(collection) ? _arrayEach : _baseEach;\n  return func(collection, _castFunction(iteratee));\n}\n\n/* harmony default export */ var lodash_es_forEach = (forEach);\n\n// EXTERNAL MODULE: ./node_modules/tinycolor2/tinycolor.js\nvar tinycolor = __webpack_require__(227);\nvar tinycolor_default = /*#__PURE__*/__webpack_require__.n(tinycolor);\n\n// CONCATENATED MODULE: ./node_modules/react-color/es/helpers/color.js\n\n\n\nvar color_simpleCheckForValidColor = function simpleCheckForValidColor(data) {\n  var keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v'];\n  var checked = 0;\n  var passed = 0;\n  lodash_es_forEach(keysToCheck, function (letter) {\n    if (data[letter]) {\n      checked += 1;\n      if (!isNaN(data[letter])) {\n        passed += 1;\n      }\n      if (letter === 's' || letter === 'l') {\n        var percentPatt = /^\\d+%$/;\n        if (percentPatt.test(data[letter])) {\n          passed += 1;\n        }\n      }\n    }\n  });\n  return checked === passed ? data : false;\n};\n\nvar color_toState = function toState(data, oldHue) {\n  var color = data.hex ? tinycolor_default()(data.hex) : tinycolor_default()(data);\n  var hsl = color.toHsl();\n  var hsv = color.toHsv();\n  var rgb = color.toRgb();\n  var hex = color.toHex();\n  if (hsl.s === 0) {\n    hsl.h = oldHue || 0;\n    hsv.h = oldHue || 0;\n  }\n  var transparent = hex === '000000' && rgb.a === 0;\n\n  return {\n    hsl: hsl,\n    hex: transparent ? 'transparent' : '#' + hex,\n    rgb: rgb,\n    hsv: hsv,\n    oldHue: data.h || oldHue || hsl.h,\n    source: data.source\n  };\n};\n\nvar color_isValidHex = function isValidHex(hex) {\n  if (hex === 'transparent') {\n    return true;\n  }\n  // disable hex4 and hex8\n  var lh = String(hex).charAt(0) === '#' ? 1 : 0;\n  return hex.length !== 4 + lh && hex.length < 7 + lh && tinycolor_default()(hex).isValid();\n};\n\nvar getContrastingColor = function getContrastingColor(data) {\n  if (!data) {\n    return '#fff';\n  }\n  var col = color_toState(data);\n  if (col.hex === 'transparent') {\n    return 'rgba(0,0,0,0.4)';\n  }\n  var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000;\n  return yiq >= 128 ? '#000' : '#fff';\n};\n\nvar red = {\n  hsl: { a: 1, h: 0, l: 0.5, s: 1 },\n  hex: '#ff0000',\n  rgb: { r: 255, g: 0, b: 0, a: 1 },\n  hsv: { h: 0, s: 1, v: 1, a: 1 }\n};\n\nvar color_isvalidColorString = function isvalidColorString(string, type) {\n  var stringWithoutDegree = string.replace('°', '');\n  return tinycolor_default()(type + ' (' + stringWithoutDegree + ')')._ok;\n};\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/common/ColorWrap.js\nvar ColorWrap_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 ColorWrap_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 ColorWrap_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ColorWrap_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 ColorWrap_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\n\n\nvar ColorWrap_ColorWrap = function ColorWrap(Picker) {\n  var ColorPicker = function (_ref) {\n    ColorWrap_inherits(ColorPicker, _ref);\n\n    function ColorPicker(props) {\n      ColorWrap_classCallCheck(this, ColorPicker);\n\n      var _this = ColorWrap_possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this));\n\n      _this.handleChange = function (data, event) {\n        var isValidColor = color_simpleCheckForValidColor(data);\n        if (isValidColor) {\n          var colors = color_toState(data, data.h || _this.state.oldHue);\n          _this.setState(colors);\n          _this.props.onChangeComplete && _this.debounce(_this.props.onChangeComplete, colors, event);\n          _this.props.onChange && _this.props.onChange(colors, event);\n        }\n      };\n\n      _this.handleSwatchHover = function (data, event) {\n        var isValidColor = color_simpleCheckForValidColor(data);\n        if (isValidColor) {\n          var colors = color_toState(data, data.h || _this.state.oldHue);\n          _this.props.onSwatchHover && _this.props.onSwatchHover(colors, event);\n        }\n      };\n\n      _this.state = ColorWrap_extends({}, color_toState(props.color, 0));\n\n      _this.debounce = lodash_es_debounce(function (fn, data, event) {\n        fn(data, event);\n      }, 100);\n      return _this;\n    }\n\n    ColorWrap_createClass(ColorPicker, [{\n      key: 'render',\n      value: function render() {\n        var optionalEvents = {};\n        if (this.props.onSwatchHover) {\n          optionalEvents.onSwatchHover = this.handleSwatchHover;\n        }\n\n        return external_react_default.a.createElement(Picker, ColorWrap_extends({}, this.props, this.state, {\n          onChange: this.handleChange\n        }, optionalEvents));\n      }\n    }], [{\n      key: 'getDerivedStateFromProps',\n      value: function getDerivedStateFromProps(nextProps, state) {\n        return ColorWrap_extends({}, color_toState(nextProps.color, state.oldHue));\n      }\n    }]);\n\n    return ColorPicker;\n  }(external_react_[\"PureComponent\"] || external_react_[\"Component\"]);\n\n  ColorPicker.propTypes = ColorWrap_extends({}, Picker.propTypes);\n\n  ColorPicker.defaultProps = ColorWrap_extends({}, Picker.defaultProps, {\n    color: {\n      h: 250,\n      s: 0.50,\n      l: 0.20,\n      a: 1\n    }\n  });\n\n  return ColorPicker;\n};\n\n/* harmony default export */ var common_ColorWrap = (ColorWrap_ColorWrap);\n// CONCATENATED MODULE: ./node_modules/react-color/es/helpers/interaction.js\nvar interaction_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 interaction_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 interaction_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction interaction_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 interaction_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/* eslint-disable no-invalid-this */\n\n\nvar interaction_handleFocus = function handleFocus(Component) {\n  var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n  return function (_React$Component) {\n    interaction_inherits(Focus, _React$Component);\n\n    function Focus() {\n      var _ref;\n\n      var _temp, _this, _ret;\n\n      interaction_classCallCheck(this, Focus);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = interaction_possibleConstructorReturn(this, (_ref = Focus.__proto__ || Object.getPrototypeOf(Focus)).call.apply(_ref, [this].concat(args))), _this), _this.state = { focus: false }, _this.handleFocus = function () {\n        return _this.setState({ focus: true });\n      }, _this.handleBlur = function () {\n        return _this.setState({ focus: false });\n      }, _temp), interaction_possibleConstructorReturn(_this, _ret);\n    }\n\n    interaction_createClass(Focus, [{\n      key: 'render',\n      value: function render() {\n        return external_react_default.a.createElement(\n          Span,\n          { onFocus: this.handleFocus, onBlur: this.handleBlur },\n          external_react_default.a.createElement(Component, interaction_extends({}, this.props, this.state))\n        );\n      }\n    }]);\n\n    return Focus;\n  }(external_react_default.a.Component);\n};\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/common/Swatch.js\nvar Swatch_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\n\n\n\n\n\n\nvar ENTER = 13;\n\nvar Swatch_Swatch = function Swatch(_ref) {\n  var color = _ref.color,\n      style = _ref.style,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n      onHover = _ref.onHover,\n      _ref$title = _ref.title,\n      title = _ref$title === undefined ? color : _ref$title,\n      children = _ref.children,\n      focus = _ref.focus,\n      _ref$focusStyle = _ref.focusStyle,\n      focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle;\n\n  var transparent = color === 'transparent';\n  var styles = reactcss_lib_default()({\n    default: {\n      swatch: Swatch_extends({\n        background: color,\n        height: '100%',\n        width: '100%',\n        cursor: 'pointer',\n        position: 'relative',\n        outline: 'none'\n      }, style, focus ? focusStyle : {})\n    }\n  });\n\n  var handleClick = function handleClick(e) {\n    return onClick(color, e);\n  };\n  var handleKeyDown = function handleKeyDown(e) {\n    return e.keyCode === ENTER && onClick(color, e);\n  };\n  var handleHover = function handleHover(e) {\n    return onHover(color, e);\n  };\n\n  var optionalEvents = {};\n  if (onHover) {\n    optionalEvents.onMouseOver = handleHover;\n  }\n\n  return external_react_default.a.createElement(\n    'div',\n    Swatch_extends({\n      style: styles.swatch,\n      onClick: handleClick,\n      title: title,\n      tabIndex: 0,\n      onKeyDown: handleKeyDown\n    }, optionalEvents),\n    children,\n    transparent && external_react_default.a.createElement(common_Checkboard, {\n      borderRadius: styles.swatch.borderRadius,\n      boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)'\n    })\n  );\n};\n\n/* harmony default export */ var common_Swatch = (interaction_handleFocus(Swatch_Swatch));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/common/index.js\n\n\n\n\n\n\n\n\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/alpha/AlphaPointer.js\n\n\n\nvar AlphaPointer_AlphaPointer = function AlphaPointer(_ref) {\n  var direction = _ref.direction;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      picker: {\n        width: '18px',\n        height: '18px',\n        borderRadius: '50%',\n        transform: 'translate(-9px, -1px)',\n        backgroundColor: 'rgb(248, 248, 248)',\n        boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n      }\n    },\n    'vertical': {\n      picker: {\n        transform: 'translate(-3px, -9px)'\n      }\n    }\n  }, { vertical: direction === 'vertical' });\n\n  return external_react_default.a.createElement('div', { style: styles.picker });\n};\n\n/* harmony default export */ var alpha_AlphaPointer = (AlphaPointer_AlphaPointer);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/alpha/Alpha.js\nvar alpha_Alpha_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\n\n\n\n\n\n\nvar Alpha_AlphaPicker = function AlphaPicker(_ref) {\n  var rgb = _ref.rgb,\n      hsl = _ref.hsl,\n      width = _ref.width,\n      height = _ref.height,\n      onChange = _ref.onChange,\n      direction = _ref.direction,\n      style = _ref.style,\n      renderers = _ref.renderers,\n      pointer = _ref.pointer,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      picker: {\n        position: 'relative',\n        width: width,\n        height: height\n      },\n      alpha: {\n        radius: '2px',\n        style: style\n      }\n    }\n  });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.picker, className: 'alpha-picker ' + className },\n    external_react_default.a.createElement(common_Alpha, alpha_Alpha_extends({}, styles.alpha, {\n      rgb: rgb,\n      hsl: hsl,\n      pointer: pointer,\n      renderers: renderers,\n      onChange: onChange,\n      direction: direction\n    }))\n  );\n};\n\nAlpha_AlphaPicker.defaultProps = {\n  width: '316px',\n  height: '16px',\n  direction: 'horizontal',\n  pointer: alpha_AlphaPointer\n};\n\n/* harmony default export */ var alpha_Alpha = (common_ColorWrap(Alpha_AlphaPicker));\n// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayMap.js\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\n/* harmony default export */ var _arrayMap = (arrayMap);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_setCacheAdd.js\n/** Used to stand-in for `undefined` hash values. */\nvar _setCacheAdd_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, _setCacheAdd_HASH_UNDEFINED);\n  return this;\n}\n\n/* harmony default export */ var _setCacheAdd = (setCacheAdd);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_setCacheHas.js\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/* harmony default export */ var _setCacheHas = (setCacheHas);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_SetCache.js\n\n\n\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\n/* harmony default export */ var _SetCache = (SetCache);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_arraySome.js\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\n/* harmony default export */ var _arraySome = (arraySome);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_cacheHas.js\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\n/* harmony default export */ var _cacheHas = (cacheHas);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_equalArrays.js\n\n\n\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\n/* harmony default export */ var _equalArrays = (equalArrays);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_mapToArray.js\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/* harmony default export */ var _mapToArray = (mapToArray);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_setToArray.js\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/* harmony default export */ var _setToArray = (setToArray);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_equalByTag.js\n\n\n\n\n\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar _equalByTag_COMPARE_PARTIAL_FLAG = 1,\n    _equalByTag_COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar _equalByTag_boolTag = '[object Boolean]',\n    _equalByTag_dateTag = '[object Date]',\n    _equalByTag_errorTag = '[object Error]',\n    _equalByTag_mapTag = '[object Map]',\n    _equalByTag_numberTag = '[object Number]',\n    _equalByTag_regexpTag = '[object RegExp]',\n    _equalByTag_setTag = '[object Set]',\n    _equalByTag_stringTag = '[object String]',\n    _equalByTag_symbolTag = '[object Symbol]';\n\nvar _equalByTag_arrayBufferTag = '[object ArrayBuffer]',\n    _equalByTag_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 _equalByTag_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 _equalByTag_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 _equalByTag_boolTag:\n    case _equalByTag_dateTag:\n    case _equalByTag_numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return lodash_es_eq(+object, +other);\n\n    case _equalByTag_errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case _equalByTag_regexpTag:\n    case _equalByTag_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 _equalByTag_mapTag:\n      var convert = _mapToArray;\n\n    case _equalByTag_setTag:\n      var isPartial = bitmask & _equalByTag_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 |= _equalByTag_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 _equalByTag_symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/* harmony default export */ var _equalByTag = (equalByTag);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayPush.js\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\n/* harmony default export */ var _arrayPush = (arrayPush);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseGetAllKeys.js\n\n\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 lodash_es_isArray(object) ? result : _arrayPush(result, symbolsFunc(object));\n}\n\n/* harmony default export */ var _baseGetAllKeys = (baseGetAllKeys);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayFilter.js\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\n/* harmony default export */ var _arrayFilter = (arrayFilter);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/stubArray.js\n/**\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\n/* harmony default export */ var lodash_es_stubArray = (stubArray);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getSymbols.js\n\n\n\n/** Used for built-in method references. */\nvar _getSymbols_objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar _getSymbols_propertyIsEnumerable = _getSymbols_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 ? lodash_es_stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return _arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return _getSymbols_propertyIsEnumerable.call(object, symbol);\n  });\n};\n\n/* harmony default export */ var _getSymbols = (getSymbols);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getAllKeys.js\n\n\n\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, lodash_es_keys, _getSymbols);\n}\n\n/* harmony default export */ var _getAllKeys = (getAllKeys);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_equalObjects.js\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar _equalObjects_COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar _equalObjects_objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar _equalObjects_hasOwnProperty = _equalObjects_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 & _equalObjects_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 : _equalObjects_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\n/* harmony default export */ var _equalObjects = (equalObjects);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_DataView.js\n\n\n\n/* Built-in method references that are verified to be native. */\nvar DataView = _getNative(_root[\"a\" /* default */], 'DataView');\n\n/* harmony default export */ var _DataView = (DataView);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_Promise.js\n\n\n\n/* Built-in method references that are verified to be native. */\nvar _Promise_Promise = _getNative(_root[\"a\" /* default */], 'Promise');\n\n/* harmony default export */ var _Promise = (_Promise_Promise);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_Set.js\n\n\n\n/* Built-in method references that are verified to be native. */\nvar _Set_Set = _getNative(_root[\"a\" /* default */], 'Set');\n\n/* harmony default export */ var _Set = (_Set_Set);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_WeakMap.js\n\n\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = _getNative(_root[\"a\" /* default */], 'WeakMap');\n\n/* harmony default export */ var _WeakMap = (WeakMap);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getTag.js\n\n\n\n\n\n\n\n\n/** `Object#toString` result references. */\nvar _getTag_mapTag = '[object Map]',\n    _getTag_objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    _getTag_setTag = '[object Set]',\n    _getTag_weakMapTag = '[object WeakMap]';\n\nvar _getTag_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))) != _getTag_dataViewTag) ||\n    (_Map && getTag(new _Map) != _getTag_mapTag) ||\n    (_Promise && getTag(_Promise.resolve()) != promiseTag) ||\n    (_Set && getTag(new _Set) != _getTag_setTag) ||\n    (_WeakMap && getTag(new _WeakMap) != _getTag_weakMapTag)) {\n  getTag = function(value) {\n    var result = _baseGetTag(value),\n        Ctor = result == _getTag_objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? _toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return _getTag_dataViewTag;\n        case mapCtorString: return _getTag_mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return _getTag_setTag;\n        case weakMapCtorString: return _getTag_weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/* harmony default export */ var _getTag = (getTag);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsEqualDeep.js\n\n\n\n\n\n\n\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar _baseIsEqualDeep_COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar _baseIsEqualDeep_argsTag = '[object Arguments]',\n    _baseIsEqualDeep_arrayTag = '[object Array]',\n    _baseIsEqualDeep_objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar _baseIsEqualDeep_objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar _baseIsEqualDeep_hasOwnProperty = _baseIsEqualDeep_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 = lodash_es_isArray(object),\n      othIsArr = lodash_es_isArray(other),\n      objTag = objIsArr ? _baseIsEqualDeep_arrayTag : _getTag(object),\n      othTag = othIsArr ? _baseIsEqualDeep_arrayTag : _getTag(other);\n\n  objTag = objTag == _baseIsEqualDeep_argsTag ? _baseIsEqualDeep_objectTag : objTag;\n  othTag = othTag == _baseIsEqualDeep_argsTag ? _baseIsEqualDeep_objectTag : othTag;\n\n  var objIsObj = objTag == _baseIsEqualDeep_objectTag,\n      othIsObj = othTag == _baseIsEqualDeep_objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && Object(isBuffer[\"a\" /* default */])(object)) {\n    if (!Object(isBuffer[\"a\" /* default */])(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new _Stack);\n    return (objIsArr || lodash_es_isTypedArray(object))\n      ? _equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & _baseIsEqualDeep_COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && _baseIsEqualDeep_hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && _baseIsEqualDeep_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\n/* harmony default export */ var _baseIsEqualDeep = (baseIsEqualDeep);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsEqual.js\n\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 {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 || (!lodash_es_isObjectLike(value) && !lodash_es_isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return _baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/* harmony default export */ var _baseIsEqual = (baseIsEqual);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsMatch.js\n\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar _baseIsMatch_COMPARE_PARTIAL_FLAG = 1,\n    _baseIsMatch_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, _baseIsMatch_COMPARE_PARTIAL_FLAG | _baseIsMatch_COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n/* harmony default export */ var _baseIsMatch = (baseIsMatch);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_isStrictComparable.js\n\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 && !lodash_es_isObject(value);\n}\n\n/* harmony default export */ var _isStrictComparable = (isStrictComparable);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_getMatchData.js\n\n\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 = lodash_es_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\n/* harmony default export */ var _getMatchData = (getMatchData);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_matchesStrictComparable.js\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\n/* harmony default export */ var _matchesStrictComparable = (matchesStrictComparable);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseMatches.js\n\n\n\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\n/* harmony default export */ var _baseMatches = (baseMatches);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_isKey.js\n\n\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 (lodash_es_isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || lodash_es_isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\n/* harmony default export */ var _isKey = (isKey);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/memoize.js\n\n\n/** Error message constants. */\nvar memoize_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(memoize_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\n/* harmony default export */ var lodash_es_memoize = (memoize);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_memoizeCapped.js\n\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 = lodash_es_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\n/* harmony default export */ var _memoizeCapped = (memoizeCapped);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_stringToPath.js\n\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\n/* harmony default export */ var _stringToPath = (stringToPath);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseToString.js\n\n\n\n\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar _baseToString_symbolProto = _Symbol ? _Symbol.prototype : undefined,\n    symbolToString = _baseToString_symbolProto ? _baseToString_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 (lodash_es_isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return _arrayMap(value, baseToString) + '';\n  }\n  if (lodash_es_isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/* harmony default export */ var _baseToString = (baseToString);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/toString.js\n\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_toString(value) {\n  return value == null ? '' : _baseToString(value);\n}\n\n/* harmony default export */ var lodash_es_toString = (toString_toString);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_castPath.js\n\n\n\n\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 (lodash_es_isArray(value)) {\n    return value;\n  }\n  return _isKey(value, object) ? [value] : _stringToPath(lodash_es_toString(value));\n}\n\n/* harmony default export */ var _castPath = (castPath);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_toKey.js\n\n\n/** Used as references for various `Number` constants. */\nvar _toKey_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' || lodash_es_isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -_toKey_INFINITY) ? '-0' : result;\n}\n\n/* harmony default export */ var _toKey = (toKey);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseGet.js\n\n\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\n/* harmony default export */ var _baseGet = (baseGet);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/get.js\n\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_get(object, path, defaultValue) {\n  var result = object == null ? undefined : _baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\n/* harmony default export */ var lodash_es_get = (get_get);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseHasIn.js\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\n/* harmony default export */ var _baseHasIn = (baseHasIn);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_hasPath.js\n\n\n\n\n\n\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 && lodash_es_isLength(length) && _isIndex(key, length) &&\n    (lodash_es_isArray(object) || lodash_es_isArguments(object));\n}\n\n/* harmony default export */ var _hasPath = (hasPath);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/hasIn.js\n\n\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\n/* harmony default export */ var lodash_es_hasIn = (hasIn);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseMatchesProperty.js\n\n\n\n\n\n\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar _baseMatchesProperty_COMPARE_PARTIAL_FLAG = 1,\n    _baseMatchesProperty_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 = lodash_es_get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? lodash_es_hasIn(object, path)\n      : _baseIsEqual(srcValue, objValue, _baseMatchesProperty_COMPARE_PARTIAL_FLAG | _baseMatchesProperty_COMPARE_UNORDERED_FLAG);\n  };\n}\n\n/* harmony default export */ var _baseMatchesProperty = (baseMatchesProperty);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseProperty.js\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\n/* harmony default export */ var _baseProperty = (baseProperty);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_basePropertyDeep.js\n\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\n/* harmony default export */ var _basePropertyDeep = (basePropertyDeep);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/property.js\n\n\n\n\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_property(path) {\n  return _isKey(path) ? _baseProperty(_toKey(path)) : _basePropertyDeep(path);\n}\n\n/* harmony default export */ var lodash_es_property = (property_property);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIteratee.js\n\n\n\n\n\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 lodash_es_identity;\n  }\n  if (typeof value == 'object') {\n    return lodash_es_isArray(value)\n      ? _baseMatchesProperty(value[0], value[1])\n      : _baseMatches(value);\n  }\n  return lodash_es_property(value);\n}\n\n/* harmony default export */ var _baseIteratee = (baseIteratee);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/_baseMap.js\n\n\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 = lodash_es_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\n/* harmony default export */ var _baseMap = (baseMap);\n\n// CONCATENATED MODULE: ./node_modules/lodash-es/map.js\n\n\n\n\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\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 * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n *   { 'user': 'barney' },\n *   { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map_map(collection, iteratee) {\n  var func = lodash_es_isArray(collection) ? _arrayMap : _baseMap;\n  return func(collection, _baseIteratee(iteratee, 3));\n}\n\n/* harmony default export */ var lodash_es_map = (map_map);\n\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/block/BlockSwatches.js\n\n\n\n\n\n\nvar BlockSwatches_BlockSwatches = function BlockSwatches(_ref) {\n  var colors = _ref.colors,\n      onClick = _ref.onClick,\n      onSwatchHover = _ref.onSwatchHover;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      swatches: {\n        marginRight: '-10px'\n      },\n      swatch: {\n        width: '22px',\n        height: '22px',\n        float: 'left',\n        marginRight: '10px',\n        marginBottom: '10px',\n        borderRadius: '4px'\n      },\n      clear: {\n        clear: 'both'\n      }\n    }\n  });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.swatches },\n    lodash_es_map(colors, function (c) {\n      return external_react_default.a.createElement(common_Swatch, {\n        key: c,\n        color: c,\n        style: styles.swatch,\n        onClick: onClick,\n        onHover: onSwatchHover,\n        focusStyle: {\n          boxShadow: '0 0 4px ' + c\n        }\n      });\n    }),\n    external_react_default.a.createElement('div', { style: styles.clear })\n  );\n};\n\n/* harmony default export */ var block_BlockSwatches = (BlockSwatches_BlockSwatches);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/block/Block.js\n\n\n\n\n\n\n\n\n\nvar Block_Block = function Block(_ref) {\n  var onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      hex = _ref.hex,\n      colors = _ref.colors,\n      width = _ref.width,\n      triangle = _ref.triangle,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var transparent = hex === 'transparent';\n  var handleChange = function handleChange(hexCode, e) {\n    color_isValidHex(hexCode) && onChange({\n      hex: hexCode,\n      source: 'hex'\n    }, e);\n  };\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      card: {\n        width: width,\n        background: '#fff',\n        boxShadow: '0 1px rgba(0,0,0,.1)',\n        borderRadius: '6px',\n        position: 'relative'\n      },\n      head: {\n        height: '110px',\n        background: hex,\n        borderRadius: '6px 6px 0 0',\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'center',\n        position: 'relative'\n      },\n      body: {\n        padding: '10px'\n      },\n      label: {\n        fontSize: '18px',\n        color: getContrastingColor(hex),\n        position: 'relative'\n      },\n      triangle: {\n        width: '0px',\n        height: '0px',\n        borderStyle: 'solid',\n        borderWidth: '0 10px 10px 10px',\n        borderColor: 'transparent transparent ' + hex + ' transparent',\n        position: 'absolute',\n        top: '-10px',\n        left: '50%',\n        marginLeft: '-10px'\n      },\n      input: {\n        width: '100%',\n        fontSize: '12px',\n        color: '#666',\n        border: '0px',\n        outline: 'none',\n        height: '22px',\n        boxShadow: 'inset 0 0 0 1px #ddd',\n        borderRadius: '4px',\n        padding: '0 7px',\n        boxSizing: 'border-box'\n      }\n    },\n    'hide-triangle': {\n      triangle: {\n        display: 'none'\n      }\n    }\n  }, passedStyles), { 'hide-triangle': triangle === 'hide' });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.card, className: 'block-picker ' + className },\n    external_react_default.a.createElement('div', { style: styles.triangle }),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.head },\n      transparent && external_react_default.a.createElement(common_Checkboard, { borderRadius: '6px 6px 0 0' }),\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.label },\n        hex\n      )\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.body },\n      external_react_default.a.createElement(block_BlockSwatches, { colors: colors, onClick: handleChange, onSwatchHover: onSwatchHover }),\n      external_react_default.a.createElement(common_EditableInput, {\n        style: { input: styles.input },\n        value: hex,\n        onChange: handleChange\n      })\n    )\n  );\n};\n\nBlock_Block.propTypes = {\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  colors: prop_types_default.a.arrayOf(prop_types_default.a.string),\n  triangle: prop_types_default.a.oneOf(['top', 'hide']),\n  styles: prop_types_default.a.object\n};\n\nBlock_Block.defaultProps = {\n  width: 170,\n  colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'],\n  triangle: 'top',\n  styles: {}\n};\n\n/* harmony default export */ var block_Block = (common_ColorWrap(Block_Block));\n// CONCATENATED MODULE: ./node_modules/material-colors/dist/colors.es2015.js\nvar colors_es2015_red = {\"50\":\"#ffebee\",\"100\":\"#ffcdd2\",\"200\":\"#ef9a9a\",\"300\":\"#e57373\",\"400\":\"#ef5350\",\"500\":\"#f44336\",\"600\":\"#e53935\",\"700\":\"#d32f2f\",\"800\":\"#c62828\",\"900\":\"#b71c1c\",\"a100\":\"#ff8a80\",\"a200\":\"#ff5252\",\"a400\":\"#ff1744\",\"a700\":\"#d50000\"};\nvar pink = {\"50\":\"#fce4ec\",\"100\":\"#f8bbd0\",\"200\":\"#f48fb1\",\"300\":\"#f06292\",\"400\":\"#ec407a\",\"500\":\"#e91e63\",\"600\":\"#d81b60\",\"700\":\"#c2185b\",\"800\":\"#ad1457\",\"900\":\"#880e4f\",\"a100\":\"#ff80ab\",\"a200\":\"#ff4081\",\"a400\":\"#f50057\",\"a700\":\"#c51162\"};\nvar purple = {\"50\":\"#f3e5f5\",\"100\":\"#e1bee7\",\"200\":\"#ce93d8\",\"300\":\"#ba68c8\",\"400\":\"#ab47bc\",\"500\":\"#9c27b0\",\"600\":\"#8e24aa\",\"700\":\"#7b1fa2\",\"800\":\"#6a1b9a\",\"900\":\"#4a148c\",\"a100\":\"#ea80fc\",\"a200\":\"#e040fb\",\"a400\":\"#d500f9\",\"a700\":\"#aa00ff\"};\nvar deepPurple = {\"50\":\"#ede7f6\",\"100\":\"#d1c4e9\",\"200\":\"#b39ddb\",\"300\":\"#9575cd\",\"400\":\"#7e57c2\",\"500\":\"#673ab7\",\"600\":\"#5e35b1\",\"700\":\"#512da8\",\"800\":\"#4527a0\",\"900\":\"#311b92\",\"a100\":\"#b388ff\",\"a200\":\"#7c4dff\",\"a400\":\"#651fff\",\"a700\":\"#6200ea\"};\nvar indigo = {\"50\":\"#e8eaf6\",\"100\":\"#c5cae9\",\"200\":\"#9fa8da\",\"300\":\"#7986cb\",\"400\":\"#5c6bc0\",\"500\":\"#3f51b5\",\"600\":\"#3949ab\",\"700\":\"#303f9f\",\"800\":\"#283593\",\"900\":\"#1a237e\",\"a100\":\"#8c9eff\",\"a200\":\"#536dfe\",\"a400\":\"#3d5afe\",\"a700\":\"#304ffe\"};\nvar blue = {\"50\":\"#e3f2fd\",\"100\":\"#bbdefb\",\"200\":\"#90caf9\",\"300\":\"#64b5f6\",\"400\":\"#42a5f5\",\"500\":\"#2196f3\",\"600\":\"#1e88e5\",\"700\":\"#1976d2\",\"800\":\"#1565c0\",\"900\":\"#0d47a1\",\"a100\":\"#82b1ff\",\"a200\":\"#448aff\",\"a400\":\"#2979ff\",\"a700\":\"#2962ff\"};\nvar lightBlue = {\"50\":\"#e1f5fe\",\"100\":\"#b3e5fc\",\"200\":\"#81d4fa\",\"300\":\"#4fc3f7\",\"400\":\"#29b6f6\",\"500\":\"#03a9f4\",\"600\":\"#039be5\",\"700\":\"#0288d1\",\"800\":\"#0277bd\",\"900\":\"#01579b\",\"a100\":\"#80d8ff\",\"a200\":\"#40c4ff\",\"a400\":\"#00b0ff\",\"a700\":\"#0091ea\"};\nvar cyan = {\"50\":\"#e0f7fa\",\"100\":\"#b2ebf2\",\"200\":\"#80deea\",\"300\":\"#4dd0e1\",\"400\":\"#26c6da\",\"500\":\"#00bcd4\",\"600\":\"#00acc1\",\"700\":\"#0097a7\",\"800\":\"#00838f\",\"900\":\"#006064\",\"a100\":\"#84ffff\",\"a200\":\"#18ffff\",\"a400\":\"#00e5ff\",\"a700\":\"#00b8d4\"};\nvar teal = {\"50\":\"#e0f2f1\",\"100\":\"#b2dfdb\",\"200\":\"#80cbc4\",\"300\":\"#4db6ac\",\"400\":\"#26a69a\",\"500\":\"#009688\",\"600\":\"#00897b\",\"700\":\"#00796b\",\"800\":\"#00695c\",\"900\":\"#004d40\",\"a100\":\"#a7ffeb\",\"a200\":\"#64ffda\",\"a400\":\"#1de9b6\",\"a700\":\"#00bfa5\"};\nvar green = {\"50\":\"#e8f5e9\",\"100\":\"#c8e6c9\",\"200\":\"#a5d6a7\",\"300\":\"#81c784\",\"400\":\"#66bb6a\",\"500\":\"#4caf50\",\"600\":\"#43a047\",\"700\":\"#388e3c\",\"800\":\"#2e7d32\",\"900\":\"#1b5e20\",\"a100\":\"#b9f6ca\",\"a200\":\"#69f0ae\",\"a400\":\"#00e676\",\"a700\":\"#00c853\"};\nvar lightGreen = {\"50\":\"#f1f8e9\",\"100\":\"#dcedc8\",\"200\":\"#c5e1a5\",\"300\":\"#aed581\",\"400\":\"#9ccc65\",\"500\":\"#8bc34a\",\"600\":\"#7cb342\",\"700\":\"#689f38\",\"800\":\"#558b2f\",\"900\":\"#33691e\",\"a100\":\"#ccff90\",\"a200\":\"#b2ff59\",\"a400\":\"#76ff03\",\"a700\":\"#64dd17\"};\nvar lime = {\"50\":\"#f9fbe7\",\"100\":\"#f0f4c3\",\"200\":\"#e6ee9c\",\"300\":\"#dce775\",\"400\":\"#d4e157\",\"500\":\"#cddc39\",\"600\":\"#c0ca33\",\"700\":\"#afb42b\",\"800\":\"#9e9d24\",\"900\":\"#827717\",\"a100\":\"#f4ff81\",\"a200\":\"#eeff41\",\"a400\":\"#c6ff00\",\"a700\":\"#aeea00\"};\nvar yellow = {\"50\":\"#fffde7\",\"100\":\"#fff9c4\",\"200\":\"#fff59d\",\"300\":\"#fff176\",\"400\":\"#ffee58\",\"500\":\"#ffeb3b\",\"600\":\"#fdd835\",\"700\":\"#fbc02d\",\"800\":\"#f9a825\",\"900\":\"#f57f17\",\"a100\":\"#ffff8d\",\"a200\":\"#ffff00\",\"a400\":\"#ffea00\",\"a700\":\"#ffd600\"};\nvar amber = {\"50\":\"#fff8e1\",\"100\":\"#ffecb3\",\"200\":\"#ffe082\",\"300\":\"#ffd54f\",\"400\":\"#ffca28\",\"500\":\"#ffc107\",\"600\":\"#ffb300\",\"700\":\"#ffa000\",\"800\":\"#ff8f00\",\"900\":\"#ff6f00\",\"a100\":\"#ffe57f\",\"a200\":\"#ffd740\",\"a400\":\"#ffc400\",\"a700\":\"#ffab00\"};\nvar orange = {\"50\":\"#fff3e0\",\"100\":\"#ffe0b2\",\"200\":\"#ffcc80\",\"300\":\"#ffb74d\",\"400\":\"#ffa726\",\"500\":\"#ff9800\",\"600\":\"#fb8c00\",\"700\":\"#f57c00\",\"800\":\"#ef6c00\",\"900\":\"#e65100\",\"a100\":\"#ffd180\",\"a200\":\"#ffab40\",\"a400\":\"#ff9100\",\"a700\":\"#ff6d00\"};\nvar deepOrange = {\"50\":\"#fbe9e7\",\"100\":\"#ffccbc\",\"200\":\"#ffab91\",\"300\":\"#ff8a65\",\"400\":\"#ff7043\",\"500\":\"#ff5722\",\"600\":\"#f4511e\",\"700\":\"#e64a19\",\"800\":\"#d84315\",\"900\":\"#bf360c\",\"a100\":\"#ff9e80\",\"a200\":\"#ff6e40\",\"a400\":\"#ff3d00\",\"a700\":\"#dd2c00\"};\nvar brown = {\"50\":\"#efebe9\",\"100\":\"#d7ccc8\",\"200\":\"#bcaaa4\",\"300\":\"#a1887f\",\"400\":\"#8d6e63\",\"500\":\"#795548\",\"600\":\"#6d4c41\",\"700\":\"#5d4037\",\"800\":\"#4e342e\",\"900\":\"#3e2723\"};\nvar colors_es2015_grey = {\"50\":\"#fafafa\",\"100\":\"#f5f5f5\",\"200\":\"#eeeeee\",\"300\":\"#e0e0e0\",\"400\":\"#bdbdbd\",\"500\":\"#9e9e9e\",\"600\":\"#757575\",\"700\":\"#616161\",\"800\":\"#424242\",\"900\":\"#212121\"};\nvar blueGrey = {\"50\":\"#eceff1\",\"100\":\"#cfd8dc\",\"200\":\"#b0bec5\",\"300\":\"#90a4ae\",\"400\":\"#78909c\",\"500\":\"#607d8b\",\"600\":\"#546e7a\",\"700\":\"#455a64\",\"800\":\"#37474f\",\"900\":\"#263238\"};\nvar darkText = {\"primary\":\"rgba(0, 0, 0, 0.87)\",\"secondary\":\"rgba(0, 0, 0, 0.54)\",\"disabled\":\"rgba(0, 0, 0, 0.38)\",\"dividers\":\"rgba(0, 0, 0, 0.12)\"};\nvar lightText = {\"primary\":\"rgba(255, 255, 255, 1)\",\"secondary\":\"rgba(255, 255, 255, 0.7)\",\"disabled\":\"rgba(255, 255, 255, 0.5)\",\"dividers\":\"rgba(255, 255, 255, 0.12)\"};\nvar darkIcons = {\"active\":\"rgba(0, 0, 0, 0.54)\",\"inactive\":\"rgba(0, 0, 0, 0.38)\"};\nvar lightIcons = {\"active\":\"rgba(255, 255, 255, 1)\",\"inactive\":\"rgba(255, 255, 255, 0.5)\"};\nvar colors_es2015_white = \"#ffffff\";\nvar colors_es2015_black = \"#000000\";\n\n/* harmony default export */ var colors_es2015 = ({\n  red: colors_es2015_red,\n  pink: pink,\n  purple: purple,\n  deepPurple: deepPurple,\n  indigo: indigo,\n  blue: blue,\n  lightBlue: lightBlue,\n  cyan: cyan,\n  teal: teal,\n  green: green,\n  lightGreen: lightGreen,\n  lime: lime,\n  yellow: yellow,\n  amber: amber,\n  orange: orange,\n  deepOrange: deepOrange,\n  brown: brown,\n  grey: colors_es2015_grey,\n  blueGrey: blueGrey,\n  darkText: darkText,\n  lightText: lightText,\n  darkIcons: darkIcons,\n  lightIcons: lightIcons,\n  white: colors_es2015_white,\n  black: colors_es2015_black\n});\n\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/circle/CircleSwatch.js\n\n\n\n\n\nvar CircleSwatch_CircleSwatch = function CircleSwatch(_ref) {\n  var color = _ref.color,\n      onClick = _ref.onClick,\n      onSwatchHover = _ref.onSwatchHover,\n      hover = _ref.hover,\n      active = _ref.active,\n      circleSize = _ref.circleSize,\n      circleSpacing = _ref.circleSpacing;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      swatch: {\n        width: circleSize,\n        height: circleSize,\n        marginRight: circleSpacing,\n        marginBottom: circleSpacing,\n        transform: 'scale(1)',\n        transition: '100ms transform ease'\n      },\n      Swatch: {\n        borderRadius: '50%',\n        background: 'transparent',\n        boxShadow: 'inset 0 0 0 ' + (circleSize / 2 + 1) + 'px ' + color,\n        transition: '100ms box-shadow ease'\n      }\n    },\n    'hover': {\n      swatch: {\n        transform: 'scale(1.2)'\n      }\n    },\n    'active': {\n      Swatch: {\n        boxShadow: 'inset 0 0 0 3px ' + color\n      }\n    }\n  }, { hover: hover, active: active });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.swatch },\n    external_react_default.a.createElement(common_Swatch, {\n      style: styles.Swatch,\n      color: color,\n      onClick: onClick,\n      onHover: onSwatchHover,\n      focusStyle: { boxShadow: styles.Swatch.boxShadow + ', 0 0 5px ' + color }\n    })\n  );\n};\n\nCircleSwatch_CircleSwatch.defaultProps = {\n  circleSize: 28,\n  circleSpacing: 14\n};\n\n/* harmony default export */ var circle_CircleSwatch = (Object(reactcss_lib[\"handleHover\"])(CircleSwatch_CircleSwatch));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/circle/Circle.js\n\n\n\n\n\n\n\n\n\n\nvar Circle_Circle = function Circle(_ref) {\n  var width = _ref.width,\n      onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      colors = _ref.colors,\n      hex = _ref.hex,\n      circleSize = _ref.circleSize,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      circleSpacing = _ref.circleSpacing,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      card: {\n        width: width,\n        display: 'flex',\n        flexWrap: 'wrap',\n        marginRight: -circleSpacing,\n        marginBottom: -circleSpacing\n      }\n    }\n  }, passedStyles));\n\n  var handleChange = function handleChange(hexCode, e) {\n    return onChange({ hex: hexCode, source: 'hex' }, e);\n  };\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.card, className: 'circle-picker ' + className },\n    lodash_es_map(colors, function (c) {\n      return external_react_default.a.createElement(circle_CircleSwatch, {\n        key: c,\n        color: c,\n        onClick: handleChange,\n        onSwatchHover: onSwatchHover,\n        active: hex === c.toLowerCase(),\n        circleSize: circleSize,\n        circleSpacing: circleSpacing\n      });\n    })\n  );\n};\n\nCircle_Circle.propTypes = {\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  circleSize: prop_types_default.a.number,\n  circleSpacing: prop_types_default.a.number,\n  styles: prop_types_default.a.object\n};\n\nCircle_Circle.defaultProps = {\n  width: 252,\n  circleSize: 28,\n  circleSpacing: 14,\n  colors: [colors_es2015_red['500'], pink['500'], purple['500'], deepPurple['500'], indigo['500'], blue['500'], lightBlue['500'], cyan['500'], teal['500'], green['500'], lightGreen['500'], lime['500'], yellow['500'], amber['500'], orange['500'], deepOrange['500'], brown['500'], blueGrey['500']],\n  styles: {}\n};\n\n/* harmony default export */ var circle_Circle = (common_ColorWrap(Circle_Circle));\n// CONCATENATED MODULE: ./node_modules/lodash-es/isUndefined.js\n/**\n * Checks if `value` is `undefined`.\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 `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\n/* harmony default export */ var lodash_es_isUndefined = (isUndefined);\n\n// EXTERNAL MODULE: ./node_modules/@icons/material/UnfoldMoreHorizontalIcon.js\nvar UnfoldMoreHorizontalIcon = __webpack_require__(687);\nvar UnfoldMoreHorizontalIcon_default = /*#__PURE__*/__webpack_require__.n(UnfoldMoreHorizontalIcon);\n\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/chrome/ChromeFields.js\nvar ChromeFields_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 ChromeFields_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ChromeFields_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 ChromeFields_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/* eslint-disable react/no-did-mount-set-state, no-param-reassign */\n\n\n\n\n\n\n\n\n\nvar ChromeFields_ChromeFields = function (_React$Component) {\n  ChromeFields_inherits(ChromeFields, _React$Component);\n\n  function ChromeFields(props) {\n    ChromeFields_classCallCheck(this, ChromeFields);\n\n    var _this = ChromeFields_possibleConstructorReturn(this, (ChromeFields.__proto__ || Object.getPrototypeOf(ChromeFields)).call(this));\n\n    _this.toggleViews = function () {\n      if (_this.state.view === 'hex') {\n        _this.setState({ view: 'rgb' });\n      } else if (_this.state.view === 'rgb') {\n        _this.setState({ view: 'hsl' });\n      } else if (_this.state.view === 'hsl') {\n        if (_this.props.hsl.a === 1) {\n          _this.setState({ view: 'hex' });\n        } else {\n          _this.setState({ view: 'rgb' });\n        }\n      }\n    };\n\n    _this.handleChange = function (data, e) {\n      if (data.hex) {\n        color_isValidHex(data.hex) && _this.props.onChange({\n          hex: data.hex,\n          source: 'hex'\n        }, e);\n      } else if (data.r || data.g || data.b) {\n        _this.props.onChange({\n          r: data.r || _this.props.rgb.r,\n          g: data.g || _this.props.rgb.g,\n          b: data.b || _this.props.rgb.b,\n          source: 'rgb'\n        }, e);\n      } else if (data.a) {\n        if (data.a < 0) {\n          data.a = 0;\n        } else if (data.a > 1) {\n          data.a = 1;\n        }\n\n        _this.props.onChange({\n          h: _this.props.hsl.h,\n          s: _this.props.hsl.s,\n          l: _this.props.hsl.l,\n          a: Math.round(data.a * 100) / 100,\n          source: 'rgb'\n        }, e);\n      } else if (data.h || data.s || data.l) {\n        // Remove any occurances of '%'.\n        if (typeof data.s === 'string' && data.s.includes('%')) {\n          data.s = data.s.replace('%', '');\n        }\n        if (typeof data.l === 'string' && data.l.includes('%')) {\n          data.l = data.l.replace('%', '');\n        }\n\n        // We store HSL as a unit interval so we need to override the 1 input to 0.01\n        if (data.s == 1) {\n          data.s = 0.01;\n        } else if (data.l == 1) {\n          data.l = 0.01;\n        }\n\n        _this.props.onChange({\n          h: data.h || _this.props.hsl.h,\n          s: Number(!lodash_es_isUndefined(data.s) ? data.s : _this.props.hsl.s),\n          l: Number(!lodash_es_isUndefined(data.l) ? data.l : _this.props.hsl.l),\n          source: 'hsl'\n        }, e);\n      }\n    };\n\n    _this.showHighlight = function (e) {\n      e.currentTarget.style.background = '#eee';\n    };\n\n    _this.hideHighlight = function (e) {\n      e.currentTarget.style.background = 'transparent';\n    };\n\n    if (props.hsl.a !== 1 && props.view === \"hex\") {\n      _this.state = {\n        view: \"rgb\"\n      };\n    } else {\n      _this.state = {\n        view: props.view\n      };\n    }\n    return _this;\n  }\n\n  ChromeFields_createClass(ChromeFields, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var styles = reactcss_lib_default()({\n        'default': {\n          wrap: {\n            paddingTop: '16px',\n            display: 'flex'\n          },\n          fields: {\n            flex: '1',\n            display: 'flex',\n            marginLeft: '-6px'\n          },\n          field: {\n            paddingLeft: '6px',\n            width: '100%'\n          },\n          alpha: {\n            paddingLeft: '6px',\n            width: '100%'\n          },\n          toggle: {\n            width: '32px',\n            textAlign: 'right',\n            position: 'relative'\n          },\n          icon: {\n            marginRight: '-4px',\n            marginTop: '12px',\n            cursor: 'pointer',\n            position: 'relative'\n          },\n          iconHighlight: {\n            position: 'absolute',\n            width: '24px',\n            height: '28px',\n            background: '#eee',\n            borderRadius: '4px',\n            top: '10px',\n            left: '12px',\n            display: 'none'\n          },\n          input: {\n            fontSize: '11px',\n            color: '#333',\n            width: '100%',\n            borderRadius: '2px',\n            border: 'none',\n            boxShadow: 'inset 0 0 0 1px #dadada',\n            height: '21px',\n            textAlign: 'center'\n          },\n          label: {\n            textTransform: 'uppercase',\n            fontSize: '11px',\n            lineHeight: '11px',\n            color: '#969696',\n            textAlign: 'center',\n            display: 'block',\n            marginTop: '12px'\n          },\n          svg: {\n            fill: '#333',\n            width: '24px',\n            height: '24px',\n            border: '1px transparent solid',\n            borderRadius: '5px'\n          }\n        },\n        'disableAlpha': {\n          alpha: {\n            display: 'none'\n          }\n        }\n      }, this.props, this.state);\n\n      var fields = void 0;\n      if (this.state.view === 'hex') {\n        fields = external_react_default.a.createElement(\n          'div',\n          { style: styles.fields, className: 'flexbox-fix' },\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.field },\n            external_react_default.a.createElement(common_EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'hex', value: this.props.hex,\n              onChange: this.handleChange\n            })\n          )\n        );\n      } else if (this.state.view === 'rgb') {\n        fields = external_react_default.a.createElement(\n          'div',\n          { style: styles.fields, className: 'flexbox-fix' },\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.field },\n            external_react_default.a.createElement(common_EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'r',\n              value: this.props.rgb.r,\n              onChange: this.handleChange\n            })\n          ),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.field },\n            external_react_default.a.createElement(common_EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'g',\n              value: this.props.rgb.g,\n              onChange: this.handleChange\n            })\n          ),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.field },\n            external_react_default.a.createElement(common_EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'b',\n              value: this.props.rgb.b,\n              onChange: this.handleChange\n            })\n          ),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.alpha },\n            external_react_default.a.createElement(common_EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'a',\n              value: this.props.rgb.a,\n              arrowOffset: 0.01,\n              onChange: this.handleChange\n            })\n          )\n        );\n      } else if (this.state.view === 'hsl') {\n        fields = external_react_default.a.createElement(\n          'div',\n          { style: styles.fields, className: 'flexbox-fix' },\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.field },\n            external_react_default.a.createElement(common_EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'h',\n              value: Math.round(this.props.hsl.h),\n              onChange: this.handleChange\n            })\n          ),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.field },\n            external_react_default.a.createElement(common_EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 's',\n              value: Math.round(this.props.hsl.s * 100) + '%',\n              onChange: this.handleChange\n            })\n          ),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.field },\n            external_react_default.a.createElement(common_EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'l',\n              value: Math.round(this.props.hsl.l * 100) + '%',\n              onChange: this.handleChange\n            })\n          ),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.alpha },\n            external_react_default.a.createElement(common_EditableInput, {\n              style: { input: styles.input, label: styles.label },\n              label: 'a',\n              value: this.props.hsl.a,\n              arrowOffset: 0.01,\n              onChange: this.handleChange\n            })\n          )\n        );\n      }\n\n      return external_react_default.a.createElement(\n        'div',\n        { style: styles.wrap, className: 'flexbox-fix' },\n        fields,\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.toggle },\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.icon, onClick: this.toggleViews, ref: function ref(icon) {\n                return _this2.icon = icon;\n              } },\n            external_react_default.a.createElement(UnfoldMoreHorizontalIcon_default.a, {\n              style: styles.svg,\n              onMouseOver: this.showHighlight,\n              onMouseEnter: this.showHighlight,\n              onMouseOut: this.hideHighlight\n            })\n          )\n        )\n      );\n    }\n  }], [{\n    key: 'getDerivedStateFromProps',\n    value: function getDerivedStateFromProps(nextProps, state) {\n      if (nextProps.hsl.a !== 1 && state.view === 'hex') {\n        return { view: 'rgb' };\n      }\n      return null;\n    }\n  }]);\n\n  return ChromeFields;\n}(external_react_default.a.Component);\n\nChromeFields_ChromeFields.defaultProps = {\n  view: \"hex\"\n};\n\n/* harmony default export */ var chrome_ChromeFields = (ChromeFields_ChromeFields);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/chrome/ChromePointer.js\n\n\n\nvar ChromePointer_ChromePointer = function ChromePointer() {\n  var styles = reactcss_lib_default()({\n    'default': {\n      picker: {\n        width: '12px',\n        height: '12px',\n        borderRadius: '6px',\n        transform: 'translate(-6px, -1px)',\n        backgroundColor: 'rgb(248, 248, 248)',\n        boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n      }\n    }\n  });\n\n  return external_react_default.a.createElement('div', { style: styles.picker });\n};\n\n/* harmony default export */ var chrome_ChromePointer = (ChromePointer_ChromePointer);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/chrome/ChromePointerCircle.js\n\n\n\nvar ChromePointerCircle_ChromePointerCircle = function ChromePointerCircle() {\n  var styles = reactcss_lib_default()({\n    'default': {\n      picker: {\n        width: '12px',\n        height: '12px',\n        borderRadius: '6px',\n        boxShadow: 'inset 0 0 0 1px #fff',\n        transform: 'translate(-6px, -6px)'\n      }\n    }\n  });\n\n  return external_react_default.a.createElement('div', { style: styles.picker });\n};\n\n/* harmony default export */ var chrome_ChromePointerCircle = (ChromePointerCircle_ChromePointerCircle);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/chrome/Chrome.js\n\n\n\n\n\n\n\n\n\n\nvar Chrome_Chrome = function Chrome(_ref) {\n  var width = _ref.width,\n      onChange = _ref.onChange,\n      disableAlpha = _ref.disableAlpha,\n      rgb = _ref.rgb,\n      hsl = _ref.hsl,\n      hsv = _ref.hsv,\n      hex = _ref.hex,\n      renderers = _ref.renderers,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className,\n      defaultView = _ref.defaultView;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      picker: {\n        width: width,\n        background: '#fff',\n        borderRadius: '2px',\n        boxShadow: '0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)',\n        boxSizing: 'initial',\n        fontFamily: 'Menlo'\n      },\n      saturation: {\n        width: '100%',\n        paddingBottom: '55%',\n        position: 'relative',\n        borderRadius: '2px 2px 0 0',\n        overflow: 'hidden'\n      },\n      Saturation: {\n        radius: '2px 2px 0 0'\n      },\n      body: {\n        padding: '16px 16px 12px'\n      },\n      controls: {\n        display: 'flex'\n      },\n      color: {\n        width: '32px'\n      },\n      swatch: {\n        marginTop: '6px',\n        width: '16px',\n        height: '16px',\n        borderRadius: '8px',\n        position: 'relative',\n        overflow: 'hidden'\n      },\n      active: {\n        absolute: '0px 0px 0px 0px',\n        borderRadius: '8px',\n        boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.1)',\n        background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + rgb.a + ')',\n        zIndex: '2'\n      },\n      toggles: {\n        flex: '1'\n      },\n      hue: {\n        height: '10px',\n        position: 'relative',\n        marginBottom: '8px'\n      },\n      Hue: {\n        radius: '2px'\n      },\n      alpha: {\n        height: '10px',\n        position: 'relative'\n      },\n      Alpha: {\n        radius: '2px'\n      }\n    },\n    'disableAlpha': {\n      color: {\n        width: '22px'\n      },\n      alpha: {\n        display: 'none'\n      },\n      hue: {\n        marginBottom: '0px'\n      },\n      swatch: {\n        width: '10px',\n        height: '10px',\n        marginTop: '0px'\n      }\n    }\n  }, passedStyles), { disableAlpha: disableAlpha });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.picker, className: 'chrome-picker ' + className },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.saturation },\n      external_react_default.a.createElement(common_Saturation, {\n        style: styles.Saturation,\n        hsl: hsl,\n        hsv: hsv,\n        pointer: chrome_ChromePointerCircle,\n        onChange: onChange\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.body },\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.controls, className: 'flexbox-fix' },\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.color },\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.swatch },\n            external_react_default.a.createElement('div', { style: styles.active }),\n            external_react_default.a.createElement(common_Checkboard, { renderers: renderers })\n          )\n        ),\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.toggles },\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.hue },\n            external_react_default.a.createElement(common_Hue, {\n              style: styles.Hue,\n              hsl: hsl,\n              pointer: chrome_ChromePointer,\n              onChange: onChange\n            })\n          ),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.alpha },\n            external_react_default.a.createElement(common_Alpha, {\n              style: styles.Alpha,\n              rgb: rgb,\n              hsl: hsl,\n              pointer: chrome_ChromePointer,\n              renderers: renderers,\n              onChange: onChange\n            })\n          )\n        )\n      ),\n      external_react_default.a.createElement(chrome_ChromeFields, {\n        rgb: rgb,\n        hsl: hsl,\n        hex: hex,\n        view: defaultView,\n        onChange: onChange,\n        disableAlpha: disableAlpha\n      })\n    )\n  );\n};\n\nChrome_Chrome.propTypes = {\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  disableAlpha: prop_types_default.a.bool,\n  styles: prop_types_default.a.object,\n  defaultView: prop_types_default.a.oneOf([\"hex\", \"rgb\", \"hsl\"])\n};\n\nChrome_Chrome.defaultProps = {\n  width: 225,\n  disableAlpha: false,\n  styles: {}\n};\n\n/* harmony default export */ var chrome_Chrome = (common_ColorWrap(Chrome_Chrome));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/compact/CompactColor.js\n\n\n\n\n\n\nvar CompactColor_CompactColor = function CompactColor(_ref) {\n  var color = _ref.color,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n      onSwatchHover = _ref.onSwatchHover,\n      active = _ref.active;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      color: {\n        background: color,\n        width: '15px',\n        height: '15px',\n        float: 'left',\n        marginRight: '5px',\n        marginBottom: '5px',\n        position: 'relative',\n        cursor: 'pointer'\n      },\n      dot: {\n        absolute: '5px 5px 5px 5px',\n        background: getContrastingColor(color),\n        borderRadius: '50%',\n        opacity: '0'\n      }\n    },\n    'active': {\n      dot: {\n        opacity: '1'\n      }\n    },\n    'color-#FFFFFF': {\n      color: {\n        boxShadow: 'inset 0 0 0 1px #ddd'\n      },\n      dot: {\n        background: '#000'\n      }\n    },\n    'transparent': {\n      dot: {\n        background: '#000'\n      }\n    }\n  }, { active: active, 'color-#FFFFFF': color === '#FFFFFF', 'transparent': color === 'transparent' });\n\n  return external_react_default.a.createElement(\n    common_Swatch,\n    {\n      style: styles.color,\n      color: color,\n      onClick: onClick,\n      onHover: onSwatchHover,\n      focusStyle: { boxShadow: '0 0 4px ' + color }\n    },\n    external_react_default.a.createElement('div', { style: styles.dot })\n  );\n};\n\n/* harmony default export */ var compact_CompactColor = (CompactColor_CompactColor);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/compact/CompactFields.js\n\n\n\n\n\nvar CompactFields_CompactFields = function CompactFields(_ref) {\n  var hex = _ref.hex,\n      rgb = _ref.rgb,\n      onChange = _ref.onChange;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      fields: {\n        display: 'flex',\n        paddingBottom: '6px',\n        paddingRight: '5px',\n        position: 'relative'\n      },\n      active: {\n        position: 'absolute',\n        top: '6px',\n        left: '5px',\n        height: '9px',\n        width: '9px',\n        background: hex\n      },\n      HEXwrap: {\n        flex: '6',\n        position: 'relative'\n      },\n      HEXinput: {\n        width: '80%',\n        padding: '0px',\n        paddingLeft: '20%',\n        border: 'none',\n        outline: 'none',\n        background: 'none',\n        fontSize: '12px',\n        color: '#333',\n        height: '16px'\n      },\n      HEXlabel: {\n        display: 'none'\n      },\n      RGBwrap: {\n        flex: '3',\n        position: 'relative'\n      },\n      RGBinput: {\n        width: '70%',\n        padding: '0px',\n        paddingLeft: '30%',\n        border: 'none',\n        outline: 'none',\n        background: 'none',\n        fontSize: '12px',\n        color: '#333',\n        height: '16px'\n      },\n      RGBlabel: {\n        position: 'absolute',\n        top: '3px',\n        left: '0px',\n        lineHeight: '16px',\n        textTransform: 'uppercase',\n        fontSize: '12px',\n        color: '#999'\n      }\n    }\n  });\n\n  var handleChange = function handleChange(data, e) {\n    if (data.r || data.g || data.b) {\n      onChange({\n        r: data.r || rgb.r,\n        g: data.g || rgb.g,\n        b: data.b || rgb.b,\n        source: 'rgb'\n      }, e);\n    } else {\n      onChange({\n        hex: data.hex,\n        source: 'hex'\n      }, e);\n    }\n  };\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.fields, className: 'flexbox-fix' },\n    external_react_default.a.createElement('div', { style: styles.active }),\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n      label: 'hex',\n      value: hex,\n      onChange: handleChange\n    }),\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'r',\n      value: rgb.r,\n      onChange: handleChange\n    }),\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'g',\n      value: rgb.g,\n      onChange: handleChange\n    }),\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'b',\n      value: rgb.b,\n      onChange: handleChange\n    })\n  );\n};\n\n/* harmony default export */ var compact_CompactFields = (CompactFields_CompactFields);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/compact/Compact.js\n\n\n\n\n\n\n\n\n\n\n\nvar Compact_Compact = function Compact(_ref) {\n  var onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      colors = _ref.colors,\n      hex = _ref.hex,\n      rgb = _ref.rgb,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      Compact: {\n        background: '#f6f6f6',\n        radius: '4px'\n      },\n      compact: {\n        paddingTop: '5px',\n        paddingLeft: '5px',\n        boxSizing: 'initial',\n        width: '240px'\n      },\n      clear: {\n        clear: 'both'\n      }\n    }\n  }, passedStyles));\n\n  var handleChange = function handleChange(data, e) {\n    if (data.hex) {\n      color_isValidHex(data.hex) && onChange({\n        hex: data.hex,\n        source: 'hex'\n      }, e);\n    } else {\n      onChange(data, e);\n    }\n  };\n\n  return external_react_default.a.createElement(\n    common_Raised,\n    { style: styles.Compact, styles: passedStyles },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.compact, className: 'compact-picker ' + className },\n      external_react_default.a.createElement(\n        'div',\n        null,\n        lodash_es_map(colors, function (c) {\n          return external_react_default.a.createElement(compact_CompactColor, {\n            key: c,\n            color: c,\n            active: c.toLowerCase() === hex,\n            onClick: handleChange,\n            onSwatchHover: onSwatchHover\n          });\n        }),\n        external_react_default.a.createElement('div', { style: styles.clear })\n      ),\n      external_react_default.a.createElement(compact_CompactFields, { hex: hex, rgb: rgb, onChange: handleChange })\n    )\n  );\n};\n\nCompact_Compact.propTypes = {\n  colors: prop_types_default.a.arrayOf(prop_types_default.a.string),\n  styles: prop_types_default.a.object\n};\n\nCompact_Compact.defaultProps = {\n  colors: ['#4D4D4D', '#999999', '#FFFFFF', '#F44E3B', '#FE9200', '#FCDC00', '#DBDF00', '#A4DD00', '#68CCCA', '#73D8FF', '#AEA1FF', '#FDA1FF', '#333333', '#808080', '#cccccc', '#D33115', '#E27300', '#FCC400', '#B0BC00', '#68BC00', '#16A5A5', '#009CE0', '#7B64FF', '#FA28FF', '#000000', '#666666', '#B3B3B3', '#9F0500', '#C45100', '#FB9E00', '#808900', '#194D33', '#0C797D', '#0062B1', '#653294', '#AB149E'],\n  styles: {}\n};\n\n/* harmony default export */ var compact_Compact = (common_ColorWrap(Compact_Compact));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/github/GithubSwatch.js\n\n\n\n\n\nvar GithubSwatch_GithubSwatch = function GithubSwatch(_ref) {\n  var hover = _ref.hover,\n      color = _ref.color,\n      onClick = _ref.onClick,\n      onSwatchHover = _ref.onSwatchHover;\n\n  var hoverSwatch = {\n    position: 'relative',\n    zIndex: '2',\n    outline: '2px solid #fff',\n    boxShadow: '0 0 5px 2px rgba(0,0,0,0.25)'\n  };\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      swatch: {\n        width: '25px',\n        height: '25px',\n        fontSize: '0'\n      }\n    },\n    'hover': {\n      swatch: hoverSwatch\n    }\n  }, { hover: hover });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.swatch },\n    external_react_default.a.createElement(common_Swatch, {\n      color: color,\n      onClick: onClick,\n      onHover: onSwatchHover,\n      focusStyle: hoverSwatch\n    })\n  );\n};\n\n/* harmony default export */ var github_GithubSwatch = (Object(reactcss_lib[\"handleHover\"])(GithubSwatch_GithubSwatch));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/github/Github.js\n\n\n\n\n\n\n\n\n\nvar Github_Github = function Github(_ref) {\n  var width = _ref.width,\n      colors = _ref.colors,\n      onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      triangle = _ref.triangle,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      card: {\n        width: width,\n        background: '#fff',\n        border: '1px solid rgba(0,0,0,0.2)',\n        boxShadow: '0 3px 12px rgba(0,0,0,0.15)',\n        borderRadius: '4px',\n        position: 'relative',\n        padding: '5px',\n        display: 'flex',\n        flexWrap: 'wrap'\n      },\n      triangle: {\n        position: 'absolute',\n        border: '7px solid transparent',\n        borderBottomColor: '#fff'\n      },\n      triangleShadow: {\n        position: 'absolute',\n        border: '8px solid transparent',\n        borderBottomColor: 'rgba(0,0,0,0.15)'\n      }\n    },\n    'hide-triangle': {\n      triangle: {\n        display: 'none'\n      },\n      triangleShadow: {\n        display: 'none'\n      }\n    },\n    'top-left-triangle': {\n      triangle: {\n        top: '-14px',\n        left: '10px'\n      },\n      triangleShadow: {\n        top: '-16px',\n        left: '9px'\n      }\n    },\n    'top-right-triangle': {\n      triangle: {\n        top: '-14px',\n        right: '10px'\n      },\n      triangleShadow: {\n        top: '-16px',\n        right: '9px'\n      }\n    },\n    'bottom-left-triangle': {\n      triangle: {\n        top: '35px',\n        left: '10px',\n        transform: 'rotate(180deg)'\n      },\n      triangleShadow: {\n        top: '37px',\n        left: '9px',\n        transform: 'rotate(180deg)'\n      }\n    },\n    'bottom-right-triangle': {\n      triangle: {\n        top: '35px',\n        right: '10px',\n        transform: 'rotate(180deg)'\n      },\n      triangleShadow: {\n        top: '37px',\n        right: '9px',\n        transform: 'rotate(180deg)'\n      }\n    }\n  }, passedStyles), {\n    'hide-triangle': triangle === 'hide',\n    'top-left-triangle': triangle === 'top-left',\n    'top-right-triangle': triangle === 'top-right',\n    'bottom-left-triangle': triangle === 'bottom-left',\n    'bottom-right-triangle': triangle === 'bottom-right'\n  });\n\n  var handleChange = function handleChange(hex, e) {\n    return onChange({ hex: hex, source: 'hex' }, e);\n  };\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.card, className: 'github-picker ' + className },\n    external_react_default.a.createElement('div', { style: styles.triangleShadow }),\n    external_react_default.a.createElement('div', { style: styles.triangle }),\n    lodash_es_map(colors, function (c) {\n      return external_react_default.a.createElement(github_GithubSwatch, {\n        color: c,\n        key: c,\n        onClick: handleChange,\n        onSwatchHover: onSwatchHover\n      });\n    })\n  );\n};\n\nGithub_Github.propTypes = {\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  colors: prop_types_default.a.arrayOf(prop_types_default.a.string),\n  triangle: prop_types_default.a.oneOf(['hide', 'top-left', 'top-right', 'bottom-left', 'bottom-right']),\n  styles: prop_types_default.a.object\n};\n\nGithub_Github.defaultProps = {\n  width: 200,\n  colors: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'],\n  triangle: 'top-left',\n  styles: {}\n};\n\n/* harmony default export */ var github_Github = (common_ColorWrap(Github_Github));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/hue/HuePointer.js\n\n\n\nvar HuePointer_SliderPointer = function SliderPointer(_ref) {\n  var direction = _ref.direction;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      picker: {\n        width: '18px',\n        height: '18px',\n        borderRadius: '50%',\n        transform: 'translate(-9px, -1px)',\n        backgroundColor: 'rgb(248, 248, 248)',\n        boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n      }\n    },\n    'vertical': {\n      picker: {\n        transform: 'translate(-3px, -9px)'\n      }\n    }\n  }, { vertical: direction === 'vertical' });\n\n  return external_react_default.a.createElement('div', { style: styles.picker });\n};\n\n/* harmony default export */ var HuePointer = (HuePointer_SliderPointer);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/hue/Hue.js\nvar Hue_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\n\n\n\n\n\n\n\n\nvar Hue_HuePicker = function HuePicker(_ref) {\n  var width = _ref.width,\n      height = _ref.height,\n      onChange = _ref.onChange,\n      hsl = _ref.hsl,\n      direction = _ref.direction,\n      pointer = _ref.pointer,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      picker: {\n        position: 'relative',\n        width: width,\n        height: height\n      },\n      hue: {\n        radius: '2px'\n      }\n    }\n  }, passedStyles));\n\n  // Overwrite to provide pure hue color\n  var handleChange = function handleChange(data) {\n    return onChange({ a: 1, h: data.h, l: 0.5, s: 1 });\n  };\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.picker, className: 'hue-picker ' + className },\n    external_react_default.a.createElement(common_Hue, Hue_extends({}, styles.hue, {\n      hsl: hsl,\n      pointer: pointer,\n      onChange: handleChange,\n      direction: direction\n    }))\n  );\n};\n\nHue_HuePicker.propTypes = {\n  styles: prop_types_default.a.object\n};\nHue_HuePicker.defaultProps = {\n  width: '316px',\n  height: '16px',\n  direction: 'horizontal',\n  pointer: HuePointer,\n  styles: {}\n};\n\n/* harmony default export */ var hue_Hue = (common_ColorWrap(Hue_HuePicker));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/material/Material.js\n\n\n\n\n\n\n\nvar Material_Material = function Material(_ref) {\n  var onChange = _ref.onChange,\n      hex = _ref.hex,\n      rgb = _ref.rgb,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      material: {\n        width: '98px',\n        height: '98px',\n        padding: '16px',\n        fontFamily: 'Roboto'\n      },\n      HEXwrap: {\n        position: 'relative'\n      },\n      HEXinput: {\n        width: '100%',\n        marginTop: '12px',\n        fontSize: '15px',\n        color: '#333',\n        padding: '0px',\n        border: '0px',\n        borderBottom: '2px solid ' + hex,\n        outline: 'none',\n        height: '30px'\n      },\n      HEXlabel: {\n        position: 'absolute',\n        top: '0px',\n        left: '0px',\n        fontSize: '11px',\n        color: '#999999',\n        textTransform: 'capitalize'\n      },\n      Hex: {\n        style: {}\n      },\n      RGBwrap: {\n        position: 'relative'\n      },\n      RGBinput: {\n        width: '100%',\n        marginTop: '12px',\n        fontSize: '15px',\n        color: '#333',\n        padding: '0px',\n        border: '0px',\n        borderBottom: '1px solid #eee',\n        outline: 'none',\n        height: '30px'\n      },\n      RGBlabel: {\n        position: 'absolute',\n        top: '0px',\n        left: '0px',\n        fontSize: '11px',\n        color: '#999999',\n        textTransform: 'capitalize'\n      },\n      split: {\n        display: 'flex',\n        marginRight: '-10px',\n        paddingTop: '11px'\n      },\n      third: {\n        flex: '1',\n        paddingRight: '10px'\n      }\n    }\n  }, passedStyles));\n\n  var handleChange = function handleChange(data, e) {\n    if (data.hex) {\n      color_isValidHex(data.hex) && onChange({\n        hex: data.hex,\n        source: 'hex'\n      }, e);\n    } else if (data.r || data.g || data.b) {\n      onChange({\n        r: data.r || rgb.r,\n        g: data.g || rgb.g,\n        b: data.b || rgb.b,\n        source: 'rgb'\n      }, e);\n    }\n  };\n\n  return external_react_default.a.createElement(\n    common_Raised,\n    { styles: passedStyles },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.material, className: 'material-picker ' + className },\n      external_react_default.a.createElement(common_EditableInput, {\n        style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n        label: 'hex',\n        value: hex,\n        onChange: handleChange\n      }),\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.split, className: 'flexbox-fix' },\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.third },\n          external_react_default.a.createElement(common_EditableInput, {\n            style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n            label: 'r', value: rgb.r,\n            onChange: handleChange\n          })\n        ),\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.third },\n          external_react_default.a.createElement(common_EditableInput, {\n            style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n            label: 'g',\n            value: rgb.g,\n            onChange: handleChange\n          })\n        ),\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.third },\n          external_react_default.a.createElement(common_EditableInput, {\n            style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n            label: 'b',\n            value: rgb.b,\n            onChange: handleChange\n          })\n        )\n      )\n    )\n  );\n};\n\n/* harmony default export */ var material_Material = (common_ColorWrap(Material_Material));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/photoshop/PhotoshopFields.js\n\n\n\n\n\n\nvar PhotoshopFields_PhotoshopPicker = function PhotoshopPicker(_ref) {\n  var onChange = _ref.onChange,\n      rgb = _ref.rgb,\n      hsv = _ref.hsv,\n      hex = _ref.hex;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      fields: {\n        paddingTop: '5px',\n        paddingBottom: '9px',\n        width: '80px',\n        position: 'relative'\n      },\n      divider: {\n        height: '5px'\n      },\n      RGBwrap: {\n        position: 'relative'\n      },\n      RGBinput: {\n        marginLeft: '40%',\n        width: '40%',\n        height: '18px',\n        border: '1px solid #888888',\n        boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n        marginBottom: '5px',\n        fontSize: '13px',\n        paddingLeft: '3px',\n        marginRight: '10px'\n      },\n      RGBlabel: {\n        left: '0px',\n        top: '0px',\n        width: '34px',\n        textTransform: 'uppercase',\n        fontSize: '13px',\n        height: '18px',\n        lineHeight: '22px',\n        position: 'absolute'\n      },\n      HEXwrap: {\n        position: 'relative'\n      },\n      HEXinput: {\n        marginLeft: '20%',\n        width: '80%',\n        height: '18px',\n        border: '1px solid #888888',\n        boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n        marginBottom: '6px',\n        fontSize: '13px',\n        paddingLeft: '3px'\n      },\n      HEXlabel: {\n        position: 'absolute',\n        top: '0px',\n        left: '0px',\n        width: '14px',\n        textTransform: 'uppercase',\n        fontSize: '13px',\n        height: '18px',\n        lineHeight: '22px'\n      },\n      fieldSymbols: {\n        position: 'absolute',\n        top: '5px',\n        right: '-7px',\n        fontSize: '13px'\n      },\n      symbol: {\n        height: '20px',\n        lineHeight: '22px',\n        paddingBottom: '7px'\n      }\n    }\n  });\n\n  var handleChange = function handleChange(data, e) {\n    if (data['#']) {\n      color_isValidHex(data['#']) && onChange({\n        hex: data['#'],\n        source: 'hex'\n      }, e);\n    } else if (data.r || data.g || data.b) {\n      onChange({\n        r: data.r || rgb.r,\n        g: data.g || rgb.g,\n        b: data.b || rgb.b,\n        source: 'rgb'\n      }, e);\n    } else if (data.h || data.s || data.v) {\n      onChange({\n        h: data.h || hsv.h,\n        s: data.s || hsv.s,\n        v: data.v || hsv.v,\n        source: 'hsv'\n      }, e);\n    }\n  };\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.fields },\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'h',\n      value: Math.round(hsv.h),\n      onChange: handleChange\n    }),\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 's',\n      value: Math.round(hsv.s * 100),\n      onChange: handleChange\n    }),\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'v',\n      value: Math.round(hsv.v * 100),\n      onChange: handleChange\n    }),\n    external_react_default.a.createElement('div', { style: styles.divider }),\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'r',\n      value: rgb.r,\n      onChange: handleChange\n    }),\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'g',\n      value: rgb.g,\n      onChange: handleChange\n    }),\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n      label: 'b',\n      value: rgb.b,\n      onChange: handleChange\n    }),\n    external_react_default.a.createElement('div', { style: styles.divider }),\n    external_react_default.a.createElement(common_EditableInput, {\n      style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n      label: '#',\n      value: hex.replace('#', ''),\n      onChange: handleChange\n    }),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.fieldSymbols },\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.symbol },\n        '\\xB0'\n      ),\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.symbol },\n        '%'\n      ),\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.symbol },\n        '%'\n      )\n    )\n  );\n};\n\n/* harmony default export */ var PhotoshopFields = (PhotoshopFields_PhotoshopPicker);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/photoshop/PhotoshopPointerCircle.js\n\n\n\nvar PhotoshopPointerCircle_PhotoshopPointerCircle = function PhotoshopPointerCircle(_ref) {\n  var hsl = _ref.hsl;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      picker: {\n        width: '12px',\n        height: '12px',\n        borderRadius: '6px',\n        boxShadow: 'inset 0 0 0 1px #fff',\n        transform: 'translate(-6px, -6px)'\n      }\n    },\n    'black-outline': {\n      picker: {\n        boxShadow: 'inset 0 0 0 1px #000'\n      }\n    }\n  }, { 'black-outline': hsl.l > 0.5 });\n\n  return external_react_default.a.createElement('div', { style: styles.picker });\n};\n\n/* harmony default export */ var photoshop_PhotoshopPointerCircle = (PhotoshopPointerCircle_PhotoshopPointerCircle);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/photoshop/PhotoshopPointer.js\n\n\n\nvar PhotoshopPointer_PhotoshopPointerCircle = function PhotoshopPointerCircle() {\n  var styles = reactcss_lib_default()({\n    'default': {\n      triangle: {\n        width: 0,\n        height: 0,\n        borderStyle: 'solid',\n        borderWidth: '4px 0 4px 6px',\n        borderColor: 'transparent transparent transparent #fff',\n        position: 'absolute',\n        top: '1px',\n        left: '1px'\n      },\n      triangleBorder: {\n        width: 0,\n        height: 0,\n        borderStyle: 'solid',\n        borderWidth: '5px 0 5px 8px',\n        borderColor: 'transparent transparent transparent #555'\n      },\n\n      left: {\n        Extend: 'triangleBorder',\n        transform: 'translate(-13px, -4px)'\n      },\n      leftInside: {\n        Extend: 'triangle',\n        transform: 'translate(-8px, -5px)'\n      },\n\n      right: {\n        Extend: 'triangleBorder',\n        transform: 'translate(20px, -14px) rotate(180deg)'\n      },\n      rightInside: {\n        Extend: 'triangle',\n        transform: 'translate(-8px, -5px)'\n      }\n    }\n  });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.pointer },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.left },\n      external_react_default.a.createElement('div', { style: styles.leftInside })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.right },\n      external_react_default.a.createElement('div', { style: styles.rightInside })\n    )\n  );\n};\n\n/* harmony default export */ var PhotoshopPointer = (PhotoshopPointer_PhotoshopPointerCircle);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/photoshop/PhotoshopButton.js\n\n\n\nvar PhotoshopButton_PhotoshopButton = function PhotoshopButton(_ref) {\n  var onClick = _ref.onClick,\n      label = _ref.label,\n      children = _ref.children,\n      active = _ref.active;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      button: {\n        backgroundImage: 'linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)',\n        border: '1px solid #878787',\n        borderRadius: '2px',\n        height: '20px',\n        boxShadow: '0 1px 0 0 #EAEAEA',\n        fontSize: '14px',\n        color: '#000',\n        lineHeight: '20px',\n        textAlign: 'center',\n        marginBottom: '10px',\n        cursor: 'pointer'\n      }\n    },\n    'active': {\n      button: {\n        boxShadow: '0 0 0 1px #878787'\n      }\n    }\n  }, { active: active });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.button, onClick: onClick },\n    label || children\n  );\n};\n\n/* harmony default export */ var photoshop_PhotoshopButton = (PhotoshopButton_PhotoshopButton);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/photoshop/PhotoshopPreviews.js\n\n\n\nvar PhotoshopPreviews_PhotoshopPreviews = function PhotoshopPreviews(_ref) {\n  var rgb = _ref.rgb,\n      currentColor = _ref.currentColor;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      swatches: {\n        border: '1px solid #B3B3B3',\n        borderBottom: '1px solid #F0F0F0',\n        marginBottom: '2px',\n        marginTop: '1px'\n      },\n      new: {\n        height: '34px',\n        background: 'rgb(' + rgb.r + ',' + rgb.g + ', ' + rgb.b + ')',\n        boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000'\n      },\n      current: {\n        height: '34px',\n        background: currentColor,\n        boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000'\n      },\n      label: {\n        fontSize: '14px',\n        color: '#000',\n        textAlign: 'center'\n      }\n    }\n  });\n\n  return external_react_default.a.createElement(\n    'div',\n    null,\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.label },\n      'new'\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.swatches },\n      external_react_default.a.createElement('div', { style: styles.new }),\n      external_react_default.a.createElement('div', { style: styles.current })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.label },\n      'current'\n    )\n  );\n};\n\n/* harmony default export */ var photoshop_PhotoshopPreviews = (PhotoshopPreviews_PhotoshopPreviews);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/photoshop/Photoshop.js\nvar Photoshop_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 Photoshop_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Photoshop_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 Photoshop_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\n\n\n\n\n\n\n\n\n\n\nvar Photoshop_Photoshop = function (_React$Component) {\n  Photoshop_inherits(Photoshop, _React$Component);\n\n  function Photoshop(props) {\n    Photoshop_classCallCheck(this, Photoshop);\n\n    var _this = Photoshop_possibleConstructorReturn(this, (Photoshop.__proto__ || Object.getPrototypeOf(Photoshop)).call(this));\n\n    _this.state = {\n      currentColor: props.hex\n    };\n    return _this;\n  }\n\n  Photoshop_createClass(Photoshop, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          _props$styles = _props.styles,\n          passedStyles = _props$styles === undefined ? {} : _props$styles,\n          _props$className = _props.className,\n          className = _props$className === undefined ? '' : _props$className;\n\n      var styles = reactcss_lib_default()(lodash_es_merge({\n        'default': {\n          picker: {\n            background: '#DCDCDC',\n            borderRadius: '4px',\n            boxShadow: '0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15)',\n            boxSizing: 'initial',\n            width: '513px'\n          },\n          head: {\n            backgroundImage: 'linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%)',\n            borderBottom: '1px solid #B1B1B1',\n            boxShadow: 'inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02)',\n            height: '23px',\n            lineHeight: '24px',\n            borderRadius: '4px 4px 0 0',\n            fontSize: '13px',\n            color: '#4D4D4D',\n            textAlign: 'center'\n          },\n          body: {\n            padding: '15px 15px 0',\n            display: 'flex'\n          },\n          saturation: {\n            width: '256px',\n            height: '256px',\n            position: 'relative',\n            border: '2px solid #B3B3B3',\n            borderBottom: '2px solid #F0F0F0',\n            overflow: 'hidden'\n          },\n          hue: {\n            position: 'relative',\n            height: '256px',\n            width: '19px',\n            marginLeft: '10px',\n            border: '2px solid #B3B3B3',\n            borderBottom: '2px solid #F0F0F0'\n          },\n          controls: {\n            width: '180px',\n            marginLeft: '10px'\n          },\n          top: {\n            display: 'flex'\n          },\n          previews: {\n            width: '60px'\n          },\n          actions: {\n            flex: '1',\n            marginLeft: '20px'\n          }\n        }\n      }, passedStyles));\n\n      return external_react_default.a.createElement(\n        'div',\n        { style: styles.picker, className: 'photoshop-picker ' + className },\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.head },\n          this.props.header\n        ),\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.body, className: 'flexbox-fix' },\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.saturation },\n            external_react_default.a.createElement(common_Saturation, {\n              hsl: this.props.hsl,\n              hsv: this.props.hsv,\n              pointer: photoshop_PhotoshopPointerCircle,\n              onChange: this.props.onChange\n            })\n          ),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.hue },\n            external_react_default.a.createElement(common_Hue, {\n              direction: 'vertical',\n              hsl: this.props.hsl,\n              pointer: PhotoshopPointer,\n              onChange: this.props.onChange\n            })\n          ),\n          external_react_default.a.createElement(\n            'div',\n            { style: styles.controls },\n            external_react_default.a.createElement(\n              'div',\n              { style: styles.top, className: 'flexbox-fix' },\n              external_react_default.a.createElement(\n                'div',\n                { style: styles.previews },\n                external_react_default.a.createElement(photoshop_PhotoshopPreviews, {\n                  rgb: this.props.rgb,\n                  currentColor: this.state.currentColor\n                })\n              ),\n              external_react_default.a.createElement(\n                'div',\n                { style: styles.actions },\n                external_react_default.a.createElement(photoshop_PhotoshopButton, { label: 'OK', onClick: this.props.onAccept, active: true }),\n                external_react_default.a.createElement(photoshop_PhotoshopButton, { label: 'Cancel', onClick: this.props.onCancel }),\n                external_react_default.a.createElement(PhotoshopFields, {\n                  onChange: this.props.onChange,\n                  rgb: this.props.rgb,\n                  hsv: this.props.hsv,\n                  hex: this.props.hex\n                })\n              )\n            )\n          )\n        )\n      );\n    }\n  }]);\n\n  return Photoshop;\n}(external_react_default.a.Component);\n\nPhotoshop_Photoshop.propTypes = {\n  header: prop_types_default.a.string,\n  styles: prop_types_default.a.object\n};\n\nPhotoshop_Photoshop.defaultProps = {\n  header: 'Color Picker',\n  styles: {}\n};\n\n/* harmony default export */ var photoshop_Photoshop = (common_ColorWrap(Photoshop_Photoshop));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/sketch/SketchFields.js\n/* eslint-disable no-param-reassign */\n\n\n\n\n\n\n\nvar SketchFields_SketchFields = function SketchFields(_ref) {\n  var onChange = _ref.onChange,\n      rgb = _ref.rgb,\n      hsl = _ref.hsl,\n      hex = _ref.hex,\n      disableAlpha = _ref.disableAlpha;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      fields: {\n        display: 'flex',\n        paddingTop: '4px'\n      },\n      single: {\n        flex: '1',\n        paddingLeft: '6px'\n      },\n      alpha: {\n        flex: '1',\n        paddingLeft: '6px'\n      },\n      double: {\n        flex: '2'\n      },\n      input: {\n        width: '80%',\n        padding: '4px 10% 3px',\n        border: 'none',\n        boxShadow: 'inset 0 0 0 1px #ccc',\n        fontSize: '11px'\n      },\n      label: {\n        display: 'block',\n        textAlign: 'center',\n        fontSize: '11px',\n        color: '#222',\n        paddingTop: '3px',\n        paddingBottom: '4px',\n        textTransform: 'capitalize'\n      }\n    },\n    'disableAlpha': {\n      alpha: {\n        display: 'none'\n      }\n    }\n  }, { disableAlpha: disableAlpha });\n\n  var handleChange = function handleChange(data, e) {\n    if (data.hex) {\n      color_isValidHex(data.hex) && onChange({\n        hex: data.hex,\n        source: 'hex'\n      }, e);\n    } else if (data.r || data.g || data.b) {\n      onChange({\n        r: data.r || rgb.r,\n        g: data.g || rgb.g,\n        b: data.b || rgb.b,\n        a: rgb.a,\n        source: 'rgb'\n      }, e);\n    } else if (data.a) {\n      if (data.a < 0) {\n        data.a = 0;\n      } else if (data.a > 100) {\n        data.a = 100;\n      }\n\n      data.a /= 100;\n      onChange({\n        h: hsl.h,\n        s: hsl.s,\n        l: hsl.l,\n        a: data.a,\n        source: 'rgb'\n      }, e);\n    }\n  };\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.fields, className: 'flexbox-fix' },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.double },\n      external_react_default.a.createElement(common_EditableInput, {\n        style: { input: styles.input, label: styles.label },\n        label: 'hex',\n        value: hex.replace('#', ''),\n        onChange: handleChange\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.single },\n      external_react_default.a.createElement(common_EditableInput, {\n        style: { input: styles.input, label: styles.label },\n        label: 'r',\n        value: rgb.r,\n        onChange: handleChange,\n        dragLabel: 'true',\n        dragMax: '255'\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.single },\n      external_react_default.a.createElement(common_EditableInput, {\n        style: { input: styles.input, label: styles.label },\n        label: 'g',\n        value: rgb.g,\n        onChange: handleChange,\n        dragLabel: 'true',\n        dragMax: '255'\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.single },\n      external_react_default.a.createElement(common_EditableInput, {\n        style: { input: styles.input, label: styles.label },\n        label: 'b',\n        value: rgb.b,\n        onChange: handleChange,\n        dragLabel: 'true',\n        dragMax: '255'\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.alpha },\n      external_react_default.a.createElement(common_EditableInput, {\n        style: { input: styles.input, label: styles.label },\n        label: 'a',\n        value: Math.round(rgb.a * 100),\n        onChange: handleChange,\n        dragLabel: 'true',\n        dragMax: '100'\n      })\n    )\n  );\n};\n\n/* harmony default export */ var sketch_SketchFields = (SketchFields_SketchFields);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/sketch/SketchPresetColors.js\nvar SketchPresetColors_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\n\n\n\n\n\n\nvar SketchPresetColors_SketchPresetColors = function SketchPresetColors(_ref) {\n  var colors = _ref.colors,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n      onSwatchHover = _ref.onSwatchHover;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      colors: {\n        margin: '0 -10px',\n        padding: '10px 0 0 10px',\n        borderTop: '1px solid #eee',\n        display: 'flex',\n        flexWrap: 'wrap',\n        position: 'relative'\n      },\n      swatchWrap: {\n        width: '16px',\n        height: '16px',\n        margin: '0 10px 10px 0'\n      },\n      swatch: {\n        borderRadius: '3px',\n        boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15)'\n      }\n    },\n    'no-presets': {\n      colors: {\n        display: 'none'\n      }\n    }\n  }, {\n    'no-presets': !colors || !colors.length\n  });\n\n  var handleClick = function handleClick(hex, e) {\n    onClick({\n      hex: hex,\n      source: 'hex'\n    }, e);\n  };\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.colors, className: 'flexbox-fix' },\n    colors.map(function (colorObjOrString) {\n      var c = typeof colorObjOrString === 'string' ? { color: colorObjOrString } : colorObjOrString;\n      var key = '' + c.color + (c.title || '');\n      return external_react_default.a.createElement(\n        'div',\n        { key: key, style: styles.swatchWrap },\n        external_react_default.a.createElement(common_Swatch, SketchPresetColors_extends({}, c, {\n          style: styles.swatch,\n          onClick: handleClick,\n          onHover: onSwatchHover,\n          focusStyle: {\n            boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), 0 0 4px ' + c.color\n          }\n        }))\n      );\n    })\n  );\n};\n\nSketchPresetColors_SketchPresetColors.propTypes = {\n  colors: prop_types_default.a.arrayOf(prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.shape({\n    color: prop_types_default.a.string,\n    title: prop_types_default.a.string\n  })])).isRequired\n};\n\n/* harmony default export */ var sketch_SketchPresetColors = (SketchPresetColors_SketchPresetColors);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/sketch/Sketch.js\nvar Sketch_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\n\n\n\n\n\n\n\n\n\nvar Sketch_Sketch = function Sketch(_ref) {\n  var width = _ref.width,\n      rgb = _ref.rgb,\n      hex = _ref.hex,\n      hsv = _ref.hsv,\n      hsl = _ref.hsl,\n      onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      disableAlpha = _ref.disableAlpha,\n      presetColors = _ref.presetColors,\n      renderers = _ref.renderers,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': Sketch_extends({\n      picker: {\n        width: width,\n        padding: '10px 10px 0',\n        boxSizing: 'initial',\n        background: '#fff',\n        borderRadius: '4px',\n        boxShadow: '0 0 0 1px rgba(0,0,0,.15), 0 8px 16px rgba(0,0,0,.15)'\n      },\n      saturation: {\n        width: '100%',\n        paddingBottom: '75%',\n        position: 'relative',\n        overflow: 'hidden'\n      },\n      Saturation: {\n        radius: '3px',\n        shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n      },\n      controls: {\n        display: 'flex'\n      },\n      sliders: {\n        padding: '4px 0',\n        flex: '1'\n      },\n      color: {\n        width: '24px',\n        height: '24px',\n        position: 'relative',\n        marginTop: '4px',\n        marginLeft: '4px',\n        borderRadius: '3px'\n      },\n      activeColor: {\n        absolute: '0px 0px 0px 0px',\n        borderRadius: '2px',\n        background: 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')',\n        boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n      },\n      hue: {\n        position: 'relative',\n        height: '10px',\n        overflow: 'hidden'\n      },\n      Hue: {\n        radius: '2px',\n        shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n      },\n\n      alpha: {\n        position: 'relative',\n        height: '10px',\n        marginTop: '4px',\n        overflow: 'hidden'\n      },\n      Alpha: {\n        radius: '2px',\n        shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n      }\n    }, passedStyles),\n    'disableAlpha': {\n      color: {\n        height: '10px'\n      },\n      hue: {\n        height: '10px'\n      },\n      alpha: {\n        display: 'none'\n      }\n    }\n  }, passedStyles), { disableAlpha: disableAlpha });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.picker, className: 'sketch-picker ' + className },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.saturation },\n      external_react_default.a.createElement(common_Saturation, {\n        style: styles.Saturation,\n        hsl: hsl,\n        hsv: hsv,\n        onChange: onChange\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.controls, className: 'flexbox-fix' },\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.sliders },\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.hue },\n          external_react_default.a.createElement(common_Hue, {\n            style: styles.Hue,\n            hsl: hsl,\n            onChange: onChange\n          })\n        ),\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.alpha },\n          external_react_default.a.createElement(common_Alpha, {\n            style: styles.Alpha,\n            rgb: rgb,\n            hsl: hsl,\n            renderers: renderers,\n            onChange: onChange\n          })\n        )\n      ),\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.color },\n        external_react_default.a.createElement(common_Checkboard, null),\n        external_react_default.a.createElement('div', { style: styles.activeColor })\n      )\n    ),\n    external_react_default.a.createElement(sketch_SketchFields, {\n      rgb: rgb,\n      hsl: hsl,\n      hex: hex,\n      onChange: onChange,\n      disableAlpha: disableAlpha\n    }),\n    external_react_default.a.createElement(sketch_SketchPresetColors, {\n      colors: presetColors,\n      onClick: onChange,\n      onSwatchHover: onSwatchHover\n    })\n  );\n};\n\nSketch_Sketch.propTypes = {\n  disableAlpha: prop_types_default.a.bool,\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  styles: prop_types_default.a.object\n};\n\nSketch_Sketch.defaultProps = {\n  disableAlpha: false,\n  width: 200,\n  styles: {},\n  presetColors: ['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF']\n};\n\n/* harmony default export */ var sketch_Sketch = (common_ColorWrap(Sketch_Sketch));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/slider/SliderSwatch.js\n\n\n\nvar SliderSwatch_SliderSwatch = function SliderSwatch(_ref) {\n  var hsl = _ref.hsl,\n      offset = _ref.offset,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n      active = _ref.active,\n      first = _ref.first,\n      last = _ref.last;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      swatch: {\n        height: '12px',\n        background: 'hsl(' + hsl.h + ', 50%, ' + offset * 100 + '%)',\n        cursor: 'pointer'\n      }\n    },\n    'first': {\n      swatch: {\n        borderRadius: '2px 0 0 2px'\n      }\n    },\n    'last': {\n      swatch: {\n        borderRadius: '0 2px 2px 0'\n      }\n    },\n    'active': {\n      swatch: {\n        transform: 'scaleY(1.8)',\n        borderRadius: '3.6px/2px'\n      }\n    }\n  }, { active: active, first: first, last: last });\n\n  var handleClick = function handleClick(e) {\n    return onClick({\n      h: hsl.h,\n      s: 0.5,\n      l: offset,\n      source: 'hsl'\n    }, e);\n  };\n\n  return external_react_default.a.createElement('div', { style: styles.swatch, onClick: handleClick });\n};\n\n/* harmony default export */ var slider_SliderSwatch = (SliderSwatch_SliderSwatch);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/slider/SliderSwatches.js\n\n\n\n\n\nvar SliderSwatches_SliderSwatches = function SliderSwatches(_ref) {\n  var onClick = _ref.onClick,\n      hsl = _ref.hsl;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      swatches: {\n        marginTop: '20px'\n      },\n      swatch: {\n        boxSizing: 'border-box',\n        width: '20%',\n        paddingRight: '1px',\n        float: 'left'\n      },\n      clear: {\n        clear: 'both'\n      }\n    }\n  });\n\n  // Acceptible difference in floating point equality\n  var epsilon = 0.1;\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.swatches },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.swatch },\n      external_react_default.a.createElement(slider_SliderSwatch, {\n        hsl: hsl,\n        offset: '.80',\n        active: Math.abs(hsl.l - 0.80) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n        onClick: onClick,\n        first: true\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.swatch },\n      external_react_default.a.createElement(slider_SliderSwatch, {\n        hsl: hsl,\n        offset: '.65',\n        active: Math.abs(hsl.l - 0.65) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n        onClick: onClick\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.swatch },\n      external_react_default.a.createElement(slider_SliderSwatch, {\n        hsl: hsl,\n        offset: '.50',\n        active: Math.abs(hsl.l - 0.50) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n        onClick: onClick\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.swatch },\n      external_react_default.a.createElement(slider_SliderSwatch, {\n        hsl: hsl,\n        offset: '.35',\n        active: Math.abs(hsl.l - 0.35) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n        onClick: onClick\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.swatch },\n      external_react_default.a.createElement(slider_SliderSwatch, {\n        hsl: hsl,\n        offset: '.20',\n        active: Math.abs(hsl.l - 0.20) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n        onClick: onClick,\n        last: true\n      })\n    ),\n    external_react_default.a.createElement('div', { style: styles.clear })\n  );\n};\n\n/* harmony default export */ var slider_SliderSwatches = (SliderSwatches_SliderSwatches);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/slider/SliderPointer.js\n\n\n\nvar SliderPointer_SliderPointer = function SliderPointer() {\n  var styles = reactcss_lib_default()({\n    'default': {\n      picker: {\n        width: '14px',\n        height: '14px',\n        borderRadius: '6px',\n        transform: 'translate(-7px, -1px)',\n        backgroundColor: 'rgb(248, 248, 248)',\n        boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n      }\n    }\n  });\n\n  return external_react_default.a.createElement('div', { style: styles.picker });\n};\n\n/* harmony default export */ var slider_SliderPointer = (SliderPointer_SliderPointer);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/slider/Slider.js\n\n\n\n\n\n\n\n\n\nvar slider_Slider_Slider = function Slider(_ref) {\n  var hsl = _ref.hsl,\n      onChange = _ref.onChange,\n      pointer = _ref.pointer,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      hue: {\n        height: '12px',\n        position: 'relative'\n      },\n      Hue: {\n        radius: '2px'\n      }\n    }\n  }, passedStyles));\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.wrap || {}, className: 'slider-picker ' + className },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.hue },\n      external_react_default.a.createElement(common_Hue, {\n        style: styles.Hue,\n        hsl: hsl,\n        pointer: pointer,\n        onChange: onChange\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.swatches },\n      external_react_default.a.createElement(slider_SliderSwatches, { hsl: hsl, onClick: onChange })\n    )\n  );\n};\n\nslider_Slider_Slider.propTypes = {\n  styles: prop_types_default.a.object\n};\nslider_Slider_Slider.defaultProps = {\n  pointer: slider_SliderPointer,\n  styles: {}\n};\n\n/* harmony default export */ var components_slider_Slider = (common_ColorWrap(slider_Slider_Slider));\n// EXTERNAL MODULE: ./node_modules/@icons/material/CheckIcon.js\nvar CheckIcon = __webpack_require__(688);\nvar CheckIcon_default = /*#__PURE__*/__webpack_require__.n(CheckIcon);\n\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/swatches/SwatchesColor.js\n\n\n\n\n\n\n\nvar SwatchesColor_SwatchesColor = function SwatchesColor(_ref) {\n  var color = _ref.color,\n      _ref$onClick = _ref.onClick,\n      onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n      onSwatchHover = _ref.onSwatchHover,\n      first = _ref.first,\n      last = _ref.last,\n      active = _ref.active;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      color: {\n        width: '40px',\n        height: '24px',\n        cursor: 'pointer',\n        background: color,\n        marginBottom: '1px'\n      },\n      check: {\n        color: getContrastingColor(color),\n        marginLeft: '8px',\n        display: 'none'\n      }\n    },\n    'first': {\n      color: {\n        overflow: 'hidden',\n        borderRadius: '2px 2px 0 0'\n      }\n    },\n    'last': {\n      color: {\n        overflow: 'hidden',\n        borderRadius: '0 0 2px 2px'\n      }\n    },\n    'active': {\n      check: {\n        display: 'block'\n      }\n    },\n    'color-#FFFFFF': {\n      color: {\n        boxShadow: 'inset 0 0 0 1px #ddd'\n      },\n      check: {\n        color: '#333'\n      }\n    },\n    'transparent': {\n      check: {\n        color: '#333'\n      }\n    }\n  }, {\n    first: first,\n    last: last,\n    active: active,\n    'color-#FFFFFF': color === '#FFFFFF',\n    'transparent': color === 'transparent'\n  });\n\n  return external_react_default.a.createElement(\n    common_Swatch,\n    {\n      color: color,\n      style: styles.color,\n      onClick: onClick,\n      onHover: onSwatchHover,\n      focusStyle: { boxShadow: '0 0 4px ' + color }\n    },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.check },\n      external_react_default.a.createElement(CheckIcon_default.a, null)\n    )\n  );\n};\n\n/* harmony default export */ var swatches_SwatchesColor = (SwatchesColor_SwatchesColor);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/swatches/SwatchesGroup.js\n\n\n\n\n\n\nvar SwatchesGroup_SwatchesGroup = function SwatchesGroup(_ref) {\n  var onClick = _ref.onClick,\n      onSwatchHover = _ref.onSwatchHover,\n      group = _ref.group,\n      active = _ref.active;\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      group: {\n        paddingBottom: '10px',\n        width: '40px',\n        float: 'left',\n        marginRight: '10px'\n      }\n    }\n  });\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.group },\n    lodash_es_map(group, function (color, i) {\n      return external_react_default.a.createElement(swatches_SwatchesColor, {\n        key: color,\n        color: color,\n        active: color.toLowerCase() === active,\n        first: i === 0,\n        last: i === group.length - 1,\n        onClick: onClick,\n        onSwatchHover: onSwatchHover\n      });\n    })\n  );\n};\n\n/* harmony default export */ var swatches_SwatchesGroup = (SwatchesGroup_SwatchesGroup);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/swatches/Swatches.js\n\n\n\n\n\n\n\n\n\n\nvar Swatches_Swatches = function Swatches(_ref) {\n  var width = _ref.width,\n      height = _ref.height,\n      onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      colors = _ref.colors,\n      hex = _ref.hex,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      picker: {\n        width: width,\n        height: height\n      },\n      overflow: {\n        height: height,\n        overflowY: 'scroll'\n      },\n      body: {\n        padding: '16px 0 6px 16px'\n      },\n      clear: {\n        clear: 'both'\n      }\n    }\n  }, passedStyles));\n\n  var handleChange = function handleChange(data, e) {\n    return onChange({ hex: data, source: 'hex' }, e);\n  };\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.picker, className: 'swatches-picker ' + className },\n    external_react_default.a.createElement(\n      common_Raised,\n      null,\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.overflow },\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.body },\n          lodash_es_map(colors, function (group) {\n            return external_react_default.a.createElement(swatches_SwatchesGroup, {\n              key: group.toString(),\n              group: group,\n              active: hex,\n              onClick: handleChange,\n              onSwatchHover: onSwatchHover\n            });\n          }),\n          external_react_default.a.createElement('div', { style: styles.clear })\n        )\n      )\n    )\n  );\n};\n\nSwatches_Swatches.propTypes = {\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  height: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  colors: prop_types_default.a.arrayOf(prop_types_default.a.arrayOf(prop_types_default.a.string)),\n  styles: prop_types_default.a.object\n\n  /* eslint-disable max-len */\n};Swatches_Swatches.defaultProps = {\n  width: 320,\n  height: 240,\n  colors: [[colors_es2015_red['900'], colors_es2015_red['700'], colors_es2015_red['500'], colors_es2015_red['300'], colors_es2015_red['100']], [pink['900'], pink['700'], pink['500'], pink['300'], pink['100']], [purple['900'], purple['700'], purple['500'], purple['300'], purple['100']], [deepPurple['900'], deepPurple['700'], deepPurple['500'], deepPurple['300'], deepPurple['100']], [indigo['900'], indigo['700'], indigo['500'], indigo['300'], indigo['100']], [blue['900'], blue['700'], blue['500'], blue['300'], blue['100']], [lightBlue['900'], lightBlue['700'], lightBlue['500'], lightBlue['300'], lightBlue['100']], [cyan['900'], cyan['700'], cyan['500'], cyan['300'], cyan['100']], [teal['900'], teal['700'], teal['500'], teal['300'], teal['100']], ['#194D33', green['700'], green['500'], green['300'], green['100']], [lightGreen['900'], lightGreen['700'], lightGreen['500'], lightGreen['300'], lightGreen['100']], [lime['900'], lime['700'], lime['500'], lime['300'], lime['100']], [yellow['900'], yellow['700'], yellow['500'], yellow['300'], yellow['100']], [amber['900'], amber['700'], amber['500'], amber['300'], amber['100']], [orange['900'], orange['700'], orange['500'], orange['300'], orange['100']], [deepOrange['900'], deepOrange['700'], deepOrange['500'], deepOrange['300'], deepOrange['100']], [brown['900'], brown['700'], brown['500'], brown['300'], brown['100']], [blueGrey['900'], blueGrey['700'], blueGrey['500'], blueGrey['300'], blueGrey['100']], ['#000000', '#525252', '#969696', '#D9D9D9', '#FFFFFF']],\n  styles: {}\n};\n\n/* harmony default export */ var swatches_Swatches = (common_ColorWrap(Swatches_Swatches));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/twitter/Twitter.js\n\n\n\n\n\n\n\n\n\nvar Twitter_Twitter = function Twitter(_ref) {\n  var onChange = _ref.onChange,\n      onSwatchHover = _ref.onSwatchHover,\n      hex = _ref.hex,\n      colors = _ref.colors,\n      width = _ref.width,\n      triangle = _ref.triangle,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      card: {\n        width: width,\n        background: '#fff',\n        border: '0 solid rgba(0,0,0,0.25)',\n        boxShadow: '0 1px 4px rgba(0,0,0,0.25)',\n        borderRadius: '4px',\n        position: 'relative'\n      },\n      body: {\n        padding: '15px 9px 9px 15px'\n      },\n      label: {\n        fontSize: '18px',\n        color: '#fff'\n      },\n      triangle: {\n        width: '0px',\n        height: '0px',\n        borderStyle: 'solid',\n        borderWidth: '0 9px 10px 9px',\n        borderColor: 'transparent transparent #fff transparent',\n        position: 'absolute'\n      },\n      triangleShadow: {\n        width: '0px',\n        height: '0px',\n        borderStyle: 'solid',\n        borderWidth: '0 9px 10px 9px',\n        borderColor: 'transparent transparent rgba(0,0,0,.1) transparent',\n        position: 'absolute'\n      },\n      hash: {\n        background: '#F0F0F0',\n        height: '30px',\n        width: '30px',\n        borderRadius: '4px 0 0 4px',\n        float: 'left',\n        color: '#98A1A4',\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'center'\n      },\n      input: {\n        width: '100px',\n        fontSize: '14px',\n        color: '#666',\n        border: '0px',\n        outline: 'none',\n        height: '28px',\n        boxShadow: 'inset 0 0 0 1px #F0F0F0',\n        boxSizing: 'content-box',\n        borderRadius: '0 4px 4px 0',\n        float: 'left',\n        paddingLeft: '8px'\n      },\n      swatch: {\n        width: '30px',\n        height: '30px',\n        float: 'left',\n        borderRadius: '4px',\n        margin: '0 6px 6px 0'\n      },\n      clear: {\n        clear: 'both'\n      }\n    },\n    'hide-triangle': {\n      triangle: {\n        display: 'none'\n      },\n      triangleShadow: {\n        display: 'none'\n      }\n    },\n    'top-left-triangle': {\n      triangle: {\n        top: '-10px',\n        left: '12px'\n      },\n      triangleShadow: {\n        top: '-11px',\n        left: '12px'\n      }\n    },\n    'top-right-triangle': {\n      triangle: {\n        top: '-10px',\n        right: '12px'\n      },\n      triangleShadow: {\n        top: '-11px',\n        right: '12px'\n      }\n    }\n  }, passedStyles), {\n    'hide-triangle': triangle === 'hide',\n    'top-left-triangle': triangle === 'top-left',\n    'top-right-triangle': triangle === 'top-right'\n  });\n\n  var handleChange = function handleChange(hexcode, e) {\n    color_isValidHex(hexcode) && onChange({\n      hex: hexcode,\n      source: 'hex'\n    }, e);\n  };\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.card, className: 'twitter-picker ' + className },\n    external_react_default.a.createElement('div', { style: styles.triangleShadow }),\n    external_react_default.a.createElement('div', { style: styles.triangle }),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.body },\n      lodash_es_map(colors, function (c, i) {\n        return external_react_default.a.createElement(common_Swatch, {\n          key: i,\n          color: c,\n          hex: c,\n          style: styles.swatch,\n          onClick: handleChange,\n          onHover: onSwatchHover,\n          focusStyle: {\n            boxShadow: '0 0 4px ' + c\n          }\n        });\n      }),\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.hash },\n        '#'\n      ),\n      external_react_default.a.createElement(common_EditableInput, {\n        label: null,\n        style: { input: styles.input },\n        value: hex.replace('#', ''),\n        onChange: handleChange\n      }),\n      external_react_default.a.createElement('div', { style: styles.clear })\n    )\n  );\n};\n\nTwitter_Twitter.propTypes = {\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  triangle: prop_types_default.a.oneOf(['hide', 'top-left', 'top-right']),\n  colors: prop_types_default.a.arrayOf(prop_types_default.a.string),\n  styles: prop_types_default.a.object\n};\n\nTwitter_Twitter.defaultProps = {\n  width: 276,\n  colors: ['#FF6900', '#FCB900', '#7BDCB5', '#00D084', '#8ED1FC', '#0693E3', '#ABB8C3', '#EB144C', '#F78DA7', '#9900EF'],\n  triangle: 'top-left',\n  styles: {}\n};\n\n/* harmony default export */ var twitter_Twitter = (common_ColorWrap(Twitter_Twitter));\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/google/GooglePointerCircle.js\n\n\n\n\nvar GooglePointerCircle_GooglePointerCircle = function GooglePointerCircle(props) {\n  var styles = reactcss_lib_default()({\n    'default': {\n      picker: {\n        width: '20px',\n        height: '20px',\n        borderRadius: '22px',\n        border: '2px #fff solid',\n        transform: 'translate(-12px, -13px)',\n        background: 'hsl(' + Math.round(props.hsl.h) + ', ' + Math.round(props.hsl.s * 100) + '%, ' + Math.round(props.hsl.l * 100) + '%)'\n      }\n    }\n  });\n\n  return external_react_default.a.createElement('div', { style: styles.picker });\n};\n\nGooglePointerCircle_GooglePointerCircle.propTypes = {\n  hsl: prop_types_default.a.shape({\n    h: prop_types_default.a.number,\n    s: prop_types_default.a.number,\n    l: prop_types_default.a.number,\n    a: prop_types_default.a.number\n  })\n};\n\nGooglePointerCircle_GooglePointerCircle.defaultProps = {\n  hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\n/* harmony default export */ var google_GooglePointerCircle = (GooglePointerCircle_GooglePointerCircle);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/google/GooglePointer.js\n\n\n\n\nvar GooglePointer_GooglePointer = function GooglePointer(props) {\n  var styles = reactcss_lib_default()({\n    'default': {\n      picker: {\n        width: '20px',\n        height: '20px',\n        borderRadius: '22px',\n        transform: 'translate(-10px, -7px)',\n        background: 'hsl(' + Math.round(props.hsl.h) + ', 100%, 50%)',\n        border: '2px white solid'\n      }\n    }\n  });\n\n  return external_react_default.a.createElement('div', { style: styles.picker });\n};\n\nGooglePointer_GooglePointer.propTypes = {\n  hsl: prop_types_default.a.shape({\n    h: prop_types_default.a.number,\n    s: prop_types_default.a.number,\n    l: prop_types_default.a.number,\n    a: prop_types_default.a.number\n  })\n};\n\nGooglePointer_GooglePointer.defaultProps = {\n  hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\n/* harmony default export */ var google_GooglePointer = (GooglePointer_GooglePointer);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/google/GoogleFields.js\n\n\n\n\n\nvar GoogleFields_GoogleFields = function GoogleFields(_ref) {\n  var onChange = _ref.onChange,\n      rgb = _ref.rgb,\n      hsl = _ref.hsl,\n      hex = _ref.hex,\n      hsv = _ref.hsv;\n\n\n  var handleChange = function handleChange(data, e) {\n    if (data.hex) {\n      color_isValidHex(data.hex) && onChange({\n        hex: data.hex,\n        source: 'hex'\n      }, e);\n    } else if (data.rgb) {\n      var values = data.rgb.split(',');\n      color_isvalidColorString(data.rgb, 'rgb') && onChange({\n        r: values[0],\n        g: values[1],\n        b: values[2],\n        a: 1,\n        source: 'rgb'\n      }, e);\n    } else if (data.hsv) {\n      var _values = data.hsv.split(',');\n      if (color_isvalidColorString(data.hsv, 'hsv')) {\n        _values[2] = _values[2].replace('%', '');\n        _values[1] = _values[1].replace('%', '');\n        _values[0] = _values[0].replace('°', '');\n        if (_values[1] == 1) {\n          _values[1] = 0.01;\n        } else if (_values[2] == 1) {\n          _values[2] = 0.01;\n        }\n        onChange({\n          h: Number(_values[0]),\n          s: Number(_values[1]),\n          v: Number(_values[2]),\n          source: 'hsv'\n        }, e);\n      }\n    } else if (data.hsl) {\n      var _values2 = data.hsl.split(',');\n      if (color_isvalidColorString(data.hsl, 'hsl')) {\n        _values2[2] = _values2[2].replace('%', '');\n        _values2[1] = _values2[1].replace('%', '');\n        _values2[0] = _values2[0].replace('°', '');\n        if (hsvValue[1] == 1) {\n          hsvValue[1] = 0.01;\n        } else if (hsvValue[2] == 1) {\n          hsvValue[2] = 0.01;\n        }\n        onChange({\n          h: Number(_values2[0]),\n          s: Number(_values2[1]),\n          v: Number(_values2[2]),\n          source: 'hsl'\n        }, e);\n      }\n    }\n  };\n\n  var styles = reactcss_lib_default()({\n    'default': {\n      wrap: {\n        display: 'flex',\n        height: '100px',\n        marginTop: '4px'\n      },\n      fields: {\n        width: '100%'\n      },\n      column: {\n        paddingTop: '10px',\n        display: 'flex',\n        justifyContent: 'space-between'\n      },\n      double: {\n        padding: '0px 4.4px',\n        boxSizing: 'border-box'\n      },\n      input: {\n        width: '100%',\n        height: '38px',\n        boxSizing: 'border-box',\n        padding: '4px 10% 3px',\n        textAlign: 'center',\n        border: '1px solid #dadce0',\n        fontSize: '11px',\n        textTransform: 'lowercase',\n        borderRadius: '5px',\n        outline: 'none',\n        fontFamily: 'Roboto,Arial,sans-serif'\n      },\n      input2: {\n        height: '38px',\n        width: '100%',\n        border: '1px solid #dadce0',\n        boxSizing: 'border-box',\n        fontSize: '11px',\n        textTransform: 'lowercase',\n        borderRadius: '5px',\n        outline: 'none',\n        paddingLeft: '10px',\n        fontFamily: 'Roboto,Arial,sans-serif'\n      },\n      label: {\n        textAlign: 'center',\n        fontSize: '12px',\n        background: '#fff',\n        position: 'absolute',\n        textTransform: 'uppercase',\n        color: '#3c4043',\n        width: '35px',\n        top: '-6px',\n        left: '0',\n        right: '0',\n        marginLeft: 'auto',\n        marginRight: 'auto',\n        fontFamily: 'Roboto,Arial,sans-serif'\n      },\n      label2: {\n        left: '10px',\n        textAlign: 'center',\n        fontSize: '12px',\n        background: '#fff',\n        position: 'absolute',\n        textTransform: 'uppercase',\n        color: '#3c4043',\n        width: '32px',\n        top: '-6px',\n        fontFamily: 'Roboto,Arial,sans-serif'\n      },\n      single: {\n        flexGrow: '1',\n        margin: '0px 4.4px'\n      }\n    }\n  });\n\n  var rgbValue = rgb.r + ', ' + rgb.g + ', ' + rgb.b;\n  var hslValue = Math.round(hsl.h) + '\\xB0, ' + Math.round(hsl.s * 100) + '%, ' + Math.round(hsl.l * 100) + '%';\n  var hsvValue = Math.round(hsv.h) + '\\xB0, ' + Math.round(hsv.s * 100) + '%, ' + Math.round(hsv.v * 100) + '%';\n\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.wrap, className: 'flexbox-fix' },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.fields },\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.double },\n        external_react_default.a.createElement(common_EditableInput, {\n          style: { input: styles.input, label: styles.label },\n          label: 'hex',\n          value: hex,\n          onChange: handleChange\n        })\n      ),\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.column },\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.single },\n          external_react_default.a.createElement(common_EditableInput, {\n            style: { input: styles.input2, label: styles.label2 },\n            label: 'rgb',\n            value: rgbValue,\n            onChange: handleChange\n          })\n        ),\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.single },\n          external_react_default.a.createElement(common_EditableInput, {\n            style: { input: styles.input2, label: styles.label2 },\n            label: 'hsv',\n            value: hsvValue,\n            onChange: handleChange\n          })\n        ),\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.single },\n          external_react_default.a.createElement(common_EditableInput, {\n            style: { input: styles.input2, label: styles.label2 },\n            label: 'hsl',\n            value: hslValue,\n            onChange: handleChange\n          })\n        )\n      )\n    )\n  );\n};\n\n/* harmony default export */ var google_GoogleFields = (GoogleFields_GoogleFields);\n// CONCATENATED MODULE: ./node_modules/react-color/es/components/google/Google.js\n\n\n\n\n\n\n\n\n\n\nvar Google_Google = function Google(_ref) {\n  var width = _ref.width,\n      onChange = _ref.onChange,\n      rgb = _ref.rgb,\n      hsl = _ref.hsl,\n      hsv = _ref.hsv,\n      hex = _ref.hex,\n      header = _ref.header,\n      _ref$styles = _ref.styles,\n      passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n      _ref$className = _ref.className,\n      className = _ref$className === undefined ? '' : _ref$className;\n\n  var styles = reactcss_lib_default()(lodash_es_merge({\n    'default': {\n      picker: {\n        width: width,\n        background: '#fff',\n        border: '1px solid #dfe1e5',\n        boxSizing: 'initial',\n        display: 'flex',\n        flexWrap: 'wrap',\n        borderRadius: '8px 8px 0px 0px'\n      },\n      head: {\n        height: '57px',\n        width: '100%',\n        paddingTop: '16px',\n        paddingBottom: '16px',\n        paddingLeft: '16px',\n        fontSize: '20px',\n        boxSizing: 'border-box',\n        fontFamily: 'Roboto-Regular,HelveticaNeue,Arial,sans-serif'\n      },\n      saturation: {\n        width: '70%',\n        padding: '0px',\n        position: 'relative',\n        overflow: 'hidden'\n      },\n      swatch: {\n        width: '30%',\n        height: '228px',\n        padding: '0px',\n        background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', 1)',\n        position: 'relative',\n        overflow: 'hidden'\n      },\n      body: {\n        margin: 'auto',\n        width: '95%'\n      },\n      controls: {\n        display: 'flex',\n        boxSizing: 'border-box',\n        height: '52px',\n        paddingTop: '22px'\n      },\n      color: {\n        width: '32px'\n      },\n      hue: {\n        height: '8px',\n        position: 'relative',\n        margin: '0px 16px 0px 16px',\n        width: '100%'\n      },\n      Hue: {\n        radius: '2px'\n      }\n    }\n  }, passedStyles));\n  return external_react_default.a.createElement(\n    'div',\n    { style: styles.picker, className: 'google-picker ' + className },\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.head },\n      header\n    ),\n    external_react_default.a.createElement('div', { style: styles.swatch }),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.saturation },\n      external_react_default.a.createElement(common_Saturation, {\n        hsl: hsl,\n        hsv: hsv,\n        pointer: google_GooglePointerCircle,\n        onChange: onChange\n      })\n    ),\n    external_react_default.a.createElement(\n      'div',\n      { style: styles.body },\n      external_react_default.a.createElement(\n        'div',\n        { style: styles.controls, className: 'flexbox-fix' },\n        external_react_default.a.createElement(\n          'div',\n          { style: styles.hue },\n          external_react_default.a.createElement(common_Hue, {\n            style: styles.Hue,\n            hsl: hsl,\n            radius: '4px',\n            pointer: google_GooglePointer,\n            onChange: onChange\n          })\n        )\n      ),\n      external_react_default.a.createElement(google_GoogleFields, {\n        rgb: rgb,\n        hsl: hsl,\n        hex: hex,\n        hsv: hsv,\n        onChange: onChange\n      })\n    )\n  );\n};\n\nGoogle_Google.propTypes = {\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  styles: prop_types_default.a.object,\n  header: prop_types_default.a.string\n\n};\n\nGoogle_Google.defaultProps = {\n  width: 652,\n  styles: {},\n  header: 'Color picker'\n};\n\n/* harmony default export */ var google_Google = (common_ColorWrap(Google_Google));\n// CONCATENATED MODULE: ./node_modules/react-color/es/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// CONCATENATED MODULE: ./src/components/common/ColorPicker.js\n\n\n\n\n\n\n\n\n\nfunction ColorPicker_createSuper(Derived) { var hasNativeReflectConstruct = ColorPicker_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction ColorPicker_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\nvar ColorPicker_ColorPicker = /*#__PURE__*/function (_Component) {\n  inherits_default()(ColorPicker, _Component);\n\n  var _super = ColorPicker_createSuper(ColorPicker);\n\n  function ColorPicker() {\n    var _this;\n\n    classCallCheck_default()(this, ColorPicker);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.handlers = {\n      onChange: function onChange(color) {\n        var _this$props = _this.props,\n            onChange = _this$props.onChange,\n            valueType = _this$props.valueType;\n        var newColor;\n\n        if (valueType === 'string') {\n          newColor = \"rgba(\".concat(color.rgb.r, \",\").concat(color.rgb.g, \",\").concat(color.rgb.b, \",\").concat(color.rgb.a, \")\");\n        } else {\n          newColor = color.rgb;\n        }\n\n        _this.setState({\n          color: newColor\n        }, function () {\n          onChange(newColor);\n        });\n      }\n    };\n    _this.state = {\n      color: _this.props.value || 'rgba(255, 255, 255, 1)'\n    };\n\n    _this.getBackgroundColor = function (color) {\n      if (typeof color === 'string') {\n        return color;\n      }\n\n      return \"rgba(\".concat(color.r, \",\").concat(color.g, \",\").concat(color.b, \",\").concat(color.a, \")\");\n    };\n\n    return _this;\n  }\n\n  createClass_default()(ColorPicker, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      this.setState({\n        color: nextProps.value || this.state.color\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var color = this.state.color;\n      var onChange = this.handlers.onChange;\n      return /*#__PURE__*/external_react_default.a.createElement(popover_Popover, {\n        trigger: \"click\",\n        placement: \"bottom\",\n        content: /*#__PURE__*/external_react_default.a.createElement(sketch_Sketch, {\n          color: color,\n          onChange: onChange\n        })\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        style: {\n          background: this.getBackgroundColor(color)\n        },\n        shape: \"circle\"\n      }));\n    }\n  }]);\n\n  return ColorPicker;\n}(external_react_[\"Component\"]);\n\nColorPicker_ColorPicker.propTypes = {\n  valueType: prop_types_default.a.oneOf(['string', 'object'])\n};\nColorPicker_ColorPicker.defaultProps = {\n  valueType: 'string'\n};\n/* harmony default export */ var common_ColorPicker = (ColorPicker_ColorPicker);\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/StyleProperty.js\n\n\n\n\n\n\n\n/* harmony default export */ var StyleProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.style.fill-color'),\n      colon: false\n    }, getFieldDecorator('fill', {\n      initialValue: data.fill || 'rgba(0, 0, 0, 1)'\n    })( /*#__PURE__*/external_react_default.a.createElement(common_ColorPicker, null))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.opacity'),\n      colon: false\n    }, getFieldDecorator('opacity', {\n      rules: [{\n        type: 'number',\n        min: 0,\n        max: 1\n      }],\n      initialValue: data.opacity || 1\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      min: 0,\n      max: 1,\n      step: 0.1\n    }))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.style.stroke-color'),\n      colon: false\n    }, getFieldDecorator('stroke', {\n      initialValue: data.stroke || 'rgba(255, 255, 255, 0)'\n    })( /*#__PURE__*/external_react_default.a.createElement(common_ColorPicker, null))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.style.stroke-width'),\n      colon: false\n    }, getFieldDecorator('strokeWidth', {\n      initialValue: data.strokeWidth || 1\n    })( /*#__PURE__*/external_react_default.a.createElement(select_Select, {\n      showSearch: true,\n      style: {\n        width: '100%'\n      }\n    }, Array.from({\n      length: 12\n    }, function (v, k) {\n      var value = k + 1;\n      return /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n        key: value,\n        value: value\n      }, value);\n    })))), data.type === 'rect' ? /*#__PURE__*/external_react_default.a.createElement(es_row, {\n      gutter: 8\n    }, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.style.rx'),\n      colon: false\n    }, getFieldDecorator('rx', {\n      initialValue: data.rx || 0\n    })( /*#__PURE__*/external_react_default.a.createElement(input_number_InputNumber, {\n      min: 0\n    })))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.style.ry'),\n      colon: false\n    }, getFieldDecorator('ry', {\n      initialValue: data.ry || 0\n    })( /*#__PURE__*/external_react_default.a.createElement(input_number_InputNumber, {\n      min: 0\n    }))))) : null);\n  }\n});\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/TooltipProperty.js\n\n\n\n/* harmony default export */ var TooltipProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n\n    if (!data) {\n      return null;\n    }\n\n    return /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.tooltip.tooltip-enabled'),\n      colon: false\n    }, getFieldDecorator('tooltip.enabled', {\n      rules: [{\n        type: 'boolean'\n      }],\n      valuePropName: 'checked',\n      initialValue: data.tooltip.enabled\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, {\n      size: \"small\"\n    })));\n  }\n});\n// CONCATENATED MODULE: ./node_modules/rc-checkbox/es/Checkbox.js\n\n\n\n\n\n\n\n\n\n\nvar Checkbox_Checkbox = function (_Component) {\n  helpers_inherits_default()(Checkbox, _Component);\n\n  function Checkbox(props) {\n    helpers_classCallCheck_default()(this, Checkbox);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, _Component.call(this, props));\n\n    _this.handleChange = function (e) {\n      var _this$props = _this.props,\n          disabled = _this$props.disabled,\n          onChange = _this$props.onChange;\n\n      if (disabled) {\n        return;\n      }\n      if (!('checked' in _this.props)) {\n        _this.setState({\n          checked: e.target.checked\n        });\n      }\n      if (onChange) {\n        onChange({\n          target: extends_default()({}, _this.props, {\n            checked: e.target.checked\n          }),\n          stopPropagation: function stopPropagation() {\n            e.stopPropagation();\n          },\n          preventDefault: function preventDefault() {\n            e.preventDefault();\n          },\n\n          nativeEvent: e.nativeEvent\n        });\n      }\n    };\n\n    _this.saveInput = function (node) {\n      _this.input = node;\n    };\n\n    var checked = 'checked' in props ? props.checked : props.defaultChecked;\n\n    _this.state = {\n      checked: checked\n    };\n    return _this;\n  }\n\n  Checkbox.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n    if ('checked' in props) {\n      return extends_default()({}, state, {\n        checked: props.checked\n      });\n    }\n    return null;\n  };\n\n  Checkbox.prototype.focus = function focus() {\n    this.input.focus();\n  };\n\n  Checkbox.prototype.blur = function blur() {\n    this.input.blur();\n  };\n\n  Checkbox.prototype.render = function render() {\n    var _classNames;\n\n    var _props = this.props,\n        prefixCls = _props.prefixCls,\n        className = _props.className,\n        style = _props.style,\n        name = _props.name,\n        id = _props.id,\n        type = _props.type,\n        disabled = _props.disabled,\n        readOnly = _props.readOnly,\n        tabIndex = _props.tabIndex,\n        onClick = _props.onClick,\n        onFocus = _props.onFocus,\n        onBlur = _props.onBlur,\n        autoFocus = _props.autoFocus,\n        value = _props.value,\n        others = objectWithoutProperties_default()(_props, ['prefixCls', 'className', 'style', 'name', 'id', 'type', 'disabled', 'readOnly', 'tabIndex', 'onClick', 'onFocus', 'onBlur', 'autoFocus', 'value']);\n\n    var globalProps = Object.keys(others).reduce(function (prev, key) {\n      if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') {\n        prev[key] = others[key];\n      }\n      return prev;\n    }, {});\n\n    var checked = this.state.checked;\n\n    var classString = node_modules_classnames_default()(prefixCls, className, (_classNames = {}, _classNames[prefixCls + '-checked'] = checked, _classNames[prefixCls + '-disabled'] = disabled, _classNames));\n\n    return external_react_default.a.createElement(\n      'span',\n      { className: classString, style: style },\n      external_react_default.a.createElement('input', extends_default()({\n        name: name,\n        id: id,\n        type: type,\n        readOnly: readOnly,\n        disabled: disabled,\n        tabIndex: tabIndex,\n        className: prefixCls + '-input',\n        checked: !!checked,\n        onClick: onClick,\n        onFocus: onFocus,\n        onBlur: onBlur,\n        onChange: this.handleChange,\n        autoFocus: autoFocus,\n        ref: this.saveInput,\n        value: value\n      }, globalProps)),\n      external_react_default.a.createElement('span', { className: prefixCls + '-inner' })\n    );\n  };\n\n  return Checkbox;\n}(external_react_[\"Component\"]);\n\nCheckbox_Checkbox.propTypes = {\n  prefixCls: prop_types_default.a.string,\n  className: prop_types_default.a.string,\n  style: prop_types_default.a.object,\n  name: prop_types_default.a.string,\n  id: prop_types_default.a.string,\n  type: prop_types_default.a.string,\n  defaultChecked: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.bool]),\n  checked: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.bool]),\n  disabled: prop_types_default.a.bool,\n  onFocus: prop_types_default.a.func,\n  onBlur: prop_types_default.a.func,\n  onChange: prop_types_default.a.func,\n  onClick: prop_types_default.a.func,\n  tabIndex: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  readOnly: prop_types_default.a.bool,\n  autoFocus: prop_types_default.a.bool,\n  value: prop_types_default.a.any\n};\nCheckbox_Checkbox.defaultProps = {\n  prefixCls: 'rc-checkbox',\n  className: '',\n  style: {},\n  type: 'checkbox',\n  defaultChecked: false,\n  onFocus: function onFocus() {},\n  onBlur: function onBlur() {},\n  onChange: function onChange() {}\n};\n\n\nObject(react_lifecycles_compat_es[\"polyfill\"])(Checkbox_Checkbox);\n\n/* harmony default export */ var es_Checkbox = (Checkbox_Checkbox);\n// CONCATENATED MODULE: ./node_modules/rc-checkbox/es/index.js\n\n\n/* harmony default export */ var rc_checkbox_es = (es_Checkbox);\n// CONCATENATED MODULE: ./node_modules/antd/es/radio/radio.js\nfunction radio_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { radio_typeof = function _typeof(obj) { return typeof obj; }; } else { radio_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return radio_typeof(obj); }\n\nfunction radio_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\nfunction radio_extends() { radio_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 radio_extends.apply(this, arguments); }\n\nfunction radio_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction radio_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 radio_createClass(Constructor, protoProps, staticProps) { if (protoProps) radio_defineProperties(Constructor.prototype, protoProps); if (staticProps) radio_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction radio_possibleConstructorReturn(self, call) { if (call && (radio_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return radio_assertThisInitialized(self); }\n\nfunction radio_getPrototypeOf(o) { radio_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return radio_getPrototypeOf(o); }\n\nfunction radio_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction radio_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) radio_setPrototypeOf(subClass, superClass); }\n\nfunction radio_setPrototypeOf(o, p) { radio_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return radio_setPrototypeOf(o, p); }\n\nvar radio_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\nvar radio_Radio =\n/*#__PURE__*/\nfunction (_React$Component) {\n  radio_inherits(Radio, _React$Component);\n\n  function Radio() {\n    var _this;\n\n    radio_classCallCheck(this, Radio);\n\n    _this = radio_possibleConstructorReturn(this, radio_getPrototypeOf(Radio).apply(this, arguments));\n\n    _this.saveCheckbox = function (node) {\n      _this.rcCheckbox = node;\n    };\n\n    _this.onChange = function (e) {\n      if (_this.props.onChange) {\n        _this.props.onChange(e);\n      }\n\n      if (_this.context.radioGroup && _this.context.radioGroup.onChange) {\n        _this.context.radioGroup.onChange(e);\n      }\n    };\n\n    _this.renderRadio = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _assertThisInitialize = radio_assertThisInitialized(_this),\n          props = _assertThisInitialize.props,\n          context = _assertThisInitialize.context;\n\n      var customizePrefixCls = props.prefixCls,\n          className = props.className,\n          children = props.children,\n          style = props.style,\n          restProps = radio_rest(props, [\"prefixCls\", \"className\", \"children\", \"style\"]);\n\n      var radioGroup = context.radioGroup;\n      var prefixCls = getPrefixCls('radio', customizePrefixCls);\n\n      var radioProps = radio_extends({}, restProps);\n\n      if (radioGroup) {\n        radioProps.name = radioGroup.name;\n        radioProps.onChange = _this.onChange;\n        radioProps.checked = props.value === radioGroup.value;\n        radioProps.disabled = props.disabled || radioGroup.disabled;\n      }\n\n      var wrapperClassString = classnames_default()(className, (_classNames = {}, radio_defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper\"), true), radio_defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-checked\"), radioProps.checked), radio_defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-disabled\"), radioProps.disabled), _classNames));\n      return external_react_[\"createElement\"](\"label\", {\n        className: wrapperClassString,\n        style: style,\n        onMouseEnter: props.onMouseEnter,\n        onMouseLeave: props.onMouseLeave\n      }, external_react_[\"createElement\"](rc_checkbox_es, radio_extends({}, radioProps, {\n        prefixCls: prefixCls,\n        ref: _this.saveCheckbox\n      })), children !== undefined ? external_react_[\"createElement\"](\"span\", null, children) : null);\n    };\n\n    return _this;\n  }\n\n  radio_createClass(Radio, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps, nextState, nextContext) {\n      return !shallowequal_default()(this.props, nextProps) || !shallowequal_default()(this.state, nextState) || !shallowequal_default()(this.context.radioGroup, nextContext.radioGroup);\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      this.rcCheckbox.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.rcCheckbox.blur();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderRadio);\n    }\n  }]);\n\n  return Radio;\n}(external_react_[\"Component\"]);\n\n\nradio_Radio.defaultProps = {\n  type: 'radio'\n};\nradio_Radio.contextTypes = {\n  radioGroup: prop_types[\"any\"]\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/radio/group.js\nfunction group_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { group_typeof = function _typeof(obj) { return typeof obj; }; } else { group_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return group_typeof(obj); }\n\nfunction group_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\nfunction group_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction group_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 group_createClass(Constructor, protoProps, staticProps) { if (protoProps) group_defineProperties(Constructor.prototype, protoProps); if (staticProps) group_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction group_possibleConstructorReturn(self, call) { if (call && (group_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return group_assertThisInitialized(self); }\n\nfunction group_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction group_getPrototypeOf(o) { group_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return group_getPrototypeOf(o); }\n\nfunction group_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) group_setPrototypeOf(subClass, superClass); }\n\nfunction group_setPrototypeOf(o, p) { group_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return group_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\nfunction getCheckedValue(children) {\n  var value = null;\n  var matched = false;\n  external_react_[\"Children\"].forEach(children, function (radio) {\n    if (radio && radio.props && radio.props.checked) {\n      value = radio.props.value;\n      matched = true;\n    }\n  });\n  return matched ? {\n    value: value\n  } : undefined;\n}\n\nvar group_RadioGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  group_inherits(RadioGroup, _React$Component);\n\n  function RadioGroup(props) {\n    var _this;\n\n    group_classCallCheck(this, RadioGroup);\n\n    _this = group_possibleConstructorReturn(this, group_getPrototypeOf(RadioGroup).call(this, props));\n\n    _this.onRadioChange = function (ev) {\n      var lastValue = _this.state.value;\n      var value = ev.target.value;\n\n      if (!('value' in _this.props)) {\n        _this.setState({\n          value: value\n        });\n      }\n\n      var onChange = _this.props.onChange;\n\n      if (onChange && value !== lastValue) {\n        onChange(ev);\n      }\n    };\n\n    _this.renderGroup = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n      var props = _this.props;\n      var customizePrefixCls = props.prefixCls,\n          _props$className = props.className,\n          className = _props$className === void 0 ? '' : _props$className,\n          options = props.options,\n          buttonStyle = props.buttonStyle;\n      var prefixCls = getPrefixCls('radio', customizePrefixCls);\n      var groupPrefixCls = \"\".concat(prefixCls, \"-group\");\n      var classString = classnames_default()(groupPrefixCls, \"\".concat(groupPrefixCls, \"-\").concat(buttonStyle), group_defineProperty({}, \"\".concat(groupPrefixCls, \"-\").concat(props.size), props.size), className);\n      var children = props.children; // 如果存在 options, 优先使用\n\n      if (options && options.length > 0) {\n        children = options.map(function (option, index) {\n          if (typeof option === 'string') {\n            // 此处类型自动推导为 string\n            return external_react_[\"createElement\"](radio_Radio, {\n              key: index,\n              prefixCls: prefixCls,\n              disabled: _this.props.disabled,\n              value: option,\n              checked: _this.state.value === option\n            }, option);\n          } else {\n            // 此处类型自动推导为 { label: string value: string }\n            return external_react_[\"createElement\"](radio_Radio, {\n              key: index,\n              prefixCls: prefixCls,\n              disabled: option.disabled || _this.props.disabled,\n              value: option.value,\n              checked: _this.state.value === option.value\n            }, option.label);\n          }\n        });\n      }\n\n      return external_react_[\"createElement\"](\"div\", {\n        className: classString,\n        style: props.style,\n        onMouseEnter: props.onMouseEnter,\n        onMouseLeave: props.onMouseLeave,\n        id: props.id\n      }, children);\n    };\n\n    var value;\n\n    if ('value' in props) {\n      value = props.value;\n    } else if ('defaultValue' in props) {\n      value = props.defaultValue;\n    } else {\n      var checkedValue = getCheckedValue(props.children);\n      value = checkedValue && checkedValue.value;\n    }\n\n    _this.state = {\n      value: value\n    };\n    return _this;\n  }\n\n  group_createClass(RadioGroup, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      return {\n        radioGroup: {\n          onChange: this.onRadioChange,\n          value: this.state.value,\n          disabled: this.props.disabled,\n          name: this.props.name\n        }\n      };\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps, nextState) {\n      return !shallowequal_default()(this.props, nextProps) || !shallowequal_default()(this.state, nextState);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderGroup);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      if ('value' in nextProps) {\n        return {\n          value: nextProps.value\n        };\n      } else {\n        var checkedValue = getCheckedValue(nextProps.children);\n\n        if (checkedValue) {\n          return {\n            value: checkedValue.value\n          };\n        }\n      }\n\n      return null;\n    }\n  }]);\n\n  return RadioGroup;\n}(external_react_[\"Component\"]);\n\ngroup_RadioGroup.defaultProps = {\n  disabled: false,\n  buttonStyle: 'outline'\n};\ngroup_RadioGroup.childContextTypes = {\n  radioGroup: prop_types[\"any\"]\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(group_RadioGroup);\n/* harmony default export */ var radio_group = (group_RadioGroup);\n// CONCATENATED MODULE: ./node_modules/antd/es/radio/radioButton.js\nfunction radioButton_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { radioButton_typeof = function _typeof(obj) { return typeof obj; }; } else { radioButton_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return radioButton_typeof(obj); }\n\nfunction radioButton_extends() { radioButton_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 radioButton_extends.apply(this, arguments); }\n\nfunction radioButton_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction radioButton_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 radioButton_createClass(Constructor, protoProps, staticProps) { if (protoProps) radioButton_defineProperties(Constructor.prototype, protoProps); if (staticProps) radioButton_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction radioButton_possibleConstructorReturn(self, call) { if (call && (radioButton_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return radioButton_assertThisInitialized(self); }\n\nfunction radioButton_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction radioButton_getPrototypeOf(o) { radioButton_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return radioButton_getPrototypeOf(o); }\n\nfunction radioButton_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) radioButton_setPrototypeOf(subClass, superClass); }\n\nfunction radioButton_setPrototypeOf(o, p) { radioButton_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return radioButton_setPrototypeOf(o, p); }\n\nvar radioButton_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nvar radioButton_RadioButton =\n/*#__PURE__*/\nfunction (_React$Component) {\n  radioButton_inherits(RadioButton, _React$Component);\n\n  function RadioButton() {\n    var _this;\n\n    radioButton_classCallCheck(this, RadioButton);\n\n    _this = radioButton_possibleConstructorReturn(this, radioButton_getPrototypeOf(RadioButton).apply(this, arguments));\n\n    _this.renderRadioButton = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          radioProps = radioButton_rest(_a, [\"prefixCls\"]);\n\n      var prefixCls = getPrefixCls('radio-button', customizePrefixCls);\n\n      if (_this.context.radioGroup) {\n        radioProps.checked = _this.props.value === _this.context.radioGroup.value;\n        radioProps.disabled = _this.props.disabled || _this.context.radioGroup.disabled;\n      }\n\n      return external_react_[\"createElement\"](radio_Radio, radioButton_extends({\n        prefixCls: prefixCls\n      }, radioProps));\n    };\n\n    return _this;\n  }\n\n  radioButton_createClass(RadioButton, [{\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderRadioButton);\n    }\n  }]);\n\n  return RadioButton;\n}(external_react_[\"Component\"]);\n\n\nradioButton_RadioButton.contextTypes = {\n  radioGroup: prop_types[\"any\"]\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/radio/index.js\n\n\n\nradio_Radio.Button = radioButton_RadioButton;\nradio_Radio.Group = radio_group;\n\n/* harmony default export */ var es_radio = (radio_Radio);\n// CONCATENATED MODULE: ./src/components/common/UrlModal.js\n\n\n\n\n\n\n\n\n\nfunction UrlModal_createSuper(Derived) { var hasNativeReflectConstruct = UrlModal_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction UrlModal_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\nvar UrlModal_UrlModal = /*#__PURE__*/function (_Component) {\n  inherits_default()(UrlModal, _Component);\n\n  var _super = UrlModal_createSuper(UrlModal);\n\n  function UrlModal() {\n    var _this;\n\n    classCallCheck_default()(this, UrlModal);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.handlers = {\n      onOk: function onOk() {\n        var onChange = _this.props.onChange;\n        var tempUrl = _this.state.tempUrl;\n        onChange(tempUrl);\n\n        _this.setState({\n          visible: false,\n          url: tempUrl\n        });\n      },\n      onCancel: function onCancel() {\n        _this.modalHandlers.onHide();\n      },\n      onClick: function onClick() {\n        _this.modalHandlers.onShow();\n      }\n    };\n    _this.modalHandlers = {\n      onShow: function onShow() {\n        _this.setState({\n          visible: true\n        });\n      },\n      onHide: function onHide() {\n        _this.setState({\n          visible: false\n        });\n      }\n    };\n    _this.state = {\n      url: _this.props.value || '',\n      tempUrl: '',\n      visible: false\n    };\n    return _this;\n  }\n\n  createClass_default()(UrlModal, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      this.setState({\n        url: nextProps.value || ''\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$handlers = this.handlers,\n          onOk = _this$handlers.onOk,\n          onCancel = _this$handlers.onCancel,\n          onClick = _this$handlers.onClick;\n      var form = this.props.form;\n      var getFieldDecorator = form.getFieldDecorator;\n      var _this$state = this.state,\n          url = _this$state.url,\n          visible = _this$state.visible;\n      var label = /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        style: {\n          marginRight: 8\n        }\n      }, esm_i18next.t('common.url')), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        onClick: onClick,\n        shape: \"circle\",\n        className: \"rde-action-btn\"\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"edit\"\n      })));\n      return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: label,\n        colon: false\n      }, getFieldDecorator('url', {\n        rules: [{\n          required: true,\n          message: esm_i18next.t('validation.enter-property', {\n            arg: esm_i18next.t('common.url')\n          })\n        }],\n        initialValue: url || ''\n      })( /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        style: {\n          wordBreak: 'break-all'\n        }\n      }, url))), /*#__PURE__*/external_react_default.a.createElement(modal, {\n        onCancel: onCancel,\n        onOk: onOk,\n        visible: visible\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('common.url'),\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(es_input, {\n        defaultValue: url,\n        onChange: function onChange(e) {\n          _this2.setState({\n            tempUrl: e.target.value\n          });\n        }\n      }))));\n    }\n  }]);\n\n  return UrlModal;\n}(external_react_[\"Component\"]);\n\nUrlModal_UrlModal.propTypes = {\n  value: prop_types_default.a.any,\n  onChange: prop_types_default.a.func,\n  form: prop_types_default.a.any\n};\n/* harmony default export */ var common_UrlModal = (UrlModal_UrlModal);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.index-of.js\nvar es_array_index_of = __webpack_require__(489);\n\n// CONCATENATED MODULE: ./node_modules/rc-upload/es/request.js\nfunction getError(option, xhr) {\n  var msg = 'cannot post ' + option.action + ' ' + xhr.status + '\\'';\n  var err = new Error(msg);\n  err.status = xhr.status;\n  err.method = 'post';\n  err.url = option.action;\n  return err;\n}\n\nfunction getBody(xhr) {\n  var text = xhr.responseText || xhr.response;\n  if (!text) {\n    return text;\n  }\n\n  try {\n    return JSON.parse(text);\n  } catch (e) {\n    return text;\n  }\n}\n\n// option {\n//  onProgress: (event: { percent: number }): void,\n//  onError: (event: Error, body?: Object): void,\n//  onSuccess: (body: Object): void,\n//  data: Object,\n//  filename: String,\n//  file: File,\n//  withCredentials: Boolean,\n//  action: String,\n//  headers: Object,\n// }\nfunction upload(option) {\n  var xhr = new XMLHttpRequest();\n\n  if (option.onProgress && xhr.upload) {\n    xhr.upload.onprogress = function progress(e) {\n      if (e.total > 0) {\n        e.percent = e.loaded / e.total * 100;\n      }\n      option.onProgress(e);\n    };\n  }\n\n  var formData = new FormData();\n\n  if (option.data) {\n    Object.keys(option.data).map(function (key) {\n      formData.append(key, option.data[key]);\n    });\n  }\n\n  formData.append(option.filename, option.file);\n\n  xhr.onerror = function error(e) {\n    option.onError(e);\n  };\n\n  xhr.onload = function onload() {\n    // allow success when 2xx status\n    // see https://github.com/react-component/upload/issues/34\n    if (xhr.status < 200 || xhr.status >= 300) {\n      return option.onError(getError(option, xhr), getBody(xhr));\n    }\n\n    option.onSuccess(getBody(xhr), xhr);\n  };\n\n  xhr.open('post', option.action, true);\n\n  // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n  if (option.withCredentials && 'withCredentials' in xhr) {\n    xhr.withCredentials = true;\n  }\n\n  var headers = option.headers || {};\n\n  // when set headers['X-Requested-With'] = null , can close default XHR header\n  // see https://github.com/react-component/upload/issues/33\n  if (headers['X-Requested-With'] !== null) {\n    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n  }\n\n  for (var h in headers) {\n    if (headers.hasOwnProperty(h) && headers[h] !== null) {\n      xhr.setRequestHeader(h, headers[h]);\n    }\n  }\n  xhr.send(formData);\n\n  return {\n    abort: function abort() {\n      xhr.abort();\n    }\n  };\n}\n// CONCATENATED MODULE: ./node_modules/rc-upload/es/uid.js\nvar uid_now = +new Date();\nvar uid_index = 0;\n\nfunction uid_uid() {\n  return \"rc-upload-\" + uid_now + \"-\" + ++uid_index;\n}\n// CONCATENATED MODULE: ./node_modules/rc-upload/es/attr-accept.js\nfunction endsWith(str, suffix) {\n  return str.indexOf(suffix, str.length - suffix.length) !== -1;\n}\n\n/* harmony default export */ var attr_accept = (function (file, acceptedFiles) {\n  if (file && acceptedFiles) {\n    var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n    var fileName = file.name || '';\n    var mimeType = file.type || '';\n    var baseMimeType = mimeType.replace(/\\/.*$/, '');\n\n    return acceptedFilesArray.some(function (type) {\n      var validType = type.trim();\n      if (validType.charAt(0) === '.') {\n        return endsWith(fileName.toLowerCase(), validType.toLowerCase());\n      } else if (/\\/\\*$/.test(validType)) {\n        // This is something like a image/* mime type\n        return baseMimeType === validType.replace(/\\/.*$/, '');\n      }\n      return mimeType === validType;\n    });\n  }\n  return true;\n});\n// CONCATENATED MODULE: ./node_modules/rc-upload/es/traverseFileTree.js\nfunction loopFiles(item, callback) {\n  var dirReader = item.createReader();\n  var fileList = [];\n\n  function sequence() {\n    dirReader.readEntries(function (entries) {\n      var entryList = Array.prototype.slice.apply(entries);\n      fileList = fileList.concat(entryList);\n\n      // Check if all the file has been viewed\n      var isFinished = !entryList.length;\n\n      if (isFinished) {\n        callback(fileList);\n      } else {\n        sequence();\n      }\n    });\n  }\n\n  sequence();\n}\n\nvar traverseFileTree = function traverseFileTree(files, callback, isAccepted) {\n  var _traverseFileTree = function _traverseFileTree(item, path) {\n    path = path || '';\n    if (item.isFile) {\n      item.file(function (file) {\n        if (isAccepted(file)) {\n          // https://github.com/ant-design/ant-design/issues/16426\n          if (item.fullPath && !file.webkitRelativePath) {\n            Object.defineProperties(file, {\n              webkitRelativePath: {\n                writable: true\n              }\n            });\n            file.webkitRelativePath = item.fullPath.replace(/^\\//, '');\n            Object.defineProperties(file, {\n              webkitRelativePath: {\n                writable: false\n              }\n            });\n          }\n          callback([file]);\n        }\n      });\n    } else if (item.isDirectory) {\n      loopFiles(item, function (entries) {\n        entries.forEach(function (entryItem) {\n          _traverseFileTree(entryItem, '' + path + item.name + '/');\n        });\n      });\n    }\n  };\n  var _iteratorNormalCompletion = true;\n  var _didIteratorError = false;\n  var _iteratorError = undefined;\n\n  try {\n    for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n      var file = _step.value;\n\n      _traverseFileTree(file.webkitGetAsEntry());\n    }\n  } catch (err) {\n    _didIteratorError = true;\n    _iteratorError = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion && _iterator['return']) {\n        _iterator['return']();\n      }\n    } finally {\n      if (_didIteratorError) {\n        throw _iteratorError;\n      }\n    }\n  }\n};\n\n/* harmony default export */ var es_traverseFileTree = (traverseFileTree);\n// CONCATENATED MODULE: ./node_modules/rc-upload/es/AjaxUploader.js\n\n\n\n\n\n\n/* eslint react/no-is-mounted:0 react/sort-comp:0 */\n\n\n\n\n\n\n\n\n\nvar AjaxUploader_AjaxUploader = function (_Component) {\n  helpers_inherits_default()(AjaxUploader, _Component);\n\n  function AjaxUploader() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, AjaxUploader);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = AjaxUploader.__proto__ || Object.getPrototypeOf(AjaxUploader)).call.apply(_ref, [this].concat(args))), _this), _this.state = { uid: uid_uid() }, _this.reqs = {}, _this.onChange = function (e) {\n      var files = e.target.files;\n      _this.uploadFiles(files);\n      _this.reset();\n    }, _this.onClick = function () {\n      var el = _this.fileInput;\n      if (!el) {\n        return;\n      }\n      el.click();\n    }, _this.onKeyDown = function (e) {\n      if (e.key === 'Enter') {\n        _this.onClick();\n      }\n    }, _this.onFileDrop = function (e) {\n      e.preventDefault();\n\n      if (e.type === 'dragover') {\n        return;\n      }\n\n      if (_this.props.directory) {\n        es_traverseFileTree(e.dataTransfer.items, _this.uploadFiles, function (_file) {\n          return attr_accept(_file, _this.props.accept);\n        });\n      } else {\n        var files = Array.prototype.slice.call(e.dataTransfer.files).filter(function (file) {\n          return attr_accept(file, _this.props.accept);\n        });\n        _this.uploadFiles(files);\n      }\n    }, _this.uploadFiles = function (files) {\n      var postFiles = Array.prototype.slice.call(files);\n      postFiles.map(function (file) {\n        file.uid = uid_uid();\n        return file;\n      }).forEach(function (file) {\n        _this.upload(file, postFiles);\n      });\n    }, _this.saveFileInput = function (node) {\n      _this.fileInput = node;\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(AjaxUploader, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this._isMounted = true;\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this._isMounted = false;\n      this.abort();\n    }\n  }, {\n    key: 'upload',\n    value: function upload(file, fileList) {\n      var _this2 = this;\n\n      var props = this.props;\n\n      if (!props.beforeUpload) {\n        // always async in case use react state to keep fileList\n        return setTimeout(function () {\n          return _this2.post(file);\n        }, 0);\n      }\n\n      var before = props.beforeUpload(file, fileList);\n      if (before && before.then) {\n        before.then(function (processedFile) {\n          var processedFileType = Object.prototype.toString.call(processedFile);\n          if (processedFileType === '[object File]' || processedFileType === '[object Blob]') {\n            return _this2.post(processedFile);\n          }\n          return _this2.post(file);\n        })['catch'](function (e) {\n          console && console.log(e); // eslint-disable-line\n        });\n      } else if (before !== false) {\n        setTimeout(function () {\n          return _this2.post(file);\n        }, 0);\n      }\n    }\n  }, {\n    key: 'post',\n    value: function post(file) {\n      var _this3 = this;\n\n      if (!this._isMounted) {\n        return;\n      }\n      var props = this.props;\n      var data = props.data;\n      var onStart = props.onStart,\n          onProgress = props.onProgress;\n\n      if (typeof data === 'function') {\n        data = data(file);\n      }\n      new Promise(function (resolve) {\n        var action = props.action;\n\n        if (typeof action === 'function') {\n          return resolve(action(file));\n        }\n        resolve(action);\n      }).then(function (action) {\n        var uid = file.uid;\n\n        var request = props.customRequest || upload;\n        _this3.reqs[uid] = request({\n          action: action,\n          filename: props.name,\n          file: file,\n          data: data,\n          headers: props.headers,\n          withCredentials: props.withCredentials,\n          onProgress: onProgress ? function (e) {\n            onProgress(e, file);\n          } : null,\n          onSuccess: function onSuccess(ret, xhr) {\n            delete _this3.reqs[uid];\n            props.onSuccess(ret, file, xhr);\n          },\n          onError: function onError(err, ret) {\n            delete _this3.reqs[uid];\n            props.onError(err, ret, file);\n          }\n        });\n        onStart(file);\n      });\n    }\n  }, {\n    key: 'reset',\n    value: function reset() {\n      this.setState({\n        uid: uid_uid()\n      });\n    }\n  }, {\n    key: 'abort',\n    value: function abort(file) {\n      var reqs = this.reqs;\n\n      if (file) {\n        var uid = file;\n        if (file && file.uid) {\n          uid = file.uid;\n        }\n        if (reqs[uid] && reqs[uid].abort) {\n          reqs[uid].abort();\n        }\n        delete reqs[uid];\n      } else {\n        Object.keys(reqs).forEach(function (uid) {\n          if (reqs[uid] && reqs[uid].abort) {\n            reqs[uid].abort();\n          }\n          delete reqs[uid];\n        });\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _classNames;\n\n      var _props = this.props,\n          Tag = _props.component,\n          prefixCls = _props.prefixCls,\n          className = _props.className,\n          disabled = _props.disabled,\n          id = _props.id,\n          style = _props.style,\n          multiple = _props.multiple,\n          accept = _props.accept,\n          children = _props.children,\n          directory = _props.directory,\n          openFileDialogOnClick = _props.openFileDialogOnClick;\n\n      var cls = node_modules_classnames_default()((_classNames = {}, defineProperty_default()(_classNames, prefixCls, true), defineProperty_default()(_classNames, prefixCls + '-disabled', disabled), defineProperty_default()(_classNames, className, className), _classNames));\n      var events = disabled ? {} : {\n        onClick: openFileDialogOnClick ? this.onClick : function () {},\n        onKeyDown: openFileDialogOnClick ? this.onKeyDown : function () {},\n        onDrop: this.onFileDrop,\n        onDragOver: this.onFileDrop,\n        tabIndex: '0'\n      };\n      return external_react_default.a.createElement(\n        Tag,\n        extends_default()({}, events, {\n          className: cls,\n          role: 'button',\n          style: style\n        }),\n        external_react_default.a.createElement('input', {\n          id: id,\n          type: 'file',\n          ref: this.saveFileInput,\n          key: this.state.uid,\n          style: { display: 'none' },\n          accept: accept,\n          directory: directory ? 'directory' : null,\n          webkitdirectory: directory ? 'webkitdirectory' : null,\n          multiple: multiple,\n          onChange: this.onChange\n        }),\n        children\n      );\n    }\n  }]);\n\n  return AjaxUploader;\n}(external_react_[\"Component\"]);\n\nAjaxUploader_AjaxUploader.propTypes = {\n  id: prop_types_default.a.string,\n  component: prop_types_default.a.string,\n  style: prop_types_default.a.object,\n  prefixCls: prop_types_default.a.string,\n  className: prop_types_default.a.string,\n  multiple: prop_types_default.a.bool,\n  directory: prop_types_default.a.bool,\n  disabled: prop_types_default.a.bool,\n  accept: prop_types_default.a.string,\n  children: prop_types_default.a.any,\n  onStart: prop_types_default.a.func,\n  data: prop_types_default.a.oneOfType([prop_types_default.a.object, prop_types_default.a.func]),\n  action: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.func]),\n  headers: prop_types_default.a.object,\n  beforeUpload: prop_types_default.a.func,\n  customRequest: prop_types_default.a.func,\n  onProgress: prop_types_default.a.func,\n  withCredentials: prop_types_default.a.bool,\n  openFileDialogOnClick: prop_types_default.a.bool\n};\n\n\n/* harmony default export */ var es_AjaxUploader = (AjaxUploader_AjaxUploader);\n// CONCATENATED MODULE: ./node_modules/rc-upload/es/IframeUploader.js\n\n\n\n\n\n\n/* eslint react/sort-comp:0 */\n\n\n\n\n\n\n\nvar IFRAME_STYLE = {\n  position: 'absolute',\n  top: 0,\n  opacity: 0,\n  filter: 'alpha(opacity=0)',\n  left: 0,\n  zIndex: 9999\n};\n\n// diferent from AjaxUpload, can only upload on at one time, serial seriously\n\nvar IframeUploader_IframeUploader = function (_Component) {\n  helpers_inherits_default()(IframeUploader, _Component);\n\n  function IframeUploader() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, IframeUploader);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = IframeUploader.__proto__ || Object.getPrototypeOf(IframeUploader)).call.apply(_ref, [this].concat(args))), _this), _this.state = { uploading: false }, _this.file = {}, _this.onLoad = function () {\n      if (!_this.state.uploading) {\n        return;\n      }\n      var _this2 = _this,\n          props = _this2.props,\n          file = _this2.file;\n\n      var response = void 0;\n      try {\n        var doc = _this.getIframeDocument();\n        var script = doc.getElementsByTagName('script')[0];\n        if (script && script.parentNode === doc.body) {\n          doc.body.removeChild(script);\n        }\n        response = doc.body.innerHTML;\n        props.onSuccess(response, file);\n      } catch (err) {\n        warning_default()(false, 'cross domain error for Upload. Maybe server should return document.domain script. see Note from https://github.com/react-component/upload');\n        response = 'cross-domain';\n        props.onError(err, null, file);\n      }\n      _this.endUpload();\n    }, _this.onChange = function () {\n      var target = _this.getFormInputNode();\n      // ie8/9 don't support FileList Object\n      // http://stackoverflow.com/questions/12830058/ie8-input-type-file-get-files\n      var file = _this.file = {\n        uid: uid_uid(),\n        name: target.value && target.value.substring(target.value.lastIndexOf('\\\\') + 1, target.value.length)\n      };\n      _this.startUpload();\n      var _this3 = _this,\n          props = _this3.props;\n\n      if (!props.beforeUpload) {\n        return _this.post(file);\n      }\n      var before = props.beforeUpload(file);\n      if (before && before.then) {\n        before.then(function () {\n          _this.post(file);\n        }, function () {\n          _this.endUpload();\n        });\n      } else if (before !== false) {\n        _this.post(file);\n      } else {\n        _this.endUpload();\n      }\n    }, _this.saveIframe = function (node) {\n      _this.iframe = node;\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(IframeUploader, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.updateIframeWH();\n      this.initIframe();\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate() {\n      this.updateIframeWH();\n    }\n  }, {\n    key: 'getIframeNode',\n    value: function getIframeNode() {\n      return this.iframe;\n    }\n  }, {\n    key: 'getIframeDocument',\n    value: function getIframeDocument() {\n      return this.getIframeNode().contentDocument;\n    }\n  }, {\n    key: 'getFormNode',\n    value: function getFormNode() {\n      return this.getIframeDocument().getElementById('form');\n    }\n  }, {\n    key: 'getFormInputNode',\n    value: function getFormInputNode() {\n      return this.getIframeDocument().getElementById('input');\n    }\n  }, {\n    key: 'getFormDataNode',\n    value: function getFormDataNode() {\n      return this.getIframeDocument().getElementById('data');\n    }\n  }, {\n    key: 'getFileForMultiple',\n    value: function getFileForMultiple(file) {\n      return this.props.multiple ? [file] : file;\n    }\n  }, {\n    key: 'getIframeHTML',\n    value: function getIframeHTML(domain) {\n      var domainScript = '';\n      var domainInput = '';\n      if (domain) {\n        var script = 'script';\n        domainScript = '<' + script + '>document.domain=\"' + domain + '\";</' + script + '>';\n        domainInput = '<input name=\"_documentDomain\" value=\"' + domain + '\" />';\n      }\n      return '\\n    <!DOCTYPE html>\\n    <html>\\n    <head>\\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\\n    <style>\\n    body,html {padding:0;margin:0;border:0;overflow:hidden;}\\n    </style>\\n    ' + domainScript + '\\n    </head>\\n    <body>\\n    <form method=\"post\"\\n    encType=\"multipart/form-data\"\\n    action=\"\" id=\"form\"\\n    style=\"display:block;height:9999px;position:relative;overflow:hidden;\">\\n    <input id=\"input\" type=\"file\"\\n     name=\"' + this.props.name + '\"\\n     style=\"position:absolute;top:0;right:0;height:9999px;font-size:9999px;cursor:pointer;\"/>\\n    ' + domainInput + '\\n    <span id=\"data\"></span>\\n    </form>\\n    </body>\\n    </html>\\n    ';\n    }\n  }, {\n    key: 'initIframeSrc',\n    value: function initIframeSrc() {\n      if (this.domain) {\n        this.getIframeNode().src = 'javascript:void((function(){\\n        var d = document;\\n        d.open();\\n        d.domain=\\'' + this.domain + '\\';\\n        d.write(\\'\\');\\n        d.close();\\n      })())';\n      }\n    }\n  }, {\n    key: 'initIframe',\n    value: function initIframe() {\n      var iframeNode = this.getIframeNode();\n      var win = iframeNode.contentWindow;\n      var doc = void 0;\n      this.domain = this.domain || '';\n      this.initIframeSrc();\n      try {\n        doc = win.document;\n      } catch (e) {\n        this.domain = document.domain;\n        this.initIframeSrc();\n        win = iframeNode.contentWindow;\n        doc = win.document;\n      }\n      doc.open('text/html', 'replace');\n      doc.write(this.getIframeHTML(this.domain));\n      doc.close();\n      this.getFormInputNode().onchange = this.onChange;\n    }\n  }, {\n    key: 'endUpload',\n    value: function endUpload() {\n      if (this.state.uploading) {\n        this.file = {};\n        // hack avoid batch\n        this.state.uploading = false;\n        this.setState({\n          uploading: false\n        });\n        this.initIframe();\n      }\n    }\n  }, {\n    key: 'startUpload',\n    value: function startUpload() {\n      if (!this.state.uploading) {\n        this.state.uploading = true;\n        this.setState({\n          uploading: true\n        });\n      }\n    }\n  }, {\n    key: 'updateIframeWH',\n    value: function updateIframeWH() {\n      var rootNode = external_react_dom_default.a.findDOMNode(this);\n      var iframeNode = this.getIframeNode();\n      iframeNode.style.height = rootNode.offsetHeight + 'px';\n      iframeNode.style.width = rootNode.offsetWidth + 'px';\n    }\n  }, {\n    key: 'abort',\n    value: function abort(file) {\n      if (file) {\n        var uid = file;\n        if (file && file.uid) {\n          uid = file.uid;\n        }\n        if (uid === this.file.uid) {\n          this.endUpload();\n        }\n      } else {\n        this.endUpload();\n      }\n    }\n  }, {\n    key: 'post',\n    value: function post(file) {\n      var _this4 = this;\n\n      var formNode = this.getFormNode();\n      var dataSpan = this.getFormDataNode();\n      var data = this.props.data;\n      var onStart = this.props.onStart;\n\n      if (typeof data === 'function') {\n        data = data(file);\n      }\n      var inputs = document.createDocumentFragment();\n      for (var key in data) {\n        if (data.hasOwnProperty(key)) {\n          var input = document.createElement('input');\n          input.setAttribute('name', key);\n          input.value = data[key];\n          inputs.appendChild(input);\n        }\n      }\n      dataSpan.appendChild(inputs);\n      new Promise(function (resolve) {\n        var action = _this4.props.action;\n\n        if (typeof action === 'function') {\n          return resolve(action(file));\n        }\n        resolve(action);\n      }).then(function (action) {\n        formNode.setAttribute('action', action);\n        formNode.submit();\n        dataSpan.innerHTML = '';\n        onStart(file);\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _classNames;\n\n      var _props = this.props,\n          Tag = _props.component,\n          disabled = _props.disabled,\n          className = _props.className,\n          prefixCls = _props.prefixCls,\n          children = _props.children,\n          style = _props.style;\n\n      var iframeStyle = extends_default()({}, IFRAME_STYLE, {\n        display: this.state.uploading || disabled ? 'none' : ''\n      });\n      var cls = node_modules_classnames_default()((_classNames = {}, defineProperty_default()(_classNames, prefixCls, true), defineProperty_default()(_classNames, prefixCls + '-disabled', disabled), defineProperty_default()(_classNames, className, className), _classNames));\n      return external_react_default.a.createElement(\n        Tag,\n        {\n          className: cls,\n          style: extends_default()({ position: 'relative', zIndex: 0 }, style)\n        },\n        external_react_default.a.createElement('iframe', {\n          ref: this.saveIframe,\n          onLoad: this.onLoad,\n          style: iframeStyle\n        }),\n        children\n      );\n    }\n  }]);\n\n  return IframeUploader;\n}(external_react_[\"Component\"]);\n\nIframeUploader_IframeUploader.propTypes = {\n  component: prop_types_default.a.string,\n  style: prop_types_default.a.object,\n  disabled: prop_types_default.a.bool,\n  prefixCls: prop_types_default.a.string,\n  className: prop_types_default.a.string,\n  accept: prop_types_default.a.string,\n  onStart: prop_types_default.a.func,\n  multiple: prop_types_default.a.bool,\n  children: prop_types_default.a.any,\n  data: prop_types_default.a.oneOfType([prop_types_default.a.object, prop_types_default.a.func]),\n  action: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.func]),\n  name: prop_types_default.a.string\n};\n\n\n/* harmony default export */ var es_IframeUploader = (IframeUploader_IframeUploader);\n// CONCATENATED MODULE: ./node_modules/rc-upload/es/Upload.js\n\n\n\n\n\n\n\n\n\n\nfunction Upload_empty() {}\n\nvar Upload_Upload = function (_Component) {\n  helpers_inherits_default()(Upload, _Component);\n\n  function Upload() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, Upload);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = Upload.__proto__ || Object.getPrototypeOf(Upload)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n      Component: null\n    }, _this.saveUploader = function (node) {\n      _this.uploader = node;\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(Upload, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      if (this.props.supportServerRender) {\n        /* eslint react/no-did-mount-set-state:0 */\n        this.setState({\n          Component: this.getComponent()\n        }, this.props.onReady);\n      }\n    }\n  }, {\n    key: 'getComponent',\n    value: function getComponent() {\n      return typeof File !== 'undefined' ? es_AjaxUploader : es_IframeUploader;\n    }\n  }, {\n    key: 'abort',\n    value: function abort(file) {\n      this.uploader.abort(file);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      if (this.props.supportServerRender) {\n        var _ComponentUploader = this.state.Component;\n        if (_ComponentUploader) {\n          return external_react_default.a.createElement(_ComponentUploader, extends_default()({}, this.props, { ref: this.saveUploader }));\n        }\n        return null;\n      }\n      var ComponentUploader = this.getComponent();\n      return external_react_default.a.createElement(ComponentUploader, extends_default()({}, this.props, { ref: this.saveUploader }));\n    }\n  }]);\n\n  return Upload;\n}(external_react_[\"Component\"]);\n\nUpload_Upload.propTypes = {\n  component: prop_types_default.a.string,\n  style: prop_types_default.a.object,\n  prefixCls: prop_types_default.a.string,\n  action: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.func]),\n  name: prop_types_default.a.string,\n  multipart: prop_types_default.a.bool,\n  directory: prop_types_default.a.bool,\n  onError: prop_types_default.a.func,\n  onSuccess: prop_types_default.a.func,\n  onProgress: prop_types_default.a.func,\n  onStart: prop_types_default.a.func,\n  data: prop_types_default.a.oneOfType([prop_types_default.a.object, prop_types_default.a.func]),\n  headers: prop_types_default.a.object,\n  accept: prop_types_default.a.string,\n  multiple: prop_types_default.a.bool,\n  disabled: prop_types_default.a.bool,\n  beforeUpload: prop_types_default.a.func,\n  customRequest: prop_types_default.a.func,\n  onReady: prop_types_default.a.func,\n  withCredentials: prop_types_default.a.bool,\n  supportServerRender: prop_types_default.a.bool,\n  openFileDialogOnClick: prop_types_default.a.bool\n};\nUpload_Upload.defaultProps = {\n  component: 'span',\n  prefixCls: 'rc-upload',\n  data: {},\n  headers: {},\n  name: 'file',\n  multipart: false,\n  onReady: Upload_empty,\n  onStart: Upload_empty,\n  onError: Upload_empty,\n  onSuccess: Upload_empty,\n  supportServerRender: false,\n  multiple: false,\n  beforeUpload: null,\n  customRequest: null,\n  withCredentials: false,\n  openFileDialogOnClick: true\n};\n\n\n/* harmony default export */ var es_Upload = (Upload_Upload);\n// CONCATENATED MODULE: ./node_modules/rc-upload/es/index.js\n// export this package's api\n\n\n/* harmony default export */ var rc_upload_es = (es_Upload);\n// EXTERNAL MODULE: ./node_modules/lodash/uniqBy.js\nvar uniqBy = __webpack_require__(689);\nvar uniqBy_default = /*#__PURE__*/__webpack_require__.n(uniqBy);\n\n// EXTERNAL MODULE: ./node_modules/lodash/findIndex.js\nvar lodash_findIndex = __webpack_require__(690);\nvar findIndex_default = /*#__PURE__*/__webpack_require__.n(lodash_findIndex);\n\n// CONCATENATED MODULE: ./node_modules/antd/es/progress/utils.js\nfunction validProgress(progress) {\n  if (!progress || progress < 0) {\n    return 0;\n  } else if (progress > 100) {\n    return 100;\n  }\n\n  return progress;\n}\n// CONCATENATED MODULE: ./node_modules/antd/es/progress/Line.js\n\n\n\nvar progress_Line_Line = function Line(props) {\n  var prefixCls = props.prefixCls,\n      percent = props.percent,\n      successPercent = props.successPercent,\n      strokeWidth = props.strokeWidth,\n      size = props.size,\n      strokeColor = props.strokeColor,\n      strokeLinecap = props.strokeLinecap,\n      children = props.children;\n  var percentStyle = {\n    width: \"\".concat(validProgress(percent), \"%\"),\n    height: strokeWidth || (size === 'small' ? 6 : 8),\n    background: strokeColor,\n    borderRadius: strokeLinecap === 'square' ? 0 : '100px'\n  };\n  var successPercentStyle = {\n    width: \"\".concat(validProgress(successPercent), \"%\"),\n    height: strokeWidth || (size === 'small' ? 6 : 8),\n    borderRadius: strokeLinecap === 'square' ? 0 : '100px'\n  };\n  var successSegment = successPercent !== undefined ? external_react_[\"createElement\"](\"div\", {\n    className: \"\".concat(prefixCls, \"-success-bg\"),\n    style: successPercentStyle\n  }) : null;\n  return external_react_[\"createElement\"](\"div\", null, external_react_[\"createElement\"](\"div\", {\n    className: \"\".concat(prefixCls, \"-outer\")\n  }, external_react_[\"createElement\"](\"div\", {\n    className: \"\".concat(prefixCls, \"-inner\")\n  }, external_react_[\"createElement\"](\"div\", {\n    className: \"\".concat(prefixCls, \"-bg\"),\n    style: percentStyle\n  }), successSegment)), children);\n};\n\n/* harmony default export */ var progress_Line = (progress_Line_Line);\n// CONCATENATED MODULE: ./node_modules/rc-progress/es/enhancer.js\n\n\n\nvar enhancer_enhancer = function enhancer(WrappedComponent) {\n  return function (_WrappedComponent) {\n    helpers_inherits_default()(Progress, _WrappedComponent);\n\n    function Progress() {\n      helpers_classCallCheck_default()(this, Progress);\n\n      return helpers_possibleConstructorReturn_default()(this, _WrappedComponent.apply(this, arguments));\n    }\n\n    Progress.prototype.componentDidUpdate = function componentDidUpdate() {\n      var _this2 = this;\n\n      var now = Date.now();\n      var updated = false;\n\n      Object.keys(this.paths).forEach(function (key) {\n        var path = _this2.paths[key];\n\n        if (!path) {\n          return;\n        }\n\n        updated = true;\n        var pathStyle = path.style;\n        pathStyle.transitionDuration = '.3s, .3s, .3s, .06s';\n\n        if (_this2.prevTimeStamp && now - _this2.prevTimeStamp < 100) {\n          pathStyle.transitionDuration = '0s, 0s';\n        }\n      });\n\n      if (updated) {\n        this.prevTimeStamp = Date.now();\n      }\n    };\n\n    Progress.prototype.render = function render() {\n      return _WrappedComponent.prototype.render.call(this);\n    };\n\n    return Progress;\n  }(WrappedComponent);\n};\n\n/* harmony default export */ var es_enhancer = (enhancer_enhancer);\n// CONCATENATED MODULE: ./node_modules/rc-progress/es/types.js\n\n\nvar defaultProps = {\n  className: '',\n  percent: 0,\n  prefixCls: 'rc-progress',\n  strokeColor: '#2db7f5',\n  strokeLinecap: 'round',\n  strokeWidth: 1,\n  style: {},\n  trailColor: '#D9D9D9',\n  trailWidth: 1\n};\n\nvar mixedType = prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]);\n\nvar propTypes = {\n  className: prop_types_default.a.string,\n  percent: prop_types_default.a.oneOfType([mixedType, prop_types_default.a.arrayOf(mixedType)]),\n  prefixCls: prop_types_default.a.string,\n  strokeColor: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.arrayOf(prop_types_default.a.string)]),\n  strokeLinecap: prop_types_default.a.oneOf(['butt', 'round', 'square']),\n  strokeWidth: mixedType,\n  style: prop_types_default.a.object,\n  trailColor: prop_types_default.a.string,\n  trailWidth: mixedType\n};\n// CONCATENATED MODULE: ./node_modules/rc-progress/es/Line.js\n\n\n\n\n\n\n\n\n\nvar es_Line_Line = function (_Component) {\n  helpers_inherits_default()(Line, _Component);\n\n  function Line() {\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, Line);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.paths = {}, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  Line.prototype.render = function render() {\n    var _this2 = this;\n\n    var _props = this.props,\n        className = _props.className,\n        percent = _props.percent,\n        prefixCls = _props.prefixCls,\n        strokeColor = _props.strokeColor,\n        strokeLinecap = _props.strokeLinecap,\n        strokeWidth = _props.strokeWidth,\n        style = _props.style,\n        trailColor = _props.trailColor,\n        trailWidth = _props.trailWidth,\n        restProps = objectWithoutProperties_default()(_props, ['className', 'percent', 'prefixCls', 'strokeColor', 'strokeLinecap', 'strokeWidth', 'style', 'trailColor', 'trailWidth']);\n\n    delete restProps.gapPosition;\n\n    var percentList = Array.isArray(percent) ? percent : [percent];\n    var strokeColorList = Array.isArray(strokeColor) ? strokeColor : [strokeColor];\n\n    var center = strokeWidth / 2;\n    var right = 100 - strokeWidth / 2;\n    var pathString = 'M ' + (strokeLinecap === 'round' ? center : 0) + ',' + center + '\\n           L ' + (strokeLinecap === 'round' ? right : 100) + ',' + center;\n    var viewBoxString = '0 0 100 ' + strokeWidth;\n\n    var stackPtg = 0;\n\n    return external_react_default.a.createElement(\n      'svg',\n      extends_default()({\n        className: prefixCls + '-line ' + className,\n        viewBox: viewBoxString,\n        preserveAspectRatio: 'none',\n        style: style\n      }, restProps),\n      external_react_default.a.createElement('path', {\n        className: prefixCls + '-line-trail',\n        d: pathString,\n        strokeLinecap: strokeLinecap,\n        stroke: trailColor,\n        strokeWidth: trailWidth || strokeWidth,\n        fillOpacity: '0'\n      }),\n      percentList.map(function (ptg, index) {\n        var pathStyle = {\n          strokeDasharray: ptg + 'px, 100px',\n          strokeDashoffset: '-' + stackPtg + 'px',\n          transition: 'stroke-dashoffset 0.3s ease 0s, stroke-dasharray .3s ease 0s, stroke 0.3s linear'\n        };\n        var color = strokeColorList[index] || strokeColorList[strokeColorList.length - 1];\n\n        stackPtg += ptg;\n\n        return external_react_default.a.createElement('path', {\n          key: index,\n          className: prefixCls + '-line-path',\n          d: pathString,\n          strokeLinecap: strokeLinecap,\n          stroke: color,\n          strokeWidth: strokeWidth,\n          fillOpacity: '0',\n          ref: function ref(path) {\n            _this2.paths[index] = path;\n          },\n          style: pathStyle\n        });\n      })\n    );\n  };\n\n  return Line;\n}(external_react_[\"Component\"]);\n\nes_Line_Line.propTypes = propTypes;\n\nes_Line_Line.defaultProps = defaultProps;\n\n/* harmony default export */ var es_Line = (es_enhancer(es_Line_Line));\n// CONCATENATED MODULE: ./node_modules/rc-progress/es/Circle.js\n\n\n\n\n\n/* eslint react/prop-types: 0 */\n\n\n\n\n\nvar es_Circle_Circle = function (_Component) {\n  helpers_inherits_default()(Circle, _Component);\n\n  function Circle() {\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, Circle);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.paths = {}, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  Circle.prototype.getPathStyles = function getPathStyles(offset, percent, strokeColor, strokeWidth) {\n    var gapDegree = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n    var gapPosition = arguments[5];\n\n    var radius = 50 - strokeWidth / 2;\n    var beginPositionX = 0;\n    var beginPositionY = -radius;\n    var endPositionX = 0;\n    var endPositionY = -2 * radius;\n    switch (gapPosition) {\n      case 'left':\n        beginPositionX = -radius;\n        beginPositionY = 0;\n        endPositionX = 2 * radius;\n        endPositionY = 0;\n        break;\n      case 'right':\n        beginPositionX = radius;\n        beginPositionY = 0;\n        endPositionX = -2 * radius;\n        endPositionY = 0;\n        break;\n      case 'bottom':\n        beginPositionY = radius;\n        endPositionY = 2 * radius;\n        break;\n      default:\n    }\n    var pathString = 'M 50,50 m ' + beginPositionX + ',' + beginPositionY + '\\n     a ' + radius + ',' + radius + ' 0 1 1 ' + endPositionX + ',' + -endPositionY + '\\n     a ' + radius + ',' + radius + ' 0 1 1 ' + -endPositionX + ',' + endPositionY;\n    var len = Math.PI * 2 * radius;\n\n    var pathStyle = {\n      stroke: strokeColor,\n      strokeDasharray: percent / 100 * (len - gapDegree) + 'px ' + len + 'px',\n      strokeDashoffset: '-' + (gapDegree / 2 + offset / 100 * (len - gapDegree)) + 'px',\n      transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s' // eslint-disable-line\n    };\n\n    return {\n      pathString: pathString,\n      pathStyle: pathStyle\n    };\n  };\n\n  Circle.prototype.getStokeList = function getStokeList() {\n    var _this2 = this;\n\n    var _props = this.props,\n        prefixCls = _props.prefixCls,\n        percent = _props.percent,\n        strokeColor = _props.strokeColor,\n        strokeWidth = _props.strokeWidth,\n        strokeLinecap = _props.strokeLinecap,\n        gapDegree = _props.gapDegree,\n        gapPosition = _props.gapPosition;\n\n    var percentList = Array.isArray(percent) ? percent : [percent];\n    var strokeColorList = Array.isArray(strokeColor) ? strokeColor : [strokeColor];\n\n    var stackPtg = 0;\n    return percentList.map(function (ptg, index) {\n      var color = strokeColorList[index] || strokeColorList[strokeColorList.length - 1];\n\n      var _getPathStyles = _this2.getPathStyles(stackPtg, ptg, color, strokeWidth, gapDegree, gapPosition),\n          pathString = _getPathStyles.pathString,\n          pathStyle = _getPathStyles.pathStyle;\n\n      stackPtg += ptg;\n\n      return external_react_default.a.createElement('path', {\n        key: index,\n        className: prefixCls + '-circle-path',\n        d: pathString,\n        strokeLinecap: strokeLinecap,\n        strokeWidth: ptg === 0 ? 0 : strokeWidth,\n        fillOpacity: '0',\n        style: pathStyle,\n        ref: function ref(path) {\n          _this2.paths[index] = path;\n        }\n      });\n    });\n  };\n\n  Circle.prototype.render = function render() {\n    var _props2 = this.props,\n        prefixCls = _props2.prefixCls,\n        strokeWidth = _props2.strokeWidth,\n        trailWidth = _props2.trailWidth,\n        gapDegree = _props2.gapDegree,\n        gapPosition = _props2.gapPosition,\n        trailColor = _props2.trailColor,\n        strokeLinecap = _props2.strokeLinecap,\n        style = _props2.style,\n        className = _props2.className,\n        restProps = objectWithoutProperties_default()(_props2, ['prefixCls', 'strokeWidth', 'trailWidth', 'gapDegree', 'gapPosition', 'trailColor', 'strokeLinecap', 'style', 'className']);\n\n    var _getPathStyles2 = this.getPathStyles(0, 100, trailColor, strokeWidth, gapDegree, gapPosition),\n        pathString = _getPathStyles2.pathString,\n        pathStyle = _getPathStyles2.pathStyle;\n\n    delete restProps.percent;\n    delete restProps.strokeColor;\n    return external_react_default.a.createElement(\n      'svg',\n      extends_default()({\n        className: prefixCls + '-circle ' + className,\n        viewBox: '0 0 100 100',\n        style: style\n      }, restProps),\n      external_react_default.a.createElement('path', {\n        className: prefixCls + '-circle-trail',\n        d: pathString,\n        stroke: trailColor,\n        strokeLinecap: strokeLinecap,\n        strokeWidth: trailWidth || strokeWidth,\n        fillOpacity: '0',\n        style: pathStyle\n      }),\n      this.getStokeList()\n    );\n  };\n\n  return Circle;\n}(external_react_[\"Component\"]);\n\nes_Circle_Circle.propTypes = extends_default()({}, propTypes, {\n  gapPosition: prop_types_default.a.oneOf(['top', 'bottom', 'left', 'right'])\n});\n\nes_Circle_Circle.defaultProps = extends_default()({}, defaultProps, {\n  gapPosition: 'top'\n});\n\n/* harmony default export */ var es_Circle = (es_enhancer(es_Circle_Circle));\n// CONCATENATED MODULE: ./node_modules/rc-progress/es/index.js\n\n\n\n\n\n/* harmony default export */ var rc_progress_es = ({\n  Line: es_Line,\n  Circle: es_Circle\n});\n// CONCATENATED MODULE: ./node_modules/antd/es/progress/Circle.js\n\n\n\nvar statusColorMap = {\n  normal: '#108ee9',\n  exception: '#ff5500',\n  success: '#87d068'\n};\n\nfunction getPercentage(_ref) {\n  var percent = _ref.percent,\n      successPercent = _ref.successPercent;\n  var ptg = validProgress(percent);\n  if (!successPercent) return ptg;\n  var successPtg = validProgress(successPercent);\n  return [successPercent, validProgress(ptg - successPtg)];\n}\n\nfunction getStrokeColor(_ref2) {\n  var progressStatus = _ref2.progressStatus,\n      successPercent = _ref2.successPercent,\n      strokeColor = _ref2.strokeColor;\n  var color = strokeColor || statusColorMap[progressStatus];\n  if (!successPercent) return color;\n  return [statusColorMap.success, color];\n}\n\nvar progress_Circle_Circle = function Circle(props) {\n  var prefixCls = props.prefixCls,\n      width = props.width,\n      strokeWidth = props.strokeWidth,\n      trailColor = props.trailColor,\n      strokeLinecap = props.strokeLinecap,\n      gapPosition = props.gapPosition,\n      gapDegree = props.gapDegree,\n      type = props.type,\n      children = props.children;\n  var circleSize = width || 120;\n  var circleStyle = {\n    width: circleSize,\n    height: circleSize,\n    fontSize: circleSize * 0.15 + 6\n  };\n  var circleWidth = strokeWidth || 6;\n  var gapPos = gapPosition || type === 'dashboard' && 'bottom' || 'top';\n  var gapDeg = gapDegree || type === 'dashboard' && 75;\n  return external_react_[\"createElement\"](\"div\", {\n    className: \"\".concat(prefixCls, \"-inner\"),\n    style: circleStyle\n  }, external_react_[\"createElement\"](es_Circle, {\n    percent: getPercentage(props),\n    strokeWidth: circleWidth,\n    trailWidth: circleWidth,\n    strokeColor: getStrokeColor(props),\n    strokeLinecap: strokeLinecap,\n    trailColor: trailColor,\n    prefixCls: prefixCls,\n    gapDegree: gapDeg,\n    gapPosition: gapPos\n  }), children);\n};\n\n/* harmony default export */ var progress_Circle = (progress_Circle_Circle);\n// CONCATENATED MODULE: ./node_modules/antd/es/progress/progress.js\nfunction progress_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { progress_typeof = function _typeof(obj) { return typeof obj; }; } else { progress_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return progress_typeof(obj); }\n\nfunction progress_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\nfunction progress_extends() { progress_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 progress_extends.apply(this, arguments); }\n\nfunction progress_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction progress_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 progress_createClass(Constructor, protoProps, staticProps) { if (protoProps) progress_defineProperties(Constructor.prototype, protoProps); if (staticProps) progress_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction progress_possibleConstructorReturn(self, call) { if (call && (progress_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return progress_assertThisInitialized(self); }\n\nfunction progress_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction progress_getPrototypeOf(o) { progress_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return progress_getPrototypeOf(o); }\n\nfunction progress_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) progress_setPrototypeOf(subClass, superClass); }\n\nfunction progress_setPrototypeOf(o, p) { progress_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return progress_setPrototypeOf(o, p); }\n\nvar progress_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\nvar ProgressTypes = tuple('line', 'circle', 'dashboard');\nvar ProgressStatuses = tuple('normal', 'exception', 'active', 'success');\n\nvar progress_Progress =\n/*#__PURE__*/\nfunction (_React$Component) {\n  progress_inherits(Progress, _React$Component);\n\n  function Progress() {\n    var _this;\n\n    progress_classCallCheck(this, Progress);\n\n    _this = progress_possibleConstructorReturn(this, progress_getPrototypeOf(Progress).apply(this, arguments));\n\n    _this.renderProgress = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n      var props = _this.props;\n\n      var customizePrefixCls = props.prefixCls,\n          className = props.className,\n          _props$percent = props.percent,\n          percent = _props$percent === void 0 ? 0 : _props$percent,\n          status = props.status,\n          format = props.format,\n          trailColor = props.trailColor,\n          size = props.size,\n          successPercent = props.successPercent,\n          type = props.type,\n          strokeWidth = props.strokeWidth,\n          width = props.width,\n          showInfo = props.showInfo,\n          _props$gapDegree = props.gapDegree,\n          gapDegree = _props$gapDegree === void 0 ? 0 : _props$gapDegree,\n          gapPosition = props.gapPosition,\n          strokeColor = props.strokeColor,\n          _props$strokeLinecap = props.strokeLinecap,\n          strokeLinecap = _props$strokeLinecap === void 0 ? 'round' : _props$strokeLinecap,\n          restProps = progress_rest(props, [\"prefixCls\", \"className\", \"percent\", \"status\", \"format\", \"trailColor\", \"size\", \"successPercent\", \"type\", \"strokeWidth\", \"width\", \"showInfo\", \"gapDegree\", \"gapPosition\", \"strokeColor\", \"strokeLinecap\"]);\n\n      var prefixCls = getPrefixCls('progress', customizePrefixCls);\n      var progressStatus = parseInt(successPercent !== undefined ? successPercent.toString() : percent.toString(), 10) >= 100 && !('status' in props) ? 'success' : status || 'normal';\n      var progress;\n\n      var progressInfo = _this.renderProcessInfo(prefixCls, progressStatus); // Render progress shape\n\n\n      if (type === 'line') {\n        progress = external_react_[\"createElement\"](progress_Line, progress_extends({}, _this.props, {\n          prefixCls: prefixCls\n        }), progressInfo);\n      } else if (type === 'circle' || type === 'dashboard') {\n        progress = external_react_[\"createElement\"](progress_Circle, progress_extends({}, _this.props, {\n          prefixCls: prefixCls,\n          progressStatus: progressStatus\n        }), progressInfo);\n      }\n\n      var classString = classnames_default()(prefixCls, (_classNames = {}, progress_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type === 'dashboard' && 'circle' || type), true), progress_defineProperty(_classNames, \"\".concat(prefixCls, \"-status-\").concat(progressStatus), true), progress_defineProperty(_classNames, \"\".concat(prefixCls, \"-show-info\"), showInfo), progress_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), size), _classNames), className);\n      return external_react_[\"createElement\"](\"div\", progress_extends({}, restProps, {\n        className: classString\n      }), progress);\n    };\n\n    return _this;\n  }\n\n  progress_createClass(Progress, [{\n    key: \"renderProcessInfo\",\n    value: function renderProcessInfo(prefixCls, progressStatus) {\n      var _this$props = this.props,\n          showInfo = _this$props.showInfo,\n          format = _this$props.format,\n          type = _this$props.type,\n          percent = _this$props.percent,\n          successPercent = _this$props.successPercent;\n      if (!showInfo) return null;\n      var text;\n\n      var textFormatter = format || function (percentNumber) {\n        return \"\".concat(percentNumber, \"%\");\n      };\n\n      var iconType = type === 'circle' || type === 'dashboard' ? '' : '-circle';\n\n      if (format || progressStatus !== 'exception' && progressStatus !== 'success') {\n        text = textFormatter(validProgress(percent), validProgress(successPercent));\n      } else if (progressStatus === 'exception') {\n        text = external_react_[\"createElement\"](es_icon, {\n          type: \"close\".concat(iconType),\n          theme: type === 'line' ? 'filled' : 'outlined'\n        });\n      } else if (progressStatus === 'success') {\n        text = external_react_[\"createElement\"](es_icon, {\n          type: \"check\".concat(iconType),\n          theme: type === 'line' ? 'filled' : 'outlined'\n        });\n      }\n\n      return external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-text\"),\n        title: typeof text === 'string' ? text : undefined\n      }, text);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderProgress);\n    }\n  }]);\n\n  return Progress;\n}(external_react_[\"Component\"]);\n\n\nprogress_Progress.defaultProps = {\n  type: 'line',\n  percent: 0,\n  showInfo: true,\n  trailColor: '#f3f3f3',\n  size: 'default',\n  gapDegree: 0,\n  strokeLinecap: 'round'\n};\nprogress_Progress.propTypes = {\n  status: prop_types[\"oneOf\"](ProgressStatuses),\n  type: prop_types[\"oneOf\"](ProgressTypes),\n  showInfo: prop_types[\"bool\"],\n  percent: prop_types[\"number\"],\n  width: prop_types[\"number\"],\n  strokeWidth: prop_types[\"number\"],\n  strokeLinecap: prop_types[\"oneOf\"](['round', 'square']),\n  strokeColor: prop_types[\"string\"],\n  trailColor: prop_types[\"string\"],\n  format: prop_types[\"func\"],\n  gapDegree: prop_types[\"number\"],\n  \"default\": prop_types[\"oneOf\"](['default', 'small'])\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/progress/index.js\n\n/* harmony default export */ var es_progress = (progress_Progress);\n// CONCATENATED MODULE: ./node_modules/antd/es/upload/UploadList.js\nfunction UploadList_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { UploadList_typeof = function _typeof(obj) { return typeof obj; }; } else { UploadList_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return UploadList_typeof(obj); }\n\nfunction UploadList_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\nfunction UploadList_extends() { UploadList_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 UploadList_extends.apply(this, arguments); }\n\nfunction UploadList_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction UploadList_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 UploadList_createClass(Constructor, protoProps, staticProps) { if (protoProps) UploadList_defineProperties(Constructor.prototype, protoProps); if (staticProps) UploadList_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction UploadList_possibleConstructorReturn(self, call) { if (call && (UploadList_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return UploadList_assertThisInitialized(self); }\n\nfunction UploadList_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction UploadList_getPrototypeOf(o) { UploadList_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return UploadList_getPrototypeOf(o); }\n\nfunction UploadList_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) UploadList_setPrototypeOf(subClass, superClass); }\n\nfunction UploadList_setPrototypeOf(o, p) { UploadList_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return UploadList_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\nvar imageTypes = ['image', 'webp', 'png', 'svg', 'gif', 'jpg', 'jpeg', 'bmp', 'dpg'];\n\nvar extname = function extname(url) {\n  if (!url) {\n    return '';\n  }\n\n  var temp = url.split('/');\n  var filename = temp[temp.length - 1];\n  var filenameWithoutSuffix = filename.split(/#|\\?/)[0];\n  return (/\\.[^./\\\\]*$/.exec(filenameWithoutSuffix) || [''])[0];\n};\n\nvar isImageUrl = function isImageUrl(file) {\n  if (imageTypes.includes(file.type)) {\n    return true;\n  }\n\n  var url = file.thumbUrl || file.url;\n  var extension = extname(url);\n\n  if (/^data:image\\//.test(url) || /(webp|svg|png|gif|jpg|jpeg|bmp|dpg)$/i.test(extension)) {\n    return true;\n  } else if (/^data:/.test(url)) {\n    // other file types of base64\n    return false;\n  } else if (extension) {\n    // other file types which have extension\n    return false;\n  }\n\n  return true;\n};\n\nvar UploadList_UploadList =\n/*#__PURE__*/\nfunction (_React$Component) {\n  UploadList_inherits(UploadList, _React$Component);\n\n  function UploadList() {\n    var _this;\n\n    UploadList_classCallCheck(this, UploadList);\n\n    _this = UploadList_possibleConstructorReturn(this, UploadList_getPrototypeOf(UploadList).apply(this, arguments));\n\n    _this.handleClose = function (file) {\n      var onRemove = _this.props.onRemove;\n\n      if (onRemove) {\n        onRemove(file);\n      }\n    };\n\n    _this.handlePreview = function (file, e) {\n      var onPreview = _this.props.onPreview;\n\n      if (!onPreview) {\n        return;\n      }\n\n      e.preventDefault();\n      return onPreview(file);\n    }; // https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL\n\n\n    _this.previewFile = function (file, callback) {\n      if (file.type && !imageTypes.includes(file.type)) {\n        callback('');\n      }\n\n      var reader = new FileReader();\n\n      reader.onloadend = function () {\n        return callback(reader.result);\n      };\n\n      reader.readAsDataURL(file);\n    };\n\n    _this.renderUploadList = function (_ref) {\n      var _classNames2;\n\n      var getPrefixCls = _ref.getPrefixCls;\n      var _this$props = _this.props,\n          customizePrefixCls = _this$props.prefixCls,\n          _this$props$items = _this$props.items,\n          items = _this$props$items === void 0 ? [] : _this$props$items,\n          listType = _this$props.listType,\n          showPreviewIcon = _this$props.showPreviewIcon,\n          showRemoveIcon = _this$props.showRemoveIcon,\n          locale = _this$props.locale;\n      var prefixCls = getPrefixCls('upload', customizePrefixCls);\n      var list = items.map(function (file) {\n        var _classNames;\n\n        var progress;\n        var icon = external_react_[\"createElement\"](es_icon, {\n          type: file.status === 'uploading' ? 'loading' : 'paper-clip'\n        });\n\n        if (listType === 'picture' || listType === 'picture-card') {\n          if (listType === 'picture-card' && file.status === 'uploading') {\n            icon = external_react_[\"createElement\"](\"div\", {\n              className: \"\".concat(prefixCls, \"-list-item-uploading-text\")\n            }, locale.uploading);\n          } else if (!file.thumbUrl && !file.url) {\n            icon = external_react_[\"createElement\"](es_icon, {\n              className: \"\".concat(prefixCls, \"-list-item-thumbnail\"),\n              type: \"picture\",\n              theme: \"twoTone\"\n            });\n          } else {\n            var thumbnail = isImageUrl(file) ? external_react_[\"createElement\"](\"img\", {\n              src: file.thumbUrl || file.url,\n              alt: file.name\n            }) : external_react_[\"createElement\"](es_icon, {\n              type: \"file\",\n              className: \"\".concat(prefixCls, \"-list-item-icon\"),\n              theme: \"twoTone\"\n            });\n            icon = external_react_[\"createElement\"](\"a\", {\n              className: \"\".concat(prefixCls, \"-list-item-thumbnail\"),\n              onClick: function onClick(e) {\n                return _this.handlePreview(file, e);\n              },\n              href: file.url || file.thumbUrl,\n              target: \"_blank\",\n              rel: \"noopener noreferrer\"\n            }, thumbnail);\n          }\n        }\n\n        if (file.status === 'uploading') {\n          // show loading icon if upload progress listener is disabled\n          var loadingProgress = 'percent' in file ? external_react_[\"createElement\"](es_progress, UploadList_extends({\n            type: \"line\"\n          }, _this.props.progressAttr, {\n            percent: file.percent\n          })) : null;\n          progress = external_react_[\"createElement\"](\"div\", {\n            className: \"\".concat(prefixCls, \"-list-item-progress\"),\n            key: \"progress\"\n          }, loadingProgress);\n        }\n\n        var infoUploadingClass = classnames_default()((_classNames = {}, UploadList_defineProperty(_classNames, \"\".concat(prefixCls, \"-list-item\"), true), UploadList_defineProperty(_classNames, \"\".concat(prefixCls, \"-list-item-\").concat(file.status), true), _classNames));\n        var linkProps = typeof file.linkProps === 'string' ? JSON.parse(file.linkProps) : file.linkProps;\n        var preview = file.url ? external_react_[\"createElement\"](\"a\", UploadList_extends({\n          target: \"_blank\",\n          rel: \"noopener noreferrer\",\n          className: \"\".concat(prefixCls, \"-list-item-name\"),\n          title: file.name\n        }, linkProps, {\n          href: file.url,\n          onClick: function onClick(e) {\n            return _this.handlePreview(file, e);\n          }\n        }), file.name) : external_react_[\"createElement\"](\"span\", {\n          className: \"\".concat(prefixCls, \"-list-item-name\"),\n          onClick: function onClick(e) {\n            return _this.handlePreview(file, e);\n          },\n          title: file.name\n        }, file.name);\n        var style = {\n          pointerEvents: 'none',\n          opacity: 0.5\n        };\n        var previewIcon = showPreviewIcon ? external_react_[\"createElement\"](\"a\", {\n          href: file.url || file.thumbUrl,\n          target: \"_blank\",\n          rel: \"noopener noreferrer\",\n          style: file.url || file.thumbUrl ? undefined : style,\n          onClick: function onClick(e) {\n            return _this.handlePreview(file, e);\n          },\n          title: locale.previewFile\n        }, external_react_[\"createElement\"](es_icon, {\n          type: \"eye-o\"\n        })) : null;\n        var removeIcon = showRemoveIcon ? external_react_[\"createElement\"](es_icon, {\n          type: \"delete\",\n          title: locale.removeFile,\n          onClick: function onClick() {\n            return _this.handleClose(file);\n          }\n        }) : null;\n        var removeIconClose = showRemoveIcon ? external_react_[\"createElement\"](es_icon, {\n          type: \"close\",\n          title: locale.removeFile,\n          onClick: function onClick() {\n            return _this.handleClose(file);\n          }\n        }) : null;\n        var actions = listType === 'picture-card' && file.status !== 'uploading' ? external_react_[\"createElement\"](\"span\", {\n          className: \"\".concat(prefixCls, \"-list-item-actions\")\n        }, previewIcon, removeIcon) : removeIconClose;\n        var message;\n\n        if (file.response && typeof file.response === 'string') {\n          message = file.response;\n        } else {\n          message = file.error && file.error.statusText || locale.uploadError;\n        }\n\n        var iconAndPreview = file.status === 'error' ? external_react_[\"createElement\"](es_tooltip, {\n          title: message\n        }, icon, preview) : external_react_[\"createElement\"](\"span\", null, icon, preview);\n        return external_react_[\"createElement\"](\"div\", {\n          className: infoUploadingClass,\n          key: file.uid\n        }, external_react_[\"createElement\"](\"div\", {\n          className: \"\".concat(prefixCls, \"-list-item-info\")\n        }, iconAndPreview), actions, external_react_[\"createElement\"](Animate[\"a\" /* default */], {\n          transitionName: \"fade\",\n          component: \"\"\n        }, progress));\n      });\n      var listClassNames = classnames_default()((_classNames2 = {}, UploadList_defineProperty(_classNames2, \"\".concat(prefixCls, \"-list\"), true), UploadList_defineProperty(_classNames2, \"\".concat(prefixCls, \"-list-\").concat(listType), true), _classNames2));\n      var animationDirection = listType === 'picture-card' ? 'animate-inline' : 'animate';\n      return external_react_[\"createElement\"](Animate[\"a\" /* default */], {\n        transitionName: \"\".concat(prefixCls, \"-\").concat(animationDirection),\n        component: \"div\",\n        className: listClassNames\n      }, list);\n    };\n\n    return _this;\n  }\n\n  UploadList_createClass(UploadList, [{\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      var _this2 = this;\n\n      if (this.props.listType !== 'picture' && this.props.listType !== 'picture-card') {\n        return;\n      }\n\n      (this.props.items || []).forEach(function (file) {\n        if (typeof document === 'undefined' || typeof window === 'undefined' || !window.FileReader || !window.File || !(file.originFileObj instanceof File) || file.thumbUrl !== undefined) {\n          return;\n        }\n\n        file.thumbUrl = '';\n\n        _this2.previewFile(file.originFileObj, function (previewDataUrl) {\n          file.thumbUrl = previewDataUrl;\n\n          _this2.forceUpdate();\n        });\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderUploadList);\n    }\n  }]);\n\n  return UploadList;\n}(external_react_[\"Component\"]);\n\n\nUploadList_UploadList.defaultProps = {\n  listType: 'text',\n  progressAttr: {\n    strokeWidth: 2,\n    showInfo: false\n  },\n  showRemoveIcon: true,\n  showPreviewIcon: true\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/upload/utils.js\nfunction utils_extends() { utils_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 utils_extends.apply(this, arguments); }\n\nfunction T() {\n  return true;\n} // Fix IE file.status problem\n// via coping a new Object\n\nfunction fileToObject(file) {\n  return utils_extends({}, file, {\n    lastModified: file.lastModified,\n    lastModifiedDate: file.lastModifiedDate,\n    name: file.name,\n    size: file.size,\n    type: file.type,\n    uid: file.uid,\n    percent: 0,\n    originFileObj: file\n  });\n}\n/**\n * 生成Progress percent: 0.1 -> 0.98\n *   - for ie\n */\n\nfunction genPercentAdd() {\n  var k = 0.1;\n  var i = 0.01;\n  var end = 0.98;\n  return function (s) {\n    var start = s;\n\n    if (start >= end) {\n      return start;\n    }\n\n    start += k;\n    k = k - i;\n\n    if (k < 0.001) {\n      k = 0.001;\n    }\n\n    return start;\n  };\n}\nfunction getFileItem(file, fileList) {\n  var matchKey = file.uid !== undefined ? 'uid' : 'name';\n  return fileList.filter(function (item) {\n    return item[matchKey] === file[matchKey];\n  })[0];\n}\nfunction removeFileItem(file, fileList) {\n  var matchKey = file.uid !== undefined ? 'uid' : 'name';\n  var removed = fileList.filter(function (item) {\n    return item[matchKey] !== file[matchKey];\n  });\n\n  if (removed.length === fileList.length) {\n    return null;\n  }\n\n  return removed;\n}\n// CONCATENATED MODULE: ./node_modules/antd/es/upload/Upload.js\nfunction Upload_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Upload_typeof = function _typeof(obj) { return typeof obj; }; } else { Upload_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Upload_typeof(obj); }\n\nfunction Upload_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\nfunction Upload_extends() { Upload_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 Upload_extends.apply(this, arguments); }\n\nfunction Upload_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Upload_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 Upload_createClass(Constructor, protoProps, staticProps) { if (protoProps) Upload_defineProperties(Constructor.prototype, protoProps); if (staticProps) Upload_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Upload_possibleConstructorReturn(self, call) { if (call && (Upload_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Upload_assertThisInitialized(self); }\n\nfunction Upload_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Upload_getPrototypeOf(o) { Upload_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Upload_getPrototypeOf(o); }\n\nfunction Upload_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) Upload_setPrototypeOf(subClass, superClass); }\n\nfunction Upload_setPrototypeOf(o, p) { Upload_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Upload_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar upload_Upload_Upload =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Upload_inherits(Upload, _React$Component);\n\n  function Upload(props) {\n    var _this;\n\n    Upload_classCallCheck(this, Upload);\n\n    _this = Upload_possibleConstructorReturn(this, Upload_getPrototypeOf(Upload).call(this, props));\n\n    _this.onStart = function (file) {\n      var targetItem = fileToObject(file);\n      targetItem.status = 'uploading';\n\n      var nextFileList = _this.state.fileList.concat();\n\n      var fileIndex = findIndex_default()(nextFileList, function (_ref) {\n        var uid = _ref.uid;\n        return uid === targetItem.uid;\n      });\n\n      if (fileIndex === -1) {\n        nextFileList.push(targetItem);\n      } else {\n        nextFileList[fileIndex] = targetItem;\n      }\n\n      _this.onChange({\n        file: targetItem,\n        fileList: nextFileList\n      }); // fix ie progress\n\n\n      if (!window.FormData) {\n        _this.autoUpdateProgress(0, targetItem);\n      }\n    };\n\n    _this.onSuccess = function (response, file) {\n      _this.clearProgressTimer();\n\n      try {\n        if (typeof response === 'string') {\n          response = JSON.parse(response);\n        }\n      } catch (e) {\n        /* do nothing */\n      }\n\n      var fileList = _this.state.fileList;\n      var targetItem = getFileItem(file, fileList); // removed\n\n      if (!targetItem) {\n        return;\n      }\n\n      targetItem.status = 'done';\n      targetItem.response = response;\n\n      _this.onChange({\n        file: Upload_extends({}, targetItem),\n        fileList: fileList\n      });\n    };\n\n    _this.onProgress = function (e, file) {\n      var fileList = _this.state.fileList;\n      var targetItem = getFileItem(file, fileList); // removed\n\n      if (!targetItem) {\n        return;\n      }\n\n      targetItem.percent = e.percent;\n\n      _this.onChange({\n        event: e,\n        file: Upload_extends({}, targetItem),\n        fileList: _this.state.fileList\n      });\n    };\n\n    _this.onError = function (error, response, file) {\n      _this.clearProgressTimer();\n\n      var fileList = _this.state.fileList;\n      var targetItem = getFileItem(file, fileList); // removed\n\n      if (!targetItem) {\n        return;\n      }\n\n      targetItem.error = error;\n      targetItem.response = response;\n      targetItem.status = 'error';\n\n      _this.onChange({\n        file: Upload_extends({}, targetItem),\n        fileList: fileList\n      });\n    };\n\n    _this.handleManualRemove = function (file) {\n      if (_this.upload) {\n        _this.upload.abort(file);\n      }\n\n      _this.handleRemove(file);\n    };\n\n    _this.onChange = function (info) {\n      if (!('fileList' in _this.props)) {\n        _this.setState({\n          fileList: info.fileList\n        });\n      }\n\n      var onChange = _this.props.onChange;\n\n      if (onChange) {\n        onChange(info);\n      }\n    };\n\n    _this.onFileDrop = function (e) {\n      _this.setState({\n        dragState: e.type\n      });\n    };\n\n    _this.beforeUpload = function (file, fileList) {\n      if (!_this.props.beforeUpload) {\n        return true;\n      }\n\n      var result = _this.props.beforeUpload(file, fileList);\n\n      if (result === false) {\n        _this.onChange({\n          file: file,\n          fileList: uniqBy_default()(_this.state.fileList.concat(fileList.map(fileToObject)), function (item) {\n            return item.uid;\n          })\n        });\n\n        return false;\n      }\n\n      if (result && result.then) {\n        return result;\n      }\n\n      return true;\n    };\n\n    _this.saveUpload = function (node) {\n      _this.upload = node;\n    };\n\n    _this.renderUploadList = function (locale) {\n      var _this$props = _this.props,\n          showUploadList = _this$props.showUploadList,\n          listType = _this$props.listType,\n          onPreview = _this$props.onPreview;\n      var showRemoveIcon = showUploadList.showRemoveIcon,\n          showPreviewIcon = showUploadList.showPreviewIcon;\n      return external_react_[\"createElement\"](UploadList_UploadList, {\n        listType: listType,\n        items: _this.state.fileList,\n        onPreview: onPreview,\n        onRemove: _this.handleManualRemove,\n        showRemoveIcon: showRemoveIcon,\n        showPreviewIcon: showPreviewIcon,\n        locale: Upload_extends({}, locale, _this.props.locale)\n      });\n    };\n\n    _this.renderUpload = function (_ref2) {\n      var _classNames2;\n\n      var getPrefixCls = _ref2.getPrefixCls;\n      var _this$props2 = _this.props,\n          customizePrefixCls = _this$props2.prefixCls,\n          className = _this$props2.className,\n          showUploadList = _this$props2.showUploadList,\n          listType = _this$props2.listType,\n          type = _this$props2.type,\n          disabled = _this$props2.disabled,\n          children = _this$props2.children;\n      var prefixCls = getPrefixCls('upload', customizePrefixCls);\n\n      var rcUploadProps = Upload_extends({\n        onStart: _this.onStart,\n        onError: _this.onError,\n        onProgress: _this.onProgress,\n        onSuccess: _this.onSuccess\n      }, _this.props, {\n        prefixCls: prefixCls,\n        beforeUpload: _this.beforeUpload\n      });\n\n      delete rcUploadProps.className;\n      var uploadList = showUploadList ? external_react_[\"createElement\"](LocaleReceiver_LocaleReceiver, {\n        componentName: \"Upload\",\n        defaultLocale: locale_provider_default.Upload\n      }, _this.renderUploadList) : null;\n\n      if (type === 'drag') {\n        var _classNames;\n\n        var dragCls = classnames_default()(prefixCls, (_classNames = {}, Upload_defineProperty(_classNames, \"\".concat(prefixCls, \"-drag\"), true), Upload_defineProperty(_classNames, \"\".concat(prefixCls, \"-drag-uploading\"), _this.state.fileList.some(function (file) {\n          return file.status === 'uploading';\n        })), Upload_defineProperty(_classNames, \"\".concat(prefixCls, \"-drag-hover\"), _this.state.dragState === 'dragover'), Upload_defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames));\n        return external_react_[\"createElement\"](\"span\", {\n          className: className\n        }, external_react_[\"createElement\"](\"div\", {\n          className: dragCls,\n          onDrop: _this.onFileDrop,\n          onDragOver: _this.onFileDrop,\n          onDragLeave: _this.onFileDrop\n        }, external_react_[\"createElement\"](rc_upload_es, Upload_extends({}, rcUploadProps, {\n          ref: _this.saveUpload,\n          className: \"\".concat(prefixCls, \"-btn\")\n        }), external_react_[\"createElement\"](\"div\", {\n          className: \"\".concat(prefixCls, \"-drag-container\")\n        }, children))), uploadList);\n      }\n\n      var uploadButtonCls = classnames_default()(prefixCls, (_classNames2 = {}, Upload_defineProperty(_classNames2, \"\".concat(prefixCls, \"-select\"), true), Upload_defineProperty(_classNames2, \"\".concat(prefixCls, \"-select-\").concat(listType), true), Upload_defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames2)); // Remove id to avoid open by label when trigger is hidden\n      // https://github.com/ant-design/ant-design/issues/14298\n\n      if (!children) {\n        delete rcUploadProps.id;\n      }\n\n      var uploadButton = external_react_[\"createElement\"](\"div\", {\n        className: uploadButtonCls,\n        style: children ? undefined : {\n          display: 'none'\n        }\n      }, external_react_[\"createElement\"](rc_upload_es, Upload_extends({}, rcUploadProps, {\n        ref: _this.saveUpload\n      })));\n\n      if (listType === 'picture-card') {\n        return external_react_[\"createElement\"](\"span\", {\n          className: className\n        }, uploadList, uploadButton);\n      }\n\n      return external_react_[\"createElement\"](\"span\", {\n        className: className\n      }, uploadButton, uploadList);\n    };\n\n    _this.state = {\n      fileList: props.fileList || props.defaultFileList || [],\n      dragState: 'drop'\n    };\n    return _this;\n  }\n\n  Upload_createClass(Upload, [{\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.clearProgressTimer();\n    }\n  }, {\n    key: \"autoUpdateProgress\",\n    value: function autoUpdateProgress(_, file) {\n      var _this2 = this;\n\n      var getPercent = genPercentAdd();\n      var curPercent = 0;\n      this.clearProgressTimer();\n      this.progressTimer = setInterval(function () {\n        curPercent = getPercent(curPercent);\n\n        _this2.onProgress({\n          percent: curPercent * 100\n        }, file);\n      }, 200);\n    }\n  }, {\n    key: \"handleRemove\",\n    value: function handleRemove(file) {\n      var _this3 = this;\n\n      var onRemove = this.props.onRemove;\n      var status = file.status;\n      file.status = 'removed'; // eslint-disable-line\n\n      Promise.resolve(typeof onRemove === 'function' ? onRemove(file) : onRemove).then(function (ret) {\n        // Prevent removing file\n        if (ret === false) {\n          file.status = status;\n          return;\n        }\n\n        var removedFileList = removeFileItem(file, _this3.state.fileList);\n\n        if (removedFileList) {\n          _this3.onChange({\n            file: file,\n            fileList: removedFileList\n          });\n        }\n      });\n    }\n  }, {\n    key: \"clearProgressTimer\",\n    value: function clearProgressTimer() {\n      clearInterval(this.progressTimer);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderUpload);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      if ('fileList' in nextProps) {\n        return {\n          fileList: nextProps.fileList || []\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Upload;\n}(external_react_[\"Component\"]);\n\nupload_Upload_Upload.defaultProps = {\n  type: 'select',\n  multiple: false,\n  action: '',\n  data: {},\n  accept: '',\n  beforeUpload: T,\n  showUploadList: true,\n  listType: 'text',\n  className: '',\n  disabled: false,\n  supportServerRender: true\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(upload_Upload_Upload);\n/* harmony default export */ var upload_Upload = (upload_Upload_Upload);\n// CONCATENATED MODULE: ./node_modules/antd/es/upload/Dragger.js\nfunction Dragger_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Dragger_typeof = function _typeof(obj) { return typeof obj; }; } else { Dragger_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Dragger_typeof(obj); }\n\nfunction Dragger_extends() { Dragger_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 Dragger_extends.apply(this, arguments); }\n\nfunction Dragger_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Dragger_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 Dragger_createClass(Constructor, protoProps, staticProps) { if (protoProps) Dragger_defineProperties(Constructor.prototype, protoProps); if (staticProps) Dragger_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Dragger_possibleConstructorReturn(self, call) { if (call && (Dragger_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Dragger_assertThisInitialized(self); }\n\nfunction Dragger_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Dragger_getPrototypeOf(o) { Dragger_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Dragger_getPrototypeOf(o); }\n\nfunction Dragger_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) Dragger_setPrototypeOf(subClass, superClass); }\n\nfunction Dragger_setPrototypeOf(o, p) { Dragger_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Dragger_setPrototypeOf(o, p); }\n\n\n\n\nvar Dragger_Dragger =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Dragger_inherits(Dragger, _React$Component);\n\n  function Dragger() {\n    Dragger_classCallCheck(this, Dragger);\n\n    return Dragger_possibleConstructorReturn(this, Dragger_getPrototypeOf(Dragger).apply(this, arguments));\n  }\n\n  Dragger_createClass(Dragger, [{\n    key: \"render\",\n    value: function render() {\n      var props = this.props;\n      return external_react_[\"createElement\"](upload_Upload, Dragger_extends({}, props, {\n        type: \"drag\",\n        style: Dragger_extends({}, props.style, {\n          height: props.height\n        })\n      }));\n    }\n  }]);\n\n  return Dragger;\n}(external_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/antd/es/upload/index.js\n\n\nupload_Upload.Dragger = Dragger_Dragger;\n/* harmony default export */ var es_upload = (upload_Upload);\n// CONCATENATED MODULE: ./src/components/common/FileUpload.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction FileUpload_createSuper(Derived) { var hasNativeReflectConstruct = FileUpload_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction FileUpload_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar FileUpload_Dragger = es_upload.Dragger;\n\nvar FileUpload_FileUpload = /*#__PURE__*/function (_Component) {\n  inherits_default()(FileUpload, _Component);\n\n  var _super = FileUpload_createSuper(FileUpload);\n\n  function FileUpload() {\n    var _this;\n\n    classCallCheck_default()(this, FileUpload);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      fileList: _this.props.value ? [_this.props.value] : []\n    };\n    return _this;\n  }\n\n  createClass_default()(FileUpload, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      this.setState({\n        fileList: nextProps.value ? [nextProps.value] : []\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          accept = _this$props.accept,\n          limit = _this$props.limit;\n      var fileList = this.state.fileList;\n      var props = {\n        accept: accept,\n        name: 'file',\n        multiple: false,\n        onChange: function onChange(info) {\n          var isLimit = info.file.size / 1024 / 1024 < limit;\n\n          if (!isLimit) {\n            message.error(\"Limited to \".concat(limit, \"MB or less\"));\n            return false;\n          }\n\n          var onChange = _this2.props.onChange;\n          onChange(info.file);\n        },\n        onRemove: function onRemove(file) {\n          _this2.setState(function (_ref) {\n            var fileList = _ref.fileList;\n            var index = fileList.indexOf(file);\n            var newFileList = fileList.slice();\n            newFileList.splice(index, 1);\n            return {\n              fileList: newFileList\n            };\n          }, function () {\n            var onChange = _this2.props.onChange;\n            onChange(null);\n          });\n        },\n        beforeUpload: function beforeUpload(file) {\n          var isLimit = file.size / 1024 / 1024 < limit;\n\n          if (!isLimit) {\n            return false;\n          }\n\n          _this2.setState({\n            fileList: [file]\n          });\n\n          return false;\n        },\n        fileList: fileList\n      };\n      return /*#__PURE__*/external_react_default.a.createElement(FileUpload_Dragger, props, /*#__PURE__*/external_react_default.a.createElement(\"p\", {\n        className: \"ant-upload-drag-icon\"\n      }, /*#__PURE__*/external_react_default.a.createElement(es_icon, {\n        type: \"inbox\"\n      })), /*#__PURE__*/external_react_default.a.createElement(\"p\", {\n        className: \"ant-upload-text\"\n      }, \"Click or drag file to this area to upload\"), /*#__PURE__*/external_react_default.a.createElement(\"p\", {\n        className: \"ant-upload-hint\"\n      }, \"Support for a single upload. Limited to \".concat(limit, \"MB or less\")));\n    }\n  }]);\n\n  return FileUpload;\n}(external_react_[\"Component\"]);\n\nFileUpload_FileUpload.propTypes = {\n  onChange: prop_types_default.a.func,\n  limit: prop_types_default.a.number,\n  accept: prop_types_default.a.string\n};\nFileUpload_FileUpload.defaultProps = {\n  limit: 5\n};\n/* harmony default export */ var common_FileUpload = (FileUpload_FileUpload);\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/ImageProperty.js\n\n\n\n\n\n/* harmony default export */ var ImageProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n\n    if (!data) {\n      return null;\n    }\n\n    var imageLoadType = data.imageLoadType || 'file';\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.image.image-load-type'),\n      colon: false\n    }, getFieldDecorator('imageLoadType', {\n      initialValue: imageLoadType\n    })( /*#__PURE__*/external_react_default.a.createElement(es_radio.Group, {\n      size: \"small\"\n    }, /*#__PURE__*/external_react_default.a.createElement(es_radio.Button, {\n      value: \"file\"\n    }, esm_i18next.t('imagemap.image.file-upload')), /*#__PURE__*/external_react_default.a.createElement(es_radio.Button, {\n      value: \"src\"\n    }, esm_i18next.t('imagemap.image.image-url'))))), imageLoadType === 'file' ? /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.file'),\n      colon: false\n    }, getFieldDecorator('file', {\n      rules: [{\n        required: true,\n        message: esm_i18next.t('validation.enter-property', {\n          arg: esm_i18next.t('common.file')\n        })\n      }],\n      initialValue: data.file\n    })( /*#__PURE__*/external_react_default.a.createElement(common_FileUpload, {\n      accept: \"image/*\"\n    }))) : /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('src', {\n      initialValue: data.src\n    })( /*#__PURE__*/external_react_default.a.createElement(common_UrlModal, {\n      form: form\n    }))));\n  }\n});\n// CONCATENATED MODULE: ./node_modules/antd/es/tag/CheckableTag.js\nfunction CheckableTag_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { CheckableTag_typeof = function _typeof(obj) { return typeof obj; }; } else { CheckableTag_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return CheckableTag_typeof(obj); }\n\nfunction CheckableTag_extends() { CheckableTag_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 CheckableTag_extends.apply(this, arguments); }\n\nfunction CheckableTag_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\nfunction CheckableTag_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction CheckableTag_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 CheckableTag_createClass(Constructor, protoProps, staticProps) { if (protoProps) CheckableTag_defineProperties(Constructor.prototype, protoProps); if (staticProps) CheckableTag_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction CheckableTag_possibleConstructorReturn(self, call) { if (call && (CheckableTag_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return CheckableTag_assertThisInitialized(self); }\n\nfunction CheckableTag_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction CheckableTag_getPrototypeOf(o) { CheckableTag_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return CheckableTag_getPrototypeOf(o); }\n\nfunction CheckableTag_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) CheckableTag_setPrototypeOf(subClass, superClass); }\n\nfunction CheckableTag_setPrototypeOf(o, p) { CheckableTag_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return CheckableTag_setPrototypeOf(o, p); }\n\nvar CheckableTag_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\nvar CheckableTag_CheckableTag =\n/*#__PURE__*/\nfunction (_React$Component) {\n  CheckableTag_inherits(CheckableTag, _React$Component);\n\n  function CheckableTag() {\n    var _this;\n\n    CheckableTag_classCallCheck(this, CheckableTag);\n\n    _this = CheckableTag_possibleConstructorReturn(this, CheckableTag_getPrototypeOf(CheckableTag).apply(this, arguments));\n\n    _this.handleClick = function () {\n      var _this$props = _this.props,\n          checked = _this$props.checked,\n          onChange = _this$props.onChange;\n\n      if (onChange) {\n        onChange(!checked);\n      }\n    };\n\n    _this.renderCheckableTag = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          className = _a.className,\n          checked = _a.checked,\n          restProps = CheckableTag_rest(_a, [\"prefixCls\", \"className\", \"checked\"]);\n\n      var prefixCls = getPrefixCls('tag', customizePrefixCls);\n      var cls = classnames_default()(prefixCls, (_classNames = {}, CheckableTag_defineProperty(_classNames, \"\".concat(prefixCls, \"-checkable\"), true), CheckableTag_defineProperty(_classNames, \"\".concat(prefixCls, \"-checkable-checked\"), checked), _classNames), className);\n      delete restProps.onChange; // TypeScript cannot check delete now.\n\n      return external_react_[\"createElement\"](\"div\", CheckableTag_extends({}, restProps, {\n        className: cls,\n        onClick: _this.handleClick\n      }));\n    };\n\n    return _this;\n  }\n\n  CheckableTag_createClass(CheckableTag, [{\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderCheckableTag);\n    }\n  }]);\n\n  return CheckableTag;\n}(external_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/antd/es/tag/index.js\nfunction tag_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { tag_typeof = function _typeof(obj) { return typeof obj; }; } else { tag_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return tag_typeof(obj); }\n\nfunction tag_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\nfunction tag_extends() { tag_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 tag_extends.apply(this, arguments); }\n\nfunction tag_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction tag_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 tag_createClass(Constructor, protoProps, staticProps) { if (protoProps) tag_defineProperties(Constructor.prototype, protoProps); if (staticProps) tag_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction tag_possibleConstructorReturn(self, call) { if (call && (tag_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return tag_assertThisInitialized(self); }\n\nfunction tag_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction tag_getPrototypeOf(o) { tag_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return tag_getPrototypeOf(o); }\n\nfunction tag_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) tag_setPrototypeOf(subClass, superClass); }\n\nfunction tag_setPrototypeOf(o, p) { tag_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return tag_setPrototypeOf(o, p); }\n\nvar tag_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar tag_InnerTag = function InnerTag(_a) {\n  var show = _a.show,\n      restProps = tag_rest(_a, [\"show\"]);\n\n  var divProps = es(restProps, ['onClose', 'afterClose', 'color', 'visible', 'closable']);\n  return external_react_[\"createElement\"](\"div\", divProps);\n};\n\nvar tag_Tag =\n/*#__PURE__*/\nfunction (_React$Component) {\n  tag_inherits(Tag, _React$Component);\n\n  function Tag() {\n    var _this;\n\n    tag_classCallCheck(this, Tag);\n\n    _this = tag_possibleConstructorReturn(this, tag_getPrototypeOf(Tag).apply(this, arguments));\n    _this.state = {\n      visible: true\n    };\n\n    _this.handleIconClick = function (e) {\n      _this.setVisible(false, e);\n    };\n\n    _this.animationEnd = function (_, existed) {\n      if (!existed) {\n        var afterClose = _this.props.afterClose;\n\n        if (afterClose) {\n          afterClose();\n        }\n      }\n    };\n\n    _this.renderTag = function (configProps) {\n      var getPrefixCls = configProps.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          children = _a.children,\n          otherProps = tag_rest(_a, [\"prefixCls\", \"children\"]);\n\n      var visible = _this.state.visible;\n      var prefixCls = getPrefixCls('tag', customizePrefixCls);\n      return external_react_[\"createElement\"](wave_Wave, null, external_react_[\"createElement\"](Animate[\"a\" /* default */], {\n        component: \"\",\n        showProp: \"show\",\n        transitionName: \"\".concat(prefixCls, \"-zoom\"),\n        onEnd: _this.animationEnd\n      }, external_react_[\"createElement\"](tag_InnerTag, tag_extends({\n        show: visible\n      }, otherProps, {\n        className: _this.getTagClassName(configProps),\n        style: _this.getTagStyle()\n      }), children, _this.renderCloseIcon())));\n    };\n\n    return _this;\n  }\n\n  tag_createClass(Tag, [{\n    key: \"setVisible\",\n    value: function setVisible(visible, e) {\n      var onClose = this.props.onClose;\n\n      if (onClose) {\n        onClose(e);\n      }\n\n      if (e.defaultPrevented) {\n        return;\n      }\n\n      if (!('visible' in this.props)) {\n        this.setState({\n          visible: visible\n        });\n      }\n    }\n  }, {\n    key: \"isPresetColor\",\n    value: function isPresetColor(color) {\n      if (!color) {\n        return false;\n      }\n\n      return /^(pink|red|yellow|orange|cyan|green|blue|purple|geekblue|magenta|volcano|gold|lime)(-inverse)?$/.test(color);\n    }\n  }, {\n    key: \"getTagStyle\",\n    value: function getTagStyle() {\n      var _this$props = this.props,\n          color = _this$props.color,\n          style = _this$props.style;\n      var isPresetColor = this.isPresetColor(color);\n      return tag_extends({\n        backgroundColor: color && !isPresetColor ? color : undefined\n      }, style);\n    }\n  }, {\n    key: \"getTagClassName\",\n    value: function getTagClassName(_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n      var _this$props2 = this.props,\n          customizePrefixCls = _this$props2.prefixCls,\n          className = _this$props2.className,\n          color = _this$props2.color;\n      var visible = this.state.visible;\n      var isPresetColor = this.isPresetColor(color);\n      var prefixCls = getPrefixCls('tag', customizePrefixCls);\n      return classnames_default()(prefixCls, (_classNames = {}, tag_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(color), isPresetColor), tag_defineProperty(_classNames, \"\".concat(prefixCls, \"-has-color\"), color && !isPresetColor), tag_defineProperty(_classNames, \"\".concat(prefixCls, \"-hidden\"), !visible), _classNames), className);\n    }\n  }, {\n    key: \"renderCloseIcon\",\n    value: function renderCloseIcon() {\n      var closable = this.props.closable;\n      return closable ? external_react_[\"createElement\"](es_icon, {\n        type: \"close\",\n        onClick: this.handleIconClick\n      }) : null;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderTag);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      if ('visible' in nextProps) {\n        return {\n          visible: nextProps.visible\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return Tag;\n}(external_react_[\"Component\"]);\n\ntag_Tag.CheckableTag = CheckableTag_CheckableTag;\ntag_Tag.defaultProps = {\n  closable: false\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(tag_Tag);\n/* harmony default export */ var es_tag = (tag_Tag);\n// EXTERNAL MODULE: ./node_modules/lodash/sortBy.js\nvar sortBy = __webpack_require__(691);\nvar sortBy_default = /*#__PURE__*/__webpack_require__.n(sortBy);\n\n// CONCATENATED MODULE: ./src/components/font/fonts.js\nvar fonts = {\n  \"default\": [{\n    name: 'Arial',\n    type: 'sans-serif',\n    ref: 'default'\n  }, {\n    name: 'Arial Black',\n    type: 'sans-serif',\n    ref: 'default'\n  }, {\n    name: 'Helvetica',\n    type: 'sans-serif',\n    ref: 'default'\n  }, {\n    name: 'Verdana',\n    type: 'sans-serif',\n    ref: 'default'\n  }, {\n    name: 'Trebuchet MS',\n    type: 'sans-serif',\n    ref: 'default'\n  }, {\n    name: 'Tahoma',\n    type: 'sans-serif',\n    ref: 'default'\n  }, {\n    name: 'MS Sans Serif',\n    type: 'sans-serif',\n    ref: 'default'\n  }, {\n    name: 'Symbol',\n    type: 'sans-serif',\n    ref: 'default'\n  }, {\n    name: 'Times',\n    type: 'serif',\n    ref: 'default'\n  }, {\n    name: 'Times New Roman',\n    type: 'serif',\n    ref: 'default'\n  }, {\n    name: 'MS Serif',\n    type: 'serif',\n    ref: 'default'\n  }, {\n    name: 'New York',\n    type: 'serif',\n    ref: 'default'\n  }, {\n    name: 'Palatino Linotype',\n    type: 'serif',\n    ref: 'default'\n  }, {\n    name: 'Book Antiqua',\n    type: 'serif',\n    ref: 'default'\n  }, {\n    name: 'Georgia',\n    type: 'serif',\n    ref: 'default'\n  }, {\n    name: 'Courier New',\n    type: 'monospace',\n    ref: 'default'\n  }, {\n    name: 'Courier',\n    type: 'monospace'\n  }, {\n    name: 'Comic Sans MS',\n    type: 'cursive',\n    ref: 'default'\n  }, {\n    name: 'Lucida Console',\n    type: 'cursive',\n    ref: 'default'\n  }, {\n    name: 'Impact',\n    type: 'fantasy',\n    ref: 'default'\n  }],\n  google: [{\n    name: 'Abril Fatface',\n    type: 'display',\n    ref: 'google'\n  }, {\n    name: 'Alegreya Sans',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Alegreya',\n    type: 'serif',\n    ref: 'google'\n  }, {\n    name: 'Amatic SC',\n    type: 'handwriting',\n    ref: 'google'\n  }, {\n    name: 'EB Garamond',\n    type: 'serif',\n    ref: 'google'\n  }, {\n    name: 'Fjalla One',\n    type: 'serif',\n    ref: 'google'\n  }, {\n    name: 'Josefin Sans',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Lato',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Merriweather',\n    type: 'serif',\n    ref: 'google'\n  }, {\n    name: 'Montserrat',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Noto Sans',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Open Sans Condensed',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Open Sans',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Oswald',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Playfair Display',\n    type: 'serif',\n    ref: 'google'\n  }, {\n    name: 'PT Sans Narrow',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'PT Sans',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Raleway',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Roboto Mono',\n    type: 'monospace',\n    ref: 'google'\n  }, {\n    name: 'Roboto Slab',\n    type: 'serif',\n    ref: 'google'\n  }, {\n    name: 'Roboto',\n    type: 'sans-serif',\n    ref: 'google'\n  }, {\n    name: 'Source Sans Pro',\n    type: 'serif',\n    ref: 'google'\n  }]\n};\n/* harmony default export */ var font_fonts = ({\n  getFonts: function getFonts() {\n    return fonts;\n  }\n});\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/TextProperty.js\n\n\n\n\n\n\n\n\n\n\nvar TextProperty_fonts = font_fonts.getFonts();\n/* harmony default export */ var TextProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 16\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: \"Font Family\",\n      colon: false\n    }, getFieldDecorator('fontFamily', {\n      initialValue: data.fontFamily\n    })( /*#__PURE__*/external_react_default.a.createElement(select_Select, null, Object.keys(TextProperty_fonts).map(function (font) {\n      return /*#__PURE__*/external_react_default.a.createElement(select_Select.OptGroup, {\n        key: font,\n        label: font.toUpperCase()\n      }, sortBy_default()(TextProperty_fonts[font], ['name']).map(function (f) {\n        return /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n          key: f.name,\n          value: f.name\n        }, f.name);\n      }));\n    }))))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 8\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: \"Font Size\",\n      colon: false\n    }, getFieldDecorator('fontSize', {\n      initialValue: data.fontSize || '32'\n    })( /*#__PURE__*/external_react_default.a.createElement(select_Select, null, Array.from({\n      length: 60\n    }, function (v, k) {\n      return /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n        key: k,\n        value: \"\".concat(k + 1)\n      }, k + 1);\n    }))))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('fontWeight', {\n      valuePropName: 'checked',\n      initialValue: data.fontWeight === 'bold'\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"bold\"\n    }))))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('fontStyle', {\n      valuePropName: 'checked',\n      initialValue: data.fontStyle === 'italic'\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"italic\"\n    }))))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('linethrough', {\n      valuePropName: 'checked',\n      initialValue: data.linethrough\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"strikethrough\"\n    }))))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('underline', {\n      valuePropName: 'checked',\n      initialValue: data.underline\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"underline\"\n    }))))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('textAlign.left', {\n      valuePropName: 'checked',\n      initialValue: data.textAlign === 'left'\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"align-left\"\n    }))))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('textAlign.center', {\n      valuePropName: 'checked',\n      initialValue: data.textAlign === 'center'\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"align-center\"\n    }))))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('textAlign.right', {\n      valuePropName: 'checked',\n      initialValue: data.textAlign === 'right'\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"align-right\"\n    }))))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('textAlign.justify', {\n      valuePropName: 'checked',\n      initialValue: data.textAlign === 'justify'\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"align-justify\"\n    }))))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: \"Line Height\",\n      colon: false\n    }, getFieldDecorator('lineHeight', {\n      rules: [{\n        type: 'number'\n      }],\n      initialValue: data.lineHeight\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      min: 0,\n      max: 100\n    })))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: \"Char Spacing\",\n      colon: false\n    }, getFieldDecorator('charSpacing', {\n      rules: [{\n        type: 'number'\n      }],\n      initialValue: data.charSpacing\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      min: 0,\n      max: 100\n    })))));\n  }\n});\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/MapProperty.js\n\n\n\n\n/* harmony default export */ var MapProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n\n    if (!data) {\n      return null;\n    }\n\n    var layout = data.layout || 'fixed';\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.name'),\n      colon: false\n    }, getFieldDecorator('name', {\n      rules: [{\n        required: false,\n        message: esm_i18next.t('validation.enter-arg', {\n          arg: esm_i18next.t('common.name')\n        })\n      }],\n      initialValue: data.name || ''\n    })( /*#__PURE__*/external_react_default.a.createElement(es_input, null))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.layout'),\n      colon: false\n    }, getFieldDecorator('layout', {\n      initialValue: layout\n    })( /*#__PURE__*/external_react_default.a.createElement(es_radio.Group, {\n      size: \"small\"\n    }, /*#__PURE__*/external_react_default.a.createElement(es_radio.Button, {\n      value: \"fixed\"\n    }, esm_i18next.t('common.fixed')), /*#__PURE__*/external_react_default.a.createElement(es_radio.Button, {\n      value: \"responsive\"\n    }, esm_i18next.t('common.responsive')), /*#__PURE__*/external_react_default.a.createElement(es_radio.Button, {\n      value: \"fullscreen\"\n    }, esm_i18next.t('common.fullscreen'))))), layout === 'fixed' ? /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.width'),\n      colon: false\n    }, getFieldDecorator('width', {\n      rules: [{\n        required: true,\n        message: esm_i18next.t('validation.enter-arg', {\n          arg: esm_i18next.t('common.width')\n        })\n      }],\n      initialValue: data.width * data.scaleX\n    })( /*#__PURE__*/external_react_default.a.createElement(input_number_InputNumber, null)))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.height'),\n      colon: false\n    }, getFieldDecorator('height', {\n      rules: [{\n        required: true,\n        message: esm_i18next.t('validation.enter-arg', {\n          arg: esm_i18next.t('common.height')\n        })\n      }],\n      initialValue: data.height * data.scaleY\n    })( /*#__PURE__*/external_react_default.a.createElement(input_number_InputNumber, null)))))) : null);\n  }\n});\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/LinkProperty.js\n\n\n\n\n/* harmony default export */ var LinkProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.link.link-enabled'),\n      colon: false\n    }, getFieldDecorator('link.enabled', {\n      rules: [{\n        required: true,\n        message: esm_i18next.t('validation.enter-property', {\n          arg: esm_i18next.t('imagemap.marker.link-enabled')\n        })\n      }],\n      valuePropName: 'checked',\n      initialValue: data.link.enabled\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, {\n      size: \"small\"\n    }))), data.link.enabled ? /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.state'),\n      colon: false\n    }, getFieldDecorator('link.state', {\n      initialValue: data.link.state || 'current'\n    })( /*#__PURE__*/external_react_default.a.createElement(select_Select, null, /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n      value: \"current\"\n    }, esm_i18next.t('common.current')), /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n      value: \"new\"\n    }, esm_i18next.t('common.new'))))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.url'),\n      colon: false\n    }, getFieldDecorator('link.url', {\n      rules: [{\n        required: true,\n        message: esm_i18next.t('validation.enter-property', {\n          arg: esm_i18next.t('common.url')\n        })\n      }],\n      initialValue: data.link.url || ''\n    })( /*#__PURE__*/external_react_default.a.createElement(es_input, null)))) : null);\n  }\n});\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/VideoProperty.js\n\n\n\n\n/* harmony default export */ var VideoProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n\n    if (!data) {\n      return null;\n    }\n\n    var videoLoadType = data.videoLoadType || 'file';\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 8\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: \"Auto Play\",\n      colon: false\n    }, getFieldDecorator('autoplay', {\n      rules: [{\n        type: 'boolean' // required: true,\n        // message: 'Please input rotation',\n\n      }],\n      valuePropName: 'checked',\n      initialValue: data.autoplay\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, null)))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 8\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: \"Muted\",\n      colon: false\n    }, getFieldDecorator('muted', {\n      rules: [{\n        type: 'boolean' // required: true,\n        // message: 'Please input rotation',\n\n      }],\n      valuePropName: 'checked',\n      initialValue: data.muted\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, null)))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 8\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: \"Loop\",\n      colon: false\n    }, getFieldDecorator('loop', {\n      rules: [{\n        type: 'boolean' // required: true,\n        // message: 'Please input rotation',\n\n      }],\n      valuePropName: 'checked',\n      initialValue: data.loop\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, null))))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: \"Video Load Type\",\n      colon: false\n    }, getFieldDecorator('videoLoadType', {\n      rules: [{// required: true,\n        // message: 'Please select icon',\n      }],\n      initialValue: videoLoadType\n    })( /*#__PURE__*/external_react_default.a.createElement(es_radio.Group, {\n      size: \"large\"\n    }, /*#__PURE__*/external_react_default.a.createElement(es_radio.Button, {\n      value: \"file\"\n    }, \"File Upload\"), /*#__PURE__*/external_react_default.a.createElement(es_radio.Button, {\n      value: \"src\"\n    }, \"Video URL\")))), videoLoadType === 'file' ? /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: \"File\",\n      colon: false\n    }, getFieldDecorator('file', {\n      rules: [{\n        required: true,\n        message: 'Please select video'\n      }],\n      initialValue: data.file\n    })(\n    /*#__PURE__*/\n    // <FileUpload fileList={data.file ? [data.file] : []} />,\n    external_react_default.a.createElement(common_FileUpload, {\n      accept: \"video/*\"\n    }))) : /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('src', {\n      rules: [{\n        required: true,\n        message: 'Please select image'\n      }],\n      initialValue: data.src\n    })( /*#__PURE__*/external_react_default.a.createElement(common_UrlModal, {\n      form: form\n    }))));\n  }\n});\n// CONCATENATED MODULE: ./node_modules/rc-notification/es/Notice.js\n\n\n\n\n\n\n\n\n\nvar Notice_Notice = function (_Component) {\n  helpers_inherits_default()(Notice, _Component);\n\n  function Notice() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, Notice);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = Notice.__proto__ || Object.getPrototypeOf(Notice)).call.apply(_ref, [this].concat(args))), _this), _this.close = function (e) {\n      if (e) {\n        e.stopPropagation();\n      }\n      _this.clearCloseTimer();\n      _this.props.onClose();\n    }, _this.startCloseTimer = function () {\n      if (_this.props.duration) {\n        _this.closeTimer = setTimeout(function () {\n          _this.close();\n        }, _this.props.duration * 1000);\n      }\n    }, _this.clearCloseTimer = function () {\n      if (_this.closeTimer) {\n        clearTimeout(_this.closeTimer);\n        _this.closeTimer = null;\n      }\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(Notice, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.startCloseTimer();\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps) {\n      if (this.props.duration !== prevProps.duration || this.props.update) {\n        this.restartCloseTimer();\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.clearCloseTimer();\n    }\n  }, {\n    key: 'restartCloseTimer',\n    value: function restartCloseTimer() {\n      this.clearCloseTimer();\n      this.startCloseTimer();\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _className;\n\n      var props = this.props;\n      var componentClass = props.prefixCls + '-notice';\n      var className = (_className = {}, defineProperty_default()(_className, '' + componentClass, 1), defineProperty_default()(_className, componentClass + '-closable', props.closable), defineProperty_default()(_className, props.className, !!props.className), _className);\n      return external_react_default.a.createElement(\n        'div',\n        {\n          className: node_modules_classnames_default()(className),\n          style: props.style,\n          onMouseEnter: this.clearCloseTimer,\n          onMouseLeave: this.startCloseTimer,\n          onClick: props.onClick\n        },\n        external_react_default.a.createElement(\n          'div',\n          { className: componentClass + '-content' },\n          props.children\n        ),\n        props.closable ? external_react_default.a.createElement(\n          'a',\n          { tabIndex: '0', onClick: this.close, className: componentClass + '-close' },\n          props.closeIcon || external_react_default.a.createElement('span', { className: componentClass + '-close-x' })\n        ) : null\n      );\n    }\n  }]);\n\n  return Notice;\n}(external_react_[\"Component\"]);\n\nNotice_Notice.propTypes = {\n  duration: prop_types_default.a.number,\n  onClose: prop_types_default.a.func,\n  children: prop_types_default.a.any,\n  update: prop_types_default.a.bool,\n  closeIcon: prop_types_default.a.node\n};\nNotice_Notice.defaultProps = {\n  onEnd: function onEnd() {},\n  onClose: function onClose() {},\n\n  duration: 1.5,\n  style: {\n    right: '50%'\n  }\n};\n/* harmony default export */ var es_Notice = (Notice_Notice);\n// CONCATENATED MODULE: ./node_modules/rc-notification/es/Notification.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar seed = 0;\nvar Notification_now = Date.now();\n\nfunction getUuid() {\n  return 'rcNotification_' + Notification_now + '_' + seed++;\n}\n\nvar Notification_Notification = function (_Component) {\n  helpers_inherits_default()(Notification, _Component);\n\n  function Notification() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, Notification);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = Notification.__proto__ || Object.getPrototypeOf(Notification)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n      notices: []\n    }, _this.add = function (notice) {\n      var key = notice.key = notice.key || getUuid();\n      var maxCount = _this.props.maxCount;\n\n      _this.setState(function (previousState) {\n        var notices = previousState.notices;\n        var noticeIndex = notices.map(function (v) {\n          return v.key;\n        }).indexOf(key);\n        var updatedNotices = notices.concat();\n        if (noticeIndex !== -1) {\n          updatedNotices.splice(noticeIndex, 1, notice);\n        } else {\n          if (maxCount && notices.length >= maxCount) {\n                                                notice.updateKey = updatedNotices[0].updateKey || updatedNotices[0].key;\n            updatedNotices.shift();\n          }\n          updatedNotices.push(notice);\n        }\n        return {\n          notices: updatedNotices\n        };\n      });\n    }, _this.remove = function (key) {\n      _this.setState(function (previousState) {\n        return {\n          notices: previousState.notices.filter(function (notice) {\n            return notice.key !== key;\n          })\n        };\n      });\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(Notification, [{\n    key: 'getTransitionName',\n    value: function getTransitionName() {\n      var props = this.props;\n      var transitionName = props.transitionName;\n      if (!transitionName && props.animation) {\n        transitionName = props.prefixCls + '-' + props.animation;\n      }\n      return transitionName;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this,\n          _className;\n\n      var props = this.props;\n      var notices = this.state.notices;\n\n      var noticeNodes = notices.map(function (notice, index) {\n        var update = Boolean(index === notices.length - 1 && notice.updateKey);\n        var key = notice.updateKey ? notice.updateKey : notice.key;\n        var onClose = Object(createChainedFunction[\"a\" /* default */])(_this2.remove.bind(_this2, notice.key), notice.onClose);\n        return external_react_default.a.createElement(\n          es_Notice,\n          extends_default()({\n            prefixCls: props.prefixCls\n          }, notice, {\n            key: key,\n            update: update,\n            onClose: onClose,\n            onClick: notice.onClick,\n            closeIcon: props.closeIcon\n          }),\n          notice.content\n        );\n      });\n      var className = (_className = {}, defineProperty_default()(_className, props.prefixCls, 1), defineProperty_default()(_className, props.className, !!props.className), _className);\n      return external_react_default.a.createElement(\n        'div',\n        { className: node_modules_classnames_default()(className), style: props.style },\n        external_react_default.a.createElement(\n          Animate[\"a\" /* default */],\n          { transitionName: this.getTransitionName() },\n          noticeNodes\n        )\n      );\n    }\n  }]);\n\n  return Notification;\n}(external_react_[\"Component\"]);\n\nNotification_Notification.propTypes = {\n  prefixCls: prop_types_default.a.string,\n  transitionName: prop_types_default.a.string,\n  animation: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.object]),\n  style: prop_types_default.a.object,\n  maxCount: prop_types_default.a.number,\n  closeIcon: prop_types_default.a.node\n};\nNotification_Notification.defaultProps = {\n  prefixCls: 'rc-notification',\n  animation: 'fade',\n  style: {\n    top: 65,\n    left: '50%'\n  }\n};\n\n\nNotification_Notification.newInstance = function newNotificationInstance(properties, callback) {\n  var _ref2 = properties || {},\n      getContainer = _ref2.getContainer,\n      props = objectWithoutProperties_default()(_ref2, ['getContainer']);\n\n  var div = document.createElement('div');\n  if (getContainer) {\n    var root = getContainer();\n    root.appendChild(div);\n  } else {\n    document.body.appendChild(div);\n  }\n  var called = false;\n  function ref(notification) {\n    if (called) {\n      return;\n    }\n    called = true;\n    callback({\n      notice: function notice(noticeProps) {\n        notification.add(noticeProps);\n      },\n      removeNotice: function removeNotice(key) {\n        notification.remove(key);\n      },\n\n      component: notification,\n      destroy: function destroy() {\n        external_react_dom_default.a.unmountComponentAtNode(div);\n        div.parentNode.removeChild(div);\n      }\n    });\n  }\n  external_react_dom_default.a.render(external_react_default.a.createElement(Notification_Notification, extends_default()({}, props, { ref: ref })), div);\n};\n\n/* harmony default export */ var es_Notification = (Notification_Notification);\n// CONCATENATED MODULE: ./node_modules/rc-notification/es/index.js\n\n/* harmony default export */ var rc_notification_es = (es_Notification);\n// CONCATENATED MODULE: ./node_modules/antd/es/notification/index.js\nfunction notification_extends() { notification_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 notification_extends.apply(this, arguments); }\n\n\n\n\nvar notificationInstance = {};\nvar defaultDuration = 4.5;\nvar defaultTop = 24;\nvar defaultBottom = 24;\nvar defaultPlacement = 'topRight';\nvar defaultGetContainer;\n\nfunction setNotificationConfig(options) {\n  var duration = options.duration,\n      placement = options.placement,\n      bottom = options.bottom,\n      top = options.top,\n      getContainer = options.getContainer;\n\n  if (duration !== undefined) {\n    defaultDuration = duration;\n  }\n\n  if (placement !== undefined) {\n    defaultPlacement = placement;\n  }\n\n  if (bottom !== undefined) {\n    defaultBottom = bottom;\n  }\n\n  if (top !== undefined) {\n    defaultTop = top;\n  }\n\n  if (getContainer !== undefined) {\n    defaultGetContainer = getContainer;\n  }\n}\n\nfunction getPlacementStyle(placement) {\n  var style;\n\n  switch (placement) {\n    case 'topLeft':\n      style = {\n        left: 0,\n        top: defaultTop,\n        bottom: 'auto'\n      };\n      break;\n\n    case 'topRight':\n      style = {\n        right: 0,\n        top: defaultTop,\n        bottom: 'auto'\n      };\n      break;\n\n    case 'bottomLeft':\n      style = {\n        left: 0,\n        top: 'auto',\n        bottom: defaultBottom\n      };\n      break;\n\n    default:\n      style = {\n        right: 0,\n        top: 'auto',\n        bottom: defaultBottom\n      };\n      break;\n  }\n\n  return style;\n}\n\nfunction getNotificationInstance(prefixCls, placement, callback) {\n  var cacheKey = \"\".concat(prefixCls, \"-\").concat(placement);\n\n  if (notificationInstance[cacheKey]) {\n    callback(notificationInstance[cacheKey]);\n    return;\n  }\n\n  rc_notification_es.newInstance({\n    prefixCls: prefixCls,\n    className: \"\".concat(prefixCls, \"-\").concat(placement),\n    style: getPlacementStyle(placement),\n    getContainer: defaultGetContainer,\n    closeIcon: external_react_[\"createElement\"](es_icon, {\n      className: \"\".concat(prefixCls, \"-close-icon\"),\n      type: 'close'\n    })\n  }, function (notification) {\n    notificationInstance[cacheKey] = notification;\n    callback(notification);\n  });\n}\n\nvar typeToIcon = {\n  success: 'check-circle-o',\n  info: 'info-circle-o',\n  error: 'close-circle-o',\n  warning: 'exclamation-circle-o'\n};\n\nfunction notification_notice(args) {\n  var outerPrefixCls = args.prefixCls || 'ant-notification';\n  var prefixCls = \"\".concat(outerPrefixCls, \"-notice\");\n  var duration = args.duration === undefined ? defaultDuration : args.duration;\n  var iconNode = null;\n\n  if (args.icon) {\n    iconNode = external_react_[\"createElement\"](\"span\", {\n      className: \"\".concat(prefixCls, \"-icon\")\n    }, args.icon);\n  } else if (args.type) {\n    var iconType = typeToIcon[args.type];\n    iconNode = external_react_[\"createElement\"](es_icon, {\n      className: \"\".concat(prefixCls, \"-icon \").concat(prefixCls, \"-icon-\").concat(args.type),\n      type: iconType\n    });\n  }\n\n  var autoMarginTag = !args.description && iconNode ? external_react_[\"createElement\"](\"span\", {\n    className: \"\".concat(prefixCls, \"-message-single-line-auto-margin\")\n  }) : null;\n  getNotificationInstance(outerPrefixCls, args.placement || defaultPlacement, function (notification) {\n    notification.notice({\n      content: external_react_[\"createElement\"](\"div\", {\n        className: iconNode ? \"\".concat(prefixCls, \"-with-icon\") : ''\n      }, iconNode, external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-message\")\n      }, autoMarginTag, args.message), external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-description\")\n      }, args.description), args.btn ? external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-btn\")\n      }, args.btn) : null),\n      duration: duration,\n      closable: true,\n      onClose: args.onClose,\n      onClick: args.onClick,\n      key: args.key,\n      style: args.style || {},\n      className: args.className\n    });\n  });\n}\n\nvar api = {\n  open: notification_notice,\n  close: function close(key) {\n    Object.keys(notificationInstance).forEach(function (cacheKey) {\n      return notificationInstance[cacheKey].removeNotice(key);\n    });\n  },\n  config: setNotificationConfig,\n  destroy: function destroy() {\n    Object.keys(notificationInstance).forEach(function (cacheKey) {\n      notificationInstance[cacheKey].destroy();\n      delete notificationInstance[cacheKey];\n    });\n  }\n};\n['success', 'info', 'warning', 'error'].forEach(function (type) {\n  api[type] = function (args) {\n    return api.open(notification_extends({}, args, {\n      type: type\n    }));\n  };\n});\napi.warn = api.warning;\n/* harmony default export */ var es_notification = (api);\n// EXTERNAL MODULE: ./node_modules/react-ace/lib/index.js\nvar react_ace_lib = __webpack_require__(86);\nvar react_ace_lib_default = /*#__PURE__*/__webpack_require__.n(react_ace_lib);\n\n// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-html.js\nvar mode_html = __webpack_require__(670);\n\n// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-css.js\nvar mode_css = __webpack_require__(1611);\n\n// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-javascript.js\nvar mode_javascript = __webpack_require__(346);\n\n// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/theme-github.js\nvar theme_github = __webpack_require__(189);\n\n// CONCATENATED MODULE: ./src/components/ace/AcePreview.js\n\n\n\n\n\n\n\n\n\nfunction AcePreview_createSuper(Derived) { var hasNativeReflectConstruct = AcePreview_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction AcePreview_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar AcePreview_AcePreview = /*#__PURE__*/function (_Component) {\n  inherits_default()(AcePreview, _Component);\n\n  var _super = AcePreview_createSuper(AcePreview);\n\n  function AcePreview() {\n    var _this;\n\n    classCallCheck_default()(this, AcePreview);\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 = _super.call.apply(_super, [this].concat(args));\n\n    _this.iframeRender = function (html, css, js) {\n      while (_this.container.hasChildNodes()) {\n        _this.container.removeChild(_this.container.firstChild);\n      }\n\n      var iframe = document.createElement('iframe');\n      iframe.width = '100%';\n      iframe.height = '200px';\n\n      _this.container.appendChild(iframe);\n\n      var style = document.createElement('style');\n      style.type = 'text/css';\n      style.innerHTML = css;\n      iframe.contentDocument.head.appendChild(style);\n      var script = document.createElement('script');\n      script.type = 'text/javascript';\n      script.innerHTML = js;\n      iframe.contentDocument.head.appendChild(script);\n      iframe.contentDocument.body.innerHTML = html;\n    };\n\n    return _this;\n  }\n\n  createClass_default()(AcePreview, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props = this.props,\n          html = _this$props.html,\n          css = _this$props.css,\n          js = _this$props.js;\n      this.iframeRender(html, css, js);\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      if (this.container) {\n        var _this$props2 = this.props,\n            html = _this$props2.html,\n            css = _this$props2.css,\n            js = _this$props2.js;\n\n        if (html !== prevProps.html || css !== prevProps.css || js !== prevProps.js) {\n          this.iframeRender(html, css, js);\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        ref: function ref(c) {\n          _this2.container = c;\n        },\n        id: \"code-preview\",\n        style: {\n          width: '100%',\n          height: 200\n        }\n      });\n    }\n  }]);\n\n  return AcePreview;\n}(external_react_[\"Component\"]);\n\nAcePreview_AcePreview.propTypes = {\n  html: prop_types_default.a.string,\n  css: prop_types_default.a.string,\n  js: prop_types_default.a.string\n};\nAcePreview_AcePreview.defaultProps = {\n  html: '',\n  css: '',\n  js: ''\n};\n/* harmony default export */ var ace_AcePreview = (AcePreview_AcePreview);\n// CONCATENATED MODULE: ./src/components/ace/AceEditor.js\n\n\n\n\n\n\n\n\n\n\n\nfunction AceEditor_createSuper(Derived) { var hasNativeReflectConstruct = AceEditor_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction AceEditor_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\n\n\nvar defaultStyle = {\n  padding: 12\n};\n\nvar AceEditor_AceEditor = /*#__PURE__*/function (_Component) {\n  inherits_default()(AceEditor, _Component);\n\n  var _super = AceEditor_createSuper(AceEditor);\n\n  function AceEditor() {\n    var _this;\n\n    classCallCheck_default()(this, AceEditor);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.handlers = {\n      onChangeHTML: debounce_default()(function (value) {\n        _this.setState({\n          html: value,\n          htmlAnnotations: _this.htmlRef.editor.getSession().getAnnotations()\n        }, function () {\n          if (_this.props.onChangeHTML) {\n            _this.props.onChangeHTML(value);\n          }\n        });\n      }, 500),\n      onChangeCSS: debounce_default()(function (value) {\n        _this.setState({\n          css: value,\n          cssAnnotations: _this.cssRef.editor.getSession().getAnnotations()\n        }, function () {\n          if (_this.props.onChangeCSS) {\n            _this.props.onChangeCSS(value);\n          }\n        });\n      }, 500),\n      onChangeJS: debounce_default()(function (value) {\n        _this.setState({\n          js: value,\n          jsAnnotations: _this.jsRef.editor.getSession().getAnnotations()\n        }, function () {\n          if (_this.props.onChangeJS) {\n            _this.props.onChangeJS(value);\n          }\n        });\n      }, 500),\n      onValidateHTML: function onValidateHTML(annotations) {\n        var i = annotations.length;\n        var len = annotations.length;\n\n        while (i--) {\n          if (/doctype first\\. Expected/.test(annotations[i].text)) {\n            annotations.splice(i, 1);\n          } else if (/Unexpected End of file\\. Expected/.test(annotations[i].text)) {\n            annotations.splice(i, 1);\n          }\n        }\n\n        if (len > annotations.length) {\n          _this.htmlRef.editor.getSession().setAnnotations(annotations);\n        }\n      },\n      getAnnotations: function getAnnotations() {\n        var _this$state = _this.state,\n            htmlAnnotations = _this$state.htmlAnnotations,\n            cssAnnotations = _this$state.cssAnnotations,\n            jsAnnotations = _this$state.jsAnnotations;\n        return {\n          htmlAnnotations: htmlAnnotations,\n          cssAnnotations: cssAnnotations,\n          jsAnnotations: jsAnnotations\n        };\n      },\n      getCodes: function getCodes() {\n        var _this$state2 = _this.state,\n            html = _this$state2.html,\n            css = _this$state2.css,\n            js = _this$state2.js;\n        return {\n          html: html,\n          css: css,\n          js: js\n        };\n      }\n    };\n    _this.state = {\n      html: _this.props.html,\n      css: _this.props.css,\n      js: _this.props.js,\n      htmlAnnotations: [],\n      cssAnnotations: [],\n      jsAnnotations: []\n    };\n    return _this;\n  }\n\n  createClass_default()(AceEditor, [{\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.htmlRef.editor.destroy();\n      this.cssRef.editor.destroy();\n      this.jsRef.editor.destroy();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          isHTML = _this$props.isHTML,\n          isCSS = _this$props.isCSS,\n          isJS = _this$props.isJS,\n          isPreview = _this$props.isPreview;\n      var _this$state3 = this.state,\n          html = _this$state3.html,\n          css = _this$state3.css,\n          js = _this$state3.js;\n      return /*#__PURE__*/external_react_default.a.createElement(es_row, null, isHTML ? /*#__PURE__*/external_react_default.a.createElement(col, {\n        span: 12,\n        style: defaultStyle\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: \"HTML\",\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(react_ace_lib_default.a, {\n        ref: function ref(c) {\n          _this2.htmlRef = c;\n        },\n        mode: \"html\",\n        theme: \"github\",\n        width: \"100%\",\n        height: \"200px\",\n        defaultValue: html,\n        value: html,\n        editorProps: {\n          $blockScrolling: true\n        },\n        onChange: this.handlers.onChangeHTML\n      }))) : null, isCSS ? /*#__PURE__*/external_react_default.a.createElement(col, {\n        span: 12,\n        style: defaultStyle\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: \"CSS\",\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(react_ace_lib_default.a, {\n        ref: function ref(c) {\n          _this2.cssRef = c;\n        },\n        mode: \"css\",\n        theme: \"github\",\n        width: \"100%\",\n        height: \"200px\",\n        defaultValue: css,\n        value: css,\n        editorProps: {\n          $blockScrolling: true\n        },\n        onChange: this.handlers.onChangeCSS\n      }))) : null, isJS ? /*#__PURE__*/external_react_default.a.createElement(col, {\n        span: 12,\n        style: defaultStyle\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: \"JS\",\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(react_ace_lib_default.a, {\n        ref: function ref(c) {\n          _this2.jsRef = c;\n        },\n        mode: \"javascript\",\n        theme: \"github\",\n        width: \"100%\",\n        height: \"200px\",\n        defaultValue: js,\n        value: js,\n        editorProps: {\n          $blockScrolling: true\n        },\n        onChange: this.handlers.onChangeJS\n      }))) : null, isPreview ? /*#__PURE__*/external_react_default.a.createElement(col, {\n        span: 12,\n        style: defaultStyle\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: \"Preview\",\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(ace_AcePreview, {\n        html: html,\n        css: css,\n        js: js\n      }))) : null);\n    }\n  }]);\n\n  return AceEditor;\n}(external_react_[\"Component\"]);\n\nAceEditor_AceEditor.propTypes = {\n  isHTML: prop_types_default.a.bool,\n  isCSS: prop_types_default.a.bool,\n  isJS: prop_types_default.a.bool,\n  isPreview: prop_types_default.a.bool,\n  html: prop_types_default.a.string,\n  css: prop_types_default.a.string,\n  js: prop_types_default.a.string\n};\nAceEditor_AceEditor.defaultProps = {\n  isHTML: true,\n  isCSS: true,\n  isJS: true,\n  isPreview: true,\n  html: '',\n  css: '',\n  js: ''\n};\n/* harmony default export */ var ace_AceEditor = (AceEditor_AceEditor);\n// CONCATENATED MODULE: ./src/components/ace/AceModal.js\n\n\n\n\n\n\n\n\n\nfunction AceModal_createSuper(Derived) { var hasNativeReflectConstruct = AceModal_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction AceModal_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\nes_notification.config({\n  top: 80,\n  duration: 1\n});\n\nvar AceModal_AceModal = /*#__PURE__*/function (_Component) {\n  inherits_default()(AceModal, _Component);\n\n  var _super = AceModal_createSuper(AceModal);\n\n  function AceModal() {\n    var _this;\n\n    classCallCheck_default()(this, AceModal);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.handlers = {\n      onOk: function onOk() {\n        var onChange = _this.props.onChange;\n\n        var code = _this.aceRef.handlers.getCodes();\n\n        onChange(code);\n\n        _this.setState({\n          visible: false,\n          code: code\n        });\n      },\n      onCancel: function onCancel() {\n        _this.modalHandlers.onHide();\n      },\n      onClick: function onClick() {\n        _this.modalHandlers.onShow();\n      }\n    };\n    _this.modalHandlers = {\n      onShow: function onShow() {\n        _this.setState({\n          visible: true\n        });\n      },\n      onHide: function onHide() {\n        _this.setState({\n          visible: false\n        });\n      }\n    };\n    _this.state = {\n      code: _this.props.value || {\n        html: '',\n        css: '',\n        js: ''\n      },\n      visible: false\n    };\n    return _this;\n  }\n\n  createClass_default()(AceModal, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      this.setState({\n        code: nextProps.value || {\n          html: '',\n          css: '',\n          js: ''\n        }\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$handlers = this.handlers,\n          onOk = _this$handlers.onOk,\n          onCancel = _this$handlers.onCancel,\n          onClick = _this$handlers.onClick;\n      var form = this.props.form;\n      var getFieldDecorator = form.getFieldDecorator;\n      var _this$state = this.state,\n          _this$state$code = _this$state.code,\n          html = _this$state$code.html,\n          css = _this$state$code.css,\n          js = _this$state$code.js,\n          visible = _this$state.visible;\n      var label = /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        style: {\n          marginRight: 8\n        }\n      }, \"Code Editor\"), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        onClick: onClick,\n        shape: \"circle\"\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"code\"\n      })));\n      return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: label,\n        colon: false\n      }, getFieldDecorator('code', {\n        rules: [{\n          required: true,\n          message: 'Please input code'\n        }],\n        initialValue: ''\n      })( /*#__PURE__*/external_react_default.a.createElement(\"span\", null))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: \"HTML\",\n        colon: false\n      }, getFieldDecorator('html', {\n        initialValue: html || ''\n      })( /*#__PURE__*/external_react_default.a.createElement(\"pre\", {\n        style: {\n          wordBreak: 'break-all',\n          lineHeight: '1.2em'\n        }\n      }, html))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: \"CSS\",\n        colon: false\n      }, getFieldDecorator('css', {\n        initialValue: css || ''\n      })( /*#__PURE__*/external_react_default.a.createElement(\"pre\", {\n        style: {\n          wordBreak: 'break-all',\n          lineHeight: '1.2em'\n        }\n      }, css))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: \"JS\",\n        colon: false\n      }, getFieldDecorator('js', {\n        initialValue: js || ''\n      })( /*#__PURE__*/external_react_default.a.createElement(\"pre\", {\n        style: {\n          wordBreak: 'break-all',\n          lineHeight: '1.2em'\n        }\n      }, js))), /*#__PURE__*/external_react_default.a.createElement(modal, {\n        onCancel: onCancel,\n        onOk: onOk,\n        visible: visible,\n        width: \"80%\"\n      }, /*#__PURE__*/external_react_default.a.createElement(ace_AceEditor, {\n        ref: function ref(c) {\n          _this2.aceRef = c;\n        },\n        html: html,\n        css: css,\n        js: js\n      })));\n    }\n  }]);\n\n  return AceModal;\n}(external_react_[\"Component\"]);\n\nAceModal_AceModal.propTypes = {\n  value: prop_types_default.a.any,\n  onChange: prop_types_default.a.func,\n  form: prop_types_default.a.any\n};\n/* harmony default export */ var ace_AceModal = (AceModal_AceModal);\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/ElementProperty.js\n\n\n\n/* harmony default export */ var ElementProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n\n    if (!data) {\n      return null;\n    }\n\n    return /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('code', {\n      rules: [{\n        required: true,\n        message: 'Please input code'\n      }],\n      initialValue: data.code\n    })( /*#__PURE__*/external_react_default.a.createElement(ace_AceModal, {\n      form: form,\n      code: data.code\n    })));\n  }\n});\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/IframeProperty.js\n\n\n\n/* harmony default export */ var IframeProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n\n    if (!data) {\n      return null;\n    }\n\n    return /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('src', {\n      rules: [{\n        required: true,\n        message: 'Please select image'\n      }],\n      initialValue: data.src\n    })( /*#__PURE__*/external_react_default.a.createElement(common_UrlModal, {\n      form: form\n    })));\n  }\n});\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/AnimationProperty.js\n\n\n\n\n\n\n/* harmony default export */ var AnimationProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n\n    if (!data) {\n      return null;\n    }\n\n    var type = data.animation.type || 'none';\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.animation.animation-type'),\n      colon: false\n    }, getFieldDecorator('animation.type', {\n      initialValue: type\n    })( /*#__PURE__*/external_react_default.a.createElement(select_Select, null, /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n      value: \"none\"\n    }, esm_i18next.t('imagemap.animation.none')), /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n      value: \"fade\"\n    }, esm_i18next.t('imagemap.animation.fade')), /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n      value: \"bounce\"\n    }, esm_i18next.t('imagemap.animation.bounce')), /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n      value: \"shake\"\n    }, esm_i18next.t('imagemap.animation.shake')), /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n      value: \"scaling\"\n    }, esm_i18next.t('imagemap.animation.scaling')), /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n      value: \"rotation\"\n    }, esm_i18next.t('imagemap.animation.rotation')), /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n      value: \"flash\"\n    }, esm_i18next.t('imagemap.animation.flash'))))), type === 'none' ? null : /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.animation.auto-play'),\n      colon: false\n    }, getFieldDecorator('animation.autoplay', {\n      rules: [{\n        type: 'boolean'\n      }],\n      valuePropName: 'checked',\n      initialValue: data.animation.autoplay\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, {\n      size: \"small\"\n    })))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.loop'),\n      colon: false\n    }, getFieldDecorator('animation.loop', {\n      rules: [{\n        type: 'boolean'\n      }],\n      valuePropName: 'checked',\n      initialValue: data.animation.loop\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, {\n      size: \"small\"\n    }))))), type !== 'shake' ? /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.delay'),\n      colon: false\n    }, getFieldDecorator('animation.delay', {\n      rules: [{\n        type: 'number',\n        min: 0,\n        max: 5000\n      }],\n      initialValue: data.animation.delay || 0\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      min: 0,\n      max: 5000,\n      step: 100\n    })))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 12\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.duration'),\n      colon: false\n    }, getFieldDecorator('animation.duration', {\n      rules: [{\n        type: 'number',\n        min: 100,\n        max: 5000\n      }],\n      initialValue: data.animation.duration\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      min: 100,\n      max: 5000,\n      step: 100\n    }))))) : null, this.getComponentType(type, data, getFieldDecorator), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.animation.playback'),\n      colon: false\n    }, /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 8\n    }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n      block: true,\n      size: \"small\",\n      onClick: function onClick() {\n        canvasRef.handler.animationHandler.play(data.id);\n      }\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"play\",\n      style: {\n        marginRight: 8\n      }\n    }), esm_i18next.t('action.start'))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 8\n    }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n      block: true,\n      size: \"small\",\n      onClick: function onClick() {\n        canvasRef.handler.animationHandler.pause(data.id);\n      }\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"pause\",\n      style: {\n        marginRight: 8\n      }\n    }), esm_i18next.t('action.pause'))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      span: 8\n    }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n      block: true,\n      size: \"small\",\n      onClick: function onClick() {\n        canvasRef.handler.animationHandler.stop(data.id);\n      }\n    }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n      name: \"stop\",\n      style: {\n        marginRight: 8\n      }\n    }), esm_i18next.t('action.stop')))))));\n  },\n  getComponentType: function getComponentType(type, data, getFieldDecorator) {\n    var component;\n\n    if (type === 'fade') {\n      component = /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('common.opacity'),\n        colon: false\n      }, getFieldDecorator('animation.opacity', {\n        rules: [{\n          type: 'number',\n          min: 0,\n          max: 1\n        }],\n        initialValue: data.animation.opacity || 0\n      })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n        min: 0,\n        max: 1,\n        step: 0.1\n      })));\n    } else if (type === 'bounce') {\n      component = /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('imagemap.animation.bounce-type'),\n        colon: false\n      }, getFieldDecorator('animation.bounce', {\n        initialValue: data.animation.bounce || 'hotizontal'\n      })( /*#__PURE__*/external_react_default.a.createElement(select_Select, null, /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n        value: \"hotizontal\"\n      }, \"Horizontal\"), /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n        value: \"vertical\"\n      }, \"Vertical\")))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('common.offset'),\n        colon: false\n      }, getFieldDecorator('animation.offset', {\n        rules: [{\n          type: 'number',\n          min: 1,\n          max: 10\n        }],\n        initialValue: data.animation.offset || 1\n      })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n        min: 1,\n        max: 10,\n        step: 1\n      }))));\n    } else if (type === 'shake') {\n      component = /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('imagemap.animation.shake-type'),\n        colon: false\n      }, getFieldDecorator('animation.shake', {\n        initialValue: data.animation.shake || 'hotizontal'\n      })( /*#__PURE__*/external_react_default.a.createElement(select_Select, null, /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n        value: \"hotizontal\"\n      }, esm_i18next.t('common.horizontal')), /*#__PURE__*/external_react_default.a.createElement(select_Select.Option, {\n        value: \"vertical\"\n      }, esm_i18next.t('common.vertical'))))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('common.offset'),\n        colon: false\n      }, getFieldDecorator('animation.offset', {\n        rules: [{\n          type: 'number',\n          min: 1,\n          max: 10\n        }],\n        initialValue: data.animation.offset || 1\n      })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n        min: 1,\n        max: 10,\n        step: 1\n      }))));\n    } else if (type === 'scaling') {\n      component = /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('imagemap.animation.scaling'),\n        colon: false\n      }, getFieldDecorator('animation.scale', {\n        rules: [{\n          type: 'number',\n          min: 1,\n          max: 5\n        }],\n        initialValue: data.animation.scale || 2\n      })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n        min: 1,\n        max: 5,\n        step: 0.1\n      })));\n    } else if (type === 'rotation') {\n      component = /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('common.angle'),\n        colon: false\n      }, getFieldDecorator('animation.angle', {\n        rules: [{\n          type: 'number',\n          min: 0,\n          max: 360\n        }],\n        initialValue: data.animation.angle || 360\n      })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n        min: 0,\n        max: 360\n      })));\n    } else if (type === 'flash') {\n      component = /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n        span: 12\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('imagemap.style.fill-color'),\n        colon: false\n      }, getFieldDecorator('animation.fill', {\n        initialValue: data.animation.fill || data.fill\n      })( /*#__PURE__*/external_react_default.a.createElement(common_ColorPicker, null)))), /*#__PURE__*/external_react_default.a.createElement(col, {\n        span: 12\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('imagemap.style.stroke-color'),\n        colon: false\n      }, getFieldDecorator('animation.stroke', {\n        initialValue: data.animation.stroke || data.stroke\n      })( /*#__PURE__*/external_react_default.a.createElement(common_ColorPicker, null)))));\n    } else {\n      component = /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n        span: 12\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('common.value'),\n        colon: false\n      }, getFieldDecorator('animation.value', {\n        rules: [{\n          type: 'number',\n          min: 1,\n          max: 10\n        }],\n        initialValue: data.animation.value || 1\n      })( /*#__PURE__*/external_react_default.a.createElement(input_number_InputNumber, {\n        min: 1,\n        max: 10\n      })))));\n    }\n\n    return component;\n  }\n});\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/ShadowProperty.js\n\n\n\n\n/* harmony default export */ var ShadowProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n    var enabeld = data.shadow ? data.shadow.enabled || false : false;\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.shadow.shadow-enabled'),\n      colon: false\n    }, getFieldDecorator('shadow.enabled', {\n      valuePropName: 'checked',\n      initialValue: enabeld\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, {\n      size: \"small\"\n    }))), enabeld ? /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.color'),\n      colon: false\n    }, getFieldDecorator('shadow.color', {\n      initialValue: data.shadow.color || 'rgba(0, 0, 0, 0)'\n    })( /*#__PURE__*/external_react_default.a.createElement(common_ColorPicker, null))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('common.blur'),\n      colon: false\n    }, getFieldDecorator('shadow.blur', {\n      rules: [{\n        type: 'number',\n        min: 0,\n        max: 100\n      }],\n      initialValue: data.shadow.blur || 15\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      min: 0,\n      max: 100\n    }))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.shadow.offset-x'),\n      colon: false\n    }, getFieldDecorator('shadow.offsetX', {\n      rules: [{\n        type: 'number',\n        min: 0,\n        max: 100\n      }],\n      initialValue: data.shadow.offsetX || 10\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      min: 0,\n      max: 100\n    }))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.shadow.offset-y'),\n      colon: false\n    }, getFieldDecorator('shadow.offsetY', {\n      rules: [{\n        type: 'number',\n        min: 0,\n        max: 100\n      }],\n      initialValue: data.shadow.offsetY || 10\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      min: 0,\n      max: 100\n    })))) : null);\n  }\n});\n// EXTERNAL MODULE: ./node_modules/lodash/merge.js\nvar lodash_merge = __webpack_require__(692);\nvar merge_default = /*#__PURE__*/__webpack_require__.n(lodash_merge);\n\n// EXTERNAL MODULE: ./node_modules/rc-table/node_modules/warning/browser.js\nvar browser = __webpack_require__(693);\nvar browser_default = /*#__PURE__*/__webpack_require__.n(browser);\n\n// CONCATENATED MODULE: ./node_modules/rc-table/es/utils.js\n\n\nvar scrollbarVerticalSize = void 0;\nvar scrollbarHorizontalSize = void 0;\n\n// Measure scrollbar width for padding body during modal show/hide\nvar scrollbarMeasure = {\n  position: 'absolute',\n  top: '-9999px',\n  width: '50px',\n  height: '50px'\n};\n\nfunction measureScrollbar() {\n  var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'vertical';\n\n  if (typeof document === 'undefined' || typeof window === 'undefined') {\n    return 0;\n  }\n  var isVertical = direction === 'vertical';\n  if (isVertical && scrollbarVerticalSize) {\n    return scrollbarVerticalSize;\n  } else if (!isVertical && scrollbarHorizontalSize) {\n    return scrollbarHorizontalSize;\n  }\n  var scrollDiv = document.createElement('div');\n  Object.keys(scrollbarMeasure).forEach(function (scrollProp) {\n    scrollDiv.style[scrollProp] = scrollbarMeasure[scrollProp];\n  });\n  // Append related overflow style\n  if (isVertical) {\n    scrollDiv.style.overflowY = 'scroll';\n  } else {\n    scrollDiv.style.overflowX = 'scroll';\n  }\n  document.body.appendChild(scrollDiv);\n  var size = 0;\n  if (isVertical) {\n    size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n    scrollbarVerticalSize = size;\n  } else {\n    size = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n    scrollbarHorizontalSize = size;\n  }\n\n  document.body.removeChild(scrollDiv);\n  return size;\n}\n\nfunction utils_debounce(func, wait, immediate) {\n  var timeout = void 0;\n  function debounceFunc() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var context = this;\n    // https://fb.me/react-event-pooling\n    if (args[0] && args[0].persist) {\n      args[0].persist();\n    }\n    var later = function later() {\n      timeout = null;\n      if (!immediate) {\n        func.apply(context, args);\n      }\n    };\n    var callNow = immediate && !timeout;\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n    if (callNow) {\n      func.apply(context, args);\n    }\n  }\n  debounceFunc.cancel = function cancel() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n  return debounceFunc;\n}\n\nvar utils_warned = {};\nfunction warningOnce(condition, format, args) {\n  if (!utils_warned[format]) {\n    browser_default()(condition, format, args);\n    utils_warned[format] = !condition;\n  }\n}\n\nfunction utils_remove(array, item) {\n  var index = array.indexOf(item);\n  var front = array.slice(0, index);\n  var last = array.slice(index + 1, array.length);\n  return front.concat(last);\n}\n\n/**\n * Returns only data- and aria- key/value pairs\n * @param {object} props\n */\nfunction getDataAndAriaProps(props) {\n  return Object.keys(props).reduce(function (memo, key) {\n    if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-') {\n      memo[key] = props[key];\n    }\n    return memo;\n  }, {});\n}\n// CONCATENATED MODULE: ./node_modules/rc-table/es/ColumnManager.js\n\n\n\n\n\n\nvar ColumnManager_ColumnManager = function () {\n  function ColumnManager(columns, elements) {\n    helpers_classCallCheck_default()(this, ColumnManager);\n\n    this._cached = {};\n\n    this.columns = columns || this.normalize(elements);\n  }\n\n  helpers_createClass_default()(ColumnManager, [{\n    key: 'isAnyColumnsFixed',\n    value: function isAnyColumnsFixed() {\n      var _this = this;\n\n      return this._cache('isAnyColumnsFixed', function () {\n        return _this.columns.some(function (column) {\n          return !!column.fixed;\n        });\n      });\n    }\n  }, {\n    key: 'isAnyColumnsLeftFixed',\n    value: function isAnyColumnsLeftFixed() {\n      var _this2 = this;\n\n      return this._cache('isAnyColumnsLeftFixed', function () {\n        return _this2.columns.some(function (column) {\n          return column.fixed === 'left' || column.fixed === true;\n        });\n      });\n    }\n  }, {\n    key: 'isAnyColumnsRightFixed',\n    value: function isAnyColumnsRightFixed() {\n      var _this3 = this;\n\n      return this._cache('isAnyColumnsRightFixed', function () {\n        return _this3.columns.some(function (column) {\n          return column.fixed === 'right';\n        });\n      });\n    }\n  }, {\n    key: 'leftColumns',\n    value: function leftColumns() {\n      var _this4 = this;\n\n      return this._cache('leftColumns', function () {\n        return _this4.groupedColumns().filter(function (column) {\n          return column.fixed === 'left' || column.fixed === true;\n        });\n      });\n    }\n  }, {\n    key: 'rightColumns',\n    value: function rightColumns() {\n      var _this5 = this;\n\n      return this._cache('rightColumns', function () {\n        return _this5.groupedColumns().filter(function (column) {\n          return column.fixed === 'right';\n        });\n      });\n    }\n  }, {\n    key: 'leafColumns',\n    value: function leafColumns() {\n      var _this6 = this;\n\n      return this._cache('leafColumns', function () {\n        return _this6._leafColumns(_this6.columns);\n      });\n    }\n  }, {\n    key: 'leftLeafColumns',\n    value: function leftLeafColumns() {\n      var _this7 = this;\n\n      return this._cache('leftLeafColumns', function () {\n        return _this7._leafColumns(_this7.leftColumns());\n      });\n    }\n  }, {\n    key: 'rightLeafColumns',\n    value: function rightLeafColumns() {\n      var _this8 = this;\n\n      return this._cache('rightLeafColumns', function () {\n        return _this8._leafColumns(_this8.rightColumns());\n      });\n    }\n\n    // add appropriate rowspan and colspan to column\n\n  }, {\n    key: 'groupedColumns',\n    value: function groupedColumns() {\n      var _this9 = this;\n\n      return this._cache('groupedColumns', function () {\n        var _groupColumns = function _groupColumns(columns) {\n          var currentRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n          var parentColumn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n          var rows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n\n          // track how many rows we got\n          rows[currentRow] = rows[currentRow] || [];\n          var grouped = [];\n          var setRowSpan = function setRowSpan(column) {\n            var rowSpan = rows.length - currentRow;\n            if (column && !column.children && // parent columns are supposed to be one row\n            rowSpan > 1 && (!column.rowSpan || column.rowSpan < rowSpan)) {\n              column.rowSpan = rowSpan;\n            }\n          };\n          columns.forEach(function (column, index) {\n            var newColumn = extends_default()({}, column);\n            rows[currentRow].push(newColumn);\n            parentColumn.colSpan = parentColumn.colSpan || 0;\n            if (newColumn.children && newColumn.children.length > 0) {\n              newColumn.children = _groupColumns(newColumn.children, currentRow + 1, newColumn, rows);\n              parentColumn.colSpan += newColumn.colSpan;\n            } else {\n              parentColumn.colSpan++;\n            }\n            // update rowspan to all same row columns\n            for (var i = 0; i < rows[currentRow].length - 1; ++i) {\n              setRowSpan(rows[currentRow][i]);\n            }\n            // last column, update rowspan immediately\n            if (index + 1 === columns.length) {\n              setRowSpan(newColumn);\n            }\n            grouped.push(newColumn);\n          });\n          return grouped;\n        };\n        return _groupColumns(_this9.columns);\n      });\n    }\n  }, {\n    key: 'normalize',\n    value: function normalize(elements) {\n      var _this10 = this;\n\n      var columns = [];\n      external_react_default.a.Children.forEach(elements, function (element) {\n        if (!external_react_default.a.isValidElement(element)) {\n          return;\n        }\n        var column = extends_default()({}, element.props);\n        if (element.key) {\n          column.key = element.key;\n        }\n        if (element.type.isTableColumnGroup) {\n          column.children = _this10.normalize(column.children);\n        }\n        columns.push(column);\n      });\n      return columns;\n    }\n  }, {\n    key: 'reset',\n    value: function reset(columns, elements) {\n      this.columns = columns || this.normalize(elements);\n      this._cached = {};\n    }\n  }, {\n    key: '_cache',\n    value: function _cache(name, fn) {\n      if (name in this._cached) {\n        return this._cached[name];\n      }\n      this._cached[name] = fn();\n      return this._cached[name];\n    }\n  }, {\n    key: '_leafColumns',\n    value: function _leafColumns(columns) {\n      var _this11 = this;\n\n      var leafColumns = [];\n      columns.forEach(function (column) {\n        if (!column.children) {\n          leafColumns.push(column);\n        } else {\n          leafColumns.push.apply(leafColumns, toConsumableArray_default()(_this11._leafColumns(column.children)));\n        }\n      });\n      return leafColumns;\n    }\n  }]);\n\n  return ColumnManager;\n}();\n\n/* harmony default export */ var es_ColumnManager = (ColumnManager_ColumnManager);\n// CONCATENATED MODULE: ./node_modules/rc-table/es/ColGroup.js\n\n\n\nfunction ColGroup(props, _ref) {\n  var table = _ref.table;\n  var _table$props = table.props,\n      prefixCls = _table$props.prefixCls,\n      expandIconAsCell = _table$props.expandIconAsCell;\n  var fixed = props.fixed;\n\n\n  var cols = [];\n\n  if (expandIconAsCell && fixed !== 'right') {\n    cols.push(external_react_default.a.createElement('col', { className: prefixCls + '-expand-icon-col', key: 'rc-table-expand-icon-col' }));\n  }\n\n  var leafColumns = void 0;\n\n  if (fixed === 'left') {\n    leafColumns = table.columnManager.leftLeafColumns();\n  } else if (fixed === 'right') {\n    leafColumns = table.columnManager.rightLeafColumns();\n  } else {\n    leafColumns = table.columnManager.leafColumns();\n  }\n  cols = cols.concat(leafColumns.map(function (c) {\n    return external_react_default.a.createElement('col', { key: c.key || c.dataIndex, style: { width: c.width, minWidth: c.width } });\n  }));\n\n  return external_react_default.a.createElement(\n    'colgroup',\n    null,\n    cols\n  );\n}\n\nColGroup.propTypes = {\n  fixed: prop_types_default.a.string\n};\n\nColGroup.contextTypes = {\n  table: prop_types_default.a.any\n};\n// CONCATENATED MODULE: ./node_modules/rc-table/es/TableHeaderRow.js\n\n\n\n\n\n\n\n\nfunction TableHeaderRow(_ref) {\n  var row = _ref.row,\n      index = _ref.index,\n      height = _ref.height,\n      components = _ref.components,\n      onHeaderRow = _ref.onHeaderRow,\n      prefixCls = _ref.prefixCls;\n\n  var HeaderRow = components.header.row;\n  var HeaderCell = components.header.cell;\n  var rowProps = onHeaderRow(row.map(function (cell) {\n    return cell.column;\n  }), index);\n  var customStyle = rowProps ? rowProps.style : {};\n  var style = extends_default()({ height: height }, customStyle);\n\n  return external_react_default.a.createElement(\n    HeaderRow,\n    extends_default()({}, rowProps, { style: style }),\n    row.map(function (cell, i) {\n      var column = cell.column,\n          cellProps = objectWithoutProperties_default()(cell, ['column']);\n\n      var customProps = column.onHeaderCell ? column.onHeaderCell(column) : {};\n      if (column.align) {\n        customProps.style = extends_default()({}, customProps.style, { textAlign: column.align });\n        customProps.className = node_modules_classnames_default()(customProps.className, column.className, defineProperty_default()({}, prefixCls + '-align-' + column.align, !!column.align));\n      }\n      return external_react_default.a.createElement(HeaderCell, extends_default()({}, cellProps, customProps, { key: column.key || column.dataIndex || i }));\n    })\n  );\n}\n\nTableHeaderRow.propTypes = {\n  row: prop_types_default.a.array,\n  index: prop_types_default.a.number,\n  height: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  components: prop_types_default.a.any,\n  onHeaderRow: prop_types_default.a.func,\n  prefixCls: prop_types_default.a.string\n};\n\nfunction getRowHeight(state, props) {\n  var fixedColumnsHeadRowsHeight = state.fixedColumnsHeadRowsHeight;\n  var columns = props.columns,\n      rows = props.rows,\n      fixed = props.fixed;\n\n  var headerHeight = fixedColumnsHeadRowsHeight[0];\n\n  if (!fixed) {\n    return null;\n  }\n\n  if (headerHeight && columns) {\n    if (headerHeight === 'auto') {\n      return 'auto';\n    }\n    return headerHeight / rows.length;\n  }\n  return null;\n}\n\n/* harmony default export */ var es_TableHeaderRow = (Object(mini_store_lib[\"connect\"])(function (state, props) {\n  return {\n    height: getRowHeight(state, props)\n  };\n})(TableHeaderRow));\n// CONCATENATED MODULE: ./node_modules/rc-table/es/TableHeader.js\n\n\n\n\nfunction getHeaderRows(columns) {\n  var currentRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var rows = arguments[2];\n\n  rows = rows || [];\n  rows[currentRow] = rows[currentRow] || [];\n\n  columns.forEach(function (column) {\n    if (column.rowSpan && rows.length < column.rowSpan) {\n      while (rows.length < column.rowSpan) {\n        rows.push([]);\n      }\n    }\n    var cell = {\n      key: column.key,\n      className: column.className || '',\n      children: column.title,\n      column: column\n    };\n    if (column.children) {\n      getHeaderRows(column.children, currentRow + 1, rows);\n    }\n    if ('colSpan' in column) {\n      cell.colSpan = column.colSpan;\n    }\n    if ('rowSpan' in column) {\n      cell.rowSpan = column.rowSpan;\n    }\n    if (cell.colSpan !== 0) {\n      rows[currentRow].push(cell);\n    }\n  });\n  return rows.filter(function (row) {\n    return row.length > 0;\n  });\n}\n\nfunction TableHeader(props, _ref) {\n  var table = _ref.table;\n  var components = table.components;\n  var _table$props = table.props,\n      prefixCls = _table$props.prefixCls,\n      showHeader = _table$props.showHeader,\n      onHeaderRow = _table$props.onHeaderRow;\n  var expander = props.expander,\n      columns = props.columns,\n      fixed = props.fixed;\n\n\n  if (!showHeader) {\n    return null;\n  }\n\n  var rows = getHeaderRows(columns);\n\n  expander.renderExpandIndentCell(rows, fixed);\n\n  var HeaderWrapper = components.header.wrapper;\n\n  return external_react_default.a.createElement(\n    HeaderWrapper,\n    { className: prefixCls + '-thead' },\n    rows.map(function (row, index) {\n      return external_react_default.a.createElement(es_TableHeaderRow, {\n        prefixCls: prefixCls,\n        key: index,\n        index: index,\n        fixed: fixed,\n        columns: columns,\n        rows: rows,\n        row: row,\n        components: components,\n        onHeaderRow: onHeaderRow\n      });\n    })\n  );\n}\n\nTableHeader.propTypes = {\n  fixed: prop_types_default.a.string,\n  columns: prop_types_default.a.array.isRequired,\n  expander: prop_types_default.a.object.isRequired,\n  onHeaderRow: prop_types_default.a.func\n};\n\nTableHeader.contextTypes = {\n  table: prop_types_default.a.any\n};\n// CONCATENATED MODULE: ./node_modules/rc-table/es/TableCell.js\n\n\n\n\n\n\n\n\n\nfunction isInvalidRenderCellText(text) {\n  return text && !external_react_default.a.isValidElement(text) && Object.prototype.toString.call(text) === '[object Object]';\n}\n\nvar TableCell_TableCell = function (_React$Component) {\n  helpers_inherits_default()(TableCell, _React$Component);\n\n  function TableCell() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, TableCell);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = TableCell.__proto__ || Object.getPrototypeOf(TableCell)).call.apply(_ref, [this].concat(args))), _this), _this.handleClick = function (e) {\n      var _this$props = _this.props,\n          record = _this$props.record,\n          onCellClick = _this$props.column.onCellClick;\n\n      if (onCellClick) {\n        onCellClick(record, e);\n      }\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(TableCell, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          record = _props.record,\n          indentSize = _props.indentSize,\n          prefixCls = _props.prefixCls,\n          indent = _props.indent,\n          index = _props.index,\n          expandIcon = _props.expandIcon,\n          column = _props.column,\n          BodyCell = _props.component;\n      var dataIndex = column.dataIndex,\n          render = column.render,\n          _column$className = column.className,\n          className = _column$className === undefined ? '' : _column$className;\n\n      // We should return undefined if no dataIndex is specified, but in order to\n      // be compatible with object-path's behavior, we return the record object instead.\n\n      var text = void 0;\n      if (typeof dataIndex === 'number') {\n        text = get_default()(record, dataIndex);\n      } else if (!dataIndex || dataIndex.length === 0) {\n        text = record;\n      } else {\n        text = get_default()(record, dataIndex);\n      }\n      var tdProps = {};\n      var colSpan = void 0;\n      var rowSpan = void 0;\n\n      if (render) {\n        text = render(text, record, index);\n        if (isInvalidRenderCellText(text)) {\n          tdProps = text.props || tdProps;\n          colSpan = tdProps.colSpan;\n          rowSpan = tdProps.rowSpan;\n          text = text.children;\n        }\n      }\n\n      if (column.onCell) {\n        tdProps = extends_default()({}, tdProps, column.onCell(record, index));\n      }\n\n      // Fix https://github.com/ant-design/ant-design/issues/1202\n      if (isInvalidRenderCellText(text)) {\n        text = null;\n      }\n\n      var indentText = expandIcon ? external_react_default.a.createElement('span', {\n        style: { paddingLeft: indentSize * indent + 'px' },\n        className: prefixCls + '-indent indent-level-' + indent\n      }) : null;\n\n      if (rowSpan === 0 || colSpan === 0) {\n        return null;\n      }\n\n      if (column.align) {\n        tdProps.style = extends_default()({}, tdProps.style, { textAlign: column.align });\n      }\n\n      return external_react_default.a.createElement(\n        BodyCell,\n        extends_default()({ className: className, onClick: this.handleClick }, tdProps),\n        indentText,\n        expandIcon,\n        text\n      );\n    }\n  }]);\n\n  return TableCell;\n}(external_react_default.a.Component);\n\nTableCell_TableCell.propTypes = {\n  record: prop_types_default.a.object,\n  prefixCls: prop_types_default.a.string,\n  index: prop_types_default.a.number,\n  indent: prop_types_default.a.number,\n  indentSize: prop_types_default.a.number,\n  column: prop_types_default.a.object,\n  expandIcon: prop_types_default.a.node,\n  component: prop_types_default.a.any\n};\n/* harmony default export */ var es_TableCell = (TableCell_TableCell);\n// CONCATENATED MODULE: ./node_modules/rc-table/es/TableRow.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TableRow_TableRow = function (_React$Component) {\n  helpers_inherits_default()(TableRow, _React$Component);\n\n  function TableRow(props) {\n    helpers_classCallCheck_default()(this, TableRow);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, (TableRow.__proto__ || Object.getPrototypeOf(TableRow)).call(this, props));\n\n    _this.onTriggerEvent = function (rowPropFunc, legacyFunc, additionalFunc) {\n      var _this$props = _this.props,\n          record = _this$props.record,\n          index = _this$props.index;\n\n\n      return function () {\n        for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        // Additional function like trigger `this.onHover` to handle self logic\n        if (additionalFunc) {\n          additionalFunc();\n        }\n\n        // [Legacy] Some legacy function like `onRowClick`.\n        var event = args[0];\n\n        if (legacyFunc) {\n          legacyFunc(record, index, event);\n        }\n\n        // Pass to the function from `onRow`\n        if (rowPropFunc) {\n          rowPropFunc.apply(undefined, args);\n        }\n      };\n    };\n\n    _this.onMouseEnter = function () {\n      var _this$props2 = _this.props,\n          onHover = _this$props2.onHover,\n          rowKey = _this$props2.rowKey;\n\n      onHover(true, rowKey);\n    };\n\n    _this.onMouseLeave = function () {\n      var _this$props3 = _this.props,\n          onHover = _this$props3.onHover,\n          rowKey = _this$props3.rowKey;\n\n      onHover(false, rowKey);\n    };\n\n    _this.shouldRender = props.visible;\n\n    _this.state = {};\n    return _this;\n  }\n\n  helpers_createClass_default()(TableRow, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      if (this.state.shouldRender) {\n        this.saveRowRef();\n      }\n    }\n  }, {\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      return !!(this.props.visible || nextProps.visible);\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate() {\n      if (this.state.shouldRender && !this.rowRef) {\n        this.saveRowRef();\n      }\n    }\n  }, {\n    key: 'setExpandedRowHeight',\n    value: function setExpandedRowHeight() {\n      var _props = this.props,\n          store = _props.store,\n          rowKey = _props.rowKey;\n\n      var _store$getState = store.getState(),\n          expandedRowsHeight = _store$getState.expandedRowsHeight;\n\n      var height = this.rowRef.getBoundingClientRect().height;\n      expandedRowsHeight = extends_default()({}, expandedRowsHeight, defineProperty_default()({}, rowKey, height));\n      store.setState({ expandedRowsHeight: expandedRowsHeight });\n    }\n  }, {\n    key: 'setRowHeight',\n    value: function setRowHeight() {\n      var _props2 = this.props,\n          store = _props2.store,\n          rowKey = _props2.rowKey;\n\n      var _store$getState2 = store.getState(),\n          fixedColumnsBodyRowsHeight = _store$getState2.fixedColumnsBodyRowsHeight;\n\n      var height = this.rowRef.getBoundingClientRect().height;\n      store.setState({\n        fixedColumnsBodyRowsHeight: extends_default()({}, fixedColumnsBodyRowsHeight, defineProperty_default()({}, rowKey, height))\n      });\n    }\n  }, {\n    key: 'getStyle',\n    value: function getStyle() {\n      var _props3 = this.props,\n          height = _props3.height,\n          visible = _props3.visible;\n\n\n      if (height && height !== this.style.height) {\n        this.style = extends_default()({}, this.style, { height: height });\n      }\n\n      if (!visible && !this.style.display) {\n        this.style = extends_default()({}, this.style, { display: 'none' });\n      }\n\n      return this.style;\n    }\n  }, {\n    key: 'saveRowRef',\n    value: function saveRowRef() {\n      this.rowRef = external_react_dom_default.a.findDOMNode(this);\n\n      var _props4 = this.props,\n          isAnyColumnsFixed = _props4.isAnyColumnsFixed,\n          fixed = _props4.fixed,\n          expandedRow = _props4.expandedRow,\n          ancestorKeys = _props4.ancestorKeys;\n\n\n      if (!isAnyColumnsFixed) {\n        return;\n      }\n\n      if (!fixed && expandedRow) {\n        this.setExpandedRowHeight();\n      }\n\n      if (!fixed && ancestorKeys.length >= 0) {\n        this.setRowHeight();\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      if (!this.state.shouldRender) {\n        return null;\n      }\n\n      var _props5 = this.props,\n          prefixCls = _props5.prefixCls,\n          columns = _props5.columns,\n          record = _props5.record,\n          rowKey = _props5.rowKey,\n          index = _props5.index,\n          onRow = _props5.onRow,\n          indent = _props5.indent,\n          indentSize = _props5.indentSize,\n          hovered = _props5.hovered,\n          height = _props5.height,\n          visible = _props5.visible,\n          components = _props5.components,\n          hasExpandIcon = _props5.hasExpandIcon,\n          renderExpandIcon = _props5.renderExpandIcon,\n          renderExpandIconCell = _props5.renderExpandIconCell,\n          onRowClick = _props5.onRowClick,\n          onRowDoubleClick = _props5.onRowDoubleClick,\n          onRowMouseEnter = _props5.onRowMouseEnter,\n          onRowMouseLeave = _props5.onRowMouseLeave,\n          onRowContextMenu = _props5.onRowContextMenu;\n\n\n      var BodyRow = components.body.row;\n      var BodyCell = components.body.cell;\n\n      var className = this.props.className;\n\n\n      if (hovered) {\n        className += ' ' + prefixCls + '-hover';\n      }\n\n      var cells = [];\n\n      renderExpandIconCell(cells);\n\n      for (var i = 0; i < columns.length; i++) {\n        var column = columns[i];\n\n        warningOnce(column.onCellClick === undefined, 'column[onCellClick] is deprecated, please use column[onCell] instead.');\n\n        cells.push(external_react_default.a.createElement(es_TableCell, {\n          prefixCls: prefixCls,\n          record: record,\n          indentSize: indentSize,\n          indent: indent,\n          index: index,\n          column: column,\n          key: column.key || column.dataIndex,\n          expandIcon: hasExpandIcon(i) && renderExpandIcon(),\n          component: BodyCell\n        }));\n      }\n\n      var _ref = onRow(record, index) || {},\n          customClassName = _ref.className,\n          customStyle = _ref.style,\n          rowProps = objectWithoutProperties_default()(_ref, ['className', 'style']);\n\n      var style = { height: height };\n\n      if (!visible) {\n        style.display = 'none';\n      }\n\n      style = extends_default()({}, style, customStyle);\n\n      var rowClassName = node_modules_classnames_default()(prefixCls, className, prefixCls + '-level-' + indent, customClassName);\n\n      return external_react_default.a.createElement(\n        BodyRow,\n        extends_default()({}, rowProps, {\n          onClick: this.onTriggerEvent(rowProps.onClick, onRowClick),\n          onDoubleClick: this.onTriggerEvent(rowProps.onDoubleClick, onRowDoubleClick),\n          onMouseEnter: this.onTriggerEvent(rowProps.onMouseEnter, onRowMouseEnter, this.onMouseEnter),\n          onMouseLeave: this.onTriggerEvent(rowProps.onMouseLeave, onRowMouseLeave, this.onMouseLeave),\n          onContextMenu: this.onTriggerEvent(rowProps.onContextMenu, onRowContextMenu),\n          className: rowClassName,\n          style: style,\n          'data-row-key': rowKey\n        }),\n        cells\n      );\n    }\n  }], [{\n    key: 'getDerivedStateFromProps',\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (prevState.visible || !prevState.visible && nextProps.visible) {\n        return {\n          shouldRender: true,\n          visible: nextProps.visible\n        };\n      }\n      return {\n        visible: nextProps.visible\n      };\n    }\n  }]);\n\n  return TableRow;\n}(external_react_default.a.Component);\n\nTableRow_TableRow.propTypes = {\n  onRow: prop_types_default.a.func,\n  onRowClick: prop_types_default.a.func,\n  onRowDoubleClick: prop_types_default.a.func,\n  onRowContextMenu: prop_types_default.a.func,\n  onRowMouseEnter: prop_types_default.a.func,\n  onRowMouseLeave: prop_types_default.a.func,\n  record: prop_types_default.a.object,\n  prefixCls: prop_types_default.a.string,\n  onHover: prop_types_default.a.func,\n  columns: prop_types_default.a.array,\n  height: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  index: prop_types_default.a.number,\n  rowKey: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]).isRequired,\n  className: prop_types_default.a.string,\n  indent: prop_types_default.a.number,\n  indentSize: prop_types_default.a.number,\n  hasExpandIcon: prop_types_default.a.func,\n  hovered: prop_types_default.a.bool.isRequired,\n  visible: prop_types_default.a.bool.isRequired,\n  store: prop_types_default.a.object.isRequired,\n  fixed: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.bool]),\n  renderExpandIcon: prop_types_default.a.func,\n  renderExpandIconCell: prop_types_default.a.func,\n  components: prop_types_default.a.any,\n  expandedRow: prop_types_default.a.bool,\n  isAnyColumnsFixed: prop_types_default.a.bool,\n  ancestorKeys: prop_types_default.a.array.isRequired\n};\nTableRow_TableRow.defaultProps = {\n  onRow: function onRow() {},\n  onHover: function onHover() {},\n  hasExpandIcon: function hasExpandIcon() {},\n  renderExpandIcon: function renderExpandIcon() {},\n  renderExpandIconCell: function renderExpandIconCell() {}\n};\n\n\nfunction TableRow_getRowHeight(state, props) {\n  var expandedRowsHeight = state.expandedRowsHeight,\n      fixedColumnsBodyRowsHeight = state.fixedColumnsBodyRowsHeight;\n  var fixed = props.fixed,\n      rowKey = props.rowKey;\n\n\n  if (!fixed) {\n    return null;\n  }\n\n  if (expandedRowsHeight[rowKey]) {\n    return expandedRowsHeight[rowKey];\n  }\n\n  if (fixedColumnsBodyRowsHeight[rowKey]) {\n    return fixedColumnsBodyRowsHeight[rowKey];\n  }\n\n  return null;\n}\n\nObject(react_lifecycles_compat_es[\"polyfill\"])(TableRow_TableRow);\n\n/* harmony default export */ var es_TableRow = (Object(mini_store_lib[\"connect\"])(function (state, props) {\n  var currentHoverKey = state.currentHoverKey,\n      expandedRowKeys = state.expandedRowKeys;\n  var rowKey = props.rowKey,\n      ancestorKeys = props.ancestorKeys;\n\n  var visible = ancestorKeys.length === 0 || ancestorKeys.every(function (k) {\n    return ~expandedRowKeys.indexOf(k);\n  });\n\n  return {\n    visible: visible,\n    hovered: currentHoverKey === rowKey,\n    height: TableRow_getRowHeight(state, props)\n  };\n})(TableRow_TableRow));\n// CONCATENATED MODULE: ./node_modules/rc-table/es/ExpandIcon.js\n\n\n\n\n\n\n\n\nvar ExpandIcon_ExpandIcon = function (_React$Component) {\n  helpers_inherits_default()(ExpandIcon, _React$Component);\n\n  function ExpandIcon() {\n    helpers_classCallCheck_default()(this, ExpandIcon);\n\n    return helpers_possibleConstructorReturn_default()(this, (ExpandIcon.__proto__ || Object.getPrototypeOf(ExpandIcon)).apply(this, arguments));\n  }\n\n  helpers_createClass_default()(ExpandIcon, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      return !shallowequal_default()(nextProps, this.props);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          expandable = _props.expandable,\n          prefixCls = _props.prefixCls,\n          onExpand = _props.onExpand,\n          needIndentSpaced = _props.needIndentSpaced,\n          expanded = _props.expanded,\n          record = _props.record;\n\n      if (expandable) {\n        var expandClassName = expanded ? 'expanded' : 'collapsed';\n        return external_react_default.a.createElement('span', {\n          className: prefixCls + '-expand-icon ' + prefixCls + '-' + expandClassName,\n          onClick: function onClick(e) {\n            return onExpand(record, e);\n          }\n        });\n      } else if (needIndentSpaced) {\n        return external_react_default.a.createElement('span', { className: prefixCls + '-expand-icon ' + prefixCls + '-spaced' });\n      }\n      return null;\n    }\n  }]);\n\n  return ExpandIcon;\n}(external_react_default.a.Component);\n\nExpandIcon_ExpandIcon.propTypes = {\n  record: prop_types_default.a.object,\n  prefixCls: prop_types_default.a.string,\n  expandable: prop_types_default.a.any,\n  expanded: prop_types_default.a.bool,\n  needIndentSpaced: prop_types_default.a.bool,\n  onExpand: prop_types_default.a.func\n};\n/* harmony default export */ var es_ExpandIcon = (ExpandIcon_ExpandIcon);\n// CONCATENATED MODULE: ./node_modules/rc-table/es/ExpandableRow.js\n\n\n\n\n\n\n\n\n\nvar ExpandableRow_ExpandableRow = function (_React$Component) {\n  helpers_inherits_default()(ExpandableRow, _React$Component);\n\n  function ExpandableRow() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, ExpandableRow);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = ExpandableRow.__proto__ || Object.getPrototypeOf(ExpandableRow)).call.apply(_ref, [this].concat(args))), _this), _this.hasExpandIcon = function (columnIndex) {\n      var expandRowByClick = _this.props.expandRowByClick;\n\n      return !_this.expandIconAsCell && !expandRowByClick && columnIndex === _this.expandIconColumnIndex;\n    }, _this.handleExpandChange = function (record, event) {\n      var _this$props = _this.props,\n          onExpandedChange = _this$props.onExpandedChange,\n          expanded = _this$props.expanded,\n          rowKey = _this$props.rowKey;\n\n      if (_this.expandable) {\n        onExpandedChange(!expanded, record, event, rowKey);\n      }\n    }, _this.handleRowClick = function (record, index, event) {\n      var _this$props2 = _this.props,\n          expandRowByClick = _this$props2.expandRowByClick,\n          onRowClick = _this$props2.onRowClick;\n\n      if (expandRowByClick) {\n        _this.handleExpandChange(record, event);\n      }\n      if (onRowClick) {\n        onRowClick(record, index, event);\n      }\n    }, _this.renderExpandIcon = function () {\n      var _this$props3 = _this.props,\n          prefixCls = _this$props3.prefixCls,\n          expanded = _this$props3.expanded,\n          record = _this$props3.record,\n          needIndentSpaced = _this$props3.needIndentSpaced,\n          expandIcon = _this$props3.expandIcon;\n\n\n      if (expandIcon) {\n        return expandIcon({\n          prefixCls: prefixCls,\n          expanded: expanded,\n          record: record,\n          needIndentSpaced: needIndentSpaced,\n          expandable: _this.expandable,\n          onExpand: _this.handleExpandChange\n        });\n      }\n\n      return external_react_default.a.createElement(es_ExpandIcon, {\n        expandable: _this.expandable,\n        prefixCls: prefixCls,\n        onExpand: _this.handleExpandChange,\n        needIndentSpaced: needIndentSpaced,\n        expanded: expanded,\n        record: record\n      });\n    }, _this.renderExpandIconCell = function (cells) {\n      if (!_this.expandIconAsCell) {\n        return;\n      }\n      var prefixCls = _this.props.prefixCls;\n\n\n      cells.push(external_react_default.a.createElement(\n        'td',\n        { className: prefixCls + '-expand-icon-cell', key: 'rc-table-expand-icon-cell' },\n        _this.renderExpandIcon()\n      ));\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(ExpandableRow, [{\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.handleDestroy();\n    }\n  }, {\n    key: 'handleDestroy',\n    value: function handleDestroy() {\n      var _props = this.props,\n          onExpandedChange = _props.onExpandedChange,\n          rowKey = _props.rowKey,\n          record = _props.record;\n\n      if (this.expandable) {\n        onExpandedChange(false, record, null, rowKey, true);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props2 = this.props,\n          childrenColumnName = _props2.childrenColumnName,\n          expandedRowRender = _props2.expandedRowRender,\n          indentSize = _props2.indentSize,\n          record = _props2.record,\n          fixed = _props2.fixed,\n          expanded = _props2.expanded;\n\n\n      this.expandIconAsCell = fixed !== 'right' ? this.props.expandIconAsCell : false;\n      this.expandIconColumnIndex = fixed !== 'right' ? this.props.expandIconColumnIndex : -1;\n      var childrenData = record[childrenColumnName];\n      this.expandable = !!(childrenData || expandedRowRender);\n\n      var expandableRowProps = {\n        indentSize: indentSize,\n        expanded: expanded, // not used in TableRow, but it's required to re-render TableRow when `expanded` changes\n        onRowClick: this.handleRowClick,\n        hasExpandIcon: this.hasExpandIcon,\n        renderExpandIcon: this.renderExpandIcon,\n        renderExpandIconCell: this.renderExpandIconCell\n      };\n\n      return this.props.children(expandableRowProps);\n    }\n  }]);\n\n  return ExpandableRow;\n}(external_react_default.a.Component);\n\nExpandableRow_ExpandableRow.propTypes = {\n  prefixCls: prop_types_default.a.string.isRequired,\n  rowKey: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]).isRequired,\n  fixed: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.bool]),\n  record: prop_types_default.a.oneOfType([prop_types_default.a.object, prop_types_default.a.array]).isRequired,\n  indentSize: prop_types_default.a.number,\n  needIndentSpaced: prop_types_default.a.bool.isRequired,\n  expandRowByClick: prop_types_default.a.bool,\n  expanded: prop_types_default.a.bool.isRequired,\n  expandIconAsCell: prop_types_default.a.bool,\n  expandIconColumnIndex: prop_types_default.a.number,\n  childrenColumnName: prop_types_default.a.string,\n  expandedRowRender: prop_types_default.a.func,\n  expandIcon: prop_types_default.a.func,\n  onExpandedChange: prop_types_default.a.func.isRequired,\n  onRowClick: prop_types_default.a.func,\n  children: prop_types_default.a.func.isRequired\n};\n\n\n/* harmony default export */ var es_ExpandableRow = (Object(mini_store_lib[\"connect\"])(function (_ref2, _ref3) {\n  var expandedRowKeys = _ref2.expandedRowKeys;\n  var rowKey = _ref3.rowKey;\n  return {\n    expanded: !!~expandedRowKeys.indexOf(rowKey)\n  };\n})(ExpandableRow_ExpandableRow));\n// CONCATENATED MODULE: ./node_modules/rc-table/es/BaseTable.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar BaseTable_BaseTable = function (_React$Component) {\n  helpers_inherits_default()(BaseTable, _React$Component);\n\n  function BaseTable() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    helpers_classCallCheck_default()(this, BaseTable);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = helpers_possibleConstructorReturn_default()(this, (_ref = BaseTable.__proto__ || Object.getPrototypeOf(BaseTable)).call.apply(_ref, [this].concat(args))), _this), _this.handleRowHover = function (isHover, key) {\n      _this.props.store.setState({\n        currentHoverKey: isHover ? key : null\n      });\n    }, _this.renderRows = function (renderData, indent) {\n      var ancestorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n      var table = _this.context.table;\n      var columnManager = table.columnManager,\n          components = table.components;\n      var _table$props = table.props,\n          prefixCls = _table$props.prefixCls,\n          childrenColumnName = _table$props.childrenColumnName,\n          rowClassName = _table$props.rowClassName,\n          rowRef = _table$props.rowRef,\n          onRowClick = _table$props.onRowClick,\n          onRowDoubleClick = _table$props.onRowDoubleClick,\n          onRowContextMenu = _table$props.onRowContextMenu,\n          onRowMouseEnter = _table$props.onRowMouseEnter,\n          onRowMouseLeave = _table$props.onRowMouseLeave,\n          onRow = _table$props.onRow;\n      var _this$props = _this.props,\n          getRowKey = _this$props.getRowKey,\n          fixed = _this$props.fixed,\n          expander = _this$props.expander,\n          isAnyColumnsFixed = _this$props.isAnyColumnsFixed;\n\n\n      var rows = [];\n\n      var _loop = function _loop(i) {\n        var record = renderData[i];\n        var key = getRowKey(record, i);\n        var className = typeof rowClassName === 'string' ? rowClassName : rowClassName(record, i, indent);\n\n        var onHoverProps = {};\n        if (columnManager.isAnyColumnsFixed()) {\n          onHoverProps.onHover = _this.handleRowHover;\n        }\n\n        var leafColumns = void 0;\n        if (fixed === 'left') {\n          leafColumns = columnManager.leftLeafColumns();\n        } else if (fixed === 'right') {\n          leafColumns = columnManager.rightLeafColumns();\n        } else {\n          leafColumns = _this.getColumns(columnManager.leafColumns());\n        }\n\n        var rowPrefixCls = prefixCls + '-row';\n\n        var row = external_react_default.a.createElement(\n          es_ExpandableRow,\n          extends_default()({}, expander.props, {\n            fixed: fixed,\n            index: i,\n            prefixCls: rowPrefixCls,\n            record: record,\n            key: key,\n            rowKey: key,\n            onRowClick: onRowClick,\n            needIndentSpaced: expander.needIndentSpaced,\n            onExpandedChange: expander.handleExpandChange\n          }),\n          function (expandableRow) {\n            return (// eslint-disable-line\n              external_react_default.a.createElement(es_TableRow, extends_default()({\n                fixed: fixed,\n                indent: indent,\n                className: className,\n                record: record,\n                index: i,\n                prefixCls: rowPrefixCls,\n                childrenColumnName: childrenColumnName,\n                columns: leafColumns,\n                onRow: onRow,\n                onRowDoubleClick: onRowDoubleClick,\n                onRowContextMenu: onRowContextMenu,\n                onRowMouseEnter: onRowMouseEnter,\n                onRowMouseLeave: onRowMouseLeave\n              }, onHoverProps, {\n                rowKey: key,\n                ancestorKeys: ancestorKeys,\n                ref: rowRef(record, i, indent),\n                components: components,\n                isAnyColumnsFixed: isAnyColumnsFixed\n              }, expandableRow))\n            );\n          }\n        );\n\n        rows.push(row);\n\n        expander.renderRows(_this.renderRows, rows, record, i, indent, fixed, key, ancestorKeys);\n      };\n\n      for (var i = 0; i < renderData.length; i++) {\n        _loop(i);\n      }\n      return rows;\n    }, _temp), helpers_possibleConstructorReturn_default()(_this, _ret);\n  }\n\n  helpers_createClass_default()(BaseTable, [{\n    key: 'getColumns',\n    value: function getColumns(cols) {\n      var _props = this.props,\n          _props$columns = _props.columns,\n          columns = _props$columns === undefined ? [] : _props$columns,\n          fixed = _props.fixed;\n      var table = this.context.table;\n      var prefixCls = table.props.prefixCls;\n\n      return (cols || columns).map(function (column) {\n        return extends_default()({}, column, {\n          className: !!column.fixed && !fixed ? node_modules_classnames_default()(prefixCls + '-fixed-columns-in-body', column.className) : column.className\n        });\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var table = this.context.table;\n      var components = table.components;\n      var _table$props2 = table.props,\n          prefixCls = _table$props2.prefixCls,\n          scroll = _table$props2.scroll,\n          data = _table$props2.data,\n          getBodyWrapper = _table$props2.getBodyWrapper;\n      var _props2 = this.props,\n          expander = _props2.expander,\n          tableClassName = _props2.tableClassName,\n          hasHead = _props2.hasHead,\n          hasBody = _props2.hasBody,\n          fixed = _props2.fixed;\n\n      var tableStyle = {};\n\n      if (!fixed && scroll.x) {\n        // not set width, then use content fixed width\n        if (scroll.x === true) {\n          tableStyle.tableLayout = 'fixed';\n        } else {\n          tableStyle.width = scroll.x;\n        }\n      }\n\n      var Table = hasBody ? components.table : 'table';\n      var BodyWrapper = components.body.wrapper;\n\n      var body = void 0;\n      if (hasBody) {\n        body = external_react_default.a.createElement(\n          BodyWrapper,\n          { className: prefixCls + '-tbody' },\n          this.renderRows(data, 0)\n        );\n        if (getBodyWrapper) {\n          body = getBodyWrapper(body);\n        }\n      }\n\n      var columns = this.getColumns();\n\n      return external_react_default.a.createElement(\n        Table,\n        { className: tableClassName, style: tableStyle, key: 'table' },\n        external_react_default.a.createElement(ColGroup, { columns: columns, fixed: fixed }),\n        hasHead && external_react_default.a.createElement(TableHeader, { expander: expander, columns: columns, fixed: fixed }),\n        body\n      );\n    }\n  }]);\n\n  return BaseTable;\n}(external_react_default.a.Component);\n\nBaseTable_BaseTable.propTypes = {\n  fixed: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.bool]),\n  columns: prop_types_default.a.array.isRequired,\n  tableClassName: prop_types_default.a.string.isRequired,\n  hasHead: prop_types_default.a.bool.isRequired,\n  hasBody: prop_types_default.a.bool.isRequired,\n  store: prop_types_default.a.object.isRequired,\n  expander: prop_types_default.a.object.isRequired,\n  getRowKey: prop_types_default.a.func,\n  isAnyColumnsFixed: prop_types_default.a.bool\n};\nBaseTable_BaseTable.contextTypes = {\n  table: prop_types_default.a.any\n};\n\n\n/* harmony default export */ var es_BaseTable = (Object(mini_store_lib[\"connect\"])()(BaseTable_BaseTable));\n// CONCATENATED MODULE: ./node_modules/rc-table/es/HeadTable.js\n\n\n\n\n\nfunction HeadTable(props, _ref) {\n  var table = _ref.table;\n  var _table$props = table.props,\n      prefixCls = _table$props.prefixCls,\n      scroll = _table$props.scroll,\n      showHeader = _table$props.showHeader;\n  var columns = props.columns,\n      fixed = props.fixed,\n      tableClassName = props.tableClassName,\n      handleBodyScrollLeft = props.handleBodyScrollLeft,\n      expander = props.expander;\n  var saveRef = table.saveRef;\n  var useFixedHeader = table.props.useFixedHeader;\n\n  var headStyle = {};\n\n  if (scroll.y) {\n    useFixedHeader = true;\n    // Add negative margin bottom for scroll bar overflow bug\n    var scrollbarWidth = measureScrollbar('horizontal');\n    if (scrollbarWidth > 0 && !fixed) {\n      headStyle.marginBottom = '-' + scrollbarWidth + 'px';\n      headStyle.paddingBottom = '0px';\n    }\n  }\n\n  if (!useFixedHeader || !showHeader) {\n    return null;\n  }\n\n  return external_react_default.a.createElement(\n    'div',\n    {\n      key: 'headTable',\n      ref: fixed ? null : saveRef('headTable'),\n      className: prefixCls + '-header',\n      style: headStyle,\n      onScroll: handleBodyScrollLeft\n    },\n    external_react_default.a.createElement(es_BaseTable, {\n      tableClassName: tableClassName,\n      hasHead: true,\n      hasBody: false,\n      fixed: fixed,\n      columns: columns,\n      expander: expander\n    })\n  );\n}\n\nHeadTable.propTypes = {\n  fixed: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.bool]),\n  columns: prop_types_default.a.array.isRequired,\n  tableClassName: prop_types_default.a.string.isRequired,\n  handleBodyScrollLeft: prop_types_default.a.func.isRequired,\n  expander: prop_types_default.a.object.isRequired\n};\n\nHeadTable.contextTypes = {\n  table: prop_types_default.a.any\n};\n// CONCATENATED MODULE: ./node_modules/rc-table/es/BodyTable.js\n\n\n\n\n\n\nfunction BodyTable(props, _ref) {\n  var table = _ref.table;\n  var _table$props = table.props,\n      prefixCls = _table$props.prefixCls,\n      scroll = _table$props.scroll;\n  var columns = props.columns,\n      fixed = props.fixed,\n      tableClassName = props.tableClassName,\n      getRowKey = props.getRowKey,\n      handleBodyScroll = props.handleBodyScroll,\n      handleWheel = props.handleWheel,\n      expander = props.expander,\n      isAnyColumnsFixed = props.isAnyColumnsFixed;\n  var saveRef = table.saveRef;\n  var useFixedHeader = table.props.useFixedHeader;\n\n  var bodyStyle = extends_default()({}, table.props.bodyStyle);\n  var innerBodyStyle = {};\n\n  if (scroll.x || fixed) {\n    bodyStyle.overflowX = bodyStyle.overflowX || 'scroll';\n    // Fix weird webkit render bug\n    // https://github.com/ant-design/ant-design/issues/7783\n    bodyStyle.WebkitTransform = 'translate3d (0, 0, 0)';\n  }\n\n  if (scroll.y) {\n    // maxHeight will make fixed-Table scrolling not working\n    // so we only set maxHeight to body-Table here\n    if (fixed) {\n      innerBodyStyle.maxHeight = bodyStyle.maxHeight || scroll.y;\n      innerBodyStyle.overflowY = bodyStyle.overflowY || 'scroll';\n    } else {\n      bodyStyle.maxHeight = bodyStyle.maxHeight || scroll.y;\n    }\n    bodyStyle.overflowY = bodyStyle.overflowY || 'scroll';\n    useFixedHeader = true;\n\n    // Add negative margin bottom for scroll bar overflow bug\n    var scrollbarWidth = measureScrollbar();\n    if (scrollbarWidth > 0 && fixed) {\n      bodyStyle.marginBottom = '-' + scrollbarWidth + 'px';\n      bodyStyle.paddingBottom = '0px';\n    }\n  }\n\n  var baseTable = external_react_default.a.createElement(es_BaseTable, {\n    tableClassName: tableClassName,\n    hasHead: !useFixedHeader,\n    hasBody: true,\n    fixed: fixed,\n    columns: columns,\n    expander: expander,\n    getRowKey: getRowKey,\n    isAnyColumnsFixed: isAnyColumnsFixed\n  });\n\n  if (fixed && columns.length) {\n    var refName = void 0;\n    if (columns[0].fixed === 'left' || columns[0].fixed === true) {\n      refName = 'fixedColumnsBodyLeft';\n    } else if (columns[0].fixed === 'right') {\n      refName = 'fixedColumnsBodyRight';\n    }\n    delete bodyStyle.overflowX;\n    delete bodyStyle.overflowY;\n    return external_react_default.a.createElement(\n      'div',\n      { key: 'bodyTable', className: prefixCls + '-body-outer', style: extends_default()({}, bodyStyle) },\n      external_react_default.a.createElement(\n        'div',\n        {\n          className: prefixCls + '-body-inner',\n          style: innerBodyStyle,\n          ref: saveRef(refName),\n          onWheel: handleWheel,\n          onScroll: handleBodyScroll\n        },\n        baseTable\n      )\n    );\n  }\n\n  return external_react_default.a.createElement(\n    'div',\n    {\n      key: 'bodyTable',\n      className: prefixCls + '-body',\n      style: bodyStyle,\n      ref: saveRef('bodyTable'),\n      onWheel: handleWheel,\n      onScroll: handleBodyScroll\n    },\n    baseTable\n  );\n}\n\nBodyTable.propTypes = {\n  fixed: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.bool]),\n  columns: prop_types_default.a.array.isRequired,\n  tableClassName: prop_types_default.a.string.isRequired,\n  handleWheel: prop_types_default.a.func.isRequired,\n  handleBodyScroll: prop_types_default.a.func.isRequired,\n  getRowKey: prop_types_default.a.func.isRequired,\n  expander: prop_types_default.a.object.isRequired,\n  isAnyColumnsFixed: prop_types_default.a.bool\n};\n\nBodyTable.contextTypes = {\n  table: prop_types_default.a.any\n};\n// CONCATENATED MODULE: ./node_modules/rc-table/es/ExpandableTable.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ExpandableTable_ExpandableTable = function (_React$Component) {\n  helpers_inherits_default()(ExpandableTable, _React$Component);\n\n  function ExpandableTable(props) {\n    helpers_classCallCheck_default()(this, ExpandableTable);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, (ExpandableTable.__proto__ || Object.getPrototypeOf(ExpandableTable)).call(this, props));\n\n    ExpandableTable_initialiseProps.call(_this);\n\n    var data = props.data,\n        childrenColumnName = props.childrenColumnName,\n        defaultExpandAllRows = props.defaultExpandAllRows,\n        expandedRowKeys = props.expandedRowKeys,\n        defaultExpandedRowKeys = props.defaultExpandedRowKeys,\n        getRowKey = props.getRowKey;\n\n\n    var finalExpandedRowKeys = [];\n    var rows = [].concat(toConsumableArray_default()(data));\n\n    if (defaultExpandAllRows) {\n      for (var i = 0; i < rows.length; i++) {\n        var row = rows[i];\n        finalExpandedRowKeys.push(getRowKey(row, i));\n        rows = rows.concat(row[childrenColumnName] || []);\n      }\n    } else {\n      finalExpandedRowKeys = expandedRowKeys || defaultExpandedRowKeys;\n    }\n\n    _this.columnManager = props.columnManager;\n    _this.store = props.store;\n\n    _this.store.setState({\n      expandedRowsHeight: {},\n      expandedRowKeys: finalExpandedRowKeys\n    });\n    return _this;\n  }\n\n  helpers_createClass_default()(ExpandableTable, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.handleUpdated();\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate() {\n      if ('expandedRowKeys' in this.props) {\n        this.store.setState({\n          expandedRowKeys: this.props.expandedRowKeys\n        });\n      }\n      this.handleUpdated();\n    }\n  }, {\n    key: 'handleUpdated',\n    value: function handleUpdated() {\n      // We should record latest expanded rows to avoid multiple rows remove cause `onExpandedRowsChange` trigger many times\n      this.latestExpandedRows = null;\n    }\n  }, {\n    key: 'renderExpandedRow',\n    value: function renderExpandedRow(record, index, _render, className, ancestorKeys, indent, fixed) {\n      var _this2 = this;\n\n      var _props = this.props,\n          prefixCls = _props.prefixCls,\n          expandIconAsCell = _props.expandIconAsCell,\n          indentSize = _props.indentSize;\n\n      var parentKey = ancestorKeys[ancestorKeys.length - 1];\n      var rowKey = parentKey + '-extra-row';\n      var components = {\n        body: {\n          row: 'tr',\n          cell: 'td'\n        }\n      };\n      var colCount = void 0;\n      if (fixed === 'left') {\n        colCount = this.columnManager.leftLeafColumns().length;\n      } else if (fixed === 'right') {\n        colCount = this.columnManager.rightLeafColumns().length;\n      } else {\n        colCount = this.columnManager.leafColumns().length;\n      }\n      var columns = [{\n        key: 'extra-row',\n        render: function render() {\n          var _store$getState = _this2.store.getState(),\n              expandedRowKeys = _store$getState.expandedRowKeys;\n\n          var expanded = !!~expandedRowKeys.indexOf(parentKey);\n          return {\n            props: {\n              colSpan: colCount\n            },\n            children: fixed !== 'right' ? _render(record, index, indent, expanded) : '&nbsp;'\n          };\n        }\n      }];\n      if (expandIconAsCell && fixed !== 'right') {\n        columns.unshift({\n          key: 'expand-icon-placeholder',\n          render: function render() {\n            return null;\n          }\n        });\n      }\n\n      return external_react_default.a.createElement(es_TableRow, {\n        key: rowKey,\n        columns: columns,\n        className: className,\n        rowKey: rowKey,\n        ancestorKeys: ancestorKeys,\n        prefixCls: prefixCls + '-expanded-row',\n        indentSize: indentSize,\n        indent: indent,\n        fixed: fixed,\n        components: components,\n        expandedRow: true\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _props2 = this.props,\n          data = _props2.data,\n          childrenColumnName = _props2.childrenColumnName,\n          children = _props2.children;\n\n      var needIndentSpaced = data.some(function (record) {\n        return record[childrenColumnName];\n      });\n\n      return children({\n        props: this.props,\n        needIndentSpaced: needIndentSpaced,\n        renderRows: this.renderRows,\n        handleExpandChange: this.handleExpandChange,\n        renderExpandIndentCell: this.renderExpandIndentCell\n      });\n    }\n  }]);\n\n  return ExpandableTable;\n}(external_react_default.a.Component);\n\nExpandableTable_ExpandableTable.propTypes = {\n  expandIconAsCell: prop_types_default.a.bool,\n  expandedRowKeys: prop_types_default.a.array,\n  expandedRowClassName: prop_types_default.a.func,\n  defaultExpandAllRows: prop_types_default.a.bool,\n  defaultExpandedRowKeys: prop_types_default.a.array,\n  expandIconColumnIndex: prop_types_default.a.number,\n  expandedRowRender: prop_types_default.a.func,\n  expandIcon: prop_types_default.a.func,\n  childrenColumnName: prop_types_default.a.string,\n  indentSize: prop_types_default.a.number,\n  onExpand: prop_types_default.a.func,\n  onExpandedRowsChange: prop_types_default.a.func,\n  columnManager: prop_types_default.a.object.isRequired,\n  store: prop_types_default.a.object.isRequired,\n  prefixCls: prop_types_default.a.string.isRequired,\n  data: prop_types_default.a.array,\n  children: prop_types_default.a.func.isRequired,\n  getRowKey: prop_types_default.a.func.isRequired\n};\nExpandableTable_ExpandableTable.defaultProps = {\n  expandIconAsCell: false,\n  expandedRowClassName: function expandedRowClassName() {\n    return '';\n  },\n  expandIconColumnIndex: 0,\n  defaultExpandAllRows: false,\n  defaultExpandedRowKeys: [],\n  childrenColumnName: 'children',\n  indentSize: 15,\n  onExpand: function onExpand() {},\n  onExpandedRowsChange: function onExpandedRowsChange() {}\n};\n\nvar ExpandableTable_initialiseProps = function _initialiseProps() {\n  var _this3 = this;\n\n  this.handleExpandChange = function (expanded, record, event, rowKey) {\n    var destroy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n    if (event) {\n      event.stopPropagation();\n    }\n\n    var _props3 = _this3.props,\n        onExpandedRowsChange = _props3.onExpandedRowsChange,\n        onExpand = _props3.onExpand;\n\n    var _store$getState2 = _this3.store.getState(),\n        expandedRowKeys = _store$getState2.expandedRowKeys;\n\n    if (expanded) {\n      // row was expanded\n      expandedRowKeys = [].concat(toConsumableArray_default()(expandedRowKeys), [rowKey]);\n    } else {\n      // row was collapse\n      var expandedRowIndex = expandedRowKeys.indexOf(rowKey);\n      if (expandedRowIndex !== -1) {\n        expandedRowKeys = utils_remove(expandedRowKeys, rowKey);\n      }\n    }\n\n    if (!_this3.props.expandedRowKeys) {\n      _this3.store.setState({ expandedRowKeys: expandedRowKeys });\n    }\n\n    // De-dup of repeat call\n    if (!_this3.latestExpandedRows || !shallowequal_default()(_this3.latestExpandedRows, expandedRowKeys)) {\n      _this3.latestExpandedRows = expandedRowKeys;\n      onExpandedRowsChange(expandedRowKeys);\n    }\n    if (!destroy) {\n      onExpand(expanded, record);\n    }\n  };\n\n  this.renderExpandIndentCell = function (rows, fixed) {\n    var _props4 = _this3.props,\n        prefixCls = _props4.prefixCls,\n        expandIconAsCell = _props4.expandIconAsCell;\n\n    if (!expandIconAsCell || fixed === 'right' || !rows.length) {\n      return;\n    }\n\n    var iconColumn = {\n      key: 'rc-table-expand-icon-cell',\n      className: prefixCls + '-expand-icon-th',\n      title: '',\n      rowSpan: rows.length\n    };\n\n    rows[0].unshift(extends_default()({}, iconColumn, { column: iconColumn }));\n  };\n\n  this.renderRows = function (renderRows, rows, record, index, indent, fixed, parentKey, ancestorKeys) {\n    var _props5 = _this3.props,\n        expandedRowClassName = _props5.expandedRowClassName,\n        expandedRowRender = _props5.expandedRowRender,\n        childrenColumnName = _props5.childrenColumnName;\n\n    var childrenData = record[childrenColumnName];\n    var nextAncestorKeys = [].concat(toConsumableArray_default()(ancestorKeys), [parentKey]);\n    var nextIndent = indent + 1;\n\n    if (expandedRowRender) {\n      rows.push(_this3.renderExpandedRow(record, index, expandedRowRender, expandedRowClassName(record, index, indent), nextAncestorKeys, nextIndent, fixed));\n    }\n\n    if (childrenData) {\n      rows.push.apply(rows, toConsumableArray_default()(renderRows(childrenData, nextIndent, nextAncestorKeys)));\n    }\n  };\n};\n\nObject(react_lifecycles_compat_es[\"polyfill\"])(ExpandableTable_ExpandableTable);\n\n/* harmony default export */ var es_ExpandableTable = (Object(mini_store_lib[\"connect\"])()(ExpandableTable_ExpandableTable));\n// CONCATENATED MODULE: ./node_modules/rc-table/es/Table.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Table_Table = function (_React$Component) {\n  helpers_inherits_default()(Table, _React$Component);\n\n  function Table(props) {\n    helpers_classCallCheck_default()(this, Table);\n\n    var _this = helpers_possibleConstructorReturn_default()(this, (Table.__proto__ || Object.getPrototypeOf(Table)).call(this, props));\n\n    _this.state = {};\n\n    _this.getRowKey = function (record, index) {\n      var rowKey = _this.props.rowKey;\n      var key = typeof rowKey === 'function' ? rowKey(record, index) : record[rowKey];\n      warningOnce(key !== undefined, 'Each record in table should have a unique `key` prop,' + 'or set `rowKey` to an unique primary key.');\n      return key === undefined ? index : key;\n    };\n\n    _this.handleWindowResize = function () {\n      _this.syncFixedTableRowHeight();\n      _this.setScrollPositionClassName();\n    };\n\n    _this.syncFixedTableRowHeight = function () {\n      var tableRect = _this.tableNode.getBoundingClientRect();\n      // If tableNode's height less than 0, suppose it is hidden and don't recalculate rowHeight.\n      // see: https://github.com/ant-design/ant-design/issues/4836\n      if (tableRect.height !== undefined && tableRect.height <= 0) {\n        return;\n      }\n      var prefixCls = _this.props.prefixCls;\n\n      var headRows = _this.headTable ? _this.headTable.querySelectorAll('thead') : _this.bodyTable.querySelectorAll('thead');\n      var bodyRows = _this.bodyTable.querySelectorAll('.' + prefixCls + '-row') || [];\n      var fixedColumnsHeadRowsHeight = [].map.call(headRows, function (row) {\n        return row.getBoundingClientRect().height || 'auto';\n      });\n      var state = _this.store.getState();\n      var fixedColumnsBodyRowsHeight = [].reduce.call(bodyRows, function (acc, row) {\n        var rowKey = row.getAttribute('data-row-key');\n        var height = row.getBoundingClientRect().height || state.fixedColumnsBodyRowsHeight[rowKey] || 'auto';\n        acc[rowKey] = height;\n        return acc;\n      }, {});\n      if (shallowequal_default()(state.fixedColumnsHeadRowsHeight, fixedColumnsHeadRowsHeight) && shallowequal_default()(state.fixedColumnsBodyRowsHeight, fixedColumnsBodyRowsHeight)) {\n        return;\n      }\n\n      _this.store.setState({\n        fixedColumnsHeadRowsHeight: fixedColumnsHeadRowsHeight,\n        fixedColumnsBodyRowsHeight: fixedColumnsBodyRowsHeight\n      });\n    };\n\n    _this.handleBodyScrollLeft = function (e) {\n      // Fix https://github.com/ant-design/ant-design/issues/7635\n      if (e.currentTarget !== e.target) {\n        return;\n      }\n      var target = e.target;\n      var _this$props$scroll = _this.props.scroll,\n          scroll = _this$props$scroll === undefined ? {} : _this$props$scroll;\n      var headTable = _this.headTable,\n          bodyTable = _this.bodyTable;\n\n      if (target.scrollLeft !== _this.lastScrollLeft && scroll.x) {\n        if (target === bodyTable && headTable) {\n          headTable.scrollLeft = target.scrollLeft;\n        } else if (target === headTable && bodyTable) {\n          bodyTable.scrollLeft = target.scrollLeft;\n        }\n        _this.setScrollPositionClassName();\n      }\n      // Remember last scrollLeft for scroll direction detecting.\n      _this.lastScrollLeft = target.scrollLeft;\n    };\n\n    _this.handleBodyScrollTop = function (e) {\n      var target = e.target;\n      // Fix https://github.com/ant-design/ant-design/issues/9033\n      if (e.currentTarget !== target) {\n        return;\n      }\n      var _this$props$scroll2 = _this.props.scroll,\n          scroll = _this$props$scroll2 === undefined ? {} : _this$props$scroll2;\n      var headTable = _this.headTable,\n          bodyTable = _this.bodyTable,\n          fixedColumnsBodyLeft = _this.fixedColumnsBodyLeft,\n          fixedColumnsBodyRight = _this.fixedColumnsBodyRight;\n\n      if (target.scrollTop !== _this.lastScrollTop && scroll.y && target !== headTable) {\n        var scrollTop = target.scrollTop;\n        if (fixedColumnsBodyLeft && target !== fixedColumnsBodyLeft) {\n          fixedColumnsBodyLeft.scrollTop = scrollTop;\n        }\n        if (fixedColumnsBodyRight && target !== fixedColumnsBodyRight) {\n          fixedColumnsBodyRight.scrollTop = scrollTop;\n        }\n        if (bodyTable && target !== bodyTable) {\n          bodyTable.scrollTop = scrollTop;\n        }\n      }\n      // Remember last scrollTop for scroll direction detecting.\n      _this.lastScrollTop = target.scrollTop;\n    };\n\n    _this.handleBodyScroll = function (e) {\n      _this.handleBodyScrollLeft(e);\n      _this.handleBodyScrollTop(e);\n    };\n\n    _this.handleWheel = function (event) {\n      var _this$props$scroll3 = _this.props.scroll,\n          scroll = _this$props$scroll3 === undefined ? {} : _this$props$scroll3;\n\n      if (window.navigator.userAgent.match(/Trident\\/7\\./) && scroll.y) {\n        event.preventDefault();\n        var wd = event.deltaY;\n        var target = event.target;\n        var bodyTable = _this.bodyTable,\n            fixedColumnsBodyLeft = _this.fixedColumnsBodyLeft,\n            fixedColumnsBodyRight = _this.fixedColumnsBodyRight;\n\n        var scrollTop = 0;\n\n        if (_this.lastScrollTop) {\n          scrollTop = _this.lastScrollTop + wd;\n        } else {\n          scrollTop = wd;\n        }\n\n        if (fixedColumnsBodyLeft && target !== fixedColumnsBodyLeft) {\n          fixedColumnsBodyLeft.scrollTop = scrollTop;\n        }\n        if (fixedColumnsBodyRight && target !== fixedColumnsBodyRight) {\n          fixedColumnsBodyRight.scrollTop = scrollTop;\n        }\n        if (bodyTable && target !== bodyTable) {\n          bodyTable.scrollTop = scrollTop;\n        }\n      }\n    };\n\n    _this.saveRef = function (name) {\n      return function (node) {\n        _this[name] = node;\n      };\n    };\n\n    ['onRowClick', 'onRowDoubleClick', 'onRowContextMenu', 'onRowMouseEnter', 'onRowMouseLeave'].forEach(function (name) {\n      warningOnce(props[name] === undefined, name + ' is deprecated, please use onRow instead.');\n    });\n\n    warningOnce(props.getBodyWrapper === undefined, 'getBodyWrapper is deprecated, please use custom components instead.');\n\n    _this.columnManager = new es_ColumnManager(props.columns, props.children);\n\n    _this.store = Object(mini_store_lib[\"create\"])({\n      currentHoverKey: null,\n      fixedColumnsHeadRowsHeight: [],\n      fixedColumnsBodyRowsHeight: {}\n    });\n\n    _this.setScrollPosition('left');\n\n    _this.debouncedWindowResize = utils_debounce(_this.handleWindowResize, 150);\n    return _this;\n  }\n\n  helpers_createClass_default()(Table, [{\n    key: 'getChildContext',\n    value: function getChildContext() {\n      return {\n        table: {\n          props: this.props,\n          columnManager: this.columnManager,\n          saveRef: this.saveRef,\n          components: merge_default()({\n            table: 'table',\n            header: {\n              wrapper: 'thead',\n              row: 'tr',\n              cell: 'th'\n            },\n            body: {\n              wrapper: 'tbody',\n              row: 'tr',\n              cell: 'td'\n            }\n          }, this.props.components)\n        }\n      };\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      if (this.columnManager.isAnyColumnsFixed()) {\n        this.handleWindowResize();\n        this.resizeEvent = Object(addEventListener[\"a\" /* default */])(window, 'resize', this.debouncedWindowResize);\n      }\n\n      // https://github.com/ant-design/ant-design/issues/11635\n      if (this.headTable) {\n        this.headTable.scrollLeft = 0;\n      }\n      if (this.bodyTable) {\n        this.bodyTable.scrollLeft = 0;\n      }\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps) {\n      if (this.columnManager.isAnyColumnsFixed()) {\n        this.handleWindowResize();\n        if (!this.resizeEvent) {\n          this.resizeEvent = Object(addEventListener[\"a\" /* default */])(window, 'resize', this.debouncedWindowResize);\n        }\n      }\n      // when table changes to empty, reset scrollLeft\n      if (prevProps.data.length > 0 && this.props.data.length === 0 && this.hasScrollX()) {\n        this.resetScrollX();\n      }\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      if (this.resizeEvent) {\n        this.resizeEvent.remove();\n      }\n      if (this.debouncedWindowResize) {\n        this.debouncedWindowResize.cancel();\n      }\n    }\n  }, {\n    key: 'setScrollPosition',\n    value: function setScrollPosition(position) {\n      this.scrollPosition = position;\n      if (this.tableNode) {\n        var prefixCls = this.props.prefixCls;\n\n        if (position === 'both') {\n          component_classes_default()(this.tableNode).remove(new RegExp('^' + prefixCls + '-scroll-position-.+$')).add(prefixCls + '-scroll-position-left').add(prefixCls + '-scroll-position-right');\n        } else {\n          component_classes_default()(this.tableNode).remove(new RegExp('^' + prefixCls + '-scroll-position-.+$')).add(prefixCls + '-scroll-position-' + position);\n        }\n      }\n    }\n  }, {\n    key: 'setScrollPositionClassName',\n    value: function setScrollPositionClassName() {\n      var node = this.bodyTable;\n      var scrollToLeft = node.scrollLeft === 0;\n      var scrollToRight = node.scrollLeft + 1 >= node.children[0].getBoundingClientRect().width - node.getBoundingClientRect().width;\n      if (scrollToLeft && scrollToRight) {\n        this.setScrollPosition('both');\n      } else if (scrollToLeft) {\n        this.setScrollPosition('left');\n      } else if (scrollToRight) {\n        this.setScrollPosition('right');\n      } else if (this.scrollPosition !== 'middle') {\n        this.setScrollPosition('middle');\n      }\n    }\n  }, {\n    key: 'resetScrollX',\n    value: function resetScrollX() {\n      if (this.headTable) {\n        this.headTable.scrollLeft = 0;\n      }\n      if (this.bodyTable) {\n        this.bodyTable.scrollLeft = 0;\n      }\n    }\n  }, {\n    key: 'hasScrollX',\n    value: function hasScrollX() {\n      var _props$scroll = this.props.scroll,\n          scroll = _props$scroll === undefined ? {} : _props$scroll;\n\n      return 'x' in scroll;\n    }\n  }, {\n    key: 'renderMainTable',\n    value: function renderMainTable() {\n      var _props = this.props,\n          scroll = _props.scroll,\n          prefixCls = _props.prefixCls;\n\n      var isAnyColumnsFixed = this.columnManager.isAnyColumnsFixed();\n      var scrollable = isAnyColumnsFixed || scroll.x || scroll.y;\n\n      var table = [this.renderTable({\n        columns: this.columnManager.groupedColumns(),\n        isAnyColumnsFixed: isAnyColumnsFixed\n      }), this.renderEmptyText(), this.renderFooter()];\n\n      return scrollable ? external_react_default.a.createElement(\n        'div',\n        { className: prefixCls + '-scroll' },\n        table\n      ) : table;\n    }\n  }, {\n    key: 'renderLeftFixedTable',\n    value: function renderLeftFixedTable() {\n      var prefixCls = this.props.prefixCls;\n\n\n      return external_react_default.a.createElement(\n        'div',\n        { className: prefixCls + '-fixed-left' },\n        this.renderTable({\n          columns: this.columnManager.leftColumns(),\n          fixed: 'left'\n        })\n      );\n    }\n  }, {\n    key: 'renderRightFixedTable',\n    value: function renderRightFixedTable() {\n      var prefixCls = this.props.prefixCls;\n\n\n      return external_react_default.a.createElement(\n        'div',\n        { className: prefixCls + '-fixed-right' },\n        this.renderTable({\n          columns: this.columnManager.rightColumns(),\n          fixed: 'right'\n        })\n      );\n    }\n  }, {\n    key: 'renderTable',\n    value: function renderTable(options) {\n      var columns = options.columns,\n          fixed = options.fixed,\n          isAnyColumnsFixed = options.isAnyColumnsFixed;\n      var _props2 = this.props,\n          prefixCls = _props2.prefixCls,\n          _props2$scroll = _props2.scroll,\n          scroll = _props2$scroll === undefined ? {} : _props2$scroll;\n\n      var tableClassName = scroll.x || fixed ? prefixCls + '-fixed' : '';\n\n      var headTable = external_react_default.a.createElement(HeadTable, {\n        key: 'head',\n        columns: columns,\n        fixed: fixed,\n        tableClassName: tableClassName,\n        handleBodyScrollLeft: this.handleBodyScrollLeft,\n        expander: this.expander\n      });\n\n      var bodyTable = external_react_default.a.createElement(BodyTable, {\n        key: 'body',\n        columns: columns,\n        fixed: fixed,\n        tableClassName: tableClassName,\n        getRowKey: this.getRowKey,\n        handleWheel: this.handleWheel,\n        handleBodyScroll: this.handleBodyScroll,\n        expander: this.expander,\n        isAnyColumnsFixed: isAnyColumnsFixed\n      });\n\n      return [headTable, bodyTable];\n    }\n  }, {\n    key: 'renderTitle',\n    value: function renderTitle() {\n      var _props3 = this.props,\n          title = _props3.title,\n          prefixCls = _props3.prefixCls;\n\n      return title ? external_react_default.a.createElement(\n        'div',\n        { className: prefixCls + '-title', key: 'title' },\n        title(this.props.data)\n      ) : null;\n    }\n  }, {\n    key: 'renderFooter',\n    value: function renderFooter() {\n      var _props4 = this.props,\n          footer = _props4.footer,\n          prefixCls = _props4.prefixCls;\n\n      return footer ? external_react_default.a.createElement(\n        'div',\n        { className: prefixCls + '-footer', key: 'footer' },\n        footer(this.props.data)\n      ) : null;\n    }\n  }, {\n    key: 'renderEmptyText',\n    value: function renderEmptyText() {\n      var _props5 = this.props,\n          emptyText = _props5.emptyText,\n          prefixCls = _props5.prefixCls,\n          data = _props5.data;\n\n      if (data.length) {\n        return null;\n      }\n      var emptyClassName = prefixCls + '-placeholder';\n      return external_react_default.a.createElement(\n        'div',\n        { className: emptyClassName, key: 'emptyText' },\n        typeof emptyText === 'function' ? emptyText() : emptyText\n      );\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var props = this.props;\n      var prefixCls = props.prefixCls;\n\n      if (this.state.columns) {\n        this.columnManager.reset(props.columns);\n      } else if (this.state.children) {\n        this.columnManager.reset(null, props.children);\n      }\n\n      var className = props.prefixCls;\n      if (props.className) {\n        className += ' ' + props.className;\n      }\n      if (props.useFixedHeader || props.scroll && props.scroll.y) {\n        className += ' ' + prefixCls + '-fixed-header';\n      }\n      if (this.scrollPosition === 'both') {\n        className += ' ' + prefixCls + '-scroll-position-left ' + prefixCls + '-scroll-position-right';\n      } else {\n        className += ' ' + prefixCls + '-scroll-position-' + this.scrollPosition;\n      }\n      var hasLeftFixed = this.columnManager.isAnyColumnsLeftFixed();\n      var hasRightFixed = this.columnManager.isAnyColumnsRightFixed();\n      var dataAndAriaProps = getDataAndAriaProps(props);\n\n      return external_react_default.a.createElement(\n        mini_store_lib[\"Provider\"],\n        { store: this.store },\n        external_react_default.a.createElement(\n          es_ExpandableTable,\n          extends_default()({}, props, { columnManager: this.columnManager, getRowKey: this.getRowKey }),\n          function (expander) {\n            _this2.expander = expander;\n            return external_react_default.a.createElement(\n              'div',\n              extends_default()({\n                ref: _this2.saveRef('tableNode'),\n                className: className,\n                style: props.style,\n                id: props.id\n              }, dataAndAriaProps),\n              _this2.renderTitle(),\n              external_react_default.a.createElement(\n                'div',\n                { className: prefixCls + '-content' },\n                _this2.renderMainTable(),\n                hasLeftFixed && _this2.renderLeftFixedTable(),\n                hasRightFixed && _this2.renderRightFixedTable()\n              )\n            );\n          }\n        )\n      );\n    }\n  }], [{\n    key: 'getDerivedStateFromProps',\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.columns && nextProps.columns !== prevState.columns) {\n        return {\n          columns: nextProps.columns,\n          children: null\n        };\n      } else if (nextProps.children !== prevState.children) {\n        return {\n          columns: null,\n          children: nextProps.children\n        };\n      }\n      return null;\n    }\n  }]);\n\n  return Table;\n}(external_react_default.a.Component);\n\nTable_Table.propTypes = extends_default()({\n  data: prop_types_default.a.array,\n  useFixedHeader: prop_types_default.a.bool,\n  columns: prop_types_default.a.array,\n  prefixCls: prop_types_default.a.string,\n  bodyStyle: prop_types_default.a.object,\n  style: prop_types_default.a.object,\n  rowKey: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.func]),\n  rowClassName: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.func]),\n  onRow: prop_types_default.a.func,\n  onHeaderRow: prop_types_default.a.func,\n  onRowClick: prop_types_default.a.func,\n  onRowDoubleClick: prop_types_default.a.func,\n  onRowContextMenu: prop_types_default.a.func,\n  onRowMouseEnter: prop_types_default.a.func,\n  onRowMouseLeave: prop_types_default.a.func,\n  showHeader: prop_types_default.a.bool,\n  title: prop_types_default.a.func,\n  id: prop_types_default.a.string,\n  footer: prop_types_default.a.func,\n  emptyText: prop_types_default.a.oneOfType([prop_types_default.a.node, prop_types_default.a.func]),\n  scroll: prop_types_default.a.object,\n  rowRef: prop_types_default.a.func,\n  getBodyWrapper: prop_types_default.a.func,\n  children: prop_types_default.a.node,\n  components: prop_types_default.a.shape({\n    table: prop_types_default.a.any,\n    header: prop_types_default.a.shape({\n      wrapper: prop_types_default.a.any,\n      row: prop_types_default.a.any,\n      cell: prop_types_default.a.any\n    }),\n    body: prop_types_default.a.shape({\n      wrapper: prop_types_default.a.any,\n      row: prop_types_default.a.any,\n      cell: prop_types_default.a.any\n    })\n  })\n}, es_ExpandableTable.PropTypes);\nTable_Table.childContextTypes = {\n  table: prop_types_default.a.any,\n  components: prop_types_default.a.any\n};\nTable_Table.defaultProps = {\n  data: [],\n  useFixedHeader: false,\n  rowKey: 'key',\n  rowClassName: function rowClassName() {\n    return '';\n  },\n  onRow: function onRow() {},\n  onHeaderRow: function onHeaderRow() {},\n\n  prefixCls: 'rc-table',\n  bodyStyle: {},\n  style: {},\n  showHeader: true,\n  scroll: {},\n  rowRef: function rowRef() {\n    return null;\n  },\n  emptyText: function emptyText() {\n    return 'No Data';\n  }\n};\n\n\nObject(react_lifecycles_compat_es[\"polyfill\"])(Table_Table);\n\n/* harmony default export */ var es_Table = (Table_Table);\n// CONCATENATED MODULE: ./node_modules/rc-table/es/Column.js\n\n\nfunction Column() {}\n\nColumn.propTypes = {\n  className: prop_types_default.a.string,\n  colSpan: prop_types_default.a.number,\n  title: prop_types_default.a.node,\n  dataIndex: prop_types_default.a.string,\n  width: prop_types_default.a.oneOfType([prop_types_default.a.number, prop_types_default.a.string]),\n  fixed: prop_types_default.a.oneOf([true, 'left', 'right']),\n  render: prop_types_default.a.func,\n  onCellClick: prop_types_default.a.func,\n  onCell: prop_types_default.a.func,\n  onHeaderCell: prop_types_default.a.func\n};\n\n/* harmony default export */ var es_Column = (Column);\n// CONCATENATED MODULE: ./node_modules/rc-table/es/ColumnGroup.js\n\n\n\n\n\n\nvar ColumnGroup_ColumnGroup = function (_Component) {\n  helpers_inherits_default()(ColumnGroup, _Component);\n\n  function ColumnGroup() {\n    helpers_classCallCheck_default()(this, ColumnGroup);\n\n    return helpers_possibleConstructorReturn_default()(this, (ColumnGroup.__proto__ || Object.getPrototypeOf(ColumnGroup)).apply(this, arguments));\n  }\n\n  return ColumnGroup;\n}(external_react_[\"Component\"]);\n\nColumnGroup_ColumnGroup.isTableColumnGroup = true;\nColumnGroup_ColumnGroup.propTypes = {\n  title: prop_types_default.a.node\n};\n/* harmony default export */ var es_ColumnGroup = (ColumnGroup_ColumnGroup);\n// CONCATENATED MODULE: ./node_modules/rc-table/es/index.js\n\n\n\n\nes_Table.Column = es_Column;\nes_Table.ColumnGroup = es_ColumnGroup;\n\n/* harmony default export */ var rc_table_es = (es_Table);\n\n// EXTERNAL MODULE: ./node_modules/dom-closest/index.js\nvar dom_closest = __webpack_require__(694);\nvar dom_closest_default = /*#__PURE__*/__webpack_require__.n(dom_closest);\n\n// CONCATENATED MODULE: ./node_modules/rc-dropdown/es/placements.js\nvar rc_dropdown_es_placements_autoAdjustOverflow = {\n  adjustX: 1,\n  adjustY: 1\n};\n\nvar es_placements_targetOffset = [0, 0];\n\nvar es_placements_placements = {\n  topLeft: {\n    points: ['bl', 'tl'],\n    overflow: rc_dropdown_es_placements_autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset: es_placements_targetOffset\n  },\n  topCenter: {\n    points: ['bc', 'tc'],\n    overflow: rc_dropdown_es_placements_autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset: es_placements_targetOffset\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    overflow: rc_dropdown_es_placements_autoAdjustOverflow,\n    offset: [0, -4],\n    targetOffset: es_placements_targetOffset\n  },\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    overflow: rc_dropdown_es_placements_autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset: es_placements_targetOffset\n  },\n  bottomCenter: {\n    points: ['tc', 'bc'],\n    overflow: rc_dropdown_es_placements_autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset: es_placements_targetOffset\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    overflow: rc_dropdown_es_placements_autoAdjustOverflow,\n    offset: [0, 4],\n    targetOffset: es_placements_targetOffset\n  }\n};\n\n/* harmony default export */ var rc_dropdown_es_placements = (es_placements_placements);\n// CONCATENATED MODULE: ./node_modules/rc-dropdown/es/Dropdown.js\nvar Dropdown_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\nfunction Dropdown_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 Dropdown_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Dropdown_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 Dropdown_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\n\n\n\n\n\n\nvar Dropdown_Dropdown = function (_Component) {\n  Dropdown_inherits(Dropdown, _Component);\n\n  function Dropdown(props) {\n    Dropdown_classCallCheck(this, Dropdown);\n\n    var _this = Dropdown_possibleConstructorReturn(this, _Component.call(this, props));\n\n    Dropdown_initialiseProps.call(_this);\n\n    if ('visible' in props) {\n      _this.state = {\n        visible: props.visible\n      };\n    } else {\n      _this.state = {\n        visible: props.defaultVisible\n      };\n    }\n    return _this;\n  }\n\n  Dropdown.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) {\n    if ('visible' in nextProps) {\n      return {\n        visible: nextProps.visible\n      };\n    }\n    return null;\n  };\n\n  Dropdown.prototype.getOverlayElement = function getOverlayElement() {\n    var overlay = this.props.overlay;\n\n    var overlayElement = void 0;\n    if (typeof overlay === 'function') {\n      overlayElement = overlay();\n    } else {\n      overlayElement = overlay;\n    }\n    return overlayElement;\n  };\n\n  Dropdown.prototype.getMenuElementOrLambda = function getMenuElementOrLambda() {\n    var overlay = this.props.overlay;\n\n    if (typeof overlay === 'function') {\n      return this.getMenuElement;\n    }\n    return this.getMenuElement();\n  };\n\n  Dropdown.prototype.getPopupDomNode = function getPopupDomNode() {\n    return this.trigger.getPopupDomNode();\n  };\n\n  Dropdown.prototype.getOpenClassName = function getOpenClassName() {\n    var _props = this.props,\n        openClassName = _props.openClassName,\n        prefixCls = _props.prefixCls;\n\n    if (openClassName !== undefined) {\n      return openClassName;\n    }\n    return prefixCls + '-open';\n  };\n\n  Dropdown.prototype.renderChildren = function renderChildren() {\n    var children = this.props.children;\n    var visible = this.state.visible;\n\n    var childrenProps = children.props ? children.props : {};\n    var childClassName = node_modules_classnames_default()(childrenProps.className, this.getOpenClassName());\n    return visible && children ? Object(external_react_[\"cloneElement\"])(children, { className: childClassName }) : children;\n  };\n\n  Dropdown.prototype.render = function render() {\n    var _props2 = this.props,\n        prefixCls = _props2.prefixCls,\n        transitionName = _props2.transitionName,\n        animation = _props2.animation,\n        align = _props2.align,\n        placement = _props2.placement,\n        getPopupContainer = _props2.getPopupContainer,\n        showAction = _props2.showAction,\n        hideAction = _props2.hideAction,\n        overlayClassName = _props2.overlayClassName,\n        overlayStyle = _props2.overlayStyle,\n        trigger = _props2.trigger,\n        otherProps = Dropdown_objectWithoutProperties(_props2, ['prefixCls', 'transitionName', 'animation', 'align', 'placement', 'getPopupContainer', 'showAction', 'hideAction', 'overlayClassName', 'overlayStyle', 'trigger']);\n\n    var triggerHideAction = hideAction;\n    if (!triggerHideAction && trigger.indexOf('contextMenu') !== -1) {\n      triggerHideAction = ['click'];\n    }\n\n    return external_react_default.a.createElement(\n      rc_trigger_es[\"a\" /* default */],\n      Dropdown_extends({}, otherProps, {\n        prefixCls: prefixCls,\n        ref: this.saveTrigger,\n        popupClassName: overlayClassName,\n        popupStyle: overlayStyle,\n        builtinPlacements: rc_dropdown_es_placements,\n        action: trigger,\n        showAction: showAction,\n        hideAction: triggerHideAction || [],\n        popupPlacement: placement,\n        popupAlign: align,\n        popupTransitionName: transitionName,\n        popupAnimation: animation,\n        popupVisible: this.state.visible,\n        afterPopupVisibleChange: this.afterVisibleChange,\n        popup: this.getMenuElementOrLambda(),\n        onPopupVisibleChange: this.onVisibleChange,\n        getPopupContainer: getPopupContainer\n      }),\n      this.renderChildren()\n    );\n  };\n\n  return Dropdown;\n}(external_react_[\"Component\"]);\n\nDropdown_Dropdown.propTypes = {\n  minOverlayWidthMatchTrigger: prop_types_default.a.bool,\n  onVisibleChange: prop_types_default.a.func,\n  onOverlayClick: prop_types_default.a.func,\n  prefixCls: prop_types_default.a.string,\n  children: prop_types_default.a.any,\n  transitionName: prop_types_default.a.string,\n  overlayClassName: prop_types_default.a.string,\n  openClassName: prop_types_default.a.string,\n  animation: prop_types_default.a.any,\n  align: prop_types_default.a.object,\n  overlayStyle: prop_types_default.a.object,\n  placement: prop_types_default.a.string,\n  overlay: prop_types_default.a.oneOfType([prop_types_default.a.node, prop_types_default.a.func]),\n  trigger: prop_types_default.a.array,\n  alignPoint: prop_types_default.a.bool,\n  showAction: prop_types_default.a.array,\n  hideAction: prop_types_default.a.array,\n  getPopupContainer: prop_types_default.a.func,\n  visible: prop_types_default.a.bool,\n  defaultVisible: prop_types_default.a.bool\n};\nDropdown_Dropdown.defaultProps = {\n  prefixCls: 'rc-dropdown',\n  trigger: ['hover'],\n  showAction: [],\n  overlayClassName: '',\n  overlayStyle: {},\n  defaultVisible: false,\n  onVisibleChange: function onVisibleChange() {},\n\n  placement: 'bottomLeft'\n};\n\nvar Dropdown_initialiseProps = function _initialiseProps() {\n  var _this2 = this;\n\n  this.onClick = function (e) {\n    var props = _this2.props;\n    var overlayProps = _this2.getOverlayElement().props;\n    // do no call onVisibleChange, if you need click to hide, use onClick and control visible\n    if (!('visible' in props)) {\n      _this2.setState({\n        visible: false\n      });\n    }\n    if (props.onOverlayClick) {\n      props.onOverlayClick(e);\n    }\n    if (overlayProps.onClick) {\n      overlayProps.onClick(e);\n    }\n  };\n\n  this.onVisibleChange = function (visible) {\n    var props = _this2.props;\n    if (!('visible' in props)) {\n      _this2.setState({\n        visible: visible\n      });\n    }\n    props.onVisibleChange(visible);\n  };\n\n  this.getMinOverlayWidthMatchTrigger = function () {\n    var _props3 = _this2.props,\n        minOverlayWidthMatchTrigger = _props3.minOverlayWidthMatchTrigger,\n        alignPoint = _props3.alignPoint;\n\n    if ('minOverlayWidthMatchTrigger' in _this2.props) {\n      return minOverlayWidthMatchTrigger;\n    }\n\n    return !alignPoint;\n  };\n\n  this.getMenuElement = function () {\n    var prefixCls = _this2.props.prefixCls;\n\n    var overlayElement = _this2.getOverlayElement();\n    var extraOverlayProps = {\n      prefixCls: prefixCls + '-menu',\n      onClick: _this2.onClick\n    };\n    if (typeof overlayElement.type === 'string') {\n      delete extraOverlayProps.prefixCls;\n    }\n    return external_react_default.a.cloneElement(overlayElement, extraOverlayProps);\n  };\n\n  this.afterVisibleChange = function (visible) {\n    if (visible && _this2.getMinOverlayWidthMatchTrigger()) {\n      var overlayNode = _this2.getPopupDomNode();\n      var rootNode = external_react_dom_default.a.findDOMNode(_this2);\n      if (rootNode && overlayNode && rootNode.offsetWidth > overlayNode.offsetWidth) {\n        overlayNode.style.minWidth = rootNode.offsetWidth + 'px';\n        if (_this2.trigger && _this2.trigger._component && _this2.trigger._component.alignInstance) {\n          _this2.trigger._component.alignInstance.forceAlign();\n        }\n      }\n    }\n  };\n\n  this.saveTrigger = function (node) {\n    _this2.trigger = node;\n  };\n};\n\nObject(react_lifecycles_compat_es[\"polyfill\"])(Dropdown_Dropdown);\n\n/* harmony default export */ var es_Dropdown = (Dropdown_Dropdown);\n// CONCATENATED MODULE: ./node_modules/rc-dropdown/es/index.js\n\n/* harmony default export */ var rc_dropdown_es = (es_Dropdown);\n// CONCATENATED MODULE: ./node_modules/antd/es/dropdown/dropdown.js\nfunction dropdown_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { dropdown_typeof = function _typeof(obj) { return typeof obj; }; } else { dropdown_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return dropdown_typeof(obj); }\n\nfunction dropdown_extends() { dropdown_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 dropdown_extends.apply(this, arguments); }\n\nfunction dropdown_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction dropdown_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 dropdown_createClass(Constructor, protoProps, staticProps) { if (protoProps) dropdown_defineProperties(Constructor.prototype, protoProps); if (staticProps) dropdown_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction dropdown_possibleConstructorReturn(self, call) { if (call && (dropdown_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return dropdown_assertThisInitialized(self); }\n\nfunction dropdown_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction dropdown_getPrototypeOf(o) { dropdown_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return dropdown_getPrototypeOf(o); }\n\nfunction dropdown_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) dropdown_setPrototypeOf(subClass, superClass); }\n\nfunction dropdown_setPrototypeOf(o, p) { dropdown_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return dropdown_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\nvar Placements = tuple('topLeft', 'topCenter', 'topRight', 'bottomLeft', 'bottomCenter', 'bottomRight');\n\nvar dropdown_Dropdown =\n/*#__PURE__*/\nfunction (_React$Component) {\n  dropdown_inherits(Dropdown, _React$Component);\n\n  function Dropdown() {\n    var _this;\n\n    dropdown_classCallCheck(this, Dropdown);\n\n    _this = dropdown_possibleConstructorReturn(this, dropdown_getPrototypeOf(Dropdown).apply(this, arguments));\n\n    _this.renderOverlay = function (prefixCls) {\n      // rc-dropdown already can process the function of overlay, but we have check logic here.\n      // So we need render the element to check and pass back to rc-dropdown.\n      var overlay = _this.props.overlay;\n      var overlayNode;\n\n      if (typeof overlay === 'function') {\n        overlayNode = overlay();\n      } else {\n        overlayNode = overlay;\n      }\n\n      overlayNode = external_react_[\"Children\"].only(overlayNode);\n      var overlayProps = overlayNode.props; // Warning if use other mode\n\n      _util_warning(!overlayProps.mode || overlayProps.mode === 'vertical', 'Dropdown', \"mode=\\\"\".concat(overlayProps.mode, \"\\\" is not supported for Dropdown's Menu.\")); // menu cannot be selectable in dropdown defaultly\n      // menu should be focusable in dropdown defaultly\n\n      var _overlayProps$selecta = overlayProps.selectable,\n          selectable = _overlayProps$selecta === void 0 ? false : _overlayProps$selecta,\n          _overlayProps$focusab = overlayProps.focusable,\n          focusable = _overlayProps$focusab === void 0 ? true : _overlayProps$focusab;\n      var expandIcon = external_react_[\"createElement\"](\"span\", {\n        className: \"\".concat(prefixCls, \"-menu-submenu-arrow\")\n      }, external_react_[\"createElement\"](es_icon, {\n        type: \"right\",\n        className: \"\".concat(prefixCls, \"-menu-submenu-arrow-icon\")\n      }));\n      var fixedModeOverlay = typeof overlayNode.type === 'string' ? overlay : external_react_[\"cloneElement\"](overlayNode, {\n        mode: 'vertical',\n        selectable: selectable,\n        focusable: focusable,\n        expandIcon: expandIcon\n      });\n      return fixedModeOverlay;\n    };\n\n    _this.renderDropDown = function (_ref) {\n      var getContextPopupContainer = _ref.getPopupContainer,\n          getPrefixCls = _ref.getPrefixCls;\n      var _this$props = _this.props,\n          customizePrefixCls = _this$props.prefixCls,\n          children = _this$props.children,\n          trigger = _this$props.trigger,\n          disabled = _this$props.disabled,\n          getPopupContainer = _this$props.getPopupContainer;\n      var prefixCls = getPrefixCls('dropdown', customizePrefixCls);\n      var child = external_react_[\"Children\"].only(children);\n      var dropdownTrigger = external_react_[\"cloneElement\"](child, {\n        className: classnames_default()(child.props.className, \"\".concat(prefixCls, \"-trigger\")),\n        disabled: disabled\n      });\n      var triggerActions = disabled ? [] : trigger;\n      var alignPoint;\n\n      if (triggerActions && triggerActions.indexOf('contextMenu') !== -1) {\n        alignPoint = true;\n      }\n\n      return external_react_[\"createElement\"](rc_dropdown_es, dropdown_extends({\n        alignPoint: alignPoint\n      }, _this.props, {\n        prefixCls: prefixCls,\n        getPopupContainer: getPopupContainer || getContextPopupContainer,\n        transitionName: _this.getTransitionName(),\n        trigger: triggerActions,\n        overlay: function overlay() {\n          return _this.renderOverlay(prefixCls);\n        }\n      }), dropdownTrigger);\n    };\n\n    return _this;\n  }\n\n  dropdown_createClass(Dropdown, [{\n    key: \"getTransitionName\",\n    value: function getTransitionName() {\n      var _this$props2 = this.props,\n          _this$props2$placemen = _this$props2.placement,\n          placement = _this$props2$placemen === void 0 ? '' : _this$props2$placemen,\n          transitionName = _this$props2.transitionName;\n\n      if (transitionName !== undefined) {\n        return transitionName;\n      }\n\n      if (placement.indexOf('top') >= 0) {\n        return 'slide-down';\n      }\n\n      return 'slide-up';\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderDropDown);\n    }\n  }]);\n\n  return Dropdown;\n}(external_react_[\"Component\"]);\n\n\ndropdown_Dropdown.defaultProps = {\n  mouseEnterDelay: 0.15,\n  mouseLeaveDelay: 0.1,\n  placement: 'bottomLeft'\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/dropdown/dropdown-button.js\nfunction dropdown_button_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { dropdown_button_typeof = function _typeof(obj) { return typeof obj; }; } else { dropdown_button_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return dropdown_button_typeof(obj); }\n\nfunction dropdown_button_extends() { dropdown_button_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 dropdown_button_extends.apply(this, arguments); }\n\nfunction dropdown_button_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction dropdown_button_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 dropdown_button_createClass(Constructor, protoProps, staticProps) { if (protoProps) dropdown_button_defineProperties(Constructor.prototype, protoProps); if (staticProps) dropdown_button_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction dropdown_button_possibleConstructorReturn(self, call) { if (call && (dropdown_button_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return dropdown_button_assertThisInitialized(self); }\n\nfunction dropdown_button_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction dropdown_button_getPrototypeOf(o) { dropdown_button_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return dropdown_button_getPrototypeOf(o); }\n\nfunction dropdown_button_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) dropdown_button_setPrototypeOf(subClass, superClass); }\n\nfunction dropdown_button_setPrototypeOf(o, p) { dropdown_button_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return dropdown_button_setPrototypeOf(o, p); }\n\nvar dropdown_button_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nvar dropdown_button_ButtonGroup = es_button.Group;\n\nvar dropdown_button_DropdownButton =\n/*#__PURE__*/\nfunction (_React$Component) {\n  dropdown_button_inherits(DropdownButton, _React$Component);\n\n  function DropdownButton() {\n    var _this;\n\n    dropdown_button_classCallCheck(this, DropdownButton);\n\n    _this = dropdown_button_possibleConstructorReturn(this, dropdown_button_getPrototypeOf(DropdownButton).apply(this, arguments));\n\n    _this.renderButton = function (_ref) {\n      var getContextPopupContainer = _ref.getPopupContainer,\n          getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          type = _a.type,\n          disabled = _a.disabled,\n          onClick = _a.onClick,\n          htmlType = _a.htmlType,\n          children = _a.children,\n          className = _a.className,\n          overlay = _a.overlay,\n          trigger = _a.trigger,\n          align = _a.align,\n          visible = _a.visible,\n          onVisibleChange = _a.onVisibleChange,\n          placement = _a.placement,\n          getPopupContainer = _a.getPopupContainer,\n          href = _a.href,\n          restProps = dropdown_button_rest(_a, [\"prefixCls\", \"type\", \"disabled\", \"onClick\", \"htmlType\", \"children\", \"className\", \"overlay\", \"trigger\", \"align\", \"visible\", \"onVisibleChange\", \"placement\", \"getPopupContainer\", \"href\"]);\n\n      var prefixCls = getPrefixCls('dropdown-button', customizePrefixCls);\n      var dropdownProps = {\n        align: align,\n        overlay: overlay,\n        disabled: disabled,\n        trigger: disabled ? [] : trigger,\n        onVisibleChange: onVisibleChange,\n        placement: placement,\n        getPopupContainer: getPopupContainer || getContextPopupContainer\n      };\n\n      if ('visible' in _this.props) {\n        dropdownProps.visible = visible;\n      }\n\n      return external_react_[\"createElement\"](dropdown_button_ButtonGroup, dropdown_button_extends({}, restProps, {\n        className: classnames_default()(prefixCls, className)\n      }), external_react_[\"createElement\"](es_button, {\n        type: type,\n        disabled: disabled,\n        onClick: onClick,\n        htmlType: htmlType,\n        href: href\n      }, children), external_react_[\"createElement\"](dropdown_Dropdown, dropdownProps, external_react_[\"createElement\"](es_button, {\n        type: type,\n        icon: \"ellipsis\"\n      })));\n    };\n\n    return _this;\n  }\n\n  dropdown_button_createClass(DropdownButton, [{\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderButton);\n    }\n  }]);\n\n  return DropdownButton;\n}(external_react_[\"Component\"]);\n\n\ndropdown_button_DropdownButton.defaultProps = {\n  placement: 'bottomRight',\n  type: 'default'\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/dropdown/index.js\n\n\ndropdown_Dropdown.Button = dropdown_button_DropdownButton;\n/* harmony default export */ var dropdown = (dropdown_Dropdown);\n// CONCATENATED MODULE: ./node_modules/antd/es/checkbox/Checkbox.js\nfunction Checkbox_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Checkbox_typeof = function _typeof(obj) { return typeof obj; }; } else { Checkbox_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Checkbox_typeof(obj); }\n\nfunction Checkbox_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\nfunction Checkbox_extends() { Checkbox_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 Checkbox_extends.apply(this, arguments); }\n\nfunction Checkbox_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Checkbox_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 Checkbox_createClass(Constructor, protoProps, staticProps) { if (protoProps) Checkbox_defineProperties(Constructor.prototype, protoProps); if (staticProps) Checkbox_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Checkbox_possibleConstructorReturn(self, call) { if (call && (Checkbox_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Checkbox_assertThisInitialized(self); }\n\nfunction Checkbox_getPrototypeOf(o) { Checkbox_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Checkbox_getPrototypeOf(o); }\n\nfunction Checkbox_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Checkbox_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) Checkbox_setPrototypeOf(subClass, superClass); }\n\nfunction Checkbox_setPrototypeOf(o, p) { Checkbox_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Checkbox_setPrototypeOf(o, p); }\n\nvar Checkbox_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\nvar checkbox_Checkbox_Checkbox =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Checkbox_inherits(Checkbox, _React$Component);\n\n  function Checkbox() {\n    var _this;\n\n    Checkbox_classCallCheck(this, Checkbox);\n\n    _this = Checkbox_possibleConstructorReturn(this, Checkbox_getPrototypeOf(Checkbox).apply(this, arguments));\n\n    _this.saveCheckbox = function (node) {\n      _this.rcCheckbox = node;\n    };\n\n    _this.renderCheckbox = function (_ref) {\n      var _classNames;\n\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _assertThisInitialize = Checkbox_assertThisInitialized(_this),\n          props = _assertThisInitialize.props,\n          context = _assertThisInitialize.context;\n\n      var customizePrefixCls = props.prefixCls,\n          className = props.className,\n          children = props.children,\n          indeterminate = props.indeterminate,\n          style = props.style,\n          onMouseEnter = props.onMouseEnter,\n          onMouseLeave = props.onMouseLeave,\n          restProps = Checkbox_rest(props, [\"prefixCls\", \"className\", \"children\", \"indeterminate\", \"style\", \"onMouseEnter\", \"onMouseLeave\"]);\n\n      var checkboxGroup = context.checkboxGroup;\n      var prefixCls = getPrefixCls('checkbox', customizePrefixCls);\n\n      var checkboxProps = Checkbox_extends({}, restProps);\n\n      if (checkboxGroup) {\n        checkboxProps.onChange = function () {\n          if (restProps.onChange) {\n            restProps.onChange.apply(restProps, arguments);\n          }\n\n          checkboxGroup.toggleOption({\n            label: children,\n            value: props.value\n          });\n        };\n\n        checkboxProps.checked = checkboxGroup.value.indexOf(props.value) !== -1;\n        checkboxProps.disabled = props.disabled || checkboxGroup.disabled;\n      }\n\n      var classString = classnames_default()(className, (_classNames = {}, Checkbox_defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper\"), true), Checkbox_defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-checked\"), checkboxProps.checked), Checkbox_defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-disabled\"), checkboxProps.disabled), _classNames));\n      var checkboxClass = classnames_default()(Checkbox_defineProperty({}, \"\".concat(prefixCls, \"-indeterminate\"), indeterminate));\n      return external_react_[\"createElement\"](\"label\", {\n        className: classString,\n        style: style,\n        onMouseEnter: onMouseEnter,\n        onMouseLeave: onMouseLeave\n      }, external_react_[\"createElement\"](rc_checkbox_es, Checkbox_extends({}, checkboxProps, {\n        prefixCls: prefixCls,\n        className: checkboxClass,\n        ref: _this.saveCheckbox\n      })), children !== undefined && external_react_[\"createElement\"](\"span\", null, children));\n    };\n\n    return _this;\n  }\n\n  Checkbox_createClass(Checkbox, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps, nextState, nextContext) {\n      return !shallowequal_default()(this.props, nextProps) || !shallowequal_default()(this.state, nextState) || !shallowequal_default()(this.context.checkboxGroup, nextContext.checkboxGroup);\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      this.rcCheckbox.focus();\n    }\n  }, {\n    key: \"blur\",\n    value: function blur() {\n      this.rcCheckbox.blur();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderCheckbox);\n    }\n  }]);\n\n  return Checkbox;\n}(external_react_[\"Component\"]);\n\n\ncheckbox_Checkbox_Checkbox.defaultProps = {\n  indeterminate: false\n};\ncheckbox_Checkbox_Checkbox.contextTypes = {\n  checkboxGroup: prop_types[\"any\"]\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/checkbox/Group.js\nfunction Group_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Group_typeof = function _typeof(obj) { return typeof obj; }; } else { Group_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Group_typeof(obj); }\n\nfunction Group_extends() { Group_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 Group_extends.apply(this, arguments); }\n\nfunction Group_toConsumableArray(arr) { return Group_arrayWithoutHoles(arr) || Group_iterableToArray(arr) || Group_nonIterableSpread(); }\n\nfunction Group_nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction Group_iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction Group_arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction Group_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Group_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 Group_createClass(Constructor, protoProps, staticProps) { if (protoProps) Group_defineProperties(Constructor.prototype, protoProps); if (staticProps) Group_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Group_possibleConstructorReturn(self, call) { if (call && (Group_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Group_assertThisInitialized(self); }\n\nfunction Group_getPrototypeOf(o) { Group_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Group_getPrototypeOf(o); }\n\nfunction Group_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Group_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) Group_setPrototypeOf(subClass, superClass); }\n\nfunction Group_setPrototypeOf(o, p) { Group_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Group_setPrototypeOf(o, p); }\n\nvar Group_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\nvar Group_CheckboxGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Group_inherits(CheckboxGroup, _React$Component);\n\n  function CheckboxGroup(props) {\n    var _this;\n\n    Group_classCallCheck(this, CheckboxGroup);\n\n    _this = Group_possibleConstructorReturn(this, Group_getPrototypeOf(CheckboxGroup).call(this, props));\n\n    _this.toggleOption = function (option) {\n      var optionIndex = _this.state.value.indexOf(option.value);\n\n      var value = Group_toConsumableArray(_this.state.value);\n\n      if (optionIndex === -1) {\n        value.push(option.value);\n      } else {\n        value.splice(optionIndex, 1);\n      }\n\n      if (!('value' in _this.props)) {\n        _this.setState({\n          value: value\n        });\n      }\n\n      var onChange = _this.props.onChange;\n\n      if (onChange) {\n        onChange(value);\n      }\n    };\n\n    _this.renderGroup = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _assertThisInitialize = Group_assertThisInitialized(_this),\n          props = _assertThisInitialize.props,\n          state = _assertThisInitialize.state;\n\n      var customizePrefixCls = props.prefixCls,\n          className = props.className,\n          style = props.style,\n          options = props.options,\n          restProps = Group_rest(props, [\"prefixCls\", \"className\", \"style\", \"options\"]);\n\n      var prefixCls = getPrefixCls('checkbox', customizePrefixCls);\n      var groupPrefixCls = \"\".concat(prefixCls, \"-group\");\n      var domProps = es(restProps, ['children', 'defaultValue', 'value', 'onChange', 'disabled']);\n      var children = props.children;\n\n      if (options && options.length > 0) {\n        children = _this.getOptions().map(function (option) {\n          return external_react_[\"createElement\"](checkbox_Checkbox_Checkbox, {\n            prefixCls: prefixCls,\n            key: option.value.toString(),\n            disabled: 'disabled' in option ? option.disabled : props.disabled,\n            value: option.value,\n            checked: state.value.indexOf(option.value) !== -1,\n            onChange: option.onChange,\n            className: \"\".concat(groupPrefixCls, \"-item\")\n          }, option.label);\n        });\n      }\n\n      var classString = classnames_default()(groupPrefixCls, className);\n      return external_react_[\"createElement\"](\"div\", Group_extends({\n        className: classString,\n        style: style\n      }, domProps), children);\n    };\n\n    _this.state = {\n      value: props.value || props.defaultValue || []\n    };\n    return _this;\n  }\n\n  Group_createClass(CheckboxGroup, [{\n    key: \"getChildContext\",\n    value: function getChildContext() {\n      return {\n        checkboxGroup: {\n          toggleOption: this.toggleOption,\n          value: this.state.value,\n          disabled: this.props.disabled\n        }\n      };\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps, nextState) {\n      return !shallowequal_default()(this.props, nextProps) || !shallowequal_default()(this.state, nextState);\n    }\n  }, {\n    key: \"getOptions\",\n    value: function getOptions() {\n      var options = this.props.options; // https://github.com/Microsoft/TypeScript/issues/7960\n\n      return options.map(function (option) {\n        if (typeof option === 'string') {\n          return {\n            label: option,\n            value: option\n          };\n        }\n\n        return option;\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderGroup);\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps) {\n      if ('value' in nextProps) {\n        return {\n          value: nextProps.value || []\n        };\n      }\n\n      return null;\n    }\n  }]);\n\n  return CheckboxGroup;\n}(external_react_[\"Component\"]);\n\nGroup_CheckboxGroup.defaultProps = {\n  options: []\n};\nGroup_CheckboxGroup.propTypes = {\n  defaultValue: prop_types[\"array\"],\n  value: prop_types[\"array\"],\n  options: prop_types[\"array\"].isRequired,\n  onChange: prop_types[\"func\"]\n};\nGroup_CheckboxGroup.childContextTypes = {\n  checkboxGroup: prop_types[\"any\"]\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(Group_CheckboxGroup);\n/* harmony default export */ var checkbox_Group = (Group_CheckboxGroup);\n// CONCATENATED MODULE: ./node_modules/antd/es/checkbox/index.js\n\n\ncheckbox_Checkbox_Checkbox.Group = checkbox_Group;\n/* harmony default export */ var es_checkbox = (checkbox_Checkbox_Checkbox);\n// CONCATENATED MODULE: ./node_modules/antd/es/table/FilterDropdownMenuWrapper.js\n\n/* harmony default export */ var FilterDropdownMenuWrapper = (function (props) {\n  return external_react_[\"createElement\"](\"div\", {\n    className: props.className,\n    onClick: function onClick(e) {\n      return e.stopPropagation();\n    }\n  }, props.children);\n});\n// CONCATENATED MODULE: ./node_modules/antd/es/table/util.js\nfunction util_toConsumableArray(arr) { return util_arrayWithoutHoles(arr) || util_iterableToArray(arr) || util_nonIterableSpread(); }\n\nfunction util_nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction util_iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction util_arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction util_extends() { util_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 util_extends.apply(this, arguments); }\n\n\nfunction flatArray() {\n  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var childrenName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'children';\n  var result = [];\n\n  var loop = function loop(array) {\n    array.forEach(function (item) {\n      if (item[childrenName]) {\n        var newItem = util_extends({}, item);\n\n        delete newItem[childrenName];\n        result.push(newItem);\n\n        if (item[childrenName].length > 0) {\n          loop(item[childrenName]);\n        }\n      } else {\n        result.push(item);\n      }\n    });\n  };\n\n  loop(data);\n  return result;\n}\nfunction treeMap(tree, mapper) {\n  var childrenName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'children';\n  return tree.map(function (node, index) {\n    var extra = {};\n\n    if (node[childrenName]) {\n      extra[childrenName] = treeMap(node[childrenName], mapper, childrenName);\n    }\n\n    return util_extends({}, mapper(node, index), extra);\n  });\n}\nfunction flatFilter(tree, callback) {\n  return tree.reduce(function (acc, node) {\n    if (callback(node)) {\n      acc.push(node);\n    }\n\n    if (node.children) {\n      var children = flatFilter(node.children, callback);\n      acc.push.apply(acc, util_toConsumableArray(children));\n    }\n\n    return acc;\n  }, []);\n}\nfunction normalizeColumns(elements) {\n  var columns = [];\n  external_react_[\"Children\"].forEach(elements, function (element) {\n    if (!external_react_[\"isValidElement\"](element)) {\n      return;\n    }\n\n    var column = util_extends({}, element.props);\n\n    if (element.key) {\n      column.key = element.key;\n    }\n\n    if (element.type && element.type.__ANT_TABLE_COLUMN_GROUP) {\n      column.children = normalizeColumns(column.children);\n    }\n\n    columns.push(column);\n  });\n  return columns;\n}\nfunction generateValueMaps(items) {\n  var maps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  (items || []).forEach(function (_ref) {\n    var value = _ref.value,\n        children = _ref.children;\n    maps[value.toString()] = value;\n    generateValueMaps(children, maps);\n  });\n  return maps;\n}\n// CONCATENATED MODULE: ./node_modules/antd/es/table/filterDropdown.js\nfunction filterDropdown_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { filterDropdown_typeof = function _typeof(obj) { return typeof obj; }; } else { filterDropdown_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return filterDropdown_typeof(obj); }\n\nfunction filterDropdown_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\nfunction filterDropdown_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction filterDropdown_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 filterDropdown_createClass(Constructor, protoProps, staticProps) { if (protoProps) filterDropdown_defineProperties(Constructor.prototype, protoProps); if (staticProps) filterDropdown_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction filterDropdown_possibleConstructorReturn(self, call) { if (call && (filterDropdown_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return filterDropdown_assertThisInitialized(self); }\n\nfunction filterDropdown_getPrototypeOf(o) { filterDropdown_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return filterDropdown_getPrototypeOf(o); }\n\nfunction filterDropdown_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction filterDropdown_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) filterDropdown_setPrototypeOf(subClass, superClass); }\n\nfunction filterDropdown_setPrototypeOf(o, p) { filterDropdown_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return filterDropdown_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction stopPropagation(e) {\n  e.stopPropagation();\n\n  if (e.nativeEvent.stopImmediatePropagation) {\n    e.nativeEvent.stopImmediatePropagation();\n  }\n}\n\nvar filterDropdown_FilterMenu =\n/*#__PURE__*/\nfunction (_React$Component) {\n  filterDropdown_inherits(FilterMenu, _React$Component);\n\n  function FilterMenu(props) {\n    var _this;\n\n    filterDropdown_classCallCheck(this, FilterMenu);\n\n    _this = filterDropdown_possibleConstructorReturn(this, filterDropdown_getPrototypeOf(FilterMenu).call(this, props));\n\n    _this.setNeverShown = function (column) {\n      var rootNode = external_react_dom_[\"findDOMNode\"](filterDropdown_assertThisInitialized(_this));\n      var filterBelongToScrollBody = !!dom_closest_default()(rootNode, \".ant-table-scroll\");\n\n      if (filterBelongToScrollBody) {\n        // When fixed column have filters, there will be two dropdown menus\n        // Filter dropdown menu inside scroll body should never be shown\n        // To fix https://github.com/ant-design/ant-design/issues/5010 and\n        // https://github.com/ant-design/ant-design/issues/7909\n        _this.neverShown = !!column.fixed;\n      }\n    };\n\n    _this.setSelectedKeys = function (_ref) {\n      var selectedKeys = _ref.selectedKeys;\n\n      _this.setState({\n        selectedKeys: selectedKeys\n      });\n    };\n\n    _this.handleClearFilters = function () {\n      _this.setState({\n        selectedKeys: []\n      }, _this.handleConfirm);\n    };\n\n    _this.handleConfirm = function () {\n      _this.setVisible(false); // Call `setSelectedKeys` & `confirm` in the same time will make filter data not up to date\n      // https://github.com/ant-design/ant-design/issues/12284\n\n\n      _this.setState({}, _this.confirmFilter);\n    };\n\n    _this.onVisibleChange = function (visible) {\n      _this.setVisible(visible);\n\n      if (!visible) {\n        _this.confirmFilter();\n      }\n    };\n\n    _this.handleMenuItemClick = function (info) {\n      var selectedKeys = _this.state.selectedKeys;\n\n      if (!info.keyPath || info.keyPath.length <= 1) {\n        return;\n      }\n\n      var keyPathOfSelectedItem = _this.state.keyPathOfSelectedItem;\n\n      if (selectedKeys && selectedKeys.indexOf(info.key) >= 0) {\n        // deselect SubMenu child\n        delete keyPathOfSelectedItem[info.key];\n      } else {\n        // select SubMenu child\n        keyPathOfSelectedItem[info.key] = info.keyPath;\n      }\n\n      _this.setState({\n        keyPathOfSelectedItem: keyPathOfSelectedItem\n      });\n    };\n\n    _this.renderFilterIcon = function () {\n      var _classNames;\n\n      var _this$props = _this.props,\n          column = _this$props.column,\n          locale = _this$props.locale,\n          prefixCls = _this$props.prefixCls,\n          selectedKeys = _this$props.selectedKeys;\n      var filtered = selectedKeys && selectedKeys.length > 0;\n      var filterIcon = column.filterIcon;\n\n      if (typeof filterIcon === 'function') {\n        filterIcon = filterIcon(filtered);\n      }\n\n      var dropdownIconClass = classnames_default()((_classNames = {}, filterDropdown_defineProperty(_classNames, \"\".concat(prefixCls, \"-selected\"), filtered), filterDropdown_defineProperty(_classNames, \"\".concat(prefixCls, \"-open\"), _this.getDropdownVisible()), _classNames));\n      return filterIcon ? external_react_[\"cloneElement\"](filterIcon, {\n        title: locale.filterTitle,\n        className: classnames_default()(\"\".concat(prefixCls, \"-icon\"), dropdownIconClass, filterIcon.props.className),\n        onClick: stopPropagation\n      }) : external_react_[\"createElement\"](es_icon, {\n        title: locale.filterTitle,\n        type: \"filter\",\n        theme: \"filled\",\n        className: dropdownIconClass,\n        onClick: stopPropagation\n      });\n    };\n\n    var visible = 'filterDropdownVisible' in props.column ? props.column.filterDropdownVisible : false;\n    _this.state = {\n      selectedKeys: props.selectedKeys,\n      valueKeys: generateValueMaps(props.column.filters),\n      keyPathOfSelectedItem: {},\n      visible: visible,\n      prevProps: props\n    };\n    return _this;\n  }\n\n  filterDropdown_createClass(FilterMenu, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var column = this.props.column;\n      this.setNeverShown(column);\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      var column = this.props.column;\n      this.setNeverShown(column);\n    }\n  }, {\n    key: \"getDropdownVisible\",\n    value: function getDropdownVisible() {\n      return this.neverShown ? false : this.state.visible;\n    }\n  }, {\n    key: \"setVisible\",\n    value: function setVisible(visible) {\n      var column = this.props.column;\n\n      if (!('filterDropdownVisible' in column)) {\n        this.setState({\n          visible: visible\n        });\n      }\n\n      if (column.onFilterDropdownVisibleChange) {\n        column.onFilterDropdownVisibleChange(visible);\n      }\n    }\n  }, {\n    key: \"confirmFilter\",\n    value: function confirmFilter() {\n      var _this$state = this.state,\n          selectedKeys = _this$state.selectedKeys,\n          valueKeys = _this$state.valueKeys;\n      var filterDropdown = this.props.column.filterDropdown;\n\n      if (!shallowequal_default()(selectedKeys, this.props.selectedKeys)) {\n        this.props.confirmFilter(this.props.column, filterDropdown ? selectedKeys : selectedKeys.map(function (key) {\n          return valueKeys[key];\n        }));\n      }\n    }\n  }, {\n    key: \"renderMenuItem\",\n    value: function renderMenuItem(item) {\n      var column = this.props.column;\n      var selectedKeys = this.state.selectedKeys;\n      var multiple = 'filterMultiple' in column ? column.filterMultiple : true;\n      var input = multiple ? external_react_[\"createElement\"](es_checkbox, {\n        checked: selectedKeys && selectedKeys.indexOf(item.value.toString()) >= 0\n      }) : external_react_[\"createElement\"](es_radio, {\n        checked: selectedKeys && selectedKeys.indexOf(item.value.toString()) >= 0\n      });\n      return external_react_[\"createElement\"](es_MenuItem, {\n        key: item.value\n      }, input, external_react_[\"createElement\"](\"span\", null, item.text));\n    }\n  }, {\n    key: \"hasSubMenu\",\n    value: function hasSubMenu() {\n      var _this$props$column$fi = this.props.column.filters,\n          filters = _this$props$column$fi === void 0 ? [] : _this$props$column$fi;\n      return filters.some(function (item) {\n        return !!(item.children && item.children.length > 0);\n      });\n    }\n  }, {\n    key: \"renderMenus\",\n    value: function renderMenus(items) {\n      var _this2 = this;\n\n      return items.map(function (item) {\n        if (item.children && item.children.length > 0) {\n          var keyPathOfSelectedItem = _this2.state.keyPathOfSelectedItem;\n          var containSelected = Object.keys(keyPathOfSelectedItem).some(function (key) {\n            return keyPathOfSelectedItem[key].indexOf(item.value) >= 0;\n          });\n          var subMenuCls = containSelected ? \"\".concat(_this2.props.dropdownPrefixCls, \"-submenu-contain-selected\") : '';\n          return external_react_[\"createElement\"](es_SubMenu, {\n            title: item.text,\n            className: subMenuCls,\n            key: item.value.toString()\n          }, _this2.renderMenus(item.children));\n        }\n\n        return _this2.renderMenuItem(item);\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var originSelectedKeys = this.state.selectedKeys;\n      var _this$props2 = this.props,\n          column = _this$props2.column,\n          locale = _this$props2.locale,\n          prefixCls = _this$props2.prefixCls,\n          dropdownPrefixCls = _this$props2.dropdownPrefixCls,\n          getPopupContainer = _this$props2.getPopupContainer; // default multiple selection in filter dropdown\n\n      var multiple = 'filterMultiple' in column ? column.filterMultiple : true;\n      var dropdownMenuClass = classnames_default()(filterDropdown_defineProperty({}, \"\".concat(dropdownPrefixCls, \"-menu-without-submenu\"), !this.hasSubMenu()));\n      var filterDropdown = column.filterDropdown;\n\n      if (filterDropdown instanceof Function) {\n        filterDropdown = filterDropdown({\n          prefixCls: \"\".concat(dropdownPrefixCls, \"-custom\"),\n          setSelectedKeys: function setSelectedKeys(selectedKeys) {\n            return _this3.setSelectedKeys({\n              selectedKeys: selectedKeys\n            });\n          },\n          selectedKeys: originSelectedKeys,\n          confirm: this.handleConfirm,\n          clearFilters: this.handleClearFilters,\n          filters: column.filters,\n          getPopupContainer: function getPopupContainer(triggerNode) {\n            return triggerNode.parentNode;\n          }\n        });\n      }\n\n      var menus = filterDropdown ? external_react_[\"createElement\"](FilterDropdownMenuWrapper, {\n        className: \"\".concat(prefixCls, \"-dropdown\")\n      }, filterDropdown) : external_react_[\"createElement\"](FilterDropdownMenuWrapper, {\n        className: \"\".concat(prefixCls, \"-dropdown\")\n      }, external_react_[\"createElement\"](rc_menu_es, {\n        multiple: multiple,\n        onClick: this.handleMenuItemClick,\n        prefixCls: \"\".concat(dropdownPrefixCls, \"-menu\"),\n        className: dropdownMenuClass,\n        onSelect: this.setSelectedKeys,\n        onDeselect: this.setSelectedKeys,\n        selectedKeys: originSelectedKeys && originSelectedKeys.map(function (val) {\n          return val.toString();\n        }),\n        getPopupContainer: function getPopupContainer(triggerNode) {\n          return triggerNode.parentNode;\n        }\n      }, this.renderMenus(column.filters)), external_react_[\"createElement\"](\"div\", {\n        className: \"\".concat(prefixCls, \"-dropdown-btns\")\n      }, external_react_[\"createElement\"](\"a\", {\n        className: \"\".concat(prefixCls, \"-dropdown-link confirm\"),\n        onClick: this.handleConfirm\n      }, locale.filterConfirm), external_react_[\"createElement\"](\"a\", {\n        className: \"\".concat(prefixCls, \"-dropdown-link clear\"),\n        onClick: this.handleClearFilters\n      }, locale.filterReset)));\n      return external_react_[\"createElement\"](dropdown, {\n        trigger: ['click'],\n        placement: \"bottomRight\",\n        overlay: menus,\n        visible: this.getDropdownVisible(),\n        onVisibleChange: this.onVisibleChange,\n        getPopupContainer: getPopupContainer,\n        forceRender: true\n      }, this.renderFilterIcon());\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var column = nextProps.column;\n      var prevProps = prevState.prevProps;\n      var newState = {\n        prevProps: nextProps\n      };\n      /**\n       * if the state is visible the component should ignore updates on selectedKeys prop to avoid\n       * that the user selection is lost\n       * this happens frequently when a table is connected on some sort of realtime data\n       * Fixes https://github.com/ant-design/ant-design/issues/10289 and\n       * https://github.com/ant-design/ant-design/issues/10209\n       */\n\n      if ('selectedKeys' in nextProps && !shallowequal_default()(prevProps.selectedKeys, nextProps.selectedKeys)) {\n        newState.selectedKeys = nextProps.selectedKeys;\n      }\n\n      if (!shallowequal_default()((prevProps.column || {}).filters, (nextProps.column || {}).filters)) {\n        newState.valueKeys = generateValueMaps(nextProps.column.filters);\n      }\n\n      if ('filterDropdownVisible' in column) {\n        newState.visible = column.filterDropdownVisible;\n      }\n\n      return newState;\n    }\n  }]);\n\n  return FilterMenu;\n}(external_react_[\"Component\"]);\n\nfilterDropdown_FilterMenu.defaultProps = {\n  handleFilter: function handleFilter() {},\n  column: {}\n};\nObject(react_lifecycles_compat_es[\"polyfill\"])(filterDropdown_FilterMenu);\n/* harmony default export */ var table_filterDropdown = (filterDropdown_FilterMenu);\n// CONCATENATED MODULE: ./node_modules/antd/es/table/createStore.js\nfunction createStore_extends() { createStore_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 createStore_extends.apply(this, arguments); }\n\nfunction createStore(initialState) {\n  var state = initialState;\n  var listeners = [];\n\n  function setState(partial) {\n    state = createStore_extends({}, state, partial);\n\n    for (var i = 0; i < listeners.length; i++) {\n      listeners[i]();\n    }\n  }\n\n  function getState() {\n    return state;\n  }\n\n  function subscribe(listener) {\n    listeners.push(listener);\n    return function unsubscribe() {\n      var index = listeners.indexOf(listener);\n      listeners.splice(index, 1);\n    };\n  }\n\n  return {\n    setState: setState,\n    getState: getState,\n    subscribe: subscribe\n  };\n}\n// CONCATENATED MODULE: ./node_modules/antd/es/table/SelectionBox.js\nfunction SelectionBox_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { SelectionBox_typeof = function _typeof(obj) { return typeof obj; }; } else { SelectionBox_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return SelectionBox_typeof(obj); }\n\nfunction SelectionBox_extends() { SelectionBox_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 SelectionBox_extends.apply(this, arguments); }\n\nfunction SelectionBox_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction SelectionBox_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 SelectionBox_createClass(Constructor, protoProps, staticProps) { if (protoProps) SelectionBox_defineProperties(Constructor.prototype, protoProps); if (staticProps) SelectionBox_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction SelectionBox_possibleConstructorReturn(self, call) { if (call && (SelectionBox_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return SelectionBox_assertThisInitialized(self); }\n\nfunction SelectionBox_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction SelectionBox_getPrototypeOf(o) { SelectionBox_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SelectionBox_getPrototypeOf(o); }\n\nfunction SelectionBox_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) SelectionBox_setPrototypeOf(subClass, superClass); }\n\nfunction SelectionBox_setPrototypeOf(o, p) { SelectionBox_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SelectionBox_setPrototypeOf(o, p); }\n\nvar SelectionBox_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\nvar SelectionBox_SelectionBox =\n/*#__PURE__*/\nfunction (_React$Component) {\n  SelectionBox_inherits(SelectionBox, _React$Component);\n\n  function SelectionBox(props) {\n    var _this;\n\n    SelectionBox_classCallCheck(this, SelectionBox);\n\n    _this = SelectionBox_possibleConstructorReturn(this, SelectionBox_getPrototypeOf(SelectionBox).call(this, props));\n    _this.state = {\n      checked: _this.getCheckState(props)\n    };\n    return _this;\n  }\n\n  SelectionBox_createClass(SelectionBox, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.subscribe();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.unsubscribe) {\n        this.unsubscribe();\n      }\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe() {\n      var _this2 = this;\n\n      var store = this.props.store;\n      this.unsubscribe = store.subscribe(function () {\n        var checked = _this2.getCheckState(_this2.props);\n\n        _this2.setState({\n          checked: checked\n        });\n      });\n    }\n  }, {\n    key: \"getCheckState\",\n    value: function getCheckState(props) {\n      var store = props.store,\n          defaultSelection = props.defaultSelection,\n          rowIndex = props.rowIndex;\n      var checked = false;\n\n      if (store.getState().selectionDirty) {\n        checked = store.getState().selectedRowKeys.indexOf(rowIndex) >= 0;\n      } else {\n        checked = store.getState().selectedRowKeys.indexOf(rowIndex) >= 0 || defaultSelection.indexOf(rowIndex) >= 0;\n      }\n\n      return checked;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _a = this.props,\n          type = _a.type,\n          rowIndex = _a.rowIndex,\n          rest = SelectionBox_rest(_a, [\"type\", \"rowIndex\"]);\n\n      var checked = this.state.checked;\n\n      if (type === 'radio') {\n        return external_react_[\"createElement\"](es_radio, SelectionBox_extends({\n          checked: checked,\n          value: rowIndex\n        }, rest));\n      } else {\n        return external_react_[\"createElement\"](es_checkbox, SelectionBox_extends({\n          checked: checked\n        }, rest));\n      }\n    }\n  }]);\n\n  return SelectionBox;\n}(external_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/antd/es/table/SelectionCheckboxAll.js\nfunction SelectionCheckboxAll_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { SelectionCheckboxAll_typeof = function _typeof(obj) { return typeof obj; }; } else { SelectionCheckboxAll_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return SelectionCheckboxAll_typeof(obj); }\n\nfunction SelectionCheckboxAll_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\nfunction SelectionCheckboxAll_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction SelectionCheckboxAll_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 SelectionCheckboxAll_createClass(Constructor, protoProps, staticProps) { if (protoProps) SelectionCheckboxAll_defineProperties(Constructor.prototype, protoProps); if (staticProps) SelectionCheckboxAll_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction SelectionCheckboxAll_possibleConstructorReturn(self, call) { if (call && (SelectionCheckboxAll_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return SelectionCheckboxAll_assertThisInitialized(self); }\n\nfunction SelectionCheckboxAll_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction SelectionCheckboxAll_getPrototypeOf(o) { SelectionCheckboxAll_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return SelectionCheckboxAll_getPrototypeOf(o); }\n\nfunction SelectionCheckboxAll_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) SelectionCheckboxAll_setPrototypeOf(subClass, superClass); }\n\nfunction SelectionCheckboxAll_setPrototypeOf(o, p) { SelectionCheckboxAll_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return SelectionCheckboxAll_setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\nvar SelectionCheckboxAll_SelectionCheckboxAll =\n/*#__PURE__*/\nfunction (_React$Component) {\n  SelectionCheckboxAll_inherits(SelectionCheckboxAll, _React$Component);\n\n  function SelectionCheckboxAll(props) {\n    var _this;\n\n    SelectionCheckboxAll_classCallCheck(this, SelectionCheckboxAll);\n\n    _this = SelectionCheckboxAll_possibleConstructorReturn(this, SelectionCheckboxAll_getPrototypeOf(SelectionCheckboxAll).call(this, props));\n\n    _this.handleSelectAllChange = function (e) {\n      var checked = e.target.checked;\n\n      _this.props.onSelect(checked ? 'all' : 'removeAll', 0, null);\n    };\n\n    _this.defaultSelections = props.hideDefaultSelections ? [] : [{\n      key: 'all',\n      text: props.locale.selectAll,\n      onSelect: function onSelect() {}\n    }, {\n      key: 'invert',\n      text: props.locale.selectInvert,\n      onSelect: function onSelect() {}\n    }];\n    _this.state = {\n      checked: _this.getCheckState(props),\n      indeterminate: _this.getIndeterminateState(props)\n    };\n    return _this;\n  }\n\n  SelectionCheckboxAll_createClass(SelectionCheckboxAll, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.subscribe();\n    }\n  }, {\n    key: \"componentWillReceiveProps\",\n    value: function componentWillReceiveProps(nextProps) {\n      this.setCheckState(nextProps);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.unsubscribe) {\n        this.unsubscribe();\n      }\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe() {\n      var _this2 = this;\n\n      var store = this.props.store;\n      this.unsubscribe = store.subscribe(function () {\n        _this2.setCheckState(_this2.props);\n      });\n    }\n  }, {\n    key: \"checkSelection\",\n    value: function checkSelection(props, data, type, byDefaultChecked) {\n      var _ref = props || this.props,\n          store = _ref.store,\n          getCheckboxPropsByItem = _ref.getCheckboxPropsByItem,\n          getRecordKey = _ref.getRecordKey; // type should be 'every' | 'some'\n\n\n      if (type === 'every' || type === 'some') {\n        return byDefaultChecked ? data[type](function (item, i) {\n          return getCheckboxPropsByItem(item, i).defaultChecked;\n        }) : data[type](function (item, i) {\n          return store.getState().selectedRowKeys.indexOf(getRecordKey(item, i)) >= 0;\n        });\n      }\n\n      return false;\n    }\n  }, {\n    key: \"setCheckState\",\n    value: function setCheckState(props) {\n      var checked = this.getCheckState(props);\n      var indeterminate = this.getIndeterminateState(props);\n      this.setState(function (prevState) {\n        var newState = {};\n\n        if (indeterminate !== prevState.indeterminate) {\n          newState.indeterminate = indeterminate;\n        }\n\n        if (checked !== prevState.checked) {\n          newState.checked = checked;\n        }\n\n        return newState;\n      });\n    }\n  }, {\n    key: \"getCheckState\",\n    value: function getCheckState(props) {\n      var store = props.store,\n          data = props.data;\n      var checked;\n\n      if (!data.length) {\n        checked = false;\n      } else {\n        checked = store.getState().selectionDirty ? this.checkSelection(props, data, 'every', false) : this.checkSelection(props, data, 'every', false) || this.checkSelection(props, data, 'every', true);\n      }\n\n      return checked;\n    }\n  }, {\n    key: \"getIndeterminateState\",\n    value: function getIndeterminateState(props) {\n      var store = props.store,\n          data = props.data;\n      var indeterminate;\n\n      if (!data.length) {\n        indeterminate = false;\n      } else {\n        indeterminate = store.getState().selectionDirty ? this.checkSelection(props, data, 'some', false) && !this.checkSelection(props, data, 'every', false) : this.checkSelection(props, data, 'some', false) && !this.checkSelection(props, data, 'every', false) || this.checkSelection(props, data, 'some', true) && !this.checkSelection(props, data, 'every', true);\n      }\n\n      return indeterminate;\n    }\n  }, {\n    key: \"renderMenus\",\n    value: function renderMenus(selections) {\n      var _this3 = this;\n\n      return selections.map(function (selection, index) {\n        return external_react_[\"createElement\"](es_menu.Item, {\n          key: selection.key || index\n        }, external_react_[\"createElement\"](\"div\", {\n          onClick: function onClick() {\n            _this3.props.onSelect(selection.key, index, selection.onSelect);\n          }\n        }, selection.text));\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          disabled = _this$props.disabled,\n          prefixCls = _this$props.prefixCls,\n          selections = _this$props.selections,\n          getPopupContainer = _this$props.getPopupContainer;\n      var _this$state = this.state,\n          checked = _this$state.checked,\n          indeterminate = _this$state.indeterminate;\n      var selectionPrefixCls = \"\".concat(prefixCls, \"-selection\");\n      var customSelections = null;\n\n      if (selections) {\n        var newSelections = Array.isArray(selections) ? this.defaultSelections.concat(selections) : this.defaultSelections;\n        var menu = external_react_[\"createElement\"](es_menu, {\n          className: \"\".concat(selectionPrefixCls, \"-menu\"),\n          selectedKeys: []\n        }, this.renderMenus(newSelections));\n        customSelections = newSelections.length > 0 ? external_react_[\"createElement\"](dropdown, {\n          overlay: menu,\n          getPopupContainer: getPopupContainer\n        }, external_react_[\"createElement\"](\"div\", {\n          className: \"\".concat(selectionPrefixCls, \"-down\")\n        }, external_react_[\"createElement\"](es_icon, {\n          type: \"down\"\n        }))) : null;\n      }\n\n      return external_react_[\"createElement\"](\"div\", {\n        className: selectionPrefixCls\n      }, external_react_[\"createElement\"](es_checkbox, {\n        className: classnames_default()(SelectionCheckboxAll_defineProperty({}, \"\".concat(selectionPrefixCls, \"-select-all-custom\"), customSelections)),\n        checked: checked,\n        indeterminate: indeterminate,\n        disabled: disabled,\n        onChange: this.handleSelectAllChange\n      }), customSelections);\n    }\n  }]);\n\n  return SelectionCheckboxAll;\n}(external_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/antd/es/table/Column.js\nfunction Column_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Column_typeof = function _typeof(obj) { return typeof obj; }; } else { Column_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Column_typeof(obj); }\n\nfunction Column_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Column_possibleConstructorReturn(self, call) { if (call && (Column_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Column_assertThisInitialized(self); }\n\nfunction Column_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Column_getPrototypeOf(o) { Column_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Column_getPrototypeOf(o); }\n\nfunction Column_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) Column_setPrototypeOf(subClass, superClass); }\n\nfunction Column_setPrototypeOf(o, p) { Column_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Column_setPrototypeOf(o, p); }\n\n\n\nvar Column_Column =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Column_inherits(Column, _React$Component);\n\n  function Column() {\n    Column_classCallCheck(this, Column);\n\n    return Column_possibleConstructorReturn(this, Column_getPrototypeOf(Column).apply(this, arguments));\n  }\n\n  return Column;\n}(external_react_[\"Component\"]);\n\n\n// CONCATENATED MODULE: ./node_modules/antd/es/table/ColumnGroup.js\nfunction ColumnGroup_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { ColumnGroup_typeof = function _typeof(obj) { return typeof obj; }; } else { ColumnGroup_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return ColumnGroup_typeof(obj); }\n\nfunction ColumnGroup_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ColumnGroup_possibleConstructorReturn(self, call) { if (call && (ColumnGroup_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return ColumnGroup_assertThisInitialized(self); }\n\nfunction ColumnGroup_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction ColumnGroup_getPrototypeOf(o) { ColumnGroup_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ColumnGroup_getPrototypeOf(o); }\n\nfunction ColumnGroup_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) ColumnGroup_setPrototypeOf(subClass, superClass); }\n\nfunction ColumnGroup_setPrototypeOf(o, p) { ColumnGroup_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ColumnGroup_setPrototypeOf(o, p); }\n\n\n\nvar table_ColumnGroup_ColumnGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n  ColumnGroup_inherits(ColumnGroup, _React$Component);\n\n  function ColumnGroup() {\n    ColumnGroup_classCallCheck(this, ColumnGroup);\n\n    return ColumnGroup_possibleConstructorReturn(this, ColumnGroup_getPrototypeOf(ColumnGroup).apply(this, arguments));\n  }\n\n  return ColumnGroup;\n}(external_react_[\"Component\"]);\n\n\ntable_ColumnGroup_ColumnGroup.__ANT_TABLE_COLUMN_GROUP = true;\n// CONCATENATED MODULE: ./node_modules/antd/es/table/createBodyRow.js\nfunction createBodyRow_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { createBodyRow_typeof = function _typeof(obj) { return typeof obj; }; } else { createBodyRow_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return createBodyRow_typeof(obj); }\n\nfunction createBodyRow_extends() { createBodyRow_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 createBodyRow_extends.apply(this, arguments); }\n\nfunction createBodyRow_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\nfunction createBodyRow_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction createBodyRow_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 createBodyRow_createClass(Constructor, protoProps, staticProps) { if (protoProps) createBodyRow_defineProperties(Constructor.prototype, protoProps); if (staticProps) createBodyRow_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction createBodyRow_possibleConstructorReturn(self, call) { if (call && (createBodyRow_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return createBodyRow_assertThisInitialized(self); }\n\nfunction createBodyRow_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction createBodyRow_getPrototypeOf(o) { createBodyRow_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return createBodyRow_getPrototypeOf(o); }\n\nfunction createBodyRow_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) createBodyRow_setPrototypeOf(subClass, superClass); }\n\nfunction createBodyRow_setPrototypeOf(o, p) { createBodyRow_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return createBodyRow_setPrototypeOf(o, p); }\n\n\n\n\nfunction createTableRow() {\n  var Component = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'tr';\n\n  var BodyRow =\n  /*#__PURE__*/\n  function (_React$Component) {\n    createBodyRow_inherits(BodyRow, _React$Component);\n\n    function BodyRow(props) {\n      var _this;\n\n      createBodyRow_classCallCheck(this, BodyRow);\n\n      _this = createBodyRow_possibleConstructorReturn(this, createBodyRow_getPrototypeOf(BodyRow).call(this, props));\n      _this.store = props.store;\n\n      var _this$store$getState = _this.store.getState(),\n          selectedRowKeys = _this$store$getState.selectedRowKeys;\n\n      _this.state = {\n        selected: selectedRowKeys.indexOf(props.rowKey) >= 0\n      };\n      return _this;\n    }\n\n    createBodyRow_createClass(BodyRow, [{\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        this.subscribe();\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        if (this.unsubscribe) {\n          this.unsubscribe();\n        }\n      }\n    }, {\n      key: \"subscribe\",\n      value: function subscribe() {\n        var _this2 = this;\n\n        var _this$props = this.props,\n            store = _this$props.store,\n            rowKey = _this$props.rowKey;\n        this.unsubscribe = store.subscribe(function () {\n          var _this2$store$getState = _this2.store.getState(),\n              selectedRowKeys = _this2$store$getState.selectedRowKeys;\n\n          var selected = selectedRowKeys.indexOf(rowKey) >= 0;\n\n          if (selected !== _this2.state.selected) {\n            _this2.setState({\n              selected: selected\n            });\n          }\n        });\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var rowProps = es(this.props, ['prefixCls', 'rowKey', 'store']);\n        var className = classnames_default()(this.props.className, createBodyRow_defineProperty({}, \"\".concat(this.props.prefixCls, \"-row-selected\"), this.state.selected));\n        return external_react_[\"createElement\"](Component, createBodyRow_extends({}, rowProps, {\n          className: className\n        }), this.props.children);\n      }\n    }]);\n\n    return BodyRow;\n  }(external_react_[\"Component\"]);\n\n  return BodyRow;\n}\n// CONCATENATED MODULE: ./node_modules/antd/es/table/Table.js\nfunction Table_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { Table_typeof = function _typeof(obj) { return typeof obj; }; } else { Table_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return Table_typeof(obj); }\n\nfunction Table_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\nfunction Table_extends() { Table_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 Table_extends.apply(this, arguments); }\n\nfunction Table_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction Table_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 Table_createClass(Constructor, protoProps, staticProps) { if (protoProps) Table_defineProperties(Constructor.prototype, protoProps); if (staticProps) Table_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction Table_possibleConstructorReturn(self, call) { if (call && (Table_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return Table_assertThisInitialized(self); }\n\nfunction Table_getPrototypeOf(o) { Table_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return Table_getPrototypeOf(o); }\n\nfunction Table_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction Table_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) Table_setPrototypeOf(subClass, superClass); }\n\nfunction Table_setPrototypeOf(o, p) { Table_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return Table_setPrototypeOf(o, p); }\n\nvar Table_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Table_noop() {}\n\nfunction Table_stopPropagation(e) {\n  e.stopPropagation();\n\n  if (e.nativeEvent.stopImmediatePropagation) {\n    e.nativeEvent.stopImmediatePropagation();\n  }\n}\n\nfunction getRowSelection(props) {\n  return props.rowSelection || {};\n}\n\nvar defaultPagination = {\n  onChange: Table_noop,\n  onShowSizeChange: Table_noop\n};\nvar ROW_SELECTION_COLUMN_WIDTH = '62px';\n/**\n * Avoid creating new object, so that parent component's shouldComponentUpdate\n * can works appropriately。\n */\n\nvar emptyObject = {};\n\nvar table_Table_Table =\n/*#__PURE__*/\nfunction (_React$Component) {\n  Table_inherits(Table, _React$Component);\n\n  function Table(props) {\n    var _this;\n\n    Table_classCallCheck(this, Table);\n\n    _this = Table_possibleConstructorReturn(this, Table_getPrototypeOf(Table).call(this, props));\n\n    _this.getCheckboxPropsByItem = function (item, index) {\n      var rowSelection = getRowSelection(_this.props);\n\n      if (!rowSelection.getCheckboxProps) {\n        return {};\n      }\n\n      var key = _this.getRecordKey(item, index); // Cache checkboxProps\n\n\n      if (!_this.CheckboxPropsCache[key]) {\n        var checkboxProps = _this.CheckboxPropsCache[key] = rowSelection.getCheckboxProps(item);\n        _util_warning(!('checked' in checkboxProps) && !('defaultChecked' in checkboxProps), 'Table', 'Do not set `checked` or `defaultChecked` in `getCheckboxProps`. Please use `selectedRowKeys` instead.');\n      }\n\n      return _this.CheckboxPropsCache[key];\n    };\n\n    _this.onRow = function (prefixCls, record, index) {\n      var onRow = _this.props.onRow;\n      var custom = onRow ? onRow(record, index) : {};\n      return Table_extends({}, custom, {\n        prefixCls: prefixCls,\n        store: _this.store,\n        rowKey: _this.getRecordKey(record, index)\n      });\n    };\n\n    _this.handleFilter = function (column, nextFilters) {\n      var props = _this.props;\n\n      var pagination = Table_extends({}, _this.state.pagination);\n\n      var filters = Table_extends({}, _this.state.filters, Table_defineProperty({}, _this.getColumnKey(column), nextFilters)); // Remove filters not in current columns\n\n\n      var currentColumnKeys = [];\n      treeMap(_this.columns, function (c) {\n        if (!c.children) {\n          currentColumnKeys.push(_this.getColumnKey(c));\n        }\n      });\n      Object.keys(filters).forEach(function (columnKey) {\n        if (currentColumnKeys.indexOf(columnKey) < 0) {\n          delete filters[columnKey];\n        }\n      });\n\n      if (props.pagination) {\n        // Reset current prop\n        pagination.current = 1;\n        pagination.onChange(pagination.current);\n      }\n\n      var newState = {\n        pagination: pagination,\n        filters: {}\n      };\n\n      var filtersToSetState = Table_extends({}, filters); // Remove filters which is controlled\n\n\n      _this.getFilteredValueColumns().forEach(function (col) {\n        var columnKey = _this.getColumnKey(col);\n\n        if (columnKey) {\n          delete filtersToSetState[columnKey];\n        }\n      });\n\n      if (Object.keys(filtersToSetState).length > 0) {\n        newState.filters = filtersToSetState;\n      } // Controlled current prop will not respond user interaction\n\n\n      if (Table_typeof(props.pagination) === 'object' && 'current' in props.pagination) {\n        newState.pagination = Table_extends({}, pagination, {\n          current: _this.state.pagination.current\n        });\n      }\n\n      _this.setState(newState, function () {\n        _this.store.setState({\n          selectionDirty: false\n        });\n\n        var onChange = _this.props.onChange;\n\n        if (onChange) {\n          onChange.apply(null, _this.prepareParamsArguments(Table_extends({}, _this.state, {\n            selectionDirty: false,\n            filters: filters,\n            pagination: pagination\n          })));\n        }\n      });\n    };\n\n    _this.handleSelect = function (record, rowIndex, e) {\n      var checked = e.target.checked;\n      var nativeEvent = e.nativeEvent;\n      var defaultSelection = _this.store.getState().selectionDirty ? [] : _this.getDefaultSelection();\n\n      var selectedRowKeys = _this.store.getState().selectedRowKeys.concat(defaultSelection);\n\n      var key = _this.getRecordKey(record, rowIndex);\n\n      var pivot = _this.state.pivot;\n\n      var rows = _this.getFlatCurrentPageData(_this.props.childrenColumnName);\n\n      var realIndex = rowIndex;\n\n      if (_this.props.expandedRowRender) {\n        realIndex = rows.findIndex(function (row) {\n          return _this.getRecordKey(row, rowIndex) === key;\n        });\n      }\n\n      if (nativeEvent.shiftKey && pivot !== undefined && realIndex !== pivot) {\n        var changeRowKeys = [];\n        var direction = Math.sign(pivot - realIndex);\n        var dist = Math.abs(pivot - realIndex);\n        var step = 0;\n\n        var _loop = function _loop() {\n          var i = realIndex + step * direction;\n          step += 1;\n          var row = rows[i];\n\n          var rowKey = _this.getRecordKey(row, i);\n\n          var checkboxProps = _this.getCheckboxPropsByItem(row, i);\n\n          if (!checkboxProps.disabled) {\n            if (selectedRowKeys.includes(rowKey)) {\n              if (!checked) {\n                selectedRowKeys = selectedRowKeys.filter(function (j) {\n                  return rowKey !== j;\n                });\n                changeRowKeys.push(rowKey);\n              }\n            } else if (checked) {\n              selectedRowKeys.push(rowKey);\n              changeRowKeys.push(rowKey);\n            }\n          }\n        };\n\n        while (step <= dist) {\n          _loop();\n        }\n\n        _this.setState({\n          pivot: realIndex\n        });\n\n        _this.store.setState({\n          selectionDirty: true\n        });\n\n        _this.setSelectedRowKeys(selectedRowKeys, {\n          selectWay: 'onSelectMultiple',\n          record: record,\n          checked: checked,\n          changeRowKeys: changeRowKeys,\n          nativeEvent: nativeEvent\n        });\n      } else {\n        if (checked) {\n          selectedRowKeys.push(_this.getRecordKey(record, realIndex));\n        } else {\n          selectedRowKeys = selectedRowKeys.filter(function (i) {\n            return key !== i;\n          });\n        }\n\n        _this.setState({\n          pivot: realIndex\n        });\n\n        _this.store.setState({\n          selectionDirty: true\n        });\n\n        _this.setSelectedRowKeys(selectedRowKeys, {\n          selectWay: 'onSelect',\n          record: record,\n          checked: checked,\n          changeRowKeys: void 0,\n          nativeEvent: nativeEvent\n        });\n      }\n    };\n\n    _this.handleRadioSelect = function (record, rowIndex, e) {\n      var checked = e.target.checked;\n      var nativeEvent = e.nativeEvent;\n\n      var key = _this.getRecordKey(record, rowIndex);\n\n      var selectedRowKeys = [key];\n\n      _this.store.setState({\n        selectionDirty: true\n      });\n\n      _this.setSelectedRowKeys(selectedRowKeys, {\n        selectWay: 'onSelect',\n        record: record,\n        checked: checked,\n        changeRowKeys: void 0,\n        nativeEvent: nativeEvent\n      });\n    };\n\n    _this.handleSelectRow = function (selectionKey, index, onSelectFunc) {\n      var data = _this.getFlatCurrentPageData(_this.props.childrenColumnName);\n\n      var defaultSelection = _this.store.getState().selectionDirty ? [] : _this.getDefaultSelection();\n\n      var selectedRowKeys = _this.store.getState().selectedRowKeys.concat(defaultSelection);\n\n      var changeableRowKeys = data.filter(function (item, i) {\n        return !_this.getCheckboxPropsByItem(item, i).disabled;\n      }).map(function (item, i) {\n        return _this.getRecordKey(item, i);\n      });\n      var changeRowKeys = [];\n      var selectWay = 'onSelectAll';\n      var checked; // handle default selection\n\n      switch (selectionKey) {\n        case 'all':\n          changeableRowKeys.forEach(function (key) {\n            if (selectedRowKeys.indexOf(key) < 0) {\n              selectedRowKeys.push(key);\n              changeRowKeys.push(key);\n            }\n          });\n          selectWay = 'onSelectAll';\n          checked = true;\n          break;\n\n        case 'removeAll':\n          changeableRowKeys.forEach(function (key) {\n            if (selectedRowKeys.indexOf(key) >= 0) {\n              selectedRowKeys.splice(selectedRowKeys.indexOf(key), 1);\n              changeRowKeys.push(key);\n            }\n          });\n          selectWay = 'onSelectAll';\n          checked = false;\n          break;\n\n        case 'invert':\n          changeableRowKeys.forEach(function (key) {\n            if (selectedRowKeys.indexOf(key) < 0) {\n              selectedRowKeys.push(key);\n            } else {\n              selectedRowKeys.splice(selectedRowKeys.indexOf(key), 1);\n            }\n\n            changeRowKeys.push(key);\n            selectWay = 'onSelectInvert';\n          });\n          break;\n\n        default:\n          break;\n      }\n\n      _this.store.setState({\n        selectionDirty: true\n      }); // when select custom selection, callback selections[n].onSelect\n\n\n      var rowSelection = _this.props.rowSelection;\n      var customSelectionStartIndex = 2;\n\n      if (rowSelection && rowSelection.hideDefaultSelections) {\n        customSelectionStartIndex = 0;\n      }\n\n      if (index >= customSelectionStartIndex && typeof onSelectFunc === 'function') {\n        return onSelectFunc(changeableRowKeys);\n      }\n\n      _this.setSelectedRowKeys(selectedRowKeys, {\n        selectWay: selectWay,\n        checked: checked,\n        changeRowKeys: changeRowKeys\n      });\n    };\n\n    _this.handlePageChange = function (current) {\n      var props = _this.props;\n\n      var pagination = Table_extends({}, _this.state.pagination);\n\n      if (current) {\n        pagination.current = current;\n      } else {\n        pagination.current = pagination.current || 1;\n      }\n\n      for (var _len = arguments.length, otherArguments = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        otherArguments[_key - 1] = arguments[_key];\n      }\n\n      pagination.onChange.apply(pagination, [pagination.current].concat(otherArguments));\n      var newState = {\n        pagination: pagination\n      }; // Controlled current prop will not respond user interaction\n\n      if (props.pagination && Table_typeof(props.pagination) === 'object' && 'current' in props.pagination) {\n        newState.pagination = Table_extends({}, pagination, {\n          current: _this.state.pagination.current\n        });\n      }\n\n      _this.setState(newState);\n\n      _this.store.setState({\n        selectionDirty: false\n      });\n\n      var onChange = _this.props.onChange;\n\n      if (onChange) {\n        onChange.apply(null, _this.prepareParamsArguments(Table_extends({}, _this.state, {\n          selectionDirty: false,\n          pagination: pagination\n        })));\n      }\n    };\n\n    _this.renderSelectionBox = function (type) {\n      return function (_, record, index) {\n        var rowKey = _this.getRecordKey(record, index);\n\n        var props = _this.getCheckboxPropsByItem(record, index);\n\n        var handleChange = function handleChange(e) {\n          type === 'radio' ? _this.handleRadioSelect(record, index, e) : _this.handleSelect(record, index, e);\n        };\n\n        return external_react_[\"createElement\"](\"span\", {\n          onClick: Table_stopPropagation\n        }, external_react_[\"createElement\"](SelectionBox_SelectionBox, Table_extends({\n          type: type,\n          store: _this.store,\n          rowIndex: rowKey,\n          onChange: handleChange,\n          defaultSelection: _this.getDefaultSelection()\n        }, props)));\n      };\n    };\n\n    _this.getRecordKey = function (record, index) {\n      var rowKey = _this.props.rowKey;\n      var recordKey = typeof rowKey === 'function' ? rowKey(record, index) : record[rowKey];\n      _util_warning(recordKey !== undefined, 'Table', 'Each record in dataSource of table should have a unique `key` prop, ' + 'or set `rowKey` of Table to an unique primary key, ' + 'see https://u.ant.design/table-row-key');\n      return recordKey === undefined ? index : recordKey;\n    };\n\n    _this.getPopupContainer = function () {\n      return external_react_dom_[\"findDOMNode\"](Table_assertThisInitialized(_this));\n    };\n\n    _this.generatePopupContainerFunc = function () {\n      var scroll = _this.props.scroll; // Use undefined to let rc component use default logic.\n\n      return scroll ? _this.getPopupContainer : undefined;\n    };\n\n    _this.handleShowSizeChange = function (current, pageSize) {\n      var pagination = _this.state.pagination;\n      pagination.onShowSizeChange(current, pageSize);\n\n      var nextPagination = Table_extends({}, pagination, {\n        pageSize: pageSize,\n        current: current\n      });\n\n      _this.setState({\n        pagination: nextPagination\n      });\n\n      var onChange = _this.props.onChange;\n\n      if (onChange) {\n        onChange.apply(null, _this.prepareParamsArguments(Table_extends({}, _this.state, {\n          pagination: nextPagination\n        })));\n      }\n    };\n\n    _this.renderTable = function (prefixCls, renderEmpty, dropdownPrefixCls, contextLocale, loading) {\n      var _classNames;\n\n      var _a = _this.props,\n          style = _a.style,\n          className = _a.className,\n          showHeader = _a.showHeader,\n          locale = _a.locale,\n          restProps = Table_rest(_a, [\"style\", \"className\", \"showHeader\", \"locale\"]);\n\n      var data = _this.getCurrentPageData();\n\n      var expandIconAsCell = _this.props.expandedRowRender && _this.props.expandIconAsCell !== false;\n\n      var mergedLocale = Table_extends({}, contextLocale, locale);\n\n      if (!locale || !locale.emptyText) {\n        mergedLocale.emptyText = renderEmpty('Table');\n      }\n\n      var classString = classnames_default()((_classNames = {}, Table_defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(_this.props.size), true), Table_defineProperty(_classNames, \"\".concat(prefixCls, \"-bordered\"), _this.props.bordered), Table_defineProperty(_classNames, \"\".concat(prefixCls, \"-empty\"), !data.length), Table_defineProperty(_classNames, \"\".concat(prefixCls, \"-without-column-header\"), !showHeader), _classNames));\n\n      var columns = _this.renderRowSelection(prefixCls, mergedLocale);\n\n      columns = _this.renderColumnsDropdown(prefixCls, dropdownPrefixCls, columns, mergedLocale);\n      columns = columns.map(function (column, i) {\n        var newColumn = Table_extends({}, column);\n\n        newColumn.key = _this.getColumnKey(newColumn, i);\n        return newColumn;\n      });\n      var expandIconColumnIndex = columns[0] && columns[0].key === 'selection-column' ? 1 : 0;\n\n      if ('expandIconColumnIndex' in restProps) {\n        expandIconColumnIndex = restProps.expandIconColumnIndex;\n      }\n\n      return external_react_[\"createElement\"](rc_table_es, Table_extends({\n        key: \"table\"\n      }, restProps, {\n        onRow: function onRow(record, index) {\n          return _this.onRow(prefixCls, record, index);\n        },\n        components: _this.components,\n        prefixCls: prefixCls,\n        data: data,\n        columns: columns,\n        showHeader: showHeader,\n        className: classString,\n        expandIconColumnIndex: expandIconColumnIndex,\n        expandIconAsCell: expandIconAsCell,\n        emptyText: !loading.spinning && mergedLocale.emptyText\n      }));\n    };\n\n    _this.renderComponent = function (_ref) {\n      var getPrefixCls = _ref.getPrefixCls,\n          renderEmpty = _ref.renderEmpty;\n      var _this$props = _this.props,\n          customizePrefixCls = _this$props.prefixCls,\n          customizeDropdownPrefixCls = _this$props.dropdownPrefixCls,\n          style = _this$props.style,\n          className = _this$props.className;\n\n      var data = _this.getCurrentPageData();\n\n      var loading = _this.props.loading;\n\n      if (typeof loading === 'boolean') {\n        loading = {\n          spinning: loading\n        };\n      }\n\n      var prefixCls = getPrefixCls('table', customizePrefixCls);\n      var dropdownPrefixCls = getPrefixCls('dropdown', customizeDropdownPrefixCls);\n      var table = external_react_[\"createElement\"](LocaleReceiver_LocaleReceiver, {\n        componentName: \"Table\",\n        defaultLocale: locale_provider_default.Table\n      }, function (locale) {\n        return _this.renderTable(prefixCls, renderEmpty, dropdownPrefixCls, locale, loading);\n      }); // if there is no pagination or no data,\n      // the height of spin should decrease by half of pagination\n\n      var paginationPatchClass = _this.hasPagination() && data && data.length !== 0 ? \"\".concat(prefixCls, \"-with-pagination\") : \"\".concat(prefixCls, \"-without-pagination\");\n      return external_react_[\"createElement\"](\"div\", {\n        className: classnames_default()(\"\".concat(prefixCls, \"-wrapper\"), className),\n        style: style\n      }, external_react_[\"createElement\"](es_spin, Table_extends({}, loading, {\n        className: loading.spinning ? \"\".concat(paginationPatchClass, \" \").concat(prefixCls, \"-spin-holder\") : ''\n      }), _this.renderPagination(prefixCls, 'top'), table, _this.renderPagination(prefixCls, 'bottom')));\n    };\n\n    _util_warning(!('columnsPageRange' in props || 'columnsPageSize' in props), 'Table', '`columnsPageRange` and `columnsPageSize` are removed, please use ' + 'fixed columns instead, see: https://u.ant.design/fixed-columns.');\n    _util_warning(!('expandedRowRender' in props) || !('scroll' in props), 'Table', '`expandedRowRender` and `scroll` are not compatible. Please use one of them at one time.');\n    _this.columns = props.columns || normalizeColumns(props.children);\n\n    _this.createComponents(props.components);\n\n    _this.state = Table_extends({}, _this.getDefaultSortOrder(_this.columns), {\n      // 减少状态\n      filters: _this.getFiltersFromColumns(),\n      pagination: _this.getDefaultPagination(props),\n      pivot: undefined\n    });\n    _this.CheckboxPropsCache = {};\n    _this.store = createStore({\n      selectedRowKeys: getRowSelection(props).selectedRowKeys || [],\n      selectionDirty: false\n    });\n    return _this;\n  }\n\n  Table_createClass(Table, [{\n    key: \"getDefaultSelection\",\n    value: function getDefaultSelection() {\n      var _this2 = this;\n\n      var rowSelection = getRowSelection(this.props);\n\n      if (!rowSelection.getCheckboxProps) {\n        return [];\n      }\n\n      return this.getFlatData().filter(function (item, rowIndex) {\n        return _this2.getCheckboxPropsByItem(item, rowIndex).defaultChecked;\n      }).map(function (record, rowIndex) {\n        return _this2.getRecordKey(record, rowIndex);\n      });\n    }\n  }, {\n    key: \"getDefaultPagination\",\n    value: function getDefaultPagination(props) {\n      var pagination = Table_typeof(props.pagination) === 'object' ? props.pagination : {};\n      var current;\n\n      if ('current' in pagination) {\n        current = pagination.current;\n      } else if ('defaultCurrent' in pagination) {\n        current = pagination.defaultCurrent;\n      }\n\n      var pageSize;\n\n      if ('pageSize' in pagination) {\n        pageSize = pagination.pageSize;\n      } else if ('defaultPageSize' in pagination) {\n        pageSize = pagination.defaultPageSize;\n      }\n\n      return this.hasPagination(props) ? Table_extends({}, defaultPagination, pagination, {\n        current: current || 1,\n        pageSize: pageSize || 10\n      }) : {};\n    }\n  }, {\n    key: \"componentWillReceiveProps\",\n    value: function componentWillReceiveProps(nextProps) {\n      this.columns = nextProps.columns || normalizeColumns(nextProps.children);\n\n      if ('pagination' in nextProps || 'pagination' in this.props) {\n        this.setState(function (previousState) {\n          var newPagination = Table_extends({}, defaultPagination, previousState.pagination, nextProps.pagination);\n\n          newPagination.current = newPagination.current || 1;\n          newPagination.pageSize = newPagination.pageSize || 10;\n          return {\n            pagination: nextProps.pagination !== false ? newPagination : emptyObject\n          };\n        });\n      }\n\n      if (nextProps.rowSelection && 'selectedRowKeys' in nextProps.rowSelection) {\n        this.store.setState({\n          selectedRowKeys: nextProps.rowSelection.selectedRowKeys || []\n        });\n      } else if (this.props.rowSelection && !nextProps.rowSelection) {\n        this.store.setState({\n          selectedRowKeys: []\n        });\n      }\n\n      if ('dataSource' in nextProps && nextProps.dataSource !== this.props.dataSource) {\n        this.store.setState({\n          selectionDirty: false\n        });\n      } // https://github.com/ant-design/ant-design/issues/10133\n\n\n      this.CheckboxPropsCache = {};\n\n      if (this.getSortOrderColumns(this.columns).length > 0) {\n        var sortState = this.getSortStateFromColumns(this.columns);\n\n        if (sortState.sortColumn !== this.state.sortColumn || sortState.sortOrder !== this.state.sortOrder) {\n          this.setState(sortState);\n        }\n      }\n\n      var filteredValueColumns = this.getFilteredValueColumns(this.columns);\n\n      if (filteredValueColumns.length > 0) {\n        var filtersFromColumns = this.getFiltersFromColumns(this.columns);\n\n        var newFilters = Table_extends({}, this.state.filters);\n\n        Object.keys(filtersFromColumns).forEach(function (key) {\n          newFilters[key] = filtersFromColumns[key];\n        });\n\n        if (this.isFiltersChanged(newFilters)) {\n          this.setState({\n            filters: newFilters\n          });\n        }\n      }\n\n      this.createComponents(nextProps.components, this.props.components);\n    }\n  }, {\n    key: \"setSelectedRowKeys\",\n    value: function setSelectedRowKeys(selectedRowKeys, selectionInfo) {\n      var _this3 = this;\n\n      var selectWay = selectionInfo.selectWay,\n          record = selectionInfo.record,\n          checked = selectionInfo.checked,\n          changeRowKeys = selectionInfo.changeRowKeys,\n          nativeEvent = selectionInfo.nativeEvent;\n      var rowSelection = getRowSelection(this.props);\n\n      if (rowSelection && !('selectedRowKeys' in rowSelection)) {\n        this.store.setState({\n          selectedRowKeys: selectedRowKeys\n        });\n      }\n\n      var data = this.getFlatData();\n\n      if (!rowSelection.onChange && !rowSelection[selectWay]) {\n        return;\n      }\n\n      var selectedRows = data.filter(function (row, i) {\n        return selectedRowKeys.indexOf(_this3.getRecordKey(row, i)) >= 0;\n      });\n\n      if (rowSelection.onChange) {\n        rowSelection.onChange(selectedRowKeys, selectedRows);\n      }\n\n      if (selectWay === 'onSelect' && rowSelection.onSelect) {\n        rowSelection.onSelect(record, checked, selectedRows, nativeEvent);\n      } else if (selectWay === 'onSelectMultiple' && rowSelection.onSelectMultiple) {\n        var changeRows = data.filter(function (row, i) {\n          return changeRowKeys.indexOf(_this3.getRecordKey(row, i)) >= 0;\n        });\n        rowSelection.onSelectMultiple(checked, selectedRows, changeRows);\n      } else if (selectWay === 'onSelectAll' && rowSelection.onSelectAll) {\n        var _changeRows = data.filter(function (row, i) {\n          return changeRowKeys.indexOf(_this3.getRecordKey(row, i)) >= 0;\n        });\n\n        rowSelection.onSelectAll(checked, selectedRows, _changeRows);\n      } else if (selectWay === 'onSelectInvert' && rowSelection.onSelectInvert) {\n        rowSelection.onSelectInvert(selectedRowKeys);\n      }\n    }\n  }, {\n    key: \"hasPagination\",\n    value: function hasPagination(props) {\n      return (props || this.props).pagination !== false;\n    }\n  }, {\n    key: \"isFiltersChanged\",\n    value: function isFiltersChanged(filters) {\n      var _this4 = this;\n\n      var filtersChanged = false;\n\n      if (Object.keys(filters).length !== Object.keys(this.state.filters).length) {\n        filtersChanged = true;\n      } else {\n        Object.keys(filters).forEach(function (columnKey) {\n          if (filters[columnKey] !== _this4.state.filters[columnKey]) {\n            filtersChanged = true;\n          }\n        });\n      }\n\n      return filtersChanged;\n    }\n  }, {\n    key: \"getSortOrderColumns\",\n    value: function getSortOrderColumns(columns) {\n      return flatFilter(columns || this.columns || [], function (column) {\n        return 'sortOrder' in column;\n      });\n    }\n  }, {\n    key: \"getFilteredValueColumns\",\n    value: function getFilteredValueColumns(columns) {\n      return flatFilter(columns || this.columns || [], function (column) {\n        return typeof column.filteredValue !== 'undefined';\n      });\n    }\n  }, {\n    key: \"getFiltersFromColumns\",\n    value: function getFiltersFromColumns(columns) {\n      var _this5 = this;\n\n      var filters = {};\n      this.getFilteredValueColumns(columns).forEach(function (col) {\n        var colKey = _this5.getColumnKey(col);\n\n        filters[colKey] = col.filteredValue;\n      });\n      return filters;\n    }\n  }, {\n    key: \"getDefaultSortOrder\",\n    value: function getDefaultSortOrder(columns) {\n      var definedSortState = this.getSortStateFromColumns(columns);\n      var defaultSortedColumn = flatFilter(columns || [], function (column) {\n        return column.defaultSortOrder != null;\n      })[0];\n\n      if (defaultSortedColumn && !definedSortState.sortColumn) {\n        return {\n          sortColumn: defaultSortedColumn,\n          sortOrder: defaultSortedColumn.defaultSortOrder\n        };\n      }\n\n      return definedSortState;\n    }\n  }, {\n    key: \"getSortStateFromColumns\",\n    value: function getSortStateFromColumns(columns) {\n      // return first column which sortOrder is not falsy\n      var sortedColumn = this.getSortOrderColumns(columns).filter(function (col) {\n        return col.sortOrder;\n      })[0];\n\n      if (sortedColumn) {\n        return {\n          sortColumn: sortedColumn,\n          sortOrder: sortedColumn.sortOrder\n        };\n      }\n\n      return {\n        sortColumn: null,\n        sortOrder: null\n      };\n    }\n  }, {\n    key: \"getSorterFn\",\n    value: function getSorterFn(state) {\n      var _ref2 = state || this.state,\n          sortOrder = _ref2.sortOrder,\n          sortColumn = _ref2.sortColumn;\n\n      if (!sortOrder || !sortColumn || typeof sortColumn.sorter !== 'function') {\n        return;\n      }\n\n      return function (a, b) {\n        var result = sortColumn.sorter(a, b, sortOrder);\n\n        if (result !== 0) {\n          return sortOrder === 'descend' ? -result : result;\n        }\n\n        return 0;\n      };\n    }\n  }, {\n    key: \"isSameColumn\",\n    value: function isSameColumn(a, b) {\n      if (a && b && a.key && a.key === b.key) {\n        return true;\n      }\n\n      return a === b || shallowequal_default()(a, b, function (value, other) {\n        if (typeof value === 'function' && typeof other === 'function') {\n          return value === other || value.toString() === other.toString();\n        }\n      });\n    }\n  }, {\n    key: \"toggleSortOrder\",\n    value: function toggleSortOrder(column) {\n      if (!column.sorter) {\n        return;\n      }\n\n      var sortDirections = column.sortDirections || this.props.sortDirections;\n      var _this$state = this.state,\n          sortOrder = _this$state.sortOrder,\n          sortColumn = _this$state.sortColumn; // 只同时允许一列进行排序，否则会导致排序顺序的逻辑问题\n\n      var newSortOrder; // 切换另一列时，丢弃 sortOrder 的状态\n\n      if (this.isSameColumn(sortColumn, column) && sortOrder !== undefined) {\n        // 按照sortDirections的内容依次切换排序状态\n        var methodIndex = sortDirections.indexOf(sortOrder) + 1;\n        newSortOrder = methodIndex === sortDirections.length ? undefined : sortDirections[methodIndex];\n      } else {\n        newSortOrder = sortDirections[0];\n      }\n\n      var newState = {\n        sortOrder: newSortOrder,\n        sortColumn: newSortOrder ? column : null\n      }; // Controlled\n\n      if (this.getSortOrderColumns().length === 0) {\n        this.setState(newState);\n      }\n\n      var onChange = this.props.onChange;\n\n      if (onChange) {\n        onChange.apply(null, this.prepareParamsArguments(Table_extends({}, this.state, newState)));\n      }\n    }\n  }, {\n    key: \"renderRowSelection\",\n    value: function renderRowSelection(prefixCls, locale) {\n      var _this6 = this;\n\n      var _this$props2 = this.props,\n          rowSelection = _this$props2.rowSelection,\n          childrenColumnName = _this$props2.childrenColumnName;\n      var columns = this.columns.concat();\n\n      if (rowSelection) {\n        var data = this.getFlatCurrentPageData(childrenColumnName).filter(function (item, index) {\n          if (rowSelection.getCheckboxProps) {\n            return !_this6.getCheckboxPropsByItem(item, index).disabled;\n          }\n\n          return true;\n        });\n        var selectionColumnClass = classnames_default()(\"\".concat(prefixCls, \"-selection-column\"), Table_defineProperty({}, \"\".concat(prefixCls, \"-selection-column-custom\"), rowSelection.selections));\n        var selectionColumn = {\n          key: 'selection-column',\n          render: this.renderSelectionBox(rowSelection.type),\n          className: selectionColumnClass,\n          fixed: rowSelection.fixed,\n          width: rowSelection.columnWidth || ROW_SELECTION_COLUMN_WIDTH,\n          title: rowSelection.columnTitle\n        };\n\n        if (rowSelection.type !== 'radio') {\n          var checkboxAllDisabled = data.every(function (item, index) {\n            return _this6.getCheckboxPropsByItem(item, index).disabled;\n          });\n          selectionColumn.title = selectionColumn.title || external_react_[\"createElement\"](SelectionCheckboxAll_SelectionCheckboxAll, {\n            store: this.store,\n            locale: locale,\n            data: data,\n            getCheckboxPropsByItem: this.getCheckboxPropsByItem,\n            getRecordKey: this.getRecordKey,\n            disabled: checkboxAllDisabled,\n            prefixCls: prefixCls,\n            onSelect: this.handleSelectRow,\n            selections: rowSelection.selections,\n            hideDefaultSelections: rowSelection.hideDefaultSelections,\n            getPopupContainer: this.generatePopupContainerFunc()\n          });\n        }\n\n        if ('fixed' in rowSelection) {\n          selectionColumn.fixed = rowSelection.fixed;\n        } else if (columns.some(function (column) {\n          return column.fixed === 'left' || column.fixed === true;\n        })) {\n          selectionColumn.fixed = 'left';\n        }\n\n        if (columns[0] && columns[0].key === 'selection-column') {\n          columns[0] = selectionColumn;\n        } else {\n          columns.unshift(selectionColumn);\n        }\n      }\n\n      return columns;\n    }\n  }, {\n    key: \"getColumnKey\",\n    value: function getColumnKey(column, index) {\n      return column.key || column.dataIndex || index;\n    }\n  }, {\n    key: \"getMaxCurrent\",\n    value: function getMaxCurrent(total) {\n      var _this$state$paginatio = this.state.pagination,\n          current = _this$state$paginatio.current,\n          pageSize = _this$state$paginatio.pageSize;\n\n      if ((current - 1) * pageSize >= total) {\n        return Math.floor((total - 1) / pageSize) + 1;\n      }\n\n      return current;\n    }\n  }, {\n    key: \"isSortColumn\",\n    value: function isSortColumn(column) {\n      var sortColumn = this.state.sortColumn;\n\n      if (!column || !sortColumn) {\n        return false;\n      }\n\n      return this.getColumnKey(sortColumn) === this.getColumnKey(column);\n    }\n  }, {\n    key: \"renderColumnsDropdown\",\n    value: function renderColumnsDropdown(prefixCls, dropdownPrefixCls, columns, locale) {\n      var _this7 = this;\n\n      var _this$state2 = this.state,\n          sortOrder = _this$state2.sortOrder,\n          filters = _this$state2.filters;\n      return treeMap(columns, function (column, i) {\n        var _classNames3;\n\n        var key = _this7.getColumnKey(column, i);\n\n        var filterDropdown;\n        var sortButton;\n        var onHeaderCell = column.onHeaderCell;\n\n        var isSortColumn = _this7.isSortColumn(column);\n\n        if (column.filters && column.filters.length > 0 || column.filterDropdown) {\n          var colFilters = key in filters ? filters[key] : [];\n          filterDropdown = external_react_[\"createElement\"](table_filterDropdown, {\n            locale: locale,\n            column: column,\n            selectedKeys: colFilters,\n            confirmFilter: _this7.handleFilter,\n            prefixCls: \"\".concat(prefixCls, \"-filter\"),\n            dropdownPrefixCls: dropdownPrefixCls || 'ant-dropdown',\n            getPopupContainer: _this7.generatePopupContainerFunc(),\n            key: \"filter-dropdown\"\n          });\n        }\n\n        if (column.sorter) {\n          var sortDirections = column.sortDirections || _this7.props.sortDirections;\n          var isAscend = isSortColumn && sortOrder === 'ascend';\n          var isDescend = isSortColumn && sortOrder === 'descend';\n          var ascend = sortDirections.indexOf('ascend') !== -1 && external_react_[\"createElement\"](es_icon, {\n            className: \"\".concat(prefixCls, \"-column-sorter-up \").concat(isAscend ? 'on' : 'off'),\n            type: \"caret-up\",\n            theme: \"filled\"\n          });\n          var descend = sortDirections.indexOf('descend') !== -1 && external_react_[\"createElement\"](es_icon, {\n            className: \"\".concat(prefixCls, \"-column-sorter-down \").concat(isDescend ? 'on' : 'off'),\n            type: \"caret-down\",\n            theme: \"filled\"\n          });\n          sortButton = external_react_[\"createElement\"](\"div\", {\n            title: locale.sortTitle,\n            className: \"\".concat(prefixCls, \"-column-sorter\"),\n            key: \"sorter\"\n          }, ascend, descend);\n\n          onHeaderCell = function onHeaderCell(col) {\n            var colProps = {}; // Get original first\n\n            if (column.onHeaderCell) {\n              colProps = Table_extends({}, column.onHeaderCell(col));\n            } // Add sorter logic\n\n\n            var onHeaderCellClick = colProps.onClick;\n\n            colProps.onClick = function () {\n              _this7.toggleSortOrder(column);\n\n              if (onHeaderCellClick) {\n                onHeaderCellClick.apply(void 0, arguments);\n              }\n            };\n\n            return colProps;\n          };\n        }\n\n        return Table_extends({}, column, {\n          className: classnames_default()(column.className, (_classNames3 = {}, Table_defineProperty(_classNames3, \"\".concat(prefixCls, \"-column-has-actions\"), sortButton || filterDropdown), Table_defineProperty(_classNames3, \"\".concat(prefixCls, \"-column-has-filters\"), filterDropdown), Table_defineProperty(_classNames3, \"\".concat(prefixCls, \"-column-has-sorters\"), sortButton), Table_defineProperty(_classNames3, \"\".concat(prefixCls, \"-column-sort\"), isSortColumn && sortOrder), _classNames3)),\n          title: [external_react_[\"createElement\"](\"div\", {\n            key: \"title\",\n            className: sortButton ? \"\".concat(prefixCls, \"-column-sorters\") : undefined\n          }, _this7.renderColumnTitle(column.title), sortButton), filterDropdown],\n          onHeaderCell: onHeaderCell\n        });\n      });\n    }\n  }, {\n    key: \"renderColumnTitle\",\n    value: function renderColumnTitle(title) {\n      var _this$state3 = this.state,\n          filters = _this$state3.filters,\n          sortOrder = _this$state3.sortOrder; // https://github.com/ant-design/ant-design/issues/11246#issuecomment-405009167\n\n      if (title instanceof Function) {\n        return title({\n          filters: filters,\n          sortOrder: sortOrder\n        });\n      }\n\n      return title;\n    }\n  }, {\n    key: \"renderPagination\",\n    value: function renderPagination(prefixCls, paginationPosition) {\n      // 强制不需要分页\n      if (!this.hasPagination()) {\n        return null;\n      }\n\n      var size = 'default';\n      var pagination = this.state.pagination;\n\n      if (pagination.size) {\n        size = pagination.size;\n      } else if (this.props.size === 'middle' || this.props.size === 'small') {\n        size = 'small';\n      }\n\n      var position = pagination.position || 'bottom';\n      var total = pagination.total || this.getLocalData().length;\n      return total > 0 && (position === paginationPosition || position === 'both') ? external_react_[\"createElement\"](es_pagination, Table_extends({\n        key: \"pagination-\".concat(paginationPosition)\n      }, pagination, {\n        className: classnames_default()(pagination.className, \"\".concat(prefixCls, \"-pagination\")),\n        onChange: this.handlePageChange,\n        total: total,\n        size: size,\n        current: this.getMaxCurrent(total),\n        onShowSizeChange: this.handleShowSizeChange\n      })) : null;\n    } // Get pagination, filters, sorter\n\n  }, {\n    key: \"prepareParamsArguments\",\n    value: function prepareParamsArguments(state) {\n      var pagination = Table_extends({}, state.pagination); // remove useless handle function in Table.onChange\n\n\n      delete pagination.onChange;\n      delete pagination.onShowSizeChange;\n      var filters = state.filters;\n      var sorter = {};\n\n      if (state.sortColumn && state.sortOrder) {\n        sorter.column = state.sortColumn;\n        sorter.order = state.sortOrder;\n        sorter.field = state.sortColumn.dataIndex;\n        sorter.columnKey = this.getColumnKey(state.sortColumn);\n      }\n\n      var extra = {\n        currentDataSource: this.getLocalData(state)\n      };\n      return [pagination, filters, sorter, extra];\n    }\n  }, {\n    key: \"findColumn\",\n    value: function findColumn(myKey) {\n      var _this8 = this;\n\n      var column;\n      treeMap(this.columns, function (c) {\n        if (_this8.getColumnKey(c) === myKey) {\n          column = c;\n        }\n      });\n      return column;\n    }\n  }, {\n    key: \"getCurrentPageData\",\n    value: function getCurrentPageData() {\n      var data = this.getLocalData();\n      var current;\n      var pageSize;\n      var state = this.state; // 如果没有分页的话，默认全部展示\n\n      if (!this.hasPagination()) {\n        pageSize = Number.MAX_VALUE;\n        current = 1;\n      } else {\n        pageSize = state.pagination.pageSize;\n        current = this.getMaxCurrent(state.pagination.total || data.length);\n      } // 分页\n      // ---\n      // 当数据量少于等于每页数量时，直接设置数据\n      // 否则进行读取分页数据\n\n\n      if (data.length > pageSize || pageSize === Number.MAX_VALUE) {\n        data = data.filter(function (_, i) {\n          return i >= (current - 1) * pageSize && i < current * pageSize;\n        });\n      }\n\n      return data;\n    }\n  }, {\n    key: \"getFlatData\",\n    value: function getFlatData() {\n      return flatArray(this.getLocalData(null, false));\n    }\n  }, {\n    key: \"getFlatCurrentPageData\",\n    value: function getFlatCurrentPageData(childrenColumnName) {\n      return flatArray(this.getCurrentPageData(), childrenColumnName);\n    }\n  }, {\n    key: \"recursiveSort\",\n    value: function recursiveSort(data, sorterFn) {\n      var _this9 = this;\n\n      var _this$props$childrenC = this.props.childrenColumnName,\n          childrenColumnName = _this$props$childrenC === void 0 ? 'children' : _this$props$childrenC;\n      return data.sort(sorterFn).map(function (item) {\n        return item[childrenColumnName] ? Table_extends({}, item, Table_defineProperty({}, childrenColumnName, _this9.recursiveSort(item[childrenColumnName], sorterFn))) : item;\n      });\n    }\n  }, {\n    key: \"getLocalData\",\n    value: function getLocalData(state) {\n      var _this10 = this;\n\n      var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var currentState = state || this.state;\n      var dataSource = this.props.dataSource;\n      var data = dataSource || []; // 优化本地排序\n\n      data = data.slice(0);\n      var sorterFn = this.getSorterFn(currentState);\n\n      if (sorterFn) {\n        data = this.recursiveSort(data, sorterFn);\n      } // 筛选\n\n\n      if (filter && currentState.filters) {\n        Object.keys(currentState.filters).forEach(function (columnKey) {\n          var col = _this10.findColumn(columnKey);\n\n          if (!col) {\n            return;\n          }\n\n          var values = currentState.filters[columnKey] || [];\n\n          if (values.length === 0) {\n            return;\n          }\n\n          var onFilter = col.onFilter;\n          data = onFilter ? data.filter(function (record) {\n            return values.some(function (v) {\n              return onFilter(v, record);\n            });\n          }) : data;\n        });\n      }\n\n      return data;\n    }\n  }, {\n    key: \"createComponents\",\n    value: function createComponents() {\n      var components = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var prevComponents = arguments.length > 1 ? arguments[1] : undefined;\n      var bodyRow = components && components.body && components.body.row;\n      var preBodyRow = prevComponents && prevComponents.body && prevComponents.body.row;\n\n      if (!this.row || bodyRow !== preBodyRow) {\n        this.row = createTableRow(bodyRow);\n      }\n\n      this.components = Table_extends({}, components, {\n        body: Table_extends({}, components.body, {\n          row: this.row\n        })\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderComponent);\n    }\n  }]);\n\n  return Table;\n}(external_react_[\"Component\"]);\n\n\ntable_Table_Table.Column = Column_Column;\ntable_Table_Table.ColumnGroup = table_ColumnGroup_ColumnGroup;\ntable_Table_Table.propTypes = {\n  dataSource: prop_types[\"array\"],\n  columns: prop_types[\"array\"],\n  prefixCls: prop_types[\"string\"],\n  useFixedHeader: prop_types[\"bool\"],\n  rowSelection: prop_types[\"object\"],\n  className: prop_types[\"string\"],\n  size: prop_types[\"string\"],\n  loading: prop_types[\"oneOfType\"]([prop_types[\"bool\"], prop_types[\"object\"]]),\n  bordered: prop_types[\"bool\"],\n  onChange: prop_types[\"func\"],\n  locale: prop_types[\"object\"],\n  dropdownPrefixCls: prop_types[\"string\"],\n  sortDirections: prop_types[\"array\"]\n};\ntable_Table_Table.defaultProps = {\n  dataSource: [],\n  useFixedHeader: false,\n  className: '',\n  size: 'default',\n  loading: false,\n  bordered: false,\n  indentSize: 20,\n  locale: {},\n  rowKey: 'key',\n  showHeader: true,\n  sortDirections: ['ascend', 'descend']\n};\n// CONCATENATED MODULE: ./node_modules/antd/es/table/index.js\n\n/* harmony default export */ var es_table = (table_Table_Table);\n// CONCATENATED MODULE: ./src/components/common/EditTable.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction EditTable_createSuper(Derived) { var hasNativeReflectConstruct = EditTable_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction EditTable_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar EditTable_EditTable = /*#__PURE__*/function (_Component) {\n  inherits_default()(EditTable, _Component);\n\n  var _super = EditTable_createSuper(EditTable);\n\n  function EditTable() {\n    var _this;\n\n    classCallCheck_default()(this, EditTable);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      userProperty: _this.props.userProperty,\n      tempKey: '',\n      originKey: '',\n      tempValue: '',\n      visible: false,\n      current: 'add',\n      validateStatus: '',\n      help: ''\n    };\n\n    _this.getDataSource = function (userProperty) {\n      return Object.keys(userProperty).map(function (key) {\n        return {\n          key: key,\n          value: userProperty[key]\n        };\n      });\n    };\n\n    _this.handlers = {\n      onOk: function onOk() {\n        var onChange = _this.props.onChange;\n        var _this$state = _this.state,\n            tempKey = _this$state.tempKey,\n            originKey = _this$state.originKey,\n            tempValue = _this$state.tempValue,\n            current = _this$state.current,\n            validateStatus = _this$state.validateStatus;\n\n        if (validateStatus === 'error') {\n          return;\n        }\n\n        if (current === 'modify') {\n          delete _this.state.userProperty[originKey];\n        }\n\n        var userProperty = Object.assign({}, _this.state.userProperty, helpers_defineProperty_default()({}, tempKey, tempValue));\n\n        if (onChange) {\n          onChange(userProperty);\n        }\n\n        _this.setState({\n          visible: false,\n          userProperty: userProperty\n        });\n      },\n      onCancel: function onCancel() {\n        _this.modalHandlers.onHide();\n      },\n      onChangeKey: function onChangeKey(value) {\n        var validateStatus = 'success';\n        var help = '';\n\n        if (_this.state.current === 'add' && Object.keys(_this.state.userProperty).some(function (p) {\n          return p === value;\n        }) || _this.state.current === 'modify' && _this.state.originKey !== value && _this.state.userProperty[value]) {\n          validateStatus = 'error';\n          help = esm_i18next.t('validation.already-property', {\n            arg: esm_i18next.t('common.key')\n          });\n        } else if (!value.length) {\n          validateStatus = 'error';\n          help = esm_i18next.t('validation.enter-property', {\n            arg: esm_i18next.t('common.key')\n          });\n        } else {\n          validateStatus = 'success';\n          help = '';\n        }\n\n        _this.setState({\n          tempKey: value,\n          validateStatus: validateStatus,\n          help: help\n        });\n      }\n    };\n    _this.modalHandlers = {\n      onShow: function onShow() {\n        _this.setState({\n          visible: true\n        });\n      },\n      onHide: function onHide() {\n        _this.setState({\n          visible: false\n        });\n      }\n    };\n\n    _this.handleAdd = function () {\n      _this.setState({\n        visible: true,\n        tempKey: '',\n        tempValue: '',\n        current: 'add',\n        validateStatus: '',\n        help: ''\n      });\n    };\n\n    _this.handleEdit = function (key) {\n      _this.setState({\n        visible: true,\n        tempKey: key,\n        originKey: key,\n        tempValue: _this.state.userProperty[key],\n        current: 'modify',\n        validateStatus: '',\n        help: ''\n      });\n    };\n\n    _this.handleDelete = function (key) {\n      delete _this.state.userProperty[key];\n\n      _this.setState({\n        userProperty: _this.state.userProperty\n      });\n    };\n\n    _this.handleClear = function () {\n      _this.setState({\n        userProperty: {}\n      });\n    };\n\n    return _this;\n  }\n\n  createClass_default()(EditTable, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      this.setState({\n        userProperty: nextProps.userProperty || {}\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$state2 = this.state,\n          userProperty = _this$state2.userProperty,\n          tempKey = _this$state2.tempKey,\n          tempValue = _this$state2.tempValue,\n          visible = _this$state2.visible,\n          validateStatus = _this$state2.validateStatus,\n          help = _this$state2.help;\n      var _this$handlers = this.handlers,\n          onOk = _this$handlers.onOk,\n          onCancel = _this$handlers.onCancel,\n          onChangeKey = _this$handlers.onChangeKey;\n      var columns = [{\n        title: esm_i18next.t('common.key'),\n        dataIndex: 'key'\n      }, {\n        title: esm_i18next.t('common.value'),\n        dataIndex: 'value'\n      }, {\n        title: '',\n        dataIndex: 'action',\n        render: function render(text, record) {\n          return /*#__PURE__*/external_react_default.a.createElement(\"div\", null, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n            className: \"rde-action-btn\",\n            shape: \"circle\",\n            onClick: function onClick() {\n              _this2.handleEdit(record.key);\n            }\n          }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n            name: \"edit\"\n          })), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n            className: \"rde-action-btn\",\n            shape: \"circle\",\n            onClick: function onClick() {\n              _this2.handleDelete(record.key);\n            }\n          }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n            name: \"times\"\n          })));\n        }\n      }];\n      return /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        flexDirection: \"column\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        justifyContent: \"flex-end\"\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        onClick: this.handleAdd\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"plus\"\n      })), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        onClick: this.handleClear\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"times\"\n      }))), /*#__PURE__*/external_react_default.a.createElement(es_table, {\n        size: \"small\",\n        pagination: {\n          pageSize: 5\n        },\n        columns: columns,\n        dataSource: this.getDataSource(userProperty)\n      }), /*#__PURE__*/external_react_default.a.createElement(modal, {\n        onCancel: onCancel,\n        onOk: onOk,\n        visible: visible\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        required: true,\n        label: esm_i18next.t('common.key'),\n        colon: false,\n        hasFeedback: true,\n        validateStatus: validateStatus,\n        help: help\n      }, /*#__PURE__*/external_react_default.a.createElement(es_input, {\n        defaultValue: tempKey,\n        value: tempKey,\n        onChange: function onChange(e) {\n          onChangeKey(e.target.value);\n        }\n      })), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('common.value'),\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(es_input, {\n        defaultValue: tempValue,\n        value: tempValue,\n        onChange: function onChange(e) {\n          _this2.setState({\n            tempValue: e.target.value\n          });\n        }\n      }))));\n    }\n  }]);\n\n  return EditTable;\n}(external_react_[\"Component\"]);\n\nEditTable_EditTable.propTypes = {\n  userProperty: prop_types_default.a.object,\n  form: prop_types_default.a.any,\n  onChange: prop_types_default.a.func\n};\nEditTable_EditTable.defaultProps = {\n  userProperty: {}\n};\n/* harmony default export */ var common_EditTable = (EditTable_EditTable);\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/UserProperty.js\n\n\n\n/* harmony default export */ var UserProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('userProperty', {})( /*#__PURE__*/external_react_default.a.createElement(common_EditTable, {\n      userProperty: data.userProperty,\n      form: form\n    }))));\n  }\n});\n// CONCATENATED MODULE: ./src/components/common/CodeModal.js\n\n\n\n\n\n\n\n\n\nfunction CodeModal_createSuper(Derived) { var hasNativeReflectConstruct = CodeModal_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction CodeModal_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\n\nvar CodeModal_CodeModal = /*#__PURE__*/function (_Component) {\n  inherits_default()(CodeModal, _Component);\n\n  var _super = CodeModal_createSuper(CodeModal);\n\n  function CodeModal() {\n    var _this;\n\n    classCallCheck_default()(this, CodeModal);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.handlers = {\n      onOk: function onOk() {\n        var onChange = _this.props.onChange;\n        var tempCode = _this.state.tempCode;\n        onChange(tempCode);\n\n        _this.setState({\n          visible: false,\n          code: tempCode\n        });\n      },\n      onCancel: function onCancel() {\n        _this.modalHandlers.onHide();\n      },\n      onClick: function onClick() {\n        _this.modalHandlers.onShow();\n      }\n    };\n    _this.modalHandlers = {\n      onShow: function onShow() {\n        _this.setState({\n          visible: true\n        });\n      },\n      onHide: function onHide() {\n        _this.setState({\n          visible: false\n        });\n      }\n    };\n    _this.state = {\n      code: _this.props.value,\n      tempCode: _this.props.value,\n      visible: false\n    };\n    return _this;\n  }\n\n  createClass_default()(CodeModal, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      this.setState({\n        code: nextProps.value\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$handlers = this.handlers,\n          onOk = _this$handlers.onOk,\n          onCancel = _this$handlers.onCancel,\n          onClick = _this$handlers.onClick;\n      var form = this.props.form;\n      var getFieldDecorator = form.getFieldDecorator;\n      var _this$state = this.state,\n          code = _this$state.code,\n          visible = _this$state.visible,\n          tempCode = _this$state.tempCode;\n      var label = /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        style: {\n          marginRight: 8\n        }\n      }, esm_i18next.t('common.code')), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        onClick: onClick,\n        shape: \"circle\",\n        className: \"rde-action-btn\"\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"edit\"\n      })));\n      var codeLabel = /*#__PURE__*/external_react_default.a.createElement(\"span\", null, \"Code (value, styles, animations, userProperty)\");\n      return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: label,\n        colon: false\n      }, getFieldDecorator('trigger.code', {\n        initialValue: code || this.props.value\n      })( /*#__PURE__*/external_react_default.a.createElement(\"pre\", {\n        style: {\n          wordBreak: 'break-all',\n          lineHeight: '1.2em'\n        }\n      }, code))), /*#__PURE__*/external_react_default.a.createElement(modal, {\n        onCancel: onCancel,\n        onOk: onOk,\n        visible: visible\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: codeLabel,\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(react_ace_lib_default.a, {\n        ref: function ref(c) {\n          _this2.jsRef = c;\n        },\n        mode: \"javascript\",\n        theme: \"github\",\n        width: \"100%\",\n        height: \"200px\",\n        defaultValue: code,\n        value: tempCode,\n        editorProps: {\n          $blockScrolling: true\n        },\n        onChange: function onChange(value) {\n          _this2.setState({\n            tempCode: value\n          });\n        }\n      }))));\n    }\n  }]);\n\n  return CodeModal;\n}(external_react_[\"Component\"]);\n\nCodeModal_CodeModal.propTypes = {\n  value: prop_types_default.a.any,\n  onChange: prop_types_default.a.func,\n  form: prop_types_default.a.any\n};\n/* harmony default export */ var common_CodeModal = (CodeModal_CodeModal);\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/TriggerProperty.js\n\n\n\n\n/* harmony default export */ var TriggerProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n    return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.trigger.trigger-enabled'),\n      colon: false\n    }, getFieldDecorator('trigger.enabled', {\n      rules: [{\n        type: 'boolean'\n      }],\n      valuePropName: 'checked',\n      initialValue: data.trigger.enabled\n    })( /*#__PURE__*/external_react_default.a.createElement(switch_Switch, {\n      size: \"small\"\n    }))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      style: {\n        display: data.trigger.enabled ? 'block' : 'none'\n      }\n    }, getFieldDecorator('trigger.code', {\n      initialValue: data.trigger.code || 'return null;'\n    })( /*#__PURE__*/external_react_default.a.createElement(common_CodeModal, {\n      form: form\n    }))));\n  }\n});\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/ImageFilterProperty.js\n\n\n\n/* harmony default export */ var ImageFilterProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n    var filters = data.filters;\n    return /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.grayscale')\n    }, getFieldDecorator('filters.grayscale', {\n      valuePropName: 'checked',\n      initialValue: !!filters[0]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'G')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.invert')\n    }, getFieldDecorator('filters.invert', {\n      valuePropName: 'checked',\n      initialValue: !!filters[1]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'I')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.sepia')\n    }, getFieldDecorator('filters.sepia', {\n      valuePropName: 'checked',\n      initialValue: !!filters[3]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'S')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.brownie')\n    }, getFieldDecorator('filters.brownie', {\n      valuePropName: 'checked',\n      initialValue: !!filters[4]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'B'))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.vintage')\n    }, getFieldDecorator('filters.vintage', {\n      valuePropName: 'checked',\n      initialValue: !!filters[9]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'V')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.blackwhite')\n    }, getFieldDecorator('filters.blackwhite', {\n      valuePropName: 'checked',\n      initialValue: !!filters[19]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'B')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.technicolor')\n    }, getFieldDecorator('filters.technicolor', {\n      valuePropName: 'checked',\n      initialValue: !!filters[14]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'T')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.polaroid')\n    }, getFieldDecorator('filters.polaroid', {\n      valuePropName: 'checked',\n      initialValue: !!filters[15]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'P'))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.sharpen')\n    }, getFieldDecorator('filters.sharpen', {\n      valuePropName: 'checked',\n      initialValue: !!filters[12]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'S')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.emboss')\n    }, getFieldDecorator('filters.emboss', {\n      valuePropName: 'checked',\n      initialValue: !!filters[13]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'E'))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.gamma')\n    }, getFieldDecorator('filters.gamma.enabled', {\n      valuePropName: 'checked',\n      initialValue: !!filters[17]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'G')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('color.red')\n    }, getFieldDecorator('filters.gamma.r', {\n      initialValue: filters[17] ? filters[17].gamma[0] : 1\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      disabled: !filters[17],\n      step: 0.01,\n      min: 0.01,\n      max: 2.2\n    })))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('color.green')\n    }, getFieldDecorator('filters.gamma.g', {\n      initialValue: filters[17] ? filters[17].gamma[1] : 1\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      disabled: !filters[17],\n      step: 0.01,\n      min: 0.01,\n      max: 2.2\n    })))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('color.blue')\n    }, getFieldDecorator('filters.gamma.b', {\n      initialValue: filters[17] ? filters[17].gamma[2] : 1\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      disabled: !filters[17],\n      step: 0.01,\n      min: 0.01,\n      max: 2.2\n    }))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.brightness')\n    }, getFieldDecorator('filters.brightness.enabled', {\n      valuePropName: 'checked',\n      initialValue: !!filters[5]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'B')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 18\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.brightness')\n    }, getFieldDecorator('filters.brightness.brightness', {\n      initialValue: filters[5] ? filters[5].brightness : 0.1\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      disabled: !filters[5],\n      step: 0.01,\n      min: -1,\n      max: 1\n    }))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.contrast')\n    }, getFieldDecorator('filters.contrast.enabled', {\n      valuePropName: 'checked',\n      initialValue: !!filters[6]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'C')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 18\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.contrast')\n    }, getFieldDecorator('filters.contrast.contrast', {\n      initialValue: filters[6] ? filters[6].contrast : 0\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      disabled: !filters[6],\n      step: 0.01,\n      min: -1,\n      max: 1\n    }))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.saturation')\n    }, getFieldDecorator('filters.saturation.enabled', {\n      valuePropName: 'checked',\n      initialValue: !!filters[7]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'S')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 18\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.saturation')\n    }, getFieldDecorator('filters.saturation.saturation', {\n      initialValue: filters[7] ? filters[7].saturation : 0\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      disabled: !filters[7],\n      step: 0.01,\n      min: -1,\n      max: 1\n    }))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.hue')\n    }, getFieldDecorator('filters.hue.enabled', {\n      valuePropName: 'checked',\n      initialValue: !!filters[21]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'H')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 18\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.hue')\n    }, getFieldDecorator('filters.hue.rotation', {\n      initialValue: filters[21] ? filters[21].rotation : 0\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      disabled: !filters[21],\n      step: 0.002,\n      min: -2,\n      max: 2\n    }))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.noise')\n    }, getFieldDecorator('filters.noise.enabled', {\n      valuePropName: 'checked',\n      initialValue: !!filters[8]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'N')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 18\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.noise')\n    }, getFieldDecorator('filters.noise.noise', {\n      initialValue: filters[8] ? filters[8].noise : 100\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      disabled: !filters[8],\n      step: 1,\n      min: 0,\n      max: 1000\n    }))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.pixelate')\n    }, getFieldDecorator('filters.pixelate.enabled', {\n      valuePropName: 'checked',\n      initialValue: !!filters[10]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'P')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 18\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.pixelate')\n    }, getFieldDecorator('filters.pixelate.blocksize', {\n      initialValue: filters[10] ? filters[10].blocksize : 4\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      disabled: !filters[10],\n      step: 1,\n      min: 2,\n      max: 20\n    }))))), /*#__PURE__*/external_react_default.a.createElement(es_row, null, /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 6\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.blur')\n    }, getFieldDecorator('filters.blur.enabled', {\n      valuePropName: 'checked',\n      initialValue: !!filters[11]\n    })( /*#__PURE__*/external_react_default.a.createElement(es_tag.CheckableTag, {\n      className: \"rde-action-tag\"\n    }, 'B')))), /*#__PURE__*/external_react_default.a.createElement(col, {\n      md: 24,\n      lg: 18\n    }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n      label: esm_i18next.t('imagemap.filter.blur')\n    }, getFieldDecorator('filters.blur.value', {\n      initialValue: filters[11] ? filters[11].value : 0.1\n    })( /*#__PURE__*/external_react_default.a.createElement(slider_Slider, {\n      disabled: !filters[11],\n      step: 0.01,\n      min: 0,\n      max: 1\n    }))))));\n  }\n});\n// CONCATENATED MODULE: ./src/components/common/ChartModal.js\n\n\n\n\n\n\n\n\n\nfunction ChartModal_createSuper(Derived) { var hasNativeReflectConstruct = ChartModal_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction ChartModal_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\n\nvar ChartModal_CodeModal = /*#__PURE__*/function (_Component) {\n  inherits_default()(CodeModal, _Component);\n\n  var _super = ChartModal_createSuper(CodeModal);\n\n  function CodeModal() {\n    var _this;\n\n    classCallCheck_default()(this, CodeModal);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      chartOption: _this.props.value,\n      visible: false\n    };\n    _this.handlers = {\n      onOk: function onOk() {\n        var onChange = _this.props.onChange;\n        var tempChartOption = _this.state.tempChartOption;\n        onChange(tempChartOption);\n\n        _this.setState({\n          visible: false,\n          chartOption: tempChartOption\n        });\n      },\n      onCancel: function onCancel() {\n        _this.modalHandlers.onHide();\n      },\n      onClick: function onClick() {\n        _this.modalHandlers.onShow();\n      }\n    };\n    _this.modalHandlers = {\n      onShow: function onShow() {\n        _this.setState({\n          visible: true\n        });\n      },\n      onHide: function onHide() {\n        _this.setState({\n          visible: false\n        });\n      }\n    };\n    return _this;\n  }\n\n  createClass_default()(CodeModal, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      this.setState({\n        chartOption: nextProps.value\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$handlers = this.handlers,\n          onOk = _this$handlers.onOk,\n          onCancel = _this$handlers.onCancel,\n          onClick = _this$handlers.onClick;\n      var form = this.props.form;\n      var getFieldDecorator = form.getFieldDecorator;\n      var _this$state = this.state,\n          visible = _this$state.visible,\n          chartOption = _this$state.chartOption,\n          tempChartOption = _this$state.tempChartOption;\n      var label = /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        style: {\n          marginRight: 8\n        }\n      }, esm_i18next.t('common.code')), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        onClick: onClick,\n        shape: \"circle\",\n        className: \"rde-action-btn\"\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"edit\"\n      })));\n      var codeLabel = /*#__PURE__*/external_react_default.a.createElement(\"span\", null, \"Code (value, styles, animations, userProperty)\");\n      return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: label,\n        colon: false\n      }, getFieldDecorator('chartOption', {\n        initialValue: chartOption\n      })( /*#__PURE__*/external_react_default.a.createElement(\"pre\", {\n        style: {\n          wordBreak: 'break-all',\n          lineHeight: '1.2em'\n        }\n      }, chartOption))), /*#__PURE__*/external_react_default.a.createElement(modal, {\n        onCancel: onCancel,\n        onOk: onOk,\n        visible: visible,\n        style: {\n          minWidth: 800\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: codeLabel,\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(react_ace_lib_default.a, {\n        ref: function ref(c) {\n          _this2.jsRef = c;\n        },\n        mode: \"javascript\",\n        theme: \"github\",\n        width: \"100%\",\n        height: \"600px\",\n        defaultValue: chartOption,\n        value: tempChartOption,\n        editorProps: {\n          $blockScrolling: true\n        },\n        onChange: function onChange(text) {\n          _this2.setState({\n            tempChartOption: text\n          });\n        }\n      }))));\n    }\n  }]);\n\n  return CodeModal;\n}(external_react_[\"Component\"]);\n\nChartModal_CodeModal.propTypes = {\n  value: prop_types_default.a.any,\n  onChange: prop_types_default.a.func,\n  form: prop_types_default.a.any\n};\n/* harmony default export */ var ChartModal = (ChartModal_CodeModal);\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/ChartProperty.js\n\n\n\n/* harmony default export */ var ChartProperty = ({\n  render: function render(canvasRef, form, data) {\n    var getFieldDecorator = form.getFieldDecorator;\n\n    if (!data) {\n      return null;\n    }\n\n    return /*#__PURE__*/external_react_default.a.createElement(es_form.Item, null, getFieldDecorator('chartOption', {\n      rules: [{\n        required: true,\n        message: 'Please input code'\n      }],\n      initialValue: data.chartOptionStr\n    })( /*#__PURE__*/external_react_default.a.createElement(ChartModal, {\n      form: form\n    })));\n  }\n});\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/PropertyDefinition.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var PropertyDefinition = ({\n  map: {\n    map: {\n      title: 'Map',\n      component: MapProperty\n    },\n    image: {\n      title: 'Image',\n      component: ImageProperty\n    }\n  },\n  group: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    }\n  },\n  'i-text': {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    marker: {\n      title: 'Marker',\n      component: MarkerProperty\n    },\n    link: {\n      title: 'Link',\n      component: LinkProperty\n    },\n    tooltip: {\n      title: 'Tooltip',\n      component: TooltipProperty\n    },\n    style: {\n      title: 'Style',\n      component: StyleProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    },\n    animation: {\n      title: 'Animation',\n      component: AnimationProperty\n    },\n    trigger: {\n      title: 'Trigger',\n      component: TriggerProperty\n    },\n    userProperty: {\n      title: 'User Property',\n      component: UserProperty\n    }\n  },\n  textbox: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    text: {\n      title: 'Text',\n      component: TextProperty\n    },\n    link: {\n      title: 'Link',\n      component: LinkProperty\n    },\n    tooltip: {\n      title: 'Tooltip',\n      component: TooltipProperty\n    },\n    style: {\n      title: 'Style',\n      component: StyleProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    },\n    animation: {\n      title: 'Animation',\n      component: AnimationProperty\n    },\n    trigger: {\n      title: 'Trigger',\n      component: TriggerProperty\n    },\n    userProperty: {\n      title: 'User Property',\n      component: UserProperty\n    }\n  },\n  image: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    image: {\n      title: 'Image',\n      component: ImageProperty\n    },\n    filter: {\n      title: 'Filter',\n      component: ImageFilterProperty\n    },\n    link: {\n      title: 'Link',\n      component: LinkProperty\n    },\n    tooltip: {\n      title: 'Tooltip',\n      component: TooltipProperty\n    },\n    style: {\n      title: 'Style',\n      component: StyleProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    },\n    animation: {\n      title: 'Animation',\n      component: AnimationProperty\n    },\n    trigger: {\n      title: 'Trigger',\n      component: TriggerProperty\n    },\n    userProperty: {\n      title: 'User Property',\n      component: UserProperty\n    }\n  },\n  triangle: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    link: {\n      title: 'Link',\n      component: LinkProperty\n    },\n    tooltip: {\n      title: 'Tooltip',\n      component: TooltipProperty\n    },\n    style: {\n      title: 'Style',\n      component: StyleProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    },\n    animation: {\n      title: 'Animation',\n      component: AnimationProperty\n    },\n    trigger: {\n      title: 'Trigger',\n      component: TriggerProperty\n    },\n    userProperty: {\n      title: 'User Property',\n      component: UserProperty\n    }\n  },\n  rect: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    link: {\n      title: 'Link',\n      component: LinkProperty\n    },\n    tooltip: {\n      title: 'Tooltip',\n      component: TooltipProperty\n    },\n    style: {\n      title: 'Style',\n      component: StyleProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    },\n    animation: {\n      title: 'Animation',\n      component: AnimationProperty\n    },\n    trigger: {\n      title: 'Trigger',\n      component: TriggerProperty\n    },\n    userProperty: {\n      title: 'User Property',\n      component: UserProperty\n    }\n  },\n  circle: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    link: {\n      title: 'Link',\n      component: LinkProperty\n    },\n    tooltip: {\n      title: 'Tooltip',\n      component: TooltipProperty\n    },\n    style: {\n      title: 'Style',\n      component: StyleProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    },\n    animation: {\n      title: 'Animation',\n      component: AnimationProperty\n    },\n    trigger: {\n      title: 'Trigger',\n      component: TriggerProperty\n    },\n    userProperty: {\n      title: 'User Property',\n      component: UserProperty\n    }\n  },\n  polygon: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    link: {\n      title: 'Link',\n      component: LinkProperty\n    },\n    tooltip: {\n      title: 'Tooltip',\n      component: TooltipProperty\n    },\n    style: {\n      title: 'Style',\n      component: StyleProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    },\n    animation: {\n      title: 'Animation',\n      component: AnimationProperty\n    },\n    trigger: {\n      title: 'Trigger',\n      component: TriggerProperty\n    },\n    userProperty: {\n      title: 'User Property',\n      component: UserProperty\n    }\n  },\n  line: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    link: {\n      title: 'Link',\n      component: LinkProperty\n    },\n    tooltip: {\n      title: 'Tooltip',\n      component: TooltipProperty\n    },\n    style: {\n      title: 'Style',\n      component: StyleProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    },\n    animation: {\n      title: 'Animation',\n      component: AnimationProperty\n    },\n    trigger: {\n      title: 'Trigger',\n      component: TriggerProperty\n    },\n    userProperty: {\n      title: 'User Property',\n      component: UserProperty\n    }\n  },\n  arrow: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    link: {\n      title: 'Link',\n      component: LinkProperty\n    },\n    tooltip: {\n      title: 'Tooltip',\n      component: TooltipProperty\n    },\n    style: {\n      title: 'Style',\n      component: StyleProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    },\n    animation: {\n      title: 'Animation',\n      component: AnimationProperty\n    },\n    trigger: {\n      title: 'Trigger',\n      component: TriggerProperty\n    },\n    userProperty: {\n      title: 'User Property',\n      component: UserProperty\n    }\n  },\n  video: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    video: {\n      title: 'Video',\n      component: VideoProperty\n    }\n  },\n  element: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    video: {\n      title: 'Element',\n      component: ElementProperty\n    }\n  },\n  iframe: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    video: {\n      title: 'Iframe',\n      component: IframeProperty\n    }\n  },\n  svg: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    link: {\n      title: 'Link',\n      component: LinkProperty\n    },\n    tooltip: {\n      title: 'Tooltip',\n      component: TooltipProperty\n    },\n    style: {\n      title: 'Style',\n      component: StyleProperty\n    },\n    shadow: {\n      title: 'Shadow',\n      component: ShadowProperty\n    },\n    animation: {\n      title: 'Animation',\n      component: AnimationProperty\n    },\n    trigger: {\n      title: 'Trigger',\n      component: TriggerProperty\n    },\n    userProperty: {\n      title: 'User Property',\n      component: UserProperty\n    }\n  },\n  chart: {\n    general: {\n      title: 'General',\n      component: GeneralProperty\n    },\n    chartOption: {\n      title: 'Chart Option',\n      component: ChartProperty\n    }\n  }\n});\n// EXTERNAL MODULE: ./node_modules/react-custom-scrollbars/lib/index.js\nvar react_custom_scrollbars_lib = __webpack_require__(695);\n\n// CONCATENATED MODULE: ./src/components/common/Scrollbar.js\n\n\n\n\n\n\n\n\n\n\nfunction Scrollbar_createSuper(Derived) { var hasNativeReflectConstruct = Scrollbar_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction Scrollbar_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar Scrollbar_Scrollbar = /*#__PURE__*/function (_Component) {\n  inherits_default()(Scrollbar, _Component);\n\n  var _super = Scrollbar_createSuper(Scrollbar);\n\n  function Scrollbar() {\n    var _this;\n\n    classCallCheck_default()(this, Scrollbar);\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 = _super.call.apply(_super, [this].concat(args));\n\n    _this.renderTrack = function (props) {\n      return /*#__PURE__*/external_react_default.a.createElement(\"div\", helpers_extends_default()({}, props, {\n        className: \"rde-track-vertical\"\n      }));\n    };\n\n    return _this;\n  }\n\n  createClass_default()(Scrollbar, [{\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/external_react_default.a.createElement(react_custom_scrollbars_lib[\"Scrollbars\"], {\n        renderTrackVertical: this.renderTrack\n      }, this.props.children);\n    }\n  }]);\n\n  return Scrollbar;\n}(external_react_[\"Component\"]);\n\n/* harmony default export */ var common_Scrollbar = (Scrollbar_Scrollbar);\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/NodeProperties.js\n\n\n\n\n\n\n\n\n\n\nfunction NodeProperties_createSuper(Derived) { var hasNativeReflectConstruct = NodeProperties_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction NodeProperties_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\nvar NodeProperties_Panel = es_collapse.Panel;\n\nvar NodeProperties_NodeProperties = /*#__PURE__*/function (_Component) {\n  inherits_default()(NodeProperties, _Component);\n\n  var _super = NodeProperties_createSuper(NodeProperties);\n\n  function NodeProperties() {\n    classCallCheck_default()(this, NodeProperties);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(NodeProperties, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      if (this.props.selectedItem && nextProps.selectedItem) {\n        if (this.props.selectedItem.id !== nextProps.selectedItem.id) {\n          nextProps.form.resetFields();\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          canvasRef = _this$props.canvasRef,\n          selectedItem = _this$props.selectedItem,\n          form = _this$props.form;\n      var showArrow = false;\n      return /*#__PURE__*/external_react_default.a.createElement(common_Scrollbar, null, /*#__PURE__*/external_react_default.a.createElement(es_form, {\n        layout: \"horizontal\",\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(es_collapse, {\n        bordered: false\n      }, selectedItem && PropertyDefinition[selectedItem.type] ? Object.keys(PropertyDefinition[selectedItem.type]).map(function (key) {\n        return /*#__PURE__*/external_react_default.a.createElement(NodeProperties_Panel, {\n          key: key,\n          header: PropertyDefinition[selectedItem.type][key].title,\n          showArrow: showArrow\n        }, PropertyDefinition[selectedItem.type][key].component.render(canvasRef, form, selectedItem));\n      }) : /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        justifyContent: \"center\",\n        alignItems: \"center\",\n        style: {\n          width: '100%',\n          height: '100%',\n          color: 'rgba(0, 0, 0, 0.45)',\n          fontSie: 16,\n          padding: 16\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(list_List, null)))));\n    }\n  }]);\n\n  return NodeProperties;\n}(external_react_[\"Component\"]);\n\nNodeProperties_NodeProperties.propTypes = {\n  canvasRef: prop_types_default.a.any,\n  selectedItem: prop_types_default.a.object\n};\n/* harmony default export */ var properties_NodeProperties = (es_form.create({\n  onValuesChange: function onValuesChange(props, changedValues, allValues) {\n    var onChange = props.onChange,\n        selectedItem = props.selectedItem;\n    onChange(selectedItem, changedValues, allValues);\n  }\n})(NodeProperties_NodeProperties));\n// CONCATENATED MODULE: ./src/editors/imagemap/properties/MapProperties.js\n\n\n\n\n\n\n\n\n\n\nfunction MapProperties_createSuper(Derived) { var hasNativeReflectConstruct = MapProperties_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction MapProperties_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\nvar MapProperties_Panel = es_collapse.Panel;\n\nvar MapProperties_MapProperties = /*#__PURE__*/function (_Component) {\n  inherits_default()(MapProperties, _Component);\n\n  var _super = MapProperties_createSuper(MapProperties);\n\n  function MapProperties() {\n    classCallCheck_default()(this, MapProperties);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(MapProperties, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          canvasRef = _this$props.canvasRef,\n          form = _this$props.form;\n      var showArrow = false;\n\n      if (canvasRef) {\n        return /*#__PURE__*/external_react_default.a.createElement(common_Scrollbar, null, /*#__PURE__*/external_react_default.a.createElement(es_form, {\n          layout: \"horizontal\"\n        }, /*#__PURE__*/external_react_default.a.createElement(es_collapse, {\n          bordered: false\n        }, Object.keys(PropertyDefinition.map).map(function (key) {\n          return /*#__PURE__*/external_react_default.a.createElement(MapProperties_Panel, {\n            key: key,\n            header: PropertyDefinition.map[key].title,\n            showArrow: showArrow\n          }, PropertyDefinition.map[key].component.render(canvasRef, form, canvasRef.handler.workarea));\n        }))));\n      }\n\n      return null;\n    }\n  }]);\n\n  return MapProperties;\n}(external_react_[\"Component\"]);\n\nMapProperties_MapProperties.propTypes = {\n  canvasRef: prop_types_default.a.any\n};\n/* harmony default export */ var properties_MapProperties = (es_form.create({\n  onValuesChange: function onValuesChange(props, changedValues, allValues) {\n    var onChange = props.onChange,\n        selectedItem = props.selectedItem;\n    onChange(selectedItem, changedValues, {\n      workarea: allValues\n    });\n  }\n})(MapProperties_MapProperties));\n// CONCATENATED MODULE: ./node_modules/antd/es/avatar/index.js\nfunction avatar_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { avatar_typeof = function _typeof(obj) { return typeof obj; }; } else { avatar_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return avatar_typeof(obj); }\n\nfunction avatar_extends() { avatar_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 avatar_extends.apply(this, arguments); }\n\nfunction avatar_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\nfunction avatar_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction avatar_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 avatar_createClass(Constructor, protoProps, staticProps) { if (protoProps) avatar_defineProperties(Constructor.prototype, protoProps); if (staticProps) avatar_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction avatar_possibleConstructorReturn(self, call) { if (call && (avatar_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return avatar_assertThisInitialized(self); }\n\nfunction avatar_getPrototypeOf(o) { avatar_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return avatar_getPrototypeOf(o); }\n\nfunction avatar_assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction avatar_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) avatar_setPrototypeOf(subClass, superClass); }\n\nfunction avatar_setPrototypeOf(o, p) { avatar_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return avatar_setPrototypeOf(o, p); }\n\nvar avatar_rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) {\n    if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  }\n\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\nvar avatar_Avatar =\n/*#__PURE__*/\nfunction (_React$Component) {\n  avatar_inherits(Avatar, _React$Component);\n\n  function Avatar() {\n    var _this;\n\n    avatar_classCallCheck(this, Avatar);\n\n    _this = avatar_possibleConstructorReturn(this, avatar_getPrototypeOf(Avatar).apply(this, arguments));\n    _this.state = {\n      scale: 1,\n      isImgExist: true\n    };\n\n    _this.setScale = function () {\n      var childrenNode = _this.avatarChildren;\n\n      if (childrenNode) {\n        var childrenWidth = childrenNode.offsetWidth;\n        var avatarNode = external_react_dom_[\"findDOMNode\"](avatar_assertThisInitialized(_this));\n        var avatarWidth = avatarNode.getBoundingClientRect().width; // add 4px gap for each side to get better performance\n\n        if (avatarWidth - 8 < childrenWidth) {\n          _this.setState({\n            scale: (avatarWidth - 8) / childrenWidth\n          });\n        } else {\n          _this.setState({\n            scale: 1\n          });\n        }\n      }\n    };\n\n    _this.handleImgLoadError = function () {\n      var onError = _this.props.onError;\n      var errorFlag = onError ? onError() : undefined;\n\n      if (errorFlag !== false) {\n        _this.setState({\n          isImgExist: false\n        });\n      }\n    };\n\n    _this.renderAvatar = function (_ref) {\n      var _classNames, _classNames2;\n\n      var getPrefixCls = _ref.getPrefixCls;\n\n      var _a = _this.props,\n          customizePrefixCls = _a.prefixCls,\n          shape = _a.shape,\n          size = _a.size,\n          src = _a.src,\n          srcSet = _a.srcSet,\n          icon = _a.icon,\n          className = _a.className,\n          alt = _a.alt,\n          others = avatar_rest(_a, [\"prefixCls\", \"shape\", \"size\", \"src\", \"srcSet\", \"icon\", \"className\", \"alt\"]);\n\n      var _this$state = _this.state,\n          isImgExist = _this$state.isImgExist,\n          scale = _this$state.scale;\n      var prefixCls = getPrefixCls('avatar', customizePrefixCls);\n      var sizeCls = classnames_default()((_classNames = {}, avatar_defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), avatar_defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _classNames));\n      var classString = classnames_default()(prefixCls, className, sizeCls, (_classNames2 = {}, avatar_defineProperty(_classNames2, \"\".concat(prefixCls, \"-\").concat(shape), shape), avatar_defineProperty(_classNames2, \"\".concat(prefixCls, \"-image\"), src && isImgExist), avatar_defineProperty(_classNames2, \"\".concat(prefixCls, \"-icon\"), icon), _classNames2));\n      var sizeStyle = typeof size === 'number' ? {\n        width: size,\n        height: size,\n        lineHeight: \"\".concat(size, \"px\"),\n        fontSize: icon ? size / 2 : 18\n      } : {};\n      var children = _this.props.children;\n\n      if (src && isImgExist) {\n        children = external_react_[\"createElement\"](\"img\", {\n          src: src,\n          srcSet: srcSet,\n          onError: _this.handleImgLoadError,\n          alt: alt\n        });\n      } else if (icon) {\n        children = external_react_[\"createElement\"](es_icon, {\n          type: icon\n        });\n      } else {\n        var childrenNode = _this.avatarChildren;\n\n        if (childrenNode || scale !== 1) {\n          var transformString = \"scale(\".concat(scale, \") translateX(-50%)\");\n          var childrenStyle = {\n            msTransform: transformString,\n            WebkitTransform: transformString,\n            transform: transformString\n          };\n          var sizeChildrenStyle = typeof size === 'number' ? {\n            lineHeight: \"\".concat(size, \"px\")\n          } : {};\n          children = external_react_[\"createElement\"](\"span\", {\n            className: \"\".concat(prefixCls, \"-string\"),\n            ref: function ref(span) {\n              return _this.avatarChildren = span;\n            },\n            style: avatar_extends({}, sizeChildrenStyle, childrenStyle)\n          }, children);\n        } else {\n          children = external_react_[\"createElement\"](\"span\", {\n            className: \"\".concat(prefixCls, \"-string\"),\n            ref: function ref(span) {\n              return _this.avatarChildren = span;\n            }\n          }, children);\n        }\n      }\n\n      return external_react_[\"createElement\"](\"span\", avatar_extends({}, others, {\n        style: avatar_extends({}, sizeStyle, others.style),\n        className: classString\n      }), children);\n    };\n\n    return _this;\n  }\n\n  avatar_createClass(Avatar, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.setScale();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      if (prevProps.children !== this.props.children || prevState.scale !== this.state.scale && this.state.scale === 1 || prevState.isImgExist !== this.state.isImgExist) {\n        this.setScale();\n      }\n\n      if (prevProps.src !== this.props.src) {\n        this.setState({\n          isImgExist: true,\n          scale: 1\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return external_react_[\"createElement\"](ConfigConsumer, null, this.renderAvatar);\n    }\n  }]);\n\n  return Avatar;\n}(external_react_[\"Component\"]);\n\n\navatar_Avatar.defaultProps = {\n  shape: 'circle',\n  size: 'default'\n};\n// CONCATENATED MODULE: ./src/editors/imagemap/animations/AnimationList.js\n\n\n\n\n\n\n\n\nfunction AnimationList_createSuper(Derived) { var hasNativeReflectConstruct = AnimationList_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction AnimationList_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\nvar AnimationList_AnimationList = /*#__PURE__*/function (_Component) {\n  inherits_default()(AnimationList, _Component);\n\n  var _super = AnimationList_createSuper(AnimationList);\n\n  function AnimationList() {\n    classCallCheck_default()(this, AnimationList);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(AnimationList, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          animations = _this$props.animations,\n          onEdit = _this$props.onEdit,\n          onDelete = _this$props.onDelete;\n      return /*#__PURE__*/external_react_default.a.createElement(list_List, {\n        dataSource: animations,\n        renderItem: function renderItem(animation, index) {\n          var actions = [/*#__PURE__*/external_react_default.a.createElement(es_button, {\n            className: \"rde-action-btn\",\n            shape: \"circle\",\n            onClick: function onClick() {\n              onEdit(animation, index);\n            }\n          }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n            name: \"edit\"\n          })), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n            className: \"rde-action-btn\",\n            shape: \"circle\",\n            onClick: function onClick() {\n              onDelete(index);\n            }\n          }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n            name: \"times\"\n          }))];\n          return /*#__PURE__*/external_react_default.a.createElement(list_List.Item, {\n            actions: actions\n          }, /*#__PURE__*/external_react_default.a.createElement(list_List.Item.Meta, {\n            avatar: /*#__PURE__*/external_react_default.a.createElement(avatar_Avatar, null, index),\n            title: animation.title,\n            description: animation.type\n          }));\n        }\n      });\n    }\n  }]);\n\n  return AnimationList;\n}(external_react_[\"Component\"]);\n\nAnimationList_AnimationList.propTypes = {\n  animations: prop_types_default.a.array,\n  onEdit: prop_types_default.a.func,\n  onDelete: prop_types_default.a.func\n};\n/* harmony default export */ var animations_AnimationList = (AnimationList_AnimationList);\n// CONCATENATED MODULE: ./src/editors/imagemap/animations/AnimationModal.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction AnimationModal_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction AnimationModal_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? AnimationModal_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : AnimationModal_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\nfunction AnimationModal_createSuper(Derived) { var hasNativeReflectConstruct = AnimationModal_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction AnimationModal_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar AnimationModal_AnimationModal = /*#__PURE__*/function (_Component) {\n  inherits_default()(AnimationModal, _Component);\n\n  var _super = AnimationModal_createSuper(AnimationModal);\n\n  function AnimationModal() {\n    var _this;\n\n    classCallCheck_default()(this, AnimationModal);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      width: 150,\n      height: 150\n    };\n\n    _this.waitForCanvasRender = function (canvas, animation) {\n      setTimeout(function () {\n        if (canvas) {\n          canvas.handlers.setById('animations', 'animation', animation);\n          return;\n        }\n\n        _this.waitForCanvasRender(_this.canvasRef, animation);\n      }, 5);\n    };\n\n    _this.waitForContainerRender = function (container) {\n      setTimeout(function () {\n        if (container) {\n          _this.setState({\n            width: container.clientWidth,\n            height: container.clientHeight\n          }, function () {\n            var option = {\n              type: 'i-text',\n              text: \"\\uF3C5\",\n              fontFamily: 'Font Awesome 5 Free',\n              fontWeight: 900,\n              fontSize: 60,\n              width: 30,\n              height: 30,\n              editable: false,\n              name: 'New marker',\n              tooltip: {\n                enabled: false\n              },\n              left: 200,\n              top: 50,\n              id: 'animations',\n              fill: 'rgba(0, 0, 0, 1)',\n              stroke: 'rgba(255, 255, 255, 0)'\n            };\n\n            _this.canvasRef.handler.add(option);\n          });\n\n          return;\n        }\n\n        _this.waitForContainerRender(_this.containerRef);\n      }, 5);\n    };\n\n    return _this;\n  }\n\n  createClass_default()(AnimationModal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.waitForContainerRender(this.containerRef);\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      if (!nextProps.visible) {\n        if (this.canvasRef) {\n          this.canvasRef.handler.animationHandler.stop('animations');\n        }\n\n        return;\n      }\n\n      if (JSON.stringify(nextProps.animation) !== JSON.stringify(this.props.animation)) {\n        this.waitForCanvasRender(this.canvasRef, nextProps.animation);\n      }\n\n      nextProps.form.resetFields();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          form = _this$props.form,\n          visible = _this$props.visible,\n          animation = _this$props.animation,\n          onOk = _this$props.onOk,\n          onCancel = _this$props.onCancel,\n          validateTitle = _this$props.validateTitle,\n          _onChange = _this$props.onChange;\n      var _this$state = this.state,\n          width = _this$state.width,\n          height = _this$state.height;\n      return /*#__PURE__*/external_react_default.a.createElement(modal, {\n        onOk: onOk,\n        onCancel: onCancel,\n        visible: visible\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('common.title'),\n        required: true,\n        colon: false,\n        hasFeedback: true,\n        help: validateTitle.help,\n        validateStatus: validateTitle.validateStatus\n      }, /*#__PURE__*/external_react_default.a.createElement(es_input, {\n        value: animation.title,\n        onChange: function onChange(e) {\n          _onChange(null, {\n            animation: {\n              title: e.target.value\n            }\n          }, {\n            animation: AnimationModal_objectSpread(AnimationModal_objectSpread({}, animation), {}, {\n              title: e.target.value\n            })\n          });\n        }\n      })), AnimationProperty.render(this.canvasRef, form, {\n        animation: animation,\n        id: 'animations'\n      }), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        ref: function ref(c) {\n          _this2.containerRef = c;\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(canvas_Canvas, {\n        ref: function ref(c) {\n          _this2.canvasRef = c;\n        },\n        editable: false,\n        canvasOption: {\n          width: width,\n          height: height,\n          backgroundColor: '#f3f3f3'\n        },\n        workareaOption: {\n          backgroundColor: 'transparent'\n        }\n      })));\n    }\n  }]);\n\n  return AnimationModal;\n}(external_react_[\"Component\"]);\n\nAnimationModal_AnimationModal.propTypes = {\n  form: prop_types_default.a.any,\n  visible: prop_types_default.a.bool,\n  animation: prop_types_default.a.object,\n  onOk: prop_types_default.a.func,\n  onCancel: prop_types_default.a.func\n};\n/* harmony default export */ var animations_AnimationModal = (es_form.create({\n  onValuesChange: function onValuesChange(props, changedValues, allValues) {\n    var onChange = props.onChange;\n    onChange(props, changedValues, allValues);\n  }\n})(AnimationModal_AnimationModal));\n// CONCATENATED MODULE: ./src/editors/imagemap/animations/Animations.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Animations_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction Animations_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? Animations_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : Animations_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\nfunction Animations_createSuper(Derived) { var hasNativeReflectConstruct = Animations_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction Animations_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\n\nvar initialAnimation = {\n  type: 'none',\n  loop: true,\n  autoplay: true,\n  delay: 100,\n  duration: 1000\n};\n\nvar Animations_Animations = /*#__PURE__*/function (_Component) {\n  inherits_default()(Animations, _Component);\n\n  var _super = Animations_createSuper(Animations);\n\n  function Animations() {\n    var _this;\n\n    classCallCheck_default()(this, Animations);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      animation: initialAnimation,\n      visible: false,\n      validateTitle: {\n        validateStatus: '',\n        help: ''\n      },\n      current: 'add'\n    };\n    _this.handlers = {\n      onOk: function onOk() {\n        if (_this.state.validateTitle.validateStatus === 'error') {\n          return;\n        }\n\n        if (!_this.state.animation.title) {\n          _this.setState({\n            validateTitle: _this.handlers.onValid()\n          });\n\n          return;\n        }\n\n        if (!_this.state.animation.type) {\n          _this.state.animation.type = 'none';\n        }\n\n        if (Object.keys(_this.state.animation).length === 2) {\n          _this.modalRef.validateFields(function (err, values) {\n            Object.assign(_this.state.animation, values.animation);\n          });\n        }\n\n        if (_this.state.current === 'add') {\n          _this.props.animations.push(_this.state.animation);\n        } else {\n          _this.props.animations.splice(_this.state.index, 1, _this.state.animation);\n        }\n\n        _this.setState({\n          visible: false,\n          animation: {}\n        }, function () {\n          _this.props.onChangeAnimations(_this.props.animations);\n        });\n      },\n      onCancel: function onCancel() {\n        _this.setState({\n          visible: false,\n          animation: initialAnimation,\n          validateTitle: {\n            validateStatus: '',\n            help: ''\n          }\n        });\n      },\n      onAdd: function onAdd() {\n        _this.setState({\n          visible: true,\n          animation: initialAnimation,\n          validateTitle: {\n            validateStatus: '',\n            help: ''\n          },\n          current: 'add'\n        });\n      },\n      onEdit: function onEdit(animation, index) {\n        _this.setState({\n          visible: true,\n          animation: animation,\n          validateTitle: {\n            validateStatus: '',\n            help: ''\n          },\n          current: 'modify',\n          index: index\n        });\n      },\n      onDelete: function onDelete(index) {\n        _this.props.animations.splice(index, 1);\n\n        _this.props.onChangeAnimations(_this.props.animations);\n      },\n      onClear: function onClear() {\n        _this.props.onChangeAnimations([]);\n      },\n      onChange: function onChange(props, changedValues, allValues) {\n        var fields = changedValues[Object.keys(changedValues)[0]];\n        var field = Object.keys(fields)[0];\n        var isTitle = field === 'title';\n\n        if (isTitle) {\n          _this.setState({\n            validateTitle: _this.handlers.onValid(fields[field])\n          });\n        }\n\n        _this.setState({\n          animation: Animations_objectSpread(Animations_objectSpread({\n            title: _this.state.animation.title\n          }, initialAnimation), allValues[Object.keys(allValues)[0]])\n        });\n      },\n      onValid: function onValid(value) {\n        if (!value || !value.length) {\n          return {\n            validateStatus: 'error',\n            help: esm_i18next.t('validation.enter-property', {\n              arg: esm_i18next.t('common.title')\n            })\n          };\n        }\n\n        var exist = _this.props.animations.some(function (animation) {\n          return animation.title === value;\n        });\n\n        if (!exist) {\n          return {\n            validateStatus: 'success',\n            help: ''\n          };\n        }\n\n        return {\n          validateStatus: 'error',\n          help: esm_i18next.t('validation.already-property', {\n            arg: esm_i18next.t('common.title')\n          })\n        };\n      }\n    };\n    return _this;\n  }\n\n  createClass_default()(Animations, [{\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var animations = this.props.animations;\n      var _this$state = this.state,\n          visible = _this$state.visible,\n          animation = _this$state.animation,\n          validateTitle = _this$state.validateTitle;\n      var _this$handlers = this.handlers,\n          onOk = _this$handlers.onOk,\n          onCancel = _this$handlers.onCancel,\n          onAdd = _this$handlers.onAdd,\n          onEdit = _this$handlers.onEdit,\n          onDelete = _this$handlers.onDelete,\n          onClear = _this$handlers.onClear,\n          onChange = _this$handlers.onChange,\n          onValid = _this$handlers.onValid;\n      return /*#__PURE__*/external_react_default.a.createElement(common_Scrollbar, null, /*#__PURE__*/external_react_default.a.createElement(es_form, null, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        flexDirection: \"column\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        justifyContent: \"flex-end\",\n        style: {\n          padding: 8\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        onClick: onAdd\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"plus\"\n      })), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        onClick: onClear\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"times\"\n      })), /*#__PURE__*/external_react_default.a.createElement(animations_AnimationModal, {\n        ref: function ref(c) {\n          _this2.modalRef = c;\n        },\n        validateTitle: validateTitle,\n        visible: visible,\n        onOk: onOk,\n        animation: animation,\n        onCancel: onCancel,\n        onChange: onChange,\n        onValid: onValid\n      })), /*#__PURE__*/external_react_default.a.createElement(animations_AnimationList, {\n        animations: animations,\n        onEdit: onEdit,\n        onDelete: onDelete\n      }))));\n    }\n  }]);\n\n  return Animations;\n}(external_react_[\"Component\"]);\n\nAnimations_Animations.propTypes = {\n  animations: prop_types_default.a.array,\n  onChangeAnimations: prop_types_default.a.func\n};\nAnimations_Animations.defaultProps = {\n  animations: []\n};\n/* harmony default export */ var animations_Animations = (Animations_Animations);\n// CONCATENATED MODULE: ./src/editors/imagemap/styles/StyleList.js\n\n\n\n\n\n\n\n\n\n\nfunction StyleList_createSuper(Derived) { var hasNativeReflectConstruct = StyleList_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction StyleList_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\nvar StyleList_StyleList = /*#__PURE__*/function (_Component) {\n  inherits_default()(StyleList, _Component);\n\n  var _super = StyleList_createSuper(StyleList);\n\n  function StyleList() {\n    classCallCheck_default()(this, StyleList);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(StyleList, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          styles = _this$props.styles,\n          onEdit = _this$props.onEdit,\n          onDelete = _this$props.onDelete;\n      return /*#__PURE__*/external_react_default.a.createElement(list_List, {\n        dataSource: styles,\n        renderItem: function renderItem(style, index) {\n          var actions = [/*#__PURE__*/external_react_default.a.createElement(es_button, {\n            className: \"rde-action-btn\",\n            shape: \"circle\",\n            onClick: function onClick() {\n              onEdit(style, index);\n            }\n          }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n            name: \"edit\"\n          })), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n            className: \"rde-action-btn\",\n            shape: \"circle\",\n            onClick: function onClick() {\n              onDelete(index);\n            }\n          }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n            name: \"times\"\n          }))];\n          var description = \"fill: \".concat(style.fill, \", opacity: \").concat(style.opacity);\n          return /*#__PURE__*/external_react_default.a.createElement(list_List.Item, {\n            actions: actions\n          }, /*#__PURE__*/external_react_default.a.createElement(list_List.Item.Meta, {\n            avatar: /*#__PURE__*/external_react_default.a.createElement(avatar_Avatar, null, index),\n            title: style.title,\n            description: description\n          }));\n        }\n      });\n    }\n  }]);\n\n  return StyleList;\n}(external_react_[\"Component\"]);\n\nStyleList_StyleList.propTypes = {\n  styles: prop_types_default.a.array,\n  onEdit: prop_types_default.a.func,\n  onDelete: prop_types_default.a.func\n};\n/* harmony default export */ var styles_StyleList = (StyleList_StyleList);\n// CONCATENATED MODULE: ./src/editors/imagemap/styles/StyleModal.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction StyleModal_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction StyleModal_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? StyleModal_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : StyleModal_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\nfunction StyleModal_createSuper(Derived) { var hasNativeReflectConstruct = StyleModal_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction StyleModal_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar StyleModal_StyleModal = /*#__PURE__*/function (_Component) {\n  inherits_default()(StyleModal, _Component);\n\n  var _super = StyleModal_createSuper(StyleModal);\n\n  function StyleModal() {\n    var _this;\n\n    classCallCheck_default()(this, StyleModal);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      width: 150,\n      height: 150\n    };\n\n    _this.waitForCanvasRender = function (canvas, style) {\n      setTimeout(function () {\n        if (canvas) {\n          Object.keys(style).forEach(function (key) {\n            canvas.handlers.setById('styles', key, style[key]);\n          });\n          return;\n        }\n\n        _this.waitForCanvasRender(_this.canvasRef, style);\n      }, 5);\n    };\n\n    _this.waitForContainerRender = function (container) {\n      setTimeout(function () {\n        if (container) {\n          _this.setState({\n            width: container.clientWidth,\n            height: container.clientHeight\n          }, function () {\n            var option = {\n              type: 'i-text',\n              text: \"\\uF3C5\",\n              fontFamily: 'Font Awesome 5 Free',\n              fontWeight: 900,\n              fontSize: 60,\n              width: 30,\n              height: 30,\n              editable: false,\n              name: 'New marker',\n              tooltip: {\n                enabled: false\n              },\n              left: 200,\n              top: 50,\n              id: 'styles'\n            };\n\n            _this.canvasRef.handler.add(option);\n          });\n\n          return;\n        }\n\n        _this.waitForContainerRender(_this.containerRef);\n      }, 5);\n    };\n\n    return _this;\n  }\n\n  createClass_default()(StyleModal, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.waitForContainerRender(this.containerRef);\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      var style = nextProps.style;\n\n      if (!style || !Object.keys(style).length) {\n        style = {\n          fill: 'rgba(0, 0, 0, 1)',\n          opacity: 1,\n          stroke: 'rgba(255, 255, 255, 0)',\n          strokeWidth: 1\n        };\n      }\n\n      delete style.strokeDashArray;\n      this.waitForCanvasRender(this.canvasRef, style);\n      nextProps.form.resetFields();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          form = _this$props.form,\n          visible = _this$props.visible,\n          style = _this$props.style,\n          onOk = _this$props.onOk,\n          onCancel = _this$props.onCancel,\n          validateTitle = _this$props.validateTitle,\n          _onChange = _this$props.onChange;\n      var _this$state = this.state,\n          width = _this$state.width,\n          height = _this$state.height;\n      return /*#__PURE__*/external_react_default.a.createElement(modal, {\n        onOk: onOk,\n        onCancel: onCancel,\n        visible: visible\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('common.title'),\n        required: true,\n        colon: false,\n        hasFeedback: true,\n        help: validateTitle.help,\n        validateStatus: validateTitle.validateStatus\n      }, /*#__PURE__*/external_react_default.a.createElement(es_input, {\n        value: style.title,\n        onChange: function onChange(e) {\n          _onChange(null, {\n            title: e.target.value\n          }, StyleModal_objectSpread(StyleModal_objectSpread({}, style), {}, {\n            title: e.target.value\n          }));\n        }\n      })), StyleProperty.render(this.canvasRef, form, style), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        ref: function ref(c) {\n          _this2.containerRef = c;\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(canvas_Canvas, {\n        ref: function ref(c) {\n          _this2.canvasRef = c;\n        },\n        editable: false,\n        canvasOption: {\n          width: width,\n          height: height,\n          backgroundColor: '#f3f3f3'\n        },\n        workareaOption: {\n          backgroundColor: 'transparent'\n        }\n      })));\n    }\n  }]);\n\n  return StyleModal;\n}(external_react_[\"Component\"]);\n\nStyleModal_StyleModal.propTypes = {\n  form: prop_types_default.a.any,\n  visible: prop_types_default.a.bool,\n  style: prop_types_default.a.object,\n  onOk: prop_types_default.a.func,\n  onCancel: prop_types_default.a.func\n};\n/* harmony default export */ var styles_StyleModal = (es_form.create({\n  onValuesChange: function onValuesChange(props, changedValues, allValues) {\n    var onChange = props.onChange;\n    onChange(props, changedValues, allValues);\n  }\n})(StyleModal_StyleModal));\n// CONCATENATED MODULE: ./src/editors/imagemap/styles/Styles.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Styles_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction Styles_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? Styles_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : Styles_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\nfunction Styles_createSuper(Derived) { var hasNativeReflectConstruct = Styles_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction Styles_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\n\nvar Styles_Styles = /*#__PURE__*/function (_Component) {\n  inherits_default()(Styles, _Component);\n\n  var _super = Styles_createSuper(Styles);\n\n  function Styles() {\n    var _this;\n\n    classCallCheck_default()(this, Styles);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      style: {},\n      visible: false,\n      validateTitle: {\n        validateStatus: '',\n        help: ''\n      },\n      current: 'add'\n    };\n    _this.handlers = {\n      onOk: function onOk() {\n        if (_this.state.validateTitle.validateStatus === 'error') {\n          return;\n        }\n\n        if (!_this.state.style.title) {\n          _this.setState({\n            validateTitle: _this.handlers.onValid()\n          });\n\n          return;\n        }\n\n        if (_this.state.current === 'add') {\n          if (Object.keys(_this.state.style).length === 1) {\n            _this.modalRef.validateFields(function (err, values) {\n              Object.assign(_this.state.style, values);\n            });\n          }\n\n          _this.props.styles.push(_this.state.style);\n        } else {\n          _this.props.styles.splice(_this.state.index, 1, _this.state.style);\n        }\n\n        _this.setState({\n          visible: false,\n          style: {}\n        }, function () {\n          _this.props.onChangeStyles(_this.props.styles);\n        });\n      },\n      onCancel: function onCancel() {\n        _this.setState({\n          visible: false,\n          style: {},\n          validateTitle: {\n            validateStatus: '',\n            help: ''\n          }\n        });\n      },\n      onAdd: function onAdd() {\n        _this.setState({\n          visible: true,\n          style: {},\n          validateTitle: {\n            validateStatus: '',\n            help: ''\n          },\n          current: 'add'\n        });\n      },\n      onEdit: function onEdit(style, index) {\n        _this.setState({\n          visible: true,\n          style: style,\n          validateTitle: {\n            validateStatus: '',\n            help: ''\n          },\n          current: 'modify',\n          index: index\n        });\n      },\n      onDelete: function onDelete(index) {\n        _this.props.styles.splice(index, 1);\n\n        _this.props.onChangeStyles(_this.props.styles);\n      },\n      onClear: function onClear() {\n        _this.props.onChangeStyles([]);\n      },\n      onChange: function onChange(props, changedValues, allValues) {\n        var field = Object.keys(changedValues)[0];\n        var isTitle = field === 'title';\n\n        if (isTitle) {\n          _this.setState({\n            validateTitle: _this.handlers.onValid(changedValues[field])\n          });\n        }\n\n        _this.setState({\n          style: Styles_objectSpread({\n            title: _this.state.style.title\n          }, allValues)\n        });\n      },\n      onValid: function onValid(value) {\n        if (!value || !value.length) {\n          return {\n            validateStatus: 'error',\n            help: esm_i18next.t('validation.enter-property', {\n              arg: esm_i18next.t('common.title')\n            })\n          };\n        }\n\n        var exist = _this.props.styles.some(function (style) {\n          return style.title === value;\n        });\n\n        if (!exist) {\n          return {\n            validateStatus: 'success',\n            help: ''\n          };\n        }\n\n        return {\n          validateStatus: 'error',\n          help: esm_i18next.t('validation.already-property', {\n            arg: esm_i18next.t('common.title')\n          })\n        };\n      }\n    };\n    return _this;\n  }\n\n  createClass_default()(Styles, [{\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var styles = this.props.styles;\n      var _this$state = this.state,\n          visible = _this$state.visible,\n          style = _this$state.style,\n          validateTitle = _this$state.validateTitle;\n      var _this$handlers = this.handlers,\n          onOk = _this$handlers.onOk,\n          onCancel = _this$handlers.onCancel,\n          onAdd = _this$handlers.onAdd,\n          onEdit = _this$handlers.onEdit,\n          onDelete = _this$handlers.onDelete,\n          onClear = _this$handlers.onClear,\n          onChange = _this$handlers.onChange,\n          onValid = _this$handlers.onValid;\n      return /*#__PURE__*/external_react_default.a.createElement(es_form, null, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        flexDirection: \"column\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        justifyContent: \"flex-end\",\n        style: {\n          padding: 8\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        onClick: onAdd\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"plus\"\n      })), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        onClick: onClear\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"times\"\n      })), /*#__PURE__*/external_react_default.a.createElement(styles_StyleModal, {\n        ref: function ref(c) {\n          _this2.modalRef = c;\n        },\n        validateTitle: validateTitle,\n        visible: visible,\n        onOk: onOk,\n        style: style,\n        onCancel: onCancel,\n        onChange: onChange,\n        onValid: onValid\n      })), /*#__PURE__*/external_react_default.a.createElement(styles_StyleList, {\n        styles: styles,\n        onEdit: onEdit,\n        onDelete: onDelete\n      })));\n    }\n  }]);\n\n  return Styles;\n}(external_react_[\"Component\"]);\n\nStyles_Styles.propTypes = {\n  styles: prop_types_default.a.array,\n  onChangeStyles: prop_types_default.a.func\n};\nStyles_Styles.defaultProps = {\n  styles: []\n};\n/* harmony default export */ var styles_Styles = (Styles_Styles);\n// CONCATENATED MODULE: ./src/editors/imagemap/ImageMapConfigurations.js\n\n\n\n\n\n\n\n\n\nfunction ImageMapConfigurations_createSuper(Derived) { var hasNativeReflectConstruct = ImageMapConfigurations_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction ImageMapConfigurations_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\n\n\n\nvar ImageMapConfigurations_ImageMapConfigurations = /*#__PURE__*/function (_Component) {\n  inherits_default()(ImageMapConfigurations, _Component);\n\n  var _super = ImageMapConfigurations_createSuper(ImageMapConfigurations);\n\n  function ImageMapConfigurations() {\n    var _this;\n\n    classCallCheck_default()(this, ImageMapConfigurations);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      activeKey: 'map'\n    };\n    _this.handlers = {\n      onChangeTab: function onChangeTab(activeKey) {\n        _this.setState({\n          activeKey: activeKey\n        });\n      },\n      onCollapse: function onCollapse() {\n        _this.setState({\n          collapse: !_this.state.collapse\n        });\n      }\n    };\n    return _this;\n  }\n\n  createClass_default()(ImageMapConfigurations, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          onChange = _this$props.onChange,\n          selectedItem = _this$props.selectedItem,\n          canvasRef = _this$props.canvasRef,\n          animations = _this$props.animations,\n          styles = _this$props.styles,\n          dataSources = _this$props.dataSources,\n          onChangeAnimations = _this$props.onChangeAnimations,\n          onChangeStyles = _this$props.onChangeStyles,\n          onChangeDataSources = _this$props.onChangeDataSources;\n      var _this$state = this.state,\n          collapse = _this$state.collapse,\n          activeKey = _this$state.activeKey;\n      var _this$handlers = this.handlers,\n          onChangeTab = _this$handlers.onChangeTab,\n          onCollapse = _this$handlers.onCollapse;\n      var className = node_modules_classnames_default()('rde-editor-configurations', {\n        minimize: collapse\n      });\n      return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: className\n      }, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        icon: collapse ? 'angle-double-left' : 'angle-double-right',\n        onClick: onCollapse,\n        style: {\n          position: 'absolute',\n          top: 16,\n          right: 16,\n          zIndex: 1000\n        }\n      }), /*#__PURE__*/external_react_default.a.createElement(tabs_Tabs, {\n        tabPosition: \"right\",\n        style: {\n          height: '100%'\n        },\n        activeKey: activeKey,\n        onChange: onChangeTab,\n        tabBarStyle: {\n          marginTop: 60\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(tabs_Tabs.TabPane, {\n        tab: /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n          name: \"cog\"\n        }),\n        key: \"map\"\n      }, /*#__PURE__*/external_react_default.a.createElement(properties_MapProperties, {\n        onChange: onChange,\n        canvasRef: canvasRef\n      })), /*#__PURE__*/external_react_default.a.createElement(tabs_Tabs.TabPane, {\n        tab: /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n          name: \"cogs\"\n        }),\n        key: \"node\"\n      }, /*#__PURE__*/external_react_default.a.createElement(properties_NodeProperties, {\n        onChange: onChange,\n        selectedItem: selectedItem,\n        canvasRef: canvasRef\n      })), /*#__PURE__*/external_react_default.a.createElement(tabs_Tabs.TabPane, {\n        tab: /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n          name: \"vine\",\n          prefix: \"fab\"\n        }),\n        key: \"animations\"\n      }, /*#__PURE__*/external_react_default.a.createElement(animations_Animations, {\n        animations: animations,\n        onChangeAnimations: onChangeAnimations\n      })), /*#__PURE__*/external_react_default.a.createElement(tabs_Tabs.TabPane, {\n        tab: /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n          name: \"star-half-alt\"\n        }),\n        key: \"styles\"\n      }, /*#__PURE__*/external_react_default.a.createElement(styles_Styles, {\n        styles: styles,\n        onChangeStyles: onChangeStyles\n      }))));\n    }\n  }]);\n\n  return ImageMapConfigurations;\n}(external_react_[\"Component\"]);\n\nImageMapConfigurations_ImageMapConfigurations.propTypes = {\n  canvasRef: prop_types_default.a.any,\n  selectedItem: prop_types_default.a.object,\n  onChange: prop_types_default.a.func,\n  onChangeAnimations: prop_types_default.a.func,\n  onChangeStyles: prop_types_default.a.func,\n  onChangeDataSources: prop_types_default.a.func,\n  animations: prop_types_default.a.array,\n  styles: prop_types_default.a.array,\n  dataSources: prop_types_default.a.array\n};\n/* harmony default export */ var imagemap_ImageMapConfigurations = (ImageMapConfigurations_ImageMapConfigurations);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.number.to-fixed.js\nvar es_number_to_fixed = __webpack_require__(504);\n\n// CONCATENATED MODULE: ./src/editors/imagemap/ImageMapFooterToolbar.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ImageMapFooterToolbar_createSuper(Derived) { var hasNativeReflectConstruct = ImageMapFooterToolbar_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction ImageMapFooterToolbar_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar ImageMapFooterToolbar_ImageMapFooterToolbar = /*#__PURE__*/function (_Component) {\n  inherits_default()(ImageMapFooterToolbar, _Component);\n\n  var _super = ImageMapFooterToolbar_createSuper(ImageMapFooterToolbar);\n\n  function ImageMapFooterToolbar() {\n    var _this;\n\n    classCallCheck_default()(this, ImageMapFooterToolbar);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      interactionMode: 'selection'\n    };\n\n    _this.waitForCanvasRender = function (canvas) {\n      setTimeout(function () {\n        if (canvas) {\n          _this.attachEventListener(canvas);\n\n          return;\n        }\n\n        var canvasRef = _this.props.canvasRef;\n\n        _this.waitForCanvasRender(canvasRef);\n      }, 5);\n    };\n\n    _this.attachEventListener = function (canvasRef) {\n      canvasRef.canvas.wrapperEl.addEventListener('keydown', _this.events.keydown, false);\n    };\n\n    _this.detachEventListener = function (canvasRef) {\n      canvasRef.canvas.wrapperEl.removeEventListener('keydown', _this.events.keydown);\n    };\n\n    _this.handlers = {\n      selection: function selection() {\n        if (_this.props.canvasRef.handler.interactionHandler.isDrawingMode()) {\n          return;\n        }\n\n        _this.forceUpdate();\n\n        _this.props.canvasRef.handler.interactionHandler.selection();\n\n        _this.setState({\n          interactionMode: 'selection'\n        });\n      },\n      grab: function grab() {\n        if (_this.props.canvasRef.handler.interactionHandler.isDrawingMode()) {\n          return;\n        }\n\n        _this.forceUpdate();\n\n        _this.props.canvasRef.handler.interactionHandler.grab();\n\n        _this.setState({\n          interactionMode: 'grab'\n        });\n      }\n    };\n    _this.events = {\n      keydown: function keydown(e) {\n        if (_this.props.canvasRef.canvas.wrapperEl !== document.activeElement) {\n          return false;\n        }\n\n        if (e.code === code_namespaceObject.KEY_Q) {\n          _this.handlers.selection();\n        } else if (e.code === code_namespaceObject.KEY_W) {\n          _this.handlers.grab();\n        }\n      }\n    };\n    return _this;\n  }\n\n  createClass_default()(ImageMapFooterToolbar, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var canvasRef = this.props.canvasRef;\n      this.waitForCanvasRender(canvasRef);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var canvasRef = this.props.canvasRef;\n      this.detachEventListener(canvasRef);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          canvasRef = _this$props.canvasRef,\n          preview = _this$props.preview,\n          zoomRatio = _this$props.zoomRatio,\n          onChangePreview = _this$props.onChangePreview;\n      var interactionMode = this.state.interactionMode;\n      var _this$handlers = this.handlers,\n          selection = _this$handlers.selection,\n          grab = _this$handlers.grab;\n\n      if (!canvasRef) {\n        return null;\n      }\n\n      var zoomValue = parseInt((zoomRatio * 100).toFixed(2), 10);\n      return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-editor-footer-toolbar-interaction\"\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button.Group, null, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        type: interactionMode === 'selection' ? 'primary' : 'default',\n        style: {\n          borderBottomLeftRadius: '8px',\n          borderTopLeftRadius: '8px'\n        },\n        onClick: function onClick() {\n          selection();\n        },\n        icon: \"mouse-pointer\",\n        tooltipTitle: esm_i18next.t('action.selection')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        type: interactionMode === 'grab' ? 'primary' : 'default',\n        style: {\n          borderBottomRightRadius: '8px',\n          borderTopRightRadius: '8px'\n        },\n        onClick: function onClick() {\n          grab();\n        },\n        tooltipTitle: esm_i18next.t('action.grab'),\n        icon: \"hand-rock\"\n      }))), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-editor-footer-toolbar-zoom\"\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button.Group, null, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        style: {\n          borderBottomLeftRadius: '8px',\n          borderTopLeftRadius: '8px'\n        },\n        onClick: function onClick() {\n          canvasRef.handler.zoomHandler.zoomOut();\n        },\n        icon: \"search-minus\",\n        tooltipTitle: esm_i18next.t('action.zoom-out')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        onClick: function onClick() {\n          canvasRef.handler.zoomHandler.zoomOneToOne();\n        },\n        tooltipTitle: esm_i18next.t('action.one-to-one')\n      }, \"\".concat(zoomValue, \"%\")), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        onClick: function onClick() {\n          canvasRef.handler.zoomHandler.zoomToFit();\n        },\n        tooltipTitle: esm_i18next.t('action.fit'),\n        icon: \"expand\"\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        style: {\n          borderBottomRightRadius: '8px',\n          borderTopRightRadius: '8px'\n        },\n        onClick: function onClick() {\n          canvasRef.handler.zoomHandler.zoomIn();\n        },\n        icon: \"search-plus\",\n        tooltipTitle: esm_i18next.t('action.zoom-in')\n      }))), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-editor-footer-toolbar-preview\"\n      }, /*#__PURE__*/external_react_default.a.createElement(es_tooltip, {\n        title: esm_i18next.t('action.preview')\n      }, /*#__PURE__*/external_react_default.a.createElement(switch_Switch, {\n        checked: preview,\n        onChange: onChangePreview\n      }))));\n    }\n  }]);\n\n  return ImageMapFooterToolbar;\n}(external_react_[\"Component\"]);\n\nImageMapFooterToolbar_ImageMapFooterToolbar.propTypes = {\n  canvasRef: prop_types_default.a.any,\n  preview: prop_types_default.a.bool,\n  onChangePreview: prop_types_default.a.func,\n  zoomRatio: prop_types_default.a.number\n};\n/* harmony default export */ var imagemap_ImageMapFooterToolbar = (ImageMapFooterToolbar_ImageMapFooterToolbar);\n// CONCATENATED MODULE: ./src/editors/imagemap/ImageMapList.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ImageMapList_createSuper(Derived) { var hasNativeReflectConstruct = ImageMapList_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction ImageMapList_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar ImageMapList_ImageMapList = /*#__PURE__*/function (_Component) {\n  inherits_default()(ImageMapList, _Component);\n\n  var _super = ImageMapList_createSuper(ImageMapList);\n\n  function ImageMapList() {\n    var _this;\n\n    classCallCheck_default()(this, ImageMapList);\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 = _super.call.apply(_super, [this].concat(args));\n\n    _this.renderActions = function () {\n      var _canvasRef$handler;\n\n      var canvasRef = _this.props.canvasRef;\n      var idCropping = canvasRef ? ((_canvasRef$handler = canvasRef.handler) === null || _canvasRef$handler === void 0 ? void 0 : _canvasRef$handler.interactionMode) === 'crop' : false;\n      return /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        className: \"rde-canvas-list-actions\",\n        flex: \"0 1 auto\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, null, /*#__PURE__*/external_react_default.a.createElement(es_input.Search, {\n        placeholder: esm_i18next.t('placeholder.search-node')\n      })), /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        justifyContent: \"space-between\",\n        alignItems: \"center\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        flex: \"1\",\n        justifyContent: \"center\"\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        style: {\n          width: '100%',\n          height: 30\n        },\n        disabled: idCropping,\n        onClick: function onClick(e) {\n          return canvasRef.handler.sendBackwards();\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"arrow-up\"\n      }))), /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        flex: \"1\",\n        justifyContent: \"center\"\n      }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn\",\n        style: {\n          width: '100%',\n          height: 30\n        },\n        disabled: idCropping,\n        onClick: function onClick(e) {\n          return canvasRef.handler.bringForward();\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"arrow-down\"\n      })))));\n    };\n\n    _this.renderItem = function () {\n      var _canvasRef$handler2;\n\n      var _this$props = _this.props,\n          canvasRef = _this$props.canvasRef,\n          selectedItem = _this$props.selectedItem;\n      var idCropping = canvasRef ? ((_canvasRef$handler2 = canvasRef.handler) === null || _canvasRef$handler2 === void 0 ? void 0 : _canvasRef$handler2.interactionMode) === 'crop' : false;\n      return canvasRef ? canvasRef.canvas.getObjects().filter(function (obj) {\n        if (obj.id === 'workarea') {\n          return false;\n        }\n\n        if (obj.id) {\n          return true;\n        }\n\n        return false;\n      }).map(function (obj) {\n        var icon;\n        var title = obj.name || obj.type;\n        var prefix = 'fas';\n\n        if (obj.type === 'i-text') {\n          icon = 'map-marker-alt';\n        } else if (obj.type === 'textbox') {\n          icon = 'font';\n        } else if (obj.type === 'image') {\n          icon = 'image';\n        } else if (obj.type === 'triangle') {\n          icon = 'image';\n        } else if (obj.type === 'rect') {\n          icon = 'image';\n        } else if (obj.type === 'circle') {\n          icon = 'circle';\n        } else if (obj.type === 'polygon') {\n          icon = 'draw-polygon';\n        } else if (obj.type === 'line') {\n          icon = 'image';\n        } else if (obj.type === 'element') {\n          icon = 'html5';\n          prefix = 'fab';\n        } else if (obj.type === 'iframe') {\n          icon = 'window-maximize';\n        } else if (obj.type === 'video') {\n          icon = 'video';\n        } else if (obj.type === 'svg') {\n          icon = 'bezier-curve';\n        } else {\n          icon = 'image';\n          title = 'Default';\n        }\n\n        var className = 'rde-canvas-list-item';\n\n        if (selectedItem && selectedItem.id === obj.id) {\n          className += ' selected-item';\n        }\n\n        return /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n          key: obj.id,\n          className: className,\n          flex: \"1\",\n          style: {\n            cursor: 'pointer'\n          },\n          onClick: function onClick() {\n            return canvasRef.handler.select(obj);\n          },\n          onMouseDown: function onMouseDown(e) {\n            return e.preventDefault();\n          },\n          onDoubleClick: function onDoubleClick(e) {\n            canvasRef.handler.zoomHandler.zoomToCenter();\n          }\n        }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n          alignItems: \"center\"\n        }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n          className: \"rde-canvas-list-item-icon\",\n          name: icon,\n          size: 1.5,\n          style: {\n            width: 32\n          },\n          prefix: prefix\n        }), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n          className: \"rde-canvas-list-item-text\"\n        }, title), /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n          className: \"rde-canvas-list-item-actions\",\n          flex: \"1\",\n          justifyContent: \"flex-end\"\n        }, /*#__PURE__*/external_react_default.a.createElement(es_button, {\n          className: \"rde-action-btn\",\n          shape: \"circle\",\n          disabled: idCropping,\n          onClick: function onClick(e) {\n            e.stopPropagation();\n            canvasRef.handler.duplicateById(obj.id);\n          }\n        }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n          name: \"clone\"\n        })), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n          className: \"rde-action-btn\",\n          shape: \"circle\",\n          disabled: idCropping,\n          onClick: function onClick(e) {\n            e.stopPropagation();\n            canvasRef.handler.removeById(obj.id);\n          }\n        }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n          name: \"trash\"\n        })))));\n      }) : null;\n    };\n\n    return _this;\n  }\n\n  createClass_default()(ImageMapList, [{\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        style: {\n          height: '100%'\n        },\n        flexDirection: \"column\"\n      }, this.renderActions(), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-canvas-list-items\"\n      }, this.renderItem()));\n    }\n  }]);\n\n  return ImageMapList;\n}(external_react_[\"Component\"]);\n\nImageMapList_ImageMapList.propTypes = {\n  canvasRef: prop_types_default.a.any,\n  selectedItem: prop_types_default.a.object\n};\n/* harmony default export */ var imagemap_ImageMapList = (ImageMapList_ImageMapList);\n// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-json.js\nvar mode_json = __webpack_require__(1632);\n\n// CONCATENATED MODULE: ./src/components/common/InputJson.js\n\n\n\n\n\n\n\n\n\n\n\nfunction InputJson_createSuper(Derived) { var hasNativeReflectConstruct = InputJson_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction InputJson_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar InputJson_InputJson = /*#__PURE__*/function (_Component) {\n  inherits_default()(InputJson, _Component);\n\n  var _super = InputJson_createSuper(InputJson);\n\n  function InputJson() {\n    var _this;\n\n    classCallCheck_default()(this, InputJson);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      text: _this.props.value || ''\n    };\n\n    _this.onChange = function (value, e) {\n      if (_this.debouncedValidate) {\n        _this.debouncedValidate();\n      }\n\n      _this.setState({\n        text: value\n      });\n    };\n\n    _this.onValidate = function (annotations) {\n      if (annotations.length) {\n        var errors = annotations.filter(function (annotation) {\n          return annotation.type === 'error';\n        }).map(function (annotation) {\n          return new Error(\"\".concat(annotation.row, \":\").concat(annotation.column, \" \").concat(annotation.text, \" error\"));\n        });\n\n        _this.debouncedValidate(errors);\n      }\n    };\n\n    return _this;\n  }\n\n  createClass_default()(InputJson, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      this.debouncedValidate = debounce_default()(function (errors) {\n        var onValidate = _this2.props.onValidate;\n\n        if (onValidate) {\n          onValidate(errors);\n        }\n\n        var onChange = _this2.props.onChange;\n\n        if (onChange) {\n          onChange(_this2.state.text);\n        }\n      }, 200);\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      if (nextProps.value !== this.props.value) {\n        this.setState({\n          text: nextProps.value\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var _this$props = this.props,\n          defaultValue = _this$props.defaultValue,\n          width = _this$props.width,\n          height = _this$props.height,\n          disabled = _this$props.disabled;\n      var text = this.state.text;\n      return /*#__PURE__*/external_react_default.a.createElement(react_ace_lib_default.a, {\n        ref: function ref(c) {\n          _this3.aceRef = c;\n        },\n        mode: \"json\",\n        theme: \"github\",\n        width: width,\n        height: height,\n        defaultValue: defaultValue || text,\n        value: text,\n        editorProps: {\n          $blockScrolling: true\n        },\n        onChange: this.onChange,\n        onValidate: this.onValidate,\n        readOnly: disabled\n      });\n    }\n  }]);\n\n  return InputJson;\n}(external_react_[\"Component\"]);\n\nInputJson_InputJson.propTypes = {\n  defaultValue: prop_types_default.a.string,\n  value: prop_types_default.a.string,\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  height: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  onChange: prop_types_default.a.func,\n  onValidate: prop_types_default.a.func,\n  disabled: prop_types_default.a.bool\n};\nInputJson_InputJson.defaultProps = {\n  width: '100%',\n  height: '200px',\n  disabled: false\n};\n/* harmony default export */ var common_InputJson = (InputJson_InputJson);\n// CONCATENATED MODULE: ./src/components/common/InputScript.js\n\n\n\n\n\n\n\n\n\n\n\nfunction InputScript_createSuper(Derived) { var hasNativeReflectConstruct = InputScript_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction InputScript_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar InputScript_InputScript = /*#__PURE__*/function (_Component) {\n  inherits_default()(InputScript, _Component);\n\n  var _super = InputScript_createSuper(InputScript);\n\n  function InputScript() {\n    var _this;\n\n    classCallCheck_default()(this, InputScript);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      text: _this.props.value || ''\n    };\n\n    _this.onChange = function (value, e) {\n      if (_this.debouncedValidate) {\n        _this.debouncedValidate();\n      }\n\n      _this.setState({\n        text: value\n      });\n    };\n\n    _this.onValidate = function (annotations) {\n      if (annotations.length) {\n        var errors = annotations.filter(function (annotation) {\n          return annotation.type === 'error';\n        }).map(function (annotation) {\n          return new Error(\"\".concat(annotation.row, \":\").concat(annotation.column, \" \").concat(annotation.text, \" error\"));\n        });\n\n        _this.debouncedValidate(errors);\n      }\n    };\n\n    return _this;\n  }\n\n  createClass_default()(InputScript, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      this.debouncedValidate = debounce_default()(function (errors) {\n        var onValidate = _this2.props.onValidate;\n\n        if (onValidate) {\n          onValidate(errors);\n        }\n\n        var onChange = _this2.props.onChange;\n\n        if (onChange) {\n          onChange(_this2.state.text);\n        }\n      }, 200);\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      if (nextProps.value !== this.props.value) {\n        this.setState({\n          text: nextProps.value\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var _this$props = this.props,\n          defaultValue = _this$props.defaultValue,\n          width = _this$props.width,\n          height = _this$props.height,\n          dsiabled = _this$props.dsiabled;\n      var text = this.state.text;\n      return /*#__PURE__*/external_react_default.a.createElement(react_ace_lib_default.a, {\n        ref: function ref(c) {\n          _this3.aceRef = c;\n        },\n        mode: \"javascript\",\n        theme: \"github\",\n        width: width,\n        height: height,\n        defaultValue: defaultValue || text,\n        value: text,\n        editorProps: {\n          $blockScrolling: true\n        },\n        onChange: this.onChange,\n        onValidate: this.onValidate,\n        readOnly: dsiabled\n      });\n    }\n  }]);\n\n  return InputScript;\n}(external_react_[\"Component\"]);\n\nInputScript_InputScript.propTypes = {\n  defaultValue: prop_types_default.a.string,\n  value: prop_types_default.a.string,\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  height: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  onChange: prop_types_default.a.func,\n  onValidate: prop_types_default.a.func,\n  disabled: prop_types_default.a.bool\n};\nInputScript_InputScript.defaultProps = {\n  width: '100%',\n  height: '200px',\n  disabled: false\n};\n/* harmony default export */ var common_InputScript = (InputScript_InputScript);\n// EXTERNAL MODULE: ./node_modules/ace-builds/src-noconflict/mode-handlebars.js\nvar mode_handlebars = __webpack_require__(1633);\n\n// CONCATENATED MODULE: ./src/components/common/InputTemplate.js\n\n\n\n\n\n\n\n\n\nfunction InputTemplate_createSuper(Derived) { var hasNativeReflectConstruct = InputTemplate_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction InputTemplate_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\nvar InputTemplate_InputTemplate = /*#__PURE__*/function (_Component) {\n  inherits_default()(InputTemplate, _Component);\n\n  var _super = InputTemplate_createSuper(InputTemplate);\n\n  function InputTemplate() {\n    var _this;\n\n    classCallCheck_default()(this, InputTemplate);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      text: _this.props.value || ''\n    };\n\n    _this.onChange = function (value) {\n      var onChange = _this.props.onChange;\n\n      if (onChange) {\n        onChange(value);\n      }\n\n      _this.setState({\n        text: value\n      });\n    };\n\n    return _this;\n  }\n\n  createClass_default()(InputTemplate, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      if (!this.props.newLineMode) {\n        this.aceRef.editor.keyBinding.addKeyboardHandler(function (data, hashId, keyString, keyCode, e) {\n          if (keyCode === 13) {\n            return {\n              command: 'null'\n            }; // do nothing\n          }\n        });\n      }\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      this.setState({\n        text: nextProps.value\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          defaultValue = _this$props.defaultValue,\n          width = _this$props.width,\n          height = _this$props.height,\n          showLineNumbers = _this$props.showLineNumbers,\n          newLineMode = _this$props.newLineMode,\n          disabled = _this$props.disabled;\n      var text = this.state.text;\n      return /*#__PURE__*/external_react_default.a.createElement(react_ace_lib_default.a, {\n        ref: function ref(c) {\n          _this2.aceRef = c;\n        },\n        mode: \"handlebars\",\n        theme: \"github\",\n        width: width,\n        height: height,\n        defaultValue: defaultValue || text,\n        value: text,\n        editorProps: {\n          $blockScrolling: true\n        },\n        onChange: this.onChange,\n        onValidate: this.onValidate,\n        maxLines: !newLineMode ? 1 : null,\n        setOptions: {\n          showLineNumbers: showLineNumbers,\n          newLineMode: newLineMode,\n          readOnly: disabled\n        }\n      });\n    }\n  }]);\n\n  return InputTemplate;\n}(external_react_[\"Component\"]);\n\nInputTemplate_InputTemplate.propTypes = {\n  defaultValue: prop_types_default.a.string,\n  value: prop_types_default.a.string,\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  height: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  showLineNumbers: prop_types_default.a.bool,\n  newLineMode: prop_types_default.a.bool,\n  disabled: prop_types_default.a.bool\n};\nInputTemplate_InputTemplate.defaultProps = {\n  width: '100%',\n  height: '200px',\n  showLineNumbers: true,\n  newLineMode: true,\n  disabled: false\n};\n/* harmony default export */ var common_InputTemplate = (InputTemplate_InputTemplate);\n// CONCATENATED MODULE: ./src/components/common/InputHtml.js\n\n\n\n\n\n\n\n\n\n\n\nfunction InputHtml_createSuper(Derived) { var hasNativeReflectConstruct = InputHtml_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction InputHtml_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar InputHtml_InputJson = /*#__PURE__*/function (_Component) {\n  inherits_default()(InputJson, _Component);\n\n  var _super = InputHtml_createSuper(InputJson);\n\n  function InputJson() {\n    var _this;\n\n    classCallCheck_default()(this, InputJson);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      text: _this.props.value || ''\n    };\n\n    _this.onChange = function (value, e) {\n      if (_this.debouncedValidate) {\n        _this.debouncedValidate();\n      }\n\n      _this.setState({\n        text: value\n      });\n    };\n\n    _this.onValidate = function (annotations) {\n      if (annotations.length) {\n        var errors = annotations.filter(function (annotation) {\n          return annotation.type === 'error';\n        }).map(function (annotation) {\n          return new Error(\"\".concat(annotation.row, \":\").concat(annotation.column, \" \").concat(annotation.text, \" error\"));\n        });\n\n        _this.debouncedValidate(errors);\n      }\n    };\n\n    return _this;\n  }\n\n  createClass_default()(InputJson, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      this.debouncedValidate = debounce_default()(function (errors) {\n        var onValidate = _this2.props.onValidate;\n\n        if (onValidate) {\n          onValidate(errors);\n        }\n\n        var onChange = _this2.props.onChange;\n\n        if (onChange) {\n          onChange(_this2.state.text);\n        }\n      }, 200);\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      if (nextProps.value !== this.props.value) {\n        this.setState({\n          text: nextProps.value\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var _this$props = this.props,\n          defaultValue = _this$props.defaultValue,\n          width = _this$props.width,\n          height = _this$props.height,\n          disabled = _this$props.disabled;\n      var text = this.state.text;\n      return /*#__PURE__*/external_react_default.a.createElement(react_ace_lib_default.a, {\n        ref: function ref(c) {\n          _this3.aceRef = c;\n        },\n        mode: \"html\",\n        theme: \"github\",\n        width: width,\n        height: height,\n        defaultValue: defaultValue || text,\n        value: text,\n        editorProps: {\n          $blockScrolling: true\n        },\n        onChange: this.onChange,\n        onValidate: this.onValidate,\n        readOnly: disabled\n      });\n    }\n  }]);\n\n  return InputJson;\n}(external_react_[\"Component\"]);\n\nInputHtml_InputJson.propTypes = {\n  defaultValue: prop_types_default.a.string,\n  value: prop_types_default.a.string,\n  width: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  height: prop_types_default.a.oneOfType([prop_types_default.a.string, prop_types_default.a.number]),\n  onChange: prop_types_default.a.func,\n  onValidate: prop_types_default.a.func,\n  disabled: prop_types_default.a.bool\n};\nInputHtml_InputJson.defaultProps = {\n  width: '100%',\n  height: '200px',\n  disabled: false\n};\n/* harmony default export */ var InputHtml = (InputHtml_InputJson);\n// CONCATENATED MODULE: ./src/components/common/SVGModal.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SVGModal_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction SVGModal_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? SVGModal_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : SVGModal_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\nfunction SVGModal_createSuper(Derived) { var hasNativeReflectConstruct = SVGModal_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction SVGModal_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar SVGModal_SVGModal = /*#__PURE__*/function (_Component) {\n  inherits_default()(SVGModal, _Component);\n\n  var _super = SVGModal_createSuper(SVGModal);\n\n  function SVGModal() {\n    var _this;\n\n    classCallCheck_default()(this, SVGModal);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      loadType: 'file',\n      visible: false\n    };\n\n    _this.handleChangeSvgType = function (e) {\n      _this.props.form.resetFields();\n\n      _this.setState({\n        loadType: e.target.value\n      });\n    };\n\n    _this.handleOk = function () {\n      var _this$props = _this.props,\n          form = _this$props.form,\n          onOk = _this$props.onOk;\n      form.validateFields(function (err, values) {\n        if (err) {\n          return;\n        }\n\n        if (values.svg instanceof Blob) {\n          var reader = new FileReader();\n          reader.readAsDataURL(values.svg);\n\n          reader.onload = function () {\n            onOk(SVGModal_objectSpread(SVGModal_objectSpread({}, values), {}, {\n              svg: reader.result\n            }));\n          };\n        } else {\n          onOk(values);\n        }\n      });\n    };\n\n    _this.handleCancel = function () {\n      var onCancel = _this.props.onCancel;\n\n      if (onCancel) {\n        onCancel();\n        return;\n      }\n\n      _this.setState({\n        visible: false\n      });\n    };\n\n    return _this;\n  }\n\n  createClass_default()(SVGModal, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      if (nextProps.visible !== this.props.visible) {\n        this.setState({\n          visible: nextProps.visible\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var form = this.props.form;\n      var _this$state = this.state,\n          loadType = _this$state.loadType,\n          visible = _this$state.visible;\n      return /*#__PURE__*/external_react_default.a.createElement(modal, {\n        title: esm_i18next.t('imagemap.svg.add-svg'),\n        closable: true,\n        onCancel: this.handleCancel,\n        onOk: this.handleOk,\n        visible: visible\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form, {\n        colon: false\n      }, /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: esm_i18next.t('common.type')\n      }, form.getFieldDecorator('loadType', {\n        initialValue: loadType\n      })( /*#__PURE__*/external_react_default.a.createElement(es_radio.Group, {\n        onChange: this.handleChangeSvgType\n      }, /*#__PURE__*/external_react_default.a.createElement(es_radio.Button, {\n        value: \"file\"\n      }, esm_i18next.t('common.file')), /*#__PURE__*/external_react_default.a.createElement(es_radio.Button, {\n        value: \"svg\"\n      }, esm_i18next.t('common.svg'))))), /*#__PURE__*/external_react_default.a.createElement(es_form.Item, {\n        label: loadType === 'svg' ? esm_i18next.t('common.svg') : esm_i18next.t('common.file')\n      }, form.getFieldDecorator('svg', {\n        rules: [{\n          required: true,\n          message: esm_i18next.t('validation.enter-property', {\n            arg: loadType === 'svg' ? esm_i18next.t('common.svg') : esm_i18next.t('common.file')\n          })\n        }]\n      })(loadType === 'svg' ? /*#__PURE__*/external_react_default.a.createElement(InputHtml, null) : /*#__PURE__*/external_react_default.a.createElement(common_FileUpload, {\n        accept: \".svg\"\n      })))));\n    }\n  }]);\n\n  return SVGModal;\n}(external_react_[\"Component\"]);\n\nSVGModal_SVGModal.propTypes = {\n  onOk: prop_types_default.a.func.isRequired,\n  onCancel: prop_types_default.a.func,\n  visible: prop_types_default.a.bool.isRequired\n};\n/* harmony default export */ var common_SVGModal = (es_form.create()(SVGModal_SVGModal));\n// CONCATENATED MODULE: ./src/components/common/index.js\n\n\n\n\n\n\n\n\n\n\n\n// CONCATENATED MODULE: ./src/editors/imagemap/ImageMapHeaderToolbar.js\n\n\n\n\n\n\n\n\nfunction ImageMapHeaderToolbar_createSuper(Derived) { var hasNativeReflectConstruct = ImageMapHeaderToolbar_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction ImageMapHeaderToolbar_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\nvar ImageMapHeaderToolbar_ImageMapHeaderToolbar = /*#__PURE__*/function (_Component) {\n  inherits_default()(ImageMapHeaderToolbar, _Component);\n\n  var _super = ImageMapHeaderToolbar_createSuper(ImageMapHeaderToolbar);\n\n  function ImageMapHeaderToolbar() {\n    classCallCheck_default()(this, ImageMapHeaderToolbar);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(ImageMapHeaderToolbar, [{\n    key: \"render\",\n    value: function render() {\n      var _canvasRef$handler, _canvasRef$handler11, _canvasRef$handler13, _canvasRef$handler15, _canvasRef$handler20, _canvasRef$handler22;\n\n      var _this$props = this.props,\n          canvasRef = _this$props.canvasRef,\n          selectedItem = _this$props.selectedItem;\n      var isCropping = canvasRef ? ((_canvasRef$handler = canvasRef.handler) === null || _canvasRef$handler === void 0 ? void 0 : _canvasRef$handler.interactionMode) === 'crop' : false;\n      return /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        className: \"rde-editor-header-toolbar-container\",\n        flex: \"1\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        className: \"rde-canvas-toolbar rde-canvas-toolbar-list\"\n      }, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        icon: \"layer-group\",\n        tooltipTitle: esm_i18next.t('action.canvas-list')\n      }), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-canvas-list\"\n      }, /*#__PURE__*/external_react_default.a.createElement(imagemap_ImageMapList, {\n        canvasRef: canvasRef,\n        selectedItem: selectedItem\n      }))), /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        className: \"rde-canvas-toolbar rde-canvas-toolbar-alignment\"\n      }, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler2;\n\n          return (_canvasRef$handler2 = canvasRef.handler) === null || _canvasRef$handler2 === void 0 ? void 0 : _canvasRef$handler2.bringForward();\n        },\n        icon: \"angle-up\",\n        tooltipTitle: esm_i18next.t('action.bring-forward')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler3;\n\n          return (_canvasRef$handler3 = canvasRef.handler) === null || _canvasRef$handler3 === void 0 ? void 0 : _canvasRef$handler3.sendBackwards();\n        },\n        icon: \"angle-down\",\n        tooltipTitle: esm_i18next.t('action.send-backwards')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler4;\n\n          return (_canvasRef$handler4 = canvasRef.handler) === null || _canvasRef$handler4 === void 0 ? void 0 : _canvasRef$handler4.bringToFront();\n        },\n        icon: \"angle-double-up\",\n        tooltipTitle: esm_i18next.t('action.bring-to-front')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler5;\n\n          return (_canvasRef$handler5 = canvasRef.handler) === null || _canvasRef$handler5 === void 0 ? void 0 : _canvasRef$handler5.sendToBack();\n        },\n        icon: \"angle-double-down\",\n        tooltipTitle: esm_i18next.t('action.send-to-back')\n      })), /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        className: \"rde-canvas-toolbar rde-canvas-toolbar-alignment\"\n      }, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler6;\n\n          return (_canvasRef$handler6 = canvasRef.handler) === null || _canvasRef$handler6 === void 0 ? void 0 : _canvasRef$handler6.alignmentHandler.left();\n        },\n        icon: \"align-left\",\n        tooltipTitle: esm_i18next.t('action.align-left')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler7;\n\n          return (_canvasRef$handler7 = canvasRef.handler) === null || _canvasRef$handler7 === void 0 ? void 0 : _canvasRef$handler7.alignmentHandler.center();\n        },\n        icon: \"align-center\",\n        tooltipTitle: esm_i18next.t('action.align-center')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler8;\n\n          return (_canvasRef$handler8 = canvasRef.handler) === null || _canvasRef$handler8 === void 0 ? void 0 : _canvasRef$handler8.alignmentHandler.right();\n        },\n        icon: \"align-right\",\n        tooltipTitle: esm_i18next.t('action.align-right')\n      })), /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        className: \"rde-canvas-toolbar rde-canvas-toolbar-group\"\n      }, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler9;\n\n          return (_canvasRef$handler9 = canvasRef.handler) === null || _canvasRef$handler9 === void 0 ? void 0 : _canvasRef$handler9.toGroup();\n        },\n        icon: \"object-group\",\n        tooltipTitle: esm_i18next.t('action.object-group')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler10;\n\n          return (_canvasRef$handler10 = canvasRef.handler) === null || _canvasRef$handler10 === void 0 ? void 0 : _canvasRef$handler10.toActiveSelection();\n        },\n        icon: \"object-ungroup\",\n        tooltipTitle: esm_i18next.t('action.object-ungroup')\n      })), /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        className: \"rde-canvas-toolbar rde-canvas-toolbar-crop\"\n      }, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: canvasRef ? !((_canvasRef$handler11 = canvasRef.handler) !== null && _canvasRef$handler11 !== void 0 && _canvasRef$handler11.cropHandler.validType()) : true,\n        onClick: function onClick() {\n          var _canvasRef$handler12;\n\n          return (_canvasRef$handler12 = canvasRef.handler) === null || _canvasRef$handler12 === void 0 ? void 0 : _canvasRef$handler12.cropHandler.start();\n        },\n        icon: \"crop\",\n        tooltipTitle: esm_i18next.t('action.crop')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: canvasRef ? !((_canvasRef$handler13 = canvasRef.handler) !== null && _canvasRef$handler13 !== void 0 && _canvasRef$handler13.cropHandler.cropRect) : true,\n        onClick: function onClick() {\n          var _canvasRef$handler14;\n\n          return (_canvasRef$handler14 = canvasRef.handler) === null || _canvasRef$handler14 === void 0 ? void 0 : _canvasRef$handler14.cropHandler.finish();\n        },\n        icon: \"check\",\n        tooltipTitle: esm_i18next.t('action.crop-save')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: canvasRef ? !((_canvasRef$handler15 = canvasRef.handler) !== null && _canvasRef$handler15 !== void 0 && _canvasRef$handler15.cropHandler.cropRect) : true,\n        onClick: function onClick() {\n          var _canvasRef$handler16;\n\n          return (_canvasRef$handler16 = canvasRef.handler) === null || _canvasRef$handler16 === void 0 ? void 0 : _canvasRef$handler16.cropHandler.cancel();\n        },\n        icon: \"times\",\n        tooltipTitle: esm_i18next.t('action.crop-cancel')\n      })), /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        className: \"rde-canvas-toolbar rde-canvas-toolbar-operation\"\n      }, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler17;\n\n          return (_canvasRef$handler17 = canvasRef.handler) === null || _canvasRef$handler17 === void 0 ? void 0 : _canvasRef$handler17.saveImage();\n        },\n        icon: \"image\",\n        tooltipTitle: esm_i18next.t('action.image-save')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler18;\n\n          return (_canvasRef$handler18 = canvasRef.handler) === null || _canvasRef$handler18 === void 0 ? void 0 : _canvasRef$handler18.duplicate();\n        },\n        icon: \"clone\",\n        tooltipTitle: esm_i18next.t('action.clone')\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        disabled: isCropping,\n        onClick: function onClick() {\n          var _canvasRef$handler19;\n\n          return (_canvasRef$handler19 = canvasRef.handler) === null || _canvasRef$handler19 === void 0 ? void 0 : _canvasRef$handler19.remove();\n        },\n        icon: \"trash\",\n        tooltipTitle: esm_i18next.t('action.delete')\n      })), /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        className: \"rde-canvas-toolbar rde-canvas-toolbar-history\"\n      }, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        disabled: isCropping || canvasRef && !((_canvasRef$handler20 = canvasRef.handler) !== null && _canvasRef$handler20 !== void 0 && _canvasRef$handler20.transactionHandler.undos.length),\n        onClick: function onClick() {\n          var _canvasRef$handler21;\n\n          return (_canvasRef$handler21 = canvasRef.handler) === null || _canvasRef$handler21 === void 0 ? void 0 : _canvasRef$handler21.transactionHandler.undo();\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"undo-alt\",\n        style: {\n          marginRight: 8\n        }\n      }), \"Undo\"), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        disabled: isCropping || canvasRef && !((_canvasRef$handler22 = canvasRef.handler) !== null && _canvasRef$handler22 !== void 0 && _canvasRef$handler22.transactionHandler.redos.length),\n        onClick: function onClick() {\n          var _canvasRef$handler23;\n\n          return (_canvasRef$handler23 = canvasRef.handler) === null || _canvasRef$handler23 === void 0 ? void 0 : _canvasRef$handler23.transactionHandler.redo();\n        }\n      }, \"Redo\", /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"redo-alt\",\n        style: {\n          marginLeft: 8\n        }\n      }))));\n    }\n  }]);\n\n  return ImageMapHeaderToolbar;\n}(external_react_[\"Component\"]);\n\nImageMapHeaderToolbar_ImageMapHeaderToolbar.propTypes = {\n  canvasRef: prop_types_default.a.any,\n  selectedItem: prop_types_default.a.object\n};\n/* harmony default export */ var imagemap_ImageMapHeaderToolbar = (ImageMapHeaderToolbar_ImageMapHeaderToolbar);\n// CONCATENATED MODULE: ./node_modules/antd/es/message/index.js\n/* global Promise */\n\n\n\nvar message_defaultDuration = 3;\nvar message_defaultTop;\nvar messageInstance;\nvar message_key = 1;\nvar message_prefixCls = 'ant-message';\nvar message_transitionName = 'move-up';\nvar message_getContainer;\nvar maxCount;\n\nfunction getMessageInstance(callback) {\n  if (messageInstance) {\n    callback(messageInstance);\n    return;\n  }\n\n  rc_notification_es.newInstance({\n    prefixCls: message_prefixCls,\n    transitionName: message_transitionName,\n    style: {\n      top: message_defaultTop\n    },\n    getContainer: message_getContainer,\n    maxCount: maxCount\n  }, function (instance) {\n    if (messageInstance) {\n      callback(messageInstance);\n      return;\n    }\n\n    messageInstance = instance;\n    callback(instance);\n  });\n}\n\nfunction message_notice(args) {\n  var duration = args.duration !== undefined ? args.duration : message_defaultDuration;\n  var iconType = {\n    info: 'info-circle',\n    success: 'check-circle',\n    error: 'close-circle',\n    warning: 'exclamation-circle',\n    loading: 'loading'\n  }[args.type];\n  var target = message_key++;\n  var closePromise = new Promise(function (resolve) {\n    var callback = function callback() {\n      if (typeof args.onClose === 'function') {\n        args.onClose();\n      }\n\n      return resolve(true);\n    };\n\n    getMessageInstance(function (instance) {\n      var iconNode = external_react_[\"createElement\"](es_icon, {\n        type: iconType,\n        theme: iconType === 'loading' ? 'outlined' : 'filled'\n      });\n      instance.notice({\n        key: target,\n        duration: duration,\n        style: {},\n        content: external_react_[\"createElement\"](\"div\", {\n          className: \"\".concat(message_prefixCls, \"-custom-content\").concat(args.type ? \" \".concat(message_prefixCls, \"-\").concat(args.type) : '')\n        }, args.icon ? args.icon : iconType ? iconNode : '', external_react_[\"createElement\"](\"span\", null, args.content)),\n        onClose: callback\n      });\n    });\n  });\n\n  var result = function result() {\n    if (messageInstance) {\n      messageInstance.removeNotice(target);\n    }\n  };\n\n  result.then = function (filled, rejected) {\n    return closePromise.then(filled, rejected);\n  };\n\n  result.promise = closePromise;\n  return result;\n}\n\nvar message_api = {\n  open: message_notice,\n  config: function config(options) {\n    if (options.top !== undefined) {\n      message_defaultTop = options.top;\n      messageInstance = null; // delete messageInstance for new defaultTop\n    }\n\n    if (options.duration !== undefined) {\n      message_defaultDuration = options.duration;\n    }\n\n    if (options.prefixCls !== undefined) {\n      message_prefixCls = options.prefixCls;\n    }\n\n    if (options.getContainer !== undefined) {\n      message_getContainer = options.getContainer;\n    }\n\n    if (options.transitionName !== undefined) {\n      message_transitionName = options.transitionName;\n      messageInstance = null; // delete messageInstance for new transitionName\n    }\n\n    if (options.maxCount !== undefined) {\n      maxCount = options.maxCount;\n      messageInstance = null;\n    }\n  },\n  destroy: function destroy() {\n    if (messageInstance) {\n      messageInstance.destroy();\n      messageInstance = null;\n    }\n  }\n};\n['success', 'info', 'warning', 'error', 'loading'].forEach(function (type) {\n  message_api[type] = function (content, duration, onClose) {\n    if (typeof duration === 'function') {\n      onClose = duration;\n      duration = undefined;\n    }\n\n    return message_api.open({\n      content: content,\n      duration: duration,\n      type: type,\n      onClose: onClose\n    });\n  };\n});\nmessage_api.warn = message_api.warning;\n/* harmony default export */ var es_message = (message_api);\n// CONCATENATED MODULE: ./src/editors/imagemap/ImageMapItems.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ImageMapItems_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction ImageMapItems_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ImageMapItems_ownKeys(Object(source), !0).forEach(function (key) { helpers_defineProperty_default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ImageMapItems_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ImageMapItems_createSuper(Derived) { var hasNativeReflectConstruct = ImageMapItems_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction ImageMapItems_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\n\n\n\nes_notification.config({\n  top: 80,\n  duration: 2\n});\n\nvar ImageMapItems_ImageMapItems = /*#__PURE__*/function (_Component) {\n  inherits_default()(ImageMapItems, _Component);\n\n  var _super = ImageMapItems_createSuper(ImageMapItems);\n\n  function ImageMapItems() {\n    var _this;\n\n    classCallCheck_default()(this, ImageMapItems);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      activeKey: [],\n      collapse: false,\n      textSearch: '',\n      descriptors: {},\n      filteredDescriptors: [],\n      svgModalVisible: false\n    };\n\n    _this.waitForCanvasRender = function (canvas) {\n      setTimeout(function () {\n        if (canvas) {\n          _this.attachEventListener(canvas);\n\n          return;\n        }\n\n        var canvasRef = _this.props.canvasRef;\n\n        _this.waitForCanvasRender(canvasRef);\n      }, 5);\n    };\n\n    _this.attachEventListener = function (canvas) {\n      canvas.canvas.wrapperEl.addEventListener('dragenter', _this.events.onDragEnter, false);\n      canvas.canvas.wrapperEl.addEventListener('dragover', _this.events.onDragOver, false);\n      canvas.canvas.wrapperEl.addEventListener('dragleave', _this.events.onDragLeave, false);\n      canvas.canvas.wrapperEl.addEventListener('drop', _this.events.onDrop, false);\n    };\n\n    _this.detachEventListener = function (canvas) {\n      canvas.canvas.wrapperEl.removeEventListener('dragenter', _this.events.onDragEnter);\n      canvas.canvas.wrapperEl.removeEventListener('dragover', _this.events.onDragOver);\n      canvas.canvas.wrapperEl.removeEventListener('dragleave', _this.events.onDragLeave);\n      canvas.canvas.wrapperEl.removeEventListener('drop', _this.events.onDrop);\n    };\n\n    _this.handlers = {\n      onAddItem: function onAddItem(item, centered) {\n        var canvasRef = _this.props.canvasRef;\n\n        if (canvasRef.handler.interactionMode === 'polygon') {\n          es_message.info('Already drawing');\n          return;\n        }\n\n        var id = ulid();\n        var option = Object.assign({}, item.option, {\n          id: id\n        });\n\n        if (item.option.superType === 'svg' && item.type === 'default') {\n          _this.handlers.onSVGModalVisible(item.option);\n\n          return;\n        }\n\n        canvasRef.handler.add(option, centered);\n      },\n      onAddSVG: function onAddSVG(option, centered) {\n        var canvasRef = _this.props.canvasRef;\n        canvasRef.handler.add(ImageMapItems_objectSpread(ImageMapItems_objectSpread({}, option), {}, {\n          type: 'svg',\n          superType: 'svg',\n          id: ulid(),\n          name: 'New SVG'\n        }), centered);\n\n        _this.handlers.onSVGModalVisible();\n      },\n      onDrawingItem: function onDrawingItem(item) {\n        var canvasRef = _this.props.canvasRef;\n\n        if (canvasRef.handler.interactionMode === 'polygon') {\n          es_message.info('Already drawing');\n          return;\n        }\n\n        if (item.option.type === 'line') {\n          canvasRef.handler.drawingHandler.line.init();\n        } else if (item.option.type === 'arrow') {\n          canvasRef.handler.drawingHandler.arrow.init();\n        } else {\n          canvasRef.handler.drawingHandler.polygon.init();\n        }\n      },\n      onChangeActiveKey: function onChangeActiveKey(activeKey) {\n        _this.setState({\n          activeKey: activeKey\n        });\n      },\n      onCollapse: function onCollapse() {\n        _this.setState({\n          collapse: !_this.state.collapse\n        });\n      },\n      onSearchNode: function onSearchNode(e) {\n        var filteredDescriptors = _this.handlers.transformList().filter(function (descriptor) {\n          return descriptor.name.toLowerCase().includes(e.target.value.toLowerCase());\n        });\n\n        _this.setState({\n          textSearch: e.target.value,\n          filteredDescriptors: filteredDescriptors\n        });\n      },\n      transformList: function transformList() {\n        return Object.values(_this.props.descriptors).reduce(function (prev, curr) {\n          return prev.concat(curr);\n        }, []);\n      },\n      onSVGModalVisible: function onSVGModalVisible() {\n        _this.setState(function (prevState) {\n          return {\n            svgModalVisible: !prevState.svgModalVisible\n          };\n        });\n      }\n    };\n    _this.events = {\n      onDragStart: function onDragStart(e, item) {\n        _this.item = item;\n        var target = e.target;\n        target.classList.add('dragging');\n      },\n      onDragOver: function onDragOver(e) {\n        if (e.preventDefault) {\n          e.preventDefault();\n        }\n\n        e.dataTransfer.dropEffect = 'copy';\n        return false;\n      },\n      onDragEnter: function onDragEnter(e) {\n        var target = e.target;\n        target.classList.add('over');\n      },\n      onDragLeave: function onDragLeave(e) {\n        var target = e.target;\n        target.classList.remove('over');\n      },\n      onDrop: function onDrop(e) {\n        e = e || window.event;\n\n        if (e.preventDefault) {\n          e.preventDefault();\n        }\n\n        if (e.stopPropagation) {\n          e.stopPropagation();\n        }\n\n        var _e = e,\n            layerX = _e.layerX,\n            layerY = _e.layerY;\n        var dt = e.dataTransfer;\n\n        if (dt.types.length && dt.types[0] === 'Files') {\n          var files = dt.files;\n          Array.from(files).forEach(function (file) {\n            file.uid = ulid();\n            var type = file.type;\n\n            if (type === 'image/png' || type === 'image/jpeg' || type === 'image/jpg') {\n              var item = {\n                option: {\n                  type: 'image',\n                  file: file,\n                  left: layerX,\n                  top: layerY\n                }\n              };\n\n              _this.handlers.onAddItem(item, false);\n            } else {\n              es_notification.warn({\n                message: 'Not supported file type'\n              });\n            }\n          });\n          return false;\n        }\n\n        var option = Object.assign({}, _this.item.option, {\n          left: layerX,\n          top: layerY\n        });\n        var newItem = Object.assign({}, _this.item, {\n          option: option\n        });\n\n        _this.handlers.onAddItem(newItem, false);\n\n        return false;\n      },\n      onDragEnd: function onDragEnd(e) {\n        _this.item = null;\n        e.target.classList.remove('dragging');\n      }\n    };\n\n    _this.renderItems = function (items) {\n      return /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        flexWrap: \"wrap\",\n        flexDirection: \"column\",\n        style: {\n          width: '100%'\n        }\n      }, items.map(function (item) {\n        return _this.renderItem(item);\n      }));\n    };\n\n    _this.renderItem = function (item, centered) {\n      return item.type === 'drawing' ? /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        key: item.name,\n        draggable: true,\n        onClick: function onClick(e) {\n          return _this.handlers.onDrawingItem(item);\n        },\n        className: \"rde-editor-items-item\",\n        style: {\n          justifyContent: _this.state.collapse ? 'center' : null\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        className: \"rde-editor-items-item-icon\"\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: item.icon.name,\n        prefix: item.icon.prefix,\n        style: item.icon.style\n      })), _this.state.collapse ? null : /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-editor-items-item-text\"\n      }, item.name)) : /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        key: item.name,\n        draggable: true,\n        onClick: function onClick(e) {\n          return _this.handlers.onAddItem(item, centered);\n        },\n        onDragStart: function onDragStart(e) {\n          return _this.events.onDragStart(e, item);\n        },\n        onDragEnd: function onDragEnd(e) {\n          return _this.events.onDragEnd(e, item);\n        },\n        className: \"rde-editor-items-item\",\n        style: {\n          justifyContent: _this.state.collapse ? 'center' : null\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(\"span\", {\n        className: \"rde-editor-items-item-icon\"\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: item.icon.name,\n        prefix: item.icon.prefix,\n        style: item.icon.style\n      })), _this.state.collapse ? null : /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-editor-items-item-text\"\n      }, item.name));\n    };\n\n    return _this;\n  }\n\n  createClass_default()(ImageMapItems, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var canvasRef = this.props.canvasRef;\n      this.waitForCanvasRender(canvasRef);\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      if (JSON.stringify(this.props.descriptors) !== JSON.stringify(nextProps.descriptors)) {\n        var descriptors = Object.keys(nextProps.descriptors).reduce(function (prev, key) {\n          return prev.concat(nextProps.descriptors[key]);\n        }, []);\n        this.setState({\n          descriptors: descriptors\n        });\n      }\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps, nextState) {\n      if (JSON.stringify(this.state.descriptors) !== JSON.stringify(nextState.descriptors)) {\n        return true;\n      } else if (JSON.stringify(this.state.filteredDescriptors) !== JSON.stringify(nextState.filteredDescriptors)) {\n        return true;\n      } else if (this.state.textSearch !== nextState.textSearch) {\n        return true;\n      } else if (JSON.stringify(this.state.activeKey) !== JSON.stringify(nextState.activeKey)) {\n        return true;\n      } else if (this.state.collapse !== nextState.collapse) {\n        return true;\n      } else if (this.state.svgModalVisible !== nextState.svgModalVisible) {\n        return true;\n      }\n\n      return false;\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      var canvasRef = this.props.canvasRef;\n      this.detachEventListener(canvasRef);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var descriptors = this.props.descriptors;\n      var _this$state = this.state,\n          collapse = _this$state.collapse,\n          textSearch = _this$state.textSearch,\n          filteredDescriptors = _this$state.filteredDescriptors,\n          activeKey = _this$state.activeKey,\n          svgModalVisible = _this$state.svgModalVisible,\n          svgOption = _this$state.svgOption;\n      var className = node_modules_classnames_default()('rde-editor-items', {\n        minimize: collapse\n      });\n      return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: className\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        flex: \"1\",\n        flexDirection: \"column\",\n        style: {\n          height: '100%'\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        justifyContent: \"center\",\n        alignItems: \"center\",\n        style: {\n          height: 40\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        icon: collapse ? 'angle-double-right' : 'angle-double-left',\n        shape: \"circle\",\n        className: \"rde-action-btn\",\n        style: {\n          margin: '0 4px'\n        },\n        onClick: this.handlers.onCollapse\n      }), collapse ? null : /*#__PURE__*/external_react_default.a.createElement(es_input, {\n        style: {\n          margin: '8px'\n        },\n        placeholder: esm_i18next.t('action.search-list'),\n        onChange: this.handlers.onSearchNode,\n        value: textSearch,\n        allowClear: true\n      })), /*#__PURE__*/external_react_default.a.createElement(common_Scrollbar, null, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        flex: \"1\",\n        style: {\n          overflowY: 'hidden'\n        }\n      }, textSearch.length && this.renderItems(filteredDescriptors) || (collapse ? /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        flexWrap: \"wrap\",\n        flexDirection: \"column\",\n        style: {\n          width: '100%'\n        },\n        justifyContent: \"center\"\n      }, this.handlers.transformList().map(function (item) {\n        return _this2.renderItem(item);\n      })) : /*#__PURE__*/external_react_default.a.createElement(es_collapse, {\n        style: {\n          width: '100%'\n        },\n        bordered: false,\n        activeKey: activeKey.length ? activeKey : Object.keys(descriptors),\n        onChange: this.handlers.onChangeActiveKey\n      }, Object.keys(descriptors).map(function (key) {\n        return /*#__PURE__*/external_react_default.a.createElement(es_collapse.Panel, {\n          key: key,\n          header: key,\n          showArrow: !collapse\n        }, _this2.renderItems(descriptors[key]));\n      })))))), /*#__PURE__*/external_react_default.a.createElement(common_SVGModal, {\n        visible: svgModalVisible,\n        onOk: this.handlers.onAddSVG,\n        onCancel: this.handlers.onSVGModalVisible,\n        option: svgOption\n      }));\n    }\n  }]);\n\n  return ImageMapItems;\n}(external_react_[\"Component\"]);\n\nImageMapItems_ImageMapItems.propTypes = {\n  canvasRef: prop_types_default.a.any,\n  descriptors: prop_types_default.a.object\n};\n/* harmony default export */ var imagemap_ImageMapItems = (ImageMapItems_ImageMapItems);\n// CONCATENATED MODULE: ./src/editors/imagemap/ImageMapPreview.js\n\n\n\n\n\n\n\n\nfunction ImageMapPreview_createSuper(Derived) { var hasNativeReflectConstruct = ImageMapPreview_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction ImageMapPreview_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\nvar ImageMapPreview_ImageMapPreview = /*#__PURE__*/function (_Component) {\n  inherits_default()(ImageMapPreview, _Component);\n\n  var _super = ImageMapPreview_createSuper(ImageMapPreview);\n\n  function ImageMapPreview() {\n    classCallCheck_default()(this, ImageMapPreview);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(ImageMapPreview, [{\n    key: \"render\",\n    value: function render() {\n      var _this = this;\n\n      var _this$props = this.props,\n          onChangePreview = _this$props.onChangePreview,\n          onTooltip = _this$props.onTooltip,\n          onClick = _this$props.onClick,\n          preview = _this$props.preview,\n          objects = _this$props.objects;\n      var previewClassName = node_modules_classnames_default()('rde-preview', {\n        preview: preview\n      });\n      return preview && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: previewClassName\n      }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        ref: function ref(c) {\n          _this.container = c;\n        },\n        style: {\n          overvlow: 'hidden',\n          display: 'flex',\n          flex: '1',\n          height: '100%'\n        }\n      }, /*#__PURE__*/external_react_default.a.createElement(canvas_Canvas, {\n        editable: false,\n        className: \"rde-canvas\",\n        canvasOption: {\n          perPixelTargetFind: true\n        },\n        keyEvent: {\n          grab: false\n        },\n        onLoad: function onLoad(handler) {\n          return handler.importJSON(objects);\n        },\n        onTooltip: onTooltip,\n        onClick: onClick,\n        maxZoom: 500\n      }), /*#__PURE__*/external_react_default.a.createElement(es_button, {\n        className: \"rde-action-btn rde-preview-close-btn\",\n        onClick: onChangePreview\n      }, /*#__PURE__*/external_react_default.a.createElement(components_icon_Icon, {\n        name: \"times\",\n        size: 1.5\n      }))));\n    }\n  }]);\n\n  return ImageMapPreview;\n}(external_react_[\"Component\"]);\n\nImageMapPreview_ImageMapPreview.propTypes = {\n  preview: prop_types_default.a.bool,\n  onChangePreview: prop_types_default.a.func,\n  onTooltip: prop_types_default.a.func,\n  onAction: prop_types_default.a.func,\n  objects: prop_types_default.a.any\n};\n/* harmony default export */ var imagemap_ImageMapPreview = (ImageMapPreview_ImageMapPreview);\n// CONCATENATED MODULE: ./src/editors/imagemap/ImageMapTitle.js\n\n\n\n\n\n\n\n\nfunction ImageMapTitle_createSuper(Derived) { var hasNativeReflectConstruct = ImageMapTitle_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction ImageMapTitle_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\nvar ImageMapTitle_ImageMapTitle = /*#__PURE__*/function (_Component) {\n  inherits_default()(ImageMapTitle, _Component);\n\n  var _super = ImageMapTitle_createSuper(ImageMapTitle);\n\n  function ImageMapTitle() {\n    classCallCheck_default()(this, ImageMapTitle);\n\n    return _super.apply(this, arguments);\n  }\n\n  createClass_default()(ImageMapTitle, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          title = _this$props.title,\n          content = _this$props.content,\n          action = _this$props.action,\n          children = _this$props.children;\n      return children || /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        className: \"rde-content-layout-title\",\n        alignItems: \"center\",\n        flexWrap: \"wrap\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        flex: \"0 1 auto\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        className: \"rde-content-layout-title-title\",\n        justifyContent: \"flex-start\",\n        alignItems: \"center\"\n      }, title instanceof String ? /*#__PURE__*/external_react_default.a.createElement(\"h3\", null, title) : title)), /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        flex: \"auto\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        className: \"rde-content-layout-title-content\",\n        alignItems: \"center\"\n      }, content)), /*#__PURE__*/external_react_default.a.createElement(flex_Flex.Item, {\n        flex: \"auto\"\n      }, /*#__PURE__*/external_react_default.a.createElement(flex_Flex, {\n        className: \"rde-content-layout-title-action\",\n        justifyContent: \"flex-end\",\n        alignItems: \"center\"\n      }, action)));\n    }\n  }]);\n\n  return ImageMapTitle;\n}(external_react_[\"Component\"]);\n\n/* harmony default export */ var imagemap_ImageMapTitle = (ImageMapTitle_ImageMapTitle);\n// CONCATENATED MODULE: ./src/editors/imagemap/descriptors.js\nvar Descriptors = {\n  \"MARKER\": [{\n    \"name\": \"Marker\",\n    \"description\": \"\",\n    \"type\": \"marker\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"map-marker-alt\"\n    },\n    \"option\": {\n      \"type\": \"i-text\",\n      \"text\": \"\\uF3C5\",\n      \"fontFamily\": \"Font Awesome 5 Free\",\n      \"fontWeight\": 900,\n      \"fontSize\": 60,\n      \"width\": 30,\n      \"height\": 30,\n      \"editable\": false,\n      \"name\": \"New marker\"\n    }\n  }],\n  \"TEXT\": [{\n    \"name\": \"Text\",\n    \"description\": \"\",\n    \"type\": \"text\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"font\"\n    },\n    \"option\": {\n      \"type\": \"textbox\",\n      \"text\": \"\",\n      \"width\": 60,\n      \"height\": 30,\n      \"fontSize\": 32,\n      \"name\": \"New text\"\n    }\n  }],\n  \"IMAGE\": [{\n    \"name\": \"Image\",\n    \"description\": \"\",\n    \"type\": \"image\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"image\"\n    },\n    \"option\": {\n      \"type\": \"image\",\n      \"name\": \"New image\",\n      \"src\": \"./images/sample/transparentBg.png\"\n    }\n  }, {\n    \"name\": \"GIF\",\n    \"description\": \"\",\n    \"type\": \"gif\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"image\"\n    },\n    \"option\": {\n      \"type\": \"gif\",\n      \"width\": 400,\n      \"height\": 400,\n      \"name\": \"New gif\",\n      \"src\": \"\"\n    }\n  }],\n  \"SHAPE\": [{\n    \"name\": \"Triangle\",\n    \"description\": \"\",\n    \"type\": \"shape\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"play\",\n      \"style\": {\n        \"transform\": \"rotate(270deg)\"\n      }\n    },\n    \"option\": {\n      \"type\": \"triangle\",\n      \"width\": 30,\n      \"height\": 30,\n      \"name\": \"New shape\"\n    }\n  }, {\n    \"name\": \"Rectangle\",\n    \"description\": \"\",\n    \"type\": \"shape\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"stop\"\n    },\n    \"option\": {\n      \"type\": \"rect\",\n      \"width\": 40,\n      \"height\": 40,\n      \"name\": \"New shape\"\n    }\n  }, {\n    \"name\": \"Circle\",\n    \"description\": \"\",\n    \"type\": \"shape\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"circle\"\n    },\n    \"option\": {\n      \"type\": \"circle\",\n      \"radius\": 30,\n      \"name\": \"New shape\"\n    }\n  }, {\n    \"name\": \"Cube\",\n    \"description\": \"\",\n    \"type\": \"shape\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"cube\"\n    },\n    \"option\": {\n      \"type\": \"cube\",\n      \"width\": 80,\n      \"height\": 80,\n      \"name\": \"New shape\"\n    }\n  }],\n  \"DRAWING\": [{\n    \"name\": \"Polygon\",\n    \"description\": \"\",\n    \"type\": \"drawing\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"draw-polygon\"\n    },\n    \"option\": {\n      \"type\": \"polygon\",\n      \"name\": \"New polygon\"\n    }\n  }, {\n    \"name\": \"Line\",\n    \"description\": \"\",\n    \"type\": \"drawing\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"minus\"\n    },\n    \"option\": {\n      \"type\": \"line\",\n      \"name\": \"New line\"\n    }\n  }, {\n    \"name\": \"Arrow\",\n    \"description\": \"\",\n    \"type\": \"drawing\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"long-arrow-alt-right\"\n    },\n    \"option\": {\n      \"type\": \"arrow\",\n      \"name\": \"New arrow\"\n    }\n  }],\n  \"ELEMENT\": [{\n    \"name\": \"Chart\",\n    \"description\": \"\",\n    \"type\": \"element\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"chart-line\"\n    },\n    \"option\": {\n      \"superType\": \"element\",\n      \"type\": \"chart\",\n      \"name\": \"New chart\",\n      \"width\": 356,\n      \"height\": 356\n    }\n  }, {\n    \"name\": \"Element\",\n    \"description\": \"\",\n    \"type\": \"element\",\n    \"icon\": {\n      \"prefix\": \"fab\",\n      \"name\": \"html5\"\n    },\n    \"option\": {\n      \"superType\": \"element\",\n      \"type\": \"element\",\n      \"width\": 480,\n      \"height\": 270,\n      \"name\": \"New element\"\n    }\n  }, {\n    \"name\": \"Iframe\",\n    \"description\": \"\",\n    \"type\": \"element\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"window-maximize\"\n    },\n    \"option\": {\n      \"superType\": \"element\",\n      \"type\": \"iframe\",\n      \"width\": 480,\n      \"height\": 270,\n      \"name\": \"New iframe\"\n    }\n  }, {\n    \"name\": \"Video\",\n    \"description\": \"\",\n    \"type\": \"element\",\n    \"icon\": {\n      \"prefix\": \"fab\",\n      \"name\": \"youtube\"\n    },\n    \"option\": {\n      \"superType\": \"element\",\n      \"type\": \"video\",\n      \"width\": 480,\n      \"height\": 270,\n      \"name\": \"New video\",\n      \"autoplay\": true,\n      \"muted\": true,\n      \"loop\": true\n    }\n  }],\n  \"SVG\": [{\n    \"name\": \"Default\",\n    \"description\": \"\",\n    \"type\": \"default\",\n    \"icon\": {\n      \"prefix\": \"fas\",\n      \"name\": \"bezier-curve\"\n    },\n    \"option\": {\n      \"type\": \"svg\",\n      \"superType\": \"svg\",\n      \"name\": \"New SVG\",\n      \"loadType\": \"svg\"\n    }\n  }]\n};\n// CONCATENATED MODULE: ./src/editors/imagemap/ImageMapEditor.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ImageMapEditor_createSuper(Derived) { var hasNativeReflectConstruct = ImageMapEditor_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = getPrototypeOf_default()(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = getPrototypeOf_default()(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return possibleConstructorReturn_default()(this, result); }; }\n\nfunction ImageMapEditor_isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ImageMapEditor_propertiesToInclude = ['id', 'name', 'locked', 'file', 'src', 'link', 'tooltip', 'animation', 'layout', 'workareaWidth', 'workareaHeight', 'videoLoadType', 'autoplay', 'shadow', 'muted', 'loop', 'code', 'icon', 'userProperty', 'trigger', 'configuration', 'superType', 'points', 'svg', 'loadType'];\nvar defaultOption = {\n  stroke: 'rgba(255, 255, 255, 0)',\n  strokeUniform: true,\n  resource: {},\n  link: {\n    enabled: false,\n    type: 'resource',\n    state: 'new',\n    dashboard: {}\n  },\n  tooltip: {\n    enabled: true,\n    type: 'resource',\n    template: '<div>{{message.name}}</div>'\n  },\n  animation: {\n    type: 'none',\n    loop: true,\n    autoplay: true,\n    duration: 1000\n  },\n  userProperty: {},\n  trigger: {\n    enabled: false,\n    type: 'alarm',\n    script: 'return message.value > 0;',\n    effect: 'style'\n  }\n};\n\nvar ImageMapEditor_ImageMapEditor = /*#__PURE__*/function (_Component) {\n  inherits_default()(ImageMapEditor, _Component);\n\n  var _super = ImageMapEditor_createSuper(ImageMapEditor);\n\n  function ImageMapEditor() {\n    var _this;\n\n    classCallCheck_default()(this, ImageMapEditor);\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 = _super.call.apply(_super, [this].concat(args));\n    _this.state = {\n      selectedItem: null,\n      zoomRatio: 1,\n      preview: false,\n      loading: false,\n      progress: 0,\n      animations: [],\n      styles: [],\n      dataSources: [],\n      editing: false,\n      descriptors: {},\n      objects: undefined\n    };\n    _this.canvasHandlers = {\n      onAdd: function onAdd(target) {\n        var editing = _this.state.editing;\n\n        _this.forceUpdate();\n\n        if (!editing) {\n          _this.changeEditing(true);\n        }\n\n        if (target.type === 'activeSelection') {\n          _this.canvasHandlers.onSelect(null);\n\n          return;\n        }\n\n        _this.canvasRef.handler.select(target);\n      },\n      onSelect: function onSelect(target) {\n        var selectedItem = _this.state.selectedItem;\n\n        if (target && target.id && target.id !== 'workarea' && target.type !== 'activeSelection') {\n          if (selectedItem && target.id === selectedItem.id) {\n            return;\n          }\n\n          _this.canvasRef.handler.getObjects().forEach(function (obj) {\n            if (obj) {\n              _this.canvasRef.handler.animationHandler.resetAnimation(obj, true);\n            }\n          });\n\n          _this.setState({\n            selectedItem: target\n          });\n\n          return;\n        }\n\n        _this.canvasRef.handler.getObjects().forEach(function (obj) {\n          if (obj) {\n            _this.canvasRef.handler.animationHandler.resetAnimation(obj, true);\n          }\n        });\n\n        _this.setState({\n          selectedItem: null\n        });\n      },\n      onRemove: function onRemove() {\n        var editing = _this.state.editing;\n\n        if (!editing) {\n          _this.changeEditing(true);\n        }\n\n        _this.canvasHandlers.onSelect(null);\n      },\n      onModified: debounce_default()(function () {\n        var editing = _this.state.editing;\n\n        _this.forceUpdate();\n\n        if (!editing) {\n          _this.changeEditing(true);\n        }\n      }, 300),\n      onZoom: function onZoom(zoom) {\n        _this.setState({\n          zoomRatio: zoom\n        });\n      },\n      onChange: function onChange(selectedItem, changedValues, allValues) {\n        var editing = _this.state.editing;\n\n        if (!editing) {\n          _this.changeEditing(true);\n        }\n\n        var changedKey = Object.keys(changedValues)[0];\n        var changedValue = changedValues[changedKey];\n\n        if (allValues.workarea) {\n          _this.canvasHandlers.onChangeWokarea(changedKey, changedValue, allValues.workarea);\n\n          return;\n        }\n\n        if (changedKey === 'width' || changedKey === 'height') {\n          _this.canvasRef.handler.scaleToResize(allValues.width, allValues.height);\n\n          return;\n        }\n\n        if (changedKey === 'angle') {\n          _this.canvasRef.handler.rotate(allValues.angle);\n\n          return;\n        }\n\n        if (changedKey === 'locked') {\n          _this.canvasRef.handler.setObject({\n            lockMovementX: changedValue,\n            lockMovementY: changedValue,\n            hasControls: !changedValue,\n            hoverCursor: changedValue ? 'pointer' : 'move',\n            editable: !changedValue,\n            locked: changedValue\n          });\n\n          return;\n        }\n\n        if (changedKey === 'file' || changedKey === 'src' || changedKey === 'code') {\n          if (selectedItem.type === 'image') {\n            _this.canvasRef.handler.setImageById(selectedItem.id, changedValue);\n          } else if (selectedItem.superType === 'element') {\n            _this.canvasRef.handler.elementHandler.setById(selectedItem.id, changedValue);\n          }\n\n          return;\n        }\n\n        if (changedKey === 'link') {\n          var link = Object.assign({}, defaultOption.link, allValues.link);\n\n          _this.canvasRef.handler.set(changedKey, link);\n\n          return;\n        }\n\n        if (changedKey === 'tooltip') {\n          var tooltip = Object.assign({}, defaultOption.tooltip, allValues.tooltip);\n\n          _this.canvasRef.handler.set(changedKey, tooltip);\n\n          return;\n        }\n\n        if (changedKey === 'animation') {\n          var animation = Object.assign({}, defaultOption.animation, allValues.animation);\n\n          _this.canvasRef.handler.set(changedKey, animation);\n\n          return;\n        }\n\n        if (changedKey === 'icon') {\n          var _changedValue$Object$ = changedValue[Object.keys(changedValue)[0]],\n              unicode = _changedValue$Object$.unicode,\n              styles = _changedValue$Object$.styles;\n          var uni = parseInt(unicode, 16);\n\n          if (styles[0] === 'brands') {\n            _this.canvasRef.handler.set('fontFamily', 'Font Awesome 5 Brands');\n          } else if (styles[0] === 'regular') {\n            _this.canvasRef.handler.set('fontFamily', 'Font Awesome 5 Regular');\n          } else {\n            _this.canvasRef.handler.set('fontFamily', 'Font Awesome 5 Free');\n          }\n\n          _this.canvasRef.handler.set('text', String.fromCodePoint(uni));\n\n          _this.canvasRef.handler.set('icon', changedValue);\n\n          return;\n        }\n\n        if (changedKey === 'shadow') {\n          if (allValues.shadow.enabled) {\n            if ('blur' in allValues.shadow) {\n              _this.canvasRef.handler.setShadow(allValues.shadow);\n            } else {\n              _this.canvasRef.handler.setShadow({\n                enabled: true,\n                blur: 15,\n                offsetX: 10,\n                offsetY: 10\n              });\n            }\n          } else {\n            _this.canvasRef.handler.setShadow(null);\n          }\n\n          return;\n        }\n\n        if (changedKey === 'fontWeight') {\n          _this.canvasRef.handler.set(changedKey, changedValue ? 'bold' : 'normal');\n\n          return;\n        }\n\n        if (changedKey === 'fontStyle') {\n          _this.canvasRef.handler.set(changedKey, changedValue ? 'italic' : 'normal');\n\n          return;\n        }\n\n        if (changedKey === 'textAlign') {\n          _this.canvasRef.handler.set(changedKey, Object.keys(changedValue)[0]);\n\n          return;\n        }\n\n        if (changedKey === 'trigger') {\n          var trigger = Object.assign({}, defaultOption.trigger, allValues.trigger);\n\n          _this.canvasRef.handler.set(changedKey, trigger);\n\n          return;\n        }\n\n        if (changedKey === 'filters') {\n          var filterKey = Object.keys(changedValue)[0];\n          var filterValue = allValues.filters[filterKey];\n\n          if (filterKey === 'gamma') {\n            var rgb = [filterValue.r, filterValue.g, filterValue.b];\n\n            _this.canvasRef.handler.imageHandler.applyFilterByType(filterKey, changedValue[filterKey].enabled, {\n              gamma: rgb\n            });\n\n            return;\n          }\n\n          if (filterKey === 'brightness') {\n            _this.canvasRef.handler.imageHandler.applyFilterByType(filterKey, changedValue[filterKey].enabled, {\n              brightness: filterValue.brightness\n            });\n\n            return;\n          }\n\n          if (filterKey === 'contrast') {\n            _this.canvasRef.handler.imageHandler.applyFilterByType(filterKey, changedValue[filterKey].enabled, {\n              contrast: filterValue.contrast\n            });\n\n            return;\n          }\n\n          if (filterKey === 'saturation') {\n            _this.canvasRef.handler.imageHandler.applyFilterByType(filterKey, changedValue[filterKey].enabled, {\n              saturation: filterValue.saturation\n            });\n\n            return;\n          }\n\n          if (filterKey === 'hue') {\n            _this.canvasRef.handler.imageHandler.applyFilterByType(filterKey, changedValue[filterKey].enabled, {\n              rotation: filterValue.rotation\n            });\n\n            return;\n          }\n\n          if (filterKey === 'noise') {\n            _this.canvasRef.handler.imageHandler.applyFilterByType(filterKey, changedValue[filterKey].enabled, {\n              noise: filterValue.noise\n            });\n\n            return;\n          }\n\n          if (filterKey === 'pixelate') {\n            _this.canvasRef.handler.imageHandler.applyFilterByType(filterKey, changedValue[filterKey].enabled, {\n              blocksize: filterValue.blocksize\n            });\n\n            return;\n          }\n\n          if (filterKey === 'blur') {\n            _this.canvasRef.handler.imageHandler.applyFilterByType(filterKey, changedValue[filterKey].enabled, {\n              value: filterValue.value\n            });\n\n            return;\n          }\n\n          _this.canvasRef.handler.imageHandler.applyFilterByType(filterKey, changedValue[filterKey]);\n\n          return;\n        }\n\n        if (changedKey === 'chartOption') {\n          try {\n            var sandbox = new sandbox_SandBox();\n            var compiled = sandbox.compile(changedValue);\n            var _this$state = _this.state,\n                animations = _this$state.animations,\n                _styles = _this$state.styles;\n            var chartOption = compiled(3, animations, _styles, selectedItem.userProperty);\n            selectedItem.setChartOptionStr(changedValue);\n\n            _this.canvasRef.handler.elementHandler.setById(selectedItem.id, chartOption);\n          } catch (error) {\n            console.error(error);\n          }\n\n          return;\n        }\n\n        _this.canvasRef.handler.set(changedKey, changedValue);\n      },\n      onChangeWokarea: function onChangeWokarea(changedKey, changedValue, allValues) {\n        if (changedKey === 'layout') {\n          _this.canvasRef.handler.workareaHandler.setLayout(changedValue);\n\n          return;\n        }\n\n        if (changedKey === 'file' || changedKey === 'src') {\n          _this.canvasRef.handler.workareaHandler.setImage(changedValue);\n\n          return;\n        }\n\n        if (changedKey === 'width' || changedKey === 'height') {\n          _this.canvasRef.handler.originScaleToResize(_this.canvasRef.handler.workarea, allValues.width, allValues.height);\n\n          _this.canvasRef.canvas.centerObject(_this.canvasRef.handler.workarea);\n\n          return;\n        }\n\n        _this.canvasRef.handler.workarea.set(changedKey, changedValue);\n\n        _this.canvasRef.canvas.requestRenderAll();\n      },\n      onTooltip: function onTooltip(ref, target) {\n        var value = Math.random() * 10 + 1;\n        var _this$state2 = _this.state,\n            animations = _this$state2.animations,\n            styles = _this$state2.styles; // const { code } = target.trigger;\n        // const compile = SandBox.compile(code);\n        // const result = compile(value, animations, styles, target.userProperty);\n        // console.log(result);\n\n        return /*#__PURE__*/external_react_default.a.createElement(\"div\", null, /*#__PURE__*/external_react_default.a.createElement(\"div\", null, /*#__PURE__*/external_react_default.a.createElement(\"div\", null, /*#__PURE__*/external_react_default.a.createElement(es_button, null, target.id)), /*#__PURE__*/external_react_default.a.createElement(badge_Badge, {\n          count: value\n        })));\n      },\n      onClick: function onClick(canvas, target) {\n        var link = target.link;\n\n        if (link.state === 'current') {\n          document.location.href = link.url;\n          return;\n        }\n\n        window.open(link.url);\n      },\n      onContext: function onContext(ref, event, target) {\n        if (target && target.id === 'workarea' || !target) {\n          var left = event.layerX,\n              top = event.layerY;\n          return /*#__PURE__*/external_react_default.a.createElement(es_menu, null, /*#__PURE__*/external_react_default.a.createElement(es_menu.SubMenu, {\n            key: \"add\",\n            style: {\n              width: 120\n            },\n            title: esm_i18next.t('action.add')\n          }, _this.transformList().map(function (item) {\n            var option = Object.assign({}, item.option, {\n              left: left,\n              top: top\n            });\n            var newItem = Object.assign({}, item, {\n              option: option\n            });\n            return /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n              style: {\n                padding: 0\n              },\n              key: item.name\n            }, _this.itemsRef.renderItem(newItem, false));\n          })));\n        }\n\n        if (target.type === 'activeSelection') {\n          return /*#__PURE__*/external_react_default.a.createElement(es_menu, null, /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n            onClick: function onClick() {\n              _this.canvasRef.handler.toGroup();\n            }\n          }, esm_i18next.t('action.object-group')), /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n            onClick: function onClick() {\n              _this.canvasRef.handler.duplicate();\n            }\n          }, esm_i18next.t('action.clone')), /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n            onClick: function onClick() {\n              _this.canvasRef.handler.remove();\n            }\n          }, esm_i18next.t('action.delete')));\n        }\n\n        if (target.type === 'group') {\n          return /*#__PURE__*/external_react_default.a.createElement(es_menu, null, /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n            onClick: function onClick() {\n              _this.canvasRef.handler.toActiveSelection();\n            }\n          }, esm_i18next.t('action.object-ungroup')), /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n            onClick: function onClick() {\n              _this.canvasRef.handler.duplicate();\n            }\n          }, esm_i18next.t('action.clone')), /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n            onClick: function onClick() {\n              _this.canvasRef.handler.remove();\n            }\n          }, esm_i18next.t('action.delete')));\n        }\n\n        return /*#__PURE__*/external_react_default.a.createElement(es_menu, null, /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n          onClick: function onClick() {\n            _this.canvasRef.handler.duplicateById(target.id);\n          }\n        }, esm_i18next.t('action.clone')), /*#__PURE__*/external_react_default.a.createElement(es_menu.Item, {\n          onClick: function onClick() {\n            _this.canvasRef.handler.removeById(target.id);\n          }\n        }, esm_i18next.t('action.delete')));\n      },\n      onTransaction: function onTransaction(transaction) {\n        _this.forceUpdate();\n      }\n    };\n    _this.handlers = {\n      onChangePreview: function onChangePreview(checked) {\n        var data;\n\n        if (_this.canvasRef) {\n          data = _this.canvasRef.handler.exportJSON().filter(function (obj) {\n            if (!obj.id) {\n              return false;\n            }\n\n            return true;\n          });\n        }\n\n        _this.setState({\n          preview: typeof_default()(checked) === 'object' ? false : checked,\n          objects: data\n        });\n      },\n      onProgress: function onProgress(progress) {\n        _this.setState({\n          progress: progress\n        });\n      },\n      onImport: function onImport(files) {\n        if (files) {\n          _this.showLoading(true);\n\n          setTimeout(function () {\n            var reader = new FileReader();\n\n            reader.onprogress = function (e) {\n              if (e.lengthComputable) {\n                var progress = parseInt(e.loaded / e.total * 100, 10);\n\n                _this.handlers.onProgress(progress);\n              }\n            };\n\n            reader.onload = function (e) {\n              var _JSON$parse = JSON.parse(e.target.result),\n                  objects = _JSON$parse.objects,\n                  animations = _JSON$parse.animations,\n                  styles = _JSON$parse.styles,\n                  dataSources = _JSON$parse.dataSources;\n\n              _this.setState({\n                animations: animations,\n                styles: styles,\n                dataSources: dataSources\n              });\n\n              if (objects) {\n                _this.canvasRef.handler.clear(true);\n\n                var data = objects.filter(function (obj) {\n                  if (!obj.id) {\n                    return false;\n                  }\n\n                  return true;\n                });\n\n                _this.canvasRef.handler.importJSON(data);\n              }\n            };\n\n            reader.onloadend = function () {\n              _this.showLoading(false);\n            };\n\n            reader.onerror = function () {\n              _this.showLoading(false);\n            };\n\n            reader.readAsText(files[0]);\n          }, 500);\n        }\n      },\n      onUpload: function onUpload() {\n        var inputEl = document.createElement('input');\n        inputEl.accept = '.json';\n        inputEl.type = 'file';\n        inputEl.hidden = true;\n\n        inputEl.onchange = function (e) {\n          _this.handlers.onImport(e.target.files);\n        };\n\n        document.body.appendChild(inputEl); // required for firefox\n\n        inputEl.click();\n        inputEl.remove();\n      },\n      onDownload: function onDownload() {\n        _this.showLoading(true);\n\n        var objects = _this.canvasRef.handler.exportJSON().filter(function (obj) {\n          if (!obj.id) {\n            return false;\n          }\n\n          return true;\n        });\n\n        var _this$state3 = _this.state,\n            animations = _this$state3.animations,\n            styles = _this$state3.styles,\n            dataSources = _this$state3.dataSources;\n        var exportDatas = {\n          objects: objects,\n          animations: animations,\n          styles: styles,\n          dataSources: dataSources\n        };\n        var anchorEl = document.createElement('a');\n        anchorEl.href = \"data:text/json;charset=utf-8,\".concat(encodeURIComponent(JSON.stringify(exportDatas, null, '\\t')));\n        anchorEl.download = \"\".concat(_this.canvasRef.handler.workarea.name || 'sample', \".json\");\n        document.body.appendChild(anchorEl); // required for firefox\n\n        anchorEl.click();\n        anchorEl.remove();\n\n        _this.showLoading(false);\n      },\n      onChangeAnimations: function onChangeAnimations(animations) {\n        if (!_this.state.editing) {\n          _this.changeEditing(true);\n        }\n\n        _this.setState({\n          animations: animations\n        });\n      },\n      onChangeStyles: function onChangeStyles(styles) {\n        if (!_this.state.editing) {\n          _this.changeEditing(true);\n        }\n\n        _this.setState({\n          styles: styles\n        });\n      },\n      onChangeDataSources: function onChangeDataSources(dataSources) {\n        if (!_this.state.editing) {\n          _this.changeEditing(true);\n        }\n\n        _this.setState({\n          dataSources: dataSources\n        });\n      },\n      onSaveImage: function onSaveImage() {\n        _this.canvasRef.handler.saveCanvasImage();\n      }\n    };\n\n    _this.transformList = function () {\n      return Object.values(_this.state.descriptors).reduce(function (prev, curr) {\n        return prev.concat(curr);\n      }, []);\n    };\n\n    _this.showLoading = function (loading) {\n      _this.setState({\n        loading: loading\n      });\n    };\n\n    _this.changeEditing = function (editing) {\n      _this.setState({\n        editing: editing\n      });\n    };\n\n    return _this;\n  }\n\n  createClass_default()(ImageMapEditor, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      this.showLoading(true);\n      this.setState({\n        descriptors: Descriptors\n      }, function () {\n        _this2.showLoading(false);\n      });\n      this.setState({\n        selectedItem: null\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var _this$state4 = this.state,\n          preview = _this$state4.preview,\n          selectedItem = _this$state4.selectedItem,\n          zoomRatio = _this$state4.zoomRatio,\n          loading = _this$state4.loading,\n          progress = _this$state4.progress,\n          animations = _this$state4.animations,\n          styles = _this$state4.styles,\n          dataSources = _this$state4.dataSources,\n          editing = _this$state4.editing,\n          descriptors = _this$state4.descriptors,\n          objects = _this$state4.objects;\n      var _this$canvasHandlers = this.canvasHandlers,\n          onAdd = _this$canvasHandlers.onAdd,\n          onRemove = _this$canvasHandlers.onRemove,\n          onSelect = _this$canvasHandlers.onSelect,\n          onModified = _this$canvasHandlers.onModified,\n          onChange = _this$canvasHandlers.onChange,\n          onZoom = _this$canvasHandlers.onZoom,\n          onTooltip = _this$canvasHandlers.onTooltip,\n          onClick = _this$canvasHandlers.onClick,\n          onContext = _this$canvasHandlers.onContext,\n          onTransaction = _this$canvasHandlers.onTransaction;\n      var _this$handlers = this.handlers,\n          onChangePreview = _this$handlers.onChangePreview,\n          onDownload = _this$handlers.onDownload,\n          onUpload = _this$handlers.onUpload,\n          onChangeAnimations = _this$handlers.onChangeAnimations,\n          onChangeStyles = _this$handlers.onChangeStyles,\n          onChangeDataSources = _this$handlers.onChangeDataSources,\n          onSaveImage = _this$handlers.onSaveImage;\n      var action = /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        icon: \"file-download\",\n        disabled: !editing,\n        tooltipTitle: esm_i18next.t('action.download'),\n        onClick: onDownload,\n        tooltipPlacement: \"bottomRight\"\n      }), editing ? /*#__PURE__*/external_react_default.a.createElement(popconfirm, {\n        title: esm_i18next.t('imagemap.imagemap-editing-confirm'),\n        okText: esm_i18next.t('action.ok'),\n        cancelText: esm_i18next.t('action.cancel'),\n        onConfirm: onUpload,\n        placement: \"bottomRight\"\n      }, /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        icon: \"file-upload\",\n        tooltipTitle: esm_i18next.t('action.upload'),\n        tooltipPlacement: \"bottomRight\"\n      })) : /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        icon: \"file-upload\",\n        tooltipTitle: esm_i18next.t('action.upload'),\n        tooltipPlacement: \"bottomRight\",\n        onClick: onUpload\n      }), /*#__PURE__*/external_react_default.a.createElement(common_CommonButton, {\n        className: \"rde-action-btn\",\n        shape: \"circle\",\n        icon: \"image\",\n        tooltipTitle: esm_i18next.t('action.image-save'),\n        onClick: onSaveImage,\n        tooltipPlacement: \"bottomRight\"\n      }));\n      var titleContent = /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"span\", null, esm_i18next.t('imagemap.imagemap-editor')));\n      var title = /*#__PURE__*/external_react_default.a.createElement(imagemap_ImageMapTitle, {\n        title: titleContent,\n        action: action\n      });\n      var content = /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-editor\"\n      }, /*#__PURE__*/external_react_default.a.createElement(imagemap_ImageMapItems, {\n        ref: function ref(c) {\n          _this3.itemsRef = c;\n        },\n        canvasRef: this.canvasRef,\n        descriptors: descriptors\n      }), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-editor-canvas-container\"\n      }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-editor-header-toolbar\"\n      }, /*#__PURE__*/external_react_default.a.createElement(imagemap_ImageMapHeaderToolbar, {\n        canvasRef: this.canvasRef,\n        selectedItem: selectedItem,\n        onSelect: onSelect\n      })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        ref: function ref(c) {\n          _this3.container = c;\n        },\n        className: \"rde-editor-canvas\"\n      }, /*#__PURE__*/external_react_default.a.createElement(canvas_Canvas, {\n        ref: function ref(c) {\n          _this3.canvasRef = c;\n        },\n        className: \"rde-canvas\",\n        minZoom: 30,\n        maxZoom: 500,\n        objectOption: defaultOption,\n        propertiesToInclude: ImageMapEditor_propertiesToInclude,\n        onModified: onModified,\n        onAdd: onAdd,\n        onRemove: onRemove,\n        onSelect: onSelect,\n        onZoom: onZoom,\n        onTooltip: onTooltip,\n        onClick: onClick,\n        onContext: onContext,\n        onTransaction: onTransaction,\n        keyEvent: {\n          transaction: true\n        },\n        canvasOption: {\n          selectionColor: 'rgba(8, 151, 156, 0.3)'\n        }\n      })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\n        className: \"rde-editor-footer-toolbar\"\n      }, /*#__PURE__*/external_react_default.a.createElement(imagemap_ImageMapFooterToolbar, {\n        canvasRef: this.canvasRef,\n        preview: preview,\n        onChangePreview: onChangePreview,\n        zoomRatio: zoomRatio\n      }))), /*#__PURE__*/external_react_default.a.createElement(imagemap_ImageMapConfigurations, {\n        canvasRef: this.canvasRef,\n        onChange: onChange,\n        selectedItem: selectedItem,\n        onChangeAnimations: onChangeAnimations,\n        onChangeStyles: onChangeStyles,\n        onChangeDataSources: onChangeDataSources,\n        animations: animations,\n        styles: styles,\n        dataSources: dataSources\n      }), /*#__PURE__*/external_react_default.a.createElement(imagemap_ImageMapPreview, {\n        preview: preview,\n        onChangePreview: onChangePreview,\n        onTooltip: onTooltip,\n        onClick: onClick,\n        objects: objects\n      }));\n      return /*#__PURE__*/external_react_default.a.createElement(components_layout_Content, {\n        title: title,\n        content: content,\n        loading: loading,\n        className: \"\"\n      });\n    }\n  }]);\n\n  return ImageMapEditor;\n}(external_react_[\"Component\"]);\n\n/* harmony default export */ var imagemap_ImageMapEditor = __webpack_exports__[\"default\"] = (ImageMapEditor_ImageMapEditor);\n\n/***/ })\n/******/ ]);\n});"]}